@integrity-labs/agt-cli 0.28.1154 → 0.28.1156

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.
Files changed (32) hide show
  1. package/dist/bin/agt.js +8 -7
  2. package/dist/bin/agt.js.map +1 -1
  3. package/dist/{chunk-PG343LR6.js → chunk-7NAL24SM.js} +4 -4
  4. package/dist/{chunk-E5BVBODT.js → chunk-CXEP3UC7.js} +2 -2
  5. package/dist/{chunk-PQ6K7IGT.js → chunk-D55RMQTG.js} +6 -4
  6. package/dist/chunk-D55RMQTG.js.map +1 -0
  7. package/dist/chunk-OAWK4OBN.js +117 -0
  8. package/dist/chunk-OAWK4OBN.js.map +1 -0
  9. package/dist/{chunk-OGEAF6HE.js → chunk-QRFACFSH.js} +26 -12
  10. package/dist/chunk-QRFACFSH.js.map +1 -0
  11. package/dist/{chunk-PIK27GUV.js → chunk-SYQ4VTME.js} +10 -10
  12. package/dist/{claude-code-updater-BQ7OJMUH.js → claude-code-updater-G7CSYMS3.js} +3 -3
  13. package/dist/{claude-pair-runtime-OKT66D2H.js → claude-pair-runtime-BCZPQPWP.js} +45 -11
  14. package/dist/claude-pair-runtime-BCZPQPWP.js.map +1 -0
  15. package/dist/claude-signin-reset-EF3UO5IK.js +23 -0
  16. package/dist/lib/manager-worker.js +48 -29
  17. package/dist/lib/manager-worker.js.map +1 -1
  18. package/dist/{persistent-session-JRNQ3OMQ.js → persistent-session-XCV7VQWS.js} +5 -4
  19. package/dist/persistent-session-XCV7VQWS.js.map +1 -0
  20. package/dist/{responsiveness-probe-KQSVBU2O.js → responsiveness-probe-WZVS3U5H.js} +5 -4
  21. package/dist/{responsiveness-probe-KQSVBU2O.js.map → responsiveness-probe-WZVS3U5H.js.map} +1 -1
  22. package/dist/{session-auth-dead-MSTRS7FK.js → session-auth-dead-AR7G7XZZ.js} +3 -3
  23. package/package.json +1 -1
  24. package/dist/chunk-OGEAF6HE.js.map +0 -1
  25. package/dist/chunk-PQ6K7IGT.js.map +0 -1
  26. package/dist/claude-pair-runtime-OKT66D2H.js.map +0 -1
  27. /package/dist/{chunk-PG343LR6.js.map → chunk-7NAL24SM.js.map} +0 -0
  28. /package/dist/{chunk-E5BVBODT.js.map → chunk-CXEP3UC7.js.map} +0 -0
  29. /package/dist/{chunk-PIK27GUV.js.map → chunk-SYQ4VTME.js.map} +0 -0
  30. /package/dist/{claude-code-updater-BQ7OJMUH.js.map → claude-code-updater-G7CSYMS3.js.map} +0 -0
  31. /package/dist/{persistent-session-JRNQ3OMQ.js.map → claude-signin-reset-EF3UO5IK.js.map} +0 -0
  32. /package/dist/{session-auth-dead-MSTRS7FK.js.map → session-auth-dead-AR7G7XZZ.js.map} +0 -0
@@ -77,7 +77,7 @@ import {
77
77
  setConfigHash,
78
78
  shellGuard,
79
79
  tripClass
80
- } from "../chunk-PIK27GUV.js";
80
+ } from "../chunk-SYQ4VTME.js";
81
81
  import {
82
82
  CLAUDE_CODE_SECURITY_FLOOR,
83
83
  SELF_UPDATE_TIMEOUTS,
@@ -90,7 +90,7 @@ import {
90
90
  runSafeCleanup,
91
91
  tightestDiskStat,
92
92
  withPackageCacheLock
93
- } from "../chunk-PG343LR6.js";
93
+ } from "../chunk-7NAL24SM.js";
94
94
  import {
95
95
  getProjectDir as getProjectDir2,
96
96
  getReadyTasks,
@@ -177,7 +177,7 @@ import {
177
177
  webFetchBaselineValue,
178
178
  webFetchRestartNeeded,
179
179
  writeEgressAllowlist
180
- } from "../chunk-OGEAF6HE.js";
180
+ } from "../chunk-QRFACFSH.js";
181
181
  import {
182
182
  isAgentIdle,
183
183
  isStaleForToday,
@@ -186,7 +186,7 @@ import {
186
186
  sessionTranscriptDir,
187
187
  subagentActivityAgeSeconds,
188
188
  transcriptActivityAgeSeconds
189
- } from "../chunk-E5BVBODT.js";
189
+ } from "../chunk-CXEP3UC7.js";
190
190
  import {
191
191
  classifyUnanswerablePane,
192
192
  focusedConfirmDialogBlock,
@@ -195,17 +195,11 @@ import {
195
195
  sendDialogKeys,
196
196
  simpleTextHash
197
197
  } from "../chunk-B6UYVEMD.js";
198
+ import "../chunk-OAWK4OBN.js";
198
199
  import {
199
200
  parsePsRows,
200
201
  reapOrphanChannelMcps
201
202
  } from "../chunk-XWVM4KPK.js";
202
- import {
203
- CLAUDE_CONFIG_DIR_ENV,
204
- claudeConfigDirFor,
205
- claudeConfigDirIsReady,
206
- effectiveClaudeJsonPath,
207
- seedClaudeConfigFromLegacy
208
- } from "../chunk-EL5MWGGH.js";
209
203
  import {
210
204
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
211
205
  AnchorSessionClient,
@@ -228,6 +222,7 @@ import {
228
222
  INTEGRATIONS_SECTION_START,
229
223
  KANBAN_CHECK_COMMAND,
230
224
  KANBAN_NUDGE_ACTIONABLE_STATUSES,
225
+ MANAGER_LIVENESS_HEARTBEAT_INTERVAL_MS,
231
226
  MAX_AVATAR_ENV_URL_BYTES,
232
227
  NO_FAILING_TURN_RUN,
233
228
  SCHEDULED_TURN_MARKER_FILENAME,
@@ -309,7 +304,14 @@ import {
309
304
  serializeAccountEnforcementMarker,
310
305
  stabiliseResetInstant,
311
306
  sumTranscriptUsageInWindow
312
- } from "../chunk-PQ6K7IGT.js";
307
+ } from "../chunk-D55RMQTG.js";
308
+ import {
309
+ CLAUDE_CONFIG_DIR_ENV,
310
+ claudeConfigDirFor,
311
+ claudeConfigDirIsReady,
312
+ effectiveClaudeJsonPath,
313
+ seedClaudeConfigFromLegacy
314
+ } from "../chunk-EL5MWGGH.js";
313
315
  import "../chunk-DGUM43GV.js";
314
316
 
315
317
  // src/lib/manager-worker.ts
@@ -14109,7 +14111,7 @@ var running = false;
14109
14111
  var pollTimer = null;
14110
14112
  var livenessTimer = null;
14111
14113
  var livenessInFlight = false;
14112
- var LIVENESS_HEARTBEAT_INTERVAL_MS = 3e4;
14114
+ var LIVENESS_HEARTBEAT_INTERVAL_MS = MANAGER_LIVENESS_HEARTBEAT_INTERVAL_MS;
14113
14115
  var PANE_TAIL_PREVIEW_LINES = 5;
14114
14116
  function extractCharterTelegramPeers(rawContent, gateContext) {
14115
14117
  if (!rawContent || rawContent.length === 0) return [];
@@ -15013,7 +15015,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
15013
15015
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
15014
15016
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
15015
15017
  async function channelInboundActivityAgeSecondsFor(codeName) {
15016
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-KQSVBU2O.js");
15018
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-WZVS3U5H.js");
15017
15019
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
15018
15020
  if (newest === null) return null;
15019
15021
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -15805,7 +15807,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
15805
15807
  var lastVersionCheckAt = 0;
15806
15808
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
15807
15809
  var lastResponsivenessProbeAt = 0;
15808
- var agtCliVersion = true ? "0.28.1154" : "dev";
15810
+ var agtCliVersion = true ? "0.28.1156" : "dev";
15809
15811
  function resolveBrewPath(execFileSync3) {
15810
15812
  try {
15811
15813
  const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -17602,7 +17604,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
17602
17604
  if (codeNames.length === 0) return;
17603
17605
  void (async () => {
17604
17606
  try {
17605
- const { collectDiagnostics } = await import("../persistent-session-JRNQ3OMQ.js");
17607
+ const { collectDiagnostics } = await import("../persistent-session-XCV7VQWS.js");
17606
17608
  await api.post("/host/heartbeat", {
17607
17609
  host_id: hostId,
17608
17610
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -17745,7 +17747,7 @@ async function pollCycleInner() {
17745
17747
  }
17746
17748
  try {
17747
17749
  const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
17748
- const { collectDiagnostics } = await import("../persistent-session-JRNQ3OMQ.js");
17750
+ const { collectDiagnostics } = await import("../persistent-session-XCV7VQWS.js");
17749
17751
  const diagCodeNames = [...agentState.persistentSessionAgents];
17750
17752
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor) : void 0;
17751
17753
  let tailscaleHostname;
@@ -17945,7 +17947,7 @@ async function pollCycleInner() {
17945
17947
  setConfigHash(hbResp?.config_hash ?? null);
17946
17948
  try {
17947
17949
  const desiredClaudeCodeVersion = hbResp?.desired_claude_code_version?.trim();
17948
- const { maybeUpdateClaudeCode, shouldRunClaudeCodeUpdater } = await import("../claude-code-updater-BQ7OJMUH.js");
17950
+ const { maybeUpdateClaudeCode, shouldRunClaudeCodeUpdater } = await import("../claude-code-updater-G7CSYMS3.js");
17949
17951
  claudeUpdaterInFlight = true;
17950
17952
  if (desiredClaudeCodeVersion && (claudePairLoop.busy || claudePairingInProgress())) {
17951
17953
  log(
@@ -17977,7 +17979,7 @@ async function pollCycleInner() {
17977
17979
  collectPanelessActivityProbes,
17978
17980
  getResponsivenessIntervalMs,
17979
17981
  occupancyQualificationClassifications
17980
- } = await import("../responsiveness-probe-KQSVBU2O.js");
17982
+ } = await import("../responsiveness-probe-WZVS3U5H.js");
17981
17983
  const probeIntervalMs = getResponsivenessIntervalMs();
17982
17984
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
17983
17985
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -18094,7 +18096,7 @@ async function pollCycleInner() {
18094
18096
  collectResponsivenessProbes,
18095
18097
  livePendingInboundOldestAgeSeconds,
18096
18098
  parkPendingInbound
18097
- } = await import("../responsiveness-probe-KQSVBU2O.js");
18099
+ } = await import("../responsiveness-probe-WZVS3U5H.js");
18098
18100
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
18099
18101
  const wedgeNow = /* @__PURE__ */ new Date();
18100
18102
  const liveAgents = agentState.persistentSessionAgents;
@@ -18380,7 +18382,7 @@ async function pollCycleInner() {
18380
18382
  }
18381
18383
  }
18382
18384
  );
18383
- const { parkPendingInbound } = await import("../responsiveness-probe-KQSVBU2O.js");
18385
+ const { parkPendingInbound } = await import("../responsiveness-probe-WZVS3U5H.js");
18384
18386
  const { parked, deadLettered } = parkPendingInbound(codeName, new Date(fatalNowMs));
18385
18387
  paneFatalStreak.delete(codeName);
18386
18388
  paneFatalRestarts.set(codeName, [...history, fatalNowMs]);
@@ -18411,7 +18413,7 @@ async function pollCycleInner() {
18411
18413
  TRANSCRIPT_MOUNT_ESCALATION_REFRESH_MS,
18412
18414
  bindSourceEscalations
18413
18415
  } = await import("../transcript-mount-health-OHE6IVJV.js");
18414
- const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-JRNQ3OMQ.js");
18416
+ const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-XCV7VQWS.js");
18415
18417
  const mountConfig = resolveTranscriptMountConfig();
18416
18418
  const liveAgents = agentState.persistentSessionAgents;
18417
18419
  for (const tracked of [
@@ -18576,7 +18578,7 @@ async function pollCycleInner() {
18576
18578
  }
18577
18579
  try {
18578
18580
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-VR5QGP3J.js");
18579
- const { probeSessionAuth } = await import("../session-auth-dead-MSTRS7FK.js");
18581
+ const { probeSessionAuth } = await import("../session-auth-dead-AR7G7XZZ.js");
18580
18582
  const observations = [];
18581
18583
  const pendingCacheCommits = [];
18582
18584
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -23231,7 +23233,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
23231
23233
  try {
23232
23234
  const freshId = rotateSessionForWedge(codeName);
23233
23235
  consecutiveWedgeCycles.delete(codeName);
23234
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-KQSVBU2O.js");
23236
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-WZVS3U5H.js");
23235
23237
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
23236
23238
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
23237
23239
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -23274,7 +23276,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
23274
23276
  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}`));
23275
23277
  void (async () => {
23276
23278
  try {
23277
- const { collectDiagnostics } = await import("../persistent-session-JRNQ3OMQ.js");
23279
+ const { collectDiagnostics } = await import("../persistent-session-XCV7VQWS.js");
23278
23280
  await api.post("/host/heartbeat", {
23279
23281
  host_id: hostId,
23280
23282
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -23325,7 +23327,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
23325
23327
  }
23326
23328
  try {
23327
23329
  const hostId = await getHostId();
23328
- const { collectDiagnostics } = await import("../persistent-session-JRNQ3OMQ.js");
23330
+ const { collectDiagnostics } = await import("../persistent-session-XCV7VQWS.js");
23329
23331
  await api.post("/host/heartbeat", {
23330
23332
  host_id: hostId,
23331
23333
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -24018,7 +24020,8 @@ async function processClaudePairSessions(agents) {
24018
24020
  snapshotPairConfig,
24019
24021
  // ENG-11659: result -> report body + the manager.log line that records it.
24020
24022
  planPairStartReport
24021
- } = await import("../claude-pair-runtime-OKT66D2H.js");
24023
+ } = await import("../claude-pair-runtime-BCZPQPWP.js");
24024
+ const { resetClaudeSignin, describeSigninResetForLog, describeSigninResetFailure } = await import("../claude-signin-reset-EF3UO5IK.js");
24022
24025
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
24023
24026
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
24024
24027
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -24060,6 +24063,21 @@ async function processClaudePairSessions(agents) {
24060
24063
  const pairSession = pairTmuxSession(session.pair_id);
24061
24064
  try {
24062
24065
  if (session.status === "initiating") {
24066
+ let signinReset;
24067
+ if (session.reset_signin === true) {
24068
+ const reset = resetClaudeSignin({ pairId: session.pair_id });
24069
+ log(describeSigninResetForLog(session.pair_id, reset));
24070
+ if (reset.outcome === "failed" || reset.outcome === "unsupported") {
24071
+ await reportAndCleanup(session.pair_id, {
24072
+ status: "failure",
24073
+ error_code: reset.outcome === "unsupported" ? "signin_reset_unsupported" : "signin_reset_failed",
24074
+ error_message: describeSigninResetFailure(reset),
24075
+ signin_reset: "failed"
24076
+ });
24077
+ continue;
24078
+ }
24079
+ signinReset = reset.outcome;
24080
+ }
24063
24081
  log(`[claude-pair] spawning pair session ${pairSession} for '${codeName}'`);
24064
24082
  const spawn = await spawnPairSession(pairSession);
24065
24083
  if (!spawn.ok) {
@@ -24068,14 +24086,15 @@ async function processClaudePairSessions(agents) {
24068
24086
  error_code: spawn.error.kind,
24069
24087
  // ENG-10617: forward any message (incl. `claude-exited`, which
24070
24088
  // carries claude's exit status + last output), not just unknown.
24071
- error_message: "message" in spawn.error ? spawn.error.message : void 0
24089
+ error_message: "message" in spawn.error ? spawn.error.message : void 0,
24090
+ ...signinReset ? { signin_reset: signinReset } : {}
24072
24091
  });
24073
24092
  continue;
24074
24093
  }
24075
24094
  spawnedPairIds.add(session.pair_id);
24076
24095
  log(`[claude-pair] dispatching /login (pair ${session.pair_id.slice(0, 8)})`);
24077
24096
  const result = await startClaudePair({ session: pairSession });
24078
- const report = planPairStartReport(session.pair_id, result);
24097
+ const report = planPairStartReport(session.pair_id, result, signinReset);
24079
24098
  log(report.logLine);
24080
24099
  const accepted = await reportAndCleanup(session.pair_id, report.body);
24081
24100
  if (!accepted) {