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.
Files changed (80) hide show
  1. package/dist/cli/commands/channel.d.ts.map +1 -1
  2. package/dist/cli/commands/channel.js +70 -2
  3. package/dist/cli/commands/channel.js.map +1 -1
  4. package/dist/daemon/api/channels.d.ts +6 -0
  5. package/dist/daemon/api/channels.d.ts.map +1 -0
  6. package/dist/daemon/api/channels.js +143 -0
  7. package/dist/daemon/api/channels.js.map +1 -0
  8. package/dist/daemon/api/server.d.ts.map +1 -1
  9. package/dist/daemon/api/server.js +57 -0
  10. package/dist/daemon/api/server.js.map +1 -1
  11. package/dist/daemon/daemon.d.ts +28 -0
  12. package/dist/daemon/daemon.d.ts.map +1 -1
  13. package/dist/daemon/daemon.js +174 -6
  14. package/dist/daemon/daemon.js.map +1 -1
  15. package/dist/daemon/lib/index.d.ts +1 -0
  16. package/dist/daemon/lib/index.d.ts.map +1 -1
  17. package/dist/daemon/lib/index.js +1 -0
  18. package/dist/daemon/lib/index.js.map +1 -1
  19. package/dist/daemon/lib/safeguards.d.ts +135 -0
  20. package/dist/daemon/lib/safeguards.d.ts.map +1 -0
  21. package/dist/daemon/lib/safeguards.js +250 -0
  22. package/dist/daemon/lib/safeguards.js.map +1 -0
  23. package/dist/daemon/lib/watcher.d.ts.map +1 -1
  24. package/dist/daemon/lib/watcher.js +48 -8
  25. package/dist/daemon/lib/watcher.js.map +1 -1
  26. package/dist/daemon/web/app.js +433 -0
  27. package/dist/daemon/web/index.html +68 -0
  28. package/dist/daemon/web/styles.css +452 -0
  29. package/dist/lib/environment.d.ts +1 -0
  30. package/dist/lib/environment.d.ts.map +1 -1
  31. package/dist/lib/environment.js +14 -0
  32. package/dist/lib/environment.js.map +1 -1
  33. package/dist/lib/invoke.d.ts +8 -0
  34. package/dist/lib/invoke.d.ts.map +1 -1
  35. package/dist/lib/invoke.js +28 -16
  36. package/dist/lib/invoke.js.map +1 -1
  37. package/dist/lib/processor.d.ts +8 -0
  38. package/dist/lib/processor.d.ts.map +1 -1
  39. package/dist/lib/processor.js +16 -2
  40. package/dist/lib/processor.js.map +1 -1
  41. package/dist/lib/validation/persona.d.ts.map +1 -1
  42. package/dist/lib/validation/persona.js +41 -4
  43. package/dist/lib/validation/persona.js.map +1 -1
  44. package/package.json +15 -9
  45. package/dist/lib/channel.test.d.ts +0 -2
  46. package/dist/lib/channel.test.d.ts.map +0 -1
  47. package/dist/lib/channel.test.js +0 -33
  48. package/dist/lib/channel.test.js.map +0 -1
  49. package/dist/lib/frontmatter.test.d.ts +0 -2
  50. package/dist/lib/frontmatter.test.d.ts.map +0 -1
  51. package/dist/lib/frontmatter.test.js +0 -60
  52. package/dist/lib/frontmatter.test.js.map +0 -1
  53. package/dist/lib/integration.test.d.ts +0 -2
  54. package/dist/lib/integration.test.d.ts.map +0 -1
  55. package/dist/lib/integration.test.js +0 -445
  56. package/dist/lib/integration.test.js.map +0 -1
  57. package/dist/lib/invoke.test.d.ts +0 -2
  58. package/dist/lib/invoke.test.d.ts.map +0 -1
  59. package/dist/lib/invoke.test.js +0 -82
  60. package/dist/lib/invoke.test.js.map +0 -1
  61. package/dist/lib/persona.test.d.ts +0 -2
  62. package/dist/lib/persona.test.d.ts.map +0 -1
  63. package/dist/lib/persona.test.js +0 -324
  64. package/dist/lib/persona.test.js.map +0 -1
  65. package/dist/lib/processor.test.d.ts +0 -2
  66. package/dist/lib/processor.test.d.ts.map +0 -1
  67. package/dist/lib/processor.test.js +0 -134
  68. package/dist/lib/processor.test.js.map +0 -1
  69. package/dist/lib/registry.test.d.ts +0 -2
  70. package/dist/lib/registry.test.d.ts.map +0 -1
  71. package/dist/lib/registry.test.js +0 -236
  72. package/dist/lib/registry.test.js.map +0 -1
  73. package/dist/lib/session-thread.test.d.ts +0 -2
  74. package/dist/lib/session-thread.test.d.ts.map +0 -1
  75. package/dist/lib/session-thread.test.js +0 -235
  76. package/dist/lib/session-thread.test.js.map +0 -1
  77. package/dist/lib/session.test.d.ts +0 -2
  78. package/dist/lib/session.test.d.ts.map +0 -1
  79. package/dist/lib/session.test.js +0 -336
  80. package/dist/lib/session.test.js.map +0 -1
@@ -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] Updated ${workflow.name} for channel ${channel}`);
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 readFile(messagePath, "utf-8");
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 readFile(messagePath, "utf-8");
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":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/daemon/daemon.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from "./scheduler.js";
2
2
  export * from "./executor.js";
3
3
  export * from "./watcher.js";
4
+ export * from "./safeguards.js";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -1,4 +1,5 @@
1
1
  export * from "./scheduler.js";
2
2
  export * from "./executor.js";
3
3
  export * from "./watcher.js";
4
+ export * from "./safeguards.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -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"}