riksdagsmonitor 0.8.15 → 0.8.18

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 (169) hide show
  1. package/README.md +5 -0
  2. package/dist/lib/dashboards/coalition-dashboard.d.ts.map +1 -1
  3. package/dist/lib/dashboards/coalition-dashboard.js +25 -9
  4. package/dist/lib/dashboards/coalition-dashboard.js.map +1 -1
  5. package/dist/lib/dashboards/coalition-loader.d.ts.map +1 -1
  6. package/dist/lib/dashboards/coalition-loader.js +68 -32
  7. package/dist/lib/dashboards/coalition-loader.js.map +1 -1
  8. package/dist/lib/shared/chart-factory.d.ts +9 -2
  9. package/dist/lib/shared/chart-factory.d.ts.map +1 -1
  10. package/dist/lib/shared/chart-factory.js +9 -2
  11. package/dist/lib/shared/chart-factory.js.map +1 -1
  12. package/dist/lib/shared/theme.d.ts +1 -18
  13. package/dist/lib/shared/theme.d.ts.map +1 -1
  14. package/dist/lib/shared/theme.js +1 -18
  15. package/dist/lib/shared/theme.js.map +1 -1
  16. package/dist/scripts/analysis-reader.d.ts +2 -1
  17. package/dist/scripts/analysis-reader.d.ts.map +1 -1
  18. package/dist/scripts/analysis-reader.js.map +1 -1
  19. package/dist/scripts/data-transformers/content-generators/index.d.ts +32 -4
  20. package/dist/scripts/data-transformers/content-generators/index.d.ts.map +1 -1
  21. package/dist/scripts/data-transformers/content-generators/index.js +4 -2
  22. package/dist/scripts/data-transformers/content-generators/index.js.map +1 -1
  23. package/dist/scripts/data-transformers/content-generators/shared.d.ts +44 -2
  24. package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +1 -1
  25. package/dist/scripts/data-transformers/content-generators/shared.js +9 -3
  26. package/dist/scripts/data-transformers/content-generators/shared.js.map +1 -1
  27. package/dist/scripts/generate-news-enhanced/config.d.ts +5 -4
  28. package/dist/scripts/generate-news-enhanced/config.d.ts.map +1 -1
  29. package/dist/scripts/generate-news-enhanced/config.js +3 -3
  30. package/dist/scripts/generate-news-enhanced/config.js.map +1 -1
  31. package/dist/scripts/generate-news-enhanced/generators.d.ts.map +1 -1
  32. package/dist/scripts/generate-news-enhanced/generators.js +38 -15
  33. package/dist/scripts/generate-news-enhanced/generators.js.map +1 -1
  34. package/dist/scripts/generate-news-enhanced/helpers.d.ts +1 -2
  35. package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +1 -1
  36. package/dist/scripts/generate-news-enhanced/helpers.js +31 -1
  37. package/dist/scripts/generate-news-enhanced/helpers.js.map +1 -1
  38. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts +12 -1
  39. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +1 -1
  40. package/dist/scripts/generate-news-enhanced/swot-analyzer.js +48 -0
  41. package/dist/scripts/generate-news-enhanced/swot-analyzer.js.map +1 -1
  42. package/dist/scripts/news-types/breaking-news.d.ts.map +1 -1
  43. package/dist/scripts/news-types/breaking-news.js +5 -1
  44. package/dist/scripts/news-types/breaking-news.js.map +1 -1
  45. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts +64 -1
  46. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts.map +1 -1
  47. package/dist/scripts/pre-article-analysis/markdown-serializer.js.map +1 -1
  48. package/dist/scripts/pre-article-analysis.d.ts.map +1 -1
  49. package/dist/scripts/pre-article-analysis.js +20 -7
  50. package/dist/scripts/pre-article-analysis.js.map +1 -1
  51. package/dist/scripts/types/article.d.ts +33 -3
  52. package/dist/scripts/types/article.d.ts.map +1 -1
  53. package/package.json +3 -3
  54. package/dist/scripts/ai-analysis/coalition-detector.d.ts +0 -28
  55. package/dist/scripts/ai-analysis/coalition-detector.d.ts.map +0 -1
  56. package/dist/scripts/ai-analysis/coalition-detector.js +0 -242
  57. package/dist/scripts/ai-analysis/coalition-detector.js.map +0 -1
  58. package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts +0 -73
  59. package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts.map +0 -1
  60. package/dist/scripts/ai-analysis/dashboard-analyzer.js +0 -511
  61. package/dist/scripts/ai-analysis/dashboard-analyzer.js.map +0 -1
  62. package/dist/scripts/ai-analysis/document-analyzer.d.ts +0 -196
  63. package/dist/scripts/ai-analysis/document-analyzer.d.ts.map +0 -1
  64. package/dist/scripts/ai-analysis/document-analyzer.js +0 -1001
  65. package/dist/scripts/ai-analysis/document-analyzer.js.map +0 -1
  66. package/dist/scripts/ai-analysis/domains/index.d.ts +0 -15
  67. package/dist/scripts/ai-analysis/domains/index.d.ts.map +0 -1
  68. package/dist/scripts/ai-analysis/domains/index.js +0 -494
  69. package/dist/scripts/ai-analysis/domains/index.js.map +0 -1
  70. package/dist/scripts/ai-analysis/helpers.d.ts +0 -43
  71. package/dist/scripts/ai-analysis/helpers.d.ts.map +0 -1
  72. package/dist/scripts/ai-analysis/helpers.js +0 -79
  73. package/dist/scripts/ai-analysis/helpers.js.map +0 -1
  74. package/dist/scripts/ai-analysis/index.d.ts +0 -15
  75. package/dist/scripts/ai-analysis/index.d.ts.map +0 -1
  76. package/dist/scripts/ai-analysis/index.js +0 -14
  77. package/dist/scripts/ai-analysis/index.js.map +0 -1
  78. package/dist/scripts/ai-analysis/pipeline.d.ts +0 -41
  79. package/dist/scripts/ai-analysis/pipeline.d.ts.map +0 -1
  80. package/dist/scripts/ai-analysis/pipeline.js +0 -208
  81. package/dist/scripts/ai-analysis/pipeline.js.map +0 -1
  82. package/dist/scripts/ai-analysis/political-significance.d.ts +0 -63
  83. package/dist/scripts/ai-analysis/political-significance.d.ts.map +0 -1
  84. package/dist/scripts/ai-analysis/political-significance.js +0 -227
  85. package/dist/scripts/ai-analysis/political-significance.js.map +0 -1
  86. package/dist/scripts/ai-analysis/quality-assessor.d.ts +0 -104
  87. package/dist/scripts/ai-analysis/quality-assessor.d.ts.map +0 -1
  88. package/dist/scripts/ai-analysis/quality-assessor.js +0 -554
  89. package/dist/scripts/ai-analysis/quality-assessor.js.map +0 -1
  90. package/dist/scripts/ai-analysis/swot/index.d.ts +0 -56
  91. package/dist/scripts/ai-analysis/swot/index.d.ts.map +0 -1
  92. package/dist/scripts/ai-analysis/swot/index.js +0 -360
  93. package/dist/scripts/ai-analysis/swot/index.js.map +0 -1
  94. package/dist/scripts/ai-analysis/swot/placeholders.d.ts +0 -30
  95. package/dist/scripts/ai-analysis/swot/placeholders.d.ts.map +0 -1
  96. package/dist/scripts/ai-analysis/swot/placeholders.js +0 -381
  97. package/dist/scripts/ai-analysis/swot/placeholders.js.map +0 -1
  98. package/dist/scripts/ai-analysis/types.d.ts +0 -333
  99. package/dist/scripts/ai-analysis/types.d.ts.map +0 -1
  100. package/dist/scripts/ai-analysis/types.js +0 -19
  101. package/dist/scripts/ai-analysis/types.js.map +0 -1
  102. package/dist/scripts/ai-analysis/visualisation/index.d.ts +0 -15
  103. package/dist/scripts/ai-analysis/visualisation/index.d.ts.map +0 -1
  104. package/dist/scripts/ai-analysis/visualisation/index.js +0 -179
  105. package/dist/scripts/ai-analysis/visualisation/index.js.map +0 -1
  106. package/dist/scripts/analysis-framework/cross-reference.d.ts +0 -35
  107. package/dist/scripts/analysis-framework/cross-reference.d.ts.map +0 -1
  108. package/dist/scripts/analysis-framework/cross-reference.js +0 -290
  109. package/dist/scripts/analysis-framework/cross-reference.js.map +0 -1
  110. package/dist/scripts/analysis-framework/index.d.ts +0 -79
  111. package/dist/scripts/analysis-framework/index.d.ts.map +0 -1
  112. package/dist/scripts/analysis-framework/index.js +0 -133
  113. package/dist/scripts/analysis-framework/index.js.map +0 -1
  114. package/dist/scripts/analysis-framework/lenses/citizen.d.ts +0 -29
  115. package/dist/scripts/analysis-framework/lenses/citizen.d.ts.map +0 -1
  116. package/dist/scripts/analysis-framework/lenses/citizen.js +0 -220
  117. package/dist/scripts/analysis-framework/lenses/citizen.js.map +0 -1
  118. package/dist/scripts/analysis-framework/lenses/economic.d.ts +0 -29
  119. package/dist/scripts/analysis-framework/lenses/economic.d.ts.map +0 -1
  120. package/dist/scripts/analysis-framework/lenses/economic.js +0 -227
  121. package/dist/scripts/analysis-framework/lenses/economic.js.map +0 -1
  122. package/dist/scripts/analysis-framework/lenses/government.d.ts +0 -32
  123. package/dist/scripts/analysis-framework/lenses/government.d.ts.map +0 -1
  124. package/dist/scripts/analysis-framework/lenses/government.js +0 -265
  125. package/dist/scripts/analysis-framework/lenses/government.js.map +0 -1
  126. package/dist/scripts/analysis-framework/lenses/international.d.ts +0 -29
  127. package/dist/scripts/analysis-framework/lenses/international.d.ts.map +0 -1
  128. package/dist/scripts/analysis-framework/lenses/international.js +0 -248
  129. package/dist/scripts/analysis-framework/lenses/international.js.map +0 -1
  130. package/dist/scripts/analysis-framework/lenses/media.d.ts +0 -29
  131. package/dist/scripts/analysis-framework/lenses/media.d.ts.map +0 -1
  132. package/dist/scripts/analysis-framework/lenses/media.js +0 -211
  133. package/dist/scripts/analysis-framework/lenses/media.js.map +0 -1
  134. package/dist/scripts/analysis-framework/lenses/opposition.d.ts +0 -29
  135. package/dist/scripts/analysis-framework/lenses/opposition.d.ts.map +0 -1
  136. package/dist/scripts/analysis-framework/lenses/opposition.js +0 -234
  137. package/dist/scripts/analysis-framework/lenses/opposition.js.map +0 -1
  138. package/dist/scripts/analysis-framework/methodology-types.d.ts +0 -309
  139. package/dist/scripts/analysis-framework/methodology-types.d.ts.map +0 -1
  140. package/dist/scripts/analysis-framework/methodology-types.js +0 -38
  141. package/dist/scripts/analysis-framework/methodology-types.js.map +0 -1
  142. package/dist/scripts/analysis-framework/political-classification.d.ts +0 -58
  143. package/dist/scripts/analysis-framework/political-classification.d.ts.map +0 -1
  144. package/dist/scripts/analysis-framework/political-classification.js +0 -414
  145. package/dist/scripts/analysis-framework/political-classification.js.map +0 -1
  146. package/dist/scripts/analysis-framework/political-risk-assessment.d.ts +0 -74
  147. package/dist/scripts/analysis-framework/political-risk-assessment.d.ts.map +0 -1
  148. package/dist/scripts/analysis-framework/political-risk-assessment.js +0 -656
  149. package/dist/scripts/analysis-framework/political-risk-assessment.js.map +0 -1
  150. package/dist/scripts/analysis-framework/political-threat-analysis.d.ts +0 -65
  151. package/dist/scripts/analysis-framework/political-threat-analysis.d.ts.map +0 -1
  152. package/dist/scripts/analysis-framework/political-threat-analysis.js +0 -553
  153. package/dist/scripts/analysis-framework/political-threat-analysis.js.map +0 -1
  154. package/dist/scripts/analysis-framework/significance-scorer.d.ts +0 -62
  155. package/dist/scripts/analysis-framework/significance-scorer.d.ts.map +0 -1
  156. package/dist/scripts/analysis-framework/significance-scorer.js +0 -196
  157. package/dist/scripts/analysis-framework/significance-scorer.js.map +0 -1
  158. package/dist/scripts/analysis-framework/types.d.ts +0 -138
  159. package/dist/scripts/analysis-framework/types.d.ts.map +0 -1
  160. package/dist/scripts/analysis-framework/types.js +0 -12
  161. package/dist/scripts/analysis-framework/types.js.map +0 -1
  162. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.d.ts +0 -89
  163. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.d.ts.map +0 -1
  164. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.js +0 -667
  165. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.js.map +0 -1
  166. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts +0 -83
  167. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts.map +0 -1
  168. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.js +0 -219
  169. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.js.map +0 -1
@@ -1,265 +0,0 @@
1
- /**
2
- * @module analysis-framework/lenses/government
3
- * @description Government perspective lens for parliamentary document analysis.
4
- *
5
- * Evaluates every document from the government's vantage point:
6
- * - Policy execution feasibility
7
- * - Budget and resource implications
8
- * - Coalition agreement alignment
9
- * - International commitment compliance
10
- *
11
- * The lens produces a `PerspectiveAnalysis` with SWOT contributions,
12
- * dashboard metrics, and mindmap nodes ready for downstream generators.
13
- *
14
- * @author Hack23 AB
15
- * @license Apache-2.0
16
- */
17
- import { detectPolicyDomains } from '../../data-transformers/policy-analysis.js';
18
- // ---------------------------------------------------------------------------
19
- // Internal keyword banks
20
- // ---------------------------------------------------------------------------
21
- /** Keywords that indicate a document involves coalition-critical decisions */
22
- const COALITION_CRITICAL_KEYWORDS = [
23
- 'tidöavtal', 'tidöpartner', 'samarbetspartier', 'januariavtal',
24
- 'samarbetspartierna', 'sd-stöd', 'budgetram', 'budgetproposition',
25
- 'statsbudget', 'ramproposition', 'takpolitik',
26
- ];
27
- /** Keywords signalling budget pressure or fiscal constraint */
28
- const FISCAL_PRESSURE_KEYWORDS = [
29
- 'kostnadsökning', 'budgetbelastning', 'finansiering', 'finansiellt utrymme',
30
- 'anslagsökning', 'anslagnedskärning', 'nettoutgifter', 'statsskuld',
31
- 'lånebehov', 'underskott', 'surplus', 'deficit', 'fiscal gap',
32
- 'savings requirement', 'besparing',
33
- ];
34
- /** High-influence committee codes for the government lens */
35
- const GOV_HIGH_INFLUENCE_COMMITTEES = new Set(['FiU', 'KU', 'FöU', 'UU', 'JuU']);
36
- // ---------------------------------------------------------------------------
37
- // Localised lens labels
38
- // ---------------------------------------------------------------------------
39
- const LENS_LABELS = {
40
- en: { lensName: 'Government Perspective', stakeholder: 'Government' },
41
- sv: { lensName: 'Regeringsperspektiv', stakeholder: 'Regeringen' },
42
- da: { lensName: 'Regeringsperspektiv', stakeholder: 'Regeringen' },
43
- no: { lensName: 'Regjeringsperspektiv', stakeholder: 'Regjeringen' },
44
- fi: { lensName: 'Hallituksen näkökulma', stakeholder: 'Hallitus' },
45
- de: { lensName: 'Regierungsperspektive', stakeholder: 'Regierung' },
46
- fr: { lensName: 'Perspective gouvernementale', stakeholder: 'Gouvernement' },
47
- es: { lensName: 'Perspectiva gubernamental', stakeholder: 'Gobierno' },
48
- nl: { lensName: 'Regeringsperspectief', stakeholder: 'Regering' },
49
- ar: { lensName: 'منظور الحكومة', stakeholder: 'الحكومة' },
50
- he: { lensName: 'פרספקטיבת הממשלה', stakeholder: 'הממשלה' },
51
- ja: { lensName: '政府の視点', stakeholder: '政府' },
52
- ko: { lensName: '정부 관점', stakeholder: '정부' },
53
- zh: { lensName: '政府视角', stakeholder: '政府' },
54
- };
55
- function label(lang) {
56
- return LENS_LABELS[lang] ?? LENS_LABELS['en'];
57
- }
58
- // ---------------------------------------------------------------------------
59
- // Helper utilities
60
- // ---------------------------------------------------------------------------
61
- function containsAny(text, keywords) {
62
- const lower = text.toLowerCase();
63
- return keywords.some(kw => lower.includes(kw.toLowerCase()));
64
- }
65
- // ---------------------------------------------------------------------------
66
- // Impact / Sentiment calculation
67
- // ---------------------------------------------------------------------------
68
- function computeImpact(doc, cia) {
69
- const docType = doc.doktyp || doc.documentType || '';
70
- const committee = doc.organ || doc.committee || '';
71
- const isHighCommittee = GOV_HIGH_INFLUENCE_COMMITTEES.has(committee);
72
- const isHighDocType = ['prop', 'bet', 'skr'].includes(docType);
73
- // Propositions and committee reports on strategic committees are inherently high-impact
74
- if (isHighDocType && isHighCommittee)
75
- return 'high';
76
- if (docType === 'prop')
77
- return 'high';
78
- // Thin majority amplifies impact for all government-sponsored documents
79
- if (cia && cia.coalitionStability.majorityMargin <= 3)
80
- return 'high';
81
- if (isHighDocType || isHighCommittee)
82
- return 'medium';
83
- return 'low';
84
- }
85
- function computeSentiment(doc, cia) {
86
- const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
87
- // Government-sponsored propositions are generally positive for the government
88
- if (doc.doktyp === 'prop') {
89
- // Unless they arrive during a coalition instability period
90
- if (cia && cia.coalitionStability.stabilityScore < 40)
91
- return 'neutral';
92
- return 'positive';
93
- }
94
- // Fiscal pressure signals negative impact on government agenda
95
- if (containsAny(allText, FISCAL_PRESSURE_KEYWORDS))
96
- return 'negative';
97
- // Coalition-critical documents are neutral (could go either way)
98
- if (containsAny(allText, COALITION_CRITICAL_KEYWORDS))
99
- return 'neutral';
100
- // Default neutral for motions
101
- if (doc.doktyp === 'mot')
102
- return 'neutral';
103
- return 'neutral';
104
- }
105
- // ---------------------------------------------------------------------------
106
- // Summary generation
107
- // ---------------------------------------------------------------------------
108
- function buildSummary(doc, cia, _lang, domains) {
109
- const title = doc.titel || doc.title || 'Untitled';
110
- const docType = doc.doktyp || doc.documentType || 'document';
111
- const domainPhrase = domains.length > 0 ? ` touching ${domains.slice(0, 2).join(' and ')}` : '';
112
- const stabilityNote = cia && cia.coalitionStability.stabilityScore < 50
113
- ? ` Current coalition instability (stability score: ${cia.coalitionStability.stabilityScore}) increases execution risk.`
114
- : '';
115
- const coalitionNote = containsAny(title, COALITION_CRITICAL_KEYWORDS)
116
- ? ' Coalition agreement alignment must be verified before advancement.'
117
- : '';
118
- const fiscalNote = containsAny(title, FISCAL_PRESSURE_KEYWORDS)
119
- ? ' Fiscal feasibility assessment required; budget headroom may be constrained.'
120
- : '';
121
- return `From the government perspective, this ${docType}${domainPhrase} requires assessment of policy execution capacity and resource allocation.${stabilityNote}${coalitionNote}${fiscalNote}`.trim();
122
- }
123
- // ---------------------------------------------------------------------------
124
- // SWOT contributions
125
- // ---------------------------------------------------------------------------
126
- function buildSwotContributions(doc, cia, lang, domains) {
127
- const { stakeholder } = label(lang);
128
- const contributions = [];
129
- const docType = doc.doktyp || doc.documentType || '';
130
- // Strength: government-initiated propositions reinforce policy mandate
131
- if (docType === 'prop') {
132
- contributions.push({
133
- quadrant: 'strength',
134
- forStakeholder: stakeholder,
135
- text: 'Government-initiated legislation reinforces policy mandate and demonstrates programme delivery.',
136
- impact: 'high',
137
- });
138
- }
139
- // Opportunity: policy domain expansion
140
- if (domains.length > 0) {
141
- contributions.push({
142
- quadrant: 'opportunity',
143
- forStakeholder: stakeholder,
144
- text: `Policy advancement opportunity in ${domains.slice(0, 2).join(' and ')} domain(s), aligned with coalition programme.`,
145
- impact: 'medium',
146
- });
147
- }
148
- // Weakness: coalition instability
149
- if (cia && cia.coalitionStability.stabilityScore < 50) {
150
- contributions.push({
151
- quadrant: 'weakness',
152
- forStakeholder: stakeholder,
153
- text: `Coalition fragility (stability score ${cia.coalitionStability.stabilityScore}) risks legislative delays or defeats.`,
154
- impact: 'high',
155
- });
156
- }
157
- // Threat: thin majority
158
- if (cia && cia.coalitionStability.majorityMargin <= 3) {
159
- contributions.push({
160
- quadrant: 'threat',
161
- forStakeholder: stakeholder,
162
- text: `Razor-thin majority (${cia.coalitionStability.majorityMargin} seat(s)) creates defeat risk on contested votes.`,
163
- impact: 'high',
164
- });
165
- }
166
- return contributions;
167
- }
168
- // ---------------------------------------------------------------------------
169
- // Dashboard metrics
170
- // ---------------------------------------------------------------------------
171
- function buildDashboardMetrics(_doc, cia, domains) {
172
- const metrics = [];
173
- if (cia) {
174
- metrics.push({
175
- metricName: 'Coalition Stability',
176
- value: cia.coalitionStability.stabilityScore,
177
- unit: 'score',
178
- });
179
- metrics.push({
180
- metricName: 'Majority Margin',
181
- value: cia.coalitionStability.majorityMargin,
182
- unit: 'seats',
183
- });
184
- }
185
- metrics.push({
186
- metricName: 'Policy Domains Affected',
187
- value: domains.length,
188
- unit: 'domains',
189
- });
190
- return metrics;
191
- }
192
- // ---------------------------------------------------------------------------
193
- // Mindmap nodes
194
- // ---------------------------------------------------------------------------
195
- function buildMindmapNodes(doc, _lang, domains) {
196
- const nodes = [];
197
- const docType = doc.doktyp || doc.documentType || '';
198
- nodes.push({
199
- branch: 'Legislative Pipeline',
200
- item: docType === 'prop' ? 'Government Bill' : docType === 'bet' ? 'Committee Report' : 'Parliamentary Document',
201
- weight: docType === 'prop' ? 'critical' : 'significant',
202
- });
203
- for (const domain of domains.slice(0, 3)) {
204
- nodes.push({
205
- branch: 'Policy Domains',
206
- item: domain,
207
- weight: 'significant',
208
- });
209
- }
210
- return nodes;
211
- }
212
- // ---------------------------------------------------------------------------
213
- // Confidence scoring
214
- // ---------------------------------------------------------------------------
215
- function computeConfidence(doc, cia) {
216
- let score = 40; // Base
217
- if (doc.fullText || doc.fullContent)
218
- score += 20;
219
- if (doc.summary || doc.notis)
220
- score += 10;
221
- if (cia)
222
- score += 20;
223
- if (doc.speeches && doc.speeches.length > 0)
224
- score += 10;
225
- return Math.min(100, score);
226
- }
227
- // ---------------------------------------------------------------------------
228
- // Public API
229
- // ---------------------------------------------------------------------------
230
- /**
231
- * Apply the Government analysis lens to a single parliamentary document.
232
- *
233
- * Evaluates policy execution feasibility, budget implications, coalition
234
- * alignment, and international commitment compliance.
235
- *
236
- * @param doc - The document to analyse
237
- * @param cia - Optional CIA context for coalition stability data
238
- * @param lang - Target language for all generated text
239
- * @returns A `PerspectiveAnalysis` for the government lens
240
- */
241
- export function analyzeGovernmentPerspective(doc, cia, lang, precomputedDomains) {
242
- const keyActors = ['Prime Minister', 'Cabinet'];
243
- if (cia) {
244
- const govParties = (cia.partyPerformance ?? [])
245
- .filter(p => p.metrics.seats > 0)
246
- .slice(0, 3)
247
- .map(p => p.partyName);
248
- keyActors.push(...govParties);
249
- }
250
- const domains = precomputedDomains ?? detectPolicyDomains(doc, 'en');
251
- const relatedPolicies = [...domains, 'Coalition Programme 2022-2026'].filter(Boolean);
252
- return {
253
- lens: 'government',
254
- summary: buildSummary(doc, cia, lang, domains),
255
- impact: computeImpact(doc, cia),
256
- sentiment: computeSentiment(doc, cia),
257
- keyActors: [...new Set(keyActors)].slice(0, 5),
258
- relatedPolicies: relatedPolicies.slice(0, 5),
259
- swotContribution: buildSwotContributions(doc, cia, lang, domains),
260
- dashboardMetrics: buildDashboardMetrics(doc, cia, domains),
261
- mindmapNodes: buildMindmapNodes(doc, lang, domains),
262
- confidence: computeConfidence(doc, cia),
263
- };
264
- }
265
- //# sourceMappingURL=government.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"government.js","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/government.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- /**
2
- * @module analysis-framework/lenses/international
3
- * @description International perspective lens for parliamentary document analysis.
4
- *
5
- * Evaluates every document from the international vantage point:
6
- * - EU regulatory alignment
7
- * - Nordic cooperation implications
8
- * - Global treaty obligations
9
- * - Diplomatic signal assessment
10
- *
11
- * @author Hack23 AB
12
- * @license Apache-2.0
13
- */
14
- import type { RawDocument, CIAContext } from '../../data-transformers/types.js';
15
- import type { Language } from '../../types/language.js';
16
- import type { PerspectiveAnalysis } from '../types.js';
17
- /**
18
- * Apply the International analysis lens to a single parliamentary document.
19
- *
20
- * Evaluates EU regulatory alignment, Nordic cooperation implications,
21
- * global treaty obligations, and diplomatic signal assessment.
22
- *
23
- * @param doc - The document to analyse
24
- * @param cia - Optional CIA context
25
- * @param lang - Target language
26
- * @returns A `PerspectiveAnalysis` for the international lens
27
- */
28
- export declare function analyzeInternationalPerspective(doc: RawDocument, cia: CIAContext | undefined, lang: Language | string, precomputedDomains?: string[]): PerspectiveAnalysis;
29
- //# sourceMappingURL=international.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"international.d.ts","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/international.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAA0E,MAAM,aAAa,CAAC;AAsO/H;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,UAAU,GAAG,SAAS,EAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAC5B,mBAAmB,CAsBrB"}
@@ -1,248 +0,0 @@
1
- /**
2
- * @module analysis-framework/lenses/international
3
- * @description International perspective lens for parliamentary document analysis.
4
- *
5
- * Evaluates every document from the international vantage point:
6
- * - EU regulatory alignment
7
- * - Nordic cooperation implications
8
- * - Global treaty obligations
9
- * - Diplomatic signal assessment
10
- *
11
- * @author Hack23 AB
12
- * @license Apache-2.0
13
- */
14
- import { detectPolicyDomains } from '../../data-transformers/policy-analysis.js';
15
- // ---------------------------------------------------------------------------
16
- // International keyword banks
17
- // ---------------------------------------------------------------------------
18
- /** EU-specific alignment keywords */
19
- const EU_KEYWORDS = [
20
- 'eu-direktiv', 'eu directive', 'eu-förordning', 'eu regulation', 'europaparlamentet',
21
- 'eu-kommissionen', 'european commission', 'europeiska unionen', 'european union',
22
- 'schengen', 'euratom', 'eurozon', 'eurozone', 'eu-anpassning', 'eu alignment',
23
- 'eu-konform', 'eu-rätt', 'eu law', 'eu-implementering', 'eu implementation',
24
- 'inre marknaden', 'single market', 'fria rörligheten', 'free movement',
25
- 'statsstödsregler', 'state aid rules', 'konkurrensrätt', 'competition law',
26
- ];
27
- /** Nordic cooperation keywords */
28
- const NORDIC_KEYWORDS = [
29
- 'nordisk', 'nordic', 'norge', 'norway', 'finland', 'danmark', 'denmark',
30
- 'island', 'iceland', 'färöarna', 'faroe', 'nordisk råd', 'nordic council',
31
- 'nordiskt samarbete', 'nordic cooperation', 'norden', 'öresund', 'arktis', 'arctic',
32
- ];
33
- /** NATO/defence treaty keywords */
34
- const TREATY_KEYWORDS = [
35
- 'nato', 'förenta nationerna', 'united nations', 'fördrag', 'treaty',
36
- 'konvention', 'convention', 'protokoll', 'protocol', 'avtal', 'agreement',
37
- 'wto', 'imf', 'världsbanken', 'world bank', 'oecd', 'coe', 'europarådet',
38
- 'council of europe', 'mänskliga rättigheter', 'human rights',
39
- 'folkrätt', 'international law', 'haag', 'hague', 'internationell domstol',
40
- ];
41
- /** Diplomatic signal keywords */
42
- const DIPLOMATIC_KEYWORDS = [
43
- 'utrikespolitik', 'foreign policy', 'diplomatisk', 'diplomatic', 'ambassad', 'embassy',
44
- 'bilateralt', 'bilateral', 'multilateralt', 'multilateral', 'sanktion', 'sanction',
45
- 'handelsavtal', 'trade agreement', 'frihandelsavtal', 'free trade agreement',
46
- 'geopolitisk', 'geopolitical', 'säkerhetsråd', 'security council',
47
- ];
48
- // ---------------------------------------------------------------------------
49
- // Localised labels
50
- // ---------------------------------------------------------------------------
51
- const LENS_LABELS = {
52
- en: { lensName: 'International Perspective', stakeholder: 'International Community' },
53
- sv: { lensName: 'Internationellt perspektiv', stakeholder: 'Internationella samfundet' },
54
- da: { lensName: 'Internationalt perspektiv', stakeholder: 'Det internationale samfund' },
55
- no: { lensName: 'Internasjonalt perspektiv', stakeholder: 'Det internasjonale samfunnet' },
56
- fi: { lensName: 'Kansainvälinen näkökulma', stakeholder: 'Kansainvälinen yhteisö' },
57
- de: { lensName: 'Internationale Perspektive', stakeholder: 'Internationale Gemeinschaft' },
58
- fr: { lensName: 'Perspective internationale', stakeholder: 'Communauté internationale' },
59
- es: { lensName: 'Perspectiva internacional', stakeholder: 'Comunidad internacional' },
60
- nl: { lensName: 'Internationaal perspectief', stakeholder: 'Internationale gemeenschap' },
61
- ar: { lensName: 'المنظور الدولي', stakeholder: 'المجتمع الدولي' },
62
- he: { lensName: 'פרספקטיבה בינלאומית', stakeholder: 'הקהילה הבינלאומית' },
63
- ja: { lensName: '国際的視点', stakeholder: '国際社会' },
64
- ko: { lensName: '국제적 관점', stakeholder: '국제 사회' },
65
- zh: { lensName: '国际视角', stakeholder: '国际社会' },
66
- };
67
- function label(lang) {
68
- return LENS_LABELS[lang] ?? LENS_LABELS['en'];
69
- }
70
- function containsAny(text, keywords) {
71
- const lower = text.toLowerCase();
72
- return keywords.some(kw => lower.includes(kw.toLowerCase()));
73
- }
74
- function countKeywords(text, keywords) {
75
- const lower = text.toLowerCase();
76
- return keywords.filter(kw => lower.includes(kw.toLowerCase())).length;
77
- }
78
- // ---------------------------------------------------------------------------
79
- // Scoring helpers
80
- // ---------------------------------------------------------------------------
81
- function computeImpact(doc) {
82
- const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
83
- const euSignals = countKeywords(allText, EU_KEYWORDS);
84
- const treatySignals = countKeywords(allText, TREATY_KEYWORDS);
85
- const nordicSignals = countKeywords(allText, NORDIC_KEYWORDS);
86
- if (euSignals >= 2 || treatySignals >= 2)
87
- return 'high';
88
- if (euSignals >= 1 || treatySignals >= 1 || nordicSignals >= 1)
89
- return 'medium';
90
- const organ = doc.organ || doc.committee || '';
91
- if (organ === 'UU')
92
- return 'high'; // Foreign Affairs Committee
93
- if (organ === 'FöU')
94
- return 'medium'; // Defence Committee (NATO context)
95
- return 'low';
96
- }
97
- function computeSentiment(doc) {
98
- const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
99
- if (containsAny(allText, ['sanktion', 'sanction', 'protest', 'konflikt', 'conflict',
100
- 'spänning', 'tension', 'brott mot', 'violation'])) {
101
- return 'negative';
102
- }
103
- if (containsAny(allText, ['samarbete', 'cooperation', 'avtal', 'agreement', 'partnerskap',
104
- 'partnership', 'integration', 'harmonisering', 'harmonisation', 'ratificering', 'ratification'])) {
105
- return 'positive';
106
- }
107
- return 'neutral';
108
- }
109
- // ---------------------------------------------------------------------------
110
- // Summary generation
111
- // ---------------------------------------------------------------------------
112
- function buildSummary(doc, _cia, _lang) {
113
- const docType = doc.doktyp || doc.documentType || 'document';
114
- const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
115
- const hasEU = containsAny(allText, EU_KEYWORDS);
116
- const hasNordic = containsAny(allText, NORDIC_KEYWORDS);
117
- const hasTreaty = containsAny(allText, TREATY_KEYWORDS);
118
- const hasDiplomatic = containsAny(allText, DIPLOMATIC_KEYWORDS);
119
- const notes = [];
120
- if (hasEU)
121
- notes.push('EU compliance and transposition requirements should be verified');
122
- if (hasNordic)
123
- notes.push('Nordic Council coordination implications warrant assessment');
124
- if (hasTreaty)
125
- notes.push('treaty obligation compatibility must be reviewed');
126
- if (hasDiplomatic)
127
- notes.push('diplomatic signalling effects should be considered');
128
- const notePhrase = notes.length > 0 ? ` Key international dimensions: ${notes.join('; ')}.` : ' International context dimensions are limited for this document.';
129
- return `From the international perspective, this ${docType} must be assessed for EU regulatory alignment and treaty obligations.${notePhrase}`.trim();
130
- }
131
- // ---------------------------------------------------------------------------
132
- // SWOT contributions
133
- // ---------------------------------------------------------------------------
134
- function buildSwotContributions(doc, _cia, lang) {
135
- const { stakeholder } = label(lang);
136
- const contributions = [];
137
- const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
138
- if (containsAny(allText, EU_KEYWORDS)) {
139
- contributions.push({
140
- quadrant: 'opportunity',
141
- forStakeholder: stakeholder,
142
- text: 'EU alignment opportunity: document may strengthen Sweden\'s position within EU regulatory framework.',
143
- impact: 'high',
144
- });
145
- }
146
- if (containsAny(allText, NORDIC_KEYWORDS)) {
147
- contributions.push({
148
- quadrant: 'strength',
149
- forStakeholder: stakeholder,
150
- text: 'Nordic cooperation dimension adds regional legitimacy and shared implementation potential.',
151
- impact: 'medium',
152
- });
153
- }
154
- if (containsAny(allText, ['sanktion', 'sanction', 'brott mot', 'violation', 'överträdelse'])) {
155
- contributions.push({
156
- quadrant: 'threat',
157
- forStakeholder: stakeholder,
158
- text: 'Risk of international treaty violation or sanctions exposure if document is implemented without alignment review.',
159
- impact: 'high',
160
- });
161
- }
162
- return contributions;
163
- }
164
- // ---------------------------------------------------------------------------
165
- // Dashboard metrics
166
- // ---------------------------------------------------------------------------
167
- function buildDashboardMetrics(doc, _cia) {
168
- const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
169
- return [
170
- { metricName: 'EU Alignment Signals', value: countKeywords(allText, EU_KEYWORDS), unit: 'hits' },
171
- { metricName: 'Treaty References', value: countKeywords(allText, TREATY_KEYWORDS), unit: 'hits' },
172
- { metricName: 'Nordic Cooperation Signals', value: countKeywords(allText, NORDIC_KEYWORDS), unit: 'hits' },
173
- ];
174
- }
175
- // ---------------------------------------------------------------------------
176
- // Mindmap nodes
177
- // ---------------------------------------------------------------------------
178
- function buildMindmapNodes(doc, _lang) {
179
- const nodes = [];
180
- const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
181
- if (containsAny(allText, EU_KEYWORDS)) {
182
- nodes.push({ branch: 'EU Context', item: 'Regulatory Alignment', weight: 'critical' });
183
- }
184
- if (containsAny(allText, NORDIC_KEYWORDS)) {
185
- nodes.push({ branch: 'Nordic Context', item: 'Regional Cooperation', weight: 'significant' });
186
- }
187
- if (containsAny(allText, TREATY_KEYWORDS)) {
188
- nodes.push({ branch: 'Treaty Obligations', item: 'International Law Compliance', weight: 'critical' });
189
- }
190
- if (containsAny(allText, DIPLOMATIC_KEYWORDS)) {
191
- nodes.push({ branch: 'Diplomatic Signals', item: 'Foreign Policy Messaging', weight: 'moderate' });
192
- }
193
- return nodes;
194
- }
195
- // ---------------------------------------------------------------------------
196
- // Confidence
197
- // ---------------------------------------------------------------------------
198
- function computeConfidence(doc, cia) {
199
- let score = 35;
200
- if (doc.fullText || doc.fullContent)
201
- score += 25;
202
- if (doc.summary || doc.notis)
203
- score += 15;
204
- if (cia)
205
- score += 15;
206
- if (doc.speeches && doc.speeches.length > 0)
207
- score += 10;
208
- return Math.min(100, score);
209
- }
210
- // ---------------------------------------------------------------------------
211
- // Public API
212
- // ---------------------------------------------------------------------------
213
- /**
214
- * Apply the International analysis lens to a single parliamentary document.
215
- *
216
- * Evaluates EU regulatory alignment, Nordic cooperation implications,
217
- * global treaty obligations, and diplomatic signal assessment.
218
- *
219
- * @param doc - The document to analyse
220
- * @param cia - Optional CIA context
221
- * @param lang - Target language
222
- * @returns A `PerspectiveAnalysis` for the international lens
223
- */
224
- export function analyzeInternationalPerspective(doc, cia, lang, precomputedDomains) {
225
- const keyActors = ['EU Commission', 'Foreign Ministry', 'NATO', 'Nordic Council', 'UN'];
226
- const domains = precomputedDomains ?? detectPolicyDomains(doc, 'en');
227
- const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
228
- const relatedPolicies = [...domains];
229
- if (containsAny(allText, EU_KEYWORDS))
230
- relatedPolicies.push('EU Single Market');
231
- if (containsAny(allText, TREATY_KEYWORDS))
232
- relatedPolicies.push('International Treaty Framework');
233
- if (containsAny(allText, NORDIC_KEYWORDS))
234
- relatedPolicies.push('Nordic Cooperation');
235
- return {
236
- lens: 'international',
237
- summary: buildSummary(doc, cia, lang),
238
- impact: computeImpact(doc),
239
- sentiment: computeSentiment(doc),
240
- keyActors: keyActors.slice(0, 5),
241
- relatedPolicies: relatedPolicies.slice(0, 5),
242
- swotContribution: buildSwotContributions(doc, cia, lang),
243
- dashboardMetrics: buildDashboardMetrics(doc, cia),
244
- mindmapNodes: buildMindmapNodes(doc, lang),
245
- confidence: computeConfidence(doc, cia),
246
- };
247
- }
248
- //# sourceMappingURL=international.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"international.js","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/international.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- /**
2
- * @module analysis-framework/lenses/media
3
- * @description Media/public discourse lens for parliamentary document analysis.
4
- *
5
- * Evaluates every document from the media and public discourse vantage point:
6
- * - Newsworthiness scoring
7
- * - Public sentiment indicators
8
- * - Narrative framing analysis
9
- * - Controversy potential
10
- *
11
- * @author Hack23 AB
12
- * @license Apache-2.0
13
- */
14
- import type { RawDocument, CIAContext } from '../../data-transformers/types.js';
15
- import type { Language } from '../../types/language.js';
16
- import type { PerspectiveAnalysis } from '../types.js';
17
- /**
18
- * Apply the Media/Public Discourse analysis lens to a single parliamentary document.
19
- *
20
- * Evaluates newsworthiness, public sentiment, narrative framing, and controversy
21
- * potential.
22
- *
23
- * @param doc - The document to analyse
24
- * @param cia - Optional CIA context
25
- * @param lang - Target language
26
- * @returns A `PerspectiveAnalysis` for the media lens
27
- */
28
- export declare function analyzeMediaPerspective(doc: RawDocument, cia: CIAContext | undefined, lang: Language | string, precomputedDomains?: string[]): PerspectiveAnalysis;
29
- //# sourceMappingURL=media.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/media.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAA0E,MAAM,aAAa,CAAC;AAsM/H;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,UAAU,GAAG,SAAS,EAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAC5B,mBAAmB,CAkBrB"}