@integrity-labs/agt-cli 0.28.859 → 0.28.861

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 (26) hide show
  1. package/dist/bin/agt.js +5 -5
  2. package/dist/{chunk-R2NHRLD7.js → chunk-G23CONQJ.js} +2 -2
  3. package/dist/{chunk-JTDX6A6V.js → chunk-IQROQ3XJ.js} +382 -130
  4. package/dist/chunk-IQROQ3XJ.js.map +1 -0
  5. package/dist/{chunk-FJ372WWE.js → chunk-USHD2L3F.js} +47 -10
  6. package/dist/chunk-USHD2L3F.js.map +1 -0
  7. package/dist/{claude-pair-runtime-SC2TO4SG.js → claude-pair-runtime-6FJOWTEX.js} +2 -2
  8. package/dist/lib/manager-worker.js +35 -16
  9. package/dist/lib/manager-worker.js.map +1 -1
  10. package/dist/mcp/augmented-admin.js +1 -1
  11. package/dist/mcp/direct-chat-channel.js +46 -9
  12. package/dist/mcp/index.js +46 -9
  13. package/dist/mcp/origami.js +46 -9
  14. package/dist/mcp/slack-channel.js +46 -9
  15. package/dist/mcp/telegram-channel.js +46 -9
  16. package/dist/{persistent-session-6ZJR4HYE.js → persistent-session-6DET4JLF.js} +3 -3
  17. package/dist/{responsiveness-probe-UIYBJC7G.js → responsiveness-probe-ZNKOWUIE.js} +3 -3
  18. package/dist/{session-auth-dead-S6QREVV3.js → session-auth-dead-XU7VC6HM.js} +2 -2
  19. package/package.json +1 -1
  20. package/dist/chunk-FJ372WWE.js.map +0 -1
  21. package/dist/chunk-JTDX6A6V.js.map +0 -1
  22. /package/dist/{chunk-R2NHRLD7.js.map → chunk-G23CONQJ.js.map} +0 -0
  23. /package/dist/{claude-pair-runtime-SC2TO4SG.js.map → claude-pair-runtime-6FJOWTEX.js.map} +0 -0
  24. /package/dist/{persistent-session-6ZJR4HYE.js.map → persistent-session-6DET4JLF.js.map} +0 -0
  25. /package/dist/{responsiveness-probe-UIYBJC7G.js.map → responsiveness-probe-ZNKOWUIE.js.map} +0 -0
  26. /package/dist/{session-auth-dead-S6QREVV3.js.map → session-auth-dead-XU7VC6HM.js.map} +0 -0
@@ -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-6ZJR4HYE.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-6DET4JLF.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-SC2TO4SG.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-6FJOWTEX.js.map
@@ -1,9 +1,11 @@
1
1
  import {
2
2
  ApiError,
3
+ COMPUTER_USE_MCP_KEY,
3
4
  FIRST_CONNECT_WINDOW_MS,
4
5
  HostFlagStore,
5
6
  RestartBreaker,
6
7
  SUPERVISOR_RESTART_EXIT_CODE,
8
+ TunnelWatcher,
7
9
  api,
8
10
  atomicWriteFileSync,
9
11
  buildConnectivityProbeDeps,
@@ -11,6 +13,7 @@ import {
11
13
  classifyEnvIntegrationsDiff,
12
14
  clearPresenceReaperState,
13
15
  clearPresenceReaperStateForKeys,
16
+ computerUseReaperView,
14
17
  decidePin,
15
18
  defaultFlagsCachePath,
16
19
  deriveMcpServerKey,
@@ -60,7 +63,7 @@ import {
60
63
  safeWriteJsonAtomic,
61
64
  setConfigHash,
62
65
  tripClass
63
- } from "../chunk-JTDX6A6V.js";
66
+ } from "../chunk-IQROQ3XJ.js";
64
67
  import {
65
68
  getProjectDir as getProjectDir2,
66
69
  getReadyTasks,
@@ -126,7 +129,7 @@ import {
126
129
  takeZombieDetection,
127
130
  toOpencodeModel,
128
131
  writeEgressAllowlist
129
- } from "../chunk-R2NHRLD7.js";
132
+ } from "../chunk-G23CONQJ.js";
130
133
  import {
131
134
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
132
135
  AnchorSessionClient,
@@ -221,7 +224,7 @@ import {
221
224
  subagentActivityAgeSeconds,
222
225
  sumTranscriptUsageInWindow,
223
226
  transcriptActivityAgeSeconds
224
- } from "../chunk-FJ372WWE.js";
227
+ } from "../chunk-USHD2L3F.js";
225
228
  import {
226
229
  reapOrphanChannelMcps
227
230
  } from "../chunk-XWVM4KPK.js";
@@ -12270,6 +12273,7 @@ function hasRevokedResiduals(state9) {
12270
12273
  }
12271
12274
  var pendingSessionRestarts = /* @__PURE__ */ new Map();
12272
12275
  var lastRestartWasExternal = /* @__PURE__ */ new Map();
12276
+ var computerUseTunnels = new TunnelWatcher();
12273
12277
  var pendingRestartVerifications = /* @__PURE__ */ new Map();
12274
12278
  var agentCreatedAtMs = /* @__PURE__ */ new Map();
12275
12279
  function noteAgentCreatedAt(codeName, createdAt) {
@@ -13001,7 +13005,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
13001
13005
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
13002
13006
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
13003
13007
  async function channelInboundActivityAgeSecondsFor(codeName) {
13004
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-UIYBJC7G.js");
13008
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-ZNKOWUIE.js");
13005
13009
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
13006
13010
  if (newest === null) return null;
13007
13011
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -13669,7 +13673,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
13669
13673
  var lastVersionCheckAt = 0;
13670
13674
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
13671
13675
  var lastResponsivenessProbeAt = 0;
13672
- var agtCliVersion = true ? "0.28.859" : "dev";
13676
+ var agtCliVersion = true ? "0.28.861" : "dev";
13673
13677
  function resolveBrewPath(execFileSync2) {
13674
13678
  try {
13675
13679
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -15259,7 +15263,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
15259
15263
  if (codeNames.length === 0) return;
15260
15264
  void (async () => {
15261
15265
  try {
15262
- const { collectDiagnostics } = await import("../persistent-session-6ZJR4HYE.js");
15266
+ const { collectDiagnostics } = await import("../persistent-session-6DET4JLF.js");
15263
15267
  await api.post("/host/heartbeat", {
15264
15268
  host_id: hostId,
15265
15269
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15401,7 +15405,7 @@ async function pollCycleInner() {
15401
15405
  }
15402
15406
  try {
15403
15407
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15404
- const { collectDiagnostics } = await import("../persistent-session-6ZJR4HYE.js");
15408
+ const { collectDiagnostics } = await import("../persistent-session-6DET4JLF.js");
15405
15409
  const diagCodeNames = [...agentState.persistentSessionAgents];
15406
15410
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15407
15411
  let tailscaleHostname;
@@ -15570,7 +15574,7 @@ async function pollCycleInner() {
15570
15574
  collectPanelessActivityProbes,
15571
15575
  getResponsivenessIntervalMs,
15572
15576
  occupancyQualificationClassifications
15573
- } = await import("../responsiveness-probe-UIYBJC7G.js");
15577
+ } = await import("../responsiveness-probe-ZNKOWUIE.js");
15574
15578
  const probeIntervalMs = getResponsivenessIntervalMs();
15575
15579
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15576
15580
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -15687,7 +15691,7 @@ async function pollCycleInner() {
15687
15691
  collectResponsivenessProbes,
15688
15692
  livePendingInboundOldestAgeSeconds,
15689
15693
  parkPendingInbound
15690
- } = await import("../responsiveness-probe-UIYBJC7G.js");
15694
+ } = await import("../responsiveness-probe-ZNKOWUIE.js");
15691
15695
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
15692
15696
  const wedgeNow = /* @__PURE__ */ new Date();
15693
15697
  const liveAgents = agentState.persistentSessionAgents;
@@ -15843,7 +15847,7 @@ async function pollCycleInner() {
15843
15847
  }
15844
15848
  try {
15845
15849
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
15846
- const { probeSessionAuth } = await import("../session-auth-dead-S6QREVV3.js");
15850
+ const { probeSessionAuth } = await import("../session-auth-dead-XU7VC6HM.js");
15847
15851
  const observations = [];
15848
15852
  const pendingCacheCommits = [];
15849
15853
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -18575,15 +18579,30 @@ async function processAgent(agent, agentStates, managedToolkits) {
18575
18579
  mcpJsonParsed = JSON.parse(readFileSync32(mcpPath, "utf-8"));
18576
18580
  } catch {
18577
18581
  }
18582
+ const computerUseIsolated = isolationMode(agent.code_name) === "docker";
18583
+ const computerUseVerdict = computerUseTunnels.observe(
18584
+ agent.code_name,
18585
+ mcpJsonParsed?.mcpServers?.[COMPUTER_USE_MCP_KEY]?.args,
18586
+ computerUseIsolated,
18587
+ {
18588
+ log,
18589
+ onRecovered: (codeName) => {
18590
+ clearPresenceReaperStateForKeys(codeName, /* @__PURE__ */ new Set([COMPUTER_USE_MCP_KEY]));
18591
+ log(
18592
+ `[computer-use-tunnel] '${codeName}': tunnel reachable again \u2014 cleared presence-reaper state for '${COMPUTER_USE_MCP_KEY}' so it gets a fresh restart budget (ENG-10134)`
18593
+ );
18594
+ }
18595
+ }
18596
+ );
18578
18597
  reapMissingMcpSessions({
18579
18598
  log,
18580
18599
  codeName: agent.code_name,
18581
- mcpJson: mcpJsonParsed,
18600
+ mcpJson: computerUseReaperView(mcpJsonParsed, computerUseVerdict),
18582
18601
  sessionStartedAt: sess?.startedAt ?? null,
18583
18602
  // ENG-6660: under Docker the MCP children live in the agent's container
18584
18603
  // PID namespace - probe inside it (docker exec ps) instead of the host,
18585
18604
  // or every declared MCP looks "missing" -> restart loop -> flapping.
18586
- isolated: isolationMode(agent.code_name) === "docker",
18605
+ isolated: computerUseIsolated,
18587
18606
  // ENG-6486: a restart is already scheduled/deferred for this agent (e.g.
18588
18607
  // a freshly-added channel awaiting its convergence restart, deferred by
18589
18608
  // the maintenance window). The pending restart will spawn the declared-
@@ -20073,7 +20092,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20073
20092
  try {
20074
20093
  const freshId = rotateSessionForWedge(codeName);
20075
20094
  consecutiveWedgeCycles.delete(codeName);
20076
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-UIYBJC7G.js");
20095
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-ZNKOWUIE.js");
20077
20096
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
20078
20097
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
20079
20098
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -20111,7 +20130,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20111
20130
  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}`));
20112
20131
  void (async () => {
20113
20132
  try {
20114
- const { collectDiagnostics } = await import("../persistent-session-6ZJR4HYE.js");
20133
+ const { collectDiagnostics } = await import("../persistent-session-6DET4JLF.js");
20115
20134
  await api.post("/host/heartbeat", {
20116
20135
  host_id: hostId,
20117
20136
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20157,7 +20176,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
20157
20176
  }
20158
20177
  try {
20159
20178
  const hostId = await getHostId();
20160
- const { collectDiagnostics } = await import("../persistent-session-6ZJR4HYE.js");
20179
+ const { collectDiagnostics } = await import("../persistent-session-6DET4JLF.js");
20161
20180
  await api.post("/host/heartbeat", {
20162
20181
  host_id: hostId,
20163
20182
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20793,7 +20812,7 @@ async function processClaudePairSessions(agents) {
20793
20812
  killPairSession,
20794
20813
  pairTmuxSession,
20795
20814
  finalizeClaudePairOnboarding
20796
- } = await import("../claude-pair-runtime-SC2TO4SG.js");
20815
+ } = await import("../claude-pair-runtime-6FJOWTEX.js");
20797
20816
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
20798
20817
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
20799
20818
  const killed = await killPairSession(pairTmuxSession(pairId));