@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,265 @@
1
+ "use strict";
2
+ var __webpack_exports__ = {};
3
+ const external_vitest_namespaceObject = require("vitest");
4
+ const promises_namespaceObject = require("node:fs/promises");
5
+ const isBun = void 0 !== globalThis.Bun;
6
+ const describeIfBun = isBun ? external_vitest_namespaceObject.describe : external_vitest_namespaceObject.describe.skip;
7
+ describeIfBun("BunSqliteAdapter", ()=>{
8
+ const testDbPath = "./test-adapter.db";
9
+ let BunSqliteAdapter;
10
+ let Database;
11
+ let adapter;
12
+ (0, external_vitest_namespaceObject.beforeAll)(async ()=>{
13
+ const module = await import("../cli/core/database/bunSqliteAdapter.cjs");
14
+ BunSqliteAdapter = module.BunSqliteAdapter;
15
+ const sqliteModule = await import("bun:sqlite");
16
+ Database = sqliteModule.Database;
17
+ });
18
+ (0, external_vitest_namespaceObject.beforeEach)(()=>{
19
+ adapter = new BunSqliteAdapter(testDbPath);
20
+ });
21
+ (0, external_vitest_namespaceObject.afterEach)(async ()=>{
22
+ try {
23
+ adapter.close();
24
+ await (0, promises_namespaceObject.unlink)(testDbPath);
25
+ } catch {}
26
+ });
27
+ (0, external_vitest_namespaceObject.describe)("constructor", ()=>{
28
+ (0, external_vitest_namespaceObject.it)("should create adapter from file path", ()=>{
29
+ (0, external_vitest_namespaceObject.expect)(adapter).toBeDefined();
30
+ });
31
+ (0, external_vitest_namespaceObject.it)("should create adapter from existing Database instance", ()=>{
32
+ const db = new Database(":memory:");
33
+ const memAdapter = new BunSqliteAdapter(db);
34
+ (0, external_vitest_namespaceObject.expect)(memAdapter).toBeDefined();
35
+ memAdapter.close();
36
+ });
37
+ });
38
+ (0, external_vitest_namespaceObject.describe)("exec and run", ()=>{
39
+ (0, external_vitest_namespaceObject.it)("should execute SQL statements to create tables via exec", ()=>{
40
+ const result = adapter.exec(`
41
+ CREATE TABLE users (
42
+ id INTEGER PRIMARY KEY,
43
+ name TEXT NOT NULL
44
+ );
45
+ `);
46
+ (0, external_vitest_namespaceObject.expect)(result).toBeDefined();
47
+ });
48
+ (0, external_vitest_namespaceObject.it)("should execute SQL statements to create tables via run", ()=>{
49
+ const result = adapter.run(`
50
+ CREATE TABLE posts (
51
+ id INTEGER PRIMARY KEY,
52
+ content TEXT NOT NULL
53
+ );
54
+ `);
55
+ (0, external_vitest_namespaceObject.expect)(result).toBeDefined();
56
+ });
57
+ (0, external_vitest_namespaceObject.it)("should create multiple tables in one exec call", ()=>{
58
+ adapter.exec(`
59
+ CREATE TABLE accounts (id INTEGER PRIMARY KEY, name TEXT);
60
+ CREATE TABLE transactions (id INTEGER PRIMARY KEY, account_id INTEGER);
61
+ `);
62
+ const stmt = adapter.prepare("INSERT INTO accounts (name) VALUES (?)");
63
+ const result = stmt.run("Alice");
64
+ (0, external_vitest_namespaceObject.expect)(result).toBeDefined();
65
+ });
66
+ });
67
+ (0, external_vitest_namespaceObject.describe)("prepare and run", ()=>{
68
+ (0, external_vitest_namespaceObject.beforeEach)(()=>{
69
+ adapter.exec(`
70
+ CREATE TABLE users (
71
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
72
+ name TEXT NOT NULL,
73
+ email TEXT
74
+ );
75
+ `);
76
+ });
77
+ (0, external_vitest_namespaceObject.it)("should prepare and execute INSERT statement", ()=>{
78
+ const stmt = adapter.prepare("INSERT INTO users (name, email) VALUES (?, ?)");
79
+ const result = stmt.run("John Doe", "john@example.com");
80
+ (0, external_vitest_namespaceObject.expect)(result).toBeDefined();
81
+ (0, external_vitest_namespaceObject.expect)(result.changes).toBe(1);
82
+ });
83
+ (0, external_vitest_namespaceObject.it)("should prepare and execute UPDATE statement", ()=>{
84
+ const insertStmt = adapter.prepare("INSERT INTO users (name) VALUES (?)");
85
+ insertStmt.run("Jane");
86
+ const updateStmt = adapter.prepare("UPDATE users SET name = ? WHERE name = ?");
87
+ const result = updateStmt.run("Jane Doe", "Jane");
88
+ (0, external_vitest_namespaceObject.expect)(result.changes).toBe(1);
89
+ });
90
+ (0, external_vitest_namespaceObject.it)("should prepare and execute DELETE statement", ()=>{
91
+ const insertStmt = adapter.prepare("INSERT INTO users (name) VALUES (?)");
92
+ insertStmt.run("User1");
93
+ insertStmt.run("User2");
94
+ const deleteStmt = adapter.prepare("DELETE FROM users WHERE name = ?");
95
+ const result = deleteStmt.run("User1");
96
+ (0, external_vitest_namespaceObject.expect)(result.changes).toBe(1);
97
+ });
98
+ });
99
+ (0, external_vitest_namespaceObject.describe)("prepare and get", ()=>{
100
+ (0, external_vitest_namespaceObject.beforeEach)(()=>{
101
+ adapter.exec(`
102
+ CREATE TABLE users (
103
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
104
+ name TEXT NOT NULL,
105
+ age INTEGER
106
+ );
107
+ `);
108
+ const stmt = adapter.prepare("INSERT INTO users (name, age) VALUES (?, ?)");
109
+ stmt.run("Alice", 30);
110
+ stmt.run("Bob", 25);
111
+ });
112
+ (0, external_vitest_namespaceObject.it)("should get a single row", ()=>{
113
+ const stmt = adapter.prepare("SELECT * FROM users WHERE name = ?");
114
+ const row = stmt.get("Alice");
115
+ (0, external_vitest_namespaceObject.expect)(row).toBeDefined();
116
+ (0, external_vitest_namespaceObject.expect)(row.name).toBe("Alice");
117
+ (0, external_vitest_namespaceObject.expect)(row.age).toBe(30);
118
+ });
119
+ (0, external_vitest_namespaceObject.it)("should return undefined for non-existent row", ()=>{
120
+ const stmt = adapter.prepare("SELECT * FROM users WHERE name = ?");
121
+ const row = stmt.get("NonExistent");
122
+ (0, external_vitest_namespaceObject.expect)(row).toBeUndefined();
123
+ });
124
+ });
125
+ (0, external_vitest_namespaceObject.describe)("prepare and all", ()=>{
126
+ (0, external_vitest_namespaceObject.beforeEach)(()=>{
127
+ adapter.exec(`
128
+ CREATE TABLE users (
129
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
130
+ name TEXT NOT NULL,
131
+ active INTEGER DEFAULT 1
132
+ );
133
+ `);
134
+ const stmt = adapter.prepare("INSERT INTO users (name, active) VALUES (?, ?)");
135
+ stmt.run("Alice", 1);
136
+ stmt.run("Bob", 1);
137
+ stmt.run("Charlie", 0);
138
+ });
139
+ (0, external_vitest_namespaceObject.it)("should get all matching rows", ()=>{
140
+ const stmt = adapter.prepare("SELECT * FROM users WHERE active = ?");
141
+ const rows = stmt.all(1);
142
+ (0, external_vitest_namespaceObject.expect)(rows).toHaveLength(2);
143
+ (0, external_vitest_namespaceObject.expect)(rows[0].name).toBe("Alice");
144
+ (0, external_vitest_namespaceObject.expect)(rows[1].name).toBe("Bob");
145
+ });
146
+ (0, external_vitest_namespaceObject.it)("should return empty array when no matches", ()=>{
147
+ const stmt = adapter.prepare("SELECT * FROM users WHERE name = ?");
148
+ const rows = stmt.all("Nobody");
149
+ (0, external_vitest_namespaceObject.expect)(rows).toHaveLength(0);
150
+ });
151
+ (0, external_vitest_namespaceObject.it)("should get all rows without parameters", ()=>{
152
+ const stmt = adapter.prepare("SELECT * FROM users");
153
+ const rows = stmt.all();
154
+ (0, external_vitest_namespaceObject.expect)(rows).toHaveLength(3);
155
+ });
156
+ });
157
+ (0, external_vitest_namespaceObject.describe)("transaction", ()=>{
158
+ (0, external_vitest_namespaceObject.beforeEach)(()=>{
159
+ adapter.exec(`
160
+ CREATE TABLE accounts (
161
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
162
+ name TEXT NOT NULL,
163
+ balance INTEGER DEFAULT 0
164
+ );
165
+ `);
166
+ });
167
+ (0, external_vitest_namespaceObject.it)("should execute transaction successfully", ()=>{
168
+ const insertMany = adapter.transaction((names)=>{
169
+ const stmt = adapter.prepare("INSERT INTO accounts (name, balance) VALUES (?, ?)");
170
+ for (const name of names)stmt.run(name, 100);
171
+ });
172
+ insertMany([
173
+ "Alice",
174
+ "Bob",
175
+ "Charlie"
176
+ ]);
177
+ const stmt = adapter.prepare("SELECT COUNT(*) as count FROM accounts");
178
+ const result = stmt.get();
179
+ (0, external_vitest_namespaceObject.expect)(result.count).toBe(3);
180
+ });
181
+ (0, external_vitest_namespaceObject.it)("should rollback transaction on error", ()=>{
182
+ const failedTransaction = adapter.transaction(()=>{
183
+ const stmt = adapter.prepare("INSERT INTO accounts (name, balance) VALUES (?, ?)");
184
+ stmt.run("Alice", 100);
185
+ throw new Error("Transaction failed");
186
+ });
187
+ (0, external_vitest_namespaceObject.expect)(()=>failedTransaction()).toThrow("Transaction failed");
188
+ const stmt = adapter.prepare("SELECT COUNT(*) as count FROM accounts");
189
+ const result = stmt.get();
190
+ (0, external_vitest_namespaceObject.expect)(result.count).toBe(0);
191
+ });
192
+ });
193
+ (0, external_vitest_namespaceObject.describe)("pragma", ()=>{
194
+ (0, external_vitest_namespaceObject.it)("should execute pragma statements", ()=>{
195
+ const result = adapter.pragma("journal_mode", true);
196
+ (0, external_vitest_namespaceObject.expect)(result).toBeDefined();
197
+ });
198
+ (0, external_vitest_namespaceObject.it)("should return pragma result without simplify", ()=>{
199
+ const result = adapter.pragma("journal_mode", false);
200
+ (0, external_vitest_namespaceObject.expect)(result).toBeDefined();
201
+ (0, external_vitest_namespaceObject.expect)(typeof result).toBe("object");
202
+ });
203
+ });
204
+ (0, external_vitest_namespaceObject.describe)("close", ()=>{
205
+ (0, external_vitest_namespaceObject.it)("should close database connection", ()=>{
206
+ const tempDb = new BunSqliteAdapter(":memory:");
207
+ (0, external_vitest_namespaceObject.expect)(()=>tempDb.close()).not.toThrow();
208
+ });
209
+ });
210
+ (0, external_vitest_namespaceObject.describe)("inTransaction", ()=>{
211
+ (0, external_vitest_namespaceObject.it)("should return false by default", ()=>{
212
+ (0, external_vitest_namespaceObject.expect)(adapter.inTransaction).toBe(false);
213
+ });
214
+ });
215
+ (0, external_vitest_namespaceObject.describe)("SqliteSaver compatibility", ()=>{
216
+ (0, external_vitest_namespaceObject.it)("should be compatible with LangGraph checkpoint operations", ()=>{
217
+ adapter.exec(`
218
+ CREATE TABLE checkpoints (
219
+ thread_id TEXT NOT NULL,
220
+ checkpoint_ns TEXT NOT NULL DEFAULT '',
221
+ checkpoint_id TEXT NOT NULL,
222
+ parent_checkpoint_id TEXT,
223
+ type TEXT,
224
+ checkpoint BLOB NOT NULL,
225
+ metadata BLOB NOT NULL,
226
+ PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id)
227
+ );
228
+
229
+ CREATE TABLE checkpoint_writes (
230
+ thread_id TEXT NOT NULL,
231
+ checkpoint_ns TEXT NOT NULL DEFAULT '',
232
+ checkpoint_id TEXT NOT NULL,
233
+ task_id TEXT NOT NULL,
234
+ idx INTEGER NOT NULL,
235
+ channel TEXT NOT NULL,
236
+ type TEXT,
237
+ value BLOB,
238
+ PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id, task_id, idx)
239
+ );
240
+ `);
241
+ const insertStmt = adapter.prepare(`
242
+ INSERT INTO checkpoints (thread_id, checkpoint_id, checkpoint, metadata)
243
+ VALUES (?, ?, ?, ?)
244
+ `);
245
+ const result = insertStmt.run("thread-1", "checkpoint-1", JSON.stringify({
246
+ data: "test"
247
+ }), JSON.stringify({
248
+ version: 1
249
+ }));
250
+ (0, external_vitest_namespaceObject.expect)(result.changes).toBe(1);
251
+ const selectStmt = adapter.prepare("SELECT * FROM checkpoints WHERE thread_id = ?");
252
+ const row = selectStmt.get("thread-1");
253
+ (0, external_vitest_namespaceObject.expect)(row).toBeDefined();
254
+ (0, external_vitest_namespaceObject.expect)(row.thread_id).toBe("thread-1");
255
+ (0, external_vitest_namespaceObject.expect)(row.checkpoint_id).toBe("checkpoint-1");
256
+ const deleteStmt = adapter.prepare("DELETE FROM checkpoints WHERE thread_id = ?");
257
+ const deleteResult = deleteStmt.run("thread-1");
258
+ (0, external_vitest_namespaceObject.expect)(deleteResult.changes).toBe(1);
259
+ });
260
+ });
261
+ });
262
+ for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
263
+ Object.defineProperty(exports, '__esModule', {
264
+ value: true
265
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,259 @@
1
+ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
2
+ import { unlink } from "node:fs/promises";
3
+ const isBun = void 0 !== globalThis.Bun;
4
+ const describeIfBun = isBun ? describe : describe.skip;
5
+ describeIfBun("BunSqliteAdapter", ()=>{
6
+ const testDbPath = "./test-adapter.db";
7
+ let BunSqliteAdapter;
8
+ let Database;
9
+ let adapter;
10
+ beforeAll(async ()=>{
11
+ const module = await import("../cli/core/database/bunSqliteAdapter.js");
12
+ BunSqliteAdapter = module.BunSqliteAdapter;
13
+ const sqliteModule = await import("bun:sqlite");
14
+ Database = sqliteModule.Database;
15
+ });
16
+ beforeEach(()=>{
17
+ adapter = new BunSqliteAdapter(testDbPath);
18
+ });
19
+ afterEach(async ()=>{
20
+ try {
21
+ adapter.close();
22
+ await unlink(testDbPath);
23
+ } catch {}
24
+ });
25
+ describe("constructor", ()=>{
26
+ it("should create adapter from file path", ()=>{
27
+ expect(adapter).toBeDefined();
28
+ });
29
+ it("should create adapter from existing Database instance", ()=>{
30
+ const db = new Database(":memory:");
31
+ const memAdapter = new BunSqliteAdapter(db);
32
+ expect(memAdapter).toBeDefined();
33
+ memAdapter.close();
34
+ });
35
+ });
36
+ describe("exec and run", ()=>{
37
+ it("should execute SQL statements to create tables via exec", ()=>{
38
+ const result = adapter.exec(`
39
+ CREATE TABLE users (
40
+ id INTEGER PRIMARY KEY,
41
+ name TEXT NOT NULL
42
+ );
43
+ `);
44
+ expect(result).toBeDefined();
45
+ });
46
+ it("should execute SQL statements to create tables via run", ()=>{
47
+ const result = adapter.run(`
48
+ CREATE TABLE posts (
49
+ id INTEGER PRIMARY KEY,
50
+ content TEXT NOT NULL
51
+ );
52
+ `);
53
+ expect(result).toBeDefined();
54
+ });
55
+ it("should create multiple tables in one exec call", ()=>{
56
+ adapter.exec(`
57
+ CREATE TABLE accounts (id INTEGER PRIMARY KEY, name TEXT);
58
+ CREATE TABLE transactions (id INTEGER PRIMARY KEY, account_id INTEGER);
59
+ `);
60
+ const stmt = adapter.prepare("INSERT INTO accounts (name) VALUES (?)");
61
+ const result = stmt.run("Alice");
62
+ expect(result).toBeDefined();
63
+ });
64
+ });
65
+ describe("prepare and run", ()=>{
66
+ beforeEach(()=>{
67
+ adapter.exec(`
68
+ CREATE TABLE users (
69
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
70
+ name TEXT NOT NULL,
71
+ email TEXT
72
+ );
73
+ `);
74
+ });
75
+ it("should prepare and execute INSERT statement", ()=>{
76
+ const stmt = adapter.prepare("INSERT INTO users (name, email) VALUES (?, ?)");
77
+ const result = stmt.run("John Doe", "john@example.com");
78
+ expect(result).toBeDefined();
79
+ expect(result.changes).toBe(1);
80
+ });
81
+ it("should prepare and execute UPDATE statement", ()=>{
82
+ const insertStmt = adapter.prepare("INSERT INTO users (name) VALUES (?)");
83
+ insertStmt.run("Jane");
84
+ const updateStmt = adapter.prepare("UPDATE users SET name = ? WHERE name = ?");
85
+ const result = updateStmt.run("Jane Doe", "Jane");
86
+ expect(result.changes).toBe(1);
87
+ });
88
+ it("should prepare and execute DELETE statement", ()=>{
89
+ const insertStmt = adapter.prepare("INSERT INTO users (name) VALUES (?)");
90
+ insertStmt.run("User1");
91
+ insertStmt.run("User2");
92
+ const deleteStmt = adapter.prepare("DELETE FROM users WHERE name = ?");
93
+ const result = deleteStmt.run("User1");
94
+ expect(result.changes).toBe(1);
95
+ });
96
+ });
97
+ describe("prepare and get", ()=>{
98
+ beforeEach(()=>{
99
+ adapter.exec(`
100
+ CREATE TABLE users (
101
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
102
+ name TEXT NOT NULL,
103
+ age INTEGER
104
+ );
105
+ `);
106
+ const stmt = adapter.prepare("INSERT INTO users (name, age) VALUES (?, ?)");
107
+ stmt.run("Alice", 30);
108
+ stmt.run("Bob", 25);
109
+ });
110
+ it("should get a single row", ()=>{
111
+ const stmt = adapter.prepare("SELECT * FROM users WHERE name = ?");
112
+ const row = stmt.get("Alice");
113
+ expect(row).toBeDefined();
114
+ expect(row.name).toBe("Alice");
115
+ expect(row.age).toBe(30);
116
+ });
117
+ it("should return undefined for non-existent row", ()=>{
118
+ const stmt = adapter.prepare("SELECT * FROM users WHERE name = ?");
119
+ const row = stmt.get("NonExistent");
120
+ expect(row).toBeUndefined();
121
+ });
122
+ });
123
+ describe("prepare and all", ()=>{
124
+ beforeEach(()=>{
125
+ adapter.exec(`
126
+ CREATE TABLE users (
127
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
128
+ name TEXT NOT NULL,
129
+ active INTEGER DEFAULT 1
130
+ );
131
+ `);
132
+ const stmt = adapter.prepare("INSERT INTO users (name, active) VALUES (?, ?)");
133
+ stmt.run("Alice", 1);
134
+ stmt.run("Bob", 1);
135
+ stmt.run("Charlie", 0);
136
+ });
137
+ it("should get all matching rows", ()=>{
138
+ const stmt = adapter.prepare("SELECT * FROM users WHERE active = ?");
139
+ const rows = stmt.all(1);
140
+ expect(rows).toHaveLength(2);
141
+ expect(rows[0].name).toBe("Alice");
142
+ expect(rows[1].name).toBe("Bob");
143
+ });
144
+ it("should return empty array when no matches", ()=>{
145
+ const stmt = adapter.prepare("SELECT * FROM users WHERE name = ?");
146
+ const rows = stmt.all("Nobody");
147
+ expect(rows).toHaveLength(0);
148
+ });
149
+ it("should get all rows without parameters", ()=>{
150
+ const stmt = adapter.prepare("SELECT * FROM users");
151
+ const rows = stmt.all();
152
+ expect(rows).toHaveLength(3);
153
+ });
154
+ });
155
+ describe("transaction", ()=>{
156
+ beforeEach(()=>{
157
+ adapter.exec(`
158
+ CREATE TABLE accounts (
159
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
160
+ name TEXT NOT NULL,
161
+ balance INTEGER DEFAULT 0
162
+ );
163
+ `);
164
+ });
165
+ it("should execute transaction successfully", ()=>{
166
+ const insertMany = adapter.transaction((names)=>{
167
+ const stmt = adapter.prepare("INSERT INTO accounts (name, balance) VALUES (?, ?)");
168
+ for (const name of names)stmt.run(name, 100);
169
+ });
170
+ insertMany([
171
+ "Alice",
172
+ "Bob",
173
+ "Charlie"
174
+ ]);
175
+ const stmt = adapter.prepare("SELECT COUNT(*) as count FROM accounts");
176
+ const result = stmt.get();
177
+ expect(result.count).toBe(3);
178
+ });
179
+ it("should rollback transaction on error", ()=>{
180
+ const failedTransaction = adapter.transaction(()=>{
181
+ const stmt = adapter.prepare("INSERT INTO accounts (name, balance) VALUES (?, ?)");
182
+ stmt.run("Alice", 100);
183
+ throw new Error("Transaction failed");
184
+ });
185
+ expect(()=>failedTransaction()).toThrow("Transaction failed");
186
+ const stmt = adapter.prepare("SELECT COUNT(*) as count FROM accounts");
187
+ const result = stmt.get();
188
+ expect(result.count).toBe(0);
189
+ });
190
+ });
191
+ describe("pragma", ()=>{
192
+ it("should execute pragma statements", ()=>{
193
+ const result = adapter.pragma("journal_mode", true);
194
+ expect(result).toBeDefined();
195
+ });
196
+ it("should return pragma result without simplify", ()=>{
197
+ const result = adapter.pragma("journal_mode", false);
198
+ expect(result).toBeDefined();
199
+ expect(typeof result).toBe("object");
200
+ });
201
+ });
202
+ describe("close", ()=>{
203
+ it("should close database connection", ()=>{
204
+ const tempDb = new BunSqliteAdapter(":memory:");
205
+ expect(()=>tempDb.close()).not.toThrow();
206
+ });
207
+ });
208
+ describe("inTransaction", ()=>{
209
+ it("should return false by default", ()=>{
210
+ expect(adapter.inTransaction).toBe(false);
211
+ });
212
+ });
213
+ describe("SqliteSaver compatibility", ()=>{
214
+ it("should be compatible with LangGraph checkpoint operations", ()=>{
215
+ adapter.exec(`
216
+ CREATE TABLE checkpoints (
217
+ thread_id TEXT NOT NULL,
218
+ checkpoint_ns TEXT NOT NULL DEFAULT '',
219
+ checkpoint_id TEXT NOT NULL,
220
+ parent_checkpoint_id TEXT,
221
+ type TEXT,
222
+ checkpoint BLOB NOT NULL,
223
+ metadata BLOB NOT NULL,
224
+ PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id)
225
+ );
226
+
227
+ CREATE TABLE checkpoint_writes (
228
+ thread_id TEXT NOT NULL,
229
+ checkpoint_ns TEXT NOT NULL DEFAULT '',
230
+ checkpoint_id TEXT NOT NULL,
231
+ task_id TEXT NOT NULL,
232
+ idx INTEGER NOT NULL,
233
+ channel TEXT NOT NULL,
234
+ type TEXT,
235
+ value BLOB,
236
+ PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id, task_id, idx)
237
+ );
238
+ `);
239
+ const insertStmt = adapter.prepare(`
240
+ INSERT INTO checkpoints (thread_id, checkpoint_id, checkpoint, metadata)
241
+ VALUES (?, ?, ?, ?)
242
+ `);
243
+ const result = insertStmt.run("thread-1", "checkpoint-1", JSON.stringify({
244
+ data: "test"
245
+ }), JSON.stringify({
246
+ version: 1
247
+ }));
248
+ expect(result.changes).toBe(1);
249
+ const selectStmt = adapter.prepare("SELECT * FROM checkpoints WHERE thread_id = ?");
250
+ const row = selectStmt.get("thread-1");
251
+ expect(row).toBeDefined();
252
+ expect(row.thread_id).toBe("thread-1");
253
+ expect(row.checkpoint_id).toBe("checkpoint-1");
254
+ const deleteStmt = adapter.prepare("DELETE FROM checkpoints WHERE thread_id = ?");
255
+ const deleteResult = deleteStmt.run("thread-1");
256
+ expect(deleteResult.changes).toBe(1);
257
+ });
258
+ });
259
+ });
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __webpack_exports__ = {};
3
+ const external_vitest_namespaceObject = require("vitest");
4
+ const candleRange_cjs_namespaceObject = require("../tools/finance/candleRange.cjs");
5
+ const secondsPerDay = 86400;
6
+ const fixedNow = new Date("2026-01-01T00:00:00Z");
7
+ const fixedEnd = Math.floor(fixedNow.getTime() / 1000);
8
+ (0, external_vitest_namespaceObject.describe)("candle range caps", ()=>{
9
+ (0, external_vitest_namespaceObject.it)("defaults intraday lookback to the cap", ()=>{
10
+ const range = (0, candleRange_cjs_namespaceObject.resolveCandleRange)({
11
+ resolution: "60",
12
+ now: fixedNow
13
+ });
14
+ (0, external_vitest_namespaceObject.expect)(range.maxLookbackDays).toBe(candleRange_cjs_namespaceObject.DEFAULT_CANDLE_MAX_DAYS_INTRADAY);
15
+ (0, external_vitest_namespaceObject.expect)(range.from).toBe(fixedEnd - candleRange_cjs_namespaceObject.DEFAULT_CANDLE_MAX_DAYS_INTRADAY * secondsPerDay);
16
+ (0, external_vitest_namespaceObject.expect)(range.capped).toBe(false);
17
+ });
18
+ (0, external_vitest_namespaceObject.it)("defaults daily lookback to the cap", ()=>{
19
+ const range = (0, candleRange_cjs_namespaceObject.resolveCandleRange)({
20
+ resolution: "D",
21
+ now: fixedNow
22
+ });
23
+ (0, external_vitest_namespaceObject.expect)(range.maxLookbackDays).toBe(candleRange_cjs_namespaceObject.DEFAULT_CANDLE_MAX_DAYS_DAILY);
24
+ (0, external_vitest_namespaceObject.expect)(range.from).toBe(fixedEnd - candleRange_cjs_namespaceObject.DEFAULT_CANDLE_MAX_DAYS_DAILY * secondsPerDay);
25
+ });
26
+ (0, external_vitest_namespaceObject.it)("clamps intraday ranges that exceed the cap", ()=>{
27
+ const range = (0, candleRange_cjs_namespaceObject.resolveCandleRange)({
28
+ resolution: "15",
29
+ now: fixedNow,
30
+ from: fixedEnd - (candleRange_cjs_namespaceObject.DEFAULT_CANDLE_MAX_DAYS_INTRADAY + 10) * secondsPerDay
31
+ });
32
+ (0, external_vitest_namespaceObject.expect)(range.from).toBe(fixedEnd - candleRange_cjs_namespaceObject.DEFAULT_CANDLE_MAX_DAYS_INTRADAY * secondsPerDay);
33
+ (0, external_vitest_namespaceObject.expect)(range.capped).toBe(true);
34
+ });
35
+ (0, external_vitest_namespaceObject.it)("respects lookback days within the cap", ()=>{
36
+ const range = (0, candleRange_cjs_namespaceObject.resolveCandleRange)({
37
+ resolution: "1",
38
+ now: fixedNow,
39
+ lookbackDays: 30
40
+ });
41
+ (0, external_vitest_namespaceObject.expect)(range.from).toBe(fixedEnd - 30 * secondsPerDay);
42
+ (0, external_vitest_namespaceObject.expect)(range.capped).toBe(false);
43
+ });
44
+ });
45
+ for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
46
+ Object.defineProperty(exports, '__esModule', {
47
+ value: true
48
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,42 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { DEFAULT_CANDLE_MAX_DAYS_DAILY, DEFAULT_CANDLE_MAX_DAYS_INTRADAY, resolveCandleRange } from "../tools/finance/candleRange.js";
3
+ const secondsPerDay = 86400;
4
+ const fixedNow = new Date("2026-01-01T00:00:00Z");
5
+ const fixedEnd = Math.floor(fixedNow.getTime() / 1000);
6
+ describe("candle range caps", ()=>{
7
+ it("defaults intraday lookback to the cap", ()=>{
8
+ const range = resolveCandleRange({
9
+ resolution: "60",
10
+ now: fixedNow
11
+ });
12
+ expect(range.maxLookbackDays).toBe(DEFAULT_CANDLE_MAX_DAYS_INTRADAY);
13
+ expect(range.from).toBe(fixedEnd - DEFAULT_CANDLE_MAX_DAYS_INTRADAY * secondsPerDay);
14
+ expect(range.capped).toBe(false);
15
+ });
16
+ it("defaults daily lookback to the cap", ()=>{
17
+ const range = resolveCandleRange({
18
+ resolution: "D",
19
+ now: fixedNow
20
+ });
21
+ expect(range.maxLookbackDays).toBe(DEFAULT_CANDLE_MAX_DAYS_DAILY);
22
+ expect(range.from).toBe(fixedEnd - DEFAULT_CANDLE_MAX_DAYS_DAILY * secondsPerDay);
23
+ });
24
+ it("clamps intraday ranges that exceed the cap", ()=>{
25
+ const range = resolveCandleRange({
26
+ resolution: "15",
27
+ now: fixedNow,
28
+ from: fixedEnd - (DEFAULT_CANDLE_MAX_DAYS_INTRADAY + 10) * secondsPerDay
29
+ });
30
+ expect(range.from).toBe(fixedEnd - DEFAULT_CANDLE_MAX_DAYS_INTRADAY * secondsPerDay);
31
+ expect(range.capped).toBe(true);
32
+ });
33
+ it("respects lookback days within the cap", ()=>{
34
+ const range = resolveCandleRange({
35
+ resolution: "1",
36
+ now: fixedNow,
37
+ lookbackDays: 30
38
+ });
39
+ expect(range.from).toBe(fixedEnd - 30 * secondsPerDay);
40
+ expect(range.capped).toBe(false);
41
+ });
42
+ });