@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,180 @@
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
+ webCrawler: ()=>webCrawler,
28
+ createWebCrawlerTool: ()=>createWebCrawlerTool
29
+ });
30
+ const external_langchain_namespaceObject = require("langchain");
31
+ const external_zod_namespaceObject = require("zod");
32
+ const external_logger_cjs_namespaceObject = require("../../logger.cjs");
33
+ const logger = (0, external_logger_cjs_namespaceObject.createLogger)();
34
+ function extractTextContent(html) {
35
+ let text = html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi, "");
36
+ text = text.replace(/<[^>]+>/g, " ");
37
+ text = text.replace(/&nbsp;/g, " ").replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&apos;/g, "'");
38
+ text = text.replace(/\s+/g, " ").trim();
39
+ return text;
40
+ }
41
+ function extractTitle(html) {
42
+ const titleMatch = html.match(/<title[^>]*>(.*?)<\/title>/i);
43
+ return titleMatch ? extractTextContent(titleMatch[1]) : "";
44
+ }
45
+ function extractLinks(html, baseUrl) {
46
+ const links = new Set();
47
+ const linkRegex = /<a[^>]+href=["']([^"']+)["']/gi;
48
+ let match = null;
49
+ while(null !== (match = linkRegex.exec(html)))try {
50
+ const href = match[1];
51
+ if (href.startsWith("#") || href.startsWith("javascript:") || href.startsWith("mailto:") || href.startsWith("tel:")) continue;
52
+ const absoluteUrl = new URL(href, baseUrl).href;
53
+ links.add(absoluteUrl);
54
+ } catch {}
55
+ return Array.from(links);
56
+ }
57
+ async function crawlPage(url) {
58
+ const controller = new AbortController();
59
+ const timeoutId = setTimeout(()=>controller.abort(), 30000);
60
+ try {
61
+ const response = await fetch(url, {
62
+ signal: controller.signal,
63
+ headers: {
64
+ "User-Agent": "Mozilla/5.0 (compatible; WingmanBot/1.0; +https://github.com/RussellCanfield/wingman-ai)",
65
+ Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
66
+ "Accept-Language": "en-US,en;q=0.5"
67
+ }
68
+ });
69
+ clearTimeout(timeoutId);
70
+ if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.statusText}`);
71
+ const contentType = response.headers.get("content-type") || "";
72
+ if (!contentType.includes("text/html") && !contentType.includes("application/xhtml")) throw new Error(`Not an HTML page: ${contentType}`);
73
+ const html = await response.text();
74
+ return {
75
+ url,
76
+ title: extractTitle(html),
77
+ content: extractTextContent(html),
78
+ links: extractLinks(html, url),
79
+ metadata: {
80
+ statusCode: response.status,
81
+ contentType,
82
+ timestamp: new Date().toISOString()
83
+ }
84
+ };
85
+ } catch (error) {
86
+ clearTimeout(timeoutId);
87
+ throw error;
88
+ }
89
+ }
90
+ async function crawlMultiplePages(startUrl, maxPages, sameDomain) {
91
+ const visited = new Set();
92
+ const queue = [
93
+ startUrl
94
+ ];
95
+ const results = [];
96
+ const startDomain = new URL(startUrl).hostname;
97
+ while(queue.length > 0 && results.length < maxPages){
98
+ const url = queue.shift();
99
+ if (visited.has(url)) continue;
100
+ visited.add(url);
101
+ try {
102
+ const result = await crawlPage(url);
103
+ results.push(result);
104
+ if (results.length < maxPages) {
105
+ for (const link of result.links)if (!visited.has(link)) {
106
+ if (sameDomain) {
107
+ const linkDomain = new URL(link).hostname;
108
+ if (linkDomain !== startDomain) continue;
109
+ }
110
+ queue.push(link);
111
+ }
112
+ }
113
+ } catch (error) {
114
+ logger.error(`Failed to crawl ${url}`, error);
115
+ }
116
+ }
117
+ return results;
118
+ }
119
+ const createWebCrawlerTool = ()=>(0, external_langchain_namespaceObject.tool)(async ({ url, maxPages = 1, sameDomain = true })=>{
120
+ try {
121
+ new URL(url);
122
+ if (maxPages < 1 || maxPages > 10) return "Error: maxPages must be between 1 and 10";
123
+ const results = await crawlMultiplePages(url, maxPages, sameDomain);
124
+ if (0 === results.length) return `Failed to crawl ${url}. The page may be inaccessible or blocked.`;
125
+ let output = "";
126
+ if (1 === results.length) {
127
+ const result = results[0];
128
+ output = `# ${result.title || "Untitled Page"}
129
+
130
+ **URL**: ${result.url}
131
+ **Status**: ${result.metadata.statusCode}
132
+ **Crawled**: ${result.metadata.timestamp}
133
+
134
+ ## Content
135
+
136
+ ${result.content.substring(0, 10000)}${result.content.length > 10000 ? "\n\n[Content truncated - showing first 10,000 characters]" : ""}
137
+
138
+ ## Links Found
139
+
140
+ ${result.links.length > 0 ? result.links.slice(0, 20).map((link)=>`- ${link}`).join("\n") : "No links found"}${result.links.length > 20 ? `\n\n[${result.links.length - 20} more links not shown]` : ""}`;
141
+ } else {
142
+ output = `# Crawled ${results.length} pages from ${url}\n\n`;
143
+ for (const result of results)output += `## ${result.title || "Untitled Page"}
144
+
145
+ **URL**: ${result.url}
146
+
147
+ ${result.content.substring(0, 2000)}${result.content.length > 2000 ? "..." : ""}
148
+
149
+ ---
150
+
151
+ `;
152
+ output += `\n## Summary
153
+
154
+ Total pages crawled: ${results.length}
155
+ Total links discovered: ${results.reduce((sum, r)=>sum + r.links.length, 0)}`;
156
+ }
157
+ return output;
158
+ } catch (error) {
159
+ if (error instanceof TypeError && error.message.includes("Invalid URL")) return `Error: Invalid URL format - ${url}`;
160
+ return `Error crawling ${url}: ${error instanceof Error ? error.message : "Unknown error"}`;
161
+ }
162
+ }, {
163
+ name: "web_crawler",
164
+ description: "Crawls web pages and extracts their content. Can visit a single page or crawl multiple pages following links. Handles modern SPAs and JavaScript-rendered content. Use this to gather detailed information from websites, documentation, or web applications. Maximum 10 pages per crawl.",
165
+ schema: external_zod_namespaceObject.z.object({
166
+ url: external_zod_namespaceObject.z.string().describe("The URL to start crawling from (must be a valid HTTP/HTTPS URL)"),
167
+ maxPages: external_zod_namespaceObject.z.number().optional().default(1).describe("Maximum number of pages to crawl (1-10). Default is 1 for single page crawl."),
168
+ sameDomain: external_zod_namespaceObject.z.boolean().optional().default(true).describe("Whether to restrict crawling to the same domain as the start URL. Default is true.")
169
+ })
170
+ });
171
+ const webCrawler = createWebCrawlerTool();
172
+ exports.createWebCrawlerTool = __webpack_exports__.createWebCrawlerTool;
173
+ exports.webCrawler = __webpack_exports__.webCrawler;
174
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
175
+ "createWebCrawlerTool",
176
+ "webCrawler"
177
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
178
+ Object.defineProperty(exports, '__esModule', {
179
+ value: true
180
+ });
@@ -0,0 +1,31 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Creates a web crawler tool for visiting and extracting content from web pages.
4
+ * SPA-friendly: handles basic JavaScript-rendered content via fetch.
5
+ */
6
+ export declare const createWebCrawlerTool: () => import("langchain").DynamicStructuredTool<z.ZodObject<{
7
+ url: z.ZodString;
8
+ maxPages: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
9
+ sameDomain: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
10
+ }, z.core.$strip>, {
11
+ url: string;
12
+ maxPages?: number;
13
+ sameDomain?: boolean;
14
+ }, {
15
+ url: string;
16
+ maxPages?: number | undefined;
17
+ sameDomain?: boolean | undefined;
18
+ }, string, "web_crawler">;
19
+ export declare const webCrawler: import("langchain").DynamicStructuredTool<z.ZodObject<{
20
+ url: z.ZodString;
21
+ maxPages: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
22
+ sameDomain: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
23
+ }, z.core.$strip>, {
24
+ url: string;
25
+ maxPages?: number;
26
+ sameDomain?: boolean;
27
+ }, {
28
+ url: string;
29
+ maxPages?: number | undefined;
30
+ sameDomain?: boolean | undefined;
31
+ }, string, "web_crawler">;
@@ -0,0 +1,143 @@
1
+ import { tool } from "langchain";
2
+ import { z } from "zod";
3
+ import { createLogger } from "../../logger.js";
4
+ const logger = createLogger();
5
+ function extractTextContent(html) {
6
+ let text = html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi, "");
7
+ text = text.replace(/<[^>]+>/g, " ");
8
+ text = text.replace(/&nbsp;/g, " ").replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&apos;/g, "'");
9
+ text = text.replace(/\s+/g, " ").trim();
10
+ return text;
11
+ }
12
+ function extractTitle(html) {
13
+ const titleMatch = html.match(/<title[^>]*>(.*?)<\/title>/i);
14
+ return titleMatch ? extractTextContent(titleMatch[1]) : "";
15
+ }
16
+ function extractLinks(html, baseUrl) {
17
+ const links = new Set();
18
+ const linkRegex = /<a[^>]+href=["']([^"']+)["']/gi;
19
+ let match = null;
20
+ while(null !== (match = linkRegex.exec(html)))try {
21
+ const href = match[1];
22
+ if (href.startsWith("#") || href.startsWith("javascript:") || href.startsWith("mailto:") || href.startsWith("tel:")) continue;
23
+ const absoluteUrl = new URL(href, baseUrl).href;
24
+ links.add(absoluteUrl);
25
+ } catch {}
26
+ return Array.from(links);
27
+ }
28
+ async function crawlPage(url) {
29
+ const controller = new AbortController();
30
+ const timeoutId = setTimeout(()=>controller.abort(), 30000);
31
+ try {
32
+ const response = await fetch(url, {
33
+ signal: controller.signal,
34
+ headers: {
35
+ "User-Agent": "Mozilla/5.0 (compatible; WingmanBot/1.0; +https://github.com/RussellCanfield/wingman-ai)",
36
+ Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
37
+ "Accept-Language": "en-US,en;q=0.5"
38
+ }
39
+ });
40
+ clearTimeout(timeoutId);
41
+ if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.statusText}`);
42
+ const contentType = response.headers.get("content-type") || "";
43
+ if (!contentType.includes("text/html") && !contentType.includes("application/xhtml")) throw new Error(`Not an HTML page: ${contentType}`);
44
+ const html = await response.text();
45
+ return {
46
+ url,
47
+ title: extractTitle(html),
48
+ content: extractTextContent(html),
49
+ links: extractLinks(html, url),
50
+ metadata: {
51
+ statusCode: response.status,
52
+ contentType,
53
+ timestamp: new Date().toISOString()
54
+ }
55
+ };
56
+ } catch (error) {
57
+ clearTimeout(timeoutId);
58
+ throw error;
59
+ }
60
+ }
61
+ async function crawlMultiplePages(startUrl, maxPages, sameDomain) {
62
+ const visited = new Set();
63
+ const queue = [
64
+ startUrl
65
+ ];
66
+ const results = [];
67
+ const startDomain = new URL(startUrl).hostname;
68
+ while(queue.length > 0 && results.length < maxPages){
69
+ const url = queue.shift();
70
+ if (visited.has(url)) continue;
71
+ visited.add(url);
72
+ try {
73
+ const result = await crawlPage(url);
74
+ results.push(result);
75
+ if (results.length < maxPages) {
76
+ for (const link of result.links)if (!visited.has(link)) {
77
+ if (sameDomain) {
78
+ const linkDomain = new URL(link).hostname;
79
+ if (linkDomain !== startDomain) continue;
80
+ }
81
+ queue.push(link);
82
+ }
83
+ }
84
+ } catch (error) {
85
+ logger.error(`Failed to crawl ${url}`, error);
86
+ }
87
+ }
88
+ return results;
89
+ }
90
+ const createWebCrawlerTool = ()=>tool(async ({ url, maxPages = 1, sameDomain = true })=>{
91
+ try {
92
+ new URL(url);
93
+ if (maxPages < 1 || maxPages > 10) return "Error: maxPages must be between 1 and 10";
94
+ const results = await crawlMultiplePages(url, maxPages, sameDomain);
95
+ if (0 === results.length) return `Failed to crawl ${url}. The page may be inaccessible or blocked.`;
96
+ let output = "";
97
+ if (1 === results.length) {
98
+ const result = results[0];
99
+ output = `# ${result.title || "Untitled Page"}
100
+
101
+ **URL**: ${result.url}
102
+ **Status**: ${result.metadata.statusCode}
103
+ **Crawled**: ${result.metadata.timestamp}
104
+
105
+ ## Content
106
+
107
+ ${result.content.substring(0, 10000)}${result.content.length > 10000 ? "\n\n[Content truncated - showing first 10,000 characters]" : ""}
108
+
109
+ ## Links Found
110
+
111
+ ${result.links.length > 0 ? result.links.slice(0, 20).map((link)=>`- ${link}`).join("\n") : "No links found"}${result.links.length > 20 ? `\n\n[${result.links.length - 20} more links not shown]` : ""}`;
112
+ } else {
113
+ output = `# Crawled ${results.length} pages from ${url}\n\n`;
114
+ for (const result of results)output += `## ${result.title || "Untitled Page"}
115
+
116
+ **URL**: ${result.url}
117
+
118
+ ${result.content.substring(0, 2000)}${result.content.length > 2000 ? "..." : ""}
119
+
120
+ ---
121
+
122
+ `;
123
+ output += `\n## Summary
124
+
125
+ Total pages crawled: ${results.length}
126
+ Total links discovered: ${results.reduce((sum, r)=>sum + r.links.length, 0)}`;
127
+ }
128
+ return output;
129
+ } catch (error) {
130
+ if (error instanceof TypeError && error.message.includes("Invalid URL")) return `Error: Invalid URL format - ${url}`;
131
+ return `Error crawling ${url}: ${error instanceof Error ? error.message : "Unknown error"}`;
132
+ }
133
+ }, {
134
+ name: "web_crawler",
135
+ description: "Crawls web pages and extracts their content. Can visit a single page or crawl multiple pages following links. Handles modern SPAs and JavaScript-rendered content. Use this to gather detailed information from websites, documentation, or web applications. Maximum 10 pages per crawl.",
136
+ schema: z.object({
137
+ url: z.string().describe("The URL to start crawling from (must be a valid HTTP/HTTPS URL)"),
138
+ maxPages: z.number().optional().default(1).describe("Maximum number of pages to crawl (1-10). Default is 1 for single page crawl."),
139
+ sameDomain: z.boolean().optional().default(true).describe("Whether to restrict crawling to the same domain as the start URL. Default is true.")
140
+ })
141
+ });
142
+ const webCrawler = createWebCrawlerTool();
143
+ export { createWebCrawlerTool, webCrawler };
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, definition)=>{
14
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
+ enumerable: true,
16
+ get: definition[key]
17
+ });
18
+ };
19
+ })();
20
+ (()=>{
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
22
+ })();
23
+ (()=>{
24
+ __webpack_require__.r = (exports1)=>{
25
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
26
+ value: 'Module'
27
+ });
28
+ Object.defineProperty(exports1, '__esModule', {
29
+ value: true
30
+ });
31
+ };
32
+ })();
33
+ var __webpack_exports__ = {};
34
+ __webpack_require__.r(__webpack_exports__);
35
+ __webpack_require__.d(__webpack_exports__, {
36
+ getMachineDetails: ()=>getMachineDetails
37
+ });
38
+ const external_node_os_namespaceObject = require("node:os");
39
+ var external_node_os_default = /*#__PURE__*/ __webpack_require__.n(external_node_os_namespaceObject);
40
+ const getMachineDetails = ()=>{
41
+ const userInfo = external_node_os_default().userInfo();
42
+ const machineInfo = `# User's Machine Information
43
+ Operating System: ${external_node_os_default().platform()}
44
+ Architecture: ${external_node_os_default().arch()}
45
+ Default Shell: ${userInfo.shell}`;
46
+ return machineInfo;
47
+ };
48
+ exports.getMachineDetails = __webpack_exports__.getMachineDetails;
49
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
50
+ "getMachineDetails"
51
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
52
+ Object.defineProperty(exports, '__esModule', {
53
+ value: true
54
+ });
@@ -0,0 +1 @@
1
+ export declare const getMachineDetails: () => string;
@@ -0,0 +1,10 @@
1
+ import node_os from "node:os";
2
+ const getMachineDetails = ()=>{
3
+ const userInfo = node_os.userInfo();
4
+ const machineInfo = `# User's Machine Information
5
+ Operating System: ${node_os.platform()}
6
+ Architecture: ${node_os.arch()}
7
+ Default Shell: ${userInfo.shell}`;
8
+ return machineInfo;
9
+ };
10
+ export { getMachineDetails };
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, definition)=>{
14
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
+ enumerable: true,
16
+ get: definition[key]
17
+ });
18
+ };
19
+ })();
20
+ (()=>{
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
22
+ })();
23
+ (()=>{
24
+ __webpack_require__.r = (exports1)=>{
25
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
26
+ value: 'Module'
27
+ });
28
+ Object.defineProperty(exports1, '__esModule', {
29
+ value: true
30
+ });
31
+ };
32
+ })();
33
+ var __webpack_exports__ = {};
34
+ __webpack_require__.r(__webpack_exports__);
35
+ __webpack_require__.d(__webpack_exports__, {
36
+ executeAgentCommand: ()=>executeAgentCommand
37
+ });
38
+ const external_react_namespaceObject = require("react");
39
+ var external_react_default = /*#__PURE__*/ __webpack_require__.n(external_react_namespaceObject);
40
+ const external_ink_namespaceObject = require("ink");
41
+ const agentInvoker_cjs_namespaceObject = require("../core/agentInvoker.cjs");
42
+ const outputManager_cjs_namespaceObject = require("../core/outputManager.cjs");
43
+ const sessionManager_cjs_namespaceObject = require("../core/sessionManager.cjs");
44
+ const external_logger_cjs_namespaceObject = require("../../logger.cjs");
45
+ const external_node_path_namespaceObject = require("node:path");
46
+ const App_cjs_namespaceObject = require("../ui/App.cjs");
47
+ const rpcClient_cjs_namespaceObject = require("../../gateway/rpcClient.cjs");
48
+ async function executeAgentCommand(args, options = {}) {
49
+ const outputManager = new outputManager_cjs_namespaceObject.OutputManager(args.outputMode);
50
+ let inkInstance;
51
+ if ("interactive" === args.outputMode) inkInstance = (0, external_ink_namespaceObject.render)(external_react_default().createElement(App_cjs_namespaceObject.App, {
52
+ outputManager
53
+ }));
54
+ const logger = (0, external_logger_cjs_namespaceObject.createLogger)(args.verbosity);
55
+ let sessionManager = null;
56
+ try {
57
+ if (!args.agent) {
58
+ const invoker = new agentInvoker_cjs_namespaceObject.AgentInvoker({
59
+ workspace: options.workspace,
60
+ configDir: options.configDir,
61
+ outputManager,
62
+ logger
63
+ });
64
+ const agents = invoker.listAgents();
65
+ const logFile = (0, external_logger_cjs_namespaceObject.getLogFilePath)();
66
+ logger.error("No agent specified");
67
+ if ("interactive" === outputManager.getMode()) {
68
+ console.log("\nAvailable agents:");
69
+ for (const agent of agents)console.log(` ${agent.name}: ${agent.description}`);
70
+ console.log('\nUsage: wingman agent --agent <name> "your prompt here"');
71
+ console.error(`\nLogs: ${logFile}`);
72
+ } else outputManager.emitEvent({
73
+ type: "agent-error",
74
+ error: "No agent specified",
75
+ logFile,
76
+ timestamp: new Date().toISOString()
77
+ });
78
+ process.exit(1);
79
+ }
80
+ if (!options.local) {
81
+ if (!options.gatewayUrl) throw new Error("Gateway URL not configured. Use --gateway or set gateway.host/port in wingman.config.json.");
82
+ const client = new rpcClient_cjs_namespaceObject.GatewayRpcClient(options.gatewayUrl, {
83
+ token: options.token,
84
+ password: options.password,
85
+ clientType: "cli"
86
+ });
87
+ await client.connect();
88
+ await client.requestAgent({
89
+ agentId: args.agent,
90
+ content: args.prompt,
91
+ routing: {
92
+ channel: "cli",
93
+ peer: {
94
+ kind: "channel",
95
+ id: "cli"
96
+ }
97
+ },
98
+ sessionKey: options.sessionId
99
+ }, (event)=>{
100
+ outputManager.emitEvent(event);
101
+ });
102
+ client.disconnect();
103
+ if (inkInstance) inkInstance.unmount();
104
+ return;
105
+ }
106
+ const workspace = options.workspace || process.cwd();
107
+ const configDir = options.configDir || ".wingman";
108
+ const dbPath = (0, external_node_path_namespaceObject.join)(workspace, configDir, "wingman.db");
109
+ sessionManager = new sessionManager_cjs_namespaceObject.SessionManager(dbPath);
110
+ await sessionManager.initialize();
111
+ const invoker = new agentInvoker_cjs_namespaceObject.AgentInvoker({
112
+ workspace,
113
+ configDir,
114
+ outputManager,
115
+ logger,
116
+ sessionManager
117
+ });
118
+ let sessionId = options.sessionId;
119
+ if (!sessionId) {
120
+ const lastSession = sessionManager.getLastSession();
121
+ if (lastSession && lastSession.agentName === args.agent) {
122
+ sessionId = lastSession.id;
123
+ logger.debug(`Resuming session: ${sessionId}`);
124
+ } else {
125
+ const newSession = sessionManager.createSession(args.agent);
126
+ sessionId = newSession.id;
127
+ logger.info(`Created new session: ${sessionId}`);
128
+ }
129
+ }
130
+ sessionManager.updateSession(sessionId, {
131
+ lastMessagePreview: args.prompt.substring(0, 200)
132
+ });
133
+ await invoker.invokeAgent(args.agent, args.prompt, sessionId);
134
+ const session = sessionManager.getSession(sessionId);
135
+ if (session) sessionManager.updateSession(sessionId, {
136
+ messageCount: session.messageCount + 1
137
+ });
138
+ sessionManager.close();
139
+ sessionManager = null;
140
+ if (inkInstance) inkInstance.unmount();
141
+ } catch (error) {
142
+ const errorMsg = error instanceof Error ? error.message : String(error);
143
+ const logFile = (0, external_logger_cjs_namespaceObject.getLogFilePath)();
144
+ logger.error("Agent command failed", {
145
+ error: errorMsg
146
+ });
147
+ if (sessionManager) {
148
+ sessionManager.close();
149
+ sessionManager = null;
150
+ }
151
+ if (inkInstance) inkInstance.unmount();
152
+ if ("interactive" === outputManager.getMode()) {
153
+ console.error(`\nError: ${errorMsg}`);
154
+ console.error(`Logs: ${logFile}`);
155
+ process.exit(1);
156
+ } else {
157
+ const isAgentError = Boolean(error instanceof Error && error.isAgentError);
158
+ if (!isAgentError) outputManager.emitAgentError(error);
159
+ process.exit(1);
160
+ }
161
+ }
162
+ }
163
+ exports.executeAgentCommand = __webpack_exports__.executeAgentCommand;
164
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
165
+ "executeAgentCommand"
166
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
167
+ Object.defineProperty(exports, '__esModule', {
168
+ value: true
169
+ });
@@ -0,0 +1,15 @@
1
+ import type { AgentCommandArgs } from "../types.js";
2
+ export interface AgentCommandOptions {
3
+ workspace?: string;
4
+ configDir?: string;
5
+ sessionId?: string;
6
+ local?: boolean;
7
+ gatewayUrl?: string;
8
+ token?: string;
9
+ password?: string;
10
+ }
11
+ /**
12
+ * Execute the agent command
13
+ * This is the handler for: wingman agent --agent <name> <prompt>
14
+ */
15
+ export declare function executeAgentCommand(args: AgentCommandArgs, options?: AgentCommandOptions): Promise<void>;