euparliamentmonitor 0.8.4

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 (276) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1005 -0
  3. package/SECURITY.md +151 -0
  4. package/package.json +131 -0
  5. package/scripts/constants/committee-indicator-map.d.ts +199 -0
  6. package/scripts/constants/committee-indicator-map.d.ts.map +1 -0
  7. package/scripts/constants/committee-indicator-map.js +1224 -0
  8. package/scripts/constants/committee-indicator-map.js.map +1 -0
  9. package/scripts/constants/config.d.ts +38 -0
  10. package/scripts/constants/config.d.ts.map +1 -0
  11. package/scripts/constants/config.js +66 -0
  12. package/scripts/constants/config.js.map +1 -0
  13. package/scripts/constants/language-articles.d.ts +84 -0
  14. package/scripts/constants/language-articles.d.ts.map +1 -0
  15. package/scripts/constants/language-articles.js +6771 -0
  16. package/scripts/constants/language-articles.js.map +1 -0
  17. package/scripts/constants/language-core.d.ts +38 -0
  18. package/scripts/constants/language-core.d.ts.map +1 -0
  19. package/scripts/constants/language-core.js +90 -0
  20. package/scripts/constants/language-core.js.map +1 -0
  21. package/scripts/constants/language-ui.d.ts +82 -0
  22. package/scripts/constants/language-ui.d.ts.map +1 -0
  23. package/scripts/constants/language-ui.js +889 -0
  24. package/scripts/constants/language-ui.js.map +1 -0
  25. package/scripts/constants/languages.d.ts +14 -0
  26. package/scripts/constants/languages.d.ts.map +1 -0
  27. package/scripts/constants/languages.js +15 -0
  28. package/scripts/constants/languages.js.map +1 -0
  29. package/scripts/generators/analysis-builders.d.ts +266 -0
  30. package/scripts/generators/analysis-builders.d.ts.map +1 -0
  31. package/scripts/generators/analysis-builders.js +2903 -0
  32. package/scripts/generators/analysis-builders.js.map +1 -0
  33. package/scripts/generators/breaking-content.d.ts +45 -0
  34. package/scripts/generators/breaking-content.d.ts.map +1 -0
  35. package/scripts/generators/breaking-content.js +530 -0
  36. package/scripts/generators/breaking-content.js.map +1 -0
  37. package/scripts/generators/committee-helpers.d.ts +54 -0
  38. package/scripts/generators/committee-helpers.d.ts.map +1 -0
  39. package/scripts/generators/committee-helpers.js +154 -0
  40. package/scripts/generators/committee-helpers.js.map +1 -0
  41. package/scripts/generators/dashboard-content.d.ts +95 -0
  42. package/scripts/generators/dashboard-content.d.ts.map +1 -0
  43. package/scripts/generators/dashboard-content.js +630 -0
  44. package/scripts/generators/dashboard-content.js.map +1 -0
  45. package/scripts/generators/deep-analysis-content.d.ts +23 -0
  46. package/scripts/generators/deep-analysis-content.d.ts.map +1 -0
  47. package/scripts/generators/deep-analysis-content.js +831 -0
  48. package/scripts/generators/deep-analysis-content.js.map +1 -0
  49. package/scripts/generators/mindmap-content.d.ts +55 -0
  50. package/scripts/generators/mindmap-content.d.ts.map +1 -0
  51. package/scripts/generators/mindmap-content.js +512 -0
  52. package/scripts/generators/mindmap-content.js.map +1 -0
  53. package/scripts/generators/motions-content.d.ts +50 -0
  54. package/scripts/generators/motions-content.d.ts.map +1 -0
  55. package/scripts/generators/motions-content.js +391 -0
  56. package/scripts/generators/motions-content.js.map +1 -0
  57. package/scripts/generators/news-enhanced.d.ts +14 -0
  58. package/scripts/generators/news-enhanced.d.ts.map +1 -0
  59. package/scripts/generators/news-enhanced.js +169 -0
  60. package/scripts/generators/news-enhanced.js.map +1 -0
  61. package/scripts/generators/news-indexes.d.ts +31 -0
  62. package/scripts/generators/news-indexes.d.ts.map +1 -0
  63. package/scripts/generators/news-indexes.js +410 -0
  64. package/scripts/generators/news-indexes.js.map +1 -0
  65. package/scripts/generators/pipeline/fetch-stage.d.ts +352 -0
  66. package/scripts/generators/pipeline/fetch-stage.d.ts.map +1 -0
  67. package/scripts/generators/pipeline/fetch-stage.js +1522 -0
  68. package/scripts/generators/pipeline/fetch-stage.js.map +1 -0
  69. package/scripts/generators/pipeline/generate-stage.d.ts +43 -0
  70. package/scripts/generators/pipeline/generate-stage.d.ts.map +1 -0
  71. package/scripts/generators/pipeline/generate-stage.js +204 -0
  72. package/scripts/generators/pipeline/generate-stage.js.map +1 -0
  73. package/scripts/generators/pipeline/output-stage.d.ts +48 -0
  74. package/scripts/generators/pipeline/output-stage.d.ts.map +1 -0
  75. package/scripts/generators/pipeline/output-stage.js +145 -0
  76. package/scripts/generators/pipeline/output-stage.js.map +1 -0
  77. package/scripts/generators/pipeline/transform-stage.d.ts +57 -0
  78. package/scripts/generators/pipeline/transform-stage.d.ts.map +1 -0
  79. package/scripts/generators/pipeline/transform-stage.js +111 -0
  80. package/scripts/generators/pipeline/transform-stage.js.map +1 -0
  81. package/scripts/generators/propositions-content.d.ts +29 -0
  82. package/scripts/generators/propositions-content.d.ts.map +1 -0
  83. package/scripts/generators/propositions-content.js +90 -0
  84. package/scripts/generators/propositions-content.js.map +1 -0
  85. package/scripts/generators/sankey-content.d.ts +45 -0
  86. package/scripts/generators/sankey-content.d.ts.map +1 -0
  87. package/scripts/generators/sankey-content.js +227 -0
  88. package/scripts/generators/sankey-content.js.map +1 -0
  89. package/scripts/generators/sitemap.d.ts +66 -0
  90. package/scripts/generators/sitemap.d.ts.map +1 -0
  91. package/scripts/generators/sitemap.js +562 -0
  92. package/scripts/generators/sitemap.js.map +1 -0
  93. package/scripts/generators/strategies/article-strategy.d.ts +146 -0
  94. package/scripts/generators/strategies/article-strategy.d.ts.map +1 -0
  95. package/scripts/generators/strategies/article-strategy.js +4 -0
  96. package/scripts/generators/strategies/article-strategy.js.map +1 -0
  97. package/scripts/generators/strategies/breaking-news-strategy.d.ts +64 -0
  98. package/scripts/generators/strategies/breaking-news-strategy.d.ts.map +1 -0
  99. package/scripts/generators/strategies/breaking-news-strategy.js +246 -0
  100. package/scripts/generators/strategies/breaking-news-strategy.js.map +1 -0
  101. package/scripts/generators/strategies/committee-reports-strategy.d.ts +93 -0
  102. package/scripts/generators/strategies/committee-reports-strategy.d.ts.map +1 -0
  103. package/scripts/generators/strategies/committee-reports-strategy.js +447 -0
  104. package/scripts/generators/strategies/committee-reports-strategy.js.map +1 -0
  105. package/scripts/generators/strategies/month-ahead-strategy.d.ts +60 -0
  106. package/scripts/generators/strategies/month-ahead-strategy.d.ts.map +1 -0
  107. package/scripts/generators/strategies/month-ahead-strategy.js +175 -0
  108. package/scripts/generators/strategies/month-ahead-strategy.js.map +1 -0
  109. package/scripts/generators/strategies/monthly-review-strategy.d.ts +66 -0
  110. package/scripts/generators/strategies/monthly-review-strategy.d.ts.map +1 -0
  111. package/scripts/generators/strategies/monthly-review-strategy.js +204 -0
  112. package/scripts/generators/strategies/monthly-review-strategy.js.map +1 -0
  113. package/scripts/generators/strategies/motions-strategy.d.ts +61 -0
  114. package/scripts/generators/strategies/motions-strategy.d.ts.map +1 -0
  115. package/scripts/generators/strategies/motions-strategy.js +215 -0
  116. package/scripts/generators/strategies/motions-strategy.js.map +1 -0
  117. package/scripts/generators/strategies/propositions-strategy.d.ts +60 -0
  118. package/scripts/generators/strategies/propositions-strategy.d.ts.map +1 -0
  119. package/scripts/generators/strategies/propositions-strategy.js +257 -0
  120. package/scripts/generators/strategies/propositions-strategy.js.map +1 -0
  121. package/scripts/generators/strategies/week-ahead-strategy.d.ts +57 -0
  122. package/scripts/generators/strategies/week-ahead-strategy.d.ts.map +1 -0
  123. package/scripts/generators/strategies/week-ahead-strategy.js +178 -0
  124. package/scripts/generators/strategies/week-ahead-strategy.js.map +1 -0
  125. package/scripts/generators/strategies/weekly-review-strategy.d.ts +63 -0
  126. package/scripts/generators/strategies/weekly-review-strategy.d.ts.map +1 -0
  127. package/scripts/generators/strategies/weekly-review-strategy.js +211 -0
  128. package/scripts/generators/strategies/weekly-review-strategy.js.map +1 -0
  129. package/scripts/generators/swot-content.d.ts +42 -0
  130. package/scripts/generators/swot-content.d.ts.map +1 -0
  131. package/scripts/generators/swot-content.js +366 -0
  132. package/scripts/generators/swot-content.js.map +1 -0
  133. package/scripts/generators/week-ahead-content.d.ts +103 -0
  134. package/scripts/generators/week-ahead-content.d.ts.map +1 -0
  135. package/scripts/generators/week-ahead-content.js +610 -0
  136. package/scripts/generators/week-ahead-content.js.map +1 -0
  137. package/scripts/index.d.ts +40 -0
  138. package/scripts/index.d.ts.map +1 -0
  139. package/scripts/index.js +53 -0
  140. package/scripts/index.js.map +1 -0
  141. package/scripts/mcp/ep-mcp-client.d.ts +471 -0
  142. package/scripts/mcp/ep-mcp-client.d.ts.map +1 -0
  143. package/scripts/mcp/ep-mcp-client.js +734 -0
  144. package/scripts/mcp/ep-mcp-client.js.map +1 -0
  145. package/scripts/mcp/mcp-connection.d.ts +264 -0
  146. package/scripts/mcp/mcp-connection.d.ts.map +1 -0
  147. package/scripts/mcp/mcp-connection.js +790 -0
  148. package/scripts/mcp/mcp-connection.js.map +1 -0
  149. package/scripts/mcp/mcp-health.d.ts +75 -0
  150. package/scripts/mcp/mcp-health.d.ts.map +1 -0
  151. package/scripts/mcp/mcp-health.js +78 -0
  152. package/scripts/mcp/mcp-health.js.map +1 -0
  153. package/scripts/mcp/mcp-retry.d.ts +94 -0
  154. package/scripts/mcp/mcp-retry.d.ts.map +1 -0
  155. package/scripts/mcp/mcp-retry.js +127 -0
  156. package/scripts/mcp/mcp-retry.js.map +1 -0
  157. package/scripts/mcp/wb-mcp-client.d.ts +38 -0
  158. package/scripts/mcp/wb-mcp-client.d.ts.map +1 -0
  159. package/scripts/mcp/wb-mcp-client.js +112 -0
  160. package/scripts/mcp/wb-mcp-client.js.map +1 -0
  161. package/scripts/templates/article-template.d.ts +9 -0
  162. package/scripts/templates/article-template.d.ts.map +1 -0
  163. package/scripts/templates/article-template.js +378 -0
  164. package/scripts/templates/article-template.js.map +1 -0
  165. package/scripts/templates/section-builders.d.ts +28 -0
  166. package/scripts/templates/section-builders.d.ts.map +1 -0
  167. package/scripts/templates/section-builders.js +142 -0
  168. package/scripts/templates/section-builders.js.map +1 -0
  169. package/scripts/types/analysis.d.ts +115 -0
  170. package/scripts/types/analysis.d.ts.map +1 -0
  171. package/scripts/types/analysis.js +4 -0
  172. package/scripts/types/analysis.js.map +1 -0
  173. package/scripts/types/common.d.ts +584 -0
  174. package/scripts/types/common.d.ts.map +1 -0
  175. package/scripts/types/common.js +96 -0
  176. package/scripts/types/common.js.map +1 -0
  177. package/scripts/types/generation.d.ts +104 -0
  178. package/scripts/types/generation.d.ts.map +1 -0
  179. package/scripts/types/generation.js +4 -0
  180. package/scripts/types/generation.js.map +1 -0
  181. package/scripts/types/index.d.ts +24 -0
  182. package/scripts/types/index.d.ts.map +1 -0
  183. package/scripts/types/index.js +16 -0
  184. package/scripts/types/index.js.map +1 -0
  185. package/scripts/types/intelligence.d.ts +129 -0
  186. package/scripts/types/intelligence.d.ts.map +1 -0
  187. package/scripts/types/intelligence.js +4 -0
  188. package/scripts/types/intelligence.js.map +1 -0
  189. package/scripts/types/mcp.d.ts +418 -0
  190. package/scripts/types/mcp.d.ts.map +1 -0
  191. package/scripts/types/mcp.js +4 -0
  192. package/scripts/types/mcp.js.map +1 -0
  193. package/scripts/types/parliament.d.ts +388 -0
  194. package/scripts/types/parliament.d.ts.map +1 -0
  195. package/scripts/types/parliament.js +4 -0
  196. package/scripts/types/parliament.js.map +1 -0
  197. package/scripts/types/quality.d.ts +114 -0
  198. package/scripts/types/quality.d.ts.map +1 -0
  199. package/scripts/types/quality.js +4 -0
  200. package/scripts/types/quality.js.map +1 -0
  201. package/scripts/types/stakeholder.d.ts +88 -0
  202. package/scripts/types/stakeholder.d.ts.map +1 -0
  203. package/scripts/types/stakeholder.js +16 -0
  204. package/scripts/types/stakeholder.js.map +1 -0
  205. package/scripts/types/visualization.d.ts +708 -0
  206. package/scripts/types/visualization.d.ts.map +1 -0
  207. package/scripts/types/visualization.js +4 -0
  208. package/scripts/types/visualization.js.map +1 -0
  209. package/scripts/types/world-bank.d.ts +85 -0
  210. package/scripts/types/world-bank.d.ts.map +1 -0
  211. package/scripts/types/world-bank.js +4 -0
  212. package/scripts/types/world-bank.js.map +1 -0
  213. package/scripts/utils/article-category.d.ts +18 -0
  214. package/scripts/utils/article-category.d.ts.map +1 -0
  215. package/scripts/utils/article-category.js +49 -0
  216. package/scripts/utils/article-category.js.map +1 -0
  217. package/scripts/utils/article-quality-scorer.d.ts +87 -0
  218. package/scripts/utils/article-quality-scorer.d.ts.map +1 -0
  219. package/scripts/utils/article-quality-scorer.js +1048 -0
  220. package/scripts/utils/article-quality-scorer.js.map +1 -0
  221. package/scripts/utils/content-metadata.d.ts +34 -0
  222. package/scripts/utils/content-metadata.d.ts.map +1 -0
  223. package/scripts/utils/content-metadata.js +249 -0
  224. package/scripts/utils/content-metadata.js.map +1 -0
  225. package/scripts/utils/content-validator.d.ts +94 -0
  226. package/scripts/utils/content-validator.d.ts.map +1 -0
  227. package/scripts/utils/content-validator.js +489 -0
  228. package/scripts/utils/content-validator.js.map +1 -0
  229. package/scripts/utils/copy-test-reports.d.ts +9 -0
  230. package/scripts/utils/copy-test-reports.d.ts.map +1 -0
  231. package/scripts/utils/copy-test-reports.js +508 -0
  232. package/scripts/utils/copy-test-reports.js.map +1 -0
  233. package/scripts/utils/file-utils.d.ts +144 -0
  234. package/scripts/utils/file-utils.d.ts.map +1 -0
  235. package/scripts/utils/file-utils.js +374 -0
  236. package/scripts/utils/file-utils.js.map +1 -0
  237. package/scripts/utils/fix-articles.d.ts +27 -0
  238. package/scripts/utils/fix-articles.d.ts.map +1 -0
  239. package/scripts/utils/fix-articles.js +510 -0
  240. package/scripts/utils/fix-articles.js.map +1 -0
  241. package/scripts/utils/generate-docs-index.d.ts +8 -0
  242. package/scripts/utils/generate-docs-index.d.ts.map +1 -0
  243. package/scripts/utils/generate-docs-index.js +275 -0
  244. package/scripts/utils/generate-docs-index.js.map +1 -0
  245. package/scripts/utils/html-sanitize.d.ts +18 -0
  246. package/scripts/utils/html-sanitize.d.ts.map +1 -0
  247. package/scripts/utils/html-sanitize.js +57 -0
  248. package/scripts/utils/html-sanitize.js.map +1 -0
  249. package/scripts/utils/intelligence-analysis.d.ts +173 -0
  250. package/scripts/utils/intelligence-analysis.d.ts.map +1 -0
  251. package/scripts/utils/intelligence-analysis.js +936 -0
  252. package/scripts/utils/intelligence-analysis.js.map +1 -0
  253. package/scripts/utils/intelligence-index.d.ts +126 -0
  254. package/scripts/utils/intelligence-index.d.ts.map +1 -0
  255. package/scripts/utils/intelligence-index.js +731 -0
  256. package/scripts/utils/intelligence-index.js.map +1 -0
  257. package/scripts/utils/metadata-utils.d.ts +14 -0
  258. package/scripts/utils/metadata-utils.d.ts.map +1 -0
  259. package/scripts/utils/metadata-utils.js +18 -0
  260. package/scripts/utils/metadata-utils.js.map +1 -0
  261. package/scripts/utils/news-metadata.d.ts +47 -0
  262. package/scripts/utils/news-metadata.d.ts.map +1 -0
  263. package/scripts/utils/news-metadata.js +259 -0
  264. package/scripts/utils/news-metadata.js.map +1 -0
  265. package/scripts/utils/validate-articles.d.ts +2 -0
  266. package/scripts/utils/validate-articles.d.ts.map +1 -0
  267. package/scripts/utils/validate-articles.js +284 -0
  268. package/scripts/utils/validate-articles.js.map +1 -0
  269. package/scripts/utils/validate-ep-api.d.ts +51 -0
  270. package/scripts/utils/validate-ep-api.d.ts.map +1 -0
  271. package/scripts/utils/validate-ep-api.js +160 -0
  272. package/scripts/utils/validate-ep-api.js.map +1 -0
  273. package/scripts/utils/world-bank-data.d.ts +84 -0
  274. package/scripts/utils/world-bank-data.d.ts.map +1 -0
  275. package/scripts/utils/world-bank-data.js +311 -0
  276. package/scripts/utils/world-bank-data.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-connection.js","sourceRoot":"","sources":["../../src/mcp/mcp-connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @module MCP/MCPHealth
3
+ * @description Aggregated health monitoring for MCP tools.
4
+ *
5
+ * The {@link MCPHealthMonitor} tracks per-tool circuit breaker state and
6
+ * provides a consolidated health snapshot for observability dashboards
7
+ * and operational alerting.
8
+ *
9
+ * @see {@link https://github.com/Hack23/ISMS-PUBLIC/blob/main/Secure_Development_Policy.md | Secure Development Policy}
10
+ */
11
+ import type { CircuitState } from './mcp-retry.js';
12
+ import { CircuitBreaker } from './mcp-retry.js';
13
+ import type { CircuitBreakerOptions } from './mcp-retry.js';
14
+ /**
15
+ * Per-tool health snapshot returned by {@link MCPHealthMonitor.getHealthSnapshot}.
16
+ */
17
+ export interface ToolHealthEntry {
18
+ /** Current circuit breaker state for the tool */
19
+ state: CircuitState;
20
+ /** Number of consecutive failures recorded */
21
+ consecutiveFailures: number;
22
+ }
23
+ /**
24
+ * Aggregated health snapshot across all registered MCP tools.
25
+ */
26
+ export interface HealthSnapshot {
27
+ /** Per-tool health status keyed by tool name */
28
+ tools: ReadonlyMap<string, ToolHealthEntry>;
29
+ /** Count of tools with circuit in OPEN state */
30
+ openCircuits: number;
31
+ /** Count of tools with circuit in HALF_OPEN state */
32
+ halfOpenCircuits: number;
33
+ /** Count of tools with circuit in CLOSED state */
34
+ closedCircuits: number;
35
+ }
36
+ /**
37
+ * Monitors circuit breaker health across multiple MCP tools.
38
+ *
39
+ * Each tool is backed by its own {@link CircuitBreaker} instance; the monitor
40
+ * provides both per-tool access and aggregated health snapshots.
41
+ */
42
+ export declare class MCPHealthMonitor {
43
+ private readonly breakers;
44
+ private readonly defaultOptions;
45
+ /**
46
+ * Create a new health monitor.
47
+ *
48
+ * @param defaultOptions - Default circuit breaker options applied when
49
+ * registering a new tool without explicit options
50
+ */
51
+ constructor(defaultOptions?: CircuitBreakerOptions);
52
+ /**
53
+ * Get or create the {@link CircuitBreaker} for the named tool.
54
+ *
55
+ * If the tool has not been registered yet a new breaker is created with the
56
+ * monitor's default options.
57
+ *
58
+ * @param toolName - Unique identifier for the MCP tool
59
+ * @returns The circuit breaker instance for the tool
60
+ */
61
+ getBreaker(toolName: string): CircuitBreaker;
62
+ /**
63
+ * Return an aggregated health snapshot across all registered tools.
64
+ *
65
+ * @returns Snapshot with per-tool state and aggregate counters
66
+ */
67
+ getHealthSnapshot(): HealthSnapshot;
68
+ /**
69
+ * Return the names of all registered tools.
70
+ *
71
+ * @returns Array of tool names
72
+ */
73
+ getRegisteredTools(): readonly string[];
74
+ }
75
+ //# sourceMappingURL=mcp-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-health.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-health.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,KAAK,EAAE,YAAY,CAAC;IACpB,8CAA8C;IAC9C,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC5C,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IAEvD;;;;;OAKG;gBACS,cAAc,GAAE,qBAA0B;IAItD;;;;;;;;OAQG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAS5C;;;;OAIG;IACH,iBAAiB,IAAI,cAAc;IA4BnC;;;;OAIG;IACH,kBAAkB,IAAI,SAAS,MAAM,EAAE;CAGxC"}
@@ -0,0 +1,78 @@
1
+ // SPDX-FileCopyrightText: 2024-2026 Hack23 AB
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { CircuitBreaker } from './mcp-retry.js';
4
+ /**
5
+ * Monitors circuit breaker health across multiple MCP tools.
6
+ *
7
+ * Each tool is backed by its own {@link CircuitBreaker} instance; the monitor
8
+ * provides both per-tool access and aggregated health snapshots.
9
+ */
10
+ export class MCPHealthMonitor {
11
+ breakers = new Map();
12
+ defaultOptions;
13
+ /**
14
+ * Create a new health monitor.
15
+ *
16
+ * @param defaultOptions - Default circuit breaker options applied when
17
+ * registering a new tool without explicit options
18
+ */
19
+ constructor(defaultOptions = {}) {
20
+ this.defaultOptions = defaultOptions;
21
+ }
22
+ /**
23
+ * Get or create the {@link CircuitBreaker} for the named tool.
24
+ *
25
+ * If the tool has not been registered yet a new breaker is created with the
26
+ * monitor's default options.
27
+ *
28
+ * @param toolName - Unique identifier for the MCP tool
29
+ * @returns The circuit breaker instance for the tool
30
+ */
31
+ getBreaker(toolName) {
32
+ let breaker = this.breakers.get(toolName);
33
+ if (!breaker) {
34
+ breaker = new CircuitBreaker(this.defaultOptions);
35
+ this.breakers.set(toolName, breaker);
36
+ }
37
+ return breaker;
38
+ }
39
+ /**
40
+ * Return an aggregated health snapshot across all registered tools.
41
+ *
42
+ * @returns Snapshot with per-tool state and aggregate counters
43
+ */
44
+ getHealthSnapshot() {
45
+ let openCircuits = 0;
46
+ let halfOpenCircuits = 0;
47
+ let closedCircuits = 0;
48
+ const tools = new Map();
49
+ for (const [name, breaker] of this.breakers) {
50
+ const stats = breaker.getStats();
51
+ tools.set(name, {
52
+ state: stats.state,
53
+ consecutiveFailures: stats.consecutiveFailures,
54
+ });
55
+ switch (stats.state) {
56
+ case 'OPEN':
57
+ openCircuits++;
58
+ break;
59
+ case 'HALF_OPEN':
60
+ halfOpenCircuits++;
61
+ break;
62
+ case 'CLOSED':
63
+ closedCircuits++;
64
+ break;
65
+ }
66
+ }
67
+ return { tools, openCircuits, halfOpenCircuits, closedCircuits };
68
+ }
69
+ /**
70
+ * Return the names of all registered tools.
71
+ *
72
+ * @returns Array of tool names
73
+ */
74
+ getRegisteredTools() {
75
+ return [...this.breakers.keys()];
76
+ }
77
+ }
78
+ //# sourceMappingURL=mcp-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-health.js","sourceRoot":"","sources":["../../src/mcp/mcp-health.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,sCAAsC;AActC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA2BhD;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IACV,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC7C,cAAc,CAAwB;IAEvD;;;;;OAKG;IACH,YAAY,iBAAwC,EAAE;QACpD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,QAAgB;QACzB,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;QAEjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;aAC/C,CAAC,CAAC;YACH,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;gBACpB,KAAK,MAAM;oBACT,YAAY,EAAE,CAAC;oBACf,MAAM;gBACR,KAAK,WAAW;oBACd,gBAAgB,EAAE,CAAC;oBACnB,MAAM;gBACR,KAAK,QAAQ;oBACX,cAAc,EAAE,CAAC;oBACjB,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,kBAAkB;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * @module MCP/MCPRetry
3
+ * @description Circuit breaker and retry logic for MCP operations.
4
+ *
5
+ * Provides the {@link CircuitBreaker} class for preventing cascading MCP
6
+ * failures, the {@link MCPRetryPolicy} interface for configurable retry
7
+ * strategies, and the {@link withRetry} wrapper for automatic retries
8
+ * with exponential backoff.
9
+ *
10
+ * @see {@link https://github.com/Hack23/ISMS-PUBLIC/blob/main/Secure_Development_Policy.md | Secure Development Policy}
11
+ */
12
+ /** Possible circuit breaker states */
13
+ export type CircuitState = 'CLOSED' | 'OPEN' | 'HALF_OPEN';
14
+ /** Constructor options for {@link CircuitBreaker} */
15
+ export interface CircuitBreakerOptions {
16
+ /** Consecutive failures before opening the circuit (default: 3) */
17
+ failureThreshold?: number | undefined;
18
+ /** Milliseconds to wait before probing recovery (default: 60 000) */
19
+ resetTimeoutMs?: number | undefined;
20
+ }
21
+ /**
22
+ * Circuit breaker preventing cascading MCP failures.
23
+ *
24
+ * - **CLOSED** — normal operation; all requests pass through.
25
+ * - **OPEN** — fast-fail; requests are rejected for `resetTimeoutMs` ms.
26
+ * - **HALF_OPEN** — probe state; one request is allowed to test recovery.
27
+ */
28
+ export declare class CircuitBreaker {
29
+ private state;
30
+ private consecutiveFailures;
31
+ private nextAttemptAt;
32
+ private halfOpenProbeInFlight;
33
+ private readonly failureThreshold;
34
+ private readonly resetTimeoutMs;
35
+ constructor(options?: CircuitBreakerOptions);
36
+ /**
37
+ * Whether a request may proceed given the current circuit state.
38
+ *
39
+ * In HALF_OPEN state only a single probe is allowed at a time; subsequent
40
+ * calls return `false` until the in-flight probe records success or failure.
41
+ *
42
+ * @returns `true` when the circuit is CLOSED, or HALF_OPEN with no probe in flight
43
+ */
44
+ canRequest(): boolean;
45
+ /** Record a successful request and close the circuit */
46
+ recordSuccess(): void;
47
+ /**
48
+ * Record a failed request.
49
+ *
50
+ * - When in **HALF_OPEN** the circuit re-opens immediately (the probe failed).
51
+ * - When in **CLOSED** the circuit opens only once the failure threshold is reached.
52
+ */
53
+ recordFailure(): void;
54
+ /**
55
+ * Return the current circuit state.
56
+ *
57
+ * @returns Current circuit state
58
+ */
59
+ getState(): CircuitState;
60
+ /**
61
+ * Return current statistics for observability.
62
+ *
63
+ * @returns Snapshot of state and consecutive failure count
64
+ */
65
+ getStats(): Readonly<{
66
+ state: CircuitState;
67
+ consecutiveFailures: number;
68
+ }>;
69
+ }
70
+ /**
71
+ * Configuration for {@link withRetry} controlling how failed async operations
72
+ * are retried with exponential backoff.
73
+ */
74
+ export interface MCPRetryPolicy {
75
+ /** Maximum number of retry attempts (default: 3) */
76
+ maxRetries?: number | undefined;
77
+ /** Base delay in milliseconds before the first retry (default: 1000) */
78
+ baseDelayMs?: number | undefined;
79
+ /** Maximum delay cap in milliseconds (default: 30 000) */
80
+ maxDelayMs?: number | undefined;
81
+ }
82
+ /**
83
+ * Execute an async function with retry and exponential backoff.
84
+ *
85
+ * Retries up to `policy.maxRetries` times with capped exponential delay:
86
+ * `min(baseDelayMs * 2^attempt, maxDelayMs)`.
87
+ *
88
+ * @param fn - Async factory that performs the operation
89
+ * @param policy - Retry configuration (merged with defaults)
90
+ * @returns Result of `fn` on first success
91
+ * @throws The last error when all retries are exhausted
92
+ */
93
+ export declare function withRetry<T>(fn: () => Promise<T>, policy?: MCPRetryPolicy): Promise<T>;
94
+ //# sourceMappingURL=mcp-retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-retry.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-retry.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAIH,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3D,qDAAqD;AACrD,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,OAAO,GAAE,qBAA0B;IAK/C;;;;;;;OAOG;IACH,UAAU,IAAI,OAAO;IAiBrB,wDAAwD;IACxD,aAAa,IAAI,IAAI;IAMrB;;;;;OAKG;IACH,aAAa,IAAI,IAAI;IAmBrB;;;;OAIG;IACH,QAAQ,IAAI,YAAY;IAIxB;;;;OAIG;IACH,QAAQ,IAAI,QAAQ,CAAC;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC;CAG3E;AAID;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAOD;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,CAiBhG"}
@@ -0,0 +1,127 @@
1
+ // SPDX-FileCopyrightText: 2024-2026 Hack23 AB
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Circuit breaker preventing cascading MCP failures.
5
+ *
6
+ * - **CLOSED** — normal operation; all requests pass through.
7
+ * - **OPEN** — fast-fail; requests are rejected for `resetTimeoutMs` ms.
8
+ * - **HALF_OPEN** — probe state; one request is allowed to test recovery.
9
+ */
10
+ export class CircuitBreaker {
11
+ state = 'CLOSED';
12
+ consecutiveFailures = 0;
13
+ nextAttemptAt = 0;
14
+ halfOpenProbeInFlight = false;
15
+ failureThreshold;
16
+ resetTimeoutMs;
17
+ constructor(options = {}) {
18
+ this.failureThreshold = options.failureThreshold ?? 3;
19
+ this.resetTimeoutMs = options.resetTimeoutMs ?? 60_000;
20
+ }
21
+ /**
22
+ * Whether a request may proceed given the current circuit state.
23
+ *
24
+ * In HALF_OPEN state only a single probe is allowed at a time; subsequent
25
+ * calls return `false` until the in-flight probe records success or failure.
26
+ *
27
+ * @returns `true` when the circuit is CLOSED, or HALF_OPEN with no probe in flight
28
+ */
29
+ canRequest() {
30
+ if (this.state === 'CLOSED')
31
+ return true;
32
+ if (this.state === 'OPEN') {
33
+ if (Date.now() >= this.nextAttemptAt) {
34
+ this.state = 'HALF_OPEN';
35
+ this.halfOpenProbeInFlight = false;
36
+ // Fall through to HALF_OPEN probe logic below
37
+ }
38
+ else {
39
+ return false;
40
+ }
41
+ }
42
+ // HALF_OPEN: allow exactly one probe in flight at a time
43
+ if (this.halfOpenProbeInFlight)
44
+ return false;
45
+ this.halfOpenProbeInFlight = true;
46
+ return true;
47
+ }
48
+ /** Record a successful request and close the circuit */
49
+ recordSuccess() {
50
+ this.consecutiveFailures = 0;
51
+ this.halfOpenProbeInFlight = false;
52
+ this.state = 'CLOSED';
53
+ }
54
+ /**
55
+ * Record a failed request.
56
+ *
57
+ * - When in **HALF_OPEN** the circuit re-opens immediately (the probe failed).
58
+ * - When in **CLOSED** the circuit opens only once the failure threshold is reached.
59
+ */
60
+ recordFailure() {
61
+ this.halfOpenProbeInFlight = false;
62
+ if (this.state === 'HALF_OPEN') {
63
+ // Probe failed — immediately re-open and back off again
64
+ this.state = 'OPEN';
65
+ this.nextAttemptAt = Date.now() + this.resetTimeoutMs;
66
+ console.warn('⚡ Circuit breaker re-OPEN after HALF_OPEN probe failure');
67
+ return;
68
+ }
69
+ this.consecutiveFailures++;
70
+ if (this.consecutiveFailures >= this.failureThreshold) {
71
+ this.state = 'OPEN';
72
+ this.nextAttemptAt = Date.now() + this.resetTimeoutMs;
73
+ console.warn(`⚡ Circuit breaker OPEN after ${this.consecutiveFailures} consecutive failures`);
74
+ }
75
+ }
76
+ /**
77
+ * Return the current circuit state.
78
+ *
79
+ * @returns Current circuit state
80
+ */
81
+ getState() {
82
+ return this.state;
83
+ }
84
+ /**
85
+ * Return current statistics for observability.
86
+ *
87
+ * @returns Snapshot of state and consecutive failure count
88
+ */
89
+ getStats() {
90
+ return { state: this.state, consecutiveFailures: this.consecutiveFailures };
91
+ }
92
+ }
93
+ /** Default retry policy values */
94
+ const DEFAULT_MAX_RETRIES = 3;
95
+ const DEFAULT_BASE_DELAY_MS = 1_000;
96
+ const DEFAULT_MAX_DELAY_MS = 30_000;
97
+ /**
98
+ * Execute an async function with retry and exponential backoff.
99
+ *
100
+ * Retries up to `policy.maxRetries` times with capped exponential delay:
101
+ * `min(baseDelayMs * 2^attempt, maxDelayMs)`.
102
+ *
103
+ * @param fn - Async factory that performs the operation
104
+ * @param policy - Retry configuration (merged with defaults)
105
+ * @returns Result of `fn` on first success
106
+ * @throws The last error when all retries are exhausted
107
+ */
108
+ export async function withRetry(fn, policy = {}) {
109
+ const maxRetries = policy.maxRetries ?? DEFAULT_MAX_RETRIES;
110
+ const baseDelayMs = policy.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;
111
+ const maxDelayMs = policy.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;
112
+ let lastError;
113
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
114
+ try {
115
+ return await fn();
116
+ }
117
+ catch (error) {
118
+ lastError = error;
119
+ if (attempt < maxRetries) {
120
+ const delay = Math.min(baseDelayMs * Math.pow(2, attempt), maxDelayMs);
121
+ await new Promise((resolve) => setTimeout(resolve, delay));
122
+ }
123
+ }
124
+ }
125
+ throw lastError;
126
+ }
127
+ //# sourceMappingURL=mcp-retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-retry.js","sourceRoot":"","sources":["../../src/mcp/mcp-retry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { MCPConnection } from './mcp-connection.js';
2
+ import type { MCPToolResult, MCPClientOptions } from '../types/index.js';
3
+ /**
4
+ * MCP Client for World Bank economic data access.
5
+ * Extends {@link MCPConnection} with World Bank-specific tool wrapper methods.
6
+ *
7
+ * Always supplies an explicit World Bank server path so the base class never
8
+ * falls back to the European Parliament MCP server defaults.
9
+ */
10
+ export declare class WorldBankMCPClient extends MCPConnection {
11
+ constructor(options?: MCPClientOptions);
12
+ /**
13
+ * Get economic indicator data for a specific country.
14
+ *
15
+ * Calls the `get_indicator_for_country` tool on the World Bank MCP server.
16
+ *
17
+ * @param countryId - World Bank country code (e.g., 'DEU' for Germany, 'FRA' for France)
18
+ * @param indicatorId - World Bank indicator ID (e.g., 'NY.GDP.MKTP.CD' for GDP)
19
+ * @returns MCP tool result with CSV-formatted indicator data, or empty text on error
20
+ */
21
+ getIndicatorForCountry(countryId: string, indicatorId: string): Promise<MCPToolResult>;
22
+ }
23
+ /**
24
+ * Get or create singleton World Bank MCP client instance.
25
+ *
26
+ * Uses `WB_MCP_SERVER_PATH`, `WB_MCP_GATEWAY_URL`, and `WB_MCP_GATEWAY_API_KEY`
27
+ * environment variables for configuration. Falls back to stdio transport
28
+ * with the `worldbank-mcp` npm binary resolved from `node_modules/.bin`.
29
+ *
30
+ * @param options - Client options (overrides env vars)
31
+ * @returns Connected World Bank MCP client
32
+ */
33
+ export declare function getWBMCPClient(options?: MCPClientOptions): Promise<WorldBankMCPClient>;
34
+ /**
35
+ * Close and cleanup singleton World Bank MCP client
36
+ */
37
+ export declare function closeWBMCPClient(): Promise<void>;
38
+ //# sourceMappingURL=wb-mcp-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wb-mcp-client.d.ts","sourceRoot":"","sources":["../../src/mcp/wb-mcp-client.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAiBzE;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,GAAE,gBAAqB;IAU1C;;;;;;;;OAQG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAgB7F;AAKD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiBhG;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKtD"}
@@ -0,0 +1,112 @@
1
+ // SPDX-FileCopyrightText: 2024-2026 Hack23 AB
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * @module MCP/WBMCPClient
5
+ * @description World Bank MCP client — domain-specific tool wrappers for
6
+ * the World Bank MCP server ({@link https://github.com/anshumax/world_bank_mcp_server}).
7
+ *
8
+ * Extends {@link MCPConnection} with World Bank-specific tool methods.
9
+ * Provides economic indicator data for EU member states to enrich
10
+ * European Parliament news articles with macroeconomic context.
11
+ *
12
+ * Environment variables:
13
+ * - `WB_MCP_SERVER_PATH` — Override default server binary path
14
+ * - `WB_MCP_GATEWAY_URL` — Use HTTP gateway transport instead of stdio
15
+ * - `WB_MCP_GATEWAY_API_KEY` — API key for gateway authentication
16
+ */
17
+ import { resolve, dirname } from 'path';
18
+ import { fileURLToPath } from 'url';
19
+ import { MCPConnection } from './mcp-connection.js';
20
+ /** npm binary name for the World Bank MCP server */
21
+ const WB_BINARY_NAME = 'worldbank-mcp';
22
+ /** Platform-specific binary filename (Windows uses .cmd shim) */
23
+ const WB_BINARY_FILE = process.platform === 'win32' ? `${WB_BINARY_NAME}.cmd` : WB_BINARY_NAME;
24
+ /** Default binary resolved from node_modules/.bin relative to this file's compiled location */
25
+ const WB_DEFAULT_SERVER = resolve(dirname(fileURLToPath(import.meta.url)), `../../node_modules/.bin/${WB_BINARY_FILE}`);
26
+ /** Fallback payload when indicator data is unavailable (empty CSV) */
27
+ const INDICATOR_FALLBACK = '';
28
+ /**
29
+ * MCP Client for World Bank economic data access.
30
+ * Extends {@link MCPConnection} with World Bank-specific tool wrapper methods.
31
+ *
32
+ * Always supplies an explicit World Bank server path so the base class never
33
+ * falls back to the European Parliament MCP server defaults.
34
+ */
35
+ export class WorldBankMCPClient extends MCPConnection {
36
+ constructor(options = {}) {
37
+ super({
38
+ ...options,
39
+ serverPath: options.serverPath ?? process.env['WB_MCP_SERVER_PATH'] ?? WB_DEFAULT_SERVER,
40
+ gatewayUrl: options.gatewayUrl ?? process.env['WB_MCP_GATEWAY_URL'] ?? '',
41
+ gatewayApiKey: options.gatewayApiKey ?? process.env['WB_MCP_GATEWAY_API_KEY'] ?? '',
42
+ serverLabel: options.serverLabel ?? 'World Bank MCP Server',
43
+ });
44
+ }
45
+ /**
46
+ * Get economic indicator data for a specific country.
47
+ *
48
+ * Calls the `get_indicator_for_country` tool on the World Bank MCP server.
49
+ *
50
+ * @param countryId - World Bank country code (e.g., 'DEU' for Germany, 'FRA' for France)
51
+ * @param indicatorId - World Bank indicator ID (e.g., 'NY.GDP.MKTP.CD' for GDP)
52
+ * @returns MCP tool result with CSV-formatted indicator data, or empty text on error
53
+ */
54
+ async getIndicatorForCountry(countryId, indicatorId) {
55
+ if (!countryId || !indicatorId) {
56
+ console.warn('get_indicator_for_country called without required countryId or indicatorId');
57
+ return { content: [{ type: 'text', text: INDICATOR_FALLBACK }] };
58
+ }
59
+ try {
60
+ return await this.callTool('get_indicator_for_country', {
61
+ country_id: countryId,
62
+ indicator_id: indicatorId,
63
+ });
64
+ }
65
+ catch (error) {
66
+ const message = error instanceof Error ? error.message : String(error);
67
+ console.warn('get_indicator_for_country not available:', message);
68
+ return { content: [{ type: 'text', text: INDICATOR_FALLBACK }] };
69
+ }
70
+ }
71
+ }
72
+ /** Singleton World Bank MCP client instance */
73
+ let wbClientInstance = null;
74
+ /**
75
+ * Get or create singleton World Bank MCP client instance.
76
+ *
77
+ * Uses `WB_MCP_SERVER_PATH`, `WB_MCP_GATEWAY_URL`, and `WB_MCP_GATEWAY_API_KEY`
78
+ * environment variables for configuration. Falls back to stdio transport
79
+ * with the `worldbank-mcp` npm binary resolved from `node_modules/.bin`.
80
+ *
81
+ * @param options - Client options (overrides env vars)
82
+ * @returns Connected World Bank MCP client
83
+ */
84
+ export async function getWBMCPClient(options = {}) {
85
+ if (!wbClientInstance) {
86
+ const mergedOptions = {
87
+ ...options,
88
+ maxConnectionAttempts: options.maxConnectionAttempts ?? 2,
89
+ connectionRetryDelay: options.connectionRetryDelay ?? 1000,
90
+ };
91
+ const client = new WorldBankMCPClient(mergedOptions);
92
+ try {
93
+ await client.connect();
94
+ wbClientInstance = client;
95
+ }
96
+ catch (error) {
97
+ wbClientInstance = null;
98
+ throw error;
99
+ }
100
+ }
101
+ return wbClientInstance;
102
+ }
103
+ /**
104
+ * Close and cleanup singleton World Bank MCP client
105
+ */
106
+ export async function closeWBMCPClient() {
107
+ if (wbClientInstance) {
108
+ wbClientInstance.disconnect();
109
+ wbClientInstance = null;
110
+ }
111
+ }
112
+ //# sourceMappingURL=wb-mcp-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wb-mcp-client.js","sourceRoot":"","sources":["../../src/mcp/wb-mcp-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ArticleOptions } from '../types/index.js';
2
+ /**
3
+ * Generate complete HTML for a news article
4
+ *
5
+ * @param options - Article generation options
6
+ * @returns Complete HTML document string
7
+ */
8
+ export declare function generateArticleHTML(options: ArticleOptions): string;
9
+ //# sourceMappingURL=article-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"article-template.d.ts","sourceRoot":"","sources":["../../src/templates/article-template.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,mBAAmB,CAAC;AA8H3B;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CA6RnE"}