instar 1.3.835 → 1.3.837
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/dashboard/subscriptions.js +11 -2
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +1 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +4 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +4 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SpawnAdmission.d.ts +17 -0
- package/dist/core/SpawnAdmission.d.ts.map +1 -1
- package/dist/core/SpawnAdmission.js +32 -1
- package/dist/core/SpawnAdmission.js.map +1 -1
- package/dist/core/devGatedFeatures.js +1 -1
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/messaging/pending-relay-store.d.ts +21 -0
- package/dist/messaging/pending-relay-store.d.ts.map +1 -1
- package/dist/messaging/pending-relay-store.js +82 -0
- package/dist/messaging/pending-relay-store.js.map +1 -1
- package/dist/monitoring/BurnThrottleRunbook.d.ts +5 -1
- package/dist/monitoring/BurnThrottleRunbook.d.ts.map +1 -1
- package/dist/monitoring/BurnThrottleRunbook.js +40 -0
- package/dist/monitoring/BurnThrottleRunbook.js.map +1 -1
- package/dist/monitoring/delivery-failure-sentinel.d.ts.map +1 -1
- package/dist/monitoring/delivery-failure-sentinel.js +133 -95
- package/dist/monitoring/delivery-failure-sentinel.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +20 -20
- package/src/templates/scripts/telegram-reply.sh +25 -0
- package/upgrades/1.3.836.md +24 -0
- package/upgrades/1.3.837.md +33 -0
- package/upgrades/eli16/telegram-recovery-queue-truth.md +12 -0
- package/upgrades/side-effects/ownership-gated-spawn-increment-1-4.md +25 -0
- package/upgrades/side-effects/telegram-recovery-queue-truth.md +81 -0
- package/upgrades/side-effects/throttle-episode-narration-and-subscription-drift-ui.md +43 -0
|
@@ -88,6 +88,43 @@ export function resolvePendingRelayPath(stateDir, agentId) {
|
|
|
88
88
|
export function resolvePendingRelayLockPath(stateDir, agentId) {
|
|
89
89
|
return path.join(stateDir, 'state', `pending-relay.${sanitizeAgentId(agentId)}.sqlite.lock`);
|
|
90
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Quarantine historical zero-byte stores created before the canonical resolver
|
|
93
|
+
* was shared by the shell, server, and queue route. Rename is atomic within the
|
|
94
|
+
* directory: even if a legacy writer opens the file between classification and
|
|
95
|
+
* rename, any later bytes remain preserved under the quarantine name. Nothing
|
|
96
|
+
* is deleted automatically.
|
|
97
|
+
*/
|
|
98
|
+
export function cleanupLegacyEmptyPendingRelayStores(stateDir, agentId, beforeQuarantine) {
|
|
99
|
+
const safe = sanitizeAgentId(agentId);
|
|
100
|
+
const candidates = [
|
|
101
|
+
path.join(stateDir, 'pending-relay.db'),
|
|
102
|
+
path.join(stateDir, `pending-relay.${safe}.sqlite`),
|
|
103
|
+
path.join(stateDir, 'server-data', 'pending-relay.db'),
|
|
104
|
+
path.join(stateDir, 'server-data', `pending-relay.${safe}.sqlite`),
|
|
105
|
+
path.join(stateDir, 'state', 'pending-relay.db'),
|
|
106
|
+
path.join(stateDir, 'state', 'pending-relay.sqlite'),
|
|
107
|
+
path.join(stateDir, 'state', 'pending-relay.sqlite3'),
|
|
108
|
+
];
|
|
109
|
+
const canonical = resolvePendingRelayPath(stateDir, agentId);
|
|
110
|
+
const quarantined = [];
|
|
111
|
+
for (const candidate of candidates) {
|
|
112
|
+
if (candidate === canonical)
|
|
113
|
+
continue;
|
|
114
|
+
try {
|
|
115
|
+
if (fs.statSync(candidate).size !== 0)
|
|
116
|
+
continue;
|
|
117
|
+
beforeQuarantine?.(candidate);
|
|
118
|
+
const quarantine = `${candidate}.legacy-empty-quarantine-${process.pid}-${Date.now()}`;
|
|
119
|
+
fs.renameSync(candidate, quarantine);
|
|
120
|
+
quarantined.push(quarantine);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// @silent-fallback-ok: missing/non-file/raced candidate; canonical open continues.
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return quarantined;
|
|
127
|
+
}
|
|
91
128
|
/**
|
|
92
129
|
* Defensive — the agentId comes from config.json which is operator-controlled
|
|
93
130
|
* but should not contain path separators; if it ever does, we'd land in a
|
|
@@ -110,6 +147,7 @@ export class PendingRelayStore {
|
|
|
110
147
|
catch { /* already closed */ } });
|
|
111
148
|
}
|
|
112
149
|
static open(agentId, stateDir) {
|
|
150
|
+
cleanupLegacyEmptyPendingRelayStores(stateDir, agentId);
|
|
113
151
|
const dbPath = resolvePendingRelayPath(stateDir, agentId);
|
|
114
152
|
fs.mkdirSync(path.dirname(dbPath), { recursive: true });
|
|
115
153
|
let db;
|
|
@@ -354,6 +392,50 @@ export class PendingRelayStore {
|
|
|
354
392
|
});
|
|
355
393
|
return tx();
|
|
356
394
|
}
|
|
395
|
+
/** Renew an owned claim without permitting a stale owner to steal it back. */
|
|
396
|
+
renewClaim(deliveryId, expectedClaimedBy, newClaimedBy) {
|
|
397
|
+
const result = this.db.prepare(`UPDATE entries SET claimed_by = @newClaimedBy
|
|
398
|
+
WHERE delivery_id = @deliveryId AND state = 'claimed' AND claimed_by = @expectedClaimedBy`).run({ deliveryId, expectedClaimedBy, newClaimedBy });
|
|
399
|
+
return result.changes === 1;
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Fenced post-claim transition. Only the worker holding the exact current
|
|
403
|
+
* ownership token may finalize or release the row.
|
|
404
|
+
*/
|
|
405
|
+
transitionClaimed(deliveryId, expectedClaimedBy, newState, additionalFields = {}) {
|
|
406
|
+
const tx = this.db.transaction(() => {
|
|
407
|
+
const current = this.db.prepare(`SELECT status_history FROM entries
|
|
408
|
+
WHERE delivery_id = ? AND state = 'claimed' AND claimed_by = ?`).get(deliveryId, expectedClaimedBy);
|
|
409
|
+
if (!current)
|
|
410
|
+
return false;
|
|
411
|
+
let history;
|
|
412
|
+
try {
|
|
413
|
+
const parsed = JSON.parse(current.status_history);
|
|
414
|
+
history = Array.isArray(parsed) ? parsed : [];
|
|
415
|
+
}
|
|
416
|
+
catch {
|
|
417
|
+
history = [];
|
|
418
|
+
}
|
|
419
|
+
history.push({ state: newState, at: new Date().toISOString() });
|
|
420
|
+
const fields = ['state = @state', 'status_history = @history'];
|
|
421
|
+
const params = {
|
|
422
|
+
deliveryId,
|
|
423
|
+
expectedClaimedBy,
|
|
424
|
+
state: newState,
|
|
425
|
+
history: JSON.stringify(history),
|
|
426
|
+
};
|
|
427
|
+
for (const [key, value] of Object.entries(additionalFields)) {
|
|
428
|
+
if (value === undefined)
|
|
429
|
+
continue;
|
|
430
|
+
fields.push(`${key} = @${key}`);
|
|
431
|
+
params[key] = value;
|
|
432
|
+
}
|
|
433
|
+
const result = this.db.prepare(`UPDATE entries SET ${fields.join(', ')}
|
|
434
|
+
WHERE delivery_id = @deliveryId AND state = 'claimed' AND claimed_by = @expectedClaimedBy`).run(params);
|
|
435
|
+
return result.changes === 1;
|
|
436
|
+
});
|
|
437
|
+
return tx();
|
|
438
|
+
}
|
|
357
439
|
/**
|
|
358
440
|
* List the rows a restore-purge at `cutoffIso` WOULD delete — so the
|
|
359
441
|
* caller can make the loss traceable (per-row log + degradation report)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending-relay-store.js","sourceRoot":"","sources":["../../src/messaging/pending-relay-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pending-relay-store.js","sourceRoot":"","sources":["../../src/messaging/pending-relay-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,9 +33,11 @@ export interface BurnThrottleConfig {
|
|
|
33
33
|
autoThrottleOnUnknown: boolean;
|
|
34
34
|
/** Throttle duration (default 60min). */
|
|
35
35
|
throttleDurationMs: number;
|
|
36
|
+
/** Quiet period after an episode closes before the same key may open another. */
|
|
37
|
+
notificationCooldownMs: number;
|
|
36
38
|
}
|
|
37
39
|
export declare const DEFAULT_BURN_THROTTLE_CONFIG: BurnThrottleConfig;
|
|
38
|
-
export type RunbookOutcomeKind = 'alert-only-unknown' | 'alert-only-config-disabled' | 'alert-only-self-attribution' | 'alert-only-snoozed' | 'throttle-installed' | 'throttle-failed';
|
|
40
|
+
export type RunbookOutcomeKind = 'alert-only-unknown' | 'alert-only-config-disabled' | 'alert-only-self-attribution' | 'alert-only-snoozed' | 'throttle-installed' | 'throttle-suppressed-episode' | 'throttle-failed';
|
|
39
41
|
export interface RunbookOutcome {
|
|
40
42
|
kind: RunbookOutcomeKind;
|
|
41
43
|
attributionKey: string;
|
|
@@ -74,6 +76,7 @@ export declare class BurnThrottleRunbook {
|
|
|
74
76
|
private readonly alertTopicId;
|
|
75
77
|
private readonly now;
|
|
76
78
|
private readonly isSnoozed;
|
|
79
|
+
private readonly episodes;
|
|
77
80
|
constructor(deps: BurnThrottleRunbookDeps);
|
|
78
81
|
/**
|
|
79
82
|
* Handle a burn-detection signal. Called from a subscriber hook on
|
|
@@ -83,6 +86,7 @@ export declare class BurnThrottleRunbook {
|
|
|
83
86
|
* can inspect what happened.
|
|
84
87
|
*/
|
|
85
88
|
handle(event: DegradationEvent): RunbookOutcome;
|
|
89
|
+
private openEpisode;
|
|
86
90
|
private fireTelegram;
|
|
87
91
|
}
|
|
88
92
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BurnThrottleRunbook.d.ts","sourceRoot":"","sources":["../../src/monitoring/BurnThrottleRunbook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,YAAY,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B,yCAAyC;IACzC,kBAAkB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"BurnThrottleRunbook.d.ts","sourceRoot":"","sources":["../../src/monitoring/BurnThrottleRunbook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,YAAY,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B,yCAAyC;IACzC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iFAAiF;IACjF,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,4BAA4B,EAAE,kBAK1C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,4BAA4B,GAC5B,6BAA6B,GAC7B,oBAAoB,GACpB,oBAAoB,GACpB,6BAA6B,GAC7B,iBAAiB,CAAC;AAEtB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1F,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,qFAAqF;IACrF,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;CACjD;AAED,+DAA+D;AAC/D,eAAO,MAAM,cAAc,0BAA0B,CAAC;AAEtD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwG;gBAErH,IAAI,EAAE,uBAAuB;IASzC;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,cAAc;IAkI/C,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,YAAY;CAYrB;AAID;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAGrE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAI9D;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,yGAAyG;AACzG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAazG"}
|
|
@@ -22,6 +22,7 @@ export const DEFAULT_BURN_THROTTLE_CONFIG = {
|
|
|
22
22
|
autoThrottle: true,
|
|
23
23
|
autoThrottleOnUnknown: false,
|
|
24
24
|
throttleDurationMs: 60 * 60 * 1000,
|
|
25
|
+
notificationCooldownMs: 15 * 60 * 1000,
|
|
25
26
|
};
|
|
26
27
|
/** Identity tag the runbook uses when installing throttles. */
|
|
27
28
|
export const RUNBOOK_ISSUER = 'burn-throttle-runbook';
|
|
@@ -32,6 +33,7 @@ export class BurnThrottleRunbook {
|
|
|
32
33
|
alertTopicId;
|
|
33
34
|
now;
|
|
34
35
|
isSnoozed;
|
|
36
|
+
episodes = new Map();
|
|
35
37
|
constructor(deps) {
|
|
36
38
|
this.gate = deps.gate;
|
|
37
39
|
this.config = { ...DEFAULT_BURN_THROTTLE_CONFIG, ...(deps.config ?? {}) };
|
|
@@ -52,6 +54,26 @@ export class BurnThrottleRunbook {
|
|
|
52
54
|
const trigger = extractTrigger(event);
|
|
53
55
|
const decidedAt = new Date(this.now()).toISOString();
|
|
54
56
|
const signalId = `${event.timestamp}:${attributionKey}`;
|
|
57
|
+
// Narrate state transitions, never detector ticks. Once a throttle episode
|
|
58
|
+
// is open, repeated signals for the same component neither reinstall the
|
|
59
|
+
// throttle nor emit another user-facing notice. The post-close cooldown
|
|
60
|
+
// also absorbs detector lag around the expiry boundary.
|
|
61
|
+
const episode = this.episodes.get(attributionKey);
|
|
62
|
+
if (episode && this.now() < episode.cooldownUntil) {
|
|
63
|
+
return {
|
|
64
|
+
kind: 'throttle-suppressed-episode',
|
|
65
|
+
attributionKey,
|
|
66
|
+
decidedAt,
|
|
67
|
+
trigger,
|
|
68
|
+
reason: this.now() < episode.closesAt
|
|
69
|
+
? 'Throttle episode is already open; duplicate signal suppressed.'
|
|
70
|
+
: 'Throttle episode recently closed; cooldown signal suppressed.',
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
if (episode) {
|
|
74
|
+
clearTimeout(episode.timer);
|
|
75
|
+
this.episodes.delete(attributionKey);
|
|
76
|
+
}
|
|
55
77
|
// 1. Self-attribution: refuse to throttle the runbook itself, AND emit
|
|
56
78
|
// a high-severity escalation alert. Per Phase 4 second-pass review §3:
|
|
57
79
|
// silent swallow is the wrong response here — if the runbook itself
|
|
@@ -126,6 +148,7 @@ export class BurnThrottleRunbook {
|
|
|
126
148
|
capabilityToken: token,
|
|
127
149
|
});
|
|
128
150
|
this.fireTelegram(`${alertText}\n\nI have slowed this component down. It will resume automatically in ${Math.round(this.config.throttleDurationMs / 60000)} minutes, or you can reply STOP to release it sooner.`);
|
|
151
|
+
this.openEpisode(attributionKey, throttle);
|
|
129
152
|
return {
|
|
130
153
|
kind: 'throttle-installed',
|
|
131
154
|
attributionKey,
|
|
@@ -146,6 +169,23 @@ export class BurnThrottleRunbook {
|
|
|
146
169
|
};
|
|
147
170
|
}
|
|
148
171
|
}
|
|
172
|
+
openEpisode(attributionKey, throttle) {
|
|
173
|
+
const closesAt = Date.parse(throttle.expiresAt);
|
|
174
|
+
const delay = Math.max(0, closesAt - this.now());
|
|
175
|
+
const timer = setTimeout(() => {
|
|
176
|
+
const current = this.episodes.get(attributionKey);
|
|
177
|
+
if (!current || current.timer !== timer)
|
|
178
|
+
return;
|
|
179
|
+
this.fireTelegram(`The token-burn slowdown for ${humanize(attributionKey)} has ended automatically. ` +
|
|
180
|
+
'Normal activity is available again.');
|
|
181
|
+
}, delay);
|
|
182
|
+
timer.unref?.();
|
|
183
|
+
this.episodes.set(attributionKey, {
|
|
184
|
+
closesAt,
|
|
185
|
+
cooldownUntil: closesAt + this.config.notificationCooldownMs,
|
|
186
|
+
timer,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
149
189
|
fireTelegram(text) {
|
|
150
190
|
if (!this.sendTelegram)
|
|
151
191
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BurnThrottleRunbook.js","sourceRoot":"","sources":["../../src/monitoring/BurnThrottleRunbook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"BurnThrottleRunbook.js","sourceRoot":"","sources":["../../src/monitoring/BurnThrottleRunbook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-failure-sentinel.d.ts","sourceRoot":"","sources":["../../src/monitoring/delivery-failure-sentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,qCAAqC,CAAC;AAG9F,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AActE,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4FAA4F;IAC5F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,iBAAiB,CAAC;IACzB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,UAAU,EAAE,MAAM;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,CACvB,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,KAClF,MAAM,IAAI,CAAC;IAChB,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,mEAAmE;IACnE,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,OAAO;IAClB;;;gBAGY;IACZ,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,KACzB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,qEAAqE;IACrE,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAeD,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,EAAE,CAAC;IACvB,kBAAkB,EAAE,EAAE,CAAC;IACvB,wBAAwB,EAAE,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxF,oBAAoB,EAAE,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,qBAAqB,EAAE,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClF,oBAAoB,EAAE,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpF,kCAAkC,EAAE,CAAC;QAAE,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,kCAAkC,EAAE,EAAE,CAAC;CACxC;AAED,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2B;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAEnB;IACF,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,iBAAiB,CAA6B;IACtD,qEAAqE;IACrE,OAAO,CAAC,cAAc,CAAQ;IAC9B,wEAAwE;IACxE,OAAO,CAAC,aAAa,CAAS;gBAElB,IAAI,EAAE,YAAY,EAAE,MAAM,GAAE,cAAmB;IAyB3D;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuE5B,wEAAwE;IAClE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,oEAAoE;IACpE,WAAW,IAAI,OAAO;IAItB;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IA+DlF,OAAO,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"delivery-failure-sentinel.d.ts","sourceRoot":"","sources":["../../src/monitoring/delivery-failure-sentinel.ts"],"names":[],"mappings":"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"}
|
|
@@ -261,8 +261,9 @@ export class DeliveryFailureSentinel extends EventEmitter {
|
|
|
261
261
|
const nowIso = new Date(this.deps.now()).toISOString();
|
|
262
262
|
try {
|
|
263
263
|
const rows = this.deps.store.selectClaimable(nowIso, 100);
|
|
264
|
-
//
|
|
265
|
-
//
|
|
264
|
+
// A boot-id change does not itself make an active network send stale.
|
|
265
|
+
// Reclaim only after the timestamped lease expires; the owner renews it
|
|
266
|
+
// while awaiting I/O.
|
|
266
267
|
return rows.filter((row) => {
|
|
267
268
|
if (row.state !== 'claimed')
|
|
268
269
|
return true;
|
|
@@ -281,9 +282,7 @@ export class DeliveryFailureSentinel extends EventEmitter {
|
|
|
281
282
|
const parts = row.claimed_by.split(':');
|
|
282
283
|
if (parts.length < 3)
|
|
283
284
|
return true;
|
|
284
|
-
const
|
|
285
|
-
if (bootId !== this.deps.bootId)
|
|
286
|
-
return true;
|
|
285
|
+
const leaseUntilIso = parts.slice(2).join(':');
|
|
287
286
|
const lease = Date.parse(leaseUntilIso);
|
|
288
287
|
if (Number.isNaN(lease))
|
|
289
288
|
return true;
|
|
@@ -292,98 +291,130 @@ export class DeliveryFailureSentinel extends EventEmitter {
|
|
|
292
291
|
async processRow(row) {
|
|
293
292
|
// Claim the row — write the lease.
|
|
294
293
|
const leaseUntil = new Date(this.deps.now() + this.cfg.leaseDurationMs).toISOString();
|
|
295
|
-
|
|
296
|
-
|
|
294
|
+
let claimedBy = `${this.deps.bootId}:${process.pid}:${leaseUntil}`;
|
|
295
|
+
// Atomic claim at the drain chokepoint. `transition()` was read-then-write:
|
|
296
|
+
// two sentinel instances that selected the same queued row could both
|
|
297
|
+
// report success and both POST it. CAS binds the claim to the selected
|
|
298
|
+
// state/owner so exactly one drain may send a delivery_id.
|
|
299
|
+
const claimed = this.deps.store.claimCas(row.delivery_id, claimedBy, {
|
|
300
|
+
state: row.state,
|
|
301
|
+
claimed_by: row.claimed_by,
|
|
302
|
+
});
|
|
297
303
|
if (!claimed) {
|
|
298
304
|
// Lost the race — another instance grabbed it (shared worktree case).
|
|
299
305
|
return 'retry';
|
|
300
306
|
}
|
|
301
|
-
|
|
302
|
-
const
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
}
|
|
318
|
-
if (whoami.agentId !== cfg.agentId) {
|
|
319
|
-
return this.handlePolicyDecision(row, evaluatePolicy({
|
|
320
|
-
httpCode: 403,
|
|
321
|
-
responseBody: JSON.stringify({ error: 'agent_id_mismatch' }),
|
|
322
|
-
attempts: row.attempts,
|
|
323
|
-
timeSinceFirstMs: this.deps.now() - Date.parse(row.attempted_at),
|
|
324
|
-
now: this.deps.now,
|
|
325
|
-
}));
|
|
326
|
-
}
|
|
327
|
-
// Re-tone-gate the queued text. Apply redaction first so secrets in
|
|
328
|
-
// the queued body never reach the tone gate provider (defense-in-
|
|
329
|
-
// depth — they shouldn't be there in the first place, but we don't
|
|
330
|
-
// want to amplify a leak by sending it to a third-party LLM).
|
|
331
|
-
const text = redact(row.text.toString('utf-8'));
|
|
332
|
-
const toneResult = await checkToneLocally(this.deps.toneGate, text, {
|
|
333
|
-
channel: 'telegram',
|
|
334
|
-
});
|
|
335
|
-
if (!toneResult.passed) {
|
|
336
|
-
return this.finalizeToneGated(row, toneResult.rule);
|
|
337
|
-
}
|
|
338
|
-
// POST /telegram/reply with the delivery-id header for server-side dedup.
|
|
339
|
-
let resp;
|
|
307
|
+
let ownershipLost = false;
|
|
308
|
+
const renew = () => {
|
|
309
|
+
if (ownershipLost)
|
|
310
|
+
return false;
|
|
311
|
+
const nextLease = new Date(this.deps.now() + this.cfg.leaseDurationMs).toISOString();
|
|
312
|
+
const nextToken = `${this.deps.bootId}:${process.pid}:${nextLease}`;
|
|
313
|
+
if (!this.deps.store.renewClaim(row.delivery_id, claimedBy, nextToken)) {
|
|
314
|
+
ownershipLost = true;
|
|
315
|
+
return false;
|
|
316
|
+
}
|
|
317
|
+
claimedBy = nextToken;
|
|
318
|
+
return true;
|
|
319
|
+
};
|
|
320
|
+
const heartbeat = setInterval(renew, Math.max(1, Math.floor(this.cfg.leaseDurationMs / 3)));
|
|
321
|
+
heartbeat.unref();
|
|
322
|
+
const transitionOwned = (state, fields = {}) => !ownershipLost && this.deps.store.transitionClaimed(row.delivery_id, claimedBy, state, fields);
|
|
340
323
|
try {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
324
|
+
// Re-resolve config — operator may have rotated port/token since enqueue.
|
|
325
|
+
const cfg = this.deps.readConfig();
|
|
326
|
+
// Verify identity via /whoami before any send.
|
|
327
|
+
let whoami;
|
|
328
|
+
try {
|
|
329
|
+
whoami = await this.deps.whoamiCache.get(cfg.port, cfg.authToken, this.deps.configPath, cfg.agentId);
|
|
330
|
+
}
|
|
331
|
+
catch (err) {
|
|
332
|
+
// Network / auth failure → schedule next retry.
|
|
333
|
+
return this.handlePolicyDecision(row, evaluatePolicy({
|
|
334
|
+
httpCode: 0,
|
|
335
|
+
responseBody: err instanceof Error ? err.message.slice(0, 256) : null,
|
|
336
|
+
attempts: row.attempts,
|
|
337
|
+
timeSinceFirstMs: this.deps.now() - Date.parse(row.attempted_at),
|
|
338
|
+
now: this.deps.now,
|
|
339
|
+
}), undefined, transitionOwned);
|
|
340
|
+
}
|
|
341
|
+
if (whoami.agentId !== cfg.agentId) {
|
|
342
|
+
return this.handlePolicyDecision(row, evaluatePolicy({
|
|
343
|
+
httpCode: 403,
|
|
344
|
+
responseBody: JSON.stringify({ error: 'agent_id_mismatch' }),
|
|
345
|
+
attempts: row.attempts,
|
|
346
|
+
timeSinceFirstMs: this.deps.now() - Date.parse(row.attempted_at),
|
|
347
|
+
now: this.deps.now,
|
|
348
|
+
}), undefined, transitionOwned);
|
|
349
|
+
}
|
|
350
|
+
// Re-tone-gate the queued text. Apply redaction first so secrets in
|
|
351
|
+
// the queued body never reach the tone gate provider (defense-in-
|
|
352
|
+
// depth — they shouldn't be there in the first place, but we don't
|
|
353
|
+
// want to amplify a leak by sending it to a third-party LLM).
|
|
354
|
+
const text = redact(row.text.toString('utf-8'));
|
|
355
|
+
const toneResult = await checkToneLocally(this.deps.toneGate, text, {
|
|
356
|
+
channel: 'telegram',
|
|
357
|
+
});
|
|
358
|
+
if (!toneResult.passed) {
|
|
359
|
+
return this.finalizeToneGated(row, transitionOwned, toneResult.rule);
|
|
360
|
+
}
|
|
361
|
+
// POST /telegram/reply with the delivery-id header for server-side dedup.
|
|
362
|
+
let resp;
|
|
363
|
+
try {
|
|
364
|
+
if (!renew())
|
|
365
|
+
return 'retry';
|
|
366
|
+
resp = await this.deps.postReply(cfg.port, cfg.authToken, cfg.agentId, row.topic_id, text, row.delivery_id, false, row.message_metadata ?? null);
|
|
367
|
+
}
|
|
368
|
+
catch (err) {
|
|
369
|
+
return this.handlePolicyDecision(row, evaluatePolicy({
|
|
370
|
+
httpCode: 0,
|
|
371
|
+
responseBody: err instanceof Error ? err.message.slice(0, 256) : null,
|
|
372
|
+
attempts: row.attempts + 1,
|
|
373
|
+
timeSinceFirstMs: this.deps.now() - Date.parse(row.attempted_at),
|
|
374
|
+
now: this.deps.now,
|
|
375
|
+
}), undefined, transitionOwned);
|
|
376
|
+
}
|
|
377
|
+
const decision = evaluatePolicy({
|
|
378
|
+
httpCode: resp.status,
|
|
379
|
+
responseBody: resp.body.slice(0, 1024),
|
|
347
380
|
attempts: row.attempts + 1,
|
|
348
381
|
timeSinceFirstMs: this.deps.now() - Date.parse(row.attempted_at),
|
|
349
382
|
now: this.deps.now,
|
|
350
|
-
}));
|
|
351
|
-
}
|
|
352
|
-
const decision = evaluatePolicy({
|
|
353
|
-
httpCode: resp.status,
|
|
354
|
-
responseBody: resp.body.slice(0, 1024),
|
|
355
|
-
attempts: row.attempts + 1,
|
|
356
|
-
timeSinceFirstMs: this.deps.now() - Date.parse(row.attempted_at),
|
|
357
|
-
now: this.deps.now,
|
|
358
|
-
});
|
|
359
|
-
if (decision.action === 'finalize-success') {
|
|
360
|
-
// Update last-delivery time for per-topic rate cap.
|
|
361
|
-
this.lastTopicDelivery.set(row.topic_id, this.deps.now());
|
|
362
|
-
this.deps.store.transition(row.delivery_id, 'delivered-recovered', {
|
|
363
|
-
attempts: row.attempts + 1,
|
|
364
|
-
http_code: resp.status,
|
|
365
|
-
error_body: null,
|
|
366
383
|
});
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
384
|
+
if (decision.action === 'finalize-success') {
|
|
385
|
+
// Update last-delivery time for per-topic rate cap.
|
|
386
|
+
this.lastTopicDelivery.set(row.topic_id, this.deps.now());
|
|
387
|
+
if (!transitionOwned('delivered-recovered', {
|
|
388
|
+
attempts: row.attempts + 1,
|
|
389
|
+
http_code: resp.status,
|
|
390
|
+
error_body: null,
|
|
391
|
+
}))
|
|
392
|
+
return 'retry';
|
|
393
|
+
this.emit('sentinel:recovered', { delivery_id: row.delivery_id, topic_id: row.topic_id });
|
|
394
|
+
// Fire-and-forget recovered-marker follow-up (~2s later, gated on 200).
|
|
395
|
+
const shortId = row.delivery_id.slice(0, 8);
|
|
396
|
+
setTimeout(() => {
|
|
397
|
+
const marker = renderRecoveredMarker(shortId);
|
|
398
|
+
// System-template send — bypass tone gate via header. Failure
|
|
399
|
+
// is logged and dropped (spec §3e), never queued.
|
|
400
|
+
this.deps.postReply(cfg.port, cfg.authToken, cfg.agentId, row.topic_id, marker, row.delivery_id, true)
|
|
401
|
+
.catch((err) => {
|
|
402
|
+
console.warn(`[delivery-sentinel] recovered-marker send failed for ${shortId}:`, err);
|
|
403
|
+
});
|
|
404
|
+
}, 2000).unref();
|
|
405
|
+
return 'recovered';
|
|
406
|
+
}
|
|
407
|
+
return this.handlePolicyDecision(row, decision, resp.status, transitionOwned);
|
|
408
|
+
}
|
|
409
|
+
finally {
|
|
410
|
+
clearInterval(heartbeat);
|
|
380
411
|
}
|
|
381
|
-
return this.handlePolicyDecision(row, decision, resp.status);
|
|
382
412
|
}
|
|
383
|
-
async finalizeToneGated(row, rule) {
|
|
384
|
-
|
|
413
|
+
async finalizeToneGated(row, transitionOwned, rule) {
|
|
414
|
+
if (!transitionOwned('delivered-tone-gated', {
|
|
385
415
|
attempts: row.attempts + 1,
|
|
386
|
-
})
|
|
416
|
+
}))
|
|
417
|
+
return 'retry';
|
|
387
418
|
this.emit('sentinel:tone-gated', { delivery_id: row.delivery_id, topic_id: row.topic_id, rule });
|
|
388
419
|
// Send the tone-gate-rejection meta-notice on the original topic.
|
|
389
420
|
if (this.templatesValid) {
|
|
@@ -397,36 +428,43 @@ export class DeliveryFailureSentinel extends EventEmitter {
|
|
|
397
428
|
}
|
|
398
429
|
return 'tone-gated';
|
|
399
430
|
}
|
|
400
|
-
async handlePolicyDecision(row, decision, httpCode) {
|
|
431
|
+
async handlePolicyDecision(row, decision, httpCode, transitionOwned) {
|
|
401
432
|
switch (decision.action) {
|
|
402
433
|
case 'finalize-success':
|
|
403
434
|
// Handled inline in processRow.
|
|
404
435
|
return 'recovered';
|
|
405
436
|
case 'finalize-tone-gated':
|
|
406
|
-
|
|
437
|
+
if (!transitionOwned)
|
|
438
|
+
return 'retry';
|
|
439
|
+
return this.finalizeToneGated(row, transitionOwned);
|
|
407
440
|
case 'finalize-ambiguous':
|
|
408
|
-
|
|
441
|
+
if (!transitionOwned?.('delivered-ambiguous', {
|
|
409
442
|
attempts: row.attempts + 1,
|
|
410
443
|
http_code: httpCode ?? null,
|
|
411
|
-
})
|
|
444
|
+
}))
|
|
445
|
+
return 'retry';
|
|
412
446
|
return 'ambiguous';
|
|
413
447
|
case 'retry':
|
|
414
|
-
|
|
448
|
+
if (!transitionOwned?.('queued', {
|
|
415
449
|
attempts: row.attempts + 1,
|
|
416
450
|
next_attempt_at: decision.nextAttemptAt ?? null,
|
|
417
451
|
claimed_by: null,
|
|
418
452
|
http_code: httpCode ?? null,
|
|
419
|
-
})
|
|
453
|
+
}))
|
|
454
|
+
return 'retry';
|
|
420
455
|
return 'retry';
|
|
421
456
|
case 'escalate':
|
|
422
|
-
|
|
457
|
+
if (!transitionOwned)
|
|
458
|
+
return 'retry';
|
|
459
|
+
return this.escalate(row, decision, transitionOwned);
|
|
423
460
|
}
|
|
424
461
|
}
|
|
425
|
-
async escalate(row, decision) {
|
|
462
|
+
async escalate(row, decision, transitionOwned) {
|
|
426
463
|
const category = reasonToCategory(decision.reason);
|
|
427
|
-
|
|
464
|
+
if (!transitionOwned('escalated', {
|
|
428
465
|
attempts: row.attempts + 1,
|
|
429
|
-
})
|
|
466
|
+
}))
|
|
467
|
+
return 'retry';
|
|
430
468
|
this.emit('sentinel:escalated', { delivery_id: row.delivery_id, topic_id: row.topic_id, category });
|
|
431
469
|
if (!this.templatesValid) {
|
|
432
470
|
this.recordEscalationFailure();
|