@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,649 @@
1
+ "use strict";
2
+ var __webpack_modules__ = {
3
+ "./src/tools/mcp-finance.ts" (module, __webpack_exports__, __webpack_require__) {
4
+ __webpack_require__.a(module, async function(__rspack_load_async_deps, __rspack_async_done) {
5
+ try {
6
+ __webpack_require__.r(__webpack_exports__);
7
+ var _modelcontextprotocol_sdk_server_mcp_js__rspack_import_0 = __webpack_require__("@modelcontextprotocol/sdk/server/mcp.js");
8
+ var _modelcontextprotocol_sdk_server_stdio_js__rspack_import_1 = __webpack_require__("@modelcontextprotocol/sdk/server/stdio.js");
9
+ var zod__rspack_import_2 = __webpack_require__("zod");
10
+ var _finance_technicalIndicators_js__rspack_import_3 = __webpack_require__("./finance/technicalIndicators.js");
11
+ var _finance_optionsAnalytics_js__rspack_import_4 = __webpack_require__("./finance/optionsAnalytics.js");
12
+ var _finance_candleRange_js__rspack_import_5 = __webpack_require__("./finance/candleRange.js");
13
+ var _finance_yahooCandles_js__rspack_import_6 = __webpack_require__("./finance/yahooCandles.js");
14
+ function _define_property(obj, key, value) {
15
+ if (key in obj) Object.defineProperty(obj, key, {
16
+ value: value,
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true
20
+ });
21
+ else obj[key] = value;
22
+ return obj;
23
+ }
24
+ const DEFAULT_RATE_LIMIT_PER_MIN = 60;
25
+ const DEFAULT_WINDOW_MS = 60000;
26
+ const DEFAULT_MAX_RETRIES = 4;
27
+ const DEFAULT_BACKOFF_BASE_MS = 500;
28
+ const DEFAULT_BACKOFF_MAX_MS = 8000;
29
+ const FINNHUB_BASE_URL = process.env.FINNHUB_BASE_URL?.trim() || "https://finnhub.io/api/v1";
30
+ const YAHOO_FINANCE_BASE_URL = process.env.YAHOO_FINANCE_BASE_URL?.trim() || "https://query1.finance.yahoo.com";
31
+ const FINNHUB_API_KEY = process.env.FINNHUB_API_KEY?.trim();
32
+ const candleProvider = process.env.FINNHUB_CANDLES_PROVIDER?.trim().toLowerCase() || "yahoo";
33
+ const yahooIncludePrePost = process.env.YAHOO_INCLUDE_PREPOST?.trim() === "1";
34
+ if (!FINNHUB_API_KEY) {
35
+ console.error("FINNHUB_API_KEY is required to run the MCP finance server.");
36
+ process.exit(1);
37
+ }
38
+ const tier = process.env.FINNHUB_TIER?.trim().toLowerCase();
39
+ const tierOverridesRaw = process.env.FINNHUB_TIER_LIMITS;
40
+ let tierOverrides = {};
41
+ if (tierOverridesRaw) try {
42
+ const parsed = JSON.parse(tierOverridesRaw);
43
+ if (parsed && "object" == typeof parsed) tierOverrides = parsed;
44
+ } catch {
45
+ console.error("Invalid FINNHUB_TIER_LIMITS JSON. Expected format: {\"free\":60,\"pro\":300}");
46
+ }
47
+ const tierLimit = (()=>{
48
+ if (!tier) return;
49
+ const defaults = {
50
+ free: 60
51
+ };
52
+ return tierOverrides[tier] ?? defaults[tier];
53
+ })();
54
+ const rateLimitPerMin = Number.parseInt(process.env.FINNHUB_RATE_LIMIT_PER_MIN || "", 10) || tierLimit || DEFAULT_RATE_LIMIT_PER_MIN;
55
+ const windowMs = Number.parseInt(process.env.FINNHUB_RATE_LIMIT_WINDOW_MS || "", 10) || DEFAULT_WINDOW_MS;
56
+ const maxRetries = Number.parseInt(process.env.FINNHUB_MAX_RETRIES || "", 10) || DEFAULT_MAX_RETRIES;
57
+ const backoffBaseMs = Number.parseInt(process.env.FINNHUB_BACKOFF_BASE_MS || "", 10) || DEFAULT_BACKOFF_BASE_MS;
58
+ const backoffMaxMs = Number.parseInt(process.env.FINNHUB_BACKOFF_MAX_MS || "", 10) || DEFAULT_BACKOFF_MAX_MS;
59
+ const parsePositiveInt = (value)=>{
60
+ const parsed = Number.parseInt(value ?? "", 10);
61
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : void 0;
62
+ };
63
+ const maxIntradayDays = parsePositiveInt(process.env.FINNHUB_CANDLE_MAX_DAYS_INTRADAY) ?? _finance_candleRange_js__rspack_import_5.DEFAULT_CANDLE_MAX_DAYS_INTRADAY;
64
+ const maxDailyDays = parsePositiveInt(process.env.FINNHUB_CANDLE_MAX_DAYS_DAILY) ?? _finance_candleRange_js__rspack_import_5.DEFAULT_CANDLE_MAX_DAYS_DAILY;
65
+ const candleCapSummary = `Intraday capped to ${maxIntradayDays}d; daily+ capped to ${maxDailyDays}d.`;
66
+ const candleSourceSummary = "finnhub" === candleProvider ? "Source: Finnhub." : "auto" === candleProvider ? "Source: Finnhub with Yahoo fallback." : "Source: Yahoo Finance (best effort).";
67
+ const candleSessionSummary = yahooIncludePrePost ? "Includes pre/post market data." : "Regular session only.";
68
+ class RateLimiter {
69
+ async wait() {
70
+ let release;
71
+ const previous = this.queue;
72
+ this.queue = new Promise((resolve)=>{
73
+ release = resolve;
74
+ });
75
+ await previous;
76
+ try {
77
+ await this.acquire();
78
+ } finally{
79
+ release();
80
+ }
81
+ }
82
+ async acquire() {
83
+ this.resetIfNeeded();
84
+ if (this.tokens > 0) {
85
+ this.tokens -= 1;
86
+ return;
87
+ }
88
+ const waitMs = this.windowStart + this.windowDurationMs - Date.now();
89
+ if (waitMs > 0) await sleep(waitMs);
90
+ this.resetWindow();
91
+ this.tokens -= 1;
92
+ }
93
+ resetIfNeeded() {
94
+ if (Date.now() - this.windowStart >= this.windowDurationMs) this.resetWindow();
95
+ }
96
+ resetWindow() {
97
+ this.windowStart = Date.now();
98
+ this.tokens = this.limit;
99
+ }
100
+ constructor(limit, windowDurationMs){
101
+ _define_property(this, "limit", void 0);
102
+ _define_property(this, "windowDurationMs", void 0);
103
+ _define_property(this, "tokens", void 0);
104
+ _define_property(this, "windowStart", void 0);
105
+ _define_property(this, "queue", void 0);
106
+ this.limit = limit;
107
+ this.windowDurationMs = windowDurationMs;
108
+ this.queue = Promise.resolve();
109
+ this.tokens = limit;
110
+ this.windowStart = Date.now();
111
+ }
112
+ }
113
+ const rateLimiter = new RateLimiter(rateLimitPerMin, windowMs);
114
+ const sleep = (ms)=>new Promise((resolve)=>setTimeout(resolve, ms));
115
+ const buildUrl = (path, params)=>{
116
+ const url = new URL(`${FINNHUB_BASE_URL}${path}`);
117
+ for (const [key, value] of Object.entries(params))if (null != value && "" !== value) url.searchParams.set(key, value);
118
+ url.searchParams.set("token", FINNHUB_API_KEY);
119
+ return url.toString();
120
+ };
121
+ const parseRetryAfter = (value)=>{
122
+ if (!value) return null;
123
+ const seconds = Number.parseFloat(value);
124
+ if (!Number.isNaN(seconds)) return Math.max(0, 1000 * seconds);
125
+ const parsed = Date.parse(value);
126
+ if (!Number.isNaN(parsed)) return Math.max(0, parsed - Date.now());
127
+ return null;
128
+ };
129
+ const fetchWithBackoff = async (url)=>{
130
+ let attempt = 0;
131
+ let delay = backoffBaseMs;
132
+ for(;;){
133
+ const response = await fetch(url, {
134
+ headers: {
135
+ "User-Agent": "wingman-mcp-finance"
136
+ }
137
+ });
138
+ if (429 !== response.status) return response;
139
+ attempt += 1;
140
+ if (attempt > maxRetries) return response;
141
+ const retryAfter = parseRetryAfter(response.headers.get("retry-after"));
142
+ const jitter = Math.round(250 * Math.random());
143
+ const waitMs = Math.min(backoffMaxMs, retryAfter ?? delay + jitter);
144
+ await sleep(waitMs);
145
+ delay = Math.min(backoffMaxMs, 2 * delay);
146
+ }
147
+ };
148
+ const fetchFinnhub = async (path, params)=>{
149
+ await rateLimiter.wait();
150
+ const url = buildUrl(path, params);
151
+ const response = await fetchWithBackoff(url);
152
+ if (!response.ok) {
153
+ const errorBody = await response.text();
154
+ throw new Error(`Finnhub error ${response.status}: ${errorBody}`);
155
+ }
156
+ return await response.json();
157
+ };
158
+ const fetchYahooCandles = async ({ symbol, resolution, from, to })=>{
159
+ const interval = (0, _finance_yahooCandles_js__rspack_import_6.mapYahooInterval)(resolution);
160
+ const url = (0, _finance_yahooCandles_js__rspack_import_6.buildYahooChartUrl)({
161
+ baseUrl: YAHOO_FINANCE_BASE_URL,
162
+ symbol,
163
+ from,
164
+ to,
165
+ interval,
166
+ includePrePost: yahooIncludePrePost
167
+ });
168
+ const response = await fetchWithBackoff(url);
169
+ if (!response.ok) {
170
+ const errorBody = await response.text();
171
+ return {
172
+ s: "error",
173
+ source: "yahoo",
174
+ error: `Yahoo error ${response.status}: ${errorBody}`
175
+ };
176
+ }
177
+ const payload = await response.json();
178
+ return (0, _finance_yahooCandles_js__rspack_import_6.extractYahooCandles)(payload);
179
+ };
180
+ const isFinnhubForbidden = (error)=>error instanceof Error && /\b403\b/.test(error.message);
181
+ const fetchCandlesWithFallback = async ({ symbol, resolution, from, to })=>{
182
+ if ("yahoo" === candleProvider) {
183
+ const data = await fetchYahooCandles({
184
+ symbol,
185
+ resolution,
186
+ from,
187
+ to
188
+ });
189
+ return {
190
+ data,
191
+ source: "yahoo"
192
+ };
193
+ }
194
+ if ("finnhub" === candleProvider) {
195
+ const data = await fetchFinnhub("/stock/candle", {
196
+ symbol,
197
+ resolution: resolution || "D",
198
+ from: String(from),
199
+ to: String(to)
200
+ });
201
+ return {
202
+ data,
203
+ source: "finnhub"
204
+ };
205
+ }
206
+ try {
207
+ const data = await fetchFinnhub("/stock/candle", {
208
+ symbol,
209
+ resolution: resolution || "D",
210
+ from: String(from),
211
+ to: String(to)
212
+ });
213
+ return {
214
+ data,
215
+ source: "finnhub"
216
+ };
217
+ } catch (error) {
218
+ if (!isFinnhubForbidden(error)) throw error;
219
+ const data = await fetchYahooCandles({
220
+ symbol,
221
+ resolution,
222
+ from,
223
+ to
224
+ });
225
+ return {
226
+ data,
227
+ source: "yahoo"
228
+ };
229
+ }
230
+ };
231
+ const toResult = (data)=>({
232
+ content: [
233
+ {
234
+ type: "text",
235
+ text: JSON.stringify(data, null, 2)
236
+ }
237
+ ],
238
+ structuredContent: {
239
+ data
240
+ }
241
+ });
242
+ const server = new _modelcontextprotocol_sdk_server_mcp_js__rspack_import_0.McpServer({
243
+ name: "wingman-finance",
244
+ version: "0.1.0"
245
+ });
246
+ server.registerTool("finnhub.symbolSearch", {
247
+ title: "Finnhub Symbol Search",
248
+ description: "Search for symbols or companies by query.",
249
+ inputSchema: zod__rspack_import_2.z.object({
250
+ query: zod__rspack_import_2.z.string().min(1)
251
+ })
252
+ }, async ({ query })=>{
253
+ const data = await fetchFinnhub("/search", {
254
+ q: query
255
+ });
256
+ return toResult(data);
257
+ });
258
+ server.registerTool("finnhub.quote", {
259
+ title: "Finnhub Quote",
260
+ description: "Get the latest quote for a symbol.",
261
+ inputSchema: zod__rspack_import_2.z.object({
262
+ symbol: zod__rspack_import_2.z.string().min(1)
263
+ })
264
+ }, async ({ symbol })=>{
265
+ const data = await fetchFinnhub("/quote", {
266
+ symbol
267
+ });
268
+ return toResult(data);
269
+ });
270
+ server.registerTool("finnhub.companyProfile", {
271
+ title: "Finnhub Company Profile",
272
+ description: "Get company profile data for a symbol.",
273
+ inputSchema: zod__rspack_import_2.z.object({
274
+ symbol: zod__rspack_import_2.z.string().min(1)
275
+ })
276
+ }, async ({ symbol })=>{
277
+ const data = await fetchFinnhub("/stock/profile2", {
278
+ symbol
279
+ });
280
+ return toResult(data);
281
+ });
282
+ server.registerTool("finnhub.financials", {
283
+ title: "Finnhub Financial Metrics",
284
+ description: "Get financial metrics (including P/E) for a symbol.",
285
+ inputSchema: zod__rspack_import_2.z.object({
286
+ symbol: zod__rspack_import_2.z.string().min(1),
287
+ metric: zod__rspack_import_2.z.string().optional().default("all")
288
+ })
289
+ }, async ({ symbol, metric })=>{
290
+ const data = await fetchFinnhub("/stock/metric", {
291
+ symbol,
292
+ metric: metric || "all"
293
+ });
294
+ return toResult(data);
295
+ });
296
+ server.registerTool("finnhub.earnings", {
297
+ title: "Finnhub Earnings",
298
+ description: "Get earnings history for a symbol.",
299
+ inputSchema: zod__rspack_import_2.z.object({
300
+ symbol: zod__rspack_import_2.z.string().min(1),
301
+ limit: zod__rspack_import_2.z.number().int().min(1).max(20).optional()
302
+ })
303
+ }, async ({ symbol, limit })=>{
304
+ const data = await fetchFinnhub("/stock/earnings", {
305
+ symbol,
306
+ ...limit ? {
307
+ limit: String(limit)
308
+ } : {}
309
+ });
310
+ return toResult(data);
311
+ });
312
+ server.registerTool("finnhub.news", {
313
+ title: "Finnhub Company News",
314
+ description: "Get recent company news for a symbol.",
315
+ inputSchema: zod__rspack_import_2.z.object({
316
+ symbol: zod__rspack_import_2.z.string().min(1),
317
+ from: zod__rspack_import_2.z.string().optional(),
318
+ to: zod__rspack_import_2.z.string().optional()
319
+ })
320
+ }, async ({ symbol, from, to })=>{
321
+ const toDate = to || new Date().toISOString().slice(0, 10);
322
+ let fromDate = from;
323
+ if (!fromDate) {
324
+ const start = new Date();
325
+ start.setDate(start.getDate() - 7);
326
+ fromDate = start.toISOString().slice(0, 10);
327
+ }
328
+ const data = await fetchFinnhub("/company-news", {
329
+ symbol,
330
+ from: fromDate,
331
+ to: toDate
332
+ });
333
+ return toResult(data);
334
+ });
335
+ server.registerTool("finnhub.marketNews", {
336
+ title: "Finnhub Market News",
337
+ description: "Get broad market news (general category) for theme detection.",
338
+ inputSchema: zod__rspack_import_2.z.object({
339
+ category: zod__rspack_import_2.z.string().min(1).optional().default("general")
340
+ })
341
+ }, async ({ category })=>{
342
+ const data = await fetchFinnhub("/news", {
343
+ category: category || "general"
344
+ });
345
+ return toResult(data);
346
+ });
347
+ server.registerTool("finnhub.peers", {
348
+ title: "Finnhub Stock Peers",
349
+ description: "Get peer symbols for a company.",
350
+ inputSchema: zod__rspack_import_2.z.object({
351
+ symbol: zod__rspack_import_2.z.string().min(1)
352
+ })
353
+ }, async ({ symbol })=>{
354
+ const data = await fetchFinnhub("/stock/peers", {
355
+ symbol
356
+ });
357
+ return toResult(data);
358
+ });
359
+ server.registerTool("finnhub.candles", {
360
+ title: "Finnhub Candles",
361
+ description: `Get OHLCV candles for a symbol. ${candleCapSummary} ${candleSourceSummary} ${candleSessionSummary}`,
362
+ inputSchema: zod__rspack_import_2.z.object({
363
+ symbol: zod__rspack_import_2.z.string().min(1),
364
+ resolution: zod__rspack_import_2.z.string().optional().default("D"),
365
+ from: zod__rspack_import_2.z.number().int().optional(),
366
+ to: zod__rspack_import_2.z.number().int().optional(),
367
+ lookbackDays: zod__rspack_import_2.z.number().int().positive().optional()
368
+ })
369
+ }, async ({ symbol, resolution, from, to, lookbackDays })=>{
370
+ const range = (0, _finance_candleRange_js__rspack_import_5.resolveCandleRange)({
371
+ from,
372
+ to,
373
+ lookbackDays,
374
+ resolution,
375
+ maxIntradayDays,
376
+ maxDailyDays
377
+ });
378
+ const { data, source } = await fetchCandlesWithFallback({
379
+ symbol,
380
+ resolution,
381
+ from: range.from,
382
+ to: range.to
383
+ });
384
+ const result = "yahoo" !== source || data.source ? data : {
385
+ ...data,
386
+ source
387
+ };
388
+ return toResult(result);
389
+ });
390
+ server.registerTool("finnhub.technicalSnapshot", {
391
+ title: "Finnhub Technical Snapshot",
392
+ description: `Fetch candles and compute RSI/EMA/ATR locally. ${candleCapSummary} ${candleSourceSummary} ${candleSessionSummary}`,
393
+ inputSchema: zod__rspack_import_2.z.object({
394
+ symbol: zod__rspack_import_2.z.string().min(1),
395
+ resolution: zod__rspack_import_2.z.string().optional().default("D"),
396
+ from: zod__rspack_import_2.z.number().int().optional(),
397
+ to: zod__rspack_import_2.z.number().int().optional(),
398
+ lookbackDays: zod__rspack_import_2.z.number().int().positive().optional()
399
+ })
400
+ }, async ({ symbol, resolution, from, to, lookbackDays })=>{
401
+ const range = (0, _finance_candleRange_js__rspack_import_5.resolveCandleRange)({
402
+ from,
403
+ to,
404
+ lookbackDays,
405
+ resolution,
406
+ maxIntradayDays,
407
+ maxDailyDays
408
+ });
409
+ const { data, source } = await fetchCandlesWithFallback({
410
+ symbol,
411
+ resolution,
412
+ from: range.from,
413
+ to: range.to
414
+ });
415
+ if (!data || "ok" !== data.s || !Array.isArray(data.c)) return toResult({
416
+ symbol,
417
+ source,
418
+ status: data?.s ?? "no_data",
419
+ error: data.error,
420
+ from: range.from,
421
+ to: range.to
422
+ });
423
+ const snapshot = (0, _finance_technicalIndicators_js__rspack_import_3.buildTechnicalSnapshot)({
424
+ closes: data.c,
425
+ highs: data.h ?? [],
426
+ lows: data.l ?? []
427
+ });
428
+ return toResult({
429
+ symbol,
430
+ resolution: resolution || "D",
431
+ from: range.from,
432
+ to: range.to,
433
+ source,
434
+ status: data.s,
435
+ points: data.c.length,
436
+ lastTimestamp: data.t?.at(-1) ?? null,
437
+ ...snapshot
438
+ });
439
+ });
440
+ server.registerTool("finnhub.optionChain", {
441
+ title: "Finnhub Option Chain",
442
+ description: "Get option chain data for a symbol (date optional).",
443
+ inputSchema: zod__rspack_import_2.z.object({
444
+ symbol: zod__rspack_import_2.z.string().min(1),
445
+ date: zod__rspack_import_2.z.string().optional()
446
+ })
447
+ }, async ({ symbol, date })=>{
448
+ const data = await fetchFinnhub("/stock/option-chain", {
449
+ symbol,
450
+ ...date ? {
451
+ date
452
+ } : {}
453
+ });
454
+ return toResult(data);
455
+ });
456
+ server.registerTool("options.analyze", {
457
+ title: "Options Structure Analyzer",
458
+ description: "Compute payoff metrics and optional Greeks for an options structure using supplied leg prices.",
459
+ inputSchema: zod__rspack_import_2.z.object({
460
+ underlyingPrice: zod__rspack_import_2.z.number().positive(),
461
+ daysToExpiry: zod__rspack_import_2.z.number().positive().optional(),
462
+ riskFreeRate: zod__rspack_import_2.z.number().optional().default(0),
463
+ dividendYield: zod__rspack_import_2.z.number().optional().default(0),
464
+ legs: zod__rspack_import_2.z.array(zod__rspack_import_2.z.object({
465
+ type: zod__rspack_import_2.z["enum"]([
466
+ "call",
467
+ "put"
468
+ ]),
469
+ side: zod__rspack_import_2.z["enum"]([
470
+ "buy",
471
+ "sell"
472
+ ]),
473
+ strike: zod__rspack_import_2.z.number().positive(),
474
+ premium: zod__rspack_import_2.z.number().nonnegative(),
475
+ qty: zod__rspack_import_2.z.number().int().positive().optional(),
476
+ contractMultiplier: zod__rspack_import_2.z.number().positive().optional(),
477
+ impliedVol: zod__rspack_import_2.z.number().positive().optional()
478
+ })).min(1)
479
+ })
480
+ }, async (input)=>{
481
+ const data = (0, _finance_optionsAnalytics_js__rspack_import_4.analyzeOptionStructure)(input);
482
+ return toResult(data);
483
+ });
484
+ const transport = new _modelcontextprotocol_sdk_server_stdio_js__rspack_import_1.StdioServerTransport();
485
+ await server.connect(transport);
486
+ console.error(`wingman-mcp-finance ready | Finnhub rate limit: ${rateLimitPerMin}/min | base: ${FINNHUB_BASE_URL} | candle caps: ${candleCapSummary} | candle source: ${candleProvider} | sessions: ${candleSessionSummary}`);
487
+ __rspack_async_done();
488
+ } catch (e) {
489
+ __rspack_async_done(e);
490
+ }
491
+ }, 1);
492
+ },
493
+ "./finance/candleRange.js" (module) {
494
+ module.exports = require("./finance/candleRange.cjs");
495
+ },
496
+ "./finance/optionsAnalytics.js" (module) {
497
+ module.exports = require("./finance/optionsAnalytics.cjs");
498
+ },
499
+ "./finance/technicalIndicators.js" (module) {
500
+ module.exports = require("./finance/technicalIndicators.cjs");
501
+ },
502
+ "./finance/yahooCandles.js" (module) {
503
+ module.exports = require("./finance/yahooCandles.cjs");
504
+ },
505
+ "@modelcontextprotocol/sdk/server/mcp.js" (module) {
506
+ module.exports = require("@modelcontextprotocol/sdk/server/mcp.js");
507
+ },
508
+ "@modelcontextprotocol/sdk/server/stdio.js" (module) {
509
+ module.exports = require("@modelcontextprotocol/sdk/server/stdio.js");
510
+ },
511
+ zod (module) {
512
+ module.exports = require("zod");
513
+ }
514
+ };
515
+ var __webpack_module_cache__ = {};
516
+ function __webpack_require__(moduleId) {
517
+ var cachedModule = __webpack_module_cache__[moduleId];
518
+ if (void 0 !== cachedModule) return cachedModule.exports;
519
+ var module = __webpack_module_cache__[moduleId] = {
520
+ exports: {}
521
+ };
522
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
523
+ return module.exports;
524
+ }
525
+ (()=>{
526
+ var hasSymbol = "function" == typeof Symbol;
527
+ var rspackQueues = hasSymbol ? Symbol("rspack queues") : "__rspack_queues";
528
+ var rspackExports = __webpack_require__.aE = hasSymbol ? Symbol("rspack exports") : "__webpack_exports__";
529
+ var rspackError = hasSymbol ? Symbol("rspack error") : "__rspack_error";
530
+ var rspackDone = hasSymbol ? Symbol("rspack done") : "__rspack_done";
531
+ var rspackDefer = __webpack_require__.zS = hasSymbol ? Symbol("rspack defer") : "__rspack_defer";
532
+ var resolveQueue = (queue)=>{
533
+ if (queue && queue.d < 1) {
534
+ queue.d = 1;
535
+ queue.forEach((fn)=>fn.r--);
536
+ queue.forEach((fn)=>fn.r-- ? fn.r++ : fn());
537
+ }
538
+ };
539
+ var wrapDeps = (deps)=>deps.map((dep)=>{
540
+ if (null !== dep && "object" == typeof dep) {
541
+ if (!dep[rspackQueues] && dep[rspackDefer]) {
542
+ var asyncDeps = dep[rspackDefer];
543
+ var hasUnresolvedAsyncSubgraph = asyncDeps.some((id)=>{
544
+ var cache = __webpack_module_cache__[id];
545
+ return !cache || false === cache[rspackDone];
546
+ });
547
+ if (!hasUnresolvedAsyncSubgraph) return dep;
548
+ var d = dep;
549
+ dep = {
550
+ then (callback) {
551
+ Promise.all(asyncDeps.map(__webpack_require__)).then(()=>callback(d));
552
+ }
553
+ };
554
+ }
555
+ if (dep[rspackQueues]) return dep;
556
+ if (dep.then) {
557
+ var queue = [];
558
+ queue.d = 0;
559
+ dep.then((r)=>{
560
+ obj[rspackExports] = r;
561
+ resolveQueue(queue);
562
+ }, (e)=>{
563
+ obj[rspackError] = e;
564
+ resolveQueue(queue);
565
+ });
566
+ var obj = {};
567
+ obj[rspackDefer] = false;
568
+ obj[rspackQueues] = (fn)=>fn(queue);
569
+ return obj;
570
+ }
571
+ }
572
+ var ret = {};
573
+ ret[rspackQueues] = ()=>{};
574
+ ret[rspackExports] = dep;
575
+ return ret;
576
+ });
577
+ __webpack_require__.a = (module, body, hasAwait)=>{
578
+ var queue;
579
+ hasAwait && ((queue = []).d = -1);
580
+ var depQueues = new Set();
581
+ var exports1 = module.exports;
582
+ var currentDeps;
583
+ var outerResolve;
584
+ var reject;
585
+ var promise = new Promise((resolve, rej)=>{
586
+ reject = rej;
587
+ outerResolve = resolve;
588
+ });
589
+ promise[rspackExports] = exports1;
590
+ promise[rspackQueues] = (fn)=>{
591
+ queue && fn(queue), depQueues.forEach(fn), promise["catch"](()=>{});
592
+ };
593
+ module.exports = promise;
594
+ var handle = (deps)=>{
595
+ currentDeps = wrapDeps(deps);
596
+ var fn;
597
+ var getResult = ()=>currentDeps.map((d)=>{
598
+ if (d[rspackDefer]) return d;
599
+ if (d[rspackError]) throw d[rspackError];
600
+ return d[rspackExports];
601
+ });
602
+ var promise = new Promise((resolve)=>{
603
+ fn = ()=>resolve(getResult);
604
+ fn.r = 0;
605
+ var fnQueue = (q)=>q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn)));
606
+ currentDeps.map((dep)=>dep[rspackDefer] || dep[rspackQueues](fnQueue));
607
+ });
608
+ return fn.r ? promise : getResult();
609
+ };
610
+ var done = (err)=>(err ? reject(promise[rspackError] = err) : outerResolve(exports1), resolveQueue(queue), promise[rspackDone] = true);
611
+ body(handle, done);
612
+ queue && queue.d < 0 && (queue.d = 0);
613
+ };
614
+ })();
615
+ (()=>{
616
+ __webpack_require__.n = (module)=>{
617
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
618
+ __webpack_require__.d(getter, {
619
+ a: getter
620
+ });
621
+ return getter;
622
+ };
623
+ })();
624
+ (()=>{
625
+ __webpack_require__.d = (exports1, definition)=>{
626
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
627
+ enumerable: true,
628
+ get: definition[key]
629
+ });
630
+ };
631
+ })();
632
+ (()=>{
633
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
634
+ })();
635
+ (()=>{
636
+ __webpack_require__.r = (exports1)=>{
637
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
638
+ value: 'Module'
639
+ });
640
+ Object.defineProperty(exports1, '__esModule', {
641
+ value: true
642
+ });
643
+ };
644
+ })();
645
+ var __webpack_exports__ = __webpack_require__("./src/tools/mcp-finance.ts");
646
+ for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
647
+ Object.defineProperty(exports, '__esModule', {
648
+ value: true
649
+ });
@@ -0,0 +1 @@
1
+ export {};