opencandle 0.3.0 → 0.5.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 (408) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +106 -14
  3. package/assets/logo.svg +187 -0
  4. package/dist/cli.d.ts +1 -1
  5. package/dist/cli.js +40 -3
  6. package/dist/cli.js.map +1 -1
  7. package/dist/config.d.ts +25 -0
  8. package/dist/config.js +72 -0
  9. package/dist/config.js.map +1 -1
  10. package/dist/infra/browser.d.ts +11 -3
  11. package/dist/infra/browser.js +2 -1
  12. package/dist/infra/browser.js.map +1 -1
  13. package/dist/infra/native-dependencies.d.ts +1 -0
  14. package/dist/infra/native-dependencies.js +10 -0
  15. package/dist/infra/native-dependencies.js.map +1 -0
  16. package/dist/infra/node-version.d.ts +2 -0
  17. package/dist/infra/node-version.js +23 -0
  18. package/dist/infra/node-version.js.map +1 -0
  19. package/dist/infra/rate-limiter.d.ts +4 -0
  20. package/dist/infra/rate-limiter.js +5 -1
  21. package/dist/infra/rate-limiter.js.map +1 -1
  22. package/dist/memory/index.d.ts +2 -0
  23. package/dist/memory/index.js +1 -0
  24. package/dist/memory/index.js.map +1 -1
  25. package/dist/memory/manager.d.ts +9 -0
  26. package/dist/memory/manager.js +28 -11
  27. package/dist/memory/manager.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 +7 -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/memory/types.js +4 -0
  37. package/dist/memory/types.js.map +1 -1
  38. package/dist/onboarding/connect.d.ts +13 -1
  39. package/dist/onboarding/connect.js +21 -10
  40. package/dist/onboarding/connect.js.map +1 -1
  41. package/dist/onboarding/prompt-user.d.ts +1 -1
  42. package/dist/onboarding/providers.d.ts +7 -0
  43. package/dist/onboarding/providers.js +6 -3
  44. package/dist/onboarding/providers.js.map +1 -1
  45. package/dist/onboarding/tool-helpers.d.ts +1 -1
  46. package/dist/pi/opencandle-extension.d.ts +7 -1
  47. package/dist/pi/opencandle-extension.js +391 -21
  48. package/dist/pi/opencandle-extension.js.map +1 -1
  49. package/dist/pi/session-storage.d.ts +2 -0
  50. package/dist/pi/session-storage.js +5 -0
  51. package/dist/pi/session-storage.js.map +1 -0
  52. package/dist/pi/session.d.ts +4 -1
  53. package/dist/pi/session.js +25 -3
  54. package/dist/pi/session.js.map +1 -1
  55. package/dist/pi/setup.d.ts +1 -1
  56. package/dist/pi/setup.js +11 -1
  57. package/dist/pi/setup.js.map +1 -1
  58. package/dist/pi/tool-adapter.d.ts +2 -2
  59. package/dist/pi/tool-adapter.js +14 -1
  60. package/dist/pi/tool-adapter.js.map +1 -1
  61. package/dist/prompts/context-builder.d.ts +40 -3
  62. package/dist/prompts/context-builder.js +140 -19
  63. package/dist/prompts/context-builder.js.map +1 -1
  64. package/dist/prompts/disclaimer.d.ts +6 -0
  65. package/dist/prompts/disclaimer.js +9 -0
  66. package/dist/prompts/disclaimer.js.map +1 -0
  67. package/dist/prompts/policy-cards.d.ts +13 -0
  68. package/dist/prompts/policy-cards.js +197 -0
  69. package/dist/prompts/policy-cards.js.map +1 -0
  70. package/dist/prompts/sections.js +3 -3
  71. package/dist/prompts/sections.js.map +1 -1
  72. package/dist/prompts/workflow-prompts.d.ts +8 -0
  73. package/dist/prompts/workflow-prompts.js +208 -22
  74. package/dist/prompts/workflow-prompts.js.map +1 -1
  75. package/dist/providers/alpha-vantage.js +23 -1
  76. package/dist/providers/alpha-vantage.js.map +1 -1
  77. package/dist/providers/sec-edgar.d.ts +8 -1
  78. package/dist/providers/sec-edgar.js +172 -5
  79. package/dist/providers/sec-edgar.js.map +1 -1
  80. package/dist/providers/yahoo-finance.d.ts +2 -0
  81. package/dist/providers/yahoo-finance.js +203 -35
  82. package/dist/providers/yahoo-finance.js.map +1 -1
  83. package/dist/routing/classify-intent.d.ts +3 -0
  84. package/dist/routing/classify-intent.js +82 -3
  85. package/dist/routing/classify-intent.js.map +1 -1
  86. package/dist/routing/defaults.js +4 -4
  87. package/dist/routing/defaults.js.map +1 -1
  88. package/dist/routing/entity-extractor.d.ts +1 -0
  89. package/dist/routing/entity-extractor.js +158 -12
  90. package/dist/routing/entity-extractor.js.map +1 -1
  91. package/dist/routing/index.d.ts +10 -0
  92. package/dist/routing/index.js +7 -0
  93. package/dist/routing/index.js.map +1 -1
  94. package/dist/routing/legacy-rule-router.d.ts +9 -0
  95. package/dist/routing/legacy-rule-router.js +12 -0
  96. package/dist/routing/legacy-rule-router.js.map +1 -0
  97. package/dist/routing/planning.d.ts +54 -0
  98. package/dist/routing/planning.js +531 -0
  99. package/dist/routing/planning.js.map +1 -0
  100. package/dist/routing/route-manifest.d.ts +35 -0
  101. package/dist/routing/route-manifest.js +221 -0
  102. package/dist/routing/route-manifest.js.map +1 -0
  103. package/dist/routing/router-llm-client.d.ts +11 -0
  104. package/dist/routing/router-llm-client.js +42 -0
  105. package/dist/routing/router-llm-client.js.map +1 -0
  106. package/dist/routing/router-prompt.d.ts +2 -0
  107. package/dist/routing/router-prompt.js +141 -0
  108. package/dist/routing/router-prompt.js.map +1 -0
  109. package/dist/routing/router-types.d.ts +71 -0
  110. package/dist/routing/router-types.js +2 -0
  111. package/dist/routing/router-types.js.map +1 -0
  112. package/dist/routing/router.d.ts +11 -0
  113. package/dist/routing/router.js +638 -0
  114. package/dist/routing/router.js.map +1 -0
  115. package/dist/routing/slot-resolver.js +46 -6
  116. package/dist/routing/slot-resolver.js.map +1 -1
  117. package/dist/routing/turn-context.d.ts +44 -0
  118. package/dist/routing/turn-context.js +45 -0
  119. package/dist/routing/turn-context.js.map +1 -0
  120. package/dist/routing/types.d.ts +13 -1
  121. package/dist/runtime/answer-contracts.d.ts +82 -0
  122. package/dist/runtime/answer-contracts.js +414 -0
  123. package/dist/runtime/answer-contracts.js.map +1 -0
  124. package/dist/runtime/artifact-contracts.d.ts +14 -0
  125. package/dist/runtime/artifact-contracts.js +57 -0
  126. package/dist/runtime/artifact-contracts.js.map +1 -0
  127. package/dist/runtime/planning-evidence.d.ts +99 -0
  128. package/dist/runtime/planning-evidence.js +445 -0
  129. package/dist/runtime/planning-evidence.js.map +1 -0
  130. package/dist/runtime/session-coordinator.d.ts +81 -3
  131. package/dist/runtime/session-coordinator.js +201 -17
  132. package/dist/runtime/session-coordinator.js.map +1 -1
  133. package/dist/runtime/tool-defaults-wrapper.d.ts +3 -0
  134. package/dist/runtime/tool-defaults-wrapper.js +25 -0
  135. package/dist/runtime/tool-defaults-wrapper.js.map +1 -0
  136. package/dist/sentiment/store.js +5 -0
  137. package/dist/sentiment/store.js.map +1 -1
  138. package/dist/system-prompt.js +23 -12
  139. package/dist/system-prompt.js.map +1 -1
  140. package/dist/tool-kit.d.ts +4 -4
  141. package/dist/tools/fundamentals/company-overview.d.ts +1 -1
  142. package/dist/tools/fundamentals/company-overview.js +1 -1
  143. package/dist/tools/fundamentals/company-overview.js.map +1 -1
  144. package/dist/tools/fundamentals/comps.d.ts +1 -1
  145. package/dist/tools/fundamentals/comps.js +1 -1
  146. package/dist/tools/fundamentals/comps.js.map +1 -1
  147. package/dist/tools/fundamentals/dcf.d.ts +1 -1
  148. package/dist/tools/fundamentals/dcf.js +1 -1
  149. package/dist/tools/fundamentals/dcf.js.map +1 -1
  150. package/dist/tools/fundamentals/earnings.d.ts +1 -1
  151. package/dist/tools/fundamentals/earnings.js +1 -1
  152. package/dist/tools/fundamentals/earnings.js.map +1 -1
  153. package/dist/tools/fundamentals/financials.d.ts +1 -1
  154. package/dist/tools/fundamentals/financials.js +1 -1
  155. package/dist/tools/fundamentals/financials.js.map +1 -1
  156. package/dist/tools/fundamentals/sec-filings.d.ts +2 -1
  157. package/dist/tools/fundamentals/sec-filings.js +19 -2
  158. package/dist/tools/fundamentals/sec-filings.js.map +1 -1
  159. package/dist/tools/index.d.ts +29 -1
  160. package/dist/tools/index.js +30 -0
  161. package/dist/tools/index.js.map +1 -1
  162. package/dist/tools/interaction/ask-user.d.ts +1 -1
  163. package/dist/tools/interaction/twitter-login.d.ts +1 -1
  164. package/dist/tools/macro/fear-greed.d.ts +1 -1
  165. package/dist/tools/macro/fear-greed.js +1 -1
  166. package/dist/tools/macro/fear-greed.js.map +1 -1
  167. package/dist/tools/macro/fred-data.d.ts +1 -1
  168. package/dist/tools/macro/fred-data.js +29 -5
  169. package/dist/tools/macro/fred-data.js.map +1 -1
  170. package/dist/tools/market/crypto-history.d.ts +1 -1
  171. package/dist/tools/market/crypto-history.js +18 -2
  172. package/dist/tools/market/crypto-history.js.map +1 -1
  173. package/dist/tools/market/crypto-price.d.ts +1 -1
  174. package/dist/tools/market/crypto-price.js +1 -1
  175. package/dist/tools/market/crypto-price.js.map +1 -1
  176. package/dist/tools/market/search-ticker.d.ts +1 -1
  177. package/dist/tools/market/search-ticker.js +1 -1
  178. package/dist/tools/market/search-ticker.js.map +1 -1
  179. package/dist/tools/market/stock-history.d.ts +1 -1
  180. package/dist/tools/market/stock-history.js +1 -1
  181. package/dist/tools/market/stock-history.js.map +1 -1
  182. package/dist/tools/market/stock-quote.d.ts +1 -1
  183. package/dist/tools/market/stock-quote.js +1 -1
  184. package/dist/tools/market/stock-quote.js.map +1 -1
  185. package/dist/tools/options/greeks.js +0 -1
  186. package/dist/tools/options/greeks.js.map +1 -1
  187. package/dist/tools/options/option-chain.d.ts +1 -1
  188. package/dist/tools/options/option-chain.js +13 -5
  189. package/dist/tools/options/option-chain.js.map +1 -1
  190. package/dist/tools/portfolio/correlation.d.ts +1 -1
  191. package/dist/tools/portfolio/correlation.js +1 -1
  192. package/dist/tools/portfolio/correlation.js.map +1 -1
  193. package/dist/tools/portfolio/holdings-overlap.d.ts +8 -0
  194. package/dist/tools/portfolio/holdings-overlap.js +105 -0
  195. package/dist/tools/portfolio/holdings-overlap.js.map +1 -0
  196. package/dist/tools/portfolio/predictions.d.ts +1 -1
  197. package/dist/tools/portfolio/predictions.js +1 -1
  198. package/dist/tools/portfolio/predictions.js.map +1 -1
  199. package/dist/tools/portfolio/risk-analysis.d.ts +1 -1
  200. package/dist/tools/portfolio/risk-analysis.js +1 -1
  201. package/dist/tools/portfolio/risk-analysis.js.map +1 -1
  202. package/dist/tools/portfolio/tracker.d.ts +1 -1
  203. package/dist/tools/portfolio/tracker.js +1 -1
  204. package/dist/tools/portfolio/tracker.js.map +1 -1
  205. package/dist/tools/portfolio/watchlist.d.ts +1 -1
  206. package/dist/tools/portfolio/watchlist.js +12 -4
  207. package/dist/tools/portfolio/watchlist.js.map +1 -1
  208. package/dist/tools/sentiment/reddit-sentiment.d.ts +1 -1
  209. package/dist/tools/sentiment/reddit-sentiment.js +1 -1
  210. package/dist/tools/sentiment/reddit-sentiment.js.map +1 -1
  211. package/dist/tools/sentiment/sentiment-summary.d.ts +1 -1
  212. package/dist/tools/sentiment/sentiment-summary.js +57 -2
  213. package/dist/tools/sentiment/sentiment-summary.js.map +1 -1
  214. package/dist/tools/sentiment/sentiment-trend.d.ts +1 -1
  215. package/dist/tools/sentiment/twitter-sentiment.d.ts +1 -1
  216. package/dist/tools/sentiment/twitter-sentiment.js +1 -1
  217. package/dist/tools/sentiment/twitter-sentiment.js.map +1 -1
  218. package/dist/tools/sentiment/web-search.d.ts +1 -1
  219. package/dist/tools/sentiment/web-search.js +32 -3
  220. package/dist/tools/sentiment/web-search.js.map +1 -1
  221. package/dist/tools/sentiment/web-sentiment.d.ts +1 -1
  222. package/dist/tools/sentiment/web-sentiment.js +1 -1
  223. package/dist/tools/sentiment/web-sentiment.js.map +1 -1
  224. package/dist/tools/technical/backtest.d.ts +3 -3
  225. package/dist/tools/technical/backtest.js +41 -27
  226. package/dist/tools/technical/backtest.js.map +1 -1
  227. package/dist/tools/technical/indicators.d.ts +1 -1
  228. package/dist/tools/technical/indicators.js +8 -4
  229. package/dist/tools/technical/indicators.js.map +1 -1
  230. package/dist/types/options.d.ts +10 -0
  231. package/dist/types/portfolio.d.ts +27 -0
  232. package/dist/workflows/compare-assets.js +38 -2
  233. package/dist/workflows/compare-assets.js.map +1 -1
  234. package/dist/workflows/options-screener.js +94 -8
  235. package/dist/workflows/options-screener.js.map +1 -1
  236. package/dist/workflows/portfolio-builder.js +9 -5
  237. package/dist/workflows/portfolio-builder.js.map +1 -1
  238. package/gui/server/ask-user-bridge.ts +82 -0
  239. package/gui/server/background-quotes.ts +31 -0
  240. package/gui/server/chat-event-adapter.ts +142 -0
  241. package/gui/server/gui-session-manager.ts +5 -0
  242. package/gui/server/invoke-tool.ts +89 -0
  243. package/gui/server/live-chat-event-adapter.ts +181 -0
  244. package/gui/server/model-setup.ts +100 -0
  245. package/gui/server/package.json +5 -0
  246. package/gui/server/projector.ts +254 -0
  247. package/gui/server/prompt-observation.ts +61 -0
  248. package/gui/server/server.ts +703 -0
  249. package/gui/server/session-actions.ts +31 -0
  250. package/gui/server/session-entry-wait.ts +81 -0
  251. package/gui/server/tool-metadata.ts +88 -0
  252. package/gui/server/websocket.ts +128 -0
  253. package/gui/server/writer-lock.ts +118 -0
  254. package/gui/shared/chat-events.ts +118 -0
  255. package/gui/shared/event-reducer.ts +186 -0
  256. package/gui/web/dist/assets/CatalogOverlay-Bmp6Knu7.js +1 -0
  257. package/gui/web/dist/assets/index-Bxt9QpLX.css +1 -0
  258. package/gui/web/dist/assets/index-CZ9DHZYy.js +67 -0
  259. package/gui/web/dist/assets/logo-CWpt6Y2a.svg +187 -0
  260. package/gui/web/dist/index.html +17 -0
  261. package/package.json +50 -18
  262. package/src/analysts/contracts.ts +189 -0
  263. package/src/analysts/orchestrator.ts +300 -0
  264. package/src/cli.ts +206 -0
  265. package/src/config.ts +245 -0
  266. package/src/index.ts +5 -0
  267. package/src/infra/browser.ts +111 -0
  268. package/src/infra/cache.ts +103 -0
  269. package/src/infra/http-client.ts +68 -0
  270. package/src/infra/index.ts +18 -0
  271. package/src/infra/native-dependencies.ts +12 -0
  272. package/src/infra/node-version.ts +24 -0
  273. package/src/infra/open-url.ts +28 -0
  274. package/src/infra/opencandle-paths.ts +64 -0
  275. package/src/infra/rate-limiter.ts +73 -0
  276. package/src/memory/index.ts +10 -0
  277. package/src/memory/manager.ts +192 -0
  278. package/src/memory/preference-extractor.ts +106 -0
  279. package/src/memory/retrieval.ts +70 -0
  280. package/src/memory/sqlite.ts +172 -0
  281. package/src/memory/storage.ts +205 -0
  282. package/src/memory/tool-defaults.ts +87 -0
  283. package/src/memory/types.ts +71 -0
  284. package/src/onboarding/connect.ts +184 -0
  285. package/src/onboarding/credential-interceptor.ts +134 -0
  286. package/src/onboarding/degradation-accumulator.ts +79 -0
  287. package/src/onboarding/prompt-user.ts +85 -0
  288. package/src/onboarding/providers.ts +315 -0
  289. package/src/onboarding/state.ts +218 -0
  290. package/src/onboarding/tool-helpers.ts +111 -0
  291. package/src/onboarding/tool-tags.ts +201 -0
  292. package/src/onboarding/validation.ts +158 -0
  293. package/src/pi/opencandle-extension.ts +955 -0
  294. package/src/pi/session-storage.ts +5 -0
  295. package/src/pi/session.ts +81 -0
  296. package/src/pi/setup.ts +381 -0
  297. package/src/pi/tool-adapter.ts +36 -0
  298. package/src/prompts/context-builder.ts +315 -0
  299. package/src/prompts/disclaimer.ts +9 -0
  300. package/src/prompts/policy-cards.ts +220 -0
  301. package/src/prompts/sections.ts +46 -0
  302. package/src/prompts/workflow-prompts.ts +433 -0
  303. package/src/providers/alpha-vantage.ts +315 -0
  304. package/src/providers/coingecko.ts +96 -0
  305. package/src/providers/exa-search.ts +373 -0
  306. package/src/providers/fear-greed.ts +45 -0
  307. package/src/providers/finnhub.ts +124 -0
  308. package/src/providers/fred.ts +83 -0
  309. package/src/providers/index.ts +9 -0
  310. package/src/providers/provider-credential-error.ts +23 -0
  311. package/src/providers/reddit.ts +151 -0
  312. package/src/providers/sec-edgar.ts +312 -0
  313. package/src/providers/twitter.ts +173 -0
  314. package/src/providers/web-search.ts +293 -0
  315. package/src/providers/with-fallback.ts +41 -0
  316. package/src/providers/wrap-provider.ts +64 -0
  317. package/src/providers/yahoo-finance.ts +534 -0
  318. package/src/routing/classify-intent.ts +285 -0
  319. package/src/routing/defaults.ts +29 -0
  320. package/src/routing/entity-extractor.ts +291 -0
  321. package/src/routing/index.ts +70 -0
  322. package/src/routing/legacy-rule-router.ts +13 -0
  323. package/src/routing/planning.ts +732 -0
  324. package/src/routing/route-manifest.ts +287 -0
  325. package/src/routing/router-llm-client.ts +51 -0
  326. package/src/routing/router-prompt.ts +163 -0
  327. package/src/routing/router-types.ts +87 -0
  328. package/src/routing/router.ts +712 -0
  329. package/src/routing/slot-resolver.ts +190 -0
  330. package/src/routing/turn-context.ts +111 -0
  331. package/src/routing/types.ts +75 -0
  332. package/src/runtime/answer-contracts.ts +633 -0
  333. package/src/runtime/artifact-contracts.ts +76 -0
  334. package/src/runtime/evidence.ts +77 -0
  335. package/src/runtime/planning-evidence.ts +591 -0
  336. package/src/runtime/prompt-step.ts +75 -0
  337. package/src/runtime/provider-tracker.ts +40 -0
  338. package/src/runtime/run-context.ts +22 -0
  339. package/src/runtime/session-coordinator.ts +472 -0
  340. package/src/runtime/tool-defaults-wrapper.ts +35 -0
  341. package/src/runtime/validation.ts +214 -0
  342. package/src/runtime/workflow-events.ts +75 -0
  343. package/src/runtime/workflow-runner.ts +188 -0
  344. package/src/runtime/workflow-types.ts +102 -0
  345. package/src/sentiment/adapters/finnhub.ts +44 -0
  346. package/src/sentiment/adapters/reddit.ts +65 -0
  347. package/src/sentiment/adapters/twitter.ts +36 -0
  348. package/src/sentiment/adapters/web.ts +44 -0
  349. package/src/sentiment/index.ts +58 -0
  350. package/src/sentiment/keywords.ts +9 -0
  351. package/src/sentiment/pipeline.ts +68 -0
  352. package/src/sentiment/scorer.ts +78 -0
  353. package/src/sentiment/store.ts +260 -0
  354. package/src/sentiment/trends.ts +90 -0
  355. package/src/sentiment/types.ts +108 -0
  356. package/src/system-prompt.ts +118 -0
  357. package/src/tool-kit.ts +68 -0
  358. package/src/tools/AGENTS.md +36 -0
  359. package/src/tools/fundamentals/company-overview.ts +54 -0
  360. package/src/tools/fundamentals/comps.ts +156 -0
  361. package/src/tools/fundamentals/dcf.ts +267 -0
  362. package/src/tools/fundamentals/earnings.ts +47 -0
  363. package/src/tools/fundamentals/financials.ts +54 -0
  364. package/src/tools/fundamentals/sec-filings.ts +84 -0
  365. package/src/tools/index.ts +91 -0
  366. package/src/tools/interaction/ask-user.ts +81 -0
  367. package/src/tools/interaction/twitter-login.ts +93 -0
  368. package/src/tools/macro/fear-greed.ts +41 -0
  369. package/src/tools/macro/fred-data.ts +80 -0
  370. package/src/tools/market/crypto-history.ts +67 -0
  371. package/src/tools/market/crypto-price.ts +53 -0
  372. package/src/tools/market/search-ticker.ts +53 -0
  373. package/src/tools/market/stock-history.ts +79 -0
  374. package/src/tools/market/stock-quote.ts +64 -0
  375. package/src/tools/options/greeks.ts +81 -0
  376. package/src/tools/options/option-chain.ts +96 -0
  377. package/src/tools/portfolio/correlation.ts +162 -0
  378. package/src/tools/portfolio/holdings-overlap.ts +123 -0
  379. package/src/tools/portfolio/predictions.ts +253 -0
  380. package/src/tools/portfolio/risk-analysis.ts +134 -0
  381. package/src/tools/portfolio/tracker.ts +147 -0
  382. package/src/tools/portfolio/watchlist.ts +159 -0
  383. package/src/tools/sentiment/reddit-sentiment.ts +164 -0
  384. package/src/tools/sentiment/sentiment-summary.ts +316 -0
  385. package/src/tools/sentiment/sentiment-trend.ts +58 -0
  386. package/src/tools/sentiment/twitter-sentiment.ts +96 -0
  387. package/src/tools/sentiment/web-search.ts +183 -0
  388. package/src/tools/sentiment/web-sentiment.ts +76 -0
  389. package/src/tools/technical/backtest.ts +267 -0
  390. package/src/tools/technical/indicators.ts +256 -0
  391. package/src/types/fundamentals.ts +46 -0
  392. package/src/types/index.ts +20 -0
  393. package/src/types/macro.ts +27 -0
  394. package/src/types/market.ts +43 -0
  395. package/src/types/options.ts +52 -0
  396. package/src/types/portfolio.ts +73 -0
  397. package/src/types/sentiment.ts +70 -0
  398. package/src/workflows/compare-assets.ts +75 -0
  399. package/src/workflows/index.ts +4 -0
  400. package/src/workflows/options-screener.ts +127 -0
  401. package/src/workflows/portfolio-builder.ts +56 -0
  402. package/src/workflows/types.ts +4 -0
  403. package/dist/runtime/index.d.ts +0 -16
  404. package/dist/runtime/index.js +0 -10
  405. package/dist/runtime/index.js.map +0 -1
  406. package/dist/runtime/provider-ids.d.ts +0 -14
  407. package/dist/runtime/provider-ids.js +0 -14
  408. package/dist/runtime/provider-ids.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,4 +1,4 @@
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";
package/dist/pi/setup.js CHANGED
@@ -1,4 +1,4 @@
1
- import { LoginDialogComponent, } from "@mariozechner/pi-coding-agent";
1
+ import { LoginDialogComponent, } from "@earendil-works/pi-coding-agent";
2
2
  /**
3
3
  * Registry of "fast default" models for each LLM auth provider. After a fresh
4
4
  * sign-in we try to activate the default without opening a picker, falling back
@@ -137,8 +137,18 @@ async function runLoginDialog(ctx, providerId) {
137
137
  dialog.showWaiting("Waiting for browser authentication...");
138
138
  }
139
139
  },
140
+ onDeviceCode: (info) => {
141
+ dialog.showDeviceCode(info);
142
+ dialog.showWaiting("Waiting for authentication...");
143
+ },
140
144
  onPrompt: async (prompt) => dialog.showPrompt(prompt.message, prompt.placeholder),
141
145
  onProgress: (message) => dialog.showProgress(message),
146
+ onSelect: async (prompt) => {
147
+ const options = prompt.options.map((option, index) => `${index + 1}. ${option.label}`).join("\n");
148
+ const answer = await dialog.showPrompt(`${prompt.message}\n\n${options}`, "Enter a number");
149
+ const selectedIndex = Number.parseInt(answer.trim(), 10) - 1;
150
+ return prompt.options[selectedIndex]?.id;
151
+ },
142
152
  onManualCodeInput: () => manualCodePromise,
143
153
  signal: dialog.signal,
144
154
  })
@@ -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"}
@@ -1,4 +1,17 @@
1
- import type { PromptSection, SectionName } from "./sections.js";
1
+ import type { SectionName } from "./sections.js";
2
+ import type { ResolvedTurnContext } from "../routing/turn-context.js";
3
+ export interface PromptSectionReport {
4
+ name: SectionName;
5
+ originalLength: number;
6
+ renderedLength: number;
7
+ characterBudget: number;
8
+ truncated: boolean;
9
+ }
10
+ export interface PromptBuildReport {
11
+ prompt: string;
12
+ sections: PromptSectionReport[];
13
+ truncationMarkers: number;
14
+ }
2
15
  /** Options for building prompt context. */
3
16
  export interface PromptContextOptions {
4
17
  workflowType?: string;
@@ -6,6 +19,22 @@ export interface PromptContextOptions {
6
19
  memoryContext?: string;
7
20
  providerStatus?: string;
8
21
  addonToolDescriptions?: string[];
22
+ /**
23
+ * Optional fallback-route context (router-mode only). When present, a
24
+ * fallback playbook and an Assumptions block are slotted into
25
+ * `workflow-instructions`. Mutually exclusive with `workflowInstructions` —
26
+ * if both are set, `workflowInstructions` wins (rule-path compatibility).
27
+ */
28
+ fallbackContext?: FallbackContext;
29
+ resolvedTurnContext?: ResolvedTurnContext;
30
+ }
31
+ export interface FallbackContext {
32
+ /** Pre-rendered Assumptions block from the router output. */
33
+ assumptionsBlock: string;
34
+ /** Router `missing_required` list. When non-empty, the prompt instructs ask_user. */
35
+ missingRequired: string[];
36
+ /** Optional free-text describing entities/slots for context. */
37
+ extraContext?: string;
9
38
  }
10
39
  /**
11
40
  * Assembles the system prompt from composable, budgeted sections.
@@ -15,12 +44,20 @@ export declare class PromptContextBuilder {
15
44
  constructor(budgets?: Partial<Record<SectionName, number>>);
16
45
  /** Set content for a specific section. */
17
46
  setSection(name: SectionName, content: string): this;
18
- /** Get a section by name. */
19
- getSection(name: SectionName): PromptSection | undefined;
20
47
  /** Build the complete system prompt. */
21
48
  build(): string;
49
+ /** Build the complete prompt and report section size/truncation metadata. */
50
+ buildWithReport(): PromptBuildReport;
22
51
  /**
23
52
  * Convenience method: populate all sections from standard sources.
24
53
  */
25
54
  populateFromOptions(options: PromptContextOptions): this;
26
55
  }
56
+ /**
57
+ * Fallback playbook — rendered when the router picks `route: "fallback"`.
58
+ * Composes with the universal analyst stance in `base-role`/`safety-rules`.
59
+ * Instructs tool-first, commit-with-reasoning, ask_user when required slots
60
+ * are missing. Contains NO refusal or hedging language.
61
+ */
62
+ export declare function buildFallbackPlaybook(ctx: FallbackContext): string;
63
+ export declare function buildRoutePlaybook(ctx: ResolvedTurnContext): string;
@@ -1,4 +1,5 @@
1
1
  import { SECTION_ORDER, DEFAULT_BUDGETS, truncateTobudget } from "./sections.js";
2
+ import { renderPolicyCardForPlanning } from "./policy-cards.js";
2
3
  /**
3
4
  * Assembles the system prompt from composable, budgeted sections.
4
5
  */
@@ -21,21 +22,37 @@ export class PromptContextBuilder {
21
22
  }
22
23
  return this;
23
24
  }
24
- /** Get a section by name. */
25
- getSection(name) {
26
- return this.sections.get(name);
27
- }
28
25
  /** Build the complete system prompt. */
29
26
  build() {
27
+ return this.buildWithReport().prompt;
28
+ }
29
+ /** Build the complete prompt and report section size/truncation metadata. */
30
+ buildWithReport() {
30
31
  const parts = [];
32
+ const report = [];
33
+ let truncationMarkers = 0;
31
34
  for (const name of SECTION_ORDER) {
32
35
  const section = this.sections.get(name);
33
36
  if (!section.content)
34
37
  continue;
35
38
  const truncated = truncateTobudget(section.content, section.characterBudget);
39
+ const wasTruncated = truncated.includes("[...truncated]");
40
+ if (wasTruncated)
41
+ truncationMarkers += 1;
42
+ report.push({
43
+ name,
44
+ originalLength: section.content.length,
45
+ renderedLength: truncated.length,
46
+ characterBudget: section.characterBudget,
47
+ truncated: wasTruncated,
48
+ });
36
49
  parts.push(truncated);
37
50
  }
38
- return parts.join("\n\n");
51
+ return {
52
+ prompt: parts.join("\n\n"),
53
+ sections: report,
54
+ truncationMarkers,
55
+ };
39
56
  }
40
57
  /**
41
58
  * Convenience method: populate all sections from standard sources.
@@ -43,10 +60,20 @@ export class PromptContextBuilder {
43
60
  populateFromOptions(options) {
44
61
  this.setSection("base-role", BASE_ROLE);
45
62
  this.setSection("safety-rules", SAFETY_RULES);
46
- this.setSection("tool-catalog", buildToolCatalog(options.addonToolDescriptions));
63
+ this.setSection("tool-catalog", options.resolvedTurnContext && options.resolvedTurnContext.activeToolNames.length === 0
64
+ ? "## Available Tools\nNo finance tools are needed for this turn. Answer from general finance knowledge without naming OpenCandle tool functions."
65
+ : buildToolCatalog(options.addonToolDescriptions));
47
66
  if (options.workflowInstructions) {
48
67
  this.setSection("workflow-instructions", options.workflowInstructions);
49
68
  }
69
+ else if (options.resolvedTurnContext) {
70
+ const routePlaybook = buildRoutePlaybook(options.resolvedTurnContext);
71
+ const policyCard = renderPolicyCardForPlanning(options.resolvedTurnContext.planning);
72
+ this.setSection("workflow-instructions", policyCard ? `${policyCard}\n\n${routePlaybook}` : routePlaybook);
73
+ }
74
+ else if (options.fallbackContext) {
75
+ this.setSection("workflow-instructions", buildFallbackPlaybook(options.fallbackContext));
76
+ }
50
77
  if (options.memoryContext) {
51
78
  this.setSection("memory-context", formatMemorySection(options.memoryContext));
52
79
  }
@@ -57,19 +84,109 @@ export class PromptContextBuilder {
57
84
  return this;
58
85
  }
59
86
  }
87
+ /**
88
+ * Fallback playbook — rendered when the router picks `route: "fallback"`.
89
+ * Composes with the universal analyst stance in `base-role`/`safety-rules`.
90
+ * Instructs tool-first, commit-with-reasoning, ask_user when required slots
91
+ * are missing. Contains NO refusal or hedging language.
92
+ */
93
+ export function buildFallbackPlaybook(ctx) {
94
+ return buildAgentTaskPlaybook(ctx);
95
+ }
96
+ export function buildRoutePlaybook(ctx) {
97
+ const assumptionsBlock = buildResolvedAssumptionsBlock(ctx);
98
+ const fallbackContext = {
99
+ assumptionsBlock,
100
+ missingRequired: ctx.missingRequired,
101
+ extraContext: ctx.entities.symbols.length > 0
102
+ ? `Router-extracted symbols: ${ctx.entities.symbols.join(", ")}. Route kind: ${ctx.routeKind}. Tool bundles: ${ctx.toolBundles.join(", ") || "(none)"}.`
103
+ : `Route kind: ${ctx.routeKind}. Tool bundles: ${ctx.toolBundles.join(", ") || "(none)"}.`,
104
+ };
105
+ if (ctx.routeKind === "clarification") {
106
+ return buildClarificationPlaybook(fallbackContext);
107
+ }
108
+ if (ctx.routeKind === "pass_through") {
109
+ return `## Pass-Through Playbook
110
+ This turn is outside OpenCandle's finance task surface. Answer normally without invoking finance tools. If the user clarifies into an investment, trading, portfolio, macro, or market-data task, ask a concise follow-up or proceed under the analyst stance.
111
+
112
+ ## Assumptions Context
113
+ ${assumptionsBlock}`;
114
+ }
115
+ if (ctx.routeKind === "workflow_dispatch") {
116
+ return `## Workflow Dispatch Context
117
+ The router selected workflow dispatch${ctx.workflow ? ` for ${ctx.workflow}` : ""}. Use the workflow instructions as authoritative when present, and use this context only for slot provenance and missing required fields.
118
+
119
+ ${ctx.missingRequired.length > 0 ? `## Missing Required Information\nThe following slots are required but not yet filled: ${ctx.missingRequired.join(", ")}. Call the \`ask_user\` tool before committing to analysis.\n\n` : ""}## Assumptions Context
120
+ ${assumptionsBlock}`;
121
+ }
122
+ return buildAgentTaskPlaybook(fallbackContext);
123
+ }
124
+ function buildClarificationPlaybook(ctx) {
125
+ const missing = ctx.missingRequired.join(", ") || "required information";
126
+ return `## Clarification Playbook
127
+ The router found that analysis is blocked by missing required information: ${missing}. Call the \`ask_user\` tool before committing to financial analysis. Keep the question specific and collect only the missing slots.
128
+
129
+ ${ctx.extraContext ? `## Additional Context\n${ctx.extraContext}\n\n` : ""}## Assumptions Context
130
+ ${ctx.assumptionsBlock}`;
131
+ }
132
+ function buildResolvedAssumptionsBlock(ctx) {
133
+ const lines = [];
134
+ lines.push("Assumptions Context:");
135
+ if (Object.keys(ctx.slots).length === 0) {
136
+ lines.push(" (none)");
137
+ return lines.join("\n");
138
+ }
139
+ for (const [key, slot] of Object.entries(ctx.slots)) {
140
+ lines.push(` ${key}: ${String(slot.value)} (${slot.source})`);
141
+ }
142
+ return lines.join("\n");
143
+ }
144
+ function buildAgentTaskPlaybook(ctx) {
145
+ const missingLine = ctx.missingRequired.length > 0
146
+ ? `\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.`
147
+ : "";
148
+ const extraLine = ctx.extraContext ? `\n## Additional Context\n${ctx.extraContext}` : "";
149
+ return `## Fallback Playbook
150
+ This turn did not match a structured workflow, but you still answer under the analyst stance. Keep this fallback generic: task-specific behavior belongs in policy cards, workflow prompts, tool/evidence normalization, answer contracts, or structured checks. Do not add task-specific instructions here.${missingLine}${extraLine}
151
+
152
+ 1. Tool-first: fetch relevant data with your available tools before stating prices, levels, or metrics.
153
+ 2. Use the Assumptions Context below only as internal routing context. Do not quote it, label it, or start the answer with it unless the user explicitly asked for assumptions.
154
+ 3. Commit to a concrete, specific answer when the user asks for a view, recommendation, allocation, target, explanation, or next step. Low confidence is valid; refusal-shaped hedging is not.
155
+ 4. Attach reasoning, a confidence band, and an invalidation condition to every committal response.
156
+ 5. Label data gaps, stale provider output, unavailable tools, and unverified current facts. If web search returns no results or a provider soft-degrades, continue with the best supported answer when the gap is not blocking, lower confidence where appropriate, and name what live fact would change the view.
157
+ 6. If required slots are missing, call ask_user before committing. Otherwise do not ask a generic follow-up instead of answering.
158
+ 7. Do not add task-specific instructions here. Add them to the selected policy card, workflow prompt, tool result normalization, answer contract, or structured check.
159
+
160
+ ## Assumptions Context
161
+ ${ctx.assumptionsBlock}
162
+
163
+ Response format:
164
+ - Lead with the answer or view, not the assumptions context.
165
+ - Commit to specifics. Present numeric data in tables when comparing multiple values.
166
+ - Flag downside and risks loudly; never downplay them.`;
167
+ }
60
168
  // --- Section content ---
61
- const BASE_ROLE = `You are OpenCandle, a financial advisory agent for investors and traders.
169
+ const BASE_ROLE = `You are OpenCandle, a research analyst for investors and traders.
62
170
 
63
171
  ## 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.`;
172
+ 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. For conceptual education questions, teach the concept directly, do not name tool functions, and do not append analyst-view, confidence-band, or invalidation boilerplate. For valuation-metric education, start with "Bottom line", immediately follow it with a one-sentence paragraph beginning "Core mental model:", use a heading exactly named "Practical workflow" with numbered question-driven application steps, explain where the metric misleads as common traps to avoid, include a compact cross-check table with why/when each metric helps, include relevant trailing, forward, normalized, or cyclically adjusted variants when useful, and end with a heading exactly named "Quick checklist". 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
173
  const SAFETY_RULES = `## Guidelines
66
174
  - 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.
175
+ - For current single-stock recommendations, state the quote or tool-output date; preserve market-closed, delayed, or last available quote notes. If DCF/fundamentals are unavailable, do not let that tool failure or missing fundamentals become the main thesis. Use available quote, earnings, technicals, sentiment/news, fallback valuation lenses, structural business risks, position sizing, and entry strategy.
176
+ - For crypto position-sizing prompts, start with a concrete allocation range and dollar amount, then show drawdown impact on the user's portfolio, a sleep test, dollar-cost averaging, rebalancing rules, position caps, tax tracking, reputable custody/exchange considerations, and emergency-fund/high-interest-debt prerequisites. Cite the crypto tool-output date or history period and label sparse or unavailable history instead of implying unsupported precision.
177
+ - For rate-cut market-pricing questions, use get_economic_data for the current Fed funds backdrop and search_web for CME FedWatch / Federal Funds futures probabilities before naming what the market is pricing. Distinguish historical Fed rates from futures-implied expectations.
178
+ - For backtest_strategy results, report strategy return, buy-and-hold return, outperformance, trade count, win rate, and max drawdown. Include risk-adjusted metrics such as Sharpe or Sortino when available; otherwise say they were unavailable. Explain why the strategy worked or failed in the tested regime and discuss trading costs/slippage when the user asks whether the edge is practical. Do not reduce a backtest answer to return-only.
179
+ - For sentiment-only prompts, final answer must include the direction and strength of the sentiment signal, the score scale when available, missing sources, why those missing sources matter for the user's question, the source-coverage risk, low sample counts, and how those gaps downgrade confidence. For ticker-specific sentiment prompts, call get_stock_quote before the final answer and state whether sentiment diverges from price action.
180
+ - Commit to specifics when asked for entries, targets, stops, allocations, or position sizes. Refusal is not an acceptable output shape.
181
+ - 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).
182
+ - Conceptual education prompts are not committal responses. Do not append "Analyst View", "Commitment", "Reasoning Chain", "Confidence Band", or "Invalidation Level" sections when the user asked for an explanation, definition, or learning framework rather than a trade, allocation, or recommendation.
183
+ - If no active finance tool exists for brokerage, account, fund-platform, financial-product selection, or conceptual education, do not refuse or apologize for missing tools. Answer from durable public finance knowledge, name facts the user should verify, and keep any current-data caveat brief.
67
184
  - 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
185
  - Present numerical data in tables when comparing multiple securities.
69
186
  - 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.
187
+ - Be concise and actionable. Lead with the commitment, then supporting data and reasoning.
188
+ - 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.
189
+ - 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
190
  - 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
191
  - If one provider is missing data, continue with the remaining tools and clearly label unavailable metrics instead of aborting the entire response.
75
192
 
@@ -81,7 +198,7 @@ Use the ask_user tool BEFORE proceeding when:
81
198
  - Risk tolerance is unclear for portfolio or options recommendations
82
199
 
83
200
  Do NOT ask clarifying questions when:
84
- - The request is clear and specific (e.g., "get AAPL quote", "analyze BTC")
201
+ - The request is clear and specific about the asset or market to analyze
85
202
  - You can reasonably infer the intent from context or prior conversation
86
203
  - A reasonable default exists and can be disclosed in the Assumptions block instead
87
204
  - The user explicitly asks you to use your judgment
@@ -96,9 +213,9 @@ const TOOL_CATALOG = `## Available Tools
96
213
  - **Technical Analysis**: get_technical_indicators, backtest_strategy — SMA, EMA, RSI, MACD, Bollinger Bands, OBV, VWAP computed from price data, plus simple strategy backtesting
97
214
  - **Macro**: get_economic_data, get_fear_greed — FRED economic indicators and market sentiment
98
215
  - **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
99
- - **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
216
+ - **Web Search**: search_web — breaking news, earnings context, company events, regulatory developments. Supported freshness values are hours, day, week, and month; use category general with freshness month for broad industry context; never pass unsupported values such as all, year, 3mo, quarter, or custom date ranges. 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
100
217
  - **Options**: get_option_chain — full options chain with strikes, bids/asks, volume, OI, IV, and computed Greeks (delta, gamma, theta, vega, rho)
101
- - **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
218
+ - **Portfolio**: track_portfolio, analyze_risk, manage_watchlist, analyze_correlation, analyze_holdings_overlap, track_prediction — position tracking, P&L, Sharpe ratio, VaR, watchlist with price alerts, correlation matrix, ETF/fund holdings overlap, and prediction tracking with accuracy scoring
102
219
  - **User Interaction**: ask_user — ask the user a clarification question when their request is ambiguous or missing key details`;
103
220
  function buildToolCatalog(addonDescriptions) {
104
221
  if (!addonDescriptions || addonDescriptions.length === 0) {
@@ -117,11 +234,15 @@ When analyzing a stock, follow these steps in order:
117
234
  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.
118
235
  3. **QUALITATIVE ASSESSMENT**: Earnings surprise trend, sentiment divergence from price action, macro headwinds or tailwinds affecting this stock or sector.
119
236
  4. **RISK CHECK**: Volatility, max drawdown history, VaR. Flag anything in the danger zone.
120
- 5. **SYNTHESIS**: State your reasoning chain explicitly: "Because [data point] + [data point], I conclude [thesis]."
237
+ 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.
121
238
 
122
- ## Assumption Disclosure
123
- 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.
239
+ ## Commit Shape
240
+ Every committal response MUST carry four elements:
241
+ - **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.
242
+ - **Reasoning chain** — name the data points you used ("P/E 28 vs sector 22, RSI 41, DCF midpoint $X, revenue growth 18% YoY").
243
+ - **Confidence band** — e.g. "moderate conviction", "50% confidence", "high conviction given the sector tailwind". Low confidence is a legitimate answer; refusal is not.
244
+ - **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").
124
245
 
125
- ## Disclaimer
126
- 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.`;
246
+ ## Assumption Disclosure
247
+ Structured workflow prompts may include a pre-rendered "Assumptions" block with correct source attribution (user-specified, saved preference, or default). Start with that block only when the workflow instructions explicitly say to. Fallback prompts include "Assumptions Context" only for internal routing context; do not reproduce that context unless the user explicitly asks for assumptions. Do NOT independently relabel any value's source anywhere in your response. When an assumptions block is shown, it is the single authoritative provenance representation.`;
127
248
  //# sourceMappingURL=context-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/prompts/context-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAWjF;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACd,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IAElE,YAAY,UAAgD,EAAE;QAC5D,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;gBACtB,IAAI;gBACJ,OAAO,EAAE,EAAE;gBACX,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,UAAU,CAAC,IAAiB,EAAE,OAAe;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6BAA6B;IAC7B,UAAU,CAAC,IAAiB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,wCAAwC;IACxC,KAAK;QACH,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,SAAS;YAC/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;YAC7E,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,OAA6B;QAC/C,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACjF,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,0BAA0B;AAE1B,MAAM,SAAS,GAAG;;;oNAGkM,CAAC;AAErN,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;qUA2BgT,CAAC;AAEtU,MAAM,YAAY,GAAG;;;;;;;;;gIAS2G,CAAC;AAEjI,SAAS,gBAAgB,CAAC,iBAA4B;IACpD,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,YAAY,wEAAwE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACpJ,CAAC;AAED,SAAS,mBAAmB,CAAC,aAAqB;IAChD,OAAO;;EAEP,aAAa,EAAE,CAAC;AAClB,CAAC;AAED,MAAM,aAAa,GAAG;;;;;;;;;;;;mNAY6L,CAAC"}
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 financial advice or 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,qGAAqG;IACrG,uGAAuG;IACvG,qCAAqC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { CapabilityGapId, PlanningEnvelope, PolicyCardId, TaskFamily } from "../routing/planning.js";
2
+ export declare const POLICY_CARD_IDS: readonly ["ticker_disambiguation", "single_asset_decision", "current_event_explanation", "sentiment_snapshot", "filing_thesis_review", "asset_compare", "portfolio_build", "portfolio_review", "portfolio_rebalance_review", "macro_allocation_review", "options_strategy", "backtest_review", "stateful_tracking_update", "retail_finance_tradeoff", "concept_explainer", "concept_options_education", "concept_inflation_cash_education", "concept_valuation_metric_education", "general_fallback"];
3
+ export type PromptPolicyCardId = typeof POLICY_CARD_IDS[number];
4
+ export interface PolicyCard {
5
+ id: PromptPolicyCardId;
6
+ taskFamily: TaskFamily;
7
+ status: "implemented" | "placeholder";
8
+ capabilityGapIds: CapabilityGapId[];
9
+ content: string;
10
+ }
11
+ export declare function getPolicyCard(id: PolicyCardId): PolicyCard;
12
+ export declare function renderPolicyCardForPlanning(planning: PlanningEnvelope | undefined): string;
13
+ export declare function validatePolicyCardRegistry(): string[];