@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,535 @@
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
+ resolveMessageRole: ()=>resolveMessageRole,
28
+ SessionManager: ()=>SessionManager,
29
+ extractImageUrl: ()=>extractImageUrl,
30
+ extractAttachments: ()=>extractAttachments,
31
+ extractImageAttachments: ()=>extractImageAttachments,
32
+ extractMessagesFromState: ()=>extractMessagesFromState
33
+ });
34
+ const langgraph_checkpoint_sqlite_namespaceObject = require("@langchain/langgraph-checkpoint-sqlite");
35
+ const external_deepagents_namespaceObject = require("deepagents");
36
+ const external_uuid_namespaceObject = require("uuid");
37
+ function _define_property(obj, key, value) {
38
+ if (key in obj) Object.defineProperty(obj, key, {
39
+ value: value,
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true
43
+ });
44
+ else obj[key] = value;
45
+ return obj;
46
+ }
47
+ const isBunRuntime = void 0 !== globalThis.Bun;
48
+ class SessionManager {
49
+ async initialize() {
50
+ if (!isBunRuntime) throw new Error("SessionManager requires Bun runtime (bun:sqlite not available)");
51
+ const { BunSqliteAdapter } = await import("./database/bunSqliteAdapter.cjs");
52
+ const adapter = new BunSqliteAdapter(this.dbPath);
53
+ this.checkpointer = new langgraph_checkpoint_sqlite_namespaceObject.SqliteSaver(adapter);
54
+ await this.checkpointer.setup();
55
+ this.db = adapter.db;
56
+ this.db.run(`
57
+ CREATE TABLE IF NOT EXISTS sessions (
58
+ id TEXT PRIMARY KEY,
59
+ name TEXT NOT NULL,
60
+ agent_name TEXT NOT NULL,
61
+ created_at INTEGER NOT NULL,
62
+ updated_at INTEGER NOT NULL,
63
+ status TEXT NOT NULL DEFAULT 'active',
64
+ message_count INTEGER DEFAULT 0,
65
+ last_message_preview TEXT,
66
+ metadata TEXT
67
+ );
68
+
69
+ CREATE INDEX IF NOT EXISTS idx_sessions_updated ON sessions(updated_at DESC);
70
+ CREATE INDEX IF NOT EXISTS idx_sessions_agent ON sessions(agent_name);
71
+ `);
72
+ }
73
+ createSession(agentName, name) {
74
+ if (!this.db) throw new Error("SessionManager not initialized");
75
+ const id = (0, external_uuid_namespaceObject.v4)();
76
+ const now = Date.now();
77
+ const sessionName = name || `Session ${new Date().toLocaleString()}`;
78
+ const stmt = this.db.prepare(`
79
+ INSERT INTO sessions (id, name, agent_name, created_at, updated_at, status, message_count)
80
+ VALUES (?, ?, ?, ?, ?, 'active', 0)
81
+ `);
82
+ stmt.run(id, sessionName, agentName, now, now);
83
+ return {
84
+ id,
85
+ name: sessionName,
86
+ agentName,
87
+ createdAt: new Date(now),
88
+ updatedAt: new Date(now),
89
+ status: "active",
90
+ messageCount: 0
91
+ };
92
+ }
93
+ getOrCreateSession(sessionId, agentName, name) {
94
+ if (!this.db) throw new Error("SessionManager not initialized");
95
+ const existing = this.getSession(sessionId);
96
+ if (existing) return existing;
97
+ const now = Date.now();
98
+ const sessionName = name || `Session ${new Date().toLocaleString()}`;
99
+ const stmt = this.db.prepare(`
100
+ INSERT INTO sessions (id, name, agent_name, created_at, updated_at, status, message_count)
101
+ VALUES (?, ?, ?, ?, ?, 'active', 0)
102
+ `);
103
+ stmt.run(sessionId, sessionName, agentName, now, now);
104
+ return {
105
+ id: sessionId,
106
+ name: sessionName,
107
+ agentName,
108
+ createdAt: new Date(now),
109
+ updatedAt: new Date(now),
110
+ status: "active",
111
+ messageCount: 0
112
+ };
113
+ }
114
+ getSession(sessionId) {
115
+ if (!this.db) throw new Error("SessionManager not initialized");
116
+ const stmt = this.db.prepare(`
117
+ SELECT * FROM sessions WHERE id = ?
118
+ `);
119
+ const row = stmt.get(sessionId);
120
+ if (!row) return null;
121
+ return this.rowToSession(row);
122
+ }
123
+ getLastSession() {
124
+ if (!this.db) throw new Error("SessionManager not initialized");
125
+ const stmt = this.db.prepare(`
126
+ SELECT * FROM sessions
127
+ WHERE status = 'active'
128
+ ORDER BY updated_at DESC
129
+ LIMIT 1
130
+ `);
131
+ const row = stmt.get();
132
+ if (!row) return null;
133
+ return this.rowToSession(row);
134
+ }
135
+ listSessions(options = {}) {
136
+ if (!this.db) throw new Error("SessionManager not initialized");
137
+ const { status = "active", limit = 10, offset = 0, agentName } = options;
138
+ let query = `
139
+ SELECT * FROM sessions
140
+ WHERE status = ?
141
+ `;
142
+ const params = [
143
+ status
144
+ ];
145
+ if (agentName) {
146
+ query += " AND agent_name = ?";
147
+ params.push(agentName);
148
+ }
149
+ query += " ORDER BY updated_at DESC LIMIT ? OFFSET ?";
150
+ params.push(limit, offset);
151
+ const stmt = this.db.prepare(query);
152
+ const rows = stmt.all(...params);
153
+ return rows.map(this.rowToSession);
154
+ }
155
+ updateSession(sessionId, updates) {
156
+ if (!this.db) throw new Error("SessionManager not initialized");
157
+ const fields = [];
158
+ const values = [];
159
+ if (void 0 !== updates.name) {
160
+ fields.push("name = ?");
161
+ values.push(updates.name);
162
+ }
163
+ if (void 0 !== updates.status) {
164
+ fields.push("status = ?");
165
+ values.push(updates.status);
166
+ }
167
+ if (void 0 !== updates.messageCount) {
168
+ fields.push("message_count = ?");
169
+ values.push(updates.messageCount);
170
+ }
171
+ if (void 0 !== updates.lastMessagePreview) {
172
+ fields.push("last_message_preview = ?");
173
+ values.push(updates.lastMessagePreview);
174
+ }
175
+ fields.push("updated_at = ?");
176
+ values.push(Date.now());
177
+ values.push(sessionId);
178
+ const stmt = this.db.prepare(`
179
+ UPDATE sessions
180
+ SET ${fields.join(", ")}
181
+ WHERE id = ?
182
+ `);
183
+ stmt.run(...values);
184
+ }
185
+ updateSessionMetadata(sessionId, metadata) {
186
+ if (!this.db) throw new Error("SessionManager not initialized");
187
+ const existing = this.getSession(sessionId);
188
+ const nextMetadata = {
189
+ ...existing?.metadata || {},
190
+ ...metadata
191
+ };
192
+ const stmt = this.db.prepare(`
193
+ UPDATE sessions
194
+ SET metadata = ?, updated_at = ?
195
+ WHERE id = ?
196
+ `);
197
+ stmt.run(JSON.stringify(nextMetadata), Date.now(), sessionId);
198
+ }
199
+ archiveSession(sessionId) {
200
+ this.updateSession(sessionId, {
201
+ status: "archived"
202
+ });
203
+ }
204
+ deleteSession(sessionId) {
205
+ if (!this.db || !this.checkpointer) throw new Error("SessionManager not initialized");
206
+ const sessionStmt = this.db.prepare("DELETE FROM sessions WHERE id = ?");
207
+ sessionStmt.run(sessionId);
208
+ const checkpointStmt = this.db.prepare("DELETE FROM checkpoints WHERE thread_id = ?");
209
+ checkpointStmt.run(sessionId);
210
+ const writesStmt = this.db.prepare("DELETE FROM writes WHERE thread_id = ?");
211
+ writesStmt.run(sessionId);
212
+ }
213
+ clearSessionMessages(sessionId) {
214
+ if (!this.db || !this.checkpointer) throw new Error("SessionManager not initialized");
215
+ const checkpointStmt = this.db.prepare("DELETE FROM checkpoints WHERE thread_id = ?");
216
+ checkpointStmt.run(sessionId);
217
+ const writesStmt = this.db.prepare("DELETE FROM writes WHERE thread_id = ?");
218
+ writesStmt.run(sessionId);
219
+ const sessionStmt = this.db.prepare(`
220
+ UPDATE sessions
221
+ SET message_count = 0, last_message_preview = NULL, updated_at = ?
222
+ WHERE id = ?
223
+ `);
224
+ sessionStmt.run(Date.now(), sessionId);
225
+ }
226
+ getCheckpointer() {
227
+ if (!this.checkpointer) throw new Error("SessionManager not initialized");
228
+ return this.checkpointer;
229
+ }
230
+ async listMessages(sessionId) {
231
+ if (!this.checkpointer) throw new Error("SessionManager not initialized");
232
+ const stateMessages = await this.loadMessagesFromState(sessionId);
233
+ if (null !== stateMessages) return stateMessages;
234
+ const rawCheckpoints = this.loadRecentCheckpoints(sessionId, 25);
235
+ const fallbackTuple = 0 === rawCheckpoints.length ? await this.checkpointer.getTuple({
236
+ configurable: {
237
+ thread_id: sessionId
238
+ }
239
+ }) : null;
240
+ const checkpoints = [
241
+ ...rawCheckpoints,
242
+ ...fallbackTuple?.checkpoint ? [
243
+ fallbackTuple.checkpoint
244
+ ] : []
245
+ ];
246
+ if (0 === checkpoints.length) return [];
247
+ let bestScore = -1;
248
+ let bestMessages = [];
249
+ for (const checkpoint of checkpoints){
250
+ const channelValues = checkpoint?.channel_values || checkpoint?.channelValues || checkpoint?.state?.channel_values || checkpoint?.state?.channelValues || {};
251
+ const candidates = [];
252
+ if (Array.isArray(channelValues?.messages)) candidates.push(channelValues.messages);
253
+ for (const value of Object.values(channelValues))if (Array.isArray(value)) candidates.push(value);
254
+ const relevantCandidates = candidates.filter((arr)=>arr.some(isMessageLike));
255
+ if (0 === relevantCandidates.length) continue;
256
+ const baseTime = parseTimestamp(checkpoint?.ts);
257
+ const scored = relevantCandidates.map((candidate)=>scoreMessages(candidate, baseTime));
258
+ scored.sort((a, b)=>b.score - a.score);
259
+ if (scored[0] && scored[0].score > bestScore) {
260
+ bestScore = scored[0].score;
261
+ bestMessages = scored[0].messages;
262
+ }
263
+ }
264
+ if (0 === bestMessages.length) return [];
265
+ return filterEmptyAssistantMessages(bestMessages);
266
+ }
267
+ rowToSession(row) {
268
+ return {
269
+ id: row.id,
270
+ name: row.name,
271
+ agentName: row.agent_name,
272
+ createdAt: new Date(row.created_at),
273
+ updatedAt: new Date(row.updated_at),
274
+ status: row.status,
275
+ messageCount: row.message_count,
276
+ lastMessagePreview: row.last_message_preview,
277
+ metadata: row.metadata ? JSON.parse(row.metadata) : void 0
278
+ };
279
+ }
280
+ close() {
281
+ if (this.db) this.db.close();
282
+ }
283
+ loadRecentCheckpoints(sessionId, limit) {
284
+ if (!this.db) return [];
285
+ const stmt = this.db.prepare(`
286
+ SELECT checkpoint
287
+ FROM checkpoints
288
+ WHERE thread_id = ?
289
+ ORDER BY rowid DESC
290
+ LIMIT ?
291
+ `);
292
+ const rows = stmt.all(sessionId, limit);
293
+ const checkpoints = [];
294
+ for (const row of rows){
295
+ if (!row?.checkpoint) continue;
296
+ const raw = row.checkpoint;
297
+ let text = null;
298
+ if ("string" == typeof raw) text = raw;
299
+ else if (raw instanceof Uint8Array) text = new TextDecoder().decode(raw);
300
+ if (text) try {
301
+ checkpoints.push(JSON.parse(text));
302
+ } catch {
303
+ continue;
304
+ }
305
+ }
306
+ return checkpoints;
307
+ }
308
+ getStateReaderAgent() {
309
+ if (!this.checkpointer) throw new Error("SessionManager not initialized");
310
+ if (!this.stateReaderAgent) this.stateReaderAgent = (0, external_deepagents_namespaceObject.createDeepAgent)({
311
+ checkpointer: this.checkpointer
312
+ });
313
+ return this.stateReaderAgent;
314
+ }
315
+ async loadMessagesFromState(sessionId) {
316
+ if (!this.checkpointer) return null;
317
+ try {
318
+ const agent = this.getStateReaderAgent();
319
+ if ("function" != typeof agent.getState) return null;
320
+ const state = await agent.getState({
321
+ configurable: {
322
+ thread_id: sessionId
323
+ }
324
+ });
325
+ return extractMessagesFromState(state);
326
+ } catch {
327
+ return null;
328
+ }
329
+ }
330
+ constructor(dbPath){
331
+ _define_property(this, "checkpointer", null);
332
+ _define_property(this, "stateReaderAgent", null);
333
+ _define_property(this, "db", null);
334
+ _define_property(this, "dbPath", void 0);
335
+ this.dbPath = dbPath;
336
+ }
337
+ }
338
+ function isMessageLike(entry) {
339
+ if (!entry || "object" != typeof entry) return false;
340
+ return "string" == typeof entry.role || "string" == typeof entry.type || "string" == typeof entry?.kwargs?.role || "string" == typeof entry?.additional_kwargs?.role;
341
+ }
342
+ function toSessionMessage(entry, index, baseTime) {
343
+ if (!entry || "object" != typeof entry) return null;
344
+ if (entry?.additional_kwargs?.ui_hidden || entry?.additional_kwargs?.uiHidden) return null;
345
+ if (entry?.metadata?.ui_hidden || entry?.metadata?.uiHidden) return null;
346
+ const role = resolveMessageRole(entry);
347
+ if ("user" !== role && "assistant" !== role) return null;
348
+ const blocks = extractContentBlocks(entry);
349
+ const content = "string" == typeof entry.content ? entry.content : "string" == typeof entry?.kwargs?.content ? entry.kwargs.content : "string" == typeof entry?.additional_kwargs?.content ? entry.additional_kwargs.content : "string" == typeof entry?.data?.content ? entry.data.content : blocks.length > 0 ? blocks.filter((block)=>block && "text" === block.type && block.text).map((block)=>block.text).join("") : "";
350
+ if ("user" === role && isUiHiddenContent(content)) return null;
351
+ const attachments = extractAttachments(blocks);
352
+ return {
353
+ id: `msg-${index}`,
354
+ role,
355
+ content,
356
+ attachments: attachments.length > 0 ? attachments : void 0,
357
+ createdAt: baseTime + index
358
+ };
359
+ }
360
+ function extractMessagesFromState(state) {
361
+ if (!state || "object" != typeof state) return null;
362
+ const values = state?.values ?? state?.value ?? state?.state ?? {};
363
+ const candidates = [
364
+ values?.messages,
365
+ values?.channel_values?.messages,
366
+ values?.channelValues?.messages,
367
+ state?.channel_values?.messages,
368
+ state?.channelValues?.messages
369
+ ];
370
+ const messages = candidates.find((candidate)=>Array.isArray(candidate));
371
+ if (!messages) return null;
372
+ const baseTime = parseTimestamp(state?.createdAt ?? values?.createdAt ?? state?.metadata?.createdAt ?? state?.metadata?.created_at ?? state?.ts);
373
+ const mapped = messages.map((message, index)=>toSessionMessage(message, index, baseTime)).filter(Boolean);
374
+ return filterEmptyAssistantMessages(mapped);
375
+ }
376
+ function extractContentBlocks(entry) {
377
+ if (!entry || "object" != typeof entry) return [];
378
+ const candidates = [
379
+ entry?.content,
380
+ entry?.kwargs?.content,
381
+ entry?.additional_kwargs?.content,
382
+ entry?.data?.content
383
+ ];
384
+ for (const candidate of candidates)if (Array.isArray(candidate)) return candidate;
385
+ return [];
386
+ }
387
+ function extractAttachments(blocks) {
388
+ const attachments = [];
389
+ for (const block of blocks){
390
+ if (!block || "object" != typeof block) continue;
391
+ const imageUrl = extractImageUrl(block);
392
+ if (imageUrl) {
393
+ attachments.push({
394
+ kind: "image",
395
+ dataUrl: imageUrl
396
+ });
397
+ continue;
398
+ }
399
+ const audioUrl = extractAudioUrl(block);
400
+ if (audioUrl) attachments.push({
401
+ kind: "audio",
402
+ dataUrl: audioUrl
403
+ });
404
+ }
405
+ return attachments;
406
+ }
407
+ function extractImageAttachments(blocks) {
408
+ return extractAttachments(blocks).filter((attachment)=>"image" === attachment.kind);
409
+ }
410
+ function extractImageUrl(block) {
411
+ if ("image_url" === block.type) {
412
+ if ("string" == typeof block.image_url) return block.image_url;
413
+ if ("string" == typeof block.image_url?.url) return block.image_url.url;
414
+ }
415
+ if ("input_image" === block.type) {
416
+ if ("string" == typeof block.image_url) return block.image_url;
417
+ if ("string" == typeof block.image_url?.url) return block.image_url.url;
418
+ if ("string" == typeof block.url) return block.url;
419
+ }
420
+ if ("image" === block.type && block.source) {
421
+ const mediaType = block.source.media_type || block.source.mediaType;
422
+ const data = block.source.data;
423
+ if (mediaType && data) return `data:${mediaType};base64,${data}`;
424
+ }
425
+ return null;
426
+ }
427
+ function extractAudioUrl(block) {
428
+ if ("audio_url" === block.type) {
429
+ if ("string" == typeof block.audio_url) return block.audio_url;
430
+ if ("string" == typeof block.audio_url?.url) return block.audio_url.url;
431
+ }
432
+ if ("input_audio" === block.type) {
433
+ const input = block.input_audio || block.audio;
434
+ const data = "string" == typeof input?.data ? input.data : null;
435
+ const format = "string" == typeof input?.format ? input.format : void 0;
436
+ if (data) {
437
+ const mimeType = format ? resolveAudioMimeType(format) : "audio/wav";
438
+ return `data:${mimeType};base64,${data}`;
439
+ }
440
+ }
441
+ if ("audio" === block.type && block.source) {
442
+ const mediaType = block.source.media_type || block.source.mediaType;
443
+ const data = block.source.data;
444
+ if (mediaType && data) return `data:${mediaType};base64,${data}`;
445
+ }
446
+ if ("audio" === block.type) {
447
+ const sourceType = block.source_type || block.sourceType;
448
+ const data = block.data;
449
+ if ("base64" === sourceType && "string" == typeof data) {
450
+ const rawFormat = block.mime_type || block.media_type || block.mediaType || block.format;
451
+ const mimeType = "string" == typeof rawFormat ? rawFormat.includes("/") ? rawFormat : resolveAudioMimeType(rawFormat) : "audio/wav";
452
+ return `data:${mimeType};base64,${data}`;
453
+ }
454
+ if ("url" === sourceType && "string" == typeof block.url) return block.url;
455
+ }
456
+ return null;
457
+ }
458
+ function resolveAudioMimeType(format) {
459
+ const normalized = format.toLowerCase();
460
+ switch(normalized){
461
+ case "mp3":
462
+ case "mpeg":
463
+ return "audio/mpeg";
464
+ case "wav":
465
+ return "audio/wav";
466
+ case "m4a":
467
+ case "mp4":
468
+ return "audio/mp4";
469
+ case "ogg":
470
+ return "audio/ogg";
471
+ case "webm":
472
+ return "audio/webm";
473
+ default:
474
+ return `audio/${normalized}`;
475
+ }
476
+ }
477
+ function mapMessageType(type) {
478
+ if (!type) return null;
479
+ if ("human" === type || "user" === type) return "user";
480
+ if ("ai" === type || "assistant" === type) return "assistant";
481
+ return null;
482
+ }
483
+ function mapMessageTypeFromId(id) {
484
+ if (!Array.isArray(id) || 0 === id.length) return null;
485
+ const last = String(id[id.length - 1] || "").toLowerCase();
486
+ if (last.includes("human") || last.includes("user")) return "user";
487
+ if (last.includes("ai") || last.includes("assistant")) return "assistant";
488
+ return null;
489
+ }
490
+ function resolveMessageRole(entry) {
491
+ return entry?.role || entry?.kwargs?.role || entry?.additional_kwargs?.role || mapMessageType(entry?.type) || mapMessageTypeFromId(entry?.id ?? entry?.lc_id ?? entry?.kwargs?.id);
492
+ }
493
+ function parseTimestamp(value) {
494
+ if ("number" == typeof value && Number.isFinite(value)) return value;
495
+ if ("string" == typeof value) {
496
+ const parsed = Date.parse(value);
497
+ if (!Number.isNaN(parsed)) return parsed;
498
+ }
499
+ return Date.now();
500
+ }
501
+ function isUiHiddenContent(content) {
502
+ if (!content) return false;
503
+ return content.includes("Current Date Time (UTC):") || content.startsWith("# User's Machine Information");
504
+ }
505
+ function scoreMessages(candidate, baseTime) {
506
+ const messages = candidate.map((message, index)=>toSessionMessage(message, index, baseTime)).filter(Boolean);
507
+ const contentful = messages.filter((msg)=>msg.content.trim().length > 0 || (msg.attachments?.length ?? 0) > 0).length;
508
+ const assistantContentful = messages.filter((msg)=>"assistant" === msg.role && msg.content.trim().length > 0).length;
509
+ const score = 3 * assistantContentful + 2 * contentful + messages.length;
510
+ return {
511
+ score,
512
+ messages
513
+ };
514
+ }
515
+ function filterEmptyAssistantMessages(messages) {
516
+ const filtered = messages.filter((message)=>"assistant" !== message.role || message.content.trim().length > 0 || (message.attachments?.length ?? 0) > 0);
517
+ return filtered.length > 0 ? filtered : messages;
518
+ }
519
+ exports.SessionManager = __webpack_exports__.SessionManager;
520
+ exports.extractAttachments = __webpack_exports__.extractAttachments;
521
+ exports.extractImageAttachments = __webpack_exports__.extractImageAttachments;
522
+ exports.extractImageUrl = __webpack_exports__.extractImageUrl;
523
+ exports.extractMessagesFromState = __webpack_exports__.extractMessagesFromState;
524
+ exports.resolveMessageRole = __webpack_exports__.resolveMessageRole;
525
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
526
+ "SessionManager",
527
+ "extractAttachments",
528
+ "extractImageAttachments",
529
+ "extractImageUrl",
530
+ "extractMessagesFromState",
531
+ "resolveMessageRole"
532
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
533
+ Object.defineProperty(exports, '__esModule', {
534
+ value: true
535
+ });
@@ -0,0 +1,111 @@
1
+ import { SqliteSaver } from "@langchain/langgraph-checkpoint-sqlite";
2
+ export interface Session {
3
+ id: string;
4
+ name: string;
5
+ agentName: string;
6
+ createdAt: Date;
7
+ updatedAt: Date;
8
+ status: "active" | "archived" | "deleted";
9
+ messageCount: number;
10
+ lastMessagePreview?: string;
11
+ metadata?: Record<string, any>;
12
+ }
13
+ export interface ListSessionsOptions {
14
+ status?: "active" | "archived" | "deleted";
15
+ limit?: number;
16
+ offset?: number;
17
+ agentName?: string;
18
+ }
19
+ export interface SessionMessage {
20
+ id: string;
21
+ role: "user" | "assistant";
22
+ content: string;
23
+ attachments?: SessionAttachment[];
24
+ createdAt: number;
25
+ }
26
+ export interface SessionAttachment {
27
+ kind: "image" | "audio";
28
+ dataUrl: string;
29
+ name?: string;
30
+ mimeType?: string;
31
+ size?: number;
32
+ }
33
+ /**
34
+ * SessionManager handles session metadata and provides unified access to
35
+ * both the custom sessions table and LangGraph's SqliteSaver checkpointer.
36
+ */
37
+ export declare class SessionManager {
38
+ private checkpointer;
39
+ private stateReaderAgent;
40
+ private db;
41
+ private dbPath;
42
+ constructor(dbPath: string);
43
+ /**
44
+ * Initialize the SessionManager with SqliteSaver and create custom tables
45
+ */
46
+ initialize(): Promise<void>;
47
+ /**
48
+ * Create a new session
49
+ */
50
+ createSession(agentName: string, name?: string): Session;
51
+ /**
52
+ * Get or create a session with a fixed ID
53
+ */
54
+ getOrCreateSession(sessionId: string, agentName: string, name?: string): Session;
55
+ /**
56
+ * Get a session by ID
57
+ */
58
+ getSession(sessionId: string): Session | null;
59
+ /**
60
+ * Get the most recently updated session
61
+ */
62
+ getLastSession(): Session | null;
63
+ /**
64
+ * List sessions with optional filtering
65
+ */
66
+ listSessions(options?: ListSessionsOptions): Session[];
67
+ /**
68
+ * Update a session's metadata
69
+ */
70
+ updateSession(sessionId: string, updates: Partial<Pick<Session, "name" | "status" | "messageCount" | "lastMessagePreview">>): void;
71
+ /**
72
+ * Merge and update session metadata
73
+ */
74
+ updateSessionMetadata(sessionId: string, metadata: Record<string, any>): void;
75
+ /**
76
+ * Archive a session (soft delete)
77
+ */
78
+ archiveSession(sessionId: string): void;
79
+ /**
80
+ * Delete a session (hard delete from database)
81
+ */
82
+ deleteSession(sessionId: string): void;
83
+ /**
84
+ * Clear session messages while preserving the session record
85
+ */
86
+ clearSessionMessages(sessionId: string): void;
87
+ /**
88
+ * Get the checkpointer for use with DeepAgents
89
+ */
90
+ getCheckpointer(): SqliteSaver;
91
+ /**
92
+ * List messages for a session by reading the latest checkpoint.
93
+ */
94
+ listMessages(sessionId: string): Promise<SessionMessage[]>;
95
+ /**
96
+ * Convert database row to Session object
97
+ */
98
+ private rowToSession;
99
+ /**
100
+ * Close the database connection
101
+ */
102
+ close(): void;
103
+ private loadRecentCheckpoints;
104
+ private getStateReaderAgent;
105
+ private loadMessagesFromState;
106
+ }
107
+ export declare function extractMessagesFromState(state: any): SessionMessage[] | null;
108
+ export declare function extractAttachments(blocks: any[]): SessionAttachment[];
109
+ export declare function extractImageAttachments(blocks: any[]): SessionAttachment[];
110
+ export declare function extractImageUrl(block: any): string | null;
111
+ export declare function resolveMessageRole(entry: any): "user" | "assistant" | null;