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,708 @@
1
+ /**
2
+ * @module Types/Visualization
3
+ * @description Type definitions for SWOT analysis and dashboard visualization
4
+ * components. These types enable agentic workflows to extend any article type
5
+ * with structured SWOT diagrams and data dashboards using data from MCP
6
+ * servers or other data sources.
7
+ */
8
+ /**
9
+ * A single item within a SWOT quadrant.
10
+ * Represents one strength, weakness, opportunity, or threat.
11
+ */
12
+ export interface SwotItem {
13
+ /** Description of the SWOT item */
14
+ readonly text: string;
15
+ /** Optional severity/importance level */
16
+ readonly severity?: 'low' | 'medium' | 'high' | undefined;
17
+ }
18
+ /**
19
+ * Complete SWOT analysis data structure.
20
+ * Used by agentic workflows to generate strategic analysis visualizations
21
+ * for any article type using data from European Parliament MCP or other sources.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const swot: SwotAnalysis = {
26
+ * title: 'Digital Markets Act — Strategic Assessment',
27
+ * strengths: [{ text: 'Broad political support', severity: 'high' }],
28
+ * weaknesses: [{ text: 'Complex enforcement mechanisms', severity: 'medium' }],
29
+ * opportunities: [{ text: 'Global regulatory leadership', severity: 'high' }],
30
+ * threats: [{ text: 'Industry lobbying resistance', severity: 'medium' }],
31
+ * };
32
+ * ```
33
+ */
34
+ export interface SwotAnalysis {
35
+ /** Optional title for the SWOT analysis */
36
+ readonly title?: string | undefined;
37
+ /** Internal strengths — positive factors within EU Parliament control */
38
+ readonly strengths: readonly SwotItem[];
39
+ /** Internal weaknesses — negative factors within EU Parliament control */
40
+ readonly weaknesses: readonly SwotItem[];
41
+ /** External opportunities — positive external factors */
42
+ readonly opportunities: readonly SwotItem[];
43
+ /** External threats — negative external factors */
44
+ readonly threats: readonly SwotItem[];
45
+ }
46
+ /**
47
+ * Localized strings for SWOT analysis section headings, quadrant labels,
48
+ * and accessible descriptions. Used by SWOT visualization generators
49
+ * (including `buildSwotSection()`) for multi-language article rendering.
50
+ */
51
+ export interface SwotStrings {
52
+ /** Section heading (e.g. "SWOT Analysis") */
53
+ readonly sectionHeading: string;
54
+ /** Quadrant labels */
55
+ readonly strengthsLabel: string;
56
+ readonly weaknessesLabel: string;
57
+ readonly opportunitiesLabel: string;
58
+ readonly threatsLabel: string;
59
+ /** Accessible quadrant descriptions */
60
+ readonly strengthsDesc: string;
61
+ readonly weaknessesDesc: string;
62
+ readonly opportunitiesDesc: string;
63
+ readonly threatsDesc: string;
64
+ /** Axis labels */
65
+ readonly internalLabel: string;
66
+ readonly externalLabel: string;
67
+ }
68
+ /**
69
+ * A single key metric displayed as a card in a dashboard.
70
+ */
71
+ export interface DashboardMetric {
72
+ /** Human-readable label for the metric */
73
+ readonly label: string;
74
+ /** Formatted display value (e.g. "85%", "1,234", "€2.5M") */
75
+ readonly value: string;
76
+ /** Optional percentage change from previous period */
77
+ readonly change?: number | undefined;
78
+ /** Optional trend direction */
79
+ readonly trend?: 'up' | 'down' | 'stable' | undefined;
80
+ /** Optional unit suffix (e.g. "%", "MEPs", "votes") */
81
+ readonly unit?: string | undefined;
82
+ }
83
+ /**
84
+ * A single point in a scatter dataset.
85
+ */
86
+ export interface ScatterPoint {
87
+ /** X-axis value */
88
+ readonly x: number;
89
+ /** Y-axis value */
90
+ readonly y: number;
91
+ }
92
+ /**
93
+ * A single point in a bubble dataset.
94
+ */
95
+ export interface BubblePoint {
96
+ /** X-axis value */
97
+ readonly x: number;
98
+ /** Y-axis value */
99
+ readonly y: number;
100
+ /** Bubble radius in pixels */
101
+ readonly r: number;
102
+ }
103
+ /**
104
+ * A single dataset within a chart.
105
+ * For bar/line/pie/doughnut/radar/polarArea charts, `data` is `number[]`.
106
+ * For scatter charts, `data` is `ScatterPoint[]`.
107
+ * For bubble charts, `data` is `BubblePoint[]`.
108
+ * Maps to Chart.js dataset configuration.
109
+ */
110
+ export interface ChartDataset {
111
+ /** Dataset label (shown in legend) */
112
+ readonly label: string;
113
+ /** Data points — numbers for most chart types, point objects for scatter/bubble */
114
+ readonly data: readonly number[] | readonly ScatterPoint[] | readonly BubblePoint[];
115
+ /** Background color(s) — single color or array for per-point colors */
116
+ readonly backgroundColor?: string | readonly string[] | undefined;
117
+ /** Border color(s) — single color or array for per-point colors */
118
+ readonly borderColor?: string | readonly string[] | undefined;
119
+ }
120
+ /**
121
+ * Chart data configuration.
122
+ * Maps to Chart.js data structure.
123
+ */
124
+ export interface ChartData {
125
+ /** Category labels for the x-axis or pie segments */
126
+ readonly labels: readonly string[];
127
+ /** One or more datasets to plot */
128
+ readonly datasets: readonly ChartDataset[];
129
+ }
130
+ /**
131
+ * Chart configuration for dashboard visualizations.
132
+ * Generates a `<canvas>` element with embedded JSON configuration
133
+ * that can be hydrated by Chart.js on the client side.
134
+ */
135
+ export interface ChartConfig {
136
+ /** Chart type — matches Chart.js chart types */
137
+ readonly type: 'bar' | 'line' | 'pie' | 'doughnut' | 'radar' | 'polarArea' | 'scatter' | 'bubble';
138
+ /** Chart title displayed above the chart */
139
+ readonly title?: string | undefined;
140
+ /** Chart data (labels + datasets) */
141
+ readonly data: ChartData;
142
+ /** Optional Chart.js options override (scales, plugins, annotation, etc.) */
143
+ readonly options?: Record<string, unknown> | undefined;
144
+ }
145
+ /**
146
+ * A single panel within a dashboard.
147
+ * Can contain metrics, a chart, or both.
148
+ */
149
+ export interface DashboardPanel {
150
+ /** Panel heading */
151
+ readonly title: string;
152
+ /** Optional key metrics displayed as cards */
153
+ readonly metrics?: readonly DashboardMetric[] | undefined;
154
+ /** Optional chart configuration */
155
+ readonly chart?: ChartConfig | undefined;
156
+ }
157
+ /**
158
+ * Complete dashboard configuration.
159
+ * Used by agentic workflows to generate data dashboards for any article type
160
+ * using data from European Parliament MCP, World Bank API, or other sources.
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * const dashboard: DashboardConfig = {
165
+ * title: 'Legislative Activity Overview',
166
+ * panels: [
167
+ * {
168
+ * title: 'Voting Statistics',
169
+ * metrics: [
170
+ * { label: 'Total Votes', value: '1,234', trend: 'up', change: 5.2 },
171
+ * { label: 'Participation Rate', value: '87%', trend: 'stable' },
172
+ * ],
173
+ * chart: {
174
+ * type: 'bar',
175
+ * data: {
176
+ * labels: ['EPP', 'S&D', 'Renew', 'Greens/EFA'],
177
+ * datasets: [{ label: 'Votes Cast', data: [400, 350, 200, 150] }],
178
+ * },
179
+ * },
180
+ * },
181
+ * ],
182
+ * };
183
+ * ```
184
+ */
185
+ export interface DashboardConfig {
186
+ /** Dashboard heading */
187
+ readonly title?: string | undefined;
188
+ /** Dashboard panels — each contains metrics and/or a chart */
189
+ readonly panels: readonly DashboardPanel[];
190
+ }
191
+ /**
192
+ * Localized strings for dashboard section UI text.
193
+ * Used for multi-language dashboard and article rendering.
194
+ */
195
+ export interface DashboardStrings {
196
+ /** Default section heading (e.g. "Dashboard") */
197
+ readonly sectionHeading: string;
198
+ /** Trend aria-label prefix (e.g. "Trend:") */
199
+ readonly trendPrefix: string;
200
+ /** Localized direction label for upward trend (e.g. "increasing") */
201
+ readonly trendUp: string;
202
+ /** Localized direction label for downward trend (e.g. "decreasing") */
203
+ readonly trendDown: string;
204
+ /** Localized direction label for stable trend (e.g. "stable") */
205
+ readonly trendStable: string;
206
+ /** Fallback text when chart has no data */
207
+ readonly noChartData: string;
208
+ /** Default chart aria-label */
209
+ readonly chartLabel: string;
210
+ /** Column header for category column in chart fallback tables (e.g. "Category") */
211
+ readonly categoryLabel: string;
212
+ }
213
+ /**
214
+ * Dimension name for multi-dimensional SWOT analysis.
215
+ * Covers political, economic, social, legal, and geopolitical perspectives.
216
+ */
217
+ export type SwotDimensionName = 'political' | 'economic' | 'social' | 'legal' | 'geopolitical';
218
+ /**
219
+ * Stakeholder type for perspective-based SWOT views.
220
+ */
221
+ export type StakeholderType = 'citizen' | 'industry' | 'ngo' | 'mep' | 'government' | 'media';
222
+ /**
223
+ * A single analytical dimension within a multi-dimensional SWOT assessment.
224
+ * Each dimension contains its own complete SWOT quadrant data, allowing
225
+ * drill-down analysis from political, economic, social, legal, or geopolitical angles.
226
+ */
227
+ export interface SwotDimension {
228
+ /** Dimension identifier */
229
+ readonly name: SwotDimensionName;
230
+ /** Internal strengths relevant to this dimension */
231
+ readonly strengths: readonly SwotItem[];
232
+ /** Internal weaknesses relevant to this dimension */
233
+ readonly weaknesses: readonly SwotItem[];
234
+ /** External opportunities relevant to this dimension */
235
+ readonly opportunities: readonly SwotItem[];
236
+ /** External threats relevant to this dimension */
237
+ readonly threats: readonly SwotItem[];
238
+ }
239
+ /**
240
+ * Cross-reference linking a SWOT item to a specific EP document or vote.
241
+ * Provides evidence anchoring for AI-generated SWOT assessments.
242
+ */
243
+ export interface SwotCrossReference {
244
+ /** Excerpt or key text of the SWOT item being referenced */
245
+ readonly itemText: string;
246
+ /** EP document or vote identifier (e.g. "TA-10-2024-0001") */
247
+ readonly documentId: string;
248
+ /** Human-readable document or vote title */
249
+ readonly documentTitle: string;
250
+ /** Optional URL to the EP document */
251
+ readonly url?: string | undefined;
252
+ }
253
+ /**
254
+ * Temporal SWOT assessment showing evolution of the analysis
255
+ * across short, medium, and long time horizons.
256
+ */
257
+ export interface TemporalSwotAssessment {
258
+ /** Short-term view — covers the current week's agenda and immediate impacts */
259
+ readonly shortTerm: SwotAnalysis;
260
+ /** Medium-term view — covers the current quarter's legislative activity */
261
+ readonly mediumTerm: SwotAnalysis;
262
+ /** Long-term view — covers the current parliamentary term (optional) */
263
+ readonly longTerm?: SwotAnalysis | undefined;
264
+ }
265
+ /**
266
+ * Multi-dimensional SWOT analysis with political context depth.
267
+ * Extends the basic SWOT framework with dimension-specific drill-downs,
268
+ * stakeholder perspectives, temporal tracking, and evidence cross-references.
269
+ *
270
+ * @example
271
+ * ```typescript
272
+ * const mdSwot: MultiDimensionalSwot = {
273
+ * title: 'AI Act — Multi-Dimensional Assessment',
274
+ * dimensions: [
275
+ * {
276
+ * name: 'political',
277
+ * strengths: [{ text: 'Broad cross-party consensus', severity: 'high' }],
278
+ * weaknesses: [], opportunities: [], threats: [],
279
+ * },
280
+ * ],
281
+ * temporal: {
282
+ * shortTerm: { strengths: [], weaknesses: [], opportunities: [], threats: [] },
283
+ * mediumTerm: { strengths: [], weaknesses: [], opportunities: [], threats: [] },
284
+ * },
285
+ * };
286
+ * ```
287
+ */
288
+ export interface MultiDimensionalSwot {
289
+ /** Optional title for the full analysis */
290
+ readonly title?: string | undefined;
291
+ /** Per-dimension SWOT quadrant data */
292
+ readonly dimensions: readonly SwotDimension[];
293
+ /** Temporal assessment (short / medium / long term) */
294
+ readonly temporal?: TemporalSwotAssessment | undefined;
295
+ /** Stakeholder-specific perspectives */
296
+ readonly stakeholderViews?: Readonly<Partial<Record<StakeholderType, SwotAnalysis>>> | undefined;
297
+ /** Links from SWOT items to specific EP documents or votes */
298
+ readonly crossReferences?: readonly SwotCrossReference[] | undefined;
299
+ }
300
+ /**
301
+ * Localized UI strings for the multi-dimensional SWOT visualization.
302
+ * Covers dimension labels, stakeholder names, temporal headings, and evidence labels.
303
+ */
304
+ export interface MultiDimensionalSwotStrings {
305
+ /** Heading for the dimensions drill-down section */
306
+ readonly dimensionsLabel: string;
307
+ /** Heading for the stakeholder perspectives section */
308
+ readonly stakeholderPerspectivesLabel: string;
309
+ /** Heading for the temporal analysis section */
310
+ readonly temporalAnalysisLabel: string;
311
+ /** Label for the short-term temporal period */
312
+ readonly shortTermLabel: string;
313
+ /** Label for the medium-term temporal period */
314
+ readonly mediumTermLabel: string;
315
+ /** Label for the long-term temporal period */
316
+ readonly longTermLabel: string;
317
+ /** Localized name for the political dimension */
318
+ readonly dimensionPolitical: string;
319
+ /** Localized name for the economic dimension */
320
+ readonly dimensionEconomic: string;
321
+ /** Localized name for the social dimension */
322
+ readonly dimensionSocial: string;
323
+ /** Localized name for the legal dimension */
324
+ readonly dimensionLegal: string;
325
+ /** Localized name for the geopolitical dimension */
326
+ readonly dimensionGeopolitical: string;
327
+ /** Localized label for citizen stakeholder */
328
+ readonly stakeholderCitizen: string;
329
+ /** Localized label for industry stakeholder */
330
+ readonly stakeholderIndustry: string;
331
+ /** Localized label for NGO / civil society stakeholder */
332
+ readonly stakeholderNgo: string;
333
+ /** Localized label for MEP stakeholder */
334
+ readonly stakeholderMep: string;
335
+ /** Localized label for government stakeholder */
336
+ readonly stakeholderGovernment: string;
337
+ /** Localized label for media stakeholder */
338
+ readonly stakeholderMedia: string;
339
+ /** Label for evidence items */
340
+ readonly evidenceLabel: string;
341
+ /** Heading for the cross-references section */
342
+ readonly crossReferencesLabel: string;
343
+ }
344
+ /**
345
+ * Localized strings for SWOT builder item text across all 5 analysis types.
346
+ * Template functions accept dynamic counts; plain strings are static prose.
347
+ */
348
+ export interface SwotBuilderStrings {
349
+ readonly votingHighCohesion: (count: number) => string;
350
+ readonly votingAdopted: (count: number) => string;
351
+ readonly votingActiveVotes: (count: number) => string;
352
+ readonly votingLowCohesion: (count: number) => string;
353
+ readonly votingAnomalies: (count: number) => string;
354
+ readonly votingCrossParty: string;
355
+ readonly votingDiverseGroups: (count: number) => string;
356
+ readonly votingHighSeverity: (count: number) => string;
357
+ readonly votingShiftingAlliances: string;
358
+ readonly prospectiveEvents: (count: number) => string;
359
+ readonly prospectiveCommittees: (count: number) => string;
360
+ readonly prospectiveBottlenecks: (count: number) => string;
361
+ readonly prospectiveHighDensity: (count: number) => string;
362
+ readonly prospectiveDocuments: (count: number) => string;
363
+ readonly prospectiveQuestions: (count: number) => string;
364
+ readonly prospectiveBottleneckRisk: string;
365
+ readonly prospectiveSchedulingRisk: string;
366
+ readonly breakingAdopted: (count: number) => string;
367
+ readonly breakingEvents: (count: number) => string;
368
+ readonly breakingAnomalyWeakness: string;
369
+ readonly breakingNoProcedures: string;
370
+ readonly breakingProceduresActive: (count: number) => string;
371
+ readonly breakingCoalitionOpportunity: string;
372
+ readonly breakingAnomalyThreat: string;
373
+ readonly breakingRapidEvents: string;
374
+ readonly propositionsHealthStrong: (pct: string) => string;
375
+ readonly propositionsThroughputGood: (rate: number) => string;
376
+ readonly propositionsHealthWeak: (pct: string) => string;
377
+ readonly propositionsThroughputLow: (rate: number) => string;
378
+ readonly propositionsPrioritisation: string;
379
+ readonly propositionsTrilogueAcceleration: string;
380
+ readonly propositionsCriticalCongestion: string;
381
+ readonly propositionsOverlapping: string;
382
+ readonly committeeActive: (active: number, total: number) => string;
383
+ readonly committeeDocuments: (count: number) => string;
384
+ readonly committeeInactive: (count: number) => string;
385
+ readonly committeeCrossCollaboration: string;
386
+ readonly committeeHearings: string;
387
+ readonly committeeLowActivity: string;
388
+ readonly committeeCompetingPriorities: string;
389
+ }
390
+ /**
391
+ * Category of a node within an intelligence mindmap.
392
+ * - `policy_domain` — top-level EU policy area (e.g. ENVI, ECON, AFET)
393
+ * - `sub_topic` — sub-issue within a policy domain
394
+ * - `actor` — MEP, political group, committee, or external stakeholder
395
+ * - `action` — a specific legislative act or parliamentary action
396
+ * - `outcome` — the result or consequence of an action
397
+ */
398
+ export type MindmapNodeCategory = 'policy_domain' | 'sub_topic' | 'actor' | 'action' | 'outcome';
399
+ /**
400
+ * Type of connection between two nodes in an intelligence mindmap.
401
+ * - `legislative` — formal procedural/legal link between nodes
402
+ * - `political` — alliance, coalition, or adversarial political relationship
403
+ * - `procedural` — committee-stage or plenary procedural link
404
+ * - `thematic` — shared policy theme or topic overlap
405
+ */
406
+ export type PolicyConnectionType = 'legislative' | 'political' | 'procedural' | 'thematic';
407
+ /**
408
+ * Strength of a policy connection.
409
+ * - `strong` — clearly evidenced, high-confidence link
410
+ * - `moderate` — supported by indirect evidence
411
+ * - `weak` — emerging or low-confidence relationship
412
+ */
413
+ export type PolicyConnectionStrength = 'strong' | 'moderate' | 'weak';
414
+ /**
415
+ * Type of actor in the actor-network.
416
+ * - `mep` — individual Member of European Parliament
417
+ * - `group` — political group (EPP, S&D, Renew, etc.)
418
+ * - `committee` — EP standing committee (ENVI, ECON, etc.)
419
+ * - `external` — non-EP stakeholder (Commission, Council, NGO, etc.)
420
+ */
421
+ export type ActorType = 'mep' | 'group' | 'committee' | 'external';
422
+ /**
423
+ * Pre-defined semantic color roles for mindmap branch nodes.
424
+ * When assigned to `MindmapNode.color`, selects the corresponding branch
425
+ * palette entry (overriding the default category-based colors).
426
+ */
427
+ export type MindmapBranchColor = 'cyan' | 'magenta' | 'yellow' | 'green' | 'purple' | 'orange' | 'blue' | 'red';
428
+ /**
429
+ * A single node in the intelligence mindmap.
430
+ * Nodes are arranged in depth layers: domain → sub-topic → actor → action → outcome.
431
+ */
432
+ export interface MindmapNode {
433
+ /** Unique node identifier (used for connection references). */
434
+ readonly id: string;
435
+ /** Human-readable label rendered inside the node. */
436
+ readonly label: string;
437
+ /** Node category determining visual styling. */
438
+ readonly category: MindmapNodeCategory;
439
+ /** Normalized influence weight 0–1 (drives `--node-influence` CSS var). */
440
+ readonly influence: number;
441
+ /**
442
+ * Optional semantic color key from the 8-color branch palette.
443
+ * When set to a valid `MindmapBranchColor` key (cyan, green, red, etc.),
444
+ * overrides the default category-based palette for this node.
445
+ * When omitted, the renderer falls back to the category palette.
446
+ */
447
+ readonly color?: MindmapBranchColor | undefined;
448
+ /** Child nodes one layer deeper in the hierarchy. */
449
+ readonly children: readonly MindmapNode[];
450
+ /** Optional EP-specific metadata for hover/detail rendering. */
451
+ readonly metadata?: {
452
+ readonly committee?: string | undefined;
453
+ readonly politicalGroup?: string | undefined;
454
+ readonly documentRef?: string | undefined;
455
+ } | undefined;
456
+ }
457
+ /**
458
+ * A single depth layer in the intelligence mindmap hierarchy.
459
+ * Layer 0 is the central topic; higher depths are progressively detailed.
460
+ */
461
+ export interface MindmapLayer {
462
+ /** Layer depth (0 = center, 1 = domains, 2 = sub-topics, 3 = actors, 4 = actions/outcomes). */
463
+ readonly depth: number;
464
+ /** Nodes belonging to this layer. */
465
+ readonly nodes: readonly MindmapNode[];
466
+ }
467
+ /**
468
+ * A directed connection between two endpoints in the intelligence mindmap.
469
+ * Endpoints may reference either layer node IDs or actorNetwork IDs,
470
+ * allowing connections between rendered domain nodes and actor-network
471
+ * entities (e.g., anomaly or pipeline procedure nodes).
472
+ */
473
+ export interface PolicyConnection {
474
+ /** ID of the source endpoint (layer node or actorNetwork node). */
475
+ readonly from: string;
476
+ /** ID of the target endpoint (layer node or actorNetwork node). */
477
+ readonly to: string;
478
+ /** Confidence level of the relationship. */
479
+ readonly strength: PolicyConnectionStrength;
480
+ /** Nature of the relationship. */
481
+ readonly type: PolicyConnectionType;
482
+ /** EP document reference or description serving as evidence. */
483
+ readonly evidence: string;
484
+ }
485
+ /**
486
+ * A parliamentary or external actor node in the network.
487
+ * Used to represent MEPs, political groups, committees, or external stakeholders.
488
+ */
489
+ export interface ActorNode {
490
+ /** Unique actor identifier. */
491
+ readonly id: string;
492
+ /** Display name of the actor. */
493
+ readonly name: string;
494
+ /** Category of actor. */
495
+ readonly type: ActorType;
496
+ /** Normalized influence score 0–1. */
497
+ readonly influence: number;
498
+ /** IDs of connected nodes in the network. */
499
+ readonly connections: readonly string[];
500
+ }
501
+ /**
502
+ * Influence weight entry for a mindmap node.
503
+ * Provides justification for a node's computed influence score.
504
+ */
505
+ export interface InfluenceWeight {
506
+ /** Node being scored. */
507
+ readonly nodeId: string;
508
+ /** Normalized weight 0–1. */
509
+ readonly weight: number;
510
+ /** Human-readable factors explaining the score. */
511
+ readonly factors: readonly string[];
512
+ }
513
+ /**
514
+ * Complete intelligence mindmap data structure.
515
+ * Combines layered policy domain nodes, actor-network relationships,
516
+ * policy connections, and optional stakeholder perspective overlays.
517
+ *
518
+ * @example
519
+ * ```typescript
520
+ * const imap: IntelligenceMindmap = {
521
+ * centralTopic: 'EU Climate Policy Intelligence',
522
+ * layers: [{ depth: 1, nodes: [{ id: 'envi', label: 'Environment', category: 'policy_domain', ... }] }],
523
+ * connections: [{ from: 'envi', to: 'econ', strength: 'strong', type: 'legislative', evidence: 'Green Deal' }],
524
+ * actorNetwork: [{ id: 'envi-cmt', name: 'ENVI Committee', type: 'committee', influence: 0.9, connections: [] }],
525
+ * stakeholderGroups: ['Industry', 'Civil Society', 'Member States'],
526
+ * };
527
+ * ```
528
+ */
529
+ export interface IntelligenceMindmap {
530
+ /** Central topic label for the root node. */
531
+ readonly centralTopic: string;
532
+ /** Ordered depth layers from domains (1) to outcomes (4). */
533
+ readonly layers: readonly MindmapLayer[];
534
+ /** Cross-cutting connections between nodes in different branches. */
535
+ readonly connections: readonly PolicyConnection[];
536
+ /** Actor-network nodes (MEPs, groups, committees, external). */
537
+ readonly actorNetwork: readonly ActorNode[];
538
+ /** Optional stakeholder group labels for `<details>` overlay sections. */
539
+ readonly stakeholderGroups?: readonly string[] | undefined;
540
+ /** Optional summary rendered above the mindmap. */
541
+ readonly summary?: string | undefined;
542
+ }
543
+ /**
544
+ * A single voting bloc within a coalition.
545
+ */
546
+ export interface VotingBloc {
547
+ /** Name of the political group */
548
+ readonly group: string;
549
+ /** Alignment score with the coalition (0–100) */
550
+ readonly alignmentScore: number;
551
+ /** Optional seat count */
552
+ readonly seats?: number | undefined;
553
+ }
554
+ /**
555
+ * A defining vote that shaped coalition dynamics.
556
+ */
557
+ export interface VoteHighlight {
558
+ /** Vote title or description */
559
+ readonly title: string;
560
+ /** Outcome of the vote */
561
+ readonly outcome: 'adopted' | 'rejected' | 'split';
562
+ /** Votes in favour */
563
+ readonly votesFor: number;
564
+ /** Votes against */
565
+ readonly votesAgainst: number;
566
+ }
567
+ /**
568
+ * Coalition dynamics metrics for a parliamentary period.
569
+ * Used to build coalition radar charts and alignment visualizations.
570
+ */
571
+ export interface CoalitionMetrics {
572
+ /** Overall alignment score (0–100) */
573
+ readonly alignmentScore: number;
574
+ /** Identified voting blocs and their cohesion */
575
+ readonly votingBlocs: readonly VotingBloc[];
576
+ /** Overall trend direction */
577
+ readonly shiftIndicator: 'strengthening' | 'weakening' | 'stable';
578
+ /** Defining votes that illustrate coalition dynamics */
579
+ readonly keyVotes?: readonly VoteHighlight[] | undefined;
580
+ }
581
+ /**
582
+ * Legislative pipeline status with color-coded health indicators.
583
+ * Used to build pipeline bar charts and status visualizations.
584
+ */
585
+ export interface LegislativePipeline {
586
+ /** Overall pipeline health (0–100) */
587
+ readonly healthScore: number;
588
+ /** Number of on-track procedures */
589
+ readonly onTrack: number;
590
+ /** Number of delayed procedures */
591
+ readonly delayed: number;
592
+ /** Number of blocked procedures */
593
+ readonly blocked: number;
594
+ /** Number of fast-tracked procedures */
595
+ readonly fastTracked: number;
596
+ /** Total procedures in pipeline */
597
+ readonly total: number;
598
+ }
599
+ /**
600
+ * A single trend metric data point for sparkline charts.
601
+ */
602
+ export interface TrendMetric {
603
+ /** Period label (e.g., "Week 1", "Jan") */
604
+ readonly period: string;
605
+ /** Numeric value for this period */
606
+ readonly value: number;
607
+ }
608
+ /**
609
+ * Trend analytics for cross-article activity patterns.
610
+ * Used to build sparkline charts and comparison tables.
611
+ */
612
+ export interface TrendAnalytics {
613
+ /** Trend period granularity */
614
+ readonly period: 'weekly' | 'monthly' | 'quarterly';
615
+ /** Trend metrics over time */
616
+ readonly metrics: readonly TrendMetric[];
617
+ /** Overall direction of the trend */
618
+ readonly direction: 'improving' | 'declining' | 'stable';
619
+ /** Week-over-week change percentage */
620
+ readonly weekOverWeekChange?: number | undefined;
621
+ /** Month-over-month change percentage */
622
+ readonly monthOverMonthChange?: number | undefined;
623
+ }
624
+ /**
625
+ * Stakeholder impact metric for scorecards.
626
+ */
627
+ export interface StakeholderMetric {
628
+ /** Stakeholder group name */
629
+ readonly stakeholder: string;
630
+ /** Impact intensity (0–100) */
631
+ readonly impactScore: number;
632
+ /** Impact direction */
633
+ readonly impactDirection: 'positive' | 'negative' | 'neutral';
634
+ /** Brief description of impact */
635
+ readonly description?: string | undefined;
636
+ }
637
+ /**
638
+ * Localized strings for Dashboard builder panel titles and metric labels
639
+ * across all 5 analysis types.
640
+ */
641
+ export interface DashboardBuilderStrings {
642
+ readonly votingOverview: string;
643
+ readonly totalVotes: string;
644
+ readonly adopted: string;
645
+ readonly rejected: string;
646
+ readonly anomalies: string;
647
+ readonly politicalGroupCohesion: string;
648
+ readonly groupCohesionRates: string;
649
+ readonly cohesionPct: string;
650
+ readonly scheduledActivity: string;
651
+ readonly plenaryEvents: string;
652
+ readonly committeeMeetings: string;
653
+ readonly documents: string;
654
+ readonly pipelineProcedures: string;
655
+ readonly parliamentaryQuestions: string;
656
+ readonly questionsFiled: string;
657
+ readonly bottleneckProcedures: string;
658
+ readonly feedActivity: string;
659
+ readonly adoptedTexts: string;
660
+ readonly events: string;
661
+ readonly procedures: string;
662
+ readonly mepUpdates: string;
663
+ readonly activitySummary: string;
664
+ readonly totalItems: string;
665
+ readonly feedBreakdown: string;
666
+ readonly items: string;
667
+ readonly pipelineHealth: string;
668
+ readonly healthScore: string;
669
+ readonly throughput: string;
670
+ readonly status: string;
671
+ readonly pipelineStrong: string;
672
+ readonly pipelineModerate: string;
673
+ readonly pipelineWeak: string;
674
+ readonly committeeOverview: string;
675
+ readonly totalCommittees: string;
676
+ readonly activeCommittees: string;
677
+ readonly activityRate: string;
678
+ readonly documentsProduced: string;
679
+ readonly documentOutputByCommittee: string;
680
+ readonly documentsPerCommittee: string;
681
+ readonly coalitionAlignment: string;
682
+ readonly alignmentScore: string;
683
+ readonly votingBlocs: string;
684
+ readonly coalitionShift: string;
685
+ readonly coalitionStrengthening: string;
686
+ readonly coalitionWeakening: string;
687
+ readonly coalitionStable: string;
688
+ readonly coalitionRadarChart: string;
689
+ readonly pipelineStatus: string;
690
+ readonly onTrack: string;
691
+ readonly delayed: string;
692
+ readonly blocked: string;
693
+ readonly fastTracked: string;
694
+ readonly pipelineStatusChart: string;
695
+ readonly trendAnalysis: string;
696
+ readonly weekOverWeek: string;
697
+ readonly monthOverMonth: string;
698
+ readonly trendImproving: string;
699
+ readonly trendDeclining: string;
700
+ readonly trendStableLabel: string;
701
+ readonly activityTrendChart: string;
702
+ readonly stakeholderImpact: string;
703
+ readonly impactScore: string;
704
+ readonly impactPositive: string;
705
+ readonly impactNegative: string;
706
+ readonly impactNeutral: string;
707
+ }
708
+ //# sourceMappingURL=visualization.d.ts.map