fodda-mcp 1.30.0 → 1.32.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.
- package/README.md +30 -28
- package/dist/a2aHandler.d.ts.map +1 -1
- package/dist/a2aHandler.js +143 -2
- package/dist/a2aHandler.js.map +1 -1
- package/dist/agents/fodda-researcher/index.d.ts +3 -0
- package/dist/agents/fodda-researcher/index.d.ts.map +1 -1
- package/dist/agents/fodda-researcher/index.js +19 -0
- package/dist/agents/fodda-researcher/index.js.map +1 -1
- package/dist/catalogCache.d.ts +30 -0
- package/dist/catalogCache.d.ts.map +1 -1
- package/dist/catalogCache.js +129 -0
- package/dist/catalogCache.js.map +1 -1
- package/dist/errorHandling.d.ts.map +1 -1
- package/dist/errorHandling.js +38 -27
- package/dist/errorHandling.js.map +1 -1
- package/dist/index.js +100 -19
- package/dist/index.js.map +1 -1
- package/dist/pricingCache.d.ts +13 -1
- package/dist/pricingCache.d.ts.map +1 -1
- package/dist/pricingCache.js +123 -23
- package/dist/pricingCache.js.map +1 -1
- package/dist/queryCache.d.ts.map +1 -1
- package/dist/queryCache.js +1 -0
- package/dist/queryCache.js.map +1 -1
- package/dist/systemPrompt.d.ts +2 -2
- package/dist/systemPrompt.d.ts.map +1 -1
- package/dist/systemPrompt.js +43 -15
- package/dist/systemPrompt.js.map +1 -1
- package/dist/toolHandlers.d.ts +5 -1
- package/dist/toolHandlers.d.ts.map +1 -1
- package/dist/toolHandlers.js +366 -107
- package/dist/toolHandlers.js.map +1 -1
- package/dist/tools.d.ts +2 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +2 -1
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
- package/server.json +4 -4
package/README.md
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
**Expert-curated knowledge graphs for AI agents** — PSFK Retail, Beauty, Sports and partner datasets via the Model Context Protocol.
|
|
7
7
|
|
|
8
|
-
[](https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.fodda/mcp-server)
|
|
9
9
|
[](https://www.npmjs.com/package/fodda-mcp)
|
|
10
|
-
[](./CHANGELOG.md)
|
|
11
11
|
[](https://fodda.ai)
|
|
12
12
|
|
|
13
13
|
</div>
|
|
@@ -178,9 +178,8 @@ The Fodda MCP server exposes a rich suite of 30 tools to search, analyze, brains
|
|
|
178
178
|
|
|
179
179
|
| Endpoint | Description |
|
|
180
180
|
|----------|-------------|
|
|
181
|
-
| `GET /
|
|
182
|
-
| `
|
|
183
|
-
| `GET /.well-known/mcp.json` | MCP server auto-discovery manifest |
|
|
181
|
+
| `GET /health` | Health check (`{ "status": "ok", "version": "..." }`) |
|
|
182
|
+
| `POST /mcp` | MCP endpoint — call the standard `tools/list` method on an initialized session to retrieve full tool schemas and capabilities |
|
|
184
183
|
|
|
185
184
|
---
|
|
186
185
|
|
|
@@ -243,11 +242,11 @@ PORT=8080 npm start
|
|
|
243
242
|
|
|
244
243
|
## MCP Registry
|
|
245
244
|
|
|
246
|
-
This server is published to the [Official MCP Registry](https://registry.modelcontextprotocol.io) as `
|
|
245
|
+
This server is published to the [Official MCP Registry](https://registry.modelcontextprotocol.io) as `ai.fodda/mcp-server`.
|
|
247
246
|
|
|
248
247
|
```bash
|
|
249
248
|
# Verify listing
|
|
250
|
-
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=
|
|
249
|
+
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.fodda/mcp-server"
|
|
251
250
|
```
|
|
252
251
|
|
|
253
252
|
---
|
|
@@ -256,27 +255,30 @@ curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.pie
|
|
|
256
255
|
|
|
257
256
|
Full policy: **[https://www.fodda.ai/privacy](https://www.fodda.ai/privacy)**
|
|
258
257
|
|
|
259
|
-
Summary of how the Fodda MCP server handles data:
|
|
260
|
-
|
|
261
|
-
- **What we collect.**
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
- **Third-party sharing.** We do not sell your
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
258
|
+
Summary of how the Fodda MCP server handles data (the hosted policy is authoritative):
|
|
259
|
+
|
|
260
|
+
- **What we collect.** *Account information* (name, email, organization) to manage your
|
|
261
|
+
account; *usage data* — API queries (query text, graph accessed, timestamps) logged for
|
|
262
|
+
billing, service improvement, and abuse prevention; and standard *technical data* (IP,
|
|
263
|
+
browser type, referral URLs). We do **not** store the full content of AI-generated
|
|
264
|
+
responses. Your API key authenticates requests and is never returned in tool output.
|
|
265
|
+
- **How it's used.** To provide and improve the Services, process billing, enforce rate
|
|
266
|
+
limits and prevent abuse, communicate support/service updates, and meet legal
|
|
267
|
+
obligations. Requests are proxied to the Fodda API (`https://api.fodda.ai`) over TLS.
|
|
268
|
+
- **Third-party sharing.** We do **not** sell your personal information. Data is shared
|
|
269
|
+
only with service providers (e.g. payment processors, cloud hosting) under
|
|
270
|
+
confidentiality agreements, or when required by law.
|
|
271
|
+
- **AI model training.** Fodda does **not** use your queries or data to train AI models.
|
|
272
|
+
Knowledge graphs are expert-curated, not generated from user interactions.
|
|
273
|
+
- **Retention.** Account information is retained while your account is active; query logs
|
|
274
|
+
are retained for billing and analytics. You may request account/data deletion via the
|
|
275
|
+
contact below.
|
|
276
|
+
- **Security.** TLS-encrypted connections, API-key authentication, and secure cloud
|
|
277
|
+
infrastructure.
|
|
278
|
+
- **Contact.** Privacy inquiries: **[privacy@fodda.ai](mailto:privacy@fodda.ai)**.
|
|
279
|
+
|
|
280
|
+
See the [full hosted Privacy Policy](https://www.fodda.ai/privacy) (last updated
|
|
281
|
+
June 16, 2026) for the complete, authoritative terms.
|
|
280
282
|
|
|
281
283
|
---
|
|
282
284
|
|
package/dist/a2aHandler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2aHandler.d.ts","sourceRoot":"","sources":["../src/a2aHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"a2aHandler.d.ts","sourceRoot":"","sources":["../src/a2aHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAmL1D,KAAK,cAAc,GAAG,CAClB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,EAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,GAAG,KACT,OAAO,CAAC,GAAG,CAAC,CAAC;AA8KlB,wBAAgB,gBAAgB,CAC5B,GAAG,EAAE,OAAO,EACZ,YAAY,EAAE,cAAc,GAC7B,IAAI,CA6IN"}
|
package/dist/a2aHandler.js
CHANGED
|
@@ -14,8 +14,83 @@
|
|
|
14
14
|
* Spec: https://a2a-protocol.org/latest/specification/
|
|
15
15
|
*/
|
|
16
16
|
import crypto from 'crypto';
|
|
17
|
+
import { MCP_SERVER_VERSION } from './tools.js';
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// A2A Agent Card — the discovery document agents/registries fetch to learn
|
|
20
|
+
// what Fodda can do. Served at /.well-known/agent-card.json (A2A standard).
|
|
21
|
+
// Skills reflect what the /a2a endpoint can actually fulfil (the classifier's
|
|
22
|
+
// routes), so we never advertise a capability we can't deliver.
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
const AGENT_CARD = {
|
|
25
|
+
protocolVersion: '0.3.0',
|
|
26
|
+
name: 'Fodda Research Agent',
|
|
27
|
+
description: "Expert-curated trend, brand, research, and earnings intelligence from named experts' knowledge graphs (220+ graphs across retail, beauty, sports, finance, and institutional data). Delegate a task in natural language — Fodda selects the right tools and returns a synthesized result. Pay per task via Stripe Shared Payment Token; no account required.",
|
|
28
|
+
url: 'https://mcp.fodda.ai/a2a',
|
|
29
|
+
preferredTransport: 'JSONRPC',
|
|
30
|
+
version: MCP_SERVER_VERSION,
|
|
31
|
+
provider: { organization: 'Fodda (PSFK)', url: 'https://www.fodda.ai' },
|
|
32
|
+
documentationUrl: 'https://www.fodda.ai/llms.txt',
|
|
33
|
+
iconUrl: 'https://ucarecdn.com/6e7893d7-6b14-426b-83bc-574a3f72d6bc/foddafavicon.png',
|
|
34
|
+
capabilities: { streaming: false, pushNotifications: false, stateTransitionHistory: false },
|
|
35
|
+
defaultInputModes: ['text/plain'],
|
|
36
|
+
defaultOutputModes: ['text/plain', 'application/json'],
|
|
37
|
+
skills: [
|
|
38
|
+
{
|
|
39
|
+
id: 'brand-intelligence',
|
|
40
|
+
name: 'Brand Intelligence',
|
|
41
|
+
description: "Track a brand's trend footprint, competitive context, and market signals across expert-curated graphs.",
|
|
42
|
+
tags: ['brand', 'competitive', 'intelligence'],
|
|
43
|
+
examples: ['What is Nike doing?', 'Brand intelligence for Patagonia'],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 'trend-search',
|
|
47
|
+
name: 'Trend Search',
|
|
48
|
+
description: 'Search expert-curated knowledge graphs for trends with supporting evidence and source attribution.',
|
|
49
|
+
tags: ['trends', 'search', 'research'],
|
|
50
|
+
examples: ['sustainable packaging trends', 'Gen Z beauty habits'],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: 'deep-research',
|
|
54
|
+
name: 'Deep Research',
|
|
55
|
+
description: "Synthesize a multi-trend research summary across Fodda's graph network for a topic. Research spans expert graphs, earnings calls, and institutional data.",
|
|
56
|
+
tags: ['research', 'report', 'analysis'],
|
|
57
|
+
examples: ['comprehensive report on Gen Z luxury', 'detailed analysis of the resale market'],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: 'earnings-intelligence',
|
|
61
|
+
name: 'Cross-Company Earnings Themes',
|
|
62
|
+
description: 'Surface cross-company and industry-level themes from earnings calls — analyst concerns, management commentary, guidance trends, and divergence detection across sectors.',
|
|
63
|
+
tags: ['earnings', 'financial', 'intelligence', 'cross-company'],
|
|
64
|
+
examples: ['what are hotel companies saying about labor costs', 'where are executives deflecting on margins'],
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: 'per-ticker-earnings',
|
|
68
|
+
name: 'Per-Ticker Earnings Intelligence',
|
|
69
|
+
description: 'SWOT scores, sentiment analysis, guidance tracking, analyst Q&A, and competitive analysis for consumer-sector public companies. Quarterly records with multi-quarter history.',
|
|
70
|
+
tags: ['earnings', 'finance', 'swot', 'sentiment', 'guidance'],
|
|
71
|
+
examples: [
|
|
72
|
+
"What's Nike's latest SWOT score?",
|
|
73
|
+
'Compare Lululemon and On Running earnings',
|
|
74
|
+
'Which companies raised guidance this quarter?',
|
|
75
|
+
"Show me Costco's analyst Q&A themes",
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
id: 'expert-consult',
|
|
80
|
+
name: 'Expert Consult',
|
|
81
|
+
description: "Consult a named Human Agent — a real expert's digital twin that answers in their voice and researches across expert graphs, earnings calls, and market data on your behalf.",
|
|
82
|
+
tags: ['expert', 'consult', 'analyst'],
|
|
83
|
+
examples: ['Consult Ben Dietz about culture-led brand strategy', 'Ask Anu Lingala about 2026 macro trends'],
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
};
|
|
17
87
|
function classifyIntent(text) {
|
|
18
88
|
const lower = text.toLowerCase();
|
|
89
|
+
// Expert consult triggers: "Consult Ben Dietz about X", "Ask Anu Lingala: ..."
|
|
90
|
+
const consultMatch = text.match(/^\s*(?:consult|ask)\s+([A-Z][A-Za-z .'-]{2,40}?)\s*(?:about|on|regarding|:)\s+(.+)/i);
|
|
91
|
+
if (consultMatch && consultMatch[1] && consultMatch[2]) {
|
|
92
|
+
return { tool: 'consult', params: { expert_name: consultMatch[1].trim(), query: consultMatch[2].trim() } };
|
|
93
|
+
}
|
|
19
94
|
// Brand-focused queries
|
|
20
95
|
const brandMatch = lower.match(/(?:what is |what's |tell me about |brand (?:intelligence|profile|tracker) (?:for |on )?|track )([a-z][a-z0-9 &'.-]{1,30}?)(?:\s+(?:doing|strategy|innovation|positioning|trends?))?$/i);
|
|
21
96
|
if (brandMatch && brandMatch[1]) {
|
|
@@ -31,7 +106,19 @@ function classifyIntent(text) {
|
|
|
31
106
|
lower.includes('write me a report') || lower.includes('detailed analysis')) {
|
|
32
107
|
return { tool: 'deep_research', params: { query: text, depth: 'light' } };
|
|
33
108
|
}
|
|
34
|
-
//
|
|
109
|
+
// Per-ticker earnings triggers: SWOT, sentiment, guidance, "[ticker] earnings", compare tickers
|
|
110
|
+
// Must be BEFORE the generic earnings trigger to catch specific per-company queries.
|
|
111
|
+
const tickerMatch = lower.match(/(?:earnings|swot|sentiment|guidance|q\&?a)\s+(?:for\s+)?([A-Z]{1,5})\b/i)
|
|
112
|
+
|| lower.match(/\b([A-Z]{1,5})(?:'s)?\s+(?:earnings|swot|sentiment|guidance|q\&?a)\b/i);
|
|
113
|
+
if (tickerMatch && tickerMatch[1]) {
|
|
114
|
+
return { tool: 'company_earnings', params: { ticker: tickerMatch[1].toUpperCase(), query: text } };
|
|
115
|
+
}
|
|
116
|
+
if (lower.includes('swot') || lower.includes('ceo sentiment') || lower.includes('analyst sentiment') ||
|
|
117
|
+
lower.match(/(?:raised|cut|withdrawn)\s+guidance/) || lower.includes('guidance changes') ||
|
|
118
|
+
lower.match(/compare\s+(?:earnings|swot|sentiment)/)) {
|
|
119
|
+
return { tool: 'company_earnings', params: { ticker: '', query: text } };
|
|
120
|
+
}
|
|
121
|
+
// Cross-company / thematic earnings triggers
|
|
35
122
|
if (lower.includes('earnings') || lower.includes('q1 ') || lower.includes('q2 ') ||
|
|
36
123
|
lower.includes('q3 ') || lower.includes('q4 ') || lower.match(/what (?:are|did) .+ (?:companies|brands) say/)) {
|
|
37
124
|
return { tool: 'earnings', params: { query: text } };
|
|
@@ -97,6 +184,27 @@ async function executeQuery(route, apiKey, userId, foddaRequest) {
|
|
|
97
184
|
}
|
|
98
185
|
return { text: lines.join('\n') || JSON.stringify(result, null, 2), data: result };
|
|
99
186
|
}
|
|
187
|
+
case 'company_earnings': {
|
|
188
|
+
// Per-ticker earnings — route to the snapshot endpoint if a ticker was captured,
|
|
189
|
+
// otherwise fall through to the guidance-changes endpoint for thematic queries.
|
|
190
|
+
if (route.params.ticker) {
|
|
191
|
+
const result = await foddaRequest('GET', `/v1/earnings/company/${encodeURIComponent(route.params.ticker)}`, apiKey, userId);
|
|
192
|
+
const lines = [];
|
|
193
|
+
lines.push(`## Earnings Intelligence: ${route.params.ticker}\n`);
|
|
194
|
+
if (result?.swot)
|
|
195
|
+
lines.push(`**SWOT Score:** ${result.swot.total || 'N/A'}`);
|
|
196
|
+
if (result?.sentiment)
|
|
197
|
+
lines.push(`**CEO Sentiment:** ${result.sentiment.ceo || 'N/A'} · **Analyst Sentiment:** ${result.sentiment.analyst || 'N/A'}`);
|
|
198
|
+
if (result?.guidance?.status)
|
|
199
|
+
lines.push(`**Guidance:** ${result.guidance.status}`);
|
|
200
|
+
if (result?.period)
|
|
201
|
+
lines.push(`\n_Period: ${result.period}_`);
|
|
202
|
+
return { text: lines.join('\n') || JSON.stringify(result, null, 2), data: result };
|
|
203
|
+
}
|
|
204
|
+
// No ticker — likely a guidance/compare query, use guidance-changes
|
|
205
|
+
const result = await foddaRequest('GET', '/v1/earnings/guidance-changes', apiKey, userId);
|
|
206
|
+
return { text: result?.summary || JSON.stringify(result, null, 2), data: result };
|
|
207
|
+
}
|
|
100
208
|
case 'earnings': {
|
|
101
209
|
const body = { query: route.params.query, limit: 10 };
|
|
102
210
|
const result = await foddaRequest('POST', '/v1/earnings/search', apiKey, userId, body);
|
|
@@ -105,6 +213,35 @@ async function executeQuery(route, apiKey, userId, foddaRequest) {
|
|
|
105
213
|
data: result,
|
|
106
214
|
};
|
|
107
215
|
}
|
|
216
|
+
case 'consult': {
|
|
217
|
+
// Resolve the free-text expert name against the public analyst roster
|
|
218
|
+
const roster = await foddaRequest('GET', '/v1/analysts', apiKey, userId);
|
|
219
|
+
const analysts = Array.isArray(roster?.analysts) ? roster.analysts
|
|
220
|
+
: Array.isArray(roster) ? roster : [];
|
|
221
|
+
const wanted = route.params.expert_name.toLowerCase();
|
|
222
|
+
const match = analysts.find(a => {
|
|
223
|
+
const name = String(a?.name || '').toLowerCase();
|
|
224
|
+
return name && (name.includes(wanted) || wanted.includes(name));
|
|
225
|
+
});
|
|
226
|
+
if (!match) {
|
|
227
|
+
const names = analysts.map(a => a?.name).filter(Boolean).slice(0, 10).join(', ');
|
|
228
|
+
return { text: `No Fodda expert matched "${route.params.expert_name}". Available experts include: ${names || 'none listed'}.` };
|
|
229
|
+
}
|
|
230
|
+
const result = await foddaRequest('POST', '/v1/analysts/consult', apiKey, userId, {
|
|
231
|
+
analyst_id: match.id,
|
|
232
|
+
query: route.params.query,
|
|
233
|
+
});
|
|
234
|
+
const lines = [];
|
|
235
|
+
lines.push(`## Consulting ${match.name}\n`);
|
|
236
|
+
if (result?.result)
|
|
237
|
+
lines.push(result.result);
|
|
238
|
+
if (Array.isArray(result?.referrals) && result.referrals.length > 0) {
|
|
239
|
+
const refs = result.referrals.map((r) => r?.name).filter(Boolean).join(', ');
|
|
240
|
+
if (refs)
|
|
241
|
+
lines.push(`\n_Also worth checking: ${refs}_`);
|
|
242
|
+
}
|
|
243
|
+
return { text: lines.join('\n') || JSON.stringify(result, null, 2), data: result };
|
|
244
|
+
}
|
|
108
245
|
case 'deep_research': {
|
|
109
246
|
// For A2A MVP, we do a synchronous search (not the async deep_research job)
|
|
110
247
|
// because A2A registries expect a timely response for health probes.
|
|
@@ -144,6 +281,10 @@ function jsonRpcError(id, code, message, data) {
|
|
|
144
281
|
// Route registration
|
|
145
282
|
// ---------------------------------------------------------------------------
|
|
146
283
|
export function registerA2ARoute(app, foddaRequest) {
|
|
284
|
+
// ── A2A Agent Card discovery (skills catalog) ──
|
|
285
|
+
const serveAgentCard = (_req, res) => res.json(AGENT_CARD);
|
|
286
|
+
app.get('/.well-known/agent-card.json', serveAgentCard); // A2A current standard
|
|
287
|
+
app.get('/.well-known/agent.json', serveAgentCard); // legacy alias
|
|
147
288
|
app.post('/a2a', async (req, res) => {
|
|
148
289
|
// ── Parse & validate JSON-RPC envelope ──
|
|
149
290
|
const body = req.body;
|
|
@@ -242,6 +383,6 @@ export function registerA2ARoute(app, foddaRequest) {
|
|
|
242
383
|
return res.json(jsonRpcError(requestId, -32603, `Fodda query failed: ${errMsg}`));
|
|
243
384
|
}
|
|
244
385
|
});
|
|
245
|
-
console.error('[a2a] A2A endpoint registered at POST /a2a');
|
|
386
|
+
console.error('[a2a] A2A endpoint registered at POST /a2a (+ agent card at /.well-known/agent-card.json)');
|
|
246
387
|
}
|
|
247
388
|
//# sourceMappingURL=a2aHandler.js.map
|
package/dist/a2aHandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2aHandler.js","sourceRoot":"","sources":["../src/a2aHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"a2aHandler.js","sourceRoot":"","sources":["../src/a2aHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,9 @@ export interface GraphContext {
|
|
|
24
24
|
totalEvidence?: number;
|
|
25
25
|
/** Optional specific graph to focus on (undefined = search all) */
|
|
26
26
|
focusGraphId?: string | undefined;
|
|
27
|
+
/** Pre-fetched earnings-call intelligence (stringified JSON), present when
|
|
28
|
+
* the source router flagged a public company / sector / earnings angle */
|
|
29
|
+
earningsResults?: string;
|
|
27
30
|
}
|
|
28
31
|
/**
|
|
29
32
|
* Build the complete system instruction for the Fodda Research Agent.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/fodda-researcher/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/fodda-researcher/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;+EAC2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GACvB,MAAM,CAkER"}
|
|
@@ -56,6 +56,25 @@ Total evidence pieces: ${context.totalEvidence ?? 'unknown'}
|
|
|
56
56
|
|
|
57
57
|
## Graph Data
|
|
58
58
|
${context.graphResults}`);
|
|
59
|
+
}
|
|
60
|
+
// ── Pre-fetched earnings-call intelligence ──
|
|
61
|
+
if (context?.earningsResults) {
|
|
62
|
+
sections.push('---');
|
|
63
|
+
sections.push(`# Pre-Loaded Earnings Call Intelligence
|
|
64
|
+
|
|
65
|
+
The following earnings-call evidence was pre-fetched because the query involves a
|
|
66
|
+
public company, sector, or earnings-shaped question. Treat it as primary source
|
|
67
|
+
material alongside the graph data.
|
|
68
|
+
|
|
69
|
+
Attribution rule: attribute earnings findings by source TYPE, naming the company
|
|
70
|
+
and period — e.g. "per Ulta's Q1 earnings call…" or "per management commentary on
|
|
71
|
+
Marriott's latest earnings call…". Never attribute earnings data to a knowledge
|
|
72
|
+
graph, and never cite it as generic web research. The same source-type attribution
|
|
73
|
+
applies to any supplemental/institutional data ("per FRED consumer confidence
|
|
74
|
+
data…").
|
|
75
|
+
|
|
76
|
+
## Earnings Data
|
|
77
|
+
${context.earningsResults}`);
|
|
59
78
|
}
|
|
60
79
|
return sections.join('\n\n');
|
|
61
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/fodda-researcher/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACH,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/fodda-researcher/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACH,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,aAAa,CAAC;AAsBrB;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACtC,KAAa,EACb,OAAsB;IAEtB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,yBAAyB;IACzB,QAAQ,CAAC,IAAI,CAAC;;;;2BAIS,KAAK;EAC9B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,kBAAkB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,yCAAyC;;;;;;IAM1G,CAAC,CAAC;IAEF,eAAe;IACf,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEpC,kCAAkC;IAClC,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC;;;;;;mBAMH,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS;sBAC5C,OAAO,CAAC,WAAW,IAAI,SAAS;yBAC7B,OAAO,CAAC,aAAa,IAAI,SAAS;;;EAGzD,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACtB,CAAC;IAED,+CAA+C;IAC/C,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC;;;;;;;;;;;;;;EAcpB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/catalogCache.d.ts
CHANGED
|
@@ -174,4 +174,34 @@ export interface GraphRelevanceResult {
|
|
|
174
174
|
* @param threshold - Minimum relevance score (default 0.15)
|
|
175
175
|
*/
|
|
176
176
|
export declare function getRelevantGraphs(query: string, minGraphs?: number, maxGraphs?: number, threshold?: number): GraphRelevanceResult[];
|
|
177
|
+
export type SourceCandidate = {
|
|
178
|
+
kind: 'graph';
|
|
179
|
+
graphId: string;
|
|
180
|
+
score: number;
|
|
181
|
+
graphTier: GraphRelevanceResult['graphTier'];
|
|
182
|
+
reason: string;
|
|
183
|
+
} | {
|
|
184
|
+
kind: 'earnings';
|
|
185
|
+
ticker?: string;
|
|
186
|
+
brand?: string;
|
|
187
|
+
sector?: string;
|
|
188
|
+
search?: string;
|
|
189
|
+
score: number;
|
|
190
|
+
reason: string;
|
|
191
|
+
} | {
|
|
192
|
+
kind: 'supplemental';
|
|
193
|
+
category: string;
|
|
194
|
+
score: number;
|
|
195
|
+
reason: string;
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* Unified source selector: graph candidates from getRelevantGraphs()
|
|
199
|
+
* (UNCHANGED — same scoring, tier diversity, freshness bonus, same order),
|
|
200
|
+
* plus additive earnings/supplemental candidates appended after.
|
|
201
|
+
*/
|
|
202
|
+
export declare function getRelevantSources(query: string, opts?: {
|
|
203
|
+
minGraphs?: number;
|
|
204
|
+
maxGraphs?: number;
|
|
205
|
+
threshold?: number;
|
|
206
|
+
}): SourceCandidate[];
|
|
177
207
|
//# sourceMappingURL=catalogCache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalogCache.d.ts","sourceRoot":"","sources":["../src/catalogCache.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalogCache.d.ts","sourceRoot":"","sources":["../src/catalogCache.ts"],"names":[],"mappings":"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"}
|
package/dist/catalogCache.js
CHANGED
|
@@ -705,4 +705,133 @@ export function getRelevantGraphs(query, minGraphs = 4, maxGraphs = 15, threshol
|
|
|
705
705
|
console.error(`[graphRouter] Query: "${query.substring(0, 60)}..." → ${results.length}/${syncedGraphs.length} synced graphs selected (${skippedShells} shells skipped): ${results.map(r => `${r.graph.graph_id}(${r.score.toFixed(2)},${r.graphTier})`).join(', ')}`);
|
|
706
706
|
return results;
|
|
707
707
|
}
|
|
708
|
+
// Small, high-confidence map of well-known public consumer companies → tickers.
|
|
709
|
+
// Deliberately conservative: ambiguous common words (Gap, Target, Meta, Visa,
|
|
710
|
+
// Delta, Booking) are excluded — a miss just means no earnings candidate,
|
|
711
|
+
// graphs still run. When unsure, DON'T add.
|
|
712
|
+
const KNOWN_PUBLIC_COMPANIES = {
|
|
713
|
+
'ulta': 'ULTA', 'nike': 'NKE', 'lululemon': 'LULU', 'starbucks': 'SBUX',
|
|
714
|
+
'walmart': 'WMT', 'costco': 'COST', 'amazon': 'AMZN', 'apple': 'AAPL',
|
|
715
|
+
'lvmh': 'LVMUY', 'estee lauder': 'EL', 'estée lauder': 'EL', 'coty': 'COTY',
|
|
716
|
+
"l'oreal": 'LRLCY', "l'oréal": 'LRLCY', 'elf beauty': 'ELF', 'e.l.f.': 'ELF',
|
|
717
|
+
'marriott': 'MAR', 'hilton': 'HLT', 'airbnb': 'ABNB', 'expedia': 'EXPE',
|
|
718
|
+
"mcdonald's": 'MCD', 'mcdonalds': 'MCD', 'chipotle': 'CMG', 'coca-cola': 'KO',
|
|
719
|
+
'pepsico': 'PEP', 'procter & gamble': 'PG', 'unilever': 'UL', 'adidas': 'ADDYY',
|
|
720
|
+
'abercrombie': 'ANF', 'urban outfitters': 'URBN', 'home depot': 'HD',
|
|
721
|
+
"lowe's": 'LOW', 'best buy': 'BBY', 'kroger': 'KR', 'shopify': 'SHOP',
|
|
722
|
+
'etsy': 'ETSY', 'wayfair': 'W', 'williams-sonoma': 'WSM', 'nordstrom': 'JWN',
|
|
723
|
+
'macy\'s': 'M', 'disney': 'DIS', 'netflix': 'NFLX', 'microsoft': 'MSFT',
|
|
724
|
+
'tesla': 'TSLA', 'crocs': 'CROX', 'deckers': 'DECK', 'levi\'s': 'LEVI',
|
|
725
|
+
'ralph lauren': 'RL', 'tapestry': 'TPR', 'capri holdings': 'CPRI',
|
|
726
|
+
'kering': 'PPRUY', 'hermes': 'HESAY', 'hermès': 'HESAY', 'sprouts': 'SFM',
|
|
727
|
+
'dollar general': 'DG', 'five below': 'FIVE', 'dick\'s sporting': 'DKS',
|
|
728
|
+
};
|
|
729
|
+
// All-caps tokens that look like tickers but aren't — never treat as tickers.
|
|
730
|
+
const TICKER_STOPLIST = new Set([
|
|
731
|
+
'AI', 'US', 'USA', 'UK', 'EU', 'CEO', 'CFO', 'CMO', 'COO', 'CTO', 'ESG',
|
|
732
|
+
'DTC', 'D2C', 'B2B', 'B2C', 'GDP', 'ROI', 'API', 'MCP', 'PSFK', 'NIQ',
|
|
733
|
+
'SXSW', 'FRED', 'OECD', 'BLS', 'BEA', 'USD', 'LLM', 'SEO', 'CPG', 'FMCG',
|
|
734
|
+
'QSR', 'POS', 'SKU', 'AR', 'VR', 'IT', 'TV', 'PR', 'HR', 'NYC', 'LA',
|
|
735
|
+
'DIY', 'FAQ', 'AND', 'THE', 'FOR', 'NOT', 'ONLY', 'ALL', 'NEW', 'HOW',
|
|
736
|
+
]);
|
|
737
|
+
// Earnings-shaped terms. Strong terms trigger alone; weak terms need 2+.
|
|
738
|
+
const EARNINGS_TERMS_STRONG = /\b(earnings|guidance|quarterly|cfo|q[1-4]\s*(?:'?\d{2}|\d{4})?|wall street|analyst call|earnings call|10-k|10-q)\b/i;
|
|
739
|
+
const EARNINGS_TERMS_WEAK = ['margin', 'margins', 'revenue', 'stock', 'profit', 'profitability', 'investors', 'shareholders'];
|
|
740
|
+
// Sector words the earnings snapshot endpoint understands as a sector filter.
|
|
741
|
+
const EARNINGS_SECTORS = ['retail', 'technology', 'travel', 'hospitality', 'luxury', 'beauty', 'fashion', 'apparel', 'automotive', 'hotels', 'restaurants', 'sportswear'];
|
|
742
|
+
// Static category → keyword map mirroring the get_supplemental_context catalog
|
|
743
|
+
// (economic indicators/FRED, demographic surveys/Census, trade data, food
|
|
744
|
+
// economics + agricultural production, commodity pricing).
|
|
745
|
+
const SUPPLEMENTAL_CATEGORY_KEYWORDS = {
|
|
746
|
+
macro: ['macro', 'economy', 'economic', 'inflation', 'gdp', 'interest rate', 'consumer confidence', 'consumer spending', 'recession', 'fred', 'cost of living', 'purchasing power', 'unemployment'],
|
|
747
|
+
demographics: ['demographic', 'demographics', 'population', 'census', 'household income', 'age distribution', 'migration'],
|
|
748
|
+
trade: ['imports', 'exports', 'trade data', 'trade flows', 'tariff', 'tariffs', 'supply chain'],
|
|
749
|
+
food_economics: ['food prices', 'food costs', 'crop', 'agriculture', 'agricultural', 'nutrition', 'nutritional'],
|
|
750
|
+
commodities: ['commodity', 'commodities', 'raw materials', 'wholesale prices'],
|
|
751
|
+
};
|
|
752
|
+
/**
|
|
753
|
+
* Detect an earnings candidate for a query. Deterministic and conservative:
|
|
754
|
+
* 1. Known public company name → ticker (highest confidence)
|
|
755
|
+
* 2. Explicit ALL-CAPS ticker token, guarded by earnings-context words
|
|
756
|
+
* 3. "Acme Inc/Corp/Group"-style suffix → brand fuzzy match
|
|
757
|
+
* 4. Earnings-shaped terms alone (1 strong, or 2+ weak) → sector/search query
|
|
758
|
+
* When unsure, returns null — no candidate, no cost creep.
|
|
759
|
+
*/
|
|
760
|
+
function detectEarningsCandidate(query) {
|
|
761
|
+
const queryLower = query.toLowerCase();
|
|
762
|
+
const hasStrongTerm = EARNINGS_TERMS_STRONG.test(query);
|
|
763
|
+
const weakMatches = EARNINGS_TERMS_WEAK.filter(t => new RegExp(`\\b${t}\\b`, 'i').test(query));
|
|
764
|
+
const hasEarningsContext = hasStrongTerm || weakMatches.length > 0;
|
|
765
|
+
const sector = EARNINGS_SECTORS.find(s => queryLower.includes(s));
|
|
766
|
+
// 1. Known public company named in query (word-boundary match)
|
|
767
|
+
for (const [name, ticker] of Object.entries(KNOWN_PUBLIC_COMPANIES)) {
|
|
768
|
+
const esc = name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
769
|
+
if (new RegExp(`\\b${esc}\\b`, 'i').test(query)) {
|
|
770
|
+
return { kind: 'earnings', ticker, score: 0.9, reason: `public company named in query (${name} → ${ticker})` };
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
// 2. Explicit ticker token — ONLY with earnings-context words present
|
|
774
|
+
if (hasEarningsContext) {
|
|
775
|
+
const tickerMatch = (query.match(/\b[A-Z]{2,5}\b/g) || []).find(t => !TICKER_STOPLIST.has(t));
|
|
776
|
+
if (tickerMatch) {
|
|
777
|
+
return { kind: 'earnings', ticker: tickerMatch, score: 0.8, reason: `ticker ${tickerMatch} with earnings-context terms` };
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
// 3. Company-suffix heuristic ("Acme Inc", "Foo Holdings")
|
|
781
|
+
const suffixMatch = query.match(/\b([A-Z][A-Za-z&'.-]+(?:\s+[A-Z][A-Za-z&'.-]+){0,2})\s+(?:Inc|Corp|Corporation|Ltd|PLC|Holdings|Group)\b/);
|
|
782
|
+
if (suffixMatch && suffixMatch[1]) {
|
|
783
|
+
return { kind: 'earnings', brand: suffixMatch[1], score: 0.7, reason: `company name with corporate suffix ("${suffixMatch[0]}")` };
|
|
784
|
+
}
|
|
785
|
+
// 4. Earnings-shaped terms alone: 1 strong term, or 2+ distinct weak terms
|
|
786
|
+
if (hasStrongTerm || weakMatches.length >= 2) {
|
|
787
|
+
const termsHit = hasStrongTerm ? 'earnings-shaped terms' : `terms: ${weakMatches.join(', ')}`;
|
|
788
|
+
return {
|
|
789
|
+
kind: 'earnings',
|
|
790
|
+
...(sector ? { sector } : { search: query.substring(0, 100) }),
|
|
791
|
+
score: 0.6,
|
|
792
|
+
reason: sector ? `${termsHit} + sector "${sector}"` : termsHit,
|
|
793
|
+
};
|
|
794
|
+
}
|
|
795
|
+
return null;
|
|
796
|
+
}
|
|
797
|
+
/** Detect supplemental candidates from the static category → keyword map. */
|
|
798
|
+
function detectSupplementalCandidates(query) {
|
|
799
|
+
const candidates = [];
|
|
800
|
+
for (const [category, keywords] of Object.entries(SUPPLEMENTAL_CATEGORY_KEYWORDS)) {
|
|
801
|
+
const hits = keywords.filter(kw => new RegExp(`\\b${kw.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\b`, 'i').test(query));
|
|
802
|
+
if (hits.length > 0) {
|
|
803
|
+
candidates.push({
|
|
804
|
+
kind: 'supplemental',
|
|
805
|
+
category,
|
|
806
|
+
score: Math.min(0.4 + hits.length * 0.15, 1.0),
|
|
807
|
+
reason: `keyword match: ${hits.slice(0, 3).join(', ')}`,
|
|
808
|
+
});
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
return candidates;
|
|
812
|
+
}
|
|
813
|
+
/**
|
|
814
|
+
* Unified source selector: graph candidates from getRelevantGraphs()
|
|
815
|
+
* (UNCHANGED — same scoring, tier diversity, freshness bonus, same order),
|
|
816
|
+
* plus additive earnings/supplemental candidates appended after.
|
|
817
|
+
*/
|
|
818
|
+
export function getRelevantSources(query, opts) {
|
|
819
|
+
const graphResults = getRelevantGraphs(query, opts?.minGraphs, opts?.maxGraphs, opts?.threshold);
|
|
820
|
+
const candidates = graphResults.map(r => ({
|
|
821
|
+
kind: 'graph',
|
|
822
|
+
graphId: r.graph.graph_id,
|
|
823
|
+
score: r.score,
|
|
824
|
+
graphTier: r.graphTier,
|
|
825
|
+
reason: r.score >= 1.0 ? 'named directly in query' : `topic match (score ${r.score.toFixed(2)}, ${r.graphTier})`,
|
|
826
|
+
}));
|
|
827
|
+
const earnings = detectEarningsCandidate(query);
|
|
828
|
+
if (earnings)
|
|
829
|
+
candidates.push(earnings);
|
|
830
|
+
candidates.push(...detectSupplementalCandidates(query));
|
|
831
|
+
const extras = candidates.filter(c => c.kind !== 'graph');
|
|
832
|
+
if (extras.length > 0) {
|
|
833
|
+
console.error(`[sourceRouter] Extra candidates appended: ${extras.map(c => c.kind === 'earnings' ? `earnings(${c.ticker || c.brand || c.sector || 'search'})` : `supplemental(${c.category})`).join(', ')}`);
|
|
834
|
+
}
|
|
835
|
+
return candidates;
|
|
836
|
+
}
|
|
708
837
|
//# sourceMappingURL=catalogCache.js.map
|