riksdagsmonitor 0.8.21 → 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 +54 -22
- 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 -495
- 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 -41
- package/dist/scripts/pre-article-analysis.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis.js +0 -591
- 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,495 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module analysis-reader
|
|
3
|
-
* @description Reads pre-computed political intelligence analysis files from
|
|
4
|
-
* `analysis/daily/YYYY-MM-DD/` and provides a structured TypeScript API for
|
|
5
|
-
* article generators to consume classification, risk, SWOT, threat, and
|
|
6
|
-
* significance data.
|
|
7
|
-
*
|
|
8
|
-
* Falls back gracefully when analysis files are absent — backward compatible
|
|
9
|
-
* with article generators that do not yet consume pre-computed analysis.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* import { readDailyAnalysis } from './analysis-reader.js';
|
|
14
|
-
*
|
|
15
|
-
* const analysis = await readDailyAnalysis('2026-03-26');
|
|
16
|
-
* if (analysis.hasAnalysis) {
|
|
17
|
-
* const { classification, riskAssessment, significance } = analysis;
|
|
18
|
-
* // Enrich article generation with pre-computed intelligence
|
|
19
|
-
* }
|
|
20
|
-
* ```
|
|
21
|
-
*
|
|
22
|
-
* @author Hack23 AB
|
|
23
|
-
* @license Apache-2.0
|
|
24
|
-
*/
|
|
25
|
-
import { readFile } from 'node:fs/promises';
|
|
26
|
-
import { join } from 'node:path';
|
|
27
|
-
import { existsSync } from 'node:fs';
|
|
28
|
-
// ---------------------------------------------------------------------------
|
|
29
|
-
// Constants
|
|
30
|
-
// ---------------------------------------------------------------------------
|
|
31
|
-
/** Regex pattern for matching Riksdag document IDs (e.g., H9011, H902A) */
|
|
32
|
-
const DOC_ID_PATTERN = /\b[A-Z]\d{3,7}[A-Z]?\b/g;
|
|
33
|
-
/** Default significance score when none is found in the markdown */
|
|
34
|
-
const DEFAULT_SIGNIFICANCE_SCORE = 50;
|
|
35
|
-
// ---------------------------------------------------------------------------
|
|
36
|
-
// Markdown parsing helpers
|
|
37
|
-
// ---------------------------------------------------------------------------
|
|
38
|
-
/**
|
|
39
|
-
* Extract the first heading level 2 section content from markdown.
|
|
40
|
-
* Returns the text content between the heading and the next heading.
|
|
41
|
-
*/
|
|
42
|
-
function extractSection(markdown, sectionName) {
|
|
43
|
-
const escapedName = sectionName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
44
|
-
const regex = new RegExp(`##\\s+${escapedName}\\s*\\n([\\s\\S]*?)(?=\\n##\\s|$)`, 'i');
|
|
45
|
-
const match = regex.exec(markdown);
|
|
46
|
-
return match?.[1]?.trim() ?? '';
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Extract the value of a key-value pair from markdown.
|
|
50
|
-
* Supports formats: `**Key**: Value`, `- Key: Value`, `Key: Value`
|
|
51
|
-
*/
|
|
52
|
-
function extractValue(markdown, key) {
|
|
53
|
-
const escapedKey = key.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
54
|
-
const patterns = [
|
|
55
|
-
new RegExp(`\\*\\*${escapedKey}\\*\\*:\\s*(.+)`, 'i'),
|
|
56
|
-
new RegExp(`-\\s+${escapedKey}:\\s*(.+)`, 'i'),
|
|
57
|
-
new RegExp(`${escapedKey}:\\s*(.+)`, 'i'),
|
|
58
|
-
];
|
|
59
|
-
for (const pattern of patterns) {
|
|
60
|
-
const match = pattern.exec(markdown);
|
|
61
|
-
if (match?.[1]) {
|
|
62
|
-
return match[1].trim().replace(/\*\*/g, '').replace(/`/g, '');
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return '';
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Extract a bullet list from a markdown section as an array of strings.
|
|
69
|
-
* Handles both `- item` and `* item` formats.
|
|
70
|
-
*/
|
|
71
|
-
function extractBulletList(text) {
|
|
72
|
-
return text
|
|
73
|
-
.split('\n')
|
|
74
|
-
.map(line => line.replace(/^[\s\-*]+/, '').trim())
|
|
75
|
-
.filter(line => line.length > 0 && !line.startsWith('#'));
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Extract items tagged with a specific emoji icon from text.
|
|
79
|
-
*/
|
|
80
|
-
function extractIconTagged(text, icon) {
|
|
81
|
-
const results = [];
|
|
82
|
-
for (const line of text.split('\n')) {
|
|
83
|
-
if (line.includes(icon)) {
|
|
84
|
-
const cleaned = line.replace(/^[\s\-*]+/, '').trim();
|
|
85
|
-
if (cleaned)
|
|
86
|
-
results.push(cleaned);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return results;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Normalize a string to a ClassificationLevel.
|
|
93
|
-
* Returns 'MEDIUM' as default when unrecognized.
|
|
94
|
-
*/
|
|
95
|
-
function toClassificationLevel(value) {
|
|
96
|
-
const upper = value.toUpperCase().trim();
|
|
97
|
-
if (upper === 'CRITICAL')
|
|
98
|
-
return 'CRITICAL';
|
|
99
|
-
if (upper === 'HIGH')
|
|
100
|
-
return 'HIGH';
|
|
101
|
-
if (upper === 'LOW')
|
|
102
|
-
return 'LOW';
|
|
103
|
-
return 'MEDIUM';
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Normalize a string to a ConfidenceLabel.
|
|
107
|
-
* Returns 'MEDIUM' as default when unrecognized.
|
|
108
|
-
*/
|
|
109
|
-
function toConfidenceLabel(value) {
|
|
110
|
-
const upper = value.toUpperCase().trim();
|
|
111
|
-
if (upper === 'HIGH')
|
|
112
|
-
return 'HIGH';
|
|
113
|
-
if (upper === 'LOW')
|
|
114
|
-
return 'LOW';
|
|
115
|
-
return 'MEDIUM';
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Normalize a string to a RiskLevel.
|
|
119
|
-
* Returns 'moderate' as default when unrecognized.
|
|
120
|
-
*/
|
|
121
|
-
function toRiskLevel(value) {
|
|
122
|
-
const lower = value.toLowerCase().trim();
|
|
123
|
-
if (lower === 'high')
|
|
124
|
-
return 'high';
|
|
125
|
-
if (lower === 'elevated')
|
|
126
|
-
return 'elevated';
|
|
127
|
-
if (lower === 'low')
|
|
128
|
-
return 'low';
|
|
129
|
-
return 'moderate';
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Normalize a string to a DemocraticHealthLabel.
|
|
133
|
-
* Returns 'MEDIUM' as default when unrecognized.
|
|
134
|
-
*/
|
|
135
|
-
function toDemocraticHealthLabel(value) {
|
|
136
|
-
const upper = value.toUpperCase().trim().replace(/[\s_-]+/g, '_');
|
|
137
|
-
if (upper === 'HIGH')
|
|
138
|
-
return 'HIGH';
|
|
139
|
-
if (upper === 'LOW')
|
|
140
|
-
return 'LOW';
|
|
141
|
-
if (upper === 'AT_RISK' || upper === 'ATRISK')
|
|
142
|
-
return 'AT_RISK';
|
|
143
|
-
return 'MEDIUM';
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Normalize a string to a PriorityLevel.
|
|
147
|
-
* Returns 'standard' as default when unrecognized.
|
|
148
|
-
*/
|
|
149
|
-
function toPriorityLevel(value) {
|
|
150
|
-
const lower = value.toLowerCase().trim();
|
|
151
|
-
if (lower === 'breaking')
|
|
152
|
-
return 'breaking';
|
|
153
|
-
if (lower === 'major')
|
|
154
|
-
return 'major';
|
|
155
|
-
if (lower === 'background')
|
|
156
|
-
return 'background';
|
|
157
|
-
return 'standard';
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Normalize urgency labels to the known UrgencyLabel union.
|
|
161
|
-
* Returns 'standard' as safe default for unrecognized values.
|
|
162
|
-
*/
|
|
163
|
-
function toUrgencyLabel(value) {
|
|
164
|
-
const lower = value.toLowerCase().trim();
|
|
165
|
-
if (lower === 'breaking')
|
|
166
|
-
return 'breaking';
|
|
167
|
-
if (lower === 'major')
|
|
168
|
-
return 'major';
|
|
169
|
-
if (lower === 'background')
|
|
170
|
-
return 'background';
|
|
171
|
-
return 'standard';
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Parse SWOT entries from a markdown quadrant section.
|
|
175
|
-
*/
|
|
176
|
-
function parseSwotEntries(sectionText) {
|
|
177
|
-
const entries = [];
|
|
178
|
-
const blocks = sectionText.split(/\n(?=[-*]|\d+\.)/);
|
|
179
|
-
for (const block of blocks) {
|
|
180
|
-
const text = block.replace(/^\s*(?:[-*]|\d+\.)\s+/, '').trim();
|
|
181
|
-
if (!text || text.startsWith('#'))
|
|
182
|
-
continue;
|
|
183
|
-
// Detect confidence: HIGH, MEDIUM, LOW in square brackets or inline
|
|
184
|
-
const confMatch = /\[(HIGH|MEDIUM|LOW)\]/i.exec(text);
|
|
185
|
-
const confidence = confMatch ? toConfidenceLabel(confMatch[1]) : 'MEDIUM';
|
|
186
|
-
// Detect impact
|
|
187
|
-
const impactMatch = /impact:\s*(high|medium|low)/i.exec(text);
|
|
188
|
-
const impact = impactMatch
|
|
189
|
-
? impactMatch[1].toLowerCase()
|
|
190
|
-
: undefined;
|
|
191
|
-
// Detect source doc IDs (alphanumeric document ID patterns like H9011, H902A)
|
|
192
|
-
const docIdMatches = text.match(DOC_ID_PATTERN) ?? [];
|
|
193
|
-
entries.push({
|
|
194
|
-
text: text.replace(/\[(HIGH|MEDIUM|LOW)\]/gi, '').replace(/impact:\s*(high|medium|low)/gi, '').trim(),
|
|
195
|
-
confidence,
|
|
196
|
-
impact,
|
|
197
|
-
sourceDocIds: docIdMatches,
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
return entries.filter(e => e.text.length > 0);
|
|
201
|
-
}
|
|
202
|
-
// ---------------------------------------------------------------------------
|
|
203
|
-
// File parsers
|
|
204
|
-
// ---------------------------------------------------------------------------
|
|
205
|
-
/**
|
|
206
|
-
* Parse `classification-results.md` into a structured ClassificationResult.
|
|
207
|
-
*/
|
|
208
|
-
export function parseClassificationResults(markdown) {
|
|
209
|
-
const level = toClassificationLevel(extractValue(markdown, 'Level') || extractValue(markdown, 'Classification Level'));
|
|
210
|
-
const priority = toPriorityLevel(extractValue(markdown, 'Priority'));
|
|
211
|
-
const confidence = toConfidenceLabel(extractValue(markdown, 'Confidence'));
|
|
212
|
-
// Extract document IDs mentioned in the text
|
|
213
|
-
const documentIds = Array.from(new Set(markdown.match(DOC_ID_PATTERN) ?? []));
|
|
214
|
-
// Extract domains from bullet list in Domains or Policy Domains section
|
|
215
|
-
const domainsSection = extractSection(markdown, 'Policy Domains') || extractSection(markdown, 'Domains');
|
|
216
|
-
const domains = domainsSection
|
|
217
|
-
? extractBulletList(domainsSection)
|
|
218
|
-
: extractBulletList(extractSection(markdown, 'Classification') || '');
|
|
219
|
-
// Summary: prefer explicit `## Summary` section, fallback to first non-heading paragraph
|
|
220
|
-
const summarySection = extractSection(markdown, 'Summary');
|
|
221
|
-
const summary = (summarySection && summarySection.trim()) ||
|
|
222
|
-
/^(?!#)(.{30,})/m.exec(markdown)?.[1]?.trim() ||
|
|
223
|
-
markdown.split('\n').find(l => l.trim().length > 30)?.trim() ||
|
|
224
|
-
'';
|
|
225
|
-
return { level, priority, confidence, summary, documentIds, domains: domains.slice(0, 10) };
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Parse `risk-assessment.md` into a structured RiskAssessment.
|
|
229
|
-
*/
|
|
230
|
-
export function parseRiskAssessment(markdown) {
|
|
231
|
-
const level = toRiskLevel(extractValue(markdown, 'Overall Risk') || extractValue(markdown, 'Risk Level'));
|
|
232
|
-
const confidence = toConfidenceLabel(extractValue(markdown, 'Confidence'));
|
|
233
|
-
const factorsSection = extractSection(markdown, 'Risk Factors') || extractSection(markdown, 'Factors');
|
|
234
|
-
const factors = factorsSection ? extractBulletList(factorsSection) : [];
|
|
235
|
-
const indicators = extractIconTagged(markdown, '⚠️');
|
|
236
|
-
const summarySection = extractSection(markdown, 'Summary') || extractSection(markdown, 'Overview');
|
|
237
|
-
const summary = summarySection || markdown.split('\n').filter(l => l.trim().length > 30).slice(0, 2).join(' ');
|
|
238
|
-
return { level, factors: factors.slice(0, 10), indicators: indicators.slice(0, 8), confidence, summary };
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Parse `swot-analysis.md` into a structured SwotAnalysisResult.
|
|
242
|
-
*/
|
|
243
|
-
export function parseSwotAnalysis(markdown) {
|
|
244
|
-
const subject = extractValue(markdown, 'Subject') || 'Swedish Parliament';
|
|
245
|
-
const context = extractSection(markdown, 'Context') || undefined;
|
|
246
|
-
const strengthsSection = extractSection(markdown, 'Strengths') || extractSection(markdown, '💪 Strengths');
|
|
247
|
-
const weaknessesSection = extractSection(markdown, 'Weaknesses') || extractSection(markdown, '⚡ Weaknesses');
|
|
248
|
-
const opportunitiesSection = extractSection(markdown, 'Opportunities') || extractSection(markdown, '🚀 Opportunities');
|
|
249
|
-
const threatsSection = extractSection(markdown, 'Threats') || extractSection(markdown, '☁️ Threats');
|
|
250
|
-
return {
|
|
251
|
-
subject,
|
|
252
|
-
strengths: parseSwotEntries(strengthsSection),
|
|
253
|
-
weaknesses: parseSwotEntries(weaknessesSection),
|
|
254
|
-
opportunities: parseSwotEntries(opportunitiesSection),
|
|
255
|
-
threats: parseSwotEntries(threatsSection),
|
|
256
|
-
context,
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Parse `threat-analysis.md` into a structured ThreatAnalysisResult.
|
|
261
|
-
*/
|
|
262
|
-
export function parseThreatAnalysis(markdown) {
|
|
263
|
-
const indicators = extractIconTagged(markdown, '🎯');
|
|
264
|
-
const democraticHealth = toDemocraticHealthLabel(extractValue(markdown, 'Democratic Health') || extractValue(markdown, 'Health Status') || 'MEDIUM');
|
|
265
|
-
const confidence = toConfidenceLabel(extractValue(markdown, 'Confidence'));
|
|
266
|
-
const actorsSection = extractSection(markdown, 'Key Actors') || extractSection(markdown, 'Actors');
|
|
267
|
-
const actors = actorsSection ? extractBulletList(actorsSection) : [];
|
|
268
|
-
const summarySection = extractSection(markdown, 'Summary') || extractSection(markdown, 'Overview');
|
|
269
|
-
const summary = summarySection || markdown.split('\n').filter(l => l.trim().length > 30).slice(0, 2).join(' ');
|
|
270
|
-
return { indicators: indicators.slice(0, 8), democraticHealth, actors: actors.slice(0, 6), confidence, summary };
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Parse `stakeholder-perspectives.md` into a structured StakeholderPerspectivesResult.
|
|
274
|
-
*/
|
|
275
|
-
export function parseStakeholderPerspectives(markdown) {
|
|
276
|
-
const government = extractSection(markdown, '🏛️ Government') || extractSection(markdown, 'Government') || '';
|
|
277
|
-
const opposition = extractSection(markdown, '⚖️ Opposition') || extractSection(markdown, 'Opposition') || '';
|
|
278
|
-
const citizen = extractSection(markdown, '👥 Citizen') ||
|
|
279
|
-
extractSection(markdown, 'Citizen') ||
|
|
280
|
-
extractSection(markdown, 'Citizens') ||
|
|
281
|
-
'';
|
|
282
|
-
const economic = extractSection(markdown, '💰 Economic') || extractSection(markdown, 'Economic') || '';
|
|
283
|
-
const international = extractSection(markdown, '🌍 International') || extractSection(markdown, 'International') || '';
|
|
284
|
-
const media = extractSection(markdown, '📰 Media') || extractSection(markdown, 'Media') || '';
|
|
285
|
-
return {
|
|
286
|
-
government: government.split('\n').filter(l => l.trim()).join(' ').trim(),
|
|
287
|
-
opposition: opposition.split('\n').filter(l => l.trim()).join(' ').trim(),
|
|
288
|
-
citizen: citizen.split('\n').filter(l => l.trim()).join(' ').trim(),
|
|
289
|
-
economic: economic.split('\n').filter(l => l.trim()).join(' ').trim(),
|
|
290
|
-
international: international.split('\n').filter(l => l.trim()).join(' ').trim(),
|
|
291
|
-
media: media.split('\n').filter(l => l.trim()).join(' ').trim(),
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* Parse `significance-scoring.md` into a structured SignificanceScoringResult.
|
|
296
|
-
*/
|
|
297
|
-
export function parseSignificanceScoring(markdown) {
|
|
298
|
-
const scoreStr = extractValue(markdown, 'Overall Score') || extractValue(markdown, 'Score');
|
|
299
|
-
const score = scoreStr ? Math.min(100, Math.max(0, parseInt(scoreStr, 10) || DEFAULT_SIGNIFICANCE_SCORE)) : DEFAULT_SIGNIFICANCE_SCORE;
|
|
300
|
-
const urgency = toUrgencyLabel(extractValue(markdown, 'Urgency') || 'standard');
|
|
301
|
-
const confidence = toConfidenceLabel(extractValue(markdown, 'Confidence'));
|
|
302
|
-
// Extract top documents from a list
|
|
303
|
-
const topDocumentsSection = extractSection(markdown, 'Top Documents') || extractSection(markdown, 'Significant Documents');
|
|
304
|
-
const topDocuments = [];
|
|
305
|
-
for (const line of topDocumentsSection.split('\n')) {
|
|
306
|
-
const match = /([A-Z]\d{3,7}[A-Z]?).*?(\d{1,3})(?:%|\s+points?|\s+score)?[:\s—-]+(.+)/i.exec(line.trim());
|
|
307
|
-
if (match) {
|
|
308
|
-
const rawScore = parseInt(match[2], 10);
|
|
309
|
-
topDocuments.push({
|
|
310
|
-
docId: match[1],
|
|
311
|
-
score: Math.min(100, Math.max(0, Number.isFinite(rawScore) ? rawScore : 0)),
|
|
312
|
-
reason: match[3].trim(),
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
return { score, urgency, topDocuments: topDocuments.slice(0, 5), confidence };
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* Parse `synthesis-summary.md` into a structured SynthesisSummaryResult.
|
|
320
|
-
*/
|
|
321
|
-
export function parseSynthesisSummary(markdown) {
|
|
322
|
-
const narrativeDirection = extractSection(markdown, 'Narrative Direction') || extractSection(markdown, 'Primary Narrative') || '';
|
|
323
|
-
const articleFocus = extractSection(markdown, 'Article Focus') || extractSection(markdown, 'Focus') || '';
|
|
324
|
-
const themesSection = extractSection(markdown, 'Key Themes') || extractSection(markdown, 'Themes');
|
|
325
|
-
const keyThemes = themesSection ? extractBulletList(themesSection) : [];
|
|
326
|
-
const forwardSection = extractSection(markdown, 'Forward Indicators') || extractSection(markdown, 'What to Watch');
|
|
327
|
-
const forwardIndicators = forwardSection ? extractBulletList(forwardSection) : [];
|
|
328
|
-
return {
|
|
329
|
-
narrativeDirection: narrativeDirection.split('\n').filter(l => l.trim()).join(' ').trim(),
|
|
330
|
-
keyThemes: keyThemes.slice(0, 8),
|
|
331
|
-
articleFocus: articleFocus.split('\n').filter(l => l.trim()).join(' ').trim(),
|
|
332
|
-
forwardIndicators: forwardIndicators.slice(0, 5),
|
|
333
|
-
};
|
|
334
|
-
}
|
|
335
|
-
// ---------------------------------------------------------------------------
|
|
336
|
-
// File reading helpers
|
|
337
|
-
// ---------------------------------------------------------------------------
|
|
338
|
-
/** Base path for the analysis directory relative to project root */
|
|
339
|
-
const ANALYSIS_BASE_PATH = 'analysis/daily';
|
|
340
|
-
/** Analysis file names within a daily directory */
|
|
341
|
-
const ANALYSIS_FILES = {
|
|
342
|
-
classification: 'classification-results.md',
|
|
343
|
-
risk: 'risk-assessment.md',
|
|
344
|
-
swot: 'swot-analysis.md',
|
|
345
|
-
threat: 'threat-analysis.md',
|
|
346
|
-
stakeholders: 'stakeholder-perspectives.md',
|
|
347
|
-
significance: 'significance-scoring.md',
|
|
348
|
-
synthesis: 'synthesis-summary.md',
|
|
349
|
-
};
|
|
350
|
-
/** Strict YYYY-MM-DD format guard to prevent path traversal via `date`. */
|
|
351
|
-
const DATE_FORMAT_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
352
|
-
/**
|
|
353
|
-
* Attempt to read a markdown file from the analysis directory.
|
|
354
|
-
* Returns `null` if the file does not exist, cannot be read, or `date` is
|
|
355
|
-
* not a valid YYYY-MM-DD string (guards against path traversal).
|
|
356
|
-
*/
|
|
357
|
-
async function readAnalysisFile(date, filename, basePath) {
|
|
358
|
-
if (!DATE_FORMAT_RE.test(date))
|
|
359
|
-
return null;
|
|
360
|
-
const resolvedBase = basePath ?? ANALYSIS_BASE_PATH;
|
|
361
|
-
const filePath = join(resolvedBase, date, filename);
|
|
362
|
-
try {
|
|
363
|
-
return await readFile(filePath, 'utf-8');
|
|
364
|
-
}
|
|
365
|
-
catch {
|
|
366
|
-
return null;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
// ---------------------------------------------------------------------------
|
|
370
|
-
// Public API
|
|
371
|
-
// ---------------------------------------------------------------------------
|
|
372
|
-
/**
|
|
373
|
-
* Read and parse all pre-computed analysis files for a given date.
|
|
374
|
-
*
|
|
375
|
-
* @param date - Date string in YYYY-MM-DD format
|
|
376
|
-
* @param basePath - Optional override for the base analysis directory path
|
|
377
|
-
* @returns Complete DailyAnalysis object; individual fields are `null` when
|
|
378
|
-
* the corresponding file is absent or cannot be parsed.
|
|
379
|
-
*
|
|
380
|
-
* @example
|
|
381
|
-
* ```typescript
|
|
382
|
-
* const analysis = await readDailyAnalysis('2026-03-26');
|
|
383
|
-
* if (analysis.hasAnalysis) {
|
|
384
|
-
* console.log(analysis.classification?.level); // 'HIGH'
|
|
385
|
-
* console.log(analysis.significance?.score); // 72
|
|
386
|
-
* }
|
|
387
|
-
* ```
|
|
388
|
-
*/
|
|
389
|
-
export async function readDailyAnalysis(date, basePath) {
|
|
390
|
-
const [classificationMd, riskMd, swotMd, threatMd, stakeholdersMd, significanceMd, synthesisMd,] = await Promise.all([
|
|
391
|
-
readAnalysisFile(date, ANALYSIS_FILES.classification, basePath),
|
|
392
|
-
readAnalysisFile(date, ANALYSIS_FILES.risk, basePath),
|
|
393
|
-
readAnalysisFile(date, ANALYSIS_FILES.swot, basePath),
|
|
394
|
-
readAnalysisFile(date, ANALYSIS_FILES.threat, basePath),
|
|
395
|
-
readAnalysisFile(date, ANALYSIS_FILES.stakeholders, basePath),
|
|
396
|
-
readAnalysisFile(date, ANALYSIS_FILES.significance, basePath),
|
|
397
|
-
readAnalysisFile(date, ANALYSIS_FILES.synthesis, basePath),
|
|
398
|
-
]);
|
|
399
|
-
const classification = classificationMd ? parseClassificationResults(classificationMd) : null;
|
|
400
|
-
const riskAssessment = riskMd ? parseRiskAssessment(riskMd) : null;
|
|
401
|
-
const swot = swotMd ? parseSwotAnalysis(swotMd) : null;
|
|
402
|
-
const threatAnalysis = threatMd ? parseThreatAnalysis(threatMd) : null;
|
|
403
|
-
const stakeholderPerspectives = stakeholdersMd ? parseStakeholderPerspectives(stakeholdersMd) : null;
|
|
404
|
-
const significance = significanceMd ? parseSignificanceScoring(significanceMd) : null;
|
|
405
|
-
const synthesis = synthesisMd ? parseSynthesisSummary(synthesisMd) : null;
|
|
406
|
-
const hasAnalysis = [
|
|
407
|
-
classification,
|
|
408
|
-
riskAssessment,
|
|
409
|
-
swot,
|
|
410
|
-
threatAnalysis,
|
|
411
|
-
stakeholderPerspectives,
|
|
412
|
-
significance,
|
|
413
|
-
synthesis,
|
|
414
|
-
].some(field => field !== null);
|
|
415
|
-
return {
|
|
416
|
-
date,
|
|
417
|
-
classification,
|
|
418
|
-
riskAssessment,
|
|
419
|
-
swot,
|
|
420
|
-
threatAnalysis,
|
|
421
|
-
stakeholderPerspectives,
|
|
422
|
-
significance,
|
|
423
|
-
synthesis,
|
|
424
|
-
hasAnalysis,
|
|
425
|
-
};
|
|
426
|
-
}
|
|
427
|
-
/**
|
|
428
|
-
* Derive the most recent date for which analysis files exist.
|
|
429
|
-
* Searches backwards from today up to `maxDaysBack` days.
|
|
430
|
-
*
|
|
431
|
-
* @param maxDaysBack - Maximum number of days to search back (default 7)
|
|
432
|
-
* @param basePath - Optional override for the base analysis directory path
|
|
433
|
-
* @returns ISO date string (YYYY-MM-DD) or `null` if no analysis found
|
|
434
|
-
*/
|
|
435
|
-
export async function findLatestAnalysisDate(maxDaysBack = 7, basePath) {
|
|
436
|
-
const resolvedBase = basePath ?? ANALYSIS_BASE_PATH;
|
|
437
|
-
const today = new Date();
|
|
438
|
-
for (let i = 0; i < maxDaysBack; i++) {
|
|
439
|
-
const d = new Date(today);
|
|
440
|
-
d.setDate(d.getDate() - i);
|
|
441
|
-
const dateStr = d.toISOString().split('T')[0];
|
|
442
|
-
const dirPath = join(resolvedBase, dateStr);
|
|
443
|
-
if (existsSync(dirPath)) {
|
|
444
|
-
// Check at least one analysis file exists
|
|
445
|
-
const hasFile = Object.values(ANALYSIS_FILES).some(f => existsSync(join(dirPath, f)));
|
|
446
|
-
if (hasFile)
|
|
447
|
-
return dateStr;
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
return null;
|
|
451
|
-
}
|
|
452
|
-
/**
|
|
453
|
-
* Read the most recent available daily analysis.
|
|
454
|
-
* Convenience wrapper around `findLatestAnalysisDate` + `readDailyAnalysis`.
|
|
455
|
-
*
|
|
456
|
-
* @param maxDaysBack - Maximum number of days to search back (default 7)
|
|
457
|
-
* @param basePath - Optional override for the base analysis directory path
|
|
458
|
-
* @returns DailyAnalysis for the most recent date found, or a stub with
|
|
459
|
-
* `hasAnalysis: false` when no analysis files exist.
|
|
460
|
-
*/
|
|
461
|
-
export async function readLatestAnalysis(maxDaysBack = 7, basePath) {
|
|
462
|
-
const date = await findLatestAnalysisDate(maxDaysBack, basePath);
|
|
463
|
-
if (!date) {
|
|
464
|
-
const today = new Date().toISOString().split('T')[0];
|
|
465
|
-
return {
|
|
466
|
-
date: today,
|
|
467
|
-
classification: null,
|
|
468
|
-
riskAssessment: null,
|
|
469
|
-
swot: null,
|
|
470
|
-
threatAnalysis: null,
|
|
471
|
-
stakeholderPerspectives: null,
|
|
472
|
-
significance: null,
|
|
473
|
-
synthesis: null,
|
|
474
|
-
hasAnalysis: false,
|
|
475
|
-
};
|
|
476
|
-
}
|
|
477
|
-
return readDailyAnalysis(date, basePath);
|
|
478
|
-
}
|
|
479
|
-
/**
|
|
480
|
-
* Derive article classification metadata from a DailyAnalysis.
|
|
481
|
-
* Returns safe defaults when analysis is absent.
|
|
482
|
-
*
|
|
483
|
-
* @param analysis - DailyAnalysis object (may have hasAnalysis: false)
|
|
484
|
-
* @returns Flattened metadata suitable for ArticleData enrichment
|
|
485
|
-
*/
|
|
486
|
-
export function deriveArticleClassificationMeta(analysis) {
|
|
487
|
-
return {
|
|
488
|
-
classificationLevel: analysis.classification?.level ?? 'MEDIUM',
|
|
489
|
-
riskLevel: analysis.riskAssessment?.level ?? 'moderate',
|
|
490
|
-
confidenceLabel: analysis.classification?.confidence ?? analysis.riskAssessment?.confidence ?? 'MEDIUM',
|
|
491
|
-
significanceScore: analysis.significance?.score,
|
|
492
|
-
urgency: analysis.significance?.urgency,
|
|
493
|
-
};
|
|
494
|
-
}
|
|
495
|
-
//# sourceMappingURL=analysis-reader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-reader.js","sourceRoot":"","sources":["../../scripts/analysis-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* @module Intelligence/ContentQuality
|
|
4
|
-
* @category Intelligence Operations / Supporting Infrastructure
|
|
5
|
-
* @name Article Quality Enhancer - Political Intelligence Content Validation Framework (TypeScript)
|
|
6
|
-
*
|
|
7
|
-
* @description
|
|
8
|
-
* Comprehensive content quality assurance system implementing OSINT/INTOP-driven editorial standards
|
|
9
|
-
* for political intelligence journalism. This utility validates article structure, analytical depth, source attribution,
|
|
10
|
-
* and perspective diversity to ensure intelligence reporting meets rigorous transparency requirements.
|
|
11
|
-
*
|
|
12
|
-
* @author Hack23 AB (Content Intelligence Team)
|
|
13
|
-
* @license Apache-2.0
|
|
14
|
-
* @version 2.0.0
|
|
15
|
-
*/
|
|
16
|
-
import type { QualityThresholds, QualityMetrics, QualityResult } from './types/validation.js';
|
|
17
|
-
/**
|
|
18
|
-
* Default quality thresholds based on political intelligence editorial standards
|
|
19
|
-
*/
|
|
20
|
-
declare const DEFAULT_THRESHOLDS: QualityThresholds;
|
|
21
|
-
/**
|
|
22
|
-
* Assess analytical depth of article content
|
|
23
|
-
*
|
|
24
|
-
* Looks for:
|
|
25
|
-
* - Causal reasoning ("because", "therefore", "as a result")
|
|
26
|
-
* - Comparative analysis ("compared to", "in contrast", "while")
|
|
27
|
-
* - Trend analysis ("trend", "pattern", "shift")
|
|
28
|
-
* - Evidence-based claims (references to data, studies, reports)
|
|
29
|
-
* - Multiple perspectives (quotes from different actors)
|
|
30
|
-
*
|
|
31
|
-
* @param content - HTML content of article
|
|
32
|
-
* @returns Score 0.0-1.0
|
|
33
|
-
*/
|
|
34
|
-
declare function assessAnalyticalDepth(content: string): number;
|
|
35
|
-
/**
|
|
36
|
-
* Count unique party perspectives mentioned in article.
|
|
37
|
-
*
|
|
38
|
-
* Uses PARTY_VARIANTS pattern to prevent double-counting when both
|
|
39
|
-
* full names and abbreviations appear in the same text.
|
|
40
|
-
*
|
|
41
|
-
* @param content - HTML content of article
|
|
42
|
-
* @returns Number of unique parties mentioned
|
|
43
|
-
*/
|
|
44
|
-
declare function countPartyPerspectives(content: string): number;
|
|
45
|
-
/**
|
|
46
|
-
* Count cross-referenced Riksdag/Regering documents
|
|
47
|
-
*
|
|
48
|
-
* @param content - HTML content of article
|
|
49
|
-
* @returns Number of unique document IDs found
|
|
50
|
-
*/
|
|
51
|
-
declare function countCrossReferences(content: string): number;
|
|
52
|
-
/**
|
|
53
|
-
* Detect "Why This Matters" section
|
|
54
|
-
*
|
|
55
|
-
* @param content - HTML content of article
|
|
56
|
-
* @returns True if section exists
|
|
57
|
-
*/
|
|
58
|
-
declare function hasWhyThisMatters(content: string): boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Detect historical context
|
|
61
|
-
*
|
|
62
|
-
* @param content - HTML content of article
|
|
63
|
-
* @returns True if historical context present
|
|
64
|
-
*/
|
|
65
|
-
declare function hasHistoricalContext(content: string): boolean;
|
|
66
|
-
/**
|
|
67
|
-
* Detect international comparison
|
|
68
|
-
*
|
|
69
|
-
* @param content - HTML content of article
|
|
70
|
-
* @returns True if international comparison present
|
|
71
|
-
*/
|
|
72
|
-
declare function hasInternationalComparison(content: string): boolean;
|
|
73
|
-
/**
|
|
74
|
-
* Detect language switcher navigation
|
|
75
|
-
*
|
|
76
|
-
* @param content - HTML content of article
|
|
77
|
-
* @returns True if language switcher nav is present
|
|
78
|
-
*/
|
|
79
|
-
declare function hasLanguageSwitcher(content: string): boolean;
|
|
80
|
-
/**
|
|
81
|
-
* Detect article-top-nav with back-to-news link
|
|
82
|
-
*
|
|
83
|
-
* @param content - HTML content of article
|
|
84
|
-
* @returns True if article-top-nav div is present
|
|
85
|
-
*/
|
|
86
|
-
declare function hasArticleTopNav(content: string): boolean;
|
|
87
|
-
/**
|
|
88
|
-
* Detect back-to-news link (in top nav or footer)
|
|
89
|
-
*
|
|
90
|
-
* @param content - HTML content of article
|
|
91
|
-
* @returns True if back-to-news link is present
|
|
92
|
-
*/
|
|
93
|
-
declare function hasBackToNews(content: string): boolean;
|
|
94
|
-
/**
|
|
95
|
-
* Calculate overall quality score
|
|
96
|
-
*
|
|
97
|
-
* Weights:
|
|
98
|
-
* - Analytical depth: 30%
|
|
99
|
-
* - Party perspectives: 25%
|
|
100
|
-
* - Cross-references: 25%
|
|
101
|
-
* - "Why This Matters": 10%
|
|
102
|
-
* - Historical context: 5%
|
|
103
|
-
* - International comparison: 5%
|
|
104
|
-
*
|
|
105
|
-
* @param metrics - Individual quality metrics
|
|
106
|
-
* @returns Overall score 0.0-1.0
|
|
107
|
-
*/
|
|
108
|
-
declare function calculateQualityScore(metrics: QualityMetrics): number;
|
|
109
|
-
/**
|
|
110
|
-
* Enhance article quality and validate against thresholds
|
|
111
|
-
*
|
|
112
|
-
* @param articlePath - Path to article HTML file
|
|
113
|
-
* @param thresholds - Quality thresholds (optional, merged with defaults)
|
|
114
|
-
* @returns Quality assessment result
|
|
115
|
-
*/
|
|
116
|
-
export declare function enhanceArticleQuality(articlePath: string, thresholds?: Partial<QualityThresholds>): Promise<QualityResult>;
|
|
117
|
-
/**
|
|
118
|
-
* Batch enhance multiple articles
|
|
119
|
-
*
|
|
120
|
-
* @param articlePaths - Array of article paths
|
|
121
|
-
* @param thresholds - Quality thresholds (optional, merged with defaults)
|
|
122
|
-
* @returns Array of quality results
|
|
123
|
-
*/
|
|
124
|
-
export declare function batchEnhanceQuality(articlePaths: readonly string[], thresholds?: Partial<QualityThresholds>): Promise<QualityResult[]>;
|
|
125
|
-
/**
|
|
126
|
-
* Fix common HTML nesting errors in article content.
|
|
127
|
-
*
|
|
128
|
-
* Corrects invalid block-level nesting patterns:
|
|
129
|
-
* - `<p><ul>` → removes the enclosing `<p>` so the `<ul>` list is not nested inside a `<p>` paragraph
|
|
130
|
-
* - `<p><ol>` → removes the enclosing `<p>` so the `<ol>` list is not nested inside a `<p>` paragraph
|
|
131
|
-
* - `<p><div>` → removes the enclosing `<p>` so the block-level `<div>` is not nested inside a `<p>` paragraph
|
|
132
|
-
* - Orphaned `</p>` immediately after `</ul>` → removed
|
|
133
|
-
* - Orphaned `</p>` immediately after `</ol>` → removed
|
|
134
|
-
* - Orphaned `</p>` immediately after `</div>` (when wrapped by `<p>`) → removed
|
|
135
|
-
*
|
|
136
|
-
* @param content - Raw HTML content
|
|
137
|
-
* @returns Fixed HTML content
|
|
138
|
-
*/
|
|
139
|
-
export declare function fixArticleHtmlNesting(content: string): string;
|
|
140
|
-
/**
|
|
141
|
-
* Fix HTML nesting errors in a file in-place.
|
|
142
|
-
*
|
|
143
|
-
* @param filePath - Path to the HTML file to fix
|
|
144
|
-
* @returns True if the file was modified
|
|
145
|
-
*/
|
|
146
|
-
export declare function fixHtmlNestingInFile(filePath: string): boolean;
|
|
147
|
-
export { assessAnalyticalDepth, countPartyPerspectives, countCrossReferences, hasWhyThisMatters, hasHistoricalContext, hasInternationalComparison, hasLanguageSwitcher, hasArticleTopNav, hasBackToNews, calculateQualityScore, DEFAULT_THRESHOLDS, };
|
|
148
|
-
//# sourceMappingURL=article-quality-enhancer.d.ts.map
|