euparliamentmonitor 1.0.26 → 1.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -136,13 +136,14 @@ The published site is the audience-facing companion to this npm/TypeScript packa
|
|
|
136
136
|
|
|
137
137
|
**MCP Server Integration**: The project uses the
|
|
138
138
|
[European-Parliament-MCP-Server](https://github.com/Hack23/European-Parliament-MCP-Server)
|
|
139
|
-
v1.3.
|
|
139
|
+
package version v1.3.38 for accessing real EU Parliament data via the Model Context Protocol; the Copilot runner in `.github/workflows/copilot-setup-steps.yml` currently installs v1.3.20 for the local MCP environment.
|
|
140
140
|
|
|
141
141
|
- **MCP Server Status**: ✅ Fully operational — 60+ EP data tools available
|
|
142
142
|
(feeds, direct lookups, analytical tools, intelligence correlation)
|
|
143
143
|
- **Agentic Workflows**: 15 unified gh-aw markdown workflows — 14 article types (`news-<type>.md`, Stages A → B → C → D → E in one session) + `news-translate.md` (14-language flush translation) — compiled with
|
|
144
|
-
`gh-aw v0.
|
|
144
|
+
`gh-aw v0.82.3` (pin in `.github/workflows/compile-agentic-workflows.yml`) to `.lock.yml` for automated news generation with AI-driven political
|
|
145
145
|
intelligence analysis. See [`.github/workflows/README.md`](.github/workflows/README.md).
|
|
146
|
+
- **Toolchain**: The build pipeline targets Node.js 26, uses TypeScript 6.0.2 as the default compiler, and keeps a dedicated TypeScript 7.0.1-rc compatibility build via `npm run tsc:7`.
|
|
146
147
|
- **Analysis-Artifact-Driven Article Pipeline**: Agents author the full
|
|
147
148
|
Stage-B analysis-artifact set (`analysis/daily/<date>/<slug>/`, 39
|
|
148
149
|
structured templates per run; repeat same-day runs reuse the folder and
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "euparliamentmonitor",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.28",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "European Parliament Intelligence Platform - Monitor political activity with systematic transparency",
|
|
6
6
|
"main": "scripts/index.js",
|
|
@@ -58,9 +58,10 @@
|
|
|
58
58
|
"scripts": {
|
|
59
59
|
"prebuild": "node scripts/generators/build-info.js && node scripts/generators/news-indexes.js && node scripts/generators/sitemap.js",
|
|
60
60
|
"generate-build-info": "node scripts/generators/build-info.js",
|
|
61
|
-
"
|
|
62
|
-
"build
|
|
63
|
-
"build:check
|
|
61
|
+
"tsc:7": "node ./node_modules/typescript-7/bin/tsc",
|
|
62
|
+
"build": "npm run tsc:7",
|
|
63
|
+
"build:check": "npm run tsc:7 -- --noEmit",
|
|
64
|
+
"build:check-tests": "npm run tsc:7 -- --project tsconfig.test.json --noEmit",
|
|
64
65
|
"copy-vendor": "node scripts/copy-vendor.js",
|
|
65
66
|
"validate-analysis": "node scripts/validate-analysis-completeness.js",
|
|
66
67
|
"discover:untranslated-briefs": "node scripts/discover-untranslated-briefs.js",
|
|
@@ -155,16 +156,16 @@
|
|
|
155
156
|
"@eslint/js": "10.0.1",
|
|
156
157
|
"@playwright/test": "1.61.1",
|
|
157
158
|
"@types/d3": "7.4.3",
|
|
158
|
-
"@types/markdown-it": "
|
|
159
|
-
"@types/node": "26.1.
|
|
159
|
+
"@types/markdown-it": "14.1.2",
|
|
160
|
+
"@types/node": "26.1.1",
|
|
160
161
|
"@types/papaparse": "5.5.2",
|
|
161
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
162
|
-
"@typescript-eslint/parser": "8.
|
|
162
|
+
"@typescript-eslint/eslint-plugin": "8.63.0",
|
|
163
|
+
"@typescript-eslint/parser": "8.63.0",
|
|
163
164
|
"@vitest/coverage-v8": "4.1.10",
|
|
164
165
|
"@vitest/ui": "4.1.10",
|
|
165
166
|
"chart.js": "4.5.1",
|
|
166
167
|
"chartjs-plugin-annotation": "3.1.0",
|
|
167
|
-
"clean-css": "
|
|
168
|
+
"clean-css": "5.3.3",
|
|
168
169
|
"d3": "7.9.0",
|
|
169
170
|
"esbuild": "0.28.1",
|
|
170
171
|
"eslint": "10.6.0",
|
|
@@ -172,46 +173,47 @@
|
|
|
172
173
|
"eslint-plugin-jsdoc": "63.0.12",
|
|
173
174
|
"eslint-plugin-security": "4.0.1",
|
|
174
175
|
"eslint-plugin-sonarjs": "4.1.0",
|
|
175
|
-
"fast-check": "
|
|
176
|
+
"fast-check": "4.8.0",
|
|
176
177
|
"happy-dom": "20.10.6",
|
|
177
|
-
"html-minifier-terser": "
|
|
178
|
+
"html-minifier-terser": "7.2.0",
|
|
178
179
|
"htmlhint": "1.9.2",
|
|
179
180
|
"husky": "9.1.7",
|
|
180
181
|
"jscpd": "5.0.11",
|
|
181
|
-
"knip": "
|
|
182
|
+
"knip": "6.25.0",
|
|
182
183
|
"lint-staged": "17.0.8",
|
|
183
184
|
"mermaid": "11.16.0",
|
|
184
185
|
"papaparse": "5.5.4",
|
|
185
186
|
"prettier": "3.9.4",
|
|
186
187
|
"purgecss": "8.0.0",
|
|
187
|
-
"sharp": "
|
|
188
|
-
"terser": "
|
|
188
|
+
"sharp": "0.35.3",
|
|
189
|
+
"terser": "5.48.0",
|
|
189
190
|
"ts-api-utils": "2.5.0",
|
|
190
191
|
"tsx": "4.23.0",
|
|
191
192
|
"typedoc": "0.28.20",
|
|
192
|
-
"typescript": "6.0.
|
|
193
|
+
"typescript": "npm:@typescript/typescript6@6.0.2",
|
|
194
|
+
"typescript-7": "npm:typescript@7.0.1-rc",
|
|
193
195
|
"vitest": "4.1.10",
|
|
194
|
-
"yaml": "
|
|
196
|
+
"yaml": "2.9.0"
|
|
195
197
|
},
|
|
196
198
|
"engines": {
|
|
197
199
|
"node": ">=26"
|
|
198
200
|
},
|
|
199
201
|
"dependencies": {
|
|
200
|
-
"european-parliament-mcp-server": "1.3.
|
|
201
|
-
"markdown-it": "
|
|
202
|
-
"markdown-it-anchor": "
|
|
203
|
-
"markdown-it-attrs": "
|
|
204
|
-
"markdown-it-deflist": "
|
|
205
|
-
"markdown-it-footnote": "
|
|
202
|
+
"european-parliament-mcp-server": "1.3.39",
|
|
203
|
+
"markdown-it": "14.3.0",
|
|
204
|
+
"markdown-it-anchor": "9.2.1",
|
|
205
|
+
"markdown-it-attrs": "5.0.0",
|
|
206
|
+
"markdown-it-deflist": "3.0.1",
|
|
207
|
+
"markdown-it-footnote": "4.0.0"
|
|
206
208
|
},
|
|
207
209
|
"optionalDependencies": {
|
|
208
210
|
"worldbank-mcp": "1.0.1"
|
|
209
211
|
},
|
|
210
212
|
"overrides": {
|
|
211
|
-
"flatted": "
|
|
212
|
-
"path-to-regexp": "
|
|
213
|
-
"ip-address": "
|
|
214
|
-
"uuid": "
|
|
213
|
+
"flatted": "3.4.2",
|
|
214
|
+
"path-to-regexp": "8.4.2",
|
|
215
|
+
"ip-address": "10.2.0",
|
|
216
|
+
"uuid": "14.0.1",
|
|
215
217
|
"qs": "6.15.2"
|
|
216
218
|
}
|
|
217
219
|
}
|
|
@@ -48,7 +48,7 @@ export declare const A_INTEL_ASSESSMENT = "extended/intelligence-assessment.md";
|
|
|
48
48
|
export declare const A_MEDIA_FRAMING = "extended/media-framing-analysis.md";
|
|
49
49
|
export declare const A_DEEP_ANALYSIS_EXISTING = "existing/deep-analysis.md";
|
|
50
50
|
/** Standard EP MCP feeds reused across horizons. */
|
|
51
|
-
export declare const STANDARD_FEEDS: readonly [
|
|
51
|
+
export declare const STANDARD_FEEDS: readonly ['get_plenary_sessions', 'get_meeting_foreseen_activities', 'get_voting_records', 'get_meps', 'get_political_groups', 'get_committee_info', 'get_procedures', 'get_external_documents'];
|
|
52
52
|
/** Mandatory artifacts shared by every prospective horizon. Long-horizon
|
|
53
53
|
* variants additionally require `forward-projection.md`.
|
|
54
54
|
*
|
|
@@ -21,44 +21,44 @@
|
|
|
21
21
|
* `search-indicators` would reveal a more specific indicator for the policy topic.
|
|
22
22
|
*/
|
|
23
23
|
/** Priority value for indicators that should always be fetched */
|
|
24
|
-
export declare const PRI:
|
|
24
|
+
export declare const PRI: 'primary';
|
|
25
25
|
/** Priority value for indicators that are optional enrichment */
|
|
26
|
-
export declare const SEC:
|
|
26
|
+
export declare const SEC: 'secondary';
|
|
27
27
|
/** Reusable indicator display names (prevents sonarjs/no-duplicate-string) */
|
|
28
28
|
export declare const N: {
|
|
29
|
-
readonly GDP_GROWTH:
|
|
30
|
-
readonly GDP:
|
|
31
|
-
readonly GDP_PER_CAPITA:
|
|
32
|
-
readonly INFLATION:
|
|
33
|
-
readonly UNEMPLOYMENT:
|
|
34
|
-
readonly TRADE:
|
|
35
|
-
readonly CO2:
|
|
36
|
-
readonly RENEWABLE:
|
|
37
|
-
readonly ENERGY:
|
|
38
|
-
readonly FOREST:
|
|
39
|
-
readonly POPULATION:
|
|
40
|
-
readonly POP_GROWTH:
|
|
41
|
-
readonly LIFE_EXPECTANCY:
|
|
42
|
-
readonly NET_MIGRATION:
|
|
43
|
-
readonly LABOR:
|
|
44
|
-
readonly EMPLOYMENT:
|
|
45
|
-
readonly YOUTH_UNEMP:
|
|
46
|
-
readonly RD:
|
|
47
|
-
readonly EDUCATION:
|
|
48
|
-
readonly TERTIARY:
|
|
49
|
-
readonly HEALTH:
|
|
50
|
-
readonly HOSPITAL:
|
|
51
|
-
readonly AGRICULTURE:
|
|
52
|
-
readonly CEREAL:
|
|
53
|
-
readonly ARABLE:
|
|
54
|
-
readonly TAX:
|
|
55
|
-
readonly GOV_EXP:
|
|
56
|
-
readonly MILITARY:
|
|
57
|
-
readonly INTERNET:
|
|
58
|
-
readonly HIGHTECH:
|
|
59
|
-
readonly FDI:
|
|
60
|
-
readonly GNI:
|
|
61
|
-
readonly GINI:
|
|
29
|
+
readonly GDP_GROWTH: 'GDP Growth';
|
|
30
|
+
readonly GDP: 'GDP';
|
|
31
|
+
readonly GDP_PER_CAPITA: 'GDP per Capita';
|
|
32
|
+
readonly INFLATION: 'Inflation';
|
|
33
|
+
readonly UNEMPLOYMENT: 'Unemployment';
|
|
34
|
+
readonly TRADE: 'Trade';
|
|
35
|
+
readonly CO2: 'CO₂ Emissions';
|
|
36
|
+
readonly RENEWABLE: 'Renewable Energy';
|
|
37
|
+
readonly ENERGY: 'Energy Use';
|
|
38
|
+
readonly FOREST: 'Forest Area';
|
|
39
|
+
readonly POPULATION: 'Population';
|
|
40
|
+
readonly POP_GROWTH: 'Population Growth';
|
|
41
|
+
readonly LIFE_EXPECTANCY: 'Life Expectancy';
|
|
42
|
+
readonly NET_MIGRATION: 'Net Migration';
|
|
43
|
+
readonly LABOR: 'Labor Participation';
|
|
44
|
+
readonly EMPLOYMENT: 'Employment Ratio';
|
|
45
|
+
readonly YOUTH_UNEMP: 'Youth Unemployment';
|
|
46
|
+
readonly RD: 'R&D Expenditure';
|
|
47
|
+
readonly EDUCATION: 'Education Expenditure';
|
|
48
|
+
readonly TERTIARY: 'Tertiary Enrollment';
|
|
49
|
+
readonly HEALTH: 'Health Expenditure';
|
|
50
|
+
readonly HOSPITAL: 'Hospital Beds';
|
|
51
|
+
readonly AGRICULTURE: 'Agriculture (% of GDP)';
|
|
52
|
+
readonly CEREAL: 'Cereal Yield';
|
|
53
|
+
readonly ARABLE: 'Arable Land';
|
|
54
|
+
readonly TAX: 'Tax Revenue';
|
|
55
|
+
readonly GOV_EXP: 'Government Expenditure';
|
|
56
|
+
readonly MILITARY: 'Military Expenditure';
|
|
57
|
+
readonly INTERNET: 'Internet Users';
|
|
58
|
+
readonly HIGHTECH: 'High-tech Exports';
|
|
59
|
+
readonly FDI: 'FDI Net Inflows';
|
|
60
|
+
readonly GNI: 'GNI per Capita';
|
|
61
|
+
readonly GINI: 'GINI Index';
|
|
62
62
|
};
|
|
63
63
|
/**
|
|
64
64
|
* Extended set of World Bank indicator IDs relevant to EU Parliament policy areas.
|
|
@@ -71,73 +71,73 @@ export declare const N: {
|
|
|
71
71
|
*/
|
|
72
72
|
export declare const WB_INDICATORS: {
|
|
73
73
|
/** GDP (current US$) */
|
|
74
|
-
readonly GDP:
|
|
74
|
+
readonly GDP: 'NY.GDP.MKTP.CD';
|
|
75
75
|
/** GDP growth (annual %) */
|
|
76
|
-
readonly GDP_GROWTH:
|
|
76
|
+
readonly GDP_GROWTH: 'NY.GDP.MKTP.KD.ZG';
|
|
77
77
|
/** GDP per capita (current US$) */
|
|
78
|
-
readonly GDP_PER_CAPITA:
|
|
78
|
+
readonly GDP_PER_CAPITA: 'NY.GDP.PCAP.CD';
|
|
79
79
|
/** GNI per capita, Atlas method (current US$) */
|
|
80
|
-
readonly GNI_PER_CAPITA:
|
|
80
|
+
readonly GNI_PER_CAPITA: 'NY.GNP.PCAP.CD';
|
|
81
81
|
/** Inflation, consumer prices (annual %) */
|
|
82
|
-
readonly INFLATION:
|
|
82
|
+
readonly INFLATION: 'FP.CPI.TOTL.ZG';
|
|
83
83
|
/** Unemployment, total (% of total labor force) */
|
|
84
|
-
readonly UNEMPLOYMENT:
|
|
84
|
+
readonly UNEMPLOYMENT: 'SL.UEM.TOTL.ZS';
|
|
85
85
|
/** Trade (% of GDP) */
|
|
86
|
-
readonly TRADE:
|
|
86
|
+
readonly TRADE: 'NE.TRD.GNFS.ZS';
|
|
87
87
|
/** Exports of goods and services (% of GDP) */
|
|
88
|
-
readonly EXPORTS_GDP:
|
|
88
|
+
readonly EXPORTS_GDP: 'NE.EXP.GNFS.ZS';
|
|
89
89
|
/** Foreign direct investment, net inflows (% of GDP) */
|
|
90
|
-
readonly FDI_NET:
|
|
90
|
+
readonly FDI_NET: 'BX.KLT.DINV.WD.GD.ZS';
|
|
91
91
|
/** CO2 emissions (metric tons per capita) */
|
|
92
|
-
readonly CO2_EMISSIONS:
|
|
92
|
+
readonly CO2_EMISSIONS: 'EN.ATM.CO2E.PC';
|
|
93
93
|
/** Renewable energy consumption (% of total final energy consumption) */
|
|
94
|
-
readonly RENEWABLE_ENERGY:
|
|
94
|
+
readonly RENEWABLE_ENERGY: 'EG.FEC.RNEW.ZS';
|
|
95
95
|
/** Energy use (kg of oil equivalent per capita) */
|
|
96
|
-
readonly ENERGY_USE:
|
|
96
|
+
readonly ENERGY_USE: 'EG.USE.PCAP.KG.OE';
|
|
97
97
|
/** Forest area (% of land area) */
|
|
98
|
-
readonly FOREST_AREA:
|
|
98
|
+
readonly FOREST_AREA: 'AG.LND.FRST.ZS';
|
|
99
99
|
/** Population, total */
|
|
100
|
-
readonly POPULATION:
|
|
100
|
+
readonly POPULATION: 'SP.POP.TOTL';
|
|
101
101
|
/** Population growth (annual %) */
|
|
102
|
-
readonly POPULATION_GROWTH:
|
|
102
|
+
readonly POPULATION_GROWTH: 'SP.POP.GROW';
|
|
103
103
|
/** Life expectancy at birth, total (years) */
|
|
104
|
-
readonly LIFE_EXPECTANCY:
|
|
104
|
+
readonly LIFE_EXPECTANCY: 'SP.DYN.LE00.IN';
|
|
105
105
|
/** Net migration */
|
|
106
|
-
readonly NET_MIGRATION:
|
|
106
|
+
readonly NET_MIGRATION: 'SM.POP.NETM';
|
|
107
107
|
/** Labor force participation rate, total (% of total population ages 15+) */
|
|
108
|
-
readonly LABOR_PARTICIPATION:
|
|
108
|
+
readonly LABOR_PARTICIPATION: 'SL.TLF.CACT.ZS';
|
|
109
109
|
/** Employment to population ratio, 15+, total (%) */
|
|
110
|
-
readonly EMPLOYMENT_RATIO:
|
|
110
|
+
readonly EMPLOYMENT_RATIO: 'SL.EMP.TOTL.SP.ZS';
|
|
111
111
|
/** Youth unemployment rate (% of total labor force ages 15-24) */
|
|
112
|
-
readonly YOUTH_UNEMPLOYMENT:
|
|
112
|
+
readonly YOUTH_UNEMPLOYMENT: 'SL.UEM.1524.ZS';
|
|
113
113
|
/** Research and development expenditure (% of GDP) */
|
|
114
|
-
readonly RD_EXPENDITURE:
|
|
114
|
+
readonly RD_EXPENDITURE: 'GB.XPD.RSDV.GD.ZS';
|
|
115
115
|
/** Government expenditure on education, total (% of GDP) */
|
|
116
|
-
readonly EDUCATION_EXPENDITURE:
|
|
116
|
+
readonly EDUCATION_EXPENDITURE: 'SE.XPD.TOTL.GD.ZS';
|
|
117
117
|
/** School enrollment, tertiary (% gross) */
|
|
118
|
-
readonly TERTIARY_ENROLLMENT:
|
|
118
|
+
readonly TERTIARY_ENROLLMENT: 'SE.TER.ENRR';
|
|
119
119
|
/** Current health expenditure (% of GDP) */
|
|
120
|
-
readonly HEALTH_EXPENDITURE:
|
|
120
|
+
readonly HEALTH_EXPENDITURE: 'SH.XPD.CHEX.GD.ZS';
|
|
121
121
|
/** Hospital beds (per 1,000 people) */
|
|
122
|
-
readonly HOSPITAL_BEDS:
|
|
122
|
+
readonly HOSPITAL_BEDS: 'SH.MED.BEDS.ZS';
|
|
123
123
|
/** Agriculture, forestry, and fishing, value added (% of GDP) */
|
|
124
|
-
readonly AGRICULTURE_GDP:
|
|
124
|
+
readonly AGRICULTURE_GDP: 'NV.AGR.TOTL.ZS';
|
|
125
125
|
/** Cereal yield (kg per hectare) */
|
|
126
|
-
readonly CEREAL_YIELD:
|
|
126
|
+
readonly CEREAL_YIELD: 'AG.YLD.CREL.KG';
|
|
127
127
|
/** Arable land (% of land area) */
|
|
128
|
-
readonly ARABLE_LAND:
|
|
128
|
+
readonly ARABLE_LAND: 'AG.LND.ARBL.ZS';
|
|
129
129
|
/** Tax revenue (% of GDP) */
|
|
130
|
-
readonly TAX_REVENUE:
|
|
130
|
+
readonly TAX_REVENUE: 'GC.TAX.TOTL.GD.ZS';
|
|
131
131
|
/** General government final consumption expenditure (% of GDP) */
|
|
132
|
-
readonly GOV_EXPENDITURE:
|
|
132
|
+
readonly GOV_EXPENDITURE: 'NE.CON.GOVT.ZS';
|
|
133
133
|
/** Military expenditure (% of GDP) */
|
|
134
|
-
readonly MILITARY_EXPENDITURE:
|
|
134
|
+
readonly MILITARY_EXPENDITURE: 'MS.MIL.XPND.GD.ZS';
|
|
135
135
|
/** Individuals using the Internet (% of population) */
|
|
136
|
-
readonly INTERNET_USERS:
|
|
136
|
+
readonly INTERNET_USERS: 'IT.NET.USER.ZS';
|
|
137
137
|
/** High-technology exports (% of manufactured exports) */
|
|
138
|
-
readonly HIGHTECH_EXPORTS:
|
|
138
|
+
readonly HIGHTECH_EXPORTS: 'TX.VAL.TECH.MF.ZS';
|
|
139
139
|
/** GINI index (World Bank estimate) */
|
|
140
|
-
readonly GINI_INDEX:
|
|
140
|
+
readonly GINI_INDEX: 'SI.POV.GINI';
|
|
141
141
|
};
|
|
142
142
|
/** World Bank indicator ID type — string literal union from WB_INDICATORS values */
|
|
143
143
|
export type WBIndicatorId = (typeof WB_INDICATORS)[keyof typeof WB_INDICATORS];
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* `run-types-descriptions.ts`.
|
|
13
13
|
*/
|
|
14
14
|
import type { LanguageCode } from '../../../types/index.js';
|
|
15
|
-
declare const RUN_TYPE_SLUGS: readonly [
|
|
15
|
+
declare const RUN_TYPE_SLUGS: readonly ['breaking', 'week-in-review', 'weekly-review', 'month-in-review', 'monthly-review', 'quarter-in-review', 'week-ahead', 'month-ahead', 'quarter-ahead', 'year-ahead', 'year-in-review', 'term-outlook', 'election-cycle', 'committee-reports', 'committee', 'motions', 'propositions', 'translate', 'deep'];
|
|
16
16
|
type RunTypeSlug = (typeof RUN_TYPE_SLUGS)[number];
|
|
17
17
|
/**
|
|
18
18
|
* Parse a run slug such as `breaking-run192`, `week-in-review-run45` or
|