riksdagsmonitor 0.8.23 → 0.8.24
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 +53 -1
- package/dist/lib/dashboards/party-dashboard.js +2 -1
- package/dist/lib/dashboards/party-dashboard.js.map +1 -1
- package/dist/lib/dashboards/risk-dashboard.js +2 -1
- package/dist/lib/dashboards/risk-dashboard.js.map +1 -1
- package/dist/lib/shared/index.d.ts +0 -1
- package/dist/lib/shared/index.d.ts.map +1 -1
- package/dist/lib/shared/index.js +3 -1
- package/dist/lib/shared/index.js.map +1 -1
- package/dist/lib/shared/register-globals.d.ts +1 -1
- package/dist/lib/shared/register-globals.d.ts.map +1 -1
- package/dist/lib/shared/register-globals.js +7 -1
- package/dist/lib/shared/register-globals.js.map +1 -1
- package/package.json +53 -21
- package/dist/scripts/analysis-reader.d.ts +0 -241
- package/dist/scripts/analysis-reader.d.ts.map +0 -1
- package/dist/scripts/analysis-reader.js +0 -531
- package/dist/scripts/analysis-reader.js.map +0 -1
- package/dist/scripts/article-quality-enhancer.d.ts +0 -148
- package/dist/scripts/article-quality-enhancer.d.ts.map +0 -1
- package/dist/scripts/article-quality-enhancer.js +0 -430
- package/dist/scripts/article-quality-enhancer.js.map +0 -1
- package/dist/scripts/article-template/constants.d.ts +0 -104
- package/dist/scripts/article-template/constants.d.ts.map +0 -1
- package/dist/scripts/article-template/constants.js +0 -225
- package/dist/scripts/article-template/constants.js.map +0 -1
- package/dist/scripts/article-template/helpers.d.ts +0 -83
- package/dist/scripts/article-template/helpers.d.ts.map +0 -1
- package/dist/scripts/article-template/helpers.js +0 -236
- package/dist/scripts/article-template/helpers.js.map +0 -1
- package/dist/scripts/article-template/index.d.ts +0 -39
- package/dist/scripts/article-template/index.d.ts.map +0 -1
- package/dist/scripts/article-template/index.js +0 -37
- package/dist/scripts/article-template/index.js.map +0 -1
- package/dist/scripts/article-template/registry.d.ts +0 -64
- package/dist/scripts/article-template/registry.d.ts.map +0 -1
- package/dist/scripts/article-template/registry.js +0 -405
- package/dist/scripts/article-template/registry.js.map +0 -1
- package/dist/scripts/article-template/template.d.ts +0 -18
- package/dist/scripts/article-template/template.d.ts.map +0 -1
- package/dist/scripts/article-template/template.js +0 -359
- package/dist/scripts/article-template/template.js.map +0 -1
- package/dist/scripts/article-template/types.d.ts +0 -90
- package/dist/scripts/article-template/types.d.ts.map +0 -1
- package/dist/scripts/article-template/types.js +0 -96
- package/dist/scripts/article-template/types.js.map +0 -1
- package/dist/scripts/article-template.d.ts +0 -18
- package/dist/scripts/article-template.d.ts.map +0 -1
- package/dist/scripts/article-template.js +0 -18
- package/dist/scripts/article-template.js.map +0 -1
- package/dist/scripts/catalog-downloaded-data.d.ts +0 -66
- package/dist/scripts/catalog-downloaded-data.d.ts.map +0 -1
- package/dist/scripts/catalog-downloaded-data.js +0 -239
- package/dist/scripts/catalog-downloaded-data.js.map +0 -1
- package/dist/scripts/check-cia-schema-updates.d.ts +0 -186
- package/dist/scripts/check-cia-schema-updates.d.ts.map +0 -1
- package/dist/scripts/check-cia-schema-updates.js +0 -363
- package/dist/scripts/check-cia-schema-updates.js.map +0 -1
- package/dist/scripts/data-transformers/calendar.d.ts +0 -16
- package/dist/scripts/data-transformers/calendar.d.ts.map +0 -1
- package/dist/scripts/data-transformers/calendar.js +0 -137
- package/dist/scripts/data-transformers/calendar.js.map +0 -1
- package/dist/scripts/data-transformers/constants/committee-names.d.ts +0 -15
- package/dist/scripts/data-transformers/constants/committee-names.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/committee-names.js +0 -30
- package/dist/scripts/data-transformers/constants/committee-names.js.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts +0 -11
- package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels-part1.js +0 -900
- package/dist/scripts/data-transformers/constants/content-labels-part1.js.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts +0 -11
- package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels-part2.js +0 -900
- package/dist/scripts/data-transformers/constants/content-labels-part2.js.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels.d.ts +0 -13
- package/dist/scripts/data-transformers/constants/content-labels.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels.js +0 -18
- package/dist/scripts/data-transformers/constants/content-labels.js.map +0 -1
- package/dist/scripts/data-transformers/constants/index.d.ts +0 -15
- package/dist/scripts/data-transformers/constants/index.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/index.js +0 -15
- package/dist/scripts/data-transformers/constants/index.js.map +0 -1
- package/dist/scripts/data-transformers/constants/locale-map.d.ts +0 -13
- package/dist/scripts/data-transformers/constants/locale-map.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/locale-map.js +0 -17
- package/dist/scripts/data-transformers/constants/locale-map.js.map +0 -1
- package/dist/scripts/data-transformers/constants.d.ts +0 -14
- package/dist/scripts/data-transformers/constants.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants.js +0 -14
- package/dist/scripts/data-transformers/constants.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts +0 -64
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js +0 -805
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts +0 -50
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.js +0 -310
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/committee.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/committee.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/committee.js +0 -247
- package/dist/scripts/data-transformers/content-generators/committee.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts +0 -124
- package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/dashboard-section.js +0 -564
- package/dist/scripts/data-transformers/content-generators/dashboard-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts +0 -82
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js +0 -321
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/generic.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/generic.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/generic.js +0 -295
- package/dist/scripts/data-transformers/content-generators/generic.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/index.d.ts +0 -84
- package/dist/scripts/data-transformers/content-generators/index.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/index.js +0 -47
- package/dist/scripts/data-transformers/content-generators/index.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/interpellations.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/interpellations.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/interpellations.js +0 -124
- package/dist/scripts/data-transformers/content-generators/interpellations.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts +0 -137
- package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/mindmap-section.js +0 -286
- package/dist/scripts/data-transformers/content-generators/mindmap-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts +0 -17
- package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/month-ahead.js +0 -212
- package/dist/scripts/data-transformers/content-generators/month-ahead.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts +0 -17
- package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/monthly-review.js +0 -173
- package/dist/scripts/data-transformers/content-generators/monthly-review.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/motions.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/motions.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/motions.js +0 -158
- package/dist/scripts/data-transformers/content-generators/motions.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts +0 -62
- package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/newsworthiness.js +0 -254
- package/dist/scripts/data-transformers/content-generators/newsworthiness.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/propositions.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/propositions.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/propositions.js +0 -263
- package/dist/scripts/data-transformers/content-generators/propositions.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts +0 -92
- package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/sankey-section.js +0 -257
- package/dist/scripts/data-transformers/content-generators/sankey-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/shared.d.ts +0 -139
- package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/shared.js +0 -935
- package/dist/scripts/data-transformers/content-generators/shared.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/swot-section.d.ts +0 -50
- package/dist/scripts/data-transformers/content-generators/swot-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/swot-section.js +0 -177
- package/dist/scripts/data-transformers/content-generators/swot-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/week-ahead.js +0 -332
- package/dist/scripts/data-transformers/content-generators/week-ahead.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators.d.ts +0 -15
- package/dist/scripts/data-transformers/content-generators.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators.js +0 -14
- package/dist/scripts/data-transformers/content-generators.js.map +0 -1
- package/dist/scripts/data-transformers/document-analysis.d.ts +0 -58
- package/dist/scripts/data-transformers/document-analysis.d.ts.map +0 -1
- package/dist/scripts/data-transformers/document-analysis.js +0 -396
- package/dist/scripts/data-transformers/document-analysis.js.map +0 -1
- package/dist/scripts/data-transformers/helpers.d.ts +0 -144
- package/dist/scripts/data-transformers/helpers.d.ts.map +0 -1
- package/dist/scripts/data-transformers/helpers.js +0 -408
- package/dist/scripts/data-transformers/helpers.js.map +0 -1
- package/dist/scripts/data-transformers/index.d.ts +0 -45
- package/dist/scripts/data-transformers/index.d.ts.map +0 -1
- package/dist/scripts/data-transformers/index.js +0 -66
- package/dist/scripts/data-transformers/index.js.map +0 -1
- package/dist/scripts/data-transformers/metadata.d.ts +0 -42
- package/dist/scripts/data-transformers/metadata.d.ts.map +0 -1
- package/dist/scripts/data-transformers/metadata.js +0 -385
- package/dist/scripts/data-transformers/metadata.js.map +0 -1
- package/dist/scripts/data-transformers/policy-analysis.d.ts +0 -105
- package/dist/scripts/data-transformers/policy-analysis.d.ts.map +0 -1
- package/dist/scripts/data-transformers/policy-analysis.js +0 -686
- package/dist/scripts/data-transformers/policy-analysis.js.map +0 -1
- package/dist/scripts/data-transformers/risk-analysis.d.ts +0 -104
- package/dist/scripts/data-transformers/risk-analysis.d.ts.map +0 -1
- package/dist/scripts/data-transformers/risk-analysis.js +0 -279
- package/dist/scripts/data-transformers/risk-analysis.js.map +0 -1
- package/dist/scripts/data-transformers/types.d.ts +0 -260
- package/dist/scripts/data-transformers/types.d.ts.map +0 -1
- package/dist/scripts/data-transformers/types.js +0 -11
- package/dist/scripts/data-transformers/types.js.map +0 -1
- package/dist/scripts/data-transformers.d.ts +0 -23
- package/dist/scripts/data-transformers.d.ts.map +0 -1
- package/dist/scripts/data-transformers.js +0 -35
- package/dist/scripts/data-transformers.js.map +0 -1
- package/dist/scripts/deep-inspection/index.d.ts +0 -55
- package/dist/scripts/deep-inspection/index.d.ts.map +0 -1
- package/dist/scripts/deep-inspection/index.js +0 -66
- package/dist/scripts/deep-inspection/index.js.map +0 -1
- package/dist/scripts/detect-swedish-leakage.d.ts +0 -69
- package/dist/scripts/detect-swedish-leakage.d.ts.map +0 -1
- package/dist/scripts/detect-swedish-leakage.js +0 -417
- package/dist/scripts/detect-swedish-leakage.js.map +0 -1
- package/dist/scripts/editorial-framework.d.ts +0 -121
- package/dist/scripts/editorial-framework.d.ts.map +0 -1
- package/dist/scripts/editorial-framework.js +0 -364
- package/dist/scripts/editorial-framework.js.map +0 -1
- package/dist/scripts/editorial-pillars.d.ts +0 -43
- package/dist/scripts/editorial-pillars.d.ts.map +0 -1
- package/dist/scripts/editorial-pillars.js +0 -215
- package/dist/scripts/editorial-pillars.js.map +0 -1
- package/dist/scripts/extract-news-metadata.d.ts +0 -12
- package/dist/scripts/extract-news-metadata.d.ts.map +0 -1
- package/dist/scripts/extract-news-metadata.js +0 -107
- package/dist/scripts/extract-news-metadata.js.map +0 -1
- package/dist/scripts/extract-vocabulary.d.ts +0 -15
- package/dist/scripts/extract-vocabulary.d.ts.map +0 -1
- package/dist/scripts/extract-vocabulary.js +0 -255
- package/dist/scripts/extract-vocabulary.js.map +0 -1
- package/dist/scripts/fix-article-navigation.d.ts +0 -37
- package/dist/scripts/fix-article-navigation.d.ts.map +0 -1
- package/dist/scripts/fix-article-navigation.js +0 -198
- package/dist/scripts/fix-article-navigation.js.map +0 -1
- package/dist/scripts/fix-keywords-localization.d.ts +0 -18
- package/dist/scripts/fix-keywords-localization.d.ts.map +0 -1
- package/dist/scripts/fix-keywords-localization.js +0 -270
- package/dist/scripts/fix-keywords-localization.js.map +0 -1
- package/dist/scripts/fix-old-articles-branding.d.ts +0 -17
- package/dist/scripts/fix-old-articles-branding.d.ts.map +0 -1
- package/dist/scripts/fix-old-articles-branding.js +0 -229
- package/dist/scripts/fix-old-articles-branding.js.map +0 -1
- package/dist/scripts/generate-news-backport.d.ts +0 -16
- package/dist/scripts/generate-news-backport.d.ts.map +0 -1
- package/dist/scripts/generate-news-backport.js +0 -379
- package/dist/scripts/generate-news-backport.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts +0 -141
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js +0 -546
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts +0 -59
- package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/analysis-cache.js +0 -116
- package/dist/scripts/generate-news-enhanced/analysis-cache.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts +0 -58
- package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/analysis-labels.js +0 -144
- package/dist/scripts/generate-news-enhanced/analysis-labels.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/config.d.ts +0 -58
- package/dist/scripts/generate-news-enhanced/config.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/config.js +0 -286
- package/dist/scripts/generate-news-enhanced/config.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/generators.d.ts +0 -119
- package/dist/scripts/generate-news-enhanced/generators.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/generators.js +0 -2131
- package/dist/scripts/generate-news-enhanced/generators.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/helpers.d.ts +0 -122
- package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/helpers.js +0 -468
- package/dist/scripts/generate-news-enhanced/helpers.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/index.d.ts +0 -19
- package/dist/scripts/generate-news-enhanced/index.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/index.js +0 -221
- package/dist/scripts/generate-news-enhanced/index.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts +0 -46
- package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/swot-analyzer.js +0 -1227
- package/dist/scripts/generate-news-enhanced/swot-analyzer.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/types.d.ts +0 -34
- package/dist/scripts/generate-news-enhanced/types.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/types.js +0 -9
- package/dist/scripts/generate-news-enhanced/types.js.map +0 -1
- package/dist/scripts/generate-news-enhanced.d.ts +0 -25
- package/dist/scripts/generate-news-enhanced.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced.js +0 -37
- package/dist/scripts/generate-news-enhanced.js.map +0 -1
- package/dist/scripts/generate-news-indexes/constants.d.ts +0 -20
- package/dist/scripts/generate-news-indexes/constants.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes/constants.js +0 -308
- package/dist/scripts/generate-news-indexes/constants.js.map +0 -1
- package/dist/scripts/generate-news-indexes/helpers.d.ts +0 -73
- package/dist/scripts/generate-news-indexes/helpers.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes/helpers.js +0 -352
- package/dist/scripts/generate-news-indexes/helpers.js.map +0 -1
- package/dist/scripts/generate-news-indexes/index.d.ts +0 -20
- package/dist/scripts/generate-news-indexes/index.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes/index.js +0 -75
- package/dist/scripts/generate-news-indexes/index.js.map +0 -1
- package/dist/scripts/generate-news-indexes/template.d.ts +0 -25
- package/dist/scripts/generate-news-indexes/template.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes/template.js +0 -644
- package/dist/scripts/generate-news-indexes/template.js.map +0 -1
- package/dist/scripts/generate-news-indexes/types.d.ts +0 -96
- package/dist/scripts/generate-news-indexes/types.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes/types.js +0 -9
- package/dist/scripts/generate-news-indexes/types.js.map +0 -1
- package/dist/scripts/generate-news-indexes.d.ts +0 -20
- package/dist/scripts/generate-news-indexes.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes.js +0 -19
- package/dist/scripts/generate-news-indexes.js.map +0 -1
- package/dist/scripts/generate-rss.d.ts +0 -48
- package/dist/scripts/generate-rss.d.ts.map +0 -1
- package/dist/scripts/generate-rss.js +0 -299
- package/dist/scripts/generate-rss.js.map +0 -1
- package/dist/scripts/generate-sitemap-html.d.ts +0 -79
- package/dist/scripts/generate-sitemap-html.d.ts.map +0 -1
- package/dist/scripts/generate-sitemap-html.js +0 -878
- package/dist/scripts/generate-sitemap-html.js.map +0 -1
- package/dist/scripts/generate-sitemap.d.ts +0 -23
- package/dist/scripts/generate-sitemap.d.ts.map +0 -1
- package/dist/scripts/generate-sitemap.js +0 -476
- package/dist/scripts/generate-sitemap.js.map +0 -1
- package/dist/scripts/generate-types-from-cia-schemas.d.ts +0 -176
- package/dist/scripts/generate-types-from-cia-schemas.d.ts.map +0 -1
- package/dist/scripts/generate-types-from-cia-schemas.js +0 -318
- package/dist/scripts/generate-types-from-cia-schemas.js.map +0 -1
- package/dist/scripts/government-role-validator.d.ts +0 -65
- package/dist/scripts/government-role-validator.d.ts.map +0 -1
- package/dist/scripts/government-role-validator.js +0 -217
- package/dist/scripts/government-role-validator.js.map +0 -1
- package/dist/scripts/html-utils.d.ts +0 -17
- package/dist/scripts/html-utils.d.ts.map +0 -1
- package/dist/scripts/html-utils.js +0 -29
- package/dist/scripts/html-utils.js.map +0 -1
- package/dist/scripts/load-cia-stats.d.ts +0 -89
- package/dist/scripts/load-cia-stats.d.ts.map +0 -1
- package/dist/scripts/load-cia-stats.js +0 -400
- package/dist/scripts/load-cia-stats.js.map +0 -1
- package/dist/scripts/mcp-client/client.d.ts +0 -73
- package/dist/scripts/mcp-client/client.d.ts.map +0 -1
- package/dist/scripts/mcp-client/client.js +0 -526
- package/dist/scripts/mcp-client/client.js.map +0 -1
- package/dist/scripts/mcp-client/document-types.d.ts +0 -23
- package/dist/scripts/mcp-client/document-types.d.ts.map +0 -1
- package/dist/scripts/mcp-client/document-types.js +0 -62
- package/dist/scripts/mcp-client/document-types.js.map +0 -1
- package/dist/scripts/mcp-client/index.d.ts +0 -34
- package/dist/scripts/mcp-client/index.d.ts.map +0 -1
- package/dist/scripts/mcp-client/index.js +0 -67
- package/dist/scripts/mcp-client/index.js.map +0 -1
- package/dist/scripts/mcp-client/transport.d.ts +0 -32
- package/dist/scripts/mcp-client/transport.d.ts.map +0 -1
- package/dist/scripts/mcp-client/transport.js +0 -102
- package/dist/scripts/mcp-client/transport.js.map +0 -1
- package/dist/scripts/mcp-client.d.ts +0 -18
- package/dist/scripts/mcp-client.d.ts.map +0 -1
- package/dist/scripts/mcp-client.js +0 -18
- package/dist/scripts/mcp-client.js.map +0 -1
- package/dist/scripts/mcp-query-cli.d.ts +0 -25
- package/dist/scripts/mcp-query-cli.d.ts.map +0 -1
- package/dist/scripts/mcp-query-cli.js +0 -66
- package/dist/scripts/mcp-query-cli.js.map +0 -1
- package/dist/scripts/news-types/breaking-news.d.ts +0 -178
- package/dist/scripts/news-types/breaking-news.d.ts.map +0 -1
- package/dist/scripts/news-types/breaking-news.js +0 -432
- package/dist/scripts/news-types/breaking-news.js.map +0 -1
- package/dist/scripts/news-types/committee-reports.d.ts +0 -212
- package/dist/scripts/news-types/committee-reports.d.ts.map +0 -1
- package/dist/scripts/news-types/committee-reports.js +0 -404
- package/dist/scripts/news-types/committee-reports.js.map +0 -1
- package/dist/scripts/news-types/month-ahead.d.ts +0 -71
- package/dist/scripts/news-types/month-ahead.d.ts.map +0 -1
- package/dist/scripts/news-types/month-ahead.js +0 -392
- package/dist/scripts/news-types/month-ahead.js.map +0 -1
- package/dist/scripts/news-types/monthly-review.d.ts +0 -61
- package/dist/scripts/news-types/monthly-review.d.ts.map +0 -1
- package/dist/scripts/news-types/monthly-review.js +0 -417
- package/dist/scripts/news-types/monthly-review.js.map +0 -1
- package/dist/scripts/news-types/motions.d.ts +0 -214
- package/dist/scripts/news-types/motions.d.ts.map +0 -1
- package/dist/scripts/news-types/motions.js +0 -447
- package/dist/scripts/news-types/motions.js.map +0 -1
- package/dist/scripts/news-types/propositions.d.ts +0 -204
- package/dist/scripts/news-types/propositions.d.ts.map +0 -1
- package/dist/scripts/news-types/propositions.js +0 -401
- package/dist/scripts/news-types/propositions.js.map +0 -1
- package/dist/scripts/news-types/week-ahead.d.ts +0 -231
- package/dist/scripts/news-types/week-ahead.d.ts.map +0 -1
- package/dist/scripts/news-types/week-ahead.js +0 -441
- package/dist/scripts/news-types/week-ahead.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/analysis.d.ts +0 -47
- package/dist/scripts/news-types/weekly-review/analysis.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/analysis.js +0 -276
- package/dist/scripts/news-types/weekly-review/analysis.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/data-loader.d.ts +0 -51
- package/dist/scripts/news-types/weekly-review/data-loader.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/data-loader.js +0 -298
- package/dist/scripts/news-types/weekly-review/data-loader.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/generator.d.ts +0 -18
- package/dist/scripts/news-types/weekly-review/generator.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/generator.js +0 -284
- package/dist/scripts/news-types/weekly-review/generator.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/index.d.ts +0 -20
- package/dist/scripts/news-types/weekly-review/index.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/index.js +0 -23
- package/dist/scripts/news-types/weekly-review/index.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/types.d.ts +0 -72
- package/dist/scripts/news-types/weekly-review/types.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/types.js +0 -20
- package/dist/scripts/news-types/weekly-review/types.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/validation.d.ts +0 -10
- package/dist/scripts/news-types/weekly-review/validation.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/validation.js +0 -95
- package/dist/scripts/news-types/weekly-review/validation.js.map +0 -1
- package/dist/scripts/news-types/weekly-review.d.ts +0 -15
- package/dist/scripts/news-types/weekly-review.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review.js +0 -14
- package/dist/scripts/news-types/weekly-review.js.map +0 -1
- package/dist/scripts/party-variants.d.ts +0 -23
- package/dist/scripts/party-variants.d.ts.map +0 -1
- package/dist/scripts/party-variants.js +0 -50
- package/dist/scripts/party-variants.js.map +0 -1
- package/dist/scripts/pipeline/index.d.ts +0 -19
- package/dist/scripts/pipeline/index.d.ts.map +0 -1
- package/dist/scripts/pipeline/index.js +0 -17
- package/dist/scripts/pipeline/index.js.map +0 -1
- package/dist/scripts/pipeline/orchestrator.d.ts +0 -56
- package/dist/scripts/pipeline/orchestrator.d.ts.map +0 -1
- package/dist/scripts/pipeline/orchestrator.js +0 -147
- package/dist/scripts/pipeline/orchestrator.js.map +0 -1
- package/dist/scripts/pipeline/types.d.ts +0 -117
- package/dist/scripts/pipeline/types.d.ts.map +0 -1
- package/dist/scripts/pipeline/types.js +0 -13
- package/dist/scripts/pipeline/types.js.map +0 -1
- package/dist/scripts/pipeline/validation.d.ts +0 -66
- package/dist/scripts/pipeline/validation.d.ts.map +0 -1
- package/dist/scripts/pipeline/validation.js +0 -129
- package/dist/scripts/pipeline/validation.js.map +0 -1
- package/dist/scripts/populate-analysis-data.d.ts +0 -41
- package/dist/scripts/populate-analysis-data.d.ts.map +0 -1
- package/dist/scripts/populate-analysis-data.js +0 -255
- package/dist/scripts/populate-analysis-data.js.map +0 -1
- package/dist/scripts/pre-article-analysis/data-downloader.d.ts +0 -80
- package/dist/scripts/pre-article-analysis/data-downloader.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis/data-downloader.js +0 -230
- package/dist/scripts/pre-article-analysis/data-downloader.js.map +0 -1
- package/dist/scripts/pre-article-analysis/data-persistence.d.ts +0 -141
- package/dist/scripts/pre-article-analysis/data-persistence.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis/data-persistence.js +0 -345
- package/dist/scripts/pre-article-analysis/data-persistence.js.map +0 -1
- package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts +0 -158
- package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis/markdown-serializer.js +0 -648
- package/dist/scripts/pre-article-analysis/markdown-serializer.js.map +0 -1
- package/dist/scripts/pre-article-analysis/pdf-converter.d.ts +0 -58
- package/dist/scripts/pre-article-analysis/pdf-converter.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis/pdf-converter.js +0 -142
- package/dist/scripts/pre-article-analysis/pdf-converter.js.map +0 -1
- package/dist/scripts/pre-article-analysis.d.ts +0 -42
- package/dist/scripts/pre-article-analysis.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis.js +0 -642
- package/dist/scripts/pre-article-analysis.js.map +0 -1
- package/dist/scripts/scb-client.d.ts +0 -104
- package/dist/scripts/scb-client.d.ts.map +0 -1
- package/dist/scripts/scb-client.js +0 -286
- package/dist/scripts/scb-client.js.map +0 -1
- package/dist/scripts/scb-context.d.ts +0 -88
- package/dist/scripts/scb-context.d.ts.map +0 -1
- package/dist/scripts/scb-context.js +0 -307
- package/dist/scripts/scb-context.js.map +0 -1
- package/dist/scripts/shared/version.d.ts +0 -9
- package/dist/scripts/shared/version.d.ts.map +0 -1
- package/dist/scripts/shared/version.js +0 -28
- package/dist/scripts/shared/version.js.map +0 -1
- package/dist/scripts/statistical-claims-detector.d.ts +0 -119
- package/dist/scripts/statistical-claims-detector.d.ts.map +0 -1
- package/dist/scripts/statistical-claims-detector.js +0 -391
- package/dist/scripts/statistical-claims-detector.js.map +0 -1
- package/dist/scripts/sync-cia-schemas.d.ts +0 -52
- package/dist/scripts/sync-cia-schemas.d.ts.map +0 -1
- package/dist/scripts/sync-cia-schemas.js +0 -195
- package/dist/scripts/sync-cia-schemas.js.map +0 -1
- package/dist/scripts/translation-dictionary.d.ts +0 -45
- package/dist/scripts/translation-dictionary.d.ts.map +0 -1
- package/dist/scripts/translation-dictionary.js +0 -3642
- package/dist/scripts/translation-dictionary.js.map +0 -1
- package/dist/scripts/types/article.d.ts +0 -392
- package/dist/scripts/types/article.d.ts.map +0 -1
- package/dist/scripts/types/article.js +0 -6
- package/dist/scripts/types/article.js.map +0 -1
- package/dist/scripts/types/content.d.ts +0 -167
- package/dist/scripts/types/content.d.ts.map +0 -1
- package/dist/scripts/types/content.js +0 -6
- package/dist/scripts/types/content.js.map +0 -1
- package/dist/scripts/types/editorial.d.ts +0 -17
- package/dist/scripts/types/editorial.d.ts.map +0 -1
- package/dist/scripts/types/editorial.js +0 -6
- package/dist/scripts/types/editorial.js.map +0 -1
- package/dist/scripts/types/language.d.ts +0 -7
- package/dist/scripts/types/language.d.ts.map +0 -1
- package/dist/scripts/types/language.js +0 -6
- package/dist/scripts/types/language.js.map +0 -1
- package/dist/scripts/types/mcp.d.ts +0 -117
- package/dist/scripts/types/mcp.d.ts.map +0 -1
- package/dist/scripts/types/mcp.js +0 -6
- package/dist/scripts/types/mcp.js.map +0 -1
- package/dist/scripts/types/party.d.ts +0 -9
- package/dist/scripts/types/party.d.ts.map +0 -1
- package/dist/scripts/types/party.js +0 -6
- package/dist/scripts/types/party.js.map +0 -1
- package/dist/scripts/types/validation.d.ts +0 -136
- package/dist/scripts/types/validation.d.ts.map +0 -1
- package/dist/scripts/types/validation.js +0 -6
- package/dist/scripts/types/validation.js.map +0 -1
- package/dist/scripts/types/workflow.d.ts +0 -78
- package/dist/scripts/types/workflow.d.ts.map +0 -1
- package/dist/scripts/types/workflow.js +0 -6
- package/dist/scripts/types/workflow.js.map +0 -1
- package/dist/scripts/update-stats-from-cia.d.ts +0 -44
- package/dist/scripts/update-stats-from-cia.d.ts.map +0 -1
- package/dist/scripts/update-stats-from-cia.js +0 -310
- package/dist/scripts/update-stats-from-cia.js.map +0 -1
- package/dist/scripts/validate-against-cia-schemas.d.ts +0 -126
- package/dist/scripts/validate-against-cia-schemas.d.ts.map +0 -1
- package/dist/scripts/validate-against-cia-schemas.js +0 -299
- package/dist/scripts/validate-against-cia-schemas.js.map +0 -1
- package/dist/scripts/validate-cross-references.d.ts +0 -49
- package/dist/scripts/validate-cross-references.d.ts.map +0 -1
- package/dist/scripts/validate-cross-references.js +0 -183
- package/dist/scripts/validate-cross-references.js.map +0 -1
- package/dist/scripts/validate-file-ownership.d.ts +0 -68
- package/dist/scripts/validate-file-ownership.d.ts.map +0 -1
- package/dist/scripts/validate-file-ownership.js +0 -135
- package/dist/scripts/validate-file-ownership.js.map +0 -1
- package/dist/scripts/validate-news-translations.d.ts +0 -27
- package/dist/scripts/validate-news-translations.d.ts.map +0 -1
- package/dist/scripts/validate-news-translations.js +0 -258
- package/dist/scripts/validate-news-translations.js.map +0 -1
- package/dist/scripts/validate-translations.d.ts +0 -162
- package/dist/scripts/validate-translations.d.ts.map +0 -1
- package/dist/scripts/validate-translations.js +0 -378
- package/dist/scripts/validate-translations.js.map +0 -1
- package/dist/scripts/workflow-state-coordinator.d.ts +0 -354
- package/dist/scripts/workflow-state-coordinator.d.ts.map +0 -1
- package/dist/scripts/workflow-state-coordinator.js +0 -876
- package/dist/scripts/workflow-state-coordinator.js.map +0 -1
- package/dist/scripts/world-bank-client.d.ts +0 -122
- package/dist/scripts/world-bank-client.d.ts.map +0 -1
- package/dist/scripts/world-bank-client.js +0 -192
- package/dist/scripts/world-bank-client.js.map +0 -1
- package/dist/scripts/world-bank-context.d.ts +0 -88
- package/dist/scripts/world-bank-context.d.ts.map +0 -1
- package/dist/scripts/world-bank-context.js +0 -331
- package/dist/scripts/world-bank-context.js.map +0 -1
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
/**
|
|
3
|
-
* @module catalog-downloaded-data
|
|
4
|
-
* @description Scans `analysis/data/` and produces a JSON catalog of all
|
|
5
|
-
* downloaded MCP data files with their metadata. This catalog is consumed
|
|
6
|
-
* by the AI agent during agentic workflows so it can perform per-file
|
|
7
|
-
* political intelligence analysis.
|
|
8
|
-
*
|
|
9
|
-
* The output is a JSON object ("data catalog") with overall metadata and an
|
|
10
|
-
* `entries` array describing each data file.
|
|
11
|
-
*
|
|
12
|
-
* Top-level catalog fields:
|
|
13
|
-
* - `generatedAt` – ISO 8601 timestamp when the catalog was generated
|
|
14
|
-
* - `dataRoot` – root directory that was scanned (e.g. "analysis/data")
|
|
15
|
-
* - `totalFiles` – total number of discovered data files
|
|
16
|
-
* - `pendingAnalysis` – number of files without analysis
|
|
17
|
-
* - `completedAnalysis` – number of files with existing analysis
|
|
18
|
-
* - `entries` – array of per-file catalog entries
|
|
19
|
-
*
|
|
20
|
-
* Each item in `entries` has:
|
|
21
|
-
* - `id` – document / record identifier (filename without `.json`)
|
|
22
|
-
* - `type` – persistence document type (e.g. "propositions", "mps")
|
|
23
|
-
* - `path` – path to the data file relative to repo root
|
|
24
|
-
* - `analysisPath` – expected path for the per-file analysis markdown
|
|
25
|
-
* - `hasAnalysis` – whether the analysis markdown already exists
|
|
26
|
-
* - `sizeBytes` – file size in bytes
|
|
27
|
-
*
|
|
28
|
-
* Usage:
|
|
29
|
-
* npx tsx scripts/catalog-downloaded-data.ts [--data-root <path>] [--type <type>] [--pending-only]
|
|
30
|
-
*
|
|
31
|
-
* Options:
|
|
32
|
-
* --data-root <path> Override analysis/data root (default: analysis/data)
|
|
33
|
-
* --type <type> Filter to a specific document type
|
|
34
|
-
* --pending-only Only list files that do NOT yet have analysis
|
|
35
|
-
*
|
|
36
|
-
* @author Hack23 AB
|
|
37
|
-
* @license Apache-2.0
|
|
38
|
-
*/
|
|
39
|
-
/** A single entry in the data catalog. */
|
|
40
|
-
export interface CatalogEntry {
|
|
41
|
-
id: string;
|
|
42
|
-
type: string;
|
|
43
|
-
path: string;
|
|
44
|
-
analysisPath: string;
|
|
45
|
-
hasAnalysis: boolean;
|
|
46
|
-
sizeBytes: number;
|
|
47
|
-
meta: Record<string, unknown> | null;
|
|
48
|
-
}
|
|
49
|
-
/** Full catalog output. */
|
|
50
|
-
export interface DataCatalog {
|
|
51
|
-
generatedAt: string;
|
|
52
|
-
dataRoot: string;
|
|
53
|
-
totalFiles: number;
|
|
54
|
-
pendingAnalysis: number;
|
|
55
|
-
completedAnalysis: number;
|
|
56
|
-
entries: CatalogEntry[];
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Build the catalog by scanning `dataRoot`.
|
|
60
|
-
*
|
|
61
|
-
* @param dataRoot - absolute or relative path to `analysis/data`
|
|
62
|
-
* @param filterType - optional type filter
|
|
63
|
-
* @param pendingOnly - if true, only include files without analysis
|
|
64
|
-
*/
|
|
65
|
-
export declare function buildCatalog(dataRoot: string, filterType?: string, pendingOnly?: boolean): DataCatalog;
|
|
66
|
-
//# sourceMappingURL=catalog-downloaded-data.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-downloaded-data.d.ts","sourceRoot":"","sources":["../../scripts/catalog-downloaded-data.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAcH,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACtC;AAED,2BAA2B;AAC3B,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AA+BD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,UAAQ,GAClB,WAAW,CAqGb"}
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
/**
|
|
3
|
-
* @module catalog-downloaded-data
|
|
4
|
-
* @description Scans `analysis/data/` and produces a JSON catalog of all
|
|
5
|
-
* downloaded MCP data files with their metadata. This catalog is consumed
|
|
6
|
-
* by the AI agent during agentic workflows so it can perform per-file
|
|
7
|
-
* political intelligence analysis.
|
|
8
|
-
*
|
|
9
|
-
* The output is a JSON object ("data catalog") with overall metadata and an
|
|
10
|
-
* `entries` array describing each data file.
|
|
11
|
-
*
|
|
12
|
-
* Top-level catalog fields:
|
|
13
|
-
* - `generatedAt` – ISO 8601 timestamp when the catalog was generated
|
|
14
|
-
* - `dataRoot` – root directory that was scanned (e.g. "analysis/data")
|
|
15
|
-
* - `totalFiles` – total number of discovered data files
|
|
16
|
-
* - `pendingAnalysis` – number of files without analysis
|
|
17
|
-
* - `completedAnalysis` – number of files with existing analysis
|
|
18
|
-
* - `entries` – array of per-file catalog entries
|
|
19
|
-
*
|
|
20
|
-
* Each item in `entries` has:
|
|
21
|
-
* - `id` – document / record identifier (filename without `.json`)
|
|
22
|
-
* - `type` – persistence document type (e.g. "propositions", "mps")
|
|
23
|
-
* - `path` – path to the data file relative to repo root
|
|
24
|
-
* - `analysisPath` – expected path for the per-file analysis markdown
|
|
25
|
-
* - `hasAnalysis` – whether the analysis markdown already exists
|
|
26
|
-
* - `sizeBytes` – file size in bytes
|
|
27
|
-
*
|
|
28
|
-
* Usage:
|
|
29
|
-
* npx tsx scripts/catalog-downloaded-data.ts [--data-root <path>] [--type <type>] [--pending-only]
|
|
30
|
-
*
|
|
31
|
-
* Options:
|
|
32
|
-
* --data-root <path> Override analysis/data root (default: analysis/data)
|
|
33
|
-
* --type <type> Filter to a specific document type
|
|
34
|
-
* --pending-only Only list files that do NOT yet have analysis
|
|
35
|
-
*
|
|
36
|
-
* @author Hack23 AB
|
|
37
|
-
* @license Apache-2.0
|
|
38
|
-
*/
|
|
39
|
-
import * as fs from 'node:fs';
|
|
40
|
-
import * as path from 'node:path';
|
|
41
|
-
import { fileURLToPath } from 'node:url';
|
|
42
|
-
/** Stable repo root derived from script location (matches pre-article-analysis.ts). */
|
|
43
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
44
|
-
const REPO_ROOT = path.resolve(__dirname, '..');
|
|
45
|
-
/* ------------------------------------------------------------------ */
|
|
46
|
-
/* Catalog builder (exported for testing) */
|
|
47
|
-
/* ------------------------------------------------------------------ */
|
|
48
|
-
const DATA_SUBDIRS = [
|
|
49
|
-
'documents/propositions',
|
|
50
|
-
'documents/motions',
|
|
51
|
-
'documents/committeeReports',
|
|
52
|
-
'documents/speeches',
|
|
53
|
-
'documents/questions',
|
|
54
|
-
'documents/interpellations',
|
|
55
|
-
'documents/votes',
|
|
56
|
-
'votes',
|
|
57
|
-
'events',
|
|
58
|
-
'mps',
|
|
59
|
-
'worldbank',
|
|
60
|
-
'scb',
|
|
61
|
-
'mcp-responses',
|
|
62
|
-
];
|
|
63
|
-
/**
|
|
64
|
-
* Derive a human-friendly `type` from the subdirectory path.
|
|
65
|
-
* e.g. "documents/propositions" → "propositions", "mps" → "mps"
|
|
66
|
-
*/
|
|
67
|
-
function typeFromSubdir(subdir) {
|
|
68
|
-
const parts = subdir.split('/');
|
|
69
|
-
return parts[parts.length - 1];
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Build the catalog by scanning `dataRoot`.
|
|
73
|
-
*
|
|
74
|
-
* @param dataRoot - absolute or relative path to `analysis/data`
|
|
75
|
-
* @param filterType - optional type filter
|
|
76
|
-
* @param pendingOnly - if true, only include files without analysis
|
|
77
|
-
*/
|
|
78
|
-
export function buildCatalog(dataRoot, filterType, pendingOnly = false) {
|
|
79
|
-
const allEntries = [];
|
|
80
|
-
for (const subdir of DATA_SUBDIRS) {
|
|
81
|
-
const docType = typeFromSubdir(subdir);
|
|
82
|
-
if (filterType && docType !== filterType)
|
|
83
|
-
continue;
|
|
84
|
-
const dirPath = path.join(dataRoot, subdir);
|
|
85
|
-
if (!fs.existsSync(dirPath))
|
|
86
|
-
continue;
|
|
87
|
-
// The directory may contain date subdirectories (e.g. votes/2026-03-28/)
|
|
88
|
-
// or direct JSON files. We scan recursively but only pick up *.json
|
|
89
|
-
// files that are NOT .meta.json.
|
|
90
|
-
const jsonFiles = collectJsonFiles(dirPath);
|
|
91
|
-
for (const filePath of jsonFiles) {
|
|
92
|
-
// Use path relative to the type directory (sans .json) as id.
|
|
93
|
-
// For flat dirs: "P1". For nested dirs: "ind1/SE".
|
|
94
|
-
const id = path.relative(dirPath, filePath).replace(/\.json$/, '').split(path.sep).join('/');
|
|
95
|
-
const metaPath = filePath.replace(/\.json$/, '.meta.json');
|
|
96
|
-
const analysisPath = filePath.replace(/\.json$/, '.analysis.md');
|
|
97
|
-
let meta = null;
|
|
98
|
-
if (fs.existsSync(metaPath)) {
|
|
99
|
-
try {
|
|
100
|
-
meta = JSON.parse(fs.readFileSync(metaPath, 'utf-8'));
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
meta = null;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
const hasAnalysis = fs.existsSync(analysisPath);
|
|
107
|
-
const stat = fs.statSync(filePath);
|
|
108
|
-
allEntries.push({
|
|
109
|
-
id: id,
|
|
110
|
-
type: docType,
|
|
111
|
-
path: path.relative(REPO_ROOT, filePath).split(path.sep).join('/'),
|
|
112
|
-
analysisPath: path.relative(REPO_ROOT, analysisPath).split(path.sep).join('/'),
|
|
113
|
-
hasAnalysis,
|
|
114
|
-
sizeBytes: stat.size,
|
|
115
|
-
meta,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
// De-duplicate vote entries: when the same vote file appears in both
|
|
120
|
-
// documents/votes and votes/YYYY-MM-DD, prefer the date-stamped path.
|
|
121
|
-
// Only votes are scoped for dedup (the only type with two scan dirs).
|
|
122
|
-
// Vote ids use the basename portion for matching since documents/votes/
|
|
123
|
-
// stores files flat while votes/YYYY-MM-DD/ nests under date dirs.
|
|
124
|
-
const bestByKey = new Map();
|
|
125
|
-
for (const e of allEntries) {
|
|
126
|
-
// For votes, use basename as dedup key (ignores date-dir nesting)
|
|
127
|
-
const idPart = e.type === 'votes' ? e.id.split('/').pop() : e.id;
|
|
128
|
-
const key = `${e.type}::${idPart}`;
|
|
129
|
-
const existing = bestByKey.get(key);
|
|
130
|
-
if (!existing) {
|
|
131
|
-
bestByKey.set(key, e);
|
|
132
|
-
}
|
|
133
|
-
else if (e.type === 'votes') {
|
|
134
|
-
// Prefer the entry whose path contains a date directory (votes/YYYY-MM-DD)
|
|
135
|
-
const existingHasDate = /votes\/\d{4}-\d{2}-\d{2}\//.test(existing.path);
|
|
136
|
-
const currentHasDate = /votes\/\d{4}-\d{2}-\d{2}\//.test(e.path);
|
|
137
|
-
if (currentHasDate && !existingHasDate) {
|
|
138
|
-
bestByKey.set(key, e);
|
|
139
|
-
}
|
|
140
|
-
// Otherwise keep existing (first-seen or already date-stamped)
|
|
141
|
-
}
|
|
142
|
-
// Non-vote duplicates: keep first-seen (shouldn't occur with current DATA_SUBDIRS)
|
|
143
|
-
}
|
|
144
|
-
const dedupedEntries = [...bestByKey.values()];
|
|
145
|
-
// Compute totals from the full scan (before pendingOnly filter)
|
|
146
|
-
const totalCompleted = dedupedEntries.filter((e) => e.hasAnalysis).length;
|
|
147
|
-
const totalPending = dedupedEntries.length - totalCompleted;
|
|
148
|
-
// Apply pendingOnly filter after computing totals
|
|
149
|
-
const entries = pendingOnly
|
|
150
|
-
? dedupedEntries.filter((e) => !e.hasAnalysis)
|
|
151
|
-
: dedupedEntries;
|
|
152
|
-
// Ensure deterministic ordering across platforms/filesystems.
|
|
153
|
-
// Use simple < / > string compare (locale-independent) for stable collation.
|
|
154
|
-
entries.sort((a, b) => {
|
|
155
|
-
if (a.type < b.type)
|
|
156
|
-
return -1;
|
|
157
|
-
if (a.type > b.type)
|
|
158
|
-
return 1;
|
|
159
|
-
if (a.id < b.id)
|
|
160
|
-
return -1;
|
|
161
|
-
if (a.id > b.id)
|
|
162
|
-
return 1;
|
|
163
|
-
return 0;
|
|
164
|
-
});
|
|
165
|
-
return {
|
|
166
|
-
generatedAt: new Date().toISOString(),
|
|
167
|
-
dataRoot: path.relative(REPO_ROOT, dataRoot).split(path.sep).join('/'),
|
|
168
|
-
totalFiles: dedupedEntries.length,
|
|
169
|
-
pendingAnalysis: totalPending,
|
|
170
|
-
completedAnalysis: totalCompleted,
|
|
171
|
-
entries,
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
/* ------------------------------------------------------------------ */
|
|
175
|
-
/* Helpers */
|
|
176
|
-
/* ------------------------------------------------------------------ */
|
|
177
|
-
/** Recursively collect *.json files, excluding *.meta.json. */
|
|
178
|
-
function collectJsonFiles(dir) {
|
|
179
|
-
const results = [];
|
|
180
|
-
let dirEntries;
|
|
181
|
-
try {
|
|
182
|
-
dirEntries = fs.readdirSync(dir, { withFileTypes: true });
|
|
183
|
-
}
|
|
184
|
-
catch {
|
|
185
|
-
return results;
|
|
186
|
-
}
|
|
187
|
-
for (const entry of dirEntries) {
|
|
188
|
-
const full = path.join(dir, entry.name);
|
|
189
|
-
if (entry.isDirectory()) {
|
|
190
|
-
results.push(...collectJsonFiles(full));
|
|
191
|
-
}
|
|
192
|
-
else if (entry.isFile() &&
|
|
193
|
-
entry.name.endsWith('.json') &&
|
|
194
|
-
!entry.name.endsWith('.meta.json')) {
|
|
195
|
-
results.push(full);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return results;
|
|
199
|
-
}
|
|
200
|
-
/* ------------------------------------------------------------------ */
|
|
201
|
-
/* CLI entry point */
|
|
202
|
-
/* ------------------------------------------------------------------ */
|
|
203
|
-
function parseArgs(argv) {
|
|
204
|
-
let dataRoot = path.join(REPO_ROOT, 'analysis/data');
|
|
205
|
-
let filterType;
|
|
206
|
-
let pendingOnly = false;
|
|
207
|
-
for (let i = 2; i < argv.length; i++) {
|
|
208
|
-
if (argv[i] === '--data-root' && argv[i + 1]) {
|
|
209
|
-
dataRoot = path.resolve(argv[++i]);
|
|
210
|
-
}
|
|
211
|
-
else if (argv[i] === '--type' && argv[i + 1]) {
|
|
212
|
-
filterType = argv[++i];
|
|
213
|
-
}
|
|
214
|
-
else if (argv[i] === '--pending-only') {
|
|
215
|
-
pendingOnly = true;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return { dataRoot, filterType, pendingOnly };
|
|
219
|
-
}
|
|
220
|
-
/* istanbul ignore next -- CLI wrapper */
|
|
221
|
-
function main() {
|
|
222
|
-
const { dataRoot, filterType, pendingOnly } = parseArgs(process.argv);
|
|
223
|
-
const catalog = buildCatalog(dataRoot, filterType, pendingOnly);
|
|
224
|
-
console.error(`╔══════════════════════════════════════════════════════════════╗`);
|
|
225
|
-
console.error(`║ 📋 Analysis Data Catalog ║`);
|
|
226
|
-
console.error(`╚══════════════════════════════════════════════════════════════╝`);
|
|
227
|
-
console.error(` 📂 Data root: ${catalog.dataRoot}`);
|
|
228
|
-
console.error(` 📄 Total files: ${catalog.totalFiles}`);
|
|
229
|
-
console.error(` ✅ Analyzed: ${catalog.completedAnalysis}`);
|
|
230
|
-
console.error(` ⏳ Pending: ${catalog.pendingAnalysis}`);
|
|
231
|
-
console.error();
|
|
232
|
-
// Write catalog JSON to stdout for piping
|
|
233
|
-
console.log(JSON.stringify(catalog, null, 2));
|
|
234
|
-
}
|
|
235
|
-
// Run CLI when invoked directly (matches repo convention in pre-article-analysis.ts)
|
|
236
|
-
if (path.resolve(fileURLToPath(import.meta.url)) === path.resolve(process.argv[1] ?? '')) {
|
|
237
|
-
main();
|
|
238
|
-
}
|
|
239
|
-
//# sourceMappingURL=catalog-downloaded-data.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-downloaded-data.js","sourceRoot":"","sources":["../../scripts/catalog-downloaded-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* @module Infrastructure/SchemaManagement
|
|
4
|
-
* @category Intelligence Operations / Supporting Infrastructure
|
|
5
|
-
* @name CIA Schema Update Detection - Upstream Change Monitoring
|
|
6
|
-
*
|
|
7
|
-
* @description
|
|
8
|
-
* Automated schema update detection system continuously monitoring the CIA GitHub
|
|
9
|
-
* repository for changes to published JSON export specifications. Identifies when
|
|
10
|
-
* CIA data structure versions diverge from local cached versions, triggering
|
|
11
|
-
* synchronization workflows for data product consistency.
|
|
12
|
-
*
|
|
13
|
-
* Operational Purpose:
|
|
14
|
-
* Ensures riksdagsmonitor maintains compatibility with CIA platform's 19 data products
|
|
15
|
-
* by detecting upstream schema modifications before they break data pipelines. Implements
|
|
16
|
-
* change detection through cryptographic checksums, enabling rapid identification of
|
|
17
|
-
* schema evolution without manual polling.
|
|
18
|
-
*
|
|
19
|
-
* CIA Data Products Monitored (19 schemas):
|
|
20
|
-
* - overview-dashboard: Parliamentary activity summary
|
|
21
|
-
* - party-performance: Party voting and activity metrics
|
|
22
|
-
* - cabinet-scorecard: Government performance tracking
|
|
23
|
-
* - election-analysis: Electoral outcomes and trends
|
|
24
|
-
* - top10-influential-mps: Parliamentary power analysis
|
|
25
|
-
* - top10-productive-mps: Legislation productivity metrics
|
|
26
|
-
* - top10-controversial-mps: Political controversy tracking
|
|
27
|
-
* - top10-absent-mps: Attendance pattern analysis
|
|
28
|
-
* - top10-rebels: Party discipline violations
|
|
29
|
-
* - top10-coalition-brokers: Coalition dynamics influencers
|
|
30
|
-
* - top10-rising-stars: Career trajectory identification
|
|
31
|
-
* - top10-electoral-risk: Election vulnerability analysis
|
|
32
|
-
* - top10-ethics-concerns: Ethics violation tracking
|
|
33
|
-
* - top10-media-presence: Political media prominence
|
|
34
|
-
* - committee-network: Committee membership networks
|
|
35
|
-
* - politician-career: Career progression analysis
|
|
36
|
-
* - party-longitudinal: Historical party data trends
|
|
37
|
-
* - riksdag-overview: Parliamentary structure and history
|
|
38
|
-
* - ministry-performance: Government ministry effectiveness
|
|
39
|
-
*
|
|
40
|
-
* Change Detection Architecture:
|
|
41
|
-
* - Fetches remote schema files from CIA GitHub repository
|
|
42
|
-
* - Computes SHA-256 checksums of remote files
|
|
43
|
-
* - Compares checksums with locally cached metadata
|
|
44
|
-
* - Identifies added, modified, or deleted schemas
|
|
45
|
-
* - Generates change report for action planning
|
|
46
|
-
*
|
|
47
|
-
* Remote Data Source:
|
|
48
|
-
* - CIA Repository: https://github.com/Hack23/cia
|
|
49
|
-
* - Schema Location: /json-export-specs/schemas/
|
|
50
|
-
* - Access Method: GitHub raw content CDN (no authentication required)
|
|
51
|
-
* - Data License: Apache-2.0 (compatible with riksdagsmonitor)
|
|
52
|
-
*
|
|
53
|
-
* Local Cache Structure:
|
|
54
|
-
* - Schemas Directory: ./schemas/cia/
|
|
55
|
-
* - Metadata Directory: ./schemas/metadata/
|
|
56
|
-
* - Stores: Downloaded schema files, checksum verification data
|
|
57
|
-
* - Updated by: sync-cia-schemas.js (separate synchronization script)
|
|
58
|
-
*
|
|
59
|
-
* Metadata Management:
|
|
60
|
-
* - Checksums: SHA-256 hashes for change detection
|
|
61
|
-
* - Update timestamps: ISO 8601 format with timezone
|
|
62
|
-
* - Fetch status: Success/failure/error indicators
|
|
63
|
-
* - Version tracking: Schema version numbers if available
|
|
64
|
-
*
|
|
65
|
-
* Detection Workflow:
|
|
66
|
-
* 1. Fetch remote schema file list from CIA GitHub
|
|
67
|
-
* 2. Compute SHA-256 checksum of each remote file
|
|
68
|
-
* 3. Load local metadata (previous checksums)
|
|
69
|
-
* 4. Compare remote vs. local checksums
|
|
70
|
-
* 5. Identify differences: new, modified, deleted
|
|
71
|
-
* 6. Generate change report with details
|
|
72
|
-
* 7. Trigger downstream actions if changes detected
|
|
73
|
-
*
|
|
74
|
-
* Update Triggers & Actions:
|
|
75
|
-
* - If schema added: Notify administrator for evaluation
|
|
76
|
-
* - If schema modified: Trigger validate-against-cia-schemas.js
|
|
77
|
-
* - If schema deleted: Update local cache, assess impact
|
|
78
|
-
* - If validation fails: Alert operations team, prevent deployment
|
|
79
|
-
*
|
|
80
|
-
* Error Handling:
|
|
81
|
-
* - Network failures: Retry with exponential backoff
|
|
82
|
-
* - Malformed schemas: Log and skip with alert
|
|
83
|
-
* - File access errors: Report with detailed diagnostics
|
|
84
|
-
* - Partial failures: Complete check for other schemas
|
|
85
|
-
*
|
|
86
|
-
* Output Report Structure:
|
|
87
|
-
* {
|
|
88
|
-
* timestamp: ISO 8601,
|
|
89
|
-
* status: 'success' | 'failure',
|
|
90
|
-
* summary: { total, added, modified, deleted },
|
|
91
|
-
* details: [
|
|
92
|
-
* { schema: 'name', change: 'added|modified|deleted', ... }
|
|
93
|
-
* ],
|
|
94
|
-
* errors: [ ... ]
|
|
95
|
-
* }
|
|
96
|
-
*
|
|
97
|
-
* Integration Points:
|
|
98
|
-
* - CI/CD pipeline: Scheduled check during build process
|
|
99
|
-
* - sync-cia-schemas.js: Triggered to download new/updated schemas
|
|
100
|
-
* - validate-against-cia-schemas.js: Validates local data against updated schemas
|
|
101
|
-
* - Intelligence dashboards: Alerts for schema compatibility issues
|
|
102
|
-
*
|
|
103
|
-
* Network Security:
|
|
104
|
-
* - HTTPS only (GitHub raw content CDN)
|
|
105
|
-
* - No authentication required (public repository)
|
|
106
|
-
* - Rate limiting: GitHub allows 60 requests/hour unauthenticated
|
|
107
|
-
* - Implements delay between requests to respect rate limits
|
|
108
|
-
*
|
|
109
|
-
* Performance Characteristics:
|
|
110
|
-
* - Fetches ~19 schema files (avg 2-5 KB each)
|
|
111
|
-
* - Checksum computation: < 100ms per file
|
|
112
|
-
* - Total execution time: 3-5 seconds typical
|
|
113
|
-
* - Can be scheduled hourly without performance impact
|
|
114
|
-
*
|
|
115
|
-
* Data Integrity:
|
|
116
|
-
* - Checksums enable detection of file corruption
|
|
117
|
-
* - Change log maintains audit trail of schema evolution
|
|
118
|
-
* - Version control in git for local metadata tracking
|
|
119
|
-
* - Complies with data integrity principles
|
|
120
|
-
*
|
|
121
|
-
* ISMS Compliance:
|
|
122
|
-
* - ISO 27001:2022 A.8.1 - Asset management (track schema versions)
|
|
123
|
-
* - ISO 27001:2022 A.12.6.1 - Change management (schema version tracking)
|
|
124
|
-
* - NIST CSF 2.0 RC.IM-2 - Incident management and improvements
|
|
125
|
-
* - CIS Control 5.3 - Configuration change control
|
|
126
|
-
*
|
|
127
|
-
* Usage:
|
|
128
|
-
* node scripts/check-cia-schema-updates.js
|
|
129
|
-
* # Reports: New schemas, modified schemas, deleted schemas
|
|
130
|
-
* # Triggers: sync-cia-schemas.js if updates detected
|
|
131
|
-
*
|
|
132
|
-
* @intelligence Infrastructure monitoring for data product compatibility
|
|
133
|
-
* @osint External dependency monitoring for open-source intelligence data
|
|
134
|
-
* @risk Schema changes may break data validation or visualization
|
|
135
|
-
* @gdpr No personal data processed (schema structure only)
|
|
136
|
-
* @security HTTPS verification of remote schema source
|
|
137
|
-
*
|
|
138
|
-
* @author Hack23 AB (Data Infrastructure Team)
|
|
139
|
-
* @license Apache-2.0
|
|
140
|
-
* @version 1.3.0
|
|
141
|
-
* @see sync-cia-schemas.js (schema download and cache management)
|
|
142
|
-
* @see validate-against-cia-schemas.js (data validation against schemas)
|
|
143
|
-
* @see CIA Repository: https://github.com/Hack23/cia
|
|
144
|
-
* @see ISO 27001:2022 A.12.6.1 - Change management
|
|
145
|
-
*/
|
|
146
|
-
interface SchemaHashResult {
|
|
147
|
-
content: string;
|
|
148
|
-
hash: string;
|
|
149
|
-
}
|
|
150
|
-
declare class CIASchemaUpdateChecker {
|
|
151
|
-
private readonly schemasDir;
|
|
152
|
-
private readonly metadataDir;
|
|
153
|
-
private updates;
|
|
154
|
-
private errors;
|
|
155
|
-
constructor();
|
|
156
|
-
/**
|
|
157
|
-
* Calculate SHA256 hash of schema content
|
|
158
|
-
*/
|
|
159
|
-
calculateHash(content: string): string;
|
|
160
|
-
/**
|
|
161
|
-
* Fetch remote schema hash
|
|
162
|
-
*/
|
|
163
|
-
fetchRemoteSchemaHash(schemaName: string): Promise<SchemaHashResult>;
|
|
164
|
-
/**
|
|
165
|
-
* Load local schema hash
|
|
166
|
-
*/
|
|
167
|
-
loadLocalSchemaHash(schemaName: string): Promise<SchemaHashResult | null>;
|
|
168
|
-
/**
|
|
169
|
-
* Check a single schema for updates
|
|
170
|
-
*/
|
|
171
|
-
checkSchemaUpdate(schemaName: string): Promise<void>;
|
|
172
|
-
/**
|
|
173
|
-
* Check all schemas for updates
|
|
174
|
-
*/
|
|
175
|
-
checkAllSchemas(): Promise<number>;
|
|
176
|
-
/**
|
|
177
|
-
* Save update report
|
|
178
|
-
*/
|
|
179
|
-
saveUpdateReport(): Promise<void>;
|
|
180
|
-
/**
|
|
181
|
-
* Print summary
|
|
182
|
-
*/
|
|
183
|
-
printSummary(): void;
|
|
184
|
-
}
|
|
185
|
-
export default CIASchemaUpdateChecker;
|
|
186
|
-
//# sourceMappingURL=check-cia-schema-updates.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-cia-schema-updates.d.ts","sourceRoot":"","sources":["../../scripts/check-cia-schema-updates.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+IG;AAoCH,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAuBD,cAAM,sBAAsB;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,MAAM,CAAgB;;IAS9B;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAItC;;OAEG;IACG,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkB1E;;OAEG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAe/E;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC1D;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBxC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBvC;;OAEG;IACH,YAAY,IAAI,IAAI;CAuCrB;AAmBD,eAAe,sBAAsB,CAAC"}
|