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,428 @@
1
+ /**
2
+ * @module ContentGeneration/BreakingNews
3
+ * @category ContentGeneration
4
+ *
5
+ * @title Breaking News Article Generator - Event-Driven Intelligence Module
6
+ *
7
+ * @description
8
+ * **INTELLIGENCE OPERATIVE PERSPECTIVE**
9
+ *
10
+ * This module generates breaking news articles for significant parliamentary events,
11
+ * operating as the real-time intelligence alert layer of the platform. Breaking news
12
+ * covers voting surprises, unexpected statements, coalition developments, and crisis
13
+ * situations that demand immediate notification to stakeholders. In intelligence
14
+ * operations, breaking news serves the critical function of alerting analysts to
15
+ * developments that may change strategic assessments.
16
+ *
17
+ * **ARTICLE SCOPE & TRIGGERS:**
18
+ * Breaking news articles are generated when:
19
+ * - Unexpected or significant parliamentary votes occur
20
+ * - Surprise announcements from government or opposition
21
+ * - Coalition realignment or party conflict erupts
22
+ * - Procedural surprises or rule violations
23
+ * - International incident affects Swedish politics
24
+ * - Crisis response requiring immediate parliamentary action
25
+ *
26
+ * **CONTENT STRUCTURE:**
27
+ * Each breaking news article follows a standardized intelligence format:
28
+ * 1. **What Happened**: Factual description of event in first 100 words
29
+ * 2. **Why It Matters**: Political implications and stakeholder impact
30
+ * 3. **Party Reactions**: Documented positions from major parties
31
+ * 4. **Coalition Impact**: How development affects government stability
32
+ * 5. **Next Steps**: Predicted follow-up actions or timeline
33
+ *
34
+ * **MCP DATA SOURCES:**
35
+ * Required tools for article validation (validation layer):
36
+ * - search_voteringar: Vote records for parliamentary actions
37
+ * - get_voting_group: Group voting patterns showing party consensus/splits
38
+ * - search_anforanden: Member speeches providing context and reactions
39
+ * - search_ledamoter: Member information for quote attribution
40
+ *
41
+ * **IMPLEMENTATION STATUS:**
42
+ * - All four MCP tools implemented: search_voteringar, get_voting_group,
43
+ * search_anforanden, search_ledamoter (all called unconditionally;
44
+ * parameters are enriched when voteId is present for voting tools, and
45
+ * when a speaker name is found in speech results for search_ledamoter)
46
+ *
47
+ * **INTELLIGENCE ANALYSIS FRAMEWORK:**
48
+ * Breaking news articles incorporate:
49
+ * - Vote tallies showing coalition positions
50
+ * - Historical voting pattern changes (anomaly detection)
51
+ * - Statement analysis from parliamentary speeches
52
+ * - Member career progression (political weight analysis)
53
+ * - Timeline reconstruction of surprising developments
54
+ *
55
+ * **LANGUAGE SUPPORT (14 Languages):**
56
+ * - Swedish (SV): Source language, immediate publication
57
+ * - English (EN): Primary international audience
58
+ * - Nordic (DA, NO, FI): Regional distribution
59
+ * - European (DE, FR, ES, NL): Continental coverage
60
+ * - Middle Eastern (AR, HE): Diplomatic audience
61
+ * - Asian (JA, KO, ZH): Economic audience
62
+ *
63
+ * **OPERATIONAL WORKFLOW:**
64
+ * 1. Event Detection: Monitor voting patterns for anomalies
65
+ * 2. Context Gathering: Retrieve vote details, speeches, member info
66
+ * 3. Analysis: Assess political significance and implications
67
+ * 4. Article Generation: Create structure with MCP data citations
68
+ * 5. Translation: Generate non-Swedish language versions
69
+ * 6. Publication: Deploy to news directory with metadata
70
+ *
71
+ * **TIMING CONSIDERATIONS:**
72
+ * - Trigger: Within 15 minutes of vote conclusion
73
+ * - Generation: 5-10 minutes including MCP calls and translation
74
+ * - Publication: Immediate upon completion (no editorial delay)
75
+ * - Update Cycle: Revisits article if new votes/statements within 1 hour
76
+ *
77
+ * **INTELLIGENCE QUALITY METRICS:**
78
+ * - Quote Count: Minimum 3+ party perspectives represented
79
+ * - Source Density: At least 4 distinct MCP tool calls
80
+ * - Temporal Accuracy: Timestamp synchronization with actual vote
81
+ * - Political Neutrality: Balanced presentation across ideological spectrum
82
+ *
83
+ * **RISK ASSESSMENT INTEGRATION:**
84
+ * Breaking news articles feed into risk assessment models:
85
+ * - Coalition Stability: Changes in government support indicators
86
+ * - Political Volatility: Frequency and magnitude of unexpected votes
87
+ * - Member Realignment: Crossing party lines signals cooperation changes
88
+ * - Crisis Indicators: Sudden procedural or security-related developments
89
+ *
90
+ * **MULTILINGUAL CONTENT CHALLENGES:**
91
+ * - Idiom Translation: Political terminology varies across languages
92
+ * - Cultural Context: Swedish political references need international explanation
93
+ * - Urgency Signaling: Different languages emphasize breaking news differently
94
+ * - Member Names: Proper name formatting rules vary by target language
95
+ *
96
+ * **PERFORMANCE OPTIMIZATION:**
97
+ * - MCP Query Caching: 2-hour cache for frequently-requested data
98
+ * - Parallel Translation: All 14 languages generated simultaneously
99
+ * - Incremental Parsing: Stream vote data to prevent full loads
100
+ * - Smart Updates: Only regenerate articles with new/changed data
101
+ *
102
+ * **FAILURE SCENARIOS:**
103
+ * - MCP Service Down: Graceful degradation with cached data
104
+ * - Translation Failure: Fall back to machine translation + manual review queue
105
+ * - Missing Member Data: Generate article with available quotes
106
+ * - Parsing Error: Alert editorial team, skip problematic article
107
+ *
108
+ * **GDPR COMPLIANCE:**
109
+ * - Member quotes sourced to specific votes (transparency)
110
+ * - Personal data handling follows DPA requirements
111
+ * - Data retention integrated with article archive policy
112
+ * - Member consent tracking for non-public statements
113
+ *
114
+ * @osint Real-Time Intelligence Alerting
115
+ * - Detects parliamentary surprises through pattern matching
116
+ * - Monitors voting behavior changes (anomalies = story potential)
117
+ * - Tracks member alliances through cross-party voting patterns
118
+ * - Enables rapid response to developing situations
119
+ *
120
+ * @risk Coalition Stability Monitoring
121
+ * - Unexpected votes indicate coalition stress or realignment
122
+ * - Tracks frequency of cross-party voting as stability indicator
123
+ * - Alerts to procedural surprises that may signal conflict
124
+ * - Monitors government support metrics in real-time
125
+ *
126
+ * @gdpr Personal Data in Political Context
127
+ * - Member quotes tied to specific parliamentary records
128
+ * - Public statements treated as legitimate news sources
129
+ * - Personal data minimized to what's necessary for context
130
+ * - Audit trail connects claims to source documents
131
+ *
132
+ * @security Real-Time Content Integrity
133
+ * - Validates vote data before article publication
134
+ * - Prevents publication of unconfirmed votes
135
+ * - Timestamp synchronization detects tampering
136
+ * - Quote attribution verification through MCP records
137
+ *
138
+ * @author Hack23 AB (Real-Time Intelligence & News Operations)
139
+ * @license Apache-2.0
140
+ * @version 2.1.0
141
+ * @since 2024-09-10
142
+ * @see scripts/data-transformers.js (Content Generation Utilities)
143
+ * @see scripts/article-template.js (HTML Generation)
144
+ * @see Issue #144 (Breaking News Enhancement)
145
+ * @see Issue #145 (Voting Anomaly Detection)
146
+ */
147
+ import { MCPClient } from '../mcp-client.js';
148
+ import { generateArticleContent, extractWatchPoints, generateMetadata, calculateReadTime, generateSources } from '../data-transformers.js';
149
+ import { generateArticleHTML } from '../article-template.js';
150
+ import { scoreDocuments, BREAKING_NEWS_THRESHOLD } from '../ai-analysis/political-significance.js';
151
+ import { generateDynamicTitle, getAnalysisEnrichment } from '../generate-news-enhanced/helpers.js';
152
+ import { buildArticleVisualizationSections } from '../generate-news-enhanced/generators.js';
153
+ /**
154
+ * Required MCP tools for breaking news articles
155
+ *
156
+ * IMPLEMENTATION STATUS:
157
+ * - search_voteringar: ✅ Implemented (always called; parameters enriched when voteId is present)
158
+ * - get_voting_group: ✅ Implemented (always called; parameters enriched when voteId is present)
159
+ * - search_anforanden: ✅ Implemented (always called; parameters enriched when topic is present)
160
+ * - search_ledamoter: ✅ Implemented (always called; parameters enriched when a speaker name is found in search_anforanden results)
161
+ */
162
+ export const REQUIRED_TOOLS = [
163
+ 'search_voteringar',
164
+ 'get_voting_group',
165
+ 'search_anforanden',
166
+ 'search_ledamoter'
167
+ ];
168
+ /**
169
+ * Format date for article slug
170
+ */
171
+ export function formatDateForSlug(date = new Date()) {
172
+ return date.toISOString().split('T')[0] ?? '';
173
+ }
174
+ /**
175
+ * Generate Breaking News article
176
+ *
177
+ * @param options - Generation options
178
+ */
179
+ export async function generateBreakingNews(options = {}) {
180
+ const { languages = ['en', 'sv'], eventContext = 'Breaking parliamentary development', eventData = null, writeArticle = null } = options;
181
+ console.log('⚡ Generating Breaking News article...');
182
+ const mcpCalls = [];
183
+ try {
184
+ const client = new MCPClient();
185
+ // If no event data provided, this is a placeholder
186
+ if (!eventData) {
187
+ console.log(' ⚠️ No event data provided - breaking news requires manual trigger with context');
188
+ return {
189
+ success: false,
190
+ error: 'Breaking news requires event context and data',
191
+ mcpCalls
192
+ };
193
+ }
194
+ // Tool 1: search_voteringar — vote records (enriched with voteId when available)
195
+ try {
196
+ console.log(' 🔄 Fetching voting details...');
197
+ const votes = await client.fetchVotingRecords(eventData.voteId ? { punkt: eventData.voteId } : { limit: 5 });
198
+ mcpCalls.push({ tool: 'search_voteringar', result: votes });
199
+ }
200
+ catch (err) {
201
+ console.warn(' ⚠ search_voteringar unavailable:', err.message);
202
+ mcpCalls.push({ tool: 'search_voteringar', result: [] });
203
+ }
204
+ // Tool 2: get_voting_group — party-level voting breakdown
205
+ try {
206
+ console.log(' 🔄 Fetching party voting breakdown...');
207
+ const votingGroup = await client.fetchVotingGroup(eventData.voteId ? { punkt: eventData.voteId, groupBy: 'parti' } : { groupBy: 'parti', limit: 5 });
208
+ mcpCalls.push({ tool: 'get_voting_group', result: votingGroup });
209
+ }
210
+ catch (err) {
211
+ console.warn(' ⚠ get_voting_group unavailable:', err.message);
212
+ mcpCalls.push({ tool: 'get_voting_group', result: [] });
213
+ }
214
+ // Tool 3: search_anforanden — speeches providing context and reactions
215
+ let speechList = [];
216
+ try {
217
+ console.log(' 🔄 Fetching related speeches...');
218
+ const speeches = await client.searchSpeeches(eventData.topic ? { text: eventData.topic, limit: 10 } : { limit: 5 });
219
+ speechList = Array.isArray(speeches) ? speeches : [];
220
+ mcpCalls.push({ tool: 'search_anforanden', result: speechList });
221
+ }
222
+ catch (err) {
223
+ console.warn(' ⚠ search_anforanden unavailable:', err.message);
224
+ mcpCalls.push({ tool: 'search_anforanden', result: [] });
225
+ }
226
+ // Tool 4: search_ledamoter — MP profiles for speaker context
227
+ try {
228
+ console.log(' 🔄 Fetching MP profiles for speaker context...');
229
+ const speakerName = speechList[0]?.['talare'];
230
+ const mps = await client.fetchMPs(speakerName ? { namn: speakerName, limit: 1 } : { limit: 5 });
231
+ mcpCalls.push({ tool: 'search_ledamoter', result: mps });
232
+ }
233
+ catch (err) {
234
+ console.warn(' ⚠ search_ledamoter unavailable:', err.message);
235
+ mcpCalls.push({ tool: 'search_ledamoter', result: [] });
236
+ }
237
+ // Compute political significance score when event documents are available.
238
+ // When no documents are provided (e.g., manually triggered breaking news),
239
+ // the significance gate is skipped — the caller is assumed to have already
240
+ // made the editorial decision to generate.
241
+ const eventDocs = eventData.documents ?? [];
242
+ let significance = null;
243
+ if (eventDocs.length > 0) {
244
+ significance = scoreDocuments(eventDocs);
245
+ console.log(` 📊 Political significance: ${significance.score}/100 (${significance.urgency})`);
246
+ // Gate: skip generation if significance is below threshold
247
+ if (significance.score < BREAKING_NEWS_THRESHOLD) {
248
+ console.log(` ⏭️ Significance ${significance.score} < ${BREAKING_NEWS_THRESHOLD} — skipping generation (not newsworthy)`);
249
+ return {
250
+ success: true,
251
+ files: 0,
252
+ mcpCalls,
253
+ };
254
+ }
255
+ }
256
+ const today = new Date();
257
+ const slug = `${formatDateForSlug(today)}-breaking-${eventData.slug || 'news'}`;
258
+ const articles = [];
259
+ const enrichment = await getAnalysisEnrichment();
260
+ for (const lang of languages) {
261
+ console.log(` 🌐 Generating ${lang.toUpperCase()} version...`);
262
+ const contentData = { context: eventContext };
263
+ const content = generateArticleContent(contentData, 'breaking', lang);
264
+ const watchPointData = { context: eventContext };
265
+ const watchPoints = extractWatchPoints(watchPointData, lang);
266
+ const metadata = generateMetadata(watchPointData, 'breaking', lang);
267
+ const readTime = calculateReadTime(content);
268
+ const sources = generateSources(mcpCalls.map((call) => call.tool));
269
+ const titles = getTitles(lang, eventContext);
270
+ // Enrich English title/subtitle with content-based highlights
271
+ const enriched = lang === 'en' ? generateDynamicTitle(titles.title, content, eventDocs.length) : titles;
272
+ // Build visualization sections (SWOT, dashboard)
273
+ const sections = buildArticleVisualizationSections(eventDocs, null, lang);
274
+ const html = generateArticleHTML({
275
+ slug: `${slug}-${lang}.html`,
276
+ title: enriched.title,
277
+ subtitle: enriched.subtitle,
278
+ date: today.toISOString().split('T')[0] ?? '',
279
+ type: 'breaking',
280
+ readTime,
281
+ lang,
282
+ content,
283
+ watchPoints,
284
+ sources,
285
+ keywords: metadata.keywords,
286
+ topics: metadata.topics,
287
+ tags: metadata.tags,
288
+ // Spread analysis enrichment first, then override significance/urgency
289
+ // with breaking-news-specific scores only when actually computed.
290
+ ...(enrichment ?? {}),
291
+ ...(significance != null
292
+ ? {
293
+ significance: significance.score,
294
+ urgency: significance.urgency,
295
+ }
296
+ : {}),
297
+ sections,
298
+ });
299
+ articles.push({
300
+ lang,
301
+ html,
302
+ filename: `${slug}-${lang}.html`,
303
+ slug: `${slug}-${lang}`
304
+ });
305
+ if (writeArticle) {
306
+ await writeArticle(html, `${slug}-${lang}.html`);
307
+ console.log(` ✅ ${lang.toUpperCase()} version generated`);
308
+ }
309
+ }
310
+ return {
311
+ success: true,
312
+ files: languages.length,
313
+ slug,
314
+ articles,
315
+ mcpCalls,
316
+ crossReferences: {
317
+ event: eventContext,
318
+ sources: mcpCalls.map((call) => call.tool)
319
+ }
320
+ };
321
+ }
322
+ catch (error) {
323
+ console.error('❌ Error generating Breaking News:', error.message);
324
+ return {
325
+ success: false,
326
+ error: error.message,
327
+ mcpCalls
328
+ };
329
+ }
330
+ }
331
+ function getTitles(lang, eventContext) {
332
+ const titles = {
333
+ en: {
334
+ title: `Breaking: ${eventContext}`,
335
+ subtitle: `Live coverage of major parliamentary development`
336
+ },
337
+ sv: {
338
+ title: `Senaste nytt: ${eventContext}`,
339
+ subtitle: `Direktrapportering från riksdagen`
340
+ },
341
+ da: {
342
+ title: `Seneste nyt: ${eventContext}`,
343
+ subtitle: `Direkte dækning af parlamentarisk udvikling`
344
+ },
345
+ no: {
346
+ title: `Siste nytt: ${eventContext}`,
347
+ subtitle: `Direkte dekning av parlamentarisk utvikling`
348
+ },
349
+ fi: {
350
+ title: `Viimeisimmät uutiset: ${eventContext}`,
351
+ subtitle: `Suora raportointi parlamentaarisesta kehityksestä`
352
+ },
353
+ de: {
354
+ title: `Eilmeldung: ${eventContext}`,
355
+ subtitle: `Live-Berichterstattung über parlamentarische Entwicklung`
356
+ },
357
+ fr: {
358
+ title: `Dernière minute: ${eventContext}`,
359
+ subtitle: `Couverture en direct du développement parlementaire`
360
+ },
361
+ es: {
362
+ title: `Última hora: ${eventContext}`,
363
+ subtitle: `Cobertura en vivo del desarrollo parlamentario`
364
+ },
365
+ nl: {
366
+ title: `Laatste nieuws: ${eventContext}`,
367
+ subtitle: `Live verslag van parlementaire ontwikkeling`
368
+ },
369
+ ar: {
370
+ title: `عاجل: ${eventContext}`,
371
+ subtitle: `تغطية مباشرة للتطورات البرلمانية`
372
+ },
373
+ he: {
374
+ title: `חדשות אחרונות: ${eventContext}`,
375
+ subtitle: `סיקור חי של התפתחות פרלמנטרית`
376
+ },
377
+ ja: {
378
+ title: `速報:${eventContext}`,
379
+ subtitle: `議会の重要な展開のライブカバレッジ`
380
+ },
381
+ ko: {
382
+ title: `속보: ${eventContext}`,
383
+ subtitle: `의회 주요 발전 실시간 보도`
384
+ },
385
+ zh: {
386
+ title: `快讯:${eventContext}`,
387
+ subtitle: `议会重大发展实时报道`
388
+ }
389
+ };
390
+ return titles[lang] || titles.en;
391
+ }
392
+ export function validateBreakingNews(article) {
393
+ const hasBreakingEvent = checkBreakingEvent(article);
394
+ const hasMinimumSources = countSources(article) >= 3;
395
+ const hasTimeliness = checkTimeliness(article);
396
+ const hasImpactAnalysis = checkImpactAnalysis(article);
397
+ return {
398
+ hasBreakingEvent,
399
+ hasMinimumSources,
400
+ hasTimeliness,
401
+ hasImpactAnalysis,
402
+ passed: hasBreakingEvent && hasMinimumSources && hasTimeliness && hasImpactAnalysis
403
+ };
404
+ }
405
+ function checkBreakingEvent(article) {
406
+ if (!article || !article.content)
407
+ return false;
408
+ return article.content.toLowerCase().includes('breaking') ||
409
+ article.content.toLowerCase().includes('development');
410
+ }
411
+ function countSources(article) {
412
+ if (!article || !article.sources)
413
+ return 0;
414
+ return Array.isArray(article.sources) ? article.sources.length : 0;
415
+ }
416
+ function checkTimeliness(article) {
417
+ if (!article || !article.content)
418
+ return false;
419
+ const timeKeywords = ['today', 'just now', 'breaking', 'latest'];
420
+ return timeKeywords.some(keyword => article.content.toLowerCase().includes(keyword));
421
+ }
422
+ function checkImpactAnalysis(article) {
423
+ if (!article || !article.content)
424
+ return false;
425
+ const impactKeywords = ['impact', 'significance', 'implications', 'consequences'];
426
+ return impactKeywords.some(keyword => article.content.toLowerCase().includes(keyword));
427
+ }
428
+ //# sourceMappingURL=breaking-news.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breaking-news.js","sourceRoot":"","sources":["../../../scripts/news-types/breaking-news.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * @module ContentGeneration/CommitteeAnalysis
3
+ * @category ContentGeneration
4
+ *
5
+ * @title Committee Reports Article Generator - Organizational Intelligence Module
6
+ *
7
+ * @description
8
+ * **INTELLIGENCE OPERATIVE PERSPECTIVE**
9
+ *
10
+ * This module generates analysis of Swedish Riksdag committee reports (betänkanden),
11
+ * serving as the organizational intelligence layer. Committees are where legislative
12
+ * power actually accumulates and policy details get determined, making committee
13
+ * analysis essential for understanding parliamentary strategy and identifying emerging
14
+ * policy trends before they reach full-house debate.
15
+ *
16
+ * **RIKSDAG COMMITTEE STRUCTURE (15 Committees):**
17
+ * Swedish parliament divides work among specialized committees, each with distinct
18
+ * intelligence value:
19
+ *
20
+ * **Security & Foreign Policy:**
21
+ * - Utrikesutskottet (Foreign Affairs Committee)
22
+ * Intelligence value: International relations, diplomatic initiatives
23
+ * - Försvarsutskottet (Defense Committee)
24
+ * Intelligence value: National security, military policy, NATO integration
25
+ * - Konstitutionsutskottet (Constitutional Committee)
26
+ * Intelligence value: Governmental powers, constitutional amendments
27
+ *
28
+ * **Economic & Fiscal Policy:**
29
+ * - Finansutskottet (Finance Committee)
30
+ * Intelligence value: Budget priorities, taxation, government spending
31
+ * - Näringsutskottet (Industry Committee)
32
+ * Intelligence value: Business regulation, competition policy
33
+ * - Trafikutskottet (Transport Committee)
34
+ * Intelligence value: Infrastructure investment, transportation policy
35
+ *
36
+ * **Social Policy:**
37
+ * - Socialutskottet (Social Affairs Committee)
38
+ * Intelligence value: Welfare policy, labor relations, pensions
39
+ * - Miljöutskottet (Environment Committee)
40
+ * Intelligence value: Climate policy, environmental regulation
41
+ * - Kulturutskottet (Cultural Affairs Committee)
42
+ * Intelligence value: Media policy, cultural subsidy allocation
43
+ *
44
+ * **Justice & Administration:**
45
+ * - Justitieutskottet (Justice Committee)
46
+ * Intelligence value: Criminal justice, court system, legal reform
47
+ * - Civilutskottet (Civil Affairs Committee)
48
+ * Intelligence value: Civil law, administrative procedure
49
+ *
50
+ * **Healthcare & Education:**
51
+ * - Hälso- och sjukvårdsutskottet (Health & Welfare Committee)
52
+ * Intelligence value: Healthcare policy, pharmaceutical regulation
53
+ * - Utbildningsutskottet (Education Committee)
54
+ * Intelligence value: Education policy, research funding
55
+ *
56
+ * **COMMITTEE REPORT INTELLIGENCE VALUE:**
57
+ * Committee reports (betänkanden) are detailed policy analyses that:
58
+ * 1. **Reveal Policy Priorities**: Which issues get sustained committee attention
59
+ * 2. **Show Consensus Building**: Which proposals achieve cross-party support
60
+ * 3. **Expose Disagreements**: Minority reports indicate party positions
61
+ * 4. **Foreshadow Future Votes**: Committee report often precedes parliamentary vote
62
+ * 5. **Document Expert Input**: Committee work includes civil society consultation
63
+ *
64
+ * **ARTICLE STRUCTURE:**
65
+ * Each committee report article includes:
66
+ * 1. Report Summary: Policy proposal and committee conclusions
67
+ * 2. Committee Composition: Party breakdown and balance analysis
68
+ * 3. Recommended Actions: What parliament should do with proposal
69
+ * 4. Party Positions: Explicit support/opposition from each party
70
+ * 5. Implementation Timeline: When policy would take effect if passed
71
+ *
72
+ * **MCP DATA SOURCE:**
73
+ * Primary tool: get_betankanden
74
+ * - Retrieves latest committee reports from riksdag data platform
75
+ * - Includes report metadata, summaries, full text
76
+ * - Enables systematic committee coverage
77
+ *
78
+ * **MCP TOOLS IMPLEMENTED:**
79
+ * - get_betankanden: Committee report metadata and full text
80
+ * - search_voteringar: Committee voting patterns
81
+ * - search_anforanden: Committee member statements
82
+ * - get_propositioner: Related government proposals
83
+ *
84
+ * **OPERATIONAL WORKFLOW:**
85
+ * 1. Query MCP: Fetch latest committee reports (default: 10 most recent)
86
+ * 2. Content Generation: Transform report data into article structure
87
+ * 3. Metadata Creation: Generate article metadata (tags, summary, etc.)
88
+ * 4. HTML Rendering: Apply article template for web publication
89
+ * 5. Multilingual Generation: Create 14-language edition set
90
+ * 6. File Writing: Save to news directory with timestamp
91
+ *
92
+ * **PUBLICATION SCHEDULE:**
93
+ * - Trigger: Weekly batch processing of new committee reports
94
+ * - Latency: 1-2 hours after MCP data update
95
+ * - Frequency: All new reports processed on same day
96
+ * - Archive: Reports indexed for historical analysis
97
+ *
98
+ * **INTELLIGENCE APPLICATIONS:**
99
+ * 1. **Policy Tracking**: Follow specific policy proposals through committee process
100
+ * 2. **Coalition Analysis**: Identify which parties cooperate on specific issues
101
+ * 3. **Committee Power Analysis**: Determine which committees drive agenda
102
+ * 4. **Early Warning**: Detect emerging policy directions
103
+ * 5. **Timeline Prediction**: Forecast when policies will reach parliament floor
104
+ *
105
+ * **LANGUAGE CONSIDERATIONS:**
106
+ * Committee terminology is highly technical and translates imperfectly:
107
+ * - Swedish: Detailed policy language with parliamentary terminology
108
+ * - English: Standard policy terminology, some concepts foreigners unfamiliar with
109
+ * - Nordic: Similar policy traditions, closer translations possible
110
+ * - Other Languages: Require significant contextual explanation
111
+ *
112
+ * **RISK ASSESSMENT FRAMEWORK:**
113
+ * Committee reports feed into risk analysis:
114
+ * - **Fiscal Risk**: Budget committee reports reveal spending concerns
115
+ * - **Security Risk**: Defense committee reports indicate threat perception
116
+ * - **Health Risk**: Health committee reports reveal pandemic/disease concerns
117
+ * - **Environmental Risk**: Environment committee reports highlight climate action
118
+ *
119
+ * **PERFORMANCE CHARACTERISTICS:**
120
+ * - MCP Query: ~500ms for 10 latest reports
121
+ * - Article Generation: ~2 seconds per report
122
+ * - Translation: ~5 seconds per report (parallel)
123
+ * - Total: ~15 seconds for full batch (10 reports, 14 languages)
124
+ *
125
+ * **FAILURE HANDLING:**
126
+ * - Missing Report Text: Generate article with metadata only
127
+ * - Translation Failure: Queue for manual translation review
128
+ * - MCP Service Down: Skip batch, retry on next schedule
129
+ * - Empty Result Set: Log as informational, no articles generated
130
+ *
131
+ * **GDPR COMPLIANCE:**
132
+ * - Committee member names published (public parliamentary records)
133
+ * - Personal statements tracked to source documents
134
+ * - Data retention tied to parliamentary archive policy
135
+ * - Right-to-be-forgotten handled through archive management
136
+ *
137
+ * @osint Committee Power Intelligence
138
+ * - Maps committee influence through report frequency and impact
139
+ * - Tracks coalition cooperation patterns at committee level
140
+ * - Identifies committee chairs as power brokers
141
+ * - Analyzes committee expertise and specialization
142
+ *
143
+ * @risk Policy Change Detection
144
+ * - Committee reports signal emerging policy directions
145
+ * - Tracks consensus-building across political spectrum
146
+ * - Detects unprecedented policy proposals
147
+ * - Monitors implementation timeline predictions
148
+ *
149
+ * @gdpr Public Record Documentation
150
+ * - Committee reports are public documents
151
+ * - Member statements in reports are public
152
+ * - Data retention follows parliamentary archive standards
153
+ * - Supporting audit trail for regulatory compliance
154
+ *
155
+ * @security Report Authenticity
156
+ * - Validates committee reports from official MCP source
157
+ * - Detects report modification or tampering
158
+ * - Timestamp synchronization prevents fraud
159
+ * - Source verification through official riksdag records
160
+ *
161
+ * @author Hack23 AB (Committee Intelligence & Policy Analysis)
162
+ * @license Apache-2.0
163
+ * @version 2.0.0
164
+ * @since 2024-08-25
165
+ * @see scripts/data-transformers.js (Content Generation)
166
+ * @see scripts/article-template.js (HTML Rendering)
167
+ * @see Issue #128 (Committee Analysis Enhancement)
168
+ * @see https://www.riksdagen.se/ (Riksdag Official Site)
169
+ */
170
+ import type { Language } from '../types/language.js';
171
+ import type { GenerationResult } from '../types/article.js';
172
+ /**
173
+ * Required MCP tools for committee-reports articles
174
+ */
175
+ export declare const REQUIRED_TOOLS: readonly string[];
176
+ export interface TitleSet {
177
+ title: string;
178
+ subtitle: string;
179
+ }
180
+ export interface CommitteeReportsValidationResult {
181
+ hasCommitteeReports: boolean;
182
+ hasMinimumSources: boolean;
183
+ hasAnalysisTone: boolean;
184
+ hasPartyPositions: boolean;
185
+ passed: boolean;
186
+ }
187
+ export interface ArticleInput {
188
+ content?: string;
189
+ sources?: string[];
190
+ [key: string]: unknown;
191
+ }
192
+ export interface GenerationOptions {
193
+ languages?: Language[];
194
+ limit?: number;
195
+ writeArticle?: ((html: string, filename: string) => Promise<void>) | null;
196
+ }
197
+ /**
198
+ * Format date for article slug
199
+ */
200
+ export declare function formatDateForSlug(date?: Date): string;
201
+ /**
202
+ * Generate Committee Reports article in specified languages
203
+ *
204
+ * @param options - Generation options
205
+ * @returns Generation result
206
+ */
207
+ export declare function generateCommitteeReports(options?: GenerationOptions): Promise<GenerationResult>;
208
+ /**
209
+ * Validate committee reports article structure
210
+ */
211
+ export declare function validateCommitteeReports(article: ArticleInput): CommitteeReportsValidationResult;
212
+ //# sourceMappingURL=committee-reports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"committee-reports.d.ts","sourceRoot":"","sources":["../../../scripts/news-types/committee-reports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwKG;AAeH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAqC,gBAAgB,EAAiB,MAAM,qBAAqB,CAAC;AAE9G;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAK3C,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gCAAgC;IAC/C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;CAC3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAEjE;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2HzG;AAuED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,gCAAgC,CAahG"}