@integrity-labs/agt-cli 0.28.1004 → 0.28.1006
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/bin/agt.js +5 -5
- package/dist/{chunk-HHBAQ6ZV.js → chunk-O6R6HS2Z.js} +2 -2
- package/dist/{chunk-532V7ZSC.js → chunk-XWMUQR65.js} +63 -7
- package/dist/chunk-XWMUQR65.js.map +1 -0
- package/dist/{chunk-N4PG4TAD.js → chunk-Z5UDL4AB.js} +35 -5
- package/dist/chunk-Z5UDL4AB.js.map +1 -0
- package/dist/{claude-pair-runtime-EUYI3B4I.js → claude-pair-runtime-AW4N6NEE.js} +157 -18
- package/dist/claude-pair-runtime-AW4N6NEE.js.map +1 -0
- package/dist/lib/manager-worker.js +609 -304
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/mcp/direct-chat-channel.js +57 -2
- package/dist/mcp/index.js +51 -0
- package/dist/mcp/origami.js +51 -0
- package/dist/mcp/slack-channel.js +57 -2
- package/dist/mcp/telegram-channel.js +57 -2
- package/dist/{persistent-session-JUGGNJSB.js → persistent-session-K4DLZ7KF.js} +3 -3
- package/dist/{responsiveness-probe-QLOVCTVA.js → responsiveness-probe-DXPEIUH6.js} +3 -3
- package/dist/{session-auth-dead-7F2QBEAZ.js → session-auth-dead-4SE5Q7MU.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-532V7ZSC.js.map +0 -1
- package/dist/chunk-N4PG4TAD.js.map +0 -1
- package/dist/claude-pair-runtime-EUYI3B4I.js.map +0 -1
- /package/dist/{chunk-HHBAQ6ZV.js.map → chunk-O6R6HS2Z.js.map} +0 -0
- /package/dist/{persistent-session-JUGGNJSB.js.map → persistent-session-K4DLZ7KF.js.map} +0 -0
- /package/dist/{responsiveness-probe-QLOVCTVA.js.map → responsiveness-probe-DXPEIUH6.js.map} +0 -0
- /package/dist/{session-auth-dead-7F2QBEAZ.js.map → session-auth-dead-4SE5Q7MU.js.map} +0 -0
|
@@ -37519,6 +37519,57 @@ var FLAG_REGISTRY = [
|
|
|
37519
37519
|
sensitive: true
|
|
37520
37520
|
// No envVar - net-new API-side control with no pre-flags env gate to migrate (ADR-0022).
|
|
37521
37521
|
},
|
|
37522
|
+
{
|
|
37523
|
+
key: "channel-quarantine-auto-resume",
|
|
37524
|
+
description: "Time-based auto-resume of an ENG-5932 channel quarantine (ENG-10510): off = disabled, shadow = log the would-resume without acting, enforce = clear the local quarantine marker and re-add the channel for a TRIAL run, letting the reaper re-quarantine it if it is still dead. Backoff 2h doubling to a 24h cap, giving up after 5 attempts and leaving it for an operator; the manual Re-enable is unaffected and clears the strike count. DELIBERATELY NOT health-based: a quarantined channel is dropped from .mcp.json and the launch flags, so its process never spawns and its liveness is unobservable - unlike an ENG-7916 integration, which stays probeable via a reconstructed inline_server_entry, which is why mcp-auto-resume-mode can wait for healthy cycles and this cannot. A SEPARATE FLAG FROM channel-quarantine-mode ON PURPOSE: that one defaults to shadow, so giving it a resume meaning would arm auto-resume fleet-wide on the existing default. Declared safe value is off (fully dark): a flag-DB read error must never re-add a channel on its own, because a trial costs restarts against the breaker budget.",
|
|
37525
|
+
flagType: "enum",
|
|
37526
|
+
allowedValues: ["off", "shadow", "enforce"],
|
|
37527
|
+
// off = fully dark. See the description's fail-safe reasoning.
|
|
37528
|
+
defaultValue: "off",
|
|
37529
|
+
// Enforcement-mode control like its siblings channel-quarantine-mode and
|
|
37530
|
+
// mcp-auto-resume-mode: masked on public surfaces, mutations confirmed.
|
|
37531
|
+
sensitive: true,
|
|
37532
|
+
// ENG-10036: the reader lives in apps/cli (manager-worker), so an older
|
|
37533
|
+
// host has no code to honour a flip. Without `since`, classifyHostReach
|
|
37534
|
+
// reports 'honors' - full reach - which is the most confident thing the
|
|
37535
|
+
// field can say and would be a lie here.
|
|
37536
|
+
//
|
|
37537
|
+
// DELIBERATE UNREACHABLE PLACEHOLDER - NOT A REAL THRESHOLD YET.
|
|
37538
|
+
// Obi-Wan on #6313: the previous value here was '0.28.990', written before
|
|
37539
|
+
// merge and stated as though it were the reader's shipping version. It is
|
|
37540
|
+
// not knowable pre-merge. `since` is documented (types.ts) as "the agt-cli
|
|
37541
|
+
// version its reader lands in", and the bisected siblings in this registry
|
|
37542
|
+
// were all read off published dists AFTER their merge. The published line
|
|
37543
|
+
// is around 0.28.916-0.28.918, so that guess sat ~70 patch releases above
|
|
37544
|
+
// the build that will actually carry this reader - every host running the
|
|
37545
|
+
// release that DOES honour the flag would have classified `stale` until the
|
|
37546
|
+
// fleet passed a version that does not exist yet.
|
|
37547
|
+
//
|
|
37548
|
+
// So this follows the convention this registry already established for
|
|
37549
|
+
// exactly this situation - see `github-broker-credentials` below, whose
|
|
37550
|
+
// identical DELIBERATE UNREACHABLE PLACEHOLDER block and `since: '0.29.0'`
|
|
37551
|
+
// are the precedent: pinned ABOVE every published release ON PURPOSE,
|
|
37552
|
+
// labelled as a placeholder, and gated on a post-publish bisect.
|
|
37553
|
+
//
|
|
37554
|
+
// (This cited `claudecode-agt-bin-credential-helpers` until obi-wan
|
|
37555
|
+
// `8f9d3c43076c` pointed out no such key exists anywhere in the repo - the
|
|
37556
|
+
// only occurrence in the tree was this citation. The precedent was real and
|
|
37557
|
+
// the reasoning held, but the pointer could not be followed, so a reader
|
|
37558
|
+
// looking it up found nothing and had no way to tell whether the convention
|
|
37559
|
+
// was inherited or invented here. That is the one question a citation
|
|
37560
|
+
// exists to answer, and it is asked at exactly the moment someone is about
|
|
37561
|
+
// to do the post-publish bisect.) It classifies every host
|
|
37562
|
+
// as `stale`, which reports no reach rather than reach there is no basis
|
|
37563
|
+
// for - and unlike a plausible-looking number, it says out loud that it
|
|
37564
|
+
// must be re-bisected.
|
|
37565
|
+
//
|
|
37566
|
+
// BEFORE THIS FLAG IS FLIPPED ANYWHERE: bisect the published dist for the
|
|
37567
|
+
// first agt-cli whose manager-worker carries the auto-resume poll block,
|
|
37568
|
+
// and replace this with that exact version. Leaving the placeholder is safe
|
|
37569
|
+
// (defaultValue 'off', sensitive: true, nothing flips); shipping a guessed
|
|
37570
|
+
// number is not.
|
|
37571
|
+
since: "0.29.0"
|
|
37572
|
+
},
|
|
37522
37573
|
{
|
|
37523
37574
|
key: "mcp-auto-resume-mode",
|
|
37524
37575
|
description: "MCP auto-resume of a bind-failure quarantine (ENG-8036, follow-up to ENG-7916): off = disabled, shadow = log only (would-resume without acting), enforce = flip an ENG-7916-quarantined integration (status=unhealthy) back to status=active after DEFAULT_AUTO_RESUME_OK_CYCLES consecutive healthy connectivity-probe cycles. Recovery is observed via the connectivity-probe path, not the session-tool-bind probe (a quarantined row is excluded from the bind probe by the ENG-5292 writer). Only rows this quarantine system marked are auto-resumed - the reaper/oauth-refresh error/unhealthy states are never stomped. Declared safe value is off (fully dark): a flag-DB read error must never auto-un-quarantine on its own. Flip to shadow to observe, then enforce once the cycle threshold is tuned.",
|
|
@@ -39466,6 +39517,7 @@ function turnFailureNoticeEnabled(env2) {
|
|
|
39466
39517
|
});
|
|
39467
39518
|
}
|
|
39468
39519
|
var DEFAULT_FAILURE_WATCH_MS = 5 * 6e4;
|
|
39520
|
+
var MAX_FAILURE_WATCH_MS = 30 * 6e4;
|
|
39469
39521
|
var FAST_POLL_MS = 500;
|
|
39470
39522
|
var SLOW_POLL_MS = 3e3;
|
|
39471
39523
|
var FAST_PHASE_MS = 1e4;
|
|
@@ -39540,8 +39592,9 @@ async function watchForTurnFailure(opts) {
|
|
|
39540
39592
|
const slowPollMs = opts.slowPollMs ?? SLOW_POLL_MS;
|
|
39541
39593
|
const fastPhaseMs = opts.fastPhaseMs ?? FAST_PHASE_MS;
|
|
39542
39594
|
const retryingAfterMs = opts.retryingNoticeAfterMs ?? RETRYING_NOTICE_AFTER_MS;
|
|
39595
|
+
const maxWatchMs = opts.maxWatchMs ?? MAX_FAILURE_WATCH_MS;
|
|
39543
39596
|
const startedAt = now();
|
|
39544
|
-
|
|
39597
|
+
let lastAliveAt = startedAt;
|
|
39545
39598
|
let longRetryFired = false;
|
|
39546
39599
|
let driftEmitted = false;
|
|
39547
39600
|
const cache = /* @__PURE__ */ new Map();
|
|
@@ -39581,6 +39634,7 @@ async function watchForTurnFailure(opts) {
|
|
|
39581
39634
|
const { result } = scan;
|
|
39582
39635
|
if (result.outcome === "failed") return result;
|
|
39583
39636
|
if (result.outcome === "served") return null;
|
|
39637
|
+
if (result.outcome === "retrying") lastAliveAt = now();
|
|
39584
39638
|
if (result.outcome === "retrying" && !longRetryFired && opts.onLongRetry && now() - startedAt >= retryingAfterMs) {
|
|
39585
39639
|
longRetryFired = true;
|
|
39586
39640
|
try {
|
|
@@ -39588,7 +39642,8 @@ async function watchForTurnFailure(opts) {
|
|
|
39588
39642
|
} catch {
|
|
39589
39643
|
}
|
|
39590
39644
|
}
|
|
39591
|
-
if (now() >=
|
|
39645
|
+
if (now() - lastAliveAt >= timeoutMs) return null;
|
|
39646
|
+
if (now() - startedAt >= maxWatchMs) return null;
|
|
39592
39647
|
await wait(now() - startedAt < fastPhaseMs ? fastPollMs : slowPollMs);
|
|
39593
39648
|
}
|
|
39594
39649
|
}
|
package/dist/mcp/index.js
CHANGED
|
@@ -29816,6 +29816,57 @@ var FLAG_REGISTRY = [
|
|
|
29816
29816
|
sensitive: true
|
|
29817
29817
|
// No envVar - net-new API-side control with no pre-flags env gate to migrate (ADR-0022).
|
|
29818
29818
|
},
|
|
29819
|
+
{
|
|
29820
|
+
key: "channel-quarantine-auto-resume",
|
|
29821
|
+
description: "Time-based auto-resume of an ENG-5932 channel quarantine (ENG-10510): off = disabled, shadow = log the would-resume without acting, enforce = clear the local quarantine marker and re-add the channel for a TRIAL run, letting the reaper re-quarantine it if it is still dead. Backoff 2h doubling to a 24h cap, giving up after 5 attempts and leaving it for an operator; the manual Re-enable is unaffected and clears the strike count. DELIBERATELY NOT health-based: a quarantined channel is dropped from .mcp.json and the launch flags, so its process never spawns and its liveness is unobservable - unlike an ENG-7916 integration, which stays probeable via a reconstructed inline_server_entry, which is why mcp-auto-resume-mode can wait for healthy cycles and this cannot. A SEPARATE FLAG FROM channel-quarantine-mode ON PURPOSE: that one defaults to shadow, so giving it a resume meaning would arm auto-resume fleet-wide on the existing default. Declared safe value is off (fully dark): a flag-DB read error must never re-add a channel on its own, because a trial costs restarts against the breaker budget.",
|
|
29822
|
+
flagType: "enum",
|
|
29823
|
+
allowedValues: ["off", "shadow", "enforce"],
|
|
29824
|
+
// off = fully dark. See the description's fail-safe reasoning.
|
|
29825
|
+
defaultValue: "off",
|
|
29826
|
+
// Enforcement-mode control like its siblings channel-quarantine-mode and
|
|
29827
|
+
// mcp-auto-resume-mode: masked on public surfaces, mutations confirmed.
|
|
29828
|
+
sensitive: true,
|
|
29829
|
+
// ENG-10036: the reader lives in apps/cli (manager-worker), so an older
|
|
29830
|
+
// host has no code to honour a flip. Without `since`, classifyHostReach
|
|
29831
|
+
// reports 'honors' - full reach - which is the most confident thing the
|
|
29832
|
+
// field can say and would be a lie here.
|
|
29833
|
+
//
|
|
29834
|
+
// DELIBERATE UNREACHABLE PLACEHOLDER - NOT A REAL THRESHOLD YET.
|
|
29835
|
+
// Obi-Wan on #6313: the previous value here was '0.28.990', written before
|
|
29836
|
+
// merge and stated as though it were the reader's shipping version. It is
|
|
29837
|
+
// not knowable pre-merge. `since` is documented (types.ts) as "the agt-cli
|
|
29838
|
+
// version its reader lands in", and the bisected siblings in this registry
|
|
29839
|
+
// were all read off published dists AFTER their merge. The published line
|
|
29840
|
+
// is around 0.28.916-0.28.918, so that guess sat ~70 patch releases above
|
|
29841
|
+
// the build that will actually carry this reader - every host running the
|
|
29842
|
+
// release that DOES honour the flag would have classified `stale` until the
|
|
29843
|
+
// fleet passed a version that does not exist yet.
|
|
29844
|
+
//
|
|
29845
|
+
// So this follows the convention this registry already established for
|
|
29846
|
+
// exactly this situation - see `github-broker-credentials` below, whose
|
|
29847
|
+
// identical DELIBERATE UNREACHABLE PLACEHOLDER block and `since: '0.29.0'`
|
|
29848
|
+
// are the precedent: pinned ABOVE every published release ON PURPOSE,
|
|
29849
|
+
// labelled as a placeholder, and gated on a post-publish bisect.
|
|
29850
|
+
//
|
|
29851
|
+
// (This cited `claudecode-agt-bin-credential-helpers` until obi-wan
|
|
29852
|
+
// `8f9d3c43076c` pointed out no such key exists anywhere in the repo - the
|
|
29853
|
+
// only occurrence in the tree was this citation. The precedent was real and
|
|
29854
|
+
// the reasoning held, but the pointer could not be followed, so a reader
|
|
29855
|
+
// looking it up found nothing and had no way to tell whether the convention
|
|
29856
|
+
// was inherited or invented here. That is the one question a citation
|
|
29857
|
+
// exists to answer, and it is asked at exactly the moment someone is about
|
|
29858
|
+
// to do the post-publish bisect.) It classifies every host
|
|
29859
|
+
// as `stale`, which reports no reach rather than reach there is no basis
|
|
29860
|
+
// for - and unlike a plausible-looking number, it says out loud that it
|
|
29861
|
+
// must be re-bisected.
|
|
29862
|
+
//
|
|
29863
|
+
// BEFORE THIS FLAG IS FLIPPED ANYWHERE: bisect the published dist for the
|
|
29864
|
+
// first agt-cli whose manager-worker carries the auto-resume poll block,
|
|
29865
|
+
// and replace this with that exact version. Leaving the placeholder is safe
|
|
29866
|
+
// (defaultValue 'off', sensitive: true, nothing flips); shipping a guessed
|
|
29867
|
+
// number is not.
|
|
29868
|
+
since: "0.29.0"
|
|
29869
|
+
},
|
|
29819
29870
|
{
|
|
29820
29871
|
key: "mcp-auto-resume-mode",
|
|
29821
29872
|
description: "MCP auto-resume of a bind-failure quarantine (ENG-8036, follow-up to ENG-7916): off = disabled, shadow = log only (would-resume without acting), enforce = flip an ENG-7916-quarantined integration (status=unhealthy) back to status=active after DEFAULT_AUTO_RESUME_OK_CYCLES consecutive healthy connectivity-probe cycles. Recovery is observed via the connectivity-probe path, not the session-tool-bind probe (a quarantined row is excluded from the bind probe by the ENG-5292 writer). Only rows this quarantine system marked are auto-resumed - the reaper/oauth-refresh error/unhealthy states are never stomped. Declared safe value is off (fully dark): a flag-DB read error must never auto-un-quarantine on its own. Flip to shadow to observe, then enforce once the cycle threshold is tuned.",
|
package/dist/mcp/origami.js
CHANGED
|
@@ -43764,6 +43764,57 @@ var FLAG_REGISTRY = [
|
|
|
43764
43764
|
sensitive: true
|
|
43765
43765
|
// No envVar - net-new API-side control with no pre-flags env gate to migrate (ADR-0022).
|
|
43766
43766
|
},
|
|
43767
|
+
{
|
|
43768
|
+
key: "channel-quarantine-auto-resume",
|
|
43769
|
+
description: "Time-based auto-resume of an ENG-5932 channel quarantine (ENG-10510): off = disabled, shadow = log the would-resume without acting, enforce = clear the local quarantine marker and re-add the channel for a TRIAL run, letting the reaper re-quarantine it if it is still dead. Backoff 2h doubling to a 24h cap, giving up after 5 attempts and leaving it for an operator; the manual Re-enable is unaffected and clears the strike count. DELIBERATELY NOT health-based: a quarantined channel is dropped from .mcp.json and the launch flags, so its process never spawns and its liveness is unobservable - unlike an ENG-7916 integration, which stays probeable via a reconstructed inline_server_entry, which is why mcp-auto-resume-mode can wait for healthy cycles and this cannot. A SEPARATE FLAG FROM channel-quarantine-mode ON PURPOSE: that one defaults to shadow, so giving it a resume meaning would arm auto-resume fleet-wide on the existing default. Declared safe value is off (fully dark): a flag-DB read error must never re-add a channel on its own, because a trial costs restarts against the breaker budget.",
|
|
43770
|
+
flagType: "enum",
|
|
43771
|
+
allowedValues: ["off", "shadow", "enforce"],
|
|
43772
|
+
// off = fully dark. See the description's fail-safe reasoning.
|
|
43773
|
+
defaultValue: "off",
|
|
43774
|
+
// Enforcement-mode control like its siblings channel-quarantine-mode and
|
|
43775
|
+
// mcp-auto-resume-mode: masked on public surfaces, mutations confirmed.
|
|
43776
|
+
sensitive: true,
|
|
43777
|
+
// ENG-10036: the reader lives in apps/cli (manager-worker), so an older
|
|
43778
|
+
// host has no code to honour a flip. Without `since`, classifyHostReach
|
|
43779
|
+
// reports 'honors' - full reach - which is the most confident thing the
|
|
43780
|
+
// field can say and would be a lie here.
|
|
43781
|
+
//
|
|
43782
|
+
// DELIBERATE UNREACHABLE PLACEHOLDER - NOT A REAL THRESHOLD YET.
|
|
43783
|
+
// Obi-Wan on #6313: the previous value here was '0.28.990', written before
|
|
43784
|
+
// merge and stated as though it were the reader's shipping version. It is
|
|
43785
|
+
// not knowable pre-merge. `since` is documented (types.ts) as "the agt-cli
|
|
43786
|
+
// version its reader lands in", and the bisected siblings in this registry
|
|
43787
|
+
// were all read off published dists AFTER their merge. The published line
|
|
43788
|
+
// is around 0.28.916-0.28.918, so that guess sat ~70 patch releases above
|
|
43789
|
+
// the build that will actually carry this reader - every host running the
|
|
43790
|
+
// release that DOES honour the flag would have classified `stale` until the
|
|
43791
|
+
// fleet passed a version that does not exist yet.
|
|
43792
|
+
//
|
|
43793
|
+
// So this follows the convention this registry already established for
|
|
43794
|
+
// exactly this situation - see `github-broker-credentials` below, whose
|
|
43795
|
+
// identical DELIBERATE UNREACHABLE PLACEHOLDER block and `since: '0.29.0'`
|
|
43796
|
+
// are the precedent: pinned ABOVE every published release ON PURPOSE,
|
|
43797
|
+
// labelled as a placeholder, and gated on a post-publish bisect.
|
|
43798
|
+
//
|
|
43799
|
+
// (This cited `claudecode-agt-bin-credential-helpers` until obi-wan
|
|
43800
|
+
// `8f9d3c43076c` pointed out no such key exists anywhere in the repo - the
|
|
43801
|
+
// only occurrence in the tree was this citation. The precedent was real and
|
|
43802
|
+
// the reasoning held, but the pointer could not be followed, so a reader
|
|
43803
|
+
// looking it up found nothing and had no way to tell whether the convention
|
|
43804
|
+
// was inherited or invented here. That is the one question a citation
|
|
43805
|
+
// exists to answer, and it is asked at exactly the moment someone is about
|
|
43806
|
+
// to do the post-publish bisect.) It classifies every host
|
|
43807
|
+
// as `stale`, which reports no reach rather than reach there is no basis
|
|
43808
|
+
// for - and unlike a plausible-looking number, it says out loud that it
|
|
43809
|
+
// must be re-bisected.
|
|
43810
|
+
//
|
|
43811
|
+
// BEFORE THIS FLAG IS FLIPPED ANYWHERE: bisect the published dist for the
|
|
43812
|
+
// first agt-cli whose manager-worker carries the auto-resume poll block,
|
|
43813
|
+
// and replace this with that exact version. Leaving the placeholder is safe
|
|
43814
|
+
// (defaultValue 'off', sensitive: true, nothing flips); shipping a guessed
|
|
43815
|
+
// number is not.
|
|
43816
|
+
since: "0.29.0"
|
|
43817
|
+
},
|
|
43767
43818
|
{
|
|
43768
43819
|
key: "mcp-auto-resume-mode",
|
|
43769
43820
|
description: "MCP auto-resume of a bind-failure quarantine (ENG-8036, follow-up to ENG-7916): off = disabled, shadow = log only (would-resume without acting), enforce = flip an ENG-7916-quarantined integration (status=unhealthy) back to status=active after DEFAULT_AUTO_RESUME_OK_CYCLES consecutive healthy connectivity-probe cycles. Recovery is observed via the connectivity-probe path, not the session-tool-bind probe (a quarantined row is excluded from the bind probe by the ENG-5292 writer). Only rows this quarantine system marked are auto-resumed - the reaper/oauth-refresh error/unhealthy states are never stomped. Declared safe value is off (fully dark): a flag-DB read error must never auto-un-quarantine on its own. Flip to shadow to observe, then enforce once the cycle threshold is tuned.",
|
|
@@ -38403,6 +38403,57 @@ var FLAG_REGISTRY = [
|
|
|
38403
38403
|
sensitive: true
|
|
38404
38404
|
// No envVar - net-new API-side control with no pre-flags env gate to migrate (ADR-0022).
|
|
38405
38405
|
},
|
|
38406
|
+
{
|
|
38407
|
+
key: "channel-quarantine-auto-resume",
|
|
38408
|
+
description: "Time-based auto-resume of an ENG-5932 channel quarantine (ENG-10510): off = disabled, shadow = log the would-resume without acting, enforce = clear the local quarantine marker and re-add the channel for a TRIAL run, letting the reaper re-quarantine it if it is still dead. Backoff 2h doubling to a 24h cap, giving up after 5 attempts and leaving it for an operator; the manual Re-enable is unaffected and clears the strike count. DELIBERATELY NOT health-based: a quarantined channel is dropped from .mcp.json and the launch flags, so its process never spawns and its liveness is unobservable - unlike an ENG-7916 integration, which stays probeable via a reconstructed inline_server_entry, which is why mcp-auto-resume-mode can wait for healthy cycles and this cannot. A SEPARATE FLAG FROM channel-quarantine-mode ON PURPOSE: that one defaults to shadow, so giving it a resume meaning would arm auto-resume fleet-wide on the existing default. Declared safe value is off (fully dark): a flag-DB read error must never re-add a channel on its own, because a trial costs restarts against the breaker budget.",
|
|
38409
|
+
flagType: "enum",
|
|
38410
|
+
allowedValues: ["off", "shadow", "enforce"],
|
|
38411
|
+
// off = fully dark. See the description's fail-safe reasoning.
|
|
38412
|
+
defaultValue: "off",
|
|
38413
|
+
// Enforcement-mode control like its siblings channel-quarantine-mode and
|
|
38414
|
+
// mcp-auto-resume-mode: masked on public surfaces, mutations confirmed.
|
|
38415
|
+
sensitive: true,
|
|
38416
|
+
// ENG-10036: the reader lives in apps/cli (manager-worker), so an older
|
|
38417
|
+
// host has no code to honour a flip. Without `since`, classifyHostReach
|
|
38418
|
+
// reports 'honors' - full reach - which is the most confident thing the
|
|
38419
|
+
// field can say and would be a lie here.
|
|
38420
|
+
//
|
|
38421
|
+
// DELIBERATE UNREACHABLE PLACEHOLDER - NOT A REAL THRESHOLD YET.
|
|
38422
|
+
// Obi-Wan on #6313: the previous value here was '0.28.990', written before
|
|
38423
|
+
// merge and stated as though it were the reader's shipping version. It is
|
|
38424
|
+
// not knowable pre-merge. `since` is documented (types.ts) as "the agt-cli
|
|
38425
|
+
// version its reader lands in", and the bisected siblings in this registry
|
|
38426
|
+
// were all read off published dists AFTER their merge. The published line
|
|
38427
|
+
// is around 0.28.916-0.28.918, so that guess sat ~70 patch releases above
|
|
38428
|
+
// the build that will actually carry this reader - every host running the
|
|
38429
|
+
// release that DOES honour the flag would have classified `stale` until the
|
|
38430
|
+
// fleet passed a version that does not exist yet.
|
|
38431
|
+
//
|
|
38432
|
+
// So this follows the convention this registry already established for
|
|
38433
|
+
// exactly this situation - see `github-broker-credentials` below, whose
|
|
38434
|
+
// identical DELIBERATE UNREACHABLE PLACEHOLDER block and `since: '0.29.0'`
|
|
38435
|
+
// are the precedent: pinned ABOVE every published release ON PURPOSE,
|
|
38436
|
+
// labelled as a placeholder, and gated on a post-publish bisect.
|
|
38437
|
+
//
|
|
38438
|
+
// (This cited `claudecode-agt-bin-credential-helpers` until obi-wan
|
|
38439
|
+
// `8f9d3c43076c` pointed out no such key exists anywhere in the repo - the
|
|
38440
|
+
// only occurrence in the tree was this citation. The precedent was real and
|
|
38441
|
+
// the reasoning held, but the pointer could not be followed, so a reader
|
|
38442
|
+
// looking it up found nothing and had no way to tell whether the convention
|
|
38443
|
+
// was inherited or invented here. That is the one question a citation
|
|
38444
|
+
// exists to answer, and it is asked at exactly the moment someone is about
|
|
38445
|
+
// to do the post-publish bisect.) It classifies every host
|
|
38446
|
+
// as `stale`, which reports no reach rather than reach there is no basis
|
|
38447
|
+
// for - and unlike a plausible-looking number, it says out loud that it
|
|
38448
|
+
// must be re-bisected.
|
|
38449
|
+
//
|
|
38450
|
+
// BEFORE THIS FLAG IS FLIPPED ANYWHERE: bisect the published dist for the
|
|
38451
|
+
// first agt-cli whose manager-worker carries the auto-resume poll block,
|
|
38452
|
+
// and replace this with that exact version. Leaving the placeholder is safe
|
|
38453
|
+
// (defaultValue 'off', sensitive: true, nothing flips); shipping a guessed
|
|
38454
|
+
// number is not.
|
|
38455
|
+
since: "0.29.0"
|
|
38456
|
+
},
|
|
38406
38457
|
{
|
|
38407
38458
|
key: "mcp-auto-resume-mode",
|
|
38408
38459
|
description: "MCP auto-resume of a bind-failure quarantine (ENG-8036, follow-up to ENG-7916): off = disabled, shadow = log only (would-resume without acting), enforce = flip an ENG-7916-quarantined integration (status=unhealthy) back to status=active after DEFAULT_AUTO_RESUME_OK_CYCLES consecutive healthy connectivity-probe cycles. Recovery is observed via the connectivity-probe path, not the session-tool-bind probe (a quarantined row is excluded from the bind probe by the ENG-5292 writer). Only rows this quarantine system marked are auto-resumed - the reaper/oauth-refresh error/unhealthy states are never stomped. Declared safe value is off (fully dark): a flag-DB read error must never auto-un-quarantine on its own. Flip to shadow to observe, then enforce once the cycle threshold is tuned.",
|
|
@@ -41215,6 +41266,7 @@ function turnFailureNoticeEnabled(env2) {
|
|
|
41215
41266
|
});
|
|
41216
41267
|
}
|
|
41217
41268
|
var DEFAULT_FAILURE_WATCH_MS = 5 * 6e4;
|
|
41269
|
+
var MAX_FAILURE_WATCH_MS = 30 * 6e4;
|
|
41218
41270
|
var FAST_POLL_MS = 500;
|
|
41219
41271
|
var SLOW_POLL_MS = 3e3;
|
|
41220
41272
|
var FAST_PHASE_MS = 1e4;
|
|
@@ -41289,8 +41341,9 @@ async function watchForTurnFailure(opts) {
|
|
|
41289
41341
|
const slowPollMs = opts.slowPollMs ?? SLOW_POLL_MS;
|
|
41290
41342
|
const fastPhaseMs = opts.fastPhaseMs ?? FAST_PHASE_MS;
|
|
41291
41343
|
const retryingAfterMs = opts.retryingNoticeAfterMs ?? RETRYING_NOTICE_AFTER_MS;
|
|
41344
|
+
const maxWatchMs = opts.maxWatchMs ?? MAX_FAILURE_WATCH_MS;
|
|
41292
41345
|
const startedAt = now();
|
|
41293
|
-
|
|
41346
|
+
let lastAliveAt = startedAt;
|
|
41294
41347
|
let longRetryFired = false;
|
|
41295
41348
|
let driftEmitted = false;
|
|
41296
41349
|
const cache = /* @__PURE__ */ new Map();
|
|
@@ -41330,6 +41383,7 @@ async function watchForTurnFailure(opts) {
|
|
|
41330
41383
|
const { result } = scan;
|
|
41331
41384
|
if (result.outcome === "failed") return result;
|
|
41332
41385
|
if (result.outcome === "served") return null;
|
|
41386
|
+
if (result.outcome === "retrying") lastAliveAt = now();
|
|
41333
41387
|
if (result.outcome === "retrying" && !longRetryFired && opts.onLongRetry && now() - startedAt >= retryingAfterMs) {
|
|
41334
41388
|
longRetryFired = true;
|
|
41335
41389
|
try {
|
|
@@ -41337,7 +41391,8 @@ async function watchForTurnFailure(opts) {
|
|
|
41337
41391
|
} catch {
|
|
41338
41392
|
}
|
|
41339
41393
|
}
|
|
41340
|
-
if (now() >=
|
|
41394
|
+
if (now() - lastAliveAt >= timeoutMs) return null;
|
|
41395
|
+
if (now() - startedAt >= maxWatchMs) return null;
|
|
41341
41396
|
await wait(now() - startedAt < fastPhaseMs ? fastPollMs : slowPollMs);
|
|
41342
41397
|
}
|
|
41343
41398
|
}
|
|
@@ -38417,6 +38417,57 @@ var FLAG_REGISTRY = [
|
|
|
38417
38417
|
sensitive: true
|
|
38418
38418
|
// No envVar - net-new API-side control with no pre-flags env gate to migrate (ADR-0022).
|
|
38419
38419
|
},
|
|
38420
|
+
{
|
|
38421
|
+
key: "channel-quarantine-auto-resume",
|
|
38422
|
+
description: "Time-based auto-resume of an ENG-5932 channel quarantine (ENG-10510): off = disabled, shadow = log the would-resume without acting, enforce = clear the local quarantine marker and re-add the channel for a TRIAL run, letting the reaper re-quarantine it if it is still dead. Backoff 2h doubling to a 24h cap, giving up after 5 attempts and leaving it for an operator; the manual Re-enable is unaffected and clears the strike count. DELIBERATELY NOT health-based: a quarantined channel is dropped from .mcp.json and the launch flags, so its process never spawns and its liveness is unobservable - unlike an ENG-7916 integration, which stays probeable via a reconstructed inline_server_entry, which is why mcp-auto-resume-mode can wait for healthy cycles and this cannot. A SEPARATE FLAG FROM channel-quarantine-mode ON PURPOSE: that one defaults to shadow, so giving it a resume meaning would arm auto-resume fleet-wide on the existing default. Declared safe value is off (fully dark): a flag-DB read error must never re-add a channel on its own, because a trial costs restarts against the breaker budget.",
|
|
38423
|
+
flagType: "enum",
|
|
38424
|
+
allowedValues: ["off", "shadow", "enforce"],
|
|
38425
|
+
// off = fully dark. See the description's fail-safe reasoning.
|
|
38426
|
+
defaultValue: "off",
|
|
38427
|
+
// Enforcement-mode control like its siblings channel-quarantine-mode and
|
|
38428
|
+
// mcp-auto-resume-mode: masked on public surfaces, mutations confirmed.
|
|
38429
|
+
sensitive: true,
|
|
38430
|
+
// ENG-10036: the reader lives in apps/cli (manager-worker), so an older
|
|
38431
|
+
// host has no code to honour a flip. Without `since`, classifyHostReach
|
|
38432
|
+
// reports 'honors' - full reach - which is the most confident thing the
|
|
38433
|
+
// field can say and would be a lie here.
|
|
38434
|
+
//
|
|
38435
|
+
// DELIBERATE UNREACHABLE PLACEHOLDER - NOT A REAL THRESHOLD YET.
|
|
38436
|
+
// Obi-Wan on #6313: the previous value here was '0.28.990', written before
|
|
38437
|
+
// merge and stated as though it were the reader's shipping version. It is
|
|
38438
|
+
// not knowable pre-merge. `since` is documented (types.ts) as "the agt-cli
|
|
38439
|
+
// version its reader lands in", and the bisected siblings in this registry
|
|
38440
|
+
// were all read off published dists AFTER their merge. The published line
|
|
38441
|
+
// is around 0.28.916-0.28.918, so that guess sat ~70 patch releases above
|
|
38442
|
+
// the build that will actually carry this reader - every host running the
|
|
38443
|
+
// release that DOES honour the flag would have classified `stale` until the
|
|
38444
|
+
// fleet passed a version that does not exist yet.
|
|
38445
|
+
//
|
|
38446
|
+
// So this follows the convention this registry already established for
|
|
38447
|
+
// exactly this situation - see `github-broker-credentials` below, whose
|
|
38448
|
+
// identical DELIBERATE UNREACHABLE PLACEHOLDER block and `since: '0.29.0'`
|
|
38449
|
+
// are the precedent: pinned ABOVE every published release ON PURPOSE,
|
|
38450
|
+
// labelled as a placeholder, and gated on a post-publish bisect.
|
|
38451
|
+
//
|
|
38452
|
+
// (This cited `claudecode-agt-bin-credential-helpers` until obi-wan
|
|
38453
|
+
// `8f9d3c43076c` pointed out no such key exists anywhere in the repo - the
|
|
38454
|
+
// only occurrence in the tree was this citation. The precedent was real and
|
|
38455
|
+
// the reasoning held, but the pointer could not be followed, so a reader
|
|
38456
|
+
// looking it up found nothing and had no way to tell whether the convention
|
|
38457
|
+
// was inherited or invented here. That is the one question a citation
|
|
38458
|
+
// exists to answer, and it is asked at exactly the moment someone is about
|
|
38459
|
+
// to do the post-publish bisect.) It classifies every host
|
|
38460
|
+
// as `stale`, which reports no reach rather than reach there is no basis
|
|
38461
|
+
// for - and unlike a plausible-looking number, it says out loud that it
|
|
38462
|
+
// must be re-bisected.
|
|
38463
|
+
//
|
|
38464
|
+
// BEFORE THIS FLAG IS FLIPPED ANYWHERE: bisect the published dist for the
|
|
38465
|
+
// first agt-cli whose manager-worker carries the auto-resume poll block,
|
|
38466
|
+
// and replace this with that exact version. Leaving the placeholder is safe
|
|
38467
|
+
// (defaultValue 'off', sensitive: true, nothing flips); shipping a guessed
|
|
38468
|
+
// number is not.
|
|
38469
|
+
since: "0.29.0"
|
|
38470
|
+
},
|
|
38420
38471
|
{
|
|
38421
38472
|
key: "mcp-auto-resume-mode",
|
|
38422
38473
|
description: "MCP auto-resume of a bind-failure quarantine (ENG-8036, follow-up to ENG-7916): off = disabled, shadow = log only (would-resume without acting), enforce = flip an ENG-7916-quarantined integration (status=unhealthy) back to status=active after DEFAULT_AUTO_RESUME_OK_CYCLES consecutive healthy connectivity-probe cycles. Recovery is observed via the connectivity-probe path, not the session-tool-bind probe (a quarantined row is excluded from the bind probe by the ENG-5292 writer). Only rows this quarantine system marked are auto-resumed - the reaper/oauth-refresh error/unhealthy states are never stomped. Declared safe value is off (fully dark): a flag-DB read error must never auto-un-quarantine on its own. Flip to shadow to observe, then enforce once the cycle threshold is tuned.",
|
|
@@ -41409,6 +41460,7 @@ function turnFailureNoticeEnabled(env2) {
|
|
|
41409
41460
|
});
|
|
41410
41461
|
}
|
|
41411
41462
|
var DEFAULT_FAILURE_WATCH_MS = 5 * 6e4;
|
|
41463
|
+
var MAX_FAILURE_WATCH_MS = 30 * 6e4;
|
|
41412
41464
|
var FAST_POLL_MS = 500;
|
|
41413
41465
|
var SLOW_POLL_MS = 3e3;
|
|
41414
41466
|
var FAST_PHASE_MS = 1e4;
|
|
@@ -41483,8 +41535,9 @@ async function watchForTurnFailure(opts) {
|
|
|
41483
41535
|
const slowPollMs = opts.slowPollMs ?? SLOW_POLL_MS;
|
|
41484
41536
|
const fastPhaseMs = opts.fastPhaseMs ?? FAST_PHASE_MS;
|
|
41485
41537
|
const retryingAfterMs = opts.retryingNoticeAfterMs ?? RETRYING_NOTICE_AFTER_MS;
|
|
41538
|
+
const maxWatchMs = opts.maxWatchMs ?? MAX_FAILURE_WATCH_MS;
|
|
41486
41539
|
const startedAt = now();
|
|
41487
|
-
|
|
41540
|
+
let lastAliveAt = startedAt;
|
|
41488
41541
|
let longRetryFired = false;
|
|
41489
41542
|
let driftEmitted = false;
|
|
41490
41543
|
const cache = /* @__PURE__ */ new Map();
|
|
@@ -41524,6 +41577,7 @@ async function watchForTurnFailure(opts) {
|
|
|
41524
41577
|
const { result } = scan;
|
|
41525
41578
|
if (result.outcome === "failed") return result;
|
|
41526
41579
|
if (result.outcome === "served") return null;
|
|
41580
|
+
if (result.outcome === "retrying") lastAliveAt = now();
|
|
41527
41581
|
if (result.outcome === "retrying" && !longRetryFired && opts.onLongRetry && now() - startedAt >= retryingAfterMs) {
|
|
41528
41582
|
longRetryFired = true;
|
|
41529
41583
|
try {
|
|
@@ -41531,7 +41585,8 @@ async function watchForTurnFailure(opts) {
|
|
|
41531
41585
|
} catch {
|
|
41532
41586
|
}
|
|
41533
41587
|
}
|
|
41534
|
-
if (now() >=
|
|
41588
|
+
if (now() - lastAliveAt >= timeoutMs) return null;
|
|
41589
|
+
if (now() - startedAt >= maxWatchMs) return null;
|
|
41535
41590
|
await wait(now() - startedAt < fastPhaseMs ? fastPollMs : slowPollMs);
|
|
41536
41591
|
}
|
|
41537
41592
|
}
|
|
@@ -64,8 +64,8 @@ import {
|
|
|
64
64
|
writeDirectChatSessionState,
|
|
65
65
|
writeEgressAllowlist,
|
|
66
66
|
writePersistentClaudeWrapper
|
|
67
|
-
} from "./chunk-
|
|
68
|
-
import "./chunk-
|
|
67
|
+
} from "./chunk-O6R6HS2Z.js";
|
|
68
|
+
import "./chunk-XWMUQR65.js";
|
|
69
69
|
import "./chunk-DHWNVVX4.js";
|
|
70
70
|
import "./chunk-XWVM4KPK.js";
|
|
71
71
|
import "./chunk-DGUM43GV.js";
|
|
@@ -136,4 +136,4 @@ export {
|
|
|
136
136
|
writeEgressAllowlist,
|
|
137
137
|
writePersistentClaudeWrapper
|
|
138
138
|
};
|
|
139
|
-
//# sourceMappingURL=persistent-session-
|
|
139
|
+
//# sourceMappingURL=persistent-session-K4DLZ7KF.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-O6R6HS2Z.js";
|
|
4
|
+
import "./chunk-XWMUQR65.js";
|
|
5
5
|
import "./chunk-DHWNVVX4.js";
|
|
6
6
|
import "./chunk-XWVM4KPK.js";
|
|
7
7
|
import "./chunk-DGUM43GV.js";
|
|
@@ -801,4 +801,4 @@ export {
|
|
|
801
801
|
readAndResetSlackReplyBindingClassifications,
|
|
802
802
|
readAndResetSlackReplyTargetClassifications
|
|
803
803
|
};
|
|
804
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
804
|
+
//# sourceMappingURL=responsiveness-probe-DXPEIUH6.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XWMUQR65.js";
|
|
4
4
|
import "./chunk-DGUM43GV.js";
|
|
5
5
|
|
|
6
6
|
// src/lib/session-auth-dead.ts
|
|
@@ -204,4 +204,4 @@ export {
|
|
|
204
204
|
decideSessionAuthState,
|
|
205
205
|
probeSessionAuth
|
|
206
206
|
};
|
|
207
|
-
//# sourceMappingURL=session-auth-dead-
|
|
207
|
+
//# sourceMappingURL=session-auth-dead-4SE5Q7MU.js.map
|