riksdagsmonitor 0.8.23 → 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 +53 -21
  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,447 +0,0 @@
1
- /**
2
- * @module ContentGeneration/OppositionAnalysis
3
- * @category ContentGeneration
4
- *
5
- * @title Opposition Motions Article Generator - Legislative Initiative Intelligence
6
- *
7
- * @description
8
- * **INTELLIGENCE OPERATIVE PERSPECTIVE**
9
- *
10
- * This module generates analysis articles on opposition motions (motioner), which are
11
- * parliamentary proposals for policy change submitted by opposition parties and some
12
- * government coalition members. Motions represent the parliamentary toolkit for policy
13
- * challenge and alternatives, making them critical for understanding opposition
14
- * strategy and emerging policy ideas that may later influence government policy.
15
- *
16
- * **PARLIAMENTARY CONTEXT - SWEDISH LEGISLATIVE PROCESS:**
17
- * The Swedish legislative process involves multiple parliamentary document types:
18
- * 1. **Propositioner** (Government Proposals): Executive branch initiates bills
19
- * 2. **Motioner** (Motions): Opposition/members propose alternatives
20
- * 3. **Betänkanden** (Committee Reports): Committees analyze proposals
21
- * 4. **Skrivelser** (Government Reports): Executive reports to parliament
22
- * 5. **Frågor** (Written Questions): Members demand government clarification
23
- *
24
- * Motions exist in this ecosystem as the primary tool for opposition leverage,
25
- * allowing non-governing parties to shape the agenda and challenge government policy.
26
- *
27
- * **OPPOSITION MOTION INTELLIGENCE VALUE:**
28
- * Motions reveal:
29
- * 1. **Alternative Policy Directions**: What opposition wants to change
30
- * 2. **Coalition Fault Lines**: Issues dividing government coalition
31
- * 3. **Emerging Policy Ideas**: Proposals not yet on government agenda
32
- * 4. **Party Positioning**: Which parties cooperate on specific issues
33
- * 5. **Time-to-Victory Prediction**: Which opposition ideas may gain government support
34
- *
35
- * **MOTION TYPES & CHARACTERISTICS:**
36
- * - **Policy Motions**: Comprehensive proposal for new direction
37
- * - **Amendment Motions**: Modification to existing policy
38
- * - **Rhetorical Motions**: Statement of principle (often symbolic)
39
- * - **Procedural Motions**: Changes to parliamentary rules
40
- * - **Budget Motions**: Alternative budget proposals during budget process
41
- *
42
- * **ARTICLE STRUCTURE:**
43
- * Each opposition motion article includes:
44
- * 1. **Motion Summary**: What's being proposed and by whom
45
- * 2. **Policy Problem**: Why opposition believes change is needed
46
- * 3. **Proposed Solution**: Specific policy recommendation
47
- * 4. **Government Position**: Official response and likelihood of adoption
48
- * 5. **Coalition Implications**: Which parties support/oppose the motion
49
- * 6. **Timeline & Impact**: When would implementation occur, affected sectors
50
- *
51
- * **MCP DATA SOURCE:**
52
- * Primary tool: get_motioner
53
- * - Retrieves parliamentary motion records from riksdag platform
54
- * - Includes motion text, sponsorship, current status
55
- * - Enables systematic opposition coverage
56
- *
57
- * Additional tools (all implemented with graceful degradation):
58
- * - search_dokument_fulltext: Full-text policy alternative analysis
59
- * - analyze_g0v_by_department: Government department response tracking
60
- * - search_anforanden: Debate context and party positioning
61
- *
62
- * **OPERATIONAL WORKFLOW:**
63
- * 1. Query MCP: Fetch recent motions (default: 10 most recent)
64
- * 2. Filter Analysis: Identify motions with policy significance
65
- * 3. Government Response: Look up government statement if available
66
- * 4. Impact Assessment: Estimate likelihood of adoption
67
- * 5. Article Generation: Create narrative with contextual analysis
68
- * 6. Multilingual Creation: Generate 14-language editions
69
- * 7. Publication: Deploy to news directory
70
- *
71
- * **PARTY STRATEGY ANALYSIS:**
72
- * Opposition motions serve multiple strategic purposes:
73
- *
74
- * **Social Democrats (S)** - Major Opposition:
75
- * - Systematic policy proposals for when they return to power
76
- * - Cooperation opportunities with other center-left parties
77
- * - Pressure on government coalition weaknesses
78
- *
79
- * **Moderates (M)** - Usually Coalition:
80
- * - Occasionally submit motions in policy disputes
81
- * - Bridges to other center-right parties
82
- * - Strategic positioning for future coalition shifts
83
- *
84
- * **Sweden Democrats (SD)** - Oppositional:
85
- * - Immigration and security policy focus
86
- * - Cross-party alliance building on specific issues
87
- * - Strategic pressure on coalition on security matters
88
- *
89
- * **Left Party (V)** - Opposition:
90
- * - Labor rights and welfare state advocacy
91
- * - Tactical alliance with Social Democrats
92
- * - Symbolic motions on socialist principles
93
- *
94
- * **Other Parties** (KD, L, C, MP, FI):
95
- * - Issue-specific motions aligned with constituencies
96
- * - Coalition or opposition depending on government composition
97
- * - Significant for niche policy areas
98
- *
99
- * **INTELLIGENCE APPLICATIONS:**
100
- * 1. **Opposition Morale Tracking**: Frequency and ambition of motions
101
- * 2. **Cross-Party Coalition**: Identify emerging non-governmental coalitions
102
- * 3. **Policy Direction Detection**: Emerging issues before government acts
103
- * 4. **Vulnerability Identification**: Government weak points under attack
104
- * 5. **Timeline Prediction**: When opposition ideas become policy
105
- *
106
- * **RISK ASSESSMENT FRAMEWORK:**
107
- * Opposition motion analysis feeds into risk assessment:
108
- * - **Coalition Stability**: Frequency of internal coalition conflict motions
109
- * - **Political Momentum**: Which parties gaining traction with ideas
110
- * - **Agenda Shifting**: Policy areas gaining opposition attention
111
- * - **Pressure Points**: Where government facing most challenge
112
- *
113
- * **PERFORMANCE CHARACTERISTICS:**
114
- * - MCP Query: ~400ms for 10 latest motions
115
- * - Article Generation: ~2 seconds per motion
116
- * - Translation: ~5 seconds per motion (parallel)
117
- * - Total: ~12 seconds for batch (10 motions, 14 languages)
118
- *
119
- * **LANGUAGE CONSIDERATIONS:**
120
- * Motion language is dense and technical, presenting translation challenges:
121
- * - Swedish: Formal parliamentary language with specific terminology
122
- * - English: Translation often requires policy context explanation
123
- * - Nordic Languages: Similar legislative traditions enable closer translation
124
- * - Other Languages: Require significant contextualization
125
- *
126
- * **FAILURE HANDLING:**
127
- * - Missing Motion Text: Generate article with summary only
128
- * - Government Response Unavailable: Note that response pending
129
- * - MCP Service Down: Skip batch, retry on schedule
130
- * - Empty Results: Log informational, no articles generated
131
- *
132
- * **GDPR COMPLIANCE:**
133
- * - Motion sponsors are public figures (public record)
134
- * - Member statements in motions are public
135
- * - Data retention follows parliamentary archive standards
136
- * - Supporting audit trail for regulatory compliance
137
- *
138
- * @osint Opposition Strategy Intelligence
139
- * - Maps opposition party alliances through motion sponsorship
140
- * - Tracks emerging opposition policy direction
141
- * - Identifies opposition leadership and influential members
142
- * - Analyzes cross-party coalition patterns for future government
143
- *
144
- * @risk Government Pressure Assessment
145
- * - Opposition motions indicate policy challenges
146
- * - Coalition stress detectable through internal conflict motions
147
- * - Early warning of potential policy shifts
148
- * - Momentum changes in political landscape
149
- *
150
- * @gdpr Public Parliamentary Record
151
- * - Motions are public documents
152
- * - Sponsorship publicly recorded
153
- * - Data retention follows parliamentary standards
154
- * - Supporting historical record for democracy transparency
155
- *
156
- * @security Legislative Integrity
157
- * - Motion authenticity verified through official MCP source
158
- * - Sponsorship verification prevents attribution errors
159
- * - Timestamp validation prevents tampering
160
- * - Official status confirmation from riksdag records
161
- *
162
- * @author Hack23 AB (Opposition Intelligence & Legislative Analysis)
163
- * @license Apache-2.0
164
- * @version 2.0.0
165
- * @since 2024-08-22
166
- * @see scripts/data-transformers.js (Content Generation Utilities)
167
- * @see scripts/article-template.js (HTML Rendering)
168
- * @see Issue #137 (Opposition Tracking Enhancement)
169
- * @see https://www.riksdagen.se/ (Riksdag Parliamentary Records)
170
- */
171
- import { MCPClient } from '../mcp-client.js';
172
- import { generateArticleContent, extractWatchPoints, generateMetadata, calculateReadTime, generateSources, generateContentTitle, filterFreshDocuments } from '../data-transformers.js';
173
- import { generateArticleHTML } from '../article-template.js';
174
- import { getAnalysisEnrichment } from '../generate-news-enhanced/helpers.js';
175
- /**
176
- * Required MCP tools for motions articles
177
- *
178
- * Restored to full 4-tool specification (2026-02-26):
179
- * All four tools are now implemented with graceful degradation on failure.
180
- */
181
- export const REQUIRED_TOOLS = [
182
- 'get_motioner',
183
- 'search_dokument_fulltext',
184
- 'analyze_g0v_by_department',
185
- 'search_anforanden',
186
- ];
187
- /**
188
- * Format date for article slug
189
- */
190
- export function formatDateForSlug(date = new Date()) {
191
- return date.toISOString().split('T')[0] ?? '';
192
- }
193
- /**
194
- * Calculate the current Swedish riksmöte (parliamentary session) string.
195
- * The session runs September–August: e.g. September 2025 → "2025/26".
196
- */
197
- export function getCurrentRiksmote(date = new Date()) {
198
- const year = date.getFullYear();
199
- const month = date.getMonth(); // 0-based; September = 8
200
- const startYear = month >= 8 ? year : year - 1;
201
- const endYY = String(startYear + 1).slice(-2);
202
- return `${startYear}/${endYY}`;
203
- }
204
- /**
205
- * Generate Opposition Motions article
206
- */
207
- export async function generateMotions(options = {}) {
208
- const { languages = ['en', 'sv'], limit = 10, writeArticle = null } = options;
209
- console.log('📝 Generating Opposition Motions article...');
210
- const mcpCalls = [];
211
- try {
212
- const client = new MCPClient();
213
- console.log(' 🔄 Fetching motions from riksdag-regering-mcp...');
214
- const motions = filterFreshDocuments(await client.fetchMotions(limit));
215
- mcpCalls.push({ tool: 'get_motioner', result: motions });
216
- console.log(` 📊 Found ${motions.length} motions`);
217
- if (motions.length === 0) {
218
- console.log(' ℹ️ No new motions found, skipping');
219
- return { success: true, files: 0, mcpCalls };
220
- }
221
- // Tool 2: search_dokument_fulltext — full-text policy alternative analysis
222
- try {
223
- const topTitle = motions[0]?.titel || motions[0]?.title || '';
224
- if (topTitle) {
225
- const ftResponse = await client.request('search_dokument_fulltext', { query: topTitle, limit: 3 });
226
- const ftDocs = (ftResponse['dokument'] ?? ftResponse['results'] ?? []);
227
- mcpCalls.push({ tool: 'search_dokument_fulltext', result: ftDocs });
228
- console.log(` 📄 Full text: ${ftDocs.length} results`);
229
- // Attach the best matching full text only to the primary motion (the one used for the query)
230
- const primaryMotion = motions[0];
231
- if (primaryMotion && ftDocs.length > 0 && !primaryMotion['fullText']) {
232
- const bestDoc = ftDocs[0];
233
- primaryMotion['fullText'] = bestDoc['fullText'] || bestDoc['summary'] || '';
234
- if (ftDocs.length > 1) {
235
- primaryMotion['policyAlternativeDocs'] = ftDocs;
236
- }
237
- }
238
- }
239
- }
240
- catch (err) {
241
- console.warn(' ⚠ search_dokument_fulltext unavailable:', err.message);
242
- mcpCalls.push({ tool: 'search_dokument_fulltext', result: [] });
243
- }
244
- // Tool 3: analyze_g0v_by_department — government department response tracking
245
- let govDeptData = [];
246
- try {
247
- const today0 = new Date();
248
- const thirtyDaysAgo = new Date(today0);
249
- thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
250
- const govResp = await client.request('analyze_g0v_by_department', {
251
- dateFrom: formatDateForSlug(thirtyDaysAgo),
252
- dateTo: formatDateForSlug(today0),
253
- });
254
- govDeptData = (govResp['departments'] ?? govResp['data'] ?? []);
255
- mcpCalls.push({ tool: 'analyze_g0v_by_department', result: govDeptData });
256
- console.log(` 🏛 Gov dept analysis: ${govDeptData.length} departments`);
257
- }
258
- catch (err) {
259
- console.warn(' ⚠ analyze_g0v_by_department unavailable:', err.message);
260
- mcpCalls.push({ tool: 'analyze_g0v_by_department', result: [] });
261
- }
262
- // Tool 4: search_anforanden — debate context and party positioning
263
- try {
264
- const debateQuery = motions[0]?.titel || motions[0]?.title || '';
265
- if (debateQuery) {
266
- const speeches = await client.searchSpeeches({ text: debateQuery, rm: getCurrentRiksmote(), limit: 10 });
267
- mcpCalls.push({ tool: 'search_anforanden', result: speeches });
268
- console.log(` 🗣 Debate speeches: ${speeches.length} found`);
269
- // Attach speeches to the first motion without speeches for "Party Positioning" rendering
270
- if (speeches.length > 0) {
271
- for (const motion of motions) {
272
- const m = motion;
273
- if (!m['speeches']) {
274
- m['speeches'] = speeches.slice(0, 3).map((s) => ({
275
- talare: s['talare'],
276
- parti: s['parti'],
277
- text: s['anforande_text']?.slice(0, 300),
278
- anforande_nummer: s['anforande_nummer'],
279
- }));
280
- break;
281
- }
282
- }
283
- }
284
- }
285
- }
286
- catch (err) {
287
- console.warn(' ⚠ search_anforanden unavailable:', err.message);
288
- mcpCalls.push({ tool: 'search_anforanden', result: [] });
289
- }
290
- const today = new Date();
291
- const slug = `${formatDateForSlug(today)}-opposition-motions`;
292
- const articles = [];
293
- const enrichment = await getAnalysisEnrichment();
294
- for (const lang of languages) {
295
- console.log(` 🌐 Generating ${lang.toUpperCase()} version...`);
296
- const content = generateArticleContent({ motions, govDeptData }, 'motions', lang);
297
- const watchPoints = extractWatchPoints({ motions }, lang);
298
- const metadata = generateMetadata({ motions }, 'motions', lang);
299
- const readTime = calculateReadTime(content);
300
- const sources = generateSources([
301
- 'get_motioner',
302
- 'search_dokument_fulltext',
303
- 'analyze_g0v_by_department',
304
- 'search_anforanden',
305
- ]);
306
- const titles = getTitles(lang, motions.length, motions);
307
- const html = generateArticleHTML({
308
- slug: `${slug}-${lang}.html`,
309
- title: titles.title,
310
- subtitle: titles.subtitle,
311
- date: today.toISOString().split('T')[0] ?? '',
312
- type: 'analysis',
313
- readTime,
314
- lang,
315
- content,
316
- watchPoints,
317
- sources,
318
- keywords: metadata.keywords,
319
- topics: metadata.topics,
320
- tags: metadata.tags,
321
- ...(enrichment ?? {}),
322
- });
323
- articles.push({
324
- lang,
325
- html,
326
- filename: `${slug}-${lang}.html`,
327
- slug: `${slug}-${lang}`
328
- });
329
- if (writeArticle) {
330
- await writeArticle(html, `${slug}-${lang}.html`);
331
- console.log(` ✅ ${lang.toUpperCase()} version generated`);
332
- }
333
- }
334
- return {
335
- success: true,
336
- files: languages.length,
337
- slug,
338
- articles,
339
- mcpCalls,
340
- crossReferences: {
341
- event: `${motions.length} motions`,
342
- sources: ['motioner', 'fulltext', 'gov-dept', 'speeches']
343
- }
344
- };
345
- }
346
- catch (error) {
347
- console.error('❌ Error generating Motions:', error.message);
348
- return {
349
- success: false,
350
- error: error.message,
351
- mcpCalls
352
- };
353
- }
354
- }
355
- function getTitles(lang, count, documents = []) {
356
- const contentTitle = generateContentTitle(documents, lang, 'motions');
357
- if (contentTitle)
358
- return contentTitle;
359
- const titles = {
360
- en: {
361
- title: `Opposition Motions: Battle Lines This Week`,
362
- subtitle: `Analysis of ${count} opposition motions revealing parliamentary fault lines`
363
- },
364
- sv: {
365
- title: `Oppositionsmotioner: Veckans stridslinjer`,
366
- subtitle: `Analys av ${count} oppositionsmotioner som avslöjar parlamentariska skiljelinjer`
367
- },
368
- da: {
369
- title: `Oppositionsforslag: Ugens kamppladser`,
370
- subtitle: `Analyse af ${count} oppositionsforslag`
371
- },
372
- no: {
373
- title: `Opposisjonsforslag: Ukens kamplinjer`,
374
- subtitle: `Analyse av ${count} opposisjonsforslag`
375
- },
376
- fi: {
377
- title: `Opposition aloitteet: Viikon taistelulinjat`,
378
- subtitle: `Analyysi ${count} opposition aloitteesta`
379
- },
380
- de: {
381
- title: `Oppositionsanträge: Kampflinien dieser Woche`,
382
- subtitle: `Analyse von ${count} Oppositionsanträgen`
383
- },
384
- fr: {
385
- title: `Motions d'opposition: Lignes de bataille cette semaine`,
386
- subtitle: `Analyse de ${count} motions d'opposition`
387
- },
388
- es: {
389
- title: `Mociones de oposición: Líneas de batalla esta semana`,
390
- subtitle: `Análisis de ${count} mociones de oposición`
391
- },
392
- nl: {
393
- title: `Oppositiemoties: Strijdlijnen deze week`,
394
- subtitle: `Analyse van ${count} oppositiemoties`
395
- },
396
- ar: {
397
- title: `اقتراحات المعارضة: خطوط المعركة هذا الأسبوع`,
398
- subtitle: `تحليل ${count} اقتراحات المعارضة`
399
- },
400
- he: {
401
- title: `הצעות אופוזיציה: קווי העימות השבוע`,
402
- subtitle: `ניתוח ${count} הצעות אופוזיציה`
403
- },
404
- ja: {
405
- title: `野党動議:今週の対立構図`,
406
- subtitle: `${count}件の野党動議の分析`
407
- },
408
- ko: {
409
- title: `야당 동의: 이번 주 대립 구도`,
410
- subtitle: `${count}개 야당 동의 분석`
411
- },
412
- zh: {
413
- title: `反对党动议:本周对立格局`,
414
- subtitle: `${count}份反对党动议分析`
415
- }
416
- };
417
- return titles[lang] || titles.en;
418
- }
419
- export function validateMotions(article) {
420
- const hasMotions = checkMotions(article);
421
- const hasMinimumSources = countSources(article) >= 3;
422
- const hasOppositionAnalysis = checkOppositionAnalysis(article);
423
- return {
424
- hasMotions,
425
- hasMinimumSources,
426
- hasOppositionAnalysis,
427
- passed: hasMotions && hasMinimumSources && hasOppositionAnalysis
428
- };
429
- }
430
- function checkMotions(article) {
431
- if (!article || !article.content)
432
- return false;
433
- return article.content.toLowerCase().includes('motion') ||
434
- article.content.toLowerCase().includes('opposition');
435
- }
436
- function countSources(article) {
437
- if (!article || !article.sources)
438
- return 0;
439
- return Array.isArray(article.sources) ? article.sources.length : 0;
440
- }
441
- function checkOppositionAnalysis(article) {
442
- if (!article || !article.content)
443
- return false;
444
- const keywords = ['opposition', 'battle', 'fault lines', 'parliamentary'];
445
- return keywords.some(keyword => article.content.toLowerCase().includes(keyword));
446
- }
447
- //# sourceMappingURL=motions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"motions.js","sourceRoot":"","sources":["../../../scripts/news-types/motions.ts"],"names":[],"mappings":"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"}
@@ -1,204 +0,0 @@
1
- /**
2
- * @module ContentGeneration/GovernmentPolicy
3
- * @category ContentGeneration
4
- *
5
- * @title Government Propositions Article Generator - Executive Policy Intelligence
6
- *
7
- * @description
8
- * **INTELLIGENCE OPERATIVE PERSPECTIVE**
9
- *
10
- * This module generates analysis articles on government propositions (propositioner),
11
- * which are formal legislative proposals submitted by the executive branch. Government
12
- * propositions represent the official government agenda and serve as the primary
13
- * mechanism for implementing government policy. Systematic tracking of propositions
14
- * provides a forward-looking view of government priorities, policy direction, and
15
- * coalition stability.
16
- *
17
- * **GOVERNMENT PROPOSITION ROLE IN SWEDISH PARLIAMENT:**
18
- * Sweden's legislative process is government-driven, with ~80% of passed laws originating
19
- * as government propositions. This makes propositions:
20
- * 1. **Clearest Signal of Government Intent**: What coalition plans to actually do
21
- * 2. **Most Likely to Pass**: Government usually has parliament majority
22
- * 3. **Forward-Looking Agenda**: Signals coming policy debates and conflicts
23
- * 4. **Coalition Stress Indicator**: Delayed/withdrawn propositions signal problems
24
- * 5. **International Commitments**: EU directives implemented via propositions
25
- *
26
- * **PROPOSITION TYPES & CHARACTERISTICS:**
27
- * - **Budget Propositions**: Annual government budget (largest single proposition)
28
- * - **Legislation**: New laws or amendments to existing law
29
- * - **Treaty Ratifications**: International agreements needing parliament approval
30
- * - **Appropriations**: Changes to government spending allocations
31
- * - **Constitutional Amendments**: Changes requiring supermajority (requires propositions)
32
- *
33
- * **ARTICLE STRUCTURE:**
34
- * Each government proposition article includes:
35
- * 1. **Proposition Summary**: Official government proposal and objectives
36
- * 2. **Policy Problem**: What problem or commitment proposition addresses
37
- * 3. **Proposed Solution**: Specific legislation and implementation approach
38
- * 4. **Budget Impact**: Cost estimates and revenue implications (if applicable)
39
- * 5. **Party Positions**: Stance from all major parties on proposition
40
- * 6. **Implementation Timeline**: When policy takes effect, phased deployment
41
- * 7. **International Context**: EU/international dimension if applicable
42
- *
43
- * **MCP DATA SOURCE:**
44
- * Primary tool: get_propositioner
45
- * - Retrieves government proposition records from riksdag platform
46
- * - Includes full proposition text, budget impact, department information
47
- * - Enables systematic government agenda tracking
48
- *
49
- * Additional tools for comprehensive analysis:
50
- * - search_dokument_fulltext: Full policy analysis from proposition
51
- * - analyze_g0v_by_department: Department-by-department impact
52
- * - search_anforanden: Parliamentary debate on proposition
53
- *
54
- * **OPERATIONAL WORKFLOW:**
55
- * 1. Query MCP: Fetch recent propositions (default: 10 most recent)
56
- * 2. Importance Assessment: Identify major vs. routine propositions
57
- * 3. Coalition Impact Analysis: Identify potential conflict points
58
- * 4. Budget Analysis: Extract financial implications
59
- * 5. Article Generation: Create narrative with context
60
- * 6. Multilingual Creation: Generate 14-language editions
61
- * 7. Publication: Deploy to news directory with calendar integration
62
- *
63
- * **BUDGET PROPOSITION SPECIAL HANDLING:**
64
- * The annual budget proposition is the largest government document:
65
- * - **Publication**: Typically mid-September
66
- * - **Parliament Debate**: September-October
67
- * - **Vote**: October/November
68
- * - **Implementation**: January 1 following year
69
- *
70
- * Budget analysis includes:
71
- * - Revenue and expenditure totals
72
- * - Major spending areas (defense, healthcare, education, welfare)
73
- * - Tax changes and revenue measures
74
- * - Coalition compromise points (visible in allocations)
75
- * - Economic assumptions and forecasts
76
- *
77
- * **PROPOSITION STATUS TRACKING:**
78
- * Government propositions move through parliamentary stages:
79
- * 1. **Submitted**: Government formally submits to parliament
80
- * 2. **First Reading**: Parliament receives and initial debate
81
- * 3. **Committee Review**: Specialized committee analyzes
82
- * 4. **Second Reading**: General debate on committee recommendations
83
- * 5. **Final Reading**: Amendment proposals and final vote
84
- * 6. **Passed/Rejected**: Final outcome
85
- *
86
- * Articles track where propositions are in this process.
87
- *
88
- * **GOVERNMENT COALITION ANALYSIS:**
89
- * Government propositions reveal coalition dynamics:
90
- * - **Compromise Indicators**: Proposition content shows coalition deals
91
- * - **Pressure Points**: Delayed propositions indicate coalition conflict
92
- * - **Distribution of Wins**: Budget allocations show party influence
93
- * - **Minority Support**: Some governments require opposition support
94
- *
95
- * **INTELLIGENCE APPLICATIONS:**
96
- * 1. **Government Agenda Tracking**: What coalition prioritizes
97
- * 2. **Coalition Stability**: Ability to pass propositions on schedule
98
- * 3. **Policy Direction**: Where government moving country
99
- * 4. **International Alignment**: Sweden's commitment to EU/international goals
100
- * 5. **Timeline Prediction**: When major policy changes take effect
101
- *
102
- * **ECONOMIC IMPACT ANALYSIS:**
103
- * Government propositions with fiscal impact are analyzed for:
104
- * - **GDP Growth Impact**: Estimated effect on economic growth
105
- * - **Employment Effects**: Job creation or losses by sector
106
- * - **Inflation Impact**: Effect on price levels
107
- * - **Debt Position**: Impact on government borrowing
108
- * - **Sectoral Effects**: Winners and losers by industry
109
- *
110
- * **PERFORMANCE CHARACTERISTICS:**
111
- * - MCP Query: ~500ms for 10 latest propositions
112
- * - Article Generation: ~2.5 seconds per proposition
113
- * - Translation: ~5 seconds per proposition (parallel)
114
- * - Total: ~15 seconds for batch (10 propositions, 14 languages)
115
- *
116
- * **LANGUAGE CONSIDERATIONS:**
117
- * Government propositions include:
118
- * - Complex legal language (difficult to translate)
119
- * - Technical policy terminology (domain-specific)
120
- * - Budget figures and statistical data (language-neutral)
121
- * - International commitments (standardized terminology)
122
- *
123
- * **FAILURE HANDLING:**
124
- * - Missing Proposition Text: Generate article with summary only
125
- * - Committee Report Unavailable: Continue with available data
126
- * - Budget Analysis Failure: Note that analysis pending
127
- * - MCP Service Down: Skip batch, retry on schedule
128
- *
129
- * **GDPR COMPLIANCE:**
130
- * - Government propositions are public documents
131
- * - Department official names published (public roles)
132
- * - Data retention follows parliamentary archive standards
133
- * - Supporting audit trail for democratic transparency
134
- *
135
- * @osint Government Strategy Intelligence
136
- * - Maps government policy priorities through proposition agenda
137
- * - Tracks coalition compatibility on major policy issues
138
- * - Identifies emerging government challenges
139
- * - Analyzes EU influence on Swedish policy
140
- *
141
- * @risk Government Stability Assessment
142
- * - Proposition passage rates indicate coalition cohesion
143
- * - Delayed propositions signal coalition stress
144
- * - Controversial propositions show political divisions
145
- * - Budget battles reveal party power distribution
146
- *
147
- * @gdpr Policy Documentation
148
- * - Government propositions publicly documented
149
- * - Data retention follows parliamentary standards
150
- * - Supporting transparency in democratic process
151
- * - Audit trail for regulatory compliance
152
- *
153
- * @security Executive Intent Verification
154
- * - Propositions verified through official MCP source
155
- * - Originating department verified
156
- * - Budget figures validated against official documents
157
- * - Timestamp prevents tampering
158
- *
159
- * @author Hack23 AB (Government Intelligence & Policy Analysis)
160
- * @license Apache-2.0
161
- * @version 2.0.0
162
- * @since 2024-08-28
163
- * @see scripts/data-transformers.js (Content Generation)
164
- * @see scripts/article-template.js (HTML Rendering)
165
- * @see Issue #140 (Government Proposition Tracking)
166
- * @see https://www.riksdagen.se/ (Parliamentary Records)
167
- * @see https://www.regeringen.se/ (Government Official Site)
168
- */
169
- import type { Language } from '../types/language.js';
170
- import type { GenerationResult } from '../types/article.js';
171
- /**
172
- * Required MCP tools for propositions articles
173
- */
174
- export declare const REQUIRED_TOOLS: readonly string[];
175
- export interface TitleSet {
176
- title: string;
177
- subtitle: string;
178
- }
179
- export interface PropositionsValidationResult {
180
- hasPropositions: boolean;
181
- hasMinimumSources: boolean;
182
- hasPolicyAnalysis: boolean;
183
- passed: boolean;
184
- }
185
- export interface ArticleInput {
186
- content?: string;
187
- sources?: string[];
188
- [key: string]: unknown;
189
- }
190
- export interface GenerationOptions {
191
- languages?: Language[];
192
- limit?: number;
193
- writeArticle?: ((html: string, filename: string) => Promise<void>) | null;
194
- }
195
- /**
196
- * Format date for article slug
197
- */
198
- export declare function formatDateForSlug(date?: Date): string;
199
- /**
200
- * Generate Government Propositions article
201
- */
202
- export declare function generatePropositions(options?: GenerationOptions): Promise<GenerationResult>;
203
- export declare function validatePropositions(article: ArticleInput): PropositionsValidationResult;
204
- //# sourceMappingURL=propositions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"propositions.d.ts","sourceRoot":"","sources":["../../../scripts/news-types/propositions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuKG;AAgBH,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,4BAA4B;IAC3C,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,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;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiIrG;AAoED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,4BAA4B,CAWxF"}