fodda-mcp 1.46.31 → 1.46.97

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 (289) hide show
  1. package/README.md +14 -94
  2. package/dist/agents/fodda-researcher/skills.d.ts +1 -1
  3. package/dist/agents/fodda-researcher/skills.d.ts.map +1 -1
  4. package/dist/agents/fodda-researcher/skills.js +1 -1
  5. package/dist/brandTemplate.d.ts +1 -1
  6. package/dist/brandTemplate.d.ts.map +1 -1
  7. package/dist/brandTemplate.js +162 -74
  8. package/dist/brandTemplate.js.map +1 -1
  9. package/dist/catalogCache.d.ts +29 -1
  10. package/dist/catalogCache.d.ts.map +1 -1
  11. package/dist/catalogCache.js +267 -16
  12. package/dist/catalogCache.js.map +1 -1
  13. package/dist/coverageRelevance.d.ts +97 -2
  14. package/dist/coverageRelevance.d.ts.map +1 -1
  15. package/dist/coverageRelevance.js +959 -164
  16. package/dist/coverageRelevance.js.map +1 -1
  17. package/dist/editorialFill.d.ts +5 -0
  18. package/dist/editorialFill.d.ts.map +1 -1
  19. package/dist/editorialFill.js +1 -1
  20. package/dist/editorialFill.js.map +1 -1
  21. package/dist/enrichment.d.ts +26 -0
  22. package/dist/enrichment.d.ts.map +1 -1
  23. package/dist/enrichment.js +394 -31
  24. package/dist/enrichment.js.map +1 -1
  25. package/dist/errorHandling.d.ts +35 -7
  26. package/dist/errorHandling.d.ts.map +1 -1
  27. package/dist/errorHandling.js +225 -155
  28. package/dist/errorHandling.js.map +1 -1
  29. package/dist/index.d.ts +25 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +351 -143
  32. package/dist/index.js.map +1 -1
  33. package/dist/jobs/jlens_quarterly_sweep.d.ts +62 -0
  34. package/dist/jobs/jlens_quarterly_sweep.d.ts.map +1 -0
  35. package/dist/jobs/jlens_quarterly_sweep.js +160 -0
  36. package/dist/jobs/jlens_quarterly_sweep.js.map +1 -0
  37. package/dist/pricingCache.d.ts.map +1 -1
  38. package/dist/pricingCache.js +41 -1
  39. package/dist/pricingCache.js.map +1 -1
  40. package/dist/queryCache.d.ts.map +1 -1
  41. package/dist/queryCache.js +2 -0
  42. package/dist/queryCache.js.map +1 -1
  43. package/dist/reportBriefing.d.ts +89 -0
  44. package/dist/reportBriefing.d.ts.map +1 -0
  45. package/dist/reportBriefing.js +662 -0
  46. package/dist/reportBriefing.js.map +1 -0
  47. package/dist/searchTemplate.d.ts.map +1 -1
  48. package/dist/searchTemplate.js +65 -53
  49. package/dist/searchTemplate.js.map +1 -1
  50. package/dist/services/graphRouter.d.ts +7 -0
  51. package/dist/services/graphRouter.d.ts.map +1 -0
  52. package/dist/services/graphRouter.js +7 -0
  53. package/dist/services/graphRouter.js.map +1 -0
  54. package/dist/services/notifications.d.ts +49 -0
  55. package/dist/services/notifications.d.ts.map +1 -0
  56. package/dist/services/notifications.js +206 -0
  57. package/dist/services/notifications.js.map +1 -0
  58. package/dist/sessionTracker.d.ts +19 -2
  59. package/dist/sessionTracker.d.ts.map +1 -1
  60. package/dist/sessionTracker.js +69 -16
  61. package/dist/sessionTracker.js.map +1 -1
  62. package/dist/skillClient.d.ts.map +1 -1
  63. package/dist/skillClient.js +11 -6
  64. package/dist/skillClient.js.map +1 -1
  65. package/dist/svgVisuals.d.ts +17 -19
  66. package/dist/svgVisuals.d.ts.map +1 -1
  67. package/dist/svgVisuals.js +189 -233
  68. package/dist/svgVisuals.js.map +1 -1
  69. package/dist/systemPrompt.d.ts +7 -2
  70. package/dist/systemPrompt.d.ts.map +1 -1
  71. package/dist/systemPrompt.js +110 -68
  72. package/dist/systemPrompt.js.map +1 -1
  73. package/dist/telemetry.d.ts.map +1 -1
  74. package/dist/telemetry.js +15 -0
  75. package/dist/telemetry.js.map +1 -1
  76. package/dist/test_adjacent_trends_polymorphic.d.ts +2 -0
  77. package/dist/test_adjacent_trends_polymorphic.d.ts.map +1 -0
  78. package/dist/test_adjacent_trends_polymorphic.js +154 -0
  79. package/dist/test_adjacent_trends_polymorphic.js.map +1 -0
  80. package/dist/test_book_a_call_live.js +18 -5
  81. package/dist/test_book_a_call_live.js.map +1 -1
  82. package/dist/test_byo_mcp_submission_clarity.d.ts +2 -0
  83. package/dist/test_byo_mcp_submission_clarity.d.ts.map +1 -0
  84. package/dist/test_byo_mcp_submission_clarity.js +142 -0
  85. package/dist/test_byo_mcp_submission_clarity.js.map +1 -0
  86. package/dist/test_capabilities_guidance.d.ts +2 -0
  87. package/dist/test_capabilities_guidance.d.ts.map +1 -0
  88. package/dist/test_capabilities_guidance.js +372 -0
  89. package/dist/test_capabilities_guidance.js.map +1 -0
  90. package/dist/test_client_provenance.d.ts +2 -0
  91. package/dist/test_client_provenance.d.ts.map +1 -0
  92. package/dist/test_client_provenance.js +77 -0
  93. package/dist/test_client_provenance.js.map +1 -0
  94. package/dist/test_connection_surface_cleanup.d.ts +2 -0
  95. package/dist/test_connection_surface_cleanup.d.ts.map +1 -0
  96. package/dist/test_connection_surface_cleanup.js +203 -0
  97. package/dist/test_connection_surface_cleanup.js.map +1 -0
  98. package/dist/test_consult_routing.d.ts +2 -0
  99. package/dist/test_consult_routing.d.ts.map +1 -0
  100. package/dist/test_consult_routing.js +86 -0
  101. package/dist/test_consult_routing.js.map +1 -0
  102. package/dist/test_consult_split.d.ts +2 -0
  103. package/dist/test_consult_split.d.ts.map +1 -0
  104. package/dist/test_consult_split.js +30 -0
  105. package/dist/test_consult_split.js.map +1 -0
  106. package/dist/test_coverage_relevance.js +111 -70
  107. package/dist/test_coverage_relevance.js.map +1 -1
  108. package/dist/test_coverage_replay.d.ts +2 -0
  109. package/dist/test_coverage_replay.d.ts.map +1 -0
  110. package/dist/test_coverage_replay.js +170 -0
  111. package/dist/test_coverage_replay.js.map +1 -0
  112. package/dist/test_dcr_and_legacy_deprecation.js +45 -50
  113. package/dist/test_dcr_and_legacy_deprecation.js.map +1 -1
  114. package/dist/test_demand_signal_logging.d.ts +2 -0
  115. package/dist/test_demand_signal_logging.d.ts.map +1 -0
  116. package/dist/test_demand_signal_logging.js +92 -0
  117. package/dist/test_demand_signal_logging.js.map +1 -0
  118. package/dist/test_earnings_activity_scope.d.ts +5 -0
  119. package/dist/test_earnings_activity_scope.d.ts.map +1 -0
  120. package/dist/test_earnings_activity_scope.js +101 -0
  121. package/dist/test_earnings_activity_scope.js.map +1 -0
  122. package/dist/test_earnings_divergence_live.d.ts +5 -0
  123. package/dist/test_earnings_divergence_live.d.ts.map +1 -0
  124. package/dist/test_earnings_divergence_live.js +135 -0
  125. package/dist/test_earnings_divergence_live.js.map +1 -0
  126. package/dist/test_earnings_hygiene_and_binding.d.ts +5 -0
  127. package/dist/test_earnings_hygiene_and_binding.d.ts.map +1 -0
  128. package/dist/test_earnings_hygiene_and_binding.js +104 -0
  129. package/dist/test_earnings_hygiene_and_binding.js.map +1 -0
  130. package/dist/test_exec_quotes_render.d.ts +2 -0
  131. package/dist/test_exec_quotes_render.d.ts.map +1 -0
  132. package/dist/test_exec_quotes_render.js +86 -0
  133. package/dist/test_exec_quotes_render.js.map +1 -0
  134. package/dist/test_expert_intro.d.ts +2 -0
  135. package/dist/test_expert_intro.d.ts.map +1 -0
  136. package/dist/test_expert_intro.js +57 -0
  137. package/dist/test_expert_intro.js.map +1 -0
  138. package/dist/test_expert_layer.d.ts +11 -0
  139. package/dist/test_expert_layer.d.ts.map +1 -0
  140. package/dist/test_expert_layer.js +356 -0
  141. package/dist/test_expert_layer.js.map +1 -0
  142. package/dist/test_gap_alert.js +8 -0
  143. package/dist/test_gap_alert.js.map +1 -1
  144. package/dist/test_grok_offering_surfaces.d.ts +2 -0
  145. package/dist/test_grok_offering_surfaces.d.ts.map +1 -0
  146. package/dist/test_grok_offering_surfaces.js +155 -0
  147. package/dist/test_grok_offering_surfaces.js.map +1 -0
  148. package/dist/test_human_agent_live.d.ts +2 -0
  149. package/dist/test_human_agent_live.d.ts.map +1 -0
  150. package/dist/test_human_agent_live.js +48 -0
  151. package/dist/test_human_agent_live.js.map +1 -0
  152. package/dist/test_identity_gap.d.ts +2 -0
  153. package/dist/test_identity_gap.d.ts.map +1 -0
  154. package/dist/test_identity_gap.js +171 -0
  155. package/dist/test_identity_gap.js.map +1 -0
  156. package/dist/test_intelligence_and_verifier.d.ts +17 -0
  157. package/dist/test_intelligence_and_verifier.d.ts.map +1 -0
  158. package/dist/test_intelligence_and_verifier.js +162 -0
  159. package/dist/test_intelligence_and_verifier.js.map +1 -0
  160. package/dist/test_latency_mcp_brief5.d.ts +12 -0
  161. package/dist/test_latency_mcp_brief5.d.ts.map +1 -0
  162. package/dist/test_latency_mcp_brief5.js +200 -0
  163. package/dist/test_latency_mcp_brief5.js.map +1 -0
  164. package/dist/test_limit_and_credit_card_capture.d.ts +21 -0
  165. package/dist/test_limit_and_credit_card_capture.d.ts.map +1 -0
  166. package/dist/test_limit_and_credit_card_capture.js +216 -0
  167. package/dist/test_limit_and_credit_card_capture.js.map +1 -0
  168. package/dist/test_list_graphs_topics.js +1 -1
  169. package/dist/test_list_graphs_topics.js.map +1 -1
  170. package/dist/test_live_deployed_mcp_search.d.ts +2 -0
  171. package/dist/test_live_deployed_mcp_search.d.ts.map +1 -0
  172. package/dist/test_live_deployed_mcp_search.js +85 -0
  173. package/dist/test_live_deployed_mcp_search.js.map +1 -0
  174. package/dist/test_live_deployed_split.d.ts +2 -0
  175. package/dist/test_live_deployed_split.d.ts.map +1 -0
  176. package/dist/test_live_deployed_split.js +72 -0
  177. package/dist/test_live_deployed_split.js.map +1 -0
  178. package/dist/test_live_endpoint_runner.js +2 -2
  179. package/dist/test_live_endpoint_runner.js.map +1 -1
  180. package/dist/test_live_mcp.js +1 -1
  181. package/dist/test_live_mcp.js.map +1 -1
  182. package/dist/test_live_neil_widget.d.ts +2 -0
  183. package/dist/test_live_neil_widget.d.ts.map +1 -0
  184. package/dist/test_live_neil_widget.js +84 -0
  185. package/dist/test_live_neil_widget.js.map +1 -0
  186. package/dist/test_longpoll_status.d.ts +2 -0
  187. package/dist/test_longpoll_status.d.ts.map +1 -0
  188. package/dist/test_longpoll_status.js +117 -0
  189. package/dist/test_longpoll_status.js.map +1 -0
  190. package/dist/test_mcp_find_expert_and_vocabulary_routing.d.ts +2 -0
  191. package/dist/test_mcp_find_expert_and_vocabulary_routing.d.ts.map +1 -0
  192. package/dist/test_mcp_find_expert_and_vocabulary_routing.js +130 -0
  193. package/dist/test_mcp_find_expert_and_vocabulary_routing.js.map +1 -0
  194. package/dist/test_next_moves.js +644 -279
  195. package/dist/test_next_moves.js.map +1 -1
  196. package/dist/test_next_moves_transcripts.js +122 -40
  197. package/dist/test_next_moves_transcripts.js.map +1 -1
  198. package/dist/test_on_request_caller_identity.d.ts +13 -0
  199. package/dist/test_on_request_caller_identity.d.ts.map +1 -0
  200. package/dist/test_on_request_caller_identity.js +131 -0
  201. package/dist/test_on_request_caller_identity.js.map +1 -0
  202. package/dist/test_on_request_intercept.d.ts +10 -0
  203. package/dist/test_on_request_intercept.d.ts.map +1 -0
  204. package/dist/test_on_request_intercept.js +95 -0
  205. package/dist/test_on_request_intercept.js.map +1 -0
  206. package/dist/test_onboarding_consent_and_errors.d.ts +2 -0
  207. package/dist/test_onboarding_consent_and_errors.d.ts.map +1 -0
  208. package/dist/test_onboarding_consent_and_errors.js +110 -0
  209. package/dist/test_onboarding_consent_and_errors.js.map +1 -0
  210. package/dist/test_onboarding_live_scenarios.d.ts +2 -0
  211. package/dist/test_onboarding_live_scenarios.d.ts.map +1 -0
  212. package/dist/test_onboarding_live_scenarios.js +189 -0
  213. package/dist/test_onboarding_live_scenarios.js.map +1 -0
  214. package/dist/test_referral_live.d.ts +2 -0
  215. package/dist/test_referral_live.d.ts.map +1 -0
  216. package/dist/test_referral_live.js +33 -0
  217. package/dist/test_referral_live.js.map +1 -0
  218. package/dist/test_referral_piers.d.ts +2 -0
  219. package/dist/test_referral_piers.d.ts.map +1 -0
  220. package/dist/test_referral_piers.js +33 -0
  221. package/dist/test_referral_piers.js.map +1 -0
  222. package/dist/test_report_editorial_briefing.d.ts +21 -0
  223. package/dist/test_report_editorial_briefing.d.ts.map +1 -0
  224. package/dist/test_report_editorial_briefing.js +356 -0
  225. package/dist/test_report_editorial_briefing.js.map +1 -0
  226. package/dist/test_search_graph_quality.d.ts +2 -0
  227. package/dist/test_search_graph_quality.d.ts.map +1 -0
  228. package/dist/test_search_graph_quality.js +493 -0
  229. package/dist/test_search_graph_quality.js.map +1 -0
  230. package/dist/test_service_to_service_auth.d.ts +2 -0
  231. package/dist/test_service_to_service_auth.d.ts.map +1 -0
  232. package/dist/test_service_to_service_auth.js +199 -0
  233. package/dist/test_service_to_service_auth.js.map +1 -0
  234. package/dist/test_sources_live.d.ts +2 -0
  235. package/dist/test_sources_live.d.ts.map +1 -0
  236. package/dist/test_sources_live.js +30 -0
  237. package/dist/test_sources_live.js.map +1 -0
  238. package/dist/test_specialist_and_analyst_tiers.d.ts +2 -0
  239. package/dist/test_specialist_and_analyst_tiers.d.ts.map +1 -0
  240. package/dist/test_specialist_and_analyst_tiers.js +155 -0
  241. package/dist/test_specialist_and_analyst_tiers.js.map +1 -0
  242. package/dist/test_v2_2_visual_hardening.d.ts +5 -0
  243. package/dist/test_v2_2_visual_hardening.d.ts.map +1 -0
  244. package/dist/test_v2_2_visual_hardening.js +333 -0
  245. package/dist/test_v2_2_visual_hardening.js.map +1 -0
  246. package/dist/test_verify_deprecate_render_spec.d.ts +2 -0
  247. package/dist/test_verify_deprecate_render_spec.d.ts.map +1 -0
  248. package/dist/test_verify_deprecate_render_spec.js +217 -0
  249. package/dist/test_verify_deprecate_render_spec.js.map +1 -0
  250. package/dist/test_verify_neil_demo.d.ts +2 -0
  251. package/dist/test_verify_neil_demo.d.ts.map +1 -0
  252. package/dist/test_verify_neil_demo.js +149 -0
  253. package/dist/test_verify_neil_demo.js.map +1 -0
  254. package/dist/test_waitable_research_and_grounded_links.d.ts +2 -0
  255. package/dist/test_waitable_research_and_grounded_links.d.ts.map +1 -0
  256. package/dist/test_waitable_research_and_grounded_links.js +129 -0
  257. package/dist/test_waitable_research_and_grounded_links.js.map +1 -0
  258. package/dist/test_widget_guards.d.ts +2 -0
  259. package/dist/test_widget_guards.d.ts.map +1 -0
  260. package/dist/test_widget_guards.js +229 -0
  261. package/dist/test_widget_guards.js.map +1 -0
  262. package/dist/test_zero_retention_alerts.d.ts +14 -0
  263. package/dist/test_zero_retention_alerts.d.ts.map +1 -0
  264. package/dist/test_zero_retention_alerts.js +76 -0
  265. package/dist/test_zero_retention_alerts.js.map +1 -0
  266. package/dist/toolHandlers.d.ts +38 -1
  267. package/dist/toolHandlers.d.ts.map +1 -1
  268. package/dist/toolHandlers.js +3856 -938
  269. package/dist/toolHandlers.js.map +1 -1
  270. package/dist/tools.d.ts +20 -0
  271. package/dist/tools.d.ts.map +1 -1
  272. package/dist/tools.js +25 -4
  273. package/dist/tools.js.map +1 -1
  274. package/dist/verify_discoverability.d.ts +2 -0
  275. package/dist/verify_discoverability.d.ts.map +1 -0
  276. package/dist/verify_discoverability.js +53 -0
  277. package/dist/verify_discoverability.js.map +1 -0
  278. package/dist/verify_tools_endpoint.js +16 -3
  279. package/dist/verify_tools_endpoint.js.map +1 -1
  280. package/dist/widgetShell.d.ts +2 -2
  281. package/dist/widgetShell.d.ts.map +1 -1
  282. package/dist/widgetShell.js +1 -1
  283. package/dist/widgetShell.js.map +1 -1
  284. package/package.json +1 -1
  285. package/server.json +4 -32
  286. package/dist/oauthRegisterShim.d.ts +0 -13
  287. package/dist/oauthRegisterShim.d.ts.map +0 -1
  288. package/dist/oauthRegisterShim.js +0 -83
  289. package/dist/oauthRegisterShim.js.map +0 -1
@@ -0,0 +1,72 @@
1
+ import dotenv from 'dotenv';
2
+ dotenv.config();
3
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
4
+ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
5
+ const DEPLOYED_MCP_URL = process.env.TEST_URL || 'https://mcp.fodda.ai/mcp';
6
+ const FODDA_API_KEY = process.env.FODDA_API_KEY || 'sk_live_abcdef';
7
+ async function testLiveDeployedSplit() {
8
+ console.log(`=== Live Deployed Integration Test: MCP Split Human Agent Consult (${DEPLOYED_MCP_URL}) ===\n`);
9
+ console.log(`1. Connecting to live MCP server at ${DEPLOYED_MCP_URL}...`);
10
+ const transport = new StreamableHTTPClientTransport(new URL(`${DEPLOYED_MCP_URL}?api_key=${FODDA_API_KEY}&session_kind=internal-test`));
11
+ const client = new Client({ name: 'live-split-verifier', version: '1.0.0' });
12
+ await client.connect(transport);
13
+ console.log(' Connected successfully to live MCP server.\n');
14
+ // Test 1: list_analysts catalog structure
15
+ console.log('2. Testing list_analysts catalog tool output...');
16
+ const listRes = await client.callTool({
17
+ name: 'list_analysts',
18
+ arguments: {}
19
+ });
20
+ const listText = listRes.content[0]?.text;
21
+ console.log(' list_analysts returned payload text.');
22
+ const parsedList = JSON.parse(listText);
23
+ const analysts = parsedList.analysts || [];
24
+ console.log(` Found ${analysts.length} analysts in catalog.`);
25
+ if (analysts.length > 0) {
26
+ const sample = analysts[0];
27
+ console.log(` Sample analyst entry: id=${sample.analyst_id || sample.id}, name=${sample.name}, type=${sample.type}, consult_tool=${sample.consult_tool}, price=${sample.price || 'N/A'}`);
28
+ }
29
+ // Test 2: consult_analyst referral when passed a twin ID
30
+ console.log('\n3. Testing consult_analyst with a Digital Twin ID (anu-lingala-macro)...');
31
+ const referralRes = await client.callTool({
32
+ name: 'consult_analyst',
33
+ arguments: {
34
+ analyst_id: 'anu-lingala-macro',
35
+ query: 'What are the macro economic outlook signals?'
36
+ }
37
+ });
38
+ const referralText = referralRes.content[0]?.text || '';
39
+ console.log(' consult_analyst response text:');
40
+ console.log(` "${referralText.slice(0, 200)}..."`);
41
+ const isReferral = referralText.includes('Human Agent') || referralText.includes('consult_human_agent') || referralText.includes('referral');
42
+ if (isReferral) {
43
+ console.log(' ✅ PASS: consult_analyst returned referral for Digital Twin ID');
44
+ }
45
+ else {
46
+ console.log(' ⚠️ NOTE: Response from upstream API received (awaiting API deployment if API route not yet updated)');
47
+ }
48
+ // Test 3: consult_human_agent tool invocation
49
+ console.log('\n4. Testing consult_human_agent tool invocation (anu-lingala-macro)...');
50
+ try {
51
+ const humanRes = await client.callTool({
52
+ name: 'consult_human_agent',
53
+ arguments: {
54
+ analyst_id: 'anu-lingala-macro',
55
+ query: 'What is your current macro outlook?'
56
+ }
57
+ });
58
+ const humanText = humanRes.content[0]?.text || '';
59
+ console.log(' consult_human_agent response received:');
60
+ console.log(` "${humanText.slice(0, 200)}..."`);
61
+ console.log(' ✅ PASS: consult_human_agent executed via live deployed MCP');
62
+ }
63
+ catch (err) {
64
+ console.log(` ⚠️ consult_human_agent call status: ${err.message || err}`);
65
+ }
66
+ await client.close();
67
+ console.log('\n=== Live Deployed Integration Verification Finished ===');
68
+ }
69
+ testLiveDeployedSplit().catch(err => {
70
+ console.error('❌ Live split test failed:', err.message || err);
71
+ });
72
+ //# sourceMappingURL=test_live_deployed_split.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_live_deployed_split.js","sourceRoot":"","sources":["../src/test_live_deployed_split.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ async function testLiveEndpoint() {
24
24
  }
25
25
  console.log(` ✅ GET /.well-known/${slug} -> ${discResp.data.name} (title: "${discResp.data.title}")`);
26
26
  // 2. MCP Client connection
27
- const transport = new StreamableHTTPClientTransport(new URL(`${BASE_URL}/${slug}?api_key=sk_live_test_verifier`));
27
+ const transport = new StreamableHTTPClientTransport(new URL(`${BASE_URL}/${slug}?api_key=sk_live_test_verifier&session_kind=internal-test`));
28
28
  const client = new Client({ name: 'verifier-client', version: '1.0.0' });
29
29
  await client.connect(transport);
30
30
  // 3. List tools
@@ -45,7 +45,7 @@ async function testLiveEndpoint() {
45
45
  }
46
46
  // Compare with main gateway
47
47
  console.log('--- Testing Main Gateway /mcp ---');
48
- const mainTransport = new StreamableHTTPClientTransport(new URL(`${BASE_URL}/mcp?api_key=sk_live_test_verifier`));
48
+ const mainTransport = new StreamableHTTPClientTransport(new URL(`${BASE_URL}/mcp?api_key=sk_live_test_verifier&session_kind=internal-test`));
49
49
  const mainClient = new Client({ name: 'verifier-client', version: '1.0.0' });
50
50
  await mainClient.connect(mainTransport);
51
51
  const mainToolsResult = await mainClient.listTools();
@@ -1 +1 @@
1
- {"version":3,"file":"test_live_endpoint_runner.js","sourceRoot":"","sources":["../src/test_live_endpoint_runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test_live_endpoint_runner.js","sourceRoot":"","sources":["../src/test_live_endpoint_runner.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
3
3
  async function main() {
4
4
  console.log("Connecting to live Fodda MCP server over SSE...");
5
5
  // Create an SSE transport pointed at the live Cloud Run endpoint
6
- const transport = new SSEClientTransport(new URL("https://fodda-mcp-p3uz7zw7ja-uc.a.run.app/sse"));
6
+ const transport = new SSEClientTransport(new URL("https://fodda-mcp-p3uz7zw7ja-uc.a.run.app/sse?session_kind=internal-test"));
7
7
  // Initialize the client
8
8
  const client = new Client({
9
9
  name: "test-client",
@@ -1 +1 @@
1
- {"version":3,"file":"test_live_mcp.js","sourceRoot":"","sources":["../src/test_live_mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,KAAK,UAAU,IAAI;IACf,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAE/D,iEAAiE;IACjE,MAAM,SAAS,GAAG,IAAI,kBAAkB,CACpC,IAAI,GAAG,CAAC,+CAA+C,CAAC,CAC3D,CAAC;IAEF,wBAAwB;IACxB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACtB,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACnB,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IAEzB,IAAI,CAAC;QACD,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAEhE,qBAAqB;QACrB,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;QAC9D,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAE9D,8DAA8D;QAC9D,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;QAEhG,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,cAAc;gBACpB,SAAS,EAAE;oBACP,OAAO,EAAE,QAAQ;oBACjB,KAAK,EAAE,YAAY;oBACnB,MAAM,EAAE,gBAAgB;oBACxB,KAAK,EAAE;wBACH,aAAa,EAAE,uBAAuB;qBACzC;iBACJ;aACJ,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;YAAS,CAAC;QACP,uBAAuB;QACvB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"test_live_mcp.js","sourceRoot":"","sources":["../src/test_live_mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,KAAK,UAAU,IAAI;IACf,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAE/D,iEAAiE;IACjE,MAAM,SAAS,GAAG,IAAI,kBAAkB,CACpC,IAAI,GAAG,CAAC,0EAA0E,CAAC,CACtF,CAAC;IAEF,wBAAwB;IACxB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACtB,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACnB,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IAEzB,IAAI,CAAC;QACD,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAEhE,qBAAqB;QACrB,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;QAC9D,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAE9D,8DAA8D;QAC9D,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;QAEhG,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,cAAc;gBACpB,SAAS,EAAE;oBACP,OAAO,EAAE,QAAQ;oBACjB,KAAK,EAAE,YAAY;oBACnB,MAAM,EAAE,gBAAgB;oBACxB,KAAK,EAAE;wBACH,aAAa,EAAE,uBAAuB;qBACzC;iBACJ;aACJ,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;YAAS,CAAC;QACP,uBAAuB;QACvB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test_live_neil_widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_live_neil_widget.d.ts","sourceRoot":"","sources":["../src/test_live_neil_widget.ts"],"names":[],"mappings":""}
@@ -0,0 +1,84 @@
1
+ import dotenv from 'dotenv';
2
+ dotenv.config();
3
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
4
+ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
5
+ import axios from 'axios';
6
+ const DEPLOYED_MCP_URL = process.env.TEST_URL || 'https://mcp.fodda.ai/mcp';
7
+ const FODDA_API_KEY = process.env.FODDA_INTERNAL_API_KEY || process.env.FODDA_API_KEY || 'sk_live_abcdef';
8
+ function extractJson(text) {
9
+ try {
10
+ return JSON.parse(text);
11
+ }
12
+ catch {
13
+ const rawMatch = text.match(/── RAW DATA[^\n]*\n([\s\S]*?)(?=\n──|$)/);
14
+ if (rawMatch && rawMatch[1]) {
15
+ try {
16
+ return JSON.parse(rawMatch[1]);
17
+ }
18
+ catch { }
19
+ }
20
+ const jsonMatch = text.match(/\{[\s\S]*\}/);
21
+ if (jsonMatch) {
22
+ try {
23
+ return JSON.parse(jsonMatch[0]);
24
+ }
25
+ catch { }
26
+ }
27
+ return null;
28
+ }
29
+ }
30
+ async function verifyNeilLive() {
31
+ console.log(`=== Live Verification of Neil Query against ${DEPLOYED_MCP_URL} ===\n`);
32
+ const health = await axios.get('https://mcp.fodda.ai/health');
33
+ console.log(`Live Server: version=${health.data.version}, status=${health.data.status}\n`);
34
+ const transport = new StreamableHTTPClientTransport(new URL(DEPLOYED_MCP_URL), {
35
+ requestInit: {
36
+ headers: {
37
+ 'Authorization': `Bearer ${FODDA_API_KEY}`,
38
+ 'X-API-Key': FODDA_API_KEY,
39
+ 'X-Fodda-Session-Kind': 'internal-test'
40
+ }
41
+ }
42
+ });
43
+ const client = new Client({ name: 'neil-live-verifier', version: '1.0.0' });
44
+ await client.connect(transport);
45
+ const neilQuery = 'what are the trends in the collectible space, particularly trading cards, like baseball trading cards';
46
+ console.log(`Query: "${neilQuery}"\n`);
47
+ const res = await client.callTool({
48
+ name: 'search_graph',
49
+ arguments: { query: neilQuery, limit: 10 }
50
+ });
51
+ const parsed = extractJson(res.content[0].text);
52
+ console.log('--- Top Rows Returned ---');
53
+ const rows = parsed?.rows || [];
54
+ rows.slice(0, 5).forEach((r, i) => {
55
+ console.log(`Rank #${i + 1}: "${r.title || r.trendName || r.name}" | signal: ${r.signal_score} | relevance: ${r.relevance_score}`);
56
+ });
57
+ const fullText = res.content.map((c) => c.text).join('\n');
58
+ const widgetContentBlock = res.content.find((c) => c.text?.startsWith('── WIDGET HTML ──') || (c.text?.includes('<div class="w">') && !c.text?.startsWith('{')));
59
+ const widgetHtml = widgetContentBlock?.text || '';
60
+ console.log('\n--- Widget Analysis ---');
61
+ const hasGasolineZero = widgetHtml.includes('Gasoline Stations') || widgetHtml.includes('$0.0B');
62
+ console.log(`Contains zero-value Gasoline Stations ($0.0B): ${hasGasolineZero ? '❌ FAIL' : '✅ CLEAN OMIT'}`);
63
+ const hasPlayStationChips = widgetHtml.includes('PlayStation') || widgetHtml.includes('Hermès') || widgetHtml.includes('Louis Vuitton');
64
+ console.log(`Contains mega-trend brand chips (PlayStation/Hermès): ${hasPlayStationChips ? '❌ FAIL' : '✅ CLEAN OMIT'}`);
65
+ const hasMarketSection = widgetHtml.includes('<div class="sec">Market</div>');
66
+ console.log(`Rendered Market section: ${hasMarketSection ? 'YES' : 'CLEAN-OMITTED'}`);
67
+ const top3ContainsNiche = rows.slice(0, 3).some((r) => (r.title || r.trendName || '').toLowerCase().includes('collector') ||
68
+ (r.title || r.trendName || '').toLowerCase().includes('booster') ||
69
+ (r.title || r.trendName || '').toLowerCase().includes('card'));
70
+ console.log(`Top 3 contains Booster/Variation/Collector trend: ${top3ContainsNiche ? '✅ PASS' : '❌ FAIL'}`);
71
+ const widgetInstructionMatch = fullText.match(/── SEARCH WIDGET:[\s\S]*?(?=\n──|$)/);
72
+ if (widgetInstructionMatch) {
73
+ console.log('\nWidget Instruction / Context:');
74
+ console.log(widgetInstructionMatch[0]);
75
+ }
76
+ const closingBlockMatch = fullText.match(/── NEXT MOVES CLOSING BLOCK[\s\S]*?(?=\n──|$)/);
77
+ if (closingBlockMatch) {
78
+ console.log('\nNext Moves Closing Block:');
79
+ console.log(closingBlockMatch[0]);
80
+ }
81
+ await client.close();
82
+ }
83
+ verifyNeilLive().catch(console.error);
84
+ //# sourceMappingURL=test_live_neil_widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_live_neil_widget.js","sourceRoot":"","sources":["../src/test_live_neil_widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test_longpoll_status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_longpoll_status.d.ts","sourceRoot":"","sources":["../src/test_longpoll_status.ts"],"names":[],"mappings":""}
@@ -0,0 +1,117 @@
1
+ import assert from 'assert';
2
+ import { setCachedCatalogForTesting } from './catalogCache.js';
3
+ import { createServer } from './toolHandlers.js';
4
+ async function runLongPollTests() {
5
+ console.log('================================================================');
6
+ console.log(' Running Unit Tests: Long-Poll Slow Calls & Deep Consults as Jobs');
7
+ console.log('================================================================\n');
8
+ setCachedCatalogForTesting({ version: '2.0.0', generated_at: new Date().toISOString(), graph_count: 2, graphs: [] }, [
9
+ { id: 'ben-dietz-sic', name: 'Ben Dietz', graphSubType: 'Digital Twin' },
10
+ { id: 'retail-strategy-innovation', name: 'Retail Strategy & Innovation Lead', graphSubType: 'Synthetic Expert' }
11
+ ]);
12
+ let slowJobCompleted = false;
13
+ const mockFoddaRequest = async (method, path, apiKey, userId, body) => {
14
+ if (path.includes('/v1/analysts/consult')) {
15
+ if (body.deep) {
16
+ // Simulate slow job execution in background
17
+ await new Promise((resolve) => setTimeout(resolve, 2000));
18
+ return {
19
+ result: 'Deep Synthetic Analyst response after rigorous multi-graph synthesis.',
20
+ coverage: 'FULL',
21
+ sources_used: [{ title: 'Retail Tech 2026', url: 'https://example.com/retail-2026' }],
22
+ timing_ms: 2000
23
+ };
24
+ }
25
+ return {
26
+ result: 'Fast inline Synthetic Analyst response.',
27
+ coverage: 'FULL',
28
+ sources_used: []
29
+ };
30
+ }
31
+ if (path.includes('/v1/human-agents/consult')) {
32
+ if (body.deep) {
33
+ await new Promise((resolve) => setTimeout(resolve, 1500));
34
+ return {
35
+ result: 'Deep Human Agent response after deep homework.',
36
+ coverage: 'FULL',
37
+ sources_used: [{ title: 'Substack SIC', url: 'https://sic.substack.com' }]
38
+ };
39
+ }
40
+ return {
41
+ result: 'Fast inline Human Agent response.',
42
+ coverage: 'FULL',
43
+ sources_used: []
44
+ };
45
+ }
46
+ if (path === '/v1/graphs') {
47
+ return { graphs: [], disabled_graphs: [] };
48
+ }
49
+ return {};
50
+ };
51
+ const server = await createServer('dummy_key', 'test_user', mockFoddaRequest, async () => ({}), () => '', () => '');
52
+ const registeredTools = server._registeredTools;
53
+ // Test 1: Normal (non-deep) consult_analyst runs inline and instant
54
+ console.log('Test 1: Normal consult_analyst runs inline and instant (regression check)...');
55
+ const normalRes = await registeredTools['consult_analyst'].handler({
56
+ analyst_id: 'retail-strategy-innovation',
57
+ query: 'What is retail media?'
58
+ });
59
+ assert.strictEqual(normalRes.isError, undefined);
60
+ assert.ok(normalRes.content[0].text.includes('Fast inline Synthetic Analyst response.'));
61
+ assert.ok(!normalRes.content[0].text.includes('Job ID:'), 'Normal consult must not return Job ID');
62
+ console.log('✅ Test 1 Passed: Normal consult runs inline and instant.\n');
63
+ // Test 2: Deep consult_analyst (deep: true) returns Job ID immediately
64
+ console.log('Test 2: Deep consult_analyst (deep: true) returns Job ID immediately...');
65
+ const startDeepTime = Date.now();
66
+ const deepRes = await registeredTools['consult_analyst'].handler({
67
+ analyst_id: 'retail-strategy-innovation',
68
+ query: 'Provide a rigorous breakdown of store traffic trends',
69
+ deep: true
70
+ });
71
+ const deepDuration = Date.now() - startDeepTime;
72
+ assert.ok(deepDuration < 500, `Initial response should be immediate (took ${deepDuration}ms)`);
73
+ assert.ok(deepRes.content[0].text.includes('Job ID:'), 'Deep consult must return Job ID');
74
+ assert.ok(deepRes.content[0].text.includes('check_research_status'), 'Must direct caller to check_research_status');
75
+ const jobIdMatch = deepRes.content[0].text.match(/Job ID:\s*([a-f0-9\-]+)/i);
76
+ assert.ok(jobIdMatch, 'Should find Job ID in response');
77
+ const jobId = jobIdMatch[1];
78
+ console.log(`Deep Job dispatched: ${jobId}`);
79
+ console.log('✅ Test 2 Passed: Deep consult returns Job ID immediately.\n');
80
+ // Test 3: Long-poll check_research_status waits server-side and returns completed result
81
+ console.log('Test 3: check_research_status long-polls and retrieves completed deep consult...');
82
+ const pollStart = Date.now();
83
+ const pollRes = await registeredTools['check_research_status'].handler({ job_id: jobId });
84
+ const pollDuration = Date.now() - pollStart;
85
+ console.log(`Long-poll returned after ${pollDuration}ms`);
86
+ assert.ok(pollDuration >= 1500, `Long-poll should hold until job completion (held ${pollDuration}ms)`);
87
+ assert.ok(pollRes.content[0].text.includes('Deep Synthetic Analyst response after rigorous multi-graph synthesis.'));
88
+ console.log('✅ Test 3 Passed: check_research_status long-polls and delivers final answer.\n');
89
+ // Test 4: Deep consult via natural language "do your homework" on consult_human_agent
90
+ console.log('Test 4: consult_human_agent with "do your homework" triggers async deep job...');
91
+ const haRes = await registeredTools['consult_human_agent'].handler({
92
+ analyst_id: 'ben-dietz-sic',
93
+ query: 'Do your homework and give me a comprehensive breakdown on brand community'
94
+ });
95
+ assert.ok(haRes.content[0].text.includes('Job ID:'), 'Homework intent must trigger deep job');
96
+ const haJobIdMatch = haRes.content[0].text.match(/Job ID:\s*([a-f0-9\-]+)/i);
97
+ assert.ok(haJobIdMatch, 'Should find Job ID in response');
98
+ const haJobId = haJobIdMatch[1];
99
+ console.log(`Polling check_research_status for Human Agent job: ${haJobId}...`);
100
+ const haPollRes = await registeredTools['check_research_status'].handler({ job_id: haJobId });
101
+ assert.ok(haPollRes.content[0].text.includes('Deep Human Agent response after deep homework.'));
102
+ console.log('✅ Test 4 Passed: Homework intent triggers deep job and resolves via check_research_status.\n');
103
+ // Test 5: check_research_status with unknown job returns error
104
+ console.log('Test 5: check_research_status with non-existent job ID returns error...');
105
+ const unknownRes = await registeredTools['check_research_status'].handler({ job_id: 'non-existent-uuid' });
106
+ assert.strictEqual(unknownRes.isError, true);
107
+ assert.ok(unknownRes.content[0].text.includes('not found'));
108
+ console.log('✅ Test 5 Passed: Unknown job ID cleanly returns not found.\n');
109
+ console.log('================================================================');
110
+ console.log(' All P2 Long-Poll & Deep Consult Tests Passed Successfully!');
111
+ console.log('================================================================\n');
112
+ }
113
+ runLongPollTests().catch((err) => {
114
+ console.error('Test Suite Failed:', err);
115
+ process.exit(1);
116
+ });
117
+ //# sourceMappingURL=test_longpoll_status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_longpoll_status.js","sourceRoot":"","sources":["../src/test_longpoll_status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test_mcp_find_expert_and_vocabulary_routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_mcp_find_expert_and_vocabulary_routing.d.ts","sourceRoot":"","sources":["../src/test_mcp_find_expert_and_vocabulary_routing.ts"],"names":[],"mappings":""}
@@ -0,0 +1,130 @@
1
+ import assert from 'assert';
2
+ import { getRelevantGraphs, initCatalogCache, setCachedCatalogForTesting } from './catalogCache.js';
3
+ import { createServer } from './toolHandlers.js';
4
+ console.log('--- Running Unit Tests: find_expert Limit Enforcement & Vocabulary Routing ---');
5
+ async function runTests() {
6
+ // ---------------------------------------------------------------------------
7
+ // Test 1: find_expert Limit Enforcement (API returns > limit items)
8
+ // ---------------------------------------------------------------------------
9
+ console.log('\nTest 1: find_expert limit enforcement when API returns many candidates');
10
+ // Create 24 mock results
11
+ const mock24Results = Array.from({ length: 24 }, (_, i) => ({
12
+ id: `expert-${i + 1}`,
13
+ slug: `expert-${i + 1}`,
14
+ name: `Expert Candidate ${i + 1}`,
15
+ status: 'Unclaimed',
16
+ agent_class: 'human_agent',
17
+ role_title: `Specialist ${i + 1}`,
18
+ why_matched: ['Growth', 'Consumer Apps']
19
+ }));
20
+ const mockServer = await createServer('test_api_key', 'test_user', (async (method, path) => {
21
+ if (path.includes('/v1/experts/search')) {
22
+ return {
23
+ ok: true,
24
+ query: 'growing consumer app',
25
+ total_matches: 24,
26
+ results: mock24Results,
27
+ related_knowledge_graphs: []
28
+ };
29
+ }
30
+ return {};
31
+ }), (async () => ({})), () => 'widget_1', () => 'http://localhost');
32
+ const findExpertTool = mockServer._registeredTools['find_expert'];
33
+ assert.ok(findExpertTool, 'find_expert tool must be registered');
34
+ const result = await findExpertTool.handler({
35
+ query: 'Which experts should I talk to about growing a consumer app from 40,000 to 400,000 users?',
36
+ limit: 3
37
+ });
38
+ const parsed = JSON.parse(result.content[0].text);
39
+ assert.strictEqual(parsed.candidates.length, 3, `Expected exactly 3 candidates matching limit: 3, got ${parsed.candidates.length}`);
40
+ assert.strictEqual(parsed.total_matches, 3, `Expected total_matches to be 3, got ${parsed.total_matches}`);
41
+ console.log('✅ Test 1 Passed: find_expert output sliced to limit (3 candidates out of 24 returned by API)');
42
+ // ---------------------------------------------------------------------------
43
+ // Test 2: Vocabulary Routing Overrides for "creator economy"
44
+ // ---------------------------------------------------------------------------
45
+ console.log('\nTest 2: Vocabulary routing overrides for "creator economy"');
46
+ // Mock catalog for routing test
47
+ setCachedCatalogForTesting({
48
+ version: '1.0',
49
+ generated_at: '2026-09-29',
50
+ graph_count: 5,
51
+ graphs: [
52
+ {
53
+ graph_id: 'visa-creators_report-2025',
54
+ name: 'Visa State of the Creator Economy Report 2025',
55
+ domain: 'creator economy',
56
+ graph_type: 'industry report',
57
+ status: 'live',
58
+ trend_count: 50,
59
+ last_synced: '2026-09-01T00:00:00Z',
60
+ topics: ['creator economy', 'content creators', 'monetization'],
61
+ routing_keywords: ['creator', 'monetization', 'sponsorship']
62
+ },
63
+ {
64
+ graph_id: 'youtube-eoy_cats_trends_report_2025',
65
+ name: 'YouTube End of Year Category Trends 2025',
66
+ domain: 'video & podcasts',
67
+ graph_type: 'industry report',
68
+ status: 'live',
69
+ trend_count: 40,
70
+ last_synced: '2026-09-01T00:00:00Z',
71
+ topics: ['podcasting', 'creators', 'youtube'],
72
+ routing_keywords: ['podcasts', 'youtube', 'creators']
73
+ },
74
+ {
75
+ graph_id: 'mary-shelley',
76
+ name: 'Frankenstein & The Creator Duty of Care',
77
+ curator: 'Mary Shelley',
78
+ domain: 'classic literature',
79
+ graph_type: 'expert',
80
+ status: 'live',
81
+ trend_count: 15,
82
+ last_synced: '2026-09-01T00:00:00Z',
83
+ topics: ['creator duty of care', 'frankenstein', 'ethics'],
84
+ routing_keywords: ['creator', 'ethics']
85
+ },
86
+ {
87
+ graph_id: 'bompasparr-future-of-p-leisure-2026-nightlife',
88
+ name: 'Bompas & Parr Future of Leisure & Nightlife 2026',
89
+ domain: 'hospitality & nightlife',
90
+ graph_type: 'industry report',
91
+ status: 'live',
92
+ trend_count: 35,
93
+ last_synced: '2026-09-01T00:00:00Z',
94
+ topics: ['nightlife', 'going out', 'shared experiences'],
95
+ routing_keywords: ['nightlife', 'going out', 'leisure']
96
+ },
97
+ {
98
+ graph_id: 'retail',
99
+ name: 'Retail Strategy Anchor',
100
+ domain: 'retail',
101
+ graph_type: 'domain',
102
+ status: 'live',
103
+ trend_count: 100,
104
+ last_synced: '2026-09-01T00:00:00Z',
105
+ topics: ['retail', 'commerce'],
106
+ }
107
+ ]
108
+ });
109
+ const creatorRouting = getRelevantGraphs('creator economy and podcasting trends');
110
+ const creatorRoutedIds = creatorRouting.map(r => r.graph.graph_id);
111
+ console.log('Creator query routed graphs:', creatorRoutedIds);
112
+ assert.ok(creatorRoutedIds.includes('visa-creators_report-2025'), 'visa-creators_report-2025 must be routed for creator economy query');
113
+ assert.ok(creatorRoutedIds.includes('youtube-eoy_cats_trends_report_2025'), 'youtube-eoy_cats_trends_report_2025 must be routed for podcasting query');
114
+ assert.strictEqual(creatorRoutedIds.includes('mary-shelley'), false, 'mary-shelley must be excluded from creator economy query');
115
+ console.log('✅ Test 2 Passed: "creator economy" routes to visa-creators & youtube graphs; mary-shelley excluded');
116
+ // ---------------------------------------------------------------------------
117
+ // Test 3: Vocabulary Routing Overrides for "nightlife" and "going out"
118
+ // ---------------------------------------------------------------------------
119
+ console.log('\nTest 3: Vocabulary routing overrides for "nightlife" and "going out"');
120
+ const nightlifeRouting = getRelevantGraphs('Gen Z going out, nightlife and shared social experiences');
121
+ const nightlifeRoutedIds = nightlifeRouting.map(r => r.graph.graph_id);
122
+ console.log('Nightlife query routed graphs:', nightlifeRoutedIds);
123
+ assert.ok(nightlifeRoutedIds.includes('bompasparr-future-of-p-leisure-2026-nightlife'), 'bompasparr nightlife graph must be routed for nightlife & going out query');
124
+ console.log('✅ Test 3 Passed: "going out" and "nightlife" route to bompasparr nightlife graph');
125
+ }
126
+ runTests().catch(err => {
127
+ console.error('❌ Test failed:', err);
128
+ process.exit(1);
129
+ });
130
+ //# sourceMappingURL=test_mcp_find_expert_and_vocabulary_routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_mcp_find_expert_and_vocabulary_routing.js","sourceRoot":"","sources":["../src/test_mcp_find_expert_and_vocabulary_routing.ts"],"names":[],"mappings":"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"}