@integrity-labs/agt-cli 0.28.384 → 0.28.385

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.
@@ -43,7 +43,7 @@ import {
43
43
  resolveEffectivePinRaw,
44
44
  safeWriteJsonAtomic,
45
45
  setConfigHash
46
- } from "../chunk-IXN2AFOX.js";
46
+ } from "../chunk-P3SY6KTF.js";
47
47
  import {
48
48
  getProjectDir as getProjectDir2,
49
49
  getReadyTasks,
@@ -8207,6 +8207,7 @@ function hasRevokedResiduals(state7) {
8207
8207
  return state7.gatewayRunning || state7.portAllocated || state7.provisionDirExists;
8208
8208
  }
8209
8209
  var pendingSessionRestarts = /* @__PURE__ */ new Map();
8210
+ var lastRestartWasExternal = /* @__PURE__ */ new Map();
8210
8211
  var pendingRestartVerifications = /* @__PURE__ */ new Map();
8211
8212
  var restartBreaker = new RestartBreaker();
8212
8213
  var reportedTrips = /* @__PURE__ */ new Map();
@@ -8907,6 +8908,7 @@ function stopPersistentSessionAndForgetMcpBaseline(codeName, breakerReason, gate
8907
8908
  }
8908
8909
  cancelPendingSessionRestart(codeName);
8909
8910
  stopPersistentSession(codeName, log);
8911
+ lastRestartWasExternal.set(codeName, gateReason !== "mcp-presence-reaper");
8910
8912
  runningMcpHashes.delete(codeName);
8911
8913
  runningMcpServerKeys.delete(codeName);
8912
8914
  runningChannelSecretHashes.delete(codeName);
@@ -9093,7 +9095,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
9093
9095
  var lastVersionCheckAt = 0;
9094
9096
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
9095
9097
  var lastResponsivenessProbeAt = 0;
9096
- var agtCliVersion = true ? "0.28.384" : "dev";
9098
+ var agtCliVersion = true ? "0.28.385" : "dev";
9097
9099
  function resolveBrewPath(execFileSync2) {
9098
9100
  try {
9099
9101
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -12723,6 +12725,14 @@ async function processAgent(agent, agentStates) {
12723
12725
  // but-not-yet-live MCP, so don't let the reaper re-fire + inflate the
12724
12726
  // McpReaperRestartsHourly metric into a false flapping alarm.
12725
12727
  restartPending: pendingSessionRestarts.has(agent.code_name),
12728
+ // ENG-8013 (storm-awareness): tell the reaper whether THIS session
12729
+ // generation was born from an external respawn (integration-change /
12730
+ // channel-set-change / day-rollover / wedge / operator restart, or a
12731
+ // storm) vs the reaper's own recovery restart. When external, a missing
12732
+ // channel MCP is churn collateral and must not accrue quarantine budget,
12733
+ // the durable fix for the ENG-8003 storm-quarantine incident. Absent map
12734
+ // entry (first boot) → false → count normally.
12735
+ currentGenerationExternallyStarted: lastRestartWasExternal.get(agent.code_name) ?? false,
12726
12736
  // ENG-5441 / ENG-5547: a mcp-presence-reaper restart counts against
12727
12737
  // the agent-wide breaker ONLY when several distinct MCP servers are
12728
12738
  // missing at once — a thrashing collection that rotates restarts of