riksdagsmonitor 0.8.14 → 0.8.17
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/dist/lib/cia/dashboard-init.d.ts +26 -0
- package/dist/lib/cia/dashboard-init.d.ts.map +1 -0
- package/dist/lib/cia/dashboard-init.js +108 -0
- package/dist/lib/cia/dashboard-init.js.map +1 -0
- package/dist/lib/cia/data-loader.d.ts +408 -0
- package/dist/lib/cia/data-loader.d.ts.map +1 -0
- package/dist/lib/cia/data-loader.js +867 -0
- package/dist/lib/cia/data-loader.js.map +1 -0
- package/dist/lib/cia/election-predictions.d.ts +78 -0
- package/dist/lib/cia/election-predictions.d.ts.map +1 -0
- package/dist/lib/cia/election-predictions.js +259 -0
- package/dist/lib/cia/election-predictions.js.map +1 -0
- package/dist/lib/cia/i18n-translations.d.ts +111 -0
- package/dist/lib/cia/i18n-translations.d.ts.map +1 -0
- package/dist/lib/cia/i18n-translations.js +619 -0
- package/dist/lib/cia/i18n-translations.js.map +1 -0
- package/dist/lib/cia/visualizations.d.ts +64 -0
- package/dist/lib/cia/visualizations.d.ts.map +1 -0
- package/dist/lib/cia/visualizations.js +662 -0
- package/dist/lib/cia/visualizations.js.map +1 -0
- package/dist/lib/dashboards/anomaly-detection.d.ts +44 -0
- package/dist/lib/dashboards/anomaly-detection.d.ts.map +1 -0
- package/dist/lib/dashboards/anomaly-detection.js +1017 -0
- package/dist/lib/dashboards/anomaly-detection.js.map +1 -0
- package/dist/lib/dashboards/coalition-dashboard.d.ts +36 -0
- package/dist/lib/dashboards/coalition-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/coalition-dashboard.js +645 -0
- package/dist/lib/dashboards/coalition-dashboard.js.map +1 -0
- package/dist/lib/dashboards/coalition-loader.d.ts +43 -0
- package/dist/lib/dashboards/coalition-loader.d.ts.map +1 -0
- package/dist/lib/dashboards/coalition-loader.js +701 -0
- package/dist/lib/dashboards/coalition-loader.js.map +1 -0
- package/dist/lib/dashboards/committees-dashboard.d.ts +23 -0
- package/dist/lib/dashboards/committees-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/committees-dashboard.js +886 -0
- package/dist/lib/dashboards/committees-dashboard.js.map +1 -0
- package/dist/lib/dashboards/election-cycle.d.ts +62 -0
- package/dist/lib/dashboards/election-cycle.d.ts.map +1 -0
- package/dist/lib/dashboards/election-cycle.js +484 -0
- package/dist/lib/dashboards/election-cycle.js.map +1 -0
- package/dist/lib/dashboards/ministry-dashboard.d.ts +46 -0
- package/dist/lib/dashboards/ministry-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/ministry-dashboard.js +1114 -0
- package/dist/lib/dashboards/ministry-dashboard.js.map +1 -0
- package/dist/lib/dashboards/party-dashboard.d.ts +56 -0
- package/dist/lib/dashboards/party-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/party-dashboard.js +981 -0
- package/dist/lib/dashboards/party-dashboard.js.map +1 -0
- package/dist/lib/dashboards/politician-dashboard.d.ts +41 -0
- package/dist/lib/dashboards/politician-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/politician-dashboard.js +611 -0
- package/dist/lib/dashboards/politician-dashboard.js.map +1 -0
- package/dist/lib/dashboards/pre-election.d.ts +64 -0
- package/dist/lib/dashboards/pre-election.d.ts.map +1 -0
- package/dist/lib/dashboards/pre-election.js +604 -0
- package/dist/lib/dashboards/pre-election.js.map +1 -0
- package/dist/lib/dashboards/risk-dashboard.d.ts +37 -0
- package/dist/lib/dashboards/risk-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/risk-dashboard.js +863 -0
- package/dist/lib/dashboards/risk-dashboard.js.map +1 -0
- package/dist/lib/dashboards/seasonal-patterns.d.ts +24 -0
- package/dist/lib/dashboards/seasonal-patterns.d.ts.map +1 -0
- package/dist/lib/dashboards/seasonal-patterns.js +535 -0
- package/dist/lib/dashboards/seasonal-patterns.js.map +1 -0
- package/dist/lib/dashboards/stats-loader.d.ts +35 -0
- package/dist/lib/dashboards/stats-loader.d.ts.map +1 -0
- package/dist/lib/dashboards/stats-loader.js +145 -0
- package/dist/lib/dashboards/stats-loader.js.map +1 -0
- package/dist/lib/{chart-factory.d.ts → shared/chart-factory.d.ts} +9 -2
- package/dist/lib/shared/chart-factory.d.ts.map +1 -0
- package/dist/lib/{chart-factory.js → shared/chart-factory.js} +9 -2
- package/dist/lib/shared/chart-factory.js.map +1 -0
- package/dist/lib/shared/data-loader.d.ts.map +1 -0
- package/dist/lib/shared/data-loader.js.map +1 -0
- package/dist/lib/shared/dom-utils.d.ts.map +1 -0
- package/dist/lib/shared/dom-utils.js.map +1 -0
- package/dist/lib/shared/error-boundary.d.ts.map +1 -0
- package/dist/lib/shared/error-boundary.js.map +1 -0
- package/dist/lib/shared/fallback-ui.d.ts.map +1 -0
- package/dist/lib/shared/fallback-ui.js.map +1 -0
- package/dist/lib/shared/index.d.ts.map +1 -0
- package/dist/lib/shared/index.js.map +1 -0
- package/dist/lib/shared/logger.d.ts.map +1 -0
- package/dist/lib/shared/logger.js.map +1 -0
- package/dist/lib/shared/register-globals.d.ts +14 -0
- package/dist/lib/shared/register-globals.d.ts.map +1 -0
- package/dist/lib/shared/register-globals.js +21 -0
- package/dist/lib/shared/register-globals.js.map +1 -0
- package/dist/lib/{theme.d.ts → shared/theme.d.ts} +1 -18
- package/dist/lib/shared/theme.d.ts.map +1 -0
- package/dist/lib/{theme.js → shared/theme.js} +1 -18
- package/dist/lib/shared/theme.js.map +1 -0
- package/dist/lib/shared/types.d.ts.map +1 -0
- package/dist/lib/shared/types.js.map +1 -0
- package/dist/lib/ui/back-to-top.d.ts +13 -0
- package/dist/lib/ui/back-to-top.d.ts.map +1 -0
- package/dist/lib/ui/back-to-top.js +48 -0
- package/dist/lib/ui/back-to-top.js.map +1 -0
- package/dist/scripts/analysis-reader.d.ts +241 -0
- package/dist/scripts/analysis-reader.d.ts.map +1 -0
- package/dist/scripts/analysis-reader.js +495 -0
- package/dist/scripts/analysis-reader.js.map +1 -0
- package/dist/scripts/article-quality-enhancer.d.ts +148 -0
- package/dist/scripts/article-quality-enhancer.d.ts.map +1 -0
- package/dist/scripts/article-quality-enhancer.js +430 -0
- package/dist/scripts/article-quality-enhancer.js.map +1 -0
- package/dist/scripts/article-template/constants.d.ts +104 -0
- package/dist/scripts/article-template/constants.d.ts.map +1 -0
- package/dist/scripts/article-template/constants.js +225 -0
- package/dist/scripts/article-template/constants.js.map +1 -0
- package/dist/scripts/article-template/helpers.d.ts +83 -0
- package/dist/scripts/article-template/helpers.d.ts.map +1 -0
- package/dist/scripts/article-template/helpers.js +236 -0
- package/dist/scripts/article-template/helpers.js.map +1 -0
- package/dist/scripts/article-template/index.d.ts +39 -0
- package/dist/scripts/article-template/index.d.ts.map +1 -0
- package/dist/scripts/article-template/index.js +37 -0
- package/dist/scripts/article-template/index.js.map +1 -0
- package/dist/scripts/article-template/registry.d.ts +64 -0
- package/dist/scripts/article-template/registry.d.ts.map +1 -0
- package/dist/scripts/article-template/registry.js +405 -0
- package/dist/scripts/article-template/registry.js.map +1 -0
- package/dist/scripts/article-template/template.d.ts +18 -0
- package/dist/scripts/article-template/template.d.ts.map +1 -0
- package/dist/scripts/article-template/template.js +359 -0
- package/dist/scripts/article-template/template.js.map +1 -0
- package/dist/scripts/article-template/types.d.ts +90 -0
- package/dist/scripts/article-template/types.d.ts.map +1 -0
- package/dist/scripts/article-template/types.js +96 -0
- package/dist/scripts/article-template/types.js.map +1 -0
- package/dist/scripts/article-template.d.ts +18 -0
- package/dist/scripts/article-template.d.ts.map +1 -0
- package/dist/scripts/article-template.js +18 -0
- package/dist/scripts/article-template.js.map +1 -0
- package/dist/scripts/catalog-downloaded-data.d.ts +66 -0
- package/dist/scripts/catalog-downloaded-data.d.ts.map +1 -0
- package/dist/scripts/catalog-downloaded-data.js +239 -0
- package/dist/scripts/catalog-downloaded-data.js.map +1 -0
- package/dist/scripts/check-cia-schema-updates.d.ts +186 -0
- package/dist/scripts/check-cia-schema-updates.d.ts.map +1 -0
- package/dist/scripts/check-cia-schema-updates.js +363 -0
- package/dist/scripts/check-cia-schema-updates.js.map +1 -0
- package/dist/scripts/data-transformers/calendar.d.ts +16 -0
- package/dist/scripts/data-transformers/calendar.d.ts.map +1 -0
- package/dist/scripts/data-transformers/calendar.js +137 -0
- package/dist/scripts/data-transformers/calendar.js.map +1 -0
- package/dist/scripts/data-transformers/constants/committee-names.d.ts +15 -0
- package/dist/scripts/data-transformers/constants/committee-names.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/committee-names.js +30 -0
- package/dist/scripts/data-transformers/constants/committee-names.js.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts +11 -0
- package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels-part1.js +900 -0
- package/dist/scripts/data-transformers/constants/content-labels-part1.js.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts +11 -0
- package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels-part2.js +900 -0
- package/dist/scripts/data-transformers/constants/content-labels-part2.js.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels.d.ts +13 -0
- package/dist/scripts/data-transformers/constants/content-labels.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels.js +18 -0
- package/dist/scripts/data-transformers/constants/content-labels.js.map +1 -0
- package/dist/scripts/data-transformers/constants/index.d.ts +15 -0
- package/dist/scripts/data-transformers/constants/index.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/index.js +15 -0
- package/dist/scripts/data-transformers/constants/index.js.map +1 -0
- package/dist/scripts/data-transformers/constants/locale-map.d.ts +13 -0
- package/dist/scripts/data-transformers/constants/locale-map.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/locale-map.js +17 -0
- package/dist/scripts/data-transformers/constants/locale-map.js.map +1 -0
- package/dist/scripts/data-transformers/constants.d.ts +14 -0
- package/dist/scripts/data-transformers/constants.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants.js +14 -0
- package/dist/scripts/data-transformers/constants.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts +64 -0
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js +805 -0
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts +50 -0
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.js +310 -0
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/committee.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/committee.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/committee.js +247 -0
- package/dist/scripts/data-transformers/content-generators/committee.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts +124 -0
- package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/dashboard-section.js +564 -0
- package/dist/scripts/data-transformers/content-generators/dashboard-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts +82 -0
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js +321 -0
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/generic.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/generic.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/generic.js +295 -0
- package/dist/scripts/data-transformers/content-generators/generic.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/index.d.ts +84 -0
- package/dist/scripts/data-transformers/content-generators/index.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/index.js +47 -0
- package/dist/scripts/data-transformers/content-generators/index.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/interpellations.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/interpellations.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/interpellations.js +124 -0
- package/dist/scripts/data-transformers/content-generators/interpellations.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts +137 -0
- package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/mindmap-section.js +286 -0
- package/dist/scripts/data-transformers/content-generators/mindmap-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts +17 -0
- package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/month-ahead.js +212 -0
- package/dist/scripts/data-transformers/content-generators/month-ahead.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts +17 -0
- package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/monthly-review.js +173 -0
- package/dist/scripts/data-transformers/content-generators/monthly-review.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/motions.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/motions.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/motions.js +158 -0
- package/dist/scripts/data-transformers/content-generators/motions.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts +52 -0
- package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/newsworthiness.js +244 -0
- package/dist/scripts/data-transformers/content-generators/newsworthiness.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/propositions.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/propositions.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/propositions.js +263 -0
- package/dist/scripts/data-transformers/content-generators/propositions.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts +92 -0
- package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/sankey-section.js +257 -0
- package/dist/scripts/data-transformers/content-generators/sankey-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/shared.d.ts +123 -0
- package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/shared.js +919 -0
- package/dist/scripts/data-transformers/content-generators/shared.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/swot-section.d.ts +50 -0
- package/dist/scripts/data-transformers/content-generators/swot-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/swot-section.js +177 -0
- package/dist/scripts/data-transformers/content-generators/swot-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/week-ahead.js +332 -0
- package/dist/scripts/data-transformers/content-generators/week-ahead.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators.d.ts +15 -0
- package/dist/scripts/data-transformers/content-generators.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators.js +14 -0
- package/dist/scripts/data-transformers/content-generators.js.map +1 -0
- package/dist/scripts/data-transformers/document-analysis.d.ts +58 -0
- package/dist/scripts/data-transformers/document-analysis.d.ts.map +1 -0
- package/dist/scripts/data-transformers/document-analysis.js +396 -0
- package/dist/scripts/data-transformers/document-analysis.js.map +1 -0
- package/dist/scripts/data-transformers/helpers.d.ts +144 -0
- package/dist/scripts/data-transformers/helpers.d.ts.map +1 -0
- package/dist/scripts/data-transformers/helpers.js +408 -0
- package/dist/scripts/data-transformers/helpers.js.map +1 -0
- package/dist/scripts/data-transformers/index.d.ts +45 -0
- package/dist/scripts/data-transformers/index.d.ts.map +1 -0
- package/dist/scripts/data-transformers/index.js +66 -0
- package/dist/scripts/data-transformers/index.js.map +1 -0
- package/dist/scripts/data-transformers/metadata.d.ts +42 -0
- package/dist/scripts/data-transformers/metadata.d.ts.map +1 -0
- package/dist/scripts/data-transformers/metadata.js +385 -0
- package/dist/scripts/data-transformers/metadata.js.map +1 -0
- package/dist/scripts/data-transformers/policy-analysis.d.ts +105 -0
- package/dist/scripts/data-transformers/policy-analysis.d.ts.map +1 -0
- package/dist/scripts/data-transformers/policy-analysis.js +686 -0
- package/dist/scripts/data-transformers/policy-analysis.js.map +1 -0
- package/dist/scripts/data-transformers/risk-analysis.d.ts +104 -0
- package/dist/scripts/data-transformers/risk-analysis.d.ts.map +1 -0
- package/dist/scripts/data-transformers/risk-analysis.js +279 -0
- package/dist/scripts/data-transformers/risk-analysis.js.map +1 -0
- package/dist/scripts/data-transformers/types.d.ts +260 -0
- package/dist/scripts/data-transformers/types.d.ts.map +1 -0
- package/dist/scripts/data-transformers/types.js +11 -0
- package/dist/scripts/data-transformers/types.js.map +1 -0
- package/dist/scripts/data-transformers.d.ts +23 -0
- package/dist/scripts/data-transformers.d.ts.map +1 -0
- package/dist/scripts/data-transformers.js +35 -0
- package/dist/scripts/data-transformers.js.map +1 -0
- package/dist/scripts/deep-inspection/index.d.ts +55 -0
- package/dist/scripts/deep-inspection/index.d.ts.map +1 -0
- package/dist/scripts/deep-inspection/index.js +66 -0
- package/dist/scripts/deep-inspection/index.js.map +1 -0
- package/dist/scripts/detect-swedish-leakage.d.ts +69 -0
- package/dist/scripts/detect-swedish-leakage.d.ts.map +1 -0
- package/dist/scripts/detect-swedish-leakage.js +417 -0
- package/dist/scripts/detect-swedish-leakage.js.map +1 -0
- package/dist/scripts/editorial-framework.d.ts +121 -0
- package/dist/scripts/editorial-framework.d.ts.map +1 -0
- package/dist/scripts/editorial-framework.js +364 -0
- package/dist/scripts/editorial-framework.js.map +1 -0
- package/dist/scripts/editorial-pillars.d.ts +43 -0
- package/dist/scripts/editorial-pillars.d.ts.map +1 -0
- package/dist/scripts/editorial-pillars.js +215 -0
- package/dist/scripts/editorial-pillars.js.map +1 -0
- package/dist/scripts/extract-news-metadata.d.ts +12 -0
- package/dist/scripts/extract-news-metadata.d.ts.map +1 -0
- package/dist/scripts/extract-news-metadata.js +107 -0
- package/dist/scripts/extract-news-metadata.js.map +1 -0
- package/dist/scripts/extract-vocabulary.d.ts +15 -0
- package/dist/scripts/extract-vocabulary.d.ts.map +1 -0
- package/dist/scripts/extract-vocabulary.js +255 -0
- package/dist/scripts/extract-vocabulary.js.map +1 -0
- package/dist/scripts/fix-article-navigation.d.ts +37 -0
- package/dist/scripts/fix-article-navigation.d.ts.map +1 -0
- package/dist/scripts/fix-article-navigation.js +198 -0
- package/dist/scripts/fix-article-navigation.js.map +1 -0
- package/dist/scripts/fix-keywords-localization.d.ts +18 -0
- package/dist/scripts/fix-keywords-localization.d.ts.map +1 -0
- package/dist/scripts/fix-keywords-localization.js +270 -0
- package/dist/scripts/fix-keywords-localization.js.map +1 -0
- package/dist/scripts/fix-old-articles-branding.d.ts +17 -0
- package/dist/scripts/fix-old-articles-branding.d.ts.map +1 -0
- package/dist/scripts/fix-old-articles-branding.js +229 -0
- package/dist/scripts/fix-old-articles-branding.js.map +1 -0
- package/dist/scripts/generate-news-backport.d.ts +16 -0
- package/dist/scripts/generate-news-backport.d.ts.map +1 -0
- package/dist/scripts/generate-news-backport.js +379 -0
- package/dist/scripts/generate-news-backport.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts +124 -0
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js +529 -0
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts +59 -0
- package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/analysis-cache.js +116 -0
- package/dist/scripts/generate-news-enhanced/analysis-cache.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts +58 -0
- package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/analysis-labels.js +144 -0
- package/dist/scripts/generate-news-enhanced/analysis-labels.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/config.d.ts +58 -0
- package/dist/scripts/generate-news-enhanced/config.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/config.js +286 -0
- package/dist/scripts/generate-news-enhanced/config.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/generators.d.ts +119 -0
- package/dist/scripts/generate-news-enhanced/generators.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/generators.js +2131 -0
- package/dist/scripts/generate-news-enhanced/generators.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/helpers.d.ts +122 -0
- package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/helpers.js +468 -0
- package/dist/scripts/generate-news-enhanced/helpers.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/index.d.ts +19 -0
- package/dist/scripts/generate-news-enhanced/index.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/index.js +221 -0
- package/dist/scripts/generate-news-enhanced/index.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts +46 -0
- package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/swot-analyzer.js +1227 -0
- package/dist/scripts/generate-news-enhanced/swot-analyzer.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/types.d.ts +34 -0
- package/dist/scripts/generate-news-enhanced/types.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/types.js +9 -0
- package/dist/scripts/generate-news-enhanced/types.js.map +1 -0
- package/dist/scripts/generate-news-enhanced.d.ts +25 -0
- package/dist/scripts/generate-news-enhanced.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced.js +37 -0
- package/dist/scripts/generate-news-enhanced.js.map +1 -0
- package/dist/scripts/generate-news-indexes/constants.d.ts +20 -0
- package/dist/scripts/generate-news-indexes/constants.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes/constants.js +308 -0
- package/dist/scripts/generate-news-indexes/constants.js.map +1 -0
- package/dist/scripts/generate-news-indexes/helpers.d.ts +73 -0
- package/dist/scripts/generate-news-indexes/helpers.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes/helpers.js +352 -0
- package/dist/scripts/generate-news-indexes/helpers.js.map +1 -0
- package/dist/scripts/generate-news-indexes/index.d.ts +20 -0
- package/dist/scripts/generate-news-indexes/index.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes/index.js +75 -0
- package/dist/scripts/generate-news-indexes/index.js.map +1 -0
- package/dist/scripts/generate-news-indexes/template.d.ts +25 -0
- package/dist/scripts/generate-news-indexes/template.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes/template.js +644 -0
- package/dist/scripts/generate-news-indexes/template.js.map +1 -0
- package/dist/scripts/generate-news-indexes/types.d.ts +96 -0
- package/dist/scripts/generate-news-indexes/types.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes/types.js +9 -0
- package/dist/scripts/generate-news-indexes/types.js.map +1 -0
- package/dist/scripts/generate-news-indexes.d.ts +20 -0
- package/dist/scripts/generate-news-indexes.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes.js +19 -0
- package/dist/scripts/generate-news-indexes.js.map +1 -0
- package/dist/scripts/generate-rss.d.ts +48 -0
- package/dist/scripts/generate-rss.d.ts.map +1 -0
- package/dist/scripts/generate-rss.js +299 -0
- package/dist/scripts/generate-rss.js.map +1 -0
- package/dist/scripts/generate-sitemap-html.d.ts +79 -0
- package/dist/scripts/generate-sitemap-html.d.ts.map +1 -0
- package/dist/scripts/generate-sitemap-html.js +878 -0
- package/dist/scripts/generate-sitemap-html.js.map +1 -0
- package/dist/scripts/generate-sitemap.d.ts +23 -0
- package/dist/scripts/generate-sitemap.d.ts.map +1 -0
- package/dist/scripts/generate-sitemap.js +476 -0
- package/dist/scripts/generate-sitemap.js.map +1 -0
- package/dist/scripts/generate-types-from-cia-schemas.d.ts +176 -0
- package/dist/scripts/generate-types-from-cia-schemas.d.ts.map +1 -0
- package/dist/scripts/generate-types-from-cia-schemas.js +318 -0
- package/dist/scripts/generate-types-from-cia-schemas.js.map +1 -0
- package/dist/scripts/government-role-validator.d.ts +65 -0
- package/dist/scripts/government-role-validator.d.ts.map +1 -0
- package/dist/scripts/government-role-validator.js +217 -0
- package/dist/scripts/government-role-validator.js.map +1 -0
- package/dist/scripts/html-utils.d.ts +17 -0
- package/dist/scripts/html-utils.d.ts.map +1 -0
- package/dist/scripts/html-utils.js +29 -0
- package/dist/scripts/html-utils.js.map +1 -0
- package/dist/scripts/load-cia-stats.d.ts +89 -0
- package/dist/scripts/load-cia-stats.d.ts.map +1 -0
- package/dist/scripts/load-cia-stats.js +400 -0
- package/dist/scripts/load-cia-stats.js.map +1 -0
- package/dist/scripts/mcp-client/client.d.ts +73 -0
- package/dist/scripts/mcp-client/client.d.ts.map +1 -0
- package/dist/scripts/mcp-client/client.js +526 -0
- package/dist/scripts/mcp-client/client.js.map +1 -0
- package/dist/scripts/mcp-client/document-types.d.ts +23 -0
- package/dist/scripts/mcp-client/document-types.d.ts.map +1 -0
- package/dist/scripts/mcp-client/document-types.js +62 -0
- package/dist/scripts/mcp-client/document-types.js.map +1 -0
- package/dist/scripts/mcp-client/index.d.ts +34 -0
- package/dist/scripts/mcp-client/index.d.ts.map +1 -0
- package/dist/scripts/mcp-client/index.js +67 -0
- package/dist/scripts/mcp-client/index.js.map +1 -0
- package/dist/scripts/mcp-client/transport.d.ts +32 -0
- package/dist/scripts/mcp-client/transport.d.ts.map +1 -0
- package/dist/scripts/mcp-client/transport.js +102 -0
- package/dist/scripts/mcp-client/transport.js.map +1 -0
- package/dist/scripts/mcp-client.d.ts +18 -0
- package/dist/scripts/mcp-client.d.ts.map +1 -0
- package/dist/scripts/mcp-client.js +18 -0
- package/dist/scripts/mcp-client.js.map +1 -0
- package/dist/scripts/mcp-query-cli.d.ts +25 -0
- package/dist/scripts/mcp-query-cli.d.ts.map +1 -0
- package/dist/scripts/mcp-query-cli.js +66 -0
- package/dist/scripts/mcp-query-cli.js.map +1 -0
- package/dist/scripts/news-types/breaking-news.d.ts +178 -0
- package/dist/scripts/news-types/breaking-news.d.ts.map +1 -0
- package/dist/scripts/news-types/breaking-news.js +432 -0
- package/dist/scripts/news-types/breaking-news.js.map +1 -0
- package/dist/scripts/news-types/committee-reports.d.ts +212 -0
- package/dist/scripts/news-types/committee-reports.d.ts.map +1 -0
- package/dist/scripts/news-types/committee-reports.js +404 -0
- package/dist/scripts/news-types/committee-reports.js.map +1 -0
- package/dist/scripts/news-types/month-ahead.d.ts +71 -0
- package/dist/scripts/news-types/month-ahead.d.ts.map +1 -0
- package/dist/scripts/news-types/month-ahead.js +392 -0
- package/dist/scripts/news-types/month-ahead.js.map +1 -0
- package/dist/scripts/news-types/monthly-review.d.ts +61 -0
- package/dist/scripts/news-types/monthly-review.d.ts.map +1 -0
- package/dist/scripts/news-types/monthly-review.js +417 -0
- package/dist/scripts/news-types/monthly-review.js.map +1 -0
- package/dist/scripts/news-types/motions.d.ts +214 -0
- package/dist/scripts/news-types/motions.d.ts.map +1 -0
- package/dist/scripts/news-types/motions.js +447 -0
- package/dist/scripts/news-types/motions.js.map +1 -0
- package/dist/scripts/news-types/propositions.d.ts +204 -0
- package/dist/scripts/news-types/propositions.d.ts.map +1 -0
- package/dist/scripts/news-types/propositions.js +401 -0
- package/dist/scripts/news-types/propositions.js.map +1 -0
- package/dist/scripts/news-types/week-ahead.d.ts +231 -0
- package/dist/scripts/news-types/week-ahead.d.ts.map +1 -0
- package/dist/scripts/news-types/week-ahead.js +441 -0
- package/dist/scripts/news-types/week-ahead.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/analysis.d.ts +47 -0
- package/dist/scripts/news-types/weekly-review/analysis.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/analysis.js +276 -0
- package/dist/scripts/news-types/weekly-review/analysis.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/data-loader.d.ts +51 -0
- package/dist/scripts/news-types/weekly-review/data-loader.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/data-loader.js +298 -0
- package/dist/scripts/news-types/weekly-review/data-loader.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/generator.d.ts +18 -0
- package/dist/scripts/news-types/weekly-review/generator.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/generator.js +284 -0
- package/dist/scripts/news-types/weekly-review/generator.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/index.d.ts +20 -0
- package/dist/scripts/news-types/weekly-review/index.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/index.js +23 -0
- package/dist/scripts/news-types/weekly-review/index.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/types.d.ts +72 -0
- package/dist/scripts/news-types/weekly-review/types.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/types.js +20 -0
- package/dist/scripts/news-types/weekly-review/types.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/validation.d.ts +10 -0
- package/dist/scripts/news-types/weekly-review/validation.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/validation.js +95 -0
- package/dist/scripts/news-types/weekly-review/validation.js.map +1 -0
- package/dist/scripts/news-types/weekly-review.d.ts +15 -0
- package/dist/scripts/news-types/weekly-review.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review.js +14 -0
- package/dist/scripts/news-types/weekly-review.js.map +1 -0
- package/dist/scripts/party-variants.d.ts +23 -0
- package/dist/scripts/party-variants.d.ts.map +1 -0
- package/dist/scripts/party-variants.js +50 -0
- package/dist/scripts/party-variants.js.map +1 -0
- package/dist/scripts/pipeline/index.d.ts +19 -0
- package/dist/scripts/pipeline/index.d.ts.map +1 -0
- package/dist/scripts/pipeline/index.js +17 -0
- package/dist/scripts/pipeline/index.js.map +1 -0
- package/dist/scripts/pipeline/orchestrator.d.ts +56 -0
- package/dist/scripts/pipeline/orchestrator.d.ts.map +1 -0
- package/dist/scripts/pipeline/orchestrator.js +147 -0
- package/dist/scripts/pipeline/orchestrator.js.map +1 -0
- package/dist/scripts/pipeline/types.d.ts +117 -0
- package/dist/scripts/pipeline/types.d.ts.map +1 -0
- package/dist/scripts/pipeline/types.js +13 -0
- package/dist/scripts/pipeline/types.js.map +1 -0
- package/dist/scripts/pipeline/validation.d.ts +66 -0
- package/dist/scripts/pipeline/validation.d.ts.map +1 -0
- package/dist/scripts/pipeline/validation.js +129 -0
- package/dist/scripts/pipeline/validation.js.map +1 -0
- package/dist/scripts/populate-analysis-data.d.ts +41 -0
- package/dist/scripts/populate-analysis-data.d.ts.map +1 -0
- package/dist/scripts/populate-analysis-data.js +255 -0
- package/dist/scripts/populate-analysis-data.js.map +1 -0
- package/dist/scripts/pre-article-analysis/data-downloader.d.ts +80 -0
- package/dist/scripts/pre-article-analysis/data-downloader.d.ts.map +1 -0
- package/dist/scripts/pre-article-analysis/data-downloader.js +230 -0
- package/dist/scripts/pre-article-analysis/data-downloader.js.map +1 -0
- package/dist/scripts/pre-article-analysis/data-persistence.d.ts +141 -0
- package/dist/scripts/pre-article-analysis/data-persistence.d.ts.map +1 -0
- package/dist/scripts/pre-article-analysis/data-persistence.js +345 -0
- package/dist/scripts/pre-article-analysis/data-persistence.js.map +1 -0
- package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts +158 -0
- package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts.map +1 -0
- package/dist/scripts/pre-article-analysis/markdown-serializer.js +648 -0
- package/dist/scripts/pre-article-analysis/markdown-serializer.js.map +1 -0
- package/dist/scripts/pre-article-analysis/pdf-converter.d.ts +58 -0
- package/dist/scripts/pre-article-analysis/pdf-converter.d.ts.map +1 -0
- package/dist/scripts/pre-article-analysis/pdf-converter.js +142 -0
- package/dist/scripts/pre-article-analysis/pdf-converter.js.map +1 -0
- package/dist/scripts/pre-article-analysis.d.ts +41 -0
- package/dist/scripts/pre-article-analysis.d.ts.map +1 -0
- package/dist/scripts/pre-article-analysis.js +591 -0
- package/dist/scripts/pre-article-analysis.js.map +1 -0
- package/dist/scripts/scb-client.d.ts +104 -0
- package/dist/scripts/scb-client.d.ts.map +1 -0
- package/dist/scripts/scb-client.js +286 -0
- package/dist/scripts/scb-client.js.map +1 -0
- package/dist/scripts/scb-context.d.ts +88 -0
- package/dist/scripts/scb-context.d.ts.map +1 -0
- package/dist/scripts/scb-context.js +307 -0
- package/dist/scripts/scb-context.js.map +1 -0
- package/dist/scripts/shared/version.d.ts +9 -0
- package/dist/scripts/shared/version.d.ts.map +1 -0
- package/dist/scripts/shared/version.js +28 -0
- package/dist/scripts/shared/version.js.map +1 -0
- package/dist/scripts/statistical-claims-detector.d.ts +119 -0
- package/dist/scripts/statistical-claims-detector.d.ts.map +1 -0
- package/dist/scripts/statistical-claims-detector.js +391 -0
- package/dist/scripts/statistical-claims-detector.js.map +1 -0
- package/dist/scripts/sync-cia-schemas.d.ts +52 -0
- package/dist/scripts/sync-cia-schemas.d.ts.map +1 -0
- package/dist/scripts/sync-cia-schemas.js +195 -0
- package/dist/scripts/sync-cia-schemas.js.map +1 -0
- package/dist/scripts/translation-dictionary.d.ts +45 -0
- package/dist/scripts/translation-dictionary.d.ts.map +1 -0
- package/dist/scripts/translation-dictionary.js +3642 -0
- package/dist/scripts/translation-dictionary.js.map +1 -0
- package/dist/scripts/types/article.d.ts +392 -0
- package/dist/scripts/types/article.d.ts.map +1 -0
- package/dist/scripts/types/article.js +6 -0
- package/dist/scripts/types/article.js.map +1 -0
- package/dist/scripts/types/content.d.ts +167 -0
- package/dist/scripts/types/content.d.ts.map +1 -0
- package/dist/scripts/types/content.js +6 -0
- package/dist/scripts/types/content.js.map +1 -0
- package/dist/scripts/types/editorial.d.ts +17 -0
- package/dist/scripts/types/editorial.d.ts.map +1 -0
- package/dist/scripts/types/editorial.js +6 -0
- package/dist/scripts/types/editorial.js.map +1 -0
- package/dist/scripts/types/language.d.ts +7 -0
- package/dist/scripts/types/language.d.ts.map +1 -0
- package/dist/scripts/types/language.js +6 -0
- package/dist/scripts/types/language.js.map +1 -0
- package/dist/scripts/types/mcp.d.ts +117 -0
- package/dist/scripts/types/mcp.d.ts.map +1 -0
- package/dist/scripts/types/mcp.js +6 -0
- package/dist/scripts/types/mcp.js.map +1 -0
- package/dist/scripts/types/party.d.ts +9 -0
- package/dist/scripts/types/party.d.ts.map +1 -0
- package/dist/scripts/types/party.js +6 -0
- package/dist/scripts/types/party.js.map +1 -0
- package/dist/scripts/types/validation.d.ts +136 -0
- package/dist/scripts/types/validation.d.ts.map +1 -0
- package/dist/scripts/types/validation.js +6 -0
- package/dist/scripts/types/validation.js.map +1 -0
- package/dist/scripts/types/workflow.d.ts +78 -0
- package/dist/scripts/types/workflow.d.ts.map +1 -0
- package/dist/scripts/types/workflow.js +6 -0
- package/dist/scripts/types/workflow.js.map +1 -0
- package/dist/scripts/update-stats-from-cia.d.ts +44 -0
- package/dist/scripts/update-stats-from-cia.d.ts.map +1 -0
- package/dist/scripts/update-stats-from-cia.js +310 -0
- package/dist/scripts/update-stats-from-cia.js.map +1 -0
- package/dist/scripts/validate-against-cia-schemas.d.ts +126 -0
- package/dist/scripts/validate-against-cia-schemas.d.ts.map +1 -0
- package/dist/scripts/validate-against-cia-schemas.js +299 -0
- package/dist/scripts/validate-against-cia-schemas.js.map +1 -0
- package/dist/scripts/validate-cross-references.d.ts +49 -0
- package/dist/scripts/validate-cross-references.d.ts.map +1 -0
- package/dist/scripts/validate-cross-references.js +183 -0
- package/dist/scripts/validate-cross-references.js.map +1 -0
- package/dist/scripts/validate-file-ownership.d.ts +68 -0
- package/dist/scripts/validate-file-ownership.d.ts.map +1 -0
- package/dist/scripts/validate-file-ownership.js +135 -0
- package/dist/scripts/validate-file-ownership.js.map +1 -0
- package/dist/scripts/validate-news-translations.d.ts +27 -0
- package/dist/scripts/validate-news-translations.d.ts.map +1 -0
- package/dist/scripts/validate-news-translations.js +258 -0
- package/dist/scripts/validate-news-translations.js.map +1 -0
- package/dist/scripts/validate-translations.d.ts +162 -0
- package/dist/scripts/validate-translations.d.ts.map +1 -0
- package/dist/scripts/validate-translations.js +378 -0
- package/dist/scripts/validate-translations.js.map +1 -0
- package/dist/scripts/workflow-state-coordinator.d.ts +354 -0
- package/dist/scripts/workflow-state-coordinator.d.ts.map +1 -0
- package/dist/scripts/workflow-state-coordinator.js +876 -0
- package/dist/scripts/workflow-state-coordinator.js.map +1 -0
- package/dist/scripts/world-bank-client.d.ts +122 -0
- package/dist/scripts/world-bank-client.d.ts.map +1 -0
- package/dist/scripts/world-bank-client.js +192 -0
- package/dist/scripts/world-bank-client.js.map +1 -0
- package/dist/scripts/world-bank-context.d.ts +88 -0
- package/dist/scripts/world-bank-context.d.ts.map +1 -0
- package/dist/scripts/world-bank-context.js +331 -0
- package/dist/scripts/world-bank-context.js.map +1 -0
- package/package.json +33 -8
- package/dist/lib/chart-factory.d.ts.map +0 -1
- package/dist/lib/chart-factory.js.map +0 -1
- package/dist/lib/data-loader.d.ts.map +0 -1
- package/dist/lib/data-loader.js.map +0 -1
- package/dist/lib/dom-utils.d.ts.map +0 -1
- package/dist/lib/dom-utils.js.map +0 -1
- package/dist/lib/error-boundary.d.ts.map +0 -1
- package/dist/lib/error-boundary.js.map +0 -1
- package/dist/lib/fallback-ui.d.ts.map +0 -1
- package/dist/lib/fallback-ui.js.map +0 -1
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/logger.d.ts.map +0 -1
- package/dist/lib/logger.js.map +0 -1
- package/dist/lib/theme.d.ts.map +0 -1
- package/dist/lib/theme.js.map +0 -1
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js.map +0 -1
- /package/dist/lib/{data-loader.d.ts → shared/data-loader.d.ts} +0 -0
- /package/dist/lib/{data-loader.js → shared/data-loader.js} +0 -0
- /package/dist/lib/{dom-utils.d.ts → shared/dom-utils.d.ts} +0 -0
- /package/dist/lib/{dom-utils.js → shared/dom-utils.js} +0 -0
- /package/dist/lib/{error-boundary.d.ts → shared/error-boundary.d.ts} +0 -0
- /package/dist/lib/{error-boundary.js → shared/error-boundary.js} +0 -0
- /package/dist/lib/{fallback-ui.d.ts → shared/fallback-ui.d.ts} +0 -0
- /package/dist/lib/{fallback-ui.js → shared/fallback-ui.js} +0 -0
- /package/dist/lib/{index.d.ts → shared/index.d.ts} +0 -0
- /package/dist/lib/{index.js → shared/index.js} +0 -0
- /package/dist/lib/{logger.d.ts → shared/logger.d.ts} +0 -0
- /package/dist/lib/{logger.js → shared/logger.js} +0 -0
- /package/dist/lib/{types.d.ts → shared/types.d.ts} +0 -0
- /package/dist/lib/{types.js → shared/types.js} +0 -0
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module ContentGeneration/MonthlyReview
|
|
3
|
+
* @category ContentGeneration
|
|
4
|
+
*
|
|
5
|
+
* @title Monthly Review Article Generator - Retrospective Monthly Analysis
|
|
6
|
+
*
|
|
7
|
+
* @description
|
|
8
|
+
* Generates comprehensive monthly review articles analyzing the past 30 days
|
|
9
|
+
* of parliamentary activity using the same 5-step enrichment pipeline as weekly-review:
|
|
10
|
+
* 1. search_dokument – find document IDs and types for the period
|
|
11
|
+
* 2. get_betankanden / get_propositioner / get_motioner – typed metadata fetchers
|
|
12
|
+
* 3. get_dokument_innehall – load every document completely (concurrency 3)
|
|
13
|
+
* 4. search_anforanden – fetch speeches from the same period
|
|
14
|
+
* 5. CIA static context – secondary historical context only
|
|
15
|
+
*
|
|
16
|
+
* @author Hack23 AB
|
|
17
|
+
* @license Apache-2.0
|
|
18
|
+
*/
|
|
19
|
+
import { MCPClient } from '../mcp-client.js';
|
|
20
|
+
import { generateArticleContent, extractWatchPoints, generateMetadata, calculateReadTime, generateSources, } from '../data-transformers.js';
|
|
21
|
+
import { enrichWithFullText, attachSpeechesToDocuments, loadCIAContext, } from './weekly-review.js';
|
|
22
|
+
import { getCurrentRiksmote } from './motions.js';
|
|
23
|
+
import { generateArticleHTML } from '../article-template.js';
|
|
24
|
+
import { generateCiaOverviewSection } from '../data-transformers/content-generators/cia-overview-section.js';
|
|
25
|
+
import { generateDynamicTitle, getAnalysisEnrichment } from '../generate-news-enhanced/helpers.js';
|
|
26
|
+
import { buildArticleVisualizationSections } from '../generate-news-enhanced/generators.js';
|
|
27
|
+
/**
|
|
28
|
+
* Required MCP tools for monthly-review articles
|
|
29
|
+
*/
|
|
30
|
+
export const REQUIRED_TOOLS = [
|
|
31
|
+
'search_dokument',
|
|
32
|
+
'get_dokument_innehall',
|
|
33
|
+
'search_anforanden',
|
|
34
|
+
'get_betankanden',
|
|
35
|
+
'get_propositioner',
|
|
36
|
+
'get_motioner',
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
* Format date for article slug
|
|
40
|
+
*/
|
|
41
|
+
export function formatDateForSlug(date = new Date()) {
|
|
42
|
+
return date.toISOString().split('T')[0] ?? '';
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Generate Monthly Review article in specified languages using the full enrichment pipeline.
|
|
46
|
+
*/
|
|
47
|
+
export async function generateMonthlyReview(options = {}) {
|
|
48
|
+
const { languages = ['en', 'sv'], lookbackDays = 30, writeArticle = null } = options;
|
|
49
|
+
console.log('📊 Generating Monthly Review article...');
|
|
50
|
+
const mcpCalls = [];
|
|
51
|
+
try {
|
|
52
|
+
const client = new MCPClient();
|
|
53
|
+
const today = new Date();
|
|
54
|
+
const startDate = new Date(today);
|
|
55
|
+
startDate.setDate(startDate.getDate() - lookbackDays);
|
|
56
|
+
const fromStr = formatDateForSlug(startDate);
|
|
57
|
+
const toStr = formatDateForSlug(today);
|
|
58
|
+
// Step 1: search_dokument for document IDs and types
|
|
59
|
+
console.log(` 🔄 Step 1 — Searching documents ${fromStr} → ${toStr}...`);
|
|
60
|
+
const allDocs = await client.searchDocuments({
|
|
61
|
+
from_date: fromStr,
|
|
62
|
+
to_date: toStr,
|
|
63
|
+
limit: 50,
|
|
64
|
+
});
|
|
65
|
+
mcpCalls.push({ tool: 'search_dokument', result: allDocs });
|
|
66
|
+
// Step 2: typed metadata fetchers (robust: errors → empty [])
|
|
67
|
+
console.log(' 🔄 Step 2 — Fetching typed metadata (reports, propositions, motions)...');
|
|
68
|
+
const rm = getCurrentRiksmote(today);
|
|
69
|
+
const [recentReports, recentPropositions, recentMotions] = await Promise.all([
|
|
70
|
+
Promise.resolve().then(() => client.fetchCommitteeReports(30, rm))
|
|
71
|
+
.catch((err) => { console.error('Failed to fetch committee reports:', err); return []; }),
|
|
72
|
+
Promise.resolve().then(() => client.fetchPropositions(20, rm))
|
|
73
|
+
.catch((err) => { console.error('Failed to fetch propositions:', err); return []; }),
|
|
74
|
+
Promise.resolve().then(() => client.fetchMotions(20, rm))
|
|
75
|
+
.catch((err) => { console.error('Failed to fetch motions:', err); return []; }),
|
|
76
|
+
]);
|
|
77
|
+
// Record MCP calls for traceability
|
|
78
|
+
mcpCalls.push({ tool: 'get_betankanden', result: recentReports });
|
|
79
|
+
mcpCalls.push({ tool: 'get_propositioner', result: recentPropositions });
|
|
80
|
+
mcpCalls.push({ tool: 'get_motioner', result: recentMotions });
|
|
81
|
+
// Filter typed results to the lookback window so only in-period documents are merged
|
|
82
|
+
const filterByDate = (docs) => docs.filter(d => {
|
|
83
|
+
const rec = d;
|
|
84
|
+
const docDate = rec['datum'] ?? rec['date'] ?? '';
|
|
85
|
+
if (!docDate)
|
|
86
|
+
return true; // no date field — keep (can't filter)
|
|
87
|
+
return docDate >= fromStr && docDate <= toStr;
|
|
88
|
+
});
|
|
89
|
+
const filteredReports = filterByDate(recentReports);
|
|
90
|
+
const filteredPropositions = filterByDate(recentPropositions);
|
|
91
|
+
const filteredMotions = filterByDate(recentMotions);
|
|
92
|
+
// Merge: typed docs first (have dok_id), then search extras
|
|
93
|
+
const typedDocs = [...filteredReports, ...filteredPropositions, ...filteredMotions];
|
|
94
|
+
const typedDocIds = new Set(typedDocs.flatMap(d => {
|
|
95
|
+
const id = d.dok_id;
|
|
96
|
+
return id ? [id] : [];
|
|
97
|
+
}));
|
|
98
|
+
const searchExtras = allDocs.filter(d => {
|
|
99
|
+
const id = d.dok_id;
|
|
100
|
+
const type = d.doktyp;
|
|
101
|
+
return id && type && !typedDocIds.has(id);
|
|
102
|
+
});
|
|
103
|
+
const documents = typedDocs.length > 0
|
|
104
|
+
? [...typedDocs, ...searchExtras]
|
|
105
|
+
: allDocs;
|
|
106
|
+
// Tag doktyp defaults where missing
|
|
107
|
+
for (const d of documents) {
|
|
108
|
+
const rec = d;
|
|
109
|
+
if (!rec['doktyp']) {
|
|
110
|
+
if (filteredReports.includes(d))
|
|
111
|
+
rec['doktyp'] = 'bet';
|
|
112
|
+
else if (filteredPropositions.includes(d))
|
|
113
|
+
rec['doktyp'] = 'prop';
|
|
114
|
+
else if (filteredMotions.includes(d))
|
|
115
|
+
rec['doktyp'] = 'mot';
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
console.log(` 📊 Found ${documents.length} documents (${filteredReports.length} reports, ${filteredPropositions.length} propositions, ${filteredMotions.length} motions within lookback window)`);
|
|
119
|
+
if (documents.length === 0) {
|
|
120
|
+
console.log(' ℹ️ No documents found for the past month, skipping');
|
|
121
|
+
return { success: true, files: 0, mcpCalls };
|
|
122
|
+
}
|
|
123
|
+
// Step 3: enrich each document with full text
|
|
124
|
+
console.log(' 🔄 Step 3 — Loading full document content...');
|
|
125
|
+
await enrichWithFullText(client, documents, mcpCalls, 3);
|
|
126
|
+
// Step 4: fetch speeches from the period
|
|
127
|
+
console.log(' 🔄 Step 4 — Fetching speeches from the period...');
|
|
128
|
+
const rawSpeeches = await Promise.resolve()
|
|
129
|
+
.then(() => client.searchSpeeches({ from: fromStr, to: toStr, limit: 100 }))
|
|
130
|
+
.catch((err) => { console.error('Failed to fetch speeches:', err); return []; });
|
|
131
|
+
const speeches = Array.isArray(rawSpeeches) ? rawSpeeches : [];
|
|
132
|
+
mcpCalls.push({ tool: 'search_anforanden', result: speeches });
|
|
133
|
+
console.log(` 🗣 Found ${speeches.length} speeches`);
|
|
134
|
+
attachSpeechesToDocuments(documents, speeches);
|
|
135
|
+
// Step 5: CIA intelligence context (secondary, historical)
|
|
136
|
+
console.log(' 🔄 Step 5 — Loading CIA intelligence context...');
|
|
137
|
+
const ciaContext = loadCIAContext();
|
|
138
|
+
console.log(` 🧠 CIA context: ${ciaContext.partyPerformance.length} parties, coalition stability ${ciaContext.coalitionStability.stabilityScore}/100, motion denial rate ${ciaContext.overallMotionDenialRate}%`);
|
|
139
|
+
// Step 6: Fetch previous 2 months for multi-month trend analysis
|
|
140
|
+
console.log(' 🔄 Step 6 — Fetching previous months for trend analysis...');
|
|
141
|
+
const prevStart = new Date(startDate);
|
|
142
|
+
prevStart.setDate(prevStart.getDate() - lookbackDays);
|
|
143
|
+
const prev2Start = new Date(prevStart);
|
|
144
|
+
prev2Start.setDate(prev2Start.getDate() - lookbackDays);
|
|
145
|
+
const [prevMonthDocs, twoMonthsDocs] = await Promise.all([
|
|
146
|
+
// Use a higher per-period cap to better approximate total volume for trend metrics; full-text enrichment is not needed here
|
|
147
|
+
client.searchDocuments({ from_date: formatDateForSlug(prevStart), to_date: fromStr, limit: 1000 })
|
|
148
|
+
.catch((error) => {
|
|
149
|
+
console.error('MonthlyReview Step 6 — search_dokument failed for previous month trend window', { from_date: formatDateForSlug(prevStart), to_date: fromStr, limit: 1000 }, error);
|
|
150
|
+
return [];
|
|
151
|
+
}),
|
|
152
|
+
client.searchDocuments({ from_date: formatDateForSlug(prev2Start), to_date: formatDateForSlug(prevStart), limit: 1000 })
|
|
153
|
+
.catch((error) => {
|
|
154
|
+
console.error('MonthlyReview Step 6 — search_dokument failed for two-months-ago trend window', { from_date: formatDateForSlug(prev2Start), to_date: formatDateForSlug(prevStart), limit: 1000 }, error);
|
|
155
|
+
return [];
|
|
156
|
+
}),
|
|
157
|
+
]);
|
|
158
|
+
mcpCalls.push({ tool: 'search_dokument', result: prevMonthDocs });
|
|
159
|
+
mcpCalls.push({ tool: 'search_dokument', result: twoMonthsDocs });
|
|
160
|
+
// Compute MonthlyMetrics from current-month data
|
|
161
|
+
const reportCount = documents.filter(d => d.doktyp === 'bet').length;
|
|
162
|
+
const propositionCount = documents.filter(d => d.doktyp === 'prop').length;
|
|
163
|
+
const motionCount = documents.filter(d => d.doktyp === 'mot').length;
|
|
164
|
+
// Party rankings: aggregate motions and speeches by party
|
|
165
|
+
// Filter party keys: trim whitespace and drop unknown/empty sentinels (returns null to exclude)
|
|
166
|
+
// Note: distinct from the normalizePartyKey helper in helpers.ts which maps unknowns to 'other'
|
|
167
|
+
const filterPartyKey = (raw) => {
|
|
168
|
+
const value = String(raw ?? '').trim();
|
|
169
|
+
if (!value)
|
|
170
|
+
return null;
|
|
171
|
+
const lower = value.toLowerCase();
|
|
172
|
+
if (lower === 'unknown' || lower === 'okänd')
|
|
173
|
+
return null;
|
|
174
|
+
return value;
|
|
175
|
+
};
|
|
176
|
+
const partyMotions = {};
|
|
177
|
+
const partySpeeches = {};
|
|
178
|
+
for (const doc of documents) {
|
|
179
|
+
const rec = doc;
|
|
180
|
+
if (rec['doktyp'] === 'mot') {
|
|
181
|
+
const p = filterPartyKey(rec['parti']);
|
|
182
|
+
if (p !== null)
|
|
183
|
+
partyMotions[p] = (partyMotions[p] ?? 0) + 1;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
for (const speech of speeches) {
|
|
187
|
+
const p = filterPartyKey(speech['parti']);
|
|
188
|
+
if (p !== null)
|
|
189
|
+
partySpeeches[p] = (partySpeeches[p] ?? 0) + 1;
|
|
190
|
+
}
|
|
191
|
+
const allParties = new Set([...Object.keys(partyMotions), ...Object.keys(partySpeeches)]);
|
|
192
|
+
const partyRankings = Array.from(allParties)
|
|
193
|
+
.map(party => ({
|
|
194
|
+
party,
|
|
195
|
+
motionCount: partyMotions[party] ?? 0,
|
|
196
|
+
speechCount: partySpeeches[party] ?? 0,
|
|
197
|
+
}))
|
|
198
|
+
.sort((a, b) => (b.motionCount + b.speechCount) - (a.motionCount + a.speechCount));
|
|
199
|
+
const monthlyMetrics = {
|
|
200
|
+
totalDocuments: documents.length,
|
|
201
|
+
reportCount,
|
|
202
|
+
propositionCount,
|
|
203
|
+
motionCount,
|
|
204
|
+
speechCount: speeches.length,
|
|
205
|
+
previousMonthDocCount: Array.isArray(prevMonthDocs) ? prevMonthDocs.length : 0,
|
|
206
|
+
twoMonthsAgoDocCount: Array.isArray(twoMonthsDocs) ? twoMonthsDocs.length : 0,
|
|
207
|
+
partyRankings,
|
|
208
|
+
legislativeEfficiencyRate: propositionCount > 0 ? reportCount / propositionCount : 0,
|
|
209
|
+
};
|
|
210
|
+
console.log(` 📈 Monthly metrics: ${documents.length} docs this month, ${monthlyMetrics.previousMonthDocCount} last month, ${partyRankings.length} active parties`);
|
|
211
|
+
const slug = `${formatDateForSlug(today)}-monthly-review`;
|
|
212
|
+
const articles = [];
|
|
213
|
+
const enrichment = await getAnalysisEnrichment();
|
|
214
|
+
for (const lang of languages) {
|
|
215
|
+
console.log(` 🌐 Generating ${lang.toUpperCase()} version...`);
|
|
216
|
+
const content = generateArticleContent({ documents, reports: recentReports, propositions: recentPropositions, motions: recentMotions, ciaContext, monthlyMetrics }, 'monthly-review', lang);
|
|
217
|
+
const watchPoints = extractWatchPoints({ documents }, lang);
|
|
218
|
+
const metadata = generateMetadata({ documents }, 'monthly-review', lang);
|
|
219
|
+
const readTime = calculateReadTime(content);
|
|
220
|
+
const sources = generateSources([
|
|
221
|
+
'search_dokument', 'get_dokument_innehall', 'search_anforanden',
|
|
222
|
+
'get_betankanden', 'get_propositioner', 'get_motioner',
|
|
223
|
+
]);
|
|
224
|
+
const titles = getTitles(lang, documents.length);
|
|
225
|
+
// Enrich English title/subtitle with content-based highlights
|
|
226
|
+
const enriched = lang === 'en' ? generateDynamicTitle(titles.title, content, documents.length) : titles;
|
|
227
|
+
const ciaSection = generateCiaOverviewSection({ cia: ciaContext, lang });
|
|
228
|
+
// Build additional visualization sections (SWOT, dashboard, economic)
|
|
229
|
+
const extraSections = buildArticleVisualizationSections(documents, null, lang);
|
|
230
|
+
const html = generateArticleHTML({
|
|
231
|
+
slug: `${slug}-${lang}.html`,
|
|
232
|
+
title: enriched.title,
|
|
233
|
+
subtitle: enriched.subtitle,
|
|
234
|
+
date: today.toISOString().split('T')[0] ?? '',
|
|
235
|
+
type: 'retrospective',
|
|
236
|
+
readTime,
|
|
237
|
+
lang,
|
|
238
|
+
content,
|
|
239
|
+
watchPoints,
|
|
240
|
+
sources,
|
|
241
|
+
keywords: metadata.keywords,
|
|
242
|
+
topics: metadata.topics,
|
|
243
|
+
tags: metadata.tags,
|
|
244
|
+
sections: [ciaSection, ...extraSections],
|
|
245
|
+
...(enrichment ?? {}),
|
|
246
|
+
});
|
|
247
|
+
articles.push({
|
|
248
|
+
lang,
|
|
249
|
+
html,
|
|
250
|
+
filename: `${slug}-${lang}.html`,
|
|
251
|
+
slug: `${slug}-${lang}`,
|
|
252
|
+
});
|
|
253
|
+
if (writeArticle) {
|
|
254
|
+
await writeArticle(html, `${slug}-${lang}.html`);
|
|
255
|
+
console.log(` ✅ ${lang.toUpperCase()} version generated`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
success: true,
|
|
260
|
+
files: languages.length,
|
|
261
|
+
slug,
|
|
262
|
+
articles,
|
|
263
|
+
mcpCalls,
|
|
264
|
+
crossReferences: {
|
|
265
|
+
event: `${documents.length} documents over ${lookbackDays} days`,
|
|
266
|
+
sources: ['search_dokument', 'get_dokument_innehall', 'search_anforanden', 'get_betankanden', 'get_propositioner', 'get_motioner'],
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
console.error('❌ Error generating Monthly Review:', error.message);
|
|
272
|
+
return {
|
|
273
|
+
success: false,
|
|
274
|
+
error: error.message,
|
|
275
|
+
mcpCalls
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Get language-specific titles
|
|
281
|
+
*/
|
|
282
|
+
function getTitles(lang, documentCount) {
|
|
283
|
+
const titles = {
|
|
284
|
+
en: {
|
|
285
|
+
title: `Monthly Review: Parliament in Perspective`,
|
|
286
|
+
subtitle: `Comprehensive analysis of ${documentCount} developments from the past month in Swedish politics`
|
|
287
|
+
},
|
|
288
|
+
sv: {
|
|
289
|
+
title: `Månadskrönika: Riksdagen i perspektiv`,
|
|
290
|
+
subtitle: `Omfattande analys av ${documentCount} händelser från den gångna månaden`
|
|
291
|
+
},
|
|
292
|
+
da: {
|
|
293
|
+
title: `Månedsgennemgang: Parlamentet i perspektiv`,
|
|
294
|
+
subtitle: `Omfattende analyse af ${documentCount} begivenheder fra den forgangne måned`
|
|
295
|
+
},
|
|
296
|
+
no: {
|
|
297
|
+
title: `Månedsgjennomgang: Stortinget i perspektiv`,
|
|
298
|
+
subtitle: `Omfattende analyse av ${documentCount} hendelser fra den siste måneden`
|
|
299
|
+
},
|
|
300
|
+
fi: {
|
|
301
|
+
title: `Kuukausikatsaus: Eduskunta perspektiivissä`,
|
|
302
|
+
subtitle: `Kattava analyysi ${documentCount} tapahtumasta viime kuukaudelta`
|
|
303
|
+
},
|
|
304
|
+
de: {
|
|
305
|
+
title: `Monatsrückblick: Parlament in Perspektive`,
|
|
306
|
+
subtitle: `Umfassende Analyse von ${documentCount} Entwicklungen des vergangenen Monats`
|
|
307
|
+
},
|
|
308
|
+
fr: {
|
|
309
|
+
title: `Revue mensuelle : Le Parlement en perspective`,
|
|
310
|
+
subtitle: `Analyse complète de ${documentCount} développements du mois écoulé`
|
|
311
|
+
},
|
|
312
|
+
es: {
|
|
313
|
+
title: `Revisión mensual: El Parlamento en perspectiva`,
|
|
314
|
+
subtitle: `Análisis integral de ${documentCount} desarrollos del mes pasado`
|
|
315
|
+
},
|
|
316
|
+
nl: {
|
|
317
|
+
title: `Maandelijkse terugblik: Parlement in perspectief`,
|
|
318
|
+
subtitle: `Uitgebreide analyse van ${documentCount} ontwikkelingen van de afgelopen maand`
|
|
319
|
+
},
|
|
320
|
+
ar: {
|
|
321
|
+
title: `المراجعة الشهرية: البرلمان في منظور`,
|
|
322
|
+
subtitle: `تحليل شامل لـ ${documentCount} تطور من الشهر الماضي`
|
|
323
|
+
},
|
|
324
|
+
he: {
|
|
325
|
+
title: `סקירה חודשית: הפרלמנט בפרספקטיבה`,
|
|
326
|
+
subtitle: `ניתוח מקיף של ${documentCount} התפתחויות מהחודש שעבר`
|
|
327
|
+
},
|
|
328
|
+
ja: {
|
|
329
|
+
title: `月間レビュー:議会を展望する`,
|
|
330
|
+
subtitle: `先月の${documentCount}件の動向の包括的分析`
|
|
331
|
+
},
|
|
332
|
+
ko: {
|
|
333
|
+
title: `월간 리뷰: 의회 전망`,
|
|
334
|
+
subtitle: `지난 달 ${documentCount}건의 동향에 대한 종합 분석`
|
|
335
|
+
},
|
|
336
|
+
zh: {
|
|
337
|
+
title: `月度回顾:议会纵览`,
|
|
338
|
+
subtitle: `过去一个月${documentCount}项发展的综合分析`
|
|
339
|
+
}
|
|
340
|
+
};
|
|
341
|
+
return titles[lang] || titles.en;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Validate monthly review article structure
|
|
345
|
+
*/
|
|
346
|
+
export function validateMonthlyReview(article) {
|
|
347
|
+
const hasMonthlySummary = checkMonthlySummary(article);
|
|
348
|
+
const hasMinimumSources = countSources(article) >= 3;
|
|
349
|
+
const hasRetrospectiveTone = checkRetrospectiveTone(article);
|
|
350
|
+
const hasTrendAnalysis = checkTrendAnalysis(article);
|
|
351
|
+
const hasPartyRankings = checkPartyRankings(article);
|
|
352
|
+
const hasLegislativeEfficiency = checkLegislativeEfficiency(article);
|
|
353
|
+
const hasMonthInNumbers = checkMonthInNumbers(article);
|
|
354
|
+
return {
|
|
355
|
+
hasMonthlySummary,
|
|
356
|
+
hasMinimumSources,
|
|
357
|
+
hasRetrospectiveTone,
|
|
358
|
+
hasTrendAnalysis,
|
|
359
|
+
hasPartyRankings,
|
|
360
|
+
hasLegislativeEfficiency,
|
|
361
|
+
hasMonthInNumbers,
|
|
362
|
+
passed: hasMonthlySummary &&
|
|
363
|
+
hasMinimumSources &&
|
|
364
|
+
hasRetrospectiveTone &&
|
|
365
|
+
hasTrendAnalysis &&
|
|
366
|
+
hasPartyRankings &&
|
|
367
|
+
hasLegislativeEfficiency &&
|
|
368
|
+
hasMonthInNumbers
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
function checkMonthlySummary(article) {
|
|
372
|
+
if (!article || !article.content)
|
|
373
|
+
return false;
|
|
374
|
+
return article.content.toLowerCase().includes('month') ||
|
|
375
|
+
article.content.toLowerCase().includes('summary') ||
|
|
376
|
+
article.content.toLowerCase().includes('review') ||
|
|
377
|
+
article.content.toLowerCase().includes('retrospective');
|
|
378
|
+
}
|
|
379
|
+
function countSources(article) {
|
|
380
|
+
if (!article || !article.sources)
|
|
381
|
+
return 0;
|
|
382
|
+
return Array.isArray(article.sources) ? article.sources.length : 0;
|
|
383
|
+
}
|
|
384
|
+
function checkRetrospectiveTone(article) {
|
|
385
|
+
if (!article || !article.content)
|
|
386
|
+
return false;
|
|
387
|
+
const retroKeywords = ['concluded', 'passed', 'voted', 'decided', 'approved', 'rejected', 'completed', 'achieved'];
|
|
388
|
+
return retroKeywords.some(keyword => article.content.toLowerCase().includes(keyword));
|
|
389
|
+
}
|
|
390
|
+
function checkTrendAnalysis(article) {
|
|
391
|
+
if (!article || !article.content)
|
|
392
|
+
return false;
|
|
393
|
+
const trendKeywords = ['trend', 'pattern', 'increase', 'decrease', 'shift', 'trajectory', 'momentum'];
|
|
394
|
+
return trendKeywords.some(keyword => article.content.toLowerCase().includes(keyword));
|
|
395
|
+
}
|
|
396
|
+
function checkPartyRankings(article) {
|
|
397
|
+
if (!article || !article.content)
|
|
398
|
+
return false;
|
|
399
|
+
return article.content.includes('Party Performance Rankings') ||
|
|
400
|
+
article.content.includes('Partiernas prestationsrankning') ||
|
|
401
|
+
article.content.includes('🏆');
|
|
402
|
+
}
|
|
403
|
+
function checkLegislativeEfficiency(article) {
|
|
404
|
+
if (!article || !article.content)
|
|
405
|
+
return false;
|
|
406
|
+
return article.content.includes('Legislative Efficiency') ||
|
|
407
|
+
article.content.includes('Lagstiftningseffektivitet') ||
|
|
408
|
+
article.content.includes('⚖️');
|
|
409
|
+
}
|
|
410
|
+
function checkMonthInNumbers(article) {
|
|
411
|
+
if (!article || !article.content)
|
|
412
|
+
return false;
|
|
413
|
+
return article.content.includes('Month in Numbers') ||
|
|
414
|
+
article.content.includes('Månaden i siffror') ||
|
|
415
|
+
article.content.includes('📊');
|
|
416
|
+
}
|
|
417
|
+
//# sourceMappingURL=monthly-review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monthly-review.js","sourceRoot":"","sources":["../../../scripts/news-types/monthly-review.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module ContentGeneration/OppositionAnalysis
|
|
3
|
+
* @category ContentGeneration
|
|
4
|
+
*
|
|
5
|
+
* @title Opposition Motions Article Generator - Legislative Initiative Intelligence
|
|
6
|
+
*
|
|
7
|
+
* @description
|
|
8
|
+
* **INTELLIGENCE OPERATIVE PERSPECTIVE**
|
|
9
|
+
*
|
|
10
|
+
* This module generates analysis articles on opposition motions (motioner), which are
|
|
11
|
+
* parliamentary proposals for policy change submitted by opposition parties and some
|
|
12
|
+
* government coalition members. Motions represent the parliamentary toolkit for policy
|
|
13
|
+
* challenge and alternatives, making them critical for understanding opposition
|
|
14
|
+
* strategy and emerging policy ideas that may later influence government policy.
|
|
15
|
+
*
|
|
16
|
+
* **PARLIAMENTARY CONTEXT - SWEDISH LEGISLATIVE PROCESS:**
|
|
17
|
+
* The Swedish legislative process involves multiple parliamentary document types:
|
|
18
|
+
* 1. **Propositioner** (Government Proposals): Executive branch initiates bills
|
|
19
|
+
* 2. **Motioner** (Motions): Opposition/members propose alternatives
|
|
20
|
+
* 3. **Betänkanden** (Committee Reports): Committees analyze proposals
|
|
21
|
+
* 4. **Skrivelser** (Government Reports): Executive reports to parliament
|
|
22
|
+
* 5. **Frågor** (Written Questions): Members demand government clarification
|
|
23
|
+
*
|
|
24
|
+
* Motions exist in this ecosystem as the primary tool for opposition leverage,
|
|
25
|
+
* allowing non-governing parties to shape the agenda and challenge government policy.
|
|
26
|
+
*
|
|
27
|
+
* **OPPOSITION MOTION INTELLIGENCE VALUE:**
|
|
28
|
+
* Motions reveal:
|
|
29
|
+
* 1. **Alternative Policy Directions**: What opposition wants to change
|
|
30
|
+
* 2. **Coalition Fault Lines**: Issues dividing government coalition
|
|
31
|
+
* 3. **Emerging Policy Ideas**: Proposals not yet on government agenda
|
|
32
|
+
* 4. **Party Positioning**: Which parties cooperate on specific issues
|
|
33
|
+
* 5. **Time-to-Victory Prediction**: Which opposition ideas may gain government support
|
|
34
|
+
*
|
|
35
|
+
* **MOTION TYPES & CHARACTERISTICS:**
|
|
36
|
+
* - **Policy Motions**: Comprehensive proposal for new direction
|
|
37
|
+
* - **Amendment Motions**: Modification to existing policy
|
|
38
|
+
* - **Rhetorical Motions**: Statement of principle (often symbolic)
|
|
39
|
+
* - **Procedural Motions**: Changes to parliamentary rules
|
|
40
|
+
* - **Budget Motions**: Alternative budget proposals during budget process
|
|
41
|
+
*
|
|
42
|
+
* **ARTICLE STRUCTURE:**
|
|
43
|
+
* Each opposition motion article includes:
|
|
44
|
+
* 1. **Motion Summary**: What's being proposed and by whom
|
|
45
|
+
* 2. **Policy Problem**: Why opposition believes change is needed
|
|
46
|
+
* 3. **Proposed Solution**: Specific policy recommendation
|
|
47
|
+
* 4. **Government Position**: Official response and likelihood of adoption
|
|
48
|
+
* 5. **Coalition Implications**: Which parties support/oppose the motion
|
|
49
|
+
* 6. **Timeline & Impact**: When would implementation occur, affected sectors
|
|
50
|
+
*
|
|
51
|
+
* **MCP DATA SOURCE:**
|
|
52
|
+
* Primary tool: get_motioner
|
|
53
|
+
* - Retrieves parliamentary motion records from riksdag platform
|
|
54
|
+
* - Includes motion text, sponsorship, current status
|
|
55
|
+
* - Enables systematic opposition coverage
|
|
56
|
+
*
|
|
57
|
+
* Additional tools (all implemented with graceful degradation):
|
|
58
|
+
* - search_dokument_fulltext: Full-text policy alternative analysis
|
|
59
|
+
* - analyze_g0v_by_department: Government department response tracking
|
|
60
|
+
* - search_anforanden: Debate context and party positioning
|
|
61
|
+
*
|
|
62
|
+
* **OPERATIONAL WORKFLOW:**
|
|
63
|
+
* 1. Query MCP: Fetch recent motions (default: 10 most recent)
|
|
64
|
+
* 2. Filter Analysis: Identify motions with policy significance
|
|
65
|
+
* 3. Government Response: Look up government statement if available
|
|
66
|
+
* 4. Impact Assessment: Estimate likelihood of adoption
|
|
67
|
+
* 5. Article Generation: Create narrative with contextual analysis
|
|
68
|
+
* 6. Multilingual Creation: Generate 14-language editions
|
|
69
|
+
* 7. Publication: Deploy to news directory
|
|
70
|
+
*
|
|
71
|
+
* **PARTY STRATEGY ANALYSIS:**
|
|
72
|
+
* Opposition motions serve multiple strategic purposes:
|
|
73
|
+
*
|
|
74
|
+
* **Social Democrats (S)** - Major Opposition:
|
|
75
|
+
* - Systematic policy proposals for when they return to power
|
|
76
|
+
* - Cooperation opportunities with other center-left parties
|
|
77
|
+
* - Pressure on government coalition weaknesses
|
|
78
|
+
*
|
|
79
|
+
* **Moderates (M)** - Usually Coalition:
|
|
80
|
+
* - Occasionally submit motions in policy disputes
|
|
81
|
+
* - Bridges to other center-right parties
|
|
82
|
+
* - Strategic positioning for future coalition shifts
|
|
83
|
+
*
|
|
84
|
+
* **Sweden Democrats (SD)** - Oppositional:
|
|
85
|
+
* - Immigration and security policy focus
|
|
86
|
+
* - Cross-party alliance building on specific issues
|
|
87
|
+
* - Strategic pressure on coalition on security matters
|
|
88
|
+
*
|
|
89
|
+
* **Left Party (V)** - Opposition:
|
|
90
|
+
* - Labor rights and welfare state advocacy
|
|
91
|
+
* - Tactical alliance with Social Democrats
|
|
92
|
+
* - Symbolic motions on socialist principles
|
|
93
|
+
*
|
|
94
|
+
* **Other Parties** (KD, L, C, MP, FI):
|
|
95
|
+
* - Issue-specific motions aligned with constituencies
|
|
96
|
+
* - Coalition or opposition depending on government composition
|
|
97
|
+
* - Significant for niche policy areas
|
|
98
|
+
*
|
|
99
|
+
* **INTELLIGENCE APPLICATIONS:**
|
|
100
|
+
* 1. **Opposition Morale Tracking**: Frequency and ambition of motions
|
|
101
|
+
* 2. **Cross-Party Coalition**: Identify emerging non-governmental coalitions
|
|
102
|
+
* 3. **Policy Direction Detection**: Emerging issues before government acts
|
|
103
|
+
* 4. **Vulnerability Identification**: Government weak points under attack
|
|
104
|
+
* 5. **Timeline Prediction**: When opposition ideas become policy
|
|
105
|
+
*
|
|
106
|
+
* **RISK ASSESSMENT FRAMEWORK:**
|
|
107
|
+
* Opposition motion analysis feeds into risk assessment:
|
|
108
|
+
* - **Coalition Stability**: Frequency of internal coalition conflict motions
|
|
109
|
+
* - **Political Momentum**: Which parties gaining traction with ideas
|
|
110
|
+
* - **Agenda Shifting**: Policy areas gaining opposition attention
|
|
111
|
+
* - **Pressure Points**: Where government facing most challenge
|
|
112
|
+
*
|
|
113
|
+
* **PERFORMANCE CHARACTERISTICS:**
|
|
114
|
+
* - MCP Query: ~400ms for 10 latest motions
|
|
115
|
+
* - Article Generation: ~2 seconds per motion
|
|
116
|
+
* - Translation: ~5 seconds per motion (parallel)
|
|
117
|
+
* - Total: ~12 seconds for batch (10 motions, 14 languages)
|
|
118
|
+
*
|
|
119
|
+
* **LANGUAGE CONSIDERATIONS:**
|
|
120
|
+
* Motion language is dense and technical, presenting translation challenges:
|
|
121
|
+
* - Swedish: Formal parliamentary language with specific terminology
|
|
122
|
+
* - English: Translation often requires policy context explanation
|
|
123
|
+
* - Nordic Languages: Similar legislative traditions enable closer translation
|
|
124
|
+
* - Other Languages: Require significant contextualization
|
|
125
|
+
*
|
|
126
|
+
* **FAILURE HANDLING:**
|
|
127
|
+
* - Missing Motion Text: Generate article with summary only
|
|
128
|
+
* - Government Response Unavailable: Note that response pending
|
|
129
|
+
* - MCP Service Down: Skip batch, retry on schedule
|
|
130
|
+
* - Empty Results: Log informational, no articles generated
|
|
131
|
+
*
|
|
132
|
+
* **GDPR COMPLIANCE:**
|
|
133
|
+
* - Motion sponsors are public figures (public record)
|
|
134
|
+
* - Member statements in motions are public
|
|
135
|
+
* - Data retention follows parliamentary archive standards
|
|
136
|
+
* - Supporting audit trail for regulatory compliance
|
|
137
|
+
*
|
|
138
|
+
* @osint Opposition Strategy Intelligence
|
|
139
|
+
* - Maps opposition party alliances through motion sponsorship
|
|
140
|
+
* - Tracks emerging opposition policy direction
|
|
141
|
+
* - Identifies opposition leadership and influential members
|
|
142
|
+
* - Analyzes cross-party coalition patterns for future government
|
|
143
|
+
*
|
|
144
|
+
* @risk Government Pressure Assessment
|
|
145
|
+
* - Opposition motions indicate policy challenges
|
|
146
|
+
* - Coalition stress detectable through internal conflict motions
|
|
147
|
+
* - Early warning of potential policy shifts
|
|
148
|
+
* - Momentum changes in political landscape
|
|
149
|
+
*
|
|
150
|
+
* @gdpr Public Parliamentary Record
|
|
151
|
+
* - Motions are public documents
|
|
152
|
+
* - Sponsorship publicly recorded
|
|
153
|
+
* - Data retention follows parliamentary standards
|
|
154
|
+
* - Supporting historical record for democracy transparency
|
|
155
|
+
*
|
|
156
|
+
* @security Legislative Integrity
|
|
157
|
+
* - Motion authenticity verified through official MCP source
|
|
158
|
+
* - Sponsorship verification prevents attribution errors
|
|
159
|
+
* - Timestamp validation prevents tampering
|
|
160
|
+
* - Official status confirmation from riksdag records
|
|
161
|
+
*
|
|
162
|
+
* @author Hack23 AB (Opposition Intelligence & Legislative Analysis)
|
|
163
|
+
* @license Apache-2.0
|
|
164
|
+
* @version 2.0.0
|
|
165
|
+
* @since 2024-08-22
|
|
166
|
+
* @see scripts/data-transformers.js (Content Generation Utilities)
|
|
167
|
+
* @see scripts/article-template.js (HTML Rendering)
|
|
168
|
+
* @see Issue #137 (Opposition Tracking Enhancement)
|
|
169
|
+
* @see https://www.riksdagen.se/ (Riksdag Parliamentary Records)
|
|
170
|
+
*/
|
|
171
|
+
import type { Language } from '../types/language.js';
|
|
172
|
+
import type { GenerationResult } from '../types/article.js';
|
|
173
|
+
/**
|
|
174
|
+
* Required MCP tools for motions articles
|
|
175
|
+
*
|
|
176
|
+
* Restored to full 4-tool specification (2026-02-26):
|
|
177
|
+
* All four tools are now implemented with graceful degradation on failure.
|
|
178
|
+
*/
|
|
179
|
+
export declare const REQUIRED_TOOLS: readonly string[];
|
|
180
|
+
export interface TitleSet {
|
|
181
|
+
title: string;
|
|
182
|
+
subtitle: string;
|
|
183
|
+
}
|
|
184
|
+
export interface MotionsValidationResult {
|
|
185
|
+
hasMotions: boolean;
|
|
186
|
+
hasMinimumSources: boolean;
|
|
187
|
+
hasOppositionAnalysis: boolean;
|
|
188
|
+
passed: boolean;
|
|
189
|
+
}
|
|
190
|
+
export interface ArticleInput {
|
|
191
|
+
content?: string;
|
|
192
|
+
sources?: string[];
|
|
193
|
+
[key: string]: unknown;
|
|
194
|
+
}
|
|
195
|
+
export interface GenerationOptions {
|
|
196
|
+
languages?: Language[];
|
|
197
|
+
limit?: number;
|
|
198
|
+
writeArticle?: ((html: string, filename: string) => Promise<void>) | null;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Format date for article slug
|
|
202
|
+
*/
|
|
203
|
+
export declare function formatDateForSlug(date?: Date): string;
|
|
204
|
+
/**
|
|
205
|
+
* Calculate the current Swedish riksmöte (parliamentary session) string.
|
|
206
|
+
* The session runs September–August: e.g. September 2025 → "2025/26".
|
|
207
|
+
*/
|
|
208
|
+
export declare function getCurrentRiksmote(date?: Date): string;
|
|
209
|
+
/**
|
|
210
|
+
* Generate Opposition Motions article
|
|
211
|
+
*/
|
|
212
|
+
export declare function generateMotions(options?: GenerationOptions): Promise<GenerationResult>;
|
|
213
|
+
export declare function validateMotions(article: ArticleInput): MotionsValidationResult;
|
|
214
|
+
//# sourceMappingURL=motions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motions.d.ts","sourceRoot":"","sources":["../../../scripts/news-types/motions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyKG;AAeH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAqC,gBAAgB,EAAiB,MAAM,qBAAqB,CAAC;AAE9G;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAK3C,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;CAC3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAEjE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAMlE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgKhG;AAoED,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,uBAAuB,CAW9E"}
|