@newrelic/preflight 1.4.47 → 1.5.1

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 (75) hide show
  1. package/dist/alerts/local-alert-engine.d.ts +1 -1
  2. package/dist/alerts/local-alert-engine.d.ts.map +1 -1
  3. package/dist/alerts/local-alert-engine.js +2 -2
  4. package/dist/alerts/local-alert-engine.js.map +1 -1
  5. package/dist/dashboard/dashboard-server.d.ts +2 -2
  6. package/dist/dashboard/dashboard-server.d.ts.map +1 -1
  7. package/dist/dashboard/dashboard-server.js +2 -2
  8. package/dist/dashboard/dashboard-server.js.map +1 -1
  9. package/dist/dashboard/index.d.ts +1 -1
  10. package/dist/dashboard/index.d.ts.map +1 -1
  11. package/dist/dashboard/live-event-bus.d.ts +32 -0
  12. package/dist/dashboard/live-event-bus.d.ts.map +1 -1
  13. package/dist/dashboard/live-event-bus.js.map +1 -1
  14. package/dist/dashboard/routes/api-handler.d.ts +46 -0
  15. package/dist/dashboard/routes/api-handler.d.ts.map +1 -1
  16. package/dist/dashboard/routes/api-handler.js +188 -5
  17. package/dist/dashboard/routes/api-handler.js.map +1 -1
  18. package/dist/dashboard/subagent-timeline-store.d.ts +156 -0
  19. package/dist/dashboard/subagent-timeline-store.d.ts.map +1 -0
  20. package/dist/dashboard/subagent-timeline-store.js +674 -0
  21. package/dist/dashboard/subagent-timeline-store.js.map +1 -0
  22. package/dist/dashboard/workflow-store.d.ts +85 -0
  23. package/dist/dashboard/workflow-store.d.ts.map +1 -0
  24. package/dist/dashboard/workflow-store.js +330 -0
  25. package/dist/dashboard/workflow-store.js.map +1 -0
  26. package/dist/hooks/event-processor.d.ts +86 -1
  27. package/dist/hooks/event-processor.d.ts.map +1 -1
  28. package/dist/hooks/event-processor.js +182 -0
  29. package/dist/hooks/event-processor.js.map +1 -1
  30. package/dist/hooks/subagent-watcher.d.ts +187 -0
  31. package/dist/hooks/subagent-watcher.d.ts.map +1 -0
  32. package/dist/hooks/subagent-watcher.js +797 -0
  33. package/dist/hooks/subagent-watcher.js.map +1 -0
  34. package/dist/hooks/workflow-script-parser.d.ts +44 -0
  35. package/dist/hooks/workflow-script-parser.d.ts.map +1 -0
  36. package/dist/hooks/workflow-script-parser.js +255 -0
  37. package/dist/hooks/workflow-script-parser.js.map +1 -0
  38. package/dist/hooks/workflow-watcher.d.ts +67 -0
  39. package/dist/hooks/workflow-watcher.d.ts.map +1 -0
  40. package/dist/hooks/workflow-watcher.js +453 -0
  41. package/dist/hooks/workflow-watcher.js.map +1 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +316 -12
  44. package/dist/index.js.map +1 -1
  45. package/dist/metrics/cost-tracker.d.ts +113 -17
  46. package/dist/metrics/cost-tracker.d.ts.map +1 -1
  47. package/dist/metrics/cost-tracker.js +151 -8
  48. package/dist/metrics/cost-tracker.js.map +1 -1
  49. package/dist/metrics/recommendation-engine.d.ts +1 -1
  50. package/dist/metrics/recommendation-engine.js +1 -1
  51. package/dist/metrics/workflow-run-tracker.d.ts +140 -0
  52. package/dist/metrics/workflow-run-tracker.d.ts.map +1 -0
  53. package/dist/metrics/workflow-run-tracker.js +306 -0
  54. package/dist/metrics/workflow-run-tracker.js.map +1 -0
  55. package/dist/storage/local-store.d.ts +1 -1
  56. package/dist/storage/local-store.js +2 -2
  57. package/dist/storage/local-store.js.map +1 -1
  58. package/dist/storage/session-store.d.ts +8 -0
  59. package/dist/storage/session-store.d.ts.map +1 -1
  60. package/dist/storage/session-store.js +1 -1
  61. package/dist/storage/session-store.js.map +1 -1
  62. package/dist/storage/types.d.ts +40 -1
  63. package/dist/storage/types.d.ts.map +1 -1
  64. package/dist/tools/extended-analytics-tools.d.ts +1 -1
  65. package/dist/tools/extended-analytics-tools.js +1 -1
  66. package/dist/transport/nr-ingest.d.ts +153 -2
  67. package/dist/transport/nr-ingest.d.ts.map +1 -1
  68. package/dist/transport/nr-ingest.js +275 -0
  69. package/dist/transport/nr-ingest.js.map +1 -1
  70. package/dist/web/assets/index-B4DkT4Go.css +2 -0
  71. package/dist/web/assets/index-g9I2w7LV.js +64 -0
  72. package/dist/web/index.html +2 -2
  73. package/package.json +1 -1
  74. package/dist/web/assets/index-CrBs4WEp.js +0 -64
  75. package/dist/web/assets/index-DwBQxRYb.css +0 -2
@@ -0,0 +1,453 @@
1
+ /**
2
+ * Workflow Watcher — polls `~/.claude/projects/<slug>/<sessionId>/workflows/wf_*.json`
3
+ * and emits one `mode:'workflow_run'` JSONL line per mtime change.
4
+ *
5
+ * The on-disk JSON is the only place per-workflow rollups (status, total
6
+ * tokens, agent count, declared topology via the sibling
7
+ * `workflows/scripts/<name>-wf_<runId>.js`) are persisted; hooks only see
8
+ * the parent's single Workflow tool_use.
9
+ *
10
+ * The watcher correlates with the SubagentWatcher's per-agent telemetry by
11
+ * the `wf_<runId>` filename suffix. Token-reconciliation delta is computed
12
+ * here so the dashboard can surface "rollup says X, sum-of-subagents says Y"
13
+ * without an NR-side join (the dashboard's reconciliation card).
14
+ */
15
+ import { existsSync, mkdirSync, readdirSync, readFileSync, statSync } from 'node:fs';
16
+ import { homedir } from 'node:os';
17
+ import { dirname, isAbsolute, join, relative, resolve } from 'node:path';
18
+ import { createLogger } from '../shared/index.js';
19
+ import { parseWorkflowScript } from './workflow-script-parser.js';
20
+ const logger = createLogger('workflow-watcher');
21
+ const DEFAULT_POLL_INTERVAL_MS = 2_000;
22
+ const DEFAULT_DISCOVERY_HOURS = 24;
23
+ const PROJECTS_DIR_NAME = '.claude/projects';
24
+ const SESSION_ID_RE = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;
25
+ const WF_FILE_RE = /^wf_/; // match prefix only (no fixed-suffix-length assumption)
26
+ // ---------------------------------------------------------------------------
27
+ // WorkflowWatcher
28
+ // ---------------------------------------------------------------------------
29
+ export class WorkflowWatcher {
30
+ storagePath;
31
+ projectsDir;
32
+ pollIntervalMs;
33
+ discoveryHours;
34
+ parentSessionFilter;
35
+ getCostForRun;
36
+ getSubagentTokenSumForRun;
37
+ intervalId = null;
38
+ running = false;
39
+ seenMtime = new Map();
40
+ emittedRuns = new Set();
41
+ topologyCache = new Map();
42
+ // Paths whose seenMtime entry exists only to guard a one-time
43
+ // discovery_skipped health event (see the cold-scan-skip branch in
44
+ // discoverFiles()) — these never enter the processed `out` set, so
45
+ // evictStale() must never delete them based on currentPaths membership.
46
+ coldSkipGuards = new Set();
47
+ // Health counters
48
+ filesWatched = 0;
49
+ linesRead = 0;
50
+ bytesRead = 0;
51
+ parseErrors = 0;
52
+ schemaDrifts = 0;
53
+ lastError = null;
54
+ // Callback wires (set after construction to avoid circular imports)
55
+ onRun = null;
56
+ onHealth = null;
57
+ constructor(options = {}) {
58
+ this.storagePath = options.storagePath ?? join(homedir(), '.newrelic-preflight');
59
+ this.projectsDir = options.projectsDir ?? join(homedir(), PROJECTS_DIR_NAME);
60
+ this.pollIntervalMs = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
61
+ const envHours = parseInt(process.env.NR_AI_WATCHER_DISCOVERY_HOURS ?? '', 10);
62
+ this.discoveryHours =
63
+ options.discoveryHours ??
64
+ (Number.isFinite(envHours) && envHours > 0 ? envHours : DEFAULT_DISCOVERY_HOURS);
65
+ this.parentSessionFilter = options.parentSessionId ?? null;
66
+ this.getCostForRun = options.getCostForRun;
67
+ this.getSubagentTokenSumForRun = options.getSubagentTokenSumForRun;
68
+ }
69
+ setOnRun(cb) {
70
+ this.onRun = cb;
71
+ }
72
+ setOnHealth(cb) {
73
+ this.onHealth = cb;
74
+ }
75
+ start() {
76
+ if (this.running)
77
+ return;
78
+ this.running = true;
79
+ if (!existsSync(this.storagePath)) {
80
+ mkdirSync(this.storagePath, { recursive: true, mode: 0o700 });
81
+ }
82
+ this.intervalId = setInterval(() => this.poll(), this.pollIntervalMs);
83
+ this.intervalId.unref();
84
+ logger.info('WorkflowWatcher started');
85
+ }
86
+ stop() {
87
+ if (!this.running)
88
+ return;
89
+ this.running = false;
90
+ if (this.intervalId !== null) {
91
+ clearInterval(this.intervalId);
92
+ this.intervalId = null;
93
+ }
94
+ logger.info('WorkflowWatcher stopped');
95
+ }
96
+ poll() {
97
+ try {
98
+ const files = this.discoverFiles();
99
+ this.filesWatched = files.length;
100
+ const currentPaths = new Set();
101
+ const currentRunIds = new Set();
102
+ for (const file of files) {
103
+ currentPaths.add(file.path);
104
+ currentRunIds.add(file.runId);
105
+ let st;
106
+ try {
107
+ st = statSync(file.path);
108
+ }
109
+ catch {
110
+ continue;
111
+ }
112
+ const prev = this.seenMtime.get(file.path);
113
+ if (prev !== undefined && st.mtimeMs === prev)
114
+ continue;
115
+ this.seenMtime.set(file.path, st.mtimeMs);
116
+ this.processFile(file, st.mtimeMs);
117
+ }
118
+ this.evictStale(currentPaths, currentRunIds);
119
+ }
120
+ catch (err) {
121
+ this.recordError(err);
122
+ }
123
+ }
124
+ // -------------------------------------------------------------------------
125
+ // Eviction
126
+ // -------------------------------------------------------------------------
127
+ // Drops bookkeeping for paths/runs no longer present in the current
128
+ // discovered set, mirroring SubagentWatcher.evictStalePartials() — without
129
+ // this, seenMtime/emittedRuns/topologyCache grow for the process lifetime in
130
+ // a long-lived --local dashboard, scaling with total historical run count
131
+ // rather than active run count. topologyCache is keyed by the
132
+ // content-derived runId, which can (rarely) differ from file.runId — an
133
+ // over-eager evict there just forces a cache-miss recompute next access,
134
+ // never a correctness issue. seenMtime entries in coldSkipGuards are
135
+ // exempt from currentPaths-based eviction — they belong to files that
136
+ // never enter the processed `out` set (see discoverFiles()), so they'd
137
+ // otherwise be deleted and re-added every poll, re-emitting the
138
+ // discovery_skipped health event indefinitely instead of just once.
139
+ evictStale(currentPaths, currentRunIds) {
140
+ for (const path of this.seenMtime.keys()) {
141
+ if (!currentPaths.has(path) && !this.coldSkipGuards.has(path))
142
+ this.seenMtime.delete(path);
143
+ }
144
+ for (const runId of this.emittedRuns) {
145
+ if (!currentRunIds.has(runId))
146
+ this.emittedRuns.delete(runId);
147
+ }
148
+ for (const runId of this.topologyCache.keys()) {
149
+ if (!currentRunIds.has(runId))
150
+ this.topologyCache.delete(runId);
151
+ }
152
+ }
153
+ // -------------------------------------------------------------------------
154
+ // Discovery
155
+ // -------------------------------------------------------------------------
156
+ discoverFiles() {
157
+ const out = [];
158
+ if (!existsSync(this.projectsDir))
159
+ return out;
160
+ const cutoffMs = Date.now() - this.discoveryHours * 60 * 60 * 1000;
161
+ let projectEntries;
162
+ try {
163
+ projectEntries = readdirSync(this.projectsDir);
164
+ }
165
+ catch (err) {
166
+ this.recordError(err);
167
+ return out;
168
+ }
169
+ for (const project of projectEntries) {
170
+ const projectPath = join(this.projectsDir, project);
171
+ let st;
172
+ try {
173
+ st = statSync(projectPath);
174
+ }
175
+ catch {
176
+ continue;
177
+ }
178
+ if (!st.isDirectory())
179
+ continue;
180
+ // When a parent session filter is set (the common case for a
181
+ // per-session --stdio server instance), skip listing every sibling
182
+ // session in this project — go straight to the one directory we care
183
+ // about. Falls back to the full listing only when no filter is set
184
+ // (e.g. --local, which watches every session).
185
+ const sessionEntries = this.parentSessionFilter
186
+ ? [this.parentSessionFilter]
187
+ : (() => {
188
+ try {
189
+ return readdirSync(projectPath);
190
+ }
191
+ catch {
192
+ return [];
193
+ }
194
+ })();
195
+ for (const sessionId of sessionEntries) {
196
+ if (!SESSION_ID_RE.test(sessionId))
197
+ continue;
198
+ if (this.parentSessionFilter && sessionId !== this.parentSessionFilter)
199
+ continue;
200
+ const wfDir = join(projectPath, sessionId, 'workflows');
201
+ if (!existsSync(wfDir))
202
+ continue;
203
+ let wfEntries;
204
+ try {
205
+ wfEntries = readdirSync(wfDir);
206
+ }
207
+ catch {
208
+ continue;
209
+ }
210
+ for (const name of wfEntries) {
211
+ if (!WF_FILE_RE.test(name) || !name.endsWith('.json'))
212
+ continue;
213
+ const path = join(wfDir, name);
214
+ let fst;
215
+ try {
216
+ fst = statSync(path);
217
+ }
218
+ catch {
219
+ continue;
220
+ }
221
+ if (fst.mtimeMs < cutoffMs && !this.emittedRuns.has(name.slice(0, -'.json'.length))) {
222
+ // Skip cold-scan of files older than the discovery budget. The
223
+ // first time we encounter such a file we emit a discovery_skipped
224
+ // health event so the operator can tell why a known run is absent
225
+ // from the dashboard. This path is never pushed to `out`, so it
226
+ // never counts toward filesWatched/currentPaths — coldSkipGuards
227
+ // records it separately so evictStale() knows to spare its
228
+ // seenMtime entry (see the comment there).
229
+ if (!this.seenMtime.has(path)) {
230
+ this.seenMtime.set(path, fst.mtimeMs);
231
+ this.coldSkipGuards.add(path);
232
+ this.emitHealth({ event: 'discovery_skipped' });
233
+ }
234
+ continue;
235
+ }
236
+ out.push({ path, parentSessionId: sessionId, runId: name.slice(0, -'.json'.length) });
237
+ }
238
+ }
239
+ }
240
+ return out;
241
+ }
242
+ // -------------------------------------------------------------------------
243
+ // Per-file processing
244
+ // -------------------------------------------------------------------------
245
+ processFile(file, mtimeMs) {
246
+ let raw;
247
+ try {
248
+ raw = readFileSync(file.path, 'utf-8');
249
+ }
250
+ catch (err) {
251
+ this.recordError(err);
252
+ return;
253
+ }
254
+ this.bytesRead += raw.length;
255
+ let parsed;
256
+ try {
257
+ parsed = JSON.parse(raw);
258
+ }
259
+ catch {
260
+ // Partial-write protection: re-stat and only count as parse error
261
+ // if mtime is stable.
262
+ try {
263
+ const st2 = statSync(file.path);
264
+ if (st2.mtimeMs !== mtimeMs)
265
+ return;
266
+ }
267
+ catch {
268
+ return;
269
+ }
270
+ this.parseErrors += 1;
271
+ logger.warn('JSON parse error on workflow file', { path: file.path });
272
+ return;
273
+ }
274
+ const runId = typeof parsed.runId === 'string' ? parsed.runId : file.runId;
275
+ const startTime = typeof parsed.startTime === 'number' ? parsed.startTime : 0;
276
+ const durationMs = typeof parsed.durationMs === 'number' ? parsed.durationMs : 0;
277
+ const status = typeof parsed.status === 'string' ? parsed.status : 'unknown';
278
+ const incomplete = status !== 'completed';
279
+ const wfName = typeof parsed.workflowName === 'string' ? parsed.workflowName : 'unknown';
280
+ const defaultModel = typeof parsed.defaultModel === 'string' ? parsed.defaultModel : 'unknown';
281
+ const agentCount = typeof parsed.agentCount === 'number' ? parsed.agentCount : 0;
282
+ const totalTokensRollup = typeof parsed.totalTokens === 'number' && parsed.totalTokens >= 0 ? parsed.totalTokens : 0;
283
+ const taskId = parsed.taskId === null || typeof parsed.taskId === 'string' ? parsed.taskId : null;
284
+ // Observed phases = unique phaseTitle values across workflow_agent entries
285
+ let observedPhases = 0;
286
+ const wp = Array.isArray(parsed.workflowProgress) ? parsed.workflowProgress : [];
287
+ const seenPhaseTitles = new Set();
288
+ for (const entry of wp) {
289
+ if (entry && typeof entry === 'object') {
290
+ const t = entry.type;
291
+ const title = entry.phaseTitle;
292
+ if (t === 'workflow_agent' && typeof title === 'string') {
293
+ seenPhaseTitles.add(title);
294
+ }
295
+ }
296
+ }
297
+ observedPhases = seenPhaseTitles.size;
298
+ // Static topology from script
299
+ let topology = this.topologyCache.get(runId);
300
+ if (topology === undefined) {
301
+ let scriptPath = typeof parsed.scriptPath === 'string' ? parsed.scriptPath : null;
302
+ if (!scriptPath) {
303
+ // Fallback heuristic: the script lives in the sibling `scripts/`
304
+ // directory under the same workflows dir.
305
+ const wfDir = dirname(file.path);
306
+ const scriptsDir = join(wfDir, 'scripts');
307
+ if (existsSync(scriptsDir)) {
308
+ try {
309
+ for (const name of readdirSync(scriptsDir)) {
310
+ if (name.endsWith(`-${runId}.js`)) {
311
+ scriptPath = join(scriptsDir, name);
312
+ break;
313
+ }
314
+ }
315
+ }
316
+ catch {
317
+ /* skip */
318
+ }
319
+ }
320
+ }
321
+ // Security: `parsed.scriptPath` is read verbatim from an untrusted
322
+ // on-disk wf_*.json. Before reading it, require the resolved path to
323
+ // stay under `projectsDir` (no traversal to /etc/passwd, ~/.ssh, or a
324
+ // sibling agent-*.meta.json prompt), and cap the read size. A path that
325
+ // escapes containment or exceeds the cap is treated as parser_skip.
326
+ //
327
+ // path.relative() + this escape check is the containment pattern
328
+ // CodeQL recognises as a path-injection sanitizer (see
329
+ // static-handler.ts's identical comment). It must stay inlined here,
330
+ // not delegated to a helper function — extracting it breaks CodeQL's
331
+ // recognition of the sanitizer even for a trivial wrapper, and a
332
+ // startsWith(root + '/') check (the previous approach) never covers
333
+ // Windows since resolve() there yields backslash-separated paths.
334
+ const SCRIPT_MAX_BYTES = 262_144; // 256 KiB
335
+ let scriptOk = false;
336
+ if (scriptPath && existsSync(scriptPath)) {
337
+ const root = resolve(this.projectsDir);
338
+ const resolved = resolve(scriptPath);
339
+ const rel = relative(root, resolved);
340
+ const contained = rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
341
+ if (contained) {
342
+ try {
343
+ scriptOk = statSync(resolved).size <= SCRIPT_MAX_BYTES;
344
+ }
345
+ catch {
346
+ scriptOk = false;
347
+ }
348
+ if (scriptOk)
349
+ scriptPath = resolved;
350
+ }
351
+ if (!scriptOk) {
352
+ this.emitHealth({ event: 'parser_skip' });
353
+ }
354
+ }
355
+ if (scriptOk && scriptPath) {
356
+ const result = parseWorkflowScript(scriptPath);
357
+ if (result.status === 'ok') {
358
+ topology = result.topology;
359
+ }
360
+ else {
361
+ topology = null;
362
+ this.emitHealth({ event: 'parser_skip' });
363
+ }
364
+ }
365
+ else {
366
+ topology = null;
367
+ }
368
+ this.topologyCache.set(runId, topology);
369
+ }
370
+ // Token reconciliation delta. `null` (not 0) when no subagent data has
371
+ // been collected yet for this run — otherwise every newly-discovered run
372
+ // would show a false "100% gap" (subagentSum === 0 is indistinguishable
373
+ // from "not collected yet" if we let it flow into the ratio below).
374
+ const subagentSum = this.getSubagentTokenSumForRun?.(runId) ?? 0;
375
+ const totalTokens = subagentSum > 0 ? subagentSum : totalTokensRollup;
376
+ const tokenReconciliationDelta = subagentSum > 0 && totalTokensRollup > 0
377
+ ? (totalTokensRollup - subagentSum) / totalTokensRollup
378
+ : null;
379
+ // Cost (if available)
380
+ const usd = this.getCostForRun?.(runId) ?? 0;
381
+ const totalUsd = usd > 0 ? usd : null;
382
+ const declaredParallelWidthsJson = topology
383
+ ? JSON.stringify(topology.declaredParallelWidths)
384
+ : '[]';
385
+ const metrics = {
386
+ workflow_run_id: runId,
387
+ parent_session_id: file.parentSessionId,
388
+ task_id: taskId ?? null,
389
+ workflow_name: topology?.workflowName ?? wfName,
390
+ status,
391
+ default_model: defaultModel,
392
+ started_at: startTime,
393
+ duration_ms: durationMs,
394
+ agent_count: agentCount,
395
+ total_tokens: totalTokens,
396
+ total_usd: totalUsd,
397
+ declared_phases: topology ? topology.declaredPhases : null,
398
+ observed_phases: observedPhases,
399
+ declared_parallel_widths: declaredParallelWidthsJson,
400
+ token_reconciliation_delta: tokenReconciliationDelta,
401
+ incomplete,
402
+ backfilled: false,
403
+ };
404
+ if (this.onRun) {
405
+ try {
406
+ this.onRun(metrics);
407
+ }
408
+ catch (err) {
409
+ this.recordError(err);
410
+ }
411
+ }
412
+ // Keyed on file.runId (filename stem), matching exactly what
413
+ // discoverFiles()'s old-file cutoff guard checks — NOT the
414
+ // content-derived `runId` above, which can differ from the filename
415
+ // stem (rename, copy, older tool version) and would otherwise let that
416
+ // guard silently never fire for this file.
417
+ if (!this.emittedRuns.has(file.runId)) {
418
+ this.emittedRuns.add(file.runId);
419
+ this.emitHealth({ event: 'discovered_workflow', workflow_run_id: runId });
420
+ }
421
+ }
422
+ // -------------------------------------------------------------------------
423
+ // Health
424
+ // -------------------------------------------------------------------------
425
+ emitHealth(extra = {}) {
426
+ if (!this.onHealth)
427
+ return;
428
+ try {
429
+ this.onHealth({
430
+ timestamp: Date.now(),
431
+ watcher: 'workflow',
432
+ files_watched: this.filesWatched,
433
+ lines_read: this.linesRead,
434
+ bytes_read: this.bytesRead,
435
+ parse_errors: this.parseErrors,
436
+ schema_drifts: this.schemaDrifts,
437
+ last_error: this.lastError,
438
+ ...extra,
439
+ });
440
+ }
441
+ catch (err) {
442
+ this.recordError(err);
443
+ }
444
+ }
445
+ recordError(err) {
446
+ const message = err instanceof Error ? err.message : String(err);
447
+ const code = err.code ?? 'UNKNOWN';
448
+ const cls = err instanceof Error ? err.constructor.name : 'Error';
449
+ this.lastError = { code: String(code).slice(0, 80), class: String(cls).slice(0, 80) };
450
+ logger.warn('WorkflowWatcher error', { code, message: message.slice(0, 200) });
451
+ }
452
+ }
453
+ //# sourceMappingURL=workflow-watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-watcher.js","sourceRoot":"","sources":["../../src/hooks/workflow-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD,OAAO,EAAE,mBAAmB,EAAyB,MAAM,6BAA6B,CAAC;AAEzF,MAAM,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;AAEhD,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAC7C,MAAM,aAAa,GAAG,gEAAgE,CAAC;AACvF,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,wDAAwD;AA4CnF,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,OAAO,eAAe;IACT,WAAW,CAAS;IACpB,WAAW,CAAS;IACpB,cAAc,CAAS;IACvB,cAAc,CAAS;IACvB,mBAAmB,CAAgB;IACnC,aAAa,CAA0C;IACvD,yBAAyB,CAAsD;IAExF,UAAU,GAA0C,IAAI,CAAC;IACzD,OAAO,GAAG,KAAK,CAAC;IAEP,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,aAAa,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC5E,8DAA8D;IAC9D,mEAAmE;IACnE,mEAAmE;IACnE,wEAAwE;IACvD,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpD,kBAAkB;IACV,YAAY,GAAG,CAAC,CAAC;IACjB,SAAS,GAAG,CAAC,CAAC;IACd,SAAS,GAAG,CAAC,CAAC;IACd,WAAW,GAAG,CAAC,CAAC;IAChB,YAAY,GAAG,CAAC,CAAC;IACjB,SAAS,GAA2C,IAAI,CAAC;IAEjE,oEAAoE;IAC5D,KAAK,GAAqD,IAAI,CAAC;IAC/D,QAAQ,GAAyD,IAAI,CAAC;IAE9E,YAAY,UAAkC,EAAE;QAC9C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC7E,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,wBAAwB,CAAC;QACzE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,cAAc;YACjB,OAAO,CAAC,cAAc;gBACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;QACnF,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IACrE,CAAC;IAED,QAAQ,CAAC,EAA2C;QAClD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,WAAW,CAAC,EAA+C;QACzD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI;QACF,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;YACvC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,EAAE,CAAC;gBACP,IAAI,CAAC;oBACH,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI;oBAAE,SAAS;gBACxD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,WAAW;IACX,4EAA4E;IAE5E,oEAAoE;IACpE,2EAA2E;IAC3E,6EAA6E;IAC7E,0EAA0E;IAC1E,8DAA8D;IAC9D,wEAAwE;IACxE,yEAAyE;IACzE,qEAAqE;IACrE,sEAAsE;IACtE,uEAAuE;IACvE,gEAAgE;IAChE,oEAAoE;IAC5D,UAAU,CAAC,YAAiC,EAAE,aAAkC;QACtF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7F,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAEpE,aAAa;QACnB,MAAM,GAAG,GAA6B,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,GAAG,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACnE,IAAI,cAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,EAAE,CAAC;YACP,IAAI,CAAC;gBACH,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;gBAAE,SAAS;YAEhC,6DAA6D;YAC7D,mEAAmE;YACnE,qEAAqE;YACrE,mEAAmE;YACnE,+CAA+C;YAC/C,MAAM,cAAc,GAAa,IAAI,CAAC,mBAAmB;gBACvD,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;gBAC5B,CAAC,CAAC,CAAC,GAAG,EAAE;oBACJ,IAAI,CAAC;wBACH,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC;oBAClC,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;YACT,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;gBACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;oBAAE,SAAS;gBAC7C,IAAI,IAAI,CAAC,mBAAmB,IAAI,SAAS,KAAK,IAAI,CAAC,mBAAmB;oBAAE,SAAS;gBACjF,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;gBACxD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;oBAAE,SAAS;gBACjC,IAAI,SAAmB,CAAC;gBACxB,IAAI,CAAC;oBACH,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;wBAAE,SAAS;oBAChE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAC/B,IAAI,GAAG,CAAC;oBACR,IAAI,CAAC;wBACH,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACvB,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS;oBACX,CAAC;oBACD,IAAI,GAAG,CAAC,OAAO,GAAG,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;wBACpF,+DAA+D;wBAC/D,kEAAkE;wBAClE,kEAAkE;wBAClE,gEAAgE;wBAChE,iEAAiE;wBACjE,2DAA2D;wBAC3D,2CAA2C;wBAC3C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;4BACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BAC9B,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;wBAClD,CAAC;wBACD,SAAS;oBACX,CAAC;oBACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,4EAA4E;IAC5E,sBAAsB;IACtB,4EAA4E;IAEpE,WAAW,CAAC,IAA4B,EAAE,OAAe;QAC/D,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC;QAC7B,IAAI,MAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,sBAAsB;YACtB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO;oBAAE,OAAO;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;YACD,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3E,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,UAAU,GAAG,MAAM,KAAK,WAAW,CAAC;QAC1C,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,MAAM,YAAY,GAAG,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,iBAAiB,GACrB,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7F,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAErF,2EAA2E;QAC3E,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,EAAE,EAAE,CAAC;YACvB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvC,MAAM,CAAC,GAAI,KAAiC,CAAC,IAAI,CAAC;gBAClD,MAAM,KAAK,GAAI,KAAiC,CAAC,UAAU,CAAC;gBAC5D,IAAI,CAAC,KAAK,gBAAgB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACxD,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QACD,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC;QAEtC,8BAA8B;QAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,UAAU,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YAClF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,iEAAiE;gBACjE,0CAA0C;gBAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC1C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC3B,IAAI,CAAC;wBACH,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;4BAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gCAClC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gCACpC,MAAM;4BACR,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,UAAU;oBACZ,CAAC;gBACH,CAAC;YACH,CAAC;YACD,mEAAmE;YACnE,qEAAqE;YACrE,sEAAsE;YACtE,wEAAwE;YACxE,oEAAoE;YACpE,EAAE;YACF,iEAAiE;YACjE,uDAAuD;YACvD,qEAAqE;YACrE,qEAAqE;YACrE,iEAAiE;YACjE,oEAAoE;YACpE,kEAAkE;YAClE,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,UAAU;YAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;gBACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACrC,MAAM,SAAS,GAAG,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5E,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,CAAC;wBACH,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,gBAAgB,CAAC;oBACzD,CAAC;oBAAC,MAAM,CAAC;wBACP,QAAQ,GAAG,KAAK,CAAC;oBACnB,CAAC;oBACD,IAAI,QAAQ;wBAAE,UAAU,GAAG,QAAQ,CAAC;gBACtC,CAAC;gBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;gBAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC3B,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,IAAI,CAAC;oBAChB,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,uEAAuE;QACvE,yEAAyE;QACzE,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACtE,MAAM,wBAAwB,GAC5B,WAAW,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC;YACtC,CAAC,CAAC,CAAC,iBAAiB,GAAG,WAAW,CAAC,GAAG,iBAAiB;YACvD,CAAC,CAAC,IAAI,CAAC;QAEX,sBAAsB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtC,MAAM,0BAA0B,GAAG,QAAQ;YACzC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACjD,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,OAAO,GAA6B;YACxC,eAAe,EAAE,KAAK;YACtB,iBAAiB,EAAE,IAAI,CAAC,eAAe;YACvC,OAAO,EAAE,MAAM,IAAI,IAAI;YACvB,aAAa,EAAE,QAAQ,EAAE,YAAY,IAAI,MAAM;YAC/C,MAAM;YACN,aAAa,EAAE,YAAY;YAC3B,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,WAAW;YACzB,SAAS,EAAE,QAAQ;YACnB,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI;YAC1D,eAAe,EAAE,cAAc;YAC/B,wBAAwB,EAAE,0BAA0B;YACpD,0BAA0B,EAAE,wBAAwB;YACpD,UAAU;YACV,UAAU,EAAE,KAAK;SAClB,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,6DAA6D;QAC7D,2DAA2D;QAC3D,oEAAoE;QACpE,uEAAuE;QACvE,2CAA2C;QAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,SAAS;IACT,4EAA4E;IAEpE,UAAU,CAAC,QAA6C,EAAE;QAChE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC;gBACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,OAAO,EAAE,UAAU;gBACnB,aAAa,EAAE,IAAI,CAAC,YAAY;gBAChC,UAAU,EAAE,IAAI,CAAC,SAAS;gBAC1B,UAAU,EAAE,IAAI,CAAC,SAAS;gBAC1B,YAAY,EAAE,IAAI,CAAC,WAAW;gBAC9B,aAAa,EAAE,IAAI,CAAC,YAAY;gBAChC,UAAU,EAAE,IAAI,CAAC,SAAS;gBAC1B,GAAG,KAAK;aACT,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,GAAY;QAC9B,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,GAAI,GAAyB,CAAC,IAAI,IAAI,SAAS,CAAC;QAC1D,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QAClE,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACtF,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}