opencandle 0.11.0 → 0.12.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 (663) hide show
  1. package/README.md +25 -28
  2. package/dist/analysts/contracts.js +0 -1
  3. package/dist/analysts/orchestrator.d.ts +2 -0
  4. package/dist/analysts/orchestrator.js +19 -1
  5. package/dist/cli-main.js +13 -7
  6. package/dist/cli-options.d.ts +4 -0
  7. package/dist/cli-options.js +33 -0
  8. package/dist/cli.js +8 -3
  9. package/dist/config.js +0 -1
  10. package/dist/doctor/cli-command.js +2 -1
  11. package/dist/doctor/render.js +0 -1
  12. package/dist/doctor/report.js +41 -12
  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 +263 -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/http-routes.d.ts +69 -0
  24. package/dist/gui/server/http-routes.js +1008 -0
  25. package/dist/gui/server/invoke-tool.d.ts +47 -0
  26. package/dist/gui/server/invoke-tool.js +373 -0
  27. package/dist/gui/server/live-chat-event-adapter.d.ts +19 -0
  28. package/dist/gui/server/live-chat-event-adapter.js +206 -0
  29. package/dist/gui/server/local-session-coordinator.d.ts +26 -0
  30. package/dist/gui/server/local-session-coordinator.js +53 -0
  31. package/dist/gui/server/market-state-api.d.ts +138 -0
  32. package/dist/gui/server/market-state-api.js +355 -0
  33. package/dist/gui/server/model-setup.d.ts +64 -0
  34. package/dist/gui/server/model-setup.js +150 -0
  35. package/dist/gui/server/private-api-access.d.ts +6 -0
  36. package/dist/gui/server/private-api-access.js +53 -0
  37. package/dist/gui/server/projector.d.ts +49 -0
  38. package/dist/gui/server/projector.js +296 -0
  39. package/dist/gui/server/prompt-observation.d.ts +8 -0
  40. package/dist/gui/server/prompt-observation.js +43 -0
  41. package/dist/gui/server/quote-snapshot-store.d.ts +14 -0
  42. package/dist/gui/server/quote-snapshot-store.js +49 -0
  43. package/dist/gui/server/server.d.ts +1 -0
  44. package/dist/gui/server/server.js +259 -0
  45. package/dist/gui/server/session-actions.d.ts +60 -0
  46. package/dist/gui/server/session-actions.js +218 -0
  47. package/dist/gui/server/session-entry-wait.d.ts +27 -0
  48. package/dist/gui/server/session-entry-wait.js +129 -0
  49. package/dist/gui/server/session-list.d.ts +2 -0
  50. package/dist/gui/server/session-list.js +11 -0
  51. package/dist/gui/server/shutdown.d.ts +10 -0
  52. package/dist/gui/server/shutdown.js +29 -0
  53. package/dist/gui/server/tool-invoke-ack.d.ts +17 -0
  54. package/dist/gui/server/tool-invoke-ack.js +26 -0
  55. package/dist/gui/server/tool-metadata.d.ts +93 -0
  56. package/dist/gui/server/tool-metadata.js +148 -0
  57. package/dist/gui/server/websocket.d.ts +9 -0
  58. package/dist/gui/server/websocket.js +124 -0
  59. package/dist/gui/server/writer-lock.d.ts +1 -0
  60. package/dist/gui/server/writer-lock.js +1 -0
  61. package/dist/gui/server/ws-hub.d.ts +50 -0
  62. package/dist/gui/server/ws-hub.js +284 -0
  63. package/dist/gui/shared/chat-events.d.ts +174 -0
  64. package/dist/gui/shared/chat-events.js +13 -0
  65. package/dist/gui/shared/event-reducer.d.ts +3 -0
  66. package/dist/gui/shared/event-reducer.js +187 -0
  67. package/dist/index.js +0 -1
  68. package/dist/infra/cache.d.ts +6 -0
  69. package/dist/infra/cache.js +16 -7
  70. package/dist/infra/freshness.d.ts +21 -0
  71. package/dist/infra/freshness.js +118 -0
  72. package/dist/infra/http-client.js +1 -2
  73. package/dist/infra/index.js +0 -1
  74. package/dist/infra/market-calendar.d.ts +14 -0
  75. package/dist/infra/market-calendar.js +136 -0
  76. package/dist/infra/native-dependencies.js +0 -1
  77. package/dist/infra/node-version.js +0 -1
  78. package/dist/infra/open-url.js +0 -1
  79. package/dist/infra/opencandle-paths.js +0 -1
  80. package/dist/infra/rate-limiter.js +1 -1
  81. package/dist/market-state/alert-conditions.js +0 -1
  82. package/dist/market-state/alert-runner.d.ts +1 -0
  83. package/dist/market-state/alert-runner.js +5 -4
  84. package/dist/market-state/daily-report.js +0 -1
  85. package/dist/market-state/local-automation-service.js +0 -1
  86. package/dist/market-state/notification-delivery.js +0 -1
  87. package/dist/market-state/resolve-for-mutation.js +0 -1
  88. package/dist/market-state/resolve.js +0 -1
  89. package/dist/market-state/service.d.ts +26 -21
  90. package/dist/market-state/service.js +175 -36
  91. package/dist/market-state/summaries.d.ts +8 -0
  92. package/dist/market-state/summaries.js +58 -0
  93. package/dist/memory/index.js +0 -1
  94. package/dist/memory/manager.js +0 -1
  95. package/dist/memory/preference-extractor.js +0 -1
  96. package/dist/memory/retrieval.js +0 -1
  97. package/dist/memory/sqlite.js +60 -11
  98. package/dist/memory/storage.js +0 -1
  99. package/dist/memory/tool-defaults.js +0 -1
  100. package/dist/memory/types.js +0 -1
  101. package/dist/monitor.js +0 -1
  102. package/dist/onboarding/connect.js +0 -1
  103. package/dist/onboarding/credential-interceptor.js +0 -1
  104. package/dist/onboarding/degradation-accumulator.js +0 -1
  105. package/dist/onboarding/prompt-user.d.ts +1 -1
  106. package/dist/onboarding/prompt-user.js +0 -1
  107. package/dist/onboarding/provider-status.js +0 -1
  108. package/dist/onboarding/providers.d.ts +25 -1
  109. package/dist/onboarding/providers.js +26 -1
  110. package/dist/onboarding/state.js +0 -1
  111. package/dist/onboarding/tool-helpers.js +0 -1
  112. package/dist/onboarding/tool-tags.js +0 -1
  113. package/dist/onboarding/validate-model-key.d.ts +17 -0
  114. package/dist/onboarding/validate-model-key.js +54 -0
  115. package/dist/onboarding/validation.js +0 -1
  116. package/dist/pi/opencandle-extension.js +46 -7
  117. package/dist/pi/session-action-dedupe.js +0 -1
  118. package/dist/pi/session-storage.js +0 -1
  119. package/dist/pi/session-writer-lock.js +0 -1
  120. package/dist/pi/session.js +0 -1
  121. package/dist/pi/setup.d.ts +2 -0
  122. package/dist/pi/setup.js +10 -3
  123. package/dist/pi/tool-adapter.js +0 -1
  124. package/dist/pi/tui-session-coordinator.js +0 -1
  125. package/dist/prompts/context-builder.js +1 -2
  126. package/dist/prompts/disclaimer.js +0 -1
  127. package/dist/prompts/policy-cards.js +0 -1
  128. package/dist/prompts/sections.js +0 -1
  129. package/dist/prompts/symbol-preflight.js +0 -1
  130. package/dist/prompts/workflow-prompts.js +0 -1
  131. package/dist/providers/alpha-vantage.js +8 -3
  132. package/dist/providers/coingecko.js +1 -1
  133. package/dist/providers/errors.js +0 -1
  134. package/dist/providers/exa-search.js +11 -10
  135. package/dist/providers/external-tool-command.js +0 -1
  136. package/dist/providers/external-tool-error.js +0 -1
  137. package/dist/providers/fear-greed.js +0 -1
  138. package/dist/providers/finnhub.js +0 -1
  139. package/dist/providers/fred.js +0 -1
  140. package/dist/providers/index.js +0 -1
  141. package/dist/providers/polymarket.d.ts +2 -0
  142. package/dist/providers/polymarket.js +162 -0
  143. package/dist/providers/provider-credential-error.js +0 -1
  144. package/dist/providers/reddit-cli.js +0 -1
  145. package/dist/providers/reddit.js +0 -1
  146. package/dist/providers/sec-edgar.js +0 -1
  147. package/dist/providers/tradingview.js +1 -2
  148. package/dist/providers/twitter-cli.js +0 -1
  149. package/dist/providers/twitter.js +0 -1
  150. package/dist/providers/web-search.js +15 -12
  151. package/dist/providers/with-fallback.js +0 -1
  152. package/dist/providers/wrap-provider.js +5 -4
  153. package/dist/providers/yahoo-finance.d.ts +3 -0
  154. package/dist/providers/yahoo-finance.js +272 -13
  155. package/dist/routing/classify-intent.js +0 -1
  156. package/dist/routing/defaults.js +0 -1
  157. package/dist/routing/entity-extractor.js +18 -3
  158. package/dist/routing/fund-symbols.js +0 -1
  159. package/dist/routing/horizon.js +0 -1
  160. package/dist/routing/index.js +0 -1
  161. package/dist/routing/legacy-rule-router.js +0 -1
  162. package/dist/routing/planning.js +0 -1
  163. package/dist/routing/route-manifest.js +1 -2
  164. package/dist/routing/router-llm-client.d.ts +2 -2
  165. package/dist/routing/router-llm-client.js +18 -4
  166. package/dist/routing/router-prompt.js +0 -1
  167. package/dist/routing/router-types.js +0 -1
  168. package/dist/routing/router.d.ts +1 -1
  169. package/dist/routing/router.js +274 -6
  170. package/dist/routing/slot-resolver.d.ts +1 -0
  171. package/dist/routing/slot-resolver.js +1 -2
  172. package/dist/routing/symbol-disambiguator.js +0 -1
  173. package/dist/routing/turn-context.js +0 -1
  174. package/dist/routing/types.js +0 -1
  175. package/dist/runtime/answer-contracts.js +0 -1
  176. package/dist/runtime/artifact-contracts.js +0 -1
  177. package/dist/runtime/evidence.d.ts +1 -0
  178. package/dist/runtime/evidence.js +0 -1
  179. package/dist/runtime/numeric-claims.d.ts +23 -0
  180. package/dist/runtime/numeric-claims.js +99 -0
  181. package/dist/runtime/planning-evidence.js +1 -77
  182. package/dist/runtime/prompt-step.d.ts +10 -1
  183. package/dist/runtime/prompt-step.js +116 -3
  184. package/dist/runtime/provider-tracker.js +0 -1
  185. package/dist/runtime/run-context.js +0 -1
  186. package/dist/runtime/session-coordinator.d.ts +11 -1
  187. package/dist/runtime/session-coordinator.js +352 -50
  188. package/dist/runtime/session-title.js +0 -1
  189. package/dist/runtime/tool-defaults-wrapper.js +0 -1
  190. package/dist/runtime/validation.d.ts +3 -1
  191. package/dist/runtime/validation.js +0 -1
  192. package/dist/runtime/workflow-events.d.ts +1 -1
  193. package/dist/runtime/workflow-events.js +0 -1
  194. package/dist/runtime/workflow-runner.d.ts +1 -0
  195. package/dist/runtime/workflow-runner.js +8 -3
  196. package/dist/runtime/workflow-types.d.ts +3 -0
  197. package/dist/runtime/workflow-types.js +0 -1
  198. package/dist/sentiment/adapters/finnhub.js +0 -1
  199. package/dist/sentiment/adapters/reddit.js +0 -1
  200. package/dist/sentiment/adapters/twitter.js +0 -1
  201. package/dist/sentiment/adapters/web.js +0 -1
  202. package/dist/sentiment/index.js +4 -2
  203. package/dist/sentiment/insights.js +0 -1
  204. package/dist/sentiment/keywords.js +0 -1
  205. package/dist/sentiment/pipeline.js +0 -1
  206. package/dist/sentiment/scorer.js +0 -1
  207. package/dist/sentiment/store.js +0 -1
  208. package/dist/sentiment/trends.js +0 -1
  209. package/dist/sentiment/types.js +0 -1
  210. package/dist/system-prompt.js +0 -1
  211. package/dist/tool-kit.js +0 -1
  212. package/dist/tools/fundamentals/company-overview.d.ts +1 -1
  213. package/dist/tools/fundamentals/company-overview.js +2 -1
  214. package/dist/tools/fundamentals/comps.d.ts +1 -0
  215. package/dist/tools/fundamentals/comps.js +25 -12
  216. package/dist/tools/fundamentals/dcf.js +183 -113
  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 +2 -1
  220. package/dist/tools/fundamentals/sec-filings.js +0 -1
  221. package/dist/tools/index.d.ts +117 -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.d.ts +8 -0
  225. package/dist/tools/macro/event-probabilities.js +120 -0
  226. package/dist/tools/macro/fear-greed.d.ts +1 -1
  227. package/dist/tools/macro/fear-greed.js +0 -1
  228. package/dist/tools/macro/fred-data.d.ts +1 -1
  229. package/dist/tools/macro/fred-data.js +2 -1
  230. package/dist/tools/market/crypto-history.js +0 -1
  231. package/dist/tools/market/crypto-price.d.ts +4 -1
  232. package/dist/tools/market/crypto-price.js +10 -2
  233. package/dist/tools/market/screen-stocks.js +14 -4
  234. package/dist/tools/market/search-ticker.js +1 -2
  235. package/dist/tools/market/stock-history.js +0 -1
  236. package/dist/tools/market/stock-quote.d.ts +4 -1
  237. package/dist/tools/market/stock-quote.js +9 -5
  238. package/dist/tools/options/greeks.js +0 -1
  239. package/dist/tools/options/option-chain.d.ts +4 -1
  240. package/dist/tools/options/option-chain.js +12 -2
  241. package/dist/tools/portfolio/alerts.d.ts +2 -1
  242. package/dist/tools/portfolio/alerts.js +228 -2
  243. package/dist/tools/portfolio/correlation.js +23 -5
  244. package/dist/tools/portfolio/daily-report.js +0 -1
  245. package/dist/tools/portfolio/holdings-overlap.js +0 -1
  246. package/dist/tools/portfolio/notifications.js +0 -1
  247. package/dist/tools/portfolio/risk-analysis.d.ts +1 -1
  248. package/dist/tools/portfolio/risk-analysis.js +1 -2
  249. package/dist/tools/portfolio/tracker.d.ts +3 -1
  250. package/dist/tools/portfolio/tracker.js +57 -10
  251. package/dist/tools/portfolio/watchlist.d.ts +3 -6
  252. package/dist/tools/portfolio/watchlist.js +101 -110
  253. package/dist/tools/sentiment/insight-format.js +0 -1
  254. package/dist/tools/sentiment/query-match.js +0 -1
  255. package/dist/tools/sentiment/reddit-sentiment.js +0 -1
  256. package/dist/tools/sentiment/sentiment-summary.js +8 -4
  257. package/dist/tools/sentiment/sentiment-trend.d.ts +5 -1
  258. package/dist/tools/sentiment/sentiment-trend.js +6 -2
  259. package/dist/tools/sentiment/twitter-sentiment.js +0 -1
  260. package/dist/tools/sentiment/untrusted-text.js +0 -1
  261. package/dist/tools/sentiment/web-search.d.ts +1 -1
  262. package/dist/tools/sentiment/web-search.js +0 -1
  263. package/dist/tools/sentiment/web-sentiment.js +0 -1
  264. package/dist/tools/technical/backtest.js +0 -1
  265. package/dist/tools/technical/indicators.js +1 -2
  266. package/dist/types/fundamentals.d.ts +1 -0
  267. package/dist/types/fundamentals.js +0 -1
  268. package/dist/types/index.d.ts +1 -0
  269. package/dist/types/index.js +0 -1
  270. package/dist/types/macro.js +0 -1
  271. package/dist/types/market.d.ts +8 -0
  272. package/dist/types/market.js +0 -1
  273. package/dist/types/options.d.ts +1 -0
  274. package/dist/types/options.js +0 -1
  275. package/dist/types/portfolio.js +0 -1
  276. package/dist/types/prediction-markets.d.ts +13 -0
  277. package/dist/types/prediction-markets.js +1 -0
  278. package/dist/types/sentiment.js +0 -1
  279. package/dist/workflows/compare-assets.js +0 -1
  280. package/dist/workflows/index.js +0 -1
  281. package/dist/workflows/options-screener.js +0 -1
  282. package/dist/workflows/portfolio-builder.js +0 -1
  283. package/gui/web/dist/assets/CatalogOverlay-CAc7e3Pf.js +1 -0
  284. package/gui/web/dist/assets/index-BOEKd9wT.css +2 -0
  285. package/gui/web/dist/assets/index-C-H05cQ2.js +65 -0
  286. package/gui/web/dist/index.html +2 -2
  287. package/package.json +16 -22
  288. package/dist/analysts/contracts.js.map +0 -1
  289. package/dist/analysts/orchestrator.js.map +0 -1
  290. package/dist/cli-main.js.map +0 -1
  291. package/dist/cli.js.map +0 -1
  292. package/dist/config.js.map +0 -1
  293. package/dist/doctor/cli-command.js.map +0 -1
  294. package/dist/doctor/render.js.map +0 -1
  295. package/dist/doctor/report.js.map +0 -1
  296. package/dist/index.js.map +0 -1
  297. package/dist/infra/cache.js.map +0 -1
  298. package/dist/infra/http-client.js.map +0 -1
  299. package/dist/infra/index.js.map +0 -1
  300. package/dist/infra/native-dependencies.js.map +0 -1
  301. package/dist/infra/node-version.js.map +0 -1
  302. package/dist/infra/open-url.js.map +0 -1
  303. package/dist/infra/opencandle-paths.js.map +0 -1
  304. package/dist/infra/rate-limiter.js.map +0 -1
  305. package/dist/market-state/alert-conditions.js.map +0 -1
  306. package/dist/market-state/alert-runner.js.map +0 -1
  307. package/dist/market-state/daily-report.js.map +0 -1
  308. package/dist/market-state/local-automation-service.js.map +0 -1
  309. package/dist/market-state/notification-delivery.js.map +0 -1
  310. package/dist/market-state/resolve-for-mutation.js.map +0 -1
  311. package/dist/market-state/resolve.js.map +0 -1
  312. package/dist/market-state/service.js.map +0 -1
  313. package/dist/memory/index.js.map +0 -1
  314. package/dist/memory/manager.js.map +0 -1
  315. package/dist/memory/preference-extractor.js.map +0 -1
  316. package/dist/memory/retrieval.js.map +0 -1
  317. package/dist/memory/sqlite.js.map +0 -1
  318. package/dist/memory/storage.js.map +0 -1
  319. package/dist/memory/tool-defaults.js.map +0 -1
  320. package/dist/memory/types.js.map +0 -1
  321. package/dist/monitor.js.map +0 -1
  322. package/dist/onboarding/connect.js.map +0 -1
  323. package/dist/onboarding/credential-interceptor.js.map +0 -1
  324. package/dist/onboarding/degradation-accumulator.js.map +0 -1
  325. package/dist/onboarding/prompt-user.js.map +0 -1
  326. package/dist/onboarding/provider-status.js.map +0 -1
  327. package/dist/onboarding/providers.js.map +0 -1
  328. package/dist/onboarding/state.js.map +0 -1
  329. package/dist/onboarding/tool-helpers.js.map +0 -1
  330. package/dist/onboarding/tool-tags.js.map +0 -1
  331. package/dist/onboarding/validation.js.map +0 -1
  332. package/dist/pi/opencandle-extension.js.map +0 -1
  333. package/dist/pi/session-action-dedupe.js.map +0 -1
  334. package/dist/pi/session-storage.js.map +0 -1
  335. package/dist/pi/session-writer-lock.js.map +0 -1
  336. package/dist/pi/session.js.map +0 -1
  337. package/dist/pi/setup.js.map +0 -1
  338. package/dist/pi/tool-adapter.js.map +0 -1
  339. package/dist/pi/tui-session-coordinator.js.map +0 -1
  340. package/dist/prompts/context-builder.js.map +0 -1
  341. package/dist/prompts/disclaimer.js.map +0 -1
  342. package/dist/prompts/policy-cards.js.map +0 -1
  343. package/dist/prompts/sections.js.map +0 -1
  344. package/dist/prompts/symbol-preflight.js.map +0 -1
  345. package/dist/prompts/workflow-prompts.js.map +0 -1
  346. package/dist/providers/alpha-vantage.js.map +0 -1
  347. package/dist/providers/coingecko.js.map +0 -1
  348. package/dist/providers/errors.js.map +0 -1
  349. package/dist/providers/exa-search.js.map +0 -1
  350. package/dist/providers/external-tool-command.js.map +0 -1
  351. package/dist/providers/external-tool-error.js.map +0 -1
  352. package/dist/providers/fear-greed.js.map +0 -1
  353. package/dist/providers/finnhub.js.map +0 -1
  354. package/dist/providers/fred.js.map +0 -1
  355. package/dist/providers/index.js.map +0 -1
  356. package/dist/providers/provider-credential-error.js.map +0 -1
  357. package/dist/providers/reddit-cli.js.map +0 -1
  358. package/dist/providers/reddit.js.map +0 -1
  359. package/dist/providers/sec-edgar.js.map +0 -1
  360. package/dist/providers/tradingview.js.map +0 -1
  361. package/dist/providers/twitter-cli.js.map +0 -1
  362. package/dist/providers/twitter.js.map +0 -1
  363. package/dist/providers/web-search.js.map +0 -1
  364. package/dist/providers/with-fallback.js.map +0 -1
  365. package/dist/providers/wrap-provider.js.map +0 -1
  366. package/dist/providers/yahoo-finance.js.map +0 -1
  367. package/dist/routing/classify-intent.js.map +0 -1
  368. package/dist/routing/defaults.js.map +0 -1
  369. package/dist/routing/entity-extractor.js.map +0 -1
  370. package/dist/routing/fund-symbols.js.map +0 -1
  371. package/dist/routing/horizon.js.map +0 -1
  372. package/dist/routing/index.js.map +0 -1
  373. package/dist/routing/legacy-rule-router.js.map +0 -1
  374. package/dist/routing/planning.js.map +0 -1
  375. package/dist/routing/route-manifest.js.map +0 -1
  376. package/dist/routing/router-llm-client.js.map +0 -1
  377. package/dist/routing/router-prompt.js.map +0 -1
  378. package/dist/routing/router-types.js.map +0 -1
  379. package/dist/routing/router.js.map +0 -1
  380. package/dist/routing/slot-resolver.js.map +0 -1
  381. package/dist/routing/symbol-disambiguator.js.map +0 -1
  382. package/dist/routing/turn-context.js.map +0 -1
  383. package/dist/routing/types.js.map +0 -1
  384. package/dist/runtime/answer-contracts.js.map +0 -1
  385. package/dist/runtime/artifact-contracts.js.map +0 -1
  386. package/dist/runtime/evidence.js.map +0 -1
  387. package/dist/runtime/planning-evidence.js.map +0 -1
  388. package/dist/runtime/prompt-step.js.map +0 -1
  389. package/dist/runtime/provider-tracker.js.map +0 -1
  390. package/dist/runtime/run-context.js.map +0 -1
  391. package/dist/runtime/session-coordinator.js.map +0 -1
  392. package/dist/runtime/session-title.js.map +0 -1
  393. package/dist/runtime/tool-defaults-wrapper.js.map +0 -1
  394. package/dist/runtime/validation.js.map +0 -1
  395. package/dist/runtime/workflow-events.js.map +0 -1
  396. package/dist/runtime/workflow-runner.js.map +0 -1
  397. package/dist/runtime/workflow-types.js.map +0 -1
  398. package/dist/sentiment/adapters/finnhub.js.map +0 -1
  399. package/dist/sentiment/adapters/reddit.js.map +0 -1
  400. package/dist/sentiment/adapters/twitter.js.map +0 -1
  401. package/dist/sentiment/adapters/web.js.map +0 -1
  402. package/dist/sentiment/index.js.map +0 -1
  403. package/dist/sentiment/insights.js.map +0 -1
  404. package/dist/sentiment/keywords.js.map +0 -1
  405. package/dist/sentiment/pipeline.js.map +0 -1
  406. package/dist/sentiment/scorer.js.map +0 -1
  407. package/dist/sentiment/store.js.map +0 -1
  408. package/dist/sentiment/trends.js.map +0 -1
  409. package/dist/sentiment/types.js.map +0 -1
  410. package/dist/system-prompt.js.map +0 -1
  411. package/dist/tool-kit.js.map +0 -1
  412. package/dist/tools/fundamentals/company-overview.js.map +0 -1
  413. package/dist/tools/fundamentals/comps.js.map +0 -1
  414. package/dist/tools/fundamentals/dcf.js.map +0 -1
  415. package/dist/tools/fundamentals/earnings.js.map +0 -1
  416. package/dist/tools/fundamentals/financials.js.map +0 -1
  417. package/dist/tools/fundamentals/sec-filings.js.map +0 -1
  418. package/dist/tools/index.js.map +0 -1
  419. package/dist/tools/interaction/ask-user.js.map +0 -1
  420. package/dist/tools/macro/fear-greed.js.map +0 -1
  421. package/dist/tools/macro/fred-data.js.map +0 -1
  422. package/dist/tools/market/crypto-history.js.map +0 -1
  423. package/dist/tools/market/crypto-price.js.map +0 -1
  424. package/dist/tools/market/screen-stocks.js.map +0 -1
  425. package/dist/tools/market/search-ticker.js.map +0 -1
  426. package/dist/tools/market/stock-history.js.map +0 -1
  427. package/dist/tools/market/stock-quote.js.map +0 -1
  428. package/dist/tools/options/greeks.js.map +0 -1
  429. package/dist/tools/options/option-chain.js.map +0 -1
  430. package/dist/tools/portfolio/alerts.js.map +0 -1
  431. package/dist/tools/portfolio/correlation.js.map +0 -1
  432. package/dist/tools/portfolio/daily-report.js.map +0 -1
  433. package/dist/tools/portfolio/holdings-overlap.js.map +0 -1
  434. package/dist/tools/portfolio/notifications.js.map +0 -1
  435. package/dist/tools/portfolio/risk-analysis.js.map +0 -1
  436. package/dist/tools/portfolio/tracker.js.map +0 -1
  437. package/dist/tools/portfolio/watchlist.js.map +0 -1
  438. package/dist/tools/sentiment/insight-format.js.map +0 -1
  439. package/dist/tools/sentiment/query-match.js.map +0 -1
  440. package/dist/tools/sentiment/reddit-sentiment.js.map +0 -1
  441. package/dist/tools/sentiment/sentiment-summary.js.map +0 -1
  442. package/dist/tools/sentiment/sentiment-trend.js.map +0 -1
  443. package/dist/tools/sentiment/twitter-sentiment.js.map +0 -1
  444. package/dist/tools/sentiment/untrusted-text.js.map +0 -1
  445. package/dist/tools/sentiment/web-search.js.map +0 -1
  446. package/dist/tools/sentiment/web-sentiment.js.map +0 -1
  447. package/dist/tools/technical/backtest.js.map +0 -1
  448. package/dist/tools/technical/indicators.js.map +0 -1
  449. package/dist/types/fundamentals.js.map +0 -1
  450. package/dist/types/index.js.map +0 -1
  451. package/dist/types/macro.js.map +0 -1
  452. package/dist/types/market.js.map +0 -1
  453. package/dist/types/options.js.map +0 -1
  454. package/dist/types/portfolio.js.map +0 -1
  455. package/dist/types/sentiment.js.map +0 -1
  456. package/dist/workflows/compare-assets.js.map +0 -1
  457. package/dist/workflows/index.js.map +0 -1
  458. package/dist/workflows/options-screener.js.map +0 -1
  459. package/dist/workflows/portfolio-builder.js.map +0 -1
  460. package/gui/server/ask-user-bridge.ts +0 -89
  461. package/gui/server/automation-heartbeat.ts +0 -97
  462. package/gui/server/background-quotes.ts +0 -127
  463. package/gui/server/chat-event-adapter.ts +0 -210
  464. package/gui/server/chat-run-session.ts +0 -16
  465. package/gui/server/gui-session-manager.ts +0 -5
  466. package/gui/server/http-routes.ts +0 -953
  467. package/gui/server/invoke-tool.ts +0 -489
  468. package/gui/server/live-chat-event-adapter.ts +0 -208
  469. package/gui/server/local-session-coordinator.ts +0 -97
  470. package/gui/server/market-state-api.ts +0 -273
  471. package/gui/server/model-setup.ts +0 -254
  472. package/gui/server/package.json +0 -5
  473. package/gui/server/private-api-access.ts +0 -62
  474. package/gui/server/projector.ts +0 -263
  475. package/gui/server/prompt-observation.ts +0 -58
  476. package/gui/server/quote-snapshot-store.ts +0 -50
  477. package/gui/server/server.ts +0 -289
  478. package/gui/server/session-actions.ts +0 -331
  479. package/gui/server/session-entry-wait.ts +0 -160
  480. package/gui/server/shutdown.ts +0 -47
  481. package/gui/server/tool-invoke-ack.ts +0 -49
  482. package/gui/server/tool-metadata.ts +0 -167
  483. package/gui/server/websocket.ts +0 -138
  484. package/gui/server/writer-lock.ts +0 -1
  485. package/gui/server/ws-hub.ts +0 -391
  486. package/gui/shared/chat-events.ts +0 -156
  487. package/gui/shared/event-reducer.ts +0 -219
  488. package/gui/web/dist/assets/CatalogOverlay-ChRTKNlf.js +0 -1
  489. package/gui/web/dist/assets/index-BzyqyVnd.css +0 -2
  490. package/gui/web/dist/assets/index-DvMjkOP9.js +0 -65
  491. package/src/analysts/contracts.ts +0 -176
  492. package/src/analysts/orchestrator.ts +0 -224
  493. package/src/cli-main.ts +0 -510
  494. package/src/cli.ts +0 -17
  495. package/src/config.ts +0 -272
  496. package/src/doctor/cli-command.ts +0 -83
  497. package/src/doctor/render.ts +0 -37
  498. package/src/doctor/report.ts +0 -638
  499. package/src/index.ts +0 -5
  500. package/src/infra/cache.ts +0 -114
  501. package/src/infra/http-client.ts +0 -134
  502. package/src/infra/index.ts +0 -14
  503. package/src/infra/native-dependencies.ts +0 -84
  504. package/src/infra/node-version.ts +0 -23
  505. package/src/infra/open-url.ts +0 -28
  506. package/src/infra/opencandle-paths.ts +0 -53
  507. package/src/infra/rate-limiter.ts +0 -76
  508. package/src/market-state/alert-conditions.ts +0 -82
  509. package/src/market-state/alert-runner.ts +0 -863
  510. package/src/market-state/daily-report.ts +0 -237
  511. package/src/market-state/local-automation-service.ts +0 -162
  512. package/src/market-state/notification-delivery.ts +0 -158
  513. package/src/market-state/resolve-for-mutation.ts +0 -24
  514. package/src/market-state/resolve.ts +0 -112
  515. package/src/market-state/service.ts +0 -2208
  516. package/src/memory/index.ts +0 -10
  517. package/src/memory/manager.ts +0 -190
  518. package/src/memory/preference-extractor.ts +0 -106
  519. package/src/memory/retrieval.ts +0 -71
  520. package/src/memory/sqlite.ts +0 -577
  521. package/src/memory/storage.ts +0 -195
  522. package/src/memory/tool-defaults.ts +0 -108
  523. package/src/memory/types.ts +0 -71
  524. package/src/monitor.ts +0 -123
  525. package/src/onboarding/connect.ts +0 -177
  526. package/src/onboarding/credential-interceptor.ts +0 -122
  527. package/src/onboarding/degradation-accumulator.ts +0 -77
  528. package/src/onboarding/prompt-user.ts +0 -85
  529. package/src/onboarding/provider-status.ts +0 -382
  530. package/src/onboarding/providers.ts +0 -414
  531. package/src/onboarding/state.ts +0 -216
  532. package/src/onboarding/tool-helpers.ts +0 -104
  533. package/src/onboarding/tool-tags.ts +0 -244
  534. package/src/onboarding/validation.ts +0 -152
  535. package/src/pi/opencandle-extension.ts +0 -1244
  536. package/src/pi/session-action-dedupe.ts +0 -155
  537. package/src/pi/session-storage.ts +0 -5
  538. package/src/pi/session-writer-lock.ts +0 -426
  539. package/src/pi/session.ts +0 -84
  540. package/src/pi/setup.ts +0 -399
  541. package/src/pi/tool-adapter.ts +0 -49
  542. package/src/pi/tui-session-coordinator.ts +0 -351
  543. package/src/prompts/context-builder.ts +0 -326
  544. package/src/prompts/disclaimer.ts +0 -9
  545. package/src/prompts/policy-cards.ts +0 -228
  546. package/src/prompts/sections.ts +0 -46
  547. package/src/prompts/symbol-preflight.ts +0 -80
  548. package/src/prompts/workflow-prompts.ts +0 -504
  549. package/src/providers/alpha-vantage.ts +0 -334
  550. package/src/providers/coingecko.ts +0 -93
  551. package/src/providers/errors.ts +0 -9
  552. package/src/providers/exa-search.ts +0 -375
  553. package/src/providers/external-tool-command.ts +0 -164
  554. package/src/providers/external-tool-error.ts +0 -20
  555. package/src/providers/fear-greed.ts +0 -45
  556. package/src/providers/finnhub.ts +0 -125
  557. package/src/providers/fred.ts +0 -83
  558. package/src/providers/index.ts +0 -17
  559. package/src/providers/provider-credential-error.ts +0 -23
  560. package/src/providers/reddit-cli.ts +0 -286
  561. package/src/providers/reddit.ts +0 -106
  562. package/src/providers/sec-edgar.ts +0 -326
  563. package/src/providers/tradingview.ts +0 -399
  564. package/src/providers/twitter-cli.ts +0 -202
  565. package/src/providers/twitter.ts +0 -102
  566. package/src/providers/web-search.ts +0 -303
  567. package/src/providers/with-fallback.ts +0 -42
  568. package/src/providers/wrap-provider.ts +0 -103
  569. package/src/providers/yahoo-finance.ts +0 -672
  570. package/src/routing/classify-intent.ts +0 -380
  571. package/src/routing/defaults.ts +0 -29
  572. package/src/routing/entity-extractor.ts +0 -540
  573. package/src/routing/fund-symbols.ts +0 -58
  574. package/src/routing/horizon.ts +0 -7
  575. package/src/routing/index.ts +0 -70
  576. package/src/routing/legacy-rule-router.ts +0 -13
  577. package/src/routing/planning.ts +0 -829
  578. package/src/routing/route-manifest.ts +0 -308
  579. package/src/routing/router-llm-client.ts +0 -52
  580. package/src/routing/router-prompt.ts +0 -159
  581. package/src/routing/router-types.ts +0 -84
  582. package/src/routing/router.ts +0 -997
  583. package/src/routing/slot-resolver.ts +0 -213
  584. package/src/routing/symbol-disambiguator.ts +0 -72
  585. package/src/routing/turn-context.ts +0 -108
  586. package/src/routing/types.ts +0 -77
  587. package/src/runtime/answer-contracts.ts +0 -693
  588. package/src/runtime/artifact-contracts.ts +0 -77
  589. package/src/runtime/evidence.ts +0 -77
  590. package/src/runtime/planning-evidence.ts +0 -682
  591. package/src/runtime/prompt-step.ts +0 -60
  592. package/src/runtime/provider-tracker.ts +0 -40
  593. package/src/runtime/run-context.ts +0 -32
  594. package/src/runtime/session-coordinator.ts +0 -632
  595. package/src/runtime/session-title.ts +0 -60
  596. package/src/runtime/tool-defaults-wrapper.ts +0 -43
  597. package/src/runtime/validation.ts +0 -211
  598. package/src/runtime/workflow-events.ts +0 -75
  599. package/src/runtime/workflow-runner.ts +0 -182
  600. package/src/runtime/workflow-types.ts +0 -102
  601. package/src/sentiment/adapters/finnhub.ts +0 -49
  602. package/src/sentiment/adapters/reddit.ts +0 -65
  603. package/src/sentiment/adapters/twitter.ts +0 -36
  604. package/src/sentiment/adapters/web.ts +0 -44
  605. package/src/sentiment/index.ts +0 -49
  606. package/src/sentiment/insights.ts +0 -269
  607. package/src/sentiment/keywords.ts +0 -31
  608. package/src/sentiment/pipeline.ts +0 -91
  609. package/src/sentiment/scorer.ts +0 -89
  610. package/src/sentiment/store.ts +0 -260
  611. package/src/sentiment/trends.ts +0 -96
  612. package/src/sentiment/types.ts +0 -112
  613. package/src/system-prompt.ts +0 -115
  614. package/src/tool-kit.ts +0 -69
  615. package/src/tools/AGENTS.md +0 -36
  616. package/src/tools/fundamentals/company-overview.ts +0 -64
  617. package/src/tools/fundamentals/comps.ts +0 -169
  618. package/src/tools/fundamentals/dcf.ts +0 -367
  619. package/src/tools/fundamentals/earnings.ts +0 -57
  620. package/src/tools/fundamentals/financials.ts +0 -63
  621. package/src/tools/fundamentals/sec-filings.ts +0 -105
  622. package/src/tools/index.ts +0 -101
  623. package/src/tools/interaction/ask-user.ts +0 -93
  624. package/src/tools/macro/fear-greed.ts +0 -41
  625. package/src/tools/macro/fred-data.ts +0 -92
  626. package/src/tools/market/crypto-history.ts +0 -72
  627. package/src/tools/market/crypto-price.ts +0 -53
  628. package/src/tools/market/screen-stocks.ts +0 -279
  629. package/src/tools/market/search-ticker.ts +0 -254
  630. package/src/tools/market/stock-history.ts +0 -104
  631. package/src/tools/market/stock-quote.ts +0 -67
  632. package/src/tools/options/greeks.ts +0 -81
  633. package/src/tools/options/option-chain.ts +0 -120
  634. package/src/tools/portfolio/alerts.ts +0 -457
  635. package/src/tools/portfolio/correlation.ts +0 -189
  636. package/src/tools/portfolio/daily-report.ts +0 -107
  637. package/src/tools/portfolio/holdings-overlap.ts +0 -139
  638. package/src/tools/portfolio/notifications.ts +0 -45
  639. package/src/tools/portfolio/risk-analysis.ts +0 -173
  640. package/src/tools/portfolio/tracker.ts +0 -308
  641. package/src/tools/portfolio/watchlist.ts +0 -288
  642. package/src/tools/sentiment/insight-format.ts +0 -50
  643. package/src/tools/sentiment/query-match.ts +0 -117
  644. package/src/tools/sentiment/reddit-sentiment.ts +0 -403
  645. package/src/tools/sentiment/sentiment-summary.ts +0 -383
  646. package/src/tools/sentiment/sentiment-trend.ts +0 -75
  647. package/src/tools/sentiment/twitter-sentiment.ts +0 -287
  648. package/src/tools/sentiment/untrusted-text.ts +0 -21
  649. package/src/tools/sentiment/web-search.ts +0 -186
  650. package/src/tools/sentiment/web-sentiment.ts +0 -96
  651. package/src/tools/technical/backtest.ts +0 -336
  652. package/src/tools/technical/indicators.ts +0 -281
  653. package/src/types/fundamentals.ts +0 -46
  654. package/src/types/index.ts +0 -25
  655. package/src/types/macro.ts +0 -27
  656. package/src/types/market.ts +0 -44
  657. package/src/types/options.ts +0 -52
  658. package/src/types/portfolio.ts +0 -83
  659. package/src/types/sentiment.ts +0 -129
  660. package/src/workflows/compare-assets.ts +0 -89
  661. package/src/workflows/index.ts +0 -3
  662. package/src/workflows/options-screener.ts +0 -125
  663. package/src/workflows/portfolio-builder.ts +0 -63
@@ -252,7 +252,7 @@ export function canUseTradingViewQuote(symbol) {
252
252
  (isTradingViewQualified(normalized) || !shouldSkipTradingView(normalized)));
253
253
  }
254
254
  function symbolFromTvSymbol(tvSymbol) {
255
- return tvSymbol.includes(":") ? tvSymbol.split(":").at(-1) : tvSymbol;
255
+ return tvSymbol.includes(":") ? (tvSymbol.split(":").at(-1) ?? tvSymbol) : tvSymbol;
256
256
  }
257
257
  function stringValue(value) {
258
258
  return typeof value === "string" ? value : undefined;
@@ -272,4 +272,3 @@ function sortObjectKeys(value) {
272
272
  .sort(([a], [b]) => a.localeCompare(b))
273
273
  .map(([key, nested]) => [key, sortObjectKeys(nested)]));
274
274
  }
275
- //# sourceMappingURL=tradingview.js.map
@@ -121,4 +121,3 @@ function runCommand(command, args) {
121
121
  maxOutputChars: MAX_OUTPUT_CHARS,
122
122
  });
123
123
  }
124
- //# sourceMappingURL=twitter-cli.js.map
@@ -82,4 +82,3 @@ export async function getTwitterSentiment(query, limit = 50, hours = 24) {
82
82
  throw error;
83
83
  }
84
84
  }
85
- //# sourceMappingURL=twitter.js.map
@@ -206,17 +206,20 @@ export async function searchWeb(query, opts) {
206
206
  entries.push({ provider: "exa", fn: () => exaSearch(normalized, resolved) });
207
207
  break;
208
208
  case "brave":
209
- if (!config.braveApiKey) {
210
- return {
211
- status: "unavailable",
212
- reason: "BRAVE_API_KEY not configured",
209
+ {
210
+ const braveApiKey = config.braveApiKey;
211
+ if (!braveApiKey) {
212
+ return {
213
+ status: "unavailable",
214
+ reason: "BRAVE_API_KEY not configured",
215
+ provider: "brave_search",
216
+ };
217
+ }
218
+ entries.push({
213
219
  provider: "brave_search",
214
- };
220
+ fn: () => braveSearch(normalized, resolved, braveApiKey),
221
+ });
215
222
  }
216
- entries.push({
217
- provider: "brave_search",
218
- fn: () => braveSearch(normalized, resolved, config.braveApiKey),
219
- });
220
223
  break;
221
224
  case "ddg":
222
225
  entries.push({ provider: "ddg", fn: () => ddgSearch(normalized, resolved) });
@@ -226,13 +229,13 @@ export async function searchWeb(query, opts) {
226
229
  }
227
230
  // Default cascade: Exa → Brave → DDG
228
231
  entries.push({ provider: "exa", fn: () => exaSearch(normalized, resolved) });
229
- if (config.braveApiKey) {
232
+ const braveApiKey = config.braveApiKey;
233
+ if (braveApiKey) {
230
234
  entries.push({
231
235
  provider: "brave_search",
232
- fn: () => braveSearch(normalized, resolved, config.braveApiKey),
236
+ fn: () => braveSearch(normalized, resolved, braveApiKey),
233
237
  });
234
238
  }
235
239
  entries.push({ provider: "ddg", fn: () => ddgSearch(normalized, resolved) });
236
240
  return withFallback(entries);
237
241
  }
238
- //# sourceMappingURL=web-search.js.map
@@ -31,4 +31,3 @@ export async function withFallback(entries) {
31
31
  provider: entries[0]?.provider ?? "unknown",
32
32
  };
33
33
  }
34
- //# sourceMappingURL=with-fallback.js.map
@@ -30,12 +30,14 @@ export async function wrapProvider(providerId, fn) {
30
30
  };
31
31
  }
32
32
  try {
33
- const { value: data, stale } = await runWithStaleMetadata(fn);
33
+ const { value: data, cache } = await runWithStaleMetadata(fn);
34
+ const timestamp = cache ? new Date(cache.cachedAt).toISOString() : new Date().toISOString();
34
35
  return {
35
36
  status: "ok",
36
37
  data,
37
- timestamp: stale ? new Date(stale.cachedAt).toISOString() : new Date().toISOString(),
38
- stale: stale ? true : undefined,
38
+ timestamp,
39
+ cached: cache?.status === "cached" ? true : undefined,
40
+ stale: cache?.status === "stale" ? true : undefined,
39
41
  };
40
42
  }
41
43
  catch (error) {
@@ -91,4 +93,3 @@ function isExternalToolSetupError(error) {
91
93
  message.includes("unauthorized") ||
92
94
  message.includes("expired"));
93
95
  }
94
- //# sourceMappingURL=wrap-provider.js.map
@@ -1,7 +1,10 @@
1
+ import type { CompanyOverview, FinancialStatement } from "../types/fundamentals.js";
1
2
  import type { OHLCV, StockQuote } from "../types/market.js";
2
3
  import type { OptionsChain } from "../types/options.js";
3
4
  import type { FundHoldings } from "../types/portfolio.js";
5
+ export declare function getYahooCompanyOverview(symbol: string): Promise<CompanyOverview>;
4
6
  export declare function getQuote(symbol: string): Promise<StockQuote>;
7
+ export declare function getYahooFinancials(symbol: string): Promise<FinancialStatement[]>;
5
8
  export declare function getHistory(symbol: string, range?: string, interval?: string): Promise<OHLCV[]>;
6
9
  export declare function getFundHoldings(symbol: string): Promise<FundHoldings>;
7
10
  export declare function clearCrumbCache(): void;
@@ -14,6 +14,50 @@ function getYahooFinance2Client() {
14
14
  });
15
15
  return yahooFinance2Client;
16
16
  }
17
+ export async function getYahooCompanyOverview(symbol) {
18
+ const normalizedSymbol = symbol.toUpperCase();
19
+ const cacheKey = `yahoo:overview:${normalizedSymbol}`;
20
+ const cached = cache.get(cacheKey);
21
+ if (cached)
22
+ return cached;
23
+ try {
24
+ await rateLimiter.acquire("yahoo");
25
+ const result = await getYahooCompanySummary(normalizedSymbol);
26
+ if (!result?.price?.symbol) {
27
+ throw new Error(`Yahoo Finance: no company fundamentals returned for ${normalizedSymbol}`);
28
+ }
29
+ const profile = result.assetProfile ?? result.summaryProfile;
30
+ const overview = {
31
+ symbol: result.price.symbol.toUpperCase(),
32
+ name: result.price.longName ?? result.price.shortName ?? result.price.symbol,
33
+ description: profile?.longBusinessSummary ?? "",
34
+ exchange: result.price.exchangeName ?? "",
35
+ sector: profile?.sector ?? "",
36
+ industry: profile?.industry ?? "",
37
+ marketCap: yahooNumber(result.price.marketCap) ?? 0,
38
+ pe: yahooNullableNumber(result.summaryDetail?.trailingPE),
39
+ forwardPe: yahooNullableNumber(result.summaryDetail?.forwardPE),
40
+ eps: yahooNullableNumber(result.defaultKeyStatistics?.trailingEps) ??
41
+ yahooNullableNumber(result.defaultKeyStatistics?.forwardEps),
42
+ dividendYield: yahooNullableNumber(result.summaryDetail?.dividendYield),
43
+ beta: yahooNullableNumber(result.summaryDetail?.beta) ??
44
+ yahooNullableNumber(result.defaultKeyStatistics?.beta),
45
+ week52High: yahooNumber(result.summaryDetail?.fiftyTwoWeekHigh) ?? 0,
46
+ week52Low: yahooNumber(result.summaryDetail?.fiftyTwoWeekLow) ?? 0,
47
+ avgVolume: yahooNumber(result.summaryDetail?.averageVolume) ?? 0,
48
+ profitMargin: yahooNullableNumber(result.financialData?.profitMargins),
49
+ revenueGrowth: yahooNullableNumber(result.financialData?.revenueGrowth),
50
+ };
51
+ cache.set(cacheKey, overview, TTL.FUNDAMENTALS);
52
+ return overview;
53
+ }
54
+ catch (error) {
55
+ const stale = cache.getStale(cacheKey, STALE_LIMIT.FUNDAMENTALS);
56
+ if (stale)
57
+ return stale.value;
58
+ throw error;
59
+ }
60
+ }
17
61
  export async function getQuote(symbol) {
18
62
  const cacheKey = `yahoo:quote:${symbol}`;
19
63
  const cached = cache.get(cacheKey);
@@ -40,6 +84,11 @@ export async function getQuote(symbol) {
40
84
  const open = meta.regularMarketOpen ?? indicators?.open?.[0] ?? price;
41
85
  const quote = {
42
86
  symbol: meta.symbol,
87
+ name: typeof meta.longName === "string" && meta.longName.trim() !== ""
88
+ ? meta.longName.trim()
89
+ : typeof meta.shortName === "string" && meta.shortName.trim() !== ""
90
+ ? meta.shortName.trim()
91
+ : undefined,
43
92
  price,
44
93
  change,
45
94
  changePercent,
@@ -53,6 +102,7 @@ export async function getQuote(symbol) {
53
102
  week52High: meta.fiftyTwoWeekHigh ?? 0,
54
103
  week52Low: meta.fiftyTwoWeekLow ?? 0,
55
104
  timestamp: Date.now(),
105
+ asOf: yahooMarketTimeToIso(meta.regularMarketTime),
56
106
  currency: typeof meta.currency === "string" && meta.currency.trim() !== ""
57
107
  ? meta.currency.trim().toUpperCase()
58
108
  : null,
@@ -60,8 +110,9 @@ export async function getQuote(symbol) {
60
110
  if (isZeroResultQuote(quote)) {
61
111
  throw new InvalidSymbolError(symbol.toUpperCase(), "yahoo");
62
112
  }
63
- cache.set(cacheKey, quote, TTL.QUOTE);
64
- return quote;
113
+ const enrichedQuote = await enrichQuoteWithExtendedHours(symbol, quote);
114
+ cache.set(cacheKey, enrichedQuote, TTL.QUOTE);
115
+ return enrichedQuote;
65
116
  }
66
117
  catch (error) {
67
118
  const stale = cache.getStale(cacheKey, STALE_LIMIT.QUOTE);
@@ -70,6 +121,168 @@ export async function getQuote(symbol) {
70
121
  throw error;
71
122
  }
72
123
  }
124
+ async function enrichQuoteWithExtendedHours(symbol, quote) {
125
+ try {
126
+ await rateLimiter.acquire("yahoo");
127
+ const yahooQuote = (await getYahooFinance2Client().quote(symbol));
128
+ if (!yahooQuote)
129
+ return quote;
130
+ const marketState = normalizeMarketState(yahooQuote.marketState);
131
+ if (!marketState)
132
+ return quote;
133
+ const withMarketState = { ...quote, marketState };
134
+ if (marketState !== "PRE" && marketState !== "POST")
135
+ return withMarketState;
136
+ const extended = marketState === "PRE" ? preMarketFields(yahooQuote) : postMarketFields(yahooQuote);
137
+ if (!Number.isFinite(extended.price))
138
+ return withMarketState;
139
+ return {
140
+ ...withMarketState,
141
+ extendedPrice: extended.price,
142
+ extendedChange: extended.change,
143
+ extendedChangePercent: extended.changePercent,
144
+ extendedAsOf: toIsoString(extended.time),
145
+ };
146
+ }
147
+ catch {
148
+ return quote;
149
+ }
150
+ }
151
+ function normalizeMarketState(value) {
152
+ if (value === "PRE" || value === "PREPRE")
153
+ return "PRE";
154
+ if (value === "POST" || value === "POSTPOST")
155
+ return "POST";
156
+ if (value === "REGULAR" || value === "CLOSED")
157
+ return value;
158
+ return undefined;
159
+ }
160
+ function preMarketFields(quote) {
161
+ return {
162
+ price: quote.extendedMarketPrice ?? quote.preMarketPrice,
163
+ change: quote.extendedMarketChange ?? quote.preMarketChange,
164
+ changePercent: quote.extendedMarketChangePercent ?? quote.preMarketChangePercent,
165
+ time: quote.extendedMarketTime ?? quote.preMarketTime,
166
+ };
167
+ }
168
+ function postMarketFields(quote) {
169
+ return {
170
+ price: quote.extendedMarketPrice ?? quote.postMarketPrice,
171
+ change: quote.extendedMarketChange ?? quote.postMarketChange,
172
+ changePercent: quote.extendedMarketChangePercent ?? quote.postMarketChangePercent,
173
+ time: quote.extendedMarketTime ?? quote.postMarketTime,
174
+ };
175
+ }
176
+ function toIsoString(value) {
177
+ if (value instanceof Date)
178
+ return Number.isNaN(value.getTime()) ? undefined : value.toISOString();
179
+ const timestamp = typeof value === "number" ? value : Date.parse(value ?? "");
180
+ return Number.isFinite(timestamp) ? new Date(timestamp).toISOString() : undefined;
181
+ }
182
+ export async function getYahooFinancials(symbol) {
183
+ const normalizedSymbol = symbol.toUpperCase();
184
+ const cacheKey = `yahoo:financials:${normalizedSymbol}`;
185
+ const cached = cache.get(cacheKey);
186
+ if (cached)
187
+ return cached;
188
+ try {
189
+ await rateLimiter.acquire("yahoo");
190
+ const period1 = new Date();
191
+ period1.setUTCFullYear(period1.getUTCFullYear() - 6);
192
+ const rows = (await getYahooFinance2Client().fundamentalsTimeSeries(normalizedSymbol, {
193
+ period1,
194
+ period2: new Date(),
195
+ type: "annual",
196
+ module: "all",
197
+ }, { validateResult: false }));
198
+ const statements = rows
199
+ .map((row) => yahooFundamentalsRowToStatement(row))
200
+ .filter((statement) => statement !== null)
201
+ .sort((a, b) => b.fiscalDate.localeCompare(a.fiscalDate))
202
+ .slice(0, 4);
203
+ if (statements.length === 0) {
204
+ throw new Error(`Yahoo Finance: no financial statements returned for ${normalizedSymbol}`);
205
+ }
206
+ cache.set(cacheKey, statements, TTL.FUNDAMENTALS);
207
+ return statements;
208
+ }
209
+ catch (error) {
210
+ const stale = cache.getStale(cacheKey, STALE_LIMIT.FUNDAMENTALS);
211
+ if (stale)
212
+ return stale.value;
213
+ throw error;
214
+ }
215
+ }
216
+ function yahooFundamentalsRowToStatement(row) {
217
+ const fiscalDate = normalizeYahooDate(row.date);
218
+ if (!fiscalDate)
219
+ return null;
220
+ const operatingCashFlowValue = row.annualCashFlowFromContinuingOperatingActivities ??
221
+ row.cashFlowFromContinuingOperatingActivities ??
222
+ row.annualOperatingCashFlow ??
223
+ row.operatingCashFlow;
224
+ const capitalExpenditureValue = row.annualCapitalExpenditure ??
225
+ row.capitalExpenditure ??
226
+ row.annualCapitalExpenditures ??
227
+ row.capitalExpenditures;
228
+ const operatingCashFlow = operatingCashFlowValue ?? 0;
229
+ const capitalExpenditure = capitalExpenditureValue ?? 0;
230
+ const freeCashFlow = row.annualFreeCashFlow ??
231
+ row.freeCashFlow ??
232
+ (operatingCashFlowValue !== undefined && capitalExpenditureValue !== undefined
233
+ ? operatingCashFlow + capitalExpenditure
234
+ : 0);
235
+ return {
236
+ fiscalDate,
237
+ revenue: row.annualTotalRevenue ?? row.totalRevenue ?? 0,
238
+ grossProfit: row.annualGrossProfit ?? row.grossProfit ?? 0,
239
+ operatingIncome: row.annualOperatingIncome ?? row.operatingIncome ?? 0,
240
+ netIncome: row.annualNetIncome ??
241
+ row.netIncome ??
242
+ row.annualNetIncomeCommonStockholders ??
243
+ row.netIncomeCommonStockholders ??
244
+ 0,
245
+ eps: row.annualDilutedEPS ?? row.dilutedEPS ?? row.annualBasicEPS ?? row.basicEPS ?? 0,
246
+ totalAssets: row.annualTotalAssets ?? row.totalAssets ?? 0,
247
+ totalLiabilities: row.annualTotalLiabilitiesNetMinorityInterest ??
248
+ row.totalLiabilitiesNetMinorityInterest ??
249
+ row.annualTotalLiabilities ??
250
+ row.totalLiabilities ??
251
+ 0,
252
+ totalEquity: row.annualStockholdersEquity ??
253
+ row.stockholdersEquity ??
254
+ row.annualCommonStockEquity ??
255
+ row.commonStockEquity ??
256
+ 0,
257
+ operatingCashFlow,
258
+ freeCashFlow,
259
+ totalDebt: row.annualTotalDebt ?? row.totalDebt,
260
+ cashAndEquivalents: row.annualCashAndCashEquivalents ?? row.cashAndCashEquivalents,
261
+ sharesOutstanding: row.annualOrdinarySharesNumber ??
262
+ row.ordinarySharesNumber ??
263
+ row.annualShareIssued ??
264
+ row.shareIssued ??
265
+ row.annualDilutedAverageShares ??
266
+ row.dilutedAverageShares ??
267
+ row.annualBasicAverageShares ??
268
+ row.basicAverageShares,
269
+ };
270
+ }
271
+ function normalizeYahooDate(value) {
272
+ if (value instanceof Date)
273
+ return value.toISOString().slice(0, 10);
274
+ if (typeof value === "number") {
275
+ if (!Number.isFinite(value))
276
+ return null;
277
+ const timestampMs = Math.abs(value) < 1_000_000_000_000 ? value * 1000 : value;
278
+ const date = new Date(timestampMs);
279
+ return Number.isNaN(date.getTime()) ? null : date.toISOString().slice(0, 10);
280
+ }
281
+ if (typeof value !== "string" || value.trim() === "")
282
+ return null;
283
+ const date = new Date(value);
284
+ return Number.isNaN(date.getTime()) ? null : date.toISOString().slice(0, 10);
285
+ }
73
286
  function isZeroResultQuote(quote) {
74
287
  return (quote.price === 0 &&
75
288
  quote.volume === 0 &&
@@ -163,26 +376,49 @@ export async function getFundHoldings(symbol) {
163
376
  }
164
377
  }
165
378
  async function getFundHoldingsSummary(symbol) {
379
+ return getYahooQuoteSummary(symbol, "price,topHoldings");
380
+ }
381
+ async function getYahooCompanySummary(symbol) {
382
+ const modules = [
383
+ "price",
384
+ "assetProfile",
385
+ "summaryProfile",
386
+ "summaryDetail",
387
+ "defaultKeyStatistics",
388
+ "financialData",
389
+ ];
390
+ try {
391
+ return (await getYahooFinance2Client().quoteSummary(symbol, { modules: [...modules] }, { validateResult: false }));
392
+ }
393
+ catch (_error) {
394
+ const data = await getYahooQuoteSummary(symbol, modules.join(","));
395
+ if (data.quoteSummary.error) {
396
+ throw new Error(`Yahoo Finance: ${data.quoteSummary.error.description ?? data.quoteSummary.error.code ?? "quoteSummary error"}`);
397
+ }
398
+ return data.quoteSummary.result?.[0] ?? {};
399
+ }
400
+ }
401
+ async function getYahooQuoteSummary(symbol, modules) {
166
402
  try {
167
- return await fetchFundHoldingsSummary(symbol);
403
+ return await fetchYahooQuoteSummary(symbol, modules);
168
404
  }
169
405
  catch (error) {
170
406
  if (!isYahooAuthError(error))
171
407
  throw error;
172
- return fetchFundHoldingsSummaryWithCrumb(symbol);
408
+ return fetchYahooQuoteSummaryWithCrumb(symbol, modules);
173
409
  }
174
410
  }
175
- async function fetchFundHoldingsSummary(symbol) {
176
- const modules = encodeURIComponent("price,topHoldings");
177
- const url = `${QUOTE_SUMMARY_URL}/${encodeURIComponent(symbol)}?modules=${modules}`;
411
+ async function fetchYahooQuoteSummary(symbol, modules) {
412
+ const encodedModules = encodeURIComponent(modules);
413
+ const url = `${QUOTE_SUMMARY_URL}/${encodeURIComponent(symbol)}?modules=${encodedModules}`;
178
414
  return httpGet(url, {
179
415
  headers: { "User-Agent": "OpenCandle/1.0" },
180
416
  });
181
417
  }
182
- async function fetchFundHoldingsSummaryWithCrumb(symbol) {
183
- const modules = encodeURIComponent("price,topHoldings");
418
+ async function fetchYahooQuoteSummaryWithCrumb(symbol, modules) {
419
+ const encodedModules = encodeURIComponent(modules);
184
420
  const { crumb, cookie } = await getYahooCrumb();
185
- const url = `${QUOTE_SUMMARY_URL}/${encodeURIComponent(symbol)}?modules=${modules}&crumb=${encodeURIComponent(crumb)}`;
421
+ const url = `${QUOTE_SUMMARY_URL}/${encodeURIComponent(symbol)}?modules=${encodedModules}&crumb=${encodeURIComponent(crumb)}`;
186
422
  try {
187
423
  return await httpGet(url, {
188
424
  headers: { "User-Agent": BROWSER_UA, Cookie: cookie },
@@ -193,7 +429,7 @@ async function fetchFundHoldingsSummaryWithCrumb(symbol) {
193
429
  throw error;
194
430
  clearCrumbCache();
195
431
  const fresh = await getYahooCrumb();
196
- const retryUrl = `${QUOTE_SUMMARY_URL}/${encodeURIComponent(symbol)}?modules=${modules}&crumb=${encodeURIComponent(fresh.crumb)}`;
432
+ const retryUrl = `${QUOTE_SUMMARY_URL}/${encodeURIComponent(symbol)}?modules=${encodedModules}&crumb=${encodeURIComponent(fresh.crumb)}`;
197
433
  return httpGet(retryUrl, {
198
434
  headers: { "User-Agent": BROWSER_UA, Cookie: fresh.cookie },
199
435
  });
@@ -203,11 +439,18 @@ function isYahooAuthError(error) {
203
439
  return error instanceof HttpError && (error.status === 401 || error.status === 429);
204
440
  }
205
441
  function normalizeHoldingWeight(value) {
206
- const numeric = typeof value === "number" ? value : value?.raw;
442
+ const numeric = yahooNumber(value);
207
443
  if (numeric === undefined || !Number.isFinite(numeric) || numeric <= 0)
208
444
  return undefined;
209
445
  return numeric > 1 ? roundWeight(numeric / 100) : roundWeight(numeric);
210
446
  }
447
+ function yahooNumber(value) {
448
+ const numeric = typeof value === "number" ? value : value?.raw;
449
+ return numeric !== undefined && Number.isFinite(numeric) ? numeric : undefined;
450
+ }
451
+ function yahooNullableNumber(value) {
452
+ return yahooNumber(value) ?? null;
453
+ }
211
454
  function normalizeSectorWeights(sectors) {
212
455
  if (!sectors?.length)
213
456
  return undefined;
@@ -471,6 +714,7 @@ function parseOptionsResponse(data) {
471
714
  putCallRatio: totalCallVolume > 0 ? totalPutVolume / totalCallVolume : 0,
472
715
  quoteStatus,
473
716
  fetchedAt: new Date().toISOString(),
717
+ asOf: yahooMarketTimeToIso(quote.regularMarketTime),
474
718
  };
475
719
  }
476
720
  /**
@@ -521,4 +765,19 @@ function toYahooUnixSeconds(value) {
521
765
  }
522
766
  return Math.floor(new Date(value).getTime() / 1000);
523
767
  }
524
- //# sourceMappingURL=yahoo-finance.js.map
768
+ function yahooMarketTimeToIso(value) {
769
+ let date;
770
+ if (value instanceof Date) {
771
+ date = value;
772
+ }
773
+ else if (typeof value === "number" && Number.isFinite(value)) {
774
+ date = new Date(value < 10_000_000_000 ? value * 1000 : value);
775
+ }
776
+ else if (typeof value === "string" && value.trim() !== "") {
777
+ const numeric = Number(value);
778
+ date = Number.isFinite(numeric)
779
+ ? new Date(numeric < 10_000_000_000 ? numeric * 1000 : numeric)
780
+ : new Date(value);
781
+ }
782
+ return date && Number.isFinite(date.getTime()) ? date.toISOString() : undefined;
783
+ }
@@ -318,4 +318,3 @@ const FINANCE_SIGNAL_PATTERN = new RegExp(`\\b(?:${FINANCE_SIGNAL_TERMS.map((ter
318
318
  export function hasFinanceSignals(input) {
319
319
  return FINANCE_SIGNAL_PATTERN.test(input);
320
320
  }
321
- //# sourceMappingURL=classify-intent.js.map
@@ -23,4 +23,3 @@ export function parseDteTarget(dteTarget) {
23
23
  }
24
24
  return null;
25
25
  }
26
- //# sourceMappingURL=defaults.js.map
@@ -186,6 +186,15 @@ const LOWERCASE_FINANCE_TERMS = new Set([
186
186
  "rate",
187
187
  "rates",
188
188
  "cuts",
189
+ // Trading verbs written in lowercase are actions, not tickers — "sell
190
+ // calls" must not mint a SELL symbol. Uppercase ticker extraction is
191
+ // unaffected, so a genuine $SELL / "SELL" ticker still resolves.
192
+ "sell",
193
+ "buy",
194
+ "hold",
195
+ "write",
196
+ "roll",
197
+ "trim",
189
198
  "gold",
190
199
  "oil",
191
200
  "stock",
@@ -348,14 +357,14 @@ function extractMaxPremium(input) {
348
357
  const under = input.match(/\b(?:under|below|less\s+than|max(?:imum)?|up\s+to)\s+\$?\s*([\d,]+(?:\.\d+)?)\s*([kK])?\b/i);
349
358
  if (under) {
350
359
  const base = parseFloat(under[1].replace(/,/g, ""));
351
- if (isNaN(base))
360
+ if (Number.isNaN(base))
352
361
  return undefined;
353
362
  return under[2] ? base * 1000 : base;
354
363
  }
355
364
  const trailing = input.match(/\$\s*([\d,]+(?:\.\d+)?)\s*([kK])?\s*(?:premium|max\s*premium)\b/i);
356
365
  if (trailing) {
357
366
  const base = parseFloat(trailing[1].replace(/,/g, ""));
358
- if (isNaN(base))
367
+ if (Number.isNaN(base))
359
368
  return undefined;
360
369
  return trailing[2] ? base * 1000 : base;
361
370
  }
@@ -418,6 +427,13 @@ function extractDteHint(input) {
418
427
  const explicitDays = lower.match(/\b(\d+)\s*(?:-|to|or)\s*(\d+)\s*(?:dte|days?)\b/);
419
428
  if (explicitDays)
420
429
  return `${explicitDays[1]}-${explicitDays[2]} days`;
430
+ // An explicit user week range ("1-2 weeks out") must outrank the
431
+ // catalyst-derived event_week inference below; a same-day earnings
432
+ // mention otherwise collapses the requested horizon to 0-7 days
433
+ // (historical "1-2 weeks DTE preservation" loss class).
434
+ const explicitWeeks = lower.match(/\b(\d+|one|two|three|four)\s*(?:[-–]|to|or)\s*(\d+|one|two|three|four)\s*weeks?\b/);
435
+ if (explicitWeeks)
436
+ return `${explicitWeeks[1]}-${explicitWeeks[2]} weeks`;
421
437
  if (/\bmonth\b/.test(lower))
422
438
  return "month";
423
439
  if (/\bearnings?\b.*\b(?:today|tonight|this\s+week)\b|\b(?:today|tonight|this\s+week)\b.*\bearnings?\b/.test(lower))
@@ -478,4 +494,3 @@ function extractCompareMetrics(input) {
478
494
  metrics.push("overlap");
479
495
  return metrics.length > 0 ? metrics : undefined;
480
496
  }
481
- //# sourceMappingURL=entity-extractor.js.map
@@ -52,4 +52,3 @@ export function areLikelyFundOrIndexSymbols(symbols) {
52
52
  export function isFundOrIndexAssetScope(assetScope) {
53
53
  return assetScope !== undefined && /(?:^|[^a-z])(?:etf|fund|index)(?:$|[^a-z])/i.test(assetScope);
54
54
  }
55
- //# sourceMappingURL=fund-symbols.js.map
@@ -7,4 +7,3 @@ export function isLongInvestmentHorizon(timeHorizon) {
7
7
  const years = normalized.match(/^(\d+)_years$/);
8
8
  return years ? Number(years[1]) >= 3 : false;
9
9
  }
10
- //# sourceMappingURL=horizon.js.map
@@ -9,4 +9,3 @@ export { createPiAiRouterClient } from "./router-llm-client.js";
9
9
  export { buildRouterPrompt } from "./router-prompt.js";
10
10
  export { resolveOptionsScreenerSlots, resolvePortfolioSlots } from "./slot-resolver.js";
11
11
  export { buildMemoryQueryPlan, buildResolvedTurnContext, } from "./turn-context.js";
12
- //# sourceMappingURL=index.js.map
@@ -9,4 +9,3 @@ import { classifyIntent } from "./classify-intent.js";
9
9
  export function classifyWithLegacyRules(input) {
10
10
  return classifyIntent(input);
11
11
  }
12
- //# sourceMappingURL=legacy-rule-router.js.map
@@ -562,4 +562,3 @@ function isAllowedForOutput(entry, output) {
562
562
  return false;
563
563
  return entry.workflows.includes(output.workflow);
564
564
  }
565
- //# sourceMappingURL=planning.js.map
@@ -30,7 +30,7 @@ export const TOOL_BUNDLE_TOOLS = {
30
30
  "search_web",
31
31
  ],
32
32
  options: ["get_option_chain", "get_stock_quote", "search_ticker", "search_web"],
33
- macro: ["get_economic_data", "get_fear_greed", "search_web"],
33
+ macro: ["get_economic_data", "get_event_probabilities", "get_fear_greed", "search_web"],
34
34
  sentiment: [
35
35
  "get_reddit_sentiment",
36
36
  "get_twitter_sentiment",
@@ -238,4 +238,3 @@ export function memoryScopesForRoute(routeKind, workflow) {
238
238
  return WORKFLOW_CAPABILITY_MANIFEST[workflow]?.memoryScopes ?? [];
239
239
  return ROUTE_CAPABILITY_MANIFEST[routeKind]?.memoryScopes ?? [];
240
240
  }
241
- //# sourceMappingURL=route-manifest.js.map
@@ -1,4 +1,4 @@
1
- import type { Model } from "@earendil-works/pi-ai";
1
+ import type { Api, Model } from "@earendil-works/pi-ai";
2
2
  import type { RouterLlmClient } from "./router-types.js";
3
3
  /**
4
4
  * Build a router LLM client backed by pi-ai's `completeSimple`. The client
@@ -8,4 +8,4 @@ import type { RouterLlmClient } from "./router-types.js";
8
8
  * Zero tools are passed — the router operates on text alone. Temperature
9
9
  * is pinned low for structured-output stability.
10
10
  */
11
- export declare function createPiAiRouterClient(model: Model<"anthropic-messages"> | Model<any>): RouterLlmClient;
11
+ export declare function createPiAiRouterClient(model: Model<"anthropic-messages"> | Model<Api>): RouterLlmClient;
@@ -10,7 +10,7 @@ import { completeSimple } from "@earendil-works/pi-ai/compat";
10
10
  export function createPiAiRouterClient(model) {
11
11
  return {
12
12
  async complete(prompt) {
13
- const response = await completeSimple(model, {
13
+ const request = {
14
14
  messages: [
15
15
  {
16
16
  role: "user",
@@ -20,11 +20,22 @@ export function createPiAiRouterClient(model) {
20
20
  ],
21
21
  // Explicitly no tools — spec requirement.
22
22
  tools: [],
23
- }, {
23
+ };
24
+ const options = {
24
25
  temperature: 0,
25
26
  maxTokens: 2000,
26
27
  reasoning: "minimal",
27
- });
28
+ };
29
+ let response;
30
+ try {
31
+ response = await completeSimple(model, request, options);
32
+ }
33
+ catch (error) {
34
+ if (!isUnsupportedTemperatureError(error))
35
+ throw error;
36
+ const { temperature: _temperature, ...retryOptions } = options;
37
+ response = await completeSimple(model, request, retryOptions);
38
+ }
28
39
  if (response.stopReason === "error" || response.stopReason === "aborted") {
29
40
  throw new Error(`router LLM call failed: ${response.errorMessage ?? response.stopReason}`);
30
41
  }
@@ -39,4 +50,7 @@ export function createPiAiRouterClient(model) {
39
50
  },
40
51
  };
41
52
  }
42
- //# sourceMappingURL=router-llm-client.js.map
53
+ function isUnsupportedTemperatureError(error) {
54
+ const message = error instanceof Error ? error.message : String(error);
55
+ return /unsupported parameter/i.test(message) && /temperature/i.test(message);
56
+ }
@@ -136,4 +136,3 @@ ${input.text}
136
136
 
137
137
  Respond with the JSON object. Nothing else.`;
138
138
  }
139
- //# sourceMappingURL=router-prompt.js.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=router-types.js.map
@@ -8,4 +8,4 @@ import type { RouterInputContext, RouterLlmClient, RouterOutput } from "./router
8
8
  */
9
9
  export declare function route(input: RouterInputContext, client: RouterLlmClient): Promise<RouterOutput>;
10
10
  export declare function validateRouterOutput(raw: string): RouterOutput;
11
- export declare function postProcessRouterOutput(text: string, output: RouterOutput): RouterOutput;
11
+ export declare function postProcessRouterOutput(text: string, output: RouterOutput, inputContext?: Pick<RouterInputContext, "priorTurns" | "profileSnapshot">): RouterOutput;