riksdagsmonitor 0.8.23 → 0.8.26

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