From 4e835668019d31fbb0812cb5b5958970d947dc3b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 29 May 2026 20:07:03 +0000 Subject: [PATCH 1/3] Add meta description injector and fix 142 legacy docs/api pages Co-authored-by: pethers <1726836+pethers@users.noreply.github.com> --- docs/api/AccessibilityTable.html | 1 + docs/api/AnomalyAlertSystem.html | 1 + docs/api/AnomalyDetectionCharts.html | 1 + docs/api/AnomalyDetectionDashboard.html | 1 + docs/api/AnomalyDetectionDataManager.html | 1 + docs/api/CIADashboardRenderer.html | 1 + docs/api/CIADataLoader.html | 1 + docs/api/DataCache.html | 1 + docs/api/DataFetcher.html | 1 + docs/api/DecisionImpactChart.html | 1 + docs/api/Election2026Predictions.html | 1 + docs/api/ElectionCycleCharts.html | 1 + docs/api/ElectionCycleDashboard.html | 1 + docs/api/ElectionCycleDataManager.html | 1 + docs/api/InfluenceChart.html | 1 + docs/api/MCPClient.html | 1 + docs/api/MinistryDashboard.html | 1 + docs/api/ProductivityChart.html | 1 + docs/api/RiskHeatMap.html | 1 + docs/api/WorkflowStateCoordinator.html | 1 + docs/api/dashboard_cia-data-loader.js.html | 1 + docs/api/dashboard_cia-visualizations.js.html | 1 + docs/api/dashboard_dashboard-init.js.html | 1 + .../dashboard_election-predictions.js.html | 1 + docs/api/dashboard_i18n-translations.js.html | 1 + docs/api/global.html | 1 + .../js_anomaly-detection-dashboard.js.html | 1 + docs/api/js_back-to-top.js.html | 1 + docs/api/js_chart-utils.js.html | 1 + docs/api/js_coalition-loader.js.html | 1 + .../js_dashboard-integration-example.js.html | 1 + docs/api/js_election-cycle-dashboard.js.html | 1 + docs/api/js_logger.js.html | 1 + docs/api/js_ministry-dashboard.js.html | 1 + docs/api/js_party-dashboard.js.html | 1 + docs/api/js_politician-dashboard.js.html | 1 + docs/api/js_pre-election-dashboard.js.html | 1 + docs/api/js_risk-dashboard.js.html | 1 + .../js_seasonal-patterns-dashboard.js.html | 1 + docs/api/js_stats-loader.js.html | 1 + ...odule-Analytics_CoalitionIntelligence.html | 1 + ...odule-Analytics_CommitteeIntelligence.html | 1 + ...le%20Content%20Validation%20Framework.html | 1 + ...s_AnomalyDetection-AnomalyAlertSystem.html | 1 + ...omalyDetection-AnomalyDetectionCharts.html | 1 + ...lyDetection-AnomalyDetectionDashboard.html | 1 + ...Detection-AnomalyDetectionDataManager.html | 1 + ...e-BehavioralAnalysis_AnomalyDetection.html | 1 + ...0Upstream%20Schema%20Caching%20System.html | 1 + ...%20-%20Upstream%20Change%20Monitoring.html | 1 + docs/api/module-ChartUtils.html | 1 + ...-CoalitionIntelligence_StatusAnalysis.html | 1 + ...module-ContentGeneration_BreakingNews.html | 1 + ...e-ContentGeneration_CommitteeAnalysis.html | 1 + ...le-ContentGeneration_GovernmentPolicy.html | 1 + ...-ContentGeneration_OppositionAnalysis.html | 1 + ...ContentGeneration_ProspectiveAnalysis.html | 1 + docs/api/module-DashboardIntegration.html | 1 + .../module-DataPipeline_CIADataLoader.html | 1 + ...ulti-Language%20Article%20Aggregation.html | 1 + ...nce_CycleAnalysis-ElectionCycleCharts.html | 1 + ..._CycleAnalysis-ElectionCycleDashboard.html | 1 + ...ycleAnalysis-ElectionCycleDataManager.html | 1 + ...le-ElectionIntelligence_CycleAnalysis.html | 1 + ...ionIntelligence_PreElectionMonitoring.html | 1 + ...e_MinistryAnalysis-AccessibilityTable.html | 1 + ...telligence_MinistryAnalysis-DataCache.html | 1 + ...lligence_MinistryAnalysis-DataFetcher.html | 1 + ..._MinistryAnalysis-DecisionImpactChart.html | 1 + ...gence_MinistryAnalysis-InfluenceChart.html | 1 + ...ce_MinistryAnalysis-MinistryDashboard.html | 1 + ...ce_MinistryAnalysis-ProductivityChart.html | 1 + ...lligence_MinistryAnalysis-RiskHeatMap.html | 1 + ...vernmentIntelligence_MinistryAnalysis.html | 1 + ...%20and%20XSS%20Prevention%20Framework.html | 1 + ...idualIntelligence_PoliticianProfiling.html | 1 + .../module-Infrastructure_Accessibility.html | 1 + .../module-Infrastructure_TypeGeneration.html | 1 + .../module-Infrastructure_VisualEvidence.html | 1 + ...rchestration.WorkflowStateCoordinator.html | 1 + ...-Infrastructure_WorkflowOrchestration.html | 1 + ...tions_Article%20Template%20Generation.html | 1 + ...rations_Automated%20News%20Generation.html | 1 + ...ions_CIA%20Statistical%20Intelligence.html | 1 + ...ions_Data%20Transformation%20Pipeline.html | 1 + ..._Editorial%20Intelligence%20Framework.html | 1 + ...elligence%20Server%20Client.MCPClient.html | 1 + ..._MCP%20Intelligence%20Server%20Client.html | 1 + docs/api/module-Intelligence_Forecasting.html | 1 + ...ule-Intelligence_Internationalization.html | 1 + .../module-Intelligence_Orchestration.html | 1 + .../module-Intelligence_Visualization.html | 1 + docs/api/module-Logger.html | 1 + ...orical%20Article%20Migration%20System.html | 1 + docs/api/module-OSINT_DataAcquisition.html | 1 + ...ty%20Name%20Normalization%20Framework.html | 1 + ...e-PoliticalIntelligence_PartyAnalysis.html | 1 + ...odule-RiskAssessment_AnomalyDetection.html | 1 + ...Multi-Language%20SEO%20Infrastructure.html | 1 + ...Automated%20Metrics%20Synchronization.html | 1 + ...TemporalIntelligence_SeasonalAnalysis.html | 1 + ...ule-UIUtilities_NavigationEnhancement.html | 1 + ...ule-Validation_CrossReferenceTracking.html | 1 + .../module-Validation_EveningAnalysis.html | 1 + .../module-Validation_LanguageMetadata.html | 1 + .../module-Validation_SchemaValidation.html | 1 + .../module-Validation_TranslationQuality.html | 1 + .../module-Validation_VisualRegression.html | 1 + ...al%20Terminology%20Pattern%20Analysis.html | 1 + .../scripts_article-quality-enhancer.js.html | 1 + docs/api/scripts_article-template.js.html | 1 + docs/api/scripts_back-to-top.js.html | 1 + .../scripts_check-cia-schema-updates.js.html | 1 + docs/api/scripts_coalition-dashboard.js.html | 1 + docs/api/scripts_committees-dashboard.js.html | 1 + docs/api/scripts_data-transformers.js.html | 1 + docs/api/scripts_editorial-pillars.js.html | 1 + docs/api/scripts_extract-vocabulary.js.html | 1 + .../scripts_generate-news-backport.js.html | 1 + .../scripts_generate-news-enhanced.js.html | 1 + .../api/scripts_generate-news-indexes.js.html | 1 + docs/api/scripts_generate-sitemap.js.html | 1 + ...ts_generate-types-from-cia-schemas.js.html | 1 + docs/api/scripts_html-utils.js.html | 1 + docs/api/scripts_load-cia-stats.js.html | 1 + docs/api/scripts_mcp-client.js.html | 1 + .../scripts_news-types_breaking-news.js.html | 1 + ...ripts_news-types_committee-reports.js.html | 1 + docs/api/scripts_news-types_motions.js.html | 1 + .../scripts_news-types_propositions.js.html | 1 + .../api/scripts_news-types_week-ahead.js.html | 1 + docs/api/scripts_party-variants.js.html | 1 + docs/api/scripts_sync-cia-schemas.js.html | 1 + docs/api/scripts_take-screenshot.js.html | 1 + .../api/scripts_update-stats-from-cia.js.html | 1 + ...ripts_validate-against-cia-schemas.js.html | 1 + ...ripts_validate-articles-playwright.js.html | 1 + .../scripts_validate-cross-references.js.html | 1 + .../scripts_validate-evening-analysis.js.html | 1 + ...scripts_validate-news-translations.js.html | 1 + .../api/scripts_validate-translations.js.html | 1 + ...scripts_workflow-state-coordinator.js.html | 1 + scripts/fix-docs-meta-description.ts | 210 ++++++++++++++++++ 143 files changed, 352 insertions(+) create mode 100644 scripts/fix-docs-meta-description.ts diff --git a/docs/api/AccessibilityTable.html b/docs/api/AccessibilityTable.html index 367eeaeea51..be9522ad84f 100644 --- a/docs/api/AccessibilityTable.html +++ b/docs/api/AccessibilityTable.html @@ -3,6 +3,7 @@ JSDoc: Class: AccessibilityTable + diff --git a/docs/api/AnomalyAlertSystem.html b/docs/api/AnomalyAlertSystem.html index 25b5beeaad8..8500484ba16 100644 --- a/docs/api/AnomalyAlertSystem.html +++ b/docs/api/AnomalyAlertSystem.html @@ -3,6 +3,7 @@ JSDoc: Class: AnomalyAlertSystem + diff --git a/docs/api/AnomalyDetectionCharts.html b/docs/api/AnomalyDetectionCharts.html index 2f53f2430a7..0982e72813b 100644 --- a/docs/api/AnomalyDetectionCharts.html +++ b/docs/api/AnomalyDetectionCharts.html @@ -3,6 +3,7 @@ JSDoc: Class: AnomalyDetectionCharts + diff --git a/docs/api/AnomalyDetectionDashboard.html b/docs/api/AnomalyDetectionDashboard.html index bc187a73648..82f44fb3e19 100644 --- a/docs/api/AnomalyDetectionDashboard.html +++ b/docs/api/AnomalyDetectionDashboard.html @@ -3,6 +3,7 @@ JSDoc: Class: AnomalyDetectionDashboard + diff --git a/docs/api/AnomalyDetectionDataManager.html b/docs/api/AnomalyDetectionDataManager.html index 9a7ccb5c304..121d3eda5b5 100644 --- a/docs/api/AnomalyDetectionDataManager.html +++ b/docs/api/AnomalyDetectionDataManager.html @@ -3,6 +3,7 @@ JSDoc: Class: AnomalyDetectionDataManager + diff --git a/docs/api/CIADashboardRenderer.html b/docs/api/CIADashboardRenderer.html index e0b13958d51..845db867239 100644 --- a/docs/api/CIADashboardRenderer.html +++ b/docs/api/CIADashboardRenderer.html @@ -3,6 +3,7 @@ JSDoc: Class: CIADashboardRenderer + diff --git a/docs/api/CIADataLoader.html b/docs/api/CIADataLoader.html index c17f4f5d078..cad3a6ccebb 100644 --- a/docs/api/CIADataLoader.html +++ b/docs/api/CIADataLoader.html @@ -3,6 +3,7 @@ JSDoc: Class: CIADataLoader + diff --git a/docs/api/DataCache.html b/docs/api/DataCache.html index c90283aa0e7..a7089acedb0 100644 --- a/docs/api/DataCache.html +++ b/docs/api/DataCache.html @@ -3,6 +3,7 @@ JSDoc: Class: DataCache + diff --git a/docs/api/DataFetcher.html b/docs/api/DataFetcher.html index 3dd5bf89bbc..ad94710515f 100644 --- a/docs/api/DataFetcher.html +++ b/docs/api/DataFetcher.html @@ -3,6 +3,7 @@ JSDoc: Class: DataFetcher + diff --git a/docs/api/DecisionImpactChart.html b/docs/api/DecisionImpactChart.html index fd018b0b1f7..d9e7fca8e92 100644 --- a/docs/api/DecisionImpactChart.html +++ b/docs/api/DecisionImpactChart.html @@ -3,6 +3,7 @@ JSDoc: Class: DecisionImpactChart + diff --git a/docs/api/Election2026Predictions.html b/docs/api/Election2026Predictions.html index e1d5ac790c8..be72a45b9be 100644 --- a/docs/api/Election2026Predictions.html +++ b/docs/api/Election2026Predictions.html @@ -3,6 +3,7 @@ JSDoc: Class: Election2026Predictions + diff --git a/docs/api/ElectionCycleCharts.html b/docs/api/ElectionCycleCharts.html index 06a3ace15eb..de11c3e846f 100644 --- a/docs/api/ElectionCycleCharts.html +++ b/docs/api/ElectionCycleCharts.html @@ -3,6 +3,7 @@ JSDoc: Class: ElectionCycleCharts + diff --git a/docs/api/ElectionCycleDashboard.html b/docs/api/ElectionCycleDashboard.html index 05c4bab74d1..1f93691ad8b 100644 --- a/docs/api/ElectionCycleDashboard.html +++ b/docs/api/ElectionCycleDashboard.html @@ -3,6 +3,7 @@ JSDoc: Class: ElectionCycleDashboard + diff --git a/docs/api/ElectionCycleDataManager.html b/docs/api/ElectionCycleDataManager.html index 0431af7b536..66a47cac9ae 100644 --- a/docs/api/ElectionCycleDataManager.html +++ b/docs/api/ElectionCycleDataManager.html @@ -3,6 +3,7 @@ JSDoc: Class: ElectionCycleDataManager + diff --git a/docs/api/InfluenceChart.html b/docs/api/InfluenceChart.html index 5957da63fa9..363074b5e08 100644 --- a/docs/api/InfluenceChart.html +++ b/docs/api/InfluenceChart.html @@ -3,6 +3,7 @@ JSDoc: Class: InfluenceChart + diff --git a/docs/api/MCPClient.html b/docs/api/MCPClient.html index b077ae79138..9874925e20b 100644 --- a/docs/api/MCPClient.html +++ b/docs/api/MCPClient.html @@ -3,6 +3,7 @@ JSDoc: Class: MCPClient + diff --git a/docs/api/MinistryDashboard.html b/docs/api/MinistryDashboard.html index c7a0ebbe270..c63cc3f421d 100644 --- a/docs/api/MinistryDashboard.html +++ b/docs/api/MinistryDashboard.html @@ -3,6 +3,7 @@ JSDoc: Class: MinistryDashboard + diff --git a/docs/api/ProductivityChart.html b/docs/api/ProductivityChart.html index 138313930b7..9dc8054566b 100644 --- a/docs/api/ProductivityChart.html +++ b/docs/api/ProductivityChart.html @@ -3,6 +3,7 @@ JSDoc: Class: ProductivityChart + diff --git a/docs/api/RiskHeatMap.html b/docs/api/RiskHeatMap.html index 432fdfb3579..1d02025a58b 100644 --- a/docs/api/RiskHeatMap.html +++ b/docs/api/RiskHeatMap.html @@ -3,6 +3,7 @@ JSDoc: Class: RiskHeatMap + diff --git a/docs/api/WorkflowStateCoordinator.html b/docs/api/WorkflowStateCoordinator.html index 7d8880b78ad..bb1dd025cf4 100644 --- a/docs/api/WorkflowStateCoordinator.html +++ b/docs/api/WorkflowStateCoordinator.html @@ -3,6 +3,7 @@ JSDoc: Class: WorkflowStateCoordinator + diff --git a/docs/api/dashboard_cia-data-loader.js.html b/docs/api/dashboard_cia-data-loader.js.html index 1eb2e794fe2..360e403b7ab 100644 --- a/docs/api/dashboard_cia-data-loader.js.html +++ b/docs/api/dashboard_cia-data-loader.js.html @@ -3,6 +3,7 @@ JSDoc: Source: dashboard/cia-data-loader.js + diff --git a/docs/api/dashboard_cia-visualizations.js.html b/docs/api/dashboard_cia-visualizations.js.html index 4f00ca312e2..e6d7dc84f17 100644 --- a/docs/api/dashboard_cia-visualizations.js.html +++ b/docs/api/dashboard_cia-visualizations.js.html @@ -3,6 +3,7 @@ JSDoc: Source: dashboard/cia-visualizations.js + diff --git a/docs/api/dashboard_dashboard-init.js.html b/docs/api/dashboard_dashboard-init.js.html index 6f09ec0dcfb..efc2a1e33d1 100644 --- a/docs/api/dashboard_dashboard-init.js.html +++ b/docs/api/dashboard_dashboard-init.js.html @@ -3,6 +3,7 @@ JSDoc: Source: dashboard/dashboard-init.js + diff --git a/docs/api/dashboard_election-predictions.js.html b/docs/api/dashboard_election-predictions.js.html index 62927fadab4..8bcd2a7f38e 100644 --- a/docs/api/dashboard_election-predictions.js.html +++ b/docs/api/dashboard_election-predictions.js.html @@ -3,6 +3,7 @@ JSDoc: Source: dashboard/election-predictions.js + diff --git a/docs/api/dashboard_i18n-translations.js.html b/docs/api/dashboard_i18n-translations.js.html index 07c7ad2a632..9f9c77fd714 100644 --- a/docs/api/dashboard_i18n-translations.js.html +++ b/docs/api/dashboard_i18n-translations.js.html @@ -3,6 +3,7 @@ JSDoc: Source: dashboard/i18n-translations.js + diff --git a/docs/api/global.html b/docs/api/global.html index df8463e83f3..faf0b4d68ee 100644 --- a/docs/api/global.html +++ b/docs/api/global.html @@ -3,6 +3,7 @@ JSDoc: Global + diff --git a/docs/api/js_anomaly-detection-dashboard.js.html b/docs/api/js_anomaly-detection-dashboard.js.html index 6cc32acae46..5e038b51d1c 100644 --- a/docs/api/js_anomaly-detection-dashboard.js.html +++ b/docs/api/js_anomaly-detection-dashboard.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/anomaly-detection-dashboard.js + diff --git a/docs/api/js_back-to-top.js.html b/docs/api/js_back-to-top.js.html index 41c74164e4b..7e10af43feb 100644 --- a/docs/api/js_back-to-top.js.html +++ b/docs/api/js_back-to-top.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/back-to-top.js + diff --git a/docs/api/js_chart-utils.js.html b/docs/api/js_chart-utils.js.html index 81fb89ab3ad..5198794e8de 100644 --- a/docs/api/js_chart-utils.js.html +++ b/docs/api/js_chart-utils.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/chart-utils.js + diff --git a/docs/api/js_coalition-loader.js.html b/docs/api/js_coalition-loader.js.html index e69991f75ac..f0076717e8f 100644 --- a/docs/api/js_coalition-loader.js.html +++ b/docs/api/js_coalition-loader.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/coalition-loader.js + diff --git a/docs/api/js_dashboard-integration-example.js.html b/docs/api/js_dashboard-integration-example.js.html index 204e7f560a9..1fc0e475995 100644 --- a/docs/api/js_dashboard-integration-example.js.html +++ b/docs/api/js_dashboard-integration-example.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/dashboard-integration-example.js + diff --git a/docs/api/js_election-cycle-dashboard.js.html b/docs/api/js_election-cycle-dashboard.js.html index 552d232d042..4a002a466ef 100644 --- a/docs/api/js_election-cycle-dashboard.js.html +++ b/docs/api/js_election-cycle-dashboard.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/election-cycle-dashboard.js + diff --git a/docs/api/js_logger.js.html b/docs/api/js_logger.js.html index e8cb3497d19..3b96f195374 100644 --- a/docs/api/js_logger.js.html +++ b/docs/api/js_logger.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/logger.js + diff --git a/docs/api/js_ministry-dashboard.js.html b/docs/api/js_ministry-dashboard.js.html index ef6d03aac80..e950d0b8530 100644 --- a/docs/api/js_ministry-dashboard.js.html +++ b/docs/api/js_ministry-dashboard.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/ministry-dashboard.js + diff --git a/docs/api/js_party-dashboard.js.html b/docs/api/js_party-dashboard.js.html index e403822486d..22fa23608ec 100644 --- a/docs/api/js_party-dashboard.js.html +++ b/docs/api/js_party-dashboard.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/party-dashboard.js + diff --git a/docs/api/js_politician-dashboard.js.html b/docs/api/js_politician-dashboard.js.html index 603b67dea7e..daf9adb0358 100644 --- a/docs/api/js_politician-dashboard.js.html +++ b/docs/api/js_politician-dashboard.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/politician-dashboard.js + diff --git a/docs/api/js_pre-election-dashboard.js.html b/docs/api/js_pre-election-dashboard.js.html index 73966ac05b9..dac60d6ff46 100644 --- a/docs/api/js_pre-election-dashboard.js.html +++ b/docs/api/js_pre-election-dashboard.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/pre-election-dashboard.js + diff --git a/docs/api/js_risk-dashboard.js.html b/docs/api/js_risk-dashboard.js.html index 831015feac4..d2d6d88e777 100644 --- a/docs/api/js_risk-dashboard.js.html +++ b/docs/api/js_risk-dashboard.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/risk-dashboard.js + diff --git a/docs/api/js_seasonal-patterns-dashboard.js.html b/docs/api/js_seasonal-patterns-dashboard.js.html index d946698c351..af64ae654d8 100644 --- a/docs/api/js_seasonal-patterns-dashboard.js.html +++ b/docs/api/js_seasonal-patterns-dashboard.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/seasonal-patterns-dashboard.js + diff --git a/docs/api/js_stats-loader.js.html b/docs/api/js_stats-loader.js.html index 681ed12d209..347acf48dee 100644 --- a/docs/api/js_stats-loader.js.html +++ b/docs/api/js_stats-loader.js.html @@ -3,6 +3,7 @@ JSDoc: Source: js/stats-loader.js + diff --git a/docs/api/module-Analytics_CoalitionIntelligence.html b/docs/api/module-Analytics_CoalitionIntelligence.html index f82dc5e4fbb..2e4c9681637 100644 --- a/docs/api/module-Analytics_CoalitionIntelligence.html +++ b/docs/api/module-Analytics_CoalitionIntelligence.html @@ -3,6 +3,7 @@ JSDoc: Module: Analytics/CoalitionIntelligence + diff --git a/docs/api/module-Analytics_CommitteeIntelligence.html b/docs/api/module-Analytics_CommitteeIntelligence.html index 62002e38b73..69a9121ec39 100644 --- a/docs/api/module-Analytics_CommitteeIntelligence.html +++ b/docs/api/module-Analytics_CommitteeIntelligence.html @@ -3,6 +3,7 @@ JSDoc: Module: Analytics/CommitteeIntelligence + diff --git a/docs/api/module-Article%20Quality%20Enhancer%20-%20Economist-Style%20Content%20Validation%20Framework.html b/docs/api/module-Article%20Quality%20Enhancer%20-%20Economist-Style%20Content%20Validation%20Framework.html index 2dbbba9ca82..c471441fdc3 100644 --- a/docs/api/module-Article%20Quality%20Enhancer%20-%20Economist-Style%20Content%20Validation%20Framework.html +++ b/docs/api/module-Article%20Quality%20Enhancer%20-%20Economist-Style%20Content%20Validation%20Framework.html @@ -3,6 +3,7 @@ JSDoc: Module: Article Quality Enhancer - Economist-Style Content Validation Framework + diff --git a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyAlertSystem.html b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyAlertSystem.html index 1c6f69622b9..ed5ff70b399 100644 --- a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyAlertSystem.html +++ b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyAlertSystem.html @@ -3,6 +3,7 @@ JSDoc: Class: AnomalyAlertSystem + diff --git a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionCharts.html b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionCharts.html index 377443d6d23..cdf9d13d3d0 100644 --- a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionCharts.html +++ b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionCharts.html @@ -3,6 +3,7 @@ JSDoc: Class: AnomalyDetectionCharts + diff --git a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDashboard.html b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDashboard.html index 0f679caabe1..fd48cfacfcc 100644 --- a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDashboard.html +++ b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDashboard.html @@ -3,6 +3,7 @@ JSDoc: Class: AnomalyDetectionDashboard + diff --git a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDataManager.html b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDataManager.html index 3b40e002b26..d535e47204a 100644 --- a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDataManager.html +++ b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDataManager.html @@ -3,6 +3,7 @@ JSDoc: Class: AnomalyDetectionDataManager + diff --git a/docs/api/module-BehavioralAnalysis_AnomalyDetection.html b/docs/api/module-BehavioralAnalysis_AnomalyDetection.html index b7846a99711..0f19f206301 100644 --- a/docs/api/module-BehavioralAnalysis_AnomalyDetection.html +++ b/docs/api/module-BehavioralAnalysis_AnomalyDetection.html @@ -3,6 +3,7 @@ JSDoc: Module: BehavioralAnalysis/AnomalyDetection + diff --git a/docs/api/module-CIA%20Schema%20Synchronization%20-%20Upstream%20Schema%20Caching%20System.html b/docs/api/module-CIA%20Schema%20Synchronization%20-%20Upstream%20Schema%20Caching%20System.html index 870298b5e00..a63ec55cc14 100644 --- a/docs/api/module-CIA%20Schema%20Synchronization%20-%20Upstream%20Schema%20Caching%20System.html +++ b/docs/api/module-CIA%20Schema%20Synchronization%20-%20Upstream%20Schema%20Caching%20System.html @@ -3,6 +3,7 @@ JSDoc: Module: CIA Schema Synchronization - Upstream Schema Caching System + diff --git a/docs/api/module-CIA%20Schema%20Update%20Detection%20-%20Upstream%20Change%20Monitoring.html b/docs/api/module-CIA%20Schema%20Update%20Detection%20-%20Upstream%20Change%20Monitoring.html index ad2ebbb7c56..92fb522a452 100644 --- a/docs/api/module-CIA%20Schema%20Update%20Detection%20-%20Upstream%20Change%20Monitoring.html +++ b/docs/api/module-CIA%20Schema%20Update%20Detection%20-%20Upstream%20Change%20Monitoring.html @@ -3,6 +3,7 @@ JSDoc: Module: CIA Schema Update Detection - Upstream Change Monitoring + diff --git a/docs/api/module-ChartUtils.html b/docs/api/module-ChartUtils.html index 09854fad865..6189289ba0f 100644 --- a/docs/api/module-ChartUtils.html +++ b/docs/api/module-ChartUtils.html @@ -3,6 +3,7 @@ JSDoc: Module: ChartUtils + diff --git a/docs/api/module-CoalitionIntelligence_StatusAnalysis.html b/docs/api/module-CoalitionIntelligence_StatusAnalysis.html index 3f9341ed058..cc5a3844d8b 100644 --- a/docs/api/module-CoalitionIntelligence_StatusAnalysis.html +++ b/docs/api/module-CoalitionIntelligence_StatusAnalysis.html @@ -3,6 +3,7 @@ JSDoc: Module: CoalitionIntelligence/StatusAnalysis + diff --git a/docs/api/module-ContentGeneration_BreakingNews.html b/docs/api/module-ContentGeneration_BreakingNews.html index 2b514ab2459..1e9fe906412 100644 --- a/docs/api/module-ContentGeneration_BreakingNews.html +++ b/docs/api/module-ContentGeneration_BreakingNews.html @@ -3,6 +3,7 @@ JSDoc: Module: ContentGeneration/BreakingNews + diff --git a/docs/api/module-ContentGeneration_CommitteeAnalysis.html b/docs/api/module-ContentGeneration_CommitteeAnalysis.html index cbb49992503..94a6db78971 100644 --- a/docs/api/module-ContentGeneration_CommitteeAnalysis.html +++ b/docs/api/module-ContentGeneration_CommitteeAnalysis.html @@ -3,6 +3,7 @@ JSDoc: Module: ContentGeneration/CommitteeAnalysis + diff --git a/docs/api/module-ContentGeneration_GovernmentPolicy.html b/docs/api/module-ContentGeneration_GovernmentPolicy.html index e750fcaebe9..6c34e02d197 100644 --- a/docs/api/module-ContentGeneration_GovernmentPolicy.html +++ b/docs/api/module-ContentGeneration_GovernmentPolicy.html @@ -3,6 +3,7 @@ JSDoc: Module: ContentGeneration/GovernmentPolicy + diff --git a/docs/api/module-ContentGeneration_OppositionAnalysis.html b/docs/api/module-ContentGeneration_OppositionAnalysis.html index d2663158e3b..20c7ed33b56 100644 --- a/docs/api/module-ContentGeneration_OppositionAnalysis.html +++ b/docs/api/module-ContentGeneration_OppositionAnalysis.html @@ -3,6 +3,7 @@ JSDoc: Module: ContentGeneration/OppositionAnalysis + diff --git a/docs/api/module-ContentGeneration_ProspectiveAnalysis.html b/docs/api/module-ContentGeneration_ProspectiveAnalysis.html index 6b2aca42536..8c4ec21f996 100644 --- a/docs/api/module-ContentGeneration_ProspectiveAnalysis.html +++ b/docs/api/module-ContentGeneration_ProspectiveAnalysis.html @@ -3,6 +3,7 @@ JSDoc: Module: ContentGeneration/ProspectiveAnalysis + diff --git a/docs/api/module-DashboardIntegration.html b/docs/api/module-DashboardIntegration.html index 1189aa7adac..1f9580ce639 100644 --- a/docs/api/module-DashboardIntegration.html +++ b/docs/api/module-DashboardIntegration.html @@ -3,6 +3,7 @@ JSDoc: Module: DashboardIntegration + diff --git a/docs/api/module-DataPipeline_CIADataLoader.html b/docs/api/module-DataPipeline_CIADataLoader.html index df17e692aaa..e70081977d7 100644 --- a/docs/api/module-DataPipeline_CIADataLoader.html +++ b/docs/api/module-DataPipeline_CIADataLoader.html @@ -3,6 +3,7 @@ JSDoc: Module: DataPipeline/CIADataLoader + diff --git a/docs/api/module-Dynamic%20News%20Index%20Generation%20-%20Multi-Language%20Article%20Aggregation.html b/docs/api/module-Dynamic%20News%20Index%20Generation%20-%20Multi-Language%20Article%20Aggregation.html index e4a76d4f4bd..f93aa60adca 100644 --- a/docs/api/module-Dynamic%20News%20Index%20Generation%20-%20Multi-Language%20Article%20Aggregation.html +++ b/docs/api/module-Dynamic%20News%20Index%20Generation%20-%20Multi-Language%20Article%20Aggregation.html @@ -3,6 +3,7 @@ JSDoc: Module: Dynamic News Index Generation - Multi-Language Article Aggregation + diff --git a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleCharts.html b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleCharts.html index c78969ac2f4..498ad0c461a 100644 --- a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleCharts.html +++ b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleCharts.html @@ -3,6 +3,7 @@ JSDoc: Class: ElectionCycleCharts + diff --git a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDashboard.html b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDashboard.html index c179b8a9cd9..b4a53df557b 100644 --- a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDashboard.html +++ b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDashboard.html @@ -3,6 +3,7 @@ JSDoc: Class: ElectionCycleDashboard + diff --git a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDataManager.html b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDataManager.html index d217b75fdc1..d063326cecf 100644 --- a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDataManager.html +++ b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDataManager.html @@ -3,6 +3,7 @@ JSDoc: Class: ElectionCycleDataManager + diff --git a/docs/api/module-ElectionIntelligence_CycleAnalysis.html b/docs/api/module-ElectionIntelligence_CycleAnalysis.html index c22b41cf24f..d0201058ef0 100644 --- a/docs/api/module-ElectionIntelligence_CycleAnalysis.html +++ b/docs/api/module-ElectionIntelligence_CycleAnalysis.html @@ -3,6 +3,7 @@ JSDoc: Module: ElectionIntelligence/CycleAnalysis + diff --git a/docs/api/module-ElectionIntelligence_PreElectionMonitoring.html b/docs/api/module-ElectionIntelligence_PreElectionMonitoring.html index f6eba96bf49..a0d5f6f5363 100644 --- a/docs/api/module-ElectionIntelligence_PreElectionMonitoring.html +++ b/docs/api/module-ElectionIntelligence_PreElectionMonitoring.html @@ -3,6 +3,7 @@ JSDoc: Module: ElectionIntelligence/PreElectionMonitoring + diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-AccessibilityTable.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-AccessibilityTable.html index e9746e38107..d0d2fd86f7a 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-AccessibilityTable.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-AccessibilityTable.html @@ -3,6 +3,7 @@ JSDoc: Class: AccessibilityTable + diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataCache.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataCache.html index 818c941be1b..44d08f9b322 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataCache.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataCache.html @@ -3,6 +3,7 @@ JSDoc: Class: DataCache + diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataFetcher.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataFetcher.html index 5fcfc6773d5..44ef6c16db0 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataFetcher.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataFetcher.html @@ -3,6 +3,7 @@ JSDoc: Class: DataFetcher + diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DecisionImpactChart.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DecisionImpactChart.html index 0439f8f6487..f4a581d28ac 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DecisionImpactChart.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DecisionImpactChart.html @@ -3,6 +3,7 @@ JSDoc: Class: DecisionImpactChart + diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-InfluenceChart.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-InfluenceChart.html index 2b615467840..fea958a641b 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-InfluenceChart.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-InfluenceChart.html @@ -3,6 +3,7 @@ JSDoc: Class: InfluenceChart + diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-MinistryDashboard.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-MinistryDashboard.html index 04fa46d3937..2168e0bb8f9 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-MinistryDashboard.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-MinistryDashboard.html @@ -3,6 +3,7 @@ JSDoc: Class: MinistryDashboard + diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-ProductivityChart.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-ProductivityChart.html index 33a850babf2..7ce7f5f1fe1 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-ProductivityChart.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-ProductivityChart.html @@ -3,6 +3,7 @@ JSDoc: Class: ProductivityChart + diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-RiskHeatMap.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-RiskHeatMap.html index deae46a56a9..3f95ec77b31 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-RiskHeatMap.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-RiskHeatMap.html @@ -3,6 +3,7 @@ JSDoc: Class: RiskHeatMap + diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis.html index 316dc3175bb..98c0c84c336 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis.html @@ -3,6 +3,7 @@ JSDoc: Module: GovernmentIntelligence/MinistryAnalysis + diff --git a/docs/api/module-HTML%20Utilities%20-%20DOM%20Manipulation%20and%20XSS%20Prevention%20Framework.html b/docs/api/module-HTML%20Utilities%20-%20DOM%20Manipulation%20and%20XSS%20Prevention%20Framework.html index 28d83ed76f0..8ab222efbf8 100644 --- a/docs/api/module-HTML%20Utilities%20-%20DOM%20Manipulation%20and%20XSS%20Prevention%20Framework.html +++ b/docs/api/module-HTML%20Utilities%20-%20DOM%20Manipulation%20and%20XSS%20Prevention%20Framework.html @@ -3,6 +3,7 @@ JSDoc: Module: HTML Utilities - DOM Manipulation and XSS Prevention Framework + diff --git a/docs/api/module-IndividualIntelligence_PoliticianProfiling.html b/docs/api/module-IndividualIntelligence_PoliticianProfiling.html index 3346a2f621e..305f5931ac9 100644 --- a/docs/api/module-IndividualIntelligence_PoliticianProfiling.html +++ b/docs/api/module-IndividualIntelligence_PoliticianProfiling.html @@ -3,6 +3,7 @@ JSDoc: Module: IndividualIntelligence/PoliticianProfiling + diff --git a/docs/api/module-Infrastructure_Accessibility.html b/docs/api/module-Infrastructure_Accessibility.html index f8e483e50e3..90cd6db92d4 100644 --- a/docs/api/module-Infrastructure_Accessibility.html +++ b/docs/api/module-Infrastructure_Accessibility.html @@ -3,6 +3,7 @@ JSDoc: Module: Infrastructure/Accessibility + diff --git a/docs/api/module-Infrastructure_TypeGeneration.html b/docs/api/module-Infrastructure_TypeGeneration.html index a35896d2e81..da4cec54b78 100644 --- a/docs/api/module-Infrastructure_TypeGeneration.html +++ b/docs/api/module-Infrastructure_TypeGeneration.html @@ -3,6 +3,7 @@ JSDoc: Module: Infrastructure/TypeGeneration + diff --git a/docs/api/module-Infrastructure_VisualEvidence.html b/docs/api/module-Infrastructure_VisualEvidence.html index 67937f5ac7d..c84e31ca7fd 100644 --- a/docs/api/module-Infrastructure_VisualEvidence.html +++ b/docs/api/module-Infrastructure_VisualEvidence.html @@ -3,6 +3,7 @@ JSDoc: Module: Infrastructure/VisualEvidence + diff --git a/docs/api/module-Infrastructure_WorkflowOrchestration.WorkflowStateCoordinator.html b/docs/api/module-Infrastructure_WorkflowOrchestration.WorkflowStateCoordinator.html index a184f651b6f..7a967523524 100644 --- a/docs/api/module-Infrastructure_WorkflowOrchestration.WorkflowStateCoordinator.html +++ b/docs/api/module-Infrastructure_WorkflowOrchestration.WorkflowStateCoordinator.html @@ -3,6 +3,7 @@ JSDoc: Class: WorkflowStateCoordinator + diff --git a/docs/api/module-Infrastructure_WorkflowOrchestration.html b/docs/api/module-Infrastructure_WorkflowOrchestration.html index 47052929790..e76924ad2f8 100644 --- a/docs/api/module-Infrastructure_WorkflowOrchestration.html +++ b/docs/api/module-Infrastructure_WorkflowOrchestration.html @@ -3,6 +3,7 @@ JSDoc: Module: Infrastructure/WorkflowOrchestration + diff --git a/docs/api/module-Intelligence%20Operations_Article%20Template%20Generation.html b/docs/api/module-Intelligence%20Operations_Article%20Template%20Generation.html index b3ba7eec0bf..91d25c5c0ab 100644 --- a/docs/api/module-Intelligence%20Operations_Article%20Template%20Generation.html +++ b/docs/api/module-Intelligence%20Operations_Article%20Template%20Generation.html @@ -3,6 +3,7 @@ JSDoc: Module: Intelligence Operations/Article Template Generation + diff --git a/docs/api/module-Intelligence%20Operations_Automated%20News%20Generation.html b/docs/api/module-Intelligence%20Operations_Automated%20News%20Generation.html index 4fa6f57edba..d652d443f54 100644 --- a/docs/api/module-Intelligence%20Operations_Automated%20News%20Generation.html +++ b/docs/api/module-Intelligence%20Operations_Automated%20News%20Generation.html @@ -3,6 +3,7 @@ JSDoc: Module: Intelligence Operations/Automated News Generation + diff --git a/docs/api/module-Intelligence%20Operations_CIA%20Statistical%20Intelligence.html b/docs/api/module-Intelligence%20Operations_CIA%20Statistical%20Intelligence.html index 29d821e2a2d..a644047712e 100644 --- a/docs/api/module-Intelligence%20Operations_CIA%20Statistical%20Intelligence.html +++ b/docs/api/module-Intelligence%20Operations_CIA%20Statistical%20Intelligence.html @@ -3,6 +3,7 @@ JSDoc: Module: Intelligence Operations/CIA Statistical Intelligence + diff --git a/docs/api/module-Intelligence%20Operations_Data%20Transformation%20Pipeline.html b/docs/api/module-Intelligence%20Operations_Data%20Transformation%20Pipeline.html index 61e17d3d418..506ab576b2d 100644 --- a/docs/api/module-Intelligence%20Operations_Data%20Transformation%20Pipeline.html +++ b/docs/api/module-Intelligence%20Operations_Data%20Transformation%20Pipeline.html @@ -3,6 +3,7 @@ JSDoc: Module: Intelligence Operations/Data Transformation Pipeline + diff --git a/docs/api/module-Intelligence%20Operations_Editorial%20Intelligence%20Framework.html b/docs/api/module-Intelligence%20Operations_Editorial%20Intelligence%20Framework.html index 94241cc3cf0..0fbde6d6237 100644 --- a/docs/api/module-Intelligence%20Operations_Editorial%20Intelligence%20Framework.html +++ b/docs/api/module-Intelligence%20Operations_Editorial%20Intelligence%20Framework.html @@ -3,6 +3,7 @@ JSDoc: Module: Intelligence Operations/Editorial Intelligence Framework + diff --git a/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.MCPClient.html b/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.MCPClient.html index e8d4d5b80cf..88f045a029c 100644 --- a/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.MCPClient.html +++ b/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.MCPClient.html @@ -3,6 +3,7 @@ JSDoc: Class: MCPClient + diff --git a/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.html b/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.html index 474a5b1afd1..af692905dbf 100644 --- a/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.html +++ b/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.html @@ -3,6 +3,7 @@ JSDoc: Module: Intelligence Operations/MCP Intelligence Server Client + diff --git a/docs/api/module-Intelligence_Forecasting.html b/docs/api/module-Intelligence_Forecasting.html index b8224494624..cdc14192c12 100644 --- a/docs/api/module-Intelligence_Forecasting.html +++ b/docs/api/module-Intelligence_Forecasting.html @@ -3,6 +3,7 @@ JSDoc: Module: Intelligence/Forecasting + diff --git a/docs/api/module-Intelligence_Internationalization.html b/docs/api/module-Intelligence_Internationalization.html index 13e78c638af..810878afe96 100644 --- a/docs/api/module-Intelligence_Internationalization.html +++ b/docs/api/module-Intelligence_Internationalization.html @@ -3,6 +3,7 @@ JSDoc: Module: Intelligence/Internationalization + diff --git a/docs/api/module-Intelligence_Orchestration.html b/docs/api/module-Intelligence_Orchestration.html index f4b19b57e59..ca365c3b2ff 100644 --- a/docs/api/module-Intelligence_Orchestration.html +++ b/docs/api/module-Intelligence_Orchestration.html @@ -3,6 +3,7 @@ JSDoc: Module: Intelligence/Orchestration + diff --git a/docs/api/module-Intelligence_Visualization.html b/docs/api/module-Intelligence_Visualization.html index 8b7a53f6cee..3d877065da2 100644 --- a/docs/api/module-Intelligence_Visualization.html +++ b/docs/api/module-Intelligence_Visualization.html @@ -3,6 +3,7 @@ JSDoc: Module: Intelligence/Visualization + diff --git a/docs/api/module-Logger.html b/docs/api/module-Logger.html index 58ba5ce4049..cb1d9957881 100644 --- a/docs/api/module-Logger.html +++ b/docs/api/module-Logger.html @@ -3,6 +3,7 @@ JSDoc: Module: Logger + diff --git a/docs/api/module-News%20Backport%20Generation%20-%20Historical%20Article%20Migration%20System.html b/docs/api/module-News%20Backport%20Generation%20-%20Historical%20Article%20Migration%20System.html index 6c0563ecb4d..ea0b511bad2 100644 --- a/docs/api/module-News%20Backport%20Generation%20-%20Historical%20Article%20Migration%20System.html +++ b/docs/api/module-News%20Backport%20Generation%20-%20Historical%20Article%20Migration%20System.html @@ -3,6 +3,7 @@ JSDoc: Module: News Backport Generation - Historical Article Migration System + diff --git a/docs/api/module-OSINT_DataAcquisition.html b/docs/api/module-OSINT_DataAcquisition.html index a788d28e9b4..53995959783 100644 --- a/docs/api/module-OSINT_DataAcquisition.html +++ b/docs/api/module-OSINT_DataAcquisition.html @@ -3,6 +3,7 @@ JSDoc: Module: OSINT/DataAcquisition + diff --git a/docs/api/module-Party%20Variants%20-%20Political%20Party%20Name%20Normalization%20Framework.html b/docs/api/module-Party%20Variants%20-%20Political%20Party%20Name%20Normalization%20Framework.html index d4c9bc196c3..4584526fb98 100644 --- a/docs/api/module-Party%20Variants%20-%20Political%20Party%20Name%20Normalization%20Framework.html +++ b/docs/api/module-Party%20Variants%20-%20Political%20Party%20Name%20Normalization%20Framework.html @@ -3,6 +3,7 @@ JSDoc: Module: Party Variants - Political Party Name Normalization Framework + diff --git a/docs/api/module-PoliticalIntelligence_PartyAnalysis.html b/docs/api/module-PoliticalIntelligence_PartyAnalysis.html index 78618e7499b..5334d40b4bd 100644 --- a/docs/api/module-PoliticalIntelligence_PartyAnalysis.html +++ b/docs/api/module-PoliticalIntelligence_PartyAnalysis.html @@ -3,6 +3,7 @@ JSDoc: Module: PoliticalIntelligence/PartyAnalysis + diff --git a/docs/api/module-RiskAssessment_AnomalyDetection.html b/docs/api/module-RiskAssessment_AnomalyDetection.html index db1cd2be00c..1679b5a46ad 100644 --- a/docs/api/module-RiskAssessment_AnomalyDetection.html +++ b/docs/api/module-RiskAssessment_AnomalyDetection.html @@ -3,6 +3,7 @@ JSDoc: Module: RiskAssessment/AnomalyDetection + diff --git a/docs/api/module-Sitemap%20Generation%20-%20Multi-Language%20SEO%20Infrastructure.html b/docs/api/module-Sitemap%20Generation%20-%20Multi-Language%20SEO%20Infrastructure.html index 4632d9fe19d..1725bdfa4f9 100644 --- a/docs/api/module-Sitemap%20Generation%20-%20Multi-Language%20SEO%20Infrastructure.html +++ b/docs/api/module-Sitemap%20Generation%20-%20Multi-Language%20SEO%20Infrastructure.html @@ -3,6 +3,7 @@ JSDoc: Module: Sitemap Generation - Multi-Language SEO Infrastructure + diff --git a/docs/api/module-Statistics%20Update%20from%20CIA%20Database%20-%20Automated%20Metrics%20Synchronization.html b/docs/api/module-Statistics%20Update%20from%20CIA%20Database%20-%20Automated%20Metrics%20Synchronization.html index f9bf0b433c2..1e796143197 100644 --- a/docs/api/module-Statistics%20Update%20from%20CIA%20Database%20-%20Automated%20Metrics%20Synchronization.html +++ b/docs/api/module-Statistics%20Update%20from%20CIA%20Database%20-%20Automated%20Metrics%20Synchronization.html @@ -3,6 +3,7 @@ JSDoc: Module: Statistics Update from CIA Database - Automated Metrics Synchronization + diff --git a/docs/api/module-TemporalIntelligence_SeasonalAnalysis.html b/docs/api/module-TemporalIntelligence_SeasonalAnalysis.html index f59d8bbdcdb..bca5528270b 100644 --- a/docs/api/module-TemporalIntelligence_SeasonalAnalysis.html +++ b/docs/api/module-TemporalIntelligence_SeasonalAnalysis.html @@ -3,6 +3,7 @@ JSDoc: Module: TemporalIntelligence/SeasonalAnalysis + diff --git a/docs/api/module-UIUtilities_NavigationEnhancement.html b/docs/api/module-UIUtilities_NavigationEnhancement.html index d37443aef3d..882fff6ebcb 100644 --- a/docs/api/module-UIUtilities_NavigationEnhancement.html +++ b/docs/api/module-UIUtilities_NavigationEnhancement.html @@ -3,6 +3,7 @@ JSDoc: Module: UIUtilities/NavigationEnhancement + diff --git a/docs/api/module-Validation_CrossReferenceTracking.html b/docs/api/module-Validation_CrossReferenceTracking.html index 53bf3e9821e..a6de4455a01 100644 --- a/docs/api/module-Validation_CrossReferenceTracking.html +++ b/docs/api/module-Validation_CrossReferenceTracking.html @@ -3,6 +3,7 @@ JSDoc: Module: Validation/CrossReferenceTracking + diff --git a/docs/api/module-Validation_EveningAnalysis.html b/docs/api/module-Validation_EveningAnalysis.html index ed2ac784af6..b5881d0b68f 100644 --- a/docs/api/module-Validation_EveningAnalysis.html +++ b/docs/api/module-Validation_EveningAnalysis.html @@ -3,6 +3,7 @@ JSDoc: Module: Validation/EveningAnalysis + diff --git a/docs/api/module-Validation_LanguageMetadata.html b/docs/api/module-Validation_LanguageMetadata.html index 35ea2b98440..86ed527f862 100644 --- a/docs/api/module-Validation_LanguageMetadata.html +++ b/docs/api/module-Validation_LanguageMetadata.html @@ -3,6 +3,7 @@ JSDoc: Module: Validation/LanguageMetadata + diff --git a/docs/api/module-Validation_SchemaValidation.html b/docs/api/module-Validation_SchemaValidation.html index 23f7f68925c..e2fdde32d9c 100644 --- a/docs/api/module-Validation_SchemaValidation.html +++ b/docs/api/module-Validation_SchemaValidation.html @@ -3,6 +3,7 @@ JSDoc: Module: Validation/SchemaValidation + diff --git a/docs/api/module-Validation_TranslationQuality.html b/docs/api/module-Validation_TranslationQuality.html index d3941380cdc..67e9d5f8997 100644 --- a/docs/api/module-Validation_TranslationQuality.html +++ b/docs/api/module-Validation_TranslationQuality.html @@ -3,6 +3,7 @@ JSDoc: Module: Validation/TranslationQuality + diff --git a/docs/api/module-Validation_VisualRegression.html b/docs/api/module-Validation_VisualRegression.html index 34fa634e28b..a45356a5fc1 100644 --- a/docs/api/module-Validation_VisualRegression.html +++ b/docs/api/module-Validation_VisualRegression.html @@ -3,6 +3,7 @@ JSDoc: Module: Validation/VisualRegression + diff --git a/docs/api/module-Vocabulary%20Extraction%20-%20Political%20Terminology%20Pattern%20Analysis.html b/docs/api/module-Vocabulary%20Extraction%20-%20Political%20Terminology%20Pattern%20Analysis.html index 07a57b09382..c6079636811 100644 --- a/docs/api/module-Vocabulary%20Extraction%20-%20Political%20Terminology%20Pattern%20Analysis.html +++ b/docs/api/module-Vocabulary%20Extraction%20-%20Political%20Terminology%20Pattern%20Analysis.html @@ -3,6 +3,7 @@ JSDoc: Module: Vocabulary Extraction - Political Terminology Pattern Analysis + diff --git a/docs/api/scripts_article-quality-enhancer.js.html b/docs/api/scripts_article-quality-enhancer.js.html index 8ab6271a50f..405bbf83fe5 100644 --- a/docs/api/scripts_article-quality-enhancer.js.html +++ b/docs/api/scripts_article-quality-enhancer.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/article-quality-enhancer.js + diff --git a/docs/api/scripts_article-template.js.html b/docs/api/scripts_article-template.js.html index 7413f717814..2e77e5a44f4 100644 --- a/docs/api/scripts_article-template.js.html +++ b/docs/api/scripts_article-template.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/article-template.js + diff --git a/docs/api/scripts_back-to-top.js.html b/docs/api/scripts_back-to-top.js.html index 60df830c187..88d1659f1cf 100644 --- a/docs/api/scripts_back-to-top.js.html +++ b/docs/api/scripts_back-to-top.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/back-to-top.js + diff --git a/docs/api/scripts_check-cia-schema-updates.js.html b/docs/api/scripts_check-cia-schema-updates.js.html index afccb1c1c56..29043f955bb 100644 --- a/docs/api/scripts_check-cia-schema-updates.js.html +++ b/docs/api/scripts_check-cia-schema-updates.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/check-cia-schema-updates.js + diff --git a/docs/api/scripts_coalition-dashboard.js.html b/docs/api/scripts_coalition-dashboard.js.html index 582d3b32982..810d51d6e5d 100644 --- a/docs/api/scripts_coalition-dashboard.js.html +++ b/docs/api/scripts_coalition-dashboard.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/coalition-dashboard.js + diff --git a/docs/api/scripts_committees-dashboard.js.html b/docs/api/scripts_committees-dashboard.js.html index 074c5d1d8f2..e08da1207b2 100644 --- a/docs/api/scripts_committees-dashboard.js.html +++ b/docs/api/scripts_committees-dashboard.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/committees-dashboard.js + diff --git a/docs/api/scripts_data-transformers.js.html b/docs/api/scripts_data-transformers.js.html index 6549123df1e..9b715ed0fe9 100644 --- a/docs/api/scripts_data-transformers.js.html +++ b/docs/api/scripts_data-transformers.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/data-transformers.js + diff --git a/docs/api/scripts_editorial-pillars.js.html b/docs/api/scripts_editorial-pillars.js.html index cb1630ad113..26227426469 100644 --- a/docs/api/scripts_editorial-pillars.js.html +++ b/docs/api/scripts_editorial-pillars.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/editorial-pillars.js + diff --git a/docs/api/scripts_extract-vocabulary.js.html b/docs/api/scripts_extract-vocabulary.js.html index d96badfe26c..1d0565f0da9 100644 --- a/docs/api/scripts_extract-vocabulary.js.html +++ b/docs/api/scripts_extract-vocabulary.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/extract-vocabulary.js + diff --git a/docs/api/scripts_generate-news-backport.js.html b/docs/api/scripts_generate-news-backport.js.html index 8f14b69908f..715f360a671 100644 --- a/docs/api/scripts_generate-news-backport.js.html +++ b/docs/api/scripts_generate-news-backport.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/generate-news-backport.js + diff --git a/docs/api/scripts_generate-news-enhanced.js.html b/docs/api/scripts_generate-news-enhanced.js.html index c5b8c21ae37..4ce62a8f29f 100644 --- a/docs/api/scripts_generate-news-enhanced.js.html +++ b/docs/api/scripts_generate-news-enhanced.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/generate-news-enhanced.js + diff --git a/docs/api/scripts_generate-news-indexes.js.html b/docs/api/scripts_generate-news-indexes.js.html index fcb5b216f27..172aa1807c6 100644 --- a/docs/api/scripts_generate-news-indexes.js.html +++ b/docs/api/scripts_generate-news-indexes.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/generate-news-indexes.js + diff --git a/docs/api/scripts_generate-sitemap.js.html b/docs/api/scripts_generate-sitemap.js.html index e5ed37a254a..bd3166bd012 100644 --- a/docs/api/scripts_generate-sitemap.js.html +++ b/docs/api/scripts_generate-sitemap.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/generate-sitemap.js + diff --git a/docs/api/scripts_generate-types-from-cia-schemas.js.html b/docs/api/scripts_generate-types-from-cia-schemas.js.html index c2fa9e6966b..e1e48a9aada 100644 --- a/docs/api/scripts_generate-types-from-cia-schemas.js.html +++ b/docs/api/scripts_generate-types-from-cia-schemas.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/generate-types-from-cia-schemas.js + diff --git a/docs/api/scripts_html-utils.js.html b/docs/api/scripts_html-utils.js.html index cd56ff86971..a1fb2e53684 100644 --- a/docs/api/scripts_html-utils.js.html +++ b/docs/api/scripts_html-utils.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/html-utils.js + diff --git a/docs/api/scripts_load-cia-stats.js.html b/docs/api/scripts_load-cia-stats.js.html index 76d762f6f15..124af65a938 100644 --- a/docs/api/scripts_load-cia-stats.js.html +++ b/docs/api/scripts_load-cia-stats.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/load-cia-stats.js + diff --git a/docs/api/scripts_mcp-client.js.html b/docs/api/scripts_mcp-client.js.html index 715ef807dd4..e39b5159341 100644 --- a/docs/api/scripts_mcp-client.js.html +++ b/docs/api/scripts_mcp-client.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/mcp-client.js + diff --git a/docs/api/scripts_news-types_breaking-news.js.html b/docs/api/scripts_news-types_breaking-news.js.html index 8f33eaf83e0..0cc13a63ec7 100644 --- a/docs/api/scripts_news-types_breaking-news.js.html +++ b/docs/api/scripts_news-types_breaking-news.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/news-types/breaking-news.js + diff --git a/docs/api/scripts_news-types_committee-reports.js.html b/docs/api/scripts_news-types_committee-reports.js.html index 0f903466a0e..05005aab8e0 100644 --- a/docs/api/scripts_news-types_committee-reports.js.html +++ b/docs/api/scripts_news-types_committee-reports.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/news-types/committee-reports.js + diff --git a/docs/api/scripts_news-types_motions.js.html b/docs/api/scripts_news-types_motions.js.html index afc9b94a96a..d65808fa6b0 100644 --- a/docs/api/scripts_news-types_motions.js.html +++ b/docs/api/scripts_news-types_motions.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/news-types/motions.js + diff --git a/docs/api/scripts_news-types_propositions.js.html b/docs/api/scripts_news-types_propositions.js.html index a14e31ce410..32defcf6929 100644 --- a/docs/api/scripts_news-types_propositions.js.html +++ b/docs/api/scripts_news-types_propositions.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/news-types/propositions.js + diff --git a/docs/api/scripts_news-types_week-ahead.js.html b/docs/api/scripts_news-types_week-ahead.js.html index 7beb75a7177..2a9cfbc71e0 100644 --- a/docs/api/scripts_news-types_week-ahead.js.html +++ b/docs/api/scripts_news-types_week-ahead.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/news-types/week-ahead.js + diff --git a/docs/api/scripts_party-variants.js.html b/docs/api/scripts_party-variants.js.html index 89197ae11bf..e648d3f2b43 100644 --- a/docs/api/scripts_party-variants.js.html +++ b/docs/api/scripts_party-variants.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/party-variants.js + diff --git a/docs/api/scripts_sync-cia-schemas.js.html b/docs/api/scripts_sync-cia-schemas.js.html index bfd838a1869..4e8fbe8d3f1 100644 --- a/docs/api/scripts_sync-cia-schemas.js.html +++ b/docs/api/scripts_sync-cia-schemas.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/sync-cia-schemas.js + diff --git a/docs/api/scripts_take-screenshot.js.html b/docs/api/scripts_take-screenshot.js.html index 6aadbd59705..5f78f0b85f9 100644 --- a/docs/api/scripts_take-screenshot.js.html +++ b/docs/api/scripts_take-screenshot.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/take-screenshot.js + diff --git a/docs/api/scripts_update-stats-from-cia.js.html b/docs/api/scripts_update-stats-from-cia.js.html index 4f48cd446d9..fb883381497 100644 --- a/docs/api/scripts_update-stats-from-cia.js.html +++ b/docs/api/scripts_update-stats-from-cia.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/update-stats-from-cia.js + diff --git a/docs/api/scripts_validate-against-cia-schemas.js.html b/docs/api/scripts_validate-against-cia-schemas.js.html index faadb6e102e..72b7a3ecd57 100644 --- a/docs/api/scripts_validate-against-cia-schemas.js.html +++ b/docs/api/scripts_validate-against-cia-schemas.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/validate-against-cia-schemas.js + diff --git a/docs/api/scripts_validate-articles-playwright.js.html b/docs/api/scripts_validate-articles-playwright.js.html index 95618aa5c8e..77eccd3165f 100644 --- a/docs/api/scripts_validate-articles-playwright.js.html +++ b/docs/api/scripts_validate-articles-playwright.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/validate-articles-playwright.js + diff --git a/docs/api/scripts_validate-cross-references.js.html b/docs/api/scripts_validate-cross-references.js.html index f2c742f207f..24104104004 100644 --- a/docs/api/scripts_validate-cross-references.js.html +++ b/docs/api/scripts_validate-cross-references.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/validate-cross-references.js + diff --git a/docs/api/scripts_validate-evening-analysis.js.html b/docs/api/scripts_validate-evening-analysis.js.html index fc4b32581ac..190c8fe97df 100644 --- a/docs/api/scripts_validate-evening-analysis.js.html +++ b/docs/api/scripts_validate-evening-analysis.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/validate-evening-analysis.js + diff --git a/docs/api/scripts_validate-news-translations.js.html b/docs/api/scripts_validate-news-translations.js.html index bc39f2c5331..f2eea4a11c4 100644 --- a/docs/api/scripts_validate-news-translations.js.html +++ b/docs/api/scripts_validate-news-translations.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/validate-news-translations.js + diff --git a/docs/api/scripts_validate-translations.js.html b/docs/api/scripts_validate-translations.js.html index 64c1cbd3e39..5194bf1c09a 100644 --- a/docs/api/scripts_validate-translations.js.html +++ b/docs/api/scripts_validate-translations.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/validate-translations.js + diff --git a/docs/api/scripts_workflow-state-coordinator.js.html b/docs/api/scripts_workflow-state-coordinator.js.html index 17e3272bf2a..b7869ab07bb 100644 --- a/docs/api/scripts_workflow-state-coordinator.js.html +++ b/docs/api/scripts_workflow-state-coordinator.js.html @@ -3,6 +3,7 @@ JSDoc: Source: scripts/workflow-state-coordinator.js + diff --git a/scripts/fix-docs-meta-description.ts b/scripts/fix-docs-meta-description.ts new file mode 100644 index 00000000000..1ffad08b07b --- /dev/null +++ b/scripts/fix-docs-meta-description.ts @@ -0,0 +1,210 @@ +#!/usr/bin/env npx tsx +/** + * Add a `` to generated API-documentation pages + * that are missing one. + * + * Background + * ---------- + * The published `docs/api/` directory is a mix of current TypeDoc output + * (every page already carries a ``) and a set of + * **stale, orphaned legacy JSDoc pages** (`JSDoc: …`) that + * predate the TypeDoc migration. The JSDoc pages have no description tag, + * are not linked from the current TypeDoc navigation, yet are committed and + * shipped verbatim by the production deploy (`deploy-s3` copies the + * repository `docs/` directory straight into `dist/docs/`). SEO crawlers + * therefore report "The description is missing in the head section of the + * page" for those pages. + * + * This post-processor closes that gap: for every `*.html` page under the + * target root(s) whose `` lacks a ``, it + * derives a concise, page-specific description from the document `` + * and inserts the tag immediately after the closing ``. + * + * Behaviour + * --------- + * - **Idempotent** — pages that already declare a description are left + * untouched, so it is safe to run repeatedly (e.g. as a deploy safety net). + * - **Non-destructive** — it only *adds* a single `` tag; no existing + * markup is modified or removed. + * - Works on both pretty-printed (JSDoc) and minified (TypeDoc) markup. + * + * Usage: + * npx tsx scripts/fix-docs-meta-description.ts # dry-run, scans docs/api + * npx tsx scripts/fix-docs-meta-description.ts --write # apply fixes to docs/api + * npx tsx scripts/fix-docs-meta-description.ts --write docs/api dist/docs/api + * + * @author Hack23 AB (Quality Engineering) + * @license Apache-2.0 + */ + +import * as fs from 'node:fs'; +import * as path from 'node:path'; + +const ROOT = path.resolve(import.meta.dirname, '..'); +const WRITE = process.argv.includes('--write'); + +/** Project / platform name used in the generated descriptions. */ +const PLATFORM = 'Riksdagsmonitor Intelligence Platform'; + +/** + * Positional CLI arguments (everything that is not a flag) are treated as + * the documentation root directories to scan. Defaults to `docs/api`. + */ +const TARGET_ROOTS = process.argv + .slice(2) + .filter((arg) => !arg.startsWith('--')); +if (TARGET_ROOTS.length === 0) TARGET_ROOTS.push('docs/api'); + +/** Recursively collect all `.html` files under `dir`. */ +function collectHtmlFiles(dir: string): string[] { + const results: string[] = []; + if (!fs.existsSync(dir)) return results; + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) { + results.push(...collectHtmlFiles(full)); + } else if (entry.name.endsWith('.html')) { + results.push(full); + } + } + return results; +} + +/** Escape a string for safe use inside a double-quoted HTML attribute. */ +function escapeAttr(value: string): string { + return value + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(//g, '>'); +} + +/** Decode the handful of HTML entities that show up in `` text. */ +function decodeEntities(value: string): string { + return value + .replace(/&/g, '&') + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/"/g, '"') + .replace(/'/g, "'") + .replace(/ /g, ' '); +} + +/** + * Derive a concise, human-readable meta description from a page `<title>`. + * + * Recognises the legacy JSDoc title shapes (`JSDoc: Source: …`, + * `JSDoc: Module: …`, `JSDoc: Class: …`, `JSDoc: Namespace: …`, + * `JSDoc: Global`) and falls back to a generic description built from the + * title text for anything else. + */ +export function deriveDescription(rawTitle: string): string { + const title = decodeEntities(rawTitle).trim(); + + // Strip a leading "JSDoc:" label if present. + const jsdoc = title.replace(/^JSDoc:\s*/i, ''); + + const labelled = /^(Source|Module|Class|Namespace|Interface|Mixin|Tutorial|Event):\s*(.+)$/i.exec( + jsdoc, + ); + if (labelled) { + const kind = labelled[1].toLowerCase(); + const subject = labelled[2].trim(); + if (kind === 'source') { + return `Annotated source code for ${subject} in the ${PLATFORM} API documentation.`; + } + return `API reference for the ${subject} ${kind} in the ${PLATFORM} API documentation.`; + } + + if (/^Global$/i.test(jsdoc)) { + return `Global members reference for the ${PLATFORM} API documentation.`; + } + + // Generic fallback: use the meaningful part of the title (drop a trailing + // site-name / version suffix such as " | Riksdagsmonitor … - v0.9.40"). + const subject = (jsdoc.split('|')[0] ?? jsdoc).trim() || PLATFORM; + if (new RegExp(`${PLATFORM}`, 'i').test(subject)) { + return `API documentation for the ${PLATFORM}.`; + } + return `${subject} — ${PLATFORM} API documentation.`; +} + +interface FixResult { + file: string; + description: string; +} + +/** + * Inject a `<meta name="description">` into a single file when one is + * missing from its `<head>`. Returns the fix metadata, or `null` if no + * change was needed. + */ +export function injectDescription(html: string): { html: string; description: string } | null { + const headEndIdx = html.search(/<\/head>/i); + const head = headEndIdx === -1 ? html : html.slice(0, headEndIdx); + + // Already has a description meta in the head → nothing to do. + if (/<meta\s+[^>]*name=["']description["']/i.test(head)) return null; + + const titleMatch = /<title>([\s\S]*?)<\/title>/i.exec(html); + if (!titleMatch) return null; + + const description = deriveDescription(titleMatch[1]); + const metaTag = `<meta name="description" content="${escapeAttr(description)}">`; + + // Insert immediately after the closing , mirroring the title's + // own indentation when the markup is pretty-printed. + const titleEndIdx = titleMatch.index + titleMatch[0].length; + const lineStart = html.lastIndexOf('\n', titleMatch.index) + 1; + const indent = /^(\s*)/.exec(html.slice(lineStart, titleMatch.index))?.[1] ?? ''; + const afterTitle = html.slice(titleEndIdx); + const insertion = /^\s*\n/.test(afterTitle) || afterTitle.startsWith('\n') + ? `\n${indent}${metaTag}` + : metaTag; + + const newHtml = html.slice(0, titleEndIdx) + insertion + afterTitle; + return { html: newHtml, description }; +} + +function fixFile(filePath: string): FixResult | null { + const html = fs.readFileSync(filePath, 'utf8'); + const result = injectDescription(html); + if (!result) return null; + if (WRITE) fs.writeFileSync(filePath, result.html, 'utf8'); + return { file: path.relative(ROOT, filePath), description: result.description }; +} + +function main(): void { + const htmlFiles = TARGET_ROOTS.flatMap((root) => + collectHtmlFiles(path.isAbsolute(root) ? root : path.join(ROOT, root)), + ); + + console.log(`Scanning ${htmlFiles.length} HTML file(s) under: ${TARGET_ROOTS.join(', ')}`); + console.log(`Mode: ${WRITE ? 'WRITE (applying fixes)' : 'DRY-RUN (use --write to apply)'}`); + + const results: FixResult[] = []; + for (const file of htmlFiles) { + const result = fixFile(file); + if (result) results.push(result); + } + + if (results.length === 0) { + console.log('\n✅ All scanned pages already declare a .'); + return; + } + + console.log( + `\n${WRITE ? '✅ Added' : '⚠️ Would add'} a meta description to ${results.length} page(s):`, + ); + for (const r of results.slice(0, 20)) { + console.log(` • ${r.file}`); + } + if (results.length > 20) console.log(` … and ${results.length - 20} more`); + + if (!WRITE) console.log('\nRun with --write to apply fixes.'); +} + +// Only run the CLI when executed directly (not when imported by tests). +if (process.argv[1] && path.resolve(process.argv[1]) === path.resolve(import.meta.filename)) { + main(); +} From eb1e8b7038b51145e13fe61f02083d908be4e490 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 29 May 2026 20:37:37 +0000 Subject: [PATCH 2/3] Fix root cause of empty meta description in generated pages; revert docs/api + script detour Co-authored-by: pethers <1726836+pethers@users.noreply.github.com> --- docs/api/AccessibilityTable.html | 1 - docs/api/AnomalyAlertSystem.html | 1 - docs/api/AnomalyDetectionCharts.html | 1 - docs/api/AnomalyDetectionDashboard.html | 1 - docs/api/AnomalyDetectionDataManager.html | 1 - docs/api/CIADashboardRenderer.html | 1 - docs/api/CIADataLoader.html | 1 - docs/api/DataCache.html | 1 - docs/api/DataFetcher.html | 1 - docs/api/DecisionImpactChart.html | 1 - docs/api/Election2026Predictions.html | 1 - docs/api/ElectionCycleCharts.html | 1 - docs/api/ElectionCycleDashboard.html | 1 - docs/api/ElectionCycleDataManager.html | 1 - docs/api/InfluenceChart.html | 1 - docs/api/MCPClient.html | 1 - docs/api/MinistryDashboard.html | 1 - docs/api/ProductivityChart.html | 1 - docs/api/RiskHeatMap.html | 1 - docs/api/WorkflowStateCoordinator.html | 1 - docs/api/dashboard_cia-data-loader.js.html | 1 - docs/api/dashboard_cia-visualizations.js.html | 1 - docs/api/dashboard_dashboard-init.js.html | 1 - .../dashboard_election-predictions.js.html | 1 - docs/api/dashboard_i18n-translations.js.html | 1 - docs/api/global.html | 1 - .../js_anomaly-detection-dashboard.js.html | 1 - docs/api/js_back-to-top.js.html | 1 - docs/api/js_chart-utils.js.html | 1 - docs/api/js_coalition-loader.js.html | 1 - .../js_dashboard-integration-example.js.html | 1 - docs/api/js_election-cycle-dashboard.js.html | 1 - docs/api/js_logger.js.html | 1 - docs/api/js_ministry-dashboard.js.html | 1 - docs/api/js_party-dashboard.js.html | 1 - docs/api/js_politician-dashboard.js.html | 1 - docs/api/js_pre-election-dashboard.js.html | 1 - docs/api/js_risk-dashboard.js.html | 1 - .../js_seasonal-patterns-dashboard.js.html | 1 - docs/api/js_stats-loader.js.html | 1 - ...odule-Analytics_CoalitionIntelligence.html | 1 - ...odule-Analytics_CommitteeIntelligence.html | 1 - ...le%20Content%20Validation%20Framework.html | 1 - ...s_AnomalyDetection-AnomalyAlertSystem.html | 1 - ...omalyDetection-AnomalyDetectionCharts.html | 1 - ...lyDetection-AnomalyDetectionDashboard.html | 1 - ...Detection-AnomalyDetectionDataManager.html | 1 - ...e-BehavioralAnalysis_AnomalyDetection.html | 1 - ...0Upstream%20Schema%20Caching%20System.html | 1 - ...%20-%20Upstream%20Change%20Monitoring.html | 1 - docs/api/module-ChartUtils.html | 1 - ...-CoalitionIntelligence_StatusAnalysis.html | 1 - ...module-ContentGeneration_BreakingNews.html | 1 - ...e-ContentGeneration_CommitteeAnalysis.html | 1 - ...le-ContentGeneration_GovernmentPolicy.html | 1 - ...-ContentGeneration_OppositionAnalysis.html | 1 - ...ContentGeneration_ProspectiveAnalysis.html | 1 - docs/api/module-DashboardIntegration.html | 1 - .../module-DataPipeline_CIADataLoader.html | 1 - ...ulti-Language%20Article%20Aggregation.html | 1 - ...nce_CycleAnalysis-ElectionCycleCharts.html | 1 - ..._CycleAnalysis-ElectionCycleDashboard.html | 1 - ...ycleAnalysis-ElectionCycleDataManager.html | 1 - ...le-ElectionIntelligence_CycleAnalysis.html | 1 - ...ionIntelligence_PreElectionMonitoring.html | 1 - ...e_MinistryAnalysis-AccessibilityTable.html | 1 - ...telligence_MinistryAnalysis-DataCache.html | 1 - ...lligence_MinistryAnalysis-DataFetcher.html | 1 - ..._MinistryAnalysis-DecisionImpactChart.html | 1 - ...gence_MinistryAnalysis-InfluenceChart.html | 1 - ...ce_MinistryAnalysis-MinistryDashboard.html | 1 - ...ce_MinistryAnalysis-ProductivityChart.html | 1 - ...lligence_MinistryAnalysis-RiskHeatMap.html | 1 - ...vernmentIntelligence_MinistryAnalysis.html | 1 - ...%20and%20XSS%20Prevention%20Framework.html | 1 - ...idualIntelligence_PoliticianProfiling.html | 1 - .../module-Infrastructure_Accessibility.html | 1 - .../module-Infrastructure_TypeGeneration.html | 1 - .../module-Infrastructure_VisualEvidence.html | 1 - ...rchestration.WorkflowStateCoordinator.html | 1 - ...-Infrastructure_WorkflowOrchestration.html | 1 - ...tions_Article%20Template%20Generation.html | 1 - ...rations_Automated%20News%20Generation.html | 1 - ...ions_CIA%20Statistical%20Intelligence.html | 1 - ...ions_Data%20Transformation%20Pipeline.html | 1 - ..._Editorial%20Intelligence%20Framework.html | 1 - ...elligence%20Server%20Client.MCPClient.html | 1 - ..._MCP%20Intelligence%20Server%20Client.html | 1 - docs/api/module-Intelligence_Forecasting.html | 1 - ...ule-Intelligence_Internationalization.html | 1 - .../module-Intelligence_Orchestration.html | 1 - .../module-Intelligence_Visualization.html | 1 - docs/api/module-Logger.html | 1 - ...orical%20Article%20Migration%20System.html | 1 - docs/api/module-OSINT_DataAcquisition.html | 1 - ...ty%20Name%20Normalization%20Framework.html | 1 - ...e-PoliticalIntelligence_PartyAnalysis.html | 1 - ...odule-RiskAssessment_AnomalyDetection.html | 1 - ...Multi-Language%20SEO%20Infrastructure.html | 1 - ...Automated%20Metrics%20Synchronization.html | 1 - ...TemporalIntelligence_SeasonalAnalysis.html | 1 - ...ule-UIUtilities_NavigationEnhancement.html | 1 - ...ule-Validation_CrossReferenceTracking.html | 1 - .../module-Validation_EveningAnalysis.html | 1 - .../module-Validation_LanguageMetadata.html | 1 - .../module-Validation_SchemaValidation.html | 1 - .../module-Validation_TranslationQuality.html | 1 - .../module-Validation_VisualRegression.html | 1 - ...al%20Terminology%20Pattern%20Analysis.html | 1 - .../scripts_article-quality-enhancer.js.html | 1 - docs/api/scripts_article-template.js.html | 1 - docs/api/scripts_back-to-top.js.html | 1 - .../scripts_check-cia-schema-updates.js.html | 1 - docs/api/scripts_coalition-dashboard.js.html | 1 - docs/api/scripts_committees-dashboard.js.html | 1 - docs/api/scripts_data-transformers.js.html | 1 - docs/api/scripts_editorial-pillars.js.html | 1 - docs/api/scripts_extract-vocabulary.js.html | 1 - .../scripts_generate-news-backport.js.html | 1 - .../scripts_generate-news-enhanced.js.html | 1 - .../api/scripts_generate-news-indexes.js.html | 1 - docs/api/scripts_generate-sitemap.js.html | 1 - ...ts_generate-types-from-cia-schemas.js.html | 1 - docs/api/scripts_html-utils.js.html | 1 - docs/api/scripts_load-cia-stats.js.html | 1 - docs/api/scripts_mcp-client.js.html | 1 - .../scripts_news-types_breaking-news.js.html | 1 - ...ripts_news-types_committee-reports.js.html | 1 - docs/api/scripts_news-types_motions.js.html | 1 - .../scripts_news-types_propositions.js.html | 1 - .../api/scripts_news-types_week-ahead.js.html | 1 - docs/api/scripts_party-variants.js.html | 1 - docs/api/scripts_sync-cia-schemas.js.html | 1 - docs/api/scripts_take-screenshot.js.html | 1 - .../api/scripts_update-stats-from-cia.js.html | 1 - ...ripts_validate-against-cia-schemas.js.html | 1 - ...ripts_validate-articles-playwright.js.html | 1 - .../scripts_validate-cross-references.js.html | 1 - .../scripts_validate-evening-analysis.js.html | 1 - ...scripts_validate-news-translations.js.html | 1 - .../api/scripts_validate-translations.js.html | 1 - ...scripts_workflow-state-coordinator.js.html | 1 - scripts/fix-docs-meta-description.ts | 210 ------------------ scripts/render-lib/article-seo.ts | 14 +- scripts/render-lib/chrome/head.ts | 20 +- tests/chrome-seo-features.test.ts | 46 ++++ tests/i18n-fallback-all-languages.test.ts | 7 +- tests/render-lib.test.ts | 11 +- tests/seo-budget-windows.test.ts | 26 +++ 149 files changed, 116 insertions(+), 360 deletions(-) delete mode 100644 scripts/fix-docs-meta-description.ts diff --git a/docs/api/AccessibilityTable.html b/docs/api/AccessibilityTable.html index be9522ad84f..367eeaeea51 100644 --- a/docs/api/AccessibilityTable.html +++ b/docs/api/AccessibilityTable.html @@ -3,7 +3,6 @@ JSDoc: Class: AccessibilityTable - diff --git a/docs/api/AnomalyAlertSystem.html b/docs/api/AnomalyAlertSystem.html index 8500484ba16..25b5beeaad8 100644 --- a/docs/api/AnomalyAlertSystem.html +++ b/docs/api/AnomalyAlertSystem.html @@ -3,7 +3,6 @@ JSDoc: Class: AnomalyAlertSystem - diff --git a/docs/api/AnomalyDetectionCharts.html b/docs/api/AnomalyDetectionCharts.html index 0982e72813b..2f53f2430a7 100644 --- a/docs/api/AnomalyDetectionCharts.html +++ b/docs/api/AnomalyDetectionCharts.html @@ -3,7 +3,6 @@ JSDoc: Class: AnomalyDetectionCharts - diff --git a/docs/api/AnomalyDetectionDashboard.html b/docs/api/AnomalyDetectionDashboard.html index 82f44fb3e19..bc187a73648 100644 --- a/docs/api/AnomalyDetectionDashboard.html +++ b/docs/api/AnomalyDetectionDashboard.html @@ -3,7 +3,6 @@ JSDoc: Class: AnomalyDetectionDashboard - diff --git a/docs/api/AnomalyDetectionDataManager.html b/docs/api/AnomalyDetectionDataManager.html index 121d3eda5b5..9a7ccb5c304 100644 --- a/docs/api/AnomalyDetectionDataManager.html +++ b/docs/api/AnomalyDetectionDataManager.html @@ -3,7 +3,6 @@ JSDoc: Class: AnomalyDetectionDataManager - diff --git a/docs/api/CIADashboardRenderer.html b/docs/api/CIADashboardRenderer.html index 845db867239..e0b13958d51 100644 --- a/docs/api/CIADashboardRenderer.html +++ b/docs/api/CIADashboardRenderer.html @@ -3,7 +3,6 @@ JSDoc: Class: CIADashboardRenderer - diff --git a/docs/api/CIADataLoader.html b/docs/api/CIADataLoader.html index cad3a6ccebb..c17f4f5d078 100644 --- a/docs/api/CIADataLoader.html +++ b/docs/api/CIADataLoader.html @@ -3,7 +3,6 @@ JSDoc: Class: CIADataLoader - diff --git a/docs/api/DataCache.html b/docs/api/DataCache.html index a7089acedb0..c90283aa0e7 100644 --- a/docs/api/DataCache.html +++ b/docs/api/DataCache.html @@ -3,7 +3,6 @@ JSDoc: Class: DataCache - diff --git a/docs/api/DataFetcher.html b/docs/api/DataFetcher.html index ad94710515f..3dd5bf89bbc 100644 --- a/docs/api/DataFetcher.html +++ b/docs/api/DataFetcher.html @@ -3,7 +3,6 @@ JSDoc: Class: DataFetcher - diff --git a/docs/api/DecisionImpactChart.html b/docs/api/DecisionImpactChart.html index d9e7fca8e92..fd018b0b1f7 100644 --- a/docs/api/DecisionImpactChart.html +++ b/docs/api/DecisionImpactChart.html @@ -3,7 +3,6 @@ JSDoc: Class: DecisionImpactChart - diff --git a/docs/api/Election2026Predictions.html b/docs/api/Election2026Predictions.html index be72a45b9be..e1d5ac790c8 100644 --- a/docs/api/Election2026Predictions.html +++ b/docs/api/Election2026Predictions.html @@ -3,7 +3,6 @@ JSDoc: Class: Election2026Predictions - diff --git a/docs/api/ElectionCycleCharts.html b/docs/api/ElectionCycleCharts.html index de11c3e846f..06a3ace15eb 100644 --- a/docs/api/ElectionCycleCharts.html +++ b/docs/api/ElectionCycleCharts.html @@ -3,7 +3,6 @@ JSDoc: Class: ElectionCycleCharts - diff --git a/docs/api/ElectionCycleDashboard.html b/docs/api/ElectionCycleDashboard.html index 1f93691ad8b..05c4bab74d1 100644 --- a/docs/api/ElectionCycleDashboard.html +++ b/docs/api/ElectionCycleDashboard.html @@ -3,7 +3,6 @@ JSDoc: Class: ElectionCycleDashboard - diff --git a/docs/api/ElectionCycleDataManager.html b/docs/api/ElectionCycleDataManager.html index 66a47cac9ae..0431af7b536 100644 --- a/docs/api/ElectionCycleDataManager.html +++ b/docs/api/ElectionCycleDataManager.html @@ -3,7 +3,6 @@ JSDoc: Class: ElectionCycleDataManager - diff --git a/docs/api/InfluenceChart.html b/docs/api/InfluenceChart.html index 363074b5e08..5957da63fa9 100644 --- a/docs/api/InfluenceChart.html +++ b/docs/api/InfluenceChart.html @@ -3,7 +3,6 @@ JSDoc: Class: InfluenceChart - diff --git a/docs/api/MCPClient.html b/docs/api/MCPClient.html index 9874925e20b..b077ae79138 100644 --- a/docs/api/MCPClient.html +++ b/docs/api/MCPClient.html @@ -3,7 +3,6 @@ JSDoc: Class: MCPClient - diff --git a/docs/api/MinistryDashboard.html b/docs/api/MinistryDashboard.html index c63cc3f421d..c7a0ebbe270 100644 --- a/docs/api/MinistryDashboard.html +++ b/docs/api/MinistryDashboard.html @@ -3,7 +3,6 @@ JSDoc: Class: MinistryDashboard - diff --git a/docs/api/ProductivityChart.html b/docs/api/ProductivityChart.html index 9dc8054566b..138313930b7 100644 --- a/docs/api/ProductivityChart.html +++ b/docs/api/ProductivityChart.html @@ -3,7 +3,6 @@ JSDoc: Class: ProductivityChart - diff --git a/docs/api/RiskHeatMap.html b/docs/api/RiskHeatMap.html index 1d02025a58b..432fdfb3579 100644 --- a/docs/api/RiskHeatMap.html +++ b/docs/api/RiskHeatMap.html @@ -3,7 +3,6 @@ JSDoc: Class: RiskHeatMap - diff --git a/docs/api/WorkflowStateCoordinator.html b/docs/api/WorkflowStateCoordinator.html index bb1dd025cf4..7d8880b78ad 100644 --- a/docs/api/WorkflowStateCoordinator.html +++ b/docs/api/WorkflowStateCoordinator.html @@ -3,7 +3,6 @@ JSDoc: Class: WorkflowStateCoordinator - diff --git a/docs/api/dashboard_cia-data-loader.js.html b/docs/api/dashboard_cia-data-loader.js.html index 360e403b7ab..1eb2e794fe2 100644 --- a/docs/api/dashboard_cia-data-loader.js.html +++ b/docs/api/dashboard_cia-data-loader.js.html @@ -3,7 +3,6 @@ JSDoc: Source: dashboard/cia-data-loader.js - diff --git a/docs/api/dashboard_cia-visualizations.js.html b/docs/api/dashboard_cia-visualizations.js.html index e6d7dc84f17..4f00ca312e2 100644 --- a/docs/api/dashboard_cia-visualizations.js.html +++ b/docs/api/dashboard_cia-visualizations.js.html @@ -3,7 +3,6 @@ JSDoc: Source: dashboard/cia-visualizations.js - diff --git a/docs/api/dashboard_dashboard-init.js.html b/docs/api/dashboard_dashboard-init.js.html index efc2a1e33d1..6f09ec0dcfb 100644 --- a/docs/api/dashboard_dashboard-init.js.html +++ b/docs/api/dashboard_dashboard-init.js.html @@ -3,7 +3,6 @@ JSDoc: Source: dashboard/dashboard-init.js - diff --git a/docs/api/dashboard_election-predictions.js.html b/docs/api/dashboard_election-predictions.js.html index 8bcd2a7f38e..62927fadab4 100644 --- a/docs/api/dashboard_election-predictions.js.html +++ b/docs/api/dashboard_election-predictions.js.html @@ -3,7 +3,6 @@ JSDoc: Source: dashboard/election-predictions.js - diff --git a/docs/api/dashboard_i18n-translations.js.html b/docs/api/dashboard_i18n-translations.js.html index 9f9c77fd714..07c7ad2a632 100644 --- a/docs/api/dashboard_i18n-translations.js.html +++ b/docs/api/dashboard_i18n-translations.js.html @@ -3,7 +3,6 @@ JSDoc: Source: dashboard/i18n-translations.js - diff --git a/docs/api/global.html b/docs/api/global.html index faf0b4d68ee..df8463e83f3 100644 --- a/docs/api/global.html +++ b/docs/api/global.html @@ -3,7 +3,6 @@ JSDoc: Global - diff --git a/docs/api/js_anomaly-detection-dashboard.js.html b/docs/api/js_anomaly-detection-dashboard.js.html index 5e038b51d1c..6cc32acae46 100644 --- a/docs/api/js_anomaly-detection-dashboard.js.html +++ b/docs/api/js_anomaly-detection-dashboard.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/anomaly-detection-dashboard.js - diff --git a/docs/api/js_back-to-top.js.html b/docs/api/js_back-to-top.js.html index 7e10af43feb..41c74164e4b 100644 --- a/docs/api/js_back-to-top.js.html +++ b/docs/api/js_back-to-top.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/back-to-top.js - diff --git a/docs/api/js_chart-utils.js.html b/docs/api/js_chart-utils.js.html index 5198794e8de..81fb89ab3ad 100644 --- a/docs/api/js_chart-utils.js.html +++ b/docs/api/js_chart-utils.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/chart-utils.js - diff --git a/docs/api/js_coalition-loader.js.html b/docs/api/js_coalition-loader.js.html index f0076717e8f..e69991f75ac 100644 --- a/docs/api/js_coalition-loader.js.html +++ b/docs/api/js_coalition-loader.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/coalition-loader.js - diff --git a/docs/api/js_dashboard-integration-example.js.html b/docs/api/js_dashboard-integration-example.js.html index 1fc0e475995..204e7f560a9 100644 --- a/docs/api/js_dashboard-integration-example.js.html +++ b/docs/api/js_dashboard-integration-example.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/dashboard-integration-example.js - diff --git a/docs/api/js_election-cycle-dashboard.js.html b/docs/api/js_election-cycle-dashboard.js.html index 4a002a466ef..552d232d042 100644 --- a/docs/api/js_election-cycle-dashboard.js.html +++ b/docs/api/js_election-cycle-dashboard.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/election-cycle-dashboard.js - diff --git a/docs/api/js_logger.js.html b/docs/api/js_logger.js.html index 3b96f195374..e8cb3497d19 100644 --- a/docs/api/js_logger.js.html +++ b/docs/api/js_logger.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/logger.js - diff --git a/docs/api/js_ministry-dashboard.js.html b/docs/api/js_ministry-dashboard.js.html index e950d0b8530..ef6d03aac80 100644 --- a/docs/api/js_ministry-dashboard.js.html +++ b/docs/api/js_ministry-dashboard.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/ministry-dashboard.js - diff --git a/docs/api/js_party-dashboard.js.html b/docs/api/js_party-dashboard.js.html index 22fa23608ec..e403822486d 100644 --- a/docs/api/js_party-dashboard.js.html +++ b/docs/api/js_party-dashboard.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/party-dashboard.js - diff --git a/docs/api/js_politician-dashboard.js.html b/docs/api/js_politician-dashboard.js.html index daf9adb0358..603b67dea7e 100644 --- a/docs/api/js_politician-dashboard.js.html +++ b/docs/api/js_politician-dashboard.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/politician-dashboard.js - diff --git a/docs/api/js_pre-election-dashboard.js.html b/docs/api/js_pre-election-dashboard.js.html index dac60d6ff46..73966ac05b9 100644 --- a/docs/api/js_pre-election-dashboard.js.html +++ b/docs/api/js_pre-election-dashboard.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/pre-election-dashboard.js - diff --git a/docs/api/js_risk-dashboard.js.html b/docs/api/js_risk-dashboard.js.html index d2d6d88e777..831015feac4 100644 --- a/docs/api/js_risk-dashboard.js.html +++ b/docs/api/js_risk-dashboard.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/risk-dashboard.js - diff --git a/docs/api/js_seasonal-patterns-dashboard.js.html b/docs/api/js_seasonal-patterns-dashboard.js.html index af64ae654d8..d946698c351 100644 --- a/docs/api/js_seasonal-patterns-dashboard.js.html +++ b/docs/api/js_seasonal-patterns-dashboard.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/seasonal-patterns-dashboard.js - diff --git a/docs/api/js_stats-loader.js.html b/docs/api/js_stats-loader.js.html index 347acf48dee..681ed12d209 100644 --- a/docs/api/js_stats-loader.js.html +++ b/docs/api/js_stats-loader.js.html @@ -3,7 +3,6 @@ JSDoc: Source: js/stats-loader.js - diff --git a/docs/api/module-Analytics_CoalitionIntelligence.html b/docs/api/module-Analytics_CoalitionIntelligence.html index 2e4c9681637..f82dc5e4fbb 100644 --- a/docs/api/module-Analytics_CoalitionIntelligence.html +++ b/docs/api/module-Analytics_CoalitionIntelligence.html @@ -3,7 +3,6 @@ JSDoc: Module: Analytics/CoalitionIntelligence - diff --git a/docs/api/module-Analytics_CommitteeIntelligence.html b/docs/api/module-Analytics_CommitteeIntelligence.html index 69a9121ec39..62002e38b73 100644 --- a/docs/api/module-Analytics_CommitteeIntelligence.html +++ b/docs/api/module-Analytics_CommitteeIntelligence.html @@ -3,7 +3,6 @@ JSDoc: Module: Analytics/CommitteeIntelligence - diff --git a/docs/api/module-Article%20Quality%20Enhancer%20-%20Economist-Style%20Content%20Validation%20Framework.html b/docs/api/module-Article%20Quality%20Enhancer%20-%20Economist-Style%20Content%20Validation%20Framework.html index c471441fdc3..2dbbba9ca82 100644 --- a/docs/api/module-Article%20Quality%20Enhancer%20-%20Economist-Style%20Content%20Validation%20Framework.html +++ b/docs/api/module-Article%20Quality%20Enhancer%20-%20Economist-Style%20Content%20Validation%20Framework.html @@ -3,7 +3,6 @@ JSDoc: Module: Article Quality Enhancer - Economist-Style Content Validation Framework - diff --git a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyAlertSystem.html b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyAlertSystem.html index ed5ff70b399..1c6f69622b9 100644 --- a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyAlertSystem.html +++ b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyAlertSystem.html @@ -3,7 +3,6 @@ JSDoc: Class: AnomalyAlertSystem - diff --git a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionCharts.html b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionCharts.html index cdf9d13d3d0..377443d6d23 100644 --- a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionCharts.html +++ b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionCharts.html @@ -3,7 +3,6 @@ JSDoc: Class: AnomalyDetectionCharts - diff --git a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDashboard.html b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDashboard.html index fd48cfacfcc..0f679caabe1 100644 --- a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDashboard.html +++ b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDashboard.html @@ -3,7 +3,6 @@ JSDoc: Class: AnomalyDetectionDashboard - diff --git a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDataManager.html b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDataManager.html index d535e47204a..3b40e002b26 100644 --- a/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDataManager.html +++ b/docs/api/module-BehavioralAnalysis_AnomalyDetection-AnomalyDetectionDataManager.html @@ -3,7 +3,6 @@ JSDoc: Class: AnomalyDetectionDataManager - diff --git a/docs/api/module-BehavioralAnalysis_AnomalyDetection.html b/docs/api/module-BehavioralAnalysis_AnomalyDetection.html index 0f19f206301..b7846a99711 100644 --- a/docs/api/module-BehavioralAnalysis_AnomalyDetection.html +++ b/docs/api/module-BehavioralAnalysis_AnomalyDetection.html @@ -3,7 +3,6 @@ JSDoc: Module: BehavioralAnalysis/AnomalyDetection - diff --git a/docs/api/module-CIA%20Schema%20Synchronization%20-%20Upstream%20Schema%20Caching%20System.html b/docs/api/module-CIA%20Schema%20Synchronization%20-%20Upstream%20Schema%20Caching%20System.html index a63ec55cc14..870298b5e00 100644 --- a/docs/api/module-CIA%20Schema%20Synchronization%20-%20Upstream%20Schema%20Caching%20System.html +++ b/docs/api/module-CIA%20Schema%20Synchronization%20-%20Upstream%20Schema%20Caching%20System.html @@ -3,7 +3,6 @@ JSDoc: Module: CIA Schema Synchronization - Upstream Schema Caching System - diff --git a/docs/api/module-CIA%20Schema%20Update%20Detection%20-%20Upstream%20Change%20Monitoring.html b/docs/api/module-CIA%20Schema%20Update%20Detection%20-%20Upstream%20Change%20Monitoring.html index 92fb522a452..ad2ebbb7c56 100644 --- a/docs/api/module-CIA%20Schema%20Update%20Detection%20-%20Upstream%20Change%20Monitoring.html +++ b/docs/api/module-CIA%20Schema%20Update%20Detection%20-%20Upstream%20Change%20Monitoring.html @@ -3,7 +3,6 @@ JSDoc: Module: CIA Schema Update Detection - Upstream Change Monitoring - diff --git a/docs/api/module-ChartUtils.html b/docs/api/module-ChartUtils.html index 6189289ba0f..09854fad865 100644 --- a/docs/api/module-ChartUtils.html +++ b/docs/api/module-ChartUtils.html @@ -3,7 +3,6 @@ JSDoc: Module: ChartUtils - diff --git a/docs/api/module-CoalitionIntelligence_StatusAnalysis.html b/docs/api/module-CoalitionIntelligence_StatusAnalysis.html index cc5a3844d8b..3f9341ed058 100644 --- a/docs/api/module-CoalitionIntelligence_StatusAnalysis.html +++ b/docs/api/module-CoalitionIntelligence_StatusAnalysis.html @@ -3,7 +3,6 @@ JSDoc: Module: CoalitionIntelligence/StatusAnalysis - diff --git a/docs/api/module-ContentGeneration_BreakingNews.html b/docs/api/module-ContentGeneration_BreakingNews.html index 1e9fe906412..2b514ab2459 100644 --- a/docs/api/module-ContentGeneration_BreakingNews.html +++ b/docs/api/module-ContentGeneration_BreakingNews.html @@ -3,7 +3,6 @@ JSDoc: Module: ContentGeneration/BreakingNews - diff --git a/docs/api/module-ContentGeneration_CommitteeAnalysis.html b/docs/api/module-ContentGeneration_CommitteeAnalysis.html index 94a6db78971..cbb49992503 100644 --- a/docs/api/module-ContentGeneration_CommitteeAnalysis.html +++ b/docs/api/module-ContentGeneration_CommitteeAnalysis.html @@ -3,7 +3,6 @@ JSDoc: Module: ContentGeneration/CommitteeAnalysis - diff --git a/docs/api/module-ContentGeneration_GovernmentPolicy.html b/docs/api/module-ContentGeneration_GovernmentPolicy.html index 6c34e02d197..e750fcaebe9 100644 --- a/docs/api/module-ContentGeneration_GovernmentPolicy.html +++ b/docs/api/module-ContentGeneration_GovernmentPolicy.html @@ -3,7 +3,6 @@ JSDoc: Module: ContentGeneration/GovernmentPolicy - diff --git a/docs/api/module-ContentGeneration_OppositionAnalysis.html b/docs/api/module-ContentGeneration_OppositionAnalysis.html index 20c7ed33b56..d2663158e3b 100644 --- a/docs/api/module-ContentGeneration_OppositionAnalysis.html +++ b/docs/api/module-ContentGeneration_OppositionAnalysis.html @@ -3,7 +3,6 @@ JSDoc: Module: ContentGeneration/OppositionAnalysis - diff --git a/docs/api/module-ContentGeneration_ProspectiveAnalysis.html b/docs/api/module-ContentGeneration_ProspectiveAnalysis.html index 8c4ec21f996..6b2aca42536 100644 --- a/docs/api/module-ContentGeneration_ProspectiveAnalysis.html +++ b/docs/api/module-ContentGeneration_ProspectiveAnalysis.html @@ -3,7 +3,6 @@ JSDoc: Module: ContentGeneration/ProspectiveAnalysis - diff --git a/docs/api/module-DashboardIntegration.html b/docs/api/module-DashboardIntegration.html index 1f9580ce639..1189aa7adac 100644 --- a/docs/api/module-DashboardIntegration.html +++ b/docs/api/module-DashboardIntegration.html @@ -3,7 +3,6 @@ JSDoc: Module: DashboardIntegration - diff --git a/docs/api/module-DataPipeline_CIADataLoader.html b/docs/api/module-DataPipeline_CIADataLoader.html index e70081977d7..df17e692aaa 100644 --- a/docs/api/module-DataPipeline_CIADataLoader.html +++ b/docs/api/module-DataPipeline_CIADataLoader.html @@ -3,7 +3,6 @@ JSDoc: Module: DataPipeline/CIADataLoader - diff --git a/docs/api/module-Dynamic%20News%20Index%20Generation%20-%20Multi-Language%20Article%20Aggregation.html b/docs/api/module-Dynamic%20News%20Index%20Generation%20-%20Multi-Language%20Article%20Aggregation.html index f93aa60adca..e4a76d4f4bd 100644 --- a/docs/api/module-Dynamic%20News%20Index%20Generation%20-%20Multi-Language%20Article%20Aggregation.html +++ b/docs/api/module-Dynamic%20News%20Index%20Generation%20-%20Multi-Language%20Article%20Aggregation.html @@ -3,7 +3,6 @@ JSDoc: Module: Dynamic News Index Generation - Multi-Language Article Aggregation - diff --git a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleCharts.html b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleCharts.html index 498ad0c461a..c78969ac2f4 100644 --- a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleCharts.html +++ b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleCharts.html @@ -3,7 +3,6 @@ JSDoc: Class: ElectionCycleCharts - diff --git a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDashboard.html b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDashboard.html index b4a53df557b..c179b8a9cd9 100644 --- a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDashboard.html +++ b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDashboard.html @@ -3,7 +3,6 @@ JSDoc: Class: ElectionCycleDashboard - diff --git a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDataManager.html b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDataManager.html index d063326cecf..d217b75fdc1 100644 --- a/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDataManager.html +++ b/docs/api/module-ElectionIntelligence_CycleAnalysis-ElectionCycleDataManager.html @@ -3,7 +3,6 @@ JSDoc: Class: ElectionCycleDataManager - diff --git a/docs/api/module-ElectionIntelligence_CycleAnalysis.html b/docs/api/module-ElectionIntelligence_CycleAnalysis.html index d0201058ef0..c22b41cf24f 100644 --- a/docs/api/module-ElectionIntelligence_CycleAnalysis.html +++ b/docs/api/module-ElectionIntelligence_CycleAnalysis.html @@ -3,7 +3,6 @@ JSDoc: Module: ElectionIntelligence/CycleAnalysis - diff --git a/docs/api/module-ElectionIntelligence_PreElectionMonitoring.html b/docs/api/module-ElectionIntelligence_PreElectionMonitoring.html index a0d5f6f5363..f6eba96bf49 100644 --- a/docs/api/module-ElectionIntelligence_PreElectionMonitoring.html +++ b/docs/api/module-ElectionIntelligence_PreElectionMonitoring.html @@ -3,7 +3,6 @@ JSDoc: Module: ElectionIntelligence/PreElectionMonitoring - diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-AccessibilityTable.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-AccessibilityTable.html index d0d2fd86f7a..e9746e38107 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-AccessibilityTable.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-AccessibilityTable.html @@ -3,7 +3,6 @@ JSDoc: Class: AccessibilityTable - diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataCache.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataCache.html index 44d08f9b322..818c941be1b 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataCache.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataCache.html @@ -3,7 +3,6 @@ JSDoc: Class: DataCache - diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataFetcher.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataFetcher.html index 44ef6c16db0..5fcfc6773d5 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataFetcher.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DataFetcher.html @@ -3,7 +3,6 @@ JSDoc: Class: DataFetcher - diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DecisionImpactChart.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DecisionImpactChart.html index f4a581d28ac..0439f8f6487 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DecisionImpactChart.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-DecisionImpactChart.html @@ -3,7 +3,6 @@ JSDoc: Class: DecisionImpactChart - diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-InfluenceChart.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-InfluenceChart.html index fea958a641b..2b615467840 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-InfluenceChart.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-InfluenceChart.html @@ -3,7 +3,6 @@ JSDoc: Class: InfluenceChart - diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-MinistryDashboard.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-MinistryDashboard.html index 2168e0bb8f9..04fa46d3937 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-MinistryDashboard.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-MinistryDashboard.html @@ -3,7 +3,6 @@ JSDoc: Class: MinistryDashboard - diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-ProductivityChart.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-ProductivityChart.html index 7ce7f5f1fe1..33a850babf2 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-ProductivityChart.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-ProductivityChart.html @@ -3,7 +3,6 @@ JSDoc: Class: ProductivityChart - diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-RiskHeatMap.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-RiskHeatMap.html index 3f95ec77b31..deae46a56a9 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis-RiskHeatMap.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis-RiskHeatMap.html @@ -3,7 +3,6 @@ JSDoc: Class: RiskHeatMap - diff --git a/docs/api/module-GovernmentIntelligence_MinistryAnalysis.html b/docs/api/module-GovernmentIntelligence_MinistryAnalysis.html index 98c0c84c336..316dc3175bb 100644 --- a/docs/api/module-GovernmentIntelligence_MinistryAnalysis.html +++ b/docs/api/module-GovernmentIntelligence_MinistryAnalysis.html @@ -3,7 +3,6 @@ JSDoc: Module: GovernmentIntelligence/MinistryAnalysis - diff --git a/docs/api/module-HTML%20Utilities%20-%20DOM%20Manipulation%20and%20XSS%20Prevention%20Framework.html b/docs/api/module-HTML%20Utilities%20-%20DOM%20Manipulation%20and%20XSS%20Prevention%20Framework.html index 8ab222efbf8..28d83ed76f0 100644 --- a/docs/api/module-HTML%20Utilities%20-%20DOM%20Manipulation%20and%20XSS%20Prevention%20Framework.html +++ b/docs/api/module-HTML%20Utilities%20-%20DOM%20Manipulation%20and%20XSS%20Prevention%20Framework.html @@ -3,7 +3,6 @@ JSDoc: Module: HTML Utilities - DOM Manipulation and XSS Prevention Framework - diff --git a/docs/api/module-IndividualIntelligence_PoliticianProfiling.html b/docs/api/module-IndividualIntelligence_PoliticianProfiling.html index 305f5931ac9..3346a2f621e 100644 --- a/docs/api/module-IndividualIntelligence_PoliticianProfiling.html +++ b/docs/api/module-IndividualIntelligence_PoliticianProfiling.html @@ -3,7 +3,6 @@ JSDoc: Module: IndividualIntelligence/PoliticianProfiling - diff --git a/docs/api/module-Infrastructure_Accessibility.html b/docs/api/module-Infrastructure_Accessibility.html index 90cd6db92d4..f8e483e50e3 100644 --- a/docs/api/module-Infrastructure_Accessibility.html +++ b/docs/api/module-Infrastructure_Accessibility.html @@ -3,7 +3,6 @@ JSDoc: Module: Infrastructure/Accessibility - diff --git a/docs/api/module-Infrastructure_TypeGeneration.html b/docs/api/module-Infrastructure_TypeGeneration.html index da4cec54b78..a35896d2e81 100644 --- a/docs/api/module-Infrastructure_TypeGeneration.html +++ b/docs/api/module-Infrastructure_TypeGeneration.html @@ -3,7 +3,6 @@ JSDoc: Module: Infrastructure/TypeGeneration - diff --git a/docs/api/module-Infrastructure_VisualEvidence.html b/docs/api/module-Infrastructure_VisualEvidence.html index c84e31ca7fd..67937f5ac7d 100644 --- a/docs/api/module-Infrastructure_VisualEvidence.html +++ b/docs/api/module-Infrastructure_VisualEvidence.html @@ -3,7 +3,6 @@ JSDoc: Module: Infrastructure/VisualEvidence - diff --git a/docs/api/module-Infrastructure_WorkflowOrchestration.WorkflowStateCoordinator.html b/docs/api/module-Infrastructure_WorkflowOrchestration.WorkflowStateCoordinator.html index 7a967523524..a184f651b6f 100644 --- a/docs/api/module-Infrastructure_WorkflowOrchestration.WorkflowStateCoordinator.html +++ b/docs/api/module-Infrastructure_WorkflowOrchestration.WorkflowStateCoordinator.html @@ -3,7 +3,6 @@ JSDoc: Class: WorkflowStateCoordinator - diff --git a/docs/api/module-Infrastructure_WorkflowOrchestration.html b/docs/api/module-Infrastructure_WorkflowOrchestration.html index e76924ad2f8..47052929790 100644 --- a/docs/api/module-Infrastructure_WorkflowOrchestration.html +++ b/docs/api/module-Infrastructure_WorkflowOrchestration.html @@ -3,7 +3,6 @@ JSDoc: Module: Infrastructure/WorkflowOrchestration - diff --git a/docs/api/module-Intelligence%20Operations_Article%20Template%20Generation.html b/docs/api/module-Intelligence%20Operations_Article%20Template%20Generation.html index 91d25c5c0ab..b3ba7eec0bf 100644 --- a/docs/api/module-Intelligence%20Operations_Article%20Template%20Generation.html +++ b/docs/api/module-Intelligence%20Operations_Article%20Template%20Generation.html @@ -3,7 +3,6 @@ JSDoc: Module: Intelligence Operations/Article Template Generation - diff --git a/docs/api/module-Intelligence%20Operations_Automated%20News%20Generation.html b/docs/api/module-Intelligence%20Operations_Automated%20News%20Generation.html index d652d443f54..4fa6f57edba 100644 --- a/docs/api/module-Intelligence%20Operations_Automated%20News%20Generation.html +++ b/docs/api/module-Intelligence%20Operations_Automated%20News%20Generation.html @@ -3,7 +3,6 @@ JSDoc: Module: Intelligence Operations/Automated News Generation - diff --git a/docs/api/module-Intelligence%20Operations_CIA%20Statistical%20Intelligence.html b/docs/api/module-Intelligence%20Operations_CIA%20Statistical%20Intelligence.html index a644047712e..29d821e2a2d 100644 --- a/docs/api/module-Intelligence%20Operations_CIA%20Statistical%20Intelligence.html +++ b/docs/api/module-Intelligence%20Operations_CIA%20Statistical%20Intelligence.html @@ -3,7 +3,6 @@ JSDoc: Module: Intelligence Operations/CIA Statistical Intelligence - diff --git a/docs/api/module-Intelligence%20Operations_Data%20Transformation%20Pipeline.html b/docs/api/module-Intelligence%20Operations_Data%20Transformation%20Pipeline.html index 506ab576b2d..61e17d3d418 100644 --- a/docs/api/module-Intelligence%20Operations_Data%20Transformation%20Pipeline.html +++ b/docs/api/module-Intelligence%20Operations_Data%20Transformation%20Pipeline.html @@ -3,7 +3,6 @@ JSDoc: Module: Intelligence Operations/Data Transformation Pipeline - diff --git a/docs/api/module-Intelligence%20Operations_Editorial%20Intelligence%20Framework.html b/docs/api/module-Intelligence%20Operations_Editorial%20Intelligence%20Framework.html index 0fbde6d6237..94241cc3cf0 100644 --- a/docs/api/module-Intelligence%20Operations_Editorial%20Intelligence%20Framework.html +++ b/docs/api/module-Intelligence%20Operations_Editorial%20Intelligence%20Framework.html @@ -3,7 +3,6 @@ JSDoc: Module: Intelligence Operations/Editorial Intelligence Framework - diff --git a/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.MCPClient.html b/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.MCPClient.html index 88f045a029c..e8d4d5b80cf 100644 --- a/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.MCPClient.html +++ b/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.MCPClient.html @@ -3,7 +3,6 @@ JSDoc: Class: MCPClient - diff --git a/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.html b/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.html index af692905dbf..474a5b1afd1 100644 --- a/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.html +++ b/docs/api/module-Intelligence%20Operations_MCP%20Intelligence%20Server%20Client.html @@ -3,7 +3,6 @@ JSDoc: Module: Intelligence Operations/MCP Intelligence Server Client - diff --git a/docs/api/module-Intelligence_Forecasting.html b/docs/api/module-Intelligence_Forecasting.html index cdc14192c12..b8224494624 100644 --- a/docs/api/module-Intelligence_Forecasting.html +++ b/docs/api/module-Intelligence_Forecasting.html @@ -3,7 +3,6 @@ JSDoc: Module: Intelligence/Forecasting - diff --git a/docs/api/module-Intelligence_Internationalization.html b/docs/api/module-Intelligence_Internationalization.html index 810878afe96..13e78c638af 100644 --- a/docs/api/module-Intelligence_Internationalization.html +++ b/docs/api/module-Intelligence_Internationalization.html @@ -3,7 +3,6 @@ JSDoc: Module: Intelligence/Internationalization - diff --git a/docs/api/module-Intelligence_Orchestration.html b/docs/api/module-Intelligence_Orchestration.html index ca365c3b2ff..f4b19b57e59 100644 --- a/docs/api/module-Intelligence_Orchestration.html +++ b/docs/api/module-Intelligence_Orchestration.html @@ -3,7 +3,6 @@ JSDoc: Module: Intelligence/Orchestration - diff --git a/docs/api/module-Intelligence_Visualization.html b/docs/api/module-Intelligence_Visualization.html index 3d877065da2..8b7a53f6cee 100644 --- a/docs/api/module-Intelligence_Visualization.html +++ b/docs/api/module-Intelligence_Visualization.html @@ -3,7 +3,6 @@ JSDoc: Module: Intelligence/Visualization - diff --git a/docs/api/module-Logger.html b/docs/api/module-Logger.html index cb1d9957881..58ba5ce4049 100644 --- a/docs/api/module-Logger.html +++ b/docs/api/module-Logger.html @@ -3,7 +3,6 @@ JSDoc: Module: Logger - diff --git a/docs/api/module-News%20Backport%20Generation%20-%20Historical%20Article%20Migration%20System.html b/docs/api/module-News%20Backport%20Generation%20-%20Historical%20Article%20Migration%20System.html index ea0b511bad2..6c0563ecb4d 100644 --- a/docs/api/module-News%20Backport%20Generation%20-%20Historical%20Article%20Migration%20System.html +++ b/docs/api/module-News%20Backport%20Generation%20-%20Historical%20Article%20Migration%20System.html @@ -3,7 +3,6 @@ JSDoc: Module: News Backport Generation - Historical Article Migration System - diff --git a/docs/api/module-OSINT_DataAcquisition.html b/docs/api/module-OSINT_DataAcquisition.html index 53995959783..a788d28e9b4 100644 --- a/docs/api/module-OSINT_DataAcquisition.html +++ b/docs/api/module-OSINT_DataAcquisition.html @@ -3,7 +3,6 @@ JSDoc: Module: OSINT/DataAcquisition - diff --git a/docs/api/module-Party%20Variants%20-%20Political%20Party%20Name%20Normalization%20Framework.html b/docs/api/module-Party%20Variants%20-%20Political%20Party%20Name%20Normalization%20Framework.html index 4584526fb98..d4c9bc196c3 100644 --- a/docs/api/module-Party%20Variants%20-%20Political%20Party%20Name%20Normalization%20Framework.html +++ b/docs/api/module-Party%20Variants%20-%20Political%20Party%20Name%20Normalization%20Framework.html @@ -3,7 +3,6 @@ JSDoc: Module: Party Variants - Political Party Name Normalization Framework - diff --git a/docs/api/module-PoliticalIntelligence_PartyAnalysis.html b/docs/api/module-PoliticalIntelligence_PartyAnalysis.html index 5334d40b4bd..78618e7499b 100644 --- a/docs/api/module-PoliticalIntelligence_PartyAnalysis.html +++ b/docs/api/module-PoliticalIntelligence_PartyAnalysis.html @@ -3,7 +3,6 @@ JSDoc: Module: PoliticalIntelligence/PartyAnalysis - diff --git a/docs/api/module-RiskAssessment_AnomalyDetection.html b/docs/api/module-RiskAssessment_AnomalyDetection.html index 1679b5a46ad..db1cd2be00c 100644 --- a/docs/api/module-RiskAssessment_AnomalyDetection.html +++ b/docs/api/module-RiskAssessment_AnomalyDetection.html @@ -3,7 +3,6 @@ JSDoc: Module: RiskAssessment/AnomalyDetection - diff --git a/docs/api/module-Sitemap%20Generation%20-%20Multi-Language%20SEO%20Infrastructure.html b/docs/api/module-Sitemap%20Generation%20-%20Multi-Language%20SEO%20Infrastructure.html index 1725bdfa4f9..4632d9fe19d 100644 --- a/docs/api/module-Sitemap%20Generation%20-%20Multi-Language%20SEO%20Infrastructure.html +++ b/docs/api/module-Sitemap%20Generation%20-%20Multi-Language%20SEO%20Infrastructure.html @@ -3,7 +3,6 @@ JSDoc: Module: Sitemap Generation - Multi-Language SEO Infrastructure - diff --git a/docs/api/module-Statistics%20Update%20from%20CIA%20Database%20-%20Automated%20Metrics%20Synchronization.html b/docs/api/module-Statistics%20Update%20from%20CIA%20Database%20-%20Automated%20Metrics%20Synchronization.html index 1e796143197..f9bf0b433c2 100644 --- a/docs/api/module-Statistics%20Update%20from%20CIA%20Database%20-%20Automated%20Metrics%20Synchronization.html +++ b/docs/api/module-Statistics%20Update%20from%20CIA%20Database%20-%20Automated%20Metrics%20Synchronization.html @@ -3,7 +3,6 @@ JSDoc: Module: Statistics Update from CIA Database - Automated Metrics Synchronization - diff --git a/docs/api/module-TemporalIntelligence_SeasonalAnalysis.html b/docs/api/module-TemporalIntelligence_SeasonalAnalysis.html index bca5528270b..f59d8bbdcdb 100644 --- a/docs/api/module-TemporalIntelligence_SeasonalAnalysis.html +++ b/docs/api/module-TemporalIntelligence_SeasonalAnalysis.html @@ -3,7 +3,6 @@ JSDoc: Module: TemporalIntelligence/SeasonalAnalysis - diff --git a/docs/api/module-UIUtilities_NavigationEnhancement.html b/docs/api/module-UIUtilities_NavigationEnhancement.html index 882fff6ebcb..d37443aef3d 100644 --- a/docs/api/module-UIUtilities_NavigationEnhancement.html +++ b/docs/api/module-UIUtilities_NavigationEnhancement.html @@ -3,7 +3,6 @@ JSDoc: Module: UIUtilities/NavigationEnhancement - diff --git a/docs/api/module-Validation_CrossReferenceTracking.html b/docs/api/module-Validation_CrossReferenceTracking.html index a6de4455a01..53bf3e9821e 100644 --- a/docs/api/module-Validation_CrossReferenceTracking.html +++ b/docs/api/module-Validation_CrossReferenceTracking.html @@ -3,7 +3,6 @@ JSDoc: Module: Validation/CrossReferenceTracking - diff --git a/docs/api/module-Validation_EveningAnalysis.html b/docs/api/module-Validation_EveningAnalysis.html index b5881d0b68f..ed2ac784af6 100644 --- a/docs/api/module-Validation_EveningAnalysis.html +++ b/docs/api/module-Validation_EveningAnalysis.html @@ -3,7 +3,6 @@ JSDoc: Module: Validation/EveningAnalysis - diff --git a/docs/api/module-Validation_LanguageMetadata.html b/docs/api/module-Validation_LanguageMetadata.html index 86ed527f862..35ea2b98440 100644 --- a/docs/api/module-Validation_LanguageMetadata.html +++ b/docs/api/module-Validation_LanguageMetadata.html @@ -3,7 +3,6 @@ JSDoc: Module: Validation/LanguageMetadata - diff --git a/docs/api/module-Validation_SchemaValidation.html b/docs/api/module-Validation_SchemaValidation.html index e2fdde32d9c..23f7f68925c 100644 --- a/docs/api/module-Validation_SchemaValidation.html +++ b/docs/api/module-Validation_SchemaValidation.html @@ -3,7 +3,6 @@ JSDoc: Module: Validation/SchemaValidation - diff --git a/docs/api/module-Validation_TranslationQuality.html b/docs/api/module-Validation_TranslationQuality.html index 67e9d5f8997..d3941380cdc 100644 --- a/docs/api/module-Validation_TranslationQuality.html +++ b/docs/api/module-Validation_TranslationQuality.html @@ -3,7 +3,6 @@ JSDoc: Module: Validation/TranslationQuality - diff --git a/docs/api/module-Validation_VisualRegression.html b/docs/api/module-Validation_VisualRegression.html index a45356a5fc1..34fa634e28b 100644 --- a/docs/api/module-Validation_VisualRegression.html +++ b/docs/api/module-Validation_VisualRegression.html @@ -3,7 +3,6 @@ JSDoc: Module: Validation/VisualRegression - diff --git a/docs/api/module-Vocabulary%20Extraction%20-%20Political%20Terminology%20Pattern%20Analysis.html b/docs/api/module-Vocabulary%20Extraction%20-%20Political%20Terminology%20Pattern%20Analysis.html index c6079636811..07a57b09382 100644 --- a/docs/api/module-Vocabulary%20Extraction%20-%20Political%20Terminology%20Pattern%20Analysis.html +++ b/docs/api/module-Vocabulary%20Extraction%20-%20Political%20Terminology%20Pattern%20Analysis.html @@ -3,7 +3,6 @@ JSDoc: Module: Vocabulary Extraction - Political Terminology Pattern Analysis - diff --git a/docs/api/scripts_article-quality-enhancer.js.html b/docs/api/scripts_article-quality-enhancer.js.html index 405bbf83fe5..8ab6271a50f 100644 --- a/docs/api/scripts_article-quality-enhancer.js.html +++ b/docs/api/scripts_article-quality-enhancer.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/article-quality-enhancer.js - diff --git a/docs/api/scripts_article-template.js.html b/docs/api/scripts_article-template.js.html index 2e77e5a44f4..7413f717814 100644 --- a/docs/api/scripts_article-template.js.html +++ b/docs/api/scripts_article-template.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/article-template.js - diff --git a/docs/api/scripts_back-to-top.js.html b/docs/api/scripts_back-to-top.js.html index 88d1659f1cf..60df830c187 100644 --- a/docs/api/scripts_back-to-top.js.html +++ b/docs/api/scripts_back-to-top.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/back-to-top.js - diff --git a/docs/api/scripts_check-cia-schema-updates.js.html b/docs/api/scripts_check-cia-schema-updates.js.html index 29043f955bb..afccb1c1c56 100644 --- a/docs/api/scripts_check-cia-schema-updates.js.html +++ b/docs/api/scripts_check-cia-schema-updates.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/check-cia-schema-updates.js - diff --git a/docs/api/scripts_coalition-dashboard.js.html b/docs/api/scripts_coalition-dashboard.js.html index 810d51d6e5d..582d3b32982 100644 --- a/docs/api/scripts_coalition-dashboard.js.html +++ b/docs/api/scripts_coalition-dashboard.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/coalition-dashboard.js - diff --git a/docs/api/scripts_committees-dashboard.js.html b/docs/api/scripts_committees-dashboard.js.html index e08da1207b2..074c5d1d8f2 100644 --- a/docs/api/scripts_committees-dashboard.js.html +++ b/docs/api/scripts_committees-dashboard.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/committees-dashboard.js - diff --git a/docs/api/scripts_data-transformers.js.html b/docs/api/scripts_data-transformers.js.html index 9b715ed0fe9..6549123df1e 100644 --- a/docs/api/scripts_data-transformers.js.html +++ b/docs/api/scripts_data-transformers.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/data-transformers.js - diff --git a/docs/api/scripts_editorial-pillars.js.html b/docs/api/scripts_editorial-pillars.js.html index 26227426469..cb1630ad113 100644 --- a/docs/api/scripts_editorial-pillars.js.html +++ b/docs/api/scripts_editorial-pillars.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/editorial-pillars.js - diff --git a/docs/api/scripts_extract-vocabulary.js.html b/docs/api/scripts_extract-vocabulary.js.html index 1d0565f0da9..d96badfe26c 100644 --- a/docs/api/scripts_extract-vocabulary.js.html +++ b/docs/api/scripts_extract-vocabulary.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/extract-vocabulary.js - diff --git a/docs/api/scripts_generate-news-backport.js.html b/docs/api/scripts_generate-news-backport.js.html index 715f360a671..8f14b69908f 100644 --- a/docs/api/scripts_generate-news-backport.js.html +++ b/docs/api/scripts_generate-news-backport.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/generate-news-backport.js - diff --git a/docs/api/scripts_generate-news-enhanced.js.html b/docs/api/scripts_generate-news-enhanced.js.html index 4ce62a8f29f..c5b8c21ae37 100644 --- a/docs/api/scripts_generate-news-enhanced.js.html +++ b/docs/api/scripts_generate-news-enhanced.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/generate-news-enhanced.js - diff --git a/docs/api/scripts_generate-news-indexes.js.html b/docs/api/scripts_generate-news-indexes.js.html index 172aa1807c6..fcb5b216f27 100644 --- a/docs/api/scripts_generate-news-indexes.js.html +++ b/docs/api/scripts_generate-news-indexes.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/generate-news-indexes.js - diff --git a/docs/api/scripts_generate-sitemap.js.html b/docs/api/scripts_generate-sitemap.js.html index bd3166bd012..e5ed37a254a 100644 --- a/docs/api/scripts_generate-sitemap.js.html +++ b/docs/api/scripts_generate-sitemap.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/generate-sitemap.js - diff --git a/docs/api/scripts_generate-types-from-cia-schemas.js.html b/docs/api/scripts_generate-types-from-cia-schemas.js.html index e1e48a9aada..c2fa9e6966b 100644 --- a/docs/api/scripts_generate-types-from-cia-schemas.js.html +++ b/docs/api/scripts_generate-types-from-cia-schemas.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/generate-types-from-cia-schemas.js - diff --git a/docs/api/scripts_html-utils.js.html b/docs/api/scripts_html-utils.js.html index a1fb2e53684..cd56ff86971 100644 --- a/docs/api/scripts_html-utils.js.html +++ b/docs/api/scripts_html-utils.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/html-utils.js - diff --git a/docs/api/scripts_load-cia-stats.js.html b/docs/api/scripts_load-cia-stats.js.html index 124af65a938..76d762f6f15 100644 --- a/docs/api/scripts_load-cia-stats.js.html +++ b/docs/api/scripts_load-cia-stats.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/load-cia-stats.js - diff --git a/docs/api/scripts_mcp-client.js.html b/docs/api/scripts_mcp-client.js.html index e39b5159341..715ef807dd4 100644 --- a/docs/api/scripts_mcp-client.js.html +++ b/docs/api/scripts_mcp-client.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/mcp-client.js - diff --git a/docs/api/scripts_news-types_breaking-news.js.html b/docs/api/scripts_news-types_breaking-news.js.html index 0cc13a63ec7..8f33eaf83e0 100644 --- a/docs/api/scripts_news-types_breaking-news.js.html +++ b/docs/api/scripts_news-types_breaking-news.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/news-types/breaking-news.js - diff --git a/docs/api/scripts_news-types_committee-reports.js.html b/docs/api/scripts_news-types_committee-reports.js.html index 05005aab8e0..0f903466a0e 100644 --- a/docs/api/scripts_news-types_committee-reports.js.html +++ b/docs/api/scripts_news-types_committee-reports.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/news-types/committee-reports.js - diff --git a/docs/api/scripts_news-types_motions.js.html b/docs/api/scripts_news-types_motions.js.html index d65808fa6b0..afc9b94a96a 100644 --- a/docs/api/scripts_news-types_motions.js.html +++ b/docs/api/scripts_news-types_motions.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/news-types/motions.js - diff --git a/docs/api/scripts_news-types_propositions.js.html b/docs/api/scripts_news-types_propositions.js.html index 32defcf6929..a14e31ce410 100644 --- a/docs/api/scripts_news-types_propositions.js.html +++ b/docs/api/scripts_news-types_propositions.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/news-types/propositions.js - diff --git a/docs/api/scripts_news-types_week-ahead.js.html b/docs/api/scripts_news-types_week-ahead.js.html index 2a9cfbc71e0..7beb75a7177 100644 --- a/docs/api/scripts_news-types_week-ahead.js.html +++ b/docs/api/scripts_news-types_week-ahead.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/news-types/week-ahead.js - diff --git a/docs/api/scripts_party-variants.js.html b/docs/api/scripts_party-variants.js.html index e648d3f2b43..89197ae11bf 100644 --- a/docs/api/scripts_party-variants.js.html +++ b/docs/api/scripts_party-variants.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/party-variants.js - diff --git a/docs/api/scripts_sync-cia-schemas.js.html b/docs/api/scripts_sync-cia-schemas.js.html index 4e8fbe8d3f1..bfd838a1869 100644 --- a/docs/api/scripts_sync-cia-schemas.js.html +++ b/docs/api/scripts_sync-cia-schemas.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/sync-cia-schemas.js - diff --git a/docs/api/scripts_take-screenshot.js.html b/docs/api/scripts_take-screenshot.js.html index 5f78f0b85f9..6aadbd59705 100644 --- a/docs/api/scripts_take-screenshot.js.html +++ b/docs/api/scripts_take-screenshot.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/take-screenshot.js - diff --git a/docs/api/scripts_update-stats-from-cia.js.html b/docs/api/scripts_update-stats-from-cia.js.html index fb883381497..4f48cd446d9 100644 --- a/docs/api/scripts_update-stats-from-cia.js.html +++ b/docs/api/scripts_update-stats-from-cia.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/update-stats-from-cia.js - diff --git a/docs/api/scripts_validate-against-cia-schemas.js.html b/docs/api/scripts_validate-against-cia-schemas.js.html index 72b7a3ecd57..faadb6e102e 100644 --- a/docs/api/scripts_validate-against-cia-schemas.js.html +++ b/docs/api/scripts_validate-against-cia-schemas.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/validate-against-cia-schemas.js - diff --git a/docs/api/scripts_validate-articles-playwright.js.html b/docs/api/scripts_validate-articles-playwright.js.html index 77eccd3165f..95618aa5c8e 100644 --- a/docs/api/scripts_validate-articles-playwright.js.html +++ b/docs/api/scripts_validate-articles-playwright.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/validate-articles-playwright.js - diff --git a/docs/api/scripts_validate-cross-references.js.html b/docs/api/scripts_validate-cross-references.js.html index 24104104004..f2c742f207f 100644 --- a/docs/api/scripts_validate-cross-references.js.html +++ b/docs/api/scripts_validate-cross-references.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/validate-cross-references.js - diff --git a/docs/api/scripts_validate-evening-analysis.js.html b/docs/api/scripts_validate-evening-analysis.js.html index 190c8fe97df..fc4b32581ac 100644 --- a/docs/api/scripts_validate-evening-analysis.js.html +++ b/docs/api/scripts_validate-evening-analysis.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/validate-evening-analysis.js - diff --git a/docs/api/scripts_validate-news-translations.js.html b/docs/api/scripts_validate-news-translations.js.html index f2eea4a11c4..bc39f2c5331 100644 --- a/docs/api/scripts_validate-news-translations.js.html +++ b/docs/api/scripts_validate-news-translations.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/validate-news-translations.js - diff --git a/docs/api/scripts_validate-translations.js.html b/docs/api/scripts_validate-translations.js.html index 5194bf1c09a..64c1cbd3e39 100644 --- a/docs/api/scripts_validate-translations.js.html +++ b/docs/api/scripts_validate-translations.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/validate-translations.js - diff --git a/docs/api/scripts_workflow-state-coordinator.js.html b/docs/api/scripts_workflow-state-coordinator.js.html index b7869ab07bb..17e3272bf2a 100644 --- a/docs/api/scripts_workflow-state-coordinator.js.html +++ b/docs/api/scripts_workflow-state-coordinator.js.html @@ -3,7 +3,6 @@ JSDoc: Source: scripts/workflow-state-coordinator.js - diff --git a/scripts/fix-docs-meta-description.ts b/scripts/fix-docs-meta-description.ts deleted file mode 100644 index 1ffad08b07b..00000000000 --- a/scripts/fix-docs-meta-description.ts +++ /dev/null @@ -1,210 +0,0 @@ -#!/usr/bin/env npx tsx -/** - * Add a `` to generated API-documentation pages - * that are missing one. - * - * Background - * ---------- - * The published `docs/api/` directory is a mix of current TypeDoc output - * (every page already carries a ``) and a set of - * **stale, orphaned legacy JSDoc pages** (`JSDoc: …`) that - * predate the TypeDoc migration. The JSDoc pages have no description tag, - * are not linked from the current TypeDoc navigation, yet are committed and - * shipped verbatim by the production deploy (`deploy-s3` copies the - * repository `docs/` directory straight into `dist/docs/`). SEO crawlers - * therefore report "The description is missing in the head section of the - * page" for those pages. - * - * This post-processor closes that gap: for every `*.html` page under the - * target root(s) whose `` lacks a ``, it - * derives a concise, page-specific description from the document `` - * and inserts the tag immediately after the closing ``. - * - * Behaviour - * --------- - * - **Idempotent** — pages that already declare a description are left - * untouched, so it is safe to run repeatedly (e.g. as a deploy safety net). - * - **Non-destructive** — it only *adds* a single `` tag; no existing - * markup is modified or removed. - * - Works on both pretty-printed (JSDoc) and minified (TypeDoc) markup. - * - * Usage: - * npx tsx scripts/fix-docs-meta-description.ts # dry-run, scans docs/api - * npx tsx scripts/fix-docs-meta-description.ts --write # apply fixes to docs/api - * npx tsx scripts/fix-docs-meta-description.ts --write docs/api dist/docs/api - * - * @author Hack23 AB (Quality Engineering) - * @license Apache-2.0 - */ - -import * as fs from 'node:fs'; -import * as path from 'node:path'; - -const ROOT = path.resolve(import.meta.dirname, '..'); -const WRITE = process.argv.includes('--write'); - -/** Project / platform name used in the generated descriptions. */ -const PLATFORM = 'Riksdagsmonitor Intelligence Platform'; - -/** - * Positional CLI arguments (everything that is not a flag) are treated as - * the documentation root directories to scan. Defaults to `docs/api`. - */ -const TARGET_ROOTS = process.argv - .slice(2) - .filter((arg) => !arg.startsWith('--')); -if (TARGET_ROOTS.length === 0) TARGET_ROOTS.push('docs/api'); - -/** Recursively collect all `.html` files under `dir`. */ -function collectHtmlFiles(dir: string): string[] { - const results: string[] = []; - if (!fs.existsSync(dir)) return results; - for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, entry.name); - if (entry.isDirectory()) { - results.push(...collectHtmlFiles(full)); - } else if (entry.name.endsWith('.html')) { - results.push(full); - } - } - return results; -} - -/** Escape a string for safe use inside a double-quoted HTML attribute. */ -function escapeAttr(value: string): string { - return value - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(//g, '>'); -} - -/** Decode the handful of HTML entities that show up in `` text. */ -function decodeEntities(value: string): string { - return value - .replace(/&/g, '&') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/"/g, '"') - .replace(/'/g, "'") - .replace(/ /g, ' '); -} - -/** - * Derive a concise, human-readable meta description from a page `<title>`. - * - * Recognises the legacy JSDoc title shapes (`JSDoc: Source: …`, - * `JSDoc: Module: …`, `JSDoc: Class: …`, `JSDoc: Namespace: …`, - * `JSDoc: Global`) and falls back to a generic description built from the - * title text for anything else. - */ -export function deriveDescription(rawTitle: string): string { - const title = decodeEntities(rawTitle).trim(); - - // Strip a leading "JSDoc:" label if present. - const jsdoc = title.replace(/^JSDoc:\s*/i, ''); - - const labelled = /^(Source|Module|Class|Namespace|Interface|Mixin|Tutorial|Event):\s*(.+)$/i.exec( - jsdoc, - ); - if (labelled) { - const kind = labelled[1].toLowerCase(); - const subject = labelled[2].trim(); - if (kind === 'source') { - return `Annotated source code for ${subject} in the ${PLATFORM} API documentation.`; - } - return `API reference for the ${subject} ${kind} in the ${PLATFORM} API documentation.`; - } - - if (/^Global$/i.test(jsdoc)) { - return `Global members reference for the ${PLATFORM} API documentation.`; - } - - // Generic fallback: use the meaningful part of the title (drop a trailing - // site-name / version suffix such as " | Riksdagsmonitor … - v0.9.40"). - const subject = (jsdoc.split('|')[0] ?? jsdoc).trim() || PLATFORM; - if (new RegExp(`${PLATFORM}`, 'i').test(subject)) { - return `API documentation for the ${PLATFORM}.`; - } - return `${subject} — ${PLATFORM} API documentation.`; -} - -interface FixResult { - file: string; - description: string; -} - -/** - * Inject a `<meta name="description">` into a single file when one is - * missing from its `<head>`. Returns the fix metadata, or `null` if no - * change was needed. - */ -export function injectDescription(html: string): { html: string; description: string } | null { - const headEndIdx = html.search(/<\/head>/i); - const head = headEndIdx === -1 ? html : html.slice(0, headEndIdx); - - // Already has a description meta in the head → nothing to do. - if (/<meta\s+[^>]*name=["']description["']/i.test(head)) return null; - - const titleMatch = /<title>([\s\S]*?)<\/title>/i.exec(html); - if (!titleMatch) return null; - - const description = deriveDescription(titleMatch[1]); - const metaTag = `<meta name="description" content="${escapeAttr(description)}">`; - - // Insert immediately after the closing , mirroring the title's - // own indentation when the markup is pretty-printed. - const titleEndIdx = titleMatch.index + titleMatch[0].length; - const lineStart = html.lastIndexOf('\n', titleMatch.index) + 1; - const indent = /^(\s*)/.exec(html.slice(lineStart, titleMatch.index))?.[1] ?? ''; - const afterTitle = html.slice(titleEndIdx); - const insertion = /^\s*\n/.test(afterTitle) || afterTitle.startsWith('\n') - ? `\n${indent}${metaTag}` - : metaTag; - - const newHtml = html.slice(0, titleEndIdx) + insertion + afterTitle; - return { html: newHtml, description }; -} - -function fixFile(filePath: string): FixResult | null { - const html = fs.readFileSync(filePath, 'utf8'); - const result = injectDescription(html); - if (!result) return null; - if (WRITE) fs.writeFileSync(filePath, result.html, 'utf8'); - return { file: path.relative(ROOT, filePath), description: result.description }; -} - -function main(): void { - const htmlFiles = TARGET_ROOTS.flatMap((root) => - collectHtmlFiles(path.isAbsolute(root) ? root : path.join(ROOT, root)), - ); - - console.log(`Scanning ${htmlFiles.length} HTML file(s) under: ${TARGET_ROOTS.join(', ')}`); - console.log(`Mode: ${WRITE ? 'WRITE (applying fixes)' : 'DRY-RUN (use --write to apply)'}`); - - const results: FixResult[] = []; - for (const file of htmlFiles) { - const result = fixFile(file); - if (result) results.push(result); - } - - if (results.length === 0) { - console.log('\n✅ All scanned pages already declare a .'); - return; - } - - console.log( - `\n${WRITE ? '✅ Added' : '⚠️ Would add'} a meta description to ${results.length} page(s):`, - ); - for (const r of results.slice(0, 20)) { - console.log(` • ${r.file}`); - } - if (results.length > 20) console.log(` … and ${results.length - 20} more`); - - if (!WRITE) console.log('\nRun with --write to apply fixes.'); -} - -// Only run the CLI when executed directly (not when imported by tests). -if (process.argv[1] && path.resolve(process.argv[1]) === path.resolve(import.meta.filename)) { - main(); -} diff --git a/scripts/render-lib/article-seo.ts b/scripts/render-lib/article-seo.ts index ff4fac43c95..a00f8173179 100644 --- a/scripts/render-lib/article-seo.ts +++ b/scripts/render-lib/article-seo.ts @@ -655,7 +655,19 @@ export function buildSeoTitle(input: ArticleSeoMetadataInput): string { export function buildSeoDescription(input: ArticleSeoMetadataInput): string { const base = stripDescriptionMarkup(input.description); const { hardMax } = descriptionWindowForLanguage(input.lang); - if (base.length === 0) return base; + if (base.length === 0) { + // Empty / missing `description` front-matter — synthesise a non-empty, + // story-relevant SERP description so the page never ships + // `` (flagged "description missing" + // by SEO crawlers). Mirror the empty-title cascade in `buildSeoTitle`: + // reuse the executive-brief H1 (already localized and story-specific), + // falling back to the localized article-type label when the title is + // also empty. Both inputs are already in the page's own language, so + // no EN tokens leak under a non-EN ``. + const synthesised = + collapseWhitespace(stripEmptyBrackets(input.title)) || input.articleTypeLabel; + return truncateWithinBudget(synthesised, hardMax); + } return truncateWithinBudget(base, hardMax); } diff --git a/scripts/render-lib/chrome/head.ts b/scripts/render-lib/chrome/head.ts index 7dc3fbc7bce..70b42060eeb 100644 --- a/scripts/render-lib/chrome/head.ts +++ b/scripts/render-lib/chrome/head.ts @@ -103,6 +103,20 @@ export function renderChromeHead(opts: ChromeOptions): string { const published = opts.publishedIso ?? new Date().toISOString(); const modified = opts.modifiedIso ?? published; + // Defence-in-depth SEO guarantee: every page that flows through the + // shared chrome MUST ship a non-empty `` (and + // the mirrored `og:`/`twitter:` description). A blank or whitespace-only + // `opts.description` — e.g. an article with empty front-matter or a + // news-index whose `subtitle` is missing for a locale — would otherwise + // emit `content=""`, which crawlers report as "description missing". + // Fall back to the page title so the tag is always populated and + // relevant; the title is itself synthesised non-empty upstream + // (see `buildSeoTitle`). + const description = + opts.description && opts.description.trim().length > 0 + ? opts.description + : opts.title; + const autoJsonLd: unknown[] = []; if (opts.faqItems && opts.faqItems.length >= 2) { autoJsonLd.push({ @@ -188,7 +202,7 @@ export function renderChromeHead(opts: ChromeOptions): string { ${escapedBrandedTitle} - + @@ -217,7 +231,7 @@ ${pagerLinksHtml} - + ${alternateLocalesHtml} @@ -232,7 +246,7 @@ ${articleMetaBlock} - + diff --git a/tests/chrome-seo-features.test.ts b/tests/chrome-seo-features.test.ts index 9945356817e..5bda4647be1 100644 --- a/tests/chrome-seo-features.test.ts +++ b/tests/chrome-seo-features.test.ts @@ -50,6 +50,52 @@ describe('chrome.ts — FAQPage auto-emission', () => { }); }); +describe('chrome.ts — meta description never empty (SEO guard)', () => { + it('falls back to the page title when description is an empty string', () => { + const chrome = buildChrome({ + lang: 'en', + title: 'Riksdag Advances Counter-Drone Defence Package', + description: '', + canonicalPath: 'news/breaking.html', + }); + expect(chrome.head).toContain( + '', + ); + expect(chrome.head).not.toContain(''); + }); + + it('falls back to the page title when description is whitespace only', () => { + const chrome = buildChrome({ + lang: 'sv', + title: 'Riksdagen samlas', + description: ' ', + canonicalPath: 'news/index_sv.html', + ogType: 'website', + }); + expect(chrome.head).toContain( + '', + ); + expect(chrome.head).toContain( + '', + ); + expect(chrome.head).toContain( + '', + ); + }); + + it('keeps a supplied non-empty description unchanged', () => { + const chrome = buildChrome({ + lang: 'en', + title: 'Test', + description: 'A real, descriptive SERP summary.', + canonicalPath: 'test.html', + }); + expect(chrome.head).toContain( + '', + ); + }); +}); + describe('chrome.ts — WebPage speakable merge', () => { it('merges speakable into an existing WebPage node without duplication', () => { const existingWebPage = { diff --git a/tests/i18n-fallback-all-languages.test.ts b/tests/i18n-fallback-all-languages.test.ts index 074560491da..14135c491fb 100644 --- a/tests/i18n-fallback-all-languages.test.ts +++ b/tests/i18n-fallback-all-languages.test.ts @@ -322,7 +322,7 @@ describe('buildSeoDescription — all 14 languages respect budgets', () => { expect(desc.length, `${lang} description empty`).toBeGreaterThan(0); }); - it(`${lang}: returns empty string for empty description (fallback-safe)`, () => { + it(`${lang}: synthesises a non-empty fallback from the title for an empty description`, () => { const desc = buildSeoDescription({ title: SAMPLE_TITLES[lang], description: '', @@ -331,7 +331,10 @@ describe('buildSeoDescription — all 14 languages respect budgets', () => { articleTypeLabel: articleTypeLabel('propositions', lang, 'Propositions'), articleTypeId: 'propositions', }); - expect(desc).toBe(''); + // Empty description must never ship `content=""` — fall back to the + // story title (verbatim here as the sample titles fit every budget). + expect(desc.length, `${lang} description empty`).toBeGreaterThan(0); + expect(desc).toBe(SAMPLE_TITLES[lang]); }); } diff --git a/tests/render-lib.test.ts b/tests/render-lib.test.ts index a1ba1cdd2b0..bc3f449bcee 100644 --- a/tests/render-lib.test.ts +++ b/tests/render-lib.test.ts @@ -725,7 +725,7 @@ describe('render-lib — article SEO metadata', () => { expect(de.keywords).not.toContain('political intelligence'); }); - it('cleans malformed HTML fragments without synthesizing a fixed meta description', () => { + it('cleans malformed HTML fragments and falls back to the story title instead of an empty meta description', () => { const seo = buildArticleSeoMetadata({ title: 'Riksdagen granskar vårbudgeten', description: '
', @@ -736,10 +736,17 @@ describe('render-lib — article SEO metadata', () => { lang: 'sv', }); + // The malformed fragment strips to empty; rather than ship + // `` (flagged "description + // missing" by SEO crawlers) the builder now synthesises a non-empty, + // story-specific description from the article H1 — never a fixed + // boilerplate string and never the article-type label when a title + // is present. expect(seo.description).not.toContain(' { + const result = buildSeoDescription({ + title: 'Sweden Passes Counter-Drone Defence Package', + description: '', + lang: 'en', + date: '2026-04-03', + articleTypeLabel: 'Breaking News', + articleTypeId: 'breaking', + }); + expect(result.length).toBeGreaterThan(0); + expect(result).toContain('Sweden Passes Counter-Drone Defence Package'); + }); + + it('synthesises from the localized article-type label when both description and title are empty', () => { + const result = buildSeoDescription({ + title: ' ', + description: ' ', + lang: 'sv', + date: '2026-04-03', + articleTypeLabel: 'Lagförslag', + articleTypeId: 'propositions', + }); + expect(result.length).toBeGreaterThan(0); + expect(result).toBe('Lagförslag'); + }); }); From 526e308eae52d2f2ed72ff36ef97c110af31c8c2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 29 May 2026 21:04:24 +0000 Subject: [PATCH 3/3] Fix SEO meta descriptions on listed legacy pages (truncate/strip to SERP budget) Co-authored-by: pethers <1726836+pethers@users.noreply.github.com> --- index_ja.html | 2 +- index_ko.html | 2 +- news/2026-02-18-evening-analysis-zh.html | 6 +++--- news/2026-02-21-ai-strategy-nl.html | 6 +++--- news/2026-03-03-ai-facial-recognition-police-en.html | 2 +- news/2026-04-03-breaking-1416-en.html | 4 ++-- news/2026-04-17-government-propositions-fr.html | 6 +++--- news/2026-04-21-breaking-interpellationssvar-en.html | 2 +- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/index_ja.html b/index_ja.html index 2856c7c28fc..af84c85c7b1 100644 --- a/index_ja.html +++ b/index_ja.html @@ -9,7 +9,7 @@ - + diff --git a/index_ko.html b/index_ko.html index d8197dac261..51b36a3b70a 100644 --- a/index_ko.html +++ b/index_ko.html @@ -9,7 +9,7 @@ - + diff --git a/news/2026-02-18-evening-analysis-zh.html b/news/2026-02-18-evening-analysis-zh.html index d67314ef364..5b1b33306fc 100644 --- a/news/2026-02-18-evening-analysis-zh.html +++ b/news/2026-02-18-evening-analysis-zh.html @@ -4,14 +4,14 @@ 瑞典外交政策宣言显示对乌克兰承诺加深,安全议程扩展 — Riksdagsmonitor - + - + @@ -42,7 +42,7 @@ - + diff --git a/news/2026-02-21-ai-strategy-nl.html b/news/2026-02-21-ai-strategy-nl.html index 650110e0814..e94041d2f69 100644 --- a/news/2026-02-21-ai-strategy-nl.html +++ b/news/2026-02-21-ai-strategy-nl.html @@ -4,14 +4,14 @@ Zweden onthult eerste nationale AI-strategie en mikt op wereldwijde top tien — vicepremier Busch in New Delhi - + - + @@ -42,7 +42,7 @@ - + diff --git a/news/2026-03-03-ai-facial-recognition-police-en.html b/news/2026-03-03-ai-facial-recognition-police-en.html index a79fd35fa43..2d71939e43d 100644 --- a/news/2026-03-03-ai-facial-recognition-police-en.html +++ b/news/2026-03-03-ai-facial-recognition-police-en.html @@ -4,7 +4,7 @@ Sweden Proposes Real-Time AI Facial Recognition for Police - + diff --git a/news/2026-04-03-breaking-1416-en.html b/news/2026-04-03-breaking-1416-en.html index ef30306acf9..4a14efde836 100644 --- a/news/2026-04-03-breaking-1416-en.html +++ b/news/2026-04-03-breaking-1416-en.html @@ -5,14 +5,14 @@ Sweden Commits SEK 8.7 Billion to GUTE II Anti-Drone Defense as NATO Member - + - + diff --git a/news/2026-04-17-government-propositions-fr.html b/news/2026-04-17-government-propositions-fr.html index eb0c860b3dc..a437857470c 100644 --- a/news/2026-04-17-government-propositions-fr.html +++ b/news/2026-04-17-government-propositions-fr.html @@ -5,13 +5,13 @@ La Suède durcit les règles pour les jeunes délinquants et rejoint les — Riksdagsmonitor - + - + @@ -41,7 +41,7 @@ - + diff --git a/news/2026-04-21-breaking-interpellationssvar-en.html b/news/2026-04-21-breaking-interpellationssvar-en.html index 54323f2e45b..22cc5322c5d 100644 --- a/news/2026-04-21-breaking-interpellationssvar-en.html +++ b/news/2026-04-21-breaking-interpellationssvar-en.html @@ -5,7 +5,7 @@ Breaking: Sweden's Finance Committee Approves Fuel Tax Cut in Extra Budget — FiU48 Passes - +