opencandle 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/README.md +110 -87
  2. package/assets/logo.svg +187 -0
  3. package/dist/analysts/orchestrator.js +1 -2
  4. package/dist/analysts/orchestrator.js.map +1 -1
  5. package/dist/cli.d.ts +1 -1
  6. package/dist/cli.js +38 -2
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config.d.ts +34 -5
  9. package/dist/config.js +29 -8
  10. package/dist/config.js.map +1 -1
  11. package/dist/infra/browser.d.ts +10 -0
  12. package/dist/infra/browser.js +1 -0
  13. package/dist/infra/browser.js.map +1 -1
  14. package/dist/infra/cache.d.ts +4 -0
  15. package/dist/infra/cache.js +4 -0
  16. package/dist/infra/cache.js.map +1 -1
  17. package/dist/infra/native-dependencies.d.ts +1 -0
  18. package/dist/infra/native-dependencies.js +10 -0
  19. package/dist/infra/native-dependencies.js.map +1 -0
  20. package/dist/infra/node-version.d.ts +2 -0
  21. package/dist/infra/node-version.js +23 -0
  22. package/dist/infra/node-version.js.map +1 -0
  23. package/dist/infra/rate-limiter.js +6 -0
  24. package/dist/infra/rate-limiter.js.map +1 -1
  25. package/dist/memory/index.d.ts +2 -0
  26. package/dist/memory/index.js +1 -0
  27. package/dist/memory/index.js.map +1 -1
  28. package/dist/memory/sqlite.js +42 -4
  29. package/dist/memory/sqlite.js.map +1 -1
  30. package/dist/memory/storage.d.ts +6 -0
  31. package/dist/memory/storage.js +3 -3
  32. package/dist/memory/storage.js.map +1 -1
  33. package/dist/memory/tool-defaults.d.ts +8 -0
  34. package/dist/memory/tool-defaults.js +59 -0
  35. package/dist/memory/tool-defaults.js.map +1 -0
  36. package/dist/onboarding/connect.d.ts +35 -0
  37. package/dist/onboarding/connect.js +118 -0
  38. package/dist/onboarding/connect.js.map +1 -0
  39. package/dist/onboarding/credential-interceptor.d.ts +44 -0
  40. package/dist/onboarding/credential-interceptor.js +72 -0
  41. package/dist/onboarding/credential-interceptor.js.map +1 -0
  42. package/dist/onboarding/degradation-accumulator.d.ts +21 -0
  43. package/dist/onboarding/degradation-accumulator.js +55 -0
  44. package/dist/onboarding/degradation-accumulator.js.map +1 -0
  45. package/dist/onboarding/prompt-user.d.ts +23 -0
  46. package/dist/onboarding/prompt-user.js +61 -0
  47. package/dist/onboarding/prompt-user.js.map +1 -0
  48. package/dist/onboarding/providers.d.ts +116 -0
  49. package/dist/onboarding/providers.js +239 -0
  50. package/dist/onboarding/providers.js.map +1 -0
  51. package/dist/onboarding/state.d.ts +31 -2
  52. package/dist/onboarding/state.js +141 -13
  53. package/dist/onboarding/state.js.map +1 -1
  54. package/dist/onboarding/tool-helpers.d.ts +34 -0
  55. package/dist/onboarding/tool-helpers.js +80 -0
  56. package/dist/onboarding/tool-helpers.js.map +1 -0
  57. package/dist/onboarding/tool-tags.d.ts +37 -0
  58. package/dist/onboarding/tool-tags.js +149 -0
  59. package/dist/onboarding/tool-tags.js.map +1 -0
  60. package/dist/onboarding/validation.d.ts +19 -0
  61. package/dist/onboarding/validation.js +117 -0
  62. package/dist/onboarding/validation.js.map +1 -0
  63. package/dist/pi/opencandle-extension.d.ts +7 -1
  64. package/dist/pi/opencandle-extension.js +488 -13
  65. package/dist/pi/opencandle-extension.js.map +1 -1
  66. package/dist/pi/session-storage.d.ts +2 -0
  67. package/dist/pi/session-storage.js +5 -0
  68. package/dist/pi/session-storage.js.map +1 -0
  69. package/dist/pi/session.d.ts +4 -1
  70. package/dist/pi/session.js +25 -3
  71. package/dist/pi/session.js.map +1 -1
  72. package/dist/pi/setup.d.ts +1 -2
  73. package/dist/pi/setup.js +67 -120
  74. package/dist/pi/setup.js.map +1 -1
  75. package/dist/pi/tool-adapter.d.ts +2 -2
  76. package/dist/pi/tool-adapter.js +14 -1
  77. package/dist/pi/tool-adapter.js.map +1 -1
  78. package/dist/prompts/context-builder.d.ts +22 -0
  79. package/dist/prompts/context-builder.js +47 -11
  80. package/dist/prompts/context-builder.js.map +1 -1
  81. package/dist/prompts/disclaimer.d.ts +6 -0
  82. package/dist/prompts/disclaimer.js +9 -0
  83. package/dist/prompts/disclaimer.js.map +1 -0
  84. package/dist/prompts/workflow-prompts.d.ts +8 -0
  85. package/dist/prompts/workflow-prompts.js +39 -5
  86. package/dist/prompts/workflow-prompts.js.map +1 -1
  87. package/dist/providers/alpha-vantage.js +20 -1
  88. package/dist/providers/alpha-vantage.js.map +1 -1
  89. package/dist/providers/exa-search.d.ts +39 -0
  90. package/dist/providers/exa-search.js +276 -0
  91. package/dist/providers/exa-search.js.map +1 -0
  92. package/dist/providers/finnhub.d.ts +17 -0
  93. package/dist/providers/finnhub.js +94 -0
  94. package/dist/providers/finnhub.js.map +1 -0
  95. package/dist/providers/fred.js +13 -1
  96. package/dist/providers/fred.js.map +1 -1
  97. package/dist/providers/index.d.ts +2 -0
  98. package/dist/providers/index.js +1 -0
  99. package/dist/providers/index.js.map +1 -1
  100. package/dist/providers/provider-credential-error.d.ts +8 -0
  101. package/dist/providers/provider-credential-error.js +22 -0
  102. package/dist/providers/provider-credential-error.js.map +1 -0
  103. package/dist/providers/reddit.d.ts +8 -0
  104. package/dist/providers/reddit.js +36 -9
  105. package/dist/providers/reddit.js.map +1 -1
  106. package/dist/providers/twitter.js +2 -8
  107. package/dist/providers/twitter.js.map +1 -1
  108. package/dist/providers/web-search.d.ts +17 -0
  109. package/dist/providers/web-search.js +224 -0
  110. package/dist/providers/web-search.js.map +1 -0
  111. package/dist/providers/wrap-provider.d.ts +7 -0
  112. package/dist/providers/wrap-provider.js +15 -0
  113. package/dist/providers/wrap-provider.js.map +1 -1
  114. package/dist/providers/yahoo-finance.js +70 -33
  115. package/dist/providers/yahoo-finance.js.map +1 -1
  116. package/dist/routing/classify-intent.js +22 -0
  117. package/dist/routing/classify-intent.js.map +1 -1
  118. package/dist/routing/defaults.js +1 -1
  119. package/dist/routing/defaults.js.map +1 -1
  120. package/dist/routing/index.d.ts +4 -0
  121. package/dist/routing/index.js +3 -0
  122. package/dist/routing/index.js.map +1 -1
  123. package/dist/routing/router-llm-client.d.ts +11 -0
  124. package/dist/routing/router-llm-client.js +42 -0
  125. package/dist/routing/router-llm-client.js.map +1 -0
  126. package/dist/routing/router-prompt.d.ts +2 -0
  127. package/dist/routing/router-prompt.js +138 -0
  128. package/dist/routing/router-prompt.js.map +1 -0
  129. package/dist/routing/router-types.d.ts +62 -0
  130. package/dist/routing/router-types.js +2 -0
  131. package/dist/routing/router-types.js.map +1 -0
  132. package/dist/routing/router.d.ts +10 -0
  133. package/dist/routing/router.js +194 -0
  134. package/dist/routing/router.js.map +1 -0
  135. package/dist/runtime/session-coordinator.d.ts +63 -4
  136. package/dist/runtime/session-coordinator.js +155 -4
  137. package/dist/runtime/session-coordinator.js.map +1 -1
  138. package/dist/runtime/tool-defaults-wrapper.d.ts +3 -0
  139. package/dist/runtime/tool-defaults-wrapper.js +25 -0
  140. package/dist/runtime/tool-defaults-wrapper.js.map +1 -0
  141. package/dist/sentiment/adapters/finnhub.d.ts +7 -0
  142. package/dist/sentiment/adapters/finnhub.js +39 -0
  143. package/dist/sentiment/adapters/finnhub.js.map +1 -0
  144. package/dist/sentiment/adapters/reddit.d.ts +11 -0
  145. package/dist/sentiment/adapters/reddit.js +54 -0
  146. package/dist/sentiment/adapters/reddit.js.map +1 -0
  147. package/dist/sentiment/adapters/twitter.d.ts +9 -0
  148. package/dist/sentiment/adapters/twitter.js +32 -0
  149. package/dist/sentiment/adapters/twitter.js.map +1 -0
  150. package/dist/sentiment/adapters/web.d.ts +9 -0
  151. package/dist/sentiment/adapters/web.js +40 -0
  152. package/dist/sentiment/adapters/web.js.map +1 -0
  153. package/dist/sentiment/index.d.ts +16 -0
  154. package/dist/sentiment/index.js +44 -0
  155. package/dist/sentiment/index.js.map +1 -0
  156. package/dist/sentiment/keywords.d.ts +2 -0
  157. package/dist/sentiment/keywords.js +9 -0
  158. package/dist/sentiment/keywords.js.map +1 -0
  159. package/dist/sentiment/pipeline.d.ts +9 -0
  160. package/dist/sentiment/pipeline.js +57 -0
  161. package/dist/sentiment/pipeline.js.map +1 -0
  162. package/dist/sentiment/scorer.d.ts +9 -0
  163. package/dist/sentiment/scorer.js +64 -0
  164. package/dist/sentiment/scorer.js.map +1 -0
  165. package/dist/sentiment/store.d.ts +24 -0
  166. package/dist/sentiment/store.js +182 -0
  167. package/dist/sentiment/store.js.map +1 -0
  168. package/dist/sentiment/trends.d.ts +13 -0
  169. package/dist/sentiment/trends.js +73 -0
  170. package/dist/sentiment/trends.js.map +1 -0
  171. package/dist/sentiment/types.d.ts +66 -0
  172. package/dist/sentiment/types.js +54 -0
  173. package/dist/sentiment/types.js.map +1 -0
  174. package/dist/system-prompt.js +29 -13
  175. package/dist/system-prompt.js.map +1 -1
  176. package/dist/tool-kit.d.ts +4 -4
  177. package/dist/tools/fundamentals/company-overview.d.ts +4 -2
  178. package/dist/tools/fundamentals/company-overview.js +27 -27
  179. package/dist/tools/fundamentals/company-overview.js.map +1 -1
  180. package/dist/tools/fundamentals/comps.d.ts +1 -1
  181. package/dist/tools/fundamentals/comps.js +45 -45
  182. package/dist/tools/fundamentals/comps.js.map +1 -1
  183. package/dist/tools/fundamentals/dcf.d.ts +1 -1
  184. package/dist/tools/fundamentals/dcf.js +82 -82
  185. package/dist/tools/fundamentals/dcf.js.map +1 -1
  186. package/dist/tools/fundamentals/earnings.d.ts +4 -2
  187. package/dist/tools/fundamentals/earnings.js +25 -25
  188. package/dist/tools/fundamentals/earnings.js.map +1 -1
  189. package/dist/tools/fundamentals/financials.d.ts +4 -2
  190. package/dist/tools/fundamentals/financials.js +23 -23
  191. package/dist/tools/fundamentals/financials.js.map +1 -1
  192. package/dist/tools/fundamentals/sec-filings.d.ts +1 -1
  193. package/dist/tools/index.d.ts +28 -1
  194. package/dist/tools/index.js +35 -2
  195. package/dist/tools/index.js.map +1 -1
  196. package/dist/tools/interaction/ask-user.d.ts +1 -1
  197. package/dist/tools/interaction/ask-user.js +28 -64
  198. package/dist/tools/interaction/ask-user.js.map +1 -1
  199. package/dist/tools/interaction/twitter-login.d.ts +1 -1
  200. package/dist/tools/macro/fear-greed.d.ts +1 -1
  201. package/dist/tools/macro/fred-data.d.ts +4 -2
  202. package/dist/tools/macro/fred-data.js +26 -26
  203. package/dist/tools/macro/fred-data.js.map +1 -1
  204. package/dist/tools/market/crypto-history.d.ts +1 -1
  205. package/dist/tools/market/crypto-price.d.ts +1 -1
  206. package/dist/tools/market/search-ticker.d.ts +1 -1
  207. package/dist/tools/market/stock-history.d.ts +1 -1
  208. package/dist/tools/market/stock-quote.d.ts +1 -1
  209. package/dist/tools/options/option-chain.d.ts +1 -1
  210. package/dist/tools/options/option-chain.js +4 -1
  211. package/dist/tools/options/option-chain.js.map +1 -1
  212. package/dist/tools/portfolio/correlation.d.ts +1 -1
  213. package/dist/tools/portfolio/predictions.d.ts +1 -1
  214. package/dist/tools/portfolio/risk-analysis.d.ts +1 -1
  215. package/dist/tools/portfolio/tracker.d.ts +1 -1
  216. package/dist/tools/portfolio/watchlist.d.ts +1 -1
  217. package/dist/tools/sentiment/reddit-sentiment.d.ts +4 -2
  218. package/dist/tools/sentiment/reddit-sentiment.js +107 -22
  219. package/dist/tools/sentiment/reddit-sentiment.js.map +1 -1
  220. package/dist/tools/sentiment/sentiment-summary.d.ts +7 -0
  221. package/dist/tools/sentiment/sentiment-summary.js +230 -0
  222. package/dist/tools/sentiment/sentiment-summary.js.map +1 -0
  223. package/dist/tools/sentiment/sentiment-trend.d.ts +22 -0
  224. package/dist/tools/sentiment/sentiment-trend.js +39 -0
  225. package/dist/tools/sentiment/sentiment-trend.js.map +1 -0
  226. package/dist/tools/sentiment/twitter-sentiment.d.ts +1 -1
  227. package/dist/tools/sentiment/twitter-sentiment.js +17 -0
  228. package/dist/tools/sentiment/twitter-sentiment.js.map +1 -1
  229. package/dist/tools/sentiment/web-search.d.ts +11 -0
  230. package/dist/tools/sentiment/web-search.js +115 -0
  231. package/dist/tools/sentiment/web-search.js.map +1 -0
  232. package/dist/tools/sentiment/web-sentiment.d.ts +8 -0
  233. package/dist/tools/sentiment/web-sentiment.js +66 -0
  234. package/dist/tools/sentiment/web-sentiment.js.map +1 -0
  235. package/dist/tools/technical/backtest.d.ts +1 -1
  236. package/dist/tools/technical/indicators.d.ts +1 -1
  237. package/dist/tools/technical/indicators.js +7 -1
  238. package/dist/tools/technical/indicators.js.map +1 -1
  239. package/dist/types/index.d.ts +1 -1
  240. package/dist/types/sentiment.d.ts +21 -0
  241. package/dist/workflows/options-screener.js +7 -2
  242. package/dist/workflows/options-screener.js.map +1 -1
  243. package/dist/workflows/portfolio-builder.js +3 -3
  244. package/dist/workflows/portfolio-builder.js.map +1 -1
  245. package/gui/server/background-quotes.ts +31 -0
  246. package/gui/server/chat-event-adapter.ts +142 -0
  247. package/gui/server/invoke-tool.ts +89 -0
  248. package/gui/server/live-chat-event-adapter.ts +181 -0
  249. package/gui/server/model-setup.ts +100 -0
  250. package/gui/server/package.json +5 -0
  251. package/gui/server/projector.ts +212 -0
  252. package/gui/server/server.ts +592 -0
  253. package/gui/server/session-actions.ts +31 -0
  254. package/gui/server/tool-metadata.ts +88 -0
  255. package/gui/server/websocket.ts +128 -0
  256. package/gui/server/writer-lock.ts +118 -0
  257. package/gui/shared/chat-events.ts +118 -0
  258. package/gui/shared/event-reducer.ts +186 -0
  259. package/gui/web/dist/assets/CatalogOverlay-D1ImSJTe.js +1 -0
  260. package/gui/web/dist/assets/index-DBrWq43L.css +1 -0
  261. package/gui/web/dist/assets/index-RflHaj0y.js +67 -0
  262. package/gui/web/dist/assets/logo-CWpt6Y2a.svg +187 -0
  263. package/gui/web/dist/index.html +17 -0
  264. package/package.json +62 -20
  265. package/src/analysts/contracts.ts +189 -0
  266. package/src/analysts/orchestrator.ts +300 -0
  267. package/src/cli.ts +205 -0
  268. package/src/config.ts +161 -0
  269. package/src/index.ts +5 -0
  270. package/src/infra/browser.ts +111 -0
  271. package/src/infra/cache.ts +103 -0
  272. package/src/infra/http-client.ts +68 -0
  273. package/src/infra/index.ts +18 -0
  274. package/src/infra/native-dependencies.ts +12 -0
  275. package/src/infra/node-version.ts +24 -0
  276. package/src/infra/open-url.ts +28 -0
  277. package/src/infra/opencandle-paths.ts +64 -0
  278. package/src/infra/rate-limiter.ts +64 -0
  279. package/src/memory/index.ts +10 -0
  280. package/src/memory/manager.ts +159 -0
  281. package/src/memory/preference-extractor.ts +106 -0
  282. package/src/memory/retrieval.ts +70 -0
  283. package/src/memory/sqlite.ts +172 -0
  284. package/src/memory/storage.ts +204 -0
  285. package/src/memory/tool-defaults.ts +87 -0
  286. package/src/memory/types.ts +67 -0
  287. package/src/onboarding/connect.ts +184 -0
  288. package/src/onboarding/credential-interceptor.ts +134 -0
  289. package/src/onboarding/degradation-accumulator.ts +79 -0
  290. package/src/onboarding/prompt-user.ts +85 -0
  291. package/src/onboarding/providers.ts +315 -0
  292. package/src/onboarding/state.ts +218 -0
  293. package/src/onboarding/tool-helpers.ts +111 -0
  294. package/src/onboarding/tool-tags.ts +201 -0
  295. package/src/onboarding/validation.ts +158 -0
  296. package/src/pi/opencandle-extension.ts +724 -0
  297. package/src/pi/session-storage.ts +5 -0
  298. package/src/pi/session.ts +81 -0
  299. package/src/pi/setup.ts +371 -0
  300. package/src/pi/tool-adapter.ts +36 -0
  301. package/src/prompts/context-builder.ts +204 -0
  302. package/src/prompts/disclaimer.ts +9 -0
  303. package/src/prompts/sections.ts +46 -0
  304. package/src/prompts/workflow-prompts.ts +279 -0
  305. package/src/providers/alpha-vantage.ts +292 -0
  306. package/src/providers/coingecko.ts +96 -0
  307. package/src/providers/exa-search.ts +373 -0
  308. package/src/providers/fear-greed.ts +45 -0
  309. package/src/providers/finnhub.ts +124 -0
  310. package/src/providers/fred.ts +83 -0
  311. package/src/providers/index.ts +9 -0
  312. package/src/providers/provider-credential-error.ts +23 -0
  313. package/src/providers/reddit.ts +151 -0
  314. package/src/providers/sec-edgar.ts +96 -0
  315. package/src/providers/twitter.ts +173 -0
  316. package/src/providers/web-search.ts +293 -0
  317. package/src/providers/with-fallback.ts +41 -0
  318. package/src/providers/wrap-provider.ts +64 -0
  319. package/src/providers/yahoo-finance.ts +367 -0
  320. package/src/routing/classify-intent.ts +194 -0
  321. package/src/routing/defaults.ts +29 -0
  322. package/src/routing/entity-extractor.ts +140 -0
  323. package/src/routing/index.ts +26 -0
  324. package/src/routing/router-llm-client.ts +51 -0
  325. package/src/routing/router-prompt.ts +159 -0
  326. package/src/routing/router-types.ts +66 -0
  327. package/src/routing/router.ts +213 -0
  328. package/src/routing/slot-resolver.ts +152 -0
  329. package/src/routing/types.ts +63 -0
  330. package/src/runtime/evidence.ts +77 -0
  331. package/src/runtime/index.ts +55 -0
  332. package/src/runtime/prompt-step.ts +75 -0
  333. package/src/runtime/provider-ids.ts +15 -0
  334. package/src/runtime/provider-tracker.ts +40 -0
  335. package/src/runtime/run-context.ts +22 -0
  336. package/src/runtime/session-coordinator.ts +406 -0
  337. package/src/runtime/tool-defaults-wrapper.ts +35 -0
  338. package/src/runtime/validation.ts +214 -0
  339. package/src/runtime/workflow-events.ts +75 -0
  340. package/src/runtime/workflow-runner.ts +188 -0
  341. package/src/runtime/workflow-types.ts +102 -0
  342. package/src/sentiment/adapters/finnhub.ts +44 -0
  343. package/src/sentiment/adapters/reddit.ts +65 -0
  344. package/src/sentiment/adapters/twitter.ts +36 -0
  345. package/src/sentiment/adapters/web.ts +44 -0
  346. package/src/sentiment/index.ts +58 -0
  347. package/src/sentiment/keywords.ts +9 -0
  348. package/src/sentiment/pipeline.ts +68 -0
  349. package/src/sentiment/scorer.ts +78 -0
  350. package/src/sentiment/store.ts +260 -0
  351. package/src/sentiment/trends.ts +90 -0
  352. package/src/sentiment/types.ts +108 -0
  353. package/src/system-prompt.ts +115 -0
  354. package/src/tool-kit.ts +68 -0
  355. package/src/tools/AGENTS.md +36 -0
  356. package/src/tools/fundamentals/company-overview.ts +54 -0
  357. package/src/tools/fundamentals/comps.ts +156 -0
  358. package/src/tools/fundamentals/dcf.ts +267 -0
  359. package/src/tools/fundamentals/earnings.ts +47 -0
  360. package/src/tools/fundamentals/financials.ts +54 -0
  361. package/src/tools/fundamentals/sec-filings.ts +61 -0
  362. package/src/tools/index.ts +88 -0
  363. package/src/tools/interaction/ask-user.ts +81 -0
  364. package/src/tools/interaction/twitter-login.ts +93 -0
  365. package/src/tools/macro/fear-greed.ts +41 -0
  366. package/src/tools/macro/fred-data.ts +54 -0
  367. package/src/tools/market/crypto-history.ts +51 -0
  368. package/src/tools/market/crypto-price.ts +53 -0
  369. package/src/tools/market/search-ticker.ts +53 -0
  370. package/src/tools/market/stock-history.ts +79 -0
  371. package/src/tools/market/stock-quote.ts +64 -0
  372. package/src/tools/options/greeks.ts +82 -0
  373. package/src/tools/options/option-chain.ts +91 -0
  374. package/src/tools/portfolio/correlation.ts +162 -0
  375. package/src/tools/portfolio/predictions.ts +253 -0
  376. package/src/tools/portfolio/risk-analysis.ts +134 -0
  377. package/src/tools/portfolio/tracker.ts +147 -0
  378. package/src/tools/portfolio/watchlist.ts +153 -0
  379. package/src/tools/sentiment/reddit-sentiment.ts +164 -0
  380. package/src/tools/sentiment/sentiment-summary.ts +256 -0
  381. package/src/tools/sentiment/sentiment-trend.ts +58 -0
  382. package/src/tools/sentiment/twitter-sentiment.ts +96 -0
  383. package/src/tools/sentiment/web-search.ts +150 -0
  384. package/src/tools/sentiment/web-sentiment.ts +76 -0
  385. package/src/tools/technical/backtest.ts +246 -0
  386. package/src/tools/technical/indicators.ts +258 -0
  387. package/src/types/fundamentals.ts +46 -0
  388. package/src/types/index.ts +20 -0
  389. package/src/types/macro.ts +27 -0
  390. package/src/types/market.ts +43 -0
  391. package/src/types/options.ts +35 -0
  392. package/src/types/portfolio.ts +41 -0
  393. package/src/types/sentiment.ts +70 -0
  394. package/src/workflows/compare-assets.ts +39 -0
  395. package/src/workflows/index.ts +4 -0
  396. package/src/workflows/options-screener.ts +49 -0
  397. package/src/workflows/portfolio-builder.ts +52 -0
  398. package/src/workflows/types.ts +4 -0
  399. package/dist/tools/sentiment/news-sentiment.d.ts +0 -7
  400. package/dist/tools/sentiment/news-sentiment.js +0 -55
  401. package/dist/tools/sentiment/news-sentiment.js.map +0 -1
@@ -1,13 +1,16 @@
1
- import { createAgentSession, DefaultResourceLoader, } from "@mariozechner/pi-coding-agent";
1
+ import "../infra/node-version.js";
2
+ import { createAgentSession, DefaultResourceLoader, getAgentDir, } from "@earendil-works/pi-coding-agent";
2
3
  import { loadEnv } from "../config.js";
3
4
  import openCandleExtension from "./opencandle-extension.js";
4
5
  export async function createOpenCandleSession(options = {}) {
5
6
  loadEnv();
6
7
  const cwd = options.cwd ?? process.cwd();
8
+ const agentDir = options.agentDir ?? getAgentDir();
7
9
  const useInlineExtension = options.useInlineExtension ?? true;
8
10
  const resourceLoader = useInlineExtension
9
11
  ? new DefaultResourceLoader({
10
12
  cwd,
13
+ agentDir,
11
14
  settingsManager: options.settingsManager,
12
15
  extensionFactories: [(pi) => openCandleExtension(pi, { askUserHandler: options.askUserHandler })],
13
16
  })
@@ -15,14 +18,33 @@ export async function createOpenCandleSession(options = {}) {
15
18
  if (resourceLoader) {
16
19
  await resourceLoader.reload();
17
20
  }
18
- return createAgentSession({
21
+ const result = await createAgentSession({
19
22
  cwd,
23
+ agentDir,
20
24
  authStorage: options.authStorage,
21
25
  modelRegistry: options.modelRegistry,
22
26
  sessionManager: options.sessionManager,
23
27
  settingsManager: options.settingsManager,
24
28
  resourceLoader,
25
- tools: [],
29
+ noTools: "builtin",
26
30
  });
31
+ await applySavedDefaultModel(result);
32
+ if (options.bindExtensions !== false) {
33
+ await result.session.bindExtensions({});
34
+ }
35
+ return result;
36
+ }
37
+ async function applySavedDefaultModel(result) {
38
+ const provider = result.session.settingsManager.getDefaultProvider();
39
+ const modelId = result.session.settingsManager.getDefaultModel();
40
+ if (!provider || !modelId)
41
+ return;
42
+ const savedDefault = result.session.modelRegistry.find(provider, modelId);
43
+ if (!savedDefault || !result.session.modelRegistry.hasConfiguredAuth(savedDefault))
44
+ return;
45
+ const current = result.session.model;
46
+ if (current?.provider === savedDefault.provider && current.id === savedDefault.id)
47
+ return;
48
+ await result.session.setModel(savedDefault);
27
49
  }
28
50
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/pi/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,qBAAqB,GAKtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAa5D,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAA0C,EAAE;IAE5C,OAAO,EAAE,CAAC;IAEV,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC;IAC9D,MAAM,cAAc,GAAG,kBAAkB;QACvC,CAAC,CAAC,IAAI,qBAAqB,CAAC;YACxB,GAAG;YACH,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;SAClG,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,OAAO,kBAAkB,CAAC;QACxB,GAAG;QACH,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,cAAc;QACd,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/pi/session.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,CAAC;AAClC,OAAO,EAEL,kBAAkB,EAClB,qBAAqB,EAKrB,WAAW,GACZ,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAe5D,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAA0C,EAAE;IAE5C,OAAO,EAAE,CAAC;IAEV,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,EAAE,CAAC;IACnD,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC;IAC9D,MAAM,cAAc,GAAG,kBAAkB;QACvC,CAAC,CAAC,IAAI,qBAAqB,CAAC;YACxB,GAAG;YACH,QAAQ;YACR,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;SAClG,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;QACtC,GAAG;QACH,QAAQ;QACR,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,cAAc;QACd,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;IAEH,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAErC,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;QACrC,MAAM,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,MAAgC;IACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;IACrE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;IACjE,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;QAAE,OAAO;IAElC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1E,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC;QAAE,OAAO;IAE3F,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,IAAI,OAAO,EAAE,QAAQ,KAAK,YAAY,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE;QAAE,OAAO;IAE1F,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC9C,CAAC"}
@@ -1,10 +1,9 @@
1
- import { type ExtensionAPI, type ExtensionContext } from "@mariozechner/pi-coding-agent";
1
+ import { type ExtensionAPI, type ExtensionContext } from "@earendil-works/pi-coding-agent";
2
2
  type SetupMode = "startup" | "manual";
3
3
  type SetupRequirement = "ready" | "select_model" | "connect_auth";
4
4
  type SetupResult = "ready" | "shutdown" | "cancelled";
5
5
  export declare function getLlmSetupRequirement(ctx: Pick<ExtensionContext, "model" | "modelRegistry">): SetupRequirement;
6
6
  export declare function runOpenCandleSetup(api: ExtensionAPI, ctx: ExtensionContext, options?: {
7
7
  mode: SetupMode;
8
- forceFinancePrompt?: boolean;
9
8
  }): Promise<SetupResult>;
10
9
  export {};
package/dist/pi/setup.js CHANGED
@@ -1,33 +1,30 @@
1
- import { LoginDialogComponent, } from "@mariozechner/pi-coding-agent";
2
- import { getFinanceProviderReadiness, loadFileConfig, saveFileConfig, } from "../config.js";
3
- import { openInBrowser } from "../infra/open-url.js";
4
- import { ONBOARDING_VERSION, loadOnboardingState, saveOnboardingState } from "../onboarding/state.js";
5
- const SETUP_STATUS_KEY = "opencandle-setup";
6
- const ALPHA_VANTAGE_SIGNUP_URL = "https://www.alphavantage.co/support/#api-key";
7
- const FRED_SIGNUP_URL = "https://fredaccount.stlouisfed.org/apikeys";
8
- function renderSetupHeader(title, body) {
9
- return (_tui, theme) => ({
10
- render() {
11
- return [
12
- "",
13
- theme.bold(theme.fg("accent", "OpenCandle Setup")),
14
- theme.fg("muted", title),
15
- "",
16
- ...body.map((line) => theme.fg("dim", line)),
17
- "",
18
- ];
19
- },
20
- invalidate() { },
21
- });
22
- }
23
- function setSetupChrome(ctx, title, body) {
24
- ctx.ui.setHeader(renderSetupHeader(title, body));
25
- ctx.ui.setStatus(SETUP_STATUS_KEY, title);
26
- }
27
- function clearSetupChrome(ctx) {
28
- ctx.ui.setHeader(undefined);
29
- ctx.ui.setStatus(SETUP_STATUS_KEY, undefined);
30
- }
1
+ import { LoginDialogComponent, } from "@earendil-works/pi-coding-agent";
2
+ /**
3
+ * Registry of "fast default" models for each LLM auth provider. After a fresh
4
+ * sign-in we try to activate the default without opening a picker, falling back
5
+ * to the picker if the registry doesn't have a match available. Keys are auth
6
+ * provider ids (as passed to `authStorage.set`); values are `{ provider, id }`
7
+ * tuples matching `Model.provider` / `Model.id` fields in the Pi model registry.
8
+ *
9
+ * Models here are intentionally mid-tier (flash/haiku/mini) the goal is a
10
+ * quick-to-respond first chat, not the flagship. Users can swap models later
11
+ * via Pi's built-in model picker.
12
+ */
13
+ const DEFAULT_LLM_MODELS = {
14
+ // API-key providers
15
+ google: { provider: "google", id: "gemini-2.5-flash" },
16
+ openai: { provider: "openai", id: "gpt-5-mini" },
17
+ anthropic: { provider: "anthropic", id: "claude-haiku-4-5" },
18
+ // OAuth providers
19
+ "google-gemini-cli": { provider: "google-gemini-cli", id: "gemini-2.5-flash" },
20
+ "openai-codex": { provider: "openai-codex", id: "gpt-5.1-codex-mini" },
21
+ };
22
+ /** Human-readable labels for the three API-key providers, used in preamble copy. */
23
+ const API_KEY_PROVIDER_LABELS = {
24
+ google: "Google Gemini",
25
+ openai: "OpenAI",
26
+ anthropic: "Anthropic",
27
+ };
31
28
  function sortModels(models, preferredProvider) {
32
29
  return [...models].sort((a, b) => {
33
30
  const aPreferred = preferredProvider && a.provider === preferredProvider ? -1 : 0;
@@ -163,7 +160,9 @@ async function runLoginDialog(ctx, providerId) {
163
160
  return false;
164
161
  }
165
162
  async function runApiKeySetup(ctx, provider) {
166
- const key = await ctx.ui.input("Paste your API key", "sk-...");
163
+ const label = API_KEY_PROVIDER_LABELS[provider];
164
+ ctx.ui.notify(`OpenCandle stores your ${label} API key locally and only sends it to ${label}.`, "info");
165
+ const key = await ctx.ui.input(`Paste your ${label} API key for OpenCandle`, "sk-...");
167
166
  const trimmed = key?.trim();
168
167
  if (!trimmed) {
169
168
  ctx.ui.notify("No API key entered.", "warning");
@@ -171,7 +170,32 @@ async function runApiKeySetup(ctx, provider) {
171
170
  }
172
171
  ctx.modelRegistry.authStorage.set(provider, { type: "api_key", key: trimmed });
173
172
  ctx.modelRegistry.refresh();
174
- ctx.ui.notify("API key saved.", "info");
173
+ ctx.ui.notify(`${label} API key saved to OpenCandle.`, "info");
174
+ return true;
175
+ }
176
+ /**
177
+ * Attempt to activate the registered default model for `authProviderId`.
178
+ * Returns `true` on success, `false` if no default is registered, the default
179
+ * isn't currently available in `getAvailable()`, or `api.setModel` fails (in
180
+ * which case the caller should fall through to the model picker).
181
+ */
182
+ async function activateDefaultModel(api, ctx, authProviderId) {
183
+ const defaultModel = DEFAULT_LLM_MODELS[authProviderId];
184
+ if (!defaultModel) {
185
+ return false;
186
+ }
187
+ ctx.modelRegistry.refresh();
188
+ const match = ctx.modelRegistry
189
+ .getAvailable()
190
+ .find((candidate) => candidate.provider === defaultModel.provider && candidate.id === defaultModel.id);
191
+ if (!match) {
192
+ return false;
193
+ }
194
+ const ok = await api.setModel(match);
195
+ if (!ok) {
196
+ return false;
197
+ }
198
+ ctx.ui.notify(`Model selected: ${match.provider}/${match.id}`, "info");
175
199
  return true;
176
200
  }
177
201
  async function selectModel(api, ctx, preferredProvider) {
@@ -204,10 +228,6 @@ async function runLlmSetup(api, ctx, mode) {
204
228
  return "ready";
205
229
  }
206
230
  if (requirement === "select_model") {
207
- setSetupChrome(ctx, "Choose an AI model", [
208
- "You already have at least one Pi-connected provider.",
209
- "Pick the model OpenCandle should use for chat and analysis.",
210
- ]);
211
231
  const selected = await selectModel(api, ctx);
212
232
  if (selected) {
213
233
  return "ready";
@@ -223,15 +243,7 @@ async function runLlmSetup(api, ctx, mode) {
223
243
  }
224
244
  continue;
225
245
  }
226
- setSetupChrome(ctx, "Connect an AI model", [
227
- "Welcome to OpenCandle.",
228
- "Choose sign-in or paste an API key to enable chat and analysis.",
229
- ]);
230
- const choice = await ctx.ui.select("Welcome to OpenCandle", [
231
- "Sign in",
232
- "Paste API key",
233
- "Exit setup",
234
- ]);
246
+ const choice = await ctx.ui.select("Welcome to OpenCandle — sign in or paste an API key to start chatting", ["Sign in", "Paste API key", "Exit setup"]);
235
247
  if (choice !== "Sign in" && choice !== "Paste API key") {
236
248
  if (mode === "startup") {
237
249
  ctx.ui.notify("OpenCandle needs an AI model before chat can start.", "warning");
@@ -253,6 +265,11 @@ async function runLlmSetup(api, ctx, mode) {
253
265
  if (!loggedIn) {
254
266
  continue;
255
267
  }
268
+ // Try the registered default for the provider we just signed into —
269
+ // this is the fast path that avoids the model picker entirely.
270
+ if (await activateDefaultModel(api, ctx, providerId)) {
271
+ return "ready";
272
+ }
256
273
  const selected = await selectModel(api, ctx, providerId);
257
274
  if (selected) {
258
275
  return "ready";
@@ -267,91 +284,21 @@ async function runLlmSetup(api, ctx, mode) {
267
284
  if (!saved) {
268
285
  continue;
269
286
  }
287
+ // Try the registered default for the provider we just pasted a key for.
288
+ if (await activateDefaultModel(api, ctx, provider)) {
289
+ return "ready";
290
+ }
270
291
  const selected = await selectModel(api, ctx, provider);
271
292
  if (selected) {
272
293
  return "ready";
273
294
  }
274
295
  }
275
296
  }
276
- function hasFinanceKeys(readiness) {
277
- return readiness.hasAlphaVantage && readiness.hasFred;
278
- }
279
- function upsertFinanceKey(config, provider, apiKey) {
280
- return {
281
- ...config,
282
- providers: {
283
- ...config.providers,
284
- [provider]: {
285
- ...(config.providers?.[provider] ?? {}),
286
- apiKey,
287
- },
288
- },
289
- };
290
- }
291
- async function runFinanceSetup(ctx, forcePrompt) {
292
- const fileConfig = loadFileConfig();
293
- const readiness = getFinanceProviderReadiness();
294
- if (hasFinanceKeys(readiness)) {
295
- saveOnboardingState({ version: ONBOARDING_VERSION, financeSetupStatus: "completed" });
296
- return;
297
- }
298
- const onboardingState = loadOnboardingState();
299
- if (!forcePrompt &&
300
- (onboardingState.financeSetupStatus === "dismissed" ||
301
- onboardingState.financeSetupStatus === "completed")) {
302
- return;
303
- }
304
- setSetupChrome(ctx, "Connect market data providers", [
305
- "Alpha Vantage unlocks fundamentals, earnings, and DCF.",
306
- "FRED unlocks interest rates, inflation, and macro data.",
307
- ]);
308
- const choice = await ctx.ui.select("Connect market data providers (optional)", [
309
- "Yes",
310
- "Skip for now",
311
- ]);
312
- if (choice !== "Yes") {
313
- saveOnboardingState({ version: ONBOARDING_VERSION, financeSetupStatus: "dismissed" });
314
- return;
315
- }
316
- let nextConfig = fileConfig;
317
- let nextReadiness = readiness;
318
- if (!nextReadiness.hasAlphaVantage) {
319
- await openInBrowser(ALPHA_VANTAGE_SIGNUP_URL).catch(() => { });
320
- ctx.ui.notify("Opening Alpha Vantage signup in your browser...", "info");
321
- const alphaKey = await ctx.ui.input("Alpha Vantage API key (optional)", "Enter key or leave blank");
322
- const trimmed = alphaKey?.trim();
323
- if (trimmed) {
324
- nextConfig = upsertFinanceKey(nextConfig, "alphaVantage", trimmed);
325
- nextReadiness = { ...nextReadiness, hasAlphaVantage: true };
326
- }
327
- }
328
- if (!nextReadiness.hasFred) {
329
- await openInBrowser(FRED_SIGNUP_URL).catch(() => { });
330
- ctx.ui.notify("Opening FRED API key page in your browser...", "info");
331
- const fredKey = await ctx.ui.input("FRED API key (optional)", "Enter key or leave blank");
332
- const trimmed = fredKey?.trim();
333
- if (trimmed) {
334
- nextConfig = upsertFinanceKey(nextConfig, "fred", trimmed);
335
- nextReadiness = { ...nextReadiness, hasFred: true };
336
- }
337
- }
338
- if (nextConfig !== fileConfig) {
339
- saveFileConfig(nextConfig);
340
- }
341
- const status = hasFinanceKeys(nextReadiness) ? "completed" : "dismissed";
342
- saveOnboardingState({ version: ONBOARDING_VERSION, financeSetupStatus: status });
343
- }
344
297
  export async function runOpenCandleSetup(api, ctx, options = { mode: "startup" }) {
345
298
  const initialRequirement = getLlmSetupRequirement(ctx);
346
299
  if (initialRequirement !== "ready" || options.mode === "manual") {
347
- const result = await runLlmSetup(api, ctx, options.mode);
348
- if (result === "shutdown" || result === "cancelled") {
349
- clearSetupChrome(ctx);
350
- return result;
351
- }
300
+ return runLlmSetup(api, ctx, options.mode);
352
301
  }
353
- await runFinanceSetup(ctx, options.forceFinancePrompt ?? options.mode === "manual");
354
- clearSetupChrome(ctx);
355
302
  return "ready";
356
303
  }
357
304
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/pi/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/pi/setup.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { AgentTool } from "@mariozechner/pi-agent-core";
2
- import type { ToolDefinition } from "@mariozechner/pi-coding-agent";
1
+ import type { AgentTool } from "@earendil-works/pi-agent-core";
2
+ import type { ToolDefinition } from "@earendil-works/pi-coding-agent";
3
3
  import type { TSchema } from "@sinclair/typebox";
4
4
  export declare function agentToolToPiTool<TParams extends TSchema, TDetails>(tool: AgentTool<TParams, TDetails>): ToolDefinition<TParams, TDetails>;
5
5
  export declare function getOpenCandleToolDefinitions(): ToolDefinition[];
@@ -1,4 +1,6 @@
1
1
  import { getAllTools } from "../tools/index.js";
2
+ import { getDefaults } from "../memory/tool-defaults.js";
3
+ import { wrapWithDefaults } from "../runtime/tool-defaults-wrapper.js";
2
4
  export function agentToolToPiTool(tool) {
3
5
  return {
4
6
  name: tool.name,
@@ -12,6 +14,17 @@ export function agentToolToPiTool(tool) {
12
14
  };
13
15
  }
14
16
  export function getOpenCandleToolDefinitions() {
15
- return getAllTools().map((tool) => agentToolToPiTool(tool));
17
+ return getAllTools()
18
+ .map((tool) => ({ tool, defaults: safeGetDefaults(tool.name) }))
19
+ .filter(({ defaults }) => defaults.__enabled !== false)
20
+ .map(({ tool, defaults }) => agentToolToPiTool(wrapWithDefaults(tool, defaults)));
21
+ }
22
+ function safeGetDefaults(toolName) {
23
+ try {
24
+ return getDefaults(toolName);
25
+ }
26
+ catch {
27
+ return {};
28
+ }
16
29
  }
17
30
  //# sourceMappingURL=tool-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../../src/pi/tool-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,UAAU,iBAAiB,CAC/B,IAAkC;IAElC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,aAAa,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;QAClD,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;YACtD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../../src/pi/tool-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,MAAM,UAAU,iBAAiB,CAC/B,IAAkC;IAElC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,aAAa,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;QAClD,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;YACtD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,WAAW,EAAE;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC/D,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC;SACtD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -6,6 +6,21 @@ export interface PromptContextOptions {
6
6
  memoryContext?: string;
7
7
  providerStatus?: string;
8
8
  addonToolDescriptions?: string[];
9
+ /**
10
+ * Optional fallback-route context (router-mode only). When present, a
11
+ * fallback playbook and an Assumptions block are slotted into
12
+ * `workflow-instructions`. Mutually exclusive with `workflowInstructions` —
13
+ * if both are set, `workflowInstructions` wins (rule-path compatibility).
14
+ */
15
+ fallbackContext?: FallbackContext;
16
+ }
17
+ export interface FallbackContext {
18
+ /** Pre-rendered Assumptions block from the router output. */
19
+ assumptionsBlock: string;
20
+ /** Router `missing_required` list. When non-empty, the prompt instructs ask_user. */
21
+ missingRequired: string[];
22
+ /** Optional free-text describing entities/slots for context. */
23
+ extraContext?: string;
9
24
  }
10
25
  /**
11
26
  * Assembles the system prompt from composable, budgeted sections.
@@ -24,3 +39,10 @@ export declare class PromptContextBuilder {
24
39
  */
25
40
  populateFromOptions(options: PromptContextOptions): this;
26
41
  }
42
+ /**
43
+ * Fallback playbook — rendered when the router picks `route: "fallback"`.
44
+ * Composes with the universal analyst stance in `base-role`/`safety-rules`.
45
+ * Instructs tool-first, commit-with-reasoning, ask_user when required slots
46
+ * are missing. Contains NO refusal or hedging language.
47
+ */
48
+ export declare function buildFallbackPlaybook(ctx: FallbackContext): string;
@@ -47,6 +47,9 @@ export class PromptContextBuilder {
47
47
  if (options.workflowInstructions) {
48
48
  this.setSection("workflow-instructions", options.workflowInstructions);
49
49
  }
50
+ else if (options.fallbackContext) {
51
+ this.setSection("workflow-instructions", buildFallbackPlaybook(options.fallbackContext));
52
+ }
50
53
  if (options.memoryContext) {
51
54
  this.setSection("memory-context", formatMemorySection(options.memoryContext));
52
55
  }
@@ -57,19 +60,47 @@ export class PromptContextBuilder {
57
60
  return this;
58
61
  }
59
62
  }
63
+ /**
64
+ * Fallback playbook — rendered when the router picks `route: "fallback"`.
65
+ * Composes with the universal analyst stance in `base-role`/`safety-rules`.
66
+ * Instructs tool-first, commit-with-reasoning, ask_user when required slots
67
+ * are missing. Contains NO refusal or hedging language.
68
+ */
69
+ export function buildFallbackPlaybook(ctx) {
70
+ const missingLine = ctx.missingRequired.length > 0
71
+ ? `\n## Missing Required Information\nThe following slots are required but not yet filled: ${ctx.missingRequired.join(", ")}. Call the \`ask_user\` tool to collect each one BEFORE committing to a final answer. Do not guess or assume these values.`
72
+ : "";
73
+ const extraLine = ctx.extraContext ? `\n## Additional Context\n${ctx.extraContext}` : "";
74
+ return `## Fallback Playbook
75
+ This turn did not match a structured workflow, but you still commit to an answer under the analyst stance. Follow this playbook:
76
+
77
+ 1. Tool-first: fetch relevant data with your available tools before stating prices, levels, or metrics.
78
+ 2. Anchor on the Assumptions block below — it carries the router's best reading of what the user said and what came from saved preferences. Reproduce the block in your response exactly as written.
79
+ 3. Commit: give a concrete, specific answer (entry zone, target, allocation, recommendation, explanation — whatever the question asked for). Do not refuse. Do not hedge into vagueness. Low confidence is a legitimate answer; refusal is not.
80
+ 4. Attach reasoning, a confidence band, and an invalidation condition to every committal response.${missingLine}${extraLine}
81
+
82
+ ${ctx.assumptionsBlock}
83
+
84
+ Response format:
85
+ - Start with the Assumptions block above exactly as written. Do not relabel source attribution anywhere else.
86
+ - Commit to specifics. Present numeric data in tables when comparing multiple values.
87
+ - Flag downside and risks loudly; never downplay them.`;
88
+ }
60
89
  // --- Section content ---
61
- const BASE_ROLE = `You are OpenCandle, a financial advisory agent for investors and traders.
90
+ const BASE_ROLE = `You are OpenCandle, a research analyst for investors and traders.
62
91
 
63
92
  ## Your Role
64
- You provide data-driven analysis for stocks, crypto, macro economics, and portfolio management. You use your tools to fetch real-time data before making any claims about prices, valuations, or market conditions.`;
93
+ You are an analyst, not a fiduciary advisor. When asked for entry levels, price targets, stops, position sizes, or allocations, you COMMIT to specific numbers backed by the data you fetched. Uncertainty is expressed as a confidence band and an invalidation level — never as refusal. Refusal-shaped hedges are wrong for this product; users are here for an analyst's view. Frame views as analyst opinion ("our read", "the data suggests", "analyst view"), never as personalised fiduciary guidance ("tailored to your situation", "given your full financial picture").`;
65
94
  const SAFETY_RULES = `## Guidelines
66
95
  - Always fetch data with tools before stating prices, ratios, or metrics. Never guess financial numbers. Every substantive response should be backed by at least one tool call — if you find yourself writing a response with zero tool calls, stop and think about what data would make it better.
96
+ - Commit to specifics when asked for entries, targets, stops, allocations, or position sizes. Refusal is not an acceptable output shape.
97
+ - Each committal response carries FOUR things: the specific number or range, a reasoning chain naming the data points you used, a confidence band, and an invalidation level (what would break the thesis).
67
98
  - For options analysis, use get_option_chain to see the full chain with Greeks. Pay attention to put/call ratio, unusual volume, and IV levels.
68
99
  - Present numerical data in tables when comparing multiple securities.
69
100
  - Include data timestamps so users know how fresh the information is.
70
- - Be concise and actionable. Lead with the key insight, then supporting data.
71
- - Flag risks prominently. Never downplay downside scenarios.
72
- - For portfolio-construction and options-screening requests, provide an educational draft using the workflow tools and include the disclaimer. Do not refuse solely because the user asked for an idea, allocation, or screened setup.
101
+ - Be concise and actionable. Lead with the commitment, then supporting data and reasoning.
102
+ - Flag downside and risks loudly through invalidation levels and honest confidence bands. A bearish analyst view with conviction is valid output. Never downplay downside; also never refuse in its name.
103
+ - Calibrate explanation depth from conversational signals user vocabulary, prior turns, explicit asks ("explain it simply"). The commit-to-specifics bar is identical for beginners and sophisticated users; only the depth of supporting explanation varies.
73
104
  - Reuse prior tool outputs when they already answer the question. Do not re-fetch the same symbol and parameters unless you need a missing field or fresher timestamp.
74
105
  - If one provider is missing data, continue with the remaining tools and clearly label unavailable metrics instead of aborting the entire response.
75
106
 
@@ -95,7 +126,8 @@ const TOOL_CATALOG = `## Available Tools
95
126
  - **Fundamentals**: get_company_overview, get_financials, get_earnings, compute_dcf, compare_companies, get_sec_filings — company financials, valuation metrics, DCF intrinsic value, peer comparison, and SEC EDGAR filings (10-K, 10-Q, 8-K)
96
127
  - **Technical Analysis**: get_technical_indicators, backtest_strategy — SMA, EMA, RSI, MACD, Bollinger Bands, OBV, VWAP computed from price data, plus simple strategy backtesting
97
128
  - **Macro**: get_economic_data, get_fear_greed — FRED economic indicators and market sentiment
98
- - **Sentiment**: get_reddit_sentiment, get_reddit_discussions — retail sentiment from financial Reddit communities
129
+ - **Sentiment**: get_reddit_sentiment, get_twitter_sentiment, get_web_sentiment, get_sentiment_trend, get_sentiment_summary — retail and news sentiment from Reddit, Twitter/X, and web sources with historical trends and cross-source divergence detection
130
+ - **Web Search**: search_web — breaking news, earnings context, company events, regulatory developments. When a dedicated tool can answer the question (quotes, fundamentals, earnings, macro, SEC filings, sentiment), use that tool instead — do not add search_web as a supplementary source for data available through dedicated tools
99
131
  - **Options**: get_option_chain — full options chain with strikes, bids/asks, volume, OI, IV, and computed Greeks (delta, gamma, theta, vega, rho)
100
132
  - **Portfolio**: track_portfolio, analyze_risk, manage_watchlist, analyze_correlation, track_prediction — position tracking, P&L, Sharpe ratio, VaR, watchlist with price alerts, correlation matrix, and prediction tracking with accuracy scoring
101
133
  - **User Interaction**: ask_user — ask the user a clarification question when their request is ambiguous or missing key details`;
@@ -116,11 +148,15 @@ When analyzing a stock, follow these steps in order:
116
148
  2. **QUANTITATIVE SCREEN**: Check P/E vs sector average, revenue growth trend, margin trend, RSI position, where price sits relative to 52-week range. State PASS or FAIL on each.
117
149
  3. **QUALITATIVE ASSESSMENT**: Earnings surprise trend, sentiment divergence from price action, macro headwinds or tailwinds affecting this stock or sector.
118
150
  4. **RISK CHECK**: Volatility, max drawdown history, VaR. Flag anything in the danger zone.
119
- 5. **SYNTHESIS**: State your reasoning chain explicitly: "Because [data point] + [data point], I conclude [thesis]."
151
+ 5. **SYNTHESIS**: Commit to a specific call (entry zone / target / stop / allocation / position size — whichever the question asked for). State your reasoning chain explicitly: "Because [data point] + [data point], our read is [thesis]." Attach a confidence band and an invalidation level.
120
152
 
121
- ## Assumption Disclosure
122
- Workflow prompts include a pre-rendered "Assumptions" block with correct source attribution (user-specified, saved preference, or default). Start your response with that block exactly as written. Do NOT independently relabel any value's source anywhere in your response. The assumptions block is the single authoritative provenance representation.
153
+ ## Commit Shape
154
+ Every committal response MUST carry four elements:
155
+ - **The commitment** — a specific number or tight range (entry zone, target, stop, allocation %, position size). Not "consider a range around current price"; give the zone.
156
+ - **Reasoning chain** — name the data points you used ("P/E 28 vs sector 22, RSI 41, DCF midpoint $X, revenue growth 18% YoY").
157
+ - **Confidence band** — e.g. "moderate conviction", "50% confidence", "high conviction given the sector tailwind". Low confidence is a legitimate answer; refusal is not.
158
+ - **Invalidation level** — what would change your view, stated concretely ("thesis breaks if quarterly revenue growth falls below 15%", "invalidated on a daily close below $120 with expanding volume").
123
159
 
124
- ## Disclaimer
125
- You are an AI assistant providing financial information and analysis for educational purposes. This is not financial advice. Users should consult qualified financial advisors before making investment decisions.`;
160
+ ## Assumption Disclosure
161
+ Workflow prompts include a pre-rendered "Assumptions" block with correct source attribution (user-specified, saved preference, or default). Start your response with that block exactly as written. Do NOT independently relabel any value's source anywhere in your response. The assumptions block is the single authoritative provenance representation.`;
126
162
  //# sourceMappingURL=context-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/prompts/context-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/prompts/context-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * User-facing disclaimer text. Rendered OUTSIDE the LLM instruction context as
3
+ * a custom display message (see `src/pi/opencandle-extension.ts`), so it no
4
+ * longer steers model behavior but still surfaces on every assistant turn.
5
+ */
6
+ export declare const DISCLAIMER_TEXT: string;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * User-facing disclaimer text. Rendered OUTSIDE the LLM instruction context as
3
+ * a custom display message (see `src/pi/opencandle-extension.ts`), so it no
4
+ * longer steers model behavior but still surfaces on every assistant turn.
5
+ */
6
+ export const DISCLAIMER_TEXT = "OpenCandle is a research and analysis tool, not a fiduciary financial advisor. " +
7
+ "Views, targets, and allocations are informational analyst output — not personalized recommendations. " +
8
+ "Verify independently before acting.";
9
+ //# sourceMappingURL=disclaimer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disclaimer.js","sourceRoot":"","sources":["../../src/prompts/disclaimer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAC1B,iFAAiF;IACjF,uGAAuG;IACvG,qCAAqC,CAAC"}
@@ -1,9 +1,17 @@
1
1
  import type { PortfolioSlots, OptionsScreenerSlots, CompareAssetsSlots, SlotResolution, SlotSource } from "../routing/types.js";
2
+ import type { RouterOutput } from "../routing/router-types.js";
2
3
  /**
3
4
  * Build a deterministic assumption disclosure block from resolution.sources.
4
5
  * This is the single authoritative provenance representation.
5
6
  */
6
7
  export declare function buildDisclosureBlock(slotValues: Record<string, unknown>, slotSources: Record<string, SlotSource | undefined>, workflowConstraints?: string[]): string;
8
+ /**
9
+ * Render the Assumptions block directly from router output. Workflow and
10
+ * fallback routes both call this so provenance labels render consistently.
11
+ * Matches `buildDisclosureBlock` labels verbatim (`User-specified` /
12
+ * `From saved preferences` / `Defaults`).
13
+ */
14
+ export declare function buildAssumptionsBlockFromRouter(slots: RouterOutput["slots"], workflowConstraints?: string[]): string;
7
15
  export declare function buildPortfolioPrompt(resolution: SlotResolution<PortfolioSlots>): string;
8
16
  export declare function buildOptionsScreenerPrompt(resolution: SlotResolution<OptionsScreenerSlots>): string;
9
17
  export declare function buildCompareAssetsPrompt(resolution: SlotResolution<CompareAssetsSlots>): string;