@devflow-tools/database 0.17.3 → 0.17.4

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/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.17.4](https://github.com/shilongfeicool/dev-flow/compare/v0.17.3...v0.17.4) (2026-08-04)
7
+
8
+
9
+ ### Features
10
+
11
+ * **semantic:** persist resolution revisions ([cffa6ca](https://github.com/shilongfeicool/dev-flow/commit/cffa6ca24fb08b54bdd8e516167895e660c6eacc))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [0.17.3](https://github.com/shilongfeicool/dev-flow/compare/v0.17.2...v0.17.3) (2026-08-03)
7
18
 
8
19
 
@@ -0,0 +1,87 @@
1
+ import { mkdtempSync, rmSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
+ import { DevFlowDatabase } from '../src/database';
6
+ import type { SemanticResolutionRecord } from '../src/semantic-resolution';
7
+
8
+ describe('DevFlowDatabase semantic resolution persistence', () => {
9
+ let directory: string;
10
+ let database: DevFlowDatabase;
11
+
12
+ beforeEach(() => {
13
+ directory = mkdtempSync(join(tmpdir(), 'devflow-semantic-resolution-'));
14
+ database = new DevFlowDatabase(directory);
15
+ });
16
+
17
+ afterEach(() => {
18
+ database.close();
19
+ rmSync(directory, { recursive: true, force: true });
20
+ });
21
+
22
+ it('appends, lists, and returns the latest immutable revision', () => {
23
+ const provisional = resolution();
24
+ const resolved = resolution({
25
+ frameHash: 'b'.repeat(64),
26
+ artifactHash: 'artifact:2',
27
+ artifactRevision: 2,
28
+ supersedesFrameHash: provisional.frameHash,
29
+ state: 'resolved',
30
+ frame: { frameHash: 'b'.repeat(64), state: 'resolved' },
31
+ createdAt: 2,
32
+ });
33
+ expect(database.appendSemanticResolution(provisional)).toBe(true);
34
+ expect(database.appendSemanticResolution(resolved)).toBe(true);
35
+ expect(database.listSemanticResolutions('/project', 'session:1', 'turn:1'))
36
+ .toEqual([provisional, resolved]);
37
+ expect(database.getLatestSemanticResolution('/project', 'session:1', 'turn:1'))
38
+ .toEqual(resolved);
39
+ });
40
+
41
+ it('makes identical replay idempotent and rejects hash conflicts', () => {
42
+ const record = resolution();
43
+ expect(database.appendSemanticResolution(record)).toBe(true);
44
+ expect(database.appendSemanticResolution(record)).toBe(false);
45
+ expect(() => database.appendSemanticResolution({
46
+ ...record,
47
+ durationMs: 9,
48
+ })).toThrow(`SEMANTIC_RESOLUTION_HASH_CONFLICT:${record.frameHash}`);
49
+ });
50
+
51
+ it('rejects another frame at the same artifact revision', () => {
52
+ const record = resolution();
53
+ database.appendSemanticResolution(record);
54
+ expect(() => database.appendSemanticResolution({
55
+ ...record,
56
+ frameHash: 'c'.repeat(64),
57
+ frame: { frameHash: 'c'.repeat(64), state: 'provisional' },
58
+ })).toThrow('SEMANTIC_RESOLUTION_REVISION_CONFLICT:turn:1:1');
59
+ });
60
+ });
61
+
62
+ function resolution(overrides: Partial<SemanticResolutionRecord> = {}): SemanticResolutionRecord {
63
+ const frameHash = overrides.frameHash ?? 'a'.repeat(64);
64
+ return {
65
+ frameHash,
66
+ projectRoot: '/project',
67
+ projectId: 'project:1',
68
+ hostId: 'claude-code',
69
+ sessionId: 'session:1',
70
+ turnId: 'turn:1',
71
+ requestId: 'request:1',
72
+ sourceHash: 'source:1',
73
+ artifactHash: 'artifact:1',
74
+ artifactRevision: 1,
75
+ state: 'provisional',
76
+ generatedBy: 'deterministic',
77
+ routeCatalogVersion: 'catalog.v1',
78
+ thresholdVersion: 'threshold.v1',
79
+ route: { status: 'unavailable' },
80
+ sampling: { attempted: false, status: 'not_needed' },
81
+ conflicts: [],
82
+ frame: { frameHash, state: 'provisional' },
83
+ durationMs: 0,
84
+ createdAt: 1,
85
+ ...overrides,
86
+ };
87
+ }
@@ -7,6 +7,7 @@ import { type CreateWorkflowWorkerInput, type EnqueueWorkflowMergeInput, type Tr
7
7
  import type { RetrievalLedgerEventRecord } from './retrieval-ledger';
8
8
  import { type ChannelQueryPlanRecord, type TaskIntentArtifactRecord, type TerminalTransitionRecord, type ToolNameResolutionRecord, type TranscriptCheckpointRecord } from './task-semantic-control';
9
9
  import { type TaskRuntimeEventRecord, type TaskRuntimeSnapshotRecord } from './task-runtime';
10
+ import { type SemanticResolutionRecord } from './semantic-resolution';
10
11
  export interface BenchmarkReportRecord {
11
12
  runId: string;
12
13
  suiteId: string;
@@ -467,6 +468,10 @@ export declare class DevFlowDatabase {
467
468
  sessionId: string;
468
469
  sourceHash: string;
469
470
  }): TaskIntentArtifactRecord | null;
471
+ appendSemanticResolution(record: SemanticResolutionRecord): boolean;
472
+ getSemanticResolution(frameHash: string): SemanticResolutionRecord | null;
473
+ getLatestSemanticResolution(projectRoot: string, sessionId: string, turnId: string): SemanticResolutionRecord | null;
474
+ listSemanticResolutions(projectRoot: string, sessionId: string, turnId: string): SemanticResolutionRecord[];
470
475
  listLatestTaskIntentArtifacts(projectRoot: string, sessionId: string): TaskIntentArtifactRecord[];
471
476
  appendChannelQueryPlan(record: ChannelQueryPlanRecord): ChannelQueryPlanRecord;
472
477
  getChannelQueryPlan(planHash: string): ChannelQueryPlanRecord | null;
package/dist/database.js CHANGED
@@ -16,6 +16,7 @@ const learning_candidates_1 = require("./learning-candidates");
16
16
  const workflow_workers_1 = require("./workflow-workers");
17
17
  const task_semantic_control_1 = require("./task-semantic-control");
18
18
  const task_runtime_1 = require("./task-runtime");
19
+ const semantic_resolution_1 = require("./semantic-resolution");
19
20
  const CONTEXT_REQUIRED_SKILLS = new Set([
20
21
  'react', 'vue', 'nest', 'nextjs', 'graphql', 'typescript',
21
22
  ]);
@@ -399,6 +400,35 @@ class DevFlowDatabase {
399
400
  CREATE UNIQUE INDEX IF NOT EXISTS idx_task_intent_source
400
401
  ON devflow_task_intent_artifacts(project_root, session_id, source_hash, version);
401
402
 
403
+ CREATE TABLE IF NOT EXISTS devflow_semantic_resolutions (
404
+ frame_hash TEXT PRIMARY KEY,
405
+ project_root TEXT NOT NULL,
406
+ project_id TEXT NOT NULL,
407
+ host_id TEXT NOT NULL,
408
+ session_id TEXT NOT NULL,
409
+ turn_id TEXT NOT NULL,
410
+ request_id TEXT NOT NULL,
411
+ source_hash TEXT NOT NULL,
412
+ artifact_hash TEXT NOT NULL,
413
+ artifact_revision INTEGER NOT NULL CHECK(artifact_revision > 0),
414
+ supersedes_frame_hash TEXT,
415
+ state TEXT NOT NULL CHECK(state IN ('provisional', 'resolved', 'abstained', 'unavailable')),
416
+ generated_by TEXT NOT NULL CHECK(generated_by IN ('deterministic', 'embedding_router', 'host_semantic', 'hybrid')),
417
+ model_id TEXT,
418
+ model_revision TEXT,
419
+ route_catalog_version TEXT NOT NULL,
420
+ threshold_version TEXT NOT NULL,
421
+ route_json TEXT NOT NULL,
422
+ sampling_json TEXT NOT NULL,
423
+ conflicts_json TEXT NOT NULL,
424
+ frame_json TEXT NOT NULL,
425
+ duration_ms INTEGER NOT NULL CHECK(duration_ms >= 0),
426
+ created_at INTEGER NOT NULL,
427
+ UNIQUE(project_root, session_id, turn_id, artifact_revision)
428
+ );
429
+ CREATE INDEX IF NOT EXISTS idx_semantic_resolution_latest
430
+ ON devflow_semantic_resolutions(project_root, session_id, turn_id, artifact_revision DESC);
431
+
402
432
  CREATE TABLE IF NOT EXISTS devflow_channel_query_plans (
403
433
  plan_hash TEXT PRIMARY KEY,
404
434
  source_intent_hash TEXT NOT NULL,
@@ -3356,6 +3386,77 @@ class DevFlowDatabase {
3356
3386
  `).get(input.projectRoot, input.sessionId, input.sourceHash);
3357
3387
  return row ? (0, task_semantic_control_1.mapTaskIntentArtifactRow)(row) : null;
3358
3388
  }
3389
+ appendSemanticResolution(record) {
3390
+ (0, semantic_resolution_1.assertSemanticResolutionRecord)(record);
3391
+ const existing = this.getSemanticResolution(record.frameHash);
3392
+ if (existing) {
3393
+ if ((0, semantic_resolution_1.stableSemanticResolutionJson)(existing) !== (0, semantic_resolution_1.stableSemanticResolutionJson)(record)) {
3394
+ throw new Error(`SEMANTIC_RESOLUTION_HASH_CONFLICT:${record.frameHash}`);
3395
+ }
3396
+ return false;
3397
+ }
3398
+ this.db.exec('BEGIN IMMEDIATE');
3399
+ try {
3400
+ const conflicting = this.db.prepare(`
3401
+ SELECT frame_hash FROM devflow_semantic_resolutions
3402
+ WHERE project_root = ? AND session_id = ? AND turn_id = ? AND artifact_revision = ?
3403
+ `).get(record.projectRoot, record.sessionId, record.turnId, record.artifactRevision);
3404
+ if (conflicting) {
3405
+ throw new Error(`SEMANTIC_RESOLUTION_REVISION_CONFLICT:${record.turnId}:${record.artifactRevision}`);
3406
+ }
3407
+ if (record.supersedesFrameHash) {
3408
+ const superseded = this.getSemanticResolution(record.supersedesFrameHash);
3409
+ if (!superseded) {
3410
+ throw new Error(`SEMANTIC_RESOLUTION_SUPERSEDED_NOT_FOUND:${record.supersedesFrameHash}`);
3411
+ }
3412
+ if (superseded.projectRoot !== record.projectRoot
3413
+ || superseded.sessionId !== record.sessionId
3414
+ || superseded.turnId !== record.turnId
3415
+ || superseded.artifactRevision >= record.artifactRevision) {
3416
+ throw new Error('SEMANTIC_RESOLUTION_SUPERSEDES_INVALID');
3417
+ }
3418
+ }
3419
+ this.db.prepare(`
3420
+ INSERT INTO devflow_semantic_resolutions (
3421
+ frame_hash, project_root, project_id, host_id, session_id, turn_id, request_id,
3422
+ source_hash, artifact_hash, artifact_revision, supersedes_frame_hash, state,
3423
+ generated_by, model_id, model_revision, route_catalog_version, threshold_version,
3424
+ route_json, sampling_json, conflicts_json, frame_json, duration_ms, created_at
3425
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
3426
+ `).run(record.frameHash, record.projectRoot, record.projectId, record.hostId, record.sessionId, record.turnId, record.requestId, record.sourceHash, record.artifactHash, record.artifactRevision, record.supersedesFrameHash ?? null, record.state, record.generatedBy, record.modelId ?? null, record.modelRevision ?? null, record.routeCatalogVersion, record.thresholdVersion, (0, semantic_resolution_1.stableSemanticResolutionJson)(record.route), (0, semantic_resolution_1.stableSemanticResolutionJson)(record.sampling), (0, semantic_resolution_1.stableSemanticResolutionJson)(record.conflicts), (0, semantic_resolution_1.stableSemanticResolutionJson)(record.frame), record.durationMs, record.createdAt);
3427
+ this.db.exec('COMMIT');
3428
+ return true;
3429
+ }
3430
+ catch (error) {
3431
+ try {
3432
+ this.db.exec('ROLLBACK');
3433
+ }
3434
+ catch { }
3435
+ throw error;
3436
+ }
3437
+ }
3438
+ getSemanticResolution(frameHash) {
3439
+ const row = this.db.prepare(`
3440
+ SELECT * FROM devflow_semantic_resolutions WHERE frame_hash = ?
3441
+ `).get(frameHash);
3442
+ return row ? (0, semantic_resolution_1.mapSemanticResolutionRow)(row) : null;
3443
+ }
3444
+ getLatestSemanticResolution(projectRoot, sessionId, turnId) {
3445
+ const row = this.db.prepare(`
3446
+ SELECT * FROM devflow_semantic_resolutions
3447
+ WHERE project_root = ? AND session_id = ? AND turn_id = ?
3448
+ ORDER BY artifact_revision DESC, created_at DESC LIMIT 1
3449
+ `).get(projectRoot, sessionId, turnId);
3450
+ return row ? (0, semantic_resolution_1.mapSemanticResolutionRow)(row) : null;
3451
+ }
3452
+ listSemanticResolutions(projectRoot, sessionId, turnId) {
3453
+ return this.db.prepare(`
3454
+ SELECT * FROM devflow_semantic_resolutions
3455
+ WHERE project_root = ? AND session_id = ? AND turn_id = ?
3456
+ ORDER BY artifact_revision ASC, created_at ASC
3457
+ `).all(projectRoot, sessionId, turnId)
3458
+ .map(semantic_resolution_1.mapSemanticResolutionRow);
3459
+ }
3359
3460
  listLatestTaskIntentArtifacts(projectRoot, sessionId) {
3360
3461
  return this.db.prepare(`
3361
3462
  SELECT artifact.* FROM devflow_task_intent_artifacts artifact
package/dist/index.d.ts CHANGED
@@ -16,3 +16,5 @@ export type { CreateWorkflowWorkerInput, EnqueueWorkflowMergeInput, TransitionWo
16
16
  export { mapLearningCandidateRow, mapLearningEvidenceRow, mapLearningVersionRow, stableLearningJson, } from './learning-candidates';
17
17
  export type { AddLearningCandidateEvidenceInput, LearningCandidateEvidenceRecord, LearningCandidateKind, LearningCandidateRecord, LearningCandidateState, LearningCandidateVersionRecord, LearningEvidencePolarity, LearningOutcomeState, TransitionLearningCandidateInput, UpsertLearningCandidateInput, } from './learning-candidates';
18
18
  export type { SessionObligationKind, SessionObligationRecord, SessionObligationState, } from './obligation-ledger';
19
+ export { assertSemanticResolutionRecord, mapSemanticResolutionRow, stableSemanticResolutionJson, } from './semantic-resolution';
20
+ export type { PersistedSemanticGeneratedBy, PersistedSemanticResolutionState, SemanticResolutionRecord, } from './semantic-resolution';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stableLearningJson = exports.mapLearningVersionRow = exports.mapLearningEvidenceRow = exports.mapLearningCandidateRow = exports.mapWorkflowWorkerRow = exports.mapWorkflowWorkerEventRow = exports.mapWorkflowMergeRow = exports.TERMINAL_WORKFLOW_WORKER_STATES = exports.LEGAL_WORKFLOW_WORKER_TRANSITIONS = exports.stableTaskRuntimeJson = exports.stableTaskRuntimeHash = exports.mapTaskRuntimeSnapshotRow = exports.mapTaskRuntimeEventRow = exports.stableSemanticJson = exports.mapTranscriptCheckpointRow = exports.mapToolNameResolutionRow = exports.mapTerminalTransitionRow = exports.mapTaskIntentArtifactRow = exports.mapChannelQueryPlanRow = exports.assertTaskIdentity = exports.normalizeTurnId = exports.mapSessionObligationRow = exports.isRetrievalSessionState = exports.RETRIEVAL_MAX_CYCLES = exports.serializeHostActionReport = exports.mapHostActionRow = exports.isHostActionState = exports.hostActionReportsEqual = exports.openGlobalDevFlowReadOnlyDatabase = exports.openGlobalDevFlowDatabase = exports.getGlobalDevFlowDbPath = exports.DevFlowDatabase = void 0;
3
+ exports.stableSemanticResolutionJson = exports.mapSemanticResolutionRow = exports.assertSemanticResolutionRecord = exports.stableLearningJson = exports.mapLearningVersionRow = exports.mapLearningEvidenceRow = exports.mapLearningCandidateRow = exports.mapWorkflowWorkerRow = exports.mapWorkflowWorkerEventRow = exports.mapWorkflowMergeRow = exports.TERMINAL_WORKFLOW_WORKER_STATES = exports.LEGAL_WORKFLOW_WORKER_TRANSITIONS = exports.stableTaskRuntimeJson = exports.stableTaskRuntimeHash = exports.mapTaskRuntimeSnapshotRow = exports.mapTaskRuntimeEventRow = exports.stableSemanticJson = exports.mapTranscriptCheckpointRow = exports.mapToolNameResolutionRow = exports.mapTerminalTransitionRow = exports.mapTaskIntentArtifactRow = exports.mapChannelQueryPlanRow = exports.assertTaskIdentity = exports.normalizeTurnId = exports.mapSessionObligationRow = exports.isRetrievalSessionState = exports.RETRIEVAL_MAX_CYCLES = exports.serializeHostActionReport = exports.mapHostActionRow = exports.isHostActionState = exports.hostActionReportsEqual = exports.openGlobalDevFlowReadOnlyDatabase = exports.openGlobalDevFlowDatabase = exports.getGlobalDevFlowDbPath = exports.DevFlowDatabase = void 0;
4
4
  var database_1 = require("./database");
5
5
  Object.defineProperty(exports, "DevFlowDatabase", { enumerable: true, get: function () { return database_1.DevFlowDatabase; } });
6
6
  Object.defineProperty(exports, "getGlobalDevFlowDbPath", { enumerable: true, get: function () { return database_1.getGlobalDevFlowDbPath; } });
@@ -41,3 +41,7 @@ Object.defineProperty(exports, "mapLearningCandidateRow", { enumerable: true, ge
41
41
  Object.defineProperty(exports, "mapLearningEvidenceRow", { enumerable: true, get: function () { return learning_candidates_1.mapLearningEvidenceRow; } });
42
42
  Object.defineProperty(exports, "mapLearningVersionRow", { enumerable: true, get: function () { return learning_candidates_1.mapLearningVersionRow; } });
43
43
  Object.defineProperty(exports, "stableLearningJson", { enumerable: true, get: function () { return learning_candidates_1.stableLearningJson; } });
44
+ var semantic_resolution_1 = require("./semantic-resolution");
45
+ Object.defineProperty(exports, "assertSemanticResolutionRecord", { enumerable: true, get: function () { return semantic_resolution_1.assertSemanticResolutionRecord; } });
46
+ Object.defineProperty(exports, "mapSemanticResolutionRow", { enumerable: true, get: function () { return semantic_resolution_1.mapSemanticResolutionRow; } });
47
+ Object.defineProperty(exports, "stableSemanticResolutionJson", { enumerable: true, get: function () { return semantic_resolution_1.stableSemanticResolutionJson; } });
@@ -0,0 +1,30 @@
1
+ export type PersistedSemanticResolutionState = 'provisional' | 'resolved' | 'abstained' | 'unavailable';
2
+ export type PersistedSemanticGeneratedBy = 'deterministic' | 'embedding_router' | 'host_semantic' | 'hybrid';
3
+ export interface SemanticResolutionRecord {
4
+ frameHash: string;
5
+ projectRoot: string;
6
+ projectId: string;
7
+ hostId: string;
8
+ sessionId: string;
9
+ turnId: string;
10
+ requestId: string;
11
+ sourceHash: string;
12
+ artifactHash: string;
13
+ artifactRevision: number;
14
+ supersedesFrameHash?: string;
15
+ state: PersistedSemanticResolutionState;
16
+ generatedBy: PersistedSemanticGeneratedBy;
17
+ modelId?: string;
18
+ modelRevision?: string;
19
+ routeCatalogVersion: string;
20
+ thresholdVersion: string;
21
+ route: Record<string, unknown>;
22
+ sampling: Record<string, unknown>;
23
+ conflicts: Array<Record<string, unknown>>;
24
+ frame: Record<string, unknown>;
25
+ durationMs: number;
26
+ createdAt: number;
27
+ }
28
+ export declare function assertSemanticResolutionRecord(record: SemanticResolutionRecord): void;
29
+ export declare function stableSemanticResolutionJson(value: unknown): string;
30
+ export declare function mapSemanticResolutionRow(row: Record<string, unknown>): SemanticResolutionRecord;
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertSemanticResolutionRecord = assertSemanticResolutionRecord;
4
+ exports.stableSemanticResolutionJson = stableSemanticResolutionJson;
5
+ exports.mapSemanticResolutionRow = mapSemanticResolutionRow;
6
+ const STATES = new Set([
7
+ 'provisional', 'resolved', 'abstained', 'unavailable',
8
+ ]);
9
+ const GENERATORS = new Set([
10
+ 'deterministic', 'embedding_router', 'host_semantic', 'hybrid',
11
+ ]);
12
+ function assertSemanticResolutionRecord(record) {
13
+ for (const [field, value] of Object.entries({
14
+ frameHash: record.frameHash,
15
+ projectRoot: record.projectRoot,
16
+ projectId: record.projectId,
17
+ hostId: record.hostId,
18
+ sessionId: record.sessionId,
19
+ turnId: record.turnId,
20
+ requestId: record.requestId,
21
+ sourceHash: record.sourceHash,
22
+ artifactHash: record.artifactHash,
23
+ routeCatalogVersion: record.routeCatalogVersion,
24
+ thresholdVersion: record.thresholdVersion,
25
+ })) {
26
+ if (typeof value !== 'string' || value.length === 0) {
27
+ throw new Error(`SEMANTIC_RESOLUTION_INVALID:${field}`);
28
+ }
29
+ }
30
+ if (!Number.isSafeInteger(record.artifactRevision) || record.artifactRevision < 1) {
31
+ throw new Error('SEMANTIC_RESOLUTION_INVALID:artifactRevision');
32
+ }
33
+ if (!Number.isSafeInteger(record.durationMs) || record.durationMs < 0
34
+ || !Number.isSafeInteger(record.createdAt) || record.createdAt < 0) {
35
+ throw new Error('SEMANTIC_RESOLUTION_INVALID:timing');
36
+ }
37
+ if (!STATES.has(record.state) || !GENERATORS.has(record.generatedBy)) {
38
+ throw new Error('SEMANTIC_RESOLUTION_INVALID:enum');
39
+ }
40
+ if (record.frame.frameHash !== record.frameHash) {
41
+ throw new Error('SEMANTIC_RESOLUTION_FRAME_HASH_MISMATCH');
42
+ }
43
+ stableSemanticResolutionJson(record.route);
44
+ stableSemanticResolutionJson(record.sampling);
45
+ stableSemanticResolutionJson(record.conflicts);
46
+ stableSemanticResolutionJson(record.frame);
47
+ }
48
+ function stableSemanticResolutionJson(value) {
49
+ return JSON.stringify(canonicalize(value));
50
+ }
51
+ function mapSemanticResolutionRow(row) {
52
+ const state = requiredString(row.state, 'state');
53
+ const generatedBy = requiredString(row.generated_by, 'generated_by');
54
+ if (!STATES.has(state) || !GENERATORS.has(generatedBy)) {
55
+ throw new Error('SEMANTIC_RESOLUTION_ROW_INVALID:enum');
56
+ }
57
+ const result = {
58
+ frameHash: requiredString(row.frame_hash, 'frame_hash'),
59
+ projectRoot: requiredString(row.project_root, 'project_root'),
60
+ projectId: requiredString(row.project_id, 'project_id'),
61
+ hostId: requiredString(row.host_id, 'host_id'),
62
+ sessionId: requiredString(row.session_id, 'session_id'),
63
+ turnId: requiredString(row.turn_id, 'turn_id'),
64
+ requestId: requiredString(row.request_id, 'request_id'),
65
+ sourceHash: requiredString(row.source_hash, 'source_hash'),
66
+ artifactHash: requiredString(row.artifact_hash, 'artifact_hash'),
67
+ artifactRevision: requiredPositiveInteger(row.artifact_revision, 'artifact_revision'),
68
+ ...(optionalString(row.supersedes_frame_hash)
69
+ ? { supersedesFrameHash: optionalString(row.supersedes_frame_hash) }
70
+ : {}),
71
+ state,
72
+ generatedBy,
73
+ ...(optionalString(row.model_id) ? { modelId: optionalString(row.model_id) } : {}),
74
+ ...(optionalString(row.model_revision) ? { modelRevision: optionalString(row.model_revision) } : {}),
75
+ routeCatalogVersion: requiredString(row.route_catalog_version, 'route_catalog_version'),
76
+ thresholdVersion: requiredString(row.threshold_version, 'threshold_version'),
77
+ route: parseObject(row.route_json, 'route_json'),
78
+ sampling: parseObject(row.sampling_json, 'sampling_json'),
79
+ conflicts: parseObjectArray(row.conflicts_json, 'conflicts_json'),
80
+ frame: parseObject(row.frame_json, 'frame_json'),
81
+ durationMs: requiredNonNegativeInteger(row.duration_ms, 'duration_ms'),
82
+ createdAt: requiredNonNegativeInteger(row.created_at, 'created_at'),
83
+ };
84
+ assertSemanticResolutionRecord(result);
85
+ return result;
86
+ }
87
+ function canonicalize(value) {
88
+ if (value === undefined)
89
+ return undefined;
90
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
91
+ return value;
92
+ if (typeof value === 'number') {
93
+ if (!Number.isFinite(value) || Object.is(value, -0))
94
+ throw new Error('SEMANTIC_RESOLUTION_JSON_INVALID');
95
+ return value;
96
+ }
97
+ if (Array.isArray(value))
98
+ return value.map(item => {
99
+ if (item === undefined)
100
+ throw new Error('SEMANTIC_RESOLUTION_JSON_INVALID');
101
+ return canonicalize(item);
102
+ });
103
+ if (!value || typeof value !== 'object' || Object.getPrototypeOf(value) !== Object.prototype) {
104
+ throw new Error('SEMANTIC_RESOLUTION_JSON_INVALID');
105
+ }
106
+ const record = value;
107
+ return Object.fromEntries(Object.keys(record).sort()
108
+ .filter(key => record[key] !== undefined)
109
+ .map(key => [key, canonicalize(record[key])]));
110
+ }
111
+ function parseObject(value, field) {
112
+ const parsed = parseJson(value, field);
113
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
114
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
115
+ }
116
+ return parsed;
117
+ }
118
+ function parseObjectArray(value, field) {
119
+ const parsed = parseJson(value, field);
120
+ if (!Array.isArray(parsed) || parsed.some(item => !item || typeof item !== 'object' || Array.isArray(item))) {
121
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
122
+ }
123
+ return parsed;
124
+ }
125
+ function parseJson(value, field) {
126
+ if (typeof value !== 'string')
127
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
128
+ try {
129
+ return JSON.parse(value);
130
+ }
131
+ catch {
132
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
133
+ }
134
+ }
135
+ function requiredString(value, field) {
136
+ if (typeof value !== 'string' || value.length === 0) {
137
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
138
+ }
139
+ return value;
140
+ }
141
+ function optionalString(value) {
142
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
143
+ }
144
+ function requiredPositiveInteger(value, field) {
145
+ const result = requiredNonNegativeInteger(value, field);
146
+ if (result < 1)
147
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
148
+ return result;
149
+ }
150
+ function requiredNonNegativeInteger(value, field) {
151
+ const result = Number(value);
152
+ if (!Number.isSafeInteger(result) || result < 0) {
153
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
154
+ }
155
+ return result;
156
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devflow-tools/database",
3
- "version": "0.17.3",
3
+ "version": "0.17.4",
4
4
  "description": "DevFlow SQLite database package",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,5 +13,5 @@
13
13
  "typescript": "^5.5.0",
14
14
  "vitest": "^2.0.0"
15
15
  },
16
- "gitHead": "964af33767bf232606e63d973b3a29d7d53c8119"
16
+ "gitHead": "b880054f9cef4ed62b4d02544257c9f5cbd811bc"
17
17
  }
package/src/database.ts CHANGED
@@ -92,6 +92,12 @@ import {
92
92
  type TaskRuntimeEventRecord,
93
93
  type TaskRuntimeSnapshotRecord,
94
94
  } from './task-runtime';
95
+ import {
96
+ assertSemanticResolutionRecord,
97
+ mapSemanticResolutionRow,
98
+ stableSemanticResolutionJson,
99
+ type SemanticResolutionRecord,
100
+ } from './semantic-resolution';
95
101
 
96
102
  export interface BenchmarkReportRecord {
97
103
  runId: string;
@@ -662,6 +668,35 @@ export class DevFlowDatabase {
662
668
  CREATE UNIQUE INDEX IF NOT EXISTS idx_task_intent_source
663
669
  ON devflow_task_intent_artifacts(project_root, session_id, source_hash, version);
664
670
 
671
+ CREATE TABLE IF NOT EXISTS devflow_semantic_resolutions (
672
+ frame_hash TEXT PRIMARY KEY,
673
+ project_root TEXT NOT NULL,
674
+ project_id TEXT NOT NULL,
675
+ host_id TEXT NOT NULL,
676
+ session_id TEXT NOT NULL,
677
+ turn_id TEXT NOT NULL,
678
+ request_id TEXT NOT NULL,
679
+ source_hash TEXT NOT NULL,
680
+ artifact_hash TEXT NOT NULL,
681
+ artifact_revision INTEGER NOT NULL CHECK(artifact_revision > 0),
682
+ supersedes_frame_hash TEXT,
683
+ state TEXT NOT NULL CHECK(state IN ('provisional', 'resolved', 'abstained', 'unavailable')),
684
+ generated_by TEXT NOT NULL CHECK(generated_by IN ('deterministic', 'embedding_router', 'host_semantic', 'hybrid')),
685
+ model_id TEXT,
686
+ model_revision TEXT,
687
+ route_catalog_version TEXT NOT NULL,
688
+ threshold_version TEXT NOT NULL,
689
+ route_json TEXT NOT NULL,
690
+ sampling_json TEXT NOT NULL,
691
+ conflicts_json TEXT NOT NULL,
692
+ frame_json TEXT NOT NULL,
693
+ duration_ms INTEGER NOT NULL CHECK(duration_ms >= 0),
694
+ created_at INTEGER NOT NULL,
695
+ UNIQUE(project_root, session_id, turn_id, artifact_revision)
696
+ );
697
+ CREATE INDEX IF NOT EXISTS idx_semantic_resolution_latest
698
+ ON devflow_semantic_resolutions(project_root, session_id, turn_id, artifact_revision DESC);
699
+
665
700
  CREATE TABLE IF NOT EXISTS devflow_channel_query_plans (
666
701
  plan_hash TEXT PRIMARY KEY,
667
702
  source_intent_hash TEXT NOT NULL,
@@ -4106,6 +4141,96 @@ export class DevFlowDatabase {
4106
4141
  return row ? mapTaskIntentArtifactRow(row) : null;
4107
4142
  }
4108
4143
 
4144
+ appendSemanticResolution(record: SemanticResolutionRecord): boolean {
4145
+ assertSemanticResolutionRecord(record);
4146
+ const existing = this.getSemanticResolution(record.frameHash);
4147
+ if (existing) {
4148
+ if (stableSemanticResolutionJson(existing) !== stableSemanticResolutionJson(record)) {
4149
+ throw new Error(`SEMANTIC_RESOLUTION_HASH_CONFLICT:${record.frameHash}`);
4150
+ }
4151
+ return false;
4152
+ }
4153
+ this.db.exec('BEGIN IMMEDIATE');
4154
+ try {
4155
+ const conflicting = this.db.prepare(`
4156
+ SELECT frame_hash FROM devflow_semantic_resolutions
4157
+ WHERE project_root = ? AND session_id = ? AND turn_id = ? AND artifact_revision = ?
4158
+ `).get(
4159
+ record.projectRoot, record.sessionId, record.turnId, record.artifactRevision,
4160
+ ) as Record<string, unknown> | undefined;
4161
+ if (conflicting) {
4162
+ throw new Error(`SEMANTIC_RESOLUTION_REVISION_CONFLICT:${record.turnId}:${record.artifactRevision}`);
4163
+ }
4164
+ if (record.supersedesFrameHash) {
4165
+ const superseded = this.getSemanticResolution(record.supersedesFrameHash);
4166
+ if (!superseded) {
4167
+ throw new Error(`SEMANTIC_RESOLUTION_SUPERSEDED_NOT_FOUND:${record.supersedesFrameHash}`);
4168
+ }
4169
+ if (superseded.projectRoot !== record.projectRoot
4170
+ || superseded.sessionId !== record.sessionId
4171
+ || superseded.turnId !== record.turnId
4172
+ || superseded.artifactRevision >= record.artifactRevision) {
4173
+ throw new Error('SEMANTIC_RESOLUTION_SUPERSEDES_INVALID');
4174
+ }
4175
+ }
4176
+ this.db.prepare(`
4177
+ INSERT INTO devflow_semantic_resolutions (
4178
+ frame_hash, project_root, project_id, host_id, session_id, turn_id, request_id,
4179
+ source_hash, artifact_hash, artifact_revision, supersedes_frame_hash, state,
4180
+ generated_by, model_id, model_revision, route_catalog_version, threshold_version,
4181
+ route_json, sampling_json, conflicts_json, frame_json, duration_ms, created_at
4182
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
4183
+ `).run(
4184
+ record.frameHash, record.projectRoot, record.projectId, record.hostId,
4185
+ record.sessionId, record.turnId, record.requestId, record.sourceHash,
4186
+ record.artifactHash, record.artifactRevision, record.supersedesFrameHash ?? null,
4187
+ record.state, record.generatedBy, record.modelId ?? null, record.modelRevision ?? null,
4188
+ record.routeCatalogVersion, record.thresholdVersion,
4189
+ stableSemanticResolutionJson(record.route), stableSemanticResolutionJson(record.sampling),
4190
+ stableSemanticResolutionJson(record.conflicts), stableSemanticResolutionJson(record.frame),
4191
+ record.durationMs, record.createdAt,
4192
+ );
4193
+ this.db.exec('COMMIT');
4194
+ return true;
4195
+ } catch (error) {
4196
+ try { this.db.exec('ROLLBACK'); } catch {}
4197
+ throw error;
4198
+ }
4199
+ }
4200
+
4201
+ getSemanticResolution(frameHash: string): SemanticResolutionRecord | null {
4202
+ const row = this.db.prepare(`
4203
+ SELECT * FROM devflow_semantic_resolutions WHERE frame_hash = ?
4204
+ `).get(frameHash) as Record<string, unknown> | undefined;
4205
+ return row ? mapSemanticResolutionRow(row) : null;
4206
+ }
4207
+
4208
+ getLatestSemanticResolution(
4209
+ projectRoot: string,
4210
+ sessionId: string,
4211
+ turnId: string,
4212
+ ): SemanticResolutionRecord | null {
4213
+ const row = this.db.prepare(`
4214
+ SELECT * FROM devflow_semantic_resolutions
4215
+ WHERE project_root = ? AND session_id = ? AND turn_id = ?
4216
+ ORDER BY artifact_revision DESC, created_at DESC LIMIT 1
4217
+ `).get(projectRoot, sessionId, turnId) as Record<string, unknown> | undefined;
4218
+ return row ? mapSemanticResolutionRow(row) : null;
4219
+ }
4220
+
4221
+ listSemanticResolutions(
4222
+ projectRoot: string,
4223
+ sessionId: string,
4224
+ turnId: string,
4225
+ ): SemanticResolutionRecord[] {
4226
+ return (this.db.prepare(`
4227
+ SELECT * FROM devflow_semantic_resolutions
4228
+ WHERE project_root = ? AND session_id = ? AND turn_id = ?
4229
+ ORDER BY artifact_revision ASC, created_at ASC
4230
+ `).all(projectRoot, sessionId, turnId) as Array<Record<string, unknown>>)
4231
+ .map(mapSemanticResolutionRow);
4232
+ }
4233
+
4109
4234
  listLatestTaskIntentArtifacts(projectRoot: string, sessionId: string): TaskIntentArtifactRecord[] {
4110
4235
  return (this.db.prepare(`
4111
4236
  SELECT artifact.* FROM devflow_task_intent_artifacts artifact
package/src/index.ts CHANGED
@@ -141,3 +141,13 @@ export type {
141
141
  SessionObligationRecord,
142
142
  SessionObligationState,
143
143
  } from './obligation-ledger';
144
+ export {
145
+ assertSemanticResolutionRecord,
146
+ mapSemanticResolutionRow,
147
+ stableSemanticResolutionJson,
148
+ } from './semantic-resolution';
149
+ export type {
150
+ PersistedSemanticGeneratedBy,
151
+ PersistedSemanticResolutionState,
152
+ SemanticResolutionRecord,
153
+ } from './semantic-resolution';
@@ -0,0 +1,181 @@
1
+ export type PersistedSemanticResolutionState = 'provisional' | 'resolved' | 'abstained' | 'unavailable';
2
+ export type PersistedSemanticGeneratedBy = 'deterministic' | 'embedding_router' | 'host_semantic' | 'hybrid';
3
+
4
+ export interface SemanticResolutionRecord {
5
+ frameHash: string;
6
+ projectRoot: string;
7
+ projectId: string;
8
+ hostId: string;
9
+ sessionId: string;
10
+ turnId: string;
11
+ requestId: string;
12
+ sourceHash: string;
13
+ artifactHash: string;
14
+ artifactRevision: number;
15
+ supersedesFrameHash?: string;
16
+ state: PersistedSemanticResolutionState;
17
+ generatedBy: PersistedSemanticGeneratedBy;
18
+ modelId?: string;
19
+ modelRevision?: string;
20
+ routeCatalogVersion: string;
21
+ thresholdVersion: string;
22
+ route: Record<string, unknown>;
23
+ sampling: Record<string, unknown>;
24
+ conflicts: Array<Record<string, unknown>>;
25
+ frame: Record<string, unknown>;
26
+ durationMs: number;
27
+ createdAt: number;
28
+ }
29
+
30
+ const STATES = new Set<PersistedSemanticResolutionState>([
31
+ 'provisional', 'resolved', 'abstained', 'unavailable',
32
+ ]);
33
+ const GENERATORS = new Set<PersistedSemanticGeneratedBy>([
34
+ 'deterministic', 'embedding_router', 'host_semantic', 'hybrid',
35
+ ]);
36
+
37
+ export function assertSemanticResolutionRecord(record: SemanticResolutionRecord): void {
38
+ for (const [field, value] of Object.entries({
39
+ frameHash: record.frameHash,
40
+ projectRoot: record.projectRoot,
41
+ projectId: record.projectId,
42
+ hostId: record.hostId,
43
+ sessionId: record.sessionId,
44
+ turnId: record.turnId,
45
+ requestId: record.requestId,
46
+ sourceHash: record.sourceHash,
47
+ artifactHash: record.artifactHash,
48
+ routeCatalogVersion: record.routeCatalogVersion,
49
+ thresholdVersion: record.thresholdVersion,
50
+ })) {
51
+ if (typeof value !== 'string' || value.length === 0) {
52
+ throw new Error(`SEMANTIC_RESOLUTION_INVALID:${field}`);
53
+ }
54
+ }
55
+ if (!Number.isSafeInteger(record.artifactRevision) || record.artifactRevision < 1) {
56
+ throw new Error('SEMANTIC_RESOLUTION_INVALID:artifactRevision');
57
+ }
58
+ if (!Number.isSafeInteger(record.durationMs) || record.durationMs < 0
59
+ || !Number.isSafeInteger(record.createdAt) || record.createdAt < 0) {
60
+ throw new Error('SEMANTIC_RESOLUTION_INVALID:timing');
61
+ }
62
+ if (!STATES.has(record.state) || !GENERATORS.has(record.generatedBy)) {
63
+ throw new Error('SEMANTIC_RESOLUTION_INVALID:enum');
64
+ }
65
+ if (record.frame.frameHash !== record.frameHash) {
66
+ throw new Error('SEMANTIC_RESOLUTION_FRAME_HASH_MISMATCH');
67
+ }
68
+ stableSemanticResolutionJson(record.route);
69
+ stableSemanticResolutionJson(record.sampling);
70
+ stableSemanticResolutionJson(record.conflicts);
71
+ stableSemanticResolutionJson(record.frame);
72
+ }
73
+
74
+ export function stableSemanticResolutionJson(value: unknown): string {
75
+ return JSON.stringify(canonicalize(value));
76
+ }
77
+
78
+ export function mapSemanticResolutionRow(row: Record<string, unknown>): SemanticResolutionRecord {
79
+ const state = requiredString(row.state, 'state') as PersistedSemanticResolutionState;
80
+ const generatedBy = requiredString(row.generated_by, 'generated_by') as PersistedSemanticGeneratedBy;
81
+ if (!STATES.has(state) || !GENERATORS.has(generatedBy)) {
82
+ throw new Error('SEMANTIC_RESOLUTION_ROW_INVALID:enum');
83
+ }
84
+ const result: SemanticResolutionRecord = {
85
+ frameHash: requiredString(row.frame_hash, 'frame_hash'),
86
+ projectRoot: requiredString(row.project_root, 'project_root'),
87
+ projectId: requiredString(row.project_id, 'project_id'),
88
+ hostId: requiredString(row.host_id, 'host_id'),
89
+ sessionId: requiredString(row.session_id, 'session_id'),
90
+ turnId: requiredString(row.turn_id, 'turn_id'),
91
+ requestId: requiredString(row.request_id, 'request_id'),
92
+ sourceHash: requiredString(row.source_hash, 'source_hash'),
93
+ artifactHash: requiredString(row.artifact_hash, 'artifact_hash'),
94
+ artifactRevision: requiredPositiveInteger(row.artifact_revision, 'artifact_revision'),
95
+ ...(optionalString(row.supersedes_frame_hash)
96
+ ? { supersedesFrameHash: optionalString(row.supersedes_frame_hash) }
97
+ : {}),
98
+ state,
99
+ generatedBy,
100
+ ...(optionalString(row.model_id) ? { modelId: optionalString(row.model_id) } : {}),
101
+ ...(optionalString(row.model_revision) ? { modelRevision: optionalString(row.model_revision) } : {}),
102
+ routeCatalogVersion: requiredString(row.route_catalog_version, 'route_catalog_version'),
103
+ thresholdVersion: requiredString(row.threshold_version, 'threshold_version'),
104
+ route: parseObject(row.route_json, 'route_json'),
105
+ sampling: parseObject(row.sampling_json, 'sampling_json'),
106
+ conflicts: parseObjectArray(row.conflicts_json, 'conflicts_json'),
107
+ frame: parseObject(row.frame_json, 'frame_json'),
108
+ durationMs: requiredNonNegativeInteger(row.duration_ms, 'duration_ms'),
109
+ createdAt: requiredNonNegativeInteger(row.created_at, 'created_at'),
110
+ };
111
+ assertSemanticResolutionRecord(result);
112
+ return result;
113
+ }
114
+
115
+ function canonicalize(value: unknown): unknown {
116
+ if (value === undefined) return undefined;
117
+ if (value === null || typeof value === 'string' || typeof value === 'boolean') return value;
118
+ if (typeof value === 'number') {
119
+ if (!Number.isFinite(value) || Object.is(value, -0)) throw new Error('SEMANTIC_RESOLUTION_JSON_INVALID');
120
+ return value;
121
+ }
122
+ if (Array.isArray(value)) return value.map(item => {
123
+ if (item === undefined) throw new Error('SEMANTIC_RESOLUTION_JSON_INVALID');
124
+ return canonicalize(item);
125
+ });
126
+ if (!value || typeof value !== 'object' || Object.getPrototypeOf(value) !== Object.prototype) {
127
+ throw new Error('SEMANTIC_RESOLUTION_JSON_INVALID');
128
+ }
129
+ const record = value as Record<string, unknown>;
130
+ return Object.fromEntries(Object.keys(record).sort()
131
+ .filter(key => record[key] !== undefined)
132
+ .map(key => [key, canonicalize(record[key])]));
133
+ }
134
+
135
+ function parseObject(value: unknown, field: string): Record<string, unknown> {
136
+ const parsed = parseJson(value, field);
137
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
138
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
139
+ }
140
+ return parsed as Record<string, unknown>;
141
+ }
142
+
143
+ function parseObjectArray(value: unknown, field: string): Array<Record<string, unknown>> {
144
+ const parsed = parseJson(value, field);
145
+ if (!Array.isArray(parsed) || parsed.some(item => !item || typeof item !== 'object' || Array.isArray(item))) {
146
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
147
+ }
148
+ return parsed as Array<Record<string, unknown>>;
149
+ }
150
+
151
+ function parseJson(value: unknown, field: string): unknown {
152
+ if (typeof value !== 'string') throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
153
+ try { return JSON.parse(value) as unknown; } catch {
154
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
155
+ }
156
+ }
157
+
158
+ function requiredString(value: unknown, field: string): string {
159
+ if (typeof value !== 'string' || value.length === 0) {
160
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
161
+ }
162
+ return value;
163
+ }
164
+
165
+ function optionalString(value: unknown): string | undefined {
166
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
167
+ }
168
+
169
+ function requiredPositiveInteger(value: unknown, field: string): number {
170
+ const result = requiredNonNegativeInteger(value, field);
171
+ if (result < 1) throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
172
+ return result;
173
+ }
174
+
175
+ function requiredNonNegativeInteger(value: unknown, field: string): number {
176
+ const result = Number(value);
177
+ if (!Number.isSafeInteger(result) || result < 0) {
178
+ throw new Error(`SEMANTIC_RESOLUTION_ROW_INVALID:${field}`);
179
+ }
180
+ return result;
181
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/types.ts","./src/node-sqlite.ts","./src/work-queue.ts","./src/obligation-ledger.ts","./src/host-actions.ts","./src/retrieval-sessions.ts","./src/learning-candidates.ts","./src/workflow-workers.ts","./src/retrieval-ledger.ts","./src/task-semantic-control.ts","./src/task-runtime.ts","./src/semantic-resolution.ts","./src/database.ts","./src/index.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","../../node_modules/buffer/index.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/web-globals/streams.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","../../node_modules/@types/better-sqlite3/index.d.ts","../../node_modules/@types/d3-array/index.d.ts","../../node_modules/@types/d3-color/index.d.ts","../../node_modules/@types/d3-selection/index.d.ts","../../node_modules/@types/d3-drag/index.d.ts","../../node_modules/@types/d3-ease/index.d.ts","../../node_modules/@types/d3-interpolate/index.d.ts","../../node_modules/@types/d3-path/index.d.ts","../../node_modules/@types/d3-time/index.d.ts","../../node_modules/@types/d3-scale/index.d.ts","../../node_modules/@types/d3-shape/index.d.ts","../../node_modules/@types/d3-timer/index.d.ts","../../node_modules/@types/d3-transition/index.d.ts","../../node_modules/@types/d3-zoom/index.d.ts","../../node_modules/@types/dagre/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/long/index.d.ts","../../node_modules/@types/minimatch/index.d.ts","../../node_modules/@types/minimist/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/parse-json/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/@types/turndown/index.d.ts","../../node_modules/@types/validator/lib/isboolean.d.ts","../../node_modules/@types/validator/lib/isemail.d.ts","../../node_modules/@types/validator/lib/isfqdn.d.ts","../../node_modules/@types/validator/lib/isiban.d.ts","../../node_modules/@types/validator/lib/isiso31661alpha2.d.ts","../../node_modules/@types/validator/lib/isiso4217.d.ts","../../node_modules/@types/validator/lib/isiso6391.d.ts","../../node_modules/@types/validator/lib/istaxid.d.ts","../../node_modules/@types/validator/lib/isurl.d.ts","../../node_modules/@types/validator/index.d.ts","../../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/q/index.d.ts","../../../../node_modules/@types/source-list-map/index.d.ts","../../../../node_modules/@types/tapable/index.d.ts","../../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts","../../../../node_modules/@types/uglify-js/index.d.ts","../../../../node_modules/anymatch/index.d.ts","../../../../node_modules/@types/webpack/node_modules/source-map/source-map.d.ts","../../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","../../../../node_modules/@types/webpack-sources/lib/source.d.ts","../../../../node_modules/@types/webpack-sources/lib/compatsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/concatsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/originalsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/prefixsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/rawsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/replacesource.d.ts","../../../../node_modules/@types/webpack-sources/lib/sizeonlysource.d.ts","../../../../node_modules/@types/webpack-sources/lib/sourcemapsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/index.d.ts","../../../../node_modules/@types/webpack-sources/lib/cachedsource.d.ts","../../../../node_modules/@types/webpack-sources/index.d.ts","../../../../node_modules/@types/webpack/index.d.ts"],"fileIdsList":[[65,115,132,133,165],[65,115,132,133],[65,115,132,133,169,178],[65,115,132,133,168],[65,115,132,133,174],[65,115,132,133,173],[65,115,132,133,169,172,178],[65,115,132,133,190],[65,115,132,133,187,188,189],[65,115,132,133,193,194,195,196,197,198,199,200,201],[65,112,113,115,132,133],[65,114,115,132,133],[115,132,133],[65,115,120,132,133,150],[65,115,116,121,126,132,133,135,147,158],[65,115,116,117,126,132,133,135],[60,61,62,65,115,132,133],[65,115,118,132,133,159],[65,115,119,120,127,132,133,136],[65,115,120,132,133,147,155],[65,115,121,123,126,132,133,135],[65,114,115,122,132,133],[65,115,123,124,132,133],[65,115,125,126,132,133],[65,114,115,126,132,133],[65,115,126,127,128,132,133,147,158],[65,115,126,127,128,132,133,142,147,150],[65,107,115,123,126,129,132,133,135,147,158],[65,115,126,127,129,130,132,133,135,147,155,158],[65,115,129,131,132,133,147,155,158],[63,64,65,66,67,68,69,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164],[65,115,126,132,133],[65,115,132,133,134,158],[65,115,123,126,132,133,135,147],[65,115,132,133,136],[65,115,132,133,137],[65,114,115,132,133,138],[65,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164],[65,115,132,133,140],[65,115,132,133,141],[65,115,126,132,133,142,143],[65,115,132,133,142,144,159,161],[65,115,127,132,133],[65,115,126,132,133,147,148,150],[65,115,132,133,149,150],[65,115,132,133,147,148],[65,115,132,133,150],[65,115,132,133,151],[65,112,115,132,133,147,152,158],[65,115,126,132,133,153,154],[65,115,132,133,153,154],[65,115,120,132,133,135,147,155],[65,115,132,133,156],[65,115,132,133,135,157],[65,115,129,132,133,141,158],[65,115,120,132,133,159],[65,115,132,133,147,160],[65,115,132,133,134,161],[65,115,132,133,162],[65,107,115,132,133],[65,107,115,126,128,132,133,138,147,150,158,160,161,163],[65,115,132,133,147,164],[65,79,83,115,132,133,158],[65,79,115,132,133,147,158],[65,74,115,132,133],[65,76,79,115,132,133,155,158],[65,115,132,133,135,155],[65,74,115,132,133,165],[65,76,79,115,132,133,135,158],[65,71,72,75,78,115,126,132,133,147,158],[65,79,86,115,132,133],[65,71,77,115,132,133],[65,79,100,101,115,132,133],[65,75,79,115,132,133,150,158,165],[65,100,115,132,133,165],[65,73,74,115,132,133,165],[65,79,115,132,133],[65,73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,101,102,103,104,105,106,115,132,133],[65,79,94,115,132,133],[65,79,86,87,115,132,133],[65,77,79,87,88,115,132,133],[65,78,115,132,133],[65,71,74,79,115,132,133],[65,79,83,87,88,115,132,133],[65,83,115,132,133],[65,77,79,82,115,132,133,158],[65,71,76,79,86,115,132,133],[65,115,132,133,147],[65,74,79,100,115,132,133,163,165],[47,48,49,50,51,52,53,54,55,56,57,65,115,120,127,132,133,136,137],[48,49,50,51,52,53,54,55,56,57,58,65,115,132,133],[46,65,115,132,133,146],[65,115,120,132,133],[65,115,132,133,208],[65,115,132,133,165,213,214,215,216,217,218,219,220,221,222,223],[65,115,132,133,212,213,222],[65,115,132,133,213,222],[65,115,132,133,206,212,213,222],[65,115,132,133,212,213,214,215,216,217,218,219,220,221,223],[65,115,132,133,213],[65,115,120,132,133,212,222],[65,115,120,132,133,165,207,208,209,210,224]],"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":"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":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f0b1a4ab354a2e47e1396af5bc2663a77cd9f91eb857b9f0fdfcd77cc95c8d0","signature":"651a6436cc80d726a120b278fcef7487a66061442629a7c83b27977438c3ed36"},{"version":"3b1a7693bd66fad891038ad2b30e8eb06c8da4cbfc1f7691e857540c01ac3cdb","signature":"694767dca8e136df397deda49122af216f2d10dd6bd222a2b117d49882cc2f23"},{"version":"6ad3f1af299806a8d6c59a9ad57c16d06a4f05a927ce3b3139e5e1fad8bcccf3","signature":"f2ba0aba5a46f82efb98147e8de87272e209dbf31f2e4af527298be3a35c007a"},{"version":"b490ef6391f64aa28bc452b907462163b63d412d8984630e0777970aed7fa8d5","signature":"27311437b7dae1bcf4f30ac52f5c7527f265438d3ad7184b46daf2f8f5417307"},{"version":"e04476f981a2bff5bc302e1776f5ece8eece3801e1188fb07126e661aa79e907","signature":"ba77c208cf696473912bd2f84cb93c2b61f7faf108712db69c838e23bb77bac1"},{"version":"16f19f92edb90e4ab2d034e856179a1a581bbd45e3fb25ab2531eb2d9315718d","signature":"060aada36f7239e7c8ae86b2164bb1b0e5c83c997eaae2dfcd120db7698f2406"},{"version":"f03144cf63c05642505945e36379d05b2dea254c4f9c2ba70085f3ffcea3e9f9","signature":"6766c9a574d2c656494cb8beb29fcb1701e6719366f7255d56cf723267ffd585"},{"version":"fcfa8c24b48dc6922c4b46daa657bfab22cdc2f610b4608174ddbd69fcea3085","signature":"dc34d797db0f2b3b97a86c8e9e7d5b1d55faa42d203759a08b080f2dce805274"},{"version":"cb59de368f2b515addaeaa009c402bf6d91b9d9d0ce9886b7ac703913d0a64ee","signature":"568eb228f5f7148aea1d17c1e7a8efa74bfa5bfb2f8ef645b8cf1f1dc6f705b4"},{"version":"00c81a2115f918bd85e67ed2d041324ba890777c03a9b34ad7cc605797957662","signature":"23c6afab884f3d5f7e09985f82db3e6f79ec5c054241c72240662abe5f9a9815"},{"version":"7b754852c12d01199750cbde41ae0002d07f7b30e591cc425325835193c6afed","signature":"1e1397d8708101d9a32058edb64196e8a122740c381bbebab692ed5a5adb9be9"},{"version":"c0da0a246b87eb863d733cc4bf3c7f3866fcb5d6e1eaf12f4daee39c04b0ef88","signature":"68763c29aca77e676556c1e0e5f37d4e247a0e59a0ec7708eccc25ea33901215"},{"version":"2add065ff6cfabe6c798deec3c250588d73adc22706b2a45fdc7c2c3197a7629","signature":"d36a83bcd8c9596f292dbdd8d9f2f18809ca128cedc1faedceaf357e86fb631f"},{"version":"c3071f5cc5b21eb5359051cfb04bac9f6346cfa6cb7dd9bccc94b7fbd5b26a82","signature":"57551f72f98143e7d654ed981749f7de17d9c51638700b7a5f890231786f9b0c"},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"78dbea00e90d2df8ea3dbef0cc379d95b8be9b71cd6bde4c28728f306811803b","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e1e46d0a9837ee058c100501080c920fa98081ea3956af0374308ba6f22a33e","impliedFormat":1},{"version":"272ca407e0c9068bdc5152552d876e68037ceae3de62e529306403e973dec8e1","impliedFormat":1},{"version":"fa7834c715d5357e4540cee40ce96c3250ddb67a7b879a6b7fa0e86d6696f121","impliedFormat":1},{"version":"22dfb07a7ab15b66ac043829056fe70124844636ae719551812ac631ba04985b","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"0cb167c371eaa8c869f8a7656a7296f2e4fae43b4d8b803a680236b24794e5f9","impliedFormat":1},{"version":"0a839dba0287cc0481ad4beedd48a1c64acf1e212ae865d1315f7007ca215161","impliedFormat":1},{"version":"38dc4655376cd1a4bd6bb3763d92949233e33d38d3dd3cbea7bbf218175a38ef","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"d61e0a64cd175208ac0b83670151a9a6b5916f0d1ffcdc5c29c90b1cebfc5045","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"48a679952eefe4cb776d5a0e1ccba2d3eb53b57448bbb7abc1fcebcbd5440188","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2d14da6ecb49bf828d83948765ec2d3a579d476bbb9645e749610baa6ec880ca","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"0aef708fb4c7a6b915e8305cbfac40cd207b032dbaabe9a01889a5fff3254681","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"ad9bdafb4e7abf14cc53ce7970486a84c87831e62891e5dfe798ddcd55e84701","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"71d3ae6a5e73ca4130762560425e00984ebaff64d5353a3333d1bb7eb86ef336","impliedFormat":1},{"version":"c2a6a737189ced24ffe0634e9239b087e4c26378d0490f95141b9b9b042b746c","impliedFormat":1},{"version":"b1538a92b9bae8d230267210c5db38c2eb6bdb352128a3ce3aa8c6acf9fc9622","impliedFormat":1},{"version":"6fc1a4f64372593767a9b7b774e9b3b92bf04e8785c3f9ea98973aa9f4bbe490","impliedFormat":1},{"version":"469532350a366536390c6eb3bde6839ec5c81fe1227a6b7b6a70202954d70c40","impliedFormat":1},{"version":"54e79224429e911b5d6aeb3cf9097ec9fd0f140d5a1461bbdece3066b17c232c","impliedFormat":1},{"version":"ff09b6fbdcf74d8af4e131b8866925c5e18d225540b9b19ce9485ca93e574d84","impliedFormat":1},{"version":"d5895252efa27a50f134a9b580aa61f7def5ab73d0a8071f9b5bf9a317c01c2d","impliedFormat":1},{"version":"2c378d9368abcd2eba8c29b294d40909845f68557bc0b38117e4f04fc56e5f9c","impliedFormat":1},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"0c94c2e497e1b9bcfda66aea239d5d36cd980d12a6d9d59e66f4be1fa3da5d5a","impliedFormat":1},{"version":"9b048390bcffe88c023a4cd742a720b41d4cd7df83bc9270e6f2339bf38de278","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f366bde16e0513fa7b64f87f86689c4d36efd85afce7eb24753e9c99b91c319","impliedFormat":1},{"version":"421c3f008f6ef4a5db2194d58a7b960ef6f33e94b033415649cd557be09ef619","impliedFormat":1},{"version":"57568ff84b8ba1a4f8c817141644b49252cc39ec7b899e4bfba0ec0557c910a0","impliedFormat":1},{"version":"443d1020635af05e3cb8c45974bc76f03a8b11f95563774b26afb51b1a8666d7","impliedFormat":1},{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1},{"version":"0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","impliedFormat":1},{"version":"8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","impliedFormat":1},{"version":"fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","impliedFormat":1},{"version":"22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","impliedFormat":1},{"version":"916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"09ddcfcfbe77a8232d155ca1030005106b1328f6210df43629d0be750da07c16","affectsGlobalScope":true,"impliedFormat":1},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1},{"version":"f80cb0ced191be0a08767ee613ec61b89d193ab698c7c0c8133b49a183c5ea26","impliedFormat":1},{"version":"c6cdcd12d577032b84eed1de4d2de2ae343463701a25961b202cff93989439fb","impliedFormat":1},{"version":"3dc633586d48fcd04a4f8acdbf7631b8e4a334632f252d5707e04b299069721e","impliedFormat":1},{"version":"3322858f01c0349ee7968a5ce93a1ca0c154c4692aa8f1721dc5192a9191a168","impliedFormat":1},{"version":"6dde0a77adad4173a49e6de4edd6ef70f5598cbebb5c80d76c111943854636ca","impliedFormat":1},{"version":"09acacae732e3cc67a6415026cfae979ebe900905500147a629837b790a366b3","impliedFormat":1},{"version":"f7b622759e094a3c2e19640e0cb233b21810d2762b3e894ef7f415334125eb22","impliedFormat":1},{"version":"99236ea5c4c583082975823fd19bcce6a44963c5c894e20384bc72e7eccf9b03","impliedFormat":1},{"version":"f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","impliedFormat":1},{"version":"9f642953aba68babd23de41de85d4e97f0c39ef074cb8ab8aa7d55237f62aff6","impliedFormat":1},{"version":"159d95163a0ed369175ae7838fa21a9e9e703de5fdb0f978721293dd403d9f4a","impliedFormat":1},{"version":"6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d","impliedFormat":1},{"version":"3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","impliedFormat":1},{"version":"f9a2dd6a6084665f093ed0e9664b8e673be2a45e342a59dd4e0e4e552e68a9ad","impliedFormat":1},{"version":"67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","impliedFormat":1},{"version":"d558a0fe921ebcc88d3212c2c42108abf9f0d694d67ebdeba37d7728c044f579","impliedFormat":1},{"version":"2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","impliedFormat":1},{"version":"bee79f5862fe1278d2ba275298862bce3f7abf1e59d9c669c4b9a4b2bba96956","impliedFormat":1},{"version":"4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","impliedFormat":1},{"version":"2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","impliedFormat":1},{"version":"b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","impliedFormat":1},{"version":"8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","impliedFormat":1},{"version":"ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","impliedFormat":1},{"version":"083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","impliedFormat":1},{"version":"274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","impliedFormat":1},{"version":"6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","impliedFormat":1},{"version":"5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","impliedFormat":1},{"version":"f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","impliedFormat":1},{"version":"0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","impliedFormat":1},{"version":"8ef5aad624890acfe0fa48230edce255f00934016d16acb8de0edac0ea5b21bb","impliedFormat":1},{"version":"9af6248ff4baf0c1ddc62bb0bc43197437bd5fb2c95ff8e10e4cf2e699ea45c1","impliedFormat":1},{"version":"d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","impliedFormat":1},{"version":"89b42f8ee5d387a39db85ee2c7123a391c3ede266a2bcd502c85ad55626c3b2b","impliedFormat":1},{"version":"99c7f3bbc03f6eb3e663c26c104d639617620c2925e76fc284f7bedf1877fa2b","impliedFormat":1}],"root":[[46,59]],"options":{"composite":true,"declaration":true,"esModuleInterop":true,"module":1,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":7},"referencedMap":[[166,1],[167,2],[168,2],[170,3],[171,2],[172,4],[173,2],[175,5],[169,2],[176,6],[174,2],[177,2],[178,3],[179,7],[180,2],[181,2],[182,2],[183,2],[184,2],[185,2],[186,2],[187,2],[191,8],[188,2],[190,9],[192,2],[202,10],[193,2],[194,2],[195,2],[196,2],[197,2],[198,2],[199,2],[200,2],[201,2],[70,2],[189,2],[44,2],[45,2],[9,2],[8,2],[2,2],[10,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[3,2],[18,2],[19,2],[4,2],[20,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[35,2],[32,2],[33,2],[34,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[112,11],[113,11],[114,12],[65,13],[115,14],[116,15],[117,16],[60,2],[63,17],[61,2],[62,2],[118,18],[119,19],[120,20],[121,21],[122,22],[123,23],[124,23],[125,24],[126,25],[127,26],[128,27],[66,2],[64,2],[129,28],[130,29],[131,30],[165,31],[132,32],[133,2],[134,33],[135,34],[136,35],[137,36],[138,37],[139,38],[140,39],[141,40],[142,41],[143,41],[144,42],[145,2],[146,43],[147,44],[149,45],[148,46],[150,47],[151,48],[152,49],[153,50],[154,51],[155,52],[156,53],[157,54],[158,55],[159,56],[160,57],[161,58],[162,59],[67,2],[68,2],[69,2],[108,60],[109,2],[110,2],[111,47],[163,61],[164,62],[86,63],[96,64],[85,63],[106,65],[77,66],[76,67],[105,1],[99,68],[104,69],[79,70],[93,71],[78,72],[102,73],[74,74],[73,1],[103,75],[75,76],[80,77],[81,2],[84,77],[71,2],[107,78],[97,79],[88,80],[89,81],[91,82],[87,83],[90,84],[100,1],[82,85],[83,86],[92,87],[72,88],[95,79],[94,77],[98,2],[101,89],[58,90],[50,2],[59,91],[52,2],[47,92],[49,2],[54,2],[51,2],[57,2],[56,93],[55,2],[46,2],[48,2],[53,2],[203,2],[204,2],[205,2],[206,2],[207,2],[209,94],[208,2],[224,95],[223,96],[214,97],[215,98],[222,99],[216,98],[217,97],[218,97],[219,97],[220,100],[213,101],[221,96],[212,2],[225,102],[211,2],[210,2]],"latestChangedDtsFile":"./dist/database.d.ts","version":"5.9.3"}