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,495 +0,0 @@
1
- /**
2
- * @module analysis-reader
3
- * @description Reads pre-computed political intelligence analysis files from
4
- * `analysis/daily/YYYY-MM-DD/` and provides a structured TypeScript API for
5
- * article generators to consume classification, risk, SWOT, threat, and
6
- * significance data.
7
- *
8
- * Falls back gracefully when analysis files are absent — backward compatible
9
- * with article generators that do not yet consume pre-computed analysis.
10
- *
11
- * @example
12
- * ```typescript
13
- * import { readDailyAnalysis } from './analysis-reader.js';
14
- *
15
- * const analysis = await readDailyAnalysis('2026-03-26');
16
- * if (analysis.hasAnalysis) {
17
- * const { classification, riskAssessment, significance } = analysis;
18
- * // Enrich article generation with pre-computed intelligence
19
- * }
20
- * ```
21
- *
22
- * @author Hack23 AB
23
- * @license Apache-2.0
24
- */
25
- import { readFile } from 'node:fs/promises';
26
- import { join } from 'node:path';
27
- import { existsSync } from 'node:fs';
28
- // ---------------------------------------------------------------------------
29
- // Constants
30
- // ---------------------------------------------------------------------------
31
- /** Regex pattern for matching Riksdag document IDs (e.g., H9011, H902A) */
32
- const DOC_ID_PATTERN = /\b[A-Z]\d{3,7}[A-Z]?\b/g;
33
- /** Default significance score when none is found in the markdown */
34
- const DEFAULT_SIGNIFICANCE_SCORE = 50;
35
- // ---------------------------------------------------------------------------
36
- // Markdown parsing helpers
37
- // ---------------------------------------------------------------------------
38
- /**
39
- * Extract the first heading level 2 section content from markdown.
40
- * Returns the text content between the heading and the next heading.
41
- */
42
- function extractSection(markdown, sectionName) {
43
- const escapedName = sectionName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
44
- const regex = new RegExp(`##\\s+${escapedName}\\s*\\n([\\s\\S]*?)(?=\\n##\\s|$)`, 'i');
45
- const match = regex.exec(markdown);
46
- return match?.[1]?.trim() ?? '';
47
- }
48
- /**
49
- * Extract the value of a key-value pair from markdown.
50
- * Supports formats: `**Key**: Value`, `- Key: Value`, `Key: Value`
51
- */
52
- function extractValue(markdown, key) {
53
- const escapedKey = key.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
54
- const patterns = [
55
- new RegExp(`\\*\\*${escapedKey}\\*\\*:\\s*(.+)`, 'i'),
56
- new RegExp(`-\\s+${escapedKey}:\\s*(.+)`, 'i'),
57
- new RegExp(`${escapedKey}:\\s*(.+)`, 'i'),
58
- ];
59
- for (const pattern of patterns) {
60
- const match = pattern.exec(markdown);
61
- if (match?.[1]) {
62
- return match[1].trim().replace(/\*\*/g, '').replace(/`/g, '');
63
- }
64
- }
65
- return '';
66
- }
67
- /**
68
- * Extract a bullet list from a markdown section as an array of strings.
69
- * Handles both `- item` and `* item` formats.
70
- */
71
- function extractBulletList(text) {
72
- return text
73
- .split('\n')
74
- .map(line => line.replace(/^[\s\-*]+/, '').trim())
75
- .filter(line => line.length > 0 && !line.startsWith('#'));
76
- }
77
- /**
78
- * Extract items tagged with a specific emoji icon from text.
79
- */
80
- function extractIconTagged(text, icon) {
81
- const results = [];
82
- for (const line of text.split('\n')) {
83
- if (line.includes(icon)) {
84
- const cleaned = line.replace(/^[\s\-*]+/, '').trim();
85
- if (cleaned)
86
- results.push(cleaned);
87
- }
88
- }
89
- return results;
90
- }
91
- /**
92
- * Normalize a string to a ClassificationLevel.
93
- * Returns 'MEDIUM' as default when unrecognized.
94
- */
95
- function toClassificationLevel(value) {
96
- const upper = value.toUpperCase().trim();
97
- if (upper === 'CRITICAL')
98
- return 'CRITICAL';
99
- if (upper === 'HIGH')
100
- return 'HIGH';
101
- if (upper === 'LOW')
102
- return 'LOW';
103
- return 'MEDIUM';
104
- }
105
- /**
106
- * Normalize a string to a ConfidenceLabel.
107
- * Returns 'MEDIUM' as default when unrecognized.
108
- */
109
- function toConfidenceLabel(value) {
110
- const upper = value.toUpperCase().trim();
111
- if (upper === 'HIGH')
112
- return 'HIGH';
113
- if (upper === 'LOW')
114
- return 'LOW';
115
- return 'MEDIUM';
116
- }
117
- /**
118
- * Normalize a string to a RiskLevel.
119
- * Returns 'moderate' as default when unrecognized.
120
- */
121
- function toRiskLevel(value) {
122
- const lower = value.toLowerCase().trim();
123
- if (lower === 'high')
124
- return 'high';
125
- if (lower === 'elevated')
126
- return 'elevated';
127
- if (lower === 'low')
128
- return 'low';
129
- return 'moderate';
130
- }
131
- /**
132
- * Normalize a string to a DemocraticHealthLabel.
133
- * Returns 'MEDIUM' as default when unrecognized.
134
- */
135
- function toDemocraticHealthLabel(value) {
136
- const upper = value.toUpperCase().trim().replace(/[\s_-]+/g, '_');
137
- if (upper === 'HIGH')
138
- return 'HIGH';
139
- if (upper === 'LOW')
140
- return 'LOW';
141
- if (upper === 'AT_RISK' || upper === 'ATRISK')
142
- return 'AT_RISK';
143
- return 'MEDIUM';
144
- }
145
- /**
146
- * Normalize a string to a PriorityLevel.
147
- * Returns 'standard' as default when unrecognized.
148
- */
149
- function toPriorityLevel(value) {
150
- const lower = value.toLowerCase().trim();
151
- if (lower === 'breaking')
152
- return 'breaking';
153
- if (lower === 'major')
154
- return 'major';
155
- if (lower === 'background')
156
- return 'background';
157
- return 'standard';
158
- }
159
- /**
160
- * Normalize urgency labels to the known UrgencyLabel union.
161
- * Returns 'standard' as safe default for unrecognized values.
162
- */
163
- function toUrgencyLabel(value) {
164
- const lower = value.toLowerCase().trim();
165
- if (lower === 'breaking')
166
- return 'breaking';
167
- if (lower === 'major')
168
- return 'major';
169
- if (lower === 'background')
170
- return 'background';
171
- return 'standard';
172
- }
173
- /**
174
- * Parse SWOT entries from a markdown quadrant section.
175
- */
176
- function parseSwotEntries(sectionText) {
177
- const entries = [];
178
- const blocks = sectionText.split(/\n(?=[-*]|\d+\.)/);
179
- for (const block of blocks) {
180
- const text = block.replace(/^\s*(?:[-*]|\d+\.)\s+/, '').trim();
181
- if (!text || text.startsWith('#'))
182
- continue;
183
- // Detect confidence: HIGH, MEDIUM, LOW in square brackets or inline
184
- const confMatch = /\[(HIGH|MEDIUM|LOW)\]/i.exec(text);
185
- const confidence = confMatch ? toConfidenceLabel(confMatch[1]) : 'MEDIUM';
186
- // Detect impact
187
- const impactMatch = /impact:\s*(high|medium|low)/i.exec(text);
188
- const impact = impactMatch
189
- ? impactMatch[1].toLowerCase()
190
- : undefined;
191
- // Detect source doc IDs (alphanumeric document ID patterns like H9011, H902A)
192
- const docIdMatches = text.match(DOC_ID_PATTERN) ?? [];
193
- entries.push({
194
- text: text.replace(/\[(HIGH|MEDIUM|LOW)\]/gi, '').replace(/impact:\s*(high|medium|low)/gi, '').trim(),
195
- confidence,
196
- impact,
197
- sourceDocIds: docIdMatches,
198
- });
199
- }
200
- return entries.filter(e => e.text.length > 0);
201
- }
202
- // ---------------------------------------------------------------------------
203
- // File parsers
204
- // ---------------------------------------------------------------------------
205
- /**
206
- * Parse `classification-results.md` into a structured ClassificationResult.
207
- */
208
- export function parseClassificationResults(markdown) {
209
- const level = toClassificationLevel(extractValue(markdown, 'Level') || extractValue(markdown, 'Classification Level'));
210
- const priority = toPriorityLevel(extractValue(markdown, 'Priority'));
211
- const confidence = toConfidenceLabel(extractValue(markdown, 'Confidence'));
212
- // Extract document IDs mentioned in the text
213
- const documentIds = Array.from(new Set(markdown.match(DOC_ID_PATTERN) ?? []));
214
- // Extract domains from bullet list in Domains or Policy Domains section
215
- const domainsSection = extractSection(markdown, 'Policy Domains') || extractSection(markdown, 'Domains');
216
- const domains = domainsSection
217
- ? extractBulletList(domainsSection)
218
- : extractBulletList(extractSection(markdown, 'Classification') || '');
219
- // Summary: prefer explicit `## Summary` section, fallback to first non-heading paragraph
220
- const summarySection = extractSection(markdown, 'Summary');
221
- const summary = (summarySection && summarySection.trim()) ||
222
- /^(?!#)(.{30,})/m.exec(markdown)?.[1]?.trim() ||
223
- markdown.split('\n').find(l => l.trim().length > 30)?.trim() ||
224
- '';
225
- return { level, priority, confidence, summary, documentIds, domains: domains.slice(0, 10) };
226
- }
227
- /**
228
- * Parse `risk-assessment.md` into a structured RiskAssessment.
229
- */
230
- export function parseRiskAssessment(markdown) {
231
- const level = toRiskLevel(extractValue(markdown, 'Overall Risk') || extractValue(markdown, 'Risk Level'));
232
- const confidence = toConfidenceLabel(extractValue(markdown, 'Confidence'));
233
- const factorsSection = extractSection(markdown, 'Risk Factors') || extractSection(markdown, 'Factors');
234
- const factors = factorsSection ? extractBulletList(factorsSection) : [];
235
- const indicators = extractIconTagged(markdown, '⚠️');
236
- const summarySection = extractSection(markdown, 'Summary') || extractSection(markdown, 'Overview');
237
- const summary = summarySection || markdown.split('\n').filter(l => l.trim().length > 30).slice(0, 2).join(' ');
238
- return { level, factors: factors.slice(0, 10), indicators: indicators.slice(0, 8), confidence, summary };
239
- }
240
- /**
241
- * Parse `swot-analysis.md` into a structured SwotAnalysisResult.
242
- */
243
- export function parseSwotAnalysis(markdown) {
244
- const subject = extractValue(markdown, 'Subject') || 'Swedish Parliament';
245
- const context = extractSection(markdown, 'Context') || undefined;
246
- const strengthsSection = extractSection(markdown, 'Strengths') || extractSection(markdown, '💪 Strengths');
247
- const weaknessesSection = extractSection(markdown, 'Weaknesses') || extractSection(markdown, '⚡ Weaknesses');
248
- const opportunitiesSection = extractSection(markdown, 'Opportunities') || extractSection(markdown, '🚀 Opportunities');
249
- const threatsSection = extractSection(markdown, 'Threats') || extractSection(markdown, '☁️ Threats');
250
- return {
251
- subject,
252
- strengths: parseSwotEntries(strengthsSection),
253
- weaknesses: parseSwotEntries(weaknessesSection),
254
- opportunities: parseSwotEntries(opportunitiesSection),
255
- threats: parseSwotEntries(threatsSection),
256
- context,
257
- };
258
- }
259
- /**
260
- * Parse `threat-analysis.md` into a structured ThreatAnalysisResult.
261
- */
262
- export function parseThreatAnalysis(markdown) {
263
- const indicators = extractIconTagged(markdown, '🎯');
264
- const democraticHealth = toDemocraticHealthLabel(extractValue(markdown, 'Democratic Health') || extractValue(markdown, 'Health Status') || 'MEDIUM');
265
- const confidence = toConfidenceLabel(extractValue(markdown, 'Confidence'));
266
- const actorsSection = extractSection(markdown, 'Key Actors') || extractSection(markdown, 'Actors');
267
- const actors = actorsSection ? extractBulletList(actorsSection) : [];
268
- const summarySection = extractSection(markdown, 'Summary') || extractSection(markdown, 'Overview');
269
- const summary = summarySection || markdown.split('\n').filter(l => l.trim().length > 30).slice(0, 2).join(' ');
270
- return { indicators: indicators.slice(0, 8), democraticHealth, actors: actors.slice(0, 6), confidence, summary };
271
- }
272
- /**
273
- * Parse `stakeholder-perspectives.md` into a structured StakeholderPerspectivesResult.
274
- */
275
- export function parseStakeholderPerspectives(markdown) {
276
- const government = extractSection(markdown, '🏛️ Government') || extractSection(markdown, 'Government') || '';
277
- const opposition = extractSection(markdown, '⚖️ Opposition') || extractSection(markdown, 'Opposition') || '';
278
- const citizen = extractSection(markdown, '👥 Citizen') ||
279
- extractSection(markdown, 'Citizen') ||
280
- extractSection(markdown, 'Citizens') ||
281
- '';
282
- const economic = extractSection(markdown, '💰 Economic') || extractSection(markdown, 'Economic') || '';
283
- const international = extractSection(markdown, '🌍 International') || extractSection(markdown, 'International') || '';
284
- const media = extractSection(markdown, '📰 Media') || extractSection(markdown, 'Media') || '';
285
- return {
286
- government: government.split('\n').filter(l => l.trim()).join(' ').trim(),
287
- opposition: opposition.split('\n').filter(l => l.trim()).join(' ').trim(),
288
- citizen: citizen.split('\n').filter(l => l.trim()).join(' ').trim(),
289
- economic: economic.split('\n').filter(l => l.trim()).join(' ').trim(),
290
- international: international.split('\n').filter(l => l.trim()).join(' ').trim(),
291
- media: media.split('\n').filter(l => l.trim()).join(' ').trim(),
292
- };
293
- }
294
- /**
295
- * Parse `significance-scoring.md` into a structured SignificanceScoringResult.
296
- */
297
- export function parseSignificanceScoring(markdown) {
298
- const scoreStr = extractValue(markdown, 'Overall Score') || extractValue(markdown, 'Score');
299
- const score = scoreStr ? Math.min(100, Math.max(0, parseInt(scoreStr, 10) || DEFAULT_SIGNIFICANCE_SCORE)) : DEFAULT_SIGNIFICANCE_SCORE;
300
- const urgency = toUrgencyLabel(extractValue(markdown, 'Urgency') || 'standard');
301
- const confidence = toConfidenceLabel(extractValue(markdown, 'Confidence'));
302
- // Extract top documents from a list
303
- const topDocumentsSection = extractSection(markdown, 'Top Documents') || extractSection(markdown, 'Significant Documents');
304
- const topDocuments = [];
305
- for (const line of topDocumentsSection.split('\n')) {
306
- const match = /([A-Z]\d{3,7}[A-Z]?).*?(\d{1,3})(?:%|\s+points?|\s+score)?[:\s—-]+(.+)/i.exec(line.trim());
307
- if (match) {
308
- const rawScore = parseInt(match[2], 10);
309
- topDocuments.push({
310
- docId: match[1],
311
- score: Math.min(100, Math.max(0, Number.isFinite(rawScore) ? rawScore : 0)),
312
- reason: match[3].trim(),
313
- });
314
- }
315
- }
316
- return { score, urgency, topDocuments: topDocuments.slice(0, 5), confidence };
317
- }
318
- /**
319
- * Parse `synthesis-summary.md` into a structured SynthesisSummaryResult.
320
- */
321
- export function parseSynthesisSummary(markdown) {
322
- const narrativeDirection = extractSection(markdown, 'Narrative Direction') || extractSection(markdown, 'Primary Narrative') || '';
323
- const articleFocus = extractSection(markdown, 'Article Focus') || extractSection(markdown, 'Focus') || '';
324
- const themesSection = extractSection(markdown, 'Key Themes') || extractSection(markdown, 'Themes');
325
- const keyThemes = themesSection ? extractBulletList(themesSection) : [];
326
- const forwardSection = extractSection(markdown, 'Forward Indicators') || extractSection(markdown, 'What to Watch');
327
- const forwardIndicators = forwardSection ? extractBulletList(forwardSection) : [];
328
- return {
329
- narrativeDirection: narrativeDirection.split('\n').filter(l => l.trim()).join(' ').trim(),
330
- keyThemes: keyThemes.slice(0, 8),
331
- articleFocus: articleFocus.split('\n').filter(l => l.trim()).join(' ').trim(),
332
- forwardIndicators: forwardIndicators.slice(0, 5),
333
- };
334
- }
335
- // ---------------------------------------------------------------------------
336
- // File reading helpers
337
- // ---------------------------------------------------------------------------
338
- /** Base path for the analysis directory relative to project root */
339
- const ANALYSIS_BASE_PATH = 'analysis/daily';
340
- /** Analysis file names within a daily directory */
341
- const ANALYSIS_FILES = {
342
- classification: 'classification-results.md',
343
- risk: 'risk-assessment.md',
344
- swot: 'swot-analysis.md',
345
- threat: 'threat-analysis.md',
346
- stakeholders: 'stakeholder-perspectives.md',
347
- significance: 'significance-scoring.md',
348
- synthesis: 'synthesis-summary.md',
349
- };
350
- /** Strict YYYY-MM-DD format guard to prevent path traversal via `date`. */
351
- const DATE_FORMAT_RE = /^\d{4}-\d{2}-\d{2}$/;
352
- /**
353
- * Attempt to read a markdown file from the analysis directory.
354
- * Returns `null` if the file does not exist, cannot be read, or `date` is
355
- * not a valid YYYY-MM-DD string (guards against path traversal).
356
- */
357
- async function readAnalysisFile(date, filename, basePath) {
358
- if (!DATE_FORMAT_RE.test(date))
359
- return null;
360
- const resolvedBase = basePath ?? ANALYSIS_BASE_PATH;
361
- const filePath = join(resolvedBase, date, filename);
362
- try {
363
- return await readFile(filePath, 'utf-8');
364
- }
365
- catch {
366
- return null;
367
- }
368
- }
369
- // ---------------------------------------------------------------------------
370
- // Public API
371
- // ---------------------------------------------------------------------------
372
- /**
373
- * Read and parse all pre-computed analysis files for a given date.
374
- *
375
- * @param date - Date string in YYYY-MM-DD format
376
- * @param basePath - Optional override for the base analysis directory path
377
- * @returns Complete DailyAnalysis object; individual fields are `null` when
378
- * the corresponding file is absent or cannot be parsed.
379
- *
380
- * @example
381
- * ```typescript
382
- * const analysis = await readDailyAnalysis('2026-03-26');
383
- * if (analysis.hasAnalysis) {
384
- * console.log(analysis.classification?.level); // 'HIGH'
385
- * console.log(analysis.significance?.score); // 72
386
- * }
387
- * ```
388
- */
389
- export async function readDailyAnalysis(date, basePath) {
390
- const [classificationMd, riskMd, swotMd, threatMd, stakeholdersMd, significanceMd, synthesisMd,] = await Promise.all([
391
- readAnalysisFile(date, ANALYSIS_FILES.classification, basePath),
392
- readAnalysisFile(date, ANALYSIS_FILES.risk, basePath),
393
- readAnalysisFile(date, ANALYSIS_FILES.swot, basePath),
394
- readAnalysisFile(date, ANALYSIS_FILES.threat, basePath),
395
- readAnalysisFile(date, ANALYSIS_FILES.stakeholders, basePath),
396
- readAnalysisFile(date, ANALYSIS_FILES.significance, basePath),
397
- readAnalysisFile(date, ANALYSIS_FILES.synthesis, basePath),
398
- ]);
399
- const classification = classificationMd ? parseClassificationResults(classificationMd) : null;
400
- const riskAssessment = riskMd ? parseRiskAssessment(riskMd) : null;
401
- const swot = swotMd ? parseSwotAnalysis(swotMd) : null;
402
- const threatAnalysis = threatMd ? parseThreatAnalysis(threatMd) : null;
403
- const stakeholderPerspectives = stakeholdersMd ? parseStakeholderPerspectives(stakeholdersMd) : null;
404
- const significance = significanceMd ? parseSignificanceScoring(significanceMd) : null;
405
- const synthesis = synthesisMd ? parseSynthesisSummary(synthesisMd) : null;
406
- const hasAnalysis = [
407
- classification,
408
- riskAssessment,
409
- swot,
410
- threatAnalysis,
411
- stakeholderPerspectives,
412
- significance,
413
- synthesis,
414
- ].some(field => field !== null);
415
- return {
416
- date,
417
- classification,
418
- riskAssessment,
419
- swot,
420
- threatAnalysis,
421
- stakeholderPerspectives,
422
- significance,
423
- synthesis,
424
- hasAnalysis,
425
- };
426
- }
427
- /**
428
- * Derive the most recent date for which analysis files exist.
429
- * Searches backwards from today up to `maxDaysBack` days.
430
- *
431
- * @param maxDaysBack - Maximum number of days to search back (default 7)
432
- * @param basePath - Optional override for the base analysis directory path
433
- * @returns ISO date string (YYYY-MM-DD) or `null` if no analysis found
434
- */
435
- export async function findLatestAnalysisDate(maxDaysBack = 7, basePath) {
436
- const resolvedBase = basePath ?? ANALYSIS_BASE_PATH;
437
- const today = new Date();
438
- for (let i = 0; i < maxDaysBack; i++) {
439
- const d = new Date(today);
440
- d.setDate(d.getDate() - i);
441
- const dateStr = d.toISOString().split('T')[0];
442
- const dirPath = join(resolvedBase, dateStr);
443
- if (existsSync(dirPath)) {
444
- // Check at least one analysis file exists
445
- const hasFile = Object.values(ANALYSIS_FILES).some(f => existsSync(join(dirPath, f)));
446
- if (hasFile)
447
- return dateStr;
448
- }
449
- }
450
- return null;
451
- }
452
- /**
453
- * Read the most recent available daily analysis.
454
- * Convenience wrapper around `findLatestAnalysisDate` + `readDailyAnalysis`.
455
- *
456
- * @param maxDaysBack - Maximum number of days to search back (default 7)
457
- * @param basePath - Optional override for the base analysis directory path
458
- * @returns DailyAnalysis for the most recent date found, or a stub with
459
- * `hasAnalysis: false` when no analysis files exist.
460
- */
461
- export async function readLatestAnalysis(maxDaysBack = 7, basePath) {
462
- const date = await findLatestAnalysisDate(maxDaysBack, basePath);
463
- if (!date) {
464
- const today = new Date().toISOString().split('T')[0];
465
- return {
466
- date: today,
467
- classification: null,
468
- riskAssessment: null,
469
- swot: null,
470
- threatAnalysis: null,
471
- stakeholderPerspectives: null,
472
- significance: null,
473
- synthesis: null,
474
- hasAnalysis: false,
475
- };
476
- }
477
- return readDailyAnalysis(date, basePath);
478
- }
479
- /**
480
- * Derive article classification metadata from a DailyAnalysis.
481
- * Returns safe defaults when analysis is absent.
482
- *
483
- * @param analysis - DailyAnalysis object (may have hasAnalysis: false)
484
- * @returns Flattened metadata suitable for ArticleData enrichment
485
- */
486
- export function deriveArticleClassificationMeta(analysis) {
487
- return {
488
- classificationLevel: analysis.classification?.level ?? 'MEDIUM',
489
- riskLevel: analysis.riskAssessment?.level ?? 'moderate',
490
- confidenceLabel: analysis.classification?.confidence ?? analysis.riskAssessment?.confidence ?? 'MEDIUM',
491
- significanceScore: analysis.significance?.score,
492
- urgency: analysis.significance?.urgency,
493
- };
494
- }
495
- //# sourceMappingURL=analysis-reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analysis-reader.js","sourceRoot":"","sources":["../../scripts/analysis-reader.ts"],"names":[],"mappings":"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"}
@@ -1,148 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * @module Intelligence/ContentQuality
4
- * @category Intelligence Operations / Supporting Infrastructure
5
- * @name Article Quality Enhancer - Political Intelligence Content Validation Framework (TypeScript)
6
- *
7
- * @description
8
- * Comprehensive content quality assurance system implementing OSINT/INTOP-driven editorial standards
9
- * for political intelligence journalism. This utility validates article structure, analytical depth, source attribution,
10
- * and perspective diversity to ensure intelligence reporting meets rigorous transparency requirements.
11
- *
12
- * @author Hack23 AB (Content Intelligence Team)
13
- * @license Apache-2.0
14
- * @version 2.0.0
15
- */
16
- import type { QualityThresholds, QualityMetrics, QualityResult } from './types/validation.js';
17
- /**
18
- * Default quality thresholds based on political intelligence editorial standards
19
- */
20
- declare const DEFAULT_THRESHOLDS: QualityThresholds;
21
- /**
22
- * Assess analytical depth of article content
23
- *
24
- * Looks for:
25
- * - Causal reasoning ("because", "therefore", "as a result")
26
- * - Comparative analysis ("compared to", "in contrast", "while")
27
- * - Trend analysis ("trend", "pattern", "shift")
28
- * - Evidence-based claims (references to data, studies, reports)
29
- * - Multiple perspectives (quotes from different actors)
30
- *
31
- * @param content - HTML content of article
32
- * @returns Score 0.0-1.0
33
- */
34
- declare function assessAnalyticalDepth(content: string): number;
35
- /**
36
- * Count unique party perspectives mentioned in article.
37
- *
38
- * Uses PARTY_VARIANTS pattern to prevent double-counting when both
39
- * full names and abbreviations appear in the same text.
40
- *
41
- * @param content - HTML content of article
42
- * @returns Number of unique parties mentioned
43
- */
44
- declare function countPartyPerspectives(content: string): number;
45
- /**
46
- * Count cross-referenced Riksdag/Regering documents
47
- *
48
- * @param content - HTML content of article
49
- * @returns Number of unique document IDs found
50
- */
51
- declare function countCrossReferences(content: string): number;
52
- /**
53
- * Detect "Why This Matters" section
54
- *
55
- * @param content - HTML content of article
56
- * @returns True if section exists
57
- */
58
- declare function hasWhyThisMatters(content: string): boolean;
59
- /**
60
- * Detect historical context
61
- *
62
- * @param content - HTML content of article
63
- * @returns True if historical context present
64
- */
65
- declare function hasHistoricalContext(content: string): boolean;
66
- /**
67
- * Detect international comparison
68
- *
69
- * @param content - HTML content of article
70
- * @returns True if international comparison present
71
- */
72
- declare function hasInternationalComparison(content: string): boolean;
73
- /**
74
- * Detect language switcher navigation
75
- *
76
- * @param content - HTML content of article
77
- * @returns True if language switcher nav is present
78
- */
79
- declare function hasLanguageSwitcher(content: string): boolean;
80
- /**
81
- * Detect article-top-nav with back-to-news link
82
- *
83
- * @param content - HTML content of article
84
- * @returns True if article-top-nav div is present
85
- */
86
- declare function hasArticleTopNav(content: string): boolean;
87
- /**
88
- * Detect back-to-news link (in top nav or footer)
89
- *
90
- * @param content - HTML content of article
91
- * @returns True if back-to-news link is present
92
- */
93
- declare function hasBackToNews(content: string): boolean;
94
- /**
95
- * Calculate overall quality score
96
- *
97
- * Weights:
98
- * - Analytical depth: 30%
99
- * - Party perspectives: 25%
100
- * - Cross-references: 25%
101
- * - "Why This Matters": 10%
102
- * - Historical context: 5%
103
- * - International comparison: 5%
104
- *
105
- * @param metrics - Individual quality metrics
106
- * @returns Overall score 0.0-1.0
107
- */
108
- declare function calculateQualityScore(metrics: QualityMetrics): number;
109
- /**
110
- * Enhance article quality and validate against thresholds
111
- *
112
- * @param articlePath - Path to article HTML file
113
- * @param thresholds - Quality thresholds (optional, merged with defaults)
114
- * @returns Quality assessment result
115
- */
116
- export declare function enhanceArticleQuality(articlePath: string, thresholds?: Partial<QualityThresholds>): Promise<QualityResult>;
117
- /**
118
- * Batch enhance multiple articles
119
- *
120
- * @param articlePaths - Array of article paths
121
- * @param thresholds - Quality thresholds (optional, merged with defaults)
122
- * @returns Array of quality results
123
- */
124
- export declare function batchEnhanceQuality(articlePaths: readonly string[], thresholds?: Partial<QualityThresholds>): Promise<QualityResult[]>;
125
- /**
126
- * Fix common HTML nesting errors in article content.
127
- *
128
- * Corrects invalid block-level nesting patterns:
129
- * - `<p><ul>` → removes the enclosing `<p>` so the `<ul>` list is not nested inside a `<p>` paragraph
130
- * - `<p><ol>` → removes the enclosing `<p>` so the `<ol>` list is not nested inside a `<p>` paragraph
131
- * - `<p><div>` → removes the enclosing `<p>` so the block-level `<div>` is not nested inside a `<p>` paragraph
132
- * - Orphaned `</p>` immediately after `</ul>` → removed
133
- * - Orphaned `</p>` immediately after `</ol>` → removed
134
- * - Orphaned `</p>` immediately after `</div>` (when wrapped by `<p>`) → removed
135
- *
136
- * @param content - Raw HTML content
137
- * @returns Fixed HTML content
138
- */
139
- export declare function fixArticleHtmlNesting(content: string): string;
140
- /**
141
- * Fix HTML nesting errors in a file in-place.
142
- *
143
- * @param filePath - Path to the HTML file to fix
144
- * @returns True if the file was modified
145
- */
146
- export declare function fixHtmlNestingInFile(filePath: string): boolean;
147
- export { assessAnalyticalDepth, countPartyPerspectives, countCrossReferences, hasWhyThisMatters, hasHistoricalContext, hasInternationalComparison, hasLanguageSwitcher, hasArticleTopNav, hasBackToNews, calculateQualityScore, DEFAULT_THRESHOLDS, };
148
- //# sourceMappingURL=article-quality-enhancer.d.ts.map