opencandle 0.1.1 → 0.3.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 (278) hide show
  1. package/README.md +111 -79
  2. package/dist/analysts/contracts.d.ts +31 -0
  3. package/dist/analysts/contracts.js +158 -0
  4. package/dist/analysts/contracts.js.map +1 -0
  5. package/dist/analysts/orchestrator.d.ts +11 -2
  6. package/dist/analysts/orchestrator.js +156 -9
  7. package/dist/analysts/orchestrator.js.map +1 -1
  8. package/dist/cli.js +26 -10
  9. package/dist/cli.js.map +1 -1
  10. package/dist/config.d.ts +29 -5
  11. package/dist/config.js +18 -8
  12. package/dist/config.js.map +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/infra/cache.d.ts +34 -0
  17. package/dist/infra/cache.js +44 -3
  18. package/dist/infra/cache.js.map +1 -1
  19. package/dist/infra/index.d.ts +1 -1
  20. package/dist/infra/index.js +1 -1
  21. package/dist/infra/index.js.map +1 -1
  22. package/dist/infra/opencandle-paths.d.ts +1 -0
  23. package/dist/infra/opencandle-paths.js +3 -0
  24. package/dist/infra/opencandle-paths.js.map +1 -1
  25. package/dist/infra/rate-limiter.js +7 -0
  26. package/dist/infra/rate-limiter.js.map +1 -1
  27. package/dist/memory/index.d.ts +3 -0
  28. package/dist/memory/index.js +2 -0
  29. package/dist/memory/index.js.map +1 -1
  30. package/dist/memory/manager.d.ts +19 -0
  31. package/dist/memory/manager.js +132 -0
  32. package/dist/memory/manager.js.map +1 -0
  33. package/dist/memory/sqlite.js +12 -1
  34. package/dist/memory/sqlite.js.map +1 -1
  35. package/dist/memory/types.d.ts +21 -0
  36. package/dist/memory/types.js +47 -0
  37. package/dist/memory/types.js.map +1 -0
  38. package/dist/onboarding/connect.d.ts +23 -0
  39. package/dist/onboarding/connect.js +107 -0
  40. package/dist/onboarding/connect.js.map +1 -0
  41. package/dist/onboarding/credential-interceptor.d.ts +44 -0
  42. package/dist/onboarding/credential-interceptor.js +72 -0
  43. package/dist/onboarding/credential-interceptor.js.map +1 -0
  44. package/dist/onboarding/degradation-accumulator.d.ts +21 -0
  45. package/dist/onboarding/degradation-accumulator.js +55 -0
  46. package/dist/onboarding/degradation-accumulator.js.map +1 -0
  47. package/dist/onboarding/prompt-user.d.ts +23 -0
  48. package/dist/onboarding/prompt-user.js +61 -0
  49. package/dist/onboarding/prompt-user.js.map +1 -0
  50. package/dist/onboarding/providers.d.ts +109 -0
  51. package/dist/onboarding/providers.js +236 -0
  52. package/dist/onboarding/providers.js.map +1 -0
  53. package/dist/onboarding/state.d.ts +31 -2
  54. package/dist/onboarding/state.js +141 -13
  55. package/dist/onboarding/state.js.map +1 -1
  56. package/dist/onboarding/tool-helpers.d.ts +34 -0
  57. package/dist/onboarding/tool-helpers.js +80 -0
  58. package/dist/onboarding/tool-helpers.js.map +1 -0
  59. package/dist/onboarding/tool-tags.d.ts +37 -0
  60. package/dist/onboarding/tool-tags.js +149 -0
  61. package/dist/onboarding/tool-tags.js.map +1 -0
  62. package/dist/onboarding/validation.d.ts +19 -0
  63. package/dist/onboarding/validation.js +117 -0
  64. package/dist/onboarding/validation.js.map +1 -0
  65. package/dist/pi/opencandle-extension.d.ts +5 -1
  66. package/dist/pi/opencandle-extension.js +345 -143
  67. package/dist/pi/opencandle-extension.js.map +1 -1
  68. package/dist/pi/session.d.ts +2 -0
  69. package/dist/pi/session.js +1 -1
  70. package/dist/pi/session.js.map +1 -1
  71. package/dist/pi/setup.d.ts +0 -1
  72. package/dist/pi/setup.js +66 -119
  73. package/dist/pi/setup.js.map +1 -1
  74. package/dist/prompts/context-builder.d.ts +26 -0
  75. package/dist/prompts/context-builder.js +127 -0
  76. package/dist/prompts/context-builder.js.map +1 -0
  77. package/dist/prompts/sections.d.ts +13 -0
  78. package/dist/prompts/sections.js +35 -0
  79. package/dist/prompts/sections.js.map +1 -0
  80. package/dist/providers/alpha-vantage.d.ts +3 -0
  81. package/dist/providers/alpha-vantage.js +204 -77
  82. package/dist/providers/alpha-vantage.js.map +1 -1
  83. package/dist/providers/coingecko.js +53 -37
  84. package/dist/providers/coingecko.js.map +1 -1
  85. package/dist/providers/exa-search.d.ts +39 -0
  86. package/dist/providers/exa-search.js +276 -0
  87. package/dist/providers/exa-search.js.map +1 -0
  88. package/dist/providers/fear-greed.js +23 -15
  89. package/dist/providers/fear-greed.js.map +1 -1
  90. package/dist/providers/finnhub.d.ts +17 -0
  91. package/dist/providers/finnhub.js +94 -0
  92. package/dist/providers/finnhub.js.map +1 -0
  93. package/dist/providers/fred.js +48 -28
  94. package/dist/providers/fred.js.map +1 -1
  95. package/dist/providers/index.d.ts +2 -0
  96. package/dist/providers/index.js +1 -0
  97. package/dist/providers/index.js.map +1 -1
  98. package/dist/providers/provider-credential-error.d.ts +8 -0
  99. package/dist/providers/provider-credential-error.js +22 -0
  100. package/dist/providers/provider-credential-error.js.map +1 -0
  101. package/dist/providers/reddit.d.ts +8 -0
  102. package/dist/providers/reddit.js +78 -43
  103. package/dist/providers/reddit.js.map +1 -1
  104. package/dist/providers/twitter.d.ts +20 -0
  105. package/dist/providers/twitter.js +137 -0
  106. package/dist/providers/twitter.js.map +1 -0
  107. package/dist/providers/web-search.d.ts +17 -0
  108. package/dist/providers/web-search.js +224 -0
  109. package/dist/providers/web-search.js.map +1 -0
  110. package/dist/providers/with-fallback.d.ts +15 -0
  111. package/dist/providers/with-fallback.js +32 -0
  112. package/dist/providers/with-fallback.js.map +1 -0
  113. package/dist/providers/wrap-provider.d.ts +20 -0
  114. package/dist/providers/wrap-provider.js +58 -0
  115. package/dist/providers/wrap-provider.js.map +1 -0
  116. package/dist/providers/yahoo-finance.js +77 -57
  117. package/dist/providers/yahoo-finance.js.map +1 -1
  118. package/dist/routing/classify-intent.js +22 -0
  119. package/dist/routing/classify-intent.js.map +1 -1
  120. package/dist/runtime/evidence.d.ts +35 -0
  121. package/dist/runtime/evidence.js +29 -0
  122. package/dist/runtime/evidence.js.map +1 -0
  123. package/dist/runtime/index.d.ts +16 -0
  124. package/dist/runtime/index.js +10 -0
  125. package/dist/runtime/index.js.map +1 -0
  126. package/dist/runtime/prompt-step.d.ts +41 -0
  127. package/dist/runtime/prompt-step.js +42 -0
  128. package/dist/runtime/prompt-step.js.map +1 -0
  129. package/dist/runtime/provider-ids.d.ts +14 -0
  130. package/dist/runtime/provider-ids.js +14 -0
  131. package/dist/runtime/provider-ids.js.map +1 -0
  132. package/dist/runtime/provider-tracker.d.ts +20 -0
  133. package/dist/runtime/provider-tracker.js +36 -0
  134. package/dist/runtime/provider-tracker.js.map +1 -0
  135. package/dist/runtime/run-context.d.ts +11 -0
  136. package/dist/runtime/run-context.js +14 -0
  137. package/dist/runtime/run-context.js.map +1 -0
  138. package/dist/runtime/session-coordinator.d.ts +47 -0
  139. package/dist/runtime/session-coordinator.js +171 -0
  140. package/dist/runtime/session-coordinator.js.map +1 -0
  141. package/dist/runtime/validation.d.ts +44 -0
  142. package/dist/runtime/validation.js +157 -0
  143. package/dist/runtime/validation.js.map +1 -0
  144. package/dist/runtime/workflow-events.d.ts +21 -0
  145. package/dist/runtime/workflow-events.js +31 -0
  146. package/dist/runtime/workflow-events.js.map +1 -0
  147. package/dist/runtime/workflow-runner.d.ts +36 -0
  148. package/dist/runtime/workflow-runner.js +129 -0
  149. package/dist/runtime/workflow-runner.js.map +1 -0
  150. package/dist/runtime/workflow-types.d.ts +60 -0
  151. package/dist/runtime/workflow-types.js +32 -0
  152. package/dist/runtime/workflow-types.js.map +1 -0
  153. package/dist/sentiment/adapters/finnhub.d.ts +7 -0
  154. package/dist/sentiment/adapters/finnhub.js +39 -0
  155. package/dist/sentiment/adapters/finnhub.js.map +1 -0
  156. package/dist/sentiment/adapters/reddit.d.ts +11 -0
  157. package/dist/sentiment/adapters/reddit.js +54 -0
  158. package/dist/sentiment/adapters/reddit.js.map +1 -0
  159. package/dist/sentiment/adapters/twitter.d.ts +9 -0
  160. package/dist/sentiment/adapters/twitter.js +32 -0
  161. package/dist/sentiment/adapters/twitter.js.map +1 -0
  162. package/dist/sentiment/adapters/web.d.ts +9 -0
  163. package/dist/sentiment/adapters/web.js +40 -0
  164. package/dist/sentiment/adapters/web.js.map +1 -0
  165. package/dist/sentiment/index.d.ts +16 -0
  166. package/dist/sentiment/index.js +44 -0
  167. package/dist/sentiment/index.js.map +1 -0
  168. package/dist/sentiment/keywords.d.ts +2 -0
  169. package/dist/sentiment/keywords.js +9 -0
  170. package/dist/sentiment/keywords.js.map +1 -0
  171. package/dist/sentiment/pipeline.d.ts +9 -0
  172. package/dist/sentiment/pipeline.js +57 -0
  173. package/dist/sentiment/pipeline.js.map +1 -0
  174. package/dist/sentiment/scorer.d.ts +9 -0
  175. package/dist/sentiment/scorer.js +64 -0
  176. package/dist/sentiment/scorer.js.map +1 -0
  177. package/dist/sentiment/store.d.ts +24 -0
  178. package/dist/sentiment/store.js +177 -0
  179. package/dist/sentiment/store.js.map +1 -0
  180. package/dist/sentiment/trends.d.ts +13 -0
  181. package/dist/sentiment/trends.js +73 -0
  182. package/dist/sentiment/trends.js.map +1 -0
  183. package/dist/sentiment/types.d.ts +66 -0
  184. package/dist/sentiment/types.js +54 -0
  185. package/dist/sentiment/types.js.map +1 -0
  186. package/dist/system-prompt.js +60 -2
  187. package/dist/system-prompt.js.map +1 -1
  188. package/dist/tool-kit.d.ts +9 -5
  189. package/dist/tool-kit.js +29 -6
  190. package/dist/tool-kit.js.map +1 -1
  191. package/dist/tools/fundamentals/company-overview.d.ts +3 -1
  192. package/dist/tools/fundamentals/company-overview.js +28 -17
  193. package/dist/tools/fundamentals/company-overview.js.map +1 -1
  194. package/dist/tools/fundamentals/comps.js +47 -39
  195. package/dist/tools/fundamentals/comps.js.map +1 -1
  196. package/dist/tools/fundamentals/dcf.js +83 -65
  197. package/dist/tools/fundamentals/dcf.js.map +1 -1
  198. package/dist/tools/fundamentals/earnings.d.ts +3 -1
  199. package/dist/tools/fundamentals/earnings.js +26 -18
  200. package/dist/tools/fundamentals/earnings.js.map +1 -1
  201. package/dist/tools/fundamentals/financials.d.ts +3 -1
  202. package/dist/tools/fundamentals/financials.js +24 -16
  203. package/dist/tools/fundamentals/financials.js.map +1 -1
  204. package/dist/tools/fundamentals/sec-filings.js +9 -1
  205. package/dist/tools/fundamentals/sec-filings.js.map +1 -1
  206. package/dist/tools/index.js +10 -2
  207. package/dist/tools/index.js.map +1 -1
  208. package/dist/tools/interaction/ask-user.d.ts +3 -0
  209. package/dist/tools/interaction/ask-user.js +51 -0
  210. package/dist/tools/interaction/ask-user.js.map +1 -0
  211. package/dist/tools/interaction/twitter-login.d.ts +8 -0
  212. package/dist/tools/interaction/twitter-login.js +77 -0
  213. package/dist/tools/interaction/twitter-login.js.map +1 -0
  214. package/dist/tools/macro/fear-greed.js +9 -1
  215. package/dist/tools/macro/fear-greed.js.map +1 -1
  216. package/dist/tools/macro/fred-data.d.ts +3 -1
  217. package/dist/tools/macro/fred-data.js +27 -16
  218. package/dist/tools/macro/fred-data.js.map +1 -1
  219. package/dist/tools/market/crypto-history.js +9 -1
  220. package/dist/tools/market/crypto-history.js.map +1 -1
  221. package/dist/tools/market/crypto-price.js +9 -1
  222. package/dist/tools/market/crypto-price.js.map +1 -1
  223. package/dist/tools/market/stock-history.js +28 -1
  224. package/dist/tools/market/stock-history.js.map +1 -1
  225. package/dist/tools/market/stock-quote.js +29 -4
  226. package/dist/tools/market/stock-quote.js.map +1 -1
  227. package/dist/tools/options/option-chain.js +9 -1
  228. package/dist/tools/options/option-chain.js.map +1 -1
  229. package/dist/tools/portfolio/correlation.js +15 -3
  230. package/dist/tools/portfolio/correlation.js.map +1 -1
  231. package/dist/tools/portfolio/predictions.js +6 -5
  232. package/dist/tools/portfolio/predictions.js.map +1 -1
  233. package/dist/tools/portfolio/risk-analysis.js +9 -1
  234. package/dist/tools/portfolio/risk-analysis.js.map +1 -1
  235. package/dist/tools/portfolio/tracker.js +6 -3
  236. package/dist/tools/portfolio/tracker.js.map +1 -1
  237. package/dist/tools/portfolio/watchlist.js +6 -1
  238. package/dist/tools/portfolio/watchlist.js.map +1 -1
  239. package/dist/tools/sentiment/reddit-sentiment.d.ts +3 -1
  240. package/dist/tools/sentiment/reddit-sentiment.js +112 -19
  241. package/dist/tools/sentiment/reddit-sentiment.js.map +1 -1
  242. package/dist/tools/sentiment/sentiment-summary.d.ts +7 -0
  243. package/dist/tools/sentiment/sentiment-summary.js +230 -0
  244. package/dist/tools/sentiment/sentiment-summary.js.map +1 -0
  245. package/dist/tools/sentiment/sentiment-trend.d.ts +22 -0
  246. package/dist/tools/sentiment/sentiment-trend.js +39 -0
  247. package/dist/tools/sentiment/sentiment-trend.js.map +1 -0
  248. package/dist/tools/sentiment/twitter-sentiment.d.ts +9 -0
  249. package/dist/tools/sentiment/twitter-sentiment.js +75 -0
  250. package/dist/tools/sentiment/twitter-sentiment.js.map +1 -0
  251. package/dist/tools/sentiment/web-search.d.ts +11 -0
  252. package/dist/tools/sentiment/web-search.js +115 -0
  253. package/dist/tools/sentiment/web-search.js.map +1 -0
  254. package/dist/tools/sentiment/web-sentiment.d.ts +8 -0
  255. package/dist/tools/sentiment/web-sentiment.js +66 -0
  256. package/dist/tools/sentiment/web-sentiment.js.map +1 -0
  257. package/dist/tools/technical/backtest.js +9 -1
  258. package/dist/tools/technical/backtest.js.map +1 -1
  259. package/dist/tools/technical/indicators.js +9 -1
  260. package/dist/tools/technical/indicators.js.map +1 -1
  261. package/dist/types/index.d.ts +16 -1
  262. package/dist/types/sentiment.d.ts +41 -0
  263. package/dist/workflows/compare-assets.d.ts +3 -0
  264. package/dist/workflows/compare-assets.js +21 -5
  265. package/dist/workflows/compare-assets.js.map +1 -1
  266. package/dist/workflows/index.d.ts +3 -3
  267. package/dist/workflows/index.js +3 -3
  268. package/dist/workflows/index.js.map +1 -1
  269. package/dist/workflows/options-screener.d.ts +3 -0
  270. package/dist/workflows/options-screener.js +24 -7
  271. package/dist/workflows/options-screener.js.map +1 -1
  272. package/dist/workflows/portfolio-builder.d.ts +3 -0
  273. package/dist/workflows/portfolio-builder.js +30 -9
  274. package/dist/workflows/portfolio-builder.js.map +1 -1
  275. package/package.json +27 -7
  276. package/dist/tools/sentiment/news-sentiment.d.ts +0 -7
  277. package/dist/tools/sentiment/news-sentiment.js +0 -57
  278. package/dist/tools/sentiment/news-sentiment.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-sentiment.js","sourceRoot":"","sources":["../../../src/tools/sentiment/web-sentiment.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Type } from "@sinclair/typebox";
2
2
  import { getHistory } from "../../providers/yahoo-finance.js";
3
+ import { wrapProvider } from "../../providers/wrap-provider.js";
3
4
  import { computeSMA, computeRSI } from "./indicators.js";
4
5
  export function runBacktest(bars, strategy) {
5
6
  const closes = bars.map((b) => b.close);
@@ -158,7 +159,14 @@ export const backtestTool = {
158
159
  async execute(toolCallId, args) {
159
160
  const symbol = args.symbol.toUpperCase();
160
161
  const period = args.period ?? "2y";
161
- const bars = await getHistory(symbol, period, "1d");
162
+ const historyResult = await wrapProvider("yahoo", () => getHistory(symbol, period, "1d"));
163
+ if (historyResult.status === "unavailable") {
164
+ return {
165
+ content: [{ type: "text", text: `⚠ Backtest unavailable for ${symbol} (${historyResult.reason}).` }],
166
+ details: null,
167
+ };
168
+ }
169
+ const bars = historyResult.data;
162
170
  if (bars.length < 60) {
163
171
  return {
164
172
  content: [{ type: "text", text: `Insufficient data for backtesting ${symbol} (need 60+ days, got ${bars.length})` }],
@@ -1 +1 @@
1
- {"version":3,"file":"backtest.js","sourceRoot":"","sources":["../../../src/tools/technical/backtest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backtest.js","sourceRoot":"","sources":["../../../src/tools/technical/backtest.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Type } from "@sinclair/typebox";
2
2
  import { getHistory } from "../../providers/yahoo-finance.js";
3
+ import { wrapProvider } from "../../providers/wrap-provider.js";
3
4
  // --- Volume-based indicators ---
4
5
  export function computeOBV(bars) {
5
6
  const obv = [0];
@@ -40,7 +41,14 @@ export const technicalIndicatorsTool = {
40
41
  async execute(toolCallId, args) {
41
42
  const symbol = args.symbol.toUpperCase();
42
43
  const range = args.range ?? "1y";
43
- const bars = await getHistory(symbol, range, "1d");
44
+ const result = await wrapProvider("yahoo", () => getHistory(symbol, range, "1d"));
45
+ if (result.status === "unavailable") {
46
+ return {
47
+ content: [{ type: "text", text: `⚠ Technical indicators unavailable for ${symbol} (${result.reason}).` }],
48
+ details: null,
49
+ };
50
+ }
51
+ const bars = result.data;
44
52
  const closes = bars.map((b) => b.close);
45
53
  if (closes.length < 26) {
46
54
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"indicators.js","sourceRoot":"","sources":["../../../src/tools/technical/indicators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indicators.js","sourceRoot":"","sources":["../../../src/tools/technical/indicators.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,19 @@ export type { FredObservation, FredSeries } from "./macro.js";
4
4
  export { FRED_SERIES } from "./macro.js";
5
5
  export type { Greeks, OptionContract, OptionsChain } from "./options.js";
6
6
  export type { Position, PortfolioSummary, RiskMetrics, TechnicalIndicators } from "./portfolio.js";
7
- export type { FearGreedData, RedditSentimentResult } from "./sentiment.js";
7
+ export type { FearGreedData, RedditSentimentResult, WebSearchResult, WebSearchEnvelope } from "./sentiment.js";
8
+ /**
9
+ * Handler for `ask_user` tool invocations in non-UI contexts (e.g. test harness).
10
+ * When provided to `createOpenCandleSession`, the ask-user tool calls this handler
11
+ * instead of `ctx.ui.*` methods.
12
+ */
13
+ export type AskUserHandler = (params: {
14
+ question: string;
15
+ questionType: "select" | "text" | "confirm";
16
+ options?: string[];
17
+ placeholder?: string;
18
+ reason?: string;
19
+ }) => Promise<{
20
+ answer: string | null;
21
+ cancelled: boolean;
22
+ }>;
@@ -6,11 +6,52 @@ export interface FearGreedData {
6
6
  weekAgo: number | null;
7
7
  monthAgo: number | null;
8
8
  }
9
+ export interface TwitterTweet {
10
+ id: string;
11
+ text: string;
12
+ author: string;
13
+ likes: number;
14
+ retweets: number;
15
+ replies: number;
16
+ views: number | null;
17
+ url: string;
18
+ created: string;
19
+ }
20
+ export interface TwitterSentimentResult {
21
+ query: string;
22
+ tweetCount: number;
23
+ tweets: TwitterTweet[];
24
+ sentimentScore: number;
25
+ bullishCount: number;
26
+ bearishCount: number;
27
+ topMentions: string[];
28
+ fetchedAt: string;
29
+ }
30
+ export interface WebSearchResult {
31
+ title: string;
32
+ url: string;
33
+ snippet: string;
34
+ /** Domain extracted from url (e.g., "reuters.com") */
35
+ source: string;
36
+ /** ISO 8601 timestamp, null if unknown */
37
+ published: string | null;
38
+ category: "news" | "general";
39
+ }
40
+ export interface WebSearchEnvelope {
41
+ query: string;
42
+ results: WebSearchResult[];
43
+ resultCount: number;
44
+ fetchedAt: string;
45
+ provider: "ddg" | "brave" | "exa";
46
+ }
9
47
  export interface RedditSentimentResult {
10
48
  subreddit: string;
11
49
  postCount: number;
12
50
  posts: Array<{
51
+ id: string;
13
52
  title: string;
53
+ selftext: string;
54
+ author: string;
14
55
  score: number;
15
56
  comments: number;
16
57
  url: string;
@@ -1,3 +1,6 @@
1
1
  import type { CompareAssetsSlots, SlotResolution } from "../routing/types.js";
2
2
  import type { WorkflowPlan } from "./types.js";
3
+ import type { WorkflowDefinition } from "../runtime/prompt-step.js";
4
+ export declare function buildCompareAssetsWorkflowDefinition(resolution: SlotResolution<CompareAssetsSlots>): WorkflowDefinition;
5
+ /** @deprecated Use buildCompareAssetsWorkflowDefinition instead */
3
6
  export declare function buildCompareAssetsWorkflow(resolution: SlotResolution<CompareAssetsSlots>): WorkflowPlan;
@@ -1,14 +1,30 @@
1
1
  import { buildCompareAssetsPrompt } from "../prompts/workflow-prompts.js";
2
- export function buildCompareAssetsWorkflow(resolution) {
2
+ import { promptStep } from "../runtime/prompt-step.js";
3
+ export function buildCompareAssetsWorkflowDefinition(resolution) {
3
4
  const symbols = resolution.resolved.symbols.join(", ");
4
5
  return {
5
- initialPrompt: buildCompareAssetsPrompt(resolution),
6
- followUps: [
7
- `Now present the side-by-side comparison for ${symbols}:
6
+ workflowType: "compare_assets",
7
+ steps: [
8
+ promptStep("fetch_data", "Fetch data for all assets", buildCompareAssetsPrompt(resolution), {
9
+ requiredInputs: ["symbols"],
10
+ expectedOutputs: ["asset_data"],
11
+ }),
12
+ promptStep("compare_and_present", "Present side-by-side comparison", `Now present the side-by-side comparison for ${symbols}:
8
13
  - Keep any unavailable fundamentals marked as unavailable instead of retrying the same failed provider calls.
9
14
  - Use the price, technical, and risk data you already fetched to finish the comparison even if some fundamentals are missing.
10
- - End with a concise verdict on which asset looks strongest right now and why.`,
15
+ - End with a concise verdict on which asset looks strongest right now and why.`, {
16
+ requiredInputs: ["asset_data"],
17
+ expectedOutputs: ["comparison_summary"],
18
+ }),
11
19
  ],
12
20
  };
13
21
  }
22
+ /** @deprecated Use buildCompareAssetsWorkflowDefinition instead */
23
+ export function buildCompareAssetsWorkflow(resolution) {
24
+ const def = buildCompareAssetsWorkflowDefinition(resolution);
25
+ return {
26
+ initialPrompt: def.steps[0].prompt,
27
+ followUps: def.steps.slice(1).map((s) => s.prompt),
28
+ };
29
+ }
14
30
  //# sourceMappingURL=compare-assets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compare-assets.js","sourceRoot":"","sources":["../../src/workflows/compare-assets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAG1E,MAAM,UAAU,0BAA0B,CACxC,UAA8C;IAE9C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvD,OAAO;QACL,aAAa,EAAE,wBAAwB,CAAC,UAAU,CAAC;QACnD,SAAS,EAAE;YACT,+CAA+C,OAAO;;;+EAGmB;SAC1E;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"compare-assets.js","sourceRoot":"","sources":["../../src/workflows/compare-assets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,MAAM,UAAU,oCAAoC,CAClD,UAA8C;IAE9C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvD,OAAO;QACL,YAAY,EAAE,gBAAgB;QAC9B,KAAK,EAAE;YACL,UAAU,CAAC,YAAY,EAAE,2BAA2B,EAAE,wBAAwB,CAAC,UAAU,CAAC,EAAE;gBAC1F,cAAc,EAAE,CAAC,SAAS,CAAC;gBAC3B,eAAe,EAAE,CAAC,YAAY,CAAC;aAChC,CAAC;YACF,UAAU,CAAC,qBAAqB,EAAE,iCAAiC,EAAE,+CAA+C,OAAO;;;+EAGlD,EAAE;gBACzE,cAAc,EAAE,CAAC,YAAY,CAAC;gBAC9B,eAAe,EAAE,CAAC,oBAAoB,CAAC;aACxC,CAAC;SACH;KACF,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,0BAA0B,CACxC,UAA8C;IAE9C,MAAM,GAAG,GAAG,oCAAoC,CAAC,UAAU,CAAC,CAAC;IAC7D,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;QAClC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;KACnD,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- export { buildPortfolioWorkflow } from "./portfolio-builder.js";
2
- export { buildCompareAssetsWorkflow } from "./compare-assets.js";
3
- export { buildOptionsScreenerWorkflow } from "./options-screener.js";
1
+ export { buildPortfolioWorkflow, buildPortfolioWorkflowDefinition } from "./portfolio-builder.js";
2
+ export { buildCompareAssetsWorkflow, buildCompareAssetsWorkflowDefinition } from "./compare-assets.js";
3
+ export { buildOptionsScreenerWorkflow, buildOptionsScreenerWorkflowDefinition } from "./options-screener.js";
4
4
  export type { WorkflowPlan } from "./types.js";
@@ -1,4 +1,4 @@
1
- export { buildPortfolioWorkflow } from "./portfolio-builder.js";
2
- export { buildCompareAssetsWorkflow } from "./compare-assets.js";
3
- export { buildOptionsScreenerWorkflow } from "./options-screener.js";
1
+ export { buildPortfolioWorkflow, buildPortfolioWorkflowDefinition } from "./portfolio-builder.js";
2
+ export { buildCompareAssetsWorkflow, buildCompareAssetsWorkflowDefinition } from "./compare-assets.js";
3
+ export { buildOptionsScreenerWorkflow, buildOptionsScreenerWorkflowDefinition } from "./options-screener.js";
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,oCAAoC,EAAE,MAAM,qBAAqB,CAAC;AACvG,OAAO,EAAE,4BAA4B,EAAE,sCAAsC,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,3 +1,6 @@
1
1
  import type { OptionsScreenerSlots, SlotResolution } from "../routing/types.js";
2
2
  import type { WorkflowPlan } from "./types.js";
3
+ import type { WorkflowDefinition } from "../runtime/prompt-step.js";
4
+ export declare function buildOptionsScreenerWorkflowDefinition(resolution: SlotResolution<OptionsScreenerSlots>): WorkflowDefinition;
5
+ /** @deprecated Use buildOptionsScreenerWorkflowDefinition instead */
3
6
  export declare function buildOptionsScreenerWorkflow(resolution: SlotResolution<OptionsScreenerSlots>): WorkflowPlan;
@@ -1,10 +1,16 @@
1
1
  import { buildOptionsScreenerPrompt } from "../prompts/workflow-prompts.js";
2
- export function buildOptionsScreenerWorkflow(resolution) {
3
- const initialPrompt = buildOptionsScreenerPrompt(resolution);
2
+ import { promptStep } from "../runtime/prompt-step.js";
3
+ export function buildOptionsScreenerWorkflowDefinition(resolution) {
4
4
  const s = resolution.resolved;
5
5
  const contractType = s.direction === "bullish" ? "calls" : "puts";
6
- const followUps = [
7
- `Now rank and present the top ${contractType} for ${s.symbol}:
6
+ return {
7
+ workflowType: "options_screener",
8
+ steps: [
9
+ promptStep("fetch_chain", "Fetch option chain data", buildOptionsScreenerPrompt(resolution), {
10
+ requiredInputs: ["symbol"],
11
+ expectedOutputs: ["option_chain"],
12
+ }),
13
+ promptStep("rank_and_present", "Rank and present top contracts", `Now rank and present the top ${contractType} for ${s.symbol}:
8
14
  1. From the option chain data, select the top 3-5 contracts matching: ${s.moneynessPreference} strikes, DTE near ${s.dteTarget}, with ${s.liquidityMinimum}.
9
15
  2. Rank by ${s.objective}: balance premium cost, delta exposure, and probability of profit. Only include contracts with |delta| >= 0.20.
10
16
  3. Present a table: strike, expiry, premium, delta, IV, open interest, bid-ask spread.
@@ -15,8 +21,19 @@ export function buildOptionsScreenerWorkflow(resolution) {
15
21
  Length constraints:
16
22
  - Max 1 sentence explaining the #1 pick.
17
23
  - Risk caveats: max 3 bullet points.
18
- - Keep total response under 30 lines.`,
19
- ];
20
- return { initialPrompt, followUps };
24
+ - Keep total response under 30 lines.`, {
25
+ requiredInputs: ["option_chain"],
26
+ expectedOutputs: ["ranked_contracts"],
27
+ }),
28
+ ],
29
+ };
30
+ }
31
+ /** @deprecated Use buildOptionsScreenerWorkflowDefinition instead */
32
+ export function buildOptionsScreenerWorkflow(resolution) {
33
+ const def = buildOptionsScreenerWorkflowDefinition(resolution);
34
+ return {
35
+ initialPrompt: def.steps[0].prompt,
36
+ followUps: def.steps.slice(1).map((s) => s.prompt),
37
+ };
21
38
  }
22
39
  //# sourceMappingURL=options-screener.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"options-screener.js","sourceRoot":"","sources":["../../src/workflows/options-screener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAG5E,MAAM,UAAU,4BAA4B,CAAC,UAAgD;IAC3F,MAAM,aAAa,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC;IAC9B,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAElE,MAAM,SAAS,GAAG;QAChB,gCAAgC,YAAY,QAAQ,CAAC,CAAC,MAAM;wEACQ,CAAC,CAAC,mBAAmB,sBAAsB,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,gBAAgB;aAC7I,CAAC,CAAC,SAAS;;;;;;;;;sCASc;KACnC,CAAC;IAEF,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"options-screener.js","sourceRoot":"","sources":["../../src/workflows/options-screener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAG5E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,MAAM,UAAU,sCAAsC,CAAC,UAAgD;IACrG,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC;IAC9B,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAElE,OAAO;QACL,YAAY,EAAE,kBAAkB;QAChC,KAAK,EAAE;YACL,UAAU,CAAC,aAAa,EAAE,yBAAyB,EAAE,0BAA0B,CAAC,UAAU,CAAC,EAAE;gBAC3F,cAAc,EAAE,CAAC,QAAQ,CAAC;gBAC1B,eAAe,EAAE,CAAC,cAAc,CAAC;aAClC,CAAC;YACF,UAAU,CAAC,kBAAkB,EAAE,gCAAgC,EAAE,gCAAgC,YAAY,QAAQ,CAAC,CAAC,MAAM;wEAC3D,CAAC,CAAC,mBAAmB,sBAAsB,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,gBAAgB;aAC7I,CAAC,CAAC,SAAS;;;;;;;;;sCASc,EAAE;gBAChC,cAAc,EAAE,CAAC,cAAc,CAAC;gBAChC,eAAe,EAAE,CAAC,kBAAkB,CAAC;aACtC,CAAC;SACH;KACF,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,4BAA4B,CAAC,UAAgD;IAC3F,MAAM,GAAG,GAAG,sCAAsC,CAAC,UAAU,CAAC,CAAC;IAC/D,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;QAClC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;KACnD,CAAC;AACJ,CAAC"}
@@ -1,3 +1,6 @@
1
1
  import type { PortfolioSlots, SlotResolution } from "../routing/types.js";
2
2
  import type { WorkflowPlan } from "./types.js";
3
+ import type { WorkflowDefinition } from "../runtime/prompt-step.js";
4
+ export declare function buildPortfolioWorkflowDefinition(resolution: SlotResolution<PortfolioSlots>): WorkflowDefinition;
5
+ /** @deprecated Use buildPortfolioWorkflowDefinition instead */
3
6
  export declare function buildPortfolioWorkflow(resolution: SlotResolution<PortfolioSlots>): WorkflowPlan;
@@ -1,14 +1,24 @@
1
1
  import { buildPortfolioPrompt } from "../prompts/workflow-prompts.js";
2
- export function buildPortfolioWorkflow(resolution) {
3
- const initialPrompt = buildPortfolioPrompt(resolution);
2
+ import { promptStep } from "../runtime/prompt-step.js";
3
+ export function buildPortfolioWorkflowDefinition(resolution) {
4
4
  const s = resolution.resolved;
5
- const followUps = [
6
- `Now review the risk and diversification of this draft portfolio:
5
+ return {
6
+ workflowType: "portfolio_builder",
7
+ steps: [
8
+ promptStep("fetch_candidates", "Fetch market data and select candidates", buildPortfolioPrompt(resolution), {
9
+ requiredInputs: ["symbols"],
10
+ expectedOutputs: ["candidate_positions"],
11
+ }),
12
+ promptStep("risk_review", "Review risk and diversification", `Now review the risk and diversification of this draft portfolio:
7
13
  1. Use analyze_correlation across all ${s.positionCount} candidates to check for concentration risk.
8
14
  2. Use analyze_risk on each position for volatility and max drawdown.
9
15
  3. If correlation is too high (>0.7 between any pair), suggest a replacement to improve diversification.
10
- 4. Confirm the portfolio fits a ${s.riskProfile} risk profile with ${s.timeHorizon} horizon.`,
11
- `Present the final portfolio draft as a structured summary:
16
+ 4. Confirm the portfolio fits a ${s.riskProfile} risk profile with ${s.timeHorizon} horizon.`, {
17
+ skippable: true,
18
+ requiredInputs: ["candidate_positions"],
19
+ expectedOutputs: ["risk_assessment"],
20
+ }),
21
+ promptStep("synthesize", "Present final portfolio draft", `Present the final portfolio draft as a structured summary:
12
22
  - State all assumptions at the top (which parameters were defaults vs user-specified vs saved preferences).
13
23
  - Present an allocation table: symbol, allocation %, dollar amount ($${s.budget.toLocaleString("en-US")} total), and one-line rationale per position.
14
24
  - Include overall portfolio risk summary: estimated volatility, diversification quality, largest single risk.
@@ -19,8 +29,19 @@ Length constraints:
19
29
  - Max 1 sentence of rationale per position in the allocation table.
20
30
  - Risk summary: max 3 bullet points.
21
31
  - Growth/safety suggestions: max 2 bullet points each.
22
- - Keep total response under 40 lines.`,
23
- ];
24
- return { initialPrompt, followUps };
32
+ - Keep total response under 40 lines.`, {
33
+ requiredInputs: ["risk_assessment"],
34
+ expectedOutputs: ["portfolio_summary"],
35
+ }),
36
+ ],
37
+ };
38
+ }
39
+ /** @deprecated Use buildPortfolioWorkflowDefinition instead */
40
+ export function buildPortfolioWorkflow(resolution) {
41
+ const def = buildPortfolioWorkflowDefinition(resolution);
42
+ return {
43
+ initialPrompt: def.steps[0].prompt,
44
+ followUps: def.steps.slice(1).map((s) => s.prompt),
45
+ };
25
46
  }
26
47
  //# sourceMappingURL=portfolio-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"portfolio-builder.js","sourceRoot":"","sources":["../../src/workflows/portfolio-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAGtE,MAAM,UAAU,sBAAsB,CAAC,UAA0C;IAC/E,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC;IAE9B,MAAM,SAAS,GAAG;QAChB;wCACoC,CAAC,CAAC,aAAa;;;kCAGrB,CAAC,CAAC,WAAW,sBAAsB,CAAC,CAAC,WAAW,WAAW;QAEzF;;uEAEmE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;;;;;;;;;sCASjE;KACnC,CAAC;IAEF,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"portfolio-builder.js","sourceRoot":"","sources":["../../src/workflows/portfolio-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,MAAM,UAAU,gCAAgC,CAAC,UAA0C;IACzF,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC;IAE9B,OAAO;QACL,YAAY,EAAE,mBAAmB;QACjC,KAAK,EAAE;YACL,UAAU,CAAC,kBAAkB,EAAE,yCAAyC,EAAE,oBAAoB,CAAC,UAAU,CAAC,EAAE;gBAC1G,cAAc,EAAE,CAAC,SAAS,CAAC;gBAC3B,eAAe,EAAE,CAAC,qBAAqB,CAAC;aACzC,CAAC;YACF,UAAU,CAAC,aAAa,EAAE,iCAAiC,EAAE;wCAC3B,CAAC,CAAC,aAAa;;;kCAGrB,CAAC,CAAC,WAAW,sBAAsB,CAAC,CAAC,WAAW,WAAW,EAAE;gBACvF,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,CAAC,qBAAqB,CAAC;gBACvC,eAAe,EAAE,CAAC,iBAAiB,CAAC;aACrC,CAAC;YACF,UAAU,CAAC,YAAY,EAAE,+BAA+B,EAAE;;uEAEO,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;;;;;;;;;sCASjE,EAAE;gBAChC,cAAc,EAAE,CAAC,iBAAiB,CAAC;gBACnC,eAAe,EAAE,CAAC,mBAAmB,CAAC;aACvC,CAAC;SACH;KACF,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,sBAAsB,CAAC,UAA0C;IAC/E,MAAM,GAAG,GAAG,gCAAgC,CAAC,UAAU,CAAC,CAAC;IACzD,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;QAClC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;KACnD,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencandle",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "description": "Financial trading & investing agent",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/Kahtaf/OpenCandle#readme",
@@ -43,9 +43,20 @@
43
43
  ]
44
44
  },
45
45
  "keywords": [
46
- "pi-package",
47
46
  "opencandle",
48
- "finance"
47
+ "finance",
48
+ "stock",
49
+ "investing",
50
+ "trading",
51
+ "options",
52
+ "market-data",
53
+ "portfolio",
54
+ "ai-agent",
55
+ "terminal",
56
+ "financial-analysis",
57
+ "sentiment",
58
+ "technical-analysis",
59
+ "pi-package"
49
60
  ],
50
61
  "files": [
51
62
  "dist"
@@ -58,7 +69,13 @@
58
69
  "test:watch": "vitest",
59
70
  "test:e2e": "tsx tests/e2e/tools.test.ts",
60
71
  "test:e2e:cli": "tsx tests/e2e/cli.test.ts",
72
+ "test:e2e:credential-prompt": "tsx tests/e2e/credential-prompt.test.ts",
73
+ "test:e2e:credential-snooze": "tsx tests/e2e/credential-snooze.test.ts",
74
+ "test:e2e:credential-soft-fallback": "tsx tests/e2e/credential-soft-fallback.test.ts",
75
+ "test:e2e:credential-per-workflow-cap": "tsx tests/e2e/credential-per-workflow-cap.test.ts",
61
76
  "test:e2e:providers": "tsx tests/e2e/providers.test.ts",
77
+ "test:evals": "vitest run --config vitest.config.evals.ts",
78
+ "test:evals:usually": "EVAL_TIER=usually vitest run --config vitest.config.evals.ts",
62
79
  "version:patch": "npm version patch --no-git-tag-version",
63
80
  "version:minor": "npm version minor --no-git-tag-version",
64
81
  "version:major": "npm version major --no-git-tag-version",
@@ -73,8 +90,10 @@
73
90
  "node": ">=20.0.0"
74
91
  },
75
92
  "dependencies": {
93
+ "@the-convocation/twitter-scraper": "^0.22.3",
76
94
  "better-sqlite3": "^12.8.0",
77
95
  "camoufox-js": "^0.9.3",
96
+ "duck-duck-scrape": "^2.2.7",
78
97
  "playwright-core": "^1.58.2"
79
98
  },
80
99
  "peerDependencies": {
@@ -84,14 +103,15 @@
84
103
  "@sinclair/typebox": "*"
85
104
  },
86
105
  "devDependencies": {
87
- "@mariozechner/pi-agent-core": "^0.63.1",
88
- "@mariozechner/pi-ai": "^0.63.1",
89
- "@mariozechner/pi-coding-agent": "^0.64.0",
106
+ "@mariozechner/pi-agent-core": "^0.65.0",
107
+ "@mariozechner/pi-ai": "^0.65.0",
108
+ "@mariozechner/pi-coding-agent": "^0.65.0",
90
109
  "@sinclair/typebox": "^0.34.0",
91
110
  "@types/better-sqlite3": "^7.6.13",
92
111
  "@types/node": "^22.0.0",
93
112
  "tsx": "^4.19.0",
94
113
  "typescript": "^5.7.0",
95
- "vitest": "^3.0.0"
114
+ "vitest": "^3.0.0",
115
+ "vitest-evals": "^0.7.0"
96
116
  }
97
117
  }
@@ -1,7 +0,0 @@
1
- import type { AgentTool } from "@mariozechner/pi-agent-core";
2
- import type { RedditSentimentResult } from "../../types/sentiment.js";
3
- declare const params: import("@sinclair/typebox").TObject<{
4
- topic: import("@sinclair/typebox").TString;
5
- }>;
6
- export declare const newsSentimentTool: AgentTool<typeof params, RedditSentimentResult>;
7
- export {};
@@ -1,57 +0,0 @@
1
- import { Type } from "@sinclair/typebox";
2
- import { getSubredditPosts } from "../../providers/reddit.js";
3
- const params = Type.Object({
4
- topic: Type.String({
5
- description: "Topic or ticker to search for news sentiment (e.g. AAPL, bitcoin, inflation)",
6
- }),
7
- });
8
- export const newsSentimentTool = {
9
- name: "get_reddit_discussions",
10
- label: "Reddit Financial Discussions",
11
- description: "Search financial Reddit communities (r/stocks, r/investing) for recent discussions about a topic. Useful for gauging retail sentiment, but not a substitute for news or institutional analysis.",
12
- parameters: params,
13
- async execute(toolCallId, args) {
14
- // Use r/stocks and r/investing as news proxies
15
- const subreddits = ["stocks", "investing"];
16
- const allPosts = [];
17
- const allMentions = [];
18
- for (const sub of subreddits) {
19
- try {
20
- const result = await getSubredditPosts(sub, 25);
21
- // Filter posts that mention the topic
22
- const relevant = result.posts.filter((p) => p.title.toLowerCase().includes(args.topic.toLowerCase()));
23
- allPosts.push(...relevant);
24
- allMentions.push(...result.topMentions);
25
- }
26
- catch {
27
- // Continue with other subreddits if one fails
28
- }
29
- }
30
- const uniqueMentions = [...new Set(allMentions)];
31
- const text = [
32
- `**Reddit Discussions for "${args.topic}"** — ${allPosts.length} relevant posts found`,
33
- uniqueMentions.length > 0
34
- ? `Related tickers: ${uniqueMentions.map((t) => `$${t}`).join(", ")}`
35
- : "",
36
- "",
37
- ...allPosts.slice(0, 10).map((p) => ` ⬆${p.score} 💬${p.comments} — ${p.title.slice(0, 100)}`),
38
- allPosts.length === 0 ? "No relevant discussions found. Try broader search terms." : "",
39
- ]
40
- .filter(Boolean)
41
- .join("\n");
42
- return {
43
- content: [{ type: "text", text }],
44
- details: {
45
- subreddit: "stocks+investing",
46
- postCount: allPosts.length,
47
- posts: allPosts,
48
- topMentions: uniqueMentions,
49
- sentimentScore: 0,
50
- bullishCount: 0,
51
- bearishCount: 0,
52
- fetchedAt: new Date().toISOString(),
53
- },
54
- };
55
- },
56
- };
57
- //# sourceMappingURL=news-sentiment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"news-sentiment.js","sourceRoot":"","sources":["../../../src/tools/sentiment/news-sentiment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE,8EAA8E;KAC5F,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAoD;IAChF,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,8BAA8B;IACrC,WAAW,EACT,iMAAiM;IACnM,UAAU,EAAE,MAAM;IAClB,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI;QAC5B,+CAA+C;QAC/C,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAmC,EAAE,CAAC;QACpD,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAChD,sCAAsC;gBACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAChE,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAC3B,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,8CAA8C;YAChD,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG;YACX,6BAA6B,IAAI,CAAC,KAAK,SAAS,QAAQ,CAAC,MAAM,uBAAuB;YACtF,cAAc,CAAC,MAAM,GAAG,CAAC;gBACvB,CAAC,CAAC,oBAAoB,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrE,CAAC,CAAC,EAAE;YACN,EAAE;YACF,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAClE;YACD,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,EAAE;SACxF;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjC,OAAO,EAAE;gBACP,SAAS,EAAE,kBAAkB;gBAC7B,SAAS,EAAE,QAAQ,CAAC,MAAM;gBAC1B,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,cAAc;gBAC3B,cAAc,EAAE,CAAC;gBACjB,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}