riksdagsmonitor 0.8.12 → 0.8.15
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 +629 -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 +665 -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/shared/chart-factory.d.ts.map +1 -0
- 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/shared/theme.d.ts.map +1 -0
- 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/ai-analysis/coalition-detector.d.ts +28 -0
- package/dist/scripts/ai-analysis/coalition-detector.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/coalition-detector.js +242 -0
- package/dist/scripts/ai-analysis/coalition-detector.js.map +1 -0
- package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts +73 -0
- package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/dashboard-analyzer.js +511 -0
- package/dist/scripts/ai-analysis/dashboard-analyzer.js.map +1 -0
- package/dist/scripts/ai-analysis/document-analyzer.d.ts +196 -0
- package/dist/scripts/ai-analysis/document-analyzer.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/document-analyzer.js +1001 -0
- package/dist/scripts/ai-analysis/document-analyzer.js.map +1 -0
- package/dist/scripts/ai-analysis/domains/index.d.ts +15 -0
- package/dist/scripts/ai-analysis/domains/index.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/domains/index.js +494 -0
- package/dist/scripts/ai-analysis/domains/index.js.map +1 -0
- package/dist/scripts/ai-analysis/helpers.d.ts +43 -0
- package/dist/scripts/ai-analysis/helpers.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/helpers.js +79 -0
- package/dist/scripts/ai-analysis/helpers.js.map +1 -0
- package/dist/scripts/ai-analysis/index.d.ts +15 -0
- package/dist/scripts/ai-analysis/index.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/index.js +14 -0
- package/dist/scripts/ai-analysis/index.js.map +1 -0
- package/dist/scripts/ai-analysis/pipeline.d.ts +41 -0
- package/dist/scripts/ai-analysis/pipeline.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/pipeline.js +208 -0
- package/dist/scripts/ai-analysis/pipeline.js.map +1 -0
- package/dist/scripts/ai-analysis/political-significance.d.ts +63 -0
- package/dist/scripts/ai-analysis/political-significance.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/political-significance.js +227 -0
- package/dist/scripts/ai-analysis/political-significance.js.map +1 -0
- package/dist/scripts/ai-analysis/quality-assessor.d.ts +104 -0
- package/dist/scripts/ai-analysis/quality-assessor.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/quality-assessor.js +554 -0
- package/dist/scripts/ai-analysis/quality-assessor.js.map +1 -0
- package/dist/scripts/ai-analysis/swot/index.d.ts +56 -0
- package/dist/scripts/ai-analysis/swot/index.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/swot/index.js +360 -0
- package/dist/scripts/ai-analysis/swot/index.js.map +1 -0
- package/dist/scripts/ai-analysis/swot/placeholders.d.ts +30 -0
- package/dist/scripts/ai-analysis/swot/placeholders.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/swot/placeholders.js +381 -0
- package/dist/scripts/ai-analysis/swot/placeholders.js.map +1 -0
- package/dist/scripts/ai-analysis/types.d.ts +333 -0
- package/dist/scripts/ai-analysis/types.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/types.js +19 -0
- package/dist/scripts/ai-analysis/types.js.map +1 -0
- package/dist/scripts/ai-analysis/visualisation/index.d.ts +15 -0
- package/dist/scripts/ai-analysis/visualisation/index.d.ts.map +1 -0
- package/dist/scripts/ai-analysis/visualisation/index.js +179 -0
- package/dist/scripts/ai-analysis/visualisation/index.js.map +1 -0
- package/dist/scripts/analysis-framework/cross-reference.d.ts +35 -0
- package/dist/scripts/analysis-framework/cross-reference.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/cross-reference.js +290 -0
- package/dist/scripts/analysis-framework/cross-reference.js.map +1 -0
- package/dist/scripts/analysis-framework/index.d.ts +79 -0
- package/dist/scripts/analysis-framework/index.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/index.js +133 -0
- package/dist/scripts/analysis-framework/index.js.map +1 -0
- package/dist/scripts/analysis-framework/lenses/citizen.d.ts +29 -0
- package/dist/scripts/analysis-framework/lenses/citizen.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/lenses/citizen.js +220 -0
- package/dist/scripts/analysis-framework/lenses/citizen.js.map +1 -0
- package/dist/scripts/analysis-framework/lenses/economic.d.ts +29 -0
- package/dist/scripts/analysis-framework/lenses/economic.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/lenses/economic.js +227 -0
- package/dist/scripts/analysis-framework/lenses/economic.js.map +1 -0
- package/dist/scripts/analysis-framework/lenses/government.d.ts +32 -0
- package/dist/scripts/analysis-framework/lenses/government.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/lenses/government.js +265 -0
- package/dist/scripts/analysis-framework/lenses/government.js.map +1 -0
- package/dist/scripts/analysis-framework/lenses/international.d.ts +29 -0
- package/dist/scripts/analysis-framework/lenses/international.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/lenses/international.js +248 -0
- package/dist/scripts/analysis-framework/lenses/international.js.map +1 -0
- package/dist/scripts/analysis-framework/lenses/media.d.ts +29 -0
- package/dist/scripts/analysis-framework/lenses/media.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/lenses/media.js +211 -0
- package/dist/scripts/analysis-framework/lenses/media.js.map +1 -0
- package/dist/scripts/analysis-framework/lenses/opposition.d.ts +29 -0
- package/dist/scripts/analysis-framework/lenses/opposition.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/lenses/opposition.js +234 -0
- package/dist/scripts/analysis-framework/lenses/opposition.js.map +1 -0
- package/dist/scripts/analysis-framework/methodology-types.d.ts +309 -0
- package/dist/scripts/analysis-framework/methodology-types.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/methodology-types.js +38 -0
- package/dist/scripts/analysis-framework/methodology-types.js.map +1 -0
- package/dist/scripts/analysis-framework/political-classification.d.ts +58 -0
- package/dist/scripts/analysis-framework/political-classification.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/political-classification.js +414 -0
- package/dist/scripts/analysis-framework/political-classification.js.map +1 -0
- package/dist/scripts/analysis-framework/political-risk-assessment.d.ts +74 -0
- package/dist/scripts/analysis-framework/political-risk-assessment.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/political-risk-assessment.js +656 -0
- package/dist/scripts/analysis-framework/political-risk-assessment.js.map +1 -0
- package/dist/scripts/analysis-framework/political-threat-analysis.d.ts +65 -0
- package/dist/scripts/analysis-framework/political-threat-analysis.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/political-threat-analysis.js +553 -0
- package/dist/scripts/analysis-framework/political-threat-analysis.js.map +1 -0
- package/dist/scripts/analysis-framework/significance-scorer.d.ts +62 -0
- package/dist/scripts/analysis-framework/significance-scorer.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/significance-scorer.js +196 -0
- package/dist/scripts/analysis-framework/significance-scorer.js.map +1 -0
- package/dist/scripts/analysis-framework/types.d.ts +138 -0
- package/dist/scripts/analysis-framework/types.d.ts.map +1 -0
- package/dist/scripts/analysis-framework/types.js +12 -0
- package/dist/scripts/analysis-framework/types.js.map +1 -0
- package/dist/scripts/analysis-reader.d.ts +240 -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/ai-swot-analyzer.d.ts +89 -0
- package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.js +667 -0
- package/dist/scripts/data-transformers/content-generators/ai-swot-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 +56 -0
- package/dist/scripts/data-transformers/content-generators/index.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/index.js +45 -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 +81 -0
- package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/shared.js +913 -0
- package/dist/scripts/data-transformers/content-generators/shared.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts +83 -0
- package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.js +219 -0
- package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.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 +57 -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 +2108 -0
- package/dist/scripts/generate-news-enhanced/generators.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/helpers.d.ts +123 -0
- package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/helpers.js +438 -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 +35 -0
- package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/swot-analyzer.js +1179 -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 +428 -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 +95 -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 +578 -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 +362 -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 +32 -7
- 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/{chart-factory.d.ts → shared/chart-factory.d.ts} +0 -0
- /package/dist/lib/{chart-factory.js → shared/chart-factory.js} +0 -0
- /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/{theme.d.ts → shared/theme.d.ts} +0 -0
- /package/dist/lib/{theme.js → shared/theme.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,447 @@
|
|
|
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 { MCPClient } from '../mcp-client.js';
|
|
172
|
+
import { generateArticleContent, extractWatchPoints, generateMetadata, calculateReadTime, generateSources, generateContentTitle, filterFreshDocuments } from '../data-transformers.js';
|
|
173
|
+
import { generateArticleHTML } from '../article-template.js';
|
|
174
|
+
import { getAnalysisEnrichment } from '../generate-news-enhanced/helpers.js';
|
|
175
|
+
/**
|
|
176
|
+
* Required MCP tools for motions articles
|
|
177
|
+
*
|
|
178
|
+
* Restored to full 4-tool specification (2026-02-26):
|
|
179
|
+
* All four tools are now implemented with graceful degradation on failure.
|
|
180
|
+
*/
|
|
181
|
+
export const REQUIRED_TOOLS = [
|
|
182
|
+
'get_motioner',
|
|
183
|
+
'search_dokument_fulltext',
|
|
184
|
+
'analyze_g0v_by_department',
|
|
185
|
+
'search_anforanden',
|
|
186
|
+
];
|
|
187
|
+
/**
|
|
188
|
+
* Format date for article slug
|
|
189
|
+
*/
|
|
190
|
+
export function formatDateForSlug(date = new Date()) {
|
|
191
|
+
return date.toISOString().split('T')[0] ?? '';
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Calculate the current Swedish riksmöte (parliamentary session) string.
|
|
195
|
+
* The session runs September–August: e.g. September 2025 → "2025/26".
|
|
196
|
+
*/
|
|
197
|
+
export function getCurrentRiksmote(date = new Date()) {
|
|
198
|
+
const year = date.getFullYear();
|
|
199
|
+
const month = date.getMonth(); // 0-based; September = 8
|
|
200
|
+
const startYear = month >= 8 ? year : year - 1;
|
|
201
|
+
const endYY = String(startYear + 1).slice(-2);
|
|
202
|
+
return `${startYear}/${endYY}`;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Generate Opposition Motions article
|
|
206
|
+
*/
|
|
207
|
+
export async function generateMotions(options = {}) {
|
|
208
|
+
const { languages = ['en', 'sv'], limit = 10, writeArticle = null } = options;
|
|
209
|
+
console.log('📝 Generating Opposition Motions article...');
|
|
210
|
+
const mcpCalls = [];
|
|
211
|
+
try {
|
|
212
|
+
const client = new MCPClient();
|
|
213
|
+
console.log(' 🔄 Fetching motions from riksdag-regering-mcp...');
|
|
214
|
+
const motions = filterFreshDocuments(await client.fetchMotions(limit));
|
|
215
|
+
mcpCalls.push({ tool: 'get_motioner', result: motions });
|
|
216
|
+
console.log(` 📊 Found ${motions.length} motions`);
|
|
217
|
+
if (motions.length === 0) {
|
|
218
|
+
console.log(' ℹ️ No new motions found, skipping');
|
|
219
|
+
return { success: true, files: 0, mcpCalls };
|
|
220
|
+
}
|
|
221
|
+
// Tool 2: search_dokument_fulltext — full-text policy alternative analysis
|
|
222
|
+
try {
|
|
223
|
+
const topTitle = motions[0]?.titel || motions[0]?.title || '';
|
|
224
|
+
if (topTitle) {
|
|
225
|
+
const ftResponse = await client.request('search_dokument_fulltext', { query: topTitle, limit: 3 });
|
|
226
|
+
const ftDocs = (ftResponse['dokument'] ?? ftResponse['results'] ?? []);
|
|
227
|
+
mcpCalls.push({ tool: 'search_dokument_fulltext', result: ftDocs });
|
|
228
|
+
console.log(` 📄 Full text: ${ftDocs.length} results`);
|
|
229
|
+
// Attach the best matching full text only to the primary motion (the one used for the query)
|
|
230
|
+
const primaryMotion = motions[0];
|
|
231
|
+
if (primaryMotion && ftDocs.length > 0 && !primaryMotion['fullText']) {
|
|
232
|
+
const bestDoc = ftDocs[0];
|
|
233
|
+
primaryMotion['fullText'] = bestDoc['fullText'] || bestDoc['summary'] || '';
|
|
234
|
+
if (ftDocs.length > 1) {
|
|
235
|
+
primaryMotion['policyAlternativeDocs'] = ftDocs;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
catch (err) {
|
|
241
|
+
console.warn(' ⚠ search_dokument_fulltext unavailable:', err.message);
|
|
242
|
+
mcpCalls.push({ tool: 'search_dokument_fulltext', result: [] });
|
|
243
|
+
}
|
|
244
|
+
// Tool 3: analyze_g0v_by_department — government department response tracking
|
|
245
|
+
let govDeptData = [];
|
|
246
|
+
try {
|
|
247
|
+
const today0 = new Date();
|
|
248
|
+
const thirtyDaysAgo = new Date(today0);
|
|
249
|
+
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
|
|
250
|
+
const govResp = await client.request('analyze_g0v_by_department', {
|
|
251
|
+
dateFrom: formatDateForSlug(thirtyDaysAgo),
|
|
252
|
+
dateTo: formatDateForSlug(today0),
|
|
253
|
+
});
|
|
254
|
+
govDeptData = (govResp['departments'] ?? govResp['data'] ?? []);
|
|
255
|
+
mcpCalls.push({ tool: 'analyze_g0v_by_department', result: govDeptData });
|
|
256
|
+
console.log(` 🏛 Gov dept analysis: ${govDeptData.length} departments`);
|
|
257
|
+
}
|
|
258
|
+
catch (err) {
|
|
259
|
+
console.warn(' ⚠ analyze_g0v_by_department unavailable:', err.message);
|
|
260
|
+
mcpCalls.push({ tool: 'analyze_g0v_by_department', result: [] });
|
|
261
|
+
}
|
|
262
|
+
// Tool 4: search_anforanden — debate context and party positioning
|
|
263
|
+
try {
|
|
264
|
+
const debateQuery = motions[0]?.titel || motions[0]?.title || '';
|
|
265
|
+
if (debateQuery) {
|
|
266
|
+
const speeches = await client.searchSpeeches({ text: debateQuery, rm: getCurrentRiksmote(), limit: 10 });
|
|
267
|
+
mcpCalls.push({ tool: 'search_anforanden', result: speeches });
|
|
268
|
+
console.log(` 🗣 Debate speeches: ${speeches.length} found`);
|
|
269
|
+
// Attach speeches to the first motion without speeches for "Party Positioning" rendering
|
|
270
|
+
if (speeches.length > 0) {
|
|
271
|
+
for (const motion of motions) {
|
|
272
|
+
const m = motion;
|
|
273
|
+
if (!m['speeches']) {
|
|
274
|
+
m['speeches'] = speeches.slice(0, 3).map((s) => ({
|
|
275
|
+
talare: s['talare'],
|
|
276
|
+
parti: s['parti'],
|
|
277
|
+
text: s['anforande_text']?.slice(0, 300),
|
|
278
|
+
anforande_nummer: s['anforande_nummer'],
|
|
279
|
+
}));
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
catch (err) {
|
|
287
|
+
console.warn(' ⚠ search_anforanden unavailable:', err.message);
|
|
288
|
+
mcpCalls.push({ tool: 'search_anforanden', result: [] });
|
|
289
|
+
}
|
|
290
|
+
const today = new Date();
|
|
291
|
+
const slug = `${formatDateForSlug(today)}-opposition-motions`;
|
|
292
|
+
const articles = [];
|
|
293
|
+
const enrichment = await getAnalysisEnrichment();
|
|
294
|
+
for (const lang of languages) {
|
|
295
|
+
console.log(` 🌐 Generating ${lang.toUpperCase()} version...`);
|
|
296
|
+
const content = generateArticleContent({ motions, govDeptData }, 'motions', lang);
|
|
297
|
+
const watchPoints = extractWatchPoints({ motions }, lang);
|
|
298
|
+
const metadata = generateMetadata({ motions }, 'motions', lang);
|
|
299
|
+
const readTime = calculateReadTime(content);
|
|
300
|
+
const sources = generateSources([
|
|
301
|
+
'get_motioner',
|
|
302
|
+
'search_dokument_fulltext',
|
|
303
|
+
'analyze_g0v_by_department',
|
|
304
|
+
'search_anforanden',
|
|
305
|
+
]);
|
|
306
|
+
const titles = getTitles(lang, motions.length, motions);
|
|
307
|
+
const html = generateArticleHTML({
|
|
308
|
+
slug: `${slug}-${lang}.html`,
|
|
309
|
+
title: titles.title,
|
|
310
|
+
subtitle: titles.subtitle,
|
|
311
|
+
date: today.toISOString().split('T')[0] ?? '',
|
|
312
|
+
type: 'analysis',
|
|
313
|
+
readTime,
|
|
314
|
+
lang,
|
|
315
|
+
content,
|
|
316
|
+
watchPoints,
|
|
317
|
+
sources,
|
|
318
|
+
keywords: metadata.keywords,
|
|
319
|
+
topics: metadata.topics,
|
|
320
|
+
tags: metadata.tags,
|
|
321
|
+
...(enrichment ?? {}),
|
|
322
|
+
});
|
|
323
|
+
articles.push({
|
|
324
|
+
lang,
|
|
325
|
+
html,
|
|
326
|
+
filename: `${slug}-${lang}.html`,
|
|
327
|
+
slug: `${slug}-${lang}`
|
|
328
|
+
});
|
|
329
|
+
if (writeArticle) {
|
|
330
|
+
await writeArticle(html, `${slug}-${lang}.html`);
|
|
331
|
+
console.log(` ✅ ${lang.toUpperCase()} version generated`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return {
|
|
335
|
+
success: true,
|
|
336
|
+
files: languages.length,
|
|
337
|
+
slug,
|
|
338
|
+
articles,
|
|
339
|
+
mcpCalls,
|
|
340
|
+
crossReferences: {
|
|
341
|
+
event: `${motions.length} motions`,
|
|
342
|
+
sources: ['motioner', 'fulltext', 'gov-dept', 'speeches']
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
catch (error) {
|
|
347
|
+
console.error('❌ Error generating Motions:', error.message);
|
|
348
|
+
return {
|
|
349
|
+
success: false,
|
|
350
|
+
error: error.message,
|
|
351
|
+
mcpCalls
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
function getTitles(lang, count, documents = []) {
|
|
356
|
+
const contentTitle = generateContentTitle(documents, lang, 'motions');
|
|
357
|
+
if (contentTitle)
|
|
358
|
+
return contentTitle;
|
|
359
|
+
const titles = {
|
|
360
|
+
en: {
|
|
361
|
+
title: `Opposition Motions: Battle Lines This Week`,
|
|
362
|
+
subtitle: `Analysis of ${count} opposition motions revealing parliamentary fault lines`
|
|
363
|
+
},
|
|
364
|
+
sv: {
|
|
365
|
+
title: `Oppositionsmotioner: Veckans stridslinjer`,
|
|
366
|
+
subtitle: `Analys av ${count} oppositionsmotioner som avslöjar parlamentariska skiljelinjer`
|
|
367
|
+
},
|
|
368
|
+
da: {
|
|
369
|
+
title: `Oppositionsforslag: Ugens kamppladser`,
|
|
370
|
+
subtitle: `Analyse af ${count} oppositionsforslag`
|
|
371
|
+
},
|
|
372
|
+
no: {
|
|
373
|
+
title: `Opposisjonsforslag: Ukens kamplinjer`,
|
|
374
|
+
subtitle: `Analyse av ${count} opposisjonsforslag`
|
|
375
|
+
},
|
|
376
|
+
fi: {
|
|
377
|
+
title: `Opposition aloitteet: Viikon taistelulinjat`,
|
|
378
|
+
subtitle: `Analyysi ${count} opposition aloitteesta`
|
|
379
|
+
},
|
|
380
|
+
de: {
|
|
381
|
+
title: `Oppositionsanträge: Kampflinien dieser Woche`,
|
|
382
|
+
subtitle: `Analyse von ${count} Oppositionsanträgen`
|
|
383
|
+
},
|
|
384
|
+
fr: {
|
|
385
|
+
title: `Motions d'opposition: Lignes de bataille cette semaine`,
|
|
386
|
+
subtitle: `Analyse de ${count} motions d'opposition`
|
|
387
|
+
},
|
|
388
|
+
es: {
|
|
389
|
+
title: `Mociones de oposición: Líneas de batalla esta semana`,
|
|
390
|
+
subtitle: `Análisis de ${count} mociones de oposición`
|
|
391
|
+
},
|
|
392
|
+
nl: {
|
|
393
|
+
title: `Oppositiemoties: Strijdlijnen deze week`,
|
|
394
|
+
subtitle: `Analyse van ${count} oppositiemoties`
|
|
395
|
+
},
|
|
396
|
+
ar: {
|
|
397
|
+
title: `اقتراحات المعارضة: خطوط المعركة هذا الأسبوع`,
|
|
398
|
+
subtitle: `تحليل ${count} اقتراحات المعارضة`
|
|
399
|
+
},
|
|
400
|
+
he: {
|
|
401
|
+
title: `הצעות אופוזיציה: קווי העימות השבוע`,
|
|
402
|
+
subtitle: `ניתוח ${count} הצעות אופוזיציה`
|
|
403
|
+
},
|
|
404
|
+
ja: {
|
|
405
|
+
title: `野党動議:今週の対立構図`,
|
|
406
|
+
subtitle: `${count}件の野党動議の分析`
|
|
407
|
+
},
|
|
408
|
+
ko: {
|
|
409
|
+
title: `야당 동의: 이번 주 대립 구도`,
|
|
410
|
+
subtitle: `${count}개 야당 동의 분석`
|
|
411
|
+
},
|
|
412
|
+
zh: {
|
|
413
|
+
title: `反对党动议:本周对立格局`,
|
|
414
|
+
subtitle: `${count}份反对党动议分析`
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
return titles[lang] || titles.en;
|
|
418
|
+
}
|
|
419
|
+
export function validateMotions(article) {
|
|
420
|
+
const hasMotions = checkMotions(article);
|
|
421
|
+
const hasMinimumSources = countSources(article) >= 3;
|
|
422
|
+
const hasOppositionAnalysis = checkOppositionAnalysis(article);
|
|
423
|
+
return {
|
|
424
|
+
hasMotions,
|
|
425
|
+
hasMinimumSources,
|
|
426
|
+
hasOppositionAnalysis,
|
|
427
|
+
passed: hasMotions && hasMinimumSources && hasOppositionAnalysis
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
function checkMotions(article) {
|
|
431
|
+
if (!article || !article.content)
|
|
432
|
+
return false;
|
|
433
|
+
return article.content.toLowerCase().includes('motion') ||
|
|
434
|
+
article.content.toLowerCase().includes('opposition');
|
|
435
|
+
}
|
|
436
|
+
function countSources(article) {
|
|
437
|
+
if (!article || !article.sources)
|
|
438
|
+
return 0;
|
|
439
|
+
return Array.isArray(article.sources) ? article.sources.length : 0;
|
|
440
|
+
}
|
|
441
|
+
function checkOppositionAnalysis(article) {
|
|
442
|
+
if (!article || !article.content)
|
|
443
|
+
return false;
|
|
444
|
+
const keywords = ['opposition', 'battle', 'fault lines', 'parliamentary'];
|
|
445
|
+
return keywords.some(keyword => article.content.toLowerCase().includes(keyword));
|
|
446
|
+
}
|
|
447
|
+
//# sourceMappingURL=motions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motions.js","sourceRoot":"","sources":["../../../scripts/news-types/motions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EAErB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAI7E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,cAAc;IACd,0BAA0B;IAC1B,2BAA2B;IAC3B,mBAAmB;CACpB,CAAC;AA0BF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAa,IAAI,IAAI,EAAE;IACvD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAa,IAAI,IAAI,EAAE;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,yBAAyB;IACxD,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAA6B,EAAE;IACnE,MAAM,EAAE,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE9E,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAE/B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAkB,CAAC,CAAC;QACxF,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;QAEpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC/C,CAAC;QAED,2EAA2E;QAC3E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YAC9D,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnG,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAkB,CAAC;gBACxF,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBACpE,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC;gBACxD,6FAA6F;gBAC7F,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAwC,CAAC;gBACxE,IAAI,aAAa,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;oBACrE,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAA4B,CAAC;oBACrD,aAAa,CAAC,UAAU,CAAC,GAAI,OAAO,CAAC,UAAU,CAAY,IAAK,OAAO,CAAC,SAAS,CAAY,IAAI,EAAE,CAAC;oBACpG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACtB,aAAa,CAAC,uBAAuB,CAAC,GAAG,MAAM,CAAC;oBAClD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAClF,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,8EAA8E;QAC9E,IAAI,WAAW,GAA8B,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,2BAA2B,EAAE;gBAChE,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC;gBAC1C,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC;aAClC,CAAC,CAAC;YACH,WAAW,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAA8B,CAAC;YAC7F,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,2BAA2B,WAAW,CAAC,MAAM,cAAc,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACnF,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YACjE,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAmC,CAAC;gBAC3I,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC;gBAC9D,yFAAyF;gBACzF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;wBAC7B,MAAM,CAAC,GAAG,MAAiC,CAAC;wBAC5C,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;4BACnB,CAAC,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;gCACxE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;gCACnB,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC;gCACjB,IAAI,EAAG,CAAC,CAAC,gBAAgB,CAAwB,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gCAChE,gBAAgB,EAAE,CAAC,CAAC,kBAAkB,CAAC;6BACxC,CAAC,CAAC,CAAC;4BACJ,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAC9D,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAEjD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAW,sBAAsB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC1F,MAAM,WAAW,GAAG,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAW,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,OAAO,GAAa,eAAe,CAAC;gBACxC,cAAc;gBACd,0BAA0B;gBAC1B,2BAA2B;gBAC3B,mBAAmB;aACpB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAa,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAElE,MAAM,IAAI,GAAW,mBAAmB,CAAC;gBACvC,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,OAAO;gBAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBAC7C,IAAI,EAAE,UAA6B;gBACnC,QAAQ;gBACR,IAAI;gBACJ,OAAO;gBACP,WAAW;gBACX,OAAO;gBACP,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;aACtB,CAAC,CAAC;YAEH,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,IAAI;gBACJ,QAAQ,EAAE,GAAG,IAAI,IAAI,IAAI,OAAO;gBAChC,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE;aACxB,CAAC,CAAC;YAEH,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,YAAY,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,SAAS,CAAC,MAAM;YACvB,IAAI;YACJ,QAAQ;YACR,QAAQ;YACR,eAAe,EAAE;gBACf,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,UAAU;gBAClC,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;aAC1D;SACF,CAAC;IAEJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAG,KAAe,CAAC,OAAO;YAC/B,QAAQ;SACT,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAc,EAAE,KAAa,EAAE,YAA2B,EAAE;IAC7E,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACtE,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,MAAM,GAA+B;QACzC,EAAE,EAAE;YACF,KAAK,EAAE,4CAA4C;YACnD,QAAQ,EAAE,eAAe,KAAK,yDAAyD;SACxF;QACD,EAAE,EAAE;YACF,KAAK,EAAE,2CAA2C;YAClD,QAAQ,EAAE,aAAa,KAAK,gEAAgE;SAC7F;QACD,EAAE,EAAE;YACF,KAAK,EAAE,uCAAuC;YAC9C,QAAQ,EAAE,cAAc,KAAK,qBAAqB;SACnD;QACD,EAAE,EAAE;YACF,KAAK,EAAE,sCAAsC;YAC7C,QAAQ,EAAE,cAAc,KAAK,qBAAqB;SACnD;QACD,EAAE,EAAE;YACF,KAAK,EAAE,6CAA6C;YACpD,QAAQ,EAAE,YAAY,KAAK,yBAAyB;SACrD;QACD,EAAE,EAAE;YACF,KAAK,EAAE,8CAA8C;YACrD,QAAQ,EAAE,eAAe,KAAK,sBAAsB;SACrD;QACD,EAAE,EAAE;YACF,KAAK,EAAE,wDAAwD;YAC/D,QAAQ,EAAE,cAAc,KAAK,uBAAuB;SACrD;QACD,EAAE,EAAE;YACF,KAAK,EAAE,sDAAsD;YAC7D,QAAQ,EAAE,eAAe,KAAK,wBAAwB;SACvD;QACD,EAAE,EAAE;YACF,KAAK,EAAE,yCAAyC;YAChD,QAAQ,EAAE,eAAe,KAAK,kBAAkB;SACjD;QACD,EAAE,EAAE;YACF,KAAK,EAAE,6CAA6C;YACpD,QAAQ,EAAE,SAAS,KAAK,oBAAoB;SAC7C;QACD,EAAE,EAAE;YACF,KAAK,EAAE,oCAAoC;YAC3C,QAAQ,EAAE,SAAS,KAAK,kBAAkB;SAC3C;QACD,EAAE,EAAE;YACF,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,GAAG,KAAK,WAAW;SAC9B;QACD,EAAE,EAAE;YACF,KAAK,EAAE,mBAAmB;YAC1B,QAAQ,EAAE,GAAG,KAAK,YAAY;SAC/B;QACD,EAAE,EAAE;YACF,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,GAAG,KAAK,UAAU;SAC7B;KACF,CAAC;IAEF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAqB;IACnD,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAE/D,OAAO;QACL,UAAU;QACV,iBAAiB;QACjB,qBAAqB;QACrB,MAAM,EAAE,UAAU,IAAI,iBAAiB,IAAI,qBAAqB;KACjE,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,OAAqB;IACzC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAChD,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,YAAY,CAAC,OAAqB;IACzC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAqB;IACpD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAC5B,OAAO,CAAC,OAAkB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module ContentGeneration/GovernmentPolicy
|
|
3
|
+
* @category ContentGeneration
|
|
4
|
+
*
|
|
5
|
+
* @title Government Propositions Article Generator - Executive Policy Intelligence
|
|
6
|
+
*
|
|
7
|
+
* @description
|
|
8
|
+
* **INTELLIGENCE OPERATIVE PERSPECTIVE**
|
|
9
|
+
*
|
|
10
|
+
* This module generates analysis articles on government propositions (propositioner),
|
|
11
|
+
* which are formal legislative proposals submitted by the executive branch. Government
|
|
12
|
+
* propositions represent the official government agenda and serve as the primary
|
|
13
|
+
* mechanism for implementing government policy. Systematic tracking of propositions
|
|
14
|
+
* provides a forward-looking view of government priorities, policy direction, and
|
|
15
|
+
* coalition stability.
|
|
16
|
+
*
|
|
17
|
+
* **GOVERNMENT PROPOSITION ROLE IN SWEDISH PARLIAMENT:**
|
|
18
|
+
* Sweden's legislative process is government-driven, with ~80% of passed laws originating
|
|
19
|
+
* as government propositions. This makes propositions:
|
|
20
|
+
* 1. **Clearest Signal of Government Intent**: What coalition plans to actually do
|
|
21
|
+
* 2. **Most Likely to Pass**: Government usually has parliament majority
|
|
22
|
+
* 3. **Forward-Looking Agenda**: Signals coming policy debates and conflicts
|
|
23
|
+
* 4. **Coalition Stress Indicator**: Delayed/withdrawn propositions signal problems
|
|
24
|
+
* 5. **International Commitments**: EU directives implemented via propositions
|
|
25
|
+
*
|
|
26
|
+
* **PROPOSITION TYPES & CHARACTERISTICS:**
|
|
27
|
+
* - **Budget Propositions**: Annual government budget (largest single proposition)
|
|
28
|
+
* - **Legislation**: New laws or amendments to existing law
|
|
29
|
+
* - **Treaty Ratifications**: International agreements needing parliament approval
|
|
30
|
+
* - **Appropriations**: Changes to government spending allocations
|
|
31
|
+
* - **Constitutional Amendments**: Changes requiring supermajority (requires propositions)
|
|
32
|
+
*
|
|
33
|
+
* **ARTICLE STRUCTURE:**
|
|
34
|
+
* Each government proposition article includes:
|
|
35
|
+
* 1. **Proposition Summary**: Official government proposal and objectives
|
|
36
|
+
* 2. **Policy Problem**: What problem or commitment proposition addresses
|
|
37
|
+
* 3. **Proposed Solution**: Specific legislation and implementation approach
|
|
38
|
+
* 4. **Budget Impact**: Cost estimates and revenue implications (if applicable)
|
|
39
|
+
* 5. **Party Positions**: Stance from all major parties on proposition
|
|
40
|
+
* 6. **Implementation Timeline**: When policy takes effect, phased deployment
|
|
41
|
+
* 7. **International Context**: EU/international dimension if applicable
|
|
42
|
+
*
|
|
43
|
+
* **MCP DATA SOURCE:**
|
|
44
|
+
* Primary tool: get_propositioner
|
|
45
|
+
* - Retrieves government proposition records from riksdag platform
|
|
46
|
+
* - Includes full proposition text, budget impact, department information
|
|
47
|
+
* - Enables systematic government agenda tracking
|
|
48
|
+
*
|
|
49
|
+
* Additional tools for comprehensive analysis:
|
|
50
|
+
* - search_dokument_fulltext: Full policy analysis from proposition
|
|
51
|
+
* - analyze_g0v_by_department: Department-by-department impact
|
|
52
|
+
* - search_anforanden: Parliamentary debate on proposition
|
|
53
|
+
*
|
|
54
|
+
* **OPERATIONAL WORKFLOW:**
|
|
55
|
+
* 1. Query MCP: Fetch recent propositions (default: 10 most recent)
|
|
56
|
+
* 2. Importance Assessment: Identify major vs. routine propositions
|
|
57
|
+
* 3. Coalition Impact Analysis: Identify potential conflict points
|
|
58
|
+
* 4. Budget Analysis: Extract financial implications
|
|
59
|
+
* 5. Article Generation: Create narrative with context
|
|
60
|
+
* 6. Multilingual Creation: Generate 14-language editions
|
|
61
|
+
* 7. Publication: Deploy to news directory with calendar integration
|
|
62
|
+
*
|
|
63
|
+
* **BUDGET PROPOSITION SPECIAL HANDLING:**
|
|
64
|
+
* The annual budget proposition is the largest government document:
|
|
65
|
+
* - **Publication**: Typically mid-September
|
|
66
|
+
* - **Parliament Debate**: September-October
|
|
67
|
+
* - **Vote**: October/November
|
|
68
|
+
* - **Implementation**: January 1 following year
|
|
69
|
+
*
|
|
70
|
+
* Budget analysis includes:
|
|
71
|
+
* - Revenue and expenditure totals
|
|
72
|
+
* - Major spending areas (defense, healthcare, education, welfare)
|
|
73
|
+
* - Tax changes and revenue measures
|
|
74
|
+
* - Coalition compromise points (visible in allocations)
|
|
75
|
+
* - Economic assumptions and forecasts
|
|
76
|
+
*
|
|
77
|
+
* **PROPOSITION STATUS TRACKING:**
|
|
78
|
+
* Government propositions move through parliamentary stages:
|
|
79
|
+
* 1. **Submitted**: Government formally submits to parliament
|
|
80
|
+
* 2. **First Reading**: Parliament receives and initial debate
|
|
81
|
+
* 3. **Committee Review**: Specialized committee analyzes
|
|
82
|
+
* 4. **Second Reading**: General debate on committee recommendations
|
|
83
|
+
* 5. **Final Reading**: Amendment proposals and final vote
|
|
84
|
+
* 6. **Passed/Rejected**: Final outcome
|
|
85
|
+
*
|
|
86
|
+
* Articles track where propositions are in this process.
|
|
87
|
+
*
|
|
88
|
+
* **GOVERNMENT COALITION ANALYSIS:**
|
|
89
|
+
* Government propositions reveal coalition dynamics:
|
|
90
|
+
* - **Compromise Indicators**: Proposition content shows coalition deals
|
|
91
|
+
* - **Pressure Points**: Delayed propositions indicate coalition conflict
|
|
92
|
+
* - **Distribution of Wins**: Budget allocations show party influence
|
|
93
|
+
* - **Minority Support**: Some governments require opposition support
|
|
94
|
+
*
|
|
95
|
+
* **INTELLIGENCE APPLICATIONS:**
|
|
96
|
+
* 1. **Government Agenda Tracking**: What coalition prioritizes
|
|
97
|
+
* 2. **Coalition Stability**: Ability to pass propositions on schedule
|
|
98
|
+
* 3. **Policy Direction**: Where government moving country
|
|
99
|
+
* 4. **International Alignment**: Sweden's commitment to EU/international goals
|
|
100
|
+
* 5. **Timeline Prediction**: When major policy changes take effect
|
|
101
|
+
*
|
|
102
|
+
* **ECONOMIC IMPACT ANALYSIS:**
|
|
103
|
+
* Government propositions with fiscal impact are analyzed for:
|
|
104
|
+
* - **GDP Growth Impact**: Estimated effect on economic growth
|
|
105
|
+
* - **Employment Effects**: Job creation or losses by sector
|
|
106
|
+
* - **Inflation Impact**: Effect on price levels
|
|
107
|
+
* - **Debt Position**: Impact on government borrowing
|
|
108
|
+
* - **Sectoral Effects**: Winners and losers by industry
|
|
109
|
+
*
|
|
110
|
+
* **PERFORMANCE CHARACTERISTICS:**
|
|
111
|
+
* - MCP Query: ~500ms for 10 latest propositions
|
|
112
|
+
* - Article Generation: ~2.5 seconds per proposition
|
|
113
|
+
* - Translation: ~5 seconds per proposition (parallel)
|
|
114
|
+
* - Total: ~15 seconds for batch (10 propositions, 14 languages)
|
|
115
|
+
*
|
|
116
|
+
* **LANGUAGE CONSIDERATIONS:**
|
|
117
|
+
* Government propositions include:
|
|
118
|
+
* - Complex legal language (difficult to translate)
|
|
119
|
+
* - Technical policy terminology (domain-specific)
|
|
120
|
+
* - Budget figures and statistical data (language-neutral)
|
|
121
|
+
* - International commitments (standardized terminology)
|
|
122
|
+
*
|
|
123
|
+
* **FAILURE HANDLING:**
|
|
124
|
+
* - Missing Proposition Text: Generate article with summary only
|
|
125
|
+
* - Committee Report Unavailable: Continue with available data
|
|
126
|
+
* - Budget Analysis Failure: Note that analysis pending
|
|
127
|
+
* - MCP Service Down: Skip batch, retry on schedule
|
|
128
|
+
*
|
|
129
|
+
* **GDPR COMPLIANCE:**
|
|
130
|
+
* - Government propositions are public documents
|
|
131
|
+
* - Department official names published (public roles)
|
|
132
|
+
* - Data retention follows parliamentary archive standards
|
|
133
|
+
* - Supporting audit trail for democratic transparency
|
|
134
|
+
*
|
|
135
|
+
* @osint Government Strategy Intelligence
|
|
136
|
+
* - Maps government policy priorities through proposition agenda
|
|
137
|
+
* - Tracks coalition compatibility on major policy issues
|
|
138
|
+
* - Identifies emerging government challenges
|
|
139
|
+
* - Analyzes EU influence on Swedish policy
|
|
140
|
+
*
|
|
141
|
+
* @risk Government Stability Assessment
|
|
142
|
+
* - Proposition passage rates indicate coalition cohesion
|
|
143
|
+
* - Delayed propositions signal coalition stress
|
|
144
|
+
* - Controversial propositions show political divisions
|
|
145
|
+
* - Budget battles reveal party power distribution
|
|
146
|
+
*
|
|
147
|
+
* @gdpr Policy Documentation
|
|
148
|
+
* - Government propositions publicly documented
|
|
149
|
+
* - Data retention follows parliamentary standards
|
|
150
|
+
* - Supporting transparency in democratic process
|
|
151
|
+
* - Audit trail for regulatory compliance
|
|
152
|
+
*
|
|
153
|
+
* @security Executive Intent Verification
|
|
154
|
+
* - Propositions verified through official MCP source
|
|
155
|
+
* - Originating department verified
|
|
156
|
+
* - Budget figures validated against official documents
|
|
157
|
+
* - Timestamp prevents tampering
|
|
158
|
+
*
|
|
159
|
+
* @author Hack23 AB (Government Intelligence & Policy Analysis)
|
|
160
|
+
* @license Apache-2.0
|
|
161
|
+
* @version 2.0.0
|
|
162
|
+
* @since 2024-08-28
|
|
163
|
+
* @see scripts/data-transformers.js (Content Generation)
|
|
164
|
+
* @see scripts/article-template.js (HTML Rendering)
|
|
165
|
+
* @see Issue #140 (Government Proposition Tracking)
|
|
166
|
+
* @see https://www.riksdagen.se/ (Parliamentary Records)
|
|
167
|
+
* @see https://www.regeringen.se/ (Government Official Site)
|
|
168
|
+
*/
|
|
169
|
+
import type { Language } from '../types/language.js';
|
|
170
|
+
import type { GenerationResult } from '../types/article.js';
|
|
171
|
+
/**
|
|
172
|
+
* Required MCP tools for propositions articles
|
|
173
|
+
*/
|
|
174
|
+
export declare const REQUIRED_TOOLS: readonly string[];
|
|
175
|
+
export interface TitleSet {
|
|
176
|
+
title: string;
|
|
177
|
+
subtitle: string;
|
|
178
|
+
}
|
|
179
|
+
export interface PropositionsValidationResult {
|
|
180
|
+
hasPropositions: boolean;
|
|
181
|
+
hasMinimumSources: boolean;
|
|
182
|
+
hasPolicyAnalysis: boolean;
|
|
183
|
+
passed: boolean;
|
|
184
|
+
}
|
|
185
|
+
export interface ArticleInput {
|
|
186
|
+
content?: string;
|
|
187
|
+
sources?: string[];
|
|
188
|
+
[key: string]: unknown;
|
|
189
|
+
}
|
|
190
|
+
export interface GenerationOptions {
|
|
191
|
+
languages?: Language[];
|
|
192
|
+
limit?: number;
|
|
193
|
+
writeArticle?: ((html: string, filename: string) => Promise<void>) | null;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Format date for article slug
|
|
197
|
+
*/
|
|
198
|
+
export declare function formatDateForSlug(date?: Date): string;
|
|
199
|
+
/**
|
|
200
|
+
* Generate Government Propositions article
|
|
201
|
+
*/
|
|
202
|
+
export declare function generatePropositions(options?: GenerationOptions): Promise<GenerationResult>;
|
|
203
|
+
export declare function validatePropositions(article: ArticleInput): PropositionsValidationResult;
|
|
204
|
+
//# sourceMappingURL=propositions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propositions.d.ts","sourceRoot":"","sources":["../../../scripts/news-types/propositions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuKG;AAgBH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAqC,gBAAgB,EAAiB,MAAM,qBAAqB,CAAC;AAE9G;;GAEG;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,4BAA4B;IAC3C,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,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;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiIrG;AAoED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,4BAA4B,CAWxF"}
|