riksdagsmonitor 0.8.12 → 0.8.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (779) hide show
  1. package/dist/lib/cia/dashboard-init.d.ts +26 -0
  2. package/dist/lib/cia/dashboard-init.d.ts.map +1 -0
  3. package/dist/lib/cia/dashboard-init.js +108 -0
  4. package/dist/lib/cia/dashboard-init.js.map +1 -0
  5. package/dist/lib/cia/data-loader.d.ts +408 -0
  6. package/dist/lib/cia/data-loader.d.ts.map +1 -0
  7. package/dist/lib/cia/data-loader.js +867 -0
  8. package/dist/lib/cia/data-loader.js.map +1 -0
  9. package/dist/lib/cia/election-predictions.d.ts +78 -0
  10. package/dist/lib/cia/election-predictions.d.ts.map +1 -0
  11. package/dist/lib/cia/election-predictions.js +259 -0
  12. package/dist/lib/cia/election-predictions.js.map +1 -0
  13. package/dist/lib/cia/i18n-translations.d.ts +111 -0
  14. package/dist/lib/cia/i18n-translations.d.ts.map +1 -0
  15. package/dist/lib/cia/i18n-translations.js +619 -0
  16. package/dist/lib/cia/i18n-translations.js.map +1 -0
  17. package/dist/lib/cia/visualizations.d.ts +64 -0
  18. package/dist/lib/cia/visualizations.d.ts.map +1 -0
  19. package/dist/lib/cia/visualizations.js +662 -0
  20. package/dist/lib/cia/visualizations.js.map +1 -0
  21. package/dist/lib/dashboards/anomaly-detection.d.ts +44 -0
  22. package/dist/lib/dashboards/anomaly-detection.d.ts.map +1 -0
  23. package/dist/lib/dashboards/anomaly-detection.js +1017 -0
  24. package/dist/lib/dashboards/anomaly-detection.js.map +1 -0
  25. package/dist/lib/dashboards/coalition-dashboard.d.ts +36 -0
  26. package/dist/lib/dashboards/coalition-dashboard.d.ts.map +1 -0
  27. package/dist/lib/dashboards/coalition-dashboard.js +629 -0
  28. package/dist/lib/dashboards/coalition-dashboard.js.map +1 -0
  29. package/dist/lib/dashboards/coalition-loader.d.ts +43 -0
  30. package/dist/lib/dashboards/coalition-loader.d.ts.map +1 -0
  31. package/dist/lib/dashboards/coalition-loader.js +665 -0
  32. package/dist/lib/dashboards/coalition-loader.js.map +1 -0
  33. package/dist/lib/dashboards/committees-dashboard.d.ts +23 -0
  34. package/dist/lib/dashboards/committees-dashboard.d.ts.map +1 -0
  35. package/dist/lib/dashboards/committees-dashboard.js +886 -0
  36. package/dist/lib/dashboards/committees-dashboard.js.map +1 -0
  37. package/dist/lib/dashboards/election-cycle.d.ts +62 -0
  38. package/dist/lib/dashboards/election-cycle.d.ts.map +1 -0
  39. package/dist/lib/dashboards/election-cycle.js +484 -0
  40. package/dist/lib/dashboards/election-cycle.js.map +1 -0
  41. package/dist/lib/dashboards/ministry-dashboard.d.ts +46 -0
  42. package/dist/lib/dashboards/ministry-dashboard.d.ts.map +1 -0
  43. package/dist/lib/dashboards/ministry-dashboard.js +1114 -0
  44. package/dist/lib/dashboards/ministry-dashboard.js.map +1 -0
  45. package/dist/lib/dashboards/party-dashboard.d.ts +56 -0
  46. package/dist/lib/dashboards/party-dashboard.d.ts.map +1 -0
  47. package/dist/lib/dashboards/party-dashboard.js +981 -0
  48. package/dist/lib/dashboards/party-dashboard.js.map +1 -0
  49. package/dist/lib/dashboards/politician-dashboard.d.ts +41 -0
  50. package/dist/lib/dashboards/politician-dashboard.d.ts.map +1 -0
  51. package/dist/lib/dashboards/politician-dashboard.js +611 -0
  52. package/dist/lib/dashboards/politician-dashboard.js.map +1 -0
  53. package/dist/lib/dashboards/pre-election.d.ts +64 -0
  54. package/dist/lib/dashboards/pre-election.d.ts.map +1 -0
  55. package/dist/lib/dashboards/pre-election.js +604 -0
  56. package/dist/lib/dashboards/pre-election.js.map +1 -0
  57. package/dist/lib/dashboards/risk-dashboard.d.ts +37 -0
  58. package/dist/lib/dashboards/risk-dashboard.d.ts.map +1 -0
  59. package/dist/lib/dashboards/risk-dashboard.js +863 -0
  60. package/dist/lib/dashboards/risk-dashboard.js.map +1 -0
  61. package/dist/lib/dashboards/seasonal-patterns.d.ts +24 -0
  62. package/dist/lib/dashboards/seasonal-patterns.d.ts.map +1 -0
  63. package/dist/lib/dashboards/seasonal-patterns.js +535 -0
  64. package/dist/lib/dashboards/seasonal-patterns.js.map +1 -0
  65. package/dist/lib/dashboards/stats-loader.d.ts +35 -0
  66. package/dist/lib/dashboards/stats-loader.d.ts.map +1 -0
  67. package/dist/lib/dashboards/stats-loader.js +145 -0
  68. package/dist/lib/dashboards/stats-loader.js.map +1 -0
  69. package/dist/lib/shared/chart-factory.d.ts.map +1 -0
  70. package/dist/lib/shared/chart-factory.js.map +1 -0
  71. package/dist/lib/shared/data-loader.d.ts.map +1 -0
  72. package/dist/lib/shared/data-loader.js.map +1 -0
  73. package/dist/lib/shared/dom-utils.d.ts.map +1 -0
  74. package/dist/lib/shared/dom-utils.js.map +1 -0
  75. package/dist/lib/shared/error-boundary.d.ts.map +1 -0
  76. package/dist/lib/shared/error-boundary.js.map +1 -0
  77. package/dist/lib/shared/fallback-ui.d.ts.map +1 -0
  78. package/dist/lib/shared/fallback-ui.js.map +1 -0
  79. package/dist/lib/shared/index.d.ts.map +1 -0
  80. package/dist/lib/shared/index.js.map +1 -0
  81. package/dist/lib/shared/logger.d.ts.map +1 -0
  82. package/dist/lib/shared/logger.js.map +1 -0
  83. package/dist/lib/shared/register-globals.d.ts +14 -0
  84. package/dist/lib/shared/register-globals.d.ts.map +1 -0
  85. package/dist/lib/shared/register-globals.js +21 -0
  86. package/dist/lib/shared/register-globals.js.map +1 -0
  87. package/dist/lib/shared/theme.d.ts.map +1 -0
  88. package/dist/lib/shared/theme.js.map +1 -0
  89. package/dist/lib/shared/types.d.ts.map +1 -0
  90. package/dist/lib/shared/types.js.map +1 -0
  91. package/dist/lib/ui/back-to-top.d.ts +13 -0
  92. package/dist/lib/ui/back-to-top.d.ts.map +1 -0
  93. package/dist/lib/ui/back-to-top.js +48 -0
  94. package/dist/lib/ui/back-to-top.js.map +1 -0
  95. package/dist/scripts/ai-analysis/coalition-detector.d.ts +28 -0
  96. package/dist/scripts/ai-analysis/coalition-detector.d.ts.map +1 -0
  97. package/dist/scripts/ai-analysis/coalition-detector.js +242 -0
  98. package/dist/scripts/ai-analysis/coalition-detector.js.map +1 -0
  99. package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts +73 -0
  100. package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts.map +1 -0
  101. package/dist/scripts/ai-analysis/dashboard-analyzer.js +511 -0
  102. package/dist/scripts/ai-analysis/dashboard-analyzer.js.map +1 -0
  103. package/dist/scripts/ai-analysis/document-analyzer.d.ts +196 -0
  104. package/dist/scripts/ai-analysis/document-analyzer.d.ts.map +1 -0
  105. package/dist/scripts/ai-analysis/document-analyzer.js +1001 -0
  106. package/dist/scripts/ai-analysis/document-analyzer.js.map +1 -0
  107. package/dist/scripts/ai-analysis/domains/index.d.ts +15 -0
  108. package/dist/scripts/ai-analysis/domains/index.d.ts.map +1 -0
  109. package/dist/scripts/ai-analysis/domains/index.js +494 -0
  110. package/dist/scripts/ai-analysis/domains/index.js.map +1 -0
  111. package/dist/scripts/ai-analysis/helpers.d.ts +43 -0
  112. package/dist/scripts/ai-analysis/helpers.d.ts.map +1 -0
  113. package/dist/scripts/ai-analysis/helpers.js +79 -0
  114. package/dist/scripts/ai-analysis/helpers.js.map +1 -0
  115. package/dist/scripts/ai-analysis/index.d.ts +15 -0
  116. package/dist/scripts/ai-analysis/index.d.ts.map +1 -0
  117. package/dist/scripts/ai-analysis/index.js +14 -0
  118. package/dist/scripts/ai-analysis/index.js.map +1 -0
  119. package/dist/scripts/ai-analysis/pipeline.d.ts +41 -0
  120. package/dist/scripts/ai-analysis/pipeline.d.ts.map +1 -0
  121. package/dist/scripts/ai-analysis/pipeline.js +208 -0
  122. package/dist/scripts/ai-analysis/pipeline.js.map +1 -0
  123. package/dist/scripts/ai-analysis/political-significance.d.ts +63 -0
  124. package/dist/scripts/ai-analysis/political-significance.d.ts.map +1 -0
  125. package/dist/scripts/ai-analysis/political-significance.js +227 -0
  126. package/dist/scripts/ai-analysis/political-significance.js.map +1 -0
  127. package/dist/scripts/ai-analysis/quality-assessor.d.ts +104 -0
  128. package/dist/scripts/ai-analysis/quality-assessor.d.ts.map +1 -0
  129. package/dist/scripts/ai-analysis/quality-assessor.js +554 -0
  130. package/dist/scripts/ai-analysis/quality-assessor.js.map +1 -0
  131. package/dist/scripts/ai-analysis/swot/index.d.ts +56 -0
  132. package/dist/scripts/ai-analysis/swot/index.d.ts.map +1 -0
  133. package/dist/scripts/ai-analysis/swot/index.js +360 -0
  134. package/dist/scripts/ai-analysis/swot/index.js.map +1 -0
  135. package/dist/scripts/ai-analysis/swot/placeholders.d.ts +30 -0
  136. package/dist/scripts/ai-analysis/swot/placeholders.d.ts.map +1 -0
  137. package/dist/scripts/ai-analysis/swot/placeholders.js +381 -0
  138. package/dist/scripts/ai-analysis/swot/placeholders.js.map +1 -0
  139. package/dist/scripts/ai-analysis/types.d.ts +333 -0
  140. package/dist/scripts/ai-analysis/types.d.ts.map +1 -0
  141. package/dist/scripts/ai-analysis/types.js +19 -0
  142. package/dist/scripts/ai-analysis/types.js.map +1 -0
  143. package/dist/scripts/ai-analysis/visualisation/index.d.ts +15 -0
  144. package/dist/scripts/ai-analysis/visualisation/index.d.ts.map +1 -0
  145. package/dist/scripts/ai-analysis/visualisation/index.js +179 -0
  146. package/dist/scripts/ai-analysis/visualisation/index.js.map +1 -0
  147. package/dist/scripts/analysis-framework/cross-reference.d.ts +35 -0
  148. package/dist/scripts/analysis-framework/cross-reference.d.ts.map +1 -0
  149. package/dist/scripts/analysis-framework/cross-reference.js +290 -0
  150. package/dist/scripts/analysis-framework/cross-reference.js.map +1 -0
  151. package/dist/scripts/analysis-framework/index.d.ts +79 -0
  152. package/dist/scripts/analysis-framework/index.d.ts.map +1 -0
  153. package/dist/scripts/analysis-framework/index.js +133 -0
  154. package/dist/scripts/analysis-framework/index.js.map +1 -0
  155. package/dist/scripts/analysis-framework/lenses/citizen.d.ts +29 -0
  156. package/dist/scripts/analysis-framework/lenses/citizen.d.ts.map +1 -0
  157. package/dist/scripts/analysis-framework/lenses/citizen.js +220 -0
  158. package/dist/scripts/analysis-framework/lenses/citizen.js.map +1 -0
  159. package/dist/scripts/analysis-framework/lenses/economic.d.ts +29 -0
  160. package/dist/scripts/analysis-framework/lenses/economic.d.ts.map +1 -0
  161. package/dist/scripts/analysis-framework/lenses/economic.js +227 -0
  162. package/dist/scripts/analysis-framework/lenses/economic.js.map +1 -0
  163. package/dist/scripts/analysis-framework/lenses/government.d.ts +32 -0
  164. package/dist/scripts/analysis-framework/lenses/government.d.ts.map +1 -0
  165. package/dist/scripts/analysis-framework/lenses/government.js +265 -0
  166. package/dist/scripts/analysis-framework/lenses/government.js.map +1 -0
  167. package/dist/scripts/analysis-framework/lenses/international.d.ts +29 -0
  168. package/dist/scripts/analysis-framework/lenses/international.d.ts.map +1 -0
  169. package/dist/scripts/analysis-framework/lenses/international.js +248 -0
  170. package/dist/scripts/analysis-framework/lenses/international.js.map +1 -0
  171. package/dist/scripts/analysis-framework/lenses/media.d.ts +29 -0
  172. package/dist/scripts/analysis-framework/lenses/media.d.ts.map +1 -0
  173. package/dist/scripts/analysis-framework/lenses/media.js +211 -0
  174. package/dist/scripts/analysis-framework/lenses/media.js.map +1 -0
  175. package/dist/scripts/analysis-framework/lenses/opposition.d.ts +29 -0
  176. package/dist/scripts/analysis-framework/lenses/opposition.d.ts.map +1 -0
  177. package/dist/scripts/analysis-framework/lenses/opposition.js +234 -0
  178. package/dist/scripts/analysis-framework/lenses/opposition.js.map +1 -0
  179. package/dist/scripts/analysis-framework/methodology-types.d.ts +309 -0
  180. package/dist/scripts/analysis-framework/methodology-types.d.ts.map +1 -0
  181. package/dist/scripts/analysis-framework/methodology-types.js +38 -0
  182. package/dist/scripts/analysis-framework/methodology-types.js.map +1 -0
  183. package/dist/scripts/analysis-framework/political-classification.d.ts +58 -0
  184. package/dist/scripts/analysis-framework/political-classification.d.ts.map +1 -0
  185. package/dist/scripts/analysis-framework/political-classification.js +414 -0
  186. package/dist/scripts/analysis-framework/political-classification.js.map +1 -0
  187. package/dist/scripts/analysis-framework/political-risk-assessment.d.ts +74 -0
  188. package/dist/scripts/analysis-framework/political-risk-assessment.d.ts.map +1 -0
  189. package/dist/scripts/analysis-framework/political-risk-assessment.js +656 -0
  190. package/dist/scripts/analysis-framework/political-risk-assessment.js.map +1 -0
  191. package/dist/scripts/analysis-framework/political-threat-analysis.d.ts +65 -0
  192. package/dist/scripts/analysis-framework/political-threat-analysis.d.ts.map +1 -0
  193. package/dist/scripts/analysis-framework/political-threat-analysis.js +553 -0
  194. package/dist/scripts/analysis-framework/political-threat-analysis.js.map +1 -0
  195. package/dist/scripts/analysis-framework/significance-scorer.d.ts +62 -0
  196. package/dist/scripts/analysis-framework/significance-scorer.d.ts.map +1 -0
  197. package/dist/scripts/analysis-framework/significance-scorer.js +196 -0
  198. package/dist/scripts/analysis-framework/significance-scorer.js.map +1 -0
  199. package/dist/scripts/analysis-framework/types.d.ts +138 -0
  200. package/dist/scripts/analysis-framework/types.d.ts.map +1 -0
  201. package/dist/scripts/analysis-framework/types.js +12 -0
  202. package/dist/scripts/analysis-framework/types.js.map +1 -0
  203. package/dist/scripts/analysis-reader.d.ts +240 -0
  204. package/dist/scripts/analysis-reader.d.ts.map +1 -0
  205. package/dist/scripts/analysis-reader.js +495 -0
  206. package/dist/scripts/analysis-reader.js.map +1 -0
  207. package/dist/scripts/article-quality-enhancer.d.ts +148 -0
  208. package/dist/scripts/article-quality-enhancer.d.ts.map +1 -0
  209. package/dist/scripts/article-quality-enhancer.js +430 -0
  210. package/dist/scripts/article-quality-enhancer.js.map +1 -0
  211. package/dist/scripts/article-template/constants.d.ts +104 -0
  212. package/dist/scripts/article-template/constants.d.ts.map +1 -0
  213. package/dist/scripts/article-template/constants.js +225 -0
  214. package/dist/scripts/article-template/constants.js.map +1 -0
  215. package/dist/scripts/article-template/helpers.d.ts +83 -0
  216. package/dist/scripts/article-template/helpers.d.ts.map +1 -0
  217. package/dist/scripts/article-template/helpers.js +236 -0
  218. package/dist/scripts/article-template/helpers.js.map +1 -0
  219. package/dist/scripts/article-template/index.d.ts +39 -0
  220. package/dist/scripts/article-template/index.d.ts.map +1 -0
  221. package/dist/scripts/article-template/index.js +37 -0
  222. package/dist/scripts/article-template/index.js.map +1 -0
  223. package/dist/scripts/article-template/registry.d.ts +64 -0
  224. package/dist/scripts/article-template/registry.d.ts.map +1 -0
  225. package/dist/scripts/article-template/registry.js +405 -0
  226. package/dist/scripts/article-template/registry.js.map +1 -0
  227. package/dist/scripts/article-template/template.d.ts +18 -0
  228. package/dist/scripts/article-template/template.d.ts.map +1 -0
  229. package/dist/scripts/article-template/template.js +359 -0
  230. package/dist/scripts/article-template/template.js.map +1 -0
  231. package/dist/scripts/article-template/types.d.ts +90 -0
  232. package/dist/scripts/article-template/types.d.ts.map +1 -0
  233. package/dist/scripts/article-template/types.js +96 -0
  234. package/dist/scripts/article-template/types.js.map +1 -0
  235. package/dist/scripts/article-template.d.ts +18 -0
  236. package/dist/scripts/article-template.d.ts.map +1 -0
  237. package/dist/scripts/article-template.js +18 -0
  238. package/dist/scripts/article-template.js.map +1 -0
  239. package/dist/scripts/catalog-downloaded-data.d.ts +66 -0
  240. package/dist/scripts/catalog-downloaded-data.d.ts.map +1 -0
  241. package/dist/scripts/catalog-downloaded-data.js +239 -0
  242. package/dist/scripts/catalog-downloaded-data.js.map +1 -0
  243. package/dist/scripts/check-cia-schema-updates.d.ts +186 -0
  244. package/dist/scripts/check-cia-schema-updates.d.ts.map +1 -0
  245. package/dist/scripts/check-cia-schema-updates.js +363 -0
  246. package/dist/scripts/check-cia-schema-updates.js.map +1 -0
  247. package/dist/scripts/data-transformers/calendar.d.ts +16 -0
  248. package/dist/scripts/data-transformers/calendar.d.ts.map +1 -0
  249. package/dist/scripts/data-transformers/calendar.js +137 -0
  250. package/dist/scripts/data-transformers/calendar.js.map +1 -0
  251. package/dist/scripts/data-transformers/constants/committee-names.d.ts +15 -0
  252. package/dist/scripts/data-transformers/constants/committee-names.d.ts.map +1 -0
  253. package/dist/scripts/data-transformers/constants/committee-names.js +30 -0
  254. package/dist/scripts/data-transformers/constants/committee-names.js.map +1 -0
  255. package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts +11 -0
  256. package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts.map +1 -0
  257. package/dist/scripts/data-transformers/constants/content-labels-part1.js +900 -0
  258. package/dist/scripts/data-transformers/constants/content-labels-part1.js.map +1 -0
  259. package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts +11 -0
  260. package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts.map +1 -0
  261. package/dist/scripts/data-transformers/constants/content-labels-part2.js +900 -0
  262. package/dist/scripts/data-transformers/constants/content-labels-part2.js.map +1 -0
  263. package/dist/scripts/data-transformers/constants/content-labels.d.ts +13 -0
  264. package/dist/scripts/data-transformers/constants/content-labels.d.ts.map +1 -0
  265. package/dist/scripts/data-transformers/constants/content-labels.js +18 -0
  266. package/dist/scripts/data-transformers/constants/content-labels.js.map +1 -0
  267. package/dist/scripts/data-transformers/constants/index.d.ts +15 -0
  268. package/dist/scripts/data-transformers/constants/index.d.ts.map +1 -0
  269. package/dist/scripts/data-transformers/constants/index.js +15 -0
  270. package/dist/scripts/data-transformers/constants/index.js.map +1 -0
  271. package/dist/scripts/data-transformers/constants/locale-map.d.ts +13 -0
  272. package/dist/scripts/data-transformers/constants/locale-map.d.ts.map +1 -0
  273. package/dist/scripts/data-transformers/constants/locale-map.js +17 -0
  274. package/dist/scripts/data-transformers/constants/locale-map.js.map +1 -0
  275. package/dist/scripts/data-transformers/constants.d.ts +14 -0
  276. package/dist/scripts/data-transformers/constants.d.ts.map +1 -0
  277. package/dist/scripts/data-transformers/constants.js +14 -0
  278. package/dist/scripts/data-transformers/constants.js.map +1 -0
  279. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts +64 -0
  280. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts.map +1 -0
  281. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js +805 -0
  282. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js.map +1 -0
  283. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.d.ts +89 -0
  284. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.d.ts.map +1 -0
  285. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.js +667 -0
  286. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.js.map +1 -0
  287. package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts +50 -0
  288. package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts.map +1 -0
  289. package/dist/scripts/data-transformers/content-generators/cia-overview-section.js +310 -0
  290. package/dist/scripts/data-transformers/content-generators/cia-overview-section.js.map +1 -0
  291. package/dist/scripts/data-transformers/content-generators/committee.d.ts +12 -0
  292. package/dist/scripts/data-transformers/content-generators/committee.d.ts.map +1 -0
  293. package/dist/scripts/data-transformers/content-generators/committee.js +247 -0
  294. package/dist/scripts/data-transformers/content-generators/committee.js.map +1 -0
  295. package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts +124 -0
  296. package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts.map +1 -0
  297. package/dist/scripts/data-transformers/content-generators/dashboard-section.js +564 -0
  298. package/dist/scripts/data-transformers/content-generators/dashboard-section.js.map +1 -0
  299. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts +82 -0
  300. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts.map +1 -0
  301. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js +321 -0
  302. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js.map +1 -0
  303. package/dist/scripts/data-transformers/content-generators/generic.d.ts +12 -0
  304. package/dist/scripts/data-transformers/content-generators/generic.d.ts.map +1 -0
  305. package/dist/scripts/data-transformers/content-generators/generic.js +295 -0
  306. package/dist/scripts/data-transformers/content-generators/generic.js.map +1 -0
  307. package/dist/scripts/data-transformers/content-generators/index.d.ts +56 -0
  308. package/dist/scripts/data-transformers/content-generators/index.d.ts.map +1 -0
  309. package/dist/scripts/data-transformers/content-generators/index.js +45 -0
  310. package/dist/scripts/data-transformers/content-generators/index.js.map +1 -0
  311. package/dist/scripts/data-transformers/content-generators/interpellations.d.ts +12 -0
  312. package/dist/scripts/data-transformers/content-generators/interpellations.d.ts.map +1 -0
  313. package/dist/scripts/data-transformers/content-generators/interpellations.js +124 -0
  314. package/dist/scripts/data-transformers/content-generators/interpellations.js.map +1 -0
  315. package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts +137 -0
  316. package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts.map +1 -0
  317. package/dist/scripts/data-transformers/content-generators/mindmap-section.js +286 -0
  318. package/dist/scripts/data-transformers/content-generators/mindmap-section.js.map +1 -0
  319. package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts +17 -0
  320. package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts.map +1 -0
  321. package/dist/scripts/data-transformers/content-generators/month-ahead.js +212 -0
  322. package/dist/scripts/data-transformers/content-generators/month-ahead.js.map +1 -0
  323. package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts +17 -0
  324. package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts.map +1 -0
  325. package/dist/scripts/data-transformers/content-generators/monthly-review.js +173 -0
  326. package/dist/scripts/data-transformers/content-generators/monthly-review.js.map +1 -0
  327. package/dist/scripts/data-transformers/content-generators/motions.d.ts +12 -0
  328. package/dist/scripts/data-transformers/content-generators/motions.d.ts.map +1 -0
  329. package/dist/scripts/data-transformers/content-generators/motions.js +158 -0
  330. package/dist/scripts/data-transformers/content-generators/motions.js.map +1 -0
  331. package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts +52 -0
  332. package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts.map +1 -0
  333. package/dist/scripts/data-transformers/content-generators/newsworthiness.js +244 -0
  334. package/dist/scripts/data-transformers/content-generators/newsworthiness.js.map +1 -0
  335. package/dist/scripts/data-transformers/content-generators/propositions.d.ts +12 -0
  336. package/dist/scripts/data-transformers/content-generators/propositions.d.ts.map +1 -0
  337. package/dist/scripts/data-transformers/content-generators/propositions.js +263 -0
  338. package/dist/scripts/data-transformers/content-generators/propositions.js.map +1 -0
  339. package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts +92 -0
  340. package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts.map +1 -0
  341. package/dist/scripts/data-transformers/content-generators/sankey-section.js +257 -0
  342. package/dist/scripts/data-transformers/content-generators/sankey-section.js.map +1 -0
  343. package/dist/scripts/data-transformers/content-generators/shared.d.ts +81 -0
  344. package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +1 -0
  345. package/dist/scripts/data-transformers/content-generators/shared.js +913 -0
  346. package/dist/scripts/data-transformers/content-generators/shared.js.map +1 -0
  347. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts +83 -0
  348. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts.map +1 -0
  349. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.js +219 -0
  350. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.js.map +1 -0
  351. package/dist/scripts/data-transformers/content-generators/swot-section.d.ts +50 -0
  352. package/dist/scripts/data-transformers/content-generators/swot-section.d.ts.map +1 -0
  353. package/dist/scripts/data-transformers/content-generators/swot-section.js +177 -0
  354. package/dist/scripts/data-transformers/content-generators/swot-section.js.map +1 -0
  355. package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts +12 -0
  356. package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts.map +1 -0
  357. package/dist/scripts/data-transformers/content-generators/week-ahead.js +332 -0
  358. package/dist/scripts/data-transformers/content-generators/week-ahead.js.map +1 -0
  359. package/dist/scripts/data-transformers/content-generators.d.ts +15 -0
  360. package/dist/scripts/data-transformers/content-generators.d.ts.map +1 -0
  361. package/dist/scripts/data-transformers/content-generators.js +14 -0
  362. package/dist/scripts/data-transformers/content-generators.js.map +1 -0
  363. package/dist/scripts/data-transformers/document-analysis.d.ts +58 -0
  364. package/dist/scripts/data-transformers/document-analysis.d.ts.map +1 -0
  365. package/dist/scripts/data-transformers/document-analysis.js +396 -0
  366. package/dist/scripts/data-transformers/document-analysis.js.map +1 -0
  367. package/dist/scripts/data-transformers/helpers.d.ts +144 -0
  368. package/dist/scripts/data-transformers/helpers.d.ts.map +1 -0
  369. package/dist/scripts/data-transformers/helpers.js +408 -0
  370. package/dist/scripts/data-transformers/helpers.js.map +1 -0
  371. package/dist/scripts/data-transformers/index.d.ts +45 -0
  372. package/dist/scripts/data-transformers/index.d.ts.map +1 -0
  373. package/dist/scripts/data-transformers/index.js +66 -0
  374. package/dist/scripts/data-transformers/index.js.map +1 -0
  375. package/dist/scripts/data-transformers/metadata.d.ts +42 -0
  376. package/dist/scripts/data-transformers/metadata.d.ts.map +1 -0
  377. package/dist/scripts/data-transformers/metadata.js +385 -0
  378. package/dist/scripts/data-transformers/metadata.js.map +1 -0
  379. package/dist/scripts/data-transformers/policy-analysis.d.ts +105 -0
  380. package/dist/scripts/data-transformers/policy-analysis.d.ts.map +1 -0
  381. package/dist/scripts/data-transformers/policy-analysis.js +686 -0
  382. package/dist/scripts/data-transformers/policy-analysis.js.map +1 -0
  383. package/dist/scripts/data-transformers/risk-analysis.d.ts +104 -0
  384. package/dist/scripts/data-transformers/risk-analysis.d.ts.map +1 -0
  385. package/dist/scripts/data-transformers/risk-analysis.js +279 -0
  386. package/dist/scripts/data-transformers/risk-analysis.js.map +1 -0
  387. package/dist/scripts/data-transformers/types.d.ts +260 -0
  388. package/dist/scripts/data-transformers/types.d.ts.map +1 -0
  389. package/dist/scripts/data-transformers/types.js +11 -0
  390. package/dist/scripts/data-transformers/types.js.map +1 -0
  391. package/dist/scripts/data-transformers.d.ts +23 -0
  392. package/dist/scripts/data-transformers.d.ts.map +1 -0
  393. package/dist/scripts/data-transformers.js +35 -0
  394. package/dist/scripts/data-transformers.js.map +1 -0
  395. package/dist/scripts/deep-inspection/index.d.ts +55 -0
  396. package/dist/scripts/deep-inspection/index.d.ts.map +1 -0
  397. package/dist/scripts/deep-inspection/index.js +66 -0
  398. package/dist/scripts/deep-inspection/index.js.map +1 -0
  399. package/dist/scripts/detect-swedish-leakage.d.ts +69 -0
  400. package/dist/scripts/detect-swedish-leakage.d.ts.map +1 -0
  401. package/dist/scripts/detect-swedish-leakage.js +417 -0
  402. package/dist/scripts/detect-swedish-leakage.js.map +1 -0
  403. package/dist/scripts/editorial-framework.d.ts +121 -0
  404. package/dist/scripts/editorial-framework.d.ts.map +1 -0
  405. package/dist/scripts/editorial-framework.js +364 -0
  406. package/dist/scripts/editorial-framework.js.map +1 -0
  407. package/dist/scripts/editorial-pillars.d.ts +43 -0
  408. package/dist/scripts/editorial-pillars.d.ts.map +1 -0
  409. package/dist/scripts/editorial-pillars.js +215 -0
  410. package/dist/scripts/editorial-pillars.js.map +1 -0
  411. package/dist/scripts/extract-news-metadata.d.ts +12 -0
  412. package/dist/scripts/extract-news-metadata.d.ts.map +1 -0
  413. package/dist/scripts/extract-news-metadata.js +107 -0
  414. package/dist/scripts/extract-news-metadata.js.map +1 -0
  415. package/dist/scripts/extract-vocabulary.d.ts +15 -0
  416. package/dist/scripts/extract-vocabulary.d.ts.map +1 -0
  417. package/dist/scripts/extract-vocabulary.js +255 -0
  418. package/dist/scripts/extract-vocabulary.js.map +1 -0
  419. package/dist/scripts/fix-article-navigation.d.ts +37 -0
  420. package/dist/scripts/fix-article-navigation.d.ts.map +1 -0
  421. package/dist/scripts/fix-article-navigation.js +198 -0
  422. package/dist/scripts/fix-article-navigation.js.map +1 -0
  423. package/dist/scripts/fix-keywords-localization.d.ts +18 -0
  424. package/dist/scripts/fix-keywords-localization.d.ts.map +1 -0
  425. package/dist/scripts/fix-keywords-localization.js +270 -0
  426. package/dist/scripts/fix-keywords-localization.js.map +1 -0
  427. package/dist/scripts/fix-old-articles-branding.d.ts +17 -0
  428. package/dist/scripts/fix-old-articles-branding.d.ts.map +1 -0
  429. package/dist/scripts/fix-old-articles-branding.js +229 -0
  430. package/dist/scripts/fix-old-articles-branding.js.map +1 -0
  431. package/dist/scripts/generate-news-backport.d.ts +16 -0
  432. package/dist/scripts/generate-news-backport.d.ts.map +1 -0
  433. package/dist/scripts/generate-news-backport.js +379 -0
  434. package/dist/scripts/generate-news-backport.js.map +1 -0
  435. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts +124 -0
  436. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts.map +1 -0
  437. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js +529 -0
  438. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js.map +1 -0
  439. package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts +59 -0
  440. package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts.map +1 -0
  441. package/dist/scripts/generate-news-enhanced/analysis-cache.js +116 -0
  442. package/dist/scripts/generate-news-enhanced/analysis-cache.js.map +1 -0
  443. package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts +58 -0
  444. package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts.map +1 -0
  445. package/dist/scripts/generate-news-enhanced/analysis-labels.js +144 -0
  446. package/dist/scripts/generate-news-enhanced/analysis-labels.js.map +1 -0
  447. package/dist/scripts/generate-news-enhanced/config.d.ts +57 -0
  448. package/dist/scripts/generate-news-enhanced/config.d.ts.map +1 -0
  449. package/dist/scripts/generate-news-enhanced/config.js +286 -0
  450. package/dist/scripts/generate-news-enhanced/config.js.map +1 -0
  451. package/dist/scripts/generate-news-enhanced/generators.d.ts +119 -0
  452. package/dist/scripts/generate-news-enhanced/generators.d.ts.map +1 -0
  453. package/dist/scripts/generate-news-enhanced/generators.js +2108 -0
  454. package/dist/scripts/generate-news-enhanced/generators.js.map +1 -0
  455. package/dist/scripts/generate-news-enhanced/helpers.d.ts +123 -0
  456. package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +1 -0
  457. package/dist/scripts/generate-news-enhanced/helpers.js +438 -0
  458. package/dist/scripts/generate-news-enhanced/helpers.js.map +1 -0
  459. package/dist/scripts/generate-news-enhanced/index.d.ts +19 -0
  460. package/dist/scripts/generate-news-enhanced/index.d.ts.map +1 -0
  461. package/dist/scripts/generate-news-enhanced/index.js +221 -0
  462. package/dist/scripts/generate-news-enhanced/index.js.map +1 -0
  463. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts +35 -0
  464. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +1 -0
  465. package/dist/scripts/generate-news-enhanced/swot-analyzer.js +1179 -0
  466. package/dist/scripts/generate-news-enhanced/swot-analyzer.js.map +1 -0
  467. package/dist/scripts/generate-news-enhanced/types.d.ts +34 -0
  468. package/dist/scripts/generate-news-enhanced/types.d.ts.map +1 -0
  469. package/dist/scripts/generate-news-enhanced/types.js +9 -0
  470. package/dist/scripts/generate-news-enhanced/types.js.map +1 -0
  471. package/dist/scripts/generate-news-enhanced.d.ts +25 -0
  472. package/dist/scripts/generate-news-enhanced.d.ts.map +1 -0
  473. package/dist/scripts/generate-news-enhanced.js +37 -0
  474. package/dist/scripts/generate-news-enhanced.js.map +1 -0
  475. package/dist/scripts/generate-news-indexes/constants.d.ts +20 -0
  476. package/dist/scripts/generate-news-indexes/constants.d.ts.map +1 -0
  477. package/dist/scripts/generate-news-indexes/constants.js +308 -0
  478. package/dist/scripts/generate-news-indexes/constants.js.map +1 -0
  479. package/dist/scripts/generate-news-indexes/helpers.d.ts +73 -0
  480. package/dist/scripts/generate-news-indexes/helpers.d.ts.map +1 -0
  481. package/dist/scripts/generate-news-indexes/helpers.js +352 -0
  482. package/dist/scripts/generate-news-indexes/helpers.js.map +1 -0
  483. package/dist/scripts/generate-news-indexes/index.d.ts +20 -0
  484. package/dist/scripts/generate-news-indexes/index.d.ts.map +1 -0
  485. package/dist/scripts/generate-news-indexes/index.js +75 -0
  486. package/dist/scripts/generate-news-indexes/index.js.map +1 -0
  487. package/dist/scripts/generate-news-indexes/template.d.ts +25 -0
  488. package/dist/scripts/generate-news-indexes/template.d.ts.map +1 -0
  489. package/dist/scripts/generate-news-indexes/template.js +644 -0
  490. package/dist/scripts/generate-news-indexes/template.js.map +1 -0
  491. package/dist/scripts/generate-news-indexes/types.d.ts +96 -0
  492. package/dist/scripts/generate-news-indexes/types.d.ts.map +1 -0
  493. package/dist/scripts/generate-news-indexes/types.js +9 -0
  494. package/dist/scripts/generate-news-indexes/types.js.map +1 -0
  495. package/dist/scripts/generate-news-indexes.d.ts +20 -0
  496. package/dist/scripts/generate-news-indexes.d.ts.map +1 -0
  497. package/dist/scripts/generate-news-indexes.js +19 -0
  498. package/dist/scripts/generate-news-indexes.js.map +1 -0
  499. package/dist/scripts/generate-rss.d.ts +48 -0
  500. package/dist/scripts/generate-rss.d.ts.map +1 -0
  501. package/dist/scripts/generate-rss.js +299 -0
  502. package/dist/scripts/generate-rss.js.map +1 -0
  503. package/dist/scripts/generate-sitemap-html.d.ts +79 -0
  504. package/dist/scripts/generate-sitemap-html.d.ts.map +1 -0
  505. package/dist/scripts/generate-sitemap-html.js +878 -0
  506. package/dist/scripts/generate-sitemap-html.js.map +1 -0
  507. package/dist/scripts/generate-sitemap.d.ts +23 -0
  508. package/dist/scripts/generate-sitemap.d.ts.map +1 -0
  509. package/dist/scripts/generate-sitemap.js +476 -0
  510. package/dist/scripts/generate-sitemap.js.map +1 -0
  511. package/dist/scripts/generate-types-from-cia-schemas.d.ts +176 -0
  512. package/dist/scripts/generate-types-from-cia-schemas.d.ts.map +1 -0
  513. package/dist/scripts/generate-types-from-cia-schemas.js +318 -0
  514. package/dist/scripts/generate-types-from-cia-schemas.js.map +1 -0
  515. package/dist/scripts/government-role-validator.d.ts +65 -0
  516. package/dist/scripts/government-role-validator.d.ts.map +1 -0
  517. package/dist/scripts/government-role-validator.js +217 -0
  518. package/dist/scripts/government-role-validator.js.map +1 -0
  519. package/dist/scripts/html-utils.d.ts +17 -0
  520. package/dist/scripts/html-utils.d.ts.map +1 -0
  521. package/dist/scripts/html-utils.js +29 -0
  522. package/dist/scripts/html-utils.js.map +1 -0
  523. package/dist/scripts/load-cia-stats.d.ts +89 -0
  524. package/dist/scripts/load-cia-stats.d.ts.map +1 -0
  525. package/dist/scripts/load-cia-stats.js +400 -0
  526. package/dist/scripts/load-cia-stats.js.map +1 -0
  527. package/dist/scripts/mcp-client/client.d.ts +73 -0
  528. package/dist/scripts/mcp-client/client.d.ts.map +1 -0
  529. package/dist/scripts/mcp-client/client.js +526 -0
  530. package/dist/scripts/mcp-client/client.js.map +1 -0
  531. package/dist/scripts/mcp-client/document-types.d.ts +23 -0
  532. package/dist/scripts/mcp-client/document-types.d.ts.map +1 -0
  533. package/dist/scripts/mcp-client/document-types.js +62 -0
  534. package/dist/scripts/mcp-client/document-types.js.map +1 -0
  535. package/dist/scripts/mcp-client/index.d.ts +34 -0
  536. package/dist/scripts/mcp-client/index.d.ts.map +1 -0
  537. package/dist/scripts/mcp-client/index.js +67 -0
  538. package/dist/scripts/mcp-client/index.js.map +1 -0
  539. package/dist/scripts/mcp-client/transport.d.ts +32 -0
  540. package/dist/scripts/mcp-client/transport.d.ts.map +1 -0
  541. package/dist/scripts/mcp-client/transport.js +102 -0
  542. package/dist/scripts/mcp-client/transport.js.map +1 -0
  543. package/dist/scripts/mcp-client.d.ts +18 -0
  544. package/dist/scripts/mcp-client.d.ts.map +1 -0
  545. package/dist/scripts/mcp-client.js +18 -0
  546. package/dist/scripts/mcp-client.js.map +1 -0
  547. package/dist/scripts/mcp-query-cli.d.ts +25 -0
  548. package/dist/scripts/mcp-query-cli.d.ts.map +1 -0
  549. package/dist/scripts/mcp-query-cli.js +66 -0
  550. package/dist/scripts/mcp-query-cli.js.map +1 -0
  551. package/dist/scripts/news-types/breaking-news.d.ts +178 -0
  552. package/dist/scripts/news-types/breaking-news.d.ts.map +1 -0
  553. package/dist/scripts/news-types/breaking-news.js +428 -0
  554. package/dist/scripts/news-types/breaking-news.js.map +1 -0
  555. package/dist/scripts/news-types/committee-reports.d.ts +212 -0
  556. package/dist/scripts/news-types/committee-reports.d.ts.map +1 -0
  557. package/dist/scripts/news-types/committee-reports.js +404 -0
  558. package/dist/scripts/news-types/committee-reports.js.map +1 -0
  559. package/dist/scripts/news-types/month-ahead.d.ts +71 -0
  560. package/dist/scripts/news-types/month-ahead.d.ts.map +1 -0
  561. package/dist/scripts/news-types/month-ahead.js +392 -0
  562. package/dist/scripts/news-types/month-ahead.js.map +1 -0
  563. package/dist/scripts/news-types/monthly-review.d.ts +61 -0
  564. package/dist/scripts/news-types/monthly-review.d.ts.map +1 -0
  565. package/dist/scripts/news-types/monthly-review.js +417 -0
  566. package/dist/scripts/news-types/monthly-review.js.map +1 -0
  567. package/dist/scripts/news-types/motions.d.ts +214 -0
  568. package/dist/scripts/news-types/motions.d.ts.map +1 -0
  569. package/dist/scripts/news-types/motions.js +447 -0
  570. package/dist/scripts/news-types/motions.js.map +1 -0
  571. package/dist/scripts/news-types/propositions.d.ts +204 -0
  572. package/dist/scripts/news-types/propositions.d.ts.map +1 -0
  573. package/dist/scripts/news-types/propositions.js +401 -0
  574. package/dist/scripts/news-types/propositions.js.map +1 -0
  575. package/dist/scripts/news-types/week-ahead.d.ts +231 -0
  576. package/dist/scripts/news-types/week-ahead.d.ts.map +1 -0
  577. package/dist/scripts/news-types/week-ahead.js +441 -0
  578. package/dist/scripts/news-types/week-ahead.js.map +1 -0
  579. package/dist/scripts/news-types/weekly-review/analysis.d.ts +47 -0
  580. package/dist/scripts/news-types/weekly-review/analysis.d.ts.map +1 -0
  581. package/dist/scripts/news-types/weekly-review/analysis.js +276 -0
  582. package/dist/scripts/news-types/weekly-review/analysis.js.map +1 -0
  583. package/dist/scripts/news-types/weekly-review/data-loader.d.ts +51 -0
  584. package/dist/scripts/news-types/weekly-review/data-loader.d.ts.map +1 -0
  585. package/dist/scripts/news-types/weekly-review/data-loader.js +298 -0
  586. package/dist/scripts/news-types/weekly-review/data-loader.js.map +1 -0
  587. package/dist/scripts/news-types/weekly-review/generator.d.ts +18 -0
  588. package/dist/scripts/news-types/weekly-review/generator.d.ts.map +1 -0
  589. package/dist/scripts/news-types/weekly-review/generator.js +284 -0
  590. package/dist/scripts/news-types/weekly-review/generator.js.map +1 -0
  591. package/dist/scripts/news-types/weekly-review/index.d.ts +20 -0
  592. package/dist/scripts/news-types/weekly-review/index.d.ts.map +1 -0
  593. package/dist/scripts/news-types/weekly-review/index.js +23 -0
  594. package/dist/scripts/news-types/weekly-review/index.js.map +1 -0
  595. package/dist/scripts/news-types/weekly-review/types.d.ts +72 -0
  596. package/dist/scripts/news-types/weekly-review/types.d.ts.map +1 -0
  597. package/dist/scripts/news-types/weekly-review/types.js +20 -0
  598. package/dist/scripts/news-types/weekly-review/types.js.map +1 -0
  599. package/dist/scripts/news-types/weekly-review/validation.d.ts +10 -0
  600. package/dist/scripts/news-types/weekly-review/validation.d.ts.map +1 -0
  601. package/dist/scripts/news-types/weekly-review/validation.js +95 -0
  602. package/dist/scripts/news-types/weekly-review/validation.js.map +1 -0
  603. package/dist/scripts/news-types/weekly-review.d.ts +15 -0
  604. package/dist/scripts/news-types/weekly-review.d.ts.map +1 -0
  605. package/dist/scripts/news-types/weekly-review.js +14 -0
  606. package/dist/scripts/news-types/weekly-review.js.map +1 -0
  607. package/dist/scripts/party-variants.d.ts +23 -0
  608. package/dist/scripts/party-variants.d.ts.map +1 -0
  609. package/dist/scripts/party-variants.js +50 -0
  610. package/dist/scripts/party-variants.js.map +1 -0
  611. package/dist/scripts/pipeline/index.d.ts +19 -0
  612. package/dist/scripts/pipeline/index.d.ts.map +1 -0
  613. package/dist/scripts/pipeline/index.js +17 -0
  614. package/dist/scripts/pipeline/index.js.map +1 -0
  615. package/dist/scripts/pipeline/orchestrator.d.ts +56 -0
  616. package/dist/scripts/pipeline/orchestrator.d.ts.map +1 -0
  617. package/dist/scripts/pipeline/orchestrator.js +147 -0
  618. package/dist/scripts/pipeline/orchestrator.js.map +1 -0
  619. package/dist/scripts/pipeline/types.d.ts +117 -0
  620. package/dist/scripts/pipeline/types.d.ts.map +1 -0
  621. package/dist/scripts/pipeline/types.js +13 -0
  622. package/dist/scripts/pipeline/types.js.map +1 -0
  623. package/dist/scripts/pipeline/validation.d.ts +66 -0
  624. package/dist/scripts/pipeline/validation.d.ts.map +1 -0
  625. package/dist/scripts/pipeline/validation.js +129 -0
  626. package/dist/scripts/pipeline/validation.js.map +1 -0
  627. package/dist/scripts/populate-analysis-data.d.ts +41 -0
  628. package/dist/scripts/populate-analysis-data.d.ts.map +1 -0
  629. package/dist/scripts/populate-analysis-data.js +255 -0
  630. package/dist/scripts/populate-analysis-data.js.map +1 -0
  631. package/dist/scripts/pre-article-analysis/data-downloader.d.ts +80 -0
  632. package/dist/scripts/pre-article-analysis/data-downloader.d.ts.map +1 -0
  633. package/dist/scripts/pre-article-analysis/data-downloader.js +230 -0
  634. package/dist/scripts/pre-article-analysis/data-downloader.js.map +1 -0
  635. package/dist/scripts/pre-article-analysis/data-persistence.d.ts +141 -0
  636. package/dist/scripts/pre-article-analysis/data-persistence.d.ts.map +1 -0
  637. package/dist/scripts/pre-article-analysis/data-persistence.js +345 -0
  638. package/dist/scripts/pre-article-analysis/data-persistence.js.map +1 -0
  639. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts +95 -0
  640. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts.map +1 -0
  641. package/dist/scripts/pre-article-analysis/markdown-serializer.js +648 -0
  642. package/dist/scripts/pre-article-analysis/markdown-serializer.js.map +1 -0
  643. package/dist/scripts/pre-article-analysis/pdf-converter.d.ts +58 -0
  644. package/dist/scripts/pre-article-analysis/pdf-converter.d.ts.map +1 -0
  645. package/dist/scripts/pre-article-analysis/pdf-converter.js +142 -0
  646. package/dist/scripts/pre-article-analysis/pdf-converter.js.map +1 -0
  647. package/dist/scripts/pre-article-analysis.d.ts +41 -0
  648. package/dist/scripts/pre-article-analysis.d.ts.map +1 -0
  649. package/dist/scripts/pre-article-analysis.js +578 -0
  650. package/dist/scripts/pre-article-analysis.js.map +1 -0
  651. package/dist/scripts/scb-client.d.ts +104 -0
  652. package/dist/scripts/scb-client.d.ts.map +1 -0
  653. package/dist/scripts/scb-client.js +286 -0
  654. package/dist/scripts/scb-client.js.map +1 -0
  655. package/dist/scripts/scb-context.d.ts +88 -0
  656. package/dist/scripts/scb-context.d.ts.map +1 -0
  657. package/dist/scripts/scb-context.js +307 -0
  658. package/dist/scripts/scb-context.js.map +1 -0
  659. package/dist/scripts/shared/version.d.ts +9 -0
  660. package/dist/scripts/shared/version.d.ts.map +1 -0
  661. package/dist/scripts/shared/version.js +28 -0
  662. package/dist/scripts/shared/version.js.map +1 -0
  663. package/dist/scripts/statistical-claims-detector.d.ts +119 -0
  664. package/dist/scripts/statistical-claims-detector.d.ts.map +1 -0
  665. package/dist/scripts/statistical-claims-detector.js +391 -0
  666. package/dist/scripts/statistical-claims-detector.js.map +1 -0
  667. package/dist/scripts/sync-cia-schemas.d.ts +52 -0
  668. package/dist/scripts/sync-cia-schemas.d.ts.map +1 -0
  669. package/dist/scripts/sync-cia-schemas.js +195 -0
  670. package/dist/scripts/sync-cia-schemas.js.map +1 -0
  671. package/dist/scripts/translation-dictionary.d.ts +45 -0
  672. package/dist/scripts/translation-dictionary.d.ts.map +1 -0
  673. package/dist/scripts/translation-dictionary.js +3642 -0
  674. package/dist/scripts/translation-dictionary.js.map +1 -0
  675. package/dist/scripts/types/article.d.ts +362 -0
  676. package/dist/scripts/types/article.d.ts.map +1 -0
  677. package/dist/scripts/types/article.js +6 -0
  678. package/dist/scripts/types/article.js.map +1 -0
  679. package/dist/scripts/types/content.d.ts +167 -0
  680. package/dist/scripts/types/content.d.ts.map +1 -0
  681. package/dist/scripts/types/content.js +6 -0
  682. package/dist/scripts/types/content.js.map +1 -0
  683. package/dist/scripts/types/editorial.d.ts +17 -0
  684. package/dist/scripts/types/editorial.d.ts.map +1 -0
  685. package/dist/scripts/types/editorial.js +6 -0
  686. package/dist/scripts/types/editorial.js.map +1 -0
  687. package/dist/scripts/types/language.d.ts +7 -0
  688. package/dist/scripts/types/language.d.ts.map +1 -0
  689. package/dist/scripts/types/language.js +6 -0
  690. package/dist/scripts/types/language.js.map +1 -0
  691. package/dist/scripts/types/mcp.d.ts +117 -0
  692. package/dist/scripts/types/mcp.d.ts.map +1 -0
  693. package/dist/scripts/types/mcp.js +6 -0
  694. package/dist/scripts/types/mcp.js.map +1 -0
  695. package/dist/scripts/types/party.d.ts +9 -0
  696. package/dist/scripts/types/party.d.ts.map +1 -0
  697. package/dist/scripts/types/party.js +6 -0
  698. package/dist/scripts/types/party.js.map +1 -0
  699. package/dist/scripts/types/validation.d.ts +136 -0
  700. package/dist/scripts/types/validation.d.ts.map +1 -0
  701. package/dist/scripts/types/validation.js +6 -0
  702. package/dist/scripts/types/validation.js.map +1 -0
  703. package/dist/scripts/types/workflow.d.ts +78 -0
  704. package/dist/scripts/types/workflow.d.ts.map +1 -0
  705. package/dist/scripts/types/workflow.js +6 -0
  706. package/dist/scripts/types/workflow.js.map +1 -0
  707. package/dist/scripts/update-stats-from-cia.d.ts +44 -0
  708. package/dist/scripts/update-stats-from-cia.d.ts.map +1 -0
  709. package/dist/scripts/update-stats-from-cia.js +310 -0
  710. package/dist/scripts/update-stats-from-cia.js.map +1 -0
  711. package/dist/scripts/validate-against-cia-schemas.d.ts +126 -0
  712. package/dist/scripts/validate-against-cia-schemas.d.ts.map +1 -0
  713. package/dist/scripts/validate-against-cia-schemas.js +299 -0
  714. package/dist/scripts/validate-against-cia-schemas.js.map +1 -0
  715. package/dist/scripts/validate-cross-references.d.ts +49 -0
  716. package/dist/scripts/validate-cross-references.d.ts.map +1 -0
  717. package/dist/scripts/validate-cross-references.js +183 -0
  718. package/dist/scripts/validate-cross-references.js.map +1 -0
  719. package/dist/scripts/validate-file-ownership.d.ts +68 -0
  720. package/dist/scripts/validate-file-ownership.d.ts.map +1 -0
  721. package/dist/scripts/validate-file-ownership.js +135 -0
  722. package/dist/scripts/validate-file-ownership.js.map +1 -0
  723. package/dist/scripts/validate-news-translations.d.ts +27 -0
  724. package/dist/scripts/validate-news-translations.d.ts.map +1 -0
  725. package/dist/scripts/validate-news-translations.js +258 -0
  726. package/dist/scripts/validate-news-translations.js.map +1 -0
  727. package/dist/scripts/validate-translations.d.ts +162 -0
  728. package/dist/scripts/validate-translations.d.ts.map +1 -0
  729. package/dist/scripts/validate-translations.js +378 -0
  730. package/dist/scripts/validate-translations.js.map +1 -0
  731. package/dist/scripts/workflow-state-coordinator.d.ts +354 -0
  732. package/dist/scripts/workflow-state-coordinator.d.ts.map +1 -0
  733. package/dist/scripts/workflow-state-coordinator.js +876 -0
  734. package/dist/scripts/workflow-state-coordinator.js.map +1 -0
  735. package/dist/scripts/world-bank-client.d.ts +122 -0
  736. package/dist/scripts/world-bank-client.d.ts.map +1 -0
  737. package/dist/scripts/world-bank-client.js +192 -0
  738. package/dist/scripts/world-bank-client.js.map +1 -0
  739. package/dist/scripts/world-bank-context.d.ts +88 -0
  740. package/dist/scripts/world-bank-context.d.ts.map +1 -0
  741. package/dist/scripts/world-bank-context.js +331 -0
  742. package/dist/scripts/world-bank-context.js.map +1 -0
  743. package/package.json +32 -7
  744. package/dist/lib/chart-factory.d.ts.map +0 -1
  745. package/dist/lib/chart-factory.js.map +0 -1
  746. package/dist/lib/data-loader.d.ts.map +0 -1
  747. package/dist/lib/data-loader.js.map +0 -1
  748. package/dist/lib/dom-utils.d.ts.map +0 -1
  749. package/dist/lib/dom-utils.js.map +0 -1
  750. package/dist/lib/error-boundary.d.ts.map +0 -1
  751. package/dist/lib/error-boundary.js.map +0 -1
  752. package/dist/lib/fallback-ui.d.ts.map +0 -1
  753. package/dist/lib/fallback-ui.js.map +0 -1
  754. package/dist/lib/index.d.ts.map +0 -1
  755. package/dist/lib/index.js.map +0 -1
  756. package/dist/lib/logger.d.ts.map +0 -1
  757. package/dist/lib/logger.js.map +0 -1
  758. package/dist/lib/theme.d.ts.map +0 -1
  759. package/dist/lib/theme.js.map +0 -1
  760. package/dist/lib/types.d.ts.map +0 -1
  761. package/dist/lib/types.js.map +0 -1
  762. /package/dist/lib/{chart-factory.d.ts → shared/chart-factory.d.ts} +0 -0
  763. /package/dist/lib/{chart-factory.js → shared/chart-factory.js} +0 -0
  764. /package/dist/lib/{data-loader.d.ts → shared/data-loader.d.ts} +0 -0
  765. /package/dist/lib/{data-loader.js → shared/data-loader.js} +0 -0
  766. /package/dist/lib/{dom-utils.d.ts → shared/dom-utils.d.ts} +0 -0
  767. /package/dist/lib/{dom-utils.js → shared/dom-utils.js} +0 -0
  768. /package/dist/lib/{error-boundary.d.ts → shared/error-boundary.d.ts} +0 -0
  769. /package/dist/lib/{error-boundary.js → shared/error-boundary.js} +0 -0
  770. /package/dist/lib/{fallback-ui.d.ts → shared/fallback-ui.d.ts} +0 -0
  771. /package/dist/lib/{fallback-ui.js → shared/fallback-ui.js} +0 -0
  772. /package/dist/lib/{index.d.ts → shared/index.d.ts} +0 -0
  773. /package/dist/lib/{index.js → shared/index.js} +0 -0
  774. /package/dist/lib/{logger.d.ts → shared/logger.d.ts} +0 -0
  775. /package/dist/lib/{logger.js → shared/logger.js} +0 -0
  776. /package/dist/lib/{theme.d.ts → shared/theme.d.ts} +0 -0
  777. /package/dist/lib/{theme.js → shared/theme.js} +0 -0
  778. /package/dist/lib/{types.d.ts → shared/types.d.ts} +0 -0
  779. /package/dist/lib/{types.js → shared/types.js} +0 -0
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Script to replace "The Economist" branding references in old news articles
3
+ * with OSINT/INTOP political intelligence branding across all 14 languages.
4
+ *
5
+ * Usage: npx tsx scripts/fix-old-articles-branding.ts [--dry-run]
6
+ *
7
+ * Replaces:
8
+ * - site-tagline div content (language-specific from SITE_TAGLINE constants)
9
+ * - "style: The Economist" in HTML comment frontmatter
10
+ * - "The Economist" references in article body/disclaimers
11
+ * - "Journalism Standards" footer text
12
+ *
13
+ * Preserves:
14
+ * - External links to economist.com (legitimate references)
15
+ */
16
+ import * as fs from 'fs';
17
+ import * as path from 'path';
18
+ // New taglines from scripts/article-template/constants.ts
19
+ const SITE_TAGLINE = {
20
+ en: "Latest news and analysis from Sweden's Riksdag. AI-generated political intelligence based on OSINT/INTOP data covering parliament, government, and agencies with systematic transparency.",
21
+ sv: 'Senaste nyheter och analyser från Sveriges riksdag. AI-genererad politisk underrättelsejournalistik baserad på OSINT/INTOP-data som bevakar riksdagen, regeringen och myndigheter med systematisk transparens.',
22
+ da: 'Seneste nyheder og analyser fra Sveriges Riksdag. AI-genereret politisk efterretningsjournalistik baseret på OSINT/INTOP-data, der dækker parlament, regering og myndigheder med systematisk gennemsigtighed.',
23
+ no: 'Siste nyheter og analyser fra Sveriges riksdag. AI-generert politisk etterretningsjournalistikk basert på OSINT/INTOP-data som dekker parlament, regjering og myndigheter med systematisk åpenhet.',
24
+ fi: 'Uusimmat uutiset ja analyysit Ruotsin valtiopäiviltä. Tekoälyn tuottama poliittinen tiedustelujournalismi OSINT/INTOP-dataan perustuen, joka kattaa eduskunnan, hallituksen ja viranomaiset järjestelmällisellä läpinäkyvyydellä.',
25
+ de: 'Aktuelle Nachrichten und Analysen aus dem schwedischen Riksdag. KI-generierter politischer Nachrichtendienst-Journalismus basierend auf OSINT/INTOP-Daten über Parlament, Regierung und Behörden mit systematischer Transparenz.',
26
+ fr: 'Dernières nouvelles et analyses du Riksdag suédois. Journalisme de renseignement politique généré par IA basé sur des données OSINT/INTOP couvrant le parlement, le gouvernement et les agences avec une transparence systématique.',
27
+ es: 'Últimas noticias y análisis del Riksdag sueco. Periodismo de inteligencia política generado por IA basado en datos OSINT/INTOP que cubre el parlamento, el gobierno y las agencias con transparencia sistemática.',
28
+ nl: 'Laatste nieuws en analyses van de Zweedse Riksdag. AI-gegenereerde politieke inlichtingenjournalistiek gebaseerd op OSINT/INTOP-data over parlement, regering en instanties met systematische transparantie.',
29
+ ar: 'أحدث الأخبار والتحليلات من البرلمان السويدي. صحافة استخبارات سياسية مولّدة بالذكاء الاصطناعي مبنية على بيانات OSINT/INTOP تغطي البرلمان والحكومة والوكالات بشفافية منهجية.',
30
+ he: 'חדשות ניתוחים אחרונים מהריקסדאג השוודי. עיתונות מודיעין פוליטי מבוססת AI ונתוני OSINT/INTOP המכסה פרלמנט, ממשלה וסוכנויות עם שקיפות שיטתית.',
31
+ ja: 'スウェーデン議会リクスダーグの最新ニュースと分析。OSINT/INTOPデータに基づくAI生成の政治インテリジェンスジャーナリズムで、議会、政府、機関を体系的な透明性で報道。',
32
+ ko: '스웨덴 의회 릭스다그의 최신 뉴스와 분석. OSINT/INTOP 데이터 기반 AI 생성 정치 인텔리전스 저널리즘으로 의회, 정부, 기관을 체계적인 투명성으로 보도.',
33
+ zh: '来自瑞典议会的最新新闻和分析。基于OSINT/INTOP数据的AI生成政治情报新闻,以系统性透明度报道议会、政府和机构。',
34
+ };
35
+ const NEWS_DIR = path.join(process.cwd(), 'news');
36
+ const dryRun = process.argv.includes('--dry-run');
37
+ function getLanguageFromFilename(filename) {
38
+ const match = filename.match(/-([a-z]{2})\.html$/);
39
+ return match ? match[1] : null;
40
+ }
41
+ function replaceTagline(html, lang) {
42
+ const tagline = SITE_TAGLINE[lang];
43
+ if (!tagline)
44
+ return html;
45
+ // Replace site-tagline div content
46
+ return html.replace(/(<div class="site-tagline">)([^<]*?)(<\/div>)/g, `$1${tagline}$3`);
47
+ }
48
+ function replaceEconomistReferences(html) {
49
+ let result = html;
50
+ // 1. Replace "style: The Economist" in HTML comment frontmatter
51
+ result = result.replace(/style: The Economist\b/g, 'style: OSINT/INTOP');
52
+ // 2. Replace "Journalism Standards" footer patterns (en + sv)
53
+ result = result.replace(/Journalism Standards<\/strong>: The Economist style/g, 'Journalism Standards</strong>: OSINT/INTOP data-driven AI-generated political intelligence');
54
+ result = result.replace(/Journalistiska standarder<\/strong>: The Economist-stil/g, 'Journalistiska standarder</strong>: OSINT/INTOP-datadriven AI-genererad politisk underrättelsejournalistik');
55
+ // 3. Skip lines containing economist.com URLs (legitimate external references)
56
+ // Process line by line to preserve external links
57
+ const lines = result.split('\n');
58
+ const processedLines = lines.map(line => {
59
+ // Skip lines with economist.com URLs (legitimate external reference links)
60
+ if (/href=["'][^"']*economist\.com/.test(line))
61
+ return line;
62
+ // Replace "The Economist" patterns not already handled
63
+ // Various editorial standards patterns
64
+ line = line.replace(/following The Economist editorial standards/g, 'following OSINT/INTOP editorial standards');
65
+ line = line.replace(/enligt The Economist-standarder/g, 'enligt OSINT/INTOP-standarder');
66
+ line = line.replace(/enligt The Economists redaktionella standard/g, 'enligt OSINT/INTOP redaktionella standard');
67
+ line = line.replace(/i enlighet med The Economists redaktionella standard/g, 'i enlighet med OSINT/INTOP redaktionella standard');
68
+ line = line.replace(/in The Economist style/g, 'in OSINT/INTOP style');
69
+ line = line.replace(/i The Economist-stil/g, 'i OSINT/INTOP-stil');
70
+ // English patterns
71
+ line = line.replace(/The Economist-style analysis/g, 'OSINT/INTOP data-driven analysis');
72
+ line = line.replace(/The Economist-style political journalism emphasizing/g, 'OSINT/INTOP data-driven AI-generated political intelligence emphasizing');
73
+ line = line.replace(/The Economist-style political journalism/g, 'OSINT/INTOP data-driven political journalism');
74
+ line = line.replace(/The Economist-style/g, 'OSINT/INTOP data-driven');
75
+ // Generic "The Economist" that references the brand, not external links
76
+ // Replace remaining "The Economist" in article contexts (not in <a> tags)
77
+ // Use negative lookahead to avoid replacing inside link text to economist.com
78
+ line = line.replace(/The Economist noted in its/g, 'As noted in a');
79
+ // Swedish patterns
80
+ line = line.replace(/The Economist-inspirerad/g, 'OSINT/INTOP-baserad');
81
+ // Danish patterns
82
+ line = line.replace(/The Economist-inspireret/g, 'OSINT/INTOP-baseret');
83
+ // Norwegian patterns
84
+ line = line.replace(/The Economist-inspirert/g, 'OSINT/INTOP-basert');
85
+ // Generic suffix patterns across Scandinavian languages
86
+ line = line.replace(/The Economist-stil\b/g, 'OSINT/INTOP-stil');
87
+ // Dutch
88
+ line = line.replace(/The Economist-stijl\b/g, 'OSINT/INTOP-stijl');
89
+ // German (with and without "The ")
90
+ line = line.replace(/The Economist-Stil\b/g, 'OSINT/INTOP-Stil');
91
+ line = line.replace(/im Economist-Stil\b/g, 'im OSINT/INTOP-Stil');
92
+ line = line.replace(/Economist-Stil\b/g, 'OSINT/INTOP-Stil');
93
+ // Dutch (without "The " prefix)
94
+ line = line.replace(/in Economist-stijl\b/g, 'in OSINT/INTOP-stijl');
95
+ line = line.replace(/Economist-stijl\b/g, 'OSINT/INTOP-stijl');
96
+ // Finnish (note the space before the hyphen)
97
+ line = line.replace(/The Economist -tyylinen/g, 'OSINT/INTOP -tyylinen');
98
+ line = line.replace(/The Economist -tyyliin/g, 'OSINT/INTOP -tyyliin');
99
+ line = line.replace(/The Economist-tyylinen/g, 'OSINT/INTOP-tyylinen');
100
+ // French
101
+ line = line.replace(/style The Economist\b/g, 'style OSINT/INTOP');
102
+ line = line.replace(/The Economist couvrant/g, 'OSINT/INTOP couvrant');
103
+ line = line.replace(/The Economist avec/g, 'OSINT/INTOP avec');
104
+ // Spanish
105
+ line = line.replace(/estilo The Economist\b/g, 'estilo OSINT/INTOP');
106
+ line = line.replace(/The Economist que cubre/g, 'OSINT/INTOP que cubre');
107
+ line = line.replace(/The Economist cubriendo/g, 'OSINT/INTOP cubriendo');
108
+ line = line.replace(/The Economist sobre/g, 'OSINT/INTOP sobre');
109
+ line = line.replace(/The Economist con/g, 'OSINT/INTOP con');
110
+ // Dutch additional
111
+ line = line.replace(/The Economist over/g, 'OSINT/INTOP over');
112
+ line = line.replace(/The Economist met/g, 'OSINT/INTOP met');
113
+ line = line.replace(/The Economist politieke/g, 'OSINT/INTOP politieke');
114
+ // German additional
115
+ line = line.replace(/The Economist mit/g, 'OSINT/INTOP mit');
116
+ line = line.replace(/The Economist zu /g, 'OSINT/INTOP zu ');
117
+ line = line.replace(/The Economist über/g, 'OSINT/INTOP über');
118
+ // Hebrew
119
+ line = line.replace(/The Economist המכסה/g, 'OSINT/INTOP המכסה');
120
+ line = line.replace(/The Economist עם/g, 'OSINT/INTOP עם');
121
+ // Arabic
122
+ line = line.replace(/The Economist تغطي/g, 'OSINT/INTOP تغطي');
123
+ // Japanese
124
+ line = line.replace(/The Economist スタイル/g, 'OSINT/INTOP スタイル');
125
+ // Chinese
126
+ line = line.replace(/The Economist 风格/g, 'OSINT/INTOP 风格');
127
+ line = line.replace(/The Economist风格/g, 'OSINT/INTOP風格');
128
+ // Korean
129
+ line = line.replace(/The Economist 스타일/g, 'OSINT/INTOP 스타일');
130
+ // Catch remaining "The Economist." and "The Economist," sentence endings
131
+ // But not "The Economist:" (which is a reference title)
132
+ line = line.replace(/The Economist\./g, 'OSINT/INTOP.');
133
+ line = line.replace(/The Economist,/g, 'OSINT/INTOP,');
134
+ // HTML entity versions
135
+ line = line.replace(/The Economist-stil som t&#228;cker/g, 'OSINT/INTOP-stil som täcker');
136
+ line = line.replace(/The Economist-stil som dekker riksdag, regjering og myndigheter med systematisk &#229;penhet/g, 'OSINT/INTOP-stil som dekker riksdag, regjering og myndigheter med systematisk åpenhet');
137
+ line = line.replace(/The Economist-stil der d&#230;kker/g, 'OSINT/INTOP-stil der dækker');
138
+ line = line.replace(/The Economist couvrant le parlement, le gouvernement et les agences avec une transparence syst&#233;matique/g, 'OSINT/INTOP couvrant le parlement, le gouvernement et les agences avec une transparence systématique');
139
+ line = line.replace(/The Economist cubriendo parlamento, gobierno y agencias con transparencia sistem&#225;tica/g, 'OSINT/INTOP cubriendo parlamento, gobierno y agencias con transparencia sistemática');
140
+ line = line.replace(/The Economist -tyylin poliittista journalismia, joka kattaa parlamentin, hallituksen ja virastot systemaattisella l&#228;pin&#228;kyvyydell&#228;/g, 'OSINT/INTOP -tyylin poliittista journalismia, joka kattaa parlamentin, hallituksen ja virastot systemaattisella läpinäkyvyydellä');
141
+ return line;
142
+ });
143
+ return processedLines.join('\n');
144
+ }
145
+ function processFile(filepath) {
146
+ const filename = path.basename(filepath);
147
+ const lang = getLanguageFromFilename(filename);
148
+ if (!lang) {
149
+ console.warn(` ⚠️ Could not determine language for: ${filename}`);
150
+ return false;
151
+ }
152
+ const original = fs.readFileSync(filepath, 'utf-8');
153
+ // Check if file contains any Economist references
154
+ if (!original.includes('Economist')) {
155
+ return false;
156
+ }
157
+ let modified = original;
158
+ // Replace site-tagline
159
+ modified = replaceTagline(modified, lang);
160
+ // Replace other Economist references
161
+ modified = replaceEconomistReferences(modified);
162
+ if (modified === original) {
163
+ return false;
164
+ }
165
+ if (!dryRun) {
166
+ fs.writeFileSync(filepath, modified, 'utf-8');
167
+ }
168
+ return true;
169
+ }
170
+ // Main execution
171
+ console.log(`🔄 Fixing old articles branding (${dryRun ? 'DRY RUN' : 'LIVE'})...\n`);
172
+ const files = fs.readdirSync(NEWS_DIR)
173
+ .filter(f => f.endsWith('.html'))
174
+ .sort();
175
+ let modified = 0;
176
+ let skipped = 0;
177
+ const langStats = {};
178
+ for (const file of files) {
179
+ const filepath = path.join(NEWS_DIR, file);
180
+ const lang = getLanguageFromFilename(file);
181
+ if (processFile(filepath)) {
182
+ modified++;
183
+ if (lang) {
184
+ langStats[lang] = (langStats[lang] || 0) + 1;
185
+ }
186
+ if (dryRun) {
187
+ console.log(` 📝 Would modify: ${file}`);
188
+ }
189
+ }
190
+ else {
191
+ skipped++;
192
+ }
193
+ }
194
+ console.log(`\n✅ Done!`);
195
+ console.log(` Modified: ${modified} files`);
196
+ console.log(` Skipped: ${skipped} files (no changes needed)`);
197
+ console.log(`\n📊 Changes by language:`);
198
+ for (const [lang, count] of Object.entries(langStats).sort()) {
199
+ console.log(` ${lang}: ${count} files`);
200
+ }
201
+ // Verify no remaining Economist references (except legitimate external links)
202
+ console.log(`\n🔍 Checking for remaining "Economist" references...`);
203
+ let remaining = 0;
204
+ for (const file of files) {
205
+ const filepath = path.join(NEWS_DIR, file);
206
+ const content = dryRun
207
+ ? fs.readFileSync(filepath, 'utf-8')
208
+ : fs.readFileSync(filepath, 'utf-8');
209
+ // Split into lines and check each
210
+ const lines = content.split('\n');
211
+ for (let i = 0; i < lines.length; i++) {
212
+ if (lines[i].includes('Economist') && !/href=["'][^"']*economist\.com/.test(lines[i])) {
213
+ remaining++;
214
+ if (remaining <= 20) {
215
+ console.log(` ⚠️ ${file}:${i + 1}: ${lines[i].trim().substring(0, 120)}`);
216
+ }
217
+ }
218
+ }
219
+ }
220
+ if (remaining > 20) {
221
+ console.log(` ... and ${remaining - 20} more`);
222
+ }
223
+ if (remaining === 0) {
224
+ console.log(' ✅ No remaining references (except legitimate external links)');
225
+ }
226
+ else {
227
+ console.log(`\n ⚠️ ${remaining} remaining references found`);
228
+ }
229
+ //# sourceMappingURL=fix-old-articles-branding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix-old-articles-branding.js","sourceRoot":"","sources":["../../scripts/fix-old-articles-branding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @module Intelligence/DataMigration
3
+ * @category Intelligence Operations / Supporting Infrastructure
4
+ * @name News Backport Generation - Historical Article Migration System
5
+ *
6
+ * @description
7
+ * Automated legacy article generation system creating historical news coverage for
8
+ * past dates by querying the riksdag-regering-mcp (MCP) client for parliamentary
9
+ * activities, government actions, and committee developments.
10
+ *
11
+ * @author Hack23 AB (Intelligence Archive Team)
12
+ * @license Apache-2.0
13
+ * @version 1.5.0
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=generate-news-backport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-news-backport.d.ts","sourceRoot":"","sources":["../../scripts/generate-news-backport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,379 @@
1
+ /**
2
+ * @module Intelligence/DataMigration
3
+ * @category Intelligence Operations / Supporting Infrastructure
4
+ * @name News Backport Generation - Historical Article Migration System
5
+ *
6
+ * @description
7
+ * Automated legacy article generation system creating historical news coverage for
8
+ * past dates by querying the riksdag-regering-mcp (MCP) client for parliamentary
9
+ * activities, government actions, and committee developments.
10
+ *
11
+ * @author Hack23 AB (Intelligence Archive Team)
12
+ * @license Apache-2.0
13
+ * @version 1.5.0
14
+ */
15
+ import fs from 'fs';
16
+ import path from 'path';
17
+ import { fileURLToPath } from 'url';
18
+ import { MCPClient } from './mcp-client.js';
19
+ import { generateArticleContent, extractWatchPoints, generateMetadata, calculateReadTime, generateSources, } from './data-transformers.js';
20
+ import { generateArticleHTML } from './article-template.js';
21
+ import { readDailyAnalysis, deriveArticleClassificationMeta } from './analysis-reader.js';
22
+ const __filename = fileURLToPath(import.meta.url);
23
+ const __dirname = path.dirname(__filename);
24
+ // ---------------------------------------------------------------------------
25
+ // CLI Arguments
26
+ // ---------------------------------------------------------------------------
27
+ const args = process.argv.slice(2);
28
+ function getArg(name, defaultValue = '') {
29
+ const arg = args.find((a) => a.startsWith(`--${name}=`));
30
+ return arg ? arg.split('=').slice(1).join('=') : defaultValue;
31
+ }
32
+ const fromDate = getArg('from', '2026-01-05');
33
+ const toDate = getArg('to', new Date().toISOString().split('T')[0]);
34
+ const mode = getArg('mode', 'weekly');
35
+ const typesInput = getArg('types', 'week-ahead,committee-reports,propositions,motions');
36
+ const dryRun = args.includes('--dry-run');
37
+ const delayMs = parseInt(getArg('delay', '2000'), 10);
38
+ // Language support
39
+ const ALL_LANGUAGES = ['en', 'sv', 'da', 'no', 'fi', 'de', 'fr', 'es', 'nl', 'ar', 'he', 'ja', 'ko', 'zh'];
40
+ const LANGUAGE_PRESETS = {
41
+ all: ALL_LANGUAGES,
42
+ nordic: ['en', 'sv', 'da', 'no', 'fi'],
43
+ 'eu-core': ['en', 'sv', 'de', 'fr', 'es', 'nl'],
44
+ };
45
+ let langInput = getArg('languages', 'en,sv').trim().toLowerCase();
46
+ const preset = LANGUAGE_PRESETS[langInput];
47
+ if (preset) {
48
+ langInput = preset.join(',');
49
+ }
50
+ const languages = langInput
51
+ .split(',')
52
+ .map((l) => l.trim())
53
+ .filter((l) => ALL_LANGUAGES.includes(l));
54
+ const articleTypes = typesInput.split(',').filter(Boolean);
55
+ const NEWS_DIR = path.join(__dirname, '..', 'news');
56
+ // Ensure directory exists
57
+ if (!fs.existsSync(NEWS_DIR)) {
58
+ fs.mkdirSync(NEWS_DIR, { recursive: true });
59
+ }
60
+ // ---------------------------------------------------------------------------
61
+ // Date Helpers
62
+ // ---------------------------------------------------------------------------
63
+ function addDays(date, days) {
64
+ const d = new Date(date);
65
+ d.setDate(d.getDate() + days);
66
+ return d;
67
+ }
68
+ function formatDate(date) {
69
+ return date.toISOString().split('T')[0] ?? '';
70
+ }
71
+ function getMondaysInRange(from, to) {
72
+ const mondays = [];
73
+ let current = new Date(from);
74
+ const dayOfWeek = current.getDay();
75
+ if (dayOfWeek !== 1) {
76
+ current = addDays(current, (8 - dayOfWeek) % 7);
77
+ }
78
+ const end = new Date(to);
79
+ while (current <= end) {
80
+ mondays.push(new Date(current));
81
+ current = addDays(current, 7);
82
+ }
83
+ return mondays;
84
+ }
85
+ function getDaysInRange(from, to) {
86
+ const days = [];
87
+ let current = new Date(from);
88
+ const end = new Date(to);
89
+ while (current <= end) {
90
+ const day = current.getDay();
91
+ if (day !== 0 && day !== 6) {
92
+ days.push(new Date(current));
93
+ }
94
+ current = addDays(current, 1);
95
+ }
96
+ return days;
97
+ }
98
+ function articleExists(slug, lang) {
99
+ const filename = `${slug}-${lang}.html`;
100
+ return fs.existsSync(path.join(NEWS_DIR, filename));
101
+ }
102
+ // ---------------------------------------------------------------------------
103
+ // Rate Limiter
104
+ // ---------------------------------------------------------------------------
105
+ function delay(ms) {
106
+ return new Promise((resolve) => setTimeout(resolve, ms));
107
+ }
108
+ // ---------------------------------------------------------------------------
109
+ // Title Maps
110
+ // ---------------------------------------------------------------------------
111
+ const WEEK_AHEAD_TITLES = {
112
+ en: (from, to) => ({ title: `Week Ahead: ${from} to ${to}`, subtitle: 'Prospective coverage of upcoming parliamentary activity' }),
113
+ sv: (from, to) => ({ title: `Veckan framåt: ${from} till ${to}`, subtitle: 'Översikt av kommande parlamentarisk verksamhet' }),
114
+ da: (from, to) => ({ title: `Ugen forude: ${from} til ${to}`, subtitle: 'Oversigt over kommende parlamentarisk aktivitet' }),
115
+ no: (from, to) => ({ title: `Uken fremover: ${from} til ${to}`, subtitle: 'Oversikt over kommende parlamentarisk aktivitet' }),
116
+ fi: (from, to) => ({ title: `Tuleva viikko: ${from}–${to}`, subtitle: 'Katsaus tulevaan parlamentaariseen toimintaan' }),
117
+ de: (from, to) => ({ title: `Woche voraus: ${from} bis ${to}`, subtitle: 'Vorschau auf die parlamentarische Aktivität' }),
118
+ fr: (from, to) => ({ title: `Semaine à venir : ${from} au ${to}`, subtitle: "Aperçu de l'activité parlementaire à venir" }),
119
+ es: (from, to) => ({ title: `Semana por delante: ${from} al ${to}`, subtitle: 'Perspectiva de la actividad parlamentaria próxima' }),
120
+ nl: (from, to) => ({ title: `Week vooruit: ${from} tot ${to}`, subtitle: 'Vooruitblik op parlementaire activiteit' }),
121
+ ar: (from, to) => ({ title: `الأسبوع القادم: ${from} إلى ${to}`, subtitle: 'نظرة مسبقة على النشاط البرلماني القادم' }),
122
+ he: (from, to) => ({ title: `השבוע הקרוב: ${from} עד ${to}`, subtitle: 'סקירה מקדימה של הפעילות הפרלמנטרית' }),
123
+ ja: (from, to) => ({ title: `今週の展望:${from}〜${to}`, subtitle: '今後の議会活動の予測報道' }),
124
+ ko: (from, to) => ({ title: `주간 전망: ${from}~${to}`, subtitle: '향후 의회 활동 전망' }),
125
+ zh: (from, to) => ({ title: `本周展望:${from}至${to}`, subtitle: '即将到来的议会活动前瞻' }),
126
+ };
127
+ const COMMITTEE_TITLES = {
128
+ en: (n) => ({ title: `Committee Reports Analysis`, subtitle: `Analysis of ${n} committee reports` }),
129
+ sv: (n) => ({ title: `Utskottsbetänkanden`, subtitle: `Analys av ${n} utskottsbetänkanden` }),
130
+ da: (n) => ({ title: `Udvalgsrapporter`, subtitle: `Analyse af ${n} udvalgsrapporter` }),
131
+ no: (n) => ({ title: `Komitérapporter`, subtitle: `Analyse av ${n} komitérapporter` }),
132
+ fi: (n) => ({ title: `Valiokunnan mietinnöt`, subtitle: `${n} valiokunnan mietinnön analyysi` }),
133
+ de: (n) => ({ title: `Ausschussberichte`, subtitle: `Analyse von ${n} Ausschussberichten` }),
134
+ fr: (n) => ({ title: `Rapports de commission`, subtitle: `Analyse de ${n} rapports de commission` }),
135
+ es: (n) => ({ title: `Informes de comisión`, subtitle: `Análisis de ${n} informes de comisión` }),
136
+ nl: (n) => ({ title: `Commissierapporten`, subtitle: `Analyse van ${n} commissierapporten` }),
137
+ ar: (n) => ({ title: `تقارير اللجان`, subtitle: `تحليل ${n} تقارير لجان` }),
138
+ he: (n) => ({ title: `דוחות ועדות`, subtitle: `ניתוח ${n} דוחות ועדות` }),
139
+ ja: (n) => ({ title: `委員会報告`, subtitle: `${n}件の委員会報告の分析` }),
140
+ ko: (n) => ({ title: `위원회 보고서`, subtitle: `${n}개 위원회 보고서 분석` }),
141
+ zh: (n) => ({ title: `委员会报告`, subtitle: `${n}份委员会报告分析` }),
142
+ };
143
+ const PROPOSITION_TITLES = {
144
+ en: (n) => ({ title: `Government Propositions`, subtitle: `Analysis of ${n} government propositions` }),
145
+ sv: (n) => ({ title: `Regeringens propositioner`, subtitle: `Analys av ${n} propositioner` }),
146
+ da: (n) => ({ title: `Regeringsforslag`, subtitle: `Analyse af ${n} regeringsforslag` }),
147
+ no: (n) => ({ title: `Regjeringens proposisjoner`, subtitle: `Analyse av ${n} proposisjoner` }),
148
+ fi: (n) => ({ title: `Hallituksen esitykset`, subtitle: `${n} hallituksen esityksen analyysi` }),
149
+ de: (n) => ({ title: `Regierungsvorlagen`, subtitle: `Analyse von ${n} Regierungsvorlagen` }),
150
+ fr: (n) => ({ title: `Propositions gouvernementales`, subtitle: `Analyse de ${n} propositions` }),
151
+ es: (n) => ({ title: `Proposiciones gubernamentales`, subtitle: `Análisis de ${n} proposiciones` }),
152
+ nl: (n) => ({ title: `Regeringsvoorstellen`, subtitle: `Analyse van ${n} voorstellen` }),
153
+ ar: (n) => ({ title: `مقترحات حكومية`, subtitle: `تحليل ${n} مقترحات حكومية` }),
154
+ he: (n) => ({ title: `הצעות ממשלתיות`, subtitle: `ניתוח ${n} הצעות ממשלתיות` }),
155
+ ja: (n) => ({ title: `政府提案`, subtitle: `${n}件の政府提案の分析` }),
156
+ ko: (n) => ({ title: `정부 제안`, subtitle: `${n}개 정부 제안 분석` }),
157
+ zh: (n) => ({ title: `政府提案`, subtitle: `${n}份政府提案分析` }),
158
+ };
159
+ const MOTION_TITLES = {
160
+ en: (n) => ({ title: `Opposition Motions`, subtitle: `Analysis of ${n} opposition motions` }),
161
+ sv: (n) => ({ title: `Oppositionsmotioner`, subtitle: `Analys av ${n} motioner` }),
162
+ da: (n) => ({ title: `Oppositionsforslag`, subtitle: `Analyse af ${n} forslag` }),
163
+ no: (n) => ({ title: `Opposisjonsforslag`, subtitle: `Analyse av ${n} forslag` }),
164
+ fi: (n) => ({ title: `Opposition aloitteet`, subtitle: `${n} aloitteen analyysi` }),
165
+ de: (n) => ({ title: `Oppositionsanträge`, subtitle: `Analyse von ${n} Anträgen` }),
166
+ fr: (n) => ({ title: `Motions d'opposition`, subtitle: `Analyse de ${n} motions` }),
167
+ es: (n) => ({ title: `Mociones de oposición`, subtitle: `Análisis de ${n} mociones` }),
168
+ nl: (n) => ({ title: `Oppositiemoties`, subtitle: `Analyse van ${n} moties` }),
169
+ ar: (n) => ({ title: `اقتراحات المعارضة`, subtitle: `تحليل ${n} اقتراحات` }),
170
+ he: (n) => ({ title: `הצעות אופוזיציה`, subtitle: `ניתוח ${n} הצעות` }),
171
+ ja: (n) => ({ title: `野党動議`, subtitle: `${n}件の動議分析` }),
172
+ ko: (n) => ({ title: `야당 동의`, subtitle: `${n}개 동의 분석` }),
173
+ zh: (n) => ({ title: `反对党动议`, subtitle: `${n}份动议分析` }),
174
+ };
175
+ // ---------------------------------------------------------------------------
176
+ // Article Generator
177
+ // ---------------------------------------------------------------------------
178
+ async function generateForDate(targetDate, type, client) {
179
+ const dateStr = formatDate(targetDate);
180
+ const weekEnd = formatDate(addDays(targetDate, 6));
181
+ let slug;
182
+ let titleMap;
183
+ let data;
184
+ let dataKey;
185
+ let toolName;
186
+ switch (type) {
187
+ case 'week-ahead': {
188
+ slug = `${dateStr}-week-ahead`;
189
+ titleMap = WEEK_AHEAD_TITLES;
190
+ console.log(` 📆 Fetching calendar ${dateStr} → ${weekEnd}...`);
191
+ const events = await client.fetchCalendarEvents(dateStr, weekEnd);
192
+ data = { events };
193
+ dataKey = 'week-ahead';
194
+ toolName = 'get_calendar_events';
195
+ break;
196
+ }
197
+ case 'committee-reports': {
198
+ slug = `${dateStr}-committee-reports`;
199
+ titleMap = COMMITTEE_TITLES;
200
+ console.log(` 📋 Fetching committee reports near ${dateStr}...`);
201
+ const reports = await client.fetchCommitteeReports(15);
202
+ data = { reports };
203
+ dataKey = 'committee-reports';
204
+ toolName = 'get_betankanden';
205
+ break;
206
+ }
207
+ case 'propositions': {
208
+ slug = `${dateStr}-government-propositions`;
209
+ titleMap = PROPOSITION_TITLES;
210
+ console.log(` 📜 Fetching propositions near ${dateStr}...`);
211
+ const propositions = await client.fetchPropositions(10);
212
+ data = { propositions };
213
+ dataKey = 'propositions';
214
+ toolName = 'get_propositioner';
215
+ break;
216
+ }
217
+ case 'motions': {
218
+ slug = `${dateStr}-opposition-motions`;
219
+ titleMap = MOTION_TITLES;
220
+ console.log(` 📝 Fetching motions near ${dateStr}...`);
221
+ const motions = await client.fetchMotions(10);
222
+ data = { motions };
223
+ dataKey = 'motions';
224
+ toolName = 'get_motioner';
225
+ break;
226
+ }
227
+ default:
228
+ console.log(` ⚠️ Unknown type: ${type}, skipping`);
229
+ return 0;
230
+ }
231
+ // Check if articles already exist for this slug
232
+ const existingLangs = languages.filter((l) => articleExists(slug, l));
233
+ if (existingLangs.length === languages.length) {
234
+ console.log(` ⏭️ All ${languages.length} language versions already exist for ${slug}`);
235
+ return 0;
236
+ }
237
+ const missingLangs = languages.filter((l) => !articleExists(slug, l));
238
+ console.log(` 🌐 Generating ${missingLangs.length} missing language versions...`);
239
+ let generated = 0;
240
+ // Prefer date-specific analysis for the backport target date.
241
+ // Fall back to null rather than latest (which would be historically inaccurate).
242
+ let enrichment = null;
243
+ try {
244
+ const dateAnalysis = await readDailyAnalysis(dateStr);
245
+ if (dateAnalysis.hasAnalysis) {
246
+ const meta = deriveArticleClassificationMeta(dateAnalysis);
247
+ enrichment = {
248
+ classificationLevel: meta.classificationLevel,
249
+ riskLevel: meta.riskLevel,
250
+ confidenceLabel: meta.confidenceLabel,
251
+ significance: meta.significanceScore,
252
+ urgency: meta.urgency,
253
+ };
254
+ }
255
+ }
256
+ catch (error) {
257
+ // No date-specific analysis available — proceed without enrichment
258
+ if (process.env.DEBUG || process.env.LOG_LEVEL === 'debug') {
259
+ console.error(`⚠️ Failed to load date-specific analysis for ${dateStr}:`, error);
260
+ }
261
+ }
262
+ for (const lang of missingLangs) {
263
+ try {
264
+ const content = generateArticleContent(data, dataKey, lang);
265
+ const watchPoints = extractWatchPoints(data, lang);
266
+ const metadata = generateMetadata(data, dataKey, lang);
267
+ const readTime = calculateReadTime(content);
268
+ const sources = generateSources([toolName]);
269
+ // Get titles
270
+ const dataItems = Object.values(data)[0];
271
+ const count = Array.isArray(dataItems) ? dataItems.length : 0;
272
+ let titles;
273
+ if (type === 'week-ahead') {
274
+ const fn = titleMap[lang] || titleMap.en;
275
+ titles = fn(dateStr, weekEnd);
276
+ }
277
+ else {
278
+ const fn = titleMap[lang] || titleMap.en;
279
+ titles = fn(count);
280
+ }
281
+ const html = generateArticleHTML({
282
+ slug: `${slug}-${lang}.html`,
283
+ title: titles.title,
284
+ subtitle: titles.subtitle,
285
+ date: dateStr,
286
+ type: type === 'week-ahead' ? 'prospective' : 'analysis',
287
+ readTime,
288
+ lang,
289
+ content,
290
+ watchPoints,
291
+ sources,
292
+ keywords: metadata.keywords,
293
+ topics: metadata.topics,
294
+ tags: metadata.tags,
295
+ ...(enrichment ?? {}),
296
+ });
297
+ if (dryRun) {
298
+ console.log(` [DRY RUN] Would write: ${slug}-${lang}.html`);
299
+ }
300
+ else {
301
+ const filepath = path.join(NEWS_DIR, `${slug}-${lang}.html`);
302
+ fs.writeFileSync(filepath, html, 'utf-8');
303
+ console.log(` ✅ ${slug}-${lang}.html`);
304
+ }
305
+ generated++;
306
+ }
307
+ catch (err) {
308
+ console.error(` ❌ ${lang}: ${err.message}`);
309
+ }
310
+ }
311
+ return generated;
312
+ }
313
+ // ---------------------------------------------------------------------------
314
+ // Main
315
+ // ---------------------------------------------------------------------------
316
+ async function main() {
317
+ console.log('');
318
+ console.log('═══════════════════════════════════════════════════════');
319
+ console.log(' 📰 Riksdagsmonitor News Backport Generator');
320
+ console.log('═══════════════════════════════════════════════════════');
321
+ console.log(` From: ${fromDate}`);
322
+ console.log(` To: ${toDate}`);
323
+ console.log(` Mode: ${mode}`);
324
+ console.log(` Types: ${articleTypes.join(', ')}`);
325
+ console.log(` Languages: ${languages.join(', ')}`);
326
+ console.log(` Dry run: ${dryRun ? 'Yes' : 'No'}`);
327
+ console.log(` Delay: ${delayMs}ms between MCP calls`);
328
+ console.log('═══════════════════════════════════════════════════════');
329
+ console.log('');
330
+ const dates = mode === 'weekly'
331
+ ? getMondaysInRange(fromDate, toDate)
332
+ : getDaysInRange(fromDate, toDate);
333
+ console.log(`📅 ${dates.length} ${mode === 'weekly' ? 'weeks' : 'days'} to process\n`);
334
+ const client = new MCPClient();
335
+ let totalGenerated = 0;
336
+ let totalSkipped = 0;
337
+ let totalErrors = 0;
338
+ for (const date of dates) {
339
+ const dateStr = formatDate(date);
340
+ console.log(`\n📆 Processing ${dateStr}...`);
341
+ for (const type of articleTypes) {
342
+ console.log(` 📰 Type: ${type}`);
343
+ try {
344
+ const count = await generateForDate(date, type, client);
345
+ totalGenerated += count;
346
+ if (count === 0)
347
+ totalSkipped++;
348
+ await delay(delayMs);
349
+ }
350
+ catch (err) {
351
+ console.error(` ❌ Error for ${type} on ${dateStr}: ${err.message}`);
352
+ totalErrors++;
353
+ }
354
+ }
355
+ }
356
+ console.log('');
357
+ console.log('═══════════════════════════════════════════════════════');
358
+ console.log(' 📊 Backport Summary');
359
+ console.log('═══════════════════════════════════════════════════════');
360
+ console.log(` Dates processed: ${dates.length}`);
361
+ console.log(` Articles created: ${totalGenerated}`);
362
+ console.log(` Skipped (exist): ${totalSkipped}`);
363
+ console.log(` Errors: ${totalErrors}`);
364
+ console.log('═══════════════════════════════════════════════════════');
365
+ console.log('');
366
+ if (!dryRun && totalGenerated > 0) {
367
+ console.log('💡 Run the following to update indexes:');
368
+ console.log(' node scripts/generate-news-indexes.js');
369
+ console.log(' node scripts/generate-sitemap.js');
370
+ }
371
+ if (totalErrors > 0 && totalGenerated === 0) {
372
+ process.exit(1);
373
+ }
374
+ }
375
+ main().catch((err) => {
376
+ console.error('💥 Fatal error:', err.message);
377
+ process.exit(1);
378
+ });
379
+ //# sourceMappingURL=generate-news-backport.js.map