@wingman-ai/gateway 0.1.0

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 (418) hide show
  1. package/.wingman/agents/README.md +161 -0
  2. package/.wingman/agents/coding/agent.md +147 -0
  3. package/.wingman/agents/coding/implementor.md +56 -0
  4. package/.wingman/agents/main/agent.md +19 -0
  5. package/.wingman/agents/researcher/agent.md +62 -0
  6. package/.wingman/agents/stock-trader/agent.md +223 -0
  7. package/.wingman/agents/stock-trader/chain-curator.md +24 -0
  8. package/.wingman/agents/stock-trader/goal-translator.md +42 -0
  9. package/.wingman/agents/stock-trader/guardrails-veto.md +11 -0
  10. package/.wingman/agents/stock-trader/path-planner.md +23 -0
  11. package/.wingman/agents/stock-trader/regime-analyst.md +15 -0
  12. package/.wingman/agents/stock-trader/risk.md +20 -0
  13. package/.wingman/agents/stock-trader/selection.md +22 -0
  14. package/.wingman/agents/stock-trader/strategy-composer.md +38 -0
  15. package/.wingman/agents/wingman/agent.json +12 -0
  16. package/bin/wingman +7 -0
  17. package/dist/agent/config/agentConfig.cjs +95 -0
  18. package/dist/agent/config/agentConfig.d.ts +187 -0
  19. package/dist/agent/config/agentConfig.js +52 -0
  20. package/dist/agent/config/agentLoader.cjs +242 -0
  21. package/dist/agent/config/agentLoader.d.ts +42 -0
  22. package/dist/agent/config/agentLoader.js +208 -0
  23. package/dist/agent/config/mcpClientManager.cjs +168 -0
  24. package/dist/agent/config/mcpClientManager.d.ts +41 -0
  25. package/dist/agent/config/mcpClientManager.js +134 -0
  26. package/dist/agent/config/modelFactory.cjs +175 -0
  27. package/dist/agent/config/modelFactory.d.ts +33 -0
  28. package/dist/agent/config/modelFactory.js +141 -0
  29. package/dist/agent/config/toolRegistry.cjs +111 -0
  30. package/dist/agent/config/toolRegistry.d.ts +25 -0
  31. package/dist/agent/config/toolRegistry.js +71 -0
  32. package/dist/agent/middleware/additional-messages.cjs +60 -0
  33. package/dist/agent/middleware/additional-messages.d.ts +7 -0
  34. package/dist/agent/middleware/additional-messages.js +26 -0
  35. package/dist/agent/middleware/hooks/executor.cjs +137 -0
  36. package/dist/agent/middleware/hooks/executor.d.ts +52 -0
  37. package/dist/agent/middleware/hooks/executor.js +103 -0
  38. package/dist/agent/middleware/hooks/input-builder.cjs +55 -0
  39. package/dist/agent/middleware/hooks/input-builder.d.ts +15 -0
  40. package/dist/agent/middleware/hooks/input-builder.js +21 -0
  41. package/dist/agent/middleware/hooks/matcher.cjs +59 -0
  42. package/dist/agent/middleware/hooks/matcher.d.ts +27 -0
  43. package/dist/agent/middleware/hooks/matcher.js +22 -0
  44. package/dist/agent/middleware/hooks/merger.cjs +54 -0
  45. package/dist/agent/middleware/hooks/merger.d.ts +18 -0
  46. package/dist/agent/middleware/hooks/merger.js +20 -0
  47. package/dist/agent/middleware/hooks/types.cjs +62 -0
  48. package/dist/agent/middleware/hooks/types.d.ts +82 -0
  49. package/dist/agent/middleware/hooks/types.js +19 -0
  50. package/dist/agent/middleware/hooks.cjs +79 -0
  51. package/dist/agent/middleware/hooks.d.ts +19 -0
  52. package/dist/agent/middleware/hooks.js +45 -0
  53. package/dist/agent/middleware/media-compat.cjs +80 -0
  54. package/dist/agent/middleware/media-compat.d.ts +7 -0
  55. package/dist/agent/middleware/media-compat.js +46 -0
  56. package/dist/agent/tests/agentConfig.test.cjs +132 -0
  57. package/dist/agent/tests/agentConfig.test.d.ts +1 -0
  58. package/dist/agent/tests/agentConfig.test.js +126 -0
  59. package/dist/agent/tests/agentLoader.test.cjs +235 -0
  60. package/dist/agent/tests/agentLoader.test.d.ts +1 -0
  61. package/dist/agent/tests/agentLoader.test.js +229 -0
  62. package/dist/agent/tests/modelFactory.test.cjs +114 -0
  63. package/dist/agent/tests/modelFactory.test.d.ts +1 -0
  64. package/dist/agent/tests/modelFactory.test.js +108 -0
  65. package/dist/agent/tests/test-agent-loader.cjs +33 -0
  66. package/dist/agent/tests/test-agent-loader.d.ts +1 -0
  67. package/dist/agent/tests/test-agent-loader.js +27 -0
  68. package/dist/agent/tests/test-subagent-loading.cjs +99 -0
  69. package/dist/agent/tests/test-subagent-loading.d.ts +1 -0
  70. package/dist/agent/tests/test-subagent-loading.js +93 -0
  71. package/dist/agent/tests/toolRegistry.test.cjs +109 -0
  72. package/dist/agent/tests/toolRegistry.test.d.ts +1 -0
  73. package/dist/agent/tests/toolRegistry.test.js +103 -0
  74. package/dist/agent/tools/code_search.cjs +108 -0
  75. package/dist/agent/tools/code_search.d.ts +24 -0
  76. package/dist/agent/tools/code_search.js +74 -0
  77. package/dist/agent/tools/command_execute.cjs +136 -0
  78. package/dist/agent/tools/command_execute.d.ts +12 -0
  79. package/dist/agent/tools/command_execute.js +99 -0
  80. package/dist/agent/tools/git_status.cjs +126 -0
  81. package/dist/agent/tools/git_status.d.ts +15 -0
  82. package/dist/agent/tools/git_status.js +92 -0
  83. package/dist/agent/tools/internet_search.cjs +93 -0
  84. package/dist/agent/tools/internet_search.d.ts +25 -0
  85. package/dist/agent/tools/internet_search.js +56 -0
  86. package/dist/agent/tools/think.cjs +53 -0
  87. package/dist/agent/tools/think.d.ts +26 -0
  88. package/dist/agent/tools/think.js +16 -0
  89. package/dist/agent/tools/web_crawler.cjs +180 -0
  90. package/dist/agent/tools/web_crawler.d.ts +31 -0
  91. package/dist/agent/tools/web_crawler.js +143 -0
  92. package/dist/agent/utils.cjs +54 -0
  93. package/dist/agent/utils.d.ts +1 -0
  94. package/dist/agent/utils.js +10 -0
  95. package/dist/cli/commands/agent.cjs +169 -0
  96. package/dist/cli/commands/agent.d.ts +15 -0
  97. package/dist/cli/commands/agent.js +125 -0
  98. package/dist/cli/commands/gateway.cjs +601 -0
  99. package/dist/cli/commands/gateway.d.ts +12 -0
  100. package/dist/cli/commands/gateway.js +567 -0
  101. package/dist/cli/commands/init.cjs +681 -0
  102. package/dist/cli/commands/init.d.ts +10 -0
  103. package/dist/cli/commands/init.js +634 -0
  104. package/dist/cli/commands/provider.cjs +208 -0
  105. package/dist/cli/commands/provider.d.ts +5 -0
  106. package/dist/cli/commands/provider.js +174 -0
  107. package/dist/cli/commands/skill.cjs +145 -0
  108. package/dist/cli/commands/skill.d.ts +10 -0
  109. package/dist/cli/commands/skill.js +111 -0
  110. package/dist/cli/config/loader.cjs +143 -0
  111. package/dist/cli/config/loader.d.ts +14 -0
  112. package/dist/cli/config/loader.js +109 -0
  113. package/dist/cli/config/schema.cjs +262 -0
  114. package/dist/cli/config/schema.d.ts +268 -0
  115. package/dist/cli/config/schema.js +213 -0
  116. package/dist/cli/core/agentInvoker.cjs +284 -0
  117. package/dist/cli/core/agentInvoker.d.ts +77 -0
  118. package/dist/cli/core/agentInvoker.js +247 -0
  119. package/dist/cli/core/commandHandler.cjs +257 -0
  120. package/dist/cli/core/commandHandler.d.ts +62 -0
  121. package/dist/cli/core/commandHandler.js +223 -0
  122. package/dist/cli/core/database/bunSqliteAdapter.cjs +87 -0
  123. package/dist/cli/core/database/bunSqliteAdapter.d.ts +34 -0
  124. package/dist/cli/core/database/bunSqliteAdapter.js +53 -0
  125. package/dist/cli/core/loggerBridge.cjs +42 -0
  126. package/dist/cli/core/loggerBridge.d.ts +8 -0
  127. package/dist/cli/core/loggerBridge.js +8 -0
  128. package/dist/cli/core/outputManager.cjs +106 -0
  129. package/dist/cli/core/outputManager.d.ts +43 -0
  130. package/dist/cli/core/outputManager.js +72 -0
  131. package/dist/cli/core/sessionManager.cjs +535 -0
  132. package/dist/cli/core/sessionManager.d.ts +111 -0
  133. package/dist/cli/core/sessionManager.js +486 -0
  134. package/dist/cli/core/streamParser.cjs +328 -0
  135. package/dist/cli/core/streamParser.d.ts +42 -0
  136. package/dist/cli/core/streamParser.js +288 -0
  137. package/dist/cli/index.cjs +211 -0
  138. package/dist/cli/index.d.ts +2 -0
  139. package/dist/cli/index.js +205 -0
  140. package/dist/cli/services/skillRepository.cjs +178 -0
  141. package/dist/cli/services/skillRepository.d.ts +35 -0
  142. package/dist/cli/services/skillRepository.js +144 -0
  143. package/dist/cli/services/skillService.cjs +336 -0
  144. package/dist/cli/services/skillService.d.ts +48 -0
  145. package/dist/cli/services/skillService.js +302 -0
  146. package/dist/cli/types/gateway.cjs +18 -0
  147. package/dist/cli/types/gateway.d.ts +18 -0
  148. package/dist/cli/types/gateway.js +0 -0
  149. package/dist/cli/types/init.cjs +18 -0
  150. package/dist/cli/types/init.d.ts +13 -0
  151. package/dist/cli/types/init.js +0 -0
  152. package/dist/cli/types/provider.cjs +18 -0
  153. package/dist/cli/types/provider.d.ts +9 -0
  154. package/dist/cli/types/provider.js +0 -0
  155. package/dist/cli/types/skill.cjs +18 -0
  156. package/dist/cli/types/skill.d.ts +71 -0
  157. package/dist/cli/types/skill.js +0 -0
  158. package/dist/cli/types.cjs +18 -0
  159. package/dist/cli/types.d.ts +175 -0
  160. package/dist/cli/types.js +0 -0
  161. package/dist/cli/ui/AgentOutput.cjs +82 -0
  162. package/dist/cli/ui/AgentOutput.d.ts +8 -0
  163. package/dist/cli/ui/AgentOutput.js +38 -0
  164. package/dist/cli/ui/App.cjs +285 -0
  165. package/dist/cli/ui/App.d.ts +6 -0
  166. package/dist/cli/ui/App.js +241 -0
  167. package/dist/cli/ui/ErrorDisplay.cjs +65 -0
  168. package/dist/cli/ui/ErrorDisplay.d.ts +8 -0
  169. package/dist/cli/ui/ErrorDisplay.js +21 -0
  170. package/dist/cli/ui/LogDisplay.cjs +74 -0
  171. package/dist/cli/ui/LogDisplay.d.ts +13 -0
  172. package/dist/cli/ui/LogDisplay.js +30 -0
  173. package/dist/cli/ui/SessionListDisplay.cjs +135 -0
  174. package/dist/cli/ui/SessionListDisplay.d.ts +9 -0
  175. package/dist/cli/ui/SessionListDisplay.js +91 -0
  176. package/dist/cli/ui/blockHelpers.cjs +80 -0
  177. package/dist/cli/ui/blockHelpers.d.ts +21 -0
  178. package/dist/cli/ui/blockHelpers.js +40 -0
  179. package/dist/cli/ui/components/ToolCallDisplay.cjs +207 -0
  180. package/dist/cli/ui/components/ToolCallDisplay.d.ts +7 -0
  181. package/dist/cli/ui/components/ToolCallDisplay.js +162 -0
  182. package/dist/cli/ui/components/ToolResultDisplay.cjs +86 -0
  183. package/dist/cli/ui/components/ToolResultDisplay.d.ts +8 -0
  184. package/dist/cli/ui/components/ToolResultDisplay.js +42 -0
  185. package/dist/cli/ui/toolDisplayHelpers.cjs +112 -0
  186. package/dist/cli/ui/toolDisplayHelpers.d.ts +3 -0
  187. package/dist/cli/ui/toolDisplayHelpers.js +72 -0
  188. package/dist/gateway/adapters/discord.cjs +298 -0
  189. package/dist/gateway/adapters/discord.d.ts +42 -0
  190. package/dist/gateway/adapters/discord.js +246 -0
  191. package/dist/gateway/auth.cjs +94 -0
  192. package/dist/gateway/auth.d.ts +36 -0
  193. package/dist/gateway/auth.js +60 -0
  194. package/dist/gateway/broadcast.cjs +131 -0
  195. package/dist/gateway/broadcast.d.ts +76 -0
  196. package/dist/gateway/broadcast.js +97 -0
  197. package/dist/gateway/client.cjs +282 -0
  198. package/dist/gateway/client.d.ts +141 -0
  199. package/dist/gateway/client.js +248 -0
  200. package/dist/gateway/daemon.cjs +195 -0
  201. package/dist/gateway/daemon.d.ts +67 -0
  202. package/dist/gateway/daemon.js +161 -0
  203. package/dist/gateway/discovery/index.cjs +72 -0
  204. package/dist/gateway/discovery/index.d.ts +3 -0
  205. package/dist/gateway/discovery/index.js +3 -0
  206. package/dist/gateway/discovery/mdns.cjs +221 -0
  207. package/dist/gateway/discovery/mdns.d.ts +37 -0
  208. package/dist/gateway/discovery/mdns.js +177 -0
  209. package/dist/gateway/discovery/tailscale.cjs +140 -0
  210. package/dist/gateway/discovery/tailscale.d.ts +31 -0
  211. package/dist/gateway/discovery/tailscale.js +106 -0
  212. package/dist/gateway/discovery/types.cjs +18 -0
  213. package/dist/gateway/discovery/types.d.ts +41 -0
  214. package/dist/gateway/discovery/types.js +0 -0
  215. package/dist/gateway/env.cjs +45 -0
  216. package/dist/gateway/env.d.ts +2 -0
  217. package/dist/gateway/env.js +8 -0
  218. package/dist/gateway/hooks/loader.cjs +137 -0
  219. package/dist/gateway/hooks/loader.d.ts +10 -0
  220. package/dist/gateway/hooks/loader.js +103 -0
  221. package/dist/gateway/hooks/registry.cjs +128 -0
  222. package/dist/gateway/hooks/registry.d.ts +13 -0
  223. package/dist/gateway/hooks/registry.js +94 -0
  224. package/dist/gateway/hooks/types.cjs +58 -0
  225. package/dist/gateway/hooks/types.d.ts +50 -0
  226. package/dist/gateway/hooks/types.js +18 -0
  227. package/dist/gateway/http/agents.cjs +280 -0
  228. package/dist/gateway/http/agents.d.ts +2 -0
  229. package/dist/gateway/http/agents.js +246 -0
  230. package/dist/gateway/http/fs.cjs +81 -0
  231. package/dist/gateway/http/fs.d.ts +2 -0
  232. package/dist/gateway/http/fs.js +47 -0
  233. package/dist/gateway/http/providers.cjs +120 -0
  234. package/dist/gateway/http/providers.d.ts +2 -0
  235. package/dist/gateway/http/providers.js +86 -0
  236. package/dist/gateway/http/routines.cjs +196 -0
  237. package/dist/gateway/http/routines.d.ts +20 -0
  238. package/dist/gateway/http/routines.js +159 -0
  239. package/dist/gateway/http/sessions.cjs +241 -0
  240. package/dist/gateway/http/sessions.d.ts +2 -0
  241. package/dist/gateway/http/sessions.js +207 -0
  242. package/dist/gateway/http/types.cjs +18 -0
  243. package/dist/gateway/http/types.d.ts +25 -0
  244. package/dist/gateway/http/types.js +0 -0
  245. package/dist/gateway/http/voice.cjs +167 -0
  246. package/dist/gateway/http/voice.d.ts +2 -0
  247. package/dist/gateway/http/voice.js +133 -0
  248. package/dist/gateway/http/webhooks.cjs +353 -0
  249. package/dist/gateway/http/webhooks.d.ts +22 -0
  250. package/dist/gateway/http/webhooks.js +313 -0
  251. package/dist/gateway/index.cjs +119 -0
  252. package/dist/gateway/index.d.ts +8 -0
  253. package/dist/gateway/index.js +9 -0
  254. package/dist/gateway/node.cjs +218 -0
  255. package/dist/gateway/node.d.ts +112 -0
  256. package/dist/gateway/node.js +184 -0
  257. package/dist/gateway/router.cjs +85 -0
  258. package/dist/gateway/router.d.ts +9 -0
  259. package/dist/gateway/router.js +51 -0
  260. package/dist/gateway/rpcClient.cjs +152 -0
  261. package/dist/gateway/rpcClient.d.ts +24 -0
  262. package/dist/gateway/rpcClient.js +118 -0
  263. package/dist/gateway/server.cjs +1175 -0
  264. package/dist/gateway/server.d.ts +185 -0
  265. package/dist/gateway/server.js +1138 -0
  266. package/dist/gateway/transport/http.cjs +153 -0
  267. package/dist/gateway/transport/http.d.ts +25 -0
  268. package/dist/gateway/transport/http.js +119 -0
  269. package/dist/gateway/transport/index.cjs +40 -0
  270. package/dist/gateway/transport/index.d.ts +3 -0
  271. package/dist/gateway/transport/index.js +3 -0
  272. package/dist/gateway/transport/types.cjs +18 -0
  273. package/dist/gateway/transport/types.d.ts +59 -0
  274. package/dist/gateway/transport/types.js +0 -0
  275. package/dist/gateway/transport/websocket.cjs +132 -0
  276. package/dist/gateway/transport/websocket.d.ts +21 -0
  277. package/dist/gateway/transport/websocket.js +98 -0
  278. package/dist/gateway/types.cjs +18 -0
  279. package/dist/gateway/types.d.ts +215 -0
  280. package/dist/gateway/types.js +0 -0
  281. package/dist/gateway/validation.cjs +225 -0
  282. package/dist/gateway/validation.d.ts +157 -0
  283. package/dist/gateway/validation.js +158 -0
  284. package/dist/index.cjs +95 -0
  285. package/dist/index.d.ts +6 -0
  286. package/dist/index.js +6 -0
  287. package/dist/logger.cjs +270 -0
  288. package/dist/logger.d.ts +54 -0
  289. package/dist/logger.js +215 -0
  290. package/dist/providers/copilot.cjs +148 -0
  291. package/dist/providers/copilot.d.ts +3 -0
  292. package/dist/providers/copilot.js +114 -0
  293. package/dist/providers/credentials.cjs +154 -0
  294. package/dist/providers/credentials.d.ts +26 -0
  295. package/dist/providers/credentials.js +99 -0
  296. package/dist/providers/oauth.cjs +279 -0
  297. package/dist/providers/oauth.d.ts +13 -0
  298. package/dist/providers/oauth.js +245 -0
  299. package/dist/providers/registry.cjs +138 -0
  300. package/dist/providers/registry.d.ts +32 -0
  301. package/dist/providers/registry.js +98 -0
  302. package/dist/tests/additionalMessageMiddleware.test.cjs +45 -0
  303. package/dist/tests/additionalMessageMiddleware.test.d.ts +1 -0
  304. package/dist/tests/additionalMessageMiddleware.test.js +39 -0
  305. package/dist/tests/agent-config-voice.test.cjs +25 -0
  306. package/dist/tests/agent-config-voice.test.d.ts +1 -0
  307. package/dist/tests/agent-config-voice.test.js +19 -0
  308. package/dist/tests/agentInvokerAttachments.test.cjs +67 -0
  309. package/dist/tests/agentInvokerAttachments.test.d.ts +1 -0
  310. package/dist/tests/agentInvokerAttachments.test.js +61 -0
  311. package/dist/tests/attachments-utils.test.cjs +46 -0
  312. package/dist/tests/attachments-utils.test.d.ts +1 -0
  313. package/dist/tests/attachments-utils.test.js +40 -0
  314. package/dist/tests/bunSqliteAdapter.test.cjs +265 -0
  315. package/dist/tests/bunSqliteAdapter.test.d.ts +1 -0
  316. package/dist/tests/bunSqliteAdapter.test.js +259 -0
  317. package/dist/tests/candleRange.test.cjs +48 -0
  318. package/dist/tests/candleRange.test.d.ts +1 -0
  319. package/dist/tests/candleRange.test.js +42 -0
  320. package/dist/tests/cli-config-loader.test.cjs +364 -0
  321. package/dist/tests/cli-config-loader.test.d.ts +1 -0
  322. package/dist/tests/cli-config-loader.test.js +358 -0
  323. package/dist/tests/cli-init.test.cjs +82 -0
  324. package/dist/tests/cli-init.test.d.ts +1 -0
  325. package/dist/tests/cli-init.test.js +76 -0
  326. package/dist/tests/discord-adapter.test.cjs +55 -0
  327. package/dist/tests/discord-adapter.test.d.ts +1 -0
  328. package/dist/tests/discord-adapter.test.js +49 -0
  329. package/dist/tests/gateway.test.cjs +319 -0
  330. package/dist/tests/gateway.test.d.ts +1 -0
  331. package/dist/tests/gateway.test.js +313 -0
  332. package/dist/tests/hooks-matcher.test.cjs +309 -0
  333. package/dist/tests/hooks-matcher.test.d.ts +1 -0
  334. package/dist/tests/hooks-matcher.test.js +303 -0
  335. package/dist/tests/hooks-merger.test.cjs +528 -0
  336. package/dist/tests/hooks-merger.test.d.ts +1 -0
  337. package/dist/tests/hooks-merger.test.js +522 -0
  338. package/dist/tests/integration/agent-invocation.integration.test.cjs +264 -0
  339. package/dist/tests/integration/agent-invocation.integration.test.d.ts +1 -0
  340. package/dist/tests/integration/agent-invocation.integration.test.js +258 -0
  341. package/dist/tests/integration/finnhub-candles.integration.test.cjs +98 -0
  342. package/dist/tests/integration/finnhub-candles.integration.test.d.ts +1 -0
  343. package/dist/tests/integration/finnhub-candles.integration.test.js +92 -0
  344. package/dist/tests/logger.test.cjs +353 -0
  345. package/dist/tests/logger.test.d.ts +1 -0
  346. package/dist/tests/logger.test.js +347 -0
  347. package/dist/tests/mediaCompatibilityMiddleware.test.cjs +106 -0
  348. package/dist/tests/mediaCompatibilityMiddleware.test.d.ts +1 -0
  349. package/dist/tests/mediaCompatibilityMiddleware.test.js +100 -0
  350. package/dist/tests/routines-api.test.cjs +107 -0
  351. package/dist/tests/routines-api.test.d.ts +1 -0
  352. package/dist/tests/routines-api.test.js +101 -0
  353. package/dist/tests/sessionMessageAttachments.test.cjs +108 -0
  354. package/dist/tests/sessionMessageAttachments.test.d.ts +1 -0
  355. package/dist/tests/sessionMessageAttachments.test.js +102 -0
  356. package/dist/tests/sessionMessageRole.test.cjs +44 -0
  357. package/dist/tests/sessionMessageRole.test.d.ts +1 -0
  358. package/dist/tests/sessionMessageRole.test.js +38 -0
  359. package/dist/tests/sessionStateMessages.test.cjs +72 -0
  360. package/dist/tests/sessionStateMessages.test.d.ts +1 -0
  361. package/dist/tests/sessionStateMessages.test.js +66 -0
  362. package/dist/tests/sessions-api.test.cjs +68 -0
  363. package/dist/tests/sessions-api.test.d.ts +1 -0
  364. package/dist/tests/sessions-api.test.js +62 -0
  365. package/dist/tests/technicalIndicators.test.cjs +82 -0
  366. package/dist/tests/technicalIndicators.test.d.ts +1 -0
  367. package/dist/tests/technicalIndicators.test.js +76 -0
  368. package/dist/tests/toolDisplayHelpers.test.cjs +43 -0
  369. package/dist/tests/toolDisplayHelpers.test.d.ts +1 -0
  370. package/dist/tests/toolDisplayHelpers.test.js +37 -0
  371. package/dist/tests/voice-config.test.cjs +35 -0
  372. package/dist/tests/voice-config.test.d.ts +1 -0
  373. package/dist/tests/voice-config.test.js +29 -0
  374. package/dist/tests/yahooCandles.test.cjs +111 -0
  375. package/dist/tests/yahooCandles.test.d.ts +1 -0
  376. package/dist/tests/yahooCandles.test.js +105 -0
  377. package/dist/tools/finance/candleRange.cjs +71 -0
  378. package/dist/tools/finance/candleRange.d.ts +21 -0
  379. package/dist/tools/finance/candleRange.js +28 -0
  380. package/dist/tools/finance/optionsAnalytics.cjs +222 -0
  381. package/dist/tools/finance/optionsAnalytics.d.ts +44 -0
  382. package/dist/tools/finance/optionsAnalytics.js +188 -0
  383. package/dist/tools/finance/optionsAnalytics.test.cjs +128 -0
  384. package/dist/tools/finance/optionsAnalytics.test.d.ts +1 -0
  385. package/dist/tools/finance/optionsAnalytics.test.js +122 -0
  386. package/dist/tools/finance/technicalIndicators.cjs +111 -0
  387. package/dist/tools/finance/technicalIndicators.d.ts +15 -0
  388. package/dist/tools/finance/technicalIndicators.js +68 -0
  389. package/dist/tools/finance/yahooCandles.cjs +125 -0
  390. package/dist/tools/finance/yahooCandles.d.ts +41 -0
  391. package/dist/tools/finance/yahooCandles.js +85 -0
  392. package/dist/tools/mcp-finance.cjs +649 -0
  393. package/dist/tools/mcp-finance.d.ts +1 -0
  394. package/dist/tools/mcp-finance.js +631 -0
  395. package/dist/types/agents.cjs +18 -0
  396. package/dist/types/agents.d.ts +11 -0
  397. package/dist/types/agents.js +0 -0
  398. package/dist/types/hooks.cjs +18 -0
  399. package/dist/types/hooks.d.ts +82 -0
  400. package/dist/types/hooks.js +0 -0
  401. package/dist/types/mcp.cjs +86 -0
  402. package/dist/types/mcp.d.ts +107 -0
  403. package/dist/types/mcp.js +40 -0
  404. package/dist/types/voice.cjs +103 -0
  405. package/dist/types/voice.d.ts +117 -0
  406. package/dist/types/voice.js +51 -0
  407. package/dist/utils/attachments.cjs +46 -0
  408. package/dist/utils/attachments.d.ts +7 -0
  409. package/dist/utils/attachments.js +12 -0
  410. package/dist/voice/config.cjs +52 -0
  411. package/dist/voice/config.d.ts +8 -0
  412. package/dist/voice/config.js +18 -0
  413. package/dist/webui/assets/index-BA0HaStz.css +1 -0
  414. package/dist/webui/assets/index-NHgTZsWN.js +112 -0
  415. package/dist/webui/assets/wingman_icon-DOy91UEF.webp +0 -0
  416. package/dist/webui/assets/wingman_logo-Cogyt3qm.webp +0 -0
  417. package/dist/webui/index.html +19 -0
  418. package/package.json +130 -0
@@ -0,0 +1,41 @@
1
+ import type { StructuredTool } from "@langchain/core/tools";
2
+ import type { MCPServersConfig } from "@/types/mcp.js";
3
+ import type { Logger } from "@/logger.js";
4
+ /**
5
+ * Manages MCP server connections and tool retrieval
6
+ * Handles server lifecycle: initialization, tool loading, and cleanup
7
+ */
8
+ export declare class MCPClientManager {
9
+ private client;
10
+ private logger;
11
+ private serverConfigs;
12
+ constructor(configs: MCPServersConfig[], logger: Logger);
13
+ /**
14
+ * Merge multiple MCP configurations (global + agent-specific)
15
+ * Agent-specific servers override global ones with same name
16
+ */
17
+ private mergeConfigs;
18
+ /**
19
+ * Convert Wingman MCP config to MultiServerMCPClient format
20
+ */
21
+ private buildClientConfig;
22
+ /**
23
+ * Initialize MCP client and connect to servers
24
+ */
25
+ initialize(): Promise<void>;
26
+ /**
27
+ * Retrieve all tools from connected MCP servers
28
+ * Returns LangChain StructuredTools ready for agent use
29
+ */
30
+ getTools(): Promise<StructuredTool[]>;
31
+ private sanitizeToolNames;
32
+ /**
33
+ * Cleanup MCP client resources
34
+ * Call when agent completes or on error
35
+ */
36
+ cleanup(): Promise<void>;
37
+ /**
38
+ * Check if any MCP servers are configured
39
+ */
40
+ hasServers(): boolean;
41
+ }
@@ -0,0 +1,134 @@
1
+ import { MultiServerMCPClient } from "@langchain/mcp-adapters";
2
+ import { tool as tools_tool } from "@langchain/core/tools";
3
+ function _define_property(obj, key, value) {
4
+ if (key in obj) Object.defineProperty(obj, key, {
5
+ value: value,
6
+ enumerable: true,
7
+ configurable: true,
8
+ writable: true
9
+ });
10
+ else obj[key] = value;
11
+ return obj;
12
+ }
13
+ class MCPClientManager {
14
+ mergeConfigs(configs) {
15
+ const serverMap = new Map();
16
+ for (const config of configs)if (config.servers) for (const server of config.servers)serverMap.set(server.name, server);
17
+ return Array.from(serverMap.values());
18
+ }
19
+ buildClientConfig() {
20
+ const clientConfig = {};
21
+ for (const server of this.serverConfigs)if ("stdio" === server.transport) {
22
+ const stdioServer = server;
23
+ const resolvedEnv = {};
24
+ for (const [key, value] of Object.entries(stdioServer.env || {}))resolvedEnv[key] = resolveEnvValue(value);
25
+ clientConfig[server.name] = {
26
+ transport: "stdio",
27
+ command: stdioServer.command,
28
+ args: stdioServer.args || [],
29
+ env: resolvedEnv
30
+ };
31
+ } else if ("sse" === server.transport) {
32
+ const sseServer = server;
33
+ clientConfig[server.name] = {
34
+ transport: "sse",
35
+ url: sseServer.url,
36
+ headers: sseServer.headers || {}
37
+ };
38
+ }
39
+ return clientConfig;
40
+ }
41
+ async initialize() {
42
+ if (0 === this.serverConfigs.length) return void this.logger.debug("No MCP servers configured");
43
+ try {
44
+ const clientConfig = this.buildClientConfig();
45
+ this.logger.info(`Initializing MCP client with ${this.serverConfigs.length} server(s)`);
46
+ this.client = new MultiServerMCPClient(clientConfig);
47
+ this.logger.info("MCP client initialized successfully");
48
+ } catch (error) {
49
+ this.logger.error(`Failed to initialize MCP client: ${error instanceof Error ? error.message : String(error)}`);
50
+ throw new Error(`MCP client initialization failed: ${error}`);
51
+ }
52
+ }
53
+ async getTools() {
54
+ if (!this.client) {
55
+ this.logger.debug("No MCP client initialized, returning empty tools array");
56
+ return [];
57
+ }
58
+ try {
59
+ this.logger.debug("Retrieving tools from MCP servers");
60
+ const tools = await this.client.getTools();
61
+ const sanitized = this.sanitizeToolNames(tools);
62
+ this.logger.info(`Retrieved ${sanitized.length} tool(s) from MCP servers`);
63
+ return sanitized;
64
+ } catch (error) {
65
+ this.logger.error(`Failed to retrieve MCP tools: ${error instanceof Error ? error.message : String(error)}`);
66
+ return [];
67
+ }
68
+ }
69
+ sanitizeToolNames(tools) {
70
+ const used = new Map();
71
+ const sanitize = (name)=>{
72
+ const base = name.replace(/[^a-zA-Z0-9_-]/g, "_").slice(0, 128);
73
+ return base.length > 0 ? base : "tool";
74
+ };
75
+ const uniqueName = (name)=>{
76
+ let candidate = sanitize(name);
77
+ let counter = used.get(candidate) || 0;
78
+ while(used.has(candidate)){
79
+ counter += 1;
80
+ const suffix = `_${counter}`;
81
+ candidate = `${sanitize(name).slice(0, 128 - suffix.length)}${suffix}`;
82
+ }
83
+ used.set(candidate, counter);
84
+ return candidate;
85
+ };
86
+ return tools.map((tool)=>{
87
+ const original = tool.name;
88
+ const sanitized = uniqueName(original);
89
+ if (sanitized === original) return tool;
90
+ const originalLabel = `Original tool name: ${original}`;
91
+ const description = tool.description ? `${tool.description}\n\n${originalLabel}` : originalLabel;
92
+ const schema = tool.schema ?? tool.inputSchema;
93
+ if (!schema) try {
94
+ tool.name = sanitized;
95
+ tool.description = description;
96
+ return tool;
97
+ } catch {
98
+ return tool;
99
+ }
100
+ return tools_tool(async (input)=>tool.invoke(input), {
101
+ name: sanitized,
102
+ description,
103
+ schema
104
+ });
105
+ });
106
+ }
107
+ async cleanup() {
108
+ if (!this.client) return;
109
+ try {
110
+ this.logger.debug("Cleaning up MCP client");
111
+ this.client = null;
112
+ this.logger.debug("MCP client cleanup complete");
113
+ } catch (error) {
114
+ this.logger.warn(`Error during MCP cleanup: ${error instanceof Error ? error.message : String(error)}`);
115
+ }
116
+ }
117
+ hasServers() {
118
+ return this.serverConfigs.length > 0;
119
+ }
120
+ constructor(configs, logger){
121
+ _define_property(this, "client", null);
122
+ _define_property(this, "logger", void 0);
123
+ _define_property(this, "serverConfigs", void 0);
124
+ this.logger = logger;
125
+ this.serverConfigs = this.mergeConfigs(configs);
126
+ }
127
+ }
128
+ function resolveEnvValue(value) {
129
+ const match = value.match(/^\$\{([A-Z0-9_]+)\}$/);
130
+ if (!match) return value;
131
+ const envValue = process.env[match[1]];
132
+ return envValue ?? "";
133
+ }
134
+ export { MCPClientManager };
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ ModelFactory: ()=>ModelFactory
28
+ });
29
+ const anthropic_namespaceObject = require("@langchain/anthropic");
30
+ const openai_namespaceObject = require("@langchain/openai");
31
+ const xai_namespaceObject = require("@langchain/xai");
32
+ const external_logger_cjs_namespaceObject = require("../../logger.cjs");
33
+ const credentials_cjs_namespaceObject = require("../../providers/credentials.cjs");
34
+ const copilot_cjs_namespaceObject = require("../../providers/copilot.cjs");
35
+ const registry_cjs_namespaceObject = require("../../providers/registry.cjs");
36
+ const logger = (0, external_logger_cjs_namespaceObject.createLogger)();
37
+ class ModelFactory {
38
+ static createModel(modelString) {
39
+ const parts = modelString.split(":");
40
+ if (2 !== parts.length) throw new Error(`Invalid model format: "${modelString}". Expected format: "provider:model-name"`);
41
+ const [provider, model] = parts;
42
+ if (!provider || !model) throw new Error(`Invalid model format: "${modelString}". Both provider and model name are required.`);
43
+ const normalizedProvider = (0, registry_cjs_namespaceObject.normalizeProviderName)(provider);
44
+ const providerSpec = normalizedProvider ? (0, registry_cjs_namespaceObject.getProviderSpec)(normalizedProvider) : void 0;
45
+ if (!providerSpec || "model" !== providerSpec.category) {
46
+ const supported = (0, registry_cjs_namespaceObject.listProviderSpecs)("model").map((item)=>item.name).join(", ");
47
+ throw new Error(`Unknown model provider: "${provider}". Supported providers: ${supported}`);
48
+ }
49
+ logger.debug(`Creating model: ${normalizedProvider}:${model}`);
50
+ switch(providerSpec.name){
51
+ case "anthropic":
52
+ return ModelFactory.createAnthropicModel(model);
53
+ case "openai":
54
+ return ModelFactory.createOpenAIModel(model);
55
+ case "openrouter":
56
+ return ModelFactory.createOpenRouterModel(model);
57
+ case "copilot":
58
+ return ModelFactory.createCopilotModel(model);
59
+ case "xai":
60
+ return ModelFactory.createXAIModel(model);
61
+ case "lmstudio":
62
+ return ModelFactory.createLMStudioModel(model);
63
+ case "ollama":
64
+ return ModelFactory.createOllamaModel(model);
65
+ }
66
+ }
67
+ static validateModelString(modelString) {
68
+ const parts = modelString.split(":");
69
+ if (2 !== parts.length) return {
70
+ valid: false,
71
+ error: `Invalid format: "${modelString}". Expected format: "provider:model-name"`
72
+ };
73
+ const [provider, model] = parts;
74
+ if (!provider || !model) return {
75
+ valid: false,
76
+ error: "Both provider and model name are required"
77
+ };
78
+ const normalizedProvider = (0, registry_cjs_namespaceObject.normalizeProviderName)(provider);
79
+ const providerSpec = normalizedProvider ? (0, registry_cjs_namespaceObject.getProviderSpec)(normalizedProvider) : void 0;
80
+ if (!providerSpec || "model" !== providerSpec.category) {
81
+ const supported = (0, registry_cjs_namespaceObject.listProviderSpecs)("model").map((item)=>item.name).join(", ");
82
+ return {
83
+ valid: false,
84
+ error: `Unknown provider: "${provider}". Supported: ${supported}`
85
+ };
86
+ }
87
+ return {
88
+ valid: true
89
+ };
90
+ }
91
+ static createAnthropicModel(model) {
92
+ const token = (0, credentials_cjs_namespaceObject.resolveProviderToken)("anthropic").token;
93
+ const params = {
94
+ model,
95
+ temperature: 1
96
+ };
97
+ if (token) params.apiKey = token;
98
+ return new anthropic_namespaceObject.ChatAnthropic(params);
99
+ }
100
+ static createOpenAIModel(model) {
101
+ const token = (0, credentials_cjs_namespaceObject.resolveProviderToken)("openai").token;
102
+ const params = {
103
+ model,
104
+ temperature: 1
105
+ };
106
+ if (token) params.apiKey = token;
107
+ return new openai_namespaceObject.ChatOpenAI(params);
108
+ }
109
+ static createOpenRouterModel(model) {
110
+ const token = (0, credentials_cjs_namespaceObject.resolveProviderToken)("openrouter").token ?? "";
111
+ const provider = (0, registry_cjs_namespaceObject.getProviderSpec)("openrouter");
112
+ return new openai_namespaceObject.ChatOpenAI({
113
+ model,
114
+ temperature: 1,
115
+ apiKey: token,
116
+ configuration: {
117
+ baseURL: provider?.baseURL
118
+ }
119
+ });
120
+ }
121
+ static createCopilotModel(model) {
122
+ const provider = (0, registry_cjs_namespaceObject.getProviderSpec)("copilot");
123
+ return new openai_namespaceObject.ChatOpenAI({
124
+ model,
125
+ temperature: 1,
126
+ apiKey: "copilot",
127
+ configuration: {
128
+ baseURL: provider?.baseURL,
129
+ fetch: (0, copilot_cjs_namespaceObject.createCopilotFetch)()
130
+ }
131
+ });
132
+ }
133
+ static createXAIModel(model) {
134
+ const token = (0, credentials_cjs_namespaceObject.resolveProviderToken)("xai").token;
135
+ const params = {
136
+ model,
137
+ temperature: 1
138
+ };
139
+ if (token) params.apiKey = token;
140
+ return new xai_namespaceObject.ChatXAI(params);
141
+ }
142
+ static createLMStudioModel(model) {
143
+ const tokenResult = (0, credentials_cjs_namespaceObject.resolveProviderToken)("lmstudio");
144
+ const provider = (0, registry_cjs_namespaceObject.getProviderSpec)("lmstudio");
145
+ const apiKey = tokenResult.token ?? "lm-studio";
146
+ return new openai_namespaceObject.ChatOpenAI({
147
+ model,
148
+ temperature: 1,
149
+ apiKey: apiKey,
150
+ configuration: {
151
+ baseURL: provider?.baseURL
152
+ }
153
+ });
154
+ }
155
+ static createOllamaModel(model) {
156
+ const tokenResult = (0, credentials_cjs_namespaceObject.resolveProviderToken)("ollama");
157
+ const provider = (0, registry_cjs_namespaceObject.getProviderSpec)("ollama");
158
+ const apiKey = tokenResult.token ?? "ollama";
159
+ return new openai_namespaceObject.ChatOpenAI({
160
+ model,
161
+ temperature: 1,
162
+ apiKey: apiKey,
163
+ configuration: {
164
+ baseURL: provider?.baseURL
165
+ }
166
+ });
167
+ }
168
+ }
169
+ exports.ModelFactory = __webpack_exports__.ModelFactory;
170
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
171
+ "ModelFactory"
172
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
173
+ Object.defineProperty(exports, '__esModule', {
174
+ value: true
175
+ });
@@ -0,0 +1,33 @@
1
+ import type { BaseLanguageModel, BaseLanguageModelCallOptions } from "@langchain/core/language_models/base";
2
+ /**
3
+ * Create a LangChain model from a model string
4
+ *
5
+ * Format: "provider:model-name"
6
+ * Examples:
7
+ * - "anthropic:claude-opus-4-5"
8
+ * - "anthropic:claude-sonnet-4-5"
9
+ * - "openai:gpt-4o"
10
+ * - "openai:gpt-4-turbo"
11
+ * - "openrouter:openai/gpt-4o"
12
+ * - "copilot:gpt-4o"
13
+ */
14
+ export declare class ModelFactory {
15
+ /**
16
+ * Parse and create a model from a string specification
17
+ */
18
+ static createModel(modelString: string): string | BaseLanguageModel<any, BaseLanguageModelCallOptions> | undefined;
19
+ /**
20
+ * Validate model string format without creating the model
21
+ */
22
+ static validateModelString(modelString: string): {
23
+ valid: boolean;
24
+ error?: string;
25
+ };
26
+ private static createAnthropicModel;
27
+ private static createOpenAIModel;
28
+ private static createOpenRouterModel;
29
+ private static createCopilotModel;
30
+ private static createXAIModel;
31
+ private static createLMStudioModel;
32
+ private static createOllamaModel;
33
+ }
@@ -0,0 +1,141 @@
1
+ import { ChatAnthropic } from "@langchain/anthropic";
2
+ import { ChatOpenAI } from "@langchain/openai";
3
+ import { ChatXAI } from "@langchain/xai";
4
+ import { createLogger } from "../../logger.js";
5
+ import { resolveProviderToken } from "../../providers/credentials.js";
6
+ import { createCopilotFetch } from "../../providers/copilot.js";
7
+ import { getProviderSpec, listProviderSpecs, normalizeProviderName } from "../../providers/registry.js";
8
+ const logger = createLogger();
9
+ class ModelFactory {
10
+ static createModel(modelString) {
11
+ const parts = modelString.split(":");
12
+ if (2 !== parts.length) throw new Error(`Invalid model format: "${modelString}". Expected format: "provider:model-name"`);
13
+ const [provider, model] = parts;
14
+ if (!provider || !model) throw new Error(`Invalid model format: "${modelString}". Both provider and model name are required.`);
15
+ const normalizedProvider = normalizeProviderName(provider);
16
+ const providerSpec = normalizedProvider ? getProviderSpec(normalizedProvider) : void 0;
17
+ if (!providerSpec || "model" !== providerSpec.category) {
18
+ const supported = listProviderSpecs("model").map((item)=>item.name).join(", ");
19
+ throw new Error(`Unknown model provider: "${provider}". Supported providers: ${supported}`);
20
+ }
21
+ logger.debug(`Creating model: ${normalizedProvider}:${model}`);
22
+ switch(providerSpec.name){
23
+ case "anthropic":
24
+ return ModelFactory.createAnthropicModel(model);
25
+ case "openai":
26
+ return ModelFactory.createOpenAIModel(model);
27
+ case "openrouter":
28
+ return ModelFactory.createOpenRouterModel(model);
29
+ case "copilot":
30
+ return ModelFactory.createCopilotModel(model);
31
+ case "xai":
32
+ return ModelFactory.createXAIModel(model);
33
+ case "lmstudio":
34
+ return ModelFactory.createLMStudioModel(model);
35
+ case "ollama":
36
+ return ModelFactory.createOllamaModel(model);
37
+ }
38
+ }
39
+ static validateModelString(modelString) {
40
+ const parts = modelString.split(":");
41
+ if (2 !== parts.length) return {
42
+ valid: false,
43
+ error: `Invalid format: "${modelString}". Expected format: "provider:model-name"`
44
+ };
45
+ const [provider, model] = parts;
46
+ if (!provider || !model) return {
47
+ valid: false,
48
+ error: "Both provider and model name are required"
49
+ };
50
+ const normalizedProvider = normalizeProviderName(provider);
51
+ const providerSpec = normalizedProvider ? getProviderSpec(normalizedProvider) : void 0;
52
+ if (!providerSpec || "model" !== providerSpec.category) {
53
+ const supported = listProviderSpecs("model").map((item)=>item.name).join(", ");
54
+ return {
55
+ valid: false,
56
+ error: `Unknown provider: "${provider}". Supported: ${supported}`
57
+ };
58
+ }
59
+ return {
60
+ valid: true
61
+ };
62
+ }
63
+ static createAnthropicModel(model) {
64
+ const token = resolveProviderToken("anthropic").token;
65
+ const params = {
66
+ model,
67
+ temperature: 1
68
+ };
69
+ if (token) params.apiKey = token;
70
+ return new ChatAnthropic(params);
71
+ }
72
+ static createOpenAIModel(model) {
73
+ const token = resolveProviderToken("openai").token;
74
+ const params = {
75
+ model,
76
+ temperature: 1
77
+ };
78
+ if (token) params.apiKey = token;
79
+ return new ChatOpenAI(params);
80
+ }
81
+ static createOpenRouterModel(model) {
82
+ const token = resolveProviderToken("openrouter").token ?? "";
83
+ const provider = getProviderSpec("openrouter");
84
+ return new ChatOpenAI({
85
+ model,
86
+ temperature: 1,
87
+ apiKey: token,
88
+ configuration: {
89
+ baseURL: provider?.baseURL
90
+ }
91
+ });
92
+ }
93
+ static createCopilotModel(model) {
94
+ const provider = getProviderSpec("copilot");
95
+ return new ChatOpenAI({
96
+ model,
97
+ temperature: 1,
98
+ apiKey: "copilot",
99
+ configuration: {
100
+ baseURL: provider?.baseURL,
101
+ fetch: createCopilotFetch()
102
+ }
103
+ });
104
+ }
105
+ static createXAIModel(model) {
106
+ const token = resolveProviderToken("xai").token;
107
+ const params = {
108
+ model,
109
+ temperature: 1
110
+ };
111
+ if (token) params.apiKey = token;
112
+ return new ChatXAI(params);
113
+ }
114
+ static createLMStudioModel(model) {
115
+ const tokenResult = resolveProviderToken("lmstudio");
116
+ const provider = getProviderSpec("lmstudio");
117
+ const apiKey = tokenResult.token ?? "lm-studio";
118
+ return new ChatOpenAI({
119
+ model,
120
+ temperature: 1,
121
+ apiKey: apiKey,
122
+ configuration: {
123
+ baseURL: provider?.baseURL
124
+ }
125
+ });
126
+ }
127
+ static createOllamaModel(model) {
128
+ const tokenResult = resolveProviderToken("ollama");
129
+ const provider = getProviderSpec("ollama");
130
+ const apiKey = tokenResult.token ?? "ollama";
131
+ return new ChatOpenAI({
132
+ model,
133
+ temperature: 1,
134
+ apiKey: apiKey,
135
+ configuration: {
136
+ baseURL: provider?.baseURL
137
+ }
138
+ });
139
+ }
140
+ }
141
+ export { ModelFactory };
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ createTools: ()=>createTools,
28
+ createTool: ()=>createTool,
29
+ getAvailableTools: ()=>getAvailableTools
30
+ });
31
+ const internet_search_cjs_namespaceObject = require("../tools/internet_search.cjs");
32
+ const web_crawler_cjs_namespaceObject = require("../tools/web_crawler.cjs");
33
+ const command_execute_cjs_namespaceObject = require("../tools/command_execute.cjs");
34
+ const think_cjs_namespaceObject = require("../tools/think.cjs");
35
+ const code_search_cjs_namespaceObject = require("../tools/code_search.cjs");
36
+ const git_status_cjs_namespaceObject = require("../tools/git_status.cjs");
37
+ const external_logger_cjs_namespaceObject = require("../../logger.cjs");
38
+ const external_mcpClientManager_cjs_namespaceObject = require("./mcpClientManager.cjs");
39
+ const logger = (0, external_logger_cjs_namespaceObject.createLogger)();
40
+ function createTool(name, options = {}) {
41
+ const { workspace = process.cwd(), blockedCommands, allowScriptExecution = true, timeout = 300000, searchConfig = {
42
+ provider: "duckduckgo",
43
+ maxResults: 5
44
+ } } = options;
45
+ logger.debug(`Creating tool: ${name}`, {
46
+ workspace,
47
+ blockedCommands,
48
+ allowScriptExecution,
49
+ timeout,
50
+ searchConfig
51
+ });
52
+ switch(name){
53
+ case "internet_search":
54
+ return (0, internet_search_cjs_namespaceObject.createInternetSearchTool)(searchConfig);
55
+ case "web_crawler":
56
+ return web_crawler_cjs_namespaceObject.webCrawler;
57
+ case "command_execute":
58
+ return (0, command_execute_cjs_namespaceObject.createCommandExecuteTool)(workspace, process.env, blockedCommands, allowScriptExecution, timeout);
59
+ case "think":
60
+ return (0, think_cjs_namespaceObject.createThinkingTool)();
61
+ case "code_search":
62
+ return (0, code_search_cjs_namespaceObject.createCodeSearchTool)(workspace);
63
+ case "git_status":
64
+ return (0, git_status_cjs_namespaceObject.createGitStatusTool)(workspace);
65
+ default:
66
+ logger.warn(`Unknown tool name: ${name}`);
67
+ return null;
68
+ }
69
+ }
70
+ async function createTools(toolNames, options = {}) {
71
+ const tools = [];
72
+ for (const name of toolNames){
73
+ const tool = createTool(name, options);
74
+ if (tool) tools.push(tool);
75
+ else logger.warn(`Skipping unknown tool: ${name}`);
76
+ }
77
+ if (options.mcpConfigs && options.mcpConfigs.length > 0) try {
78
+ const mcpManager = new external_mcpClientManager_cjs_namespaceObject.MCPClientManager(options.mcpConfigs, logger);
79
+ await mcpManager.initialize();
80
+ const mcpTools = await mcpManager.getTools();
81
+ if (mcpTools.length > 0) {
82
+ tools.push(...mcpTools);
83
+ logger.info(`Added ${mcpTools.length} MCP tool(s)`);
84
+ }
85
+ } catch (error) {
86
+ logger.error(`Failed to load MCP tools: ${error instanceof Error ? error.message : String(error)}`);
87
+ }
88
+ logger.info(`Created ${tools.length} total tools: ${toolNames.join(", ")}${options.mcpConfigs?.length ? " + MCP tools" : ""}`);
89
+ return tools;
90
+ }
91
+ function getAvailableTools() {
92
+ return [
93
+ "internet_search",
94
+ "web_crawler",
95
+ "command_execute",
96
+ "think",
97
+ "code_search",
98
+ "git_status"
99
+ ];
100
+ }
101
+ exports.createTool = __webpack_exports__.createTool;
102
+ exports.createTools = __webpack_exports__.createTools;
103
+ exports.getAvailableTools = __webpack_exports__.getAvailableTools;
104
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
105
+ "createTool",
106
+ "createTools",
107
+ "getAvailableTools"
108
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
109
+ Object.defineProperty(exports, '__esModule', {
110
+ value: true
111
+ });
@@ -0,0 +1,25 @@
1
+ import type { StructuredTool } from "@langchain/core/tools";
2
+ import type { AvailableToolName } from "./agentConfig.js";
3
+ import type { SearchConfig } from "../../cli/config/schema.js";
4
+ import type { MCPServersConfig } from "@/types/mcp.js";
5
+ export interface ToolOptions {
6
+ workspace?: string;
7
+ blockedCommands?: string[];
8
+ allowScriptExecution?: boolean;
9
+ timeout?: number;
10
+ searchConfig?: SearchConfig;
11
+ mcpConfigs?: MCPServersConfig[];
12
+ }
13
+ /**
14
+ * Create a tool by name with optional configuration
15
+ */
16
+ export declare function createTool(name: AvailableToolName, options?: ToolOptions): StructuredTool | null;
17
+ /**
18
+ * Create multiple tools from an array of tool names
19
+ * NOW ALSO includes MCP tools if configured
20
+ */
21
+ export declare function createTools(toolNames: AvailableToolName[], options?: ToolOptions): Promise<StructuredTool[]>;
22
+ /**
23
+ * Get list of all available tool names
24
+ */
25
+ export declare function getAvailableTools(): AvailableToolName[];