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,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module pre-article-analysis/data-persistence
|
|
3
|
-
* @description Persists raw MCP data to a structured, version-controlled
|
|
4
|
-
* directory tree under `analysis/data/`. Every document, vote, event, or
|
|
5
|
-
* MP record fetched from MCP tools is written here with a consistent
|
|
6
|
-
* filename derived from its official Riksdag identifier (e.g. `dok_id`,
|
|
7
|
-
* `intressent_id`, `bet`).
|
|
8
|
-
*
|
|
9
|
-
* **Collision-free design** (v2):
|
|
10
|
-
* - **Data files** (`{id}.json`) contain ONLY the raw source data — no
|
|
11
|
-
* injected metadata. Two parallel workflows writing the same document
|
|
12
|
-
* produce byte-identical output, eliminating git merge conflicts.
|
|
13
|
-
* - **Sidecar metadata** (`{id}.meta.json`) tracks provenance (at minimum
|
|
14
|
-
* fetch timestamp and MCP tool name) in a separate file that is safely
|
|
15
|
-
* overwritten on each run. Riksdag/Riksdag-regeringen documents also
|
|
16
|
-
* include `riksmöte` and `documentType`, while external MCP tools
|
|
17
|
-
* (World Bank, SCB, etc.) use tool-specific fields (e.g. indicator /
|
|
18
|
-
* country, tableId / query) instead.
|
|
19
|
-
* - **All MCP tools**: riksdag-regering, World Bank, SCB, and any other
|
|
20
|
-
* MCP tool responses are stored under `analysis/data/`.
|
|
21
|
-
*
|
|
22
|
-
* Design principles:
|
|
23
|
-
* - **Upsert**: writes overwrite existing files (mutable data like MP
|
|
24
|
-
* profiles) or create new ones (immutable data like dated votes).
|
|
25
|
-
* - **Provenance**: sidecar `.meta.json` files track fetch origin.
|
|
26
|
-
* - **Date-stamped**: time-bound data (votes, events) is stored under
|
|
27
|
-
* `analysis/data/{type}/YYYY-MM-DD/` subdirectories.
|
|
28
|
-
* - **Side-effect-aware**: this module intentionally writes to disk;
|
|
29
|
-
* callers control when persistence is triggered.
|
|
30
|
-
*
|
|
31
|
-
* @author Hack23 AB
|
|
32
|
-
* @license Apache-2.0
|
|
33
|
-
*/
|
|
34
|
-
import type { RawDocument } from '../data-transformers/types.js';
|
|
35
|
-
import type { DownloadedData, DocumentTypeKey } from './data-downloader.js';
|
|
36
|
-
/** All known document/data types that appear in sidecar metadata. */
|
|
37
|
-
export type PersistenceDocumentType = DocumentTypeKey | 'events' | 'mps' | 'government' | 'worldbank' | 'scb' | string;
|
|
38
|
-
/** Sidecar metadata written alongside data files. */
|
|
39
|
-
export interface PersistenceMetadata {
|
|
40
|
-
fetchedAt: string;
|
|
41
|
-
mcpTool: string;
|
|
42
|
-
riksmote: string;
|
|
43
|
-
documentType: PersistenceDocumentType;
|
|
44
|
-
}
|
|
45
|
-
/** Summary returned after a persistence run. */
|
|
46
|
-
export interface PersistenceResult {
|
|
47
|
-
/**
|
|
48
|
-
* Total logical records persisted.
|
|
49
|
-
*
|
|
50
|
-
* Note: a single logical record may produce multiple physical files or
|
|
51
|
-
* data/sidecar pairs (for example, votes written under both
|
|
52
|
-
* `documents/votes/` and `votes/{date}/`), but it is counted once here.
|
|
53
|
-
*/
|
|
54
|
-
written: number;
|
|
55
|
-
/** Total null/empty entries skipped. */
|
|
56
|
-
skipped: number;
|
|
57
|
-
/** Root directory the data was written to. */
|
|
58
|
-
dataRoot: string;
|
|
59
|
-
}
|
|
60
|
-
/** Description of an MCP tool call for generic response storage. */
|
|
61
|
-
export interface MCPToolCall {
|
|
62
|
-
/** MCP tool name (e.g. 'get_propositioner', 'search_tables', 'get-country-info') */
|
|
63
|
-
tool: string;
|
|
64
|
-
/** Parameters passed to the tool */
|
|
65
|
-
params: Record<string, unknown>;
|
|
66
|
-
/** MCP server identifier (e.g. 'riksdag-regering', 'scb', 'world-bank') */
|
|
67
|
-
server: string;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Resolve the best identifier for a document.
|
|
71
|
-
* Falls back through the standard candidate chain.
|
|
72
|
-
*/
|
|
73
|
-
export declare function resolveDocId(doc: RawDocument, index: number): string;
|
|
74
|
-
/**
|
|
75
|
-
* Persist all downloaded MCP data to the structured `analysis/data/` tree.
|
|
76
|
-
*
|
|
77
|
-
* Documents are organised by type under `analysis/data/documents/{type}/`.
|
|
78
|
-
* Date-stamped data (votes, events) is further partitioned by date.
|
|
79
|
-
*
|
|
80
|
-
* Data files contain only raw source data (no metadata injection) to ensure
|
|
81
|
-
* parallel workflows writing the same document produce identical output,
|
|
82
|
-
* preventing git merge conflicts.
|
|
83
|
-
*
|
|
84
|
-
* @param data - Downloaded data collections from `downloadAllDocuments()`
|
|
85
|
-
* @param riksmote - Current riksmöte identifier (e.g. "2025/26")
|
|
86
|
-
* @param mcpToolMap - Map of document type → MCP tool name for provenance
|
|
87
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
88
|
-
* @returns Summary of files written and skipped.
|
|
89
|
-
*/
|
|
90
|
-
export declare function persistDownloadedData(data: DownloadedData, riksmote: string, mcpToolMap?: Partial<Record<DocumentTypeKey, string>>, dataRoot?: string): PersistenceResult;
|
|
91
|
-
/**
|
|
92
|
-
* Persist a set of calendar events to `analysis/data/events/{date}/`.
|
|
93
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
94
|
-
*/
|
|
95
|
-
export declare function persistEvents(events: RawDocument[], riksmote: string, dataRoot?: string): PersistenceResult;
|
|
96
|
-
/**
|
|
97
|
-
* Persist MP profiles to `analysis/data/mps/`.
|
|
98
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
99
|
-
*/
|
|
100
|
-
export declare function persistMPs(mps: RawDocument[], riksmote: string, dataRoot?: string): PersistenceResult;
|
|
101
|
-
/**
|
|
102
|
-
* Persist a generic MCP tool response. Supports any MCP server (riksdag,
|
|
103
|
-
* SCB, World Bank, etc.). Responses are stored under:
|
|
104
|
-
* `analysis/data/mcp-responses/{server}/{tool}/{id}.json`
|
|
105
|
-
*
|
|
106
|
-
* The response data is stored as-is (no metadata injection). A sidecar
|
|
107
|
-
* `.meta.json` tracks provenance.
|
|
108
|
-
*
|
|
109
|
-
* @param call - Description of the MCP tool call
|
|
110
|
-
* @param response - Raw response data from the MCP tool
|
|
111
|
-
* @param id - Unique identifier for this response (e.g. dok_id, table_id, country code)
|
|
112
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
113
|
-
* @returns The absolute path where the response was written.
|
|
114
|
-
*/
|
|
115
|
-
export declare function persistMCPResponse(call: MCPToolCall, response: unknown, id: string, dataRoot?: string, riksmote?: string): string;
|
|
116
|
-
/**
|
|
117
|
-
* Persist World Bank API response data.
|
|
118
|
-
* Stored under `analysis/data/worldbank/{indicator}/{country}.json`
|
|
119
|
-
*
|
|
120
|
-
* @param indicator - World Bank indicator ID (e.g. 'NY.GDP.MKTP.CD')
|
|
121
|
-
* @param country - Country code (e.g. 'SWE')
|
|
122
|
-
* @param response - Raw API response data
|
|
123
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
124
|
-
*/
|
|
125
|
-
export declare function persistWorldBankData(indicator: string, country: string, response: unknown, dataRoot?: string): string;
|
|
126
|
-
/**
|
|
127
|
-
* Persist SCB (Statistics Sweden) table data.
|
|
128
|
-
* Stored under `analysis/data/scb/{tableId}.json`
|
|
129
|
-
*
|
|
130
|
-
* @param tableId - SCB table identifier (e.g. 'BE0101A')
|
|
131
|
-
* @param response - Raw SCB API response data
|
|
132
|
-
* @param query - Optional query parameters used for provenance
|
|
133
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
134
|
-
*/
|
|
135
|
-
export declare function persistSCBData(tableId: string, response: unknown, query?: Record<string, unknown>, dataRoot?: string): string;
|
|
136
|
-
/**
|
|
137
|
-
* Return the absolute path to the data repository root.
|
|
138
|
-
* Useful for callers that need to reference persisted files.
|
|
139
|
-
*/
|
|
140
|
-
export declare function getDataRoot(): string;
|
|
141
|
-
//# sourceMappingURL=data-persistence.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-persistence.d.ts","sourceRoot":"","sources":["../../../scripts/pre-article-analysis/data-persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAiB5E,qEAAqE;AACrE,MAAM,MAAM,uBAAuB,GAC/B,eAAe,GACf,QAAQ,GACR,KAAK,GACL,YAAY,GACZ,WAAW,GACX,KAAK,GACL,MAAM,CAAC;AAEX,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,uBAAuB,CAAC;CACvC;AAED,gDAAgD;AAChD,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAcpE;AAiCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,EACrD,QAAQ,GAAE,MAAkB,GAC3B,iBAAiB,CA8EnB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAkB,GAC3B,iBAAiB,CA8BnB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,WAAW,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAkB,GAC3B,iBAAiB,CAwBnB;AAwBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,EACjB,EAAE,EAAE,MAAM,EACV,QAAQ,GAAE,MAAkB,EAC5B,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAiCR;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,EACjB,QAAQ,GAAE,MAAkB,GAC3B,MAAM,CAwBR;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,EACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,GAAE,MAAkB,GAC3B,MAAM,CAyBR;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
|
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module pre-article-analysis/data-persistence
|
|
3
|
-
* @description Persists raw MCP data to a structured, version-controlled
|
|
4
|
-
* directory tree under `analysis/data/`. Every document, vote, event, or
|
|
5
|
-
* MP record fetched from MCP tools is written here with a consistent
|
|
6
|
-
* filename derived from its official Riksdag identifier (e.g. `dok_id`,
|
|
7
|
-
* `intressent_id`, `bet`).
|
|
8
|
-
*
|
|
9
|
-
* **Collision-free design** (v2):
|
|
10
|
-
* - **Data files** (`{id}.json`) contain ONLY the raw source data — no
|
|
11
|
-
* injected metadata. Two parallel workflows writing the same document
|
|
12
|
-
* produce byte-identical output, eliminating git merge conflicts.
|
|
13
|
-
* - **Sidecar metadata** (`{id}.meta.json`) tracks provenance (at minimum
|
|
14
|
-
* fetch timestamp and MCP tool name) in a separate file that is safely
|
|
15
|
-
* overwritten on each run. Riksdag/Riksdag-regeringen documents also
|
|
16
|
-
* include `riksmöte` and `documentType`, while external MCP tools
|
|
17
|
-
* (World Bank, SCB, etc.) use tool-specific fields (e.g. indicator /
|
|
18
|
-
* country, tableId / query) instead.
|
|
19
|
-
* - **All MCP tools**: riksdag-regering, World Bank, SCB, and any other
|
|
20
|
-
* MCP tool responses are stored under `analysis/data/`.
|
|
21
|
-
*
|
|
22
|
-
* Design principles:
|
|
23
|
-
* - **Upsert**: writes overwrite existing files (mutable data like MP
|
|
24
|
-
* profiles) or create new ones (immutable data like dated votes).
|
|
25
|
-
* - **Provenance**: sidecar `.meta.json` files track fetch origin.
|
|
26
|
-
* - **Date-stamped**: time-bound data (votes, events) is stored under
|
|
27
|
-
* `analysis/data/{type}/YYYY-MM-DD/` subdirectories.
|
|
28
|
-
* - **Side-effect-aware**: this module intentionally writes to disk;
|
|
29
|
-
* callers control when persistence is triggered.
|
|
30
|
-
*
|
|
31
|
-
* @author Hack23 AB
|
|
32
|
-
* @license Apache-2.0
|
|
33
|
-
*/
|
|
34
|
-
import crypto from 'node:crypto';
|
|
35
|
-
import fs from 'node:fs';
|
|
36
|
-
import path from 'node:path';
|
|
37
|
-
import { fileURLToPath } from 'node:url';
|
|
38
|
-
import { sanitizeDokId } from './markdown-serializer.js';
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
// Constants
|
|
41
|
-
// ---------------------------------------------------------------------------
|
|
42
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
43
|
-
const REPO_ROOT = path.resolve(__dirname, '../..');
|
|
44
|
-
const DATA_ROOT = path.join(REPO_ROOT, 'analysis', 'data');
|
|
45
|
-
/** ISO 8601 date format pattern (YYYY-MM-DD). Checks format only, not date validity. */
|
|
46
|
-
const ISO_DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
47
|
-
// ---------------------------------------------------------------------------
|
|
48
|
-
// Helpers
|
|
49
|
-
// ---------------------------------------------------------------------------
|
|
50
|
-
function ensureDir(dir) {
|
|
51
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Resolve the best identifier for a document.
|
|
55
|
-
* Falls back through the standard candidate chain.
|
|
56
|
-
*/
|
|
57
|
-
export function resolveDocId(doc, index) {
|
|
58
|
-
const record = doc;
|
|
59
|
-
const candidates = [
|
|
60
|
-
record['dok_id'],
|
|
61
|
-
record['dokument_id'],
|
|
62
|
-
record['id'],
|
|
63
|
-
record['rel_dok_id'],
|
|
64
|
-
record['titel'],
|
|
65
|
-
record['title'],
|
|
66
|
-
];
|
|
67
|
-
const id = candidates.find((c) => typeof c === 'string' && c.trim().length > 0)?.trim() ?? `unknown-${index + 1}`;
|
|
68
|
-
return sanitizeDokId(id) || `unknown-${index + 1}`;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Write raw data to disk as pretty-printed JSON (NO metadata injection).
|
|
72
|
-
* Metadata is written to a separate sidecar file to prevent merge conflicts
|
|
73
|
-
* when parallel workflows persist the same document.
|
|
74
|
-
*/
|
|
75
|
-
function writeDocumentAndMeta(dir, baseFilename, doc, metadata) {
|
|
76
|
-
ensureDir(dir);
|
|
77
|
-
// Write raw data only — deterministic across parallel workflow runs
|
|
78
|
-
fs.writeFileSync(path.join(dir, baseFilename), JSON.stringify(doc, null, 2), 'utf8');
|
|
79
|
-
// Write provenance sidecar — safe to overwrite (non-conflicting)
|
|
80
|
-
const metaFilename = baseFilename.replace(/\.json$/, '.meta.json');
|
|
81
|
-
fs.writeFileSync(path.join(dir, metaFilename), JSON.stringify(metadata, null, 2), 'utf8');
|
|
82
|
-
}
|
|
83
|
-
// ---------------------------------------------------------------------------
|
|
84
|
-
// Public API — Riksdag documents
|
|
85
|
-
// ---------------------------------------------------------------------------
|
|
86
|
-
/**
|
|
87
|
-
* Persist all downloaded MCP data to the structured `analysis/data/` tree.
|
|
88
|
-
*
|
|
89
|
-
* Documents are organised by type under `analysis/data/documents/{type}/`.
|
|
90
|
-
* Date-stamped data (votes, events) is further partitioned by date.
|
|
91
|
-
*
|
|
92
|
-
* Data files contain only raw source data (no metadata injection) to ensure
|
|
93
|
-
* parallel workflows writing the same document produce identical output,
|
|
94
|
-
* preventing git merge conflicts.
|
|
95
|
-
*
|
|
96
|
-
* @param data - Downloaded data collections from `downloadAllDocuments()`
|
|
97
|
-
* @param riksmote - Current riksmöte identifier (e.g. "2025/26")
|
|
98
|
-
* @param mcpToolMap - Map of document type → MCP tool name for provenance
|
|
99
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
100
|
-
* @returns Summary of files written and skipped.
|
|
101
|
-
*/
|
|
102
|
-
export function persistDownloadedData(data, riksmote, mcpToolMap, dataRoot = DATA_ROOT) {
|
|
103
|
-
const defaultToolMap = {
|
|
104
|
-
propositions: 'get_propositioner',
|
|
105
|
-
motions: 'get_motioner',
|
|
106
|
-
committeeReports: 'get_betankanden',
|
|
107
|
-
votes: 'search_voteringar',
|
|
108
|
-
speeches: 'search_anforanden',
|
|
109
|
-
questions: 'get_fragor',
|
|
110
|
-
interpellations: 'get_interpellationer',
|
|
111
|
-
};
|
|
112
|
-
const toolMap = { ...defaultToolMap, ...mcpToolMap };
|
|
113
|
-
const fetchedAt = new Date().toISOString();
|
|
114
|
-
let written = 0;
|
|
115
|
-
let skipped = 0;
|
|
116
|
-
const docTypes = [
|
|
117
|
-
'propositions',
|
|
118
|
-
'motions',
|
|
119
|
-
'committeeReports',
|
|
120
|
-
'votes',
|
|
121
|
-
'speeches',
|
|
122
|
-
'questions',
|
|
123
|
-
'interpellations',
|
|
124
|
-
];
|
|
125
|
-
for (const docType of docTypes) {
|
|
126
|
-
const docs = data[docType];
|
|
127
|
-
if (!docs || docs.length === 0) {
|
|
128
|
-
continue;
|
|
129
|
-
}
|
|
130
|
-
const typeDir = path.join(dataRoot, 'documents', docType);
|
|
131
|
-
const metadata = {
|
|
132
|
-
fetchedAt,
|
|
133
|
-
mcpTool: toolMap[docType],
|
|
134
|
-
riksmote,
|
|
135
|
-
documentType: docType,
|
|
136
|
-
};
|
|
137
|
-
const seenIds = new Set();
|
|
138
|
-
for (let i = 0; i < docs.length; i++) {
|
|
139
|
-
const doc = docs[i];
|
|
140
|
-
if (!doc) {
|
|
141
|
-
skipped++;
|
|
142
|
-
continue;
|
|
143
|
-
}
|
|
144
|
-
let docId = resolveDocId(doc, i);
|
|
145
|
-
// Collision avoidance: append suffix if ID already used in this batch
|
|
146
|
-
if (seenIds.has(docId)) {
|
|
147
|
-
let suffix = 1;
|
|
148
|
-
while (seenIds.has(`${docId}-${suffix}`))
|
|
149
|
-
suffix++;
|
|
150
|
-
docId = `${docId}-${suffix}`;
|
|
151
|
-
}
|
|
152
|
-
seenIds.add(docId);
|
|
153
|
-
const filename = `${docId}.json`;
|
|
154
|
-
// For date-stamped vote ballots, also persist under votes/{date}/
|
|
155
|
-
if (docType === 'votes' && doc.datum) {
|
|
156
|
-
const voteDate = typeof doc.datum === 'string'
|
|
157
|
-
? doc.datum.slice(0, 10)
|
|
158
|
-
: '';
|
|
159
|
-
if (ISO_DATE_RE.test(voteDate)) {
|
|
160
|
-
const voteDateDir = path.join(dataRoot, 'votes', voteDate);
|
|
161
|
-
writeDocumentAndMeta(voteDateDir, filename, doc, {
|
|
162
|
-
...metadata,
|
|
163
|
-
documentType: 'votes',
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
writeDocumentAndMeta(typeDir, filename, doc, metadata);
|
|
168
|
-
written++;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
return { written, skipped, dataRoot: dataRoot };
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Persist a set of calendar events to `analysis/data/events/{date}/`.
|
|
175
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
176
|
-
*/
|
|
177
|
-
export function persistEvents(events, riksmote, dataRoot = DATA_ROOT) {
|
|
178
|
-
const fetchedAt = new Date().toISOString();
|
|
179
|
-
let written = 0;
|
|
180
|
-
let skipped = 0;
|
|
181
|
-
for (let i = 0; i < events.length; i++) {
|
|
182
|
-
const event = events[i];
|
|
183
|
-
if (!event) {
|
|
184
|
-
skipped++;
|
|
185
|
-
continue;
|
|
186
|
-
}
|
|
187
|
-
const record = event;
|
|
188
|
-
const dateStr = typeof record['datum'] === 'string'
|
|
189
|
-
? record['datum'].slice(0, 10)
|
|
190
|
-
: typeof record['from'] === 'string'
|
|
191
|
-
? record['from'].slice(0, 10)
|
|
192
|
-
: '';
|
|
193
|
-
const eventDate = ISO_DATE_RE.test(dateStr) ? dateStr : 'undated';
|
|
194
|
-
const eventDir = path.join(dataRoot, 'events', eventDate);
|
|
195
|
-
const eventId = resolveDocId(event, i);
|
|
196
|
-
writeDocumentAndMeta(eventDir, `${eventId}.json`, event, {
|
|
197
|
-
fetchedAt,
|
|
198
|
-
mcpTool: 'get_calendar_events',
|
|
199
|
-
riksmote,
|
|
200
|
-
documentType: 'events',
|
|
201
|
-
});
|
|
202
|
-
written++;
|
|
203
|
-
}
|
|
204
|
-
return { written, skipped, dataRoot: dataRoot };
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Persist MP profiles to `analysis/data/mps/`.
|
|
208
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
209
|
-
*/
|
|
210
|
-
export function persistMPs(mps, riksmote, dataRoot = DATA_ROOT) {
|
|
211
|
-
const fetchedAt = new Date().toISOString();
|
|
212
|
-
let written = 0;
|
|
213
|
-
let skipped = 0;
|
|
214
|
-
for (let i = 0; i < mps.length; i++) {
|
|
215
|
-
const mp = mps[i];
|
|
216
|
-
if (!mp) {
|
|
217
|
-
skipped++;
|
|
218
|
-
continue;
|
|
219
|
-
}
|
|
220
|
-
const record = mp;
|
|
221
|
-
const id = (typeof record['intressent_id'] === 'string' && record['intressent_id'])
|
|
222
|
-
|| resolveDocId(mp, i);
|
|
223
|
-
const sanitized = sanitizeDokId(id) || `mp-${i + 1}`;
|
|
224
|
-
writeDocumentAndMeta(path.join(dataRoot, 'mps'), `${sanitized}.json`, mp, {
|
|
225
|
-
fetchedAt,
|
|
226
|
-
mcpTool: 'search_ledamoter',
|
|
227
|
-
riksmote,
|
|
228
|
-
documentType: 'mps',
|
|
229
|
-
});
|
|
230
|
-
written++;
|
|
231
|
-
}
|
|
232
|
-
return { written, skipped, dataRoot: dataRoot };
|
|
233
|
-
}
|
|
234
|
-
// ---------------------------------------------------------------------------
|
|
235
|
-
// Public API — Generic MCP response storage
|
|
236
|
-
// ---------------------------------------------------------------------------
|
|
237
|
-
/**
|
|
238
|
-
* Sanitize a path segment to prevent path traversal.
|
|
239
|
-
* Preserves underscores (common in MCP tool names like get_voting_group)
|
|
240
|
-
* but removes slashes, null bytes, and dots-only sequences.
|
|
241
|
-
*/
|
|
242
|
-
function sanitizePathSegment(segment) {
|
|
243
|
-
// Remove path separators and null bytes
|
|
244
|
-
let safe = segment.replace(/[/\\:\0]/g, '_');
|
|
245
|
-
// Collapse dots-only segments (e.g. "..", ".")
|
|
246
|
-
if (/^\.+$/.test(safe))
|
|
247
|
-
safe = '_dots_';
|
|
248
|
-
// Remove characters that are unsafe in paths but preserve underscores
|
|
249
|
-
safe = safe.replace(/[^a-zA-Z0-9_\-åäöÅÄÖ]/g, '_')
|
|
250
|
-
.replace(/_+/g, '_')
|
|
251
|
-
.replace(/^_|_$/g, '')
|
|
252
|
-
.slice(0, 100);
|
|
253
|
-
return safe || 'unknown';
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Persist a generic MCP tool response. Supports any MCP server (riksdag,
|
|
257
|
-
* SCB, World Bank, etc.). Responses are stored under:
|
|
258
|
-
* `analysis/data/mcp-responses/{server}/{tool}/{id}.json`
|
|
259
|
-
*
|
|
260
|
-
* The response data is stored as-is (no metadata injection). A sidecar
|
|
261
|
-
* `.meta.json` tracks provenance.
|
|
262
|
-
*
|
|
263
|
-
* @param call - Description of the MCP tool call
|
|
264
|
-
* @param response - Raw response data from the MCP tool
|
|
265
|
-
* @param id - Unique identifier for this response (e.g. dok_id, table_id, country code)
|
|
266
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
267
|
-
* @returns The absolute path where the response was written.
|
|
268
|
-
*/
|
|
269
|
-
export function persistMCPResponse(call, response, id, dataRoot = DATA_ROOT, riksmote) {
|
|
270
|
-
const sanitized = sanitizeDokId(id) || `response-${crypto.randomUUID()}`;
|
|
271
|
-
const safeServer = sanitizePathSegment(call.server);
|
|
272
|
-
const safeTool = sanitizePathSegment(call.tool);
|
|
273
|
-
const dir = path.join(dataRoot, 'mcp-responses', safeServer, safeTool);
|
|
274
|
-
ensureDir(dir);
|
|
275
|
-
const filename = `${sanitized}.json`;
|
|
276
|
-
fs.writeFileSync(path.join(dir, filename), JSON.stringify(response, null, 2), 'utf8');
|
|
277
|
-
// Derive riksmöte: explicit param > call.params.rm > empty
|
|
278
|
-
const resolvedRiksmote = riksmote
|
|
279
|
-
?? (typeof call.params.rm === 'string' ? call.params.rm : '');
|
|
280
|
-
const metaFilename = `${sanitized}.meta.json`;
|
|
281
|
-
const metadata = {
|
|
282
|
-
fetchedAt: new Date().toISOString(),
|
|
283
|
-
mcpTool: call.tool,
|
|
284
|
-
riksmote: resolvedRiksmote,
|
|
285
|
-
documentType: call.server,
|
|
286
|
-
params: call.params,
|
|
287
|
-
};
|
|
288
|
-
fs.writeFileSync(path.join(dir, metaFilename), JSON.stringify(metadata, null, 2), 'utf8');
|
|
289
|
-
return path.join(dir, filename);
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* Persist World Bank API response data.
|
|
293
|
-
* Stored under `analysis/data/worldbank/{indicator}/{country}.json`
|
|
294
|
-
*
|
|
295
|
-
* @param indicator - World Bank indicator ID (e.g. 'NY.GDP.MKTP.CD')
|
|
296
|
-
* @param country - Country code (e.g. 'SWE')
|
|
297
|
-
* @param response - Raw API response data
|
|
298
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
299
|
-
*/
|
|
300
|
-
export function persistWorldBankData(indicator, country, response, dataRoot = DATA_ROOT) {
|
|
301
|
-
const dir = path.join(dataRoot, 'worldbank', sanitizeDokId(indicator));
|
|
302
|
-
ensureDir(dir);
|
|
303
|
-
const filename = `${sanitizeDokId(country)}.json`;
|
|
304
|
-
fs.writeFileSync(path.join(dir, filename), JSON.stringify(response, null, 2), 'utf8');
|
|
305
|
-
const metaFilename = `${sanitizeDokId(country)}.meta.json`;
|
|
306
|
-
fs.writeFileSync(path.join(dir, metaFilename), JSON.stringify({
|
|
307
|
-
fetchedAt: new Date().toISOString(),
|
|
308
|
-
mcpTool: 'world-bank-api',
|
|
309
|
-
indicator,
|
|
310
|
-
country,
|
|
311
|
-
}, null, 2), 'utf8');
|
|
312
|
-
return path.join(dir, filename);
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* Persist SCB (Statistics Sweden) table data.
|
|
316
|
-
* Stored under `analysis/data/scb/{tableId}.json`
|
|
317
|
-
*
|
|
318
|
-
* @param tableId - SCB table identifier (e.g. 'BE0101A')
|
|
319
|
-
* @param response - Raw SCB API response data
|
|
320
|
-
* @param query - Optional query parameters used for provenance
|
|
321
|
-
* @param dataRoot - Override for the data root directory (for testing)
|
|
322
|
-
*/
|
|
323
|
-
export function persistSCBData(tableId, response, query, dataRoot = DATA_ROOT) {
|
|
324
|
-
const dir = path.join(dataRoot, 'scb');
|
|
325
|
-
ensureDir(dir);
|
|
326
|
-
const sanitized = sanitizeDokId(tableId);
|
|
327
|
-
const filename = `${sanitized}.json`;
|
|
328
|
-
fs.writeFileSync(path.join(dir, filename), JSON.stringify(response, null, 2), 'utf8');
|
|
329
|
-
const metaFilename = `${sanitized}.meta.json`;
|
|
330
|
-
fs.writeFileSync(path.join(dir, metaFilename), JSON.stringify({
|
|
331
|
-
fetchedAt: new Date().toISOString(),
|
|
332
|
-
mcpTool: 'scb-pxweb',
|
|
333
|
-
tableId,
|
|
334
|
-
...(query ? { query } : {}),
|
|
335
|
-
}, null, 2), 'utf8');
|
|
336
|
-
return path.join(dir, filename);
|
|
337
|
-
}
|
|
338
|
-
/**
|
|
339
|
-
* Return the absolute path to the data repository root.
|
|
340
|
-
* Useful for callers that need to reference persisted files.
|
|
341
|
-
*/
|
|
342
|
-
export function getDataRoot() {
|
|
343
|
-
return DATA_ROOT;
|
|
344
|
-
}
|
|
345
|
-
//# sourceMappingURL=data-persistence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-persistence.js","sourceRoot":"","sources":["../../../scripts/pre-article-analysis/data-persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module pre-article-analysis/markdown-serializer
|
|
3
|
-
* @description Serializes analysis framework results as structured markdown
|
|
4
|
-
* files for persistence in `analysis/daily/YYYY-MM-DD/`.
|
|
5
|
-
*
|
|
6
|
-
* Each output file follows the standard analysis template:
|
|
7
|
-
* ```markdown
|
|
8
|
-
* # [Analysis Type] — YYYY-MM-DD
|
|
9
|
-
* **Generated**: YYYY-MM-DD HH:MM UTC
|
|
10
|
-
* **Data Sources**: [list]
|
|
11
|
-
* **Documents Analyzed**: N
|
|
12
|
-
* **Confidence**: HIGH/MEDIUM/LOW
|
|
13
|
-
* ## Summary / ## Detailed Analysis / ## Key Findings / ## Implications
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* @author Hack23 AB
|
|
17
|
-
* @license Apache-2.0
|
|
18
|
-
*/
|
|
19
|
-
interface SwotContribution {
|
|
20
|
-
quadrant: string;
|
|
21
|
-
text: string;
|
|
22
|
-
forStakeholder: string;
|
|
23
|
-
}
|
|
24
|
-
interface DashboardMetric {
|
|
25
|
-
label: string;
|
|
26
|
-
value: number | string;
|
|
27
|
-
unit?: string;
|
|
28
|
-
metricName: string;
|
|
29
|
-
}
|
|
30
|
-
interface MindmapNode {
|
|
31
|
-
label: string;
|
|
32
|
-
children?: MindmapNode[];
|
|
33
|
-
}
|
|
34
|
-
interface PerspectiveAnalysis {
|
|
35
|
-
lens: string;
|
|
36
|
-
summary: string;
|
|
37
|
-
impact: string;
|
|
38
|
-
sentiment: string;
|
|
39
|
-
swotContribution: SwotContribution[];
|
|
40
|
-
dashboardMetrics: DashboardMetric[];
|
|
41
|
-
mindmapNodes: MindmapNode[];
|
|
42
|
-
confidence: number;
|
|
43
|
-
keyActors: string[];
|
|
44
|
-
relatedPolicies: string[];
|
|
45
|
-
}
|
|
46
|
-
interface DocumentLink {
|
|
47
|
-
sourceId: string;
|
|
48
|
-
targetId: string;
|
|
49
|
-
type: string;
|
|
50
|
-
description: string;
|
|
51
|
-
confidence: number;
|
|
52
|
-
reason: string;
|
|
53
|
-
}
|
|
54
|
-
interface DocumentAnalysisResult {
|
|
55
|
-
document: {
|
|
56
|
-
dok_id?: string;
|
|
57
|
-
titel?: string;
|
|
58
|
-
title?: string;
|
|
59
|
-
doktyp?: string;
|
|
60
|
-
organ?: string;
|
|
61
|
-
committee?: string;
|
|
62
|
-
datum?: string;
|
|
63
|
-
intressent_namn?: string;
|
|
64
|
-
author?: string;
|
|
65
|
-
parti?: string;
|
|
66
|
-
rm?: string;
|
|
67
|
-
summary?: string;
|
|
68
|
-
rubrik?: string;
|
|
69
|
-
undertitel?: string;
|
|
70
|
-
notis?: string;
|
|
71
|
-
mottagare?: string;
|
|
72
|
-
fullText?: string;
|
|
73
|
-
fullContent?: string;
|
|
74
|
-
[key: string]: unknown;
|
|
75
|
-
};
|
|
76
|
-
overallSignificance: number;
|
|
77
|
-
perspectives: PerspectiveAnalysis[];
|
|
78
|
-
crossDocumentLinks: DocumentLink[];
|
|
79
|
-
keyInsights: string[];
|
|
80
|
-
confidenceScore: number;
|
|
81
|
-
}
|
|
82
|
-
export interface SerializationContext {
|
|
83
|
-
/** ISO date string, e.g. "2026-03-26" */
|
|
84
|
-
date: string;
|
|
85
|
-
/** UTC timestamp of generation */
|
|
86
|
-
generatedAt: string;
|
|
87
|
-
/** List of MCP tool names called to download data */
|
|
88
|
-
dataSources: string[];
|
|
89
|
-
}
|
|
90
|
-
export interface SignificanceEntry {
|
|
91
|
-
dok_id: string;
|
|
92
|
-
title: string;
|
|
93
|
-
score: number;
|
|
94
|
-
doctype: string;
|
|
95
|
-
}
|
|
96
|
-
export interface RiskAssessmentResult {
|
|
97
|
-
coalitionRiskScore: number;
|
|
98
|
-
riskLevel: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
|
|
99
|
-
riskSummary: string;
|
|
100
|
-
anomalyFlags: Array<{
|
|
101
|
-
type: string;
|
|
102
|
-
severity: string;
|
|
103
|
-
description: string;
|
|
104
|
-
}>;
|
|
105
|
-
implications: string[];
|
|
106
|
-
}
|
|
107
|
-
export interface SwotSummary {
|
|
108
|
-
strengths: string[];
|
|
109
|
-
weaknesses: string[];
|
|
110
|
-
opportunities: string[];
|
|
111
|
-
threats: string[];
|
|
112
|
-
forStakeholder: string;
|
|
113
|
-
}
|
|
114
|
-
export interface CrossReferenceSummary {
|
|
115
|
-
docCount: number;
|
|
116
|
-
totalLinks: number;
|
|
117
|
-
links: DocumentLink[];
|
|
118
|
-
}
|
|
119
|
-
export interface SynthesisSummary {
|
|
120
|
-
totalDocs: number;
|
|
121
|
-
executiveSummary: string;
|
|
122
|
-
keyFindings: string[];
|
|
123
|
-
topDocuments: SignificanceEntry[];
|
|
124
|
-
overallConfidence: 'HIGH' | 'MEDIUM' | 'LOW';
|
|
125
|
-
aggregateRiskLevel: string;
|
|
126
|
-
}
|
|
127
|
-
export declare function serializeDataManifest(ctx: SerializationContext, docCounts: Record<string, number>, dateFilteredTotal?: number): string;
|
|
128
|
-
export declare function serializeClassificationResults(ctx: SerializationContext, results: DocumentAnalysisResult[]): string;
|
|
129
|
-
export declare function serializeRiskAssessment(ctx: SerializationContext, docCount: number, risk: RiskAssessmentResult): string;
|
|
130
|
-
export declare function serializeSwotAnalysis(ctx: SerializationContext, docCount: number, swots: SwotSummary[]): string;
|
|
131
|
-
export declare function serializeThreatAnalysis(ctx: SerializationContext, results: DocumentAnalysisResult[]): string;
|
|
132
|
-
export declare function serializeStakeholderPerspectives(ctx: SerializationContext, results: DocumentAnalysisResult[]): string;
|
|
133
|
-
export declare function serializeSignificanceScoring(ctx: SerializationContext, entries: SignificanceEntry[]): string;
|
|
134
|
-
export declare function serializeCrossReferenceMap(ctx: SerializationContext, summary: CrossReferenceSummary): string;
|
|
135
|
-
export declare function serializeSynthesisSummary(ctx: SerializationContext, synthesis: SynthesisSummary): string;
|
|
136
|
-
/**
|
|
137
|
-
* Serialize a per-document analysis markdown file.
|
|
138
|
-
*
|
|
139
|
-
* Each document gets its own analysis file with:
|
|
140
|
-
* - Full document metadata
|
|
141
|
-
* - Detailed SWOT analysis
|
|
142
|
-
* - Multi-lens stakeholder perspective analysis
|
|
143
|
-
* - Significance scoring factors
|
|
144
|
-
* - Cross-document references (where available)
|
|
145
|
-
* - Key insights
|
|
146
|
-
* - Data quality / methodology notes
|
|
147
|
-
*
|
|
148
|
-
* Note: Explicit risk indicator extraction and implications sections are
|
|
149
|
-
* produced at the synthesis level rather than by this per-document serializer.
|
|
150
|
-
*/
|
|
151
|
-
export declare function serializeDocumentAnalysis(ctx: SerializationContext, result: DocumentAnalysisResult): string;
|
|
152
|
-
/**
|
|
153
|
-
* Sanitize a document identifier for use as a safe filename.
|
|
154
|
-
* Replaces non-alphanumeric characters with hyphens and lowercases.
|
|
155
|
-
*/
|
|
156
|
-
export declare function sanitizeDokId(dokId: string): string;
|
|
157
|
-
export {};
|
|
158
|
-
//# sourceMappingURL=markdown-serializer.d.ts.map
|