instar 1.3.666 → 1.3.668
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +12 -9
- package/dist/commands/server.js.map +1 -1
- package/dist/core/MessageSentinel.d.ts +62 -1
- package/dist/core/MessageSentinel.d.ts.map +1 -1
- package/dist/core/MessageSentinel.js +123 -1
- package/dist/core/MessageSentinel.js.map +1 -1
- package/dist/monitoring/AgentWorktreeReaper.d.ts +17 -0
- package/dist/monitoring/AgentWorktreeReaper.d.ts.map +1 -1
- package/dist/monitoring/AgentWorktreeReaper.js +38 -0
- package/dist/monitoring/AgentWorktreeReaper.js.map +1 -1
- package/dist/monitoring/agentWorktreeGit.d.ts +12 -0
- package/dist/monitoring/agentWorktreeGit.d.ts.map +1 -1
- package/dist/monitoring/agentWorktreeGit.js +27 -2
- package/dist/monitoring/agentWorktreeGit.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +10 -5
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +46 -46
- package/upgrades/1.3.667.md +32 -0
- package/upgrades/1.3.668.md +24 -0
- package/upgrades/side-effects/operator-channel-sacred.md +31 -0
- package/upgrades/side-effects/worktree-reaper-untracked-blindspot.md +22 -0
|
@@ -91,6 +91,11 @@ export interface MessageSentinelConfig {
|
|
|
91
91
|
enabled?: boolean;
|
|
92
92
|
/** Skip LLM classification and use fast-path only (default: false) */
|
|
93
93
|
fastPathOnly?: boolean;
|
|
94
|
+
/** Operator-channel-sacred circuit-breaker: rolling window (ms, default 600000). */
|
|
95
|
+
breakerWindowMs?: number;
|
|
96
|
+
/** Operator-channel-sacred circuit-breaker: max pause-consumes per window before
|
|
97
|
+
* it trips and routes further pauses through (default 3). */
|
|
98
|
+
breakerMaxPerWindow?: number;
|
|
94
99
|
}
|
|
95
100
|
export interface SentinelStats {
|
|
96
101
|
/** Total messages classified */
|
|
@@ -117,12 +122,66 @@ export interface SentinelStats {
|
|
|
117
122
|
* Pure pattern-matching, no LLM dependency. Latency negligible (<1ms).
|
|
118
123
|
*/
|
|
119
124
|
export declare function classifyContinuePingIntent(message: string): ContinuePingIntent | null;
|
|
125
|
+
/**
|
|
126
|
+
* Non-word-count-gated deterministic scan: does this message contain a genuine
|
|
127
|
+
* STOP token anywhere? Used before routing a non-deterministic/capacity-shed result
|
|
128
|
+
* through, so a long-form real stop is never dropped. Slash-stop commands count too.
|
|
129
|
+
*/
|
|
130
|
+
export declare function hasStopToken(message: string): boolean;
|
|
131
|
+
/** The disposition the inbound consume sites act on (the ONE place the standard lives). */
|
|
132
|
+
export type InboundDisposition = 'kill' | 'pause' | 'route-through';
|
|
133
|
+
export interface InboundDecision {
|
|
134
|
+
disposition: InboundDisposition;
|
|
135
|
+
category: SentinelCategory;
|
|
136
|
+
/** the underlying classification method (audit) */
|
|
137
|
+
method: 'fast-path' | 'llm' | 'default';
|
|
138
|
+
reason?: string;
|
|
139
|
+
}
|
|
120
140
|
export declare class MessageSentinel {
|
|
121
141
|
private config;
|
|
122
142
|
private stats;
|
|
123
143
|
private customStopExact;
|
|
124
144
|
private customPauseExact;
|
|
145
|
+
/** Operator-channel-sacred disposition counters (observability — /metrics/features). */
|
|
146
|
+
dispositionStats: {
|
|
147
|
+
pauseConsumed: number;
|
|
148
|
+
pauseRoutedThrough: number;
|
|
149
|
+
breakerRecovered: number;
|
|
150
|
+
stopRescued: number;
|
|
151
|
+
};
|
|
152
|
+
/** Bounded-blast-radius circuit-breaker: per-topic pause-consume timestamps (rolling window).
|
|
153
|
+
* Shared across BOTH inbound consume paths because both use this one MessageSentinel instance.
|
|
154
|
+
* In-memory by design: the PRIMARY guard is deterministic-only-consume (below), so a restart
|
|
155
|
+
* resetting this can never reintroduce the lockout — the breaker is defense-in-depth only. */
|
|
156
|
+
private recentPauseConsumes;
|
|
157
|
+
private readonly breakerWindowMs;
|
|
158
|
+
private readonly breakerMaxPerWindow;
|
|
125
159
|
constructor(config?: MessageSentinelConfig);
|
|
160
|
+
/**
|
|
161
|
+
* Decide what to do with an inbound operator message — the SINGLE place the
|
|
162
|
+
* "Operator Channel Is Sacred" standard is enforced. Both inbound consume sites
|
|
163
|
+
* (TelegramAdapter.onSentinelIntercept and routes.ts /internal/telegram-forward)
|
|
164
|
+
* call this and act on the disposition, so the policy can never diverge between
|
|
165
|
+
* paths. `topicId` (optional) drives the bounded-blast-radius circuit-breaker.
|
|
166
|
+
*
|
|
167
|
+
* - emergency-stop → 'kill' (prefer-stop; its false-positive is RECOVERABLE).
|
|
168
|
+
* - pause + fast-path (deterministic match) → 'pause' (consume).
|
|
169
|
+
* - pause + non-deterministic (LLM verdict OR capacity-shed) → NEVER consume:
|
|
170
|
+
* if the message contains a stop token (long-form stop that bypassed the
|
|
171
|
+
* ≤4-word fast-path / was capacity-shed) → 'kill'; else → 'route-through'.
|
|
172
|
+
* - circuit-breaker (bounded blast radius): the breaker caps how many times a
|
|
173
|
+
* topic can be pause-CONSUMED within the window (breakerMaxPerWindow). Once it
|
|
174
|
+
* trips, even a deterministic 'pause' routes THROUGH (auto-recover) — so no
|
|
175
|
+
* stream of pauses, deterministic OR not, can permanently seal the operator's
|
|
176
|
+
* channel. emergency-stop ('kill') is NEVER gated by the breaker, and a
|
|
177
|
+
* route-through ALWAYS delivers — the breaker can only ever convert a
|
|
178
|
+
* consume into a delivery, never the reverse. Resets by window expiry.
|
|
179
|
+
*/
|
|
180
|
+
decideInboundDisposition(message: string, topicId?: number): Promise<InboundDecision>;
|
|
181
|
+
/** Has this topic been pause-consumed more than the cap within the rolling window? */
|
|
182
|
+
private breakerTripped;
|
|
183
|
+
/** Record a pause-consume timestamp for the breaker. */
|
|
184
|
+
private recordPauseConsume;
|
|
126
185
|
/**
|
|
127
186
|
* Classify an incoming user message.
|
|
128
187
|
*
|
|
@@ -180,7 +239,9 @@ export declare class MessageSentinel {
|
|
|
180
239
|
/**
|
|
181
240
|
* Get current stats.
|
|
182
241
|
*/
|
|
183
|
-
getStats(): SentinelStats
|
|
242
|
+
getStats(): SentinelStats & {
|
|
243
|
+
disposition: typeof MessageSentinel.prototype.dispositionStats;
|
|
244
|
+
};
|
|
184
245
|
/**
|
|
185
246
|
* Reset stats.
|
|
186
247
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageSentinel.d.ts","sourceRoot":"","sources":["../../src/core/MessageSentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKvD,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAElF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,sBAAsB;IACrC,4CAA4C;IAC5C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,MAAM,EAAE,WAAW,GAAG,KAAK,GAAG,SAAS,CAAC;IACxC,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;AAE7B,MAAM,WAAW,qBAAqB;IACpC,mDAAmD;IACnD,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageSentinel.d.ts","sourceRoot":"","sources":["../../src/core/MessageSentinel.ts"],"names":[],"mappings":"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"}
|
|
@@ -200,12 +200,54 @@ export function classifyContinuePingIntent(message) {
|
|
|
200
200
|
return 'intent_b';
|
|
201
201
|
return 'intent_a';
|
|
202
202
|
}
|
|
203
|
+
// ── Operator-Channel-Sacred: inbound disposition (CMT — topic 28130) ──
|
|
204
|
+
//
|
|
205
|
+
// Standard "The Operator Channel Is Sacred — Critical-Path Gates Fail Toward
|
|
206
|
+
// Delivery" (docs/STANDARDS-REGISTRY.md). A 'pause' classification may CONSUME the
|
|
207
|
+
// operator's inbound message ONLY on a DETERMINISTIC fast-path match — never on a
|
|
208
|
+
// bare-LLM or capacity-shed guess (the LLM self-reports high confidence regardless
|
|
209
|
+
// of correctness; the capacity-shed path defaults to 'pause' under spawn-cap
|
|
210
|
+
// saturation — that is the 2026-06-25 lockout mechanism). A non-deterministic
|
|
211
|
+
// 'pause' routes THROUGH, but first a NON-word-count-gated stop-token scan runs so a
|
|
212
|
+
// long-form genuine "stop" (which the ≤4-word fast-path missed and the LLM may have
|
|
213
|
+
// capacity-shed) still fails toward STOP rather than being silently delivered.
|
|
214
|
+
/** Whole-word stop tokens (no word-count gate, anywhere in the message). */
|
|
215
|
+
const STOP_TOKEN_SCAN = [
|
|
216
|
+
/\b(stop|abort|cancel|halt|cease|terminate)\b/i,
|
|
217
|
+
/\bkill\s+(it|this|that|the\s+\w+|everything|session)\b/i,
|
|
218
|
+
];
|
|
219
|
+
/**
|
|
220
|
+
* Non-word-count-gated deterministic scan: does this message contain a genuine
|
|
221
|
+
* STOP token anywhere? Used before routing a non-deterministic/capacity-shed result
|
|
222
|
+
* through, so a long-form real stop is never dropped. Slash-stop commands count too.
|
|
223
|
+
*/
|
|
224
|
+
export function hasStopToken(message) {
|
|
225
|
+
const t = (message ?? '').toLowerCase().trim();
|
|
226
|
+
if (!t)
|
|
227
|
+
return false;
|
|
228
|
+
for (const s of SLASH_STOP)
|
|
229
|
+
if (t === s || t.startsWith(s + ' '))
|
|
230
|
+
return true;
|
|
231
|
+
for (const re of STOP_TOKEN_SCAN)
|
|
232
|
+
if (re.test(t))
|
|
233
|
+
return true;
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
203
236
|
// ── Sentinel Implementation ──────────────────────────────────────────
|
|
204
237
|
export class MessageSentinel {
|
|
205
238
|
config;
|
|
206
239
|
stats;
|
|
207
240
|
customStopExact;
|
|
208
241
|
customPauseExact;
|
|
242
|
+
/** Operator-channel-sacred disposition counters (observability — /metrics/features). */
|
|
243
|
+
dispositionStats = { pauseConsumed: 0, pauseRoutedThrough: 0, breakerRecovered: 0, stopRescued: 0 };
|
|
244
|
+
/** Bounded-blast-radius circuit-breaker: per-topic pause-consume timestamps (rolling window).
|
|
245
|
+
* Shared across BOTH inbound consume paths because both use this one MessageSentinel instance.
|
|
246
|
+
* In-memory by design: the PRIMARY guard is deterministic-only-consume (below), so a restart
|
|
247
|
+
* resetting this can never reintroduce the lockout — the breaker is defense-in-depth only. */
|
|
248
|
+
recentPauseConsumes = new Map();
|
|
249
|
+
breakerWindowMs;
|
|
250
|
+
breakerMaxPerWindow;
|
|
209
251
|
constructor(config = {}) {
|
|
210
252
|
this.config = config;
|
|
211
253
|
this.stats = {
|
|
@@ -218,6 +260,83 @@ export class MessageSentinel {
|
|
|
218
260
|
// Merge custom patterns
|
|
219
261
|
this.customStopExact = new Set((config.customStopPatterns ?? []).map(p => p.toLowerCase().trim()));
|
|
220
262
|
this.customPauseExact = new Set((config.customPausePatterns ?? []).map(p => p.toLowerCase().trim()));
|
|
263
|
+
// Circuit-breaker knobs (config-tunable per operator-channel-sacred FD2).
|
|
264
|
+
this.breakerWindowMs = config.breakerWindowMs ?? 10 * 60 * 1000;
|
|
265
|
+
this.breakerMaxPerWindow = config.breakerMaxPerWindow ?? 3;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Decide what to do with an inbound operator message — the SINGLE place the
|
|
269
|
+
* "Operator Channel Is Sacred" standard is enforced. Both inbound consume sites
|
|
270
|
+
* (TelegramAdapter.onSentinelIntercept and routes.ts /internal/telegram-forward)
|
|
271
|
+
* call this and act on the disposition, so the policy can never diverge between
|
|
272
|
+
* paths. `topicId` (optional) drives the bounded-blast-radius circuit-breaker.
|
|
273
|
+
*
|
|
274
|
+
* - emergency-stop → 'kill' (prefer-stop; its false-positive is RECOVERABLE).
|
|
275
|
+
* - pause + fast-path (deterministic match) → 'pause' (consume).
|
|
276
|
+
* - pause + non-deterministic (LLM verdict OR capacity-shed) → NEVER consume:
|
|
277
|
+
* if the message contains a stop token (long-form stop that bypassed the
|
|
278
|
+
* ≤4-word fast-path / was capacity-shed) → 'kill'; else → 'route-through'.
|
|
279
|
+
* - circuit-breaker (bounded blast radius): the breaker caps how many times a
|
|
280
|
+
* topic can be pause-CONSUMED within the window (breakerMaxPerWindow). Once it
|
|
281
|
+
* trips, even a deterministic 'pause' routes THROUGH (auto-recover) — so no
|
|
282
|
+
* stream of pauses, deterministic OR not, can permanently seal the operator's
|
|
283
|
+
* channel. emergency-stop ('kill') is NEVER gated by the breaker, and a
|
|
284
|
+
* route-through ALWAYS delivers — the breaker can only ever convert a
|
|
285
|
+
* consume into a delivery, never the reverse. Resets by window expiry.
|
|
286
|
+
*/
|
|
287
|
+
async decideInboundDisposition(message, topicId) {
|
|
288
|
+
const c = await this.classify(message);
|
|
289
|
+
const method = c.method;
|
|
290
|
+
if (c.category === 'emergency-stop') {
|
|
291
|
+
return { disposition: 'kill', category: 'emergency-stop', method, reason: c.reason };
|
|
292
|
+
}
|
|
293
|
+
if (c.category === 'pause') {
|
|
294
|
+
const deterministic = method === 'fast-path';
|
|
295
|
+
if (deterministic && !this.breakerTripped(topicId)) {
|
|
296
|
+
this.recordPauseConsume(topicId);
|
|
297
|
+
this.dispositionStats.pauseConsumed++;
|
|
298
|
+
return { disposition: 'pause', category: 'pause', method, reason: c.reason };
|
|
299
|
+
}
|
|
300
|
+
// Non-deterministic 'pause' (bare LLM verdict, capacity-shed), OR a deterministic
|
|
301
|
+
// pause suppressed by the breaker: NEVER consume. First rescue a genuine stop.
|
|
302
|
+
if (hasStopToken(message)) {
|
|
303
|
+
this.dispositionStats.stopRescued++;
|
|
304
|
+
return {
|
|
305
|
+
disposition: 'kill', category: 'emergency-stop', method,
|
|
306
|
+
reason: 'stop token present on a non-deterministic/breaker-suppressed result — rescued to STOP (operator-channel-sacred)',
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
if (this.breakerTripped(topicId))
|
|
310
|
+
this.dispositionStats.breakerRecovered++;
|
|
311
|
+
this.dispositionStats.pauseRoutedThrough++;
|
|
312
|
+
return {
|
|
313
|
+
disposition: 'route-through', category: 'normal', method,
|
|
314
|
+
reason: 'non-deterministic pause routed through (operator-channel-sacred: never consume a benign message on a brittle/capacity-shed signal)',
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
return { disposition: 'route-through', category: c.category, method, reason: c.reason };
|
|
318
|
+
}
|
|
319
|
+
/** Has this topic been pause-consumed more than the cap within the rolling window? */
|
|
320
|
+
breakerTripped(topicId) {
|
|
321
|
+
if (topicId == null)
|
|
322
|
+
return false;
|
|
323
|
+
const arr = this.recentPauseConsumes.get(topicId);
|
|
324
|
+
if (!arr || arr.length === 0)
|
|
325
|
+
return false;
|
|
326
|
+
const cutoff = Date.now() - this.breakerWindowMs;
|
|
327
|
+
const live = arr.filter(t => t >= cutoff);
|
|
328
|
+
if (live.length !== arr.length)
|
|
329
|
+
this.recentPauseConsumes.set(topicId, live);
|
|
330
|
+
return live.length >= this.breakerMaxPerWindow;
|
|
331
|
+
}
|
|
332
|
+
/** Record a pause-consume timestamp for the breaker. */
|
|
333
|
+
recordPauseConsume(topicId) {
|
|
334
|
+
if (topicId == null)
|
|
335
|
+
return;
|
|
336
|
+
const cutoff = Date.now() - this.breakerWindowMs;
|
|
337
|
+
const arr = (this.recentPauseConsumes.get(topicId) ?? []).filter(t => t >= cutoff);
|
|
338
|
+
arr.push(Date.now());
|
|
339
|
+
this.recentPauseConsumes.set(topicId, arr);
|
|
221
340
|
}
|
|
222
341
|
/**
|
|
223
342
|
* Classify an incoming user message.
|
|
@@ -553,7 +672,10 @@ export class MessageSentinel {
|
|
|
553
672
|
* Get current stats.
|
|
554
673
|
*/
|
|
555
674
|
getStats() {
|
|
556
|
-
|
|
675
|
+
// dispositionStats surfaced here (operator-channel-sacred observability): the
|
|
676
|
+
// /sentinel/stats route exposes pause.consumed / .routed-through / breaker.recovered
|
|
677
|
+
// so "is the gate eating messages?" is a number, not a guess.
|
|
678
|
+
return { ...this.stats, disposition: { ...this.dispositionStats } };
|
|
557
679
|
}
|
|
558
680
|
/**
|
|
559
681
|
* Reset stats.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageSentinel.js","sourceRoot":"","sources":["../../src/core/MessageSentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAiF1E,uEAAuE;AAEvE;;;;;;;;GAQG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC,wEAAwE;AAExE;;;GAGG;AACH,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IACnD,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,SAAS;IACT,UAAU;IACV,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,gBAAgB;IAChB,OAAO;IACP,MAAM;IACN,MAAM;IACN,WAAW;CACZ,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC;IAC9C,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAC;IAC/C,QAAQ;IACR,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,kBAAkB,GAAsB;IAC5C,UAAU,EAA0B,6BAA6B;IACjE,kCAAkC,EAAG,gCAAgC;IACrE,eAAe,EAAsB,wBAAwB;IAC7D,OAAO,EAA8B,4CAA4C;IACjF,eAAe,EAAsB,gBAAgB;IACrD,6BAA6B,EAAQ,qCAAqC;CAC3E,CAAC;AAEF,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC;IACpD,MAAM;IACN,OAAO;IACP,SAAS;IACT,UAAU;IACV,OAAO;IACP,YAAY;IACZ,SAAS;IACT,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAsB;IAC7C,UAAU;IACV,WAAW;IACX,WAAW;IACX,WAAW;IACX,2BAA2B;IAC3B,gBAAgB;CACjB,CAAC;AAEF,wEAAwE;AACxE,EAAE;AACF,yEAAyE;AACzE,oEAAoE;AACpE,wEAAwE;AACxE,wEAAwE;AACxE,MAAM,oBAAoB,GAAsB;IAC9C,cAAc;IACd,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,OAAO;IACP,SAAS;IACT,UAAU;IACV,oBAAoB;CACrB,CAAC;AAEF,+DAA+D;AAC/D,uDAAuD;AACvD,MAAM,iBAAiB,GAAsB;IAC3C,2CAA2C;IAC3C,+CAA+C;IAC/C,qCAAqC;IACrC,0CAA0C;CAC3C,CAAC;AAEF,uEAAuE;AACvE,uEAAuE;AACvE,MAAM,wBAAwB,GAAsB;IAClD,yGAAyG;IACzG,sDAAsD;CACvD,CAAC;AAEF,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAEnC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,sEAAsE;IACtE,wDAAwD;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,SAAS,GAAG,uBAAuB;QAAE,OAAO,IAAI,CAAC;IAErD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,8CAA8C;IAC9C,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAElC,oEAAoE;IACpE,sDAAsD;IACtD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;WAClC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,IAAI,WAAW;QAAE,OAAO,UAAU,CAAC;IAEnC,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IAEpE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,wEAAwE;AAExE,MAAM,OAAO,eAAe;IAClB,MAAM,CAAwB;IAC9B,KAAK,CAAgB;IACrB,eAAe,CAAc;IAC7B,gBAAgB,CAAc;IAEtC,YAAY,SAAgC,EAAE;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG;YACX,eAAe,EAAE,CAAC;YAClB,UAAU,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;YAC3E,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;YACpD,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;SAClB,CAAC;QAEF,wBAAwB;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAC5B,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CACnE,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAC7B,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CACpE,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAClC,OAAO;gBACL,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;gBAChC,MAAM,EAAE,mBAAmB;gBAC3B,kBAAkB,EAAE,IAAI;aACzB,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,kEAAkE;QAClE,6DAA6D;QAC7D,+DAA+D;QAC/D,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAE/D,oCAAoC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO;gBACL,GAAG,UAAU;gBACb,MAAM,EAAE,WAAW;gBACnB,SAAS,EAAE,OAAO;gBAClB,kBAAkB;aACnB,CAAC;QACJ,CAAC;QAED,oEAAoE;QACpE,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YACpF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO;gBACL,GAAG,SAAS;gBACZ,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,OAAO;gBAClB,kBAAkB;aACnB,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,GAAG;YACf,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,OAAO;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;YAChC,MAAM,EAAE,sCAAsC;YAC9C,kBAAkB;SACnB,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,kBAAkB,CACxB,MAA4D,EAC5D,OAAe;QAEf,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO;YAAE,OAAO,MAAM,CAAC;QAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACrD,IAAI,SAAS,IAAI,yBAAyB;YAAE,OAAO,MAAM,CAAC;QAC1D,OAAO,CAAC,GAAG,CACT,0CAA0C,SAAS,YAAY,yBAAyB,yDAAyD,CAClJ,CAAC;QACF,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;YAChC,MAAM,EAAE,qBAAqB,SAAS,6BAA6B,yBAAyB,uCAAuC,MAAM,CAAC,MAAM,GAAG;SACpJ,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACK,YAAY,CAAC,OAAe;QAClC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAEpC,8EAA8E;QAC9E,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,QAAQ,EAAE,gBAAgB;gBAC1B,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;gBAChC,MAAM,EAAE,kBAAkB,KAAK,EAAE;aAClC,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,QAAQ,EAAE,OAAO;gBACjB,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;gBACjC,MAAM,EAAE,kBAAkB,KAAK,EAAE;aAClC,CAAC;QACJ,CAAC;QAED,8EAA8E;QAC9E,4DAA4D;QAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAC9C,IAAI,SAAS,GAAG,mBAAmB,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,+BAA+B;QAC/B,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,OAAO;gBACL,QAAQ,EAAE,gBAAgB;gBAC1B,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;gBAChC,MAAM,EAAE,iBAAiB,KAAK,GAAG;aAClC,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpE,OAAO;gBACL,QAAQ,EAAE,OAAO;gBACjB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;gBACjC,MAAM,EAAE,iBAAiB,KAAK,GAAG;aAClC,CAAC;QACJ,CAAC;QAED,kCAAkC;QAClC,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,QAAQ,EAAE,gBAAgB;oBAC1B,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;oBAChC,MAAM,EAAE,kBAAkB,OAAO,EAAE;iBACpC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;YAC1C,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,QAAQ,EAAE,OAAO;oBACjB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;oBACjC,MAAM,EAAE,kBAAkB,OAAO,EAAE;iBACpC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,IAAI,OAAO,KAAK,OAAO,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5G,sCAAsC;YACtC,IAAI,6CAA6C,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChE,OAAO;oBACL,QAAQ,EAAE,gBAAgB;oBAC1B,UAAU,EAAE,GAAG;oBACf,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;oBAChC,MAAM,EAAE,0BAA0B,OAAO,GAAG;iBAC7C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,OAAe;QACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC9B,OAAO;gBACL,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;gBAChC,MAAM,EAAE,0BAA0B;aACnC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG;YACb,sDAAsD;YACtD,gEAAgE;YAChE,EAAE;YACF,4JAA4J;YAC5J,2JAA2J;YAC3J,kIAAkI;YAClI,oNAAoN;YACpN,EAAE;YACF,0HAA0H;YAC1H,8GAA8G;YAC9G,kMAAkM;YAClM,kHAAkH;YAClH,iGAAiG;YACjG,EAAE;YACF,oFAAoF;YACpF,wEAAwE;YACxE,uGAAuG;YACvG,EAAE;YACF,aAAa,OAAO,GAAG;YACvB,EAAE;YACF,4EAA4E;SAC7E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAC/D,SAAS,EAAE,EAAE;gBACb,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,oCAAoC;gBACjG,uEAAuE;gBACvE,0EAA0E;gBAC1E,0EAA0E;gBAC1E,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;oBAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACvC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACnD,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,kDAAkD,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjG,OAAO;oBACL,QAAQ,EAAE,QAAQ;oBAClB,UAAU,EAAE,GAAG;oBACf,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;oBAChC,MAAM,EAAE,2CAA2C;iBACpD,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;gBACpC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACvD,MAAM,EAAE,uBAAuB,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE;aACtF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wEAAwE;YACxE,mEAAmE;YACnE,sEAAsE;YACtE,2EAA2E;YAC3E,qEAAqE;YACrE,uEAAuE;YACvE,yEAAyE;YACzE,8BAA8B;YAC9B,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO;oBACL,QAAQ,EAAE,OAAO;oBACjB,UAAU,EAAE,GAAG;oBACf,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;oBACjC,MAAM,EAAE,wGAAwG;iBACjH,CAAC;YACJ,CAAC;YACD,0EAA0E;YAC1E,OAAO;gBACL,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;gBAChC,MAAM,EAAE,uDAAuD;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,eAAe,CAAC,QAAgB;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAuB,CAAC,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE9F,2BAA2B;QAC3B,IAAI,eAAe,CAAC,QAAQ,CAAC,OAA2B,CAAC,EAAE,CAAC;YAC1D,OAAO,EAAE,QAAQ,EAAE,OAA2B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAChE,CAAC;QAED,4EAA4E;QAC5E,iEAAiE;QACjE,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2EAA2E;QAC3E,mDAAmD;QACnD,MAAM,aAAa,GAAuB,CAAC,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5F,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACvE,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACzC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,QAA0B,EAAE,OAAe;QAClE,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,gBAAgB;gBACnB,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;YAClC,KAAK,OAAO;gBACV,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;YACnC,KAAK,UAAU;gBACb,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;YAC9C,KAAK,QAAQ;gBACX,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,QAA0B,EAAE,MAAc,EAAE,SAAiB;QAC/E,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAErE,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC9B,CAAC;QAED,kBAAkB;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,KAAK,GAAG;YACX,eAAe,EAAE,CAAC;YAClB,UAAU,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;YAC3E,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;YACpD,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC;IACvC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"MessageSentinel.js","sourceRoot":"","sources":["../../src/core/MessageSentinel.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,13 @@ export interface AgentWorktreeReaperConfig {
|
|
|
32
32
|
reapIntervalMs: number;
|
|
33
33
|
/** Bounded blast radius per pass. */
|
|
34
34
|
maxReapsPerPass: number;
|
|
35
|
+
/**
|
|
36
|
+
* Per-path consecutive-removal-failure breaker (No Unbounded Loops standard).
|
|
37
|
+
* After this many consecutive `removeWorktree` failures for the SAME path, the
|
|
38
|
+
* reaper stops attempting it (keeps it as `reclaim-failed`) until restart, so a
|
|
39
|
+
* permanently-unremovable worktree can't be retried forever. 0 disables the brake.
|
|
40
|
+
*/
|
|
41
|
+
maxReclaimFailuresPerPath: number;
|
|
35
42
|
}
|
|
36
43
|
export declare const DEFAULT_AGENT_WORKTREE_REAPER_CONFIG: AgentWorktreeReaperConfig;
|
|
37
44
|
export interface WorktreeInfo {
|
|
@@ -73,6 +80,11 @@ export declare class AgentWorktreeReaper extends EventEmitter {
|
|
|
73
80
|
private running;
|
|
74
81
|
private lastPassAt;
|
|
75
82
|
private reapedLastPass;
|
|
83
|
+
/** Per-path consecutive removal-failure counts (breaker). Keyed by worktree path;
|
|
84
|
+
* cleared on a successful removal of that path. Process-lifetime (resets on restart). */
|
|
85
|
+
private reclaimFailures;
|
|
86
|
+
/** Paths whose breaker has tripped + already emitted (emit-once). */
|
|
87
|
+
private reclaimTripped;
|
|
76
88
|
constructor(deps: AgentWorktreeReaperDeps, cfg?: Partial<AgentWorktreeReaperConfig>);
|
|
77
89
|
start(): void;
|
|
78
90
|
stop(): void;
|
|
@@ -90,6 +102,11 @@ export declare class AgentWorktreeReaper extends EventEmitter {
|
|
|
90
102
|
reaped: string[];
|
|
91
103
|
dryRun: boolean;
|
|
92
104
|
}>;
|
|
105
|
+
/** True when this path's removal has failed >= the configured cap (breaker open).
|
|
106
|
+
* cap 0 disables the brake (never trips). */
|
|
107
|
+
private breakerTripped;
|
|
108
|
+
/** Record one removal failure for a path; emit the breaker-trip ONCE when the cap is reached. */
|
|
109
|
+
private recordReclaimFailure;
|
|
93
110
|
/** Observability snapshot for GET /worktrees/agent-reaper (no side effects). */
|
|
94
111
|
snapshot(): {
|
|
95
112
|
enabled: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentWorktreeReaper.d.ts","sourceRoot":"","sources":["../../src/monitoring/AgentWorktreeReaper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentWorktreeReaper.d.ts","sourceRoot":"","sources":["../../src/monitoring/AgentWorktreeReaper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED,eAAO,MAAM,oCAAoC,EAAE,yBAMlD,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,eAAe,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,aAAa,EAAE,MAAM,YAAY,EAAE,CAAC;IACpC,sEAAsE;IACtE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,uEAAuE;IACvE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC;IAC1C;2EACuE;IACvE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,gFAAgF;IAChF,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA4B;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,KAAK,CAAC,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAK;IAC3B;8FAC0F;IAC1F,OAAO,CAAC,eAAe,CAA6B;IACpD,qEAAqE;IACrE,OAAO,CAAC,cAAc,CAAqB;gBAE/B,IAAI,EAAE,uBAAuB,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC;IAOnF,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI;IAIZ,OAAO,KAAK,YAAY,GAEvB;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,kBAAkB;IAWhD,6EAA6E;IACvE,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,kBAAkB,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAsD3G;kDAC8C;IAC9C,OAAO,CAAC,cAAc;IAMtB,iGAAiG;IACjG,OAAO,CAAC,oBAAoB;IAU5B,gFAAgF;IAChF,QAAQ,IAAI;QACV,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAC9E,SAAS,EAAE,kBAAkB,EAAE,CAAC;QAChC,WAAW,EAAE,MAAM,CAAC;KACrB;CAiBF"}
|
|
@@ -31,6 +31,7 @@ export const DEFAULT_AGENT_WORKTREE_REAPER_CONFIG = {
|
|
|
31
31
|
dryRun: true,
|
|
32
32
|
reapIntervalMs: 24 * 3600 * 1000,
|
|
33
33
|
maxReapsPerPass: 20,
|
|
34
|
+
maxReclaimFailuresPerPath: 3,
|
|
34
35
|
};
|
|
35
36
|
export class AgentWorktreeReaper extends EventEmitter {
|
|
36
37
|
cfg;
|
|
@@ -40,6 +41,11 @@ export class AgentWorktreeReaper extends EventEmitter {
|
|
|
40
41
|
running = false;
|
|
41
42
|
lastPassAt = 0;
|
|
42
43
|
reapedLastPass = 0;
|
|
44
|
+
/** Per-path consecutive removal-failure counts (breaker). Keyed by worktree path;
|
|
45
|
+
* cleared on a successful removal of that path. Process-lifetime (resets on restart). */
|
|
46
|
+
reclaimFailures = new Map();
|
|
47
|
+
/** Paths whose breaker has tripped + already emitted (emit-once). */
|
|
48
|
+
reclaimTripped = new Set();
|
|
43
49
|
constructor(deps, cfg) {
|
|
44
50
|
super();
|
|
45
51
|
this.deps = deps;
|
|
@@ -106,6 +112,13 @@ export class AgentWorktreeReaper extends EventEmitter {
|
|
|
106
112
|
evaluations.push({ path: info.path, branch: info.branch, verdict: 'keep', reason: 'eval-error' });
|
|
107
113
|
continue;
|
|
108
114
|
}
|
|
115
|
+
// Per-path failure breaker (No Unbounded Loops): a reap-eligible worktree
|
|
116
|
+
// whose removal has failed too many times is no longer attempted — surfaced
|
|
117
|
+
// honestly as keep('reclaim-failed') so the operator sees WHY it persists.
|
|
118
|
+
if (evaln.verdict === 'reap-eligible' && this.breakerTripped(info.path)) {
|
|
119
|
+
evaluations.push({ path: info.path, branch: info.branch, verdict: 'keep', reason: 'reclaim-failed' });
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
109
122
|
evaluations.push(evaln);
|
|
110
123
|
if (evaln.verdict !== 'reap-eligible')
|
|
111
124
|
continue;
|
|
@@ -117,9 +130,16 @@ export class AgentWorktreeReaper extends EventEmitter {
|
|
|
117
130
|
try {
|
|
118
131
|
this.deps.removeWorktree(info.path);
|
|
119
132
|
reaped.push(info.path);
|
|
133
|
+
this.reclaimFailures.delete(info.path); // success → clear the breaker count
|
|
134
|
+
this.reclaimTripped.delete(info.path);
|
|
120
135
|
this.emit('reaped', info);
|
|
121
136
|
}
|
|
122
137
|
catch (err) {
|
|
138
|
+
// @silent-fallback-ok: NOT silent — the removal failure is surfaced via
|
|
139
|
+
// emit('error') AND recorded for the per-path breaker (which itself
|
|
140
|
+
// emit('reclaim-breaker')s once on trip). The worktree is simply kept and
|
|
141
|
+
// retried (bounded by the breaker), the safe direction for a deletion op.
|
|
142
|
+
this.recordReclaimFailure(info.path);
|
|
123
143
|
this.emit('error', err);
|
|
124
144
|
}
|
|
125
145
|
}
|
|
@@ -132,6 +152,24 @@ export class AgentWorktreeReaper extends EventEmitter {
|
|
|
132
152
|
}
|
|
133
153
|
return { ts: this.now(), evaluations, reaped, dryRun: !this.killsEnabled };
|
|
134
154
|
}
|
|
155
|
+
/** True when this path's removal has failed >= the configured cap (breaker open).
|
|
156
|
+
* cap 0 disables the brake (never trips). */
|
|
157
|
+
breakerTripped(path) {
|
|
158
|
+
const cap = this.cfg.maxReclaimFailuresPerPath;
|
|
159
|
+
if (cap <= 0)
|
|
160
|
+
return false;
|
|
161
|
+
return (this.reclaimFailures.get(path) ?? 0) >= cap;
|
|
162
|
+
}
|
|
163
|
+
/** Record one removal failure for a path; emit the breaker-trip ONCE when the cap is reached. */
|
|
164
|
+
recordReclaimFailure(path) {
|
|
165
|
+
const cap = this.cfg.maxReclaimFailuresPerPath;
|
|
166
|
+
const n = (this.reclaimFailures.get(path) ?? 0) + 1;
|
|
167
|
+
this.reclaimFailures.set(path, n);
|
|
168
|
+
if (cap > 0 && n >= cap && !this.reclaimTripped.has(path)) {
|
|
169
|
+
this.reclaimTripped.add(path);
|
|
170
|
+
this.emit('reclaim-breaker', { path, failures: n });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
135
173
|
/** Observability snapshot for GET /worktrees/agent-reaper (no side effects). */
|
|
136
174
|
snapshot() {
|
|
137
175
|
let worktrees = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentWorktreeReaper.js","sourceRoot":"","sources":["../../src/monitoring/AgentWorktreeReaper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentWorktreeReaper.js","sourceRoot":"","sources":["../../src/monitoring/AgentWorktreeReaper.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,18 @@
|
|
|
7
7
|
* op — `git worktree remove` — goes through SafeGitExecutor.execSync.
|
|
8
8
|
*/
|
|
9
9
|
import type { AgentWorktreeReaperDeps } from './AgentWorktreeReaper.js';
|
|
10
|
+
/**
|
|
11
|
+
* Reaper-specific residue denylist (spec: worktree-reaper-untracked-blindspot).
|
|
12
|
+
* INTENTIONALLY NARROWER than worktreeDirtyCheck's DEFAULT_RESIDUE_DENYLIST: this
|
|
13
|
+
* list gates an irreversible `git worktree remove`, so it contains ONLY paths that
|
|
14
|
+
* are unambiguously never user work. It deliberately EXCLUDES the broad
|
|
15
|
+
* `out/` / `build/` / `coverage/` / `*.log` entries of the shared default — users
|
|
16
|
+
* legitimately hand-author files under those (a `build/deploy.md`, an `analysis.log`),
|
|
17
|
+
* and an untracked one of those on a merged worktree must NEVER be silently reaped.
|
|
18
|
+
* We do NOT mutate DEFAULT_RESIDUE_DENYLIST (it feeds the separate yield-safety
|
|
19
|
+
* config list + other consumers); the reaper carries its own list.
|
|
20
|
+
*/
|
|
21
|
+
export declare const REAPER_RESIDUE_DENYLIST: readonly string[];
|
|
10
22
|
/** Read-only git executor signature (injected so this module is testable). */
|
|
11
23
|
export type ReadGit = (args: string[], cwd: string) => string;
|
|
12
24
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentWorktreeGit.d.ts","sourceRoot":"","sources":["../../src/monitoring/agentWorktreeGit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"agentWorktreeGit.d.ts","sourceRoot":"","sources":["../../src/monitoring/agentWorktreeGit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,uBAAuB,EAAgB,MAAM,0BAA0B,CAAC;AAEtF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAIpD,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAgB9D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAU1G;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;yEACqE;IACrE,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,GAAG,uBAAuB,CAqH1B"}
|
|
@@ -10,6 +10,23 @@ import fs from 'node:fs';
|
|
|
10
10
|
import path from 'node:path';
|
|
11
11
|
import { execFileSync } from 'node:child_process';
|
|
12
12
|
import { SafeGitExecutor } from '../core/SafeGitExecutor.js';
|
|
13
|
+
import { classifyPorcelain } from '../core/worktreeDirtyCheck.js';
|
|
14
|
+
/**
|
|
15
|
+
* Reaper-specific residue denylist (spec: worktree-reaper-untracked-blindspot).
|
|
16
|
+
* INTENTIONALLY NARROWER than worktreeDirtyCheck's DEFAULT_RESIDUE_DENYLIST: this
|
|
17
|
+
* list gates an irreversible `git worktree remove`, so it contains ONLY paths that
|
|
18
|
+
* are unambiguously never user work. It deliberately EXCLUDES the broad
|
|
19
|
+
* `out/` / `build/` / `coverage/` / `*.log` entries of the shared default — users
|
|
20
|
+
* legitimately hand-author files under those (a `build/deploy.md`, an `analysis.log`),
|
|
21
|
+
* and an untracked one of those on a merged worktree must NEVER be silently reaped.
|
|
22
|
+
* We do NOT mutate DEFAULT_RESIDUE_DENYLIST (it feeds the separate yield-safety
|
|
23
|
+
* config list + other consumers); the reaper carries its own list.
|
|
24
|
+
*/
|
|
25
|
+
export const REAPER_RESIDUE_DENYLIST = [
|
|
26
|
+
'dist/', 'node_modules/', '.cache/', '.turbo/', '*.tsbuildinfo',
|
|
27
|
+
'.metadata_never_index', // instar-managed Spotlight-exclusion marker — never work
|
|
28
|
+
'.instar/instar-dev-traces/', // instar audit-trace droppings — never work
|
|
29
|
+
];
|
|
13
30
|
const defaultReadGit = (args, cwd) => SafeGitExecutor.readSync(args, {
|
|
14
31
|
cwd,
|
|
15
32
|
encoding: 'utf-8',
|
|
@@ -166,12 +183,20 @@ export function makeAgentWorktreeReaperDeps(opts) {
|
|
|
166
183
|
return out;
|
|
167
184
|
},
|
|
168
185
|
isClean: (p) => {
|
|
186
|
+
// Residue-aware via the PURE classifyPorcelain (NOT the fail-OPEN
|
|
187
|
+
// makeWorktreeDirtyCheck wrapper): a worktree whose only entries are
|
|
188
|
+
// reaper-residue (build artifacts / instar markers) is clean; ANY
|
|
189
|
+
// non-residue change — tracked OR a hand-authored untracked file — is dirty.
|
|
190
|
+
// FAIL-CLOSED on any error: cannot determine cleanliness → treat as dirty
|
|
191
|
+
// (KEEP). This is the deletion-safe direction (spec
|
|
192
|
+
// worktree-reaper-untracked-blindspot, convergence BLOCKER): a transient
|
|
193
|
+
// `git status` failure must never make a worktree look reapable.
|
|
169
194
|
try {
|
|
170
|
-
return readGit(['-C', p, 'status', '--porcelain'], p)
|
|
195
|
+
return !classifyPorcelain(readGit(['-C', p, 'status', '--porcelain'], p), REAPER_RESIDUE_DENYLIST);
|
|
171
196
|
}
|
|
172
197
|
catch {
|
|
173
198
|
return false;
|
|
174
|
-
}
|
|
199
|
+
}
|
|
175
200
|
},
|
|
176
201
|
isMerged: (info) => {
|
|
177
202
|
const base = resolveBaseRef(readGit, repo);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentWorktreeGit.js","sourceRoot":"","sources":["../../src/monitoring/agentWorktreeGit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"agentWorktreeGit.js","sourceRoot":"","sources":["../../src/monitoring/agentWorktreeGit.ts"],"names":[],"mappings":"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"}
|