opencandle 0.3.0 → 0.4.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 (283) hide show
  1. package/assets/logo.svg +187 -0
  2. package/dist/cli.d.ts +1 -1
  3. package/dist/cli.js +38 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config.d.ts +9 -0
  6. package/dist/config.js +13 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/infra/browser.d.ts +10 -0
  9. package/dist/infra/browser.js +1 -0
  10. package/dist/infra/browser.js.map +1 -1
  11. package/dist/infra/native-dependencies.d.ts +1 -0
  12. package/dist/infra/native-dependencies.js +10 -0
  13. package/dist/infra/native-dependencies.js.map +1 -0
  14. package/dist/infra/node-version.d.ts +2 -0
  15. package/dist/infra/node-version.js +23 -0
  16. package/dist/infra/node-version.js.map +1 -0
  17. package/dist/memory/index.d.ts +2 -0
  18. package/dist/memory/index.js +1 -0
  19. package/dist/memory/index.js.map +1 -1
  20. package/dist/memory/sqlite.js +42 -4
  21. package/dist/memory/sqlite.js.map +1 -1
  22. package/dist/memory/storage.d.ts +6 -0
  23. package/dist/memory/storage.js +3 -3
  24. package/dist/memory/storage.js.map +1 -1
  25. package/dist/memory/tool-defaults.d.ts +8 -0
  26. package/dist/memory/tool-defaults.js +59 -0
  27. package/dist/memory/tool-defaults.js.map +1 -0
  28. package/dist/onboarding/connect.d.ts +13 -1
  29. package/dist/onboarding/connect.js +21 -10
  30. package/dist/onboarding/connect.js.map +1 -1
  31. package/dist/onboarding/prompt-user.d.ts +1 -1
  32. package/dist/onboarding/providers.d.ts +7 -0
  33. package/dist/onboarding/providers.js +6 -3
  34. package/dist/onboarding/providers.js.map +1 -1
  35. package/dist/onboarding/tool-helpers.d.ts +1 -1
  36. package/dist/pi/opencandle-extension.d.ts +7 -1
  37. package/dist/pi/opencandle-extension.js +186 -10
  38. package/dist/pi/opencandle-extension.js.map +1 -1
  39. package/dist/pi/session-storage.d.ts +2 -0
  40. package/dist/pi/session-storage.js +5 -0
  41. package/dist/pi/session-storage.js.map +1 -0
  42. package/dist/pi/session.d.ts +4 -1
  43. package/dist/pi/session.js +25 -3
  44. package/dist/pi/session.js.map +1 -1
  45. package/dist/pi/setup.d.ts +1 -1
  46. package/dist/pi/setup.js +1 -1
  47. package/dist/pi/setup.js.map +1 -1
  48. package/dist/pi/tool-adapter.d.ts +2 -2
  49. package/dist/pi/tool-adapter.js +14 -1
  50. package/dist/pi/tool-adapter.js.map +1 -1
  51. package/dist/prompts/context-builder.d.ts +22 -0
  52. package/dist/prompts/context-builder.js +45 -10
  53. package/dist/prompts/context-builder.js.map +1 -1
  54. package/dist/prompts/disclaimer.d.ts +6 -0
  55. package/dist/prompts/disclaimer.js +9 -0
  56. package/dist/prompts/disclaimer.js.map +1 -0
  57. package/dist/prompts/workflow-prompts.d.ts +8 -0
  58. package/dist/prompts/workflow-prompts.js +39 -5
  59. package/dist/prompts/workflow-prompts.js.map +1 -1
  60. package/dist/providers/yahoo-finance.js +70 -33
  61. package/dist/providers/yahoo-finance.js.map +1 -1
  62. package/dist/routing/defaults.js +1 -1
  63. package/dist/routing/defaults.js.map +1 -1
  64. package/dist/routing/index.d.ts +4 -0
  65. package/dist/routing/index.js +3 -0
  66. package/dist/routing/index.js.map +1 -1
  67. package/dist/routing/router-llm-client.d.ts +11 -0
  68. package/dist/routing/router-llm-client.js +42 -0
  69. package/dist/routing/router-llm-client.js.map +1 -0
  70. package/dist/routing/router-prompt.d.ts +2 -0
  71. package/dist/routing/router-prompt.js +138 -0
  72. package/dist/routing/router-prompt.js.map +1 -0
  73. package/dist/routing/router-types.d.ts +62 -0
  74. package/dist/routing/router-types.js +2 -0
  75. package/dist/routing/router-types.js.map +1 -0
  76. package/dist/routing/router.d.ts +10 -0
  77. package/dist/routing/router.js +194 -0
  78. package/dist/routing/router.js.map +1 -0
  79. package/dist/runtime/session-coordinator.d.ts +63 -3
  80. package/dist/runtime/session-coordinator.js +155 -4
  81. package/dist/runtime/session-coordinator.js.map +1 -1
  82. package/dist/runtime/tool-defaults-wrapper.d.ts +3 -0
  83. package/dist/runtime/tool-defaults-wrapper.js +25 -0
  84. package/dist/runtime/tool-defaults-wrapper.js.map +1 -0
  85. package/dist/sentiment/store.js +5 -0
  86. package/dist/sentiment/store.js.map +1 -1
  87. package/dist/system-prompt.js +20 -12
  88. package/dist/system-prompt.js.map +1 -1
  89. package/dist/tool-kit.d.ts +4 -4
  90. package/dist/tools/fundamentals/company-overview.d.ts +1 -1
  91. package/dist/tools/fundamentals/comps.d.ts +1 -1
  92. package/dist/tools/fundamentals/dcf.d.ts +1 -1
  93. package/dist/tools/fundamentals/earnings.d.ts +1 -1
  94. package/dist/tools/fundamentals/financials.d.ts +1 -1
  95. package/dist/tools/fundamentals/sec-filings.d.ts +1 -1
  96. package/dist/tools/index.d.ts +28 -1
  97. package/dist/tools/index.js +27 -0
  98. package/dist/tools/index.js.map +1 -1
  99. package/dist/tools/interaction/ask-user.d.ts +1 -1
  100. package/dist/tools/interaction/twitter-login.d.ts +1 -1
  101. package/dist/tools/macro/fear-greed.d.ts +1 -1
  102. package/dist/tools/macro/fred-data.d.ts +1 -1
  103. package/dist/tools/market/crypto-history.d.ts +1 -1
  104. package/dist/tools/market/crypto-price.d.ts +1 -1
  105. package/dist/tools/market/search-ticker.d.ts +1 -1
  106. package/dist/tools/market/stock-history.d.ts +1 -1
  107. package/dist/tools/market/stock-quote.d.ts +1 -1
  108. package/dist/tools/options/option-chain.d.ts +1 -1
  109. package/dist/tools/options/option-chain.js +4 -1
  110. package/dist/tools/options/option-chain.js.map +1 -1
  111. package/dist/tools/portfolio/correlation.d.ts +1 -1
  112. package/dist/tools/portfolio/predictions.d.ts +1 -1
  113. package/dist/tools/portfolio/risk-analysis.d.ts +1 -1
  114. package/dist/tools/portfolio/tracker.d.ts +1 -1
  115. package/dist/tools/portfolio/watchlist.d.ts +1 -1
  116. package/dist/tools/sentiment/reddit-sentiment.d.ts +1 -1
  117. package/dist/tools/sentiment/sentiment-summary.d.ts +1 -1
  118. package/dist/tools/sentiment/sentiment-trend.d.ts +1 -1
  119. package/dist/tools/sentiment/twitter-sentiment.d.ts +1 -1
  120. package/dist/tools/sentiment/web-search.d.ts +1 -1
  121. package/dist/tools/sentiment/web-sentiment.d.ts +1 -1
  122. package/dist/tools/technical/backtest.d.ts +1 -1
  123. package/dist/tools/technical/indicators.d.ts +1 -1
  124. package/dist/tools/technical/indicators.js +7 -1
  125. package/dist/tools/technical/indicators.js.map +1 -1
  126. package/dist/workflows/options-screener.js +7 -2
  127. package/dist/workflows/options-screener.js.map +1 -1
  128. package/dist/workflows/portfolio-builder.js +3 -3
  129. package/dist/workflows/portfolio-builder.js.map +1 -1
  130. package/gui/server/background-quotes.ts +31 -0
  131. package/gui/server/chat-event-adapter.ts +142 -0
  132. package/gui/server/invoke-tool.ts +89 -0
  133. package/gui/server/live-chat-event-adapter.ts +181 -0
  134. package/gui/server/model-setup.ts +100 -0
  135. package/gui/server/package.json +5 -0
  136. package/gui/server/projector.ts +212 -0
  137. package/gui/server/server.ts +592 -0
  138. package/gui/server/session-actions.ts +31 -0
  139. package/gui/server/tool-metadata.ts +88 -0
  140. package/gui/server/websocket.ts +128 -0
  141. package/gui/server/writer-lock.ts +118 -0
  142. package/gui/shared/chat-events.ts +118 -0
  143. package/gui/shared/event-reducer.ts +186 -0
  144. package/gui/web/dist/assets/CatalogOverlay-D1ImSJTe.js +1 -0
  145. package/gui/web/dist/assets/index-DBrWq43L.css +1 -0
  146. package/gui/web/dist/assets/index-RflHaj0y.js +67 -0
  147. package/gui/web/dist/assets/logo-CWpt6Y2a.svg +187 -0
  148. package/gui/web/dist/index.html +17 -0
  149. package/package.json +44 -18
  150. package/src/analysts/contracts.ts +189 -0
  151. package/src/analysts/orchestrator.ts +300 -0
  152. package/src/cli.ts +205 -0
  153. package/src/config.ts +161 -0
  154. package/src/index.ts +5 -0
  155. package/src/infra/browser.ts +111 -0
  156. package/src/infra/cache.ts +103 -0
  157. package/src/infra/http-client.ts +68 -0
  158. package/src/infra/index.ts +18 -0
  159. package/src/infra/native-dependencies.ts +12 -0
  160. package/src/infra/node-version.ts +24 -0
  161. package/src/infra/open-url.ts +28 -0
  162. package/src/infra/opencandle-paths.ts +64 -0
  163. package/src/infra/rate-limiter.ts +64 -0
  164. package/src/memory/index.ts +10 -0
  165. package/src/memory/manager.ts +159 -0
  166. package/src/memory/preference-extractor.ts +106 -0
  167. package/src/memory/retrieval.ts +70 -0
  168. package/src/memory/sqlite.ts +172 -0
  169. package/src/memory/storage.ts +204 -0
  170. package/src/memory/tool-defaults.ts +87 -0
  171. package/src/memory/types.ts +67 -0
  172. package/src/onboarding/connect.ts +184 -0
  173. package/src/onboarding/credential-interceptor.ts +134 -0
  174. package/src/onboarding/degradation-accumulator.ts +79 -0
  175. package/src/onboarding/prompt-user.ts +85 -0
  176. package/src/onboarding/providers.ts +315 -0
  177. package/src/onboarding/state.ts +218 -0
  178. package/src/onboarding/tool-helpers.ts +111 -0
  179. package/src/onboarding/tool-tags.ts +201 -0
  180. package/src/onboarding/validation.ts +158 -0
  181. package/src/pi/opencandle-extension.ts +724 -0
  182. package/src/pi/session-storage.ts +5 -0
  183. package/src/pi/session.ts +81 -0
  184. package/src/pi/setup.ts +371 -0
  185. package/src/pi/tool-adapter.ts +36 -0
  186. package/src/prompts/context-builder.ts +204 -0
  187. package/src/prompts/disclaimer.ts +9 -0
  188. package/src/prompts/sections.ts +46 -0
  189. package/src/prompts/workflow-prompts.ts +279 -0
  190. package/src/providers/alpha-vantage.ts +292 -0
  191. package/src/providers/coingecko.ts +96 -0
  192. package/src/providers/exa-search.ts +373 -0
  193. package/src/providers/fear-greed.ts +45 -0
  194. package/src/providers/finnhub.ts +124 -0
  195. package/src/providers/fred.ts +83 -0
  196. package/src/providers/index.ts +9 -0
  197. package/src/providers/provider-credential-error.ts +23 -0
  198. package/src/providers/reddit.ts +151 -0
  199. package/src/providers/sec-edgar.ts +96 -0
  200. package/src/providers/twitter.ts +173 -0
  201. package/src/providers/web-search.ts +293 -0
  202. package/src/providers/with-fallback.ts +41 -0
  203. package/src/providers/wrap-provider.ts +64 -0
  204. package/src/providers/yahoo-finance.ts +367 -0
  205. package/src/routing/classify-intent.ts +194 -0
  206. package/src/routing/defaults.ts +29 -0
  207. package/src/routing/entity-extractor.ts +140 -0
  208. package/src/routing/index.ts +26 -0
  209. package/src/routing/router-llm-client.ts +51 -0
  210. package/src/routing/router-prompt.ts +159 -0
  211. package/src/routing/router-types.ts +66 -0
  212. package/src/routing/router.ts +213 -0
  213. package/src/routing/slot-resolver.ts +152 -0
  214. package/src/routing/types.ts +63 -0
  215. package/src/runtime/evidence.ts +77 -0
  216. package/src/runtime/index.ts +55 -0
  217. package/src/runtime/prompt-step.ts +75 -0
  218. package/src/runtime/provider-ids.ts +15 -0
  219. package/src/runtime/provider-tracker.ts +40 -0
  220. package/src/runtime/run-context.ts +22 -0
  221. package/src/runtime/session-coordinator.ts +406 -0
  222. package/src/runtime/tool-defaults-wrapper.ts +35 -0
  223. package/src/runtime/validation.ts +214 -0
  224. package/src/runtime/workflow-events.ts +75 -0
  225. package/src/runtime/workflow-runner.ts +188 -0
  226. package/src/runtime/workflow-types.ts +102 -0
  227. package/src/sentiment/adapters/finnhub.ts +44 -0
  228. package/src/sentiment/adapters/reddit.ts +65 -0
  229. package/src/sentiment/adapters/twitter.ts +36 -0
  230. package/src/sentiment/adapters/web.ts +44 -0
  231. package/src/sentiment/index.ts +58 -0
  232. package/src/sentiment/keywords.ts +9 -0
  233. package/src/sentiment/pipeline.ts +68 -0
  234. package/src/sentiment/scorer.ts +78 -0
  235. package/src/sentiment/store.ts +260 -0
  236. package/src/sentiment/trends.ts +90 -0
  237. package/src/sentiment/types.ts +108 -0
  238. package/src/system-prompt.ts +115 -0
  239. package/src/tool-kit.ts +68 -0
  240. package/src/tools/AGENTS.md +36 -0
  241. package/src/tools/fundamentals/company-overview.ts +54 -0
  242. package/src/tools/fundamentals/comps.ts +156 -0
  243. package/src/tools/fundamentals/dcf.ts +267 -0
  244. package/src/tools/fundamentals/earnings.ts +47 -0
  245. package/src/tools/fundamentals/financials.ts +54 -0
  246. package/src/tools/fundamentals/sec-filings.ts +61 -0
  247. package/src/tools/index.ts +88 -0
  248. package/src/tools/interaction/ask-user.ts +81 -0
  249. package/src/tools/interaction/twitter-login.ts +93 -0
  250. package/src/tools/macro/fear-greed.ts +41 -0
  251. package/src/tools/macro/fred-data.ts +54 -0
  252. package/src/tools/market/crypto-history.ts +51 -0
  253. package/src/tools/market/crypto-price.ts +53 -0
  254. package/src/tools/market/search-ticker.ts +53 -0
  255. package/src/tools/market/stock-history.ts +79 -0
  256. package/src/tools/market/stock-quote.ts +64 -0
  257. package/src/tools/options/greeks.ts +82 -0
  258. package/src/tools/options/option-chain.ts +91 -0
  259. package/src/tools/portfolio/correlation.ts +162 -0
  260. package/src/tools/portfolio/predictions.ts +253 -0
  261. package/src/tools/portfolio/risk-analysis.ts +134 -0
  262. package/src/tools/portfolio/tracker.ts +147 -0
  263. package/src/tools/portfolio/watchlist.ts +153 -0
  264. package/src/tools/sentiment/reddit-sentiment.ts +164 -0
  265. package/src/tools/sentiment/sentiment-summary.ts +256 -0
  266. package/src/tools/sentiment/sentiment-trend.ts +58 -0
  267. package/src/tools/sentiment/twitter-sentiment.ts +96 -0
  268. package/src/tools/sentiment/web-search.ts +150 -0
  269. package/src/tools/sentiment/web-sentiment.ts +76 -0
  270. package/src/tools/technical/backtest.ts +246 -0
  271. package/src/tools/technical/indicators.ts +258 -0
  272. package/src/types/fundamentals.ts +46 -0
  273. package/src/types/index.ts +20 -0
  274. package/src/types/macro.ts +27 -0
  275. package/src/types/market.ts +43 -0
  276. package/src/types/options.ts +35 -0
  277. package/src/types/portfolio.ts +41 -0
  278. package/src/types/sentiment.ts +70 -0
  279. package/src/workflows/compare-assets.ts +39 -0
  280. package/src/workflows/index.ts +4 -0
  281. package/src/workflows/options-screener.ts +49 -0
  282. package/src/workflows/portfolio-builder.ts +52 -0
  283. package/src/workflows/types.ts +4 -0
@@ -0,0 +1,187 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:v="https://svgstorm.com"
2
+ viewBox = "0 0 1009 1008"
3
+ width="1009"
4
+ height="1008">
5
+ <g fill="None" fill-opacity="0.0" stroke="#34474E" stroke-opacity="0.00" stroke-width="0.3"><path d="
6
+ M 0.00 1008.00
7
+ L 1009.00 1008.00
8
+ L 1009.00 0.00
9
+ L 0.00 0.00
10
+ L 0.00 1008.00
11
+ M 893.00 7.00
12
+ C 912.65 7.48 933.31 16.27 951.00 28.00
13
+ C 960.90 34.53 969.82 43.54 977.00 53.00
14
+ C 987.75 70.16 998.47 88.32 1000.00 109.00
15
+ C 1004.61 172.94 1000.71 239.89 1002.00 305.00 C 1002.00 437.00 1002.00 569.00 1002.00 701.00 C 1000.71 766.09 1004.61 833.14 1000.00 897.00
16
+ C 997.20 915.93 990.73 934.49 979.00 950.00
17
+ C 971.95 960.06 962.97 968.87 953.00 976.00
18
+ C 936.25 987.24 917.87 994.87 898.00 998.00
19
+ C 848.40 1002.63 795.77 998.69 745.00 1000.00 C 537.83 999.33 329.35 1001.34 123.00 999.00
20
+ C 113.93 999.28 105.34 997.59 97.00 995.00
21
+ C 87.29 992.63 76.80 989.30 69.00 983.00
22
+ C 68.57 982.83 68.00 983.00 68.00 983.00
23
+ C 55.21 976.65 44.68 965.81 35.00 955.00
24
+ C -7.40 902.87 14.27 828.97 9.00 765.00 C 9.00 548.67 9.00 332.33 9.00 116.00 C 11.95 60.04 61.08 10.55 117.00 7.00
25
+ C 374.60 5.33 635.47 5.33 893.00 7.00 Z"/>
26
+ </g>
27
+ <g fill="None" fill-opacity="0.0" stroke="#87A188" stroke-opacity="1.00" stroke-width="0.3"><path d="
28
+ M 117.00 7.00
29
+ C 375.67 7.00 634.33 7.00 893.00 7.00
30
+ C 635.47 5.33 374.60 5.33 117.00 7.00 Z"/>
31
+ </g>
32
+ <g fill="None" fill-opacity="0.0" stroke="#34474E" stroke-opacity="1.00" stroke-width="0.3"><path d="
33
+ M 893.00 7.00
34
+ C 634.33 7.00 375.67 7.00 117.00 7.00
35
+ C 61.08 10.55 11.95 60.04 9.00 116.00 C 9.00 332.33 9.00 548.67 9.00 765.00 C 14.27 828.97 -7.40 902.87 35.00 955.00
36
+ C 45.51 965.18 56.26 975.41 68.00 983.00
37
+ C 68.00 983.00 68.57 982.83 69.00 983.00
38
+ C 77.85 988.23 88.00 991.10 97.00 995.00
39
+ C 105.34 997.59 113.93 999.28 123.00 999.00
40
+ C 381.25 998.34 640.16 1000.33 898.00 998.00
41
+ C 917.87 994.87 936.25 987.24 953.00 976.00
42
+ C 961.89 967.94 970.70 958.59 979.00 950.00
43
+ C 990.73 934.49 997.20 915.93 1000.00 897.00
44
+ C 1001.66 634.92 1001.67 371.08 1000.00 109.00
45
+ C 998.47 88.32 987.75 70.16 977.00 53.00
46
+ C 968.92 44.28 959.99 35.47 951.00 28.00
47
+ C 933.31 16.27 912.65 7.48 893.00 7.00
48
+ M 515.00 304.00
49
+ C 539.00 304.00 563.00 304.00 587.00 304.00 C 615.29 302.32 605.38 337.85 607.00 356.00 C 607.00 452.00 607.00 548.00 607.00 644.00 C 605.19 661.97 615.63 698.38 587.00 696.00 C 563.00 696.00 539.00 696.00 515.00 696.00
50
+ C 515.00 728.00 515.00 760.00 515.00 792.00 C 512.34 804.03 522.39 828.07 505.00 830.00 C 487.59 827.79 497.67 804.11 495.00 792.00 C 495.00 760.00 495.00 728.00 495.00 696.00
51
+ C 471.33 696.00 447.67 696.00 424.00 696.00 C 394.53 699.12 406.18 662.06 404.00 644.00 C 404.00 548.33 404.00 452.67 404.00 357.00 C 406.52 338.80 394.21 302.66 423.00 304.00 C 447.00 304.00 471.00 304.00 495.00 304.00
52
+ C 495.00 272.00 495.00 240.00 495.00 208.00 C 497.32 195.66 488.16 173.46 505.01 170.01 C 521.85 173.62 512.68 195.59 515.00 208.00 C 515.00 240.00 515.00 272.00 515.00 304.00 Z"/>
53
+ </g>
54
+ <g fill="None" fill-opacity="0.0" stroke="#87A188" stroke-opacity="0.91" stroke-width="0.3"><path d="
55
+ M 977.00 53.00
56
+ C 969.82 43.54 960.90 34.53 951.00 28.00
57
+ C 959.99 35.47 968.92 44.28 977.00 53.00 Z"/>
58
+ </g>
59
+ <g fill="None" fill-opacity="0.0" stroke="#87A188" stroke-opacity="1.00" stroke-width="0.3"><path d="
60
+ M 1000.00 897.00
61
+ C 1004.61 833.14 1000.71 766.09 1002.00 701.00 C 1002.00 569.00 1002.00 437.00 1002.00 305.00 C 1000.71 239.89 1004.61 172.94 1000.00 109.00
62
+ C 1001.67 371.08 1001.66 634.92 1000.00 897.00 Z"/>
63
+ </g>
64
+ <g fill="None" fill-opacity="0.0" stroke="#87A188" stroke-opacity="1.00" stroke-width="0.3"><path d="
65
+ M 515.00 304.00
66
+ C 515.00 272.00 515.00 240.00 515.00 208.00 C 512.68 195.59 521.85 173.62 505.01 170.01 C 488.16 173.46 497.32 195.66 495.00 208.00 C 495.00 240.00 495.00 272.00 495.00 304.00
67
+ C 471.00 304.00 447.00 304.00 423.00 304.00 C 394.21 302.66 406.52 338.80 404.00 357.00 C 404.00 452.67 404.00 548.33 404.00 644.00 C 406.18 662.06 394.53 699.12 424.00 696.00 C 447.67 696.00 471.33 696.00 495.00 696.00
68
+ C 495.00 728.00 495.00 760.00 495.00 792.00 C 497.67 804.11 487.59 827.79 505.00 830.00 C 522.39 828.07 512.34 804.03 515.00 792.00 C 515.00 760.00 515.00 728.00 515.00 696.00
69
+ C 539.00 696.00 563.00 696.00 587.00 696.00 C 615.63 698.38 605.19 661.97 607.00 644.00 C 607.00 548.00 607.00 452.00 607.00 356.00 C 605.38 337.85 615.29 302.32 587.00 304.00 C 563.00 304.00 539.00 304.00 515.00 304.00 Z"/>
70
+ </g>
71
+ <g fill="None" fill-opacity="0.0" stroke="#87A188" stroke-opacity="0.78" stroke-width="0.3"><path d="
72
+ M 953.00 976.00
73
+ C 962.97 968.87 971.95 960.06 979.00 950.00
74
+ C 970.70 958.59 961.89 967.94 953.00 976.00 Z"/>
75
+ </g>
76
+ <g fill="None" fill-opacity="0.0" stroke="#87A188" stroke-opacity="0.85" stroke-width="0.3"><path d="
77
+ M 68.00 983.00
78
+ C 56.26 975.41 45.51 965.18 35.00 955.00
79
+ C 44.68 965.81 55.21 976.65 68.00 983.00 Z"/>
80
+ </g>
81
+ <g fill="None" fill-opacity="0.0" stroke="#87A188" stroke-opacity="0.79" stroke-width="0.3"><path d="
82
+ M 97.00 995.00
83
+ C 88.00 991.10 77.85 988.23 69.00 983.00
84
+ C 76.80 989.30 87.29 992.63 97.00 995.00 Z"/>
85
+ </g>
86
+ <g fill="None" fill-opacity="0.0" stroke="#87A188" stroke-opacity="0.53" stroke-width="0.3"><path d="
87
+ M 123.00 999.00
88
+ C 329.35 1001.34 537.83 999.33 745.00 1000.00 C 795.77 998.69 848.40 1002.63 898.00 998.00
89
+ C 640.16 1000.33 381.25 998.34 123.00 999.00 Z"/>
90
+ </g>
91
+ <g fill="#34474E" fill-opacity="0.00" stroke="None">
92
+ <path d="
93
+ M 0.00 1008.00
94
+ L 1009.00 1008.00
95
+ L 1009.00 0.00
96
+ L 0.00 0.00
97
+ L 0.00 1008.00
98
+ M 893.00 7.00
99
+ C 912.65 7.48 933.31 16.27 951.00 28.00
100
+ C 960.90 34.53 969.82 43.54 977.00 53.00
101
+ C 987.75 70.16 998.47 88.32 1000.00 109.00
102
+ C 1004.61 172.94 1000.71 239.89 1002.00 305.00 C 1002.00 437.00 1002.00 569.00 1002.00 701.00 C 1000.71 766.09 1004.61 833.14 1000.00 897.00
103
+ C 997.20 915.93 990.73 934.49 979.00 950.00
104
+ C 971.95 960.06 962.97 968.87 953.00 976.00
105
+ C 936.25 987.24 917.87 994.87 898.00 998.00
106
+ C 848.40 1002.63 795.77 998.69 745.00 1000.00 C 537.83 999.33 329.35 1001.34 123.00 999.00
107
+ C 113.93 999.28 105.34 997.59 97.00 995.00
108
+ C 87.29 992.63 76.80 989.30 69.00 983.00
109
+ C 68.57 982.83 68.00 983.00 68.00 983.00
110
+ C 55.21 976.65 44.68 965.81 35.00 955.00
111
+ C -7.40 902.87 14.27 828.97 9.00 765.00 C 9.00 548.67 9.00 332.33 9.00 116.00 C 11.95 60.04 61.08 10.55 117.00 7.00
112
+ C 374.60 5.33 635.47 5.33 893.00 7.00 Z"/>
113
+ </g>
114
+ <g fill="#87A188" fill-opacity="1.00" stroke="None">
115
+ <path d="
116
+ M 117.00 7.00
117
+ C 375.67 7.00 634.33 7.00 893.00 7.00
118
+ C 635.47 5.33 374.60 5.33 117.00 7.00 Z"/>
119
+ </g>
120
+ <g fill="#34474E" fill-opacity="1.00" stroke="None">
121
+ <path d="
122
+ M 893.00 7.00
123
+ C 634.33 7.00 375.67 7.00 117.00 7.00
124
+ C 61.08 10.55 11.95 60.04 9.00 116.00 C 9.00 332.33 9.00 548.67 9.00 765.00 C 14.27 828.97 -7.40 902.87 35.00 955.00
125
+ C 45.51 965.18 56.26 975.41 68.00 983.00
126
+ C 68.00 983.00 68.57 982.83 69.00 983.00
127
+ C 77.85 988.23 88.00 991.10 97.00 995.00
128
+ C 105.34 997.59 113.93 999.28 123.00 999.00
129
+ C 381.25 998.34 640.16 1000.33 898.00 998.00
130
+ C 917.87 994.87 936.25 987.24 953.00 976.00
131
+ C 961.89 967.94 970.70 958.59 979.00 950.00
132
+ C 990.73 934.49 997.20 915.93 1000.00 897.00
133
+ C 1001.66 634.92 1001.67 371.08 1000.00 109.00
134
+ C 998.47 88.32 987.75 70.16 977.00 53.00
135
+ C 968.92 44.28 959.99 35.47 951.00 28.00
136
+ C 933.31 16.27 912.65 7.48 893.00 7.00
137
+ M 515.00 304.00
138
+ C 539.00 304.00 563.00 304.00 587.00 304.00 C 615.29 302.32 605.38 337.85 607.00 356.00 C 607.00 452.00 607.00 548.00 607.00 644.00 C 605.19 661.97 615.63 698.38 587.00 696.00 C 563.00 696.00 539.00 696.00 515.00 696.00
139
+ C 515.00 728.00 515.00 760.00 515.00 792.00 C 512.34 804.03 522.39 828.07 505.00 830.00 C 487.59 827.79 497.67 804.11 495.00 792.00 C 495.00 760.00 495.00 728.00 495.00 696.00
140
+ C 471.33 696.00 447.67 696.00 424.00 696.00 C 394.53 699.12 406.18 662.06 404.00 644.00 C 404.00 548.33 404.00 452.67 404.00 357.00 C 406.52 338.80 394.21 302.66 423.00 304.00 C 447.00 304.00 471.00 304.00 495.00 304.00
141
+ C 495.00 272.00 495.00 240.00 495.00 208.00 C 497.32 195.66 488.16 173.46 505.01 170.01 C 521.85 173.62 512.68 195.59 515.00 208.00 C 515.00 240.00 515.00 272.00 515.00 304.00 Z"/>
142
+ </g>
143
+ <g fill="#87A188" fill-opacity="0.91" stroke="None">
144
+ <path d="
145
+ M 977.00 53.00
146
+ C 969.82 43.54 960.90 34.53 951.00 28.00
147
+ C 959.99 35.47 968.92 44.28 977.00 53.00 Z"/>
148
+ </g>
149
+ <g fill="#87A188" fill-opacity="1.00" stroke="None">
150
+ <path d="
151
+ M 1000.00 897.00
152
+ C 1004.61 833.14 1000.71 766.09 1002.00 701.00 C 1002.00 569.00 1002.00 437.00 1002.00 305.00 C 1000.71 239.89 1004.61 172.94 1000.00 109.00
153
+ C 1001.67 371.08 1001.66 634.92 1000.00 897.00 Z"/>
154
+ </g>
155
+ <g fill="#87A188" fill-opacity="1.00" stroke="None">
156
+ <path d="
157
+ M 515.00 304.00
158
+ C 515.00 272.00 515.00 240.00 515.00 208.00 C 512.68 195.59 521.85 173.62 505.01 170.01 C 488.16 173.46 497.32 195.66 495.00 208.00 C 495.00 240.00 495.00 272.00 495.00 304.00
159
+ C 471.00 304.00 447.00 304.00 423.00 304.00 C 394.21 302.66 406.52 338.80 404.00 357.00 C 404.00 452.67 404.00 548.33 404.00 644.00 C 406.18 662.06 394.53 699.12 424.00 696.00 C 447.67 696.00 471.33 696.00 495.00 696.00
160
+ C 495.00 728.00 495.00 760.00 495.00 792.00 C 497.67 804.11 487.59 827.79 505.00 830.00 C 522.39 828.07 512.34 804.03 515.00 792.00 C 515.00 760.00 515.00 728.00 515.00 696.00
161
+ C 539.00 696.00 563.00 696.00 587.00 696.00 C 615.63 698.38 605.19 661.97 607.00 644.00 C 607.00 548.00 607.00 452.00 607.00 356.00 C 605.38 337.85 615.29 302.32 587.00 304.00 C 563.00 304.00 539.00 304.00 515.00 304.00 Z"/>
162
+ </g>
163
+ <g fill="#87A188" fill-opacity="0.78" stroke="None">
164
+ <path d="
165
+ M 953.00 976.00
166
+ C 962.97 968.87 971.95 960.06 979.00 950.00
167
+ C 970.70 958.59 961.89 967.94 953.00 976.00 Z"/>
168
+ </g>
169
+ <g fill="#87A188" fill-opacity="0.85" stroke="None">
170
+ <path d="
171
+ M 68.00 983.00
172
+ C 56.26 975.41 45.51 965.18 35.00 955.00
173
+ C 44.68 965.81 55.21 976.65 68.00 983.00 Z"/>
174
+ </g>
175
+ <g fill="#87A188" fill-opacity="0.79" stroke="None">
176
+ <path d="
177
+ M 97.00 995.00
178
+ C 88.00 991.10 77.85 988.23 69.00 983.00
179
+ C 76.80 989.30 87.29 992.63 97.00 995.00 Z"/>
180
+ </g>
181
+ <g fill="#87A188" fill-opacity="0.53" stroke="None">
182
+ <path d="
183
+ M 123.00 999.00
184
+ C 329.35 1001.34 537.83 999.33 745.00 1000.00 C 795.77 998.69 848.40 1002.63 898.00 998.00
185
+ C 640.16 1000.33 381.25 998.34 123.00 999.00 Z"/>
186
+ </g>
187
+ </svg>
package/dist/cli.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ import "./infra/node-version.js";
package/dist/cli.js CHANGED
@@ -1,8 +1,16 @@
1
1
  #!/usr/bin/env node
2
+ import "./infra/node-version.js";
3
+ import { spawn } from "node:child_process";
4
+ import { createRequire } from "node:module";
5
+ import { dirname, resolve } from "node:path";
2
6
  import { parseArgs } from "node:util";
3
- import { AuthStorage, DefaultPackageManager, InteractiveMode, ModelRegistry, SettingsManager, SessionManager, createAgentSessionRuntime, createAgentSessionServices, getAgentDir, initTheme, } from "@mariozechner/pi-coding-agent";
7
+ import { fileURLToPath } from "node:url";
8
+ import { AuthStorage, DefaultPackageManager, InteractiveMode, ModelRegistry, SettingsManager, createAgentSessionRuntime, createAgentSessionServices, getAgentDir, initTheme, } from "@earendil-works/pi-coding-agent";
4
9
  import { createOpenCandleSession } from "./pi/session.js";
10
+ import { continueOpenCandleSession } from "./pi/session-storage.js";
5
11
  import { loadEnv } from "./config.js";
12
+ const require = createRequire(import.meta.url);
13
+ const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
6
14
  async function handlePackageCommand(args, cwd, agentDir) {
7
15
  const [command, ...rest] = args;
8
16
  if (!command ||
@@ -86,10 +94,36 @@ async function handlePackageCommand(args, cwd, agentDir) {
86
94
  }
87
95
  return false;
88
96
  }
97
+ async function handleGuiCommand(args, cwd) {
98
+ if (args[0] !== "gui")
99
+ return false;
100
+ const tsxCli = require.resolve("tsx/cli");
101
+ const serverPath = resolve(packageRoot, "gui/server/server.ts");
102
+ const child = spawn(process.execPath, [tsxCli, serverPath, ...args.slice(1)], {
103
+ cwd,
104
+ env: process.env,
105
+ stdio: "inherit",
106
+ });
107
+ const exitCode = await new Promise((resolveExit) => {
108
+ child.on("close", (code, signal) => {
109
+ if (signal) {
110
+ resolveExit(1);
111
+ }
112
+ else {
113
+ resolveExit(code ?? 0);
114
+ }
115
+ });
116
+ });
117
+ process.exitCode = exitCode;
118
+ return true;
119
+ }
89
120
  async function main() {
90
121
  const { positionals } = parseArgs({ allowPositionals: true, strict: false });
91
122
  const cwd = process.cwd();
92
123
  const agentDir = getAgentDir();
124
+ if (await handleGuiCommand(positionals, cwd)) {
125
+ return;
126
+ }
93
127
  if (await handlePackageCommand(positionals, cwd, agentDir)) {
94
128
  return;
95
129
  }
@@ -100,7 +134,7 @@ async function main() {
100
134
  const modelRegistry = ModelRegistry.create(authStorage);
101
135
  const shouldSuppressFallbackMessage = modelRegistry.getAvailable().length === 0;
102
136
  initTheme(settingsManager.getTheme(), true);
103
- const sessionManager = SessionManager.create(agentDir);
137
+ const sessionManager = continueOpenCandleSession(cwd);
104
138
  const runtime = await createAgentSessionRuntime(async (opts) => {
105
139
  const services = await createAgentSessionServices({
106
140
  cwd: opts.cwd,
@@ -111,10 +145,12 @@ async function main() {
111
145
  });
112
146
  const result = await createOpenCandleSession({
113
147
  cwd: opts.cwd,
148
+ agentDir: opts.agentDir,
114
149
  settingsManager,
115
150
  authStorage,
116
151
  modelRegistry,
117
152
  sessionManager: opts.sessionManager,
153
+ bindExtensions: false,
118
154
  });
119
155
  return {
120
156
  ...result,
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -4,6 +4,7 @@ export interface SentimentConfig {
4
4
  commentsPerPost: number;
5
5
  divergenceThreshold: number;
6
6
  }
7
+ export type RouterMode = "rules" | "llm";
7
8
  export interface Config {
8
9
  alphaVantageApiKey?: string;
9
10
  fredApiKey?: string;
@@ -12,6 +13,12 @@ export interface Config {
12
13
  finnhubApiKey?: string;
13
14
  /** Enable adversarial bull/bear debate in comprehensive analysis. Default: true. */
14
15
  debate?: boolean;
16
+ /**
17
+ * Intent-router rollout flag. `"rules"` (default) runs the legacy regex
18
+ * `classifyIntent` + `extractPreferences` path. `"llm"` runs the LLM router
19
+ * ahead of prompt assembly. Controlled by `OPENCANDLE_ROUTER_MODE`.
20
+ */
21
+ routerMode: RouterMode;
15
22
  sentiment?: SentimentConfig;
16
23
  }
17
24
  export interface OpenCandleFileConfig {
@@ -46,3 +53,5 @@ export declare function loadFileConfig(path?: string): OpenCandleFileConfig;
46
53
  export declare function saveFileConfig(config: OpenCandleFileConfig, path?: string): void;
47
54
  export declare function loadConfig(): Config;
48
55
  export declare function getConfig(): Config;
56
+ /** Test-only: clear the memoized config so the next `getConfig()` re-reads env. */
57
+ export declare function resetConfigCache(): void;
package/dist/config.js CHANGED
@@ -29,6 +29,14 @@ const SENTIMENT_DEFAULTS = {
29
29
  commentsPerPost: 5,
30
30
  divergenceThreshold: 0.4,
31
31
  };
32
+ function resolveRouterMode() {
33
+ const raw = process.env.OPENCANDLE_ROUTER_MODE;
34
+ if (raw === undefined || raw === "")
35
+ return "rules";
36
+ if (raw === "rules" || raw === "llm")
37
+ return raw;
38
+ throw new Error(`Invalid OPENCANDLE_ROUTER_MODE="${raw}". Allowed values: "rules" (default) or "llm".`);
39
+ }
32
40
  function resolveConfig(fileConfig) {
33
41
  const debateEnv = process.env.OPENCANDLE_DEBATE;
34
42
  const fileSentiment = fileConfig.sentiment;
@@ -39,6 +47,7 @@ function resolveConfig(fileConfig) {
39
47
  exaApiKey: process.env.EXA_API_KEY ?? fileConfig.providers?.exa?.apiKey,
40
48
  finnhubApiKey: process.env.FINNHUB_API_KEY ?? fileConfig.providers?.finnhub?.apiKey,
41
49
  debate: debateEnv !== undefined ? debateEnv !== "false" && debateEnv !== "0" : fileConfig.debate ?? true,
50
+ routerMode: resolveRouterMode(),
42
51
  sentiment: {
43
52
  retentionDays: fileSentiment?.retentionDays ?? SENTIMENT_DEFAULTS.retentionDays,
44
53
  defaultSubreddits: fileSentiment?.defaultSubreddits ?? SENTIMENT_DEFAULTS.defaultSubreddits,
@@ -83,4 +92,8 @@ export function getConfig() {
83
92
  }
84
93
  return cachedConfig;
85
94
  }
95
+ /** Test-only: clear the memoized config so the next `getConfig()` re-reads env. */
96
+ export function resetConfigCache() {
97
+ cachedConfig = null;
98
+ }
86
99
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Shared stealth browser infrastructure using Camoufox (anti-detection Firefox).
3
+ * Provides a singleton browser instance that any tool can use for scraping.
4
+ *
5
+ * Usage:
6
+ * import { StealthBrowser } from "../infra/browser.js";
7
+ * const data = await StealthBrowser.fetchJson<MyType>(url);
8
+ * const result = await StealthBrowser.evaluate(url, () => document.title);
9
+ */
10
+ import "./node-version.js";
1
11
  import type { Page } from "playwright-core";
2
12
  export declare const StealthBrowser: {
3
13
  /**
@@ -7,6 +7,7 @@
7
7
  * const data = await StealthBrowser.fetchJson<MyType>(url);
8
8
  * const result = await StealthBrowser.evaluate(url, () => document.title);
9
9
  */
10
+ import "./node-version.js";
10
11
  import { Camoufox } from "camoufox-js";
11
12
  let browser = null;
12
13
  let page = null;
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/infra/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/infra/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function getNativeDependencyErrorMessage(error: unknown, dependencyName: string): string | null;
@@ -0,0 +1,10 @@
1
+ export function getNativeDependencyErrorMessage(error, dependencyName) {
2
+ const message = error instanceof Error ? error.message : String(error);
3
+ if (!message.includes("NODE_MODULE_VERSION") &&
4
+ !message.includes("was compiled against a different Node.js version")) {
5
+ return null;
6
+ }
7
+ return `${dependencyName} native binding was built for a different Node ABI than the active Node ${process.versions.node}. ` +
8
+ `Run \`npm rebuild ${dependencyName}\` or reinstall dependencies under the active Node with \`npm install\`.`;
9
+ }
10
+ //# sourceMappingURL=native-dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-dependencies.js","sourceRoot":"","sources":["../../src/infra/native-dependencies.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,+BAA+B,CAAC,KAAc,EAAE,cAAsB;IACpF,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,IACE,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACxC,CAAC,OAAO,CAAC,QAAQ,CAAC,kDAAkD,CAAC,EACrE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,cAAc,2EAA2E,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI;QAC1H,qBAAqB,cAAc,0EAA0E,CAAC;AAClH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function getUnsupportedNodeVersionMessage(version?: string): string | null;
2
+ export declare function assertSupportedNodeVersion(version?: string): void;
@@ -0,0 +1,23 @@
1
+ const SUPPORTED_NODE_RANGE = "20.19+, 22.12+, or 24.x-26.x";
2
+ function isSupportedNodeVersion(version) {
3
+ const [majorRaw, minorRaw] = version.split(".");
4
+ const major = Number(majorRaw);
5
+ const minor = Number(minorRaw);
6
+ if (major === 20)
7
+ return minor >= 19;
8
+ if (major === 22)
9
+ return minor >= 12;
10
+ return major >= 24 && major < 27;
11
+ }
12
+ export function getUnsupportedNodeVersionMessage(version = process.versions.node) {
13
+ if (isSupportedNodeVersion(version))
14
+ return null;
15
+ return `OpenCandle supports Node ${SUPPORTED_NODE_RANGE}. Current Node is ${version}. Use Node ${SUPPORTED_NODE_RANGE}; the repo default is Node 22.22.0 via \`nvm use\`. After switching Node versions, reinstall dependencies under the active Node with \`npm install\` or rebuild native modules with \`npm rebuild better-sqlite3\`.`;
16
+ }
17
+ export function assertSupportedNodeVersion(version) {
18
+ const message = getUnsupportedNodeVersionMessage(version);
19
+ if (message)
20
+ throw new Error(message);
21
+ }
22
+ assertSupportedNodeVersion();
23
+ //# sourceMappingURL=node-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-version.js","sourceRoot":"","sources":["../../src/infra/node-version.ts"],"names":[],"mappings":"AAAA,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAE5D,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE/B,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,KAAK,IAAI,EAAE,CAAC;IACrC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,KAAK,IAAI,EAAE,CAAC;IACrC,OAAO,KAAK,IAAI,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,UAAkB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACtF,IAAI,sBAAsB,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjD,OAAO,4BAA4B,oBAAoB,qBAAqB,OAAO,cAAc,oBAAoB,qNAAqN,CAAC;AAC7U,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,MAAM,OAAO,GAAG,gCAAgC,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,0BAA0B,EAAE,CAAC"}
@@ -4,5 +4,7 @@ export type { WorkflowPreferences } from "./storage.js";
4
4
  export { buildMemoryContext } from "./retrieval.js";
5
5
  export { extractPreferences } from "./preference-extractor.js";
6
6
  export { MemoryManager } from "./manager.js";
7
+ export { getAllDefaults, getDefaults, setDefault, clearDefault } from "./tool-defaults.js";
8
+ export type { ToolDefaults } from "./tool-defaults.js";
7
9
  export type { MemoryCategory, MemoryEntry } from "./types.js";
8
10
  export { isStale, STALENESS_THRESHOLDS, NEVER_TRUST_FROM_MEMORY } from "./types.js";
@@ -3,5 +3,6 @@ export { MemoryStorage } from "./storage.js";
3
3
  export { buildMemoryContext } from "./retrieval.js";
4
4
  export { extractPreferences } from "./preference-extractor.js";
5
5
  export { MemoryManager } from "./manager.js";
6
+ export { getAllDefaults, getDefaults, setDefault, clearDefault } from "./tool-defaults.js";
6
7
  export { isStale, STALENESS_THRESHOLDS, NEVER_TRUST_FROM_MEMORY } from "./types.js";
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG3F,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
@@ -2,7 +2,7 @@ import { mkdirSync } from "node:fs";
2
2
  import { dirname } from "node:path";
3
3
  import Database from "better-sqlite3";
4
4
  import { getStateDbPath } from "../infra/opencandle-paths.js";
5
- const CURRENT_SCHEMA_VERSION = 2;
5
+ const CURRENT_SCHEMA_VERSION = 4;
6
6
  const CURRENT_SCHEMA = `
7
7
  CREATE TABLE IF NOT EXISTS schema_version (
8
8
  version INTEGER NOT NULL
@@ -28,7 +28,8 @@ const CURRENT_SCHEMA = `
28
28
  resolved_slots_json TEXT,
29
29
  defaults_used_json TEXT,
30
30
  output_summary TEXT,
31
- created_at TEXT NOT NULL
31
+ created_at TEXT NOT NULL,
32
+ turn_type TEXT NOT NULL DEFAULT 'workflow'
32
33
  );
33
34
 
34
35
  CREATE TABLE IF NOT EXISTS recommendations (
@@ -51,6 +52,14 @@ const CURRENT_SCHEMA = `
51
52
  );
52
53
 
53
54
  CREATE INDEX IF NOT EXISTS idx_workflow_events_run_id ON workflow_events(run_id);
55
+
56
+ CREATE TABLE IF NOT EXISTS tool_defaults (
57
+ tool_name TEXT NOT NULL,
58
+ param_path TEXT NOT NULL,
59
+ value_json TEXT NOT NULL,
60
+ set_at TEXT NOT NULL,
61
+ PRIMARY KEY (tool_name, param_path)
62
+ );
54
63
  `;
55
64
  export function initDatabase(path) {
56
65
  if (path !== ":memory:") {
@@ -67,11 +76,39 @@ export function initDefaultDatabase() {
67
76
  }
68
77
  function ensureCurrentSchema(db) {
69
78
  const currentVersion = readSchemaVersion(db);
70
- if (currentVersion !== CURRENT_SCHEMA_VERSION) {
71
- resetSchema(db);
79
+ if (currentVersion === CURRENT_SCHEMA_VERSION) {
80
+ // Up to date — still run CREATE TABLE IF NOT EXISTS for any missing auxiliary
81
+ // tables (e.g. workflow_events added out-of-band).
82
+ db.exec(CURRENT_SCHEMA);
72
83
  return;
73
84
  }
85
+ if (currentVersion === 3) {
86
+ migrateV3ToV4(db);
87
+ return;
88
+ }
89
+ // Additive v2 → v3 → v4 migration without dropping data.
90
+ if (currentVersion === 2) {
91
+ migrateV2ToV3(db);
92
+ migrateV3ToV4(db);
93
+ return;
94
+ }
95
+ // Any other mismatch (null first-run, or a foreign schema): reset.
96
+ resetSchema(db);
97
+ }
98
+ function migrateV2ToV3(db) {
99
+ const cols = db.pragma("table_info(workflow_runs)").map((c) => c.name);
100
+ if (!cols.includes("turn_type")) {
101
+ db.exec(`ALTER TABLE workflow_runs ADD COLUMN turn_type TEXT NOT NULL DEFAULT 'workflow'`);
102
+ }
103
+ // Ensure any tables or indexes added between versions are present.
74
104
  db.exec(CURRENT_SCHEMA);
105
+ db.prepare("DELETE FROM schema_version").run();
106
+ db.prepare("INSERT INTO schema_version (version) VALUES (?)").run(3);
107
+ }
108
+ function migrateV3ToV4(db) {
109
+ db.exec(CURRENT_SCHEMA);
110
+ db.prepare("DELETE FROM schema_version").run();
111
+ db.prepare("INSERT INTO schema_version (version) VALUES (?)").run(CURRENT_SCHEMA_VERSION);
75
112
  }
76
113
  function readSchemaVersion(db) {
77
114
  const table = db
@@ -88,6 +125,7 @@ function resetSchema(db) {
88
125
  DROP TABLE IF EXISTS recommendations;
89
126
  DROP TABLE IF EXISTS workflow_runs;
90
127
  DROP TABLE IF EXISTS user_preferences;
128
+ DROP TABLE IF EXISTS tool_defaults;
91
129
  DROP TABLE IF EXISTS schema_version;
92
130
  `);
93
131
  db.exec(CURRENT_SCHEMA);
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/memory/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDtB,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAExB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAqB;IAChD,MAAM,cAAc,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC7C,IAAI,cAAc,KAAK,sBAAsB,EAAE,CAAC;QAC9C,WAAW,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAqB;IAC9C,MAAM,KAAK,GAAG,EAAE;SACb,OAAO,CAAC,iFAAiF,CAAC;SAC1F,GAAG,EAAkC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,EAE3D,CAAC;IACd,OAAO,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED,SAAS,WAAW,CAAC,EAAqB;IACxC,EAAE,CAAC,IAAI,CAAC;;;;;GAKP,CAAC,CAAC;IACH,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxB,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CAAC,iEAAiE,CAAC;SAC1E,GAAG,EAA6B,CAAC;IACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAqB;IACpD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,EAE3D,CAAC;IACd,OAAO,GAAG,EAAE,OAAO,IAAI,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/memory/sqlite.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,12 @@ interface WorkflowRunInput {
24
24
  resolvedSlotsJson: string;
25
25
  defaultsUsedJson: string;
26
26
  outputSummary?: string;
27
+ /**
28
+ * Router route verbatim. One of `"workflow"` or `"fallback"`. Defaults to
29
+ * `"workflow"` at the schema layer so legacy callers (rules-mode cascade)
30
+ * don't need to pass anything. Router-mode callers MUST pass this explicitly.
31
+ */
32
+ turnType?: "workflow" | "fallback";
27
33
  }
28
34
  interface RecommendationInput {
29
35
  workflowRunId: number;
@@ -83,9 +83,9 @@ export class MemoryStorage {
83
83
  insertWorkflowRun(input) {
84
84
  const now = new Date().toISOString();
85
85
  const result = this.db
86
- .prepare(`INSERT INTO workflow_runs (session_id, workflow_type, input_slots_json, resolved_slots_json, defaults_used_json, output_summary, created_at)
87
- VALUES (?, ?, ?, ?, ?, ?, ?)`)
88
- .run(input.sessionId, input.workflowType, input.inputSlotsJson, input.resolvedSlotsJson, input.defaultsUsedJson, input.outputSummary ?? null, now);
86
+ .prepare(`INSERT INTO workflow_runs (session_id, workflow_type, input_slots_json, resolved_slots_json, defaults_used_json, output_summary, created_at, turn_type)
87
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
88
+ .run(input.sessionId, input.workflowType, input.inputSlotsJson, input.resolvedSlotsJson, input.defaultsUsedJson, input.outputSummary ?? null, now, input.turnType ?? "workflow");
89
89
  return Number(result.lastInsertRowid);
90
90
  }
91
91
  getRecentWorkflowRuns(limit) {