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
@@ -59,8 +59,11 @@ export function classifyAccessError(err) {
59
59
  const status = err.response?.status;
60
60
  if (status !== 403 && status !== 402)
61
61
  return null;
62
- const code = (err.response?.data?.error?.code || err.response?.data?.code || '').toString().toUpperCase();
63
- const msg = (err.response?.data?.error?.message || err.response?.data?.error || err.response?.data?.message || err.message || '').toString().toLowerCase();
62
+ const rawCode = typeof err.response?.data?.error === 'string'
63
+ ? err.response.data.error
64
+ : (err.response?.data?.error?.code || err.response?.data?.code || '');
65
+ const code = rawCode.toString().toUpperCase();
66
+ const msg = (err.response?.data?.message || err.response?.data?.error?.message || (typeof err.response?.data?.error === 'string' ? err.response.data.error : '') || err.message || '').toString().toLowerCase();
64
67
  // 402 Payment Required is always a credits/limit issue
65
68
  if (status === 402)
66
69
  return 'credits';
@@ -72,15 +75,181 @@ export function classifyAccessError(err) {
72
75
  if (code === 'CREDITS_EXHAUSTED' ||
73
76
  code === 'INSUFFICIENT_CREDITS' ||
74
77
  code === 'LIMIT_EXCEEDED' ||
78
+ code === 'DAILY_LIMIT_EXCEEDED' ||
75
79
  code === 'PLAN_LIMIT_EXCEEDED' ||
76
80
  code === 'TRIAL_EXHAUSTED' ||
77
81
  msg.includes('credit') ||
78
82
  msg.includes('limit reached') ||
79
83
  msg.includes('limit exceeded') ||
84
+ msg.includes('limit_exceeded') ||
85
+ msg.includes('daily limit') ||
86
+ msg.includes('50-call') ||
80
87
  msg.includes('trial limit'))
81
88
  return 'credits';
82
89
  return 'forbidden'; // FORBIDDEN — plan doesn't cover this source
83
90
  }
91
+ export function buildChatGptQuotaExhausted() {
92
+ return {
93
+ isError: true,
94
+ content: [{
95
+ type: 'text',
96
+ text: JSON.stringify({
97
+ error: 'QUOTA_EXHAUSTED',
98
+ message: 'Monthly limit reached. Manage your Fodda account at https://app.fodda.ai/account.',
99
+ manage_url: 'https://app.fodda.ai/account'
100
+ }, null, 2)
101
+ }]
102
+ };
103
+ }
104
+ export function buildUnifiedLimitError(options) {
105
+ let cause = '';
106
+ let next_action = '';
107
+ let action = '';
108
+ const overageRateStr = options.overageRateUsd != null ? `$${options.overageRateUsd}` : null;
109
+ const rateSuffix = overageRateStr ? ` at ${overageRateStr} per call` : '';
110
+ if (options.code === 'DAILY_LIMIT_EXCEEDED') {
111
+ cause = 'Daily call limit reached on free Base tier.';
112
+ action = options.setupUrl ? 'SETUP_CARD' : 'UPGRADE_REQUIRED';
113
+ if (options.setupUrl) {
114
+ next_action = `Daily call limit reached on free Base tier. Add a card to keep going without daily limits${rateSuffix}: ${options.setupUrl}`;
115
+ }
116
+ else {
117
+ const upUrl = options.upgradeUrl || `${APP_BASE_URL}/billing`;
118
+ next_action = `Daily call limit reached on free Base tier. Manage your billing at ${upUrl} to remove daily limits${rateSuffix}.`;
119
+ }
120
+ }
121
+ else if (options.code === 'PLAN_LIMIT_EXCEEDED') {
122
+ cause = 'Monthly plan API call limit exceeded.';
123
+ action = options.setupUrl ? 'ADD_PAYMENT_METHOD' : 'VISIT_BILLING';
124
+ if (options.setupUrl) {
125
+ next_action = `You're out of monthly calls. Add a card to keep going${rateSuffix}: ${options.setupUrl}`;
126
+ }
127
+ else {
128
+ const upUrl = options.upgradeUrl || `${APP_BASE_URL}?view=billing`;
129
+ next_action = `You're out of monthly calls. Manage your billing at ${upUrl} to continue.`;
130
+ }
131
+ }
132
+ else if (options.code === 'TRIAL_EXHAUSTED') {
133
+ cause = 'Trial query allowance exhausted.';
134
+ action = 'UPGRADE_REQUIRED';
135
+ const upUrl = options.upgradeUrl || APP_BASE_URL;
136
+ next_action = `Your trial queries have ended. Sign up or verify your email for a free Base account at ${upUrl}.`;
137
+ }
138
+ else {
139
+ // CREDITS_EXHAUSTED
140
+ cause = 'Monthly credit limit exhausted.';
141
+ const checkoutUrl = options.topUpUrl || options.agentCheckout?.url || null;
142
+ const calls = options.agentCheckout?.api_calls || options.usage?.top_up_calls || null;
143
+ const price = options.agentCheckout?.price_usd ?? options.agentCheckout?.price ?? options.usage?.top_up_price_usd ?? null;
144
+ if (checkoutUrl) {
145
+ action = 'CHECKOUT_AVAILABLE';
146
+ if (calls && price != null) {
147
+ next_action = `Top up ${calls} calls for $${price}: ${checkoutUrl}`;
148
+ }
149
+ else if (calls) {
150
+ next_action = `Top up ${calls} calls: ${checkoutUrl}`;
151
+ }
152
+ else if (price != null) {
153
+ next_action = `Top up calls for $${price}: ${checkoutUrl}`;
154
+ }
155
+ else {
156
+ next_action = `Top up calls: ${checkoutUrl}`;
157
+ }
158
+ }
159
+ else if (options.setupUrl) {
160
+ action = 'ADD_PAYMENT_METHOD';
161
+ next_action = `You're out of credits this cycle. Add a card to keep going${rateSuffix}: ${options.setupUrl}`;
162
+ }
163
+ else {
164
+ action = 'UPGRADE_REQUIRED';
165
+ const upUrl = options.upgradeUrl || `${APP_BASE_URL}/account`;
166
+ next_action = `You've used all your credits this cycle. Manage your account or upgrade your plan at ${upUrl}.`;
167
+ }
168
+ }
169
+ const payload = {
170
+ code: options.code,
171
+ status: options.code,
172
+ cause,
173
+ next_action,
174
+ action,
175
+ message: next_action,
176
+ };
177
+ if (options.setupUrl) {
178
+ payload.setup_url = options.setupUrl;
179
+ payload.setupUrl = options.setupUrl;
180
+ }
181
+ if (options.topUpUrl) {
182
+ payload.top_up_url = options.topUpUrl;
183
+ }
184
+ if (options.overageRateUsd != null) {
185
+ payload.overage_rate_usd = options.overageRateUsd;
186
+ }
187
+ if (options.upgradeUrl) {
188
+ payload.upgrade_url = options.upgradeUrl;
189
+ payload.upgradeUrl = options.upgradeUrl;
190
+ }
191
+ if (options.renewsAt) {
192
+ payload.renews_at = options.renewsAt;
193
+ }
194
+ if (options.usage) {
195
+ payload.usage = options.usage;
196
+ }
197
+ if (options.payg) {
198
+ payload.payg = options.payg;
199
+ }
200
+ if (options.agentCheckout) {
201
+ payload.agent_checkout = options.agentCheckout;
202
+ }
203
+ return {
204
+ isError: true,
205
+ content: [{
206
+ type: 'text',
207
+ text: JSON.stringify(payload, null, 2)
208
+ }]
209
+ };
210
+ }
211
+ function extractLimitDetails(err, sessionUserId) {
212
+ const data = err.response?.data || {};
213
+ const errorData = (data.error && typeof data.error === 'object') ? data.error : {};
214
+ const rawCode = typeof data.error === 'string'
215
+ ? data.error
216
+ : (errorData.code || data.code || data.error_code || '');
217
+ const code = rawCode.toString().toUpperCase();
218
+ const msg = (data.message || errorData.message || (typeof data.error === 'string' ? data.error : '') || err.message || '').toString().toLowerCase();
219
+ const isDaily = code === 'DAILY_LIMIT_EXCEEDED' || msg.includes('daily limit') || msg.includes('50-call');
220
+ const isTrial = isIndividualTrial(err);
221
+ const isPlan = code === 'PLAN_LIMIT_EXCEEDED' || code === 'LIMIT_EXCEEDED' || msg.includes('monthly api call limit') || msg.includes('monthly credit limit reached') || msg.includes('plan limit');
222
+ let limitCode;
223
+ if (isDaily)
224
+ limitCode = 'DAILY_LIMIT_EXCEEDED';
225
+ else if (isTrial)
226
+ limitCode = 'TRIAL_EXHAUSTED';
227
+ else if (isPlan)
228
+ limitCode = 'PLAN_LIMIT_EXCEEDED';
229
+ else
230
+ limitCode = 'CREDITS_EXHAUSTED';
231
+ const email = sessionUserId && sessionUserId.includes('@') ? sessionUserId : null;
232
+ const setupUrl = data.setupUrl || errorData.setupUrl || data.setup_url || null;
233
+ const agentCheckout = data.agent_checkout || errorData.agent_checkout || null;
234
+ const payg = data.payg || errorData.payg || null;
235
+ const topUpUrl = agentCheckout?.url || data.top_up_url || payg?.checkoutUrl || payg?.url || payg?.link || null;
236
+ const overageRateUsd = data.overage_rate_usd ?? payg?.pricePerCall ?? errorData.overage_rate_usd ?? null;
237
+ const renewsAt = data.renews_at || data.nextRenewalDate || data.usage?.nextRenewalDate || null;
238
+ const upgradeUrl = data.upgradeUrl || data.upgrade_url || errorData.upgradeUrl || (isTrial ? buildPortalUpgradeUrl(email) : (limitCode === 'DAILY_LIMIT_EXCEEDED' ? `${APP_BASE_URL}/billing` : `${APP_BASE_URL}?view=billing`));
239
+ return {
240
+ limitCode,
241
+ email,
242
+ setupUrl,
243
+ agentCheckout,
244
+ payg,
245
+ topUpUrl,
246
+ overageRateUsd,
247
+ renewsAt,
248
+ upgradeUrl,
249
+ usage: data.usage || null,
250
+ isTrial,
251
+ };
252
+ }
84
253
  // ---------------------------------------------------------------------------
85
254
  // Access error response builder
86
255
  // ---------------------------------------------------------------------------
@@ -90,7 +259,7 @@ export function classifyAccessError(err) {
90
259
  * GRAPH_DISABLED → mention it so the user knows they opted out
91
260
  * CREDITS → trial-aware handling (auto-upgrade or prompt for email)
92
261
  */
93
- export async function handleAccessError(err, toolName, userId, apiKey) {
262
+ export async function handleAccessError(err, toolName, userId, apiKey, source) {
94
263
  const accessType = classifyAccessError(err);
95
264
  if (accessType === 'forbidden') {
96
265
  // Silent skip — return empty result, NOT an error, so the LLM moves on
@@ -106,6 +275,9 @@ export async function handleAccessError(err, toolName, userId, apiKey) {
106
275
  return { isError: false, content: [{ type: 'text', text: JSON.stringify({ status: 'LEGACY_TRIAL_RETIRED', message: errorMsg, signupUrl }) }] };
107
276
  }
108
277
  if (accessType === 'credits') {
278
+ if (source === 'chatgpt') {
279
+ return buildChatGptQuotaExhausted();
280
+ }
109
281
  const isUnauthenticated = (!apiKey || apiKey === '') && (!userId || userId === 'anonymous' || userId === 'spt_agent');
110
282
  if (isUnauthenticated) {
111
283
  return {
@@ -116,56 +288,36 @@ export async function handleAccessError(err, toolName, userId, apiKey) {
116
288
  status: 'AUTHENTICATION_REQUIRED',
117
289
  error_code: 'unauthenticated',
118
290
  message: 'No Fodda account credentials or OAuth token detected for this session. Re-authentication required.',
119
- instructions: 'To authenticate with Claude: (1) Re-authenticate or click "Connect" via Clerk OAuth in your connector settings, (2) Or use your personal connection token from https://app.fodda.ai/settings (e.g. https://mcp.fodda.ai/c/<token>), or (3) Add an Authorization header (Bearer sk_live_...).',
291
+ instructions: source === 'chatgpt'
292
+ ? 'Reconnect Fodda from ChatGPT\'s connected-apps settings to sign in again.'
293
+ : 'To authenticate with Claude: (1) Re-authenticate or click "Connect" via Clerk OAuth in your connector settings, (2) Or use your personal connection token from https://app.fodda.ai/settings (e.g. https://mcp.fodda.ai/c/<token>), or (3) Add an Authorization header (Bearer sk_live_...).',
120
294
  reauth_url: 'https://app.fodda.ai/connect',
121
295
  manage_url: 'https://app.fodda.ai/settings'
122
296
  }, null, 2)
123
297
  }]
124
298
  };
125
299
  }
126
- // Payment details are returned as STRUCTURED FIELDS, never baked into the
127
- // human-readable message. This keeps live Stripe URLs / prices out of the
128
- // string that gets fed to the model, and lets the client decide how/whether
129
- // to surface a payment CTA. (Do not echo the API's raw URL-laden message.)
130
- const data = err.response?.data || {};
131
- const errorData = (data.error && typeof data.error === 'object') ? data.error : {};
132
- const usage = data.usage || null;
133
- const payg = data.payg || null;
134
- const agentCheckout = data.agent_checkout || null;
135
- // Best-effort inline top-up link
136
- let topUpUrl = agentCheckout?.url || payg?.checkoutUrl || payg?.url || payg?.link || data.setupUrl || null;
137
- if (!topUpUrl) {
138
- topUpUrl = await fetchAgentCheckoutLink(null, 'mcp');
300
+ const details = extractLimitDetails(err, userId);
301
+ let setupUrl = details.setupUrl;
302
+ const targetUser = details.email || userId;
303
+ if (!setupUrl && details.limitCode !== 'TRIAL_EXHAUSTED' && targetUser) {
304
+ setupUrl = await fetchSetupUrl(targetUser);
139
305
  }
140
- const overageRateUsd = payg?.pricePerCall ?? data.overage_rate_usd ?? null;
141
- const renewsAt = data.renews_at || data.nextRenewalDate || usage?.nextRenewalDate || null;
142
- const upgradeUrl = data.upgradeUrl || errorData.upgradeUrl || 'https://app.fodda.ai';
143
- const response = {
144
- status: 'CREDITS_EXHAUSTED',
145
- error_code: 'credit_limit',
146
- // Clean, URL-free, price-free message. The CTA lives in the fields below.
147
- message: 'Monthly credit limit reached. To continue immediately, the account can top up, enable pay-as-you-go, or upgrade — see the structured fields for the relevant links and rate.',
148
- upgrade_url: upgradeUrl,
149
- action: topUpUrl ? 'CHECKOUT_AVAILABLE' : 'UPGRADE_REQUIRED',
150
- note: 'Payment options are structured fields (top_up_url, overage_rate_usd, upgrade_url, renews_at). Surface them only if appropriate for your interface — do not paste raw payment URLs into user-facing text unless the user explicitly asked to pay.',
151
- };
152
- if (topUpUrl)
153
- response.top_up_url = topUpUrl;
154
- if (overageRateUsd != null)
155
- response.overage_rate_usd = overageRateUsd;
156
- if (renewsAt)
157
- response.renews_at = renewsAt;
158
- if (usage)
159
- response.usage = usage;
160
- if (payg)
161
- response.payg = payg;
162
- return {
163
- isError: true,
164
- content: [{
165
- type: 'text',
166
- text: JSON.stringify(response, null, 2)
167
- }]
168
- };
306
+ let topUpUrl = details.topUpUrl;
307
+ if (!topUpUrl && details.limitCode === 'CREDITS_EXHAUSTED') {
308
+ topUpUrl = await fetchAgentCheckoutLink(details.email, 'mcp');
309
+ }
310
+ return buildUnifiedLimitError({
311
+ code: details.limitCode,
312
+ setupUrl,
313
+ topUpUrl,
314
+ overageRateUsd: details.overageRateUsd,
315
+ upgradeUrl: details.upgradeUrl,
316
+ renewsAt: details.renewsAt,
317
+ usage: details.usage,
318
+ payg: details.payg,
319
+ agentCheckout: details.agentCheckout,
320
+ });
169
321
  }
170
322
  // Not an access error — fall through to generic handling
171
323
  const msg = err.response?.data?.error?.message || err.response?.data?.message || err.message;
@@ -219,19 +371,17 @@ function isIndividualTrial(err) {
219
371
  * 2. Individual trial accounts — apiKey is `sk_live_` but backend returns
220
372
  * planCode 13 / isTrial / TRIAL_EXHAUSTED in the error response.
221
373
  *
222
- * When a trial user hits their limit (25 lifetime queries for individual,
223
- * 50 per-user for legacy):
224
- * - If userId (email) is available → attempt auto-upgrade to Base account
225
- * - If no userId → show upgrade portal link
226
- * - If not a trial key → standard credit exhaustion message
374
+ * When a trial user hits their limit:
375
+ * - If ChatGPT source → clean QUOTA_EXHAUSTED with zero commerce/pricing
376
+ * - Non-ChatGPT → unified limit error payload with verbatim next_action
227
377
  * Falls through to generic error handling for non-credit errors.
228
378
  */
229
- export async function handleTrialCreditExhaustion(err, sessionApiKey, sessionUserId) {
379
+ export async function handleTrialCreditExhaustion(err, sessionApiKey, sessionUserId, sessionSource) {
230
380
  const accessType = classifyAccessError(err);
231
381
  // ── Legacy trial key retirement — surface API message directly ──
232
382
  if (accessType === 'legacy_retired') {
233
383
  const errorMsg = err.response?.data?.error?.message || err.response?.data?.error || err.response?.data?.message
234
- || 'Legacy trial keys are no longer supported. Sign up for a free Base account at app.fodda.ai to get 100 API calls/month.';
384
+ || 'Legacy trial keys are no longer supported. Sign up for a free Base account at app.fodda.ai to get monthly API calls.';
235
385
  const signupUrl = err.response?.data?.signupUrl || err.response?.data?.error?.signupUrl || 'https://app.fodda.ai';
236
386
  return {
237
387
  isError: false,
@@ -249,110 +399,30 @@ export async function handleTrialCreditExhaustion(err, sessionApiKey, sessionUse
249
399
  }
250
400
  if (accessType !== 'credits')
251
401
  return null; // Not a credit error — let caller handle
252
- // sk_trial_ keys are retired — isLegacyTrial always false.
253
- // Individual trial accounts (planCode 13) use sk_live_ keys; detected from the error response.
254
- const isNewTrial = isIndividualTrial(err);
255
- const isTrial = isNewTrial;
256
- // Extract usage metadata from the error response (backend may include it)
257
- const errUsage = err.response?.data?.usage || null;
258
- const usedCount = errUsage?.used ?? errUsage?.queries_used ?? null;
259
- const limitCount = errUsage?.limit ?? errUsage?.query_limit ?? (isNewTrial ? 25 : null);
260
- if (isTrial) {
261
- const portalUrl = buildPortalUpgradeUrl(sessionUserId && sessionUserId !== 'anonymous' ? sessionUserId : null);
262
- const usageNote = (usedCount !== null && limitCount !== null)
263
- ? ` (${usedCount}/${limitCount} queries used)`
264
- : '';
265
- return {
266
- isError: false,
267
- content: [{
268
- type: 'text',
269
- text: JSON.stringify({
270
- status: 'TRIAL_EXHAUSTED',
271
- message: `I'd love to help analyze this macro shift with additional insights in the Fodda graph, but I noticed your account is currently out of research credits. While you can still keep asking me questions, if you want to get deeper insights you can quickly top up your balance at https://fodda.ai/account/billing to continue our consultation.`,
272
- action: 'UPGRADE_REQUIRED',
273
- upgrade_url: 'https://fodda.ai/account/billing',
274
- note: 'Present the upgrade link prominently. The Base plan is FREE and gives 100 queries/month after email verification.',
275
- }, null, 2)
276
- }]
277
- };
402
+ // ── ChatGPT guard: zero commerce/Stripe/prices ──
403
+ if (sessionSource === 'chatgpt') {
404
+ return buildChatGptQuotaExhausted();
278
405
  }
279
- // Non-trial credit exhaustion — handles both legacy CREDITS_EXHAUSTED and new PLAN_LIMIT_EXCEEDED
280
- const errorData = err.response?.data?.error || err.response?.data || {};
281
- const errCode = (errorData.code || err.response?.data?.code || '').toString().toUpperCase();
282
- const apiMsg = errorData.message || "You've used all your API calls for this month.";
283
- const upsell = errorData.upsell || null;
284
- const usage = err.response?.data?.usage || null;
285
- const payg = err.response?.data?.payg || null;
286
- const agentCheckout = err.response?.data?.agent_checkout || null;
287
- // Resolve email: session userId (if it's an email), or null
288
- const email = sessionUserId && sessionUserId.includes('@') ? sessionUserId : null;
289
- // ── PLAN_LIMIT_EXCEEDED — overage billing (no card on file) ──
290
- // The upstream API returns setupUrl directly; if missing, fetch it ourselves
291
- if (errCode === 'PLAN_LIMIT_EXCEEDED') {
292
- let setupUrl = err.response?.data?.setupUrl || errorData.setupUrl || null;
293
- if (!setupUrl && (email || sessionUserId)) {
294
- setupUrl = await fetchSetupUrl(email || sessionUserId);
295
- }
296
- const upgradeUrl = `${APP_BASE_URL}?view=billing`;
297
- const response = {
298
- status: 'PLAN_LIMIT_EXCEEDED',
299
- code: 'PLAN_LIMIT_EXCEEDED',
300
- message: setupUrl
301
- ? `⚔ Monthly API call limit exceeded. Add a payment method to continue at $0.50/API call.\n\nšŸ’³ **[Add payment method →](${setupUrl})**\n\nThis is a one-click Stripe link to add a card. After adding, queries resume immediately with overage billing.\n\nOr manage your billing at ${upgradeUrl}`
302
- : `⚔ Monthly API call limit exceeded. Add a payment method to continue at $0.50/API call.\n\nManage your billing at ${upgradeUrl}`,
303
- action: setupUrl ? 'ADD_PAYMENT_METHOD' : 'VISIT_BILLING',
304
- note: 'Present the setupUrl prominently — it is a one-click card addition link. The upgradeUrl lets them manage billing.',
305
- };
306
- if (setupUrl)
307
- response.setupUrl = setupUrl;
308
- response.upgradeUrl = upgradeUrl;
309
- if (usage)
310
- response.usage = usage;
311
- return {
312
- isError: true,
313
- content: [{
314
- type: 'text',
315
- text: JSON.stringify(response, null, 2)
316
- }]
317
- };
406
+ const details = extractLimitDetails(err, sessionUserId);
407
+ let setupUrl = details.setupUrl;
408
+ const targetUser = details.email || sessionUserId;
409
+ if (!setupUrl && details.limitCode !== 'TRIAL_EXHAUSTED' && targetUser) {
410
+ setupUrl = await fetchSetupUrl(targetUser);
318
411
  }
319
- // ── Legacy credit exhaustion — checkout link + upsell (Base users) ──
320
- // Try to get an inline checkout link (best-effort, non-blocking)
321
- let checkoutUrl = agentCheckout?.url || null;
322
- if (!checkoutUrl) {
323
- checkoutUrl = await fetchAgentCheckoutLink(email, 'mcp');
412
+ let topUpUrl = details.topUpUrl;
413
+ if (!topUpUrl && details.limitCode === 'CREDITS_EXHAUSTED') {
414
+ topUpUrl = await fetchAgentCheckoutLink(details.email, 'mcp');
324
415
  }
325
- const portalUrl = buildPortalUpgradeUrl(email);
326
- const response = {
327
- status: 'CREDITS_EXHAUSTED',
328
- message: checkoutUrl
329
- ? `⚔ You've used all your Fodda credits this cycle.\n\nšŸ›’ **Buy 100 more API calls →** ${checkoutUrl}\n\nThis opens a secure Stripe Checkout page. After payment, your credits will be available immediately.\n\nAlternatively, you can upgrade your plan at ${portalUrl}`
330
- : apiMsg,
331
- action: checkoutUrl ? 'CHECKOUT_AVAILABLE' : 'VISIT_APP',
332
- manage_url: 'https://app.fodda.ai/account',
333
- upgrade_url: portalUrl,
334
- };
335
- if (upsell !== null && upsell !== undefined)
336
- response.upsell = upsell;
337
- if (usage !== null && usage !== undefined)
338
- response.usage = usage;
339
- if (checkoutUrl) {
340
- response.checkout_url = checkoutUrl;
341
- if (!email) {
342
- response.checkout_note = "You'll be asked for your email during checkout.";
343
- }
344
- }
345
- if (payg) {
346
- response.payg = payg;
347
- const paygUrl = payg.checkoutUrl || payg.url || payg.link;
348
- response.message += `\n\nšŸ’³ **Pay-as-you-go:** keep querying without a plan — billed per API call.${paygUrl ? ` Set it up here: ${paygUrl}` : ''}`;
349
- }
350
- return {
351
- isError: false,
352
- content: [{
353
- type: 'text',
354
- text: JSON.stringify(response, null, 2)
355
- }]
356
- };
416
+ return buildUnifiedLimitError({
417
+ code: details.limitCode,
418
+ setupUrl,
419
+ topUpUrl,
420
+ overageRateUsd: details.overageRateUsd,
421
+ upgradeUrl: details.upgradeUrl,
422
+ renewsAt: details.renewsAt,
423
+ usage: details.usage,
424
+ payg: details.payg,
425
+ agentCheckout: details.agentCheckout,
426
+ });
357
427
  }
358
428
  //# sourceMappingURL=errorHandling.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errorHandling.js","sourceRoot":"","sources":["../src/errorHandling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errorHandling.js","sourceRoot":"","sources":["../src/errorHandling.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,29 @@
1
+ /**
2
+ * Fodda MCP Server — Clean Architecture
3
+ * Uses McpServer (high-level API) which is proven to work with Claude.
4
+ * NO middleware, NO AsyncLocalStorage, NO response interceptors.
5
+ * API key is extracted from URL query params and passed to tool handlers.
6
+ */
7
+ import express from 'express';
8
+ export declare const app: import("express-serve-static-core").Express;
9
+ export declare function isIncomingHmacValid(req: express.Request): boolean;
10
+ export interface SendAuth401Options {
11
+ offeringSlug?: string;
12
+ message: string;
13
+ invalidToken?: boolean;
14
+ id?: any;
15
+ data?: any;
16
+ }
17
+ export declare function sendAuth401(res: express.Response, options: SendAuth401Options): express.Response<any, Record<string, any>>;
1
18
  export declare const OFFERING_SCOPED_TOOLS: Record<string, string[]>;
19
+ export declare const sessionClients: Map<string, string>;
20
+ /**
21
+ * Normalize clientInfo from MCP initialize handshake to a short, canonical slug.
22
+ * E.g. Claude Desktop -> claude-desktop, Cursor -> cursor, VS Code -> vscode.
23
+ */
24
+ export declare function normalizeClientSlug(name?: string, version?: string): string;
25
+ export declare function isPlaceholderUserId(id?: string | null): boolean;
26
+ export declare function foddaRequest(method: 'GET' | 'POST' | 'PATCH', path: string, apiKey: string, userId: string, body?: any, requestId?: string, source?: string, spt?: string, client?: string): Promise<any>;
2
27
  interface TokenResolution {
3
28
  apiKey: string;
4
29
  email: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkKA,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAoG1D,CAAC;AAyrBF,UAAU,eAAe;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAKD,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAwCrG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,OAAO,MAAM,SAAS,CAAC;AAmC9B,eAAO,MAAM,GAAG,6CAAY,CAAC;AAsB7B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CA6CjE;AAcD,MAAM,WAAW,kBAAkB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,IAAI,CAAC,EAAE,GAAG,CAAC;CACd;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,kBAAkB,8CA2B7E;AAgGD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CA6I1D,CAAC;AAwKF,eAAO,MAAM,cAAc,qBAA4B,CAAC;AAQxD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAqC3E;AAuCD,wBAAgB,mBAAmB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAG/D;AAED,wBAAsB,YAAY,CAC9B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,EAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,GAAG,EACV,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,CAoFd;AA6YD,UAAU,eAAe;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAKD,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAwCrG"}