principles-disciple 1.25.0 → 1.27.0
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.
- package/openclaw.plugin.json +4 -4
- package/package.json +1 -1
- package/src/core/event-log.ts +14 -0
- package/src/core/trajectory.ts +74 -10
- package/src/hooks/gate-block-helper.ts +49 -2
- package/src/service/nocturnal-service.ts +39 -20
- package/src/service/nocturnal-target-selector.ts +3 -3
- package/tests/core/trajectory-correction-pain.test.ts +180 -0
- package/tsconfig.tsbuildinfo +0 -1
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "principles-disciple",
|
|
3
3
|
"name": "Principles Disciple",
|
|
4
4
|
"description": "Evolutionary programming agent framework with strategic guardrails and reflection loops.",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.27.0",
|
|
6
6
|
"skills": [
|
|
7
7
|
"./skills"
|
|
8
8
|
],
|
|
@@ -76,8 +76,8 @@
|
|
|
76
76
|
}
|
|
77
77
|
},
|
|
78
78
|
"buildFingerprint": {
|
|
79
|
-
"gitSha": "
|
|
80
|
-
"bundleMd5": "
|
|
81
|
-
"builtAt": "2026-04-
|
|
79
|
+
"gitSha": "9037c29faf9a",
|
|
80
|
+
"bundleMd5": "e7e9ebf7f67083f72f8f4328314d5670",
|
|
81
|
+
"builtAt": "2026-04-13T06:10:29.622Z"
|
|
82
82
|
}
|
|
83
83
|
}
|
package/package.json
CHANGED
package/src/core/event-log.ts
CHANGED
|
@@ -510,6 +510,20 @@ export class EventLog {
|
|
|
510
510
|
return null;
|
|
511
511
|
}
|
|
512
512
|
|
|
513
|
+
/**
|
|
514
|
+
* Find the latest pain signal for a given session.
|
|
515
|
+
*/
|
|
516
|
+
findLatestPainSignal(sessionId: string | undefined): PainSignalEventData | null {
|
|
517
|
+
const allEvents = this.getMergedEvents();
|
|
518
|
+
for (let i = allEvents.length - 1; i >= 0; i--) {
|
|
519
|
+
const entry = allEvents[i];
|
|
520
|
+
if (entry.sessionId === sessionId && entry.type === "pain_signal") {
|
|
521
|
+
return entry.data as unknown as PainSignalEventData;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
return null;
|
|
525
|
+
}
|
|
526
|
+
|
|
513
527
|
/**
|
|
514
528
|
* Dispose of the EventLog, flushing pending data and clearing timer.
|
|
515
529
|
*/
|
package/src/core/trajectory.ts
CHANGED
|
@@ -961,6 +961,17 @@ export class TrajectoryDatabase {
|
|
|
961
961
|
throw new SampleNotFoundError(`${sampleId} (after update)`);
|
|
962
962
|
}
|
|
963
963
|
|
|
964
|
+
// #Phase2b: Emit pain event for rejected corrections
|
|
965
|
+
if (status === 'rejected') {
|
|
966
|
+
this.recordCorrectionRejectedPain({
|
|
967
|
+
session_id: record.session_id,
|
|
968
|
+
quality_score: record.quality_score,
|
|
969
|
+
diff_excerpt: record.diff_excerpt,
|
|
970
|
+
principle_ids_json: record.principle_ids_json,
|
|
971
|
+
created_at: record.created_at,
|
|
972
|
+
});
|
|
973
|
+
}
|
|
974
|
+
|
|
964
975
|
return {
|
|
965
976
|
sampleId: String(record.sample_id),
|
|
966
977
|
sessionId: String(record.session_id),
|
|
@@ -977,6 +988,43 @@ export class TrajectoryDatabase {
|
|
|
977
988
|
};
|
|
978
989
|
}
|
|
979
990
|
|
|
991
|
+
/**
|
|
992
|
+
* When a correction sample is rejected, emit a pain event to the trajectory.
|
|
993
|
+
* This feeds rejected corrections into the nocturnal pipeline as a high-fidelity
|
|
994
|
+
* violation signal (human-verified, unlike heuristic pain detection).
|
|
995
|
+
*/
|
|
996
|
+
private recordCorrectionRejectedPain(record: {
|
|
997
|
+
session_id: unknown;
|
|
998
|
+
quality_score: unknown;
|
|
999
|
+
diff_excerpt: unknown;
|
|
1000
|
+
principle_ids_json: unknown;
|
|
1001
|
+
created_at: unknown;
|
|
1002
|
+
}): void {
|
|
1003
|
+
const sessionId = String(record.session_id);
|
|
1004
|
+
const qualityScore = Number(record.quality_score);
|
|
1005
|
+
const diffExcerpt = String(record.diff_excerpt ?? '');
|
|
1006
|
+
const principleIds = String(record.principle_ids_json ?? '[]');
|
|
1007
|
+
// quality_score (0-100) from correction sample → pain score (0-100), clamped
|
|
1008
|
+
const painScore = Math.max(0, Math.min(100, Math.round(Number(qualityScore) || 0)));
|
|
1009
|
+
const reason = `Correction rejected (quality ${qualityScore.toFixed(2)}). Principles: ${principleIds}${diffExcerpt ? ` — ${diffExcerpt.slice(0, 120)}` : ''}`;
|
|
1010
|
+
|
|
1011
|
+
try {
|
|
1012
|
+
this.recordPainEvent({
|
|
1013
|
+
sessionId,
|
|
1014
|
+
source: 'correction_rejected',
|
|
1015
|
+
score: painScore,
|
|
1016
|
+
reason,
|
|
1017
|
+
severity: painScore >= 70 ? 'severe' : painScore >= 40 ? 'moderate' : 'mild',
|
|
1018
|
+
origin: 'system_infer',
|
|
1019
|
+
text: diffExcerpt || undefined,
|
|
1020
|
+
createdAt: String(record.created_at),
|
|
1021
|
+
});
|
|
1022
|
+
} catch (err) {
|
|
1023
|
+
// Non-fatal: pain event recording should not break the review flow
|
|
1024
|
+
console.warn(`[Trajectory] Failed to record correction_rejected pain event: ${String(err)}`);
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
|
|
980
1028
|
/**
|
|
981
1029
|
* Export correction samples to JSONL file.
|
|
982
1030
|
*
|
|
@@ -1496,6 +1544,11 @@ export class TrajectoryDatabase {
|
|
|
1496
1544
|
`).get(sessionId) as Record<string, unknown> | undefined;
|
|
1497
1545
|
if (!correctionTurn || !correctionTurn.references_assistant_turn_id) return;
|
|
1498
1546
|
|
|
1547
|
+
// #Phase2b-fix: Tool failure is NOT required for correction samples.
|
|
1548
|
+
// User corrections are the highest-fidelity signal — they indicate the agent
|
|
1549
|
+
// said or did something wrong, regardless of whether tool calls succeeded.
|
|
1550
|
+
// Requiring tool failure excluded the most valuable cases: "agent did something
|
|
1551
|
+
// that technically worked but violated a principle or was logically wrong."
|
|
1499
1552
|
const failedCall = this.db.prepare(`
|
|
1500
1553
|
SELECT id, tool_name, error_type, error_message
|
|
1501
1554
|
FROM tool_calls
|
|
@@ -1503,26 +1556,37 @@ export class TrajectoryDatabase {
|
|
|
1503
1556
|
ORDER BY id DESC
|
|
1504
1557
|
LIMIT 1
|
|
1505
1558
|
`).get(sessionId) as Record<string, unknown> | undefined;
|
|
1506
|
-
if (!failedCall) return;
|
|
1507
1559
|
|
|
1508
|
-
const
|
|
1509
|
-
SELECT id, tool_name
|
|
1560
|
+
const recentCalls = this.db.prepare(`
|
|
1561
|
+
SELECT id, tool_name, outcome
|
|
1510
1562
|
FROM tool_calls
|
|
1511
|
-
WHERE session_id = ?
|
|
1563
|
+
WHERE session_id = ?
|
|
1512
1564
|
ORDER BY id DESC
|
|
1513
|
-
LIMIT
|
|
1565
|
+
LIMIT 5
|
|
1514
1566
|
`).all(sessionId) as Record<string, unknown>[];
|
|
1515
|
-
if (successfulCalls.length === 0) return;
|
|
1516
1567
|
|
|
1517
|
-
const
|
|
1568
|
+
const successfulCalls = recentCalls.filter(c => c.outcome === 'success');
|
|
1569
|
+
|
|
1570
|
+
// Generate sample ID from correction turn + first recent call (or correction id if no calls)
|
|
1571
|
+
const refForHash = successfulCalls[0]?.id ?? correctionTurn.id;
|
|
1572
|
+
const sampleId = `sample_${crypto.createHash('md5').update(`${sessionId}:${correctionTurn.id}:${refForHash}`).digest('hex').slice(0, 12)}`;
|
|
1518
1573
|
const userRawText = this.restoreRawText(correctionTurn.raw_text as string | null, correctionTurn.blob_ref as string | null);
|
|
1574
|
+
|
|
1575
|
+
// Quality scoring: correction cue is always valuable
|
|
1576
|
+
// Tool failure adds context (20pts), successful calls add context (up to 15pts)
|
|
1577
|
+
// Pure conversation corrections still score 55-75 (high enough to review)
|
|
1519
1578
|
const qualityScore = [
|
|
1520
1579
|
correctionTurn.references_assistant_turn_id ? 35 : 0,
|
|
1521
1580
|
correctionTurn.correction_cue ? 20 : 0,
|
|
1522
1581
|
failedCall ? 20 : 0,
|
|
1523
|
-
successfulCalls.length
|
|
1582
|
+
Math.min(successfulCalls.length, 3) * 5,
|
|
1524
1583
|
].reduce((sum, value) => sum + value, 0);
|
|
1525
1584
|
|
|
1585
|
+
// Diff excerpt: prefer user correction text, fallback to error info, fallback to cue
|
|
1586
|
+
const diffText = userRawText
|
|
1587
|
+
|| (failedCall ? String(failedCall.error_message ?? failedCall.error_type ?? failedCall.tool_name) : '')
|
|
1588
|
+
|| String(correctionTurn.correction_cue ?? 'user correction');
|
|
1589
|
+
|
|
1526
1590
|
this.withWrite(() => {
|
|
1527
1591
|
this.db.prepare(`
|
|
1528
1592
|
INSERT OR IGNORE INTO correction_samples (
|
|
@@ -1535,8 +1599,8 @@ export class TrajectoryDatabase {
|
|
|
1535
1599
|
sessionId,
|
|
1536
1600
|
Number(correctionTurn.references_assistant_turn_id),
|
|
1537
1601
|
Number(correctionTurn.id),
|
|
1538
|
-
safeJson(successfulCalls.map((call) => ({ id: call.id, toolName: call.tool_name }))),
|
|
1539
|
-
summarizeForDiff(
|
|
1602
|
+
safeJson(successfulCalls.map((call) => ({ id: call.id, toolName: call.tool_name, outcome: call.outcome }))),
|
|
1603
|
+
summarizeForDiff(diffText),
|
|
1540
1604
|
'[]',
|
|
1541
1605
|
qualityScore,
|
|
1542
1606
|
nowIso(),
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
TRAJECTORY_GATE_BLOCK_RETRY_DELAY_MS,
|
|
18
18
|
TRAJECTORY_GATE_BLOCK_MAX_RETRIES
|
|
19
19
|
} from '../config/index.js';
|
|
20
|
+
import { buildPainFlag, writePainFlag } from '../core/pain.js';
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* Block context containing all information needed for block persistence
|
|
@@ -93,11 +94,57 @@ export function recordGateBlockAndReturn(
|
|
|
93
94
|
wctx.trajectory?.recordGateBlock?.(trajectoryPayload);
|
|
94
95
|
} catch (error: unknown) {
|
|
95
96
|
logWarn(`[PD_GATE] Failed to record trajectory gate block: ${String(error)}`);
|
|
96
|
-
|
|
97
|
+
|
|
97
98
|
scheduleTrajectoryGateBlockRetry(wctx, trajectoryPayload, 1, logWarn, logError);
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
// 5.
|
|
101
|
+
// 5. Emit pain signal for gate block (#256)
|
|
102
|
+
// Gate blocks are a strong frustration signal — the agent tried to do something
|
|
103
|
+
// and was blocked by a principle gate. This should feed into the nocturnal pipeline.
|
|
104
|
+
if (sessionId) {
|
|
105
|
+
const GATE_BLOCK_PAIN_SCORE = 30; // Moderate — not a failure but a blocked intent
|
|
106
|
+
try {
|
|
107
|
+
wctx.trajectory?.recordPainEvent?.({
|
|
108
|
+
sessionId,
|
|
109
|
+
source: 'gate_blocked',
|
|
110
|
+
score: GATE_BLOCK_PAIN_SCORE,
|
|
111
|
+
reason: `Gate blocked ${toolName} on ${filePath}: ${reason}`,
|
|
112
|
+
severity: 'mild',
|
|
113
|
+
origin: 'system_infer',
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// Update .pain_flag if score is significant
|
|
117
|
+
wctx.eventLog.recordPainSignal(sessionId, {
|
|
118
|
+
source: 'gate_blocked',
|
|
119
|
+
score: GATE_BLOCK_PAIN_SCORE,
|
|
120
|
+
reason,
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// Write to pain flag file (merge with existing if present)
|
|
124
|
+
try {
|
|
125
|
+
const workspaceDir = wctx.workspaceDir;
|
|
126
|
+
const currentFlag = wctx.eventLog.findLatestPainSignal(sessionId);
|
|
127
|
+
const currentScore = currentFlag?.score ?? 0;
|
|
128
|
+
if (currentScore < GATE_BLOCK_PAIN_SCORE) {
|
|
129
|
+
const flag = buildPainFlag({
|
|
130
|
+
source: 'gate_blocked',
|
|
131
|
+
score: String(GATE_BLOCK_PAIN_SCORE),
|
|
132
|
+
reason: `Gate blocked: ${reason}`,
|
|
133
|
+
session_id: sessionId,
|
|
134
|
+
agent_id: 'main',
|
|
135
|
+
is_risky: false,
|
|
136
|
+
});
|
|
137
|
+
writePainFlag(workspaceDir, flag);
|
|
138
|
+
}
|
|
139
|
+
} catch (flagErr) {
|
|
140
|
+
logWarn(`[PD_GATE] Failed to update pain flag for gate block: ${String(flagErr)}`);
|
|
141
|
+
}
|
|
142
|
+
} catch (painErr) {
|
|
143
|
+
logWarn(`[PD_GATE] Failed to record gate block pain signal: ${String(painErr)}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// 6. Return consistent block result with operator guidance
|
|
101
148
|
return {
|
|
102
149
|
block: true,
|
|
103
150
|
blockReason: `[Principles Disciple] Security Gate Blocked this action.
|
|
@@ -280,33 +280,52 @@ function invokeStubReflector(
|
|
|
280
280
|
const artifactId = randomUUID();
|
|
281
281
|
const now = new Date().toISOString();
|
|
282
282
|
|
|
283
|
-
// Build
|
|
284
|
-
//
|
|
285
|
-
|
|
286
|
-
|
|
283
|
+
// #256: Build artifact from actual event content, not just stats counts.
|
|
284
|
+
// Previously the stub only checked stats.failureCount/painEvents/gateBlocks > 0
|
|
285
|
+
// and emitted the same template artifact regardless of what actually happened.
|
|
286
|
+
// Now we examine the actual event data to generate targeted reflections.
|
|
287
|
+
|
|
287
288
|
const hasGateBlocks = (snapshot.stats.totalGateBlocks ?? 0) > 0;
|
|
289
|
+
const hasPain = snapshot.stats.totalPainEvents > 0;
|
|
290
|
+
const hasFailures = (snapshot.stats.failureCount ?? 0) > 0;
|
|
288
291
|
|
|
289
|
-
// Detect what kind of signal is available and craft appropriate artifact
|
|
290
|
-
|
|
291
292
|
let badDecision: string;
|
|
292
|
-
|
|
293
293
|
let betterDecision: string;
|
|
294
|
-
|
|
295
294
|
let rationale: string;
|
|
296
295
|
|
|
297
|
-
if (hasGateBlocks) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
badDecision = `
|
|
303
|
-
betterDecision = `
|
|
304
|
-
rationale = `
|
|
305
|
-
} else if (
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
296
|
+
if (hasGateBlocks && snapshot.gateBlocks.length > 0) {
|
|
297
|
+
// Use actual gate block content
|
|
298
|
+
const block = snapshot.gateBlocks[0];
|
|
299
|
+
const tool = block.toolName ?? 'a tool';
|
|
300
|
+
const file = block.filePath ? ` on ${block.filePath}` : '';
|
|
301
|
+
badDecision = `Attempted to invoke ${tool}${file} without satisfying the gate requirements`;
|
|
302
|
+
betterDecision = `Review the gate block reason "${block.reason ?? 'unspecified'}" and resolve the blocking condition before retrying`;
|
|
303
|
+
rationale = `Gate blocks exist for a reason — bypassing them without understanding the underlying constraint risks unintended consequences. The block on ${tool}${file} indicates the operation exceeded allowed thresholds for the current evolution tier.`;
|
|
304
|
+
} else if (hasPain && snapshot.painEvents.length > 0) {
|
|
305
|
+
// Use actual pain event content
|
|
306
|
+
const pain = snapshot.painEvents[0];
|
|
307
|
+
const painSource = pain.source ?? 'unknown';
|
|
308
|
+
const painReason = pain.reason ? `: ${pain.reason}` : '';
|
|
309
|
+
badDecision = `Continued operating despite ${painSource} pain signal (score ${pain.score ?? 'unknown'})${painReason}`;
|
|
310
|
+
betterDecision = `Pause and analyze the ${painSource} signal — the pain indicates accumulated friction that should be diagnosed before proceeding`;
|
|
311
|
+
rationale = `Pain signals from ${painSource} are early warnings of systemic issues. Score ${pain.score ?? 'N/A'} indicates ${((pain.score ?? 0) >= 70) ? 'severe' : ((pain.score ?? 0) >= 40) ? 'moderate' : 'mild'} friction that should be addressed before continuing operations.`;
|
|
312
|
+
} else if (hasFailures && snapshot.toolCalls.length > 0) {
|
|
313
|
+
// Use actual tool failure content
|
|
314
|
+
const failedCall = snapshot.toolCalls.find(tc => tc.outcome === 'failure');
|
|
315
|
+
if (failedCall) {
|
|
316
|
+
const tool = failedCall.toolName ?? 'a tool';
|
|
317
|
+
const file = failedCall.filePath ? ` on ${failedCall.filePath}` : '';
|
|
318
|
+
const error = failedCall.errorMessage ? ` — ${failedCall.errorMessage}` : '';
|
|
319
|
+
badDecision = `Retried ${tool}${file} after failure without first diagnosing the root cause${error}`;
|
|
320
|
+
betterDecision = `Examine the error details (${failedCall.errorType ?? 'unknown type'}${error ? error : ''}) and verify preconditions before attempting ${tool} again`;
|
|
321
|
+
rationale = `Tool failures are opportunities for learning. The ${tool} failure${file} with error type ${failedCall.errorType ?? 'unknown'} suggests a gap in precondition checking or error handling that should be addressed to prevent recurrence.`;
|
|
322
|
+
} else {
|
|
323
|
+
badDecision = `Retried a failing operation without diagnosing the root cause of the failure`;
|
|
324
|
+
betterDecision = `Based on the evidence from the error logs, let me first check the actual source code to understand the precondition before retrying`;
|
|
325
|
+
rationale = `Diagnosing failures before retry prevents repeated failures and respects the cost of each action attempt`;
|
|
326
|
+
}
|
|
309
327
|
} else {
|
|
328
|
+
// Fallback — no specific signal content available
|
|
310
329
|
badDecision = `Proceeded with an operation without verifying preconditions or checking for conflicting changes`;
|
|
311
330
|
betterDecision = `Let me first understand the current state of the codebase by reading the relevant files before making any changes`;
|
|
312
331
|
rationale = `Verifying preconditions and current state prevents errors and ensures actions are appropriate for the actual situation`;
|
|
@@ -442,9 +442,9 @@ export class NocturnalTargetSelector {
|
|
|
442
442
|
}
|
|
443
443
|
|
|
444
444
|
// Compute violation signals for each session
|
|
445
|
-
// #
|
|
446
|
-
//
|
|
447
|
-
const MIN_VIOLATION_DEPTH =
|
|
445
|
+
// #256: Lowered from 2 to 1 — most sessions have exactly 1 failure + 1 pain event
|
|
446
|
+
// which is a high-quality candidate. Requiring >= 2 excluded the majority of meaningful sessions.
|
|
447
|
+
const MIN_VIOLATION_DEPTH = 1;
|
|
448
448
|
const richSessions = recentSessions.filter(
|
|
449
449
|
s => (s.failureCount ?? 0) + (s.painEventCount ?? 0) + (s.gateBlockCount ?? 0) >= MIN_VIOLATION_DEPTH
|
|
450
450
|
);
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as os from 'os';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { TrajectoryDatabase } from '../../src/core/trajectory.js';
|
|
6
|
+
|
|
7
|
+
function safeRmDir(dir: string): void {
|
|
8
|
+
try { fs.rmSync(dir, { recursive: true, force: true }); } catch { /* ignore */ }
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
describe('Trajectory — correction_rejected pain event (Phase 2b)', () => {
|
|
12
|
+
let workspaceDir: string;
|
|
13
|
+
let trajectory: TrajectoryDatabase;
|
|
14
|
+
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
workspaceDir = fs.mkdtempSync(path.join(os.tmpdir(), 'pd-correction-pain-'));
|
|
17
|
+
trajectory = new TrajectoryDatabase({ workspaceDir });
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
afterEach(() => {
|
|
21
|
+
trajectory?.dispose();
|
|
22
|
+
safeRmDir(workspaceDir);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('emits a pain event when a correction sample is rejected', async () => {
|
|
26
|
+
// Step 1: Create a session
|
|
27
|
+
trajectory.recordSession({
|
|
28
|
+
sessionId: 'test-session-001',
|
|
29
|
+
startedAt: new Date().toISOString(),
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// Step 2: Create an assistant turn (to be referenced)
|
|
33
|
+
const assistantTurnId = trajectory.recordAssistantTurn({
|
|
34
|
+
sessionId: 'test-session-001',
|
|
35
|
+
turnIndex: 0,
|
|
36
|
+
rawText: 'Here is some code I wrote',
|
|
37
|
+
createdAt: new Date().toISOString(),
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Step 3: Create a user turn with correction_cue (triggers auto-creation)
|
|
41
|
+
trajectory.recordUserTurn({
|
|
42
|
+
sessionId: 'test-session-001',
|
|
43
|
+
turnIndex: 1,
|
|
44
|
+
rawText: 'This is wrong. Fix it properly.',
|
|
45
|
+
correctionDetected: true,
|
|
46
|
+
correctionCue: 'This is wrong. Fix it properly.',
|
|
47
|
+
referencesAssistantTurnId: assistantTurnId,
|
|
48
|
+
createdAt: new Date().toISOString(),
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// Wait for async sample creation
|
|
52
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
53
|
+
|
|
54
|
+
// Verify sample was created as pending
|
|
55
|
+
const pendingSamples = trajectory.listCorrectionSamples('pending');
|
|
56
|
+
expect(pendingSamples.length).toBe(1);
|
|
57
|
+
const sampleId = pendingSamples[0].sampleId;
|
|
58
|
+
|
|
59
|
+
// Verify no pain events yet
|
|
60
|
+
const painEventsBefore = trajectory.listPainEventsForSession('test-session-001');
|
|
61
|
+
expect(painEventsBefore.length).toBe(0);
|
|
62
|
+
|
|
63
|
+
// Step 4: Review as rejected
|
|
64
|
+
trajectory.reviewCorrectionSample(sampleId, 'rejected', 'Does not match requirements');
|
|
65
|
+
|
|
66
|
+
// Step 5: Verify pain event was created
|
|
67
|
+
const painEventsAfter = trajectory.listPainEventsForSession('test-session-001');
|
|
68
|
+
expect(painEventsAfter.length).toBe(1);
|
|
69
|
+
|
|
70
|
+
const painEvent = painEventsAfter[0];
|
|
71
|
+
expect(painEvent.source).toBe('correction_rejected');
|
|
72
|
+
expect(painEvent.reason).toContain('Correction rejected');
|
|
73
|
+
expect(painEvent.origin).toBe('system_infer');
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it('does NOT emit a pain event when a correction sample is approved', async () => {
|
|
77
|
+
// Setup: session + assistant turn + user correction turn
|
|
78
|
+
trajectory.recordSession({
|
|
79
|
+
sessionId: 'test-session-002',
|
|
80
|
+
startedAt: new Date().toISOString(),
|
|
81
|
+
});
|
|
82
|
+
const assistantTurnId = trajectory.recordAssistantTurn({
|
|
83
|
+
sessionId: 'test-session-002',
|
|
84
|
+
turnIndex: 0,
|
|
85
|
+
rawText: 'Here is some code',
|
|
86
|
+
createdAt: new Date().toISOString(),
|
|
87
|
+
});
|
|
88
|
+
trajectory.recordUserTurn({
|
|
89
|
+
sessionId: 'test-session-002',
|
|
90
|
+
turnIndex: 1,
|
|
91
|
+
rawText: 'This needs work',
|
|
92
|
+
correctionDetected: true,
|
|
93
|
+
correctionCue: 'This needs work',
|
|
94
|
+
referencesAssistantTurnId: assistantTurnId,
|
|
95
|
+
createdAt: new Date().toISOString(),
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// Wait for async sample creation
|
|
99
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
100
|
+
|
|
101
|
+
// Get pending sample
|
|
102
|
+
const pendingSamples = trajectory.listCorrectionSamples('pending');
|
|
103
|
+
expect(pendingSamples.length).toBe(1);
|
|
104
|
+
const sampleId = pendingSamples[0].sampleId;
|
|
105
|
+
|
|
106
|
+
// Review as approved - should NOT trigger pain event
|
|
107
|
+
trajectory.reviewCorrectionSample(sampleId, 'approved', 'Looks good');
|
|
108
|
+
|
|
109
|
+
// Verify NO pain event was created (approved != rejected)
|
|
110
|
+
const painEvents = trajectory.listPainEventsForSession('test-session-002');
|
|
111
|
+
expect(painEvents.length).toBe(0);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it('maps quality_score to pain_score correctly (0-100 range)', async () => {
|
|
115
|
+
// Setup: with quality score components
|
|
116
|
+
trajectory.recordSession({
|
|
117
|
+
sessionId: 'test-session-003',
|
|
118
|
+
startedAt: new Date().toISOString(),
|
|
119
|
+
});
|
|
120
|
+
const assistantTurnId = trajectory.recordAssistantTurn({
|
|
121
|
+
sessionId: 'test-session-003',
|
|
122
|
+
turnIndex: 0,
|
|
123
|
+
rawText: 'Code here',
|
|
124
|
+
createdAt: new Date().toISOString(),
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// Create user turn with correction_cue (adds 20 points)
|
|
128
|
+
trajectory.recordUserTurn({
|
|
129
|
+
sessionId: 'test-session-003',
|
|
130
|
+
turnIndex: 1,
|
|
131
|
+
rawText: 'Wrong approach. Try a different algorithm.',
|
|
132
|
+
correctionDetected: true,
|
|
133
|
+
correctionCue: 'Wrong approach. Try a different algorithm.',
|
|
134
|
+
referencesAssistantTurnId: assistantTurnId,
|
|
135
|
+
createdAt: new Date().toISOString(),
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
// Add a failed tool call (adds 20 points)
|
|
139
|
+
trajectory.recordToolCall({
|
|
140
|
+
sessionId: 'test-session-003',
|
|
141
|
+
turnIndex: 2,
|
|
142
|
+
toolName: 'write',
|
|
143
|
+
toolCallIndex: 0,
|
|
144
|
+
paramsJson: { path: '/tmp/test.txt', content: 'test' },
|
|
145
|
+
outcome: 'failure',
|
|
146
|
+
errorMessage: 'Permission denied',
|
|
147
|
+
errorType: 'PermissionError',
|
|
148
|
+
createdAt: new Date().toISOString(),
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// Add successful calls (adds 25 points)
|
|
152
|
+
trajectory.recordToolCall({
|
|
153
|
+
sessionId: 'test-session-003',
|
|
154
|
+
turnIndex: 3,
|
|
155
|
+
toolName: 'read',
|
|
156
|
+
toolCallIndex: 1,
|
|
157
|
+
paramsJson: { path: '/tmp/test.txt' },
|
|
158
|
+
outcome: 'success',
|
|
159
|
+
resultJson: { content: 'file content' },
|
|
160
|
+
createdAt: new Date().toISOString(),
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// Wait for async sample creation
|
|
164
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
165
|
+
|
|
166
|
+
// Get pending sample (quality_score ~65: 20 + 20 + 25)
|
|
167
|
+
const pendingSamples = trajectory.listCorrectionSamples('pending');
|
|
168
|
+
expect(pendingSamples.length).toBe(1);
|
|
169
|
+
const sampleId = pendingSamples[0].sampleId;
|
|
170
|
+
|
|
171
|
+
// Review as rejected
|
|
172
|
+
trajectory.reviewCorrectionSample(sampleId, 'rejected', 'Test rejection');
|
|
173
|
+
|
|
174
|
+
// Verify pain score is clamped to 0-100
|
|
175
|
+
const painEvents = trajectory.listPainEventsForSession('test-session-003');
|
|
176
|
+
expect(painEvents.length).toBe(1);
|
|
177
|
+
expect(painEvents[0].score).toBeGreaterThanOrEqual(0);
|
|
178
|
+
expect(painEvents[0].score).toBeLessThanOrEqual(100);
|
|
179
|
+
});
|
|
180
|
+
});
|
package/tsconfig.tsbuildinfo
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../../../.npm-global/lib/node_modules/typescript/lib/lib.es5.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2015.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2016.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2017.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2018.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2019.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2020.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2021.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2022.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.dom.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.scripthost.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.decorators.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../.npm-global/lib/node_modules/typescript/lib/lib.es2022.full.d.ts","./src/openclaw-sdk.d.ts","./src/utils/file-lock.ts","./src/core/model-training-registry.ts","./src/core/external-training-contract.ts","./src/core/shadow-observation-registry.ts","./src/core/promotion-gate.ts","./src/core/model-deployment-registry.ts","./src/core/local-worker-routing.ts","./src/i18n/commands.ts","./src/core/paths.ts","./src/config/defaults/runtime.ts","./src/config/errors.ts","./src/config/index.ts","./src/core/path-resolver.ts","./src/core/config.ts","./src/core/config-service.ts","./src/types/event-types.ts","./src/core/event-log.ts","./src/core/dictionary.ts","./src/core/dictionary-service.ts","./src/types/hygiene-types.ts","./src/core/hygiene/tracker.ts","./src/core/system-logger.ts","./src/core/trajectory.ts","./src/core/evolution-types.ts","./src/core/evolution-reducer.ts","./src/core/workspace-context.ts","./src/core/session-tracker.ts","./src/types.ts","./src/core/focus-history.ts","./src/utils/subagent-probe.ts","./src/service/empathy-observer-manager.ts","./src/service/subagent-workflow/runtime-direct-driver.ts","./src/service/subagent-workflow/types.ts","./src/service/subagent-workflow/workflow-store.ts","./src/service/subagent-workflow/empathy-observer-workflow-manager.ts","./src/service/subagent-workflow/index.ts","./src/hooks/prompt.ts","./src/utils/io.ts","./src/core/profile.ts","./src/core/risk-calculator.ts","./src/hooks/thinking-checkpoint.ts","./src/hooks/edit-verification.ts","./src/hooks/bash-risk.ts","./src/constants/tools.ts","./src/hooks/gate-block-helper.ts","./src/core/evolution-engine.ts","./src/hooks/gfi-gate.ts","./src/hooks/progressive-trust-gate.ts","./src/hooks/gate.ts","./src/core/pain.ts","./src/utils/hashing.ts","./src/core/evolution-logger.ts","./src/hooks/pain.ts","./src/hooks/lifecycle.ts","./src/core/control-ui-db.ts","./src/core/detection-funnel.ts","./src/core/detection-service.ts","./src/core/thinking-models.ts","./src/hooks/message-sanitize.ts","./src/hooks/llm.ts","./src/core/init.ts","./src/utils/nlp.ts","./src/constants/diagnostician.ts","./src/service/nocturnal-runtime.ts","./src/core/nocturnal-trajectory-extractor.ts","./src/core/principle-training-state.ts","./src/core/nocturnal-compliance.ts","./src/service/nocturnal-target-selector.ts","./src/core/nocturnal-arbiter.ts","./src/core/adaptive-thresholds.ts","./src/core/nocturnal-candidate-scoring.ts","./src/core/nocturnal-trinity.ts","./src/core/nocturnal-executability.ts","./src/core/nocturnal-paths.ts","./src/core/nocturnal-dataset.ts","./src/service/nocturnal-service.ts","./src/service/evolution-worker.ts","./src/hooks/subagent.ts","./src/hooks/trajectory-collector.ts","./src/commands/strategy.ts","./src/commands/capabilities.ts","./src/commands/thinking-os.ts","./src/commands/evolver.ts","./src/commands/pain.ts","./src/commands/context.ts","./src/commands/focus.ts","./src/commands/rollback.ts","./src/service/phase3-input-filter.ts","./src/types/runtime-summary.ts","./src/service/runtime-summary-service.ts","./src/commands/evolution-status.ts","./src/commands/principle-rollback.ts","./src/core/nocturnal-export.ts","./src/commands/export.ts","./src/commands/samples.ts","./src/commands/nocturnal-review.ts","./src/core/training-program.ts","./src/commands/nocturnal-train.ts","./src/commands/nocturnal-rollout.ts","./src/service/trajectory-service.ts","./src/core/migration.ts","./src/tools/model-index.ts","./src/tools/critique-prompt.ts","./src/tools/deep-reflect.ts","./src/service/control-ui-query-service.ts","./src/service/evolution-query-service.ts","./src/service/health-query-service.ts","./src/service/central-database.ts","./src/http/principles-console-route.ts","./src/index.ts","./src/core/evolution-migration.ts","./src/utils/glob-match.ts","./src/utils/plugin-logger.ts"],"fileIdsList":[[64,90],[64,92,101],[64,72,89,154],[64,90,157],[64,90,93],[64,139],[64,66,67,68,69,70,71,90],[64,66,67,69,70,90,161],[64,80,90,91],[64,89],[64,90,91],[74,75],[65],[78],[65,73],[82],[83,120],[64,80],[65,73,88,108],[86,87],[86,88,89],[65,77,82,86,87,88],[64,84],[64,73,92],[66,69,70],[64,73],[65,66,69],[129],[134,136],[65,133,138],[133],[138,139],[87,122],[129,134,135],[73,79,102],[76],[65,88],[65,66,67,68,70],[102],[64,78,81,86],[73],[66,67],[65,73,76],[73,77,78,79,81,82,83,85,87,89],[64,76,90,91],[64,90,102,103,104,105,106,108,109,111,112],[64,76,90,91,104,107,108,109,110],[64,73,90,93,114],[64,90,91,114,119,121,122,123],[64],[64,86,88,90,91,102,103,110,114,115,116],[64,90,102,109,110],[64,71,77,90,91,92,93,95,100],[64,88,90,95,110,114,141],[64,76,91],[64,87,169,170,171,172],[64,68,70,71,72,77,86,90,101,113,117,118,123,124,125,141,142,143,144,145,146,147,148,149,150,151,155,156,158,159,160,162,163,164,165,168,173],[90,119,122],[64,90,91,94],[87,116],[64,65,76,83,86,90,91,116,121,125,126,127,128,136,140],[70,73,80,90,91,114,119],[65,91],[128,129,132,133,134,136,137,138,139,141],[128,129,130,131],[87,90,91,114,152,153],[64,90,91,94,96,97,98],[96,97,98,99],[97],[64,87,90],[64,166],[64,73,81,92,167]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},"9d8b3a1813740b581aa1a2b50a25fd976276a8ada08bcb362854fcfa1f91521f","262eaabfa3905fb4a82d082990b44c1d888b41955944254aec6c75624bf9a6fe","c3c4b14d7f2f86acef18a32ca98559116d81416e85328f8f7202abc8d00eb6ee","fb0b83a68d1ab00013e50783a8a3485659cc11df4cea678bb8c867e63eed6ccb","74efa7673bc1dfde11ed9badbfc36bc4e16d8cf2d0204398991f90cd6a7c9c00","ca56da3cdccf7731263f77dc5b0fce7a4ede885bb9dee3d0ed3d961a5ddaa001","6c7af54fb57f4ed3f0cbf29784f62df694c5d393f7736a4a8b0d61415491aa38","6e5be48fddbecfb48354c7dbbb0e7e19449d1edc400df37d6d4ecfd5b3636496","e4623380656c5939d7849669914ecd52107a979b4ffd3476c36db153e13f86b4","1e2bede1af57d49af563701f7b78765ccd40674ce66a0cf451e293e6bb1f5d6a","fec28636b608cbae5fff7935cbd758a1818f4ed11136fd8b171c6dc030aaf826","0e9c0067cab37fb3a3066199440cd2d341071ff2c3d1e870502f6d4f6c38b388","55bad809622ff93ba248aa092fc7b5d034fb0d951b7408ad6b96a1d5a8c7d620","395748eedf239c6007d0c59d53cb61efa60daed51f3069c43db018ae864cc42d","96c1ece41aabd170785a27097c56383086e36cb1c0bfa0d93a55c2117a33c6ad","5cd5deab63096b54ac0a8602730a33f93fa78da7c92f73ee77c2c656a1e66220","bcabdcb3fc75fe4324a1f76521d3e3c9771cbdce9a70b6ca67cba3edd13fe600","cc6be56007351d7642dee75881e18cfaf9e4d5a80633c43b3819cead85328721","c7840dcf758cf962c9b5921bf2877a7d68ac3d5f9c0535b72d4be1fb7fe331d0","8a815153c34f6a4cc7370af59338282870ea05d5f7bb504391a24eaa8061571f","71910559d2afc62ad138692ba1de6807d7ce5fae088d412473b6ea1f12345455","5a417b46d2266124171f0d6cf04d87e03c0147353f00cee80ebea6eb21b15af3","b467f6d92ed3a076db89c1b4c907c8f52a120cad62ddccaaadeb0d779d413ec0","385d5a57193712804d9af710dba2a9a1bd7f7d61227f42b1279a896e12b02aec","3fe7b54125bbae42abe66758bf11135c1c7ac240a41d0ec8bd8175d33cb811da","761bf70b706e61ffc18d005b50025c713127379f0b71c88c23d9d13ddb4329e4","14ddff59bfe118c36eedbc599fe3f851ab96f9e2533d597144f5c7a337549acb","7785f0c8ddd30197fbbc2e0fcc639a85796955dd621fe7a2b7e4a109c7be0e5c","861986bb92809c085bef8f1a196844c314c77bedbebb3c762dec53d31c1b5fa2","c5c1c808b8a5a3376840c6f1c076508066439e5aac48a437fb51a40281b74b10","50d39ae9732f40294c7ad597efa7f8b51e8020db3f53c196817a89021ef4cffe","ab3f1e1cac00fdeb41bfcd285343714cda84ee915e2a0848eb06d2a480b60225","9ff3769fea15f3ea87604fab66f9df9c60253e3d8e35a27e30c45368f302823c","f1cc34f32d35fbe8cf9da310d3e827c1075ffc59f67f8ab63b5ea5998e8f9ac8","fe36c4012ea1592148cf8dcf233046e70ed00d8ff3ac17ce2f60deefc7bfc814","0936b33ea78cca7a3b9a43659de1c608a6a1f74745a8cf64cd579fd478f7d0e9","e78c4428e63742f8ce9f6b458c2f77d342895c6186874e07f26ee1b2babc20bb","dd31048fd48693c6e5e9f9daafc488f45d3e075273b488dbe8ffe66547c32456","0065522b7c253c24f790f5fd9b92f6aa2b5281e02f59aee67df4fd83252cf4fe","33e05b1149b08b208119b49f401d3c52f1325add13e252a4ca53117118f79a90","db1c5da92fca254ca627b827ec69156af474512cbc1053219b0db6b43a6c622f","02b1b99f03bff793c1167f22dbc426ff5d0a576cfea997325f304fb3a0910cc3","6a370db16331a34a75f9a996207a90e8653cf8f0c7b8e1271192b9f024d19449","f0570fc2ac9b5a8f7e56581a7b8bfc46ebb2dcc0426369cc30d4c36cd1fb4ad7","f17ca09660b4d7e49cfe351105da8a0d0e33a2da7d053faf9a97cde219874b88","46cd1d609cb3519e2f837747f5c4d5983c440b627f6b093b35c6c8b0cde78c57","2f0fcf3fe2b5eb552d5b7d5388d0abc0937359b58c21b505b4f25d7865b15f43","0dc53e0ed5346d2f1673a98301c9fd04910220f5ec52fbc1bba9562d52d78459","1cecbfd332d84e92823294503c7fc94946f92e5e5d561bd7cd738182a45c3e0a","1389c9a0f3194c4092ac35e5111073a71edaebfca0c4c37822c5749b555c82b9","81d926659a72220ee69b2c0d127afb3b6899f845c15eaacdb161570427d4d697","153033e9c0e1e1378df25d7d993bef559363cf093eda1d88c7df3bbbac811ebd","6d8a1b531cfad78ba0bf2bb22128f540d69ca9ff7d7e7a51a82492cb8cfc1990","5f2a66a6b0d89fc5e2ae32436e6cf9f893fea8ceb0eeac4178939b22b30ec8d0","7f627e420fe7e40964ed65e76f3026728e3e4e56b17d46d74f8732309cd3b0c4","8dfb4addf7ec8a53139f961e986244b51e5b62ad285dd5ef2f2ddad79e4b76e3","975a0346ef51073e5f0628f48cfd0e5ec9eab7661aa48ef4e8bf3df60a397e02","05c62efccea581a27d72d6be673a484887ed4776b4734c222f2a3700d063305a","91f5da2550c281aa28827085442ad8927bf1e13ee7b22a135976eed0823dbe07","3b0d26c6101b5b3b94e5d070ac511f32935da7060096e1c4af77af0acf799ab5","cc9f8ea2b0e60cb1109783a68b3fe70c726521f2e9be18b766e6e6bdc1d7f746","7bffbd69d62237085abeff2337cf289d87b8ef503d2c2a550794ce0de84e1ec8","453603986384ec482e4367057c899fa72607aeeda1f5e8c11a42bea3d763b792","0da32f4b974db17f1b98b3e70daf98887fc42753bcb0efe8acc7d8f3535cedbe","67e81ace6fe5f7808efbf4ef94896ccd3a6d37383aeb9ad1aa2d8ce1a79cf73d","217a5d46bc48bf78af9ed0dc4a57f86585e905925a090c53f4ffd2c98c0e32cc","951ba9347de5ccd741f1373d7b8f87038c507ffd53e9a7cc1e17181fe778d20a","49e9fa4f7f81de98352581c03c469ca5171ce982d6d917bcd46c0c599a7fe80a","189618d658d4fdddcca2ee77755fd64a9b7fb7bd29d7d13d25bc8c8c673a0861","5d4c758c9df5c060812520bd0cb90cd56da75e74a4ad72a9697ad0ef8590718b","7694821ca40004d1d6ebdfb044d48ca9c0fbd81c94a7d0d2655272078e1db89e","16943c31b37a6b82d53f12968442dc925310e48aa9c51c9c0268e137cedf56a1","f9ba6113c421c0c974615178a8eda513dd403082e43f7b18ead8096d264890e4","404cd3ad8ab0664132968fc86c0f38594c971e33e0142173a4057c7904393d88","709b285f80272eccbb391930eda1cea625cdbaa2692288869d182d56b38446b7","3f3f70b08621799e3ed841b6eaae54bb3284558c2a26c399387948218794f713","c79040137cc6fb54071b9124700f4c13a8e453d18ca3a12c1829869f8f5b2855","e6024c2232c8e4eb94decd14f2249be85c01ffba0a7cd2488be59be170b2c88c","6f57d65e12c95626fcbb352815f8c9326e3ff4c5240354d399e397f552340fa9","298798cab06c5760f9e09acb274f22e4574d1616f5e7e64d9ef9a9a24d5ccb8c","7f3b9e3f807ef757640343e60d56918a28f438c2219aa3d96018ae0259157872","9d42e3b90864643bded9bfc940f8fa06615414376a447398cd098a712d8a75cf","7b35df5aba4bfa54ad83884a353e201266ff2c85bb4471415c16bd792117d574","00a02646cfd0fe098bd82f25fc3bc99038ee931cd9a36471a72312654e6d7321","260e88a5b6d4ee08d6065c75c3d47414334543940f72002fb9d21e8bfd9570c9","bf8889b96771e9da3b30052ffc548124a75f6a0e2bcf21e17e6fa7a4916668a2","0b0bd6e68ed04b2b3ad25e7a8c2c9fc4fb11c86acb50fab6a8fdf8f9579cb452","7db0cc4fac0f7add2551acb6a3c73948c6dc5c583ef5793811abdd49319aa0e4","c8044dce86bddc6fbc03787e97ac6507e0987164eaac5dc1abf896f368a13528","12390f3103f6561fa96dec434abf056683962548969f2de2736f38d3ad0dd9bd","c4a9493482d93ab7d12c7a57e115c20413aa871112823320dc2043a325d6562d","438f519b40e011c79460b933a21b5ce18f5fd287651607681668bc73c215a9ab","c8c3bc1cf6026ad1291fc4e16875098b9dd051f9c11ae06bbccd55e8e5d436fd","886fb29537b13c577be11ac30c79d38c645260347f15deb92b5437cd974a434c","dd0de2d2c40ea3698037db273b569472ccbbd44b34aed0cef8a06952192ba7fa","ca1495b5164d2fc89542a29fa6838876c24cda589de48c26aee32284ab1a4ccb","4ae080e8d9ae2d39e5aca702182ba9ccaf2f80ce1793104084ac1ba2519b895b","0706d0cc6f3c6280b8c069d532b19eaee9a888de7886814823899197f22998d0","2e4cf85ae80c6669f9a789dffb0f7ecc55747c9dabdb43007d5d76b4b87d8ee3","05f7fdc21577226560aec69adfd18aebb700764c19831bd98e376b1513fed1c0","0312e6a7baa729f03f8829830ef313f33a059c3a18dd7f999eedf7bc8324d942","4e6759a834a759099219a887f137231ab8c42a5151864b638ca1262c9b93796c","0ae9ef2aa36812f9214947b2cd556dcaa7c4dcd4ccffc57010be1a66662dae67","a9c644c73bb60c4ab0ecce0a9c1f35785e6c3d9f5e06e03866b5e8bf521f6a85","2f37eb16f2c33a4757a05eb893cc725ab9461a78649801e64145100248b2d04a","e210b79bef1ecd1a1c133fba3835f9f4c4c04bfcf2245fa63de4b993ef620941","6e45f45c6b53193003d13114b10b522525b89d8cd1b6b28f8039952acd3b47d5","34e324900ae13db9f8e2f012c4dca329056881bc02e234decccc18d579fa0b65","b96cc7fe4039b41ba6bbb9927ab56381d34ee127f896f79e16213a45ceffb656","4aad48a4381c9658e6a66d03a703d377ff8b1b3aae7db65a68b394818e8c8dd8","307741545a33847665dbf8130e25c2eac8759787c1d68f209fb208b9f60eefcb","4af8ab48cde79e3103beb4a0b4de30a29f2ee5342ceb8470a20a8d512dc18144","02a39882b46c16e90cf54d99fdd2b2841b602373536fc7681c14e7d78d8c1762","380ba1268958e259fc0259333840f90f0f840f56acbfadf508f7ae1ff41d7997"],"root":[[64,177]],"options":{"declaration":true,"esModuleInterop":true,"jsx":4,"module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":9},"referencedMap":[[145,1],[149,2],[155,3],[147,1],[158,4],[150,5],[160,6],[163,7],[162,8],[148,9],[156,10],[151,11],[159,1],[144,1],[146,1],[76,12],[134,13],[79,14],[119,15],[120,16],[121,17],[83,16],[81,18],[110,19],[116,20],[175,21],[89,22],[85,23],[125,24],[71,25],[165,26],[70,27],[66,13],[133,28],[135,29],[139,30],[137,31],[157,32],[129,33],[136,34],[114,35],[77,36],[130,37],[69,38],[104,39],[91,40],[68,13],[86,41],[161,42],[87,43],[90,44],[106,1],[109,45],[113,46],[111,47],[118,48],[124,49],[123,50],[117,51],[112,52],[101,53],[142,54],[105,55],[143,50],[173,56],[174,57],[172,36],[169,58],[95,59],[170,60],[141,61],[171,62],[128,63],[140,64],[132,65],[154,66],[99,67],[100,68],[96,50],[97,50],[98,69],[164,70],[167,71],[168,72],[166,1],[92,50],[102,41],[94,50]],"semanticDiagnosticsPerFile":[[65,[{"start":187,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":215,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1269,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":5410,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":5999,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[66,[{"start":1390,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":1418,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1450,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307}]],[67,[{"start":1541,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307},{"start":1571,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":1607,"length":5,"messageText":"Cannot find module 'url' or its corresponding type declarations.","category":1,"code":2307}]],[68,[{"start":1512,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":1540,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1572,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307}]],[69,[{"start":1620,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":1648,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1680,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307}]],[70,[{"start":1455,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":1483,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1515,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307}]],[73,[{"start":22,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[77,[{"start":22,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":50,"length":4,"messageText":"Cannot find module 'os' or its corresponding type declarations.","category":1,"code":2307},{"start":76,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":2108,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":4976,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":5632,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":5880,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":8270,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":8496,"length":6,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | null' is not assignable to type 'string'.","category":1,"code":2322,"next":[{"messageText":"Type 'null' is not assignable to type 'string'.","category":1,"code":2322}]}},{"start":9001,"length":6,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | null' is not assignable to type 'string'.","category":1,"code":2322,"next":[{"messageText":"Type 'null' is not assignable to type 'string'.","category":1,"code":2322}]}},{"start":9544,"length":6,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | null' is not assignable to type 'string'.","category":1,"code":2322,"next":[{"messageText":"Type 'null' is not assignable to type 'string'.","category":1,"code":2322}]}},{"start":9826,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[78,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[81,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":8907,"length":4,"messageText":"Parameter 'line' implicitly has an 'any' type.","category":1,"code":7006},{"start":8954,"length":4,"messageText":"Parameter 'line' implicitly has an 'any' type.","category":1,"code":7006},{"start":9120,"length":5,"messageText":"Parameter 'entry' implicitly has an 'any' type.","category":1,"code":7006}]],[82,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[85,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[86,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1097,"length":3,"messageText":"Parameter 'err' implicitly has an 'any' type.","category":1,"code":7006}]],[87,[{"start":21,"length":16,"messageText":"Cannot find module 'better-sqlite3' or its corresponding type declarations.","category":1,"code":2307},{"start":54,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":77,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":104,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307},{"start":50487,"length":5,"messageText":"Parameter 'entry' implicitly has an 'any' type.","category":1,"code":7006},{"start":58089,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":59004,"length":3,"messageText":"Parameter 'sum' implicitly has an 'any' type.","category":1,"code":7006},{"start":59009,"length":4,"messageText":"Parameter 'file' implicitly has an 'any' type.","category":1,"code":7006}]],[89,[{"start":24,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307},{"start":54,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":82,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[91,[{"start":85,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":113,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":3232,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006}]],[93,[{"start":146,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":174,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":3525,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":3595,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":3752,"length":1,"messageText":"Parameter 'a' implicitly has an 'any' type.","category":1,"code":7006},{"start":3755,"length":1,"messageText":"Parameter 'b' implicitly has an 'any' type.","category":1,"code":7006},{"start":4560,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":4628,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":4760,"length":1,"messageText":"Parameter 'a' implicitly has an 'any' type.","category":1,"code":7006},{"start":4763,"length":1,"messageText":"Parameter 'b' implicitly has an 'any' type.","category":1,"code":7006},{"start":4830,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":6033,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":6205,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":30389,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":32682,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[98,[{"start":21,"length":16,"messageText":"Cannot find module 'better-sqlite3' or its corresponding type declarations.","category":1,"code":2307},{"start":59,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":87,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[99,[{"start":1249,"length":6,"messageText":"Cannot find namespace 'NodeJS'.","category":1,"code":2503}]],[101,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[102,[{"start":22,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":50,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307}]],[104,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":2568,"length":6,"messageText":"Cannot find namespace 'NodeJS'.","category":1,"code":2503}]],[106,[{"start":649,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":677,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[110,[{"start":219,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":247,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":12311,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":14512,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[113,[{"start":791,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":819,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[114,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[115,[{"start":27,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307}]],[116,[{"start":258,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307}]],[117,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[118,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":82,"length":10,"messageText":"Cannot find module 'readline' or its corresponding type declarations.","category":1,"code":2307}]],[119,[{"start":21,"length":16,"messageText":"Cannot find module 'better-sqlite3' or its corresponding type declarations.","category":1,"code":2307},{"start":54,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":77,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[120,[{"start":27,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307}]],[124,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[125,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":86,"length":5,"messageText":"Cannot find module 'url' or its corresponding type declarations.","category":1,"code":2307}]],[128,[{"start":903,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":931,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[130,[{"start":796,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":824,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[134,[{"start":828,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":856,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[136,[{"start":1362,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307},{"start":1392,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":1420,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1449,"length":5,"messageText":"Cannot find module 'url' or its corresponding type declarations.","category":1,"code":2307}]],[138,[{"start":1312,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1340,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":7000,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":7047,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":7094,"length":1,"messageText":"Parameter 'a' implicitly has an 'any' type.","category":1,"code":7006},{"start":7097,"length":1,"messageText":"Parameter 'b' implicitly has an 'any' type.","category":1,"code":7006}]],[139,[{"start":1195,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":1223,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1255,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307}]],[140,[{"start":1258,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":1286,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1321,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307}]],[141,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":83,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307},{"start":1192,"length":6,"messageText":"Cannot find namespace 'NodeJS'.","category":1,"code":2503},{"start":1237,"length":6,"messageText":"Cannot find namespace 'NodeJS'.","category":1,"code":2503}]],[142,[{"start":133,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307}]],[143,[{"start":152,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":180,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":6779,"length":4,"messageText":"Parameter 'line' implicitly has an 'any' type.","category":1,"code":7006},{"start":6837,"length":4,"messageText":"Parameter 'line' implicitly has an 'any' type.","category":1,"code":7006},{"start":6979,"length":4,"messageText":"Parameter 'line' implicitly has an 'any' type.","category":1,"code":7006},{"start":7120,"length":4,"messageText":"Parameter 'line' implicitly has an 'any' type.","category":1,"code":7006}]],[144,[{"start":299,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":1285,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[145,[{"start":25,"length":15,"messageText":"Cannot find module 'child_process' or its corresponding type declarations.","category":1,"code":2307},{"start":62,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":90,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1081,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":1109,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":1133,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":1645,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":2174,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[146,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":320,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[147,[{"start":567,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[148,[{"start":3597,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[149,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":458,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[150,[{"start":173,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":201,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":236,"length":13,"messageText":"Cannot find module 'node:crypto' or its corresponding type declarations.","category":1,"code":2307},{"start":4506,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":5627,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":5695,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":6058,"length":1,"messageText":"Parameter 'a' implicitly has an 'any' type.","category":1,"code":7006},{"start":6061,"length":1,"messageText":"Parameter 'b' implicitly has an 'any' type.","category":1,"code":7006},{"start":6239,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":6242,"length":1,"messageText":"Parameter 'i' implicitly has an 'any' type.","category":1,"code":7006},{"start":10382,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":10450,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":10598,"length":1,"messageText":"Parameter 'a' implicitly has an 'any' type.","category":1,"code":7006},{"start":10601,"length":1,"messageText":"Parameter 'b' implicitly has an 'any' type.","category":1,"code":7006}]],[151,[{"start":577,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[154,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":16225,"length":4,"messageText":"Parameter 'line' implicitly has an 'any' type.","category":1,"code":7006},{"start":16423,"length":5,"messageText":"Parameter 'entry' implicitly has an 'any' type.","category":1,"code":7006}]],[155,[{"start":6593,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[156,[{"start":291,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[157,[{"start":1608,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":1636,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1668,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307}]],[158,[{"start":497,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[159,[{"start":420,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[160,[{"start":1097,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":3669,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[161,[{"start":1423,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":1451,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1483,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307},{"start":1523,"length":5,"messageText":"Cannot find module 'url' or its corresponding type declarations.","category":1,"code":2307},{"start":11046,"length":15,"messageText":"Cannot find module 'child_process' or its corresponding type declarations.","category":1,"code":2307},{"start":11420,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":11890,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":11969,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":12304,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":12497,"length":4,"messageText":"Parameter 'code' implicitly has an 'any' type.","category":1,"code":7006},{"start":12588,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":14217,"length":3,"messageText":"Parameter 'err' implicitly has an 'any' type.","category":1,"code":7006}]],[162,[{"start":1012,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":1040,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":1082,"length":15,"messageText":"Cannot find module 'child_process' or its corresponding type declarations.","category":1,"code":2307},{"start":1129,"length":5,"messageText":"Cannot find module 'url' or its corresponding type declarations.","category":1,"code":2307},{"start":4646,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":9646,"length":1,"messageText":"Parameter 'f' implicitly has an 'any' type.","category":1,"code":7006},{"start":14569,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":15015,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":15110,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":15506,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":15739,"length":4,"messageText":"Parameter 'code' implicitly has an 'any' type.","category":1,"code":7006},{"start":15854,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":17440,"length":3,"messageText":"Parameter 'err' implicitly has an 'any' type.","category":1,"code":7006},{"start":23723,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'string | undefined' is not assignable to parameter of type 'string'.","category":1,"code":2345,"next":[{"messageText":"Type 'undefined' is not assignable to type 'string'.","category":1,"code":2322}]}},{"start":31354,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[163,[{"start":3831,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[165,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[166,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[168,[{"start":102,"length":19,"messageText":"Cannot find module '@sinclair/typebox' or its corresponding type declarations.","category":1,"code":2307},{"start":150,"length":13,"messageText":"Cannot find module 'node:crypto' or its corresponding type declarations.","category":1,"code":2307},{"start":185,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":213,"length":11,"messageText":"Cannot find module 'node:path' or its corresponding type declarations.","category":1,"code":2307}]],[171,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":21771,"length":4,"messageText":"Parameter 'line' implicitly has an 'any' type.","category":1,"code":7006},{"start":21937,"length":5,"messageText":"Parameter 'entry' implicitly has an 'any' type.","category":1,"code":7006},{"start":26393,"length":4,"messageText":"Parameter 'name' implicitly has an 'any' type.","category":1,"code":7006},{"start":26433,"length":4,"messageText":"Parameter 'name' implicitly has an 'any' type.","category":1,"code":7006}]],[172,[{"start":21,"length":16,"messageText":"Cannot find module 'better-sqlite3' or its corresponding type declarations.","category":1,"code":2307},{"start":54,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":77,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":100,"length":4,"messageText":"Cannot find module 'os' or its corresponding type declarations.","category":1,"code":2307}]],[173,[{"start":15,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":38,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307},{"start":99,"length":11,"messageText":"Cannot find module 'node:http' or its corresponding type declarations.","category":1,"code":2307},{"start":1726,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":1792,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":1825,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":1903,"length":6,"messageText":"Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"start":21307,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[174,[{"start":644,"length":8,"messageText":"Cannot find module 'crypto' or its corresponding type declarations.","category":1,"code":2307}]],[175,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]],[176,[{"start":172,"length":12,"messageText":"Cannot find module 'micromatch' or its corresponding type declarations.","category":1,"code":2307}]],[177,[{"start":20,"length":4,"messageText":"Cannot find module 'fs' or its corresponding type declarations.","category":1,"code":2307},{"start":48,"length":6,"messageText":"Cannot find module 'path' or its corresponding type declarations.","category":1,"code":2307}]]],"affectedFilesPendingEmit":[145,149,155,147,158,150,160,163,162,148,156,151,159,144,146,74,75,76,127,108,134,79,78,119,120,121,83,82,81,110,116,175,89,88,67,93,85,125,71,165,70,66,133,135,131,139,137,157,138,129,136,114,77,73,130,103,69,104,91,68,86,122,161,87,90,107,106,109,113,111,118,124,123,117,112,101,142,105,143,173,72,174,172,169,95,170,141,171,128,140,132,152,154,99,100,96,97,98,164,167,168,166,92,80,84,153,65,176,115,102,126,177,94],"version":"5.9.3"}
|