@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,196 @@
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
+ createRoutineStore: ()=>createRoutineStore,
28
+ handleRoutinesApi: ()=>handleRoutinesApi
29
+ });
30
+ const agentLoader_cjs_namespaceObject = require("../../agent/config/agentLoader.cjs");
31
+ const external_node_crypto_namespaceObject = require("node:crypto");
32
+ const external_node_fs_namespaceObject = require("node:fs");
33
+ const external_node_path_namespaceObject = require("node:path");
34
+ const CRON_FIELD_PATTERN = /^[0-9*/,\-]+$/;
35
+ const isValidCron = (cron)=>{
36
+ const parts = cron.trim().split(/\s+/);
37
+ if (5 !== parts.length) return false;
38
+ return parts.every((part)=>CRON_FIELD_PATTERN.test(part));
39
+ };
40
+ const createRoutineStore = (resolveConfigDirPath)=>{
41
+ const resolvePath = ()=>{
42
+ const configDir = resolveConfigDirPath();
43
+ (0, external_node_fs_namespaceObject.mkdirSync)(configDir, {
44
+ recursive: true
45
+ });
46
+ return (0, external_node_path_namespaceObject.join)(configDir, "routines.json");
47
+ };
48
+ return {
49
+ load: ()=>{
50
+ const path = resolvePath();
51
+ if (!(0, external_node_fs_namespaceObject.existsSync)(path)) return [];
52
+ try {
53
+ const raw = (0, external_node_fs_namespaceObject.readFileSync)(path, "utf-8");
54
+ const parsed = JSON.parse(raw);
55
+ return Array.isArray(parsed) ? parsed : [];
56
+ } catch {
57
+ return [];
58
+ }
59
+ },
60
+ save: (routines)=>{
61
+ const path = resolvePath();
62
+ (0, external_node_fs_namespaceObject.writeFileSync)(path, JSON.stringify(routines, null, 2));
63
+ },
64
+ generateId: ()=>`routine-${(0, external_node_crypto_namespaceObject.randomUUID)()}`
65
+ };
66
+ };
67
+ const agentExists = (ctx, agentId)=>{
68
+ const loader = new agentLoader_cjs_namespaceObject.AgentLoader(ctx.configDir, ctx.workspace, ctx.getWingmanConfig());
69
+ const configs = loader.loadAllAgentConfigs();
70
+ return Boolean(configs.find((config)=>config.name === agentId));
71
+ };
72
+ const sessionExists = async (ctx, agentId, sessionId)=>{
73
+ const manager = await ctx.getSessionManager(agentId);
74
+ return Boolean(manager.getSession(sessionId));
75
+ };
76
+ const handleRoutinesApi = async (ctx, store, req, url)=>{
77
+ if ("/api/routines" === url.pathname) {
78
+ if ("GET" === req.method) {
79
+ const routines = store.load();
80
+ return new Response(JSON.stringify(routines, null, 2), {
81
+ headers: {
82
+ "Content-Type": "application/json"
83
+ }
84
+ });
85
+ }
86
+ if ("POST" === req.method) {
87
+ let body;
88
+ try {
89
+ body = await req.json();
90
+ } catch {
91
+ return new Response("Invalid JSON body", {
92
+ status: 400
93
+ });
94
+ }
95
+ const name = body?.name?.trim();
96
+ const agentId = body?.agentId?.trim();
97
+ const cron = body?.cron?.trim();
98
+ const prompt = body?.prompt?.trim();
99
+ if (!name) return new Response("Routine name required", {
100
+ status: 400
101
+ });
102
+ if (!agentId) return new Response("agentId required", {
103
+ status: 400
104
+ });
105
+ if (!cron) return new Response("cron required", {
106
+ status: 400
107
+ });
108
+ if (!prompt) return new Response("prompt required", {
109
+ status: 400
110
+ });
111
+ if (!isValidCron(cron)) return new Response("Invalid cron expression", {
112
+ status: 400
113
+ });
114
+ if (!agentExists(ctx, agentId)) return new Response("Invalid agentId", {
115
+ status: 400
116
+ });
117
+ const sessionId = body?.sessionId?.trim();
118
+ if (sessionId) {
119
+ const exists = await sessionExists(ctx, agentId, sessionId);
120
+ if (!exists) return new Response("Invalid sessionId", {
121
+ status: 400
122
+ });
123
+ }
124
+ const routines = store.load();
125
+ const providedId = body?.id?.trim();
126
+ if (providedId && !/^[a-zA-Z0-9_-]+$/.test(providedId)) return new Response("Invalid routine id", {
127
+ status: 400
128
+ });
129
+ const id = providedId || store.generateId();
130
+ if (routines.some((routine)=>routine.id === id)) return new Response("Routine already exists", {
131
+ status: 409
132
+ });
133
+ const routine = {
134
+ id,
135
+ name,
136
+ agentId,
137
+ cron,
138
+ prompt,
139
+ sessionId: sessionId || void 0,
140
+ createdAt: Date.now(),
141
+ enabled: body?.enabled ?? true
142
+ };
143
+ routines.unshift(routine);
144
+ store.save(routines);
145
+ return new Response(JSON.stringify(routine, null, 2), {
146
+ headers: {
147
+ "Content-Type": "application/json"
148
+ }
149
+ });
150
+ }
151
+ return new Response("Method Not Allowed", {
152
+ status: 405
153
+ });
154
+ }
155
+ const routineMatch = url.pathname.match(/^\/api\/routines\/([^/]+)$/);
156
+ if (!routineMatch) return null;
157
+ const routineId = decodeURIComponent(routineMatch[1]);
158
+ const routines = store.load();
159
+ const routine = routines.find((item)=>item.id === routineId);
160
+ if ("GET" === req.method) {
161
+ if (!routine) return new Response("Routine not found", {
162
+ status: 404
163
+ });
164
+ return new Response(JSON.stringify(routine, null, 2), {
165
+ headers: {
166
+ "Content-Type": "application/json"
167
+ }
168
+ });
169
+ }
170
+ if ("DELETE" === req.method) {
171
+ if (!routine) return new Response("Routine not found", {
172
+ status: 404
173
+ });
174
+ const nextRoutines = routines.filter((item)=>item.id !== routineId);
175
+ store.save(nextRoutines);
176
+ return new Response(JSON.stringify({
177
+ ok: true
178
+ }, null, 2), {
179
+ headers: {
180
+ "Content-Type": "application/json"
181
+ }
182
+ });
183
+ }
184
+ return new Response("Method Not Allowed", {
185
+ status: 405
186
+ });
187
+ };
188
+ exports.createRoutineStore = __webpack_exports__.createRoutineStore;
189
+ exports.handleRoutinesApi = __webpack_exports__.handleRoutinesApi;
190
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
191
+ "createRoutineStore",
192
+ "handleRoutinesApi"
193
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
194
+ Object.defineProperty(exports, '__esModule', {
195
+ value: true
196
+ });
@@ -0,0 +1,20 @@
1
+ import type { GatewayHttpContext } from "./types.js";
2
+ export type RoutineConfig = {
3
+ id: string;
4
+ name: string;
5
+ agentId: string;
6
+ cron: string;
7
+ prompt: string;
8
+ sessionId?: string;
9
+ createdAt: number;
10
+ lastRunAt?: number;
11
+ enabled: boolean;
12
+ };
13
+ type RoutineStore = {
14
+ load: () => RoutineConfig[];
15
+ save: (routines: RoutineConfig[]) => void;
16
+ generateId: () => string;
17
+ };
18
+ export declare const createRoutineStore: (resolveConfigDirPath: () => string) => RoutineStore;
19
+ export declare const handleRoutinesApi: (ctx: GatewayHttpContext, store: RoutineStore, req: Request, url: URL) => Promise<Response | null>;
20
+ export {};
@@ -0,0 +1,159 @@
1
+ import { AgentLoader } from "../../agent/config/agentLoader.js";
2
+ import { randomUUID } from "node:crypto";
3
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
4
+ import { join } from "node:path";
5
+ const CRON_FIELD_PATTERN = /^[0-9*/,\-]+$/;
6
+ const isValidCron = (cron)=>{
7
+ const parts = cron.trim().split(/\s+/);
8
+ if (5 !== parts.length) return false;
9
+ return parts.every((part)=>CRON_FIELD_PATTERN.test(part));
10
+ };
11
+ const createRoutineStore = (resolveConfigDirPath)=>{
12
+ const resolvePath = ()=>{
13
+ const configDir = resolveConfigDirPath();
14
+ mkdirSync(configDir, {
15
+ recursive: true
16
+ });
17
+ return join(configDir, "routines.json");
18
+ };
19
+ return {
20
+ load: ()=>{
21
+ const path = resolvePath();
22
+ if (!existsSync(path)) return [];
23
+ try {
24
+ const raw = readFileSync(path, "utf-8");
25
+ const parsed = JSON.parse(raw);
26
+ return Array.isArray(parsed) ? parsed : [];
27
+ } catch {
28
+ return [];
29
+ }
30
+ },
31
+ save: (routines)=>{
32
+ const path = resolvePath();
33
+ writeFileSync(path, JSON.stringify(routines, null, 2));
34
+ },
35
+ generateId: ()=>`routine-${randomUUID()}`
36
+ };
37
+ };
38
+ const agentExists = (ctx, agentId)=>{
39
+ const loader = new AgentLoader(ctx.configDir, ctx.workspace, ctx.getWingmanConfig());
40
+ const configs = loader.loadAllAgentConfigs();
41
+ return Boolean(configs.find((config)=>config.name === agentId));
42
+ };
43
+ const sessionExists = async (ctx, agentId, sessionId)=>{
44
+ const manager = await ctx.getSessionManager(agentId);
45
+ return Boolean(manager.getSession(sessionId));
46
+ };
47
+ const handleRoutinesApi = async (ctx, store, req, url)=>{
48
+ if ("/api/routines" === url.pathname) {
49
+ if ("GET" === req.method) {
50
+ const routines = store.load();
51
+ return new Response(JSON.stringify(routines, null, 2), {
52
+ headers: {
53
+ "Content-Type": "application/json"
54
+ }
55
+ });
56
+ }
57
+ if ("POST" === req.method) {
58
+ let body;
59
+ try {
60
+ body = await req.json();
61
+ } catch {
62
+ return new Response("Invalid JSON body", {
63
+ status: 400
64
+ });
65
+ }
66
+ const name = body?.name?.trim();
67
+ const agentId = body?.agentId?.trim();
68
+ const cron = body?.cron?.trim();
69
+ const prompt = body?.prompt?.trim();
70
+ if (!name) return new Response("Routine name required", {
71
+ status: 400
72
+ });
73
+ if (!agentId) return new Response("agentId required", {
74
+ status: 400
75
+ });
76
+ if (!cron) return new Response("cron required", {
77
+ status: 400
78
+ });
79
+ if (!prompt) return new Response("prompt required", {
80
+ status: 400
81
+ });
82
+ if (!isValidCron(cron)) return new Response("Invalid cron expression", {
83
+ status: 400
84
+ });
85
+ if (!agentExists(ctx, agentId)) return new Response("Invalid agentId", {
86
+ status: 400
87
+ });
88
+ const sessionId = body?.sessionId?.trim();
89
+ if (sessionId) {
90
+ const exists = await sessionExists(ctx, agentId, sessionId);
91
+ if (!exists) return new Response("Invalid sessionId", {
92
+ status: 400
93
+ });
94
+ }
95
+ const routines = store.load();
96
+ const providedId = body?.id?.trim();
97
+ if (providedId && !/^[a-zA-Z0-9_-]+$/.test(providedId)) return new Response("Invalid routine id", {
98
+ status: 400
99
+ });
100
+ const id = providedId || store.generateId();
101
+ if (routines.some((routine)=>routine.id === id)) return new Response("Routine already exists", {
102
+ status: 409
103
+ });
104
+ const routine = {
105
+ id,
106
+ name,
107
+ agentId,
108
+ cron,
109
+ prompt,
110
+ sessionId: sessionId || void 0,
111
+ createdAt: Date.now(),
112
+ enabled: body?.enabled ?? true
113
+ };
114
+ routines.unshift(routine);
115
+ store.save(routines);
116
+ return new Response(JSON.stringify(routine, null, 2), {
117
+ headers: {
118
+ "Content-Type": "application/json"
119
+ }
120
+ });
121
+ }
122
+ return new Response("Method Not Allowed", {
123
+ status: 405
124
+ });
125
+ }
126
+ const routineMatch = url.pathname.match(/^\/api\/routines\/([^/]+)$/);
127
+ if (!routineMatch) return null;
128
+ const routineId = decodeURIComponent(routineMatch[1]);
129
+ const routines = store.load();
130
+ const routine = routines.find((item)=>item.id === routineId);
131
+ if ("GET" === req.method) {
132
+ if (!routine) return new Response("Routine not found", {
133
+ status: 404
134
+ });
135
+ return new Response(JSON.stringify(routine, null, 2), {
136
+ headers: {
137
+ "Content-Type": "application/json"
138
+ }
139
+ });
140
+ }
141
+ if ("DELETE" === req.method) {
142
+ if (!routine) return new Response("Routine not found", {
143
+ status: 404
144
+ });
145
+ const nextRoutines = routines.filter((item)=>item.id !== routineId);
146
+ store.save(nextRoutines);
147
+ return new Response(JSON.stringify({
148
+ ok: true
149
+ }, null, 2), {
150
+ headers: {
151
+ "Content-Type": "application/json"
152
+ }
153
+ });
154
+ }
155
+ return new Response("Method Not Allowed", {
156
+ status: 405
157
+ });
158
+ };
159
+ export { createRoutineStore, handleRoutinesApi };
@@ -0,0 +1,241 @@
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
+ handleSessionsApi: ()=>handleSessionsApi
28
+ });
29
+ const external_node_crypto_namespaceObject = require("node:crypto");
30
+ const external_node_fs_namespaceObject = require("node:fs");
31
+ const handleSessionsApi = async (ctx, req, url)=>{
32
+ if ("/api/sessions" === url.pathname) {
33
+ if ("GET" === req.method) {
34
+ const limit = Number(url.searchParams.get("limit") || "100");
35
+ const status = url.searchParams.get("status") || "active";
36
+ const agentId = url.searchParams.get("agentId") || void 0;
37
+ const agents = agentId ? [
38
+ agentId
39
+ ] : ctx.getWingmanConfig().agents?.list?.map((agent)=>agent.id) || [
40
+ "main"
41
+ ];
42
+ const sessions = [];
43
+ for (const agent of agents){
44
+ const manager = await ctx.getSessionManager(agent);
45
+ const list = manager.listSessions({
46
+ status,
47
+ limit,
48
+ agentName: agent
49
+ });
50
+ for (const session of list)sessions.push({
51
+ id: session.id,
52
+ name: session.name,
53
+ agentId: session.agentName,
54
+ createdAt: session.createdAt.getTime(),
55
+ updatedAt: session.updatedAt.getTime(),
56
+ messageCount: session.messageCount,
57
+ lastMessagePreview: session.lastMessagePreview,
58
+ workdir: session.metadata?.workdir ?? null
59
+ });
60
+ }
61
+ const sorted = sessions.sort((a, b)=>{
62
+ const aUpdated = "number" == typeof a.updatedAt ? a.updatedAt : 0;
63
+ const bUpdated = "number" == typeof b.updatedAt ? b.updatedAt : 0;
64
+ return bUpdated - aUpdated;
65
+ });
66
+ return new Response(JSON.stringify(sorted.slice(0, limit), null, 2), {
67
+ headers: {
68
+ "Content-Type": "application/json"
69
+ }
70
+ });
71
+ }
72
+ if ("POST" === req.method) {
73
+ const body = await req.json();
74
+ const selectedAgent = ctx.router.selectAgent(body.agentId);
75
+ if (!selectedAgent) return new Response("Invalid agent", {
76
+ status: 400
77
+ });
78
+ const sessionId = body.sessionId || `agent:${selectedAgent}:webui:thread:${(0, external_node_crypto_namespaceObject.randomUUID)()}`;
79
+ const manager = await ctx.getSessionManager(selectedAgent);
80
+ const session = manager.getOrCreateSession(sessionId, selectedAgent, body.name);
81
+ return new Response(JSON.stringify({
82
+ id: session.id,
83
+ name: session.name,
84
+ agentId: session.agentName,
85
+ createdAt: session.createdAt.getTime(),
86
+ updatedAt: session.updatedAt.getTime(),
87
+ messageCount: session.messageCount,
88
+ lastMessagePreview: session.lastMessagePreview,
89
+ workdir: session.metadata?.workdir ?? null
90
+ }, null, 2), {
91
+ headers: {
92
+ "Content-Type": "application/json"
93
+ }
94
+ });
95
+ }
96
+ return new Response("Method Not Allowed", {
97
+ status: 405
98
+ });
99
+ }
100
+ const sessionMessagesMatch = url.pathname.match(/^\/api\/sessions\/(.+)\/messages$/);
101
+ if (sessionMessagesMatch) {
102
+ const sessionId = decodeURIComponent(sessionMessagesMatch[1]);
103
+ const agentId = url.searchParams.get("agentId");
104
+ if (!agentId) return new Response("agentId required", {
105
+ status: 400
106
+ });
107
+ const manager = await ctx.getSessionManager(agentId);
108
+ if ("GET" === req.method) {
109
+ const messages = await manager.listMessages(sessionId);
110
+ return new Response(JSON.stringify(messages, null, 2), {
111
+ headers: {
112
+ "Content-Type": "application/json"
113
+ }
114
+ });
115
+ }
116
+ if ("DELETE" === req.method) {
117
+ const session = manager.getSession(sessionId);
118
+ if (!session) return new Response("session not found", {
119
+ status: 404
120
+ });
121
+ manager.clearSessionMessages(sessionId);
122
+ const updated = manager.getSession(sessionId);
123
+ return new Response(JSON.stringify({
124
+ id: sessionId,
125
+ messageCount: updated?.messageCount ?? 0,
126
+ lastMessagePreview: updated?.lastMessagePreview ?? null
127
+ }, null, 2), {
128
+ headers: {
129
+ "Content-Type": "application/json"
130
+ }
131
+ });
132
+ }
133
+ }
134
+ const sessionWorkdirMatch = url.pathname.match(/^\/api\/sessions\/(.+)\/workdir$/);
135
+ if (sessionWorkdirMatch && "POST" === req.method) {
136
+ const sessionId = decodeURIComponent(sessionWorkdirMatch[1]);
137
+ const agentId = url.searchParams.get("agentId");
138
+ if (!agentId) return new Response("agentId required", {
139
+ status: 400
140
+ });
141
+ const body = await req.json();
142
+ const manager = await ctx.getSessionManager(agentId);
143
+ const session = manager.getSession(sessionId);
144
+ if (!session) return new Response("session not found", {
145
+ status: 404
146
+ });
147
+ const rawWorkdir = body?.workdir;
148
+ if (!rawWorkdir) {
149
+ manager.updateSessionMetadata(sessionId, {
150
+ workdir: null
151
+ });
152
+ return new Response(JSON.stringify({
153
+ id: session.id,
154
+ workdir: null
155
+ }, null, 2), {
156
+ headers: {
157
+ "Content-Type": "application/json"
158
+ }
159
+ });
160
+ }
161
+ const resolved = ctx.resolveFsPath(rawWorkdir);
162
+ const roots = ctx.resolveFsRoots();
163
+ if (!ctx.isPathWithinRoots(resolved, roots)) return new Response("workdir not allowed", {
164
+ status: 403
165
+ });
166
+ if (!(0, external_node_fs_namespaceObject.existsSync)(resolved) || !(0, external_node_fs_namespaceObject.statSync)(resolved).isDirectory()) return new Response("workdir not found", {
167
+ status: 404
168
+ });
169
+ manager.updateSessionMetadata(sessionId, {
170
+ workdir: resolved
171
+ });
172
+ return new Response(JSON.stringify({
173
+ id: session.id,
174
+ workdir: resolved
175
+ }, null, 2), {
176
+ headers: {
177
+ "Content-Type": "application/json"
178
+ }
179
+ });
180
+ }
181
+ const sessionDeleteMatch = url.pathname.match(/^\/api\/sessions\/(.+)$/);
182
+ if (sessionDeleteMatch && "PUT" === req.method) {
183
+ const sessionId = decodeURIComponent(sessionDeleteMatch[1]);
184
+ const agentId = url.searchParams.get("agentId");
185
+ if (!agentId) return new Response("agentId required", {
186
+ status: 400
187
+ });
188
+ const body = await req.json();
189
+ const name = body?.name?.trim();
190
+ if (!name) return new Response("name required", {
191
+ status: 400
192
+ });
193
+ const manager = await ctx.getSessionManager(agentId);
194
+ const session = manager.getSession(sessionId);
195
+ if (!session) return new Response("session not found", {
196
+ status: 404
197
+ });
198
+ manager.updateSession(sessionId, {
199
+ name
200
+ });
201
+ const updated = manager.getSession(sessionId);
202
+ return new Response(JSON.stringify({
203
+ id: updated?.id || sessionId,
204
+ name: updated?.name || name,
205
+ agentId: updated?.agentName || agentId,
206
+ createdAt: updated?.createdAt.getTime() || session.createdAt.getTime(),
207
+ updatedAt: updated?.updatedAt.getTime() || Date.now(),
208
+ messageCount: updated?.messageCount ?? session.messageCount,
209
+ lastMessagePreview: updated?.lastMessagePreview ?? session.lastMessagePreview,
210
+ workdir: updated?.metadata?.workdir ?? session.metadata?.workdir ?? null
211
+ }, null, 2), {
212
+ headers: {
213
+ "Content-Type": "application/json"
214
+ }
215
+ });
216
+ }
217
+ if (sessionDeleteMatch && "DELETE" === req.method) {
218
+ const sessionId = decodeURIComponent(sessionDeleteMatch[1]);
219
+ const agentId = url.searchParams.get("agentId");
220
+ if (!agentId) return new Response("agentId required", {
221
+ status: 400
222
+ });
223
+ const manager = await ctx.getSessionManager(agentId);
224
+ manager.deleteSession(sessionId);
225
+ return new Response(JSON.stringify({
226
+ ok: true
227
+ }), {
228
+ headers: {
229
+ "Content-Type": "application/json"
230
+ }
231
+ });
232
+ }
233
+ return null;
234
+ };
235
+ exports.handleSessionsApi = __webpack_exports__.handleSessionsApi;
236
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
237
+ "handleSessionsApi"
238
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
239
+ Object.defineProperty(exports, '__esModule', {
240
+ value: true
241
+ });
@@ -0,0 +1,2 @@
1
+ import type { GatewayHttpContext } from "./types.js";
2
+ export declare const handleSessionsApi: (ctx: GatewayHttpContext, req: Request, url: URL) => Promise<Response | null>;