dot-agents 0.6.0 → 0.7.5
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/cli/commands/channel.d.ts.map +1 -1
- package/dist/cli/commands/channel.js +70 -2
- package/dist/cli/commands/channel.js.map +1 -1
- package/dist/daemon/api/channels.d.ts +6 -0
- package/dist/daemon/api/channels.d.ts.map +1 -0
- package/dist/daemon/api/channels.js +143 -0
- package/dist/daemon/api/channels.js.map +1 -0
- package/dist/daemon/api/server.d.ts.map +1 -1
- package/dist/daemon/api/server.js +57 -0
- package/dist/daemon/api/server.js.map +1 -1
- package/dist/daemon/daemon.d.ts +28 -0
- package/dist/daemon/daemon.d.ts.map +1 -1
- package/dist/daemon/daemon.js +174 -6
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/lib/index.d.ts +1 -0
- package/dist/daemon/lib/index.d.ts.map +1 -1
- package/dist/daemon/lib/index.js +1 -0
- package/dist/daemon/lib/index.js.map +1 -1
- package/dist/daemon/lib/safeguards.d.ts +135 -0
- package/dist/daemon/lib/safeguards.d.ts.map +1 -0
- package/dist/daemon/lib/safeguards.js +250 -0
- package/dist/daemon/lib/safeguards.js.map +1 -0
- package/dist/daemon/lib/watcher.d.ts.map +1 -1
- package/dist/daemon/lib/watcher.js +48 -8
- package/dist/daemon/lib/watcher.js.map +1 -1
- package/dist/daemon/web/app.js +433 -0
- package/dist/daemon/web/index.html +68 -0
- package/dist/daemon/web/styles.css +452 -0
- package/dist/lib/environment.d.ts +1 -0
- package/dist/lib/environment.d.ts.map +1 -1
- package/dist/lib/environment.js +14 -0
- package/dist/lib/environment.js.map +1 -1
- package/dist/lib/invoke.d.ts +8 -0
- package/dist/lib/invoke.d.ts.map +1 -1
- package/dist/lib/invoke.js +28 -16
- package/dist/lib/invoke.js.map +1 -1
- package/dist/lib/processor.d.ts +8 -0
- package/dist/lib/processor.d.ts.map +1 -1
- package/dist/lib/processor.js +16 -2
- package/dist/lib/processor.js.map +1 -1
- package/dist/lib/validation/persona.d.ts.map +1 -1
- package/dist/lib/validation/persona.js +41 -4
- package/dist/lib/validation/persona.js.map +1 -1
- package/package.json +15 -9
- package/dist/lib/channel.test.d.ts +0 -2
- package/dist/lib/channel.test.d.ts.map +0 -1
- package/dist/lib/channel.test.js +0 -33
- package/dist/lib/channel.test.js.map +0 -1
- package/dist/lib/frontmatter.test.d.ts +0 -2
- package/dist/lib/frontmatter.test.d.ts.map +0 -1
- package/dist/lib/frontmatter.test.js +0 -60
- package/dist/lib/frontmatter.test.js.map +0 -1
- package/dist/lib/integration.test.d.ts +0 -2
- package/dist/lib/integration.test.d.ts.map +0 -1
- package/dist/lib/integration.test.js +0 -445
- package/dist/lib/integration.test.js.map +0 -1
- package/dist/lib/invoke.test.d.ts +0 -2
- package/dist/lib/invoke.test.d.ts.map +0 -1
- package/dist/lib/invoke.test.js +0 -82
- package/dist/lib/invoke.test.js.map +0 -1
- package/dist/lib/persona.test.d.ts +0 -2
- package/dist/lib/persona.test.d.ts.map +0 -1
- package/dist/lib/persona.test.js +0 -324
- package/dist/lib/persona.test.js.map +0 -1
- package/dist/lib/processor.test.d.ts +0 -2
- package/dist/lib/processor.test.d.ts.map +0 -1
- package/dist/lib/processor.test.js +0 -134
- package/dist/lib/processor.test.js.map +0 -1
- package/dist/lib/registry.test.d.ts +0 -2
- package/dist/lib/registry.test.d.ts.map +0 -1
- package/dist/lib/registry.test.js +0 -236
- package/dist/lib/registry.test.js.map +0 -1
- package/dist/lib/session-thread.test.d.ts +0 -2
- package/dist/lib/session-thread.test.d.ts.map +0 -1
- package/dist/lib/session-thread.test.js +0 -235
- package/dist/lib/session-thread.test.js.map +0 -1
- package/dist/lib/session.test.d.ts +0 -2
- package/dist/lib/session.test.d.ts.map +0 -1
- package/dist/lib/session.test.js +0 -336
- package/dist/lib/session.test.js.map +0 -1
package/dist/daemon/daemon.js
CHANGED
|
@@ -1,9 +1,42 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
1
|
+
import { readFile, access, constants } from "node:fs/promises";
|
|
2
2
|
import { requireConfig, listWorkflows, loadWorkflow, listPersonas, loadPersona, getPackageInfo, getRecentSessions as getRecentSessionsFromLib, writePidFile, removePidFile, } from "../lib/index.js";
|
|
3
3
|
import { Scheduler } from "./lib/scheduler.js";
|
|
4
4
|
import { Executor } from "./lib/executor.js";
|
|
5
5
|
import { Watcher } from "./lib/watcher.js";
|
|
6
|
+
import { isSelfReply, RateLimiter, CircuitBreaker } from "./lib/safeguards.js";
|
|
6
7
|
import { createApiServer, startApiServer } from "./api/server.js";
|
|
8
|
+
/**
|
|
9
|
+
* Read a file with retries for cloud-synced files
|
|
10
|
+
*
|
|
11
|
+
* Files synced via iCloud/Syncthing may appear in the filesystem before they're
|
|
12
|
+
* fully readable (EAGAIN error). This function retries with exponential backoff.
|
|
13
|
+
*/
|
|
14
|
+
async function readFileWithRetry(path, maxRetries = 5, initialDelayMs = 100) {
|
|
15
|
+
let lastError;
|
|
16
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
17
|
+
try {
|
|
18
|
+
// Check if file is readable first
|
|
19
|
+
await access(path, constants.R_OK);
|
|
20
|
+
return await readFile(path, "utf-8");
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
lastError = error;
|
|
24
|
+
// Only retry on EAGAIN (-11) or similar transient errors
|
|
25
|
+
const code = error.code;
|
|
26
|
+
if (code !== "EAGAIN" && code !== "EBUSY" && code !== "Unknown system error -11") {
|
|
27
|
+
// For non-transient errors, check the errno
|
|
28
|
+
const errno = error.errno;
|
|
29
|
+
if (errno !== -11) {
|
|
30
|
+
throw error; // Not a transient error, don't retry
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Wait before retrying (exponential backoff)
|
|
34
|
+
const delay = initialDelayMs * Math.pow(2, attempt);
|
|
35
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
throw lastError ?? new Error(`Failed to read file after ${maxRetries} attempts`);
|
|
39
|
+
}
|
|
7
40
|
/**
|
|
8
41
|
* Main daemon class
|
|
9
42
|
*/
|
|
@@ -20,6 +53,13 @@ export class Daemon {
|
|
|
20
53
|
watchEnabled;
|
|
21
54
|
/** Map of channel names to workflows that trigger on them */
|
|
22
55
|
channelTriggers = new Map();
|
|
56
|
+
/** Rate limiter for persona invocations (doom loop protection) */
|
|
57
|
+
rateLimiter = new RateLimiter(5, 60_000);
|
|
58
|
+
/** Circuit breaker for daemon-wide failure protection */
|
|
59
|
+
circuitBreaker = new CircuitBreaker(10, 60_000, 300_000);
|
|
60
|
+
/** Recently processed message IDs for deduplication (prevents double-triggers from awaitWriteFinish) */
|
|
61
|
+
recentlyProcessed = new Map();
|
|
62
|
+
DEDUP_TTL_MS = 60_000; // 1 minute TTL
|
|
23
63
|
constructor(options = {}) {
|
|
24
64
|
this.port = options.port ?? 3141;
|
|
25
65
|
this.watchEnabled = options.watch ?? true;
|
|
@@ -29,14 +69,28 @@ export class Daemon {
|
|
|
29
69
|
}
|
|
30
70
|
// Wire up scheduler events
|
|
31
71
|
this.scheduler.on("job:trigger", async ({ job, workflow }) => {
|
|
72
|
+
// Circuit breaker check
|
|
73
|
+
if (this.circuitBreaker.isTripped()) {
|
|
74
|
+
const state = this.circuitBreaker.getState();
|
|
75
|
+
console.warn(`[trigger] ${workflow.name} BLOCKED by circuit breaker (reset in ${state.timeUntilReset}s)`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
32
78
|
console.log(`[trigger] ${workflow.name} (${job.cron})`);
|
|
33
79
|
try {
|
|
34
80
|
const result = await this.executor.run(workflow, job.inputs);
|
|
35
81
|
this.scheduler.updateJobStatus(job.id, result.success);
|
|
82
|
+
// Record success/failure for circuit breaker
|
|
83
|
+
if (result.success) {
|
|
84
|
+
this.circuitBreaker.recordSuccess();
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.circuitBreaker.recordFailure();
|
|
88
|
+
}
|
|
36
89
|
console.log(`[complete] ${workflow.name}: ${result.success ? "success" : "failure"} (${result.duration}ms)`);
|
|
37
90
|
}
|
|
38
91
|
catch (error) {
|
|
39
92
|
this.scheduler.updateJobStatus(job.id, false);
|
|
93
|
+
this.circuitBreaker.recordFailure();
|
|
40
94
|
console.error(`[error] ${workflow.name}: ${error.message}`);
|
|
41
95
|
}
|
|
42
96
|
});
|
|
@@ -188,7 +242,11 @@ export class Daemon {
|
|
|
188
242
|
if (workflow.on?.channel) {
|
|
189
243
|
const channel = workflow.on.channel.channel;
|
|
190
244
|
this.channelTriggers.set(channel, workflow);
|
|
191
|
-
console.log(`[watcher]
|
|
245
|
+
console.log(`[watcher] Reloaded ${workflow.name} (channel trigger: ${channel})`);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
const jobCount = this.scheduler.getJobs().filter(j => j.workflowName === workflow.name).length;
|
|
249
|
+
console.log(`[watcher] Reloaded ${workflow.name} (${jobCount} scheduled job${jobCount !== 1 ? 's' : ''})`);
|
|
192
250
|
}
|
|
193
251
|
}
|
|
194
252
|
catch (error) {
|
|
@@ -209,14 +267,58 @@ export class Daemon {
|
|
|
209
267
|
}
|
|
210
268
|
}
|
|
211
269
|
});
|
|
270
|
+
// Handle persona file changes (for observability)
|
|
271
|
+
// Note: Personas are loaded fresh on each invocation, so no cache invalidation needed.
|
|
272
|
+
// These handlers provide visibility into persona changes for debugging.
|
|
273
|
+
this.watcher.on("persona:added", ({ path }) => {
|
|
274
|
+
const parts = path.split("/");
|
|
275
|
+
const name = parts[parts.length - 1];
|
|
276
|
+
console.log(`[watcher] Persona added: ${name}`);
|
|
277
|
+
});
|
|
278
|
+
this.watcher.on("persona:changed", ({ path }) => {
|
|
279
|
+
const parts = path.split("/");
|
|
280
|
+
const name = parts[parts.length - 1];
|
|
281
|
+
console.log(`[watcher] Persona changed: ${name} (will use new version on next invocation)`);
|
|
282
|
+
});
|
|
283
|
+
this.watcher.on("persona:removed", ({ path }) => {
|
|
284
|
+
const parts = path.split("/");
|
|
285
|
+
const name = parts[parts.length - 1];
|
|
286
|
+
console.log(`[watcher] Persona removed: ${name}`);
|
|
287
|
+
});
|
|
212
288
|
// Handle DM messages to personas
|
|
213
289
|
this.watcher.on("dm:received", async ({ channel, messageId, messagePath }) => {
|
|
214
290
|
// Extract persona name from channel (e.g., "@channel-manager" -> "channel-manager")
|
|
215
291
|
const personaName = channel.slice(1);
|
|
292
|
+
// Deduplication: skip if we've already processed this message recently
|
|
293
|
+
// (awaitWriteFinish can emit multiple events for the same file)
|
|
294
|
+
const dedupKey = `dm:${channel}:${messageId}`;
|
|
295
|
+
if (this.recentlyProcessed.has(dedupKey)) {
|
|
296
|
+
return; // Silently skip duplicate
|
|
297
|
+
}
|
|
298
|
+
this.recentlyProcessed.set(dedupKey, Date.now());
|
|
299
|
+
// Cleanup old entries periodically
|
|
300
|
+
this.cleanupRecentlyProcessed();
|
|
216
301
|
console.log(`[dm] Received message for ${personaName}: ${messageId}`);
|
|
217
302
|
try {
|
|
218
|
-
// Read the message content
|
|
219
|
-
const messageContent = await
|
|
303
|
+
// Read the message content (with retries for cloud-synced files)
|
|
304
|
+
const messageContent = await readFileWithRetry(messagePath);
|
|
305
|
+
// Self-reply detection (doom loop protection)
|
|
306
|
+
if (isSelfReply(messageContent, personaName)) {
|
|
307
|
+
console.log(`[dm] Skipping self-reply from ${personaName}`);
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
// Rate limiting (doom loop protection)
|
|
311
|
+
if (!this.rateLimiter.tryInvoke(personaName)) {
|
|
312
|
+
const count = this.rateLimiter.getInvocationCount(personaName);
|
|
313
|
+
console.warn(`[dm] Rate limit exceeded for ${personaName} (${count}/5 per minute) - dropping message`);
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
// Circuit breaker check
|
|
317
|
+
if (this.circuitBreaker.isTripped()) {
|
|
318
|
+
const state = this.circuitBreaker.getState();
|
|
319
|
+
console.warn(`[dm] ${personaName} BLOCKED by circuit breaker (reset in ${state.timeUntilReset}s)`);
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
220
322
|
// Strip frontmatter if present
|
|
221
323
|
let content = messageContent;
|
|
222
324
|
if (content.startsWith("---\n")) {
|
|
@@ -231,9 +333,17 @@ export class Daemon {
|
|
|
231
333
|
source: channel,
|
|
232
334
|
context: { DM_MESSAGE_ID: messageId },
|
|
233
335
|
});
|
|
336
|
+
// Record success/failure for circuit breaker
|
|
337
|
+
if (result.success) {
|
|
338
|
+
this.circuitBreaker.recordSuccess();
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
this.circuitBreaker.recordFailure();
|
|
342
|
+
}
|
|
234
343
|
console.log(`[dm] ${personaName}: ${result.success ? "success" : "failure"} (${result.duration}ms)`);
|
|
235
344
|
}
|
|
236
345
|
catch (error) {
|
|
346
|
+
this.circuitBreaker.recordFailure();
|
|
237
347
|
console.error(`[dm] Failed to invoke ${personaName}: ${error.message}`);
|
|
238
348
|
}
|
|
239
349
|
});
|
|
@@ -245,10 +355,31 @@ export class Daemon {
|
|
|
245
355
|
// No workflow registered for this channel - that's fine, not all channels trigger workflows
|
|
246
356
|
return;
|
|
247
357
|
}
|
|
358
|
+
// Deduplication: skip if we've already processed this message recently
|
|
359
|
+
// (awaitWriteFinish can emit multiple events for the same file)
|
|
360
|
+
const dedupKey = `channel:${channel}:${messageId}`;
|
|
361
|
+
if (this.recentlyProcessed.has(dedupKey)) {
|
|
362
|
+
return; // Silently skip duplicate
|
|
363
|
+
}
|
|
364
|
+
this.recentlyProcessed.set(dedupKey, Date.now());
|
|
365
|
+
this.cleanupRecentlyProcessed();
|
|
366
|
+
// Rate limiting for workflow executions (doom loop protection)
|
|
367
|
+
const rateLimitKey = `workflow:${workflow.name}`;
|
|
368
|
+
if (!this.rateLimiter.tryInvoke(rateLimitKey)) {
|
|
369
|
+
const count = this.rateLimiter.getInvocationCount(rateLimitKey);
|
|
370
|
+
console.warn(`[channel] Rate limit exceeded for ${workflow.name} (${count}/5 per minute) - dropping message ${messageId}`);
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
// Circuit breaker check
|
|
374
|
+
if (this.circuitBreaker.isTripped()) {
|
|
375
|
+
const state = this.circuitBreaker.getState();
|
|
376
|
+
console.warn(`[channel] ${workflow.name} BLOCKED by circuit breaker (reset in ${state.timeUntilReset}s)`);
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
248
379
|
console.log(`[channel] ${channel} message ${messageId} -> triggering ${workflow.name}`);
|
|
249
380
|
try {
|
|
250
|
-
// Read the message content
|
|
251
|
-
const messageContent = await
|
|
381
|
+
// Read the message content (with retries for cloud-synced files)
|
|
382
|
+
const messageContent = await readFileWithRetry(messagePath);
|
|
252
383
|
// Strip frontmatter if present
|
|
253
384
|
let content = messageContent;
|
|
254
385
|
if (content.startsWith("---\n")) {
|
|
@@ -265,9 +396,17 @@ export class Daemon {
|
|
|
265
396
|
CHANNEL_NAME: channel,
|
|
266
397
|
};
|
|
267
398
|
const result = await this.executor.run(workflow, { inputs });
|
|
399
|
+
// Record success/failure for circuit breaker
|
|
400
|
+
if (result.success) {
|
|
401
|
+
this.circuitBreaker.recordSuccess();
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
this.circuitBreaker.recordFailure();
|
|
405
|
+
}
|
|
268
406
|
console.log(`[channel] ${workflow.name}: ${result.success ? "success" : "failure"} (${result.duration}ms)`);
|
|
269
407
|
}
|
|
270
408
|
catch (error) {
|
|
409
|
+
this.circuitBreaker.recordFailure();
|
|
271
410
|
console.error(`[channel] Failed to trigger ${workflow.name}: ${error.message}`);
|
|
272
411
|
}
|
|
273
412
|
});
|
|
@@ -364,5 +503,34 @@ export class Daemon {
|
|
|
364
503
|
getPort() {
|
|
365
504
|
return this.port;
|
|
366
505
|
}
|
|
506
|
+
/**
|
|
507
|
+
* Get the config (for API routes that need access to directories)
|
|
508
|
+
*/
|
|
509
|
+
getConfig() {
|
|
510
|
+
return this.config;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Get the watcher instance (for SSE/WebSocket integration)
|
|
514
|
+
*/
|
|
515
|
+
getWatcher() {
|
|
516
|
+
return this.watcher;
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Get circuit breaker state for status reporting
|
|
520
|
+
*/
|
|
521
|
+
getCircuitBreakerState() {
|
|
522
|
+
return this.circuitBreaker.getState();
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Clean up old entries from the deduplication map
|
|
526
|
+
*/
|
|
527
|
+
cleanupRecentlyProcessed() {
|
|
528
|
+
const now = Date.now();
|
|
529
|
+
for (const [key, timestamp] of this.recentlyProcessed) {
|
|
530
|
+
if (now - timestamp > this.DEDUP_TTL_MS) {
|
|
531
|
+
this.recentlyProcessed.delete(key);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
}
|
|
367
535
|
}
|
|
368
536
|
//# sourceMappingURL=daemon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/daemon/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI3D,OAAO,EAIL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,iBAAiB,IAAI,wBAAwB,EAE7C,YAAY,EACZ,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA+BlE;;GAEG;AACH,MAAM,OAAO,MAAM;IACT,MAAM,GAA2B,IAAI,CAAC;IACtC,SAAS,CAAY;IACrB,QAAQ,GAAoB,IAAI,CAAC;IACjC,OAAO,GAAmB,IAAI,CAAC;IAC/B,SAAS,GAAkB,IAAI,CAAC;IAChC,GAAG,GAAmB,IAAI,CAAC;IAC3B,SAAS,GAAgB,IAAI,CAAC;IAC9B,OAAO,GAAG,KAAK,CAAC;IAEhB,IAAI,CAAS;IACb,YAAY,CAAU;IAE9B,6DAA6D;IACrD,eAAe,GAA0B,IAAI,GAAG,EAAE,CAAC;IAE3D,YAAY,UAAyB,EAAE;QACrC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAEjC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC/B,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC3D,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC9D,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvD,OAAO,CAAC,GAAG,CACT,cAAc,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,QAAQ,KAAK,CAChG,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC9C,OAAO,CAAC,KAAK,CAAC,WAAW,QAAQ,CAAC,IAAI,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAEzB,gDAAgD;QAChD,MAAM,OAAO,GAAG,MAAM,cAAc,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,OAAO,CAAC,GAAG,CAAC,IAAI,SAAS,iBAAiB,OAAO,CAAC,OAAO,cAAc,CAAC,CAAC;QAEzE,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE5B,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,4BAA4B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7F,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,kBAAkB;QAClB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAC/C,OAAO,CAAC,GAAG,CACT,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,4BAA4B,QAAQ,iBAAiB,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5G,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,mBAAmB,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC9F,CAAC;QAEF,qBAAqB;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CACxB,IAAI,CAAC,MAAM,CAAC,YAAY,EACxB,IAAI,CAAC,MAAM,CAAC,WAAW,EACvB,IAAI,CAAC,MAAM,CAAC,WAAW,CACxB,CAAC;YACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;QACpE,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,uCAAuC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE5F,iBAAiB;QACjB,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAEvD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAEpC,iBAAiB;QACjB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAEtB,eAAe;QACf,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,IAAI,CAAC,SAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAO,CAAC,YAAY,CAAC,CAAC;QAErE,kCAAkC;QAClC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAErC,4BAA4B;gBAC5B,IAAI,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,IAAI,iBAAiB,OAAO,GAAG,CAAC,CAAC;gBACpE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,IAAI,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAE/C,6BAA6B;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7C,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QAEzE,+BAA+B;QAC/B,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,SAAS;QACT,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,OAAO,CAAC,GAAG,CACT,sBAAsB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,kBAAkB,CACrE,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACnD,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAErC,sCAAsC;gBACtC,IAAI,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,wBAAwB,QAAQ,CAAC,IAAI,gBAAgB,OAAO,EAAE,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,wCAAyC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACrD,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAExC,sCAAsC;gBACtC,mDAAmD;gBACnD,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;gBACD,8CAA8C;gBAC9C,IAAI,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,CAAC,IAAI,gBAAgB,OAAO,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sCAAuC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YAC/C,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;YACnD,0DAA0D;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAEpC,4DAA4D;YAC5D,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACpB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACrC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,iBAAiB,OAAO,EAAE,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,iCAAiC;QACjC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE;YAC3E,oFAAoF;YACpF,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,6BAA6B,WAAW,KAAK,SAAS,EAAE,CAAC,CAAC;YAEtE,IAAI,CAAC;gBACH,2BAA2B;gBAC3B,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAE5D,+BAA+B;gBAC/B,IAAI,OAAO,GAAG,cAAc,CAAC;gBAC7B,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBAC/C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;wBACpB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC/C,CAAC;gBACH,CAAC;gBAED,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,yBAAyB,WAAW,KAAK,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAS,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE;oBACtE,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE;iBACtC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CACT,QAAQ,WAAW,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,QAAQ,KAAK,CACxF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,WAAW,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACrF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,sDAAsD;QACtD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE;YAC/E,iEAAiE;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,4FAA4F;gBAC5F,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,YAAY,SAAS,kBAAkB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAExF,IAAI,CAAC;gBACH,2BAA2B;gBAC3B,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAE5D,+BAA+B;gBAC/B,IAAI,OAAO,GAAG,cAAc,CAAC;gBAC7B,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBAC/C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;wBACpB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC/C,CAAC;gBACH,CAAC;gBAED,yDAAyD;gBACzD,MAAM,MAAM,GAA4B;oBACtC,GAAG,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM;oBAC/B,eAAe,EAAE,OAAO;oBACxB,kBAAkB,EAAE,SAAS;oBAC7B,YAAY,EAAE,OAAO;iBACtB,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAE9D,OAAO,CAAC,GAAG,CACT,aAAa,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,QAAQ,KAAK,CAC/F,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7F,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,MAAgC;QAEhC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAExD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,IAAI,CAAC,QAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAO,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC1C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAO,CAAC,WAAW,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAgE,EAAE,CAAC;QAEjF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;iBACjC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAEnF,6DAA6D;QAC7D,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI;YAClC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI;SACrC,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/daemon/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/daemon/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/daemon/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
|
package/dist/daemon/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/daemon/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/daemon/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a message is a self-reply (from the same persona)
|
|
3
|
+
*
|
|
4
|
+
* Parses the from: field from message frontmatter and compares it
|
|
5
|
+
* against the target persona name. Returns true if the message
|
|
6
|
+
* should be skipped (i.e., it's from the same persona).
|
|
7
|
+
*
|
|
8
|
+
* Fails open: if the from field can't be parsed or is missing,
|
|
9
|
+
* the message is NOT skipped to avoid dropping legitimate messages.
|
|
10
|
+
*
|
|
11
|
+
* @param messageContent - The raw message content (may include frontmatter)
|
|
12
|
+
* @param personaName - The name of the target persona (without @ prefix)
|
|
13
|
+
* @returns true if the message should be skipped (self-reply)
|
|
14
|
+
*/
|
|
15
|
+
export declare function isSelfReply(messageContent: string, personaName: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Rate limiter for persona invocations
|
|
18
|
+
*
|
|
19
|
+
* Tracks invocations per persona with a sliding window.
|
|
20
|
+
* In-memory state - resets on daemon restart.
|
|
21
|
+
*/
|
|
22
|
+
export declare class RateLimiter {
|
|
23
|
+
private maxInvocations;
|
|
24
|
+
private windowMs;
|
|
25
|
+
/** Map of persona name -> list of invocation timestamps */
|
|
26
|
+
private invocations;
|
|
27
|
+
/**
|
|
28
|
+
* Create a new rate limiter
|
|
29
|
+
*
|
|
30
|
+
* @param maxInvocations - Maximum invocations per window (default: 5)
|
|
31
|
+
* @param windowMs - Time window in milliseconds (default: 60000 = 1 minute)
|
|
32
|
+
*/
|
|
33
|
+
constructor(maxInvocations?: number, windowMs?: number);
|
|
34
|
+
/**
|
|
35
|
+
* Check if an invocation should be allowed for a persona
|
|
36
|
+
*
|
|
37
|
+
* @param personaName - The persona to check
|
|
38
|
+
* @returns true if the invocation should be allowed, false if rate limited
|
|
39
|
+
*/
|
|
40
|
+
isAllowed(personaName: string): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Record an invocation for a persona
|
|
43
|
+
*
|
|
44
|
+
* Should be called when an invocation is actually made (after isAllowed check passes).
|
|
45
|
+
*
|
|
46
|
+
* @param personaName - The persona being invoked
|
|
47
|
+
*/
|
|
48
|
+
recordInvocation(personaName: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Check if allowed and record in one operation
|
|
51
|
+
*
|
|
52
|
+
* @param personaName - The persona to check
|
|
53
|
+
* @returns true if the invocation was allowed and recorded, false if rate limited
|
|
54
|
+
*/
|
|
55
|
+
tryInvoke(personaName: string): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Get current invocation count for a persona within the window
|
|
58
|
+
*
|
|
59
|
+
* @param personaName - The persona to check
|
|
60
|
+
* @returns Number of recent invocations
|
|
61
|
+
*/
|
|
62
|
+
getInvocationCount(personaName: string): number;
|
|
63
|
+
/**
|
|
64
|
+
* Reset all rate limiting state (for testing)
|
|
65
|
+
*/
|
|
66
|
+
reset(): void;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Circuit breaker for daemon-wide failure protection
|
|
70
|
+
*
|
|
71
|
+
* Tracks consecutive failures across all executions. When failures exceed
|
|
72
|
+
* a threshold within a time window, the breaker "trips" and blocks new
|
|
73
|
+
* executions until a cooldown period passes.
|
|
74
|
+
*
|
|
75
|
+
* This protects against cascading failures, external service outages,
|
|
76
|
+
* and unforeseen doom loops that bypass other safeguards.
|
|
77
|
+
*/
|
|
78
|
+
export declare class CircuitBreaker {
|
|
79
|
+
private failureThreshold;
|
|
80
|
+
private windowMs;
|
|
81
|
+
private cooldownMs;
|
|
82
|
+
/** Timestamps of recent failures */
|
|
83
|
+
private failures;
|
|
84
|
+
/** Whether the breaker is currently tripped */
|
|
85
|
+
private tripped;
|
|
86
|
+
/** When the breaker was tripped (for cooldown calculation) */
|
|
87
|
+
private trippedAt;
|
|
88
|
+
/**
|
|
89
|
+
* Create a new circuit breaker
|
|
90
|
+
*
|
|
91
|
+
* @param failureThreshold - Number of failures to trigger trip (default: 10)
|
|
92
|
+
* @param windowMs - Time window for counting failures (default: 60000 = 1 minute)
|
|
93
|
+
* @param cooldownMs - Time before auto-reset after trip (default: 300000 = 5 minutes)
|
|
94
|
+
*/
|
|
95
|
+
constructor(failureThreshold?: number, windowMs?: number, cooldownMs?: number);
|
|
96
|
+
/**
|
|
97
|
+
* Record a failure
|
|
98
|
+
*
|
|
99
|
+
* Adds the failure to the tracking window and checks if the breaker should trip.
|
|
100
|
+
*/
|
|
101
|
+
recordFailure(): void;
|
|
102
|
+
/**
|
|
103
|
+
* Record a success
|
|
104
|
+
*
|
|
105
|
+
* Clears the failure count on success (indicates system is healthy).
|
|
106
|
+
*/
|
|
107
|
+
recordSuccess(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Check if the breaker is currently tripped
|
|
110
|
+
*
|
|
111
|
+
* Also handles auto-reset after cooldown period.
|
|
112
|
+
*
|
|
113
|
+
* @returns true if executions should be blocked
|
|
114
|
+
*/
|
|
115
|
+
isTripped(): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Get time remaining until auto-reset (in seconds)
|
|
118
|
+
*
|
|
119
|
+
* @returns Seconds until reset, or 0 if not tripped
|
|
120
|
+
*/
|
|
121
|
+
getTimeUntilReset(): number;
|
|
122
|
+
/**
|
|
123
|
+
* Manually reset the breaker
|
|
124
|
+
*/
|
|
125
|
+
reset(): void;
|
|
126
|
+
/**
|
|
127
|
+
* Get current state for status reporting
|
|
128
|
+
*/
|
|
129
|
+
getState(): {
|
|
130
|
+
tripped: boolean;
|
|
131
|
+
failureCount: number;
|
|
132
|
+
timeUntilReset: number;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=safeguards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safeguards.d.ts","sourceRoot":"","sources":["../../../src/daemon/lib/safeguards.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAyCT;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IAWpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IAXlB,2DAA2D;IAC3D,OAAO,CAAC,WAAW,CAAoC;IAEvD;;;;;OAKG;gBAEO,cAAc,GAAE,MAAU,EAC1B,QAAQ,GAAE,MAAe;IAGnC;;;;;OAKG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAYvC;;;;;;OAMG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAY3C;;;;;OAKG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAQvC;;;;;OAKG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAO/C;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAc;IAgBvB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAjBpB,oCAAoC;IACpC,OAAO,CAAC,QAAQ,CAAgB;IAChC,+CAA+C;IAC/C,OAAO,CAAC,OAAO,CAAkB;IACjC,8DAA8D;IAC9D,OAAO,CAAC,SAAS,CAAuB;IAExC;;;;;;OAMG;gBAEO,gBAAgB,GAAE,MAAW,EAC7B,QAAQ,GAAE,MAAe,EACzB,UAAU,GAAE,MAAgB;IAGtC;;;;OAIG;IACH,aAAa,IAAI,IAAI;IAmBrB;;;;OAIG;IACH,aAAa,IAAI,IAAI;IAIrB;;;;;;OAMG;IACH,SAAS,IAAI,OAAO;IAkBpB;;;;OAIG;IACH,iBAAiB,IAAI,MAAM;IAS3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,QAAQ,IAAI;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB;CAYF"}
|