@timmeck/brain-core 2.36.107 → 2.36.109
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/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/research/research-orchestrator.d.ts +3 -0
- package/dist/research/research-orchestrator.js +95 -74
- package/dist/research/research-orchestrator.js.map +1 -1
- package/dist/self-model/strategy-executor.d.ts +44 -0
- package/dist/self-model/strategy-executor.js +297 -0
- package/dist/self-model/strategy-executor.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strategy Executor — Minimal Closed Loop
|
|
3
|
+
*
|
|
4
|
+
* Every cycle: pick 1 eligible strategy → execute it → log outcome.
|
|
5
|
+
* No manager classes. No abstraction layers. One loop.
|
|
6
|
+
*
|
|
7
|
+
* A strategy is "executable" if it has:
|
|
8
|
+
* - precondition: observable metric condition (threshold/co-occurrence)
|
|
9
|
+
* - action: parameter mutation or config change
|
|
10
|
+
* - evaluation: measured after N cycles
|
|
11
|
+
*/
|
|
12
|
+
import type Database from 'better-sqlite3';
|
|
13
|
+
export declare function runStrategyExecutorMigration(db: Database.Database): void;
|
|
14
|
+
interface ExecutionResult {
|
|
15
|
+
strategyId: string;
|
|
16
|
+
action: string;
|
|
17
|
+
preconditionMet: boolean;
|
|
18
|
+
executed: boolean;
|
|
19
|
+
details: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class StrategyExecutor {
|
|
22
|
+
private db;
|
|
23
|
+
constructor(db: Database.Database);
|
|
24
|
+
/**
|
|
25
|
+
* Seed executable strategies from existing confirmed hypotheses.
|
|
26
|
+
* Turns "X co-occurs with Y" into "when X spikes, adjust parameter Z".
|
|
27
|
+
*/
|
|
28
|
+
private seedExecutableStrategies;
|
|
29
|
+
private upsertExecutable;
|
|
30
|
+
/**
|
|
31
|
+
* Run one execution cycle. Pick the best eligible strategy. Execute it. Log it.
|
|
32
|
+
* Call this every cycle — it handles cooldown internally.
|
|
33
|
+
*/
|
|
34
|
+
execute(currentCycle: number): ExecutionResult | null;
|
|
35
|
+
private checkPrecondition;
|
|
36
|
+
private executeAction;
|
|
37
|
+
private recordExecution;
|
|
38
|
+
/**
|
|
39
|
+
* Evaluate past executions — did the action help?
|
|
40
|
+
* Check if metrics improved after eval_after_cycles.
|
|
41
|
+
*/
|
|
42
|
+
evaluate(currentCycle: number): void;
|
|
43
|
+
}
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { getLogger } from '../utils/logger.js';
|
|
2
|
+
const log = getLogger();
|
|
3
|
+
// ── Migration ────────────────────────────────────────
|
|
4
|
+
export function runStrategyExecutorMigration(db) {
|
|
5
|
+
// Add action_type + action_config to strategies if missing
|
|
6
|
+
const cols = db.prepare('PRAGMA table_info(knowledge_strategies)').all();
|
|
7
|
+
const colNames = new Set(cols.map(c => c.name));
|
|
8
|
+
if (!colNames.has('action_type')) {
|
|
9
|
+
try {
|
|
10
|
+
db.exec("ALTER TABLE knowledge_strategies ADD COLUMN action_type TEXT");
|
|
11
|
+
}
|
|
12
|
+
catch { /* */ }
|
|
13
|
+
}
|
|
14
|
+
if (!colNames.has('action_config')) {
|
|
15
|
+
try {
|
|
16
|
+
db.exec("ALTER TABLE knowledge_strategies ADD COLUMN action_config TEXT");
|
|
17
|
+
}
|
|
18
|
+
catch { /* */ }
|
|
19
|
+
}
|
|
20
|
+
if (!colNames.has('precondition_type')) {
|
|
21
|
+
try {
|
|
22
|
+
db.exec("ALTER TABLE knowledge_strategies ADD COLUMN precondition_type TEXT");
|
|
23
|
+
}
|
|
24
|
+
catch { /* */ }
|
|
25
|
+
}
|
|
26
|
+
if (!colNames.has('precondition_config')) {
|
|
27
|
+
try {
|
|
28
|
+
db.exec("ALTER TABLE knowledge_strategies ADD COLUMN precondition_config TEXT");
|
|
29
|
+
}
|
|
30
|
+
catch { /* */ }
|
|
31
|
+
}
|
|
32
|
+
if (!colNames.has('eval_after_cycles')) {
|
|
33
|
+
try {
|
|
34
|
+
db.exec("ALTER TABLE knowledge_strategies ADD COLUMN eval_after_cycles INTEGER DEFAULT 5");
|
|
35
|
+
}
|
|
36
|
+
catch { /* */ }
|
|
37
|
+
}
|
|
38
|
+
if (!colNames.has('last_executed_cycle')) {
|
|
39
|
+
try {
|
|
40
|
+
db.exec("ALTER TABLE knowledge_strategies ADD COLUMN last_executed_cycle INTEGER DEFAULT 0");
|
|
41
|
+
}
|
|
42
|
+
catch { /* */ }
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// ── Engine ───────────────────────────────────────────
|
|
46
|
+
export class StrategyExecutor {
|
|
47
|
+
db;
|
|
48
|
+
constructor(db) {
|
|
49
|
+
this.db = db;
|
|
50
|
+
runStrategyExecutorMigration(db);
|
|
51
|
+
this.seedExecutableStrategies();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Seed executable strategies from existing confirmed hypotheses.
|
|
55
|
+
* Turns "X co-occurs with Y" into "when X spikes, adjust parameter Z".
|
|
56
|
+
*/
|
|
57
|
+
seedExecutableStrategies() {
|
|
58
|
+
// Only seed if no strategies have action_type yet
|
|
59
|
+
const withAction = this.db.prepare("SELECT count(*) as c FROM knowledge_strategies WHERE action_type IS NOT NULL").get();
|
|
60
|
+
if (withAction.c > 0)
|
|
61
|
+
return;
|
|
62
|
+
// Strategy 1: When anomaly_count spikes → reduce curiosity exploration (focus on known)
|
|
63
|
+
this.upsertExecutable('strat-exec-focus-on-anomaly', {
|
|
64
|
+
domain: 'adaptive',
|
|
65
|
+
description: 'When anomaly_count > 5, reduce exploration to focus on known patterns',
|
|
66
|
+
precondition_type: 'observation_threshold',
|
|
67
|
+
precondition_config: JSON.stringify({ observation_type: 'anomaly_count', operator: '>', threshold: 5 }),
|
|
68
|
+
action_type: 'parameter_adjust',
|
|
69
|
+
action_config: JSON.stringify({ engine: 'curiosity', name: 'exploration_constant', delta: -0.1, min: 0.5 }),
|
|
70
|
+
eval_after_cycles: 5,
|
|
71
|
+
});
|
|
72
|
+
// Strategy 2: When insight_count is low → increase exploration
|
|
73
|
+
this.upsertExecutable('strat-exec-boost-exploration', {
|
|
74
|
+
domain: 'adaptive',
|
|
75
|
+
description: 'When insight_count < 2, increase exploration to find new patterns',
|
|
76
|
+
precondition_type: 'observation_threshold',
|
|
77
|
+
precondition_config: JSON.stringify({ observation_type: 'insight_count', operator: '<', threshold: 2 }),
|
|
78
|
+
action_type: 'parameter_adjust',
|
|
79
|
+
action_config: JSON.stringify({ engine: 'curiosity', name: 'exploration_constant', delta: 0.1, max: 3.0 }),
|
|
80
|
+
eval_after_cycles: 5,
|
|
81
|
+
});
|
|
82
|
+
// Strategy 3: When many anomalies with high severity → increase auto-responder capacity
|
|
83
|
+
this.upsertExecutable('strat-exec-scale-responder', {
|
|
84
|
+
domain: 'adaptive',
|
|
85
|
+
description: 'When anomaly severity is high, allow more auto-responses per cycle',
|
|
86
|
+
precondition_type: 'observation_threshold',
|
|
87
|
+
precondition_config: JSON.stringify({ observation_type: 'anomaly_count', operator: '>', threshold: 8 }),
|
|
88
|
+
action_type: 'parameter_adjust',
|
|
89
|
+
action_config: JSON.stringify({ engine: 'auto_responder', name: 'max_responses_per_cycle', delta: 1, max: 10 }),
|
|
90
|
+
eval_after_cycles: 10,
|
|
91
|
+
});
|
|
92
|
+
// Strategy 4: When correlation_count is high → slow down dream consolidation (don't overwrite)
|
|
93
|
+
this.upsertExecutable('strat-exec-protect-correlations', {
|
|
94
|
+
domain: 'adaptive',
|
|
95
|
+
description: 'When finding many correlations, reduce dream pruning to preserve new connections',
|
|
96
|
+
precondition_type: 'observation_threshold',
|
|
97
|
+
precondition_config: JSON.stringify({ observation_type: 'correlation_count', operator: '>', threshold: 3 }),
|
|
98
|
+
action_type: 'parameter_adjust',
|
|
99
|
+
action_config: JSON.stringify({ engine: 'dream', name: 'prune_threshold', delta: -0.01, min: 0.01 }),
|
|
100
|
+
eval_after_cycles: 5,
|
|
101
|
+
});
|
|
102
|
+
// Strategy 5: Low testability creative → tighten gap threshold (be more selective about what to explore)
|
|
103
|
+
this.upsertExecutable('strat-exec-tighten-gaps', {
|
|
104
|
+
domain: 'adaptive',
|
|
105
|
+
description: 'When creative testability is low, raise gap threshold to focus exploration on stronger signals',
|
|
106
|
+
precondition_type: 'generator_diagnostic',
|
|
107
|
+
precondition_config: JSON.stringify({ generator_id: 'creative_engine', metric: 'testability_rate', operator: '<', threshold: 0.1 }),
|
|
108
|
+
action_type: 'parameter_adjust',
|
|
109
|
+
action_config: JSON.stringify({ engine: 'curiosity', name: 'gap_threshold', delta: 0.05, max: 0.9 }),
|
|
110
|
+
eval_after_cycles: 10,
|
|
111
|
+
});
|
|
112
|
+
log.info(`[strategy-executor] Seeded 5 executable strategies`);
|
|
113
|
+
}
|
|
114
|
+
upsertExecutable(id, config) {
|
|
115
|
+
const existing = this.db.prepare('SELECT id FROM knowledge_strategies WHERE id = ?').get(id);
|
|
116
|
+
if (existing) {
|
|
117
|
+
this.db.prepare(`UPDATE knowledge_strategies SET
|
|
118
|
+
action_type = ?, action_config = ?, precondition_type = ?, precondition_config = ?,
|
|
119
|
+
eval_after_cycles = ?, status = 'active'
|
|
120
|
+
WHERE id = ?`).run(config.action_type, config.action_config, config.precondition_type, config.precondition_config, config.eval_after_cycles, id);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
this.db.prepare(`INSERT INTO knowledge_strategies
|
|
124
|
+
(id, domain, description, conditions, effectiveness, evidence_count, action_type, action_config,
|
|
125
|
+
precondition_type, precondition_config, eval_after_cycles, status)
|
|
126
|
+
VALUES (?, ?, ?, '[]', 0.5, 0, ?, ?, ?, ?, ?, 'active')`).run(id, config.domain, config.description, config.action_type, config.action_config, config.precondition_type, config.precondition_config, config.eval_after_cycles);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Run one execution cycle. Pick the best eligible strategy. Execute it. Log it.
|
|
131
|
+
* Call this every cycle — it handles cooldown internally.
|
|
132
|
+
*/
|
|
133
|
+
execute(currentCycle) {
|
|
134
|
+
// Get all executable strategies (have action_type, are active)
|
|
135
|
+
const candidates = this.db.prepare(`
|
|
136
|
+
SELECT * FROM knowledge_strategies
|
|
137
|
+
WHERE action_type IS NOT NULL
|
|
138
|
+
AND status = 'active'
|
|
139
|
+
AND (last_executed_cycle IS NULL OR last_executed_cycle < ?)
|
|
140
|
+
ORDER BY effectiveness DESC, use_count ASC
|
|
141
|
+
`).all(currentCycle - 2); // cooldown: 2 cycles minimum
|
|
142
|
+
if (candidates.length === 0)
|
|
143
|
+
return null;
|
|
144
|
+
// Try each candidate until one's precondition is met
|
|
145
|
+
for (const strat of candidates) {
|
|
146
|
+
const preconditionMet = this.checkPrecondition(strat);
|
|
147
|
+
if (!preconditionMet)
|
|
148
|
+
continue;
|
|
149
|
+
// Execute!
|
|
150
|
+
const details = this.executeAction(strat, currentCycle);
|
|
151
|
+
if (details === null)
|
|
152
|
+
continue;
|
|
153
|
+
// Record execution
|
|
154
|
+
this.recordExecution(strat.id, currentCycle, details);
|
|
155
|
+
const result = {
|
|
156
|
+
strategyId: strat.id,
|
|
157
|
+
action: strat.action_type,
|
|
158
|
+
preconditionMet: true,
|
|
159
|
+
executed: true,
|
|
160
|
+
details,
|
|
161
|
+
};
|
|
162
|
+
log.info(`[strategy-executor] Executed ${strat.id}: ${details}`);
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
return null; // No preconditions met
|
|
166
|
+
}
|
|
167
|
+
checkPrecondition(strat) {
|
|
168
|
+
if (!strat.precondition_type || !strat.precondition_config)
|
|
169
|
+
return false;
|
|
170
|
+
try {
|
|
171
|
+
const config = JSON.parse(strat.precondition_config);
|
|
172
|
+
if (strat.precondition_type === 'observation_threshold') {
|
|
173
|
+
// Check latest observation value
|
|
174
|
+
const obs = this.db.prepare('SELECT value FROM observations WHERE type = ? ORDER BY created_at DESC LIMIT 1').get(config.observation_type);
|
|
175
|
+
if (!obs)
|
|
176
|
+
return false;
|
|
177
|
+
switch (config.operator) {
|
|
178
|
+
case '>': return obs.value > config.threshold;
|
|
179
|
+
case '<': return obs.value < config.threshold;
|
|
180
|
+
case '>=': return obs.value >= config.threshold;
|
|
181
|
+
case '<=': return obs.value <= config.threshold;
|
|
182
|
+
default: return false;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (strat.precondition_type === 'generator_diagnostic') {
|
|
186
|
+
const diag = this.db.prepare('SELECT * FROM generator_diagnostics WHERE generator_id = ?').get(config.generator_id);
|
|
187
|
+
if (!diag)
|
|
188
|
+
return false;
|
|
189
|
+
const value = diag[config.metric] ?? 0;
|
|
190
|
+
switch (config.operator) {
|
|
191
|
+
case '>': return value > config.threshold;
|
|
192
|
+
case '<': return value < config.threshold;
|
|
193
|
+
default: return false;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
executeAction(strat, _cycle) {
|
|
203
|
+
if (!strat.action_type || !strat.action_config)
|
|
204
|
+
return null;
|
|
205
|
+
try {
|
|
206
|
+
const config = JSON.parse(strat.action_config);
|
|
207
|
+
if (strat.action_type === 'parameter_adjust') {
|
|
208
|
+
// Read current value
|
|
209
|
+
const current = this.db.prepare('SELECT value FROM parameter_registry WHERE engine = ? AND name = ?').get(config.engine, config.name);
|
|
210
|
+
if (!current)
|
|
211
|
+
return null;
|
|
212
|
+
// Apply delta with bounds
|
|
213
|
+
let newValue = current.value + config.delta;
|
|
214
|
+
if (config.min !== undefined)
|
|
215
|
+
newValue = Math.max(config.min, newValue);
|
|
216
|
+
if (config.max !== undefined)
|
|
217
|
+
newValue = Math.min(config.max, newValue);
|
|
218
|
+
// Don't mutate if no change
|
|
219
|
+
if (Math.abs(newValue - current.value) < 0.0001)
|
|
220
|
+
return null;
|
|
221
|
+
// Mutate!
|
|
222
|
+
this.db.prepare("UPDATE parameter_registry SET value = ?, updated_at = datetime('now') WHERE engine = ? AND name = ?").run(newValue, config.engine, config.name);
|
|
223
|
+
return `${config.engine}.${config.name}: ${current.value} → ${newValue} (Δ${config.delta > 0 ? '+' : ''}${config.delta})`;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
log.warn(`[strategy-executor] Action failed for ${strat.id}: ${err.message}`);
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
recordExecution(strategyId, cycle, details) {
|
|
233
|
+
// Update strategy counters
|
|
234
|
+
this.db.prepare(`
|
|
235
|
+
UPDATE knowledge_strategies SET
|
|
236
|
+
use_count = use_count + 1,
|
|
237
|
+
last_used_at = datetime('now'),
|
|
238
|
+
last_executed_cycle = ?,
|
|
239
|
+
updated_at = datetime('now')
|
|
240
|
+
WHERE id = ?
|
|
241
|
+
`).run(cycle, strategyId);
|
|
242
|
+
// Write to strategy_executions log
|
|
243
|
+
const id = `exec-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
|
|
244
|
+
this.db.prepare(`
|
|
245
|
+
INSERT INTO strategy_executions (id, strategy_id, domain, context_type, executed_at, outcome, notes)
|
|
246
|
+
VALUES (?, ?, 'adaptive', 'auto', datetime('now'), 'pending', ?)
|
|
247
|
+
`).run(id, strategyId, details);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Evaluate past executions — did the action help?
|
|
251
|
+
* Check if metrics improved after eval_after_cycles.
|
|
252
|
+
*/
|
|
253
|
+
evaluate(currentCycle) {
|
|
254
|
+
const pending = this.db.prepare(`
|
|
255
|
+
SELECT se.id, se.strategy_id, se.notes, se.executed_at,
|
|
256
|
+
ks.eval_after_cycles, ks.last_executed_cycle, ks.action_config
|
|
257
|
+
FROM strategy_executions se
|
|
258
|
+
JOIN knowledge_strategies ks ON se.strategy_id = ks.id
|
|
259
|
+
WHERE se.outcome = 'pending'
|
|
260
|
+
`).all();
|
|
261
|
+
for (const p of pending) {
|
|
262
|
+
const executedCycle = p.last_executed_cycle || 0;
|
|
263
|
+
const evalAfter = p.eval_after_cycles || 5;
|
|
264
|
+
if (currentCycle < executedCycle + evalAfter)
|
|
265
|
+
continue;
|
|
266
|
+
// Evaluate: did the metric we tried to influence improve?
|
|
267
|
+
let outcome = 'neutral';
|
|
268
|
+
try {
|
|
269
|
+
const config = JSON.parse(p.action_config);
|
|
270
|
+
if (config.engine && config.name) {
|
|
271
|
+
const currentVal = this.db.prepare('SELECT value FROM parameter_registry WHERE engine = ? AND name = ?').get(config.engine, config.name);
|
|
272
|
+
// Simple heuristic: if system is still running well, count as success
|
|
273
|
+
// More sophisticated: compare metrics before/after
|
|
274
|
+
const recentCycles = this.db.prepare("SELECT AVG(insights_found) as avg_insights FROM cycle_outcomes WHERE created_at > datetime('now', '-1 hour')").get();
|
|
275
|
+
if (recentCycles && recentCycles.avg_insights >= 0.5) {
|
|
276
|
+
outcome = 'success';
|
|
277
|
+
}
|
|
278
|
+
else if (recentCycles && recentCycles.avg_insights < 0.1) {
|
|
279
|
+
outcome = 'failure';
|
|
280
|
+
}
|
|
281
|
+
log.info(`[strategy-executor] Evaluated ${p.strategy_id}: ${outcome} (avg insights: ${recentCycles?.avg_insights?.toFixed(2)})`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
catch { /* */ }
|
|
285
|
+
// Update execution outcome
|
|
286
|
+
this.db.prepare("UPDATE strategy_executions SET outcome = ? WHERE id = ?").run(outcome, p.id);
|
|
287
|
+
// Update strategy success/failure counts
|
|
288
|
+
if (outcome === 'success') {
|
|
289
|
+
this.db.prepare("UPDATE knowledge_strategies SET success_count = success_count + 1, effectiveness = MIN(1.0, effectiveness + 0.05) WHERE id = ?").run(p.strategy_id);
|
|
290
|
+
}
|
|
291
|
+
else if (outcome === 'failure') {
|
|
292
|
+
this.db.prepare("UPDATE knowledge_strategies SET failure_count = failure_count + 1, effectiveness = MAX(0.0, effectiveness - 0.1) WHERE id = ?").run(p.strategy_id);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=strategy-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy-executor.js","sourceRoot":"","sources":["../../src/self-model/strategy-executor.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;AAExB,wDAAwD;AAExD,MAAM,UAAU,4BAA4B,CAAC,EAAqB;IAChE,2DAA2D;IAC3D,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,EAA6B,CAAC;IACpG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACrH,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACvH,CAAC;AACH,CAAC;AA8BD,wDAAwD;AAExD,MAAM,OAAO,gBAAgB;IACnB,EAAE,CAAoB;IAE9B,YAAY,EAAqB;QAC/B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,4BAA4B,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED;;;OAGG;IACK,wBAAwB;QAC9B,kDAAkD;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC,GAAG,EAAmB,CAAC;QAC1I,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC;YAAE,OAAO;QAE7B,wFAAwF;QACxF,IAAI,CAAC,gBAAgB,CAAC,6BAA6B,EAAE;YACnD,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,uEAAuE;YACpF,iBAAiB,EAAE,uBAAuB;YAC1C,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YACvG,WAAW,EAAE,kBAAkB;YAC/B,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YAC3G,iBAAiB,EAAE,CAAC;SACrB,CAAC,CAAC;QAEH,+DAA+D;QAC/D,IAAI,CAAC,gBAAgB,CAAC,8BAA8B,EAAE;YACpD,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,mEAAmE;YAChF,iBAAiB,EAAE,uBAAuB;YAC1C,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YACvG,WAAW,EAAE,kBAAkB;YAC/B,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YAC1G,iBAAiB,EAAE,CAAC;SACrB,CAAC,CAAC;QAEH,wFAAwF;QACxF,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,EAAE;YAClD,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,oEAAoE;YACjF,iBAAiB,EAAE,uBAAuB;YAC1C,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YACvG,WAAW,EAAE,kBAAkB;YAC/B,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;YAC/G,iBAAiB,EAAE,EAAE;SACtB,CAAC,CAAC;QAEH,+FAA+F;QAC/F,IAAI,CAAC,gBAAgB,CAAC,iCAAiC,EAAE;YACvD,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,kFAAkF;YAC/F,iBAAiB,EAAE,uBAAuB;YAC1C,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YAC3G,WAAW,EAAE,kBAAkB;YAC/B,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YACpG,iBAAiB,EAAE,CAAC;SACrB,CAAC,CAAC;QAEH,yGAAyG;QACzG,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,EAAE;YAC/C,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,gGAAgG;YAC7G,iBAAiB,EAAE,sBAAsB;YACzC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;YACnI,WAAW,EAAE,kBAAkB;YAC/B,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YACpG,iBAAiB,EAAE,EAAE;SACtB,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACjE,CAAC;IAEO,gBAAgB,CAAC,EAAU,EAAE,MAKpC;QACC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7F,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;qBAGD,CAAC,CAAC,GAAG,CAClB,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,EAC9F,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;gEAG0C,CAAC,CAAC,GAAG,CAC7D,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EACrC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,EAC9F,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,YAAoB;QAC1B,+DAA+D;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;KAMlC,CAAC,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,CAAkB,CAAC,CAAC,6BAA6B;QAExE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEzC,qDAAqD;QACrD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,eAAe;gBAAE,SAAS;YAE/B,WAAW;YACX,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YACxD,IAAI,OAAO,KAAK,IAAI;gBAAE,SAAS;YAE/B,mBAAmB;YACnB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAEtD,MAAM,MAAM,GAAoB;gBAC9B,UAAU,EAAE,KAAK,CAAC,EAAE;gBACpB,MAAM,EAAE,KAAK,CAAC,WAAY;gBAC1B,eAAe,EAAE,IAAI;gBACrB,QAAQ,EAAE,IAAI;gBACd,OAAO;aACR,CAAC;YAEF,GAAG,CAAC,IAAI,CAAC,gCAAgC,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;YACjE,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,uBAAuB;IACtC,CAAC;IAEO,iBAAiB,CAAC,KAAkB;QAC1C,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAAE,OAAO,KAAK,CAAC;QAEzE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAErD,IAAI,KAAK,CAAC,iBAAiB,KAAK,uBAAuB,EAAE,CAAC;gBACxD,iCAAiC;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,gFAAgF,CACjF,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAkC,CAAC;gBAEhE,IAAI,CAAC,GAAG;oBAAE,OAAO,KAAK,CAAC;gBAEvB,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACxB,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;oBAC9C,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;oBAC9C,KAAK,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC;oBAChD,KAAK,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC;oBAChD,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,iBAAiB,KAAK,sBAAsB,EAAE,CAAC;gBACvD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,4DAA4D,CAC7D,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAuC,CAAC;gBAEjE,IAAI,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAC;gBACxB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEvC,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACxB,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;oBAC1C,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;oBAC1C,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;QAEzB,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,aAAa,CAAC,KAAkB,EAAE,MAAc;QACtD,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QAE5D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAE/C,IAAI,KAAK,CAAC,WAAW,KAAK,kBAAkB,EAAE,CAAC;gBAC7C,qBAAqB;gBACrB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC7B,oEAAoE,CACrE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAkC,CAAC;gBAEnE,IAAI,CAAC,OAAO;oBAAE,OAAO,IAAI,CAAC;gBAE1B,0BAA0B;gBAC1B,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC5C,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;oBAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACxE,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;oBAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAExE,4BAA4B;gBAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM;oBAAE,OAAO,IAAI,CAAC;gBAE7D,UAAU;gBACV,IAAI,CAAC,EAAE,CAAC,OAAO,CACb,qGAAqG,CACtG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAE5C,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,MAAM,QAAQ,MAAM,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;YAC5H,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,yCAAyC,KAAK,CAAC,EAAE,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACzF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,UAAkB,EAAE,KAAa,EAAE,OAAe;QACxE,2BAA2B;QAC3B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAOf,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAE1B,mCAAmC;QACnC,MAAM,EAAE,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGf,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,YAAoB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;KAM/B,CAAC,CAAC,GAAG,EAAoC,CAAC;QAE3C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,aAAa,GAAI,CAAC,CAAC,mBAA8B,IAAI,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAI,CAAC,CAAC,iBAA4B,IAAI,CAAC,CAAC;YAEvD,IAAI,YAAY,GAAG,aAAa,GAAG,SAAS;gBAAE,SAAS;YAEvD,0DAA0D;YAC1D,IAAI,OAAO,GAAsC,SAAS,CAAC;YAC3D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAuB,CAAC,CAAC;gBACrD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAChC,oEAAoE,CACrE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAkC,CAAC;oBAEnE,sEAAsE;oBACtE,mDAAmD;oBACnD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAClC,8GAA8G,CAC/G,CAAC,GAAG,EAA0C,CAAC;oBAEhD,IAAI,YAAY,IAAI,YAAY,CAAC,YAAY,IAAI,GAAG,EAAE,CAAC;wBACrD,OAAO,GAAG,SAAS,CAAC;oBACtB,CAAC;yBAAM,IAAI,YAAY,IAAI,YAAY,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC;wBAC3D,OAAO,GAAG,SAAS,CAAC;oBACtB,CAAC;oBAED,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,WAAW,KAAK,OAAO,mBAAmB,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnI,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;YAEjB,2BAA2B;YAC3B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAE9F,yCAAyC;YACzC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gIAAgI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACvK,CAAC;iBAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,+HAA+H,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACtK,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
package/package.json
CHANGED