instar 1.3.655 → 1.3.657
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 +21 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/core/LiveTestHarness.d.ts +55 -1
- package/dist/core/LiveTestHarness.d.ts.map +1 -1
- package/dist/core/LiveTestHarness.js +71 -2
- package/dist/core/LiveTestHarness.js.map +1 -1
- package/dist/core/RealChannelDriver.d.ts +15 -0
- package/dist/core/RealChannelDriver.d.ts.map +1 -1
- package/dist/core/RealChannelDriver.js +16 -0
- package/dist/core/RealChannelDriver.js.map +1 -1
- package/dist/core/SlackLiveSender.d.ts +29 -0
- package/dist/core/SlackLiveSender.d.ts.map +1 -1
- package/dist/core/SlackLiveSender.js +68 -3
- package/dist/core/SlackLiveSender.js.map +1 -1
- package/dist/core/TelegramLiveSender.d.ts +18 -0
- package/dist/core/TelegramLiveSender.d.ts.map +1 -1
- package/dist/core/TelegramLiveSender.js +60 -0
- package/dist/core/TelegramLiveSender.js.map +1 -1
- package/dist/core/rateLimitFalsePositiveMatrix.d.ts +28 -0
- package/dist/core/rateLimitFalsePositiveMatrix.d.ts.map +1 -0
- package/dist/core/rateLimitFalsePositiveMatrix.js +74 -0
- package/dist/core/rateLimitFalsePositiveMatrix.js.map +1 -0
- package/dist/monitoring/CompactionSentinel.d.ts +9 -0
- package/dist/monitoring/CompactionSentinel.d.ts.map +1 -1
- package/dist/monitoring/CompactionSentinel.js +8 -0
- package/dist/monitoring/CompactionSentinel.js.map +1 -1
- package/dist/monitoring/QuotaCollector.d.ts.map +1 -1
- package/dist/monitoring/QuotaCollector.js +21 -8
- package/dist/monitoring/QuotaCollector.js.map +1 -1
- package/dist/monitoring/RateLimitSentinel.d.ts +25 -0
- package/dist/monitoring/RateLimitSentinel.d.ts.map +1 -1
- package/dist/monitoring/RateLimitSentinel.js +44 -0
- package/dist/monitoring/RateLimitSentinel.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.656.md +68 -0
- package/upgrades/1.3.657.md +32 -0
- package/upgrades/side-effects/false-ratelimit-recovery-completed-sessions.md +113 -0
- package/upgrades/side-effects/real-channel-absence-collect.md +73 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2CH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAU3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAwBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAwH7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA+EtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAy4CD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2CH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAU3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAwBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAwH7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA+EtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAy4CD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAi4gBtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
|
package/dist/commands/server.js
CHANGED
|
@@ -9361,9 +9361,16 @@ export async function startServer(options) {
|
|
|
9361
9361
|
// calls that used to live here. Dedupes across the three triggers and
|
|
9362
9362
|
// vetoes zombie cleanup while a recovery is in flight.
|
|
9363
9363
|
const { CompactionSentinel } = await import('../monitoring/CompactionSentinel.js');
|
|
9364
|
+
// A session is a legitimate recovery target ONLY while it is in the running
|
|
9365
|
+
// set. A finished/failed/killed session drops out of listRunningSessions(),
|
|
9366
|
+
// so this is the structural guard that stops both sentinels from "recovering"
|
|
9367
|
+
// a session that is simply done — the false-positive that spammed the user
|
|
9368
|
+
// with throttle-resume nudges on a finished session (live incident 2026-06-24).
|
|
9369
|
+
const isSessionRecoverable = (sessionName) => sessionManager.listRunningSessions().some(s => s.tmuxSession === sessionName);
|
|
9364
9370
|
const compactionSentinel = new CompactionSentinel({
|
|
9365
9371
|
recoverFn: recoverCompactedSession,
|
|
9366
9372
|
projectDir: config.projectDir,
|
|
9373
|
+
isSessionRecoverable,
|
|
9367
9374
|
getClaudeSessionId: (sessionName) => {
|
|
9368
9375
|
const session = sessionManager.listRunningSessions()
|
|
9369
9376
|
.find(s => s.tmuxSession === sessionName);
|
|
@@ -9458,6 +9465,7 @@ export async function startServer(options) {
|
|
|
9458
9465
|
notifyFn: rateLimitNotify,
|
|
9459
9466
|
projectDir: config.projectDir,
|
|
9460
9467
|
getClaudeSessionId: getClaudeSessionIdForName,
|
|
9468
|
+
isSessionRecoverable,
|
|
9461
9469
|
// #33 codex parity: for codex sessions, recovery-verification reads the newest
|
|
9462
9470
|
// codex rollout (account-wide throttle → newest-rollout growth = cleared) and
|
|
9463
9471
|
// the user-facing messages use OpenAI wording.
|
|
@@ -9489,6 +9497,19 @@ export async function startServer(options) {
|
|
|
9489
9497
|
sessionManager.on('apiErrorAtIdle', (sessionName) => {
|
|
9490
9498
|
rateLimitSentinel.report(sessionName, 'idle-error', { errorClass: 'transient-api' });
|
|
9491
9499
|
});
|
|
9500
|
+
// When a session completes, immediately clear any in-flight recovery for it in
|
|
9501
|
+
// BOTH sentinels. The recoverability guard already blocks NEW recoveries on a
|
|
9502
|
+
// finished session and aborts an in-flight one at its next tick; clearing here
|
|
9503
|
+
// frees the recovery slot (and lifts the zombie-kill veto) immediately instead
|
|
9504
|
+
// of waiting for that tick — and is the explicit completion-cleanup the prior
|
|
9505
|
+
// code lacked (clear() existed but had zero callers). (live incident 2026-06-24)
|
|
9506
|
+
// clear() on both sentinels is a pure synchronous timer-cancel + Map.delete that
|
|
9507
|
+
// cannot throw, so no defensive try/catch is needed here (a wrapper would only be a
|
|
9508
|
+
// silent fallback the no-silent-fallbacks ratchet flags — see the methods).
|
|
9509
|
+
sessionManager.on('sessionComplete', (session) => {
|
|
9510
|
+
rateLimitSentinel.clear(session.tmuxSession);
|
|
9511
|
+
compactionSentinel.clear(session.tmuxSession);
|
|
9512
|
+
});
|
|
9492
9513
|
// #33 codex parity: the two triggers above read CLAUDE panes / claude-PID watchdog,
|
|
9493
9514
|
// so a codex session throttled by OpenAI is invisible to them. This poll reads the
|
|
9494
9515
|
// codex account usage; when codex itself flags a rate-limit hit
|