@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,208 @@
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
+ executeProviderCommand: ()=>executeProviderCommand
28
+ });
29
+ const external_node_readline_namespaceObject = require("node:readline");
30
+ const outputManager_cjs_namespaceObject = require("../core/outputManager.cjs");
31
+ const credentials_cjs_namespaceObject = require("../../providers/credentials.cjs");
32
+ const registry_cjs_namespaceObject = require("../../providers/registry.cjs");
33
+ const oauth_cjs_namespaceObject = require("../../providers/oauth.cjs");
34
+ const external_logger_cjs_namespaceObject = require("../../logger.cjs");
35
+ async function executeProviderCommand(args) {
36
+ const outputManager = new outputManager_cjs_namespaceObject.OutputManager(args.outputMode);
37
+ try {
38
+ switch(args.subcommand){
39
+ case "login":
40
+ await handleLogin(outputManager, args);
41
+ break;
42
+ case "logout":
43
+ handleLogout(outputManager, args);
44
+ break;
45
+ case "status":
46
+ case "list":
47
+ handleStatus(outputManager);
48
+ break;
49
+ case "":
50
+ case "help":
51
+ case "--help":
52
+ case "-h":
53
+ showProviderHelp(outputManager);
54
+ break;
55
+ default:
56
+ throw new Error(`Unknown subcommand: ${args.subcommand}. Run 'wingman provider help' for usage.`);
57
+ }
58
+ } catch (error) {
59
+ const message = error instanceof Error ? error.message : String(error);
60
+ const logFile = (0, external_logger_cjs_namespaceObject.getLogFilePath)();
61
+ (0, external_logger_cjs_namespaceObject.createLogger)().error("Provider command failed", {
62
+ error: message
63
+ });
64
+ if ("interactive" === outputManager.getMode()) {
65
+ console.error(`\nError: ${message}`);
66
+ console.error(`Logs: ${logFile}`);
67
+ process.exit(1);
68
+ } else {
69
+ outputManager.emitAgentError(error);
70
+ process.exit(1);
71
+ }
72
+ }
73
+ }
74
+ async function handleLogin(outputManager, args) {
75
+ const providerName = args.args[0];
76
+ if (!providerName) throw new Error("Provider name required. Usage: wingman provider login <provider>");
77
+ const provider = (0, registry_cjs_namespaceObject.getProviderSpec)(providerName);
78
+ if (!provider) throw new Error(`Unknown provider: ${providerName}`);
79
+ const token = getTokenOption(args.options);
80
+ if (token) {
81
+ (0, credentials_cjs_namespaceObject.saveProviderToken)(provider.name, token);
82
+ writeLine(outputManager, `Saved ${provider.label} credentials to ${(0, credentials_cjs_namespaceObject.getCredentialsPath)()}`);
83
+ return;
84
+ }
85
+ if ("oauth" === provider.type) {
86
+ const credentials = await (0, oauth_cjs_namespaceObject.loginWithLocalCallback)(provider.name, {
87
+ clientId: getOptionValue(args.options, "client-id"),
88
+ clientSecret: getOptionValue(args.options, "client-secret"),
89
+ scopes: getScopes(args.options),
90
+ redirectPort: getNumberOption(args.options, "redirect-port"),
91
+ openBrowser: getBooleanOption(args.options, "open-browser", true),
92
+ onMessage: (message)=>writeLine(outputManager, message)
93
+ });
94
+ (0, credentials_cjs_namespaceObject.setProviderCredentials)(provider.name, credentials);
95
+ writeLine(outputManager, `Saved ${provider.label} credentials to ${(0, credentials_cjs_namespaceObject.getCredentialsPath)()}`);
96
+ return;
97
+ }
98
+ if ("interactive" !== outputManager.getMode()) throw new Error("API key required in JSON mode. Use --api-key.");
99
+ const tokenLabel = "copilot" === provider.name ? "token" : "API key";
100
+ const resolvedToken = await promptForToken(`Enter ${provider.label} ${tokenLabel}: `);
101
+ (0, credentials_cjs_namespaceObject.saveProviderToken)(provider.name, resolvedToken);
102
+ writeLine(outputManager, `Saved ${provider.label} credentials to ${(0, credentials_cjs_namespaceObject.getCredentialsPath)()}`);
103
+ }
104
+ function handleLogout(outputManager, args) {
105
+ const providerName = args.args[0];
106
+ if (!providerName) throw new Error("Provider name required. Usage: wingman provider logout <provider>");
107
+ const provider = (0, registry_cjs_namespaceObject.getProviderSpec)(providerName);
108
+ if (!provider) throw new Error(`Unknown provider: ${providerName}`);
109
+ const removed = (0, credentials_cjs_namespaceObject.deleteProviderCredentials)(provider.name);
110
+ removed ? writeLine(outputManager, `Removed ${provider.label} credentials from ${(0, credentials_cjs_namespaceObject.getCredentialsPath)()}`) : writeLine(outputManager, `No stored credentials for ${provider.label}`);
111
+ }
112
+ function handleStatus(outputManager) {
113
+ writeLine(outputManager, "Provider status:");
114
+ for (const provider of (0, registry_cjs_namespaceObject.listProviderSpecs)()){
115
+ const resolved = (0, credentials_cjs_namespaceObject.resolveProviderToken)(provider.name);
116
+ const source = "env" === resolved.source ? `env (${resolved.envVar})` : resolved.source;
117
+ writeLine(outputManager, ` ${provider.name} (${provider.type}) - ${source}`);
118
+ writeLine(outputManager, ` env: ${provider.envVars.join(", ")}`);
119
+ }
120
+ writeLine(outputManager, `Credentials file: ${(0, credentials_cjs_namespaceObject.getCredentialsPath)()}`);
121
+ }
122
+ function showProviderHelp(outputManager) {
123
+ if ("interactive" === outputManager.getMode()) console.log(`
124
+ Wingman Provider Manager
125
+
126
+ Usage:
127
+ wingman provider login <provider> [options]
128
+ wingman provider logout <provider>
129
+ wingman provider status
130
+ wingman provider help
131
+
132
+ Examples:
133
+ wingman provider status
134
+ wingman provider login copilot
135
+ wingman provider login openrouter --api-key="<key>"
136
+ wingman provider login lmstudio
137
+ wingman provider login ollama
138
+
139
+ Options:
140
+ --token <token> Store a token directly
141
+ --api-key <key> Store an API key directly
142
+
143
+ Environment Variables:
144
+ ANTHROPIC_API_KEY Anthropic API key
145
+ OPENAI_API_KEY OpenAI API key
146
+ OPENROUTER_API_KEY OpenRouter API key
147
+ GITHUB_COPILOT_TOKEN GitHub Copilot token
148
+ COPILOT_TOKEN GitHub Copilot token
149
+ COPILOT_API_KEY GitHub Copilot token
150
+ LMSTUDIO_API_KEY LM Studio API key (optional)
151
+ OLLAMA_API_KEY Ollama API key (optional)
152
+ ELEVENLABS_API_KEY ElevenLabs API key
153
+ XI_API_KEY ElevenLabs API key
154
+ `);
155
+ else outputManager.emitLog("info", "Provider help requested");
156
+ }
157
+ function getTokenOption(options) {
158
+ const raw = getOptionValue(options, "token") ?? getOptionValue(options, "api-key") ?? getOptionValue(options, "apiKey");
159
+ if ("string" == typeof raw && raw.trim()) return raw.trim();
160
+ }
161
+ function getOptionValue(options, key) {
162
+ const raw = options[key];
163
+ if ("string" == typeof raw && raw.trim()) return raw.trim();
164
+ }
165
+ function getScopes(options) {
166
+ const raw = getOptionValue(options, "scopes") ?? getOptionValue(options, "scope");
167
+ if (!raw) return;
168
+ return raw.split(/[,\s]+/).map((scope)=>scope.trim()).filter(Boolean);
169
+ }
170
+ function getNumberOption(options, key) {
171
+ const value = getOptionValue(options, key);
172
+ if (!value) return;
173
+ const parsed = Number(value);
174
+ return Number.isNaN(parsed) ? void 0 : parsed;
175
+ }
176
+ function getBooleanOption(options, key, defaultValue) {
177
+ const raw = options[key];
178
+ if ("boolean" == typeof raw) return raw;
179
+ if ("string" == typeof raw) {
180
+ if ("true" === raw.toLowerCase()) return true;
181
+ if ("false" === raw.toLowerCase()) return false;
182
+ }
183
+ return defaultValue;
184
+ }
185
+ async function promptForToken(prompt) {
186
+ const rl = (0, external_node_readline_namespaceObject.createInterface)({
187
+ input: process.stdin,
188
+ output: process.stdout
189
+ });
190
+ const answer = await new Promise((resolve)=>{
191
+ rl.question(prompt, (value)=>resolve(value));
192
+ });
193
+ rl.close();
194
+ const trimmed = answer.trim();
195
+ if (!trimmed) throw new Error("Token is required");
196
+ return trimmed;
197
+ }
198
+ function writeLine(outputManager, message) {
199
+ if ("interactive" === outputManager.getMode()) console.log(message);
200
+ else outputManager.emitLog("info", message);
201
+ }
202
+ exports.executeProviderCommand = __webpack_exports__.executeProviderCommand;
203
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
204
+ "executeProviderCommand"
205
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
206
+ Object.defineProperty(exports, '__esModule', {
207
+ value: true
208
+ });
@@ -0,0 +1,5 @@
1
+ import type { ProviderCommandArgs } from "../types/provider.js";
2
+ /**
3
+ * Execute provider command
4
+ */
5
+ export declare function executeProviderCommand(args: ProviderCommandArgs): Promise<void>;
@@ -0,0 +1,174 @@
1
+ import { createInterface } from "node:readline";
2
+ import { OutputManager } from "../core/outputManager.js";
3
+ import { deleteProviderCredentials, getCredentialsPath, resolveProviderToken, saveProviderToken, setProviderCredentials } from "../../providers/credentials.js";
4
+ import { getProviderSpec, listProviderSpecs } from "../../providers/registry.js";
5
+ import { loginWithLocalCallback } from "../../providers/oauth.js";
6
+ import { createLogger, getLogFilePath } from "../../logger.js";
7
+ async function executeProviderCommand(args) {
8
+ const outputManager = new OutputManager(args.outputMode);
9
+ try {
10
+ switch(args.subcommand){
11
+ case "login":
12
+ await handleLogin(outputManager, args);
13
+ break;
14
+ case "logout":
15
+ handleLogout(outputManager, args);
16
+ break;
17
+ case "status":
18
+ case "list":
19
+ handleStatus(outputManager);
20
+ break;
21
+ case "":
22
+ case "help":
23
+ case "--help":
24
+ case "-h":
25
+ showProviderHelp(outputManager);
26
+ break;
27
+ default:
28
+ throw new Error(`Unknown subcommand: ${args.subcommand}. Run 'wingman provider help' for usage.`);
29
+ }
30
+ } catch (error) {
31
+ const message = error instanceof Error ? error.message : String(error);
32
+ const logFile = getLogFilePath();
33
+ createLogger().error("Provider command failed", {
34
+ error: message
35
+ });
36
+ if ("interactive" === outputManager.getMode()) {
37
+ console.error(`\nError: ${message}`);
38
+ console.error(`Logs: ${logFile}`);
39
+ process.exit(1);
40
+ } else {
41
+ outputManager.emitAgentError(error);
42
+ process.exit(1);
43
+ }
44
+ }
45
+ }
46
+ async function handleLogin(outputManager, args) {
47
+ const providerName = args.args[0];
48
+ if (!providerName) throw new Error("Provider name required. Usage: wingman provider login <provider>");
49
+ const provider = getProviderSpec(providerName);
50
+ if (!provider) throw new Error(`Unknown provider: ${providerName}`);
51
+ const token = getTokenOption(args.options);
52
+ if (token) {
53
+ saveProviderToken(provider.name, token);
54
+ writeLine(outputManager, `Saved ${provider.label} credentials to ${getCredentialsPath()}`);
55
+ return;
56
+ }
57
+ if ("oauth" === provider.type) {
58
+ const credentials = await loginWithLocalCallback(provider.name, {
59
+ clientId: getOptionValue(args.options, "client-id"),
60
+ clientSecret: getOptionValue(args.options, "client-secret"),
61
+ scopes: getScopes(args.options),
62
+ redirectPort: getNumberOption(args.options, "redirect-port"),
63
+ openBrowser: getBooleanOption(args.options, "open-browser", true),
64
+ onMessage: (message)=>writeLine(outputManager, message)
65
+ });
66
+ setProviderCredentials(provider.name, credentials);
67
+ writeLine(outputManager, `Saved ${provider.label} credentials to ${getCredentialsPath()}`);
68
+ return;
69
+ }
70
+ if ("interactive" !== outputManager.getMode()) throw new Error("API key required in JSON mode. Use --api-key.");
71
+ const tokenLabel = "copilot" === provider.name ? "token" : "API key";
72
+ const resolvedToken = await promptForToken(`Enter ${provider.label} ${tokenLabel}: `);
73
+ saveProviderToken(provider.name, resolvedToken);
74
+ writeLine(outputManager, `Saved ${provider.label} credentials to ${getCredentialsPath()}`);
75
+ }
76
+ function handleLogout(outputManager, args) {
77
+ const providerName = args.args[0];
78
+ if (!providerName) throw new Error("Provider name required. Usage: wingman provider logout <provider>");
79
+ const provider = getProviderSpec(providerName);
80
+ if (!provider) throw new Error(`Unknown provider: ${providerName}`);
81
+ const removed = deleteProviderCredentials(provider.name);
82
+ removed ? writeLine(outputManager, `Removed ${provider.label} credentials from ${getCredentialsPath()}`) : writeLine(outputManager, `No stored credentials for ${provider.label}`);
83
+ }
84
+ function handleStatus(outputManager) {
85
+ writeLine(outputManager, "Provider status:");
86
+ for (const provider of listProviderSpecs()){
87
+ const resolved = resolveProviderToken(provider.name);
88
+ const source = "env" === resolved.source ? `env (${resolved.envVar})` : resolved.source;
89
+ writeLine(outputManager, ` ${provider.name} (${provider.type}) - ${source}`);
90
+ writeLine(outputManager, ` env: ${provider.envVars.join(", ")}`);
91
+ }
92
+ writeLine(outputManager, `Credentials file: ${getCredentialsPath()}`);
93
+ }
94
+ function showProviderHelp(outputManager) {
95
+ if ("interactive" === outputManager.getMode()) console.log(`
96
+ Wingman Provider Manager
97
+
98
+ Usage:
99
+ wingman provider login <provider> [options]
100
+ wingman provider logout <provider>
101
+ wingman provider status
102
+ wingman provider help
103
+
104
+ Examples:
105
+ wingman provider status
106
+ wingman provider login copilot
107
+ wingman provider login openrouter --api-key="<key>"
108
+ wingman provider login lmstudio
109
+ wingman provider login ollama
110
+
111
+ Options:
112
+ --token <token> Store a token directly
113
+ --api-key <key> Store an API key directly
114
+
115
+ Environment Variables:
116
+ ANTHROPIC_API_KEY Anthropic API key
117
+ OPENAI_API_KEY OpenAI API key
118
+ OPENROUTER_API_KEY OpenRouter API key
119
+ GITHUB_COPILOT_TOKEN GitHub Copilot token
120
+ COPILOT_TOKEN GitHub Copilot token
121
+ COPILOT_API_KEY GitHub Copilot token
122
+ LMSTUDIO_API_KEY LM Studio API key (optional)
123
+ OLLAMA_API_KEY Ollama API key (optional)
124
+ ELEVENLABS_API_KEY ElevenLabs API key
125
+ XI_API_KEY ElevenLabs API key
126
+ `);
127
+ else outputManager.emitLog("info", "Provider help requested");
128
+ }
129
+ function getTokenOption(options) {
130
+ const raw = getOptionValue(options, "token") ?? getOptionValue(options, "api-key") ?? getOptionValue(options, "apiKey");
131
+ if ("string" == typeof raw && raw.trim()) return raw.trim();
132
+ }
133
+ function getOptionValue(options, key) {
134
+ const raw = options[key];
135
+ if ("string" == typeof raw && raw.trim()) return raw.trim();
136
+ }
137
+ function getScopes(options) {
138
+ const raw = getOptionValue(options, "scopes") ?? getOptionValue(options, "scope");
139
+ if (!raw) return;
140
+ return raw.split(/[,\s]+/).map((scope)=>scope.trim()).filter(Boolean);
141
+ }
142
+ function getNumberOption(options, key) {
143
+ const value = getOptionValue(options, key);
144
+ if (!value) return;
145
+ const parsed = Number(value);
146
+ return Number.isNaN(parsed) ? void 0 : parsed;
147
+ }
148
+ function getBooleanOption(options, key, defaultValue) {
149
+ const raw = options[key];
150
+ if ("boolean" == typeof raw) return raw;
151
+ if ("string" == typeof raw) {
152
+ if ("true" === raw.toLowerCase()) return true;
153
+ if ("false" === raw.toLowerCase()) return false;
154
+ }
155
+ return defaultValue;
156
+ }
157
+ async function promptForToken(prompt) {
158
+ const rl = createInterface({
159
+ input: process.stdin,
160
+ output: process.stdout
161
+ });
162
+ const answer = await new Promise((resolve)=>{
163
+ rl.question(prompt, (value)=>resolve(value));
164
+ });
165
+ rl.close();
166
+ const trimmed = answer.trim();
167
+ if (!trimmed) throw new Error("Token is required");
168
+ return trimmed;
169
+ }
170
+ function writeLine(outputManager, message) {
171
+ if ("interactive" === outputManager.getMode()) console.log(message);
172
+ else outputManager.emitLog("info", message);
173
+ }
174
+ export { executeProviderCommand };
@@ -0,0 +1,145 @@
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
+ executeSkillCommand: ()=>executeSkillCommand
28
+ });
29
+ const skillRepository_cjs_namespaceObject = require("../services/skillRepository.cjs");
30
+ const skillService_cjs_namespaceObject = require("../services/skillService.cjs");
31
+ const outputManager_cjs_namespaceObject = require("../core/outputManager.cjs");
32
+ const loggerBridge_cjs_namespaceObject = require("../core/loggerBridge.cjs");
33
+ const loader_cjs_namespaceObject = require("../config/loader.cjs");
34
+ const external_logger_cjs_namespaceObject = require("../../logger.cjs");
35
+ async function executeSkillCommand(args, options = {}) {
36
+ const outputManager = new outputManager_cjs_namespaceObject.OutputManager(args.outputMode);
37
+ const logger = (0, loggerBridge_cjs_namespaceObject.createBridgedLogger)(outputManager, args.verbosity);
38
+ const configLoader = new loader_cjs_namespaceObject.WingmanConfigLoader();
39
+ const config = configLoader.loadConfig();
40
+ const workspace = options.workspace || process.cwd();
41
+ try {
42
+ const repository = new skillRepository_cjs_namespaceObject.SkillRepository({
43
+ repositoryOwner: config.skills?.repositoryOwner,
44
+ repositoryName: config.skills?.repositoryName,
45
+ githubToken: config.skills?.githubToken
46
+ });
47
+ const service = new skillService_cjs_namespaceObject.SkillService(repository, outputManager, logger, {
48
+ workspace,
49
+ skillsDirectory: config.skills?.skillsDirectory,
50
+ outputMode: args.outputMode
51
+ });
52
+ const subcommand = args.subcommand;
53
+ const subcommandArgs = args.args;
54
+ switch(subcommand){
55
+ case "browse":
56
+ await service.browseSkills();
57
+ break;
58
+ case "install":
59
+ {
60
+ if (0 === subcommandArgs.length) throw new Error("Skill name required. Usage: wingman skill install <skill-name>");
61
+ const skillName = subcommandArgs[0];
62
+ await service.installSkill(skillName);
63
+ break;
64
+ }
65
+ case "list":
66
+ await service.listInstalledSkills();
67
+ break;
68
+ case "remove":
69
+ {
70
+ if (0 === subcommandArgs.length) throw new Error("Skill name required. Usage: wingman skill remove <skill-name>");
71
+ const skillName = subcommandArgs[0];
72
+ await service.removeSkill(skillName);
73
+ break;
74
+ }
75
+ case "":
76
+ case "help":
77
+ case "--help":
78
+ case "-h":
79
+ showSkillHelp(outputManager);
80
+ break;
81
+ default:
82
+ throw new Error(`Unknown subcommand: ${subcommand}. Run 'wingman skill help' for usage.`);
83
+ }
84
+ } catch (error) {
85
+ const errorMsg = error instanceof Error ? error.message : String(error);
86
+ const logFile = (0, external_logger_cjs_namespaceObject.getLogFilePath)();
87
+ logger.error("Skill command failed", {
88
+ error: errorMsg
89
+ });
90
+ if ("interactive" === outputManager.getMode()) {
91
+ console.error(`\nError: ${errorMsg}`);
92
+ console.error(`Logs: ${logFile}`);
93
+ process.exit(1);
94
+ } else {
95
+ outputManager.emitAgentError(error);
96
+ process.exit(1);
97
+ }
98
+ }
99
+ }
100
+ function showSkillHelp(outputManager) {
101
+ if ("interactive" === outputManager.getMode()) console.log(`
102
+ Wingman Skill Manager - Install skills from the Anthropic skills repository
103
+
104
+ Usage:
105
+ wingman skill browse Browse available skills
106
+ wingman skill install <name> Install a skill
107
+ wingman skill list List installed skills
108
+ wingman skill remove <name> Remove an installed skill
109
+ wingman skill help Show this help message
110
+
111
+ Examples:
112
+ wingman skill browse
113
+ wingman skill install pdf
114
+ wingman skill list
115
+ wingman skill remove pdf
116
+
117
+ Environment Variables:
118
+ GITHUB_TOKEN Optional GitHub token for higher API rate limits
119
+ (5000/hour vs 60/hour without token)
120
+
121
+ Configuration:
122
+ Skills can be configured in .wingman/wingman.config.json:
123
+ {
124
+ "skills": {
125
+ "repositoryOwner": "anthropics",
126
+ "repositoryName": "skills",
127
+ "githubToken": "optional-token",
128
+ "skillsDirectory": "skills"
129
+ }
130
+ }
131
+ `);
132
+ else outputManager.emitEvent({
133
+ type: "log",
134
+ level: "info",
135
+ message: "Skill help requested",
136
+ timestamp: new Date().toISOString()
137
+ });
138
+ }
139
+ exports.executeSkillCommand = __webpack_exports__.executeSkillCommand;
140
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
141
+ "executeSkillCommand"
142
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
143
+ Object.defineProperty(exports, '__esModule', {
144
+ value: true
145
+ });
@@ -0,0 +1,10 @@
1
+ import type { SkillCommandArgs } from "../types/skill.js";
2
+ export interface SkillCommandOptions {
3
+ workspace?: string;
4
+ configDir?: string;
5
+ }
6
+ /**
7
+ * Execute the skill command
8
+ * This is the handler for: wingman skill <subcommand> [args]
9
+ */
10
+ export declare function executeSkillCommand(args: SkillCommandArgs, options?: SkillCommandOptions): Promise<void>;
@@ -0,0 +1,111 @@
1
+ import { SkillRepository } from "../services/skillRepository.js";
2
+ import { SkillService } from "../services/skillService.js";
3
+ import { OutputManager } from "../core/outputManager.js";
4
+ import { createBridgedLogger } from "../core/loggerBridge.js";
5
+ import { WingmanConfigLoader } from "../config/loader.js";
6
+ import { getLogFilePath } from "../../logger.js";
7
+ async function executeSkillCommand(args, options = {}) {
8
+ const outputManager = new OutputManager(args.outputMode);
9
+ const logger = createBridgedLogger(outputManager, args.verbosity);
10
+ const configLoader = new WingmanConfigLoader();
11
+ const config = configLoader.loadConfig();
12
+ const workspace = options.workspace || process.cwd();
13
+ try {
14
+ const repository = new SkillRepository({
15
+ repositoryOwner: config.skills?.repositoryOwner,
16
+ repositoryName: config.skills?.repositoryName,
17
+ githubToken: config.skills?.githubToken
18
+ });
19
+ const service = new SkillService(repository, outputManager, logger, {
20
+ workspace,
21
+ skillsDirectory: config.skills?.skillsDirectory,
22
+ outputMode: args.outputMode
23
+ });
24
+ const subcommand = args.subcommand;
25
+ const subcommandArgs = args.args;
26
+ switch(subcommand){
27
+ case "browse":
28
+ await service.browseSkills();
29
+ break;
30
+ case "install":
31
+ {
32
+ if (0 === subcommandArgs.length) throw new Error("Skill name required. Usage: wingman skill install <skill-name>");
33
+ const skillName = subcommandArgs[0];
34
+ await service.installSkill(skillName);
35
+ break;
36
+ }
37
+ case "list":
38
+ await service.listInstalledSkills();
39
+ break;
40
+ case "remove":
41
+ {
42
+ if (0 === subcommandArgs.length) throw new Error("Skill name required. Usage: wingman skill remove <skill-name>");
43
+ const skillName = subcommandArgs[0];
44
+ await service.removeSkill(skillName);
45
+ break;
46
+ }
47
+ case "":
48
+ case "help":
49
+ case "--help":
50
+ case "-h":
51
+ showSkillHelp(outputManager);
52
+ break;
53
+ default:
54
+ throw new Error(`Unknown subcommand: ${subcommand}. Run 'wingman skill help' for usage.`);
55
+ }
56
+ } catch (error) {
57
+ const errorMsg = error instanceof Error ? error.message : String(error);
58
+ const logFile = getLogFilePath();
59
+ logger.error("Skill command failed", {
60
+ error: errorMsg
61
+ });
62
+ if ("interactive" === outputManager.getMode()) {
63
+ console.error(`\nError: ${errorMsg}`);
64
+ console.error(`Logs: ${logFile}`);
65
+ process.exit(1);
66
+ } else {
67
+ outputManager.emitAgentError(error);
68
+ process.exit(1);
69
+ }
70
+ }
71
+ }
72
+ function showSkillHelp(outputManager) {
73
+ if ("interactive" === outputManager.getMode()) console.log(`
74
+ Wingman Skill Manager - Install skills from the Anthropic skills repository
75
+
76
+ Usage:
77
+ wingman skill browse Browse available skills
78
+ wingman skill install <name> Install a skill
79
+ wingman skill list List installed skills
80
+ wingman skill remove <name> Remove an installed skill
81
+ wingman skill help Show this help message
82
+
83
+ Examples:
84
+ wingman skill browse
85
+ wingman skill install pdf
86
+ wingman skill list
87
+ wingman skill remove pdf
88
+
89
+ Environment Variables:
90
+ GITHUB_TOKEN Optional GitHub token for higher API rate limits
91
+ (5000/hour vs 60/hour without token)
92
+
93
+ Configuration:
94
+ Skills can be configured in .wingman/wingman.config.json:
95
+ {
96
+ "skills": {
97
+ "repositoryOwner": "anthropics",
98
+ "repositoryName": "skills",
99
+ "githubToken": "optional-token",
100
+ "skillsDirectory": "skills"
101
+ }
102
+ }
103
+ `);
104
+ else outputManager.emitEvent({
105
+ type: "log",
106
+ level: "info",
107
+ message: "Skill help requested",
108
+ timestamp: new Date().toISOString()
109
+ });
110
+ }
111
+ export { executeSkillCommand };