@integrity-labs/agt-cli 0.28.831 → 0.28.833

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.
@@ -18,7 +18,7 @@ import {
18
18
  rotateDailySession,
19
19
  sessionFileExists,
20
20
  todayLocalIso
21
- } from "./chunk-4ZPOP7EW.js";
21
+ } from "./chunk-DUOFKTAD.js";
22
22
  import {
23
23
  reapOrphanChannelMcps
24
24
  } from "./chunk-XWVM4KPK.js";
@@ -5326,4 +5326,4 @@ export {
5326
5326
  stopAllSessionsAndWait,
5327
5327
  getProjectDir
5328
5328
  };
5329
- //# sourceMappingURL=chunk-N4QVPPYS.js.map
5329
+ //# sourceMappingURL=chunk-W4KAZQBS.js.map
@@ -100,7 +100,7 @@ async function spawnPairSession(session) {
100
100
  return { ok: true };
101
101
  } catch {
102
102
  }
103
- const { resolveClaudeBinary } = await import("./persistent-session-W23U7GQU.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-N6FIS7UY.js");
104
104
  const claudeBin = resolveClaudeBinary();
105
105
  const pairEnv = {
106
106
  ...process.env,
@@ -373,4 +373,4 @@ export {
373
373
  startClaudePair,
374
374
  submitClaudePairCode
375
375
  };
376
- //# sourceMappingURL=claude-pair-runtime-PUWAIK73.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-A52UZQ6V.js.map
@@ -60,7 +60,7 @@ import {
60
60
  safeWriteJsonAtomic,
61
61
  setConfigHash,
62
62
  tripClass
63
- } from "../chunk-PODKITVQ.js";
63
+ } from "../chunk-LGVB4OTX.js";
64
64
  import {
65
65
  getProjectDir as getProjectDir2,
66
66
  getReadyTasks,
@@ -126,7 +126,7 @@ import {
126
126
  takeZombieDetection,
127
127
  toOpencodeModel,
128
128
  writeEgressAllowlist
129
- } from "../chunk-N4QVPPYS.js";
129
+ } from "../chunk-W4KAZQBS.js";
130
130
  import {
131
131
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
132
132
  AnchorSessionClient,
@@ -221,7 +221,7 @@ import {
221
221
  subagentActivityAgeSeconds,
222
222
  sumTranscriptUsageInWindow,
223
223
  transcriptActivityAgeSeconds
224
- } from "../chunk-4ZPOP7EW.js";
224
+ } from "../chunk-DUOFKTAD.js";
225
225
  import {
226
226
  reapOrphanChannelMcps
227
227
  } from "../chunk-XWVM4KPK.js";
@@ -12319,6 +12319,31 @@ function recordRestartForBreaker(codeName, reason) {
12319
12319
  });
12320
12320
  maybeReportPendingSuppression(codeName);
12321
12321
  }
12322
+ if (result.operatorCommandLoop) {
12323
+ const { count, windowMs, reason: loopReason } = result.operatorCommandLoop;
12324
+ const windowMins = Math.round(windowMs / 6e4);
12325
+ log(
12326
+ `[restart-breaker] agent=${codeName} OPERATOR-RESTART LOOP: ${count} '${loopReason}' restarts in ${windowMins}m. A person keeps restarting this agent, so the AGENT is likely unhealthy \u2014 the operator is not. The agent is deliberately NOT paused (ENG-10066), because pausing the agent somebody is recovering is how razorclaw-sales stayed down for 14h.`
12327
+ );
12328
+ queueSuppressionReport(codeName, "operator_command_loop", {
12329
+ trip_class: "operator-command",
12330
+ // No integration is involved in a `/restart`; the route renders an empty
12331
+ // key as "an unattributed integration" rather than inventing one.
12332
+ bucket_key: "",
12333
+ bucket_count: count,
12334
+ // Reusing the scheduled_* wire fields rather than forking a parallel pair:
12335
+ // they carry "the loop's window" and "the loop's dominant reason", which is
12336
+ // exactly what these are, and a second pair would double the parsing on the
12337
+ // route for no added meaning.
12338
+ scheduled_window_ms: windowMs,
12339
+ scheduled_reason: loopReason,
12340
+ // Not applicable — nothing to do with the agent's age or the new-agent
12341
+ // grace. Null rather than 0, which would read as "brand new" (ENG-8679 AC4).
12342
+ agent_age_ms: null,
12343
+ grace_expires_at: null
12344
+ });
12345
+ maybeReportPendingSuppression(codeName);
12346
+ }
12322
12347
  if (!result.tripped || !result.trip) {
12323
12348
  if (isProvisioningReloadReason(reason) && result.maxProvisioningBucket >= RESTART_BREAKER_PROVISIONING_MAX) {
12324
12349
  const culprit = result.maxProvisioningBucketKey ? ` [${result.maxProvisioningBucketKey}]` : "";
@@ -12928,7 +12953,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
12928
12953
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
12929
12954
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
12930
12955
  async function channelInboundActivityAgeSecondsFor(codeName) {
12931
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-IRQKIEBW.js");
12956
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-OBQCSEFT.js");
12932
12957
  const newest = newestPendingInboundActivityMtimeMs(dirname10(paneLogPath(codeName)));
12933
12958
  if (newest === null) return null;
12934
12959
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -13596,7 +13621,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
13596
13621
  var lastVersionCheckAt = 0;
13597
13622
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
13598
13623
  var lastResponsivenessProbeAt = 0;
13599
- var agtCliVersion = true ? "0.28.831" : "dev";
13624
+ var agtCliVersion = true ? "0.28.833" : "dev";
13600
13625
  function resolveBrewPath(execFileSync2) {
13601
13626
  try {
13602
13627
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -15186,7 +15211,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
15186
15211
  if (codeNames.length === 0) return;
15187
15212
  void (async () => {
15188
15213
  try {
15189
- const { collectDiagnostics } = await import("../persistent-session-W23U7GQU.js");
15214
+ const { collectDiagnostics } = await import("../persistent-session-N6FIS7UY.js");
15190
15215
  await api.post("/host/heartbeat", {
15191
15216
  host_id: hostId,
15192
15217
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15328,7 +15353,7 @@ async function pollCycleInner() {
15328
15353
  }
15329
15354
  try {
15330
15355
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15331
- const { collectDiagnostics } = await import("../persistent-session-W23U7GQU.js");
15356
+ const { collectDiagnostics } = await import("../persistent-session-N6FIS7UY.js");
15332
15357
  const diagCodeNames = [...agentState.persistentSessionAgents];
15333
15358
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15334
15359
  let tailscaleHostname;
@@ -15497,7 +15522,7 @@ async function pollCycleInner() {
15497
15522
  collectPanelessActivityProbes,
15498
15523
  getResponsivenessIntervalMs,
15499
15524
  occupancyQualificationClassifications
15500
- } = await import("../responsiveness-probe-IRQKIEBW.js");
15525
+ } = await import("../responsiveness-probe-OBQCSEFT.js");
15501
15526
  const probeIntervalMs = getResponsivenessIntervalMs();
15502
15527
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15503
15528
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -15614,7 +15639,7 @@ async function pollCycleInner() {
15614
15639
  collectResponsivenessProbes,
15615
15640
  livePendingInboundOldestAgeSeconds,
15616
15641
  parkPendingInbound
15617
- } = await import("../responsiveness-probe-IRQKIEBW.js");
15642
+ } = await import("../responsiveness-probe-OBQCSEFT.js");
15618
15643
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
15619
15644
  const wedgeNow = /* @__PURE__ */ new Date();
15620
15645
  const liveAgents = agentState.persistentSessionAgents;
@@ -15770,7 +15795,7 @@ async function pollCycleInner() {
15770
15795
  }
15771
15796
  try {
15772
15797
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
15773
- const { probeSessionAuth } = await import("../session-auth-dead-VDDXVJTX.js");
15798
+ const { probeSessionAuth } = await import("../session-auth-dead-LIPEYPBX.js");
15774
15799
  const observations = [];
15775
15800
  const pendingCacheCommits = [];
15776
15801
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -20003,7 +20028,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20003
20028
  void api.post("/host/restart-ack", { host_id: hostId, agent_id: agentId, restart_requested_at: requestedAt }).catch((err) => log(`[restart-lane] ack failed for '${codeName}': ${err.message}`));
20004
20029
  void (async () => {
20005
20030
  try {
20006
- const { collectDiagnostics } = await import("../persistent-session-W23U7GQU.js");
20031
+ const { collectDiagnostics } = await import("../persistent-session-N6FIS7UY.js");
20007
20032
  await api.post("/host/heartbeat", {
20008
20033
  host_id: hostId,
20009
20034
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20049,7 +20074,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
20049
20074
  }
20050
20075
  try {
20051
20076
  const hostId = await getHostId();
20052
- const { collectDiagnostics } = await import("../persistent-session-W23U7GQU.js");
20077
+ const { collectDiagnostics } = await import("../persistent-session-N6FIS7UY.js");
20053
20078
  await api.post("/host/heartbeat", {
20054
20079
  host_id: hostId,
20055
20080
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20685,7 +20710,7 @@ async function processClaudePairSessions(agents) {
20685
20710
  killPairSession,
20686
20711
  pairTmuxSession,
20687
20712
  finalizeClaudePairOnboarding
20688
- } = await import("../claude-pair-runtime-PUWAIK73.js");
20713
+ } = await import("../claude-pair-runtime-A52UZQ6V.js");
20689
20714
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
20690
20715
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
20691
20716
  const killed = await killPairSession(pairTmuxSession(pairId));