riksdagsmonitor 0.8.21 → 0.8.24

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 (546) hide show
  1. package/README.md +53 -1
  2. package/dist/lib/dashboards/party-dashboard.js +2 -1
  3. package/dist/lib/dashboards/party-dashboard.js.map +1 -1
  4. package/dist/lib/dashboards/risk-dashboard.js +2 -1
  5. package/dist/lib/dashboards/risk-dashboard.js.map +1 -1
  6. package/dist/lib/shared/index.d.ts +0 -1
  7. package/dist/lib/shared/index.d.ts.map +1 -1
  8. package/dist/lib/shared/index.js +3 -1
  9. package/dist/lib/shared/index.js.map +1 -1
  10. package/dist/lib/shared/register-globals.d.ts +1 -1
  11. package/dist/lib/shared/register-globals.d.ts.map +1 -1
  12. package/dist/lib/shared/register-globals.js +7 -1
  13. package/dist/lib/shared/register-globals.js.map +1 -1
  14. package/package.json +54 -22
  15. package/dist/scripts/analysis-reader.d.ts +0 -241
  16. package/dist/scripts/analysis-reader.d.ts.map +0 -1
  17. package/dist/scripts/analysis-reader.js +0 -495
  18. package/dist/scripts/analysis-reader.js.map +0 -1
  19. package/dist/scripts/article-quality-enhancer.d.ts +0 -148
  20. package/dist/scripts/article-quality-enhancer.d.ts.map +0 -1
  21. package/dist/scripts/article-quality-enhancer.js +0 -430
  22. package/dist/scripts/article-quality-enhancer.js.map +0 -1
  23. package/dist/scripts/article-template/constants.d.ts +0 -104
  24. package/dist/scripts/article-template/constants.d.ts.map +0 -1
  25. package/dist/scripts/article-template/constants.js +0 -225
  26. package/dist/scripts/article-template/constants.js.map +0 -1
  27. package/dist/scripts/article-template/helpers.d.ts +0 -83
  28. package/dist/scripts/article-template/helpers.d.ts.map +0 -1
  29. package/dist/scripts/article-template/helpers.js +0 -236
  30. package/dist/scripts/article-template/helpers.js.map +0 -1
  31. package/dist/scripts/article-template/index.d.ts +0 -39
  32. package/dist/scripts/article-template/index.d.ts.map +0 -1
  33. package/dist/scripts/article-template/index.js +0 -37
  34. package/dist/scripts/article-template/index.js.map +0 -1
  35. package/dist/scripts/article-template/registry.d.ts +0 -64
  36. package/dist/scripts/article-template/registry.d.ts.map +0 -1
  37. package/dist/scripts/article-template/registry.js +0 -405
  38. package/dist/scripts/article-template/registry.js.map +0 -1
  39. package/dist/scripts/article-template/template.d.ts +0 -18
  40. package/dist/scripts/article-template/template.d.ts.map +0 -1
  41. package/dist/scripts/article-template/template.js +0 -359
  42. package/dist/scripts/article-template/template.js.map +0 -1
  43. package/dist/scripts/article-template/types.d.ts +0 -90
  44. package/dist/scripts/article-template/types.d.ts.map +0 -1
  45. package/dist/scripts/article-template/types.js +0 -96
  46. package/dist/scripts/article-template/types.js.map +0 -1
  47. package/dist/scripts/article-template.d.ts +0 -18
  48. package/dist/scripts/article-template.d.ts.map +0 -1
  49. package/dist/scripts/article-template.js +0 -18
  50. package/dist/scripts/article-template.js.map +0 -1
  51. package/dist/scripts/catalog-downloaded-data.d.ts +0 -66
  52. package/dist/scripts/catalog-downloaded-data.d.ts.map +0 -1
  53. package/dist/scripts/catalog-downloaded-data.js +0 -239
  54. package/dist/scripts/catalog-downloaded-data.js.map +0 -1
  55. package/dist/scripts/check-cia-schema-updates.d.ts +0 -186
  56. package/dist/scripts/check-cia-schema-updates.d.ts.map +0 -1
  57. package/dist/scripts/check-cia-schema-updates.js +0 -363
  58. package/dist/scripts/check-cia-schema-updates.js.map +0 -1
  59. package/dist/scripts/data-transformers/calendar.d.ts +0 -16
  60. package/dist/scripts/data-transformers/calendar.d.ts.map +0 -1
  61. package/dist/scripts/data-transformers/calendar.js +0 -137
  62. package/dist/scripts/data-transformers/calendar.js.map +0 -1
  63. package/dist/scripts/data-transformers/constants/committee-names.d.ts +0 -15
  64. package/dist/scripts/data-transformers/constants/committee-names.d.ts.map +0 -1
  65. package/dist/scripts/data-transformers/constants/committee-names.js +0 -30
  66. package/dist/scripts/data-transformers/constants/committee-names.js.map +0 -1
  67. package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts +0 -11
  68. package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts.map +0 -1
  69. package/dist/scripts/data-transformers/constants/content-labels-part1.js +0 -900
  70. package/dist/scripts/data-transformers/constants/content-labels-part1.js.map +0 -1
  71. package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts +0 -11
  72. package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts.map +0 -1
  73. package/dist/scripts/data-transformers/constants/content-labels-part2.js +0 -900
  74. package/dist/scripts/data-transformers/constants/content-labels-part2.js.map +0 -1
  75. package/dist/scripts/data-transformers/constants/content-labels.d.ts +0 -13
  76. package/dist/scripts/data-transformers/constants/content-labels.d.ts.map +0 -1
  77. package/dist/scripts/data-transformers/constants/content-labels.js +0 -18
  78. package/dist/scripts/data-transformers/constants/content-labels.js.map +0 -1
  79. package/dist/scripts/data-transformers/constants/index.d.ts +0 -15
  80. package/dist/scripts/data-transformers/constants/index.d.ts.map +0 -1
  81. package/dist/scripts/data-transformers/constants/index.js +0 -15
  82. package/dist/scripts/data-transformers/constants/index.js.map +0 -1
  83. package/dist/scripts/data-transformers/constants/locale-map.d.ts +0 -13
  84. package/dist/scripts/data-transformers/constants/locale-map.d.ts.map +0 -1
  85. package/dist/scripts/data-transformers/constants/locale-map.js +0 -17
  86. package/dist/scripts/data-transformers/constants/locale-map.js.map +0 -1
  87. package/dist/scripts/data-transformers/constants.d.ts +0 -14
  88. package/dist/scripts/data-transformers/constants.d.ts.map +0 -1
  89. package/dist/scripts/data-transformers/constants.js +0 -14
  90. package/dist/scripts/data-transformers/constants.js.map +0 -1
  91. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts +0 -64
  92. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts.map +0 -1
  93. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js +0 -805
  94. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js.map +0 -1
  95. package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts +0 -50
  96. package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts.map +0 -1
  97. package/dist/scripts/data-transformers/content-generators/cia-overview-section.js +0 -310
  98. package/dist/scripts/data-transformers/content-generators/cia-overview-section.js.map +0 -1
  99. package/dist/scripts/data-transformers/content-generators/committee.d.ts +0 -12
  100. package/dist/scripts/data-transformers/content-generators/committee.d.ts.map +0 -1
  101. package/dist/scripts/data-transformers/content-generators/committee.js +0 -247
  102. package/dist/scripts/data-transformers/content-generators/committee.js.map +0 -1
  103. package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts +0 -124
  104. package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts.map +0 -1
  105. package/dist/scripts/data-transformers/content-generators/dashboard-section.js +0 -564
  106. package/dist/scripts/data-transformers/content-generators/dashboard-section.js.map +0 -1
  107. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts +0 -82
  108. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts.map +0 -1
  109. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js +0 -321
  110. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js.map +0 -1
  111. package/dist/scripts/data-transformers/content-generators/generic.d.ts +0 -12
  112. package/dist/scripts/data-transformers/content-generators/generic.d.ts.map +0 -1
  113. package/dist/scripts/data-transformers/content-generators/generic.js +0 -295
  114. package/dist/scripts/data-transformers/content-generators/generic.js.map +0 -1
  115. package/dist/scripts/data-transformers/content-generators/index.d.ts +0 -84
  116. package/dist/scripts/data-transformers/content-generators/index.d.ts.map +0 -1
  117. package/dist/scripts/data-transformers/content-generators/index.js +0 -47
  118. package/dist/scripts/data-transformers/content-generators/index.js.map +0 -1
  119. package/dist/scripts/data-transformers/content-generators/interpellations.d.ts +0 -12
  120. package/dist/scripts/data-transformers/content-generators/interpellations.d.ts.map +0 -1
  121. package/dist/scripts/data-transformers/content-generators/interpellations.js +0 -124
  122. package/dist/scripts/data-transformers/content-generators/interpellations.js.map +0 -1
  123. package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts +0 -137
  124. package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts.map +0 -1
  125. package/dist/scripts/data-transformers/content-generators/mindmap-section.js +0 -286
  126. package/dist/scripts/data-transformers/content-generators/mindmap-section.js.map +0 -1
  127. package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts +0 -17
  128. package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts.map +0 -1
  129. package/dist/scripts/data-transformers/content-generators/month-ahead.js +0 -212
  130. package/dist/scripts/data-transformers/content-generators/month-ahead.js.map +0 -1
  131. package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts +0 -17
  132. package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts.map +0 -1
  133. package/dist/scripts/data-transformers/content-generators/monthly-review.js +0 -173
  134. package/dist/scripts/data-transformers/content-generators/monthly-review.js.map +0 -1
  135. package/dist/scripts/data-transformers/content-generators/motions.d.ts +0 -12
  136. package/dist/scripts/data-transformers/content-generators/motions.d.ts.map +0 -1
  137. package/dist/scripts/data-transformers/content-generators/motions.js +0 -158
  138. package/dist/scripts/data-transformers/content-generators/motions.js.map +0 -1
  139. package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts +0 -62
  140. package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts.map +0 -1
  141. package/dist/scripts/data-transformers/content-generators/newsworthiness.js +0 -254
  142. package/dist/scripts/data-transformers/content-generators/newsworthiness.js.map +0 -1
  143. package/dist/scripts/data-transformers/content-generators/propositions.d.ts +0 -12
  144. package/dist/scripts/data-transformers/content-generators/propositions.d.ts.map +0 -1
  145. package/dist/scripts/data-transformers/content-generators/propositions.js +0 -263
  146. package/dist/scripts/data-transformers/content-generators/propositions.js.map +0 -1
  147. package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts +0 -92
  148. package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts.map +0 -1
  149. package/dist/scripts/data-transformers/content-generators/sankey-section.js +0 -257
  150. package/dist/scripts/data-transformers/content-generators/sankey-section.js.map +0 -1
  151. package/dist/scripts/data-transformers/content-generators/shared.d.ts +0 -139
  152. package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +0 -1
  153. package/dist/scripts/data-transformers/content-generators/shared.js +0 -935
  154. package/dist/scripts/data-transformers/content-generators/shared.js.map +0 -1
  155. package/dist/scripts/data-transformers/content-generators/swot-section.d.ts +0 -50
  156. package/dist/scripts/data-transformers/content-generators/swot-section.d.ts.map +0 -1
  157. package/dist/scripts/data-transformers/content-generators/swot-section.js +0 -177
  158. package/dist/scripts/data-transformers/content-generators/swot-section.js.map +0 -1
  159. package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts +0 -12
  160. package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts.map +0 -1
  161. package/dist/scripts/data-transformers/content-generators/week-ahead.js +0 -332
  162. package/dist/scripts/data-transformers/content-generators/week-ahead.js.map +0 -1
  163. package/dist/scripts/data-transformers/content-generators.d.ts +0 -15
  164. package/dist/scripts/data-transformers/content-generators.d.ts.map +0 -1
  165. package/dist/scripts/data-transformers/content-generators.js +0 -14
  166. package/dist/scripts/data-transformers/content-generators.js.map +0 -1
  167. package/dist/scripts/data-transformers/document-analysis.d.ts +0 -58
  168. package/dist/scripts/data-transformers/document-analysis.d.ts.map +0 -1
  169. package/dist/scripts/data-transformers/document-analysis.js +0 -396
  170. package/dist/scripts/data-transformers/document-analysis.js.map +0 -1
  171. package/dist/scripts/data-transformers/helpers.d.ts +0 -144
  172. package/dist/scripts/data-transformers/helpers.d.ts.map +0 -1
  173. package/dist/scripts/data-transformers/helpers.js +0 -408
  174. package/dist/scripts/data-transformers/helpers.js.map +0 -1
  175. package/dist/scripts/data-transformers/index.d.ts +0 -45
  176. package/dist/scripts/data-transformers/index.d.ts.map +0 -1
  177. package/dist/scripts/data-transformers/index.js +0 -66
  178. package/dist/scripts/data-transformers/index.js.map +0 -1
  179. package/dist/scripts/data-transformers/metadata.d.ts +0 -42
  180. package/dist/scripts/data-transformers/metadata.d.ts.map +0 -1
  181. package/dist/scripts/data-transformers/metadata.js +0 -385
  182. package/dist/scripts/data-transformers/metadata.js.map +0 -1
  183. package/dist/scripts/data-transformers/policy-analysis.d.ts +0 -105
  184. package/dist/scripts/data-transformers/policy-analysis.d.ts.map +0 -1
  185. package/dist/scripts/data-transformers/policy-analysis.js +0 -686
  186. package/dist/scripts/data-transformers/policy-analysis.js.map +0 -1
  187. package/dist/scripts/data-transformers/risk-analysis.d.ts +0 -104
  188. package/dist/scripts/data-transformers/risk-analysis.d.ts.map +0 -1
  189. package/dist/scripts/data-transformers/risk-analysis.js +0 -279
  190. package/dist/scripts/data-transformers/risk-analysis.js.map +0 -1
  191. package/dist/scripts/data-transformers/types.d.ts +0 -260
  192. package/dist/scripts/data-transformers/types.d.ts.map +0 -1
  193. package/dist/scripts/data-transformers/types.js +0 -11
  194. package/dist/scripts/data-transformers/types.js.map +0 -1
  195. package/dist/scripts/data-transformers.d.ts +0 -23
  196. package/dist/scripts/data-transformers.d.ts.map +0 -1
  197. package/dist/scripts/data-transformers.js +0 -35
  198. package/dist/scripts/data-transformers.js.map +0 -1
  199. package/dist/scripts/deep-inspection/index.d.ts +0 -55
  200. package/dist/scripts/deep-inspection/index.d.ts.map +0 -1
  201. package/dist/scripts/deep-inspection/index.js +0 -66
  202. package/dist/scripts/deep-inspection/index.js.map +0 -1
  203. package/dist/scripts/detect-swedish-leakage.d.ts +0 -69
  204. package/dist/scripts/detect-swedish-leakage.d.ts.map +0 -1
  205. package/dist/scripts/detect-swedish-leakage.js +0 -417
  206. package/dist/scripts/detect-swedish-leakage.js.map +0 -1
  207. package/dist/scripts/editorial-framework.d.ts +0 -121
  208. package/dist/scripts/editorial-framework.d.ts.map +0 -1
  209. package/dist/scripts/editorial-framework.js +0 -364
  210. package/dist/scripts/editorial-framework.js.map +0 -1
  211. package/dist/scripts/editorial-pillars.d.ts +0 -43
  212. package/dist/scripts/editorial-pillars.d.ts.map +0 -1
  213. package/dist/scripts/editorial-pillars.js +0 -215
  214. package/dist/scripts/editorial-pillars.js.map +0 -1
  215. package/dist/scripts/extract-news-metadata.d.ts +0 -12
  216. package/dist/scripts/extract-news-metadata.d.ts.map +0 -1
  217. package/dist/scripts/extract-news-metadata.js +0 -107
  218. package/dist/scripts/extract-news-metadata.js.map +0 -1
  219. package/dist/scripts/extract-vocabulary.d.ts +0 -15
  220. package/dist/scripts/extract-vocabulary.d.ts.map +0 -1
  221. package/dist/scripts/extract-vocabulary.js +0 -255
  222. package/dist/scripts/extract-vocabulary.js.map +0 -1
  223. package/dist/scripts/fix-article-navigation.d.ts +0 -37
  224. package/dist/scripts/fix-article-navigation.d.ts.map +0 -1
  225. package/dist/scripts/fix-article-navigation.js +0 -198
  226. package/dist/scripts/fix-article-navigation.js.map +0 -1
  227. package/dist/scripts/fix-keywords-localization.d.ts +0 -18
  228. package/dist/scripts/fix-keywords-localization.d.ts.map +0 -1
  229. package/dist/scripts/fix-keywords-localization.js +0 -270
  230. package/dist/scripts/fix-keywords-localization.js.map +0 -1
  231. package/dist/scripts/fix-old-articles-branding.d.ts +0 -17
  232. package/dist/scripts/fix-old-articles-branding.d.ts.map +0 -1
  233. package/dist/scripts/fix-old-articles-branding.js +0 -229
  234. package/dist/scripts/fix-old-articles-branding.js.map +0 -1
  235. package/dist/scripts/generate-news-backport.d.ts +0 -16
  236. package/dist/scripts/generate-news-backport.d.ts.map +0 -1
  237. package/dist/scripts/generate-news-backport.js +0 -379
  238. package/dist/scripts/generate-news-backport.js.map +0 -1
  239. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts +0 -141
  240. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts.map +0 -1
  241. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js +0 -546
  242. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js.map +0 -1
  243. package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts +0 -59
  244. package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts.map +0 -1
  245. package/dist/scripts/generate-news-enhanced/analysis-cache.js +0 -116
  246. package/dist/scripts/generate-news-enhanced/analysis-cache.js.map +0 -1
  247. package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts +0 -58
  248. package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts.map +0 -1
  249. package/dist/scripts/generate-news-enhanced/analysis-labels.js +0 -144
  250. package/dist/scripts/generate-news-enhanced/analysis-labels.js.map +0 -1
  251. package/dist/scripts/generate-news-enhanced/config.d.ts +0 -58
  252. package/dist/scripts/generate-news-enhanced/config.d.ts.map +0 -1
  253. package/dist/scripts/generate-news-enhanced/config.js +0 -286
  254. package/dist/scripts/generate-news-enhanced/config.js.map +0 -1
  255. package/dist/scripts/generate-news-enhanced/generators.d.ts +0 -119
  256. package/dist/scripts/generate-news-enhanced/generators.d.ts.map +0 -1
  257. package/dist/scripts/generate-news-enhanced/generators.js +0 -2131
  258. package/dist/scripts/generate-news-enhanced/generators.js.map +0 -1
  259. package/dist/scripts/generate-news-enhanced/helpers.d.ts +0 -122
  260. package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +0 -1
  261. package/dist/scripts/generate-news-enhanced/helpers.js +0 -468
  262. package/dist/scripts/generate-news-enhanced/helpers.js.map +0 -1
  263. package/dist/scripts/generate-news-enhanced/index.d.ts +0 -19
  264. package/dist/scripts/generate-news-enhanced/index.d.ts.map +0 -1
  265. package/dist/scripts/generate-news-enhanced/index.js +0 -221
  266. package/dist/scripts/generate-news-enhanced/index.js.map +0 -1
  267. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts +0 -46
  268. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +0 -1
  269. package/dist/scripts/generate-news-enhanced/swot-analyzer.js +0 -1227
  270. package/dist/scripts/generate-news-enhanced/swot-analyzer.js.map +0 -1
  271. package/dist/scripts/generate-news-enhanced/types.d.ts +0 -34
  272. package/dist/scripts/generate-news-enhanced/types.d.ts.map +0 -1
  273. package/dist/scripts/generate-news-enhanced/types.js +0 -9
  274. package/dist/scripts/generate-news-enhanced/types.js.map +0 -1
  275. package/dist/scripts/generate-news-enhanced.d.ts +0 -25
  276. package/dist/scripts/generate-news-enhanced.d.ts.map +0 -1
  277. package/dist/scripts/generate-news-enhanced.js +0 -37
  278. package/dist/scripts/generate-news-enhanced.js.map +0 -1
  279. package/dist/scripts/generate-news-indexes/constants.d.ts +0 -20
  280. package/dist/scripts/generate-news-indexes/constants.d.ts.map +0 -1
  281. package/dist/scripts/generate-news-indexes/constants.js +0 -308
  282. package/dist/scripts/generate-news-indexes/constants.js.map +0 -1
  283. package/dist/scripts/generate-news-indexes/helpers.d.ts +0 -73
  284. package/dist/scripts/generate-news-indexes/helpers.d.ts.map +0 -1
  285. package/dist/scripts/generate-news-indexes/helpers.js +0 -352
  286. package/dist/scripts/generate-news-indexes/helpers.js.map +0 -1
  287. package/dist/scripts/generate-news-indexes/index.d.ts +0 -20
  288. package/dist/scripts/generate-news-indexes/index.d.ts.map +0 -1
  289. package/dist/scripts/generate-news-indexes/index.js +0 -75
  290. package/dist/scripts/generate-news-indexes/index.js.map +0 -1
  291. package/dist/scripts/generate-news-indexes/template.d.ts +0 -25
  292. package/dist/scripts/generate-news-indexes/template.d.ts.map +0 -1
  293. package/dist/scripts/generate-news-indexes/template.js +0 -644
  294. package/dist/scripts/generate-news-indexes/template.js.map +0 -1
  295. package/dist/scripts/generate-news-indexes/types.d.ts +0 -96
  296. package/dist/scripts/generate-news-indexes/types.d.ts.map +0 -1
  297. package/dist/scripts/generate-news-indexes/types.js +0 -9
  298. package/dist/scripts/generate-news-indexes/types.js.map +0 -1
  299. package/dist/scripts/generate-news-indexes.d.ts +0 -20
  300. package/dist/scripts/generate-news-indexes.d.ts.map +0 -1
  301. package/dist/scripts/generate-news-indexes.js +0 -19
  302. package/dist/scripts/generate-news-indexes.js.map +0 -1
  303. package/dist/scripts/generate-rss.d.ts +0 -48
  304. package/dist/scripts/generate-rss.d.ts.map +0 -1
  305. package/dist/scripts/generate-rss.js +0 -299
  306. package/dist/scripts/generate-rss.js.map +0 -1
  307. package/dist/scripts/generate-sitemap-html.d.ts +0 -79
  308. package/dist/scripts/generate-sitemap-html.d.ts.map +0 -1
  309. package/dist/scripts/generate-sitemap-html.js +0 -878
  310. package/dist/scripts/generate-sitemap-html.js.map +0 -1
  311. package/dist/scripts/generate-sitemap.d.ts +0 -23
  312. package/dist/scripts/generate-sitemap.d.ts.map +0 -1
  313. package/dist/scripts/generate-sitemap.js +0 -476
  314. package/dist/scripts/generate-sitemap.js.map +0 -1
  315. package/dist/scripts/generate-types-from-cia-schemas.d.ts +0 -176
  316. package/dist/scripts/generate-types-from-cia-schemas.d.ts.map +0 -1
  317. package/dist/scripts/generate-types-from-cia-schemas.js +0 -318
  318. package/dist/scripts/generate-types-from-cia-schemas.js.map +0 -1
  319. package/dist/scripts/government-role-validator.d.ts +0 -65
  320. package/dist/scripts/government-role-validator.d.ts.map +0 -1
  321. package/dist/scripts/government-role-validator.js +0 -217
  322. package/dist/scripts/government-role-validator.js.map +0 -1
  323. package/dist/scripts/html-utils.d.ts +0 -17
  324. package/dist/scripts/html-utils.d.ts.map +0 -1
  325. package/dist/scripts/html-utils.js +0 -29
  326. package/dist/scripts/html-utils.js.map +0 -1
  327. package/dist/scripts/load-cia-stats.d.ts +0 -89
  328. package/dist/scripts/load-cia-stats.d.ts.map +0 -1
  329. package/dist/scripts/load-cia-stats.js +0 -400
  330. package/dist/scripts/load-cia-stats.js.map +0 -1
  331. package/dist/scripts/mcp-client/client.d.ts +0 -73
  332. package/dist/scripts/mcp-client/client.d.ts.map +0 -1
  333. package/dist/scripts/mcp-client/client.js +0 -526
  334. package/dist/scripts/mcp-client/client.js.map +0 -1
  335. package/dist/scripts/mcp-client/document-types.d.ts +0 -23
  336. package/dist/scripts/mcp-client/document-types.d.ts.map +0 -1
  337. package/dist/scripts/mcp-client/document-types.js +0 -62
  338. package/dist/scripts/mcp-client/document-types.js.map +0 -1
  339. package/dist/scripts/mcp-client/index.d.ts +0 -34
  340. package/dist/scripts/mcp-client/index.d.ts.map +0 -1
  341. package/dist/scripts/mcp-client/index.js +0 -67
  342. package/dist/scripts/mcp-client/index.js.map +0 -1
  343. package/dist/scripts/mcp-client/transport.d.ts +0 -32
  344. package/dist/scripts/mcp-client/transport.d.ts.map +0 -1
  345. package/dist/scripts/mcp-client/transport.js +0 -102
  346. package/dist/scripts/mcp-client/transport.js.map +0 -1
  347. package/dist/scripts/mcp-client.d.ts +0 -18
  348. package/dist/scripts/mcp-client.d.ts.map +0 -1
  349. package/dist/scripts/mcp-client.js +0 -18
  350. package/dist/scripts/mcp-client.js.map +0 -1
  351. package/dist/scripts/mcp-query-cli.d.ts +0 -25
  352. package/dist/scripts/mcp-query-cli.d.ts.map +0 -1
  353. package/dist/scripts/mcp-query-cli.js +0 -66
  354. package/dist/scripts/mcp-query-cli.js.map +0 -1
  355. package/dist/scripts/news-types/breaking-news.d.ts +0 -178
  356. package/dist/scripts/news-types/breaking-news.d.ts.map +0 -1
  357. package/dist/scripts/news-types/breaking-news.js +0 -432
  358. package/dist/scripts/news-types/breaking-news.js.map +0 -1
  359. package/dist/scripts/news-types/committee-reports.d.ts +0 -212
  360. package/dist/scripts/news-types/committee-reports.d.ts.map +0 -1
  361. package/dist/scripts/news-types/committee-reports.js +0 -404
  362. package/dist/scripts/news-types/committee-reports.js.map +0 -1
  363. package/dist/scripts/news-types/month-ahead.d.ts +0 -71
  364. package/dist/scripts/news-types/month-ahead.d.ts.map +0 -1
  365. package/dist/scripts/news-types/month-ahead.js +0 -392
  366. package/dist/scripts/news-types/month-ahead.js.map +0 -1
  367. package/dist/scripts/news-types/monthly-review.d.ts +0 -61
  368. package/dist/scripts/news-types/monthly-review.d.ts.map +0 -1
  369. package/dist/scripts/news-types/monthly-review.js +0 -417
  370. package/dist/scripts/news-types/monthly-review.js.map +0 -1
  371. package/dist/scripts/news-types/motions.d.ts +0 -214
  372. package/dist/scripts/news-types/motions.d.ts.map +0 -1
  373. package/dist/scripts/news-types/motions.js +0 -447
  374. package/dist/scripts/news-types/motions.js.map +0 -1
  375. package/dist/scripts/news-types/propositions.d.ts +0 -204
  376. package/dist/scripts/news-types/propositions.d.ts.map +0 -1
  377. package/dist/scripts/news-types/propositions.js +0 -401
  378. package/dist/scripts/news-types/propositions.js.map +0 -1
  379. package/dist/scripts/news-types/week-ahead.d.ts +0 -231
  380. package/dist/scripts/news-types/week-ahead.d.ts.map +0 -1
  381. package/dist/scripts/news-types/week-ahead.js +0 -441
  382. package/dist/scripts/news-types/week-ahead.js.map +0 -1
  383. package/dist/scripts/news-types/weekly-review/analysis.d.ts +0 -47
  384. package/dist/scripts/news-types/weekly-review/analysis.d.ts.map +0 -1
  385. package/dist/scripts/news-types/weekly-review/analysis.js +0 -276
  386. package/dist/scripts/news-types/weekly-review/analysis.js.map +0 -1
  387. package/dist/scripts/news-types/weekly-review/data-loader.d.ts +0 -51
  388. package/dist/scripts/news-types/weekly-review/data-loader.d.ts.map +0 -1
  389. package/dist/scripts/news-types/weekly-review/data-loader.js +0 -298
  390. package/dist/scripts/news-types/weekly-review/data-loader.js.map +0 -1
  391. package/dist/scripts/news-types/weekly-review/generator.d.ts +0 -18
  392. package/dist/scripts/news-types/weekly-review/generator.d.ts.map +0 -1
  393. package/dist/scripts/news-types/weekly-review/generator.js +0 -284
  394. package/dist/scripts/news-types/weekly-review/generator.js.map +0 -1
  395. package/dist/scripts/news-types/weekly-review/index.d.ts +0 -20
  396. package/dist/scripts/news-types/weekly-review/index.d.ts.map +0 -1
  397. package/dist/scripts/news-types/weekly-review/index.js +0 -23
  398. package/dist/scripts/news-types/weekly-review/index.js.map +0 -1
  399. package/dist/scripts/news-types/weekly-review/types.d.ts +0 -72
  400. package/dist/scripts/news-types/weekly-review/types.d.ts.map +0 -1
  401. package/dist/scripts/news-types/weekly-review/types.js +0 -20
  402. package/dist/scripts/news-types/weekly-review/types.js.map +0 -1
  403. package/dist/scripts/news-types/weekly-review/validation.d.ts +0 -10
  404. package/dist/scripts/news-types/weekly-review/validation.d.ts.map +0 -1
  405. package/dist/scripts/news-types/weekly-review/validation.js +0 -95
  406. package/dist/scripts/news-types/weekly-review/validation.js.map +0 -1
  407. package/dist/scripts/news-types/weekly-review.d.ts +0 -15
  408. package/dist/scripts/news-types/weekly-review.d.ts.map +0 -1
  409. package/dist/scripts/news-types/weekly-review.js +0 -14
  410. package/dist/scripts/news-types/weekly-review.js.map +0 -1
  411. package/dist/scripts/party-variants.d.ts +0 -23
  412. package/dist/scripts/party-variants.d.ts.map +0 -1
  413. package/dist/scripts/party-variants.js +0 -50
  414. package/dist/scripts/party-variants.js.map +0 -1
  415. package/dist/scripts/pipeline/index.d.ts +0 -19
  416. package/dist/scripts/pipeline/index.d.ts.map +0 -1
  417. package/dist/scripts/pipeline/index.js +0 -17
  418. package/dist/scripts/pipeline/index.js.map +0 -1
  419. package/dist/scripts/pipeline/orchestrator.d.ts +0 -56
  420. package/dist/scripts/pipeline/orchestrator.d.ts.map +0 -1
  421. package/dist/scripts/pipeline/orchestrator.js +0 -147
  422. package/dist/scripts/pipeline/orchestrator.js.map +0 -1
  423. package/dist/scripts/pipeline/types.d.ts +0 -117
  424. package/dist/scripts/pipeline/types.d.ts.map +0 -1
  425. package/dist/scripts/pipeline/types.js +0 -13
  426. package/dist/scripts/pipeline/types.js.map +0 -1
  427. package/dist/scripts/pipeline/validation.d.ts +0 -66
  428. package/dist/scripts/pipeline/validation.d.ts.map +0 -1
  429. package/dist/scripts/pipeline/validation.js +0 -129
  430. package/dist/scripts/pipeline/validation.js.map +0 -1
  431. package/dist/scripts/populate-analysis-data.d.ts +0 -41
  432. package/dist/scripts/populate-analysis-data.d.ts.map +0 -1
  433. package/dist/scripts/populate-analysis-data.js +0 -255
  434. package/dist/scripts/populate-analysis-data.js.map +0 -1
  435. package/dist/scripts/pre-article-analysis/data-downloader.d.ts +0 -80
  436. package/dist/scripts/pre-article-analysis/data-downloader.d.ts.map +0 -1
  437. package/dist/scripts/pre-article-analysis/data-downloader.js +0 -230
  438. package/dist/scripts/pre-article-analysis/data-downloader.js.map +0 -1
  439. package/dist/scripts/pre-article-analysis/data-persistence.d.ts +0 -141
  440. package/dist/scripts/pre-article-analysis/data-persistence.d.ts.map +0 -1
  441. package/dist/scripts/pre-article-analysis/data-persistence.js +0 -345
  442. package/dist/scripts/pre-article-analysis/data-persistence.js.map +0 -1
  443. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts +0 -158
  444. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts.map +0 -1
  445. package/dist/scripts/pre-article-analysis/markdown-serializer.js +0 -648
  446. package/dist/scripts/pre-article-analysis/markdown-serializer.js.map +0 -1
  447. package/dist/scripts/pre-article-analysis/pdf-converter.d.ts +0 -58
  448. package/dist/scripts/pre-article-analysis/pdf-converter.d.ts.map +0 -1
  449. package/dist/scripts/pre-article-analysis/pdf-converter.js +0 -142
  450. package/dist/scripts/pre-article-analysis/pdf-converter.js.map +0 -1
  451. package/dist/scripts/pre-article-analysis.d.ts +0 -41
  452. package/dist/scripts/pre-article-analysis.d.ts.map +0 -1
  453. package/dist/scripts/pre-article-analysis.js +0 -591
  454. package/dist/scripts/pre-article-analysis.js.map +0 -1
  455. package/dist/scripts/scb-client.d.ts +0 -104
  456. package/dist/scripts/scb-client.d.ts.map +0 -1
  457. package/dist/scripts/scb-client.js +0 -286
  458. package/dist/scripts/scb-client.js.map +0 -1
  459. package/dist/scripts/scb-context.d.ts +0 -88
  460. package/dist/scripts/scb-context.d.ts.map +0 -1
  461. package/dist/scripts/scb-context.js +0 -307
  462. package/dist/scripts/scb-context.js.map +0 -1
  463. package/dist/scripts/shared/version.d.ts +0 -9
  464. package/dist/scripts/shared/version.d.ts.map +0 -1
  465. package/dist/scripts/shared/version.js +0 -28
  466. package/dist/scripts/shared/version.js.map +0 -1
  467. package/dist/scripts/statistical-claims-detector.d.ts +0 -119
  468. package/dist/scripts/statistical-claims-detector.d.ts.map +0 -1
  469. package/dist/scripts/statistical-claims-detector.js +0 -391
  470. package/dist/scripts/statistical-claims-detector.js.map +0 -1
  471. package/dist/scripts/sync-cia-schemas.d.ts +0 -52
  472. package/dist/scripts/sync-cia-schemas.d.ts.map +0 -1
  473. package/dist/scripts/sync-cia-schemas.js +0 -195
  474. package/dist/scripts/sync-cia-schemas.js.map +0 -1
  475. package/dist/scripts/translation-dictionary.d.ts +0 -45
  476. package/dist/scripts/translation-dictionary.d.ts.map +0 -1
  477. package/dist/scripts/translation-dictionary.js +0 -3642
  478. package/dist/scripts/translation-dictionary.js.map +0 -1
  479. package/dist/scripts/types/article.d.ts +0 -392
  480. package/dist/scripts/types/article.d.ts.map +0 -1
  481. package/dist/scripts/types/article.js +0 -6
  482. package/dist/scripts/types/article.js.map +0 -1
  483. package/dist/scripts/types/content.d.ts +0 -167
  484. package/dist/scripts/types/content.d.ts.map +0 -1
  485. package/dist/scripts/types/content.js +0 -6
  486. package/dist/scripts/types/content.js.map +0 -1
  487. package/dist/scripts/types/editorial.d.ts +0 -17
  488. package/dist/scripts/types/editorial.d.ts.map +0 -1
  489. package/dist/scripts/types/editorial.js +0 -6
  490. package/dist/scripts/types/editorial.js.map +0 -1
  491. package/dist/scripts/types/language.d.ts +0 -7
  492. package/dist/scripts/types/language.d.ts.map +0 -1
  493. package/dist/scripts/types/language.js +0 -6
  494. package/dist/scripts/types/language.js.map +0 -1
  495. package/dist/scripts/types/mcp.d.ts +0 -117
  496. package/dist/scripts/types/mcp.d.ts.map +0 -1
  497. package/dist/scripts/types/mcp.js +0 -6
  498. package/dist/scripts/types/mcp.js.map +0 -1
  499. package/dist/scripts/types/party.d.ts +0 -9
  500. package/dist/scripts/types/party.d.ts.map +0 -1
  501. package/dist/scripts/types/party.js +0 -6
  502. package/dist/scripts/types/party.js.map +0 -1
  503. package/dist/scripts/types/validation.d.ts +0 -136
  504. package/dist/scripts/types/validation.d.ts.map +0 -1
  505. package/dist/scripts/types/validation.js +0 -6
  506. package/dist/scripts/types/validation.js.map +0 -1
  507. package/dist/scripts/types/workflow.d.ts +0 -78
  508. package/dist/scripts/types/workflow.d.ts.map +0 -1
  509. package/dist/scripts/types/workflow.js +0 -6
  510. package/dist/scripts/types/workflow.js.map +0 -1
  511. package/dist/scripts/update-stats-from-cia.d.ts +0 -44
  512. package/dist/scripts/update-stats-from-cia.d.ts.map +0 -1
  513. package/dist/scripts/update-stats-from-cia.js +0 -310
  514. package/dist/scripts/update-stats-from-cia.js.map +0 -1
  515. package/dist/scripts/validate-against-cia-schemas.d.ts +0 -126
  516. package/dist/scripts/validate-against-cia-schemas.d.ts.map +0 -1
  517. package/dist/scripts/validate-against-cia-schemas.js +0 -299
  518. package/dist/scripts/validate-against-cia-schemas.js.map +0 -1
  519. package/dist/scripts/validate-cross-references.d.ts +0 -49
  520. package/dist/scripts/validate-cross-references.d.ts.map +0 -1
  521. package/dist/scripts/validate-cross-references.js +0 -183
  522. package/dist/scripts/validate-cross-references.js.map +0 -1
  523. package/dist/scripts/validate-file-ownership.d.ts +0 -68
  524. package/dist/scripts/validate-file-ownership.d.ts.map +0 -1
  525. package/dist/scripts/validate-file-ownership.js +0 -135
  526. package/dist/scripts/validate-file-ownership.js.map +0 -1
  527. package/dist/scripts/validate-news-translations.d.ts +0 -27
  528. package/dist/scripts/validate-news-translations.d.ts.map +0 -1
  529. package/dist/scripts/validate-news-translations.js +0 -258
  530. package/dist/scripts/validate-news-translations.js.map +0 -1
  531. package/dist/scripts/validate-translations.d.ts +0 -162
  532. package/dist/scripts/validate-translations.d.ts.map +0 -1
  533. package/dist/scripts/validate-translations.js +0 -378
  534. package/dist/scripts/validate-translations.js.map +0 -1
  535. package/dist/scripts/workflow-state-coordinator.d.ts +0 -354
  536. package/dist/scripts/workflow-state-coordinator.d.ts.map +0 -1
  537. package/dist/scripts/workflow-state-coordinator.js +0 -876
  538. package/dist/scripts/workflow-state-coordinator.js.map +0 -1
  539. package/dist/scripts/world-bank-client.d.ts +0 -122
  540. package/dist/scripts/world-bank-client.d.ts.map +0 -1
  541. package/dist/scripts/world-bank-client.js +0 -192
  542. package/dist/scripts/world-bank-client.js.map +0 -1
  543. package/dist/scripts/world-bank-context.d.ts +0 -88
  544. package/dist/scripts/world-bank-context.d.ts.map +0 -1
  545. package/dist/scripts/world-bank-context.js +0 -331
  546. package/dist/scripts/world-bank-context.js.map +0 -1
@@ -1,255 +0,0 @@
1
- #!/usr/bin/env tsx
2
- /**
3
- * @module populate-analysis-data
4
- * @description Standalone script that fetches recent data from **all** MCP sources
5
- * (riksdag-regering, SCB, World Bank) and persists it to `analysis/data/`.
6
- *
7
- * This populates the analysis folder with **all** supported data types:
8
- * - **Documents**: propositions, motions, committeeReports, votes, speeches,
9
- * questions, interpellations
10
- * - **Calendar events**: upcoming parliamentary events
11
- * - **MPs**: current member profiles
12
- * - **Government documents**: recent government publications (regeringen.se)
13
- * - **Voting groups**: party-level voting patterns
14
- * - **World Bank indicators**: Swedish economic context (GDP, unemployment, etc.)
15
- * - **SCB statistics**: Swedish official statistics for key policy domains
16
- *
17
- * The script reuses the existing MCP client and data-persistence modules,
18
- * ensuring the collision-free sidecar design (data + .meta.json) is
19
- * consistently applied.
20
- *
21
- * Usage:
22
- * npx tsx scripts/populate-analysis-data.ts [--limit N] [--date YYYY-MM-DD]
23
- *
24
- * Options:
25
- * --limit N Max documents per type (default: 20)
26
- * --date YYYY-MM-DD Target date for analysis (default: today UTC)
27
- *
28
- * @author Hack23 AB
29
- * @license Apache-2.0
30
- */
31
- import { MCPClient } from './mcp-client/client.js';
32
- import { downloadAllDocuments, flattenDocuments, } from './pre-article-analysis/data-downloader.js';
33
- import { persistDownloadedData, persistEvents, persistMPs, persistMCPResponse, persistWorldBankData, persistSCBData, getDataRoot, resolveDocId, } from './pre-article-analysis/data-persistence.js';
34
- import { WorldBankClient, INDICATOR_IDS, COUNTRY_CODES, } from './world-bank-client.js';
35
- import { SCBClient, SCB_DOMAINS, } from './scb-client.js';
36
- // ---------------------------------------------------------------------------
37
- // Helpers
38
- // ---------------------------------------------------------------------------
39
- /**
40
- * Compute riksmöte (parliamentary session year) from an ISO date string.
41
- * Swedish parliamentary year runs Oct → Sep:
42
- * - 2025-10-01 to 2026-09-30 → "2025/26"
43
- * - 2026-10-01 to 2027-09-30 → "2026/27"
44
- *
45
- * @param dateStr - ISO date string (YYYY-MM-DD)
46
- * @returns Riksmöte identifier (e.g. "2025/26")
47
- */
48
- export function riksMoteFromDate(dateStr) {
49
- const d = new Date(dateStr + 'T00:00:00Z');
50
- const year = d.getUTCFullYear();
51
- const month = d.getUTCMonth() + 1;
52
- if (month >= 10)
53
- return `${year}/${String(year + 1).slice(-2)}`;
54
- return `${year - 1}/${String(year).slice(-2)}`;
55
- }
56
- /** Format a Date to YYYY-MM-DD. */
57
- function formatDate(d) {
58
- return d.toISOString().slice(0, 10);
59
- }
60
- /** Safely extract error message from unknown thrown value. */
61
- function errorMessage(err) {
62
- return err instanceof Error ? err.message : String(err);
63
- }
64
- function parseArgs() {
65
- const args = process.argv.slice(2);
66
- let limit = 20;
67
- let date = formatDate(new Date());
68
- for (let i = 0; i < args.length; i++) {
69
- if (args[i] === '--limit' && args[i + 1]) {
70
- limit = Math.max(1, parseInt(args[i + 1], 10) || 20);
71
- i++;
72
- }
73
- else if (args[i] === '--date' && args[i + 1]) {
74
- const candidate = args[i + 1];
75
- const dm = /^(\d{4})-(\d{2})-(\d{2})$/.exec(candidate);
76
- if (!dm) {
77
- console.error(`❌ Invalid date: "${candidate}". Expected YYYY-MM-DD format.`);
78
- process.exit(1);
79
- }
80
- const [, yStr, mStr, dStr] = dm;
81
- const y = Number(yStr), mo = Number(mStr), da = Number(dStr);
82
- const parsed = new Date(Date.UTC(y, mo - 1, da));
83
- if (Number.isNaN(parsed.getTime()) || parsed.getUTCFullYear() !== y || parsed.getUTCMonth() + 1 !== mo || parsed.getUTCDate() !== da) {
84
- console.error(`❌ Invalid date: "${candidate}". Expected a valid YYYY-MM-DD date.`);
85
- process.exit(1);
86
- }
87
- date = candidate;
88
- i++;
89
- }
90
- }
91
- return { limit, date };
92
- }
93
- // ---------------------------------------------------------------------------
94
- // Main
95
- // ---------------------------------------------------------------------------
96
- async function main() {
97
- const { limit, date } = parseArgs();
98
- const rm = riksMoteFromDate(date);
99
- console.log('╔══════════════════════════════════════════════════════════════╗');
100
- console.log('║ 📥 Populate Analysis Data — MCP Data Fetcher ║');
101
- console.log('╚══════════════════════════════════════════════════════════════╝');
102
- console.log(` 📅 Date: ${date}`);
103
- console.log(` 🏛️ Riksmöte: ${rm}`);
104
- console.log(` 📊 Limit: ${limit} per type`);
105
- console.log(` 📂 Data root: ${getDataRoot()}`);
106
- console.log('');
107
- const client = new MCPClient();
108
- // ── Step 1: Download all document types ─────────────────────────────────
109
- console.log('📄 Step 1/7: Downloading parliamentary documents...');
110
- try {
111
- const { data, manifest } = await downloadAllDocuments(client, { limit, rm });
112
- const allDocs = flattenDocuments(data);
113
- console.log(` ✅ Downloaded ${allDocs.length} documents from ${manifest.dataSources.length} MCP tools (${manifest.durationMs}ms)`);
114
- const persistResult = persistDownloadedData(data, rm);
115
- console.log(` 🗄️ Persisted ${persistResult.written} document files (${persistResult.skipped} skipped)`);
116
- }
117
- catch (err) {
118
- console.error(' ❌ Document download failed:', errorMessage(err));
119
- }
120
- // ── Step 2: Download calendar events ────────────────────────────────────
121
- console.log('\n📅 Step 2/7: Downloading calendar events...');
122
- try {
123
- const today = new Date(date + 'T00:00:00Z');
124
- const twoWeeksAhead = new Date(today);
125
- twoWeeksAhead.setUTCDate(twoWeeksAhead.getUTCDate() + 14);
126
- const rawEvents = await client.fetchCalendarEvents(formatDate(today), formatDate(twoWeeksAhead));
127
- const events = (Array.isArray(rawEvents) ? rawEvents : []);
128
- console.log(` ✅ Downloaded ${events.length} calendar events`);
129
- if (events.length > 0) {
130
- const persistResult = persistEvents(events, rm);
131
- console.log(` 🗄️ Persisted ${persistResult.written} event files (${persistResult.skipped} skipped)`);
132
- }
133
- }
134
- catch (err) {
135
- console.error(' ❌ Calendar event download failed:', errorMessage(err));
136
- }
137
- // ── Step 3: Download MP profiles ────────────────────────────────────────
138
- console.log('\n👤 Step 3/7: Downloading MP profiles...');
139
- try {
140
- const rawMPs = await client.fetchMPs({ limit });
141
- const mps = (Array.isArray(rawMPs) ? rawMPs : []);
142
- console.log(` ✅ Downloaded ${mps.length} MP profiles`);
143
- if (mps.length > 0) {
144
- const persistResult = persistMPs(mps, rm);
145
- console.log(` 🗄️ Persisted ${persistResult.written} MP files (${persistResult.skipped} skipped)`);
146
- }
147
- }
148
- catch (err) {
149
- console.error(' ❌ MP download failed:', errorMessage(err));
150
- }
151
- // ── Step 4: Download government documents ───────────────────────────────
152
- console.log('\n🏛️ Step 4/7: Downloading government documents...');
153
- try {
154
- const thirtyDaysAgo = new Date(date + 'T00:00:00Z');
155
- thirtyDaysAgo.setUTCDate(thirtyDaysAgo.getUTCDate() - 30);
156
- const rawGovDocs = await client.fetchGovernmentDocuments({
157
- dateFrom: formatDate(thirtyDaysAgo),
158
- dateTo: date,
159
- limit,
160
- });
161
- const govDocs = (Array.isArray(rawGovDocs) ? rawGovDocs : []);
162
- console.log(` ✅ Downloaded ${govDocs.length} government documents`);
163
- let govWritten = 0;
164
- for (let i = 0; i < govDocs.length; i++) {
165
- const doc = govDocs[i];
166
- if (!doc)
167
- continue;
168
- persistMCPResponse({ tool: 'search_regering', params: { dateFrom: formatDate(thirtyDaysAgo), dateTo: date, limit }, server: 'riksdag-regering' }, doc, resolveDocId(doc, i));
169
- govWritten++;
170
- }
171
- console.log(` 🗄️ Persisted ${govWritten} government document files`);
172
- }
173
- catch (err) {
174
- console.error(' ❌ Government document download failed:', errorMessage(err));
175
- }
176
- // ── Step 5: Download voting groups by party ─────────────────────────────
177
- console.log('\n🗳️ Step 5/7: Downloading voting groups by party...');
178
- try {
179
- const rawGroups = await client.fetchVotingGroup({ rm, groupBy: 'parti', limit });
180
- const groups = (Array.isArray(rawGroups) ? rawGroups : []);
181
- console.log(` ✅ Downloaded ${groups.length} voting group records`);
182
- let voteGroupWritten = 0;
183
- for (let i = 0; i < groups.length; i++) {
184
- const group = groups[i];
185
- if (!group)
186
- continue;
187
- const record = group;
188
- const id = (typeof record['parti'] === 'string' && record['parti'])
189
- || `group-${i + 1}`;
190
- persistMCPResponse({ tool: 'get_voting_group', params: { rm, groupBy: 'parti', limit }, server: 'riksdag-regering' }, group, `${rm.replace('/', '-')}-${id}`);
191
- voteGroupWritten++;
192
- }
193
- console.log(` 🗄️ Persisted ${voteGroupWritten} voting group files`);
194
- }
195
- catch (err) {
196
- console.error(' ❌ Voting group download failed:', errorMessage(err));
197
- }
198
- // ── Step 6: Download World Bank indicators for Sweden ───────────────────
199
- console.log('\n🌍 Step 6/7: Downloading World Bank indicators for Sweden...');
200
- try {
201
- const wb = new WorldBankClient();
202
- const indicatorEntries = Object.entries(INDICATOR_IDS);
203
- let wbWritten = 0;
204
- let wbFailed = 0;
205
- for (const [_name, indicatorId] of indicatorEntries) {
206
- try {
207
- const dataPoints = await wb.getIndicator(COUNTRY_CODES.sweden, indicatorId, 10);
208
- if (dataPoints.length > 0) {
209
- persistWorldBankData(indicatorId, COUNTRY_CODES.sweden, dataPoints);
210
- wbWritten++;
211
- }
212
- }
213
- catch {
214
- wbFailed++;
215
- }
216
- }
217
- console.log(` ✅ Persisted ${wbWritten}/${indicatorEntries.length} World Bank indicators (${wbFailed} failed)`);
218
- }
219
- catch (err) {
220
- console.error(' ❌ World Bank data download failed:', errorMessage(err));
221
- }
222
- // ── Step 7: Download SCB statistics for key domains ─────────────────────
223
- console.log('\n📊 Step 7/7: Downloading SCB statistics...');
224
- try {
225
- const scb = new SCBClient();
226
- const domainsWithTables = SCB_DOMAINS.filter(d => d.tables.length > 0);
227
- let scbWritten = 0;
228
- let scbFailed = 0;
229
- for (const domain of domainsWithTables) {
230
- for (const tableId of domain.tables) {
231
- try {
232
- const data = await scb.getTableData(tableId);
233
- if (data && (Array.isArray(data) ? data.length > 0 : true)) {
234
- persistSCBData(tableId, data, { domain: domain.domain, query: domain.query });
235
- scbWritten++;
236
- }
237
- }
238
- catch {
239
- scbFailed++;
240
- }
241
- }
242
- }
243
- console.log(` ✅ Persisted ${scbWritten} SCB tables (${scbFailed} failed)`);
244
- }
245
- catch (err) {
246
- console.error(' ❌ SCB data download failed:', errorMessage(err));
247
- }
248
- console.log('\n✅ Analysis data population complete.');
249
- console.log(` 📂 Data written to: ${getDataRoot()}`);
250
- }
251
- main().catch((err) => {
252
- console.error('Fatal error:', err);
253
- process.exit(1);
254
- });
255
- //# sourceMappingURL=populate-analysis-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"populate-analysis-data.js","sourceRoot":"","sources":["../../scripts/populate-analysis-data.ts"],"names":[],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- /**
2
- * @module pre-article-analysis/data-downloader
3
- * @description Downloads all relevant parliamentary documents from riksdag-regering-mcp
4
- * for the current Swedish parliamentary session (riksmöte). Returns typed `RawDocument[]`
5
- * collections plus a manifest of which MCP tools returned successful results and how many
6
- * documents each returned.
7
- *
8
- * Note: The download methods fetch session-wide latest documents (bounded by `limit`
9
- * and `rm`). Date-specific filtering should be applied by the caller after download
10
- * (e.g., filtering by the `datum` field on each `RawDocument`).
11
- *
12
- * This module is intentionally side-effect-free with respect to the filesystem;
13
- * callers are responsible for writing any output.
14
- *
15
- * @author Hack23 AB
16
- * @license Apache-2.0
17
- */
18
- import type { RawDocument } from '../data-transformers/types.js';
19
- import type { MCPClient } from '../mcp-client/client.js';
20
- /** Supported document type keys for scoped downloads. */
21
- export type DocumentTypeKey = 'propositions' | 'motions' | 'committeeReports' | 'votes' | 'speeches' | 'questions' | 'interpellations';
22
- export interface DownloadedData {
23
- /** Government propositions */
24
- propositions: RawDocument[];
25
- /** Parliamentary motions */
26
- motions: RawDocument[];
27
- /** Committee reports */
28
- committeeReports: RawDocument[];
29
- /** Parliamentary votes */
30
- votes: RawDocument[];
31
- /** Parliamentary speeches (anföranden) */
32
- speeches: RawDocument[];
33
- /** Written questions */
34
- questions: RawDocument[];
35
- /** Interpellations */
36
- interpellations: RawDocument[];
37
- }
38
- export interface DownloadManifest {
39
- /** Names of MCP tools with successful fetch + post-processing during download */
40
- dataSources: string[];
41
- /** Document counts per type */
42
- docCounts: Record<string, number>;
43
- /** Total download duration in milliseconds */
44
- durationMs: number;
45
- }
46
- export interface DownloadResult {
47
- data: DownloadedData;
48
- manifest: DownloadManifest;
49
- }
50
- /**
51
- * Download all relevant documents from riksdag-regering-mcp.
52
- *
53
- * Each document type is fetched with a configurable limit (default 20).
54
- * Failures in individual calls are caught so a partial result is returned
55
- * rather than failing the entire pipeline.
56
- *
57
- * When `docTypes` is provided, only the listed document types are fetched.
58
- * This prevents multiple workflows (e.g. propositions and committee-reports)
59
- * from downloading the same documents and writing conflicting analysis.
60
- *
61
- * @param client - MCPClient instance (caller-supplied for testability)
62
- * @param options - Optional overrides for limits, riksmöte, and document type scoping
63
- */
64
- export declare function downloadAllDocuments(client: MCPClient, options?: {
65
- limit?: number;
66
- rm?: string;
67
- docTypes?: DocumentTypeKey[];
68
- }): Promise<DownloadResult>;
69
- /**
70
- * Flatten all downloaded document collections into a single array,
71
- * deduplicated by a best-effort document identifier.
72
- *
73
- * The primary deduplication key is `dok_id` when present. If `dok_id` is
74
- * missing or empty, the function falls back in order to:
75
- * `dokument_id`, `id`, `dok_url`, `url`, `rel_dok_id`, `titel`, and `title`.
76
- * The first non-empty string among these fields is used as the dedup key,
77
- * and documents resolving to the same key are treated as duplicates.
78
- */
79
- export declare function flattenDocuments(data: DownloadedData): RawDocument[];
80
- //# sourceMappingURL=data-downloader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-downloader.d.ts","sourceRoot":"","sources":["../../../scripts/pre-article-analysis/data-downloader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAMzD,yDAAyD;AACzD,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,SAAS,GACT,kBAAkB,GAClB,OAAO,GACP,UAAU,GACV,WAAW,GACX,iBAAiB,CAAC;AAEtB,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,4BAA4B;IAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,wBAAwB;IACxB,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC,0BAA0B;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,0CAA0C;IAC1C,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,wBAAwB;IACxB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,sBAAsB;IACtB,eAAe,EAAE,WAAW,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AA8DD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAAO,GAC1E,OAAO,CAAC,cAAc,CAAC,CAqHzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,WAAW,EAAE,CAgCpE"}
@@ -1,230 +0,0 @@
1
- /**
2
- * @module pre-article-analysis/data-downloader
3
- * @description Downloads all relevant parliamentary documents from riksdag-regering-mcp
4
- * for the current Swedish parliamentary session (riksmöte). Returns typed `RawDocument[]`
5
- * collections plus a manifest of which MCP tools returned successful results and how many
6
- * documents each returned.
7
- *
8
- * Note: The download methods fetch session-wide latest documents (bounded by `limit`
9
- * and `rm`). Date-specific filtering should be applied by the caller after download
10
- * (e.g., filtering by the `datum` field on each `RawDocument`).
11
- *
12
- * This module is intentionally side-effect-free with respect to the filesystem;
13
- * callers are responsible for writing any output.
14
- *
15
- * @author Hack23 AB
16
- * @license Apache-2.0
17
- */
18
- // ---------------------------------------------------------------------------
19
- // Helpers
20
- // ---------------------------------------------------------------------------
21
- function normalise(raw) {
22
- return raw.filter(Boolean);
23
- }
24
- /** All internal fetch task names, kept in sync with the `fetchTasks` array
25
- * inside `downloadAllDocuments()`. Used to derive the `FetchTaskName` type
26
- * and to validate the `FETCH_TASK_TYPE_MAP` at compile time. */
27
- const FETCH_TASK_NAMES = [
28
- 'fetchPropositions',
29
- 'fetchMotions',
30
- 'fetchCommitteeReports',
31
- 'fetchVotingRecords',
32
- 'searchSpeeches',
33
- 'fetchWrittenQuestions',
34
- 'fetchInterpellations',
35
- ];
36
- /** Maps internal fetch task names to their corresponding DocumentTypeKey.
37
- * `satisfies` ensures every FetchTaskName maps to a valid DocumentTypeKey
38
- * at compile time — adding/renaming a task without updating the map is a
39
- * compile error. */
40
- const FETCH_TASK_TYPE_MAP = {
41
- fetchPropositions: 'propositions',
42
- fetchMotions: 'motions',
43
- fetchCommitteeReports: 'committeeReports',
44
- fetchVotingRecords: 'votes',
45
- searchSpeeches: 'speeches',
46
- fetchWrittenQuestions: 'questions',
47
- fetchInterpellations: 'interpellations',
48
- };
49
- /**
50
- * Returns the current Swedish parliamentary session (riksmöte) in `YYYY/YY` format.
51
- * The Swedish parliamentary year runs from October to September:
52
- * - October–December of year N: session is `N/N+1`
53
- * - January–September of year N: session is `N-1/N`
54
- *
55
- * Examples: 2025-11 → "2025/26", 2026-03 → "2025/26", 2026-10 → "2026/27"
56
- */
57
- function currentRm() {
58
- const now = new Date();
59
- const year = now.getUTCFullYear();
60
- const month = now.getUTCMonth() + 1; // 1-based
61
- // Swedish parliamentary year runs roughly October–September
62
- if (month >= 10) {
63
- return `${year}/${String(year + 1).slice(-2)}`;
64
- }
65
- return `${year - 1}/${String(year).slice(-2)}`;
66
- }
67
- // ---------------------------------------------------------------------------
68
- // Download orchestration
69
- // ---------------------------------------------------------------------------
70
- /**
71
- * Download all relevant documents from riksdag-regering-mcp.
72
- *
73
- * Each document type is fetched with a configurable limit (default 20).
74
- * Failures in individual calls are caught so a partial result is returned
75
- * rather than failing the entire pipeline.
76
- *
77
- * When `docTypes` is provided, only the listed document types are fetched.
78
- * This prevents multiple workflows (e.g. propositions and committee-reports)
79
- * from downloading the same documents and writing conflicting analysis.
80
- *
81
- * @param client - MCPClient instance (caller-supplied for testability)
82
- * @param options - Optional overrides for limits, riksmöte, and document type scoping
83
- */
84
- export async function downloadAllDocuments(client, options = {}) {
85
- const start = Date.now();
86
- const limit = options.limit ?? 20;
87
- const rm = options.rm ?? currentRm();
88
- const docTypes = options.docTypes ?? null; // null means fetch all types
89
- const dataSources = [];
90
- const data = {
91
- propositions: [],
92
- motions: [],
93
- committeeReports: [],
94
- votes: [],
95
- speeches: [],
96
- questions: [],
97
- interpellations: [],
98
- };
99
- // Run independent MCP fetches in parallel to reduce total latency while
100
- // still collecting partial results on failure.
101
- const fetchTasks = [
102
- {
103
- name: 'fetchPropositions',
104
- source: 'get_propositioner',
105
- fetch: () => client.fetchPropositions(limit, rm),
106
- assign: (raw) => { data.propositions = raw; },
107
- },
108
- {
109
- name: 'fetchMotions',
110
- source: 'get_motioner',
111
- fetch: () => client.fetchMotions(limit, rm),
112
- assign: (raw) => { data.motions = raw; },
113
- },
114
- {
115
- name: 'fetchCommitteeReports',
116
- source: 'get_betankanden',
117
- fetch: () => client.fetchCommitteeReports(limit, rm),
118
- assign: (raw) => { data.committeeReports = raw; },
119
- },
120
- {
121
- name: 'fetchVotingRecords',
122
- source: 'search_voteringar',
123
- fetch: () => client.fetchVotingRecords({ limit, rm }),
124
- assign: (raw) => { data.votes = raw; },
125
- },
126
- {
127
- name: 'searchSpeeches',
128
- source: 'search_anforanden',
129
- fetch: () => client.searchSpeeches({ limit, rm }),
130
- assign: (raw) => { data.speeches = raw; },
131
- },
132
- {
133
- name: 'fetchWrittenQuestions',
134
- source: 'get_fragor',
135
- fetch: () => client.fetchWrittenQuestions({ limit, rm }),
136
- assign: (raw) => { data.questions = raw; },
137
- },
138
- {
139
- name: 'fetchInterpellations',
140
- source: 'get_interpellationer',
141
- fetch: () => client.fetchInterpellations({ limit, rm }),
142
- assign: (raw) => { data.interpellations = raw; },
143
- },
144
- ];
145
- // When docTypes is specified, only fetch the listed document types.
146
- // task.name is typed as FetchTaskName via the `as const` assertion on
147
- // fetchTasks, so the lookup is safe without a cast.
148
- const activeTasks = docTypes
149
- ? fetchTasks.filter(task => {
150
- const mapped = FETCH_TASK_TYPE_MAP[task.name];
151
- return docTypes.includes(mapped);
152
- })
153
- : fetchTasks;
154
- const fetchResults = await Promise.allSettled(activeTasks.map(task => task.fetch()));
155
- fetchResults.forEach((result, index) => {
156
- const task = activeTasks[index];
157
- if (result.status === 'fulfilled') {
158
- try {
159
- task.assign(normalise(result.value));
160
- dataSources.push(task.source);
161
- }
162
- catch (err) {
163
- console.warn(`[pre-analysis] ${task.name} post-processing failed:`, err instanceof Error ? err.message : String(err));
164
- }
165
- }
166
- else {
167
- console.warn(`[pre-analysis] ${task.name} failed:`, result.reason instanceof Error ? result.reason.message : String(result.reason));
168
- }
169
- });
170
- const docCounts = {
171
- propositions: data.propositions.length,
172
- motions: data.motions.length,
173
- committeeReports: data.committeeReports.length,
174
- votes: data.votes.length,
175
- speeches: data.speeches.length,
176
- questions: data.questions.length,
177
- interpellations: data.interpellations.length,
178
- };
179
- return {
180
- data,
181
- manifest: {
182
- dataSources,
183
- docCounts,
184
- durationMs: Date.now() - start,
185
- },
186
- };
187
- }
188
- /**
189
- * Flatten all downloaded document collections into a single array,
190
- * deduplicated by a best-effort document identifier.
191
- *
192
- * The primary deduplication key is `dok_id` when present. If `dok_id` is
193
- * missing or empty, the function falls back in order to:
194
- * `dokument_id`, `id`, `dok_url`, `url`, `rel_dok_id`, `titel`, and `title`.
195
- * The first non-empty string among these fields is used as the dedup key,
196
- * and documents resolving to the same key are treated as duplicates.
197
- */
198
- export function flattenDocuments(data) {
199
- const all = [
200
- ...data.propositions,
201
- ...data.motions,
202
- ...data.committeeReports,
203
- ...data.votes,
204
- ...data.speeches,
205
- ...data.questions,
206
- ...data.interpellations,
207
- ];
208
- const seen = new Set();
209
- return all.filter(doc => {
210
- if (!doc)
211
- return false;
212
- const record = doc;
213
- const idCandidates = [
214
- record['dok_id'],
215
- record['dokument_id'],
216
- record['id'],
217
- record['dok_url'],
218
- record['url'],
219
- record['rel_dok_id'],
220
- record['titel'],
221
- record['title'],
222
- ];
223
- const id = idCandidates.find((candidate) => typeof candidate === 'string' && candidate.trim().length > 0)?.trim() ?? '';
224
- if (!id || seen.has(id))
225
- return false;
226
- seen.add(id);
227
- return true;
228
- });
229
- }
230
- //# sourceMappingURL=data-downloader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-downloader.js","sourceRoot":"","sources":["../../../scripts/pre-article-analysis/data-downloader.ts"],"names":[],"mappings":"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"}