euparliamentmonitor 0.8.5 → 0.8.6

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 (40) hide show
  1. package/package.json +1 -1
  2. package/scripts/generators/news-enhanced.d.ts.map +1 -1
  3. package/scripts/generators/news-enhanced.js +175 -4
  4. package/scripts/generators/news-enhanced.js.map +1 -1
  5. package/scripts/generators/pipeline/analysis-stage.d.ts +100 -0
  6. package/scripts/generators/pipeline/analysis-stage.d.ts.map +1 -0
  7. package/scripts/generators/pipeline/analysis-stage.js +1060 -0
  8. package/scripts/generators/pipeline/analysis-stage.js.map +1 -0
  9. package/scripts/index.d.ts +5 -0
  10. package/scripts/index.d.ts.map +1 -1
  11. package/scripts/index.js +8 -0
  12. package/scripts/index.js.map +1 -1
  13. package/scripts/types/index.d.ts +4 -0
  14. package/scripts/types/index.d.ts.map +1 -1
  15. package/scripts/types/index.js +1 -0
  16. package/scripts/types/index.js.map +1 -1
  17. package/scripts/types/political-classification.d.ts +286 -0
  18. package/scripts/types/political-classification.d.ts.map +1 -0
  19. package/scripts/types/political-classification.js +26 -0
  20. package/scripts/types/political-classification.js.map +1 -0
  21. package/scripts/types/political-risk.d.ts +277 -0
  22. package/scripts/types/political-risk.d.ts.map +1 -0
  23. package/scripts/types/political-risk.js +4 -0
  24. package/scripts/types/political-risk.js.map +1 -0
  25. package/scripts/types/political-threats.d.ts +214 -0
  26. package/scripts/types/political-threats.d.ts.map +1 -0
  27. package/scripts/types/political-threats.js +4 -0
  28. package/scripts/types/political-threats.js.map +1 -0
  29. package/scripts/utils/political-classification.d.ts +181 -0
  30. package/scripts/utils/political-classification.d.ts.map +1 -0
  31. package/scripts/utils/political-classification.js +851 -0
  32. package/scripts/utils/political-classification.js.map +1 -0
  33. package/scripts/utils/political-risk-assessment.d.ts +146 -0
  34. package/scripts/utils/political-risk-assessment.d.ts.map +1 -0
  35. package/scripts/utils/political-risk-assessment.js +841 -0
  36. package/scripts/utils/political-risk-assessment.js.map +1 -0
  37. package/scripts/utils/political-threat-assessment.d.ts +78 -0
  38. package/scripts/utils/political-threat-assessment.d.ts.map +1 -0
  39. package/scripts/utils/political-threat-assessment.js +1306 -0
  40. package/scripts/utils/political-threat-assessment.js.map +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "euparliamentmonitor",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "type": "module",
5
5
  "description": "European Parliament Intelligence Platform - Monitor political activity with systematic transparency",
6
6
  "main": "scripts/index.js",
@@ -1 +1 @@
1
- {"version":3,"file":"news-enhanced.d.ts","sourceRoot":"","sources":["../../src/generators/news-enhanced.ts"],"names":[],"mappings":";AAiEA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,EAChC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,GAChC,CAAC;AACF,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AACvF,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,GAC/B,CAAC;AACF,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"news-enhanced.d.ts","sourceRoot":"","sources":["../../src/generators/news-enhanced.ts"],"names":[],"mappings":";AA0EA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,EAChC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,GAChC,CAAC;AACF,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AACvF,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,GAC/B,CAAC;AACF,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,CAAC"}
@@ -5,12 +5,18 @@
5
5
  * @module Generators/NewsEnhanced
6
6
  * @description CLI orchestrator for European Parliament news generation.
7
7
  *
8
- * Coordinates the three-stage pipeline (fetch → generate → output)
8
+ * Coordinates the four-stage pipeline (fetch → analysis → generate → output)
9
9
  * via dedicated pipeline-stage modules and a strategy registry. Each article
10
10
  * type is handled by its own {@link ArticleStrategy} implementation.
11
11
  *
12
+ * When the `--analysis` flag is supplied (all 9 agentic workflows do this),
13
+ * the analysis stage runs **before** article generation, producing structured
14
+ * political intelligence artifacts under `analysis-output/{date}/`. These
15
+ * artifacts are committed to the repository for review and improvement.
16
+ *
12
17
  * Pipeline stages:
13
18
  * - {@link module:Generators/Pipeline/FetchStage}
19
+ * - {@link module:Generators/Pipeline/AnalysisStage} (political intelligence: classification, threat assessment, risk scoring)
14
20
  * - {@link module:Generators/Pipeline/GenerateStage}
15
21
  * - {@link module:Generators/Pipeline/OutputStage}
16
22
  *
@@ -38,9 +44,10 @@ import { ALL_LANGUAGES, LANGUAGE_PRESETS, isSupportedLanguage } from '../constan
38
44
  import { closeEPMCPClient } from '../mcp/ep-mcp-client.js';
39
45
  import { ensureDirectoryExists } from '../utils/file-utils.js';
40
46
  // ─── Pipeline-stage imports ───────────────────────────────────────────────────
41
- import { initializeMCPClient } from './pipeline/fetch-stage.js';
47
+ import { initializeMCPClient, fetchEPFeedData } from './pipeline/fetch-stage.js';
42
48
  import { createStrategyRegistry, generateArticleForStrategy } from './pipeline/generate-stage.js';
43
49
  import { writeGenerationMetadata } from './pipeline/output-stage.js';
50
+ import { runAnalysisStage, ALL_ANALYSIS_METHODS } from './pipeline/analysis-stage.js';
44
51
  // ─── Content-module imports (bounded contexts) ───────────────────────────────
45
52
  import { parsePlenarySessions, parseEPEvents, parseCommitteeMeetings, parseLegislativeDocuments, parseLegislativePipeline, parseParliamentaryQuestions, buildWeekAheadContent, buildKeywords, PLACEHOLDER_EVENTS, buildWhatToWatchSection, buildStakeholderImpactMatrix, computeWeekPoliticalTemperature, } from './week-ahead-content.js';
46
53
  import { buildBreakingNewsContent, scoreBreakingNewsSignificance, SIGNIFICANCE_THRESHOLD, } from './breaking-content.js';
@@ -61,6 +68,11 @@ const languagesArg = args.find((arg) => arg.startsWith('--languages='));
61
68
  const feedDataArg = args.find((arg) => arg.startsWith('--feed-data='));
62
69
  const dryRunArg = args.includes('--dry-run');
63
70
  const skipExistingArg = args.includes('--skip-existing');
71
+ const runAnalysisArg = args.includes('--analysis');
72
+ const analysisOnlyArg = args.includes('--analysis-only');
73
+ const analysisVerboseArg = args.includes('--analysis-verbose');
74
+ const analysisDirArg = args.find((arg) => arg.startsWith('--analysis-dir='));
75
+ const analysisMethodsArg = args.find((arg) => arg.startsWith('--analysis-methods='));
64
76
  /** Path to a JSON file containing pre-fetched EP feed data (optional). */
65
77
  const feedDataPath = feedDataArg?.startsWith('--feed-data=')
66
78
  ? feedDataArg.slice('--feed-data='.length).trim()
@@ -93,6 +105,9 @@ console.log('Article types:', articleTypes.join(', '));
93
105
  console.log('Languages:', languages.join(', '));
94
106
  console.log('Dry run:', dryRunArg ? 'Yes (no files written)' : 'No');
95
107
  console.log('Skip existing:', skipExistingArg ? 'Yes' : 'No');
108
+ if (runAnalysisArg || analysisOnlyArg) {
109
+ console.log('Analysis stage:', analysisOnlyArg ? 'Analysis only (no article generation)' : 'Enabled');
110
+ }
96
111
  if (feedDataPath) {
97
112
  console.log('Feed data file:', feedDataPath);
98
113
  }
@@ -110,8 +125,150 @@ const stats = {
110
125
  };
111
126
  // ─── Main orchestration ───────────────────────────────────────────────────────
112
127
  /**
113
- * Main execution: initialise the MCP client, iterate over requested article
114
- * types, delegate to the appropriate strategy, then persist metadata.
128
+ * Parse the `--analysis-methods=` CLI flag into a validated, deduplicated list.
129
+ * Warns on unrecognised method names and falls back to all methods when no valid
130
+ * names remain.
131
+ *
132
+ * @returns Validated list of analysis methods
133
+ */
134
+ function parseAnalysisMethods() {
135
+ const raw = analysisMethodsArg?.split(ARG_SEPARATOR)[1]?.trim();
136
+ if (!raw)
137
+ return ALL_ANALYSIS_METHODS;
138
+ const requestedNames = raw
139
+ .split(',')
140
+ .map((m) => m.trim())
141
+ .filter((m) => m.length > 0);
142
+ if (requestedNames.length === 0)
143
+ return ALL_ANALYSIS_METHODS;
144
+ const validMethods = new Set();
145
+ const unknownMethods = [];
146
+ for (const name of requestedNames) {
147
+ if (ALL_ANALYSIS_METHODS.includes(name)) {
148
+ validMethods.add(name);
149
+ }
150
+ else {
151
+ unknownMethods.push(name);
152
+ }
153
+ }
154
+ if (unknownMethods.length > 0) {
155
+ console.warn(`⚠️ Unknown analysis methods ignored: ${unknownMethods.join(', ')}`);
156
+ }
157
+ const methods = Array.from(validMethods);
158
+ if (methods.length === 0) {
159
+ console.warn('⚠️ No valid analysis methods specified; defaulting to all analysis methods.');
160
+ return ALL_ANALYSIS_METHODS;
161
+ }
162
+ return methods;
163
+ }
164
+ /**
165
+ * Run the optional analysis stage (Fetch → Analysis) before article generation.
166
+ *
167
+ * This function is **side-effect-only**: it writes analysis markdown and a
168
+ * `manifest.json` to disk under `analysis-output/{date}/`. The returned
169
+ * {@link AnalysisContext} is informational; strategies read analysis output
170
+ * from disk rather than consuming the context object in-memory. Analysis
171
+ * artifacts are committed to the repository for review and political
172
+ * intelligence improvement.
173
+ *
174
+ * The feed timeframe is derived from the requested article types: if any
175
+ * month-level types (month-ahead, month-in-review, committee-reports, motions)
176
+ * are present, the stage fetches 'one-month' of data; otherwise 'one-week'.
177
+ *
178
+ * **Note:** The analysis stage fetches EP feed data independently of the
179
+ * generation stage. Strategies also call `fetchEPFeedData()` during their own
180
+ * `fetchData()`. Sharing a single fetch result between analysis and generation
181
+ * is a planned optimisation (tracked separately) to reduce MCP traffic.
182
+ *
183
+ * @param date - ISO date string (YYYY-MM-DD)
184
+ * @param client - Connected MCP client or null
185
+ * @returns Analysis context or null
186
+ */
187
+ async function maybeRunAnalysis(date, client) {
188
+ if (!runAnalysisArg && !analysisOnlyArg)
189
+ return null;
190
+ const rawAnalysisDirBase = analysisDirArg?.split(ARG_SEPARATOR)[1];
191
+ const trimmedAnalysisDirBase = rawAnalysisDirBase?.trim();
192
+ const analysisDirBase = trimmedAnalysisDirBase && trimmedAnalysisDirBase.length > 0
193
+ ? trimmedAnalysisDirBase
194
+ : 'analysis-output';
195
+ const enabledMethods = parseAnalysisMethods();
196
+ console.log('');
197
+ console.log('🔬 Running analysis stage...');
198
+ console.log(` Output dir: ${analysisDirBase}/${date}`);
199
+ console.log(` Methods: ${enabledMethods.length} enabled`);
200
+ console.log('');
201
+ // Derive the feed timeframe from the requested article types so the analysis
202
+ // window matches the generation window. Month-level types need 'one-month'.
203
+ const MONTH_LEVEL_TYPES = ['month-ahead', 'month-in-review', 'committee-reports', 'motions'];
204
+ const normalizedArticleTypes = articleTypes.map((t) => t.trim());
205
+ const needsMonthData = normalizedArticleTypes.some((t) => MONTH_LEVEL_TYPES.includes(t));
206
+ const feedTimeframe = needsMonthData ? 'one-month' : 'one-week';
207
+ // Fetch comprehensive EP feed data. fetchEPFeedData handles a null client
208
+ // gracefully (returns undefined) and also loads from EP_FEED_DATA_FILE when
209
+ // set, so we call it unconditionally.
210
+ //
211
+ // Always initialise voting-derived keys (`patterns`, `votingRecords`) to
212
+ // empty arrays so coalition/voting/cross-session analyses never receive
213
+ // undefined. These feeds are not yet exposed by fetchEPFeedData, so they
214
+ // stay empty until a future MCP voting-records endpoint is available.
215
+ const fetchedData = {
216
+ date,
217
+ patterns: [],
218
+ votingRecords: [],
219
+ };
220
+ const feedData = await fetchEPFeedData(client, feedTimeframe);
221
+ if (feedData) {
222
+ fetchedData['events'] = feedData.events ?? [];
223
+ fetchedData['documents'] = feedData.documents ?? [];
224
+ fetchedData['adoptedTexts'] = feedData.adoptedTexts ?? [];
225
+ fetchedData['procedures'] = feedData.procedures ?? [];
226
+ fetchedData['mepUpdates'] = feedData.mepUpdates ?? [];
227
+ fetchedData['plenaryDocuments'] = feedData.plenaryDocuments ?? [];
228
+ fetchedData['committeeDocuments'] = feedData.committeeDocuments ?? [];
229
+ fetchedData['plenarySessionDocuments'] = feedData.plenarySessionDocuments ?? [];
230
+ fetchedData['externalDocuments'] = feedData.externalDocuments ?? [];
231
+ fetchedData['questions'] = feedData.questions ?? [];
232
+ fetchedData['declarations'] = feedData.declarations ?? [];
233
+ fetchedData['corporateBodies'] = feedData.corporateBodies ?? [];
234
+ }
235
+ if (!fetchedData['events']) {
236
+ // No MCP or feed-data file available — populate empty arrays so builders don't fail
237
+ fetchedData['events'] = [];
238
+ fetchedData['sessions'] = [];
239
+ fetchedData['documents'] = [];
240
+ }
241
+ try {
242
+ const validArticleTypes = normalizedArticleTypes.filter((t) => VALID_ARTICLE_CATEGORIES.includes(t));
243
+ const ctx = await runAnalysisStage(fetchedData, {
244
+ articleTypes: validArticleTypes,
245
+ date,
246
+ outputDir: analysisDirBase,
247
+ enabledMethods,
248
+ skipCompleted: true,
249
+ verbose: analysisVerboseArg,
250
+ });
251
+ const totalMethods = ctx.manifest.methods.length;
252
+ const completedCount = ctx.manifest.methods.filter((method) => method.status === 'completed').length;
253
+ const skippedCount = ctx.manifest.methods.filter((method) => method.status === 'skipped').length;
254
+ console.log('');
255
+ console.log(`🔬 Analysis complete: ${completedCount} methods completed, ${skippedCount} skipped (of ${totalMethods})`);
256
+ console.log(` Confidence: ${ctx.manifest.overallConfidence}`);
257
+ console.log(` Manifest: ${ctx.outputDir}/manifest.json`);
258
+ console.log('');
259
+ return ctx;
260
+ }
261
+ catch (err) {
262
+ const message = err instanceof Error ? err.message : String(err);
263
+ console.error(`❌ Analysis stage failed: ${message}`);
264
+ // Analysis failure does not block article generation
265
+ return null;
266
+ }
267
+ }
268
+ /**
269
+ * Main execution: initialise the MCP client, optionally run analysis stage,
270
+ * iterate over requested article types, delegate to the appropriate strategy,
271
+ * then persist metadata.
115
272
  */
116
273
  async function main() {
117
274
  console.log('');
@@ -124,6 +281,20 @@ async function main() {
124
281
  console.log(`📂 Pre-fetched feed data will be loaded from: ${feedDataPath}`);
125
282
  }
126
283
  const client = await initializeMCPClient(useMCP);
284
+ // Determine today's date for the analysis stage
285
+ // split('T')[0] on a valid ISO string always returns the date portion
286
+ const isoToday = new Date().toISOString();
287
+ const todayDate = isoToday.slice(0, 10);
288
+ // Run optional analysis stage (Fetch → Analysis)
289
+ // Writes markdown + manifest to analysis-output/{date}/ — committed for review
290
+ await maybeRunAnalysis(todayDate, client);
291
+ // If --analysis-only, skip article generation
292
+ if (analysisOnlyArg) {
293
+ console.log('ℹ️ --analysis-only specified. Skipping article generation.');
294
+ if (client)
295
+ await closeEPMCPClient();
296
+ process.exit(0);
297
+ }
127
298
  const outputOptions = {
128
299
  dryRun: dryRunArg,
129
300
  skipExisting: skipExistingArg,
@@ -1 +1 @@
1
- {"version":3,"file":"news-enhanced.js","sourceRoot":"","sources":["../../src/generators/news-enhanced.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"news-enhanced.js","sourceRoot":"","sources":["../../src/generators/news-enhanced.ts"],"names":[],"mappings":";AAEA,8CAA8C;AAC9C,sCAAsC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,wBAAwB,EACxB,uBAAuB,EACvB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAS/D,iFAAiF;AAEjF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGtF,gFAAgF;AAEhF,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAGrE,gFAAgF;AAEhF,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,GAChC,CAAC;AACF,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AACvF,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,GAC/B,CAAC;AACF,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAGpC,iFAAiF;AAEjF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC;AAErD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;AACxE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;AACvE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACnD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7E,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAErF,0EAA0E;AAC1E,MAAM,YAAY,GAAG,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC;IAC1D,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;IACjD,CAAC,CAAC,EAAE,CAAC;AAEP,MAAM,YAAY,GAAG,QAAQ;IAC3B,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;AAE9B,IAAI,cAAc,GAAG,YAAY;IAC/B,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;IACnE,CAAC,CAAC,IAAI,CAAC;AAET,iBAAiB;AACjB,IAAI,gBAAgB,CAAC,cAAgC,CAAC,EAAE,CAAC;IACvD,cAAc,GAAG,gBAAgB,CAAC,cAAgC,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,SAAS,GAAmB,cAAc;KAC7C,KAAK,CAAC,GAAG,CAAC;KACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACpB,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,kDAAkD,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,yBAAyB;AACzB,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAqB,CAAC,CACvE,CAAC;AACF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,qCAAqC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;AAClD,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACrE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;IACtC,OAAO,CAAC,GAAG,CACT,iBAAiB,EACjB,eAAe,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,SAAS,CACtE,CAAC;AACJ,CAAC;AACD,IAAI,YAAY,EAAE,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,2BAA2B;AAC3B,qBAAqB,CAAC,YAAY,CAAC,CAAC;AACpC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAEhC,wBAAwB;AACxB,MAAM,KAAK,GAAoB;IAC7B,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CACpC,CAAC;AAEF,iFAAiF;AAEjF;;;;;;GAMG;AACH,SAAS,oBAAoB;IAC3B,MAAM,GAAG,GAAG,kBAAkB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAChE,IAAI,CAAC,GAAG;QAAE,OAAO,oBAAoB,CAAC;IAEtC,MAAM,cAAc,GAAG,GAAG;SACvB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAE7D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,IAAK,oBAA0C,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,YAAY,CAAC,GAAG,CAAC,IAAsB,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,wCAAwC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;QAC5F,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,KAAK,UAAU,gBAAgB,CAC7B,IAAY,EACZ,MAA0C;IAE1C,IAAI,CAAC,cAAc,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAErD,MAAM,kBAAkB,GAAG,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,sBAAsB,GAAG,kBAAkB,EAAE,IAAI,EAAE,CAAC;IAC1D,MAAM,eAAe,GACnB,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC;QACzD,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,iBAAiB,CAAC;IACxB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAE9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,kBAAkB,eAAe,IAAI,IAAI,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,eAAe,cAAc,CAAC,MAAM,UAAU,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAC7F,MAAM,sBAAsB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;IAEhE,2EAA2E;IAC3E,4EAA4E;IAC5E,sCAAsC;IACtC,EAAE;IACF,yEAAyE;IACzE,wEAAwE;IACxE,0EAA0E;IAC1E,sEAAsE;IACtE,MAAM,WAAW,GAA4B;QAC3C,IAAI;QACJ,QAAQ,EAAE,EAAE;QACZ,aAAa,EAAE,EAAE;KAClB,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC9D,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;QAC9C,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;QACpD,WAAW,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;QAC1D,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;QACtD,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;QACtD,WAAW,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAClE,WAAW,CAAC,oBAAoB,CAAC,GAAG,QAAQ,CAAC,kBAAkB,IAAI,EAAE,CAAC;QACtE,WAAW,CAAC,yBAAyB,CAAC,GAAG,QAAQ,CAAC,uBAAuB,IAAI,EAAE,CAAC;QAChF,WAAW,CAAC,mBAAmB,CAAC,GAAG,QAAQ,CAAC,iBAAiB,IAAI,EAAE,CAAC;QACpE,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;QACpD,WAAW,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;QAC1D,WAAW,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,oFAAoF;QACpF,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC3B,WAAW,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QAC7B,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAClF,wBAAwB,CAAC,QAAQ,CAAC,CAAoB,CAAC,CAC1B,CAAC;QAEhC,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE;YAC9C,YAAY,EAAE,iBAAiB;YAC/B,IAAI;YACJ,SAAS,EAAE,eAAe;YAC1B,cAAc;YACd,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QACjD,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAChD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAC1C,CAAC,MAAM,CAAC;QACT,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAC9C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CACxC,CAAC,MAAM,CAAC;QAET,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,yBAAyB,cAAc,uBAAuB,YAAY,gBAAgB,YAAY,GAAG,CAC1G,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,SAAS,gBAAgB,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACrD,qDAAqD;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,0EAA0E;IAC1E,iEAAiE;IACjE,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,iDAAiD,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAEjD,gDAAgD;IAChD,sEAAsE;IACtE,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAExC,iDAAiD;IACjD,+EAA+E;IAC/E,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE1C,8CAA8C;IAC9C,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,IAAI,MAAM;YAAE,MAAM,gBAAgB,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAkB;QACnC,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,eAAe;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAChC,CAAC;IAEF,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAuB,EAAE,CAAC;QAEvC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,WAA8B,CAAC,EAAE,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;gBAChE,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,WAA8B,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,oBAAoB,WAAW,uBAAuB,CAAC,CAAC;gBACpE,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CACV,MAAM,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CACpF,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,SAAS,WAAW,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;QACvD,IAAI,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACpF,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,MAAM,gBAAgB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,2DAA2D;AAC3D,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxF,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -0,0 +1,100 @@
1
+ import { ArticleCategory } from '../../types/index.js';
2
+ import type { ConfidenceLevel } from '../../types/index.js';
3
+ /**
4
+ * All analysis methods supported by the analysis pipeline stage.
5
+ *
6
+ * Methods prefixed with a group label:
7
+ * - Classification (#804): significance-classification, impact-matrix, actor-mapping, forces-analysis
8
+ * - Threat Assessment (#805): political-stride, actor-threat-profiling, consequence-trees, legislative-disruption
9
+ * - Risk Scoring (#806): risk-matrix, political-capital-risk, quantitative-swot, legislative-velocity-risk, agent-risk-workflow
10
+ * - Existing: deep-analysis, stakeholder-analysis, coalition-analysis, voting-patterns, cross-session-intelligence
11
+ */
12
+ export type AnalysisMethod = 'significance-classification' | 'impact-matrix' | 'actor-mapping' | 'forces-analysis' | 'political-stride' | 'actor-threat-profiling' | 'consequence-trees' | 'legislative-disruption' | 'risk-matrix' | 'political-capital-risk' | 'quantitative-swot' | 'legislative-velocity-risk' | 'agent-risk-workflow' | 'deep-analysis' | 'stakeholder-analysis' | 'coalition-analysis' | 'voting-patterns' | 'cross-session-intelligence';
13
+ /** All analysis methods in default execution order */
14
+ export declare const ALL_ANALYSIS_METHODS: readonly AnalysisMethod[];
15
+ /** Configuration for the analysis pipeline stage */
16
+ export interface AnalysisStageOptions {
17
+ /** Article categories to analyse */
18
+ readonly articleTypes: readonly ArticleCategory[];
19
+ /** ISO date string (YYYY-MM-DD) for this analysis run */
20
+ readonly date: string;
21
+ /** Base output directory (e.g. 'analysis-output') */
22
+ readonly outputDir: string;
23
+ /** Which methods to run; defaults to {@link ALL_ANALYSIS_METHODS} */
24
+ readonly enabledMethods?: readonly AnalysisMethod[];
25
+ /** When true, skip already-completed methods from a prior run on the same date */
26
+ readonly skipCompleted?: boolean;
27
+ /** Emit verbose progress messages to stdout */
28
+ readonly verbose?: boolean;
29
+ }
30
+ /** Status record written into the manifest for each method */
31
+ export interface AnalysisMethodStatus {
32
+ /** The analysis method */
33
+ readonly method: AnalysisMethod;
34
+ /** Whether the method completed, was skipped, or failed */
35
+ readonly status: 'completed' | 'skipped' | 'failed';
36
+ /** Path to the markdown output file */
37
+ readonly outputFile: string;
38
+ /** Confidence level of the result */
39
+ readonly confidence: ConfidenceLevel;
40
+ /** Wall-clock duration in milliseconds */
41
+ readonly duration: number;
42
+ /** One-line human-readable summary */
43
+ readonly summary: string;
44
+ }
45
+ /** Metadata record written to manifest.json for each analysis run */
46
+ export interface AnalysisManifest {
47
+ /** Unique identifier for this analysis run */
48
+ readonly runId: string;
49
+ /** ISO date of the analysis */
50
+ readonly date: string;
51
+ /** ISO 8601 start timestamp */
52
+ readonly startTime: string;
53
+ /** ISO 8601 end timestamp */
54
+ readonly endTime: string;
55
+ /** Article types included in this run */
56
+ readonly articleTypes: readonly ArticleCategory[];
57
+ /** Per-method status entries */
58
+ readonly methods: readonly AnalysisMethodStatus[];
59
+ /** Aggregated confidence across all completed methods */
60
+ readonly overallConfidence: ConfidenceLevel;
61
+ /** Data source identifiers used during the run */
62
+ readonly dataSourcesUsed: readonly string[];
63
+ }
64
+ /** Result context passed from the analysis stage to article generation strategies */
65
+ export interface AnalysisContext {
66
+ /** ISO date of the analysis */
67
+ readonly date: string;
68
+ /** Absolute path to the date-scoped output directory */
69
+ readonly outputDir: string;
70
+ /** Methods that completed successfully or were skipped */
71
+ readonly completedMethods: readonly AnalysisMethod[];
72
+ /** Detailed results keyed by method */
73
+ readonly results: ReadonlyMap<AnalysisMethod, AnalysisMethodStatus>;
74
+ /** Manifest written to disk */
75
+ readonly manifest: AnalysisManifest;
76
+ }
77
+ /**
78
+ * Run the full analysis pipeline stage.
79
+ *
80
+ * Executes all enabled analysis methods sequentially, writing markdown files
81
+ * to `outputDir/{date}/` and a `manifest.json` summary. Individual method
82
+ * failures are isolated — other methods continue regardless.
83
+ *
84
+ * @param fetchedData - Raw EP data fetched by the fetch stage (keyed by data type)
85
+ * @param options - Analysis stage configuration
86
+ * @returns Analysis context object for consumption by the generate stage
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * const ctx = await runAnalysisStage(fetchedData, {
91
+ * articleTypes: [ArticleCategory.WEEK_AHEAD],
92
+ * date: '2026-03-26',
93
+ * outputDir: 'analysis-output',
94
+ * skipCompleted: true,
95
+ * verbose: true,
96
+ * });
97
+ * ```
98
+ */
99
+ export declare function runAnalysisStage(fetchedData: Record<string, unknown>, options: AnalysisStageOptions): Promise<AnalysisContext>;
100
+ //# sourceMappingURL=analysis-stage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis-stage.d.ts","sourceRoot":"","sources":["../../../src/generators/pipeline/analysis-stage.ts"],"names":[],"mappings":"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"}