opencandle 0.11.1 → 0.13.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 (678) hide show
  1. package/README.md +50 -186
  2. package/dist/analysts/contracts.js +0 -1
  3. package/dist/analysts/orchestrator.js +0 -1
  4. package/dist/cli-main.js +22 -15
  5. package/dist/cli-options.d.ts +4 -0
  6. package/dist/cli-options.js +33 -0
  7. package/dist/cli.js +8 -3
  8. package/dist/config.d.ts +4 -0
  9. package/dist/config.js +1 -1
  10. package/dist/doctor/cli-command.js +9 -5
  11. package/dist/doctor/render.js +0 -1
  12. package/dist/doctor/report.js +53 -11
  13. package/dist/gui/server/ask-user-bridge.d.ts +19 -0
  14. package/dist/gui/server/ask-user-bridge.js +55 -0
  15. package/dist/gui/server/automation-heartbeat.d.ts +25 -0
  16. package/dist/gui/server/automation-heartbeat.js +61 -0
  17. package/dist/gui/server/background-quotes.d.ts +39 -0
  18. package/dist/gui/server/background-quotes.js +71 -0
  19. package/dist/gui/server/chat-event-adapter.d.ts +16 -0
  20. package/dist/gui/server/chat-event-adapter.js +388 -0
  21. package/dist/gui/server/gui-session-manager.d.ts +2 -0
  22. package/dist/gui/server/gui-session-manager.js +4 -0
  23. package/dist/gui/server/history-snapshot-store.d.ts +8 -0
  24. package/dist/gui/server/history-snapshot-store.js +43 -0
  25. package/dist/gui/server/http-routes.d.ts +71 -0
  26. package/dist/gui/server/http-routes.js +1033 -0
  27. package/dist/gui/server/invoke-tool.d.ts +47 -0
  28. package/dist/gui/server/invoke-tool.js +373 -0
  29. package/dist/gui/server/live-chat-event-adapter.d.ts +21 -0
  30. package/dist/gui/server/live-chat-event-adapter.js +224 -0
  31. package/dist/gui/server/local-session-coordinator.d.ts +26 -0
  32. package/dist/gui/server/local-session-coordinator.js +53 -0
  33. package/dist/gui/server/market-indices-api.d.ts +21 -0
  34. package/dist/gui/server/market-indices-api.js +26 -0
  35. package/dist/gui/server/market-indices-snapshot-store.d.ts +12 -0
  36. package/dist/gui/server/market-indices-snapshot-store.js +56 -0
  37. package/dist/gui/server/market-state-api.d.ts +250 -0
  38. package/dist/gui/server/market-state-api.js +597 -0
  39. package/dist/gui/server/model-setup.d.ts +55 -0
  40. package/dist/gui/server/model-setup.js +154 -0
  41. package/dist/gui/server/private-api-access.d.ts +6 -0
  42. package/dist/gui/server/private-api-access.js +53 -0
  43. package/dist/gui/server/projector.d.ts +49 -0
  44. package/dist/gui/server/projector.js +296 -0
  45. package/dist/gui/server/prompt-observation.d.ts +8 -0
  46. package/dist/gui/server/prompt-observation.js +43 -0
  47. package/dist/gui/server/quote-snapshot-store.d.ts +14 -0
  48. package/dist/gui/server/quote-snapshot-store.js +49 -0
  49. package/dist/gui/server/server.d.ts +1 -0
  50. package/dist/gui/server/server.js +262 -0
  51. package/dist/gui/server/session-actions.d.ts +60 -0
  52. package/dist/gui/server/session-actions.js +218 -0
  53. package/dist/gui/server/session-entry-wait.d.ts +27 -0
  54. package/dist/gui/server/session-entry-wait.js +129 -0
  55. package/dist/gui/server/session-list.d.ts +2 -0
  56. package/dist/gui/server/session-list.js +11 -0
  57. package/dist/gui/server/shutdown.d.ts +10 -0
  58. package/dist/gui/server/shutdown.js +29 -0
  59. package/dist/gui/server/tool-invoke-ack.d.ts +17 -0
  60. package/dist/gui/server/tool-invoke-ack.js +26 -0
  61. package/dist/gui/server/tool-metadata.d.ts +93 -0
  62. package/dist/gui/server/tool-metadata.js +148 -0
  63. package/dist/gui/server/websocket.d.ts +9 -0
  64. package/dist/gui/server/websocket.js +124 -0
  65. package/dist/gui/server/writer-lock.d.ts +1 -0
  66. package/dist/gui/server/writer-lock.js +1 -0
  67. package/dist/gui/server/ws-hub.d.ts +50 -0
  68. package/dist/gui/server/ws-hub.js +284 -0
  69. package/dist/gui/shared/chat-events.d.ts +174 -0
  70. package/dist/gui/shared/chat-events.js +13 -0
  71. package/dist/gui/shared/event-reducer.d.ts +3 -0
  72. package/dist/gui/shared/event-reducer.js +187 -0
  73. package/dist/index.js +0 -1
  74. package/dist/infra/cache.d.ts +4 -0
  75. package/dist/infra/cache.js +4 -1
  76. package/dist/infra/freshness.js +0 -1
  77. package/dist/infra/http-client.js +1 -2
  78. package/dist/infra/index.js +0 -1
  79. package/dist/infra/lse-byte-budget.d.ts +10 -0
  80. package/dist/infra/lse-byte-budget.js +47 -0
  81. package/dist/infra/market-calendar.js +0 -1
  82. package/dist/infra/native-dependencies.js +0 -1
  83. package/dist/infra/node-version.js +0 -1
  84. package/dist/infra/open-url.js +0 -1
  85. package/dist/infra/opencandle-paths.js +0 -1
  86. package/dist/infra/rate-limiter.js +1 -1
  87. package/dist/market-state/alert-conditions.js +0 -1
  88. package/dist/market-state/alert-runner.d.ts +1 -0
  89. package/dist/market-state/alert-runner.js +5 -4
  90. package/dist/market-state/daily-report.js +0 -1
  91. package/dist/market-state/local-automation-service.js +0 -1
  92. package/dist/market-state/notification-delivery.js +0 -1
  93. package/dist/market-state/resolve-for-mutation.js +0 -1
  94. package/dist/market-state/resolve.js +0 -1
  95. package/dist/market-state/service.d.ts +26 -21
  96. package/dist/market-state/service.js +175 -36
  97. package/dist/market-state/summaries.js +1 -13
  98. package/dist/memory/index.js +0 -1
  99. package/dist/memory/manager.js +0 -1
  100. package/dist/memory/preference-extractor.js +0 -1
  101. package/dist/memory/retrieval.js +0 -1
  102. package/dist/memory/sqlite.js +60 -11
  103. package/dist/memory/storage.js +0 -1
  104. package/dist/memory/tool-defaults.js +0 -1
  105. package/dist/memory/types.js +0 -1
  106. package/dist/monitor.js +0 -1
  107. package/dist/onboarding/connect.js +0 -1
  108. package/dist/onboarding/credential-interceptor.js +0 -1
  109. package/dist/onboarding/degradation-accumulator.js +0 -1
  110. package/dist/onboarding/prompt-user.d.ts +1 -1
  111. package/dist/onboarding/prompt-user.js +0 -1
  112. package/dist/onboarding/provider-status.js +0 -1
  113. package/dist/onboarding/providers.d.ts +16 -1
  114. package/dist/onboarding/providers.js +20 -1
  115. package/dist/onboarding/state.js +0 -1
  116. package/dist/onboarding/tool-helpers.js +0 -1
  117. package/dist/onboarding/tool-tags.js +0 -1
  118. package/dist/onboarding/validate-model-key.d.ts +17 -0
  119. package/dist/onboarding/validate-model-key.js +86 -0
  120. package/dist/onboarding/validation.js +8 -1
  121. package/dist/pi/opencandle-extension.d.ts +2 -1
  122. package/dist/pi/opencandle-extension.js +4 -4
  123. package/dist/pi/session-action-dedupe.js +0 -1
  124. package/dist/pi/session-storage.js +0 -1
  125. package/dist/pi/session-writer-lock.js +0 -1
  126. package/dist/pi/session.d.ts +2 -3
  127. package/dist/pi/session.js +7 -6
  128. package/dist/pi/setup.d.ts +4 -2
  129. package/dist/pi/setup.js +60 -61
  130. package/dist/pi/tool-adapter.js +0 -1
  131. package/dist/pi/tui-session-coordinator.js +0 -1
  132. package/dist/prompts/context-builder.js +1 -2
  133. package/dist/prompts/disclaimer.js +0 -1
  134. package/dist/prompts/policy-cards.js +0 -1
  135. package/dist/prompts/sections.js +0 -1
  136. package/dist/prompts/symbol-preflight.js +0 -1
  137. package/dist/prompts/workflow-prompts.js +16 -15
  138. package/dist/providers/alpha-vantage.js +2 -3
  139. package/dist/providers/coingecko.js +0 -1
  140. package/dist/providers/errors.js +0 -1
  141. package/dist/providers/exa-search.js +11 -10
  142. package/dist/providers/external-tool-command.js +0 -1
  143. package/dist/providers/external-tool-error.js +0 -1
  144. package/dist/providers/fear-greed.js +0 -1
  145. package/dist/providers/finnhub.js +0 -1
  146. package/dist/providers/fred.js +0 -1
  147. package/dist/providers/index.d.ts +1 -0
  148. package/dist/providers/index.js +1 -1
  149. package/dist/providers/lse.d.ts +35 -0
  150. package/dist/providers/lse.js +284 -0
  151. package/dist/providers/polymarket.js +22 -6
  152. package/dist/providers/provider-credential-error.js +0 -1
  153. package/dist/providers/reddit-cli.js +0 -1
  154. package/dist/providers/reddit.js +0 -1
  155. package/dist/providers/sec-edgar.js +0 -1
  156. package/dist/providers/tradingview.js +1 -2
  157. package/dist/providers/twitter-cli.js +0 -1
  158. package/dist/providers/twitter.js +0 -1
  159. package/dist/providers/web-search.js +15 -12
  160. package/dist/providers/with-fallback.js +0 -1
  161. package/dist/providers/wrap-provider.js +1 -1
  162. package/dist/providers/yahoo-finance.js +68 -4
  163. package/dist/routing/classify-intent.js +0 -1
  164. package/dist/routing/defaults.js +0 -1
  165. package/dist/routing/entity-extractor.js +2 -3
  166. package/dist/routing/fund-symbols.js +0 -1
  167. package/dist/routing/horizon.js +0 -1
  168. package/dist/routing/index.js +0 -1
  169. package/dist/routing/legacy-rule-router.js +0 -1
  170. package/dist/routing/planning.js +0 -1
  171. package/dist/routing/route-manifest.js +1 -1
  172. package/dist/routing/router-llm-client.d.ts +2 -2
  173. package/dist/routing/router-llm-client.js +0 -1
  174. package/dist/routing/router-prompt.js +0 -1
  175. package/dist/routing/router-types.js +0 -1
  176. package/dist/routing/router.js +9 -3
  177. package/dist/routing/slot-resolver.js +0 -1
  178. package/dist/routing/symbol-disambiguator.js +0 -1
  179. package/dist/routing/turn-context.js +0 -1
  180. package/dist/routing/types.js +0 -1
  181. package/dist/runtime/answer-contracts.js +0 -1
  182. package/dist/runtime/artifact-contracts.js +0 -1
  183. package/dist/runtime/evidence.d.ts +1 -0
  184. package/dist/runtime/evidence.js +1 -2
  185. package/dist/runtime/numeric-claims.js +0 -1
  186. package/dist/runtime/planning-evidence.js +0 -1
  187. package/dist/runtime/prompt-step.js +0 -1
  188. package/dist/runtime/provider-tracker.js +0 -1
  189. package/dist/runtime/run-context.js +0 -1
  190. package/dist/runtime/session-coordinator.d.ts +2 -2
  191. package/dist/runtime/session-coordinator.js +2 -3
  192. package/dist/runtime/session-title.js +0 -1
  193. package/dist/runtime/tool-defaults-wrapper.js +0 -1
  194. package/dist/runtime/validation.js +0 -1
  195. package/dist/runtime/workflow-events.js +0 -1
  196. package/dist/runtime/workflow-runner.d.ts +1 -0
  197. package/dist/runtime/workflow-runner.js +8 -3
  198. package/dist/runtime/workflow-types.js +0 -1
  199. package/dist/sentiment/adapters/finnhub.js +0 -1
  200. package/dist/sentiment/adapters/reddit.js +0 -1
  201. package/dist/sentiment/adapters/twitter.js +0 -1
  202. package/dist/sentiment/adapters/web.js +0 -1
  203. package/dist/sentiment/index.js +4 -2
  204. package/dist/sentiment/insights.js +0 -1
  205. package/dist/sentiment/keywords.js +0 -1
  206. package/dist/sentiment/pipeline.js +0 -1
  207. package/dist/sentiment/scorer.js +0 -1
  208. package/dist/sentiment/store.js +0 -1
  209. package/dist/sentiment/trends.js +0 -1
  210. package/dist/sentiment/types.js +0 -1
  211. package/dist/system-prompt.js +0 -1
  212. package/dist/tool-kit.js +0 -1
  213. package/dist/tools/fundamentals/company-overview.d.ts +1 -1
  214. package/dist/tools/fundamentals/company-overview.js +2 -1
  215. package/dist/tools/fundamentals/comps.js +6 -4
  216. package/dist/tools/fundamentals/dcf.js +37 -9
  217. package/dist/tools/fundamentals/earnings.d.ts +1 -1
  218. package/dist/tools/fundamentals/earnings.js +2 -1
  219. package/dist/tools/fundamentals/financials.js +88 -9
  220. package/dist/tools/fundamentals/sec-filings.js +0 -1
  221. package/dist/tools/index.d.ts +121 -2
  222. package/dist/tools/index.js +3 -1
  223. package/dist/tools/interaction/ask-user.js +11 -1
  224. package/dist/tools/macro/event-probabilities.js +0 -1
  225. package/dist/tools/macro/fear-greed.d.ts +1 -1
  226. package/dist/tools/macro/fear-greed.js +0 -1
  227. package/dist/tools/macro/fred-data.d.ts +1 -1
  228. package/dist/tools/macro/fred-data.js +2 -1
  229. package/dist/tools/market/crypto-history.js +0 -1
  230. package/dist/tools/market/crypto-price.d.ts +2 -2
  231. package/dist/tools/market/crypto-price.js +0 -1
  232. package/dist/tools/market/price-comparison.d.ts +30 -0
  233. package/dist/tools/market/price-comparison.js +202 -0
  234. package/dist/tools/market/screen-stocks.js +0 -1
  235. package/dist/tools/market/search-ticker.js +1 -2
  236. package/dist/tools/market/stock-history.d.ts +18 -3
  237. package/dist/tools/market/stock-history.js +132 -18
  238. package/dist/tools/market/stock-quote.d.ts +2 -2
  239. package/dist/tools/market/stock-quote.js +0 -1
  240. package/dist/tools/options/greeks.js +0 -1
  241. package/dist/tools/options/option-chain.d.ts +2 -2
  242. package/dist/tools/options/option-chain.js +0 -1
  243. package/dist/tools/portfolio/alerts.d.ts +2 -1
  244. package/dist/tools/portfolio/alerts.js +228 -2
  245. package/dist/tools/portfolio/correlation.d.ts +1 -1
  246. package/dist/tools/portfolio/correlation.js +23 -5
  247. package/dist/tools/portfolio/daily-report.js +0 -1
  248. package/dist/tools/portfolio/holdings-overlap.js +0 -1
  249. package/dist/tools/portfolio/notifications.js +0 -1
  250. package/dist/tools/portfolio/risk-analysis.d.ts +2 -2
  251. package/dist/tools/portfolio/risk-analysis.js +0 -1
  252. package/dist/tools/portfolio/tracker.d.ts +3 -1
  253. package/dist/tools/portfolio/tracker.js +57 -10
  254. package/dist/tools/portfolio/watchlist.d.ts +3 -6
  255. package/dist/tools/portfolio/watchlist.js +101 -110
  256. package/dist/tools/sentiment/insight-format.js +0 -1
  257. package/dist/tools/sentiment/query-match.js +0 -1
  258. package/dist/tools/sentiment/reddit-sentiment.js +0 -1
  259. package/dist/tools/sentiment/sentiment-summary.js +8 -4
  260. package/dist/tools/sentiment/sentiment-trend.d.ts +5 -1
  261. package/dist/tools/sentiment/sentiment-trend.js +6 -2
  262. package/dist/tools/sentiment/twitter-sentiment.js +0 -1
  263. package/dist/tools/sentiment/untrusted-text.js +0 -1
  264. package/dist/tools/sentiment/web-search.d.ts +1 -1
  265. package/dist/tools/sentiment/web-search.js +0 -1
  266. package/dist/tools/sentiment/web-sentiment.js +0 -1
  267. package/dist/tools/technical/backtest.js +0 -1
  268. package/dist/tools/technical/indicators.js +0 -1
  269. package/dist/types/fundamentals.js +0 -1
  270. package/dist/types/index.js +0 -1
  271. package/dist/types/macro.js +0 -1
  272. package/dist/types/market.d.ts +8 -0
  273. package/dist/types/market.js +0 -1
  274. package/dist/types/options.js +0 -1
  275. package/dist/types/portfolio.js +0 -1
  276. package/dist/types/prediction-markets.js +0 -1
  277. package/dist/types/sentiment.js +0 -1
  278. package/dist/workflows/compare-assets.js +0 -1
  279. package/dist/workflows/index.js +0 -1
  280. package/dist/workflows/options-screener.js +0 -1
  281. package/dist/workflows/portfolio-builder.js +0 -1
  282. package/gui/web/dist/assets/CatalogOverlay-Cy8Fq0fn.js +1 -0
  283. package/gui/web/dist/assets/allocation-donut-DgBRIKCk.js +52 -0
  284. package/gui/web/dist/assets/index-DIlFyIOO.js +66 -0
  285. package/gui/web/dist/assets/index-DS4jESOB.css +2 -0
  286. package/gui/web/dist/assets/market-chart-DammaCjH.js +1 -0
  287. package/gui/web/dist/assets/utils-CnADgYgh.js +1 -0
  288. package/gui/web/dist/index.html +3 -2
  289. package/package.json +23 -26
  290. package/dist/analysts/contracts.js.map +0 -1
  291. package/dist/analysts/orchestrator.js.map +0 -1
  292. package/dist/cli-main.js.map +0 -1
  293. package/dist/cli.js.map +0 -1
  294. package/dist/config.js.map +0 -1
  295. package/dist/doctor/cli-command.js.map +0 -1
  296. package/dist/doctor/render.js.map +0 -1
  297. package/dist/doctor/report.js.map +0 -1
  298. package/dist/index.js.map +0 -1
  299. package/dist/infra/cache.js.map +0 -1
  300. package/dist/infra/freshness.js.map +0 -1
  301. package/dist/infra/http-client.js.map +0 -1
  302. package/dist/infra/index.js.map +0 -1
  303. package/dist/infra/market-calendar.js.map +0 -1
  304. package/dist/infra/native-dependencies.js.map +0 -1
  305. package/dist/infra/node-version.js.map +0 -1
  306. package/dist/infra/open-url.js.map +0 -1
  307. package/dist/infra/opencandle-paths.js.map +0 -1
  308. package/dist/infra/rate-limiter.js.map +0 -1
  309. package/dist/market-state/alert-conditions.js.map +0 -1
  310. package/dist/market-state/alert-runner.js.map +0 -1
  311. package/dist/market-state/daily-report.js.map +0 -1
  312. package/dist/market-state/local-automation-service.js.map +0 -1
  313. package/dist/market-state/notification-delivery.js.map +0 -1
  314. package/dist/market-state/resolve-for-mutation.js.map +0 -1
  315. package/dist/market-state/resolve.js.map +0 -1
  316. package/dist/market-state/service.js.map +0 -1
  317. package/dist/market-state/summaries.js.map +0 -1
  318. package/dist/memory/index.js.map +0 -1
  319. package/dist/memory/manager.js.map +0 -1
  320. package/dist/memory/preference-extractor.js.map +0 -1
  321. package/dist/memory/retrieval.js.map +0 -1
  322. package/dist/memory/sqlite.js.map +0 -1
  323. package/dist/memory/storage.js.map +0 -1
  324. package/dist/memory/tool-defaults.js.map +0 -1
  325. package/dist/memory/types.js.map +0 -1
  326. package/dist/monitor.js.map +0 -1
  327. package/dist/onboarding/connect.js.map +0 -1
  328. package/dist/onboarding/credential-interceptor.js.map +0 -1
  329. package/dist/onboarding/degradation-accumulator.js.map +0 -1
  330. package/dist/onboarding/prompt-user.js.map +0 -1
  331. package/dist/onboarding/provider-status.js.map +0 -1
  332. package/dist/onboarding/providers.js.map +0 -1
  333. package/dist/onboarding/state.js.map +0 -1
  334. package/dist/onboarding/tool-helpers.js.map +0 -1
  335. package/dist/onboarding/tool-tags.js.map +0 -1
  336. package/dist/onboarding/validation.js.map +0 -1
  337. package/dist/pi/opencandle-extension.js.map +0 -1
  338. package/dist/pi/session-action-dedupe.js.map +0 -1
  339. package/dist/pi/session-storage.js.map +0 -1
  340. package/dist/pi/session-writer-lock.js.map +0 -1
  341. package/dist/pi/session.js.map +0 -1
  342. package/dist/pi/setup.js.map +0 -1
  343. package/dist/pi/tool-adapter.js.map +0 -1
  344. package/dist/pi/tui-session-coordinator.js.map +0 -1
  345. package/dist/prompts/context-builder.js.map +0 -1
  346. package/dist/prompts/disclaimer.js.map +0 -1
  347. package/dist/prompts/policy-cards.js.map +0 -1
  348. package/dist/prompts/sections.js.map +0 -1
  349. package/dist/prompts/symbol-preflight.js.map +0 -1
  350. package/dist/prompts/workflow-prompts.js.map +0 -1
  351. package/dist/providers/alpha-vantage.js.map +0 -1
  352. package/dist/providers/coingecko.js.map +0 -1
  353. package/dist/providers/errors.js.map +0 -1
  354. package/dist/providers/exa-search.js.map +0 -1
  355. package/dist/providers/external-tool-command.js.map +0 -1
  356. package/dist/providers/external-tool-error.js.map +0 -1
  357. package/dist/providers/fear-greed.js.map +0 -1
  358. package/dist/providers/finnhub.js.map +0 -1
  359. package/dist/providers/fred.js.map +0 -1
  360. package/dist/providers/index.js.map +0 -1
  361. package/dist/providers/polymarket.js.map +0 -1
  362. package/dist/providers/provider-credential-error.js.map +0 -1
  363. package/dist/providers/reddit-cli.js.map +0 -1
  364. package/dist/providers/reddit.js.map +0 -1
  365. package/dist/providers/sec-edgar.js.map +0 -1
  366. package/dist/providers/tradingview.js.map +0 -1
  367. package/dist/providers/twitter-cli.js.map +0 -1
  368. package/dist/providers/twitter.js.map +0 -1
  369. package/dist/providers/web-search.js.map +0 -1
  370. package/dist/providers/with-fallback.js.map +0 -1
  371. package/dist/providers/wrap-provider.js.map +0 -1
  372. package/dist/providers/yahoo-finance.js.map +0 -1
  373. package/dist/routing/classify-intent.js.map +0 -1
  374. package/dist/routing/defaults.js.map +0 -1
  375. package/dist/routing/entity-extractor.js.map +0 -1
  376. package/dist/routing/fund-symbols.js.map +0 -1
  377. package/dist/routing/horizon.js.map +0 -1
  378. package/dist/routing/index.js.map +0 -1
  379. package/dist/routing/legacy-rule-router.js.map +0 -1
  380. package/dist/routing/planning.js.map +0 -1
  381. package/dist/routing/route-manifest.js.map +0 -1
  382. package/dist/routing/router-llm-client.js.map +0 -1
  383. package/dist/routing/router-prompt.js.map +0 -1
  384. package/dist/routing/router-types.js.map +0 -1
  385. package/dist/routing/router.js.map +0 -1
  386. package/dist/routing/slot-resolver.js.map +0 -1
  387. package/dist/routing/symbol-disambiguator.js.map +0 -1
  388. package/dist/routing/turn-context.js.map +0 -1
  389. package/dist/routing/types.js.map +0 -1
  390. package/dist/runtime/answer-contracts.js.map +0 -1
  391. package/dist/runtime/artifact-contracts.js.map +0 -1
  392. package/dist/runtime/evidence.js.map +0 -1
  393. package/dist/runtime/numeric-claims.js.map +0 -1
  394. package/dist/runtime/planning-evidence.js.map +0 -1
  395. package/dist/runtime/prompt-step.js.map +0 -1
  396. package/dist/runtime/provider-tracker.js.map +0 -1
  397. package/dist/runtime/run-context.js.map +0 -1
  398. package/dist/runtime/session-coordinator.js.map +0 -1
  399. package/dist/runtime/session-title.js.map +0 -1
  400. package/dist/runtime/tool-defaults-wrapper.js.map +0 -1
  401. package/dist/runtime/validation.js.map +0 -1
  402. package/dist/runtime/workflow-events.js.map +0 -1
  403. package/dist/runtime/workflow-runner.js.map +0 -1
  404. package/dist/runtime/workflow-types.js.map +0 -1
  405. package/dist/sentiment/adapters/finnhub.js.map +0 -1
  406. package/dist/sentiment/adapters/reddit.js.map +0 -1
  407. package/dist/sentiment/adapters/twitter.js.map +0 -1
  408. package/dist/sentiment/adapters/web.js.map +0 -1
  409. package/dist/sentiment/index.js.map +0 -1
  410. package/dist/sentiment/insights.js.map +0 -1
  411. package/dist/sentiment/keywords.js.map +0 -1
  412. package/dist/sentiment/pipeline.js.map +0 -1
  413. package/dist/sentiment/scorer.js.map +0 -1
  414. package/dist/sentiment/store.js.map +0 -1
  415. package/dist/sentiment/trends.js.map +0 -1
  416. package/dist/sentiment/types.js.map +0 -1
  417. package/dist/system-prompt.js.map +0 -1
  418. package/dist/tool-kit.js.map +0 -1
  419. package/dist/tools/fundamentals/company-overview.js.map +0 -1
  420. package/dist/tools/fundamentals/comps.js.map +0 -1
  421. package/dist/tools/fundamentals/dcf.js.map +0 -1
  422. package/dist/tools/fundamentals/earnings.js.map +0 -1
  423. package/dist/tools/fundamentals/financials.js.map +0 -1
  424. package/dist/tools/fundamentals/sec-filings.js.map +0 -1
  425. package/dist/tools/index.js.map +0 -1
  426. package/dist/tools/interaction/ask-user.js.map +0 -1
  427. package/dist/tools/macro/event-probabilities.js.map +0 -1
  428. package/dist/tools/macro/fear-greed.js.map +0 -1
  429. package/dist/tools/macro/fred-data.js.map +0 -1
  430. package/dist/tools/market/crypto-history.js.map +0 -1
  431. package/dist/tools/market/crypto-price.js.map +0 -1
  432. package/dist/tools/market/screen-stocks.js.map +0 -1
  433. package/dist/tools/market/search-ticker.js.map +0 -1
  434. package/dist/tools/market/stock-history.js.map +0 -1
  435. package/dist/tools/market/stock-quote.js.map +0 -1
  436. package/dist/tools/options/greeks.js.map +0 -1
  437. package/dist/tools/options/option-chain.js.map +0 -1
  438. package/dist/tools/portfolio/alerts.js.map +0 -1
  439. package/dist/tools/portfolio/correlation.js.map +0 -1
  440. package/dist/tools/portfolio/daily-report.js.map +0 -1
  441. package/dist/tools/portfolio/holdings-overlap.js.map +0 -1
  442. package/dist/tools/portfolio/notifications.js.map +0 -1
  443. package/dist/tools/portfolio/risk-analysis.js.map +0 -1
  444. package/dist/tools/portfolio/tracker.js.map +0 -1
  445. package/dist/tools/portfolio/watchlist.js.map +0 -1
  446. package/dist/tools/sentiment/insight-format.js.map +0 -1
  447. package/dist/tools/sentiment/query-match.js.map +0 -1
  448. package/dist/tools/sentiment/reddit-sentiment.js.map +0 -1
  449. package/dist/tools/sentiment/sentiment-summary.js.map +0 -1
  450. package/dist/tools/sentiment/sentiment-trend.js.map +0 -1
  451. package/dist/tools/sentiment/twitter-sentiment.js.map +0 -1
  452. package/dist/tools/sentiment/untrusted-text.js.map +0 -1
  453. package/dist/tools/sentiment/web-search.js.map +0 -1
  454. package/dist/tools/sentiment/web-sentiment.js.map +0 -1
  455. package/dist/tools/technical/backtest.js.map +0 -1
  456. package/dist/tools/technical/indicators.js.map +0 -1
  457. package/dist/types/fundamentals.js.map +0 -1
  458. package/dist/types/index.js.map +0 -1
  459. package/dist/types/macro.js.map +0 -1
  460. package/dist/types/market.js.map +0 -1
  461. package/dist/types/options.js.map +0 -1
  462. package/dist/types/portfolio.js.map +0 -1
  463. package/dist/types/prediction-markets.js.map +0 -1
  464. package/dist/types/sentiment.js.map +0 -1
  465. package/dist/workflows/compare-assets.js.map +0 -1
  466. package/dist/workflows/index.js.map +0 -1
  467. package/dist/workflows/options-screener.js.map +0 -1
  468. package/dist/workflows/portfolio-builder.js.map +0 -1
  469. package/gui/server/ask-user-bridge.ts +0 -89
  470. package/gui/server/automation-heartbeat.ts +0 -97
  471. package/gui/server/background-quotes.ts +0 -127
  472. package/gui/server/chat-event-adapter.ts +0 -294
  473. package/gui/server/gui-session-manager.ts +0 -5
  474. package/gui/server/http-routes.ts +0 -1201
  475. package/gui/server/invoke-tool.ts +0 -490
  476. package/gui/server/live-chat-event-adapter.ts +0 -243
  477. package/gui/server/local-session-coordinator.ts +0 -97
  478. package/gui/server/market-state-api.ts +0 -331
  479. package/gui/server/model-setup.ts +0 -254
  480. package/gui/server/package.json +0 -5
  481. package/gui/server/private-api-access.ts +0 -62
  482. package/gui/server/projector.ts +0 -392
  483. package/gui/server/prompt-observation.ts +0 -58
  484. package/gui/server/quote-snapshot-store.ts +0 -50
  485. package/gui/server/server.ts +0 -289
  486. package/gui/server/session-actions.ts +0 -323
  487. package/gui/server/session-entry-wait.ts +0 -179
  488. package/gui/server/shutdown.ts +0 -47
  489. package/gui/server/tool-invoke-ack.ts +0 -49
  490. package/gui/server/tool-metadata.ts +0 -167
  491. package/gui/server/websocket.ts +0 -138
  492. package/gui/server/writer-lock.ts +0 -1
  493. package/gui/server/ws-hub.ts +0 -403
  494. package/gui/shared/chat-events.ts +0 -165
  495. package/gui/shared/event-reducer.ts +0 -220
  496. package/gui/web/dist/assets/CatalogOverlay-DZ1niyQm.js +0 -1
  497. package/gui/web/dist/assets/index-D4F9AJnn.css +0 -2
  498. package/gui/web/dist/assets/index-DtqMMBTr.js +0 -65
  499. package/src/analysts/contracts.ts +0 -176
  500. package/src/analysts/orchestrator.ts +0 -244
  501. package/src/cli-main.ts +0 -510
  502. package/src/cli.ts +0 -17
  503. package/src/config.ts +0 -272
  504. package/src/doctor/cli-command.ts +0 -83
  505. package/src/doctor/render.ts +0 -37
  506. package/src/doctor/report.ts +0 -638
  507. package/src/index.ts +0 -5
  508. package/src/infra/cache.ts +0 -127
  509. package/src/infra/freshness.ts +0 -165
  510. package/src/infra/http-client.ts +0 -134
  511. package/src/infra/index.ts +0 -14
  512. package/src/infra/market-calendar.ts +0 -193
  513. package/src/infra/native-dependencies.ts +0 -84
  514. package/src/infra/node-version.ts +0 -23
  515. package/src/infra/open-url.ts +0 -28
  516. package/src/infra/opencandle-paths.ts +0 -53
  517. package/src/infra/rate-limiter.ts +0 -77
  518. package/src/market-state/alert-conditions.ts +0 -82
  519. package/src/market-state/alert-runner.ts +0 -863
  520. package/src/market-state/daily-report.ts +0 -237
  521. package/src/market-state/local-automation-service.ts +0 -162
  522. package/src/market-state/notification-delivery.ts +0 -158
  523. package/src/market-state/resolve-for-mutation.ts +0 -24
  524. package/src/market-state/resolve.ts +0 -112
  525. package/src/market-state/service.ts +0 -2208
  526. package/src/market-state/summaries.ts +0 -75
  527. package/src/memory/index.ts +0 -10
  528. package/src/memory/manager.ts +0 -190
  529. package/src/memory/preference-extractor.ts +0 -106
  530. package/src/memory/retrieval.ts +0 -71
  531. package/src/memory/sqlite.ts +0 -577
  532. package/src/memory/storage.ts +0 -195
  533. package/src/memory/tool-defaults.ts +0 -108
  534. package/src/memory/types.ts +0 -71
  535. package/src/monitor.ts +0 -123
  536. package/src/onboarding/connect.ts +0 -177
  537. package/src/onboarding/credential-interceptor.ts +0 -122
  538. package/src/onboarding/degradation-accumulator.ts +0 -77
  539. package/src/onboarding/prompt-user.ts +0 -85
  540. package/src/onboarding/provider-status.ts +0 -382
  541. package/src/onboarding/providers.ts +0 -442
  542. package/src/onboarding/state.ts +0 -216
  543. package/src/onboarding/tool-helpers.ts +0 -104
  544. package/src/onboarding/tool-tags.ts +0 -244
  545. package/src/onboarding/validation.ts +0 -152
  546. package/src/pi/opencandle-extension.ts +0 -1294
  547. package/src/pi/session-action-dedupe.ts +0 -155
  548. package/src/pi/session-storage.ts +0 -5
  549. package/src/pi/session-writer-lock.ts +0 -426
  550. package/src/pi/session.ts +0 -84
  551. package/src/pi/setup.ts +0 -399
  552. package/src/pi/tool-adapter.ts +0 -49
  553. package/src/pi/tui-session-coordinator.ts +0 -351
  554. package/src/prompts/context-builder.ts +0 -326
  555. package/src/prompts/disclaimer.ts +0 -9
  556. package/src/prompts/policy-cards.ts +0 -228
  557. package/src/prompts/sections.ts +0 -46
  558. package/src/prompts/symbol-preflight.ts +0 -80
  559. package/src/prompts/workflow-prompts.ts +0 -504
  560. package/src/providers/alpha-vantage.ts +0 -340
  561. package/src/providers/coingecko.ts +0 -95
  562. package/src/providers/errors.ts +0 -9
  563. package/src/providers/exa-search.ts +0 -375
  564. package/src/providers/external-tool-command.ts +0 -164
  565. package/src/providers/external-tool-error.ts +0 -20
  566. package/src/providers/fear-greed.ts +0 -45
  567. package/src/providers/finnhub.ts +0 -125
  568. package/src/providers/fred.ts +0 -83
  569. package/src/providers/index.ts +0 -17
  570. package/src/providers/polymarket.ts +0 -214
  571. package/src/providers/provider-credential-error.ts +0 -23
  572. package/src/providers/reddit-cli.ts +0 -286
  573. package/src/providers/reddit.ts +0 -106
  574. package/src/providers/sec-edgar.ts +0 -326
  575. package/src/providers/tradingview.ts +0 -399
  576. package/src/providers/twitter-cli.ts +0 -202
  577. package/src/providers/twitter.ts +0 -102
  578. package/src/providers/web-search.ts +0 -303
  579. package/src/providers/with-fallback.ts +0 -42
  580. package/src/providers/wrap-provider.ts +0 -105
  581. package/src/providers/yahoo-finance.ts +0 -984
  582. package/src/routing/classify-intent.ts +0 -380
  583. package/src/routing/defaults.ts +0 -29
  584. package/src/routing/entity-extractor.ts +0 -557
  585. package/src/routing/fund-symbols.ts +0 -58
  586. package/src/routing/horizon.ts +0 -7
  587. package/src/routing/index.ts +0 -70
  588. package/src/routing/legacy-rule-router.ts +0 -13
  589. package/src/routing/planning.ts +0 -829
  590. package/src/routing/route-manifest.ts +0 -308
  591. package/src/routing/router-llm-client.ts +0 -64
  592. package/src/routing/router-prompt.ts +0 -159
  593. package/src/routing/router-types.ts +0 -84
  594. package/src/routing/router.ts +0 -1332
  595. package/src/routing/slot-resolver.ts +0 -213
  596. package/src/routing/symbol-disambiguator.ts +0 -72
  597. package/src/routing/turn-context.ts +0 -108
  598. package/src/routing/types.ts +0 -77
  599. package/src/runtime/answer-contracts.ts +0 -693
  600. package/src/runtime/artifact-contracts.ts +0 -77
  601. package/src/runtime/evidence.ts +0 -78
  602. package/src/runtime/numeric-claims.ts +0 -108
  603. package/src/runtime/planning-evidence.ts +0 -597
  604. package/src/runtime/prompt-step.ts +0 -185
  605. package/src/runtime/provider-tracker.ts +0 -40
  606. package/src/runtime/run-context.ts +0 -32
  607. package/src/runtime/session-coordinator.ts +0 -1037
  608. package/src/runtime/session-title.ts +0 -60
  609. package/src/runtime/tool-defaults-wrapper.ts +0 -43
  610. package/src/runtime/validation.ts +0 -211
  611. package/src/runtime/workflow-events.ts +0 -77
  612. package/src/runtime/workflow-runner.ts +0 -182
  613. package/src/runtime/workflow-types.ts +0 -105
  614. package/src/sentiment/adapters/finnhub.ts +0 -49
  615. package/src/sentiment/adapters/reddit.ts +0 -65
  616. package/src/sentiment/adapters/twitter.ts +0 -36
  617. package/src/sentiment/adapters/web.ts +0 -44
  618. package/src/sentiment/index.ts +0 -49
  619. package/src/sentiment/insights.ts +0 -269
  620. package/src/sentiment/keywords.ts +0 -31
  621. package/src/sentiment/pipeline.ts +0 -91
  622. package/src/sentiment/scorer.ts +0 -89
  623. package/src/sentiment/store.ts +0 -260
  624. package/src/sentiment/trends.ts +0 -96
  625. package/src/sentiment/types.ts +0 -112
  626. package/src/system-prompt.ts +0 -115
  627. package/src/tool-kit.ts +0 -69
  628. package/src/tools/AGENTS.md +0 -36
  629. package/src/tools/fundamentals/company-overview.ts +0 -64
  630. package/src/tools/fundamentals/comps.ts +0 -180
  631. package/src/tools/fundamentals/dcf.ts +0 -447
  632. package/src/tools/fundamentals/earnings.ts +0 -57
  633. package/src/tools/fundamentals/financials.ts +0 -63
  634. package/src/tools/fundamentals/sec-filings.ts +0 -105
  635. package/src/tools/index.ts +0 -104
  636. package/src/tools/interaction/ask-user.ts +0 -93
  637. package/src/tools/macro/event-probabilities.ts +0 -141
  638. package/src/tools/macro/fear-greed.ts +0 -41
  639. package/src/tools/macro/fred-data.ts +0 -92
  640. package/src/tools/market/crypto-history.ts +0 -72
  641. package/src/tools/market/crypto-price.ts +0 -65
  642. package/src/tools/market/screen-stocks.ts +0 -290
  643. package/src/tools/market/search-ticker.ts +0 -254
  644. package/src/tools/market/stock-history.ts +0 -104
  645. package/src/tools/market/stock-quote.ts +0 -73
  646. package/src/tools/options/greeks.ts +0 -81
  647. package/src/tools/options/option-chain.ts +0 -134
  648. package/src/tools/portfolio/alerts.ts +0 -457
  649. package/src/tools/portfolio/correlation.ts +0 -189
  650. package/src/tools/portfolio/daily-report.ts +0 -107
  651. package/src/tools/portfolio/holdings-overlap.ts +0 -139
  652. package/src/tools/portfolio/notifications.ts +0 -45
  653. package/src/tools/portfolio/risk-analysis.ts +0 -173
  654. package/src/tools/portfolio/tracker.ts +0 -308
  655. package/src/tools/portfolio/watchlist.ts +0 -288
  656. package/src/tools/sentiment/insight-format.ts +0 -50
  657. package/src/tools/sentiment/query-match.ts +0 -117
  658. package/src/tools/sentiment/reddit-sentiment.ts +0 -403
  659. package/src/tools/sentiment/sentiment-summary.ts +0 -383
  660. package/src/tools/sentiment/sentiment-trend.ts +0 -75
  661. package/src/tools/sentiment/twitter-sentiment.ts +0 -287
  662. package/src/tools/sentiment/untrusted-text.ts +0 -21
  663. package/src/tools/sentiment/web-search.ts +0 -186
  664. package/src/tools/sentiment/web-sentiment.ts +0 -96
  665. package/src/tools/technical/backtest.ts +0 -336
  666. package/src/tools/technical/indicators.ts +0 -281
  667. package/src/types/fundamentals.ts +0 -47
  668. package/src/types/index.ts +0 -26
  669. package/src/types/macro.ts +0 -27
  670. package/src/types/market.ts +0 -46
  671. package/src/types/options.ts +0 -53
  672. package/src/types/portfolio.ts +0 -83
  673. package/src/types/prediction-markets.ts +0 -13
  674. package/src/types/sentiment.ts +0 -129
  675. package/src/workflows/compare-assets.ts +0 -89
  676. package/src/workflows/index.ts +0 -3
  677. package/src/workflows/options-screener.ts +0 -125
  678. package/src/workflows/portfolio-builder.ts +0 -63
@@ -69,7 +69,9 @@ export const cache = new Cache();
69
69
  export const TTL = {
70
70
  QUOTE: 60_000, // 1 minute
71
71
  HISTORY: 3_600_000, // 1 hour
72
+ CANDLES: 3_600_000, // 1 hour
72
73
  FUNDAMENTALS: 86_400_000, // 24 hours
74
+ FINANCIAL_REPORTS: 86_400_000, // 24 hours
73
75
  MACRO: 3_600_000, // 1 hour
74
76
  SENTIMENT: 300_000, // 5 minutes
75
77
  OPTIONS_CHAIN: 120_000, // 2 minutes
@@ -83,7 +85,9 @@ export const TTL = {
83
85
  export const STALE_LIMIT = {
84
86
  QUOTE: 15 * 60_000, // 15 minutes
85
87
  HISTORY: 24 * 3_600_000, // 24 hours
88
+ CANDLES: 24 * 3_600_000, // 24 hours
86
89
  FUNDAMENTALS: 7 * 86_400_000, // 7 days
90
+ FINANCIAL_REPORTS: 7 * 86_400_000, // 7 days
87
91
  MACRO: 24 * 3_600_000, // 24 hours
88
92
  SENTIMENT: 3_600_000, // 1 hour
89
93
  OPTIONS_CHAIN: 30 * 60_000, // 30 minutes
@@ -92,4 +96,3 @@ export const STALE_LIMIT = {
92
96
  FINNHUB_NEWS: 3_600_000, // 1 hour
93
97
  PREDICTION_MARKETS: 3_600_000, // 1 hour
94
98
  };
95
- //# sourceMappingURL=cache.js.map
@@ -116,4 +116,3 @@ function marketSessionLabel(marketSession) {
116
116
  return "market session unknown";
117
117
  }
118
118
  }
119
- //# sourceMappingURL=freshness.js.map
@@ -72,7 +72,7 @@ async function httpRequest(url, options) {
72
72
  await sleep(retryDelayMs);
73
73
  }
74
74
  }
75
- throw lastError;
75
+ throw lastError ?? new Error("HTTP request failed without an error");
76
76
  }
77
77
  function isRetryableError(error) {
78
78
  if (!(error instanceof HttpError))
@@ -104,4 +104,3 @@ function capRetryAfterMs(retryAfterMs, maxRetryAfterMs) {
104
104
  function sleep(ms) {
105
105
  return new Promise((resolve) => setTimeout(resolve, ms));
106
106
  }
107
- //# sourceMappingURL=http-client.js.map
@@ -2,4 +2,3 @@ export { Cache, cache, TTL } from "./cache.js";
2
2
  export { HttpError, httpGet } from "./http-client.js";
3
3
  export { ensureOpenCandleHomeDir, ensureParentDir, getBrowserProfileDir, getConfigPath, getLogsDir, getOnboardingPath, getOpenCandleHomeDir, getStateDbPath, resolveOpenCandlePath, } from "./opencandle-paths.js";
4
4
  export { RateLimiter, rateLimiter } from "./rate-limiter.js";
5
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,10 @@
1
+ export declare const LSE_MONTHLY_BYTE_CAP = 53687091200;
2
+ export declare const LSE_SOFT_BYTE_THRESHOLD = 42949672960;
3
+ export interface LseByteBudgetUsage {
4
+ month: string;
5
+ bytesUsed: number;
6
+ }
7
+ export declare function recordBytes(n: number): void;
8
+ export declare function getUsage(): LseByteBudgetUsage;
9
+ export declare function isOverSoftThreshold(): boolean;
10
+ export declare function markExhausted(): void;
@@ -0,0 +1,47 @@
1
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { ensureParentDir, resolveOpenCandlePath } from "./opencandle-paths.js";
3
+ export const LSE_MONTHLY_BYTE_CAP = 53_687_091_200;
4
+ export const LSE_SOFT_BYTE_THRESHOLD = 42_949_672_960;
5
+ function currentMonth() {
6
+ return new Date().toISOString().slice(0, 7);
7
+ }
8
+ function budgetPath() {
9
+ return resolveOpenCandlePath("lse-byte-budget.json");
10
+ }
11
+ function readUsage() {
12
+ const month = currentMonth();
13
+ const path = budgetPath();
14
+ if (!existsSync(path))
15
+ return { month, bytesUsed: 0 };
16
+ try {
17
+ const parsed = JSON.parse(readFileSync(path, "utf-8"));
18
+ const bytesUsed = parsed.bytesUsed;
19
+ if (parsed.month !== month || typeof bytesUsed !== "number" || !Number.isFinite(bytesUsed)) {
20
+ return { month, bytesUsed: 0 };
21
+ }
22
+ return { month, bytesUsed: bytesUsed < 0 ? 0 : bytesUsed };
23
+ }
24
+ catch {
25
+ return { month, bytesUsed: 0 };
26
+ }
27
+ }
28
+ function writeUsage(usage) {
29
+ const path = budgetPath();
30
+ ensureParentDir(path);
31
+ writeFileSync(path, `${JSON.stringify(usage, null, 2)}\n`, "utf-8");
32
+ }
33
+ export function recordBytes(n) {
34
+ if (!Number.isFinite(n) || n < 0)
35
+ return;
36
+ const usage = readUsage();
37
+ writeUsage({ ...usage, bytesUsed: usage.bytesUsed + n });
38
+ }
39
+ export function getUsage() {
40
+ return readUsage();
41
+ }
42
+ export function isOverSoftThreshold() {
43
+ return readUsage().bytesUsed >= LSE_SOFT_BYTE_THRESHOLD;
44
+ }
45
+ export function markExhausted() {
46
+ writeUsage({ month: currentMonth(), bytesUsed: LSE_MONTHLY_BYTE_CAP });
47
+ }
@@ -134,4 +134,3 @@ function dateKey(date) {
134
134
  const day = String(date.getUTCDate()).padStart(2, "0");
135
135
  return `${year}-${month}-${day}`;
136
136
  }
137
- //# sourceMappingURL=market-calendar.js.map
@@ -56,4 +56,3 @@ export async function ensureOpenCandleNativeDependencies() {
56
56
  },
57
57
  });
58
58
  }
59
- //# sourceMappingURL=native-dependencies.js.map
@@ -17,4 +17,3 @@ export function assertSupportedNodeVersion(version) {
17
17
  if (message)
18
18
  throw new Error(message);
19
19
  }
20
- //# sourceMappingURL=node-version.js.map
@@ -26,4 +26,3 @@ export function openInBrowser(url) {
26
26
  child.unref();
27
27
  });
28
28
  }
29
- //# sourceMappingURL=open-url.js.map
@@ -41,4 +41,3 @@ export function getLogsDir() {
41
41
  export function getBrowserProfileDir() {
42
42
  return resolveOpenCandlePath("browser-profile");
43
43
  }
44
- //# sourceMappingURL=opencandle-paths.js.map
@@ -50,4 +50,4 @@ rateLimiter.configure("tradingview", 5, 1); // 5 burst, 1 req/s sustained
50
50
  rateLimiter.configure("polymarket", 10, 5); // 10 burst, 5 req/s sustained
51
51
  // SEC EDGAR fair-access guideline is 10 req/s; stay below it.
52
52
  rateLimiter.configure("sec_edgar", 5, 5); // 5 burst, 5 req/s sustained
53
- //# sourceMappingURL=rate-limiter.js.map
53
+ rateLimiter.configure("lse", 100, 1.66); // 100 req/min (free tier)
@@ -20,4 +20,3 @@ export function rsiThreshold(period, threshold, direction) {
20
20
  export function volumeSpike(lookbackPeriod, multiplier) {
21
21
  return { lookback_period: lookbackPeriod, multiplier };
22
22
  }
23
- //# sourceMappingURL=alert-conditions.js.map
@@ -3,6 +3,7 @@ import type { MarketStateService } from "./service.js";
3
3
  export interface AlertQuoteObservation {
4
4
  symbol: string;
5
5
  value: number;
6
+ observationDetails?: Record<string, number>;
6
7
  sourceProvider: string;
7
8
  observedAt: string;
8
9
  providerDataAt?: string | null;
@@ -161,6 +161,7 @@ export async function runAlertChecks(service, options) {
161
161
  const observed = {
162
162
  value: observation.value,
163
163
  field: observationField(item.rule),
164
+ ...observation.observationDetails,
164
165
  at: now,
165
166
  observedAt: now,
166
167
  providerDataAt: observation.providerDataAt ?? null,
@@ -324,7 +325,7 @@ async function loadHistoricalObservation(item, providers, providerBudget, histor
324
325
  const latestSma = sma.at(-1);
325
326
  if (latestClose == null || latestSma == null)
326
327
  return null;
327
- return historicalObservation(item.instrument.symbol, latestClose - latestSma, bars.at(-1)?.date ?? null, now);
328
+ return historicalObservation(item.instrument.symbol, latestClose - latestSma, bars.at(-1)?.date ?? null, now, { price: latestClose, sma: latestSma });
328
329
  }
329
330
  if (item.rule.conditionType === "percent_move") {
330
331
  const bars = await loadHistory(item.instrument.symbol, "5d", "1d", providers, providerBudget, historyCache, now);
@@ -345,7 +346,7 @@ async function loadHistoricalObservation(item, providers, providerBudget, histor
345
346
  const slow = computeSMA(closes, slowPeriod).at(-1);
346
347
  if (fast == null || slow == null)
347
348
  return null;
348
- return historicalObservation(item.instrument.symbol, roundObservation(fast - slow), bars.at(-1)?.date ?? null, now);
349
+ return historicalObservation(item.instrument.symbol, roundObservation(fast - slow), bars.at(-1)?.date ?? null, now, { fast_sma: fast, slow_sma: slow });
349
350
  }
350
351
  if (item.rule.conditionType === "rsi_threshold") {
351
352
  const condition = item.rule.conditionJson;
@@ -412,10 +413,11 @@ function isProviderWideFailure(reason) {
412
413
  normalized.includes("econn") ||
413
414
  normalized.includes("enotfound"));
414
415
  }
415
- function historicalObservation(symbol, value, providerDataAt, now) {
416
+ function historicalObservation(symbol, value, providerDataAt, now, observationDetails) {
416
417
  return {
417
418
  symbol,
418
419
  value,
420
+ observationDetails,
419
421
  sourceProvider: "yahoo",
420
422
  observedAt: now,
421
423
  providerDataAt,
@@ -631,4 +633,3 @@ function alertDedupeKey(rule, observation, triggerType) {
631
633
  observation.value,
632
634
  ].join(":");
633
635
  }
634
- //# sourceMappingURL=alert-runner.js.map
@@ -165,4 +165,3 @@ function numberPart(parts, type) {
165
165
  throw new Error(`Missing ${type} in formatted date`);
166
166
  return Number(value);
167
167
  }
168
- //# sourceMappingURL=daily-report.js.map
@@ -116,4 +116,3 @@ async function runDueReports(service, params) {
116
116
  }
117
117
  return runs;
118
118
  }
119
- //# sourceMappingURL=local-automation-service.js.map
@@ -136,4 +136,3 @@ function webhookUrlHost(raw) {
136
136
  return "(invalid URL)";
137
137
  }
138
138
  }
139
- //# sourceMappingURL=notification-delivery.js.map
@@ -12,4 +12,3 @@ export async function resolveInstrumentForMutation(symbol) {
12
12
  throw error;
13
13
  }
14
14
  }
15
- //# sourceMappingURL=resolve-for-mutation.js.map
@@ -86,4 +86,3 @@ function assetTypeFromQuoteType(quoteType, symbol) {
86
86
  return "equity";
87
87
  return inferAssetType(symbol.toUpperCase());
88
88
  }
89
- //# sourceMappingURL=resolve.js.map
@@ -55,12 +55,6 @@ export interface WatchlistItemRecord {
55
55
  assetType: string;
56
56
  exchange: string | null;
57
57
  currency: string | null;
58
- targetPrice: number | null;
59
- stopPrice: number | null;
60
- priceCurrency: string | null;
61
- thesis: string | null;
62
- notes: string | null;
63
- tags: string[] | null;
64
58
  source: string | null;
65
59
  sourceRowId: string | null;
66
60
  sourceMetadata: unknown;
@@ -226,32 +220,28 @@ export declare class MarketStateService {
226
220
  private readonly db;
227
221
  constructor(db: Database.Database);
228
222
  getDefaultWatchlist(): CollectionRecord;
223
+ listWatchlists(): CollectionRecord[];
224
+ createWatchlist(name: string): CollectionRecord;
225
+ getWatchlistByName(name: string): CollectionRecord | null;
226
+ renameWatchlist(currentName: string, nextName: string): CollectionRecord;
227
+ deleteWatchlist(name: string): CollectionRecord;
228
+ getOrCreateWatchlist(name?: string | null): CollectionRecord;
229
229
  getDefaultPortfolio(): CollectionRecord;
230
+ listPortfolios(): CollectionRecord[];
231
+ createPortfolio(name: string, baseCurrency?: string): CollectionRecord;
232
+ getPortfolioByName(name: string): CollectionRecord | null;
233
+ renamePortfolio(currentName: string, nextName: string): CollectionRecord;
234
+ getOrCreatePortfolio(name?: string | null): CollectionRecord;
230
235
  findInstrumentByAlias(lookup: InstrumentAliasLookup): InstrumentRecord | null;
231
236
  addWatchlistItem(params: {
232
237
  instrument: InstrumentInput;
233
238
  watchlistId?: number;
234
- targetPrice?: number | null;
235
- stopPrice?: number | null;
236
- priceCurrency?: string | null;
237
- thesis?: string | null;
238
- notes?: string | null;
239
- tags?: string[];
240
239
  source?: string;
241
240
  sourceRowId?: string;
242
241
  sourceMetadata?: unknown;
243
242
  }): WatchlistItemRecord;
244
243
  listWatchlistItems(watchlistId?: number): WatchlistItemRecord[];
245
244
  removeWatchlistItemBySymbol(symbol: string, watchlistId?: number): boolean;
246
- updateWatchlistItemBySymbol(symbol: string, params: {
247
- watchlistId?: number;
248
- targetPrice?: number | null;
249
- stopPrice?: number | null;
250
- priceCurrency?: string | null;
251
- thesis?: string | null;
252
- notes?: string | null;
253
- tags?: string[];
254
- }): WatchlistItemRecord | null;
255
245
  addPortfolioLot(params: {
256
246
  instrument: InstrumentInput;
257
247
  portfolioId?: number;
@@ -300,6 +290,21 @@ export declare class MarketStateService {
300
290
  }): AlertRuleRecord;
301
291
  listAlertRules(): AlertRuleRecord[];
302
292
  setAlertRuleEnabled(id: number, enabled: boolean): AlertRuleRecord | null;
293
+ updateAlertRule(id: number, params: {
294
+ scopeType?: AlertScopeType;
295
+ scopeId?: number | null;
296
+ instrumentId?: number | null;
297
+ conditionType?: string;
298
+ conditionVersion?: number;
299
+ condition?: unknown;
300
+ timeframe?: string;
301
+ enabled?: boolean;
302
+ checkIntervalSeconds?: number | null;
303
+ nextCheckAt?: string | null;
304
+ cooldownSeconds?: number | null;
305
+ retriggerMode?: string;
306
+ }): AlertRuleRecord | null;
307
+ deleteAlertRule(id: number): AlertRuleRecord | null;
303
308
  getInstrument(id: number): InstrumentRecord | null;
304
309
  upsertInstrumentRecord(input: InstrumentInput): InstrumentRecord;
305
310
  acquireAutomationRunnerLease(params: {
@@ -15,6 +15,75 @@ export class MarketStateService {
15
15
  .get();
16
16
  return mapCollection(row);
17
17
  }
18
+ listWatchlists() {
19
+ this.getDefaultWatchlist();
20
+ const rows = this.db
21
+ .prepare("SELECT * FROM watchlists ORDER BY is_default DESC, name COLLATE NOCASE")
22
+ .all();
23
+ return rows.map(mapCollection);
24
+ }
25
+ createWatchlist(name) {
26
+ const normalized = normalizeCollectionName(name);
27
+ const now = new Date().toISOString();
28
+ this.db
29
+ .prepare(`INSERT OR IGNORE INTO watchlists (name, is_default, created_at, updated_at)
30
+ VALUES (?, 0, ?, ?)`)
31
+ .run(normalized, now, now);
32
+ const row = this.db
33
+ .prepare("SELECT * FROM watchlists WHERE name = ? LIMIT 1")
34
+ .get(normalized);
35
+ return mapCollection(row);
36
+ }
37
+ getWatchlistByName(name) {
38
+ const normalized = normalizeCollectionName(name);
39
+ const row = this.db
40
+ .prepare("SELECT * FROM watchlists WHERE name = ? LIMIT 1")
41
+ .get(normalized);
42
+ return row == null ? null : mapCollection(row);
43
+ }
44
+ renameWatchlist(currentName, nextName) {
45
+ const current = this.getWatchlistByName(currentName);
46
+ if (current == null)
47
+ throw new Error(`watchlist ${currentName.trim()} not found.`);
48
+ const normalizedNext = normalizeCollectionName(nextName);
49
+ const now = new Date().toISOString();
50
+ this.db
51
+ .prepare("UPDATE watchlists SET name = ?, updated_at = ? WHERE id = ?")
52
+ .run(normalizedNext, now, current.id);
53
+ const row = this.db.prepare("SELECT * FROM watchlists WHERE id = ? LIMIT 1").get(current.id);
54
+ if (row == null)
55
+ throw new Error("renamed watchlist could not be loaded.");
56
+ return mapCollection(row);
57
+ }
58
+ deleteWatchlist(name) {
59
+ const watchlists = this.listWatchlists();
60
+ const current = this.getWatchlistByName(name);
61
+ if (current == null)
62
+ throw new Error(`watchlist ${name.trim()} not found.`);
63
+ if (watchlists.length <= 1)
64
+ throw new Error("cannot delete the last remaining watchlist.");
65
+ const selected = watchlists.find((watchlist) => watchlist.id !== current.id);
66
+ if (selected == null)
67
+ throw new Error("replacement watchlist could not be selected.");
68
+ const selectAndDelete = this.db.transaction(() => {
69
+ if (current.isDefault) {
70
+ this.db.prepare("UPDATE watchlists SET is_default = 0 WHERE id = ?").run(current.id);
71
+ this.db.prepare("UPDATE watchlists SET is_default = 1 WHERE id = ?").run(selected.id);
72
+ }
73
+ this.db.prepare("DELETE FROM watchlists WHERE id = ?").run(current.id);
74
+ });
75
+ selectAndDelete();
76
+ const row = this.db.prepare("SELECT * FROM watchlists WHERE id = ? LIMIT 1").get(selected.id);
77
+ if (row == null)
78
+ throw new Error("replacement watchlist could not be loaded.");
79
+ return mapCollection(row);
80
+ }
81
+ getOrCreateWatchlist(name) {
82
+ const normalized = normalizeNullable(name);
83
+ if (normalized == null)
84
+ return this.getDefaultWatchlist();
85
+ return this.getWatchlistByName(normalized) ?? this.createWatchlist(normalized);
86
+ }
18
87
  getDefaultPortfolio() {
19
88
  const now = new Date().toISOString();
20
89
  this.db
@@ -30,6 +99,60 @@ export class MarketStateService {
30
99
  baseCurrency: row.base_currency,
31
100
  };
32
101
  }
102
+ listPortfolios() {
103
+ this.getDefaultPortfolio();
104
+ const rows = this.db
105
+ .prepare("SELECT * FROM portfolios ORDER BY is_default DESC, name COLLATE NOCASE")
106
+ .all();
107
+ return rows.map((row) => ({ ...mapCollection(row), baseCurrency: row.base_currency }));
108
+ }
109
+ createPortfolio(name, baseCurrency = "USD") {
110
+ const normalized = normalizeCollectionName(name);
111
+ const existing = this.getPortfolioByName(normalized);
112
+ if (existing != null)
113
+ return existing;
114
+ const normalizedCurrency = baseCurrency.trim().toUpperCase() || "USD";
115
+ const now = new Date().toISOString();
116
+ this.db
117
+ .prepare(`INSERT OR IGNORE INTO portfolios (name, base_currency, is_default, created_at, updated_at)
118
+ VALUES (?, ?, 0, ?, ?)`)
119
+ .run(normalized, normalizedCurrency, now, now);
120
+ const row = this.db
121
+ .prepare("SELECT * FROM portfolios WHERE name = ? LIMIT 1")
122
+ .get(normalized);
123
+ return { ...mapCollection(row), baseCurrency: row.base_currency };
124
+ }
125
+ getPortfolioByName(name) {
126
+ const normalized = normalizeCollectionName(name);
127
+ const row = this.db
128
+ .prepare("SELECT * FROM portfolios WHERE name = ? LIMIT 1")
129
+ .get(normalized);
130
+ return row == null ? null : { ...mapCollection(row), baseCurrency: row.base_currency };
131
+ }
132
+ renamePortfolio(currentName, nextName) {
133
+ const current = this.getPortfolioByName(currentName);
134
+ if (current == null)
135
+ throw new Error(`portfolio ${currentName.trim()} not found.`);
136
+ const normalizedNext = normalizeCollectionName(nextName);
137
+ const existing = this.getPortfolioByName(normalizedNext);
138
+ if (existing != null && existing.id !== current.id) {
139
+ throw new Error(`portfolio ${normalizedNext} already exists.`);
140
+ }
141
+ const now = new Date().toISOString();
142
+ this.db
143
+ .prepare("UPDATE portfolios SET name = ?, updated_at = ? WHERE id = ?")
144
+ .run(normalizedNext, now, current.id);
145
+ const row = this.db.prepare("SELECT * FROM portfolios WHERE id = ? LIMIT 1").get(current.id);
146
+ if (row == null)
147
+ throw new Error("renamed portfolio could not be loaded.");
148
+ return { ...mapCollection(row), baseCurrency: row.base_currency };
149
+ }
150
+ getOrCreatePortfolio(name) {
151
+ const normalized = normalizeNullable(name);
152
+ if (normalized == null)
153
+ return this.getDefaultPortfolio();
154
+ return this.getPortfolioByName(normalized) ?? this.createPortfolio(normalized);
155
+ }
33
156
  findInstrumentByAlias(lookup) {
34
157
  const source = normalizeSource(lookup.source);
35
158
  const sourceId = normalizeNullable(lookup.sourceId);
@@ -66,11 +189,9 @@ export class MarketStateService {
66
189
  if (existing) {
67
190
  this.db
68
191
  .prepare(`UPDATE watchlist_items
69
- SET target_price = ?, stop_price = ?, price_currency = ?, thesis = ?,
70
- notes = ?, tags_json = ?, source = ?, source_row_id = ?,
71
- source_metadata_json = ?, updated_at = ?
192
+ SET source = ?, source_row_id = ?, source_metadata_json = ?, updated_at = ?
72
193
  WHERE id = ?`)
73
- .run(params.targetPrice === undefined ? existing.target_price : params.targetPrice, params.stopPrice === undefined ? existing.stop_price : params.stopPrice, params.priceCurrency === undefined ? existing.price_currency : params.priceCurrency, params.thesis === undefined ? existing.thesis : params.thesis, params.notes === undefined ? existing.notes : params.notes, params.tags == null ? existing.tags_json : JSON.stringify(params.tags), params.source === undefined ? existing.source : normalizeNullable(params.source), params.sourceRowId === undefined
194
+ .run(params.source === undefined ? existing.source : normalizeNullable(params.source), params.sourceRowId === undefined
74
195
  ? existing.source_row_id
75
196
  : normalizeNullable(params.sourceRowId), params.sourceMetadata === undefined
76
197
  ? existing.source_metadata_json
@@ -81,12 +202,11 @@ export class MarketStateService {
81
202
  }
82
203
  const result = this.db
83
204
  .prepare(`INSERT INTO watchlist_items (
84
- watchlist_id, instrument_id, thesis, notes, tags_json,
85
- target_price, stop_price, price_currency, source, source_row_id,
86
- source_metadata_json, created_at, updated_at
205
+ watchlist_id, instrument_id, source, source_row_id, source_metadata_json,
206
+ created_at, updated_at
87
207
  )
88
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
89
- .run(watchlistId, instrument.id, params.thesis ?? null, params.notes ?? null, params.tags == null ? null : JSON.stringify(params.tags), params.targetPrice ?? null, params.stopPrice ?? null, params.priceCurrency ?? params.instrument.currency ?? null, normalizeNullable(params.source), normalizeNullable(params.sourceRowId), params.sourceMetadata == null ? null : JSON.stringify(params.sourceMetadata), now, now);
208
+ VALUES (?, ?, ?, ?, ?, ?, ?)`)
209
+ .run(watchlistId, instrument.id, normalizeNullable(params.source), normalizeNullable(params.sourceRowId), params.sourceMetadata == null ? null : JSON.stringify(params.sourceMetadata), now, now);
90
210
  return Number(result.lastInsertRowid);
91
211
  });
92
212
  return this.getWatchlistItem(tx());
@@ -109,26 +229,6 @@ export class MarketStateService {
109
229
  .run(watchlistId, symbol.trim().toUpperCase());
110
230
  return result.changes > 0;
111
231
  }
112
- updateWatchlistItemBySymbol(symbol, params) {
113
- const watchlistId = params.watchlistId ?? this.getDefaultWatchlist().id;
114
- const existing = this.db
115
- .prepare(`SELECT wi.*
116
- FROM watchlist_items wi
117
- JOIN instruments i ON i.id = wi.instrument_id
118
- WHERE wi.watchlist_id = ? AND i.symbol = ?
119
- LIMIT 1`)
120
- .get(watchlistId, symbol.trim().toUpperCase());
121
- if (existing == null)
122
- return null;
123
- const now = new Date().toISOString();
124
- this.db
125
- .prepare(`UPDATE watchlist_items
126
- SET target_price = ?, stop_price = ?, price_currency = ?, thesis = ?,
127
- notes = ?, tags_json = ?, updated_at = ?
128
- WHERE id = ?`)
129
- .run(params.targetPrice === undefined ? existing.target_price : params.targetPrice, params.stopPrice === undefined ? existing.stop_price : params.stopPrice, params.priceCurrency === undefined ? existing.price_currency : params.priceCurrency, params.thesis === undefined ? existing.thesis : params.thesis, params.notes === undefined ? existing.notes : params.notes, params.tags == null ? existing.tags_json : JSON.stringify(params.tags), now, existing.id);
130
- return this.getWatchlistItem(existing.id);
131
- }
132
232
  addPortfolioLot(params) {
133
233
  assertPositiveFinitePortfolioLotNumber(params.quantity, "quantity");
134
234
  assertPositiveFinitePortfolioLotNumber(params.avgCost, "average cost");
@@ -234,6 +334,46 @@ export class MarketStateService {
234
334
  return null;
235
335
  return this.getAlertRule(id);
236
336
  }
337
+ updateAlertRule(id, params) {
338
+ const existing = this.db.prepare("SELECT * FROM alert_rules WHERE id = ?").get(id);
339
+ if (existing == null)
340
+ return null;
341
+ const now = new Date().toISOString();
342
+ this.db
343
+ .prepare(`UPDATE alert_rules
344
+ SET scope_type = ?,
345
+ scope_id = ?,
346
+ instrument_id = ?,
347
+ condition_type = ?,
348
+ condition_version = ?,
349
+ condition_json = ?,
350
+ timeframe = ?,
351
+ enabled = ?,
352
+ check_interval_seconds = ?,
353
+ next_check_at = ?,
354
+ last_checked_at = NULL,
355
+ last_observed_json = NULL,
356
+ status = 'active',
357
+ retrigger_mode = ?,
358
+ last_condition_state = 'unknown',
359
+ rule_revision = rule_revision + 1,
360
+ arm_cycle_id = arm_cycle_id + 1,
361
+ cooldown_seconds = ?,
362
+ last_triggered_at = NULL,
363
+ updated_at = ?
364
+ WHERE id = ?`)
365
+ .run(params.scopeType ?? existing.scope_type, params.scopeId === undefined ? existing.scope_id : params.scopeId, params.instrumentId === undefined ? existing.instrument_id : params.instrumentId, params.conditionType ?? existing.condition_type, params.conditionVersion ?? existing.condition_version, JSON.stringify(params.condition === undefined ? JSON.parse(existing.condition_json) : params.condition), params.timeframe ?? existing.timeframe, params.enabled === undefined ? existing.enabled : params.enabled ? 1 : 0, params.checkIntervalSeconds === undefined
366
+ ? existing.check_interval_seconds
367
+ : params.checkIntervalSeconds, params.nextCheckAt === undefined ? existing.next_check_at : params.nextCheckAt, params.retriggerMode ?? existing.retrigger_mode, params.cooldownSeconds === undefined ? existing.cooldown_seconds : params.cooldownSeconds, now, id);
368
+ return this.getAlertRule(id);
369
+ }
370
+ deleteAlertRule(id) {
371
+ const existing = this.db.prepare("SELECT * FROM alert_rules WHERE id = ?").get(id);
372
+ if (existing == null)
373
+ return null;
374
+ this.db.prepare("DELETE FROM alert_rules WHERE id = ?").run(id);
375
+ return mapAlertRule(existing);
376
+ }
237
377
  getInstrument(id) {
238
378
  const row = this.db.prepare("SELECT * FROM instruments WHERE id = ?").get(id);
239
379
  return row == null ? null : mapInstrument(row);
@@ -811,12 +951,6 @@ function mapWatchlistItem(row) {
811
951
  assetType: row.asset_type,
812
952
  exchange: row.exchange,
813
953
  currency: row.currency,
814
- targetPrice: row.target_price,
815
- stopPrice: row.stop_price,
816
- priceCurrency: row.price_currency,
817
- thesis: row.thesis,
818
- notes: row.notes,
819
- tags: row.tags_json == null ? null : JSON.parse(row.tags_json),
820
954
  source: row.source,
821
955
  sourceRowId: row.source_row_id,
822
956
  sourceMetadata: row.source_metadata_json == null ? null : JSON.parse(row.source_metadata_json),
@@ -824,6 +958,12 @@ function mapWatchlistItem(row) {
824
958
  updatedAt: row.updated_at,
825
959
  };
826
960
  }
961
+ function normalizeCollectionName(name) {
962
+ const normalized = name.trim();
963
+ if (!normalized)
964
+ throw new Error("watchlist name is required.");
965
+ return normalized;
966
+ }
827
967
  function mapPortfolioLot(row) {
828
968
  return {
829
969
  id: row.id,
@@ -1033,4 +1173,3 @@ function normalizeExchange(value) {
1033
1173
  function normalizeAssetType(value) {
1034
1174
  return normalizeNullable(value)?.toLowerCase() ?? null;
1035
1175
  }
1036
- //# sourceMappingURL=service.js.map
@@ -14,18 +14,7 @@ export function formatWatchlistSummary(items, limit = 8) {
14
14
  return [];
15
15
  const lines = ["Watchlist:"];
16
16
  for (const item of items.slice(0, limit)) {
17
- const parts = [
18
- item.targetPrice == null
19
- ? null
20
- : `target ${formatMoney(item.targetPrice, item.priceCurrency ?? item.currency ?? "USD")}`,
21
- item.stopPrice == null
22
- ? null
23
- : `stop ${formatMoney(item.stopPrice, item.priceCurrency ?? item.currency ?? "USD")}`,
24
- item.thesis ? `thesis: ${item.thesis}` : null,
25
- item.tags && item.tags.length > 0 ? `tags: ${item.tags.join(", ")}` : null,
26
- item.notes ? `notes: ${item.notes}` : null,
27
- ].filter((part) => part != null);
28
- lines.push(`- ${item.symbol}${item.name ? ` (${item.name})` : ""}${parts.length > 0 ? ` — ${parts.join("; ")}` : ""}`);
17
+ lines.push(`- ${item.symbol}${item.name ? ` (${item.name})` : ""}`);
29
18
  }
30
19
  return lines;
31
20
  }
@@ -67,4 +56,3 @@ function truncateText(value, maxLength) {
67
56
  return value;
68
57
  return `${value.slice(0, maxLength - 3)}...`;
69
58
  }
70
- //# sourceMappingURL=summaries.js.map
@@ -5,4 +5,3 @@ export { getSchemaVersion, getTableNames, initDatabase, initDefaultDatabase } fr
5
5
  export { MemoryStorage } from "./storage.js";
6
6
  export { clearDefault, getAllDefaults, getDefaults, setDefault } from "./tool-defaults.js";
7
7
  export { isStale, NEVER_TRUST_FROM_MEMORY, STALENESS_THRESHOLDS } from "./types.js";
8
- //# sourceMappingURL=index.js.map
@@ -146,4 +146,3 @@ function tryParseValue(json) {
146
146
  return json;
147
147
  }
148
148
  }
149
- //# sourceMappingURL=manager.js.map
@@ -85,4 +85,3 @@ export function extractPreferences(input) {
85
85
  }
86
86
  return preferences;
87
87
  }
88
- //# sourceMappingURL=preference-extractor.js.map
@@ -61,4 +61,3 @@ function tryParseJson(json) {
61
61
  return json;
62
62
  }
63
63
  }
64
- //# sourceMappingURL=retrieval.js.map