@integrity-labs/agt-cli 0.28.752 → 0.28.754

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 (24) hide show
  1. package/dist/bin/agt.js +9 -5
  2. package/dist/bin/agt.js.map +1 -1
  3. package/dist/{chunk-5CTWPH6B.js → chunk-BNXP2TOA.js} +27 -6
  4. package/dist/{chunk-5CTWPH6B.js.map → chunk-BNXP2TOA.js.map} +1 -1
  5. package/dist/{chunk-BAURV6HK.js → chunk-GPDHLGBD.js} +3 -1
  6. package/dist/{chunk-BAURV6HK.js.map → chunk-GPDHLGBD.js.map} +1 -1
  7. package/dist/{chunk-NUSPIGZR.js → chunk-VA6UHKFG.js} +2 -2
  8. package/dist/{claude-pair-runtime-6CV4AHYS.js → claude-pair-runtime-7MWDR3RS.js} +2 -2
  9. package/dist/lib/manager-worker.js +25 -13
  10. package/dist/lib/manager-worker.js.map +1 -1
  11. package/dist/mcp/direct-chat-channel.js +2 -0
  12. package/dist/mcp/index.js +104 -4
  13. package/dist/mcp/origami.js +2 -0
  14. package/dist/mcp/slack-channel.js +2 -0
  15. package/dist/mcp/telegram-channel.js +2 -0
  16. package/dist/{persistent-session-VTK6RTLW.js → persistent-session-6YR3ZHZV.js} +3 -3
  17. package/dist/{responsiveness-probe-TW2EAZTE.js → responsiveness-probe-Y5M7V5EC.js} +3 -3
  18. package/dist/{session-auth-dead-5BTBCHBT.js → session-auth-dead-EDLHHI3H.js} +2 -2
  19. package/package.json +1 -1
  20. /package/dist/{chunk-NUSPIGZR.js.map → chunk-VA6UHKFG.js.map} +0 -0
  21. /package/dist/{claude-pair-runtime-6CV4AHYS.js.map → claude-pair-runtime-7MWDR3RS.js.map} +0 -0
  22. /package/dist/{persistent-session-VTK6RTLW.js.map → persistent-session-6YR3ZHZV.js.map} +0 -0
  23. /package/dist/{responsiveness-probe-TW2EAZTE.js.map → responsiveness-probe-Y5M7V5EC.js.map} +0 -0
  24. /package/dist/{session-auth-dead-5BTBCHBT.js.map → session-auth-dead-EDLHHI3H.js.map} +0 -0
@@ -18,7 +18,7 @@ import {
18
18
  rotateDailySession,
19
19
  sessionFileExists,
20
20
  todayLocalIso
21
- } from "./chunk-BAURV6HK.js";
21
+ } from "./chunk-GPDHLGBD.js";
22
22
  import {
23
23
  reapOrphanChannelMcps
24
24
  } from "./chunk-XWVM4KPK.js";
@@ -4934,4 +4934,4 @@ export {
4934
4934
  stopAllSessionsAndWait,
4935
4935
  getProjectDir
4936
4936
  };
4937
- //# sourceMappingURL=chunk-NUSPIGZR.js.map
4937
+ //# sourceMappingURL=chunk-VA6UHKFG.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-VTK6RTLW.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-6YR3ZHZV.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-6CV4AHYS.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-7MWDR3RS.js.map
@@ -32,6 +32,7 @@ import {
32
32
  isIntegrationBucketedReason,
33
33
  isProvisioningReloadReason,
34
34
  isTransientAuthFailure,
35
+ isWithinReconnectQuiesceWindow,
35
36
  liveProxyExtraHeaderVars,
36
37
  liveProxyTokenVars,
37
38
  markQuarantinedForProbe,
@@ -57,7 +58,7 @@ import {
57
58
  safeWriteJsonAtomic,
58
59
  setConfigHash,
59
60
  tripClass
60
- } from "../chunk-5CTWPH6B.js";
61
+ } from "../chunk-BNXP2TOA.js";
61
62
  import {
62
63
  getProjectDir as getProjectDir2,
63
64
  getReadyTasks,
@@ -118,7 +119,7 @@ import {
118
119
  takeZombieDetection,
119
120
  toOpencodeModel,
120
121
  writeEgressAllowlist
121
- } from "../chunk-NUSPIGZR.js";
122
+ } from "../chunk-VA6UHKFG.js";
122
123
  import {
123
124
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
124
125
  AnchorSessionClient,
@@ -207,7 +208,7 @@ import {
207
208
  subagentActivityAgeSeconds,
208
209
  sumTranscriptUsageInWindow,
209
210
  transcriptActivityAgeSeconds
210
- } from "../chunk-BAURV6HK.js";
211
+ } from "../chunk-GPDHLGBD.js";
211
212
  import {
212
213
  reapOrphanChannelMcps
213
214
  } from "../chunk-XWVM4KPK.js";
@@ -439,6 +440,7 @@ function computeFirstConnectUnsettled(integrations, now, windowMs) {
439
440
  if (i.last_connectivity_status !== "transient_error" && i.last_connectivity_status !== "unverified") {
440
441
  return false;
441
442
  }
443
+ if (isWithinReconnectQuiesceWindow(i.reconnect_quiesced_until, now)) return true;
442
444
  if (!i.created_at) return false;
443
445
  const addedAt = Date.parse(i.created_at);
444
446
  if (!Number.isFinite(addedAt)) return false;
@@ -1671,6 +1673,9 @@ async function runConnectivityProbes(integrations, options = {}) {
1671
1673
  // ENG-8363: row age + quarantine status decide whether a missing
1672
1674
  // `.mcp.json` key is "not written yet" (transient) or "not wired" (down).
1673
1675
  createdAt: integ.created_at ?? null,
1676
+ // ENG-9718: the second settling anchor — see the comment above; a row
1677
+ // reconnected seconds ago is as unsettled as one created seconds ago.
1678
+ reconnectQuiescedUntil: integ.reconnect_quiesced_until ?? null,
1674
1679
  expectedAbsent: integ.quarantined ?? false
1675
1680
  };
1676
1681
  let outcome;
@@ -12738,7 +12743,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
12738
12743
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
12739
12744
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
12740
12745
  async function channelInboundActivityAgeSecondsFor(codeName) {
12741
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-TW2EAZTE.js");
12746
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-Y5M7V5EC.js");
12742
12747
  const newest = newestPendingInboundActivityMtimeMs(dirname10(paneLogPath(codeName)));
12743
12748
  if (newest === null) return null;
12744
12749
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -13076,6 +13081,13 @@ async function runAgentConnectivityProbes(agent, integrations, projectDir) {
13076
13081
  // escalation to `down` reachable at all — an omitted `created_at` reads
13077
13082
  // as "still settling" and never escalates (fail-open by design).
13078
13083
  created_at: i.created_at ?? null,
13084
+ // ENG-9718: the SECOND settling anchor, and it must be forwarded HERE.
13085
+ // This mapper is why declaring the field on the parameter type above is
13086
+ // not enough — the object handed to `runConnectivityProbes` is rebuilt
13087
+ // field by field, so anything not named here arrives as `undefined` and
13088
+ // the anchor silently never fires. Same failure shape as the `cli_binary`
13089
+ // note a few lines up: read by the runner, set by nobody, wrong forever.
13090
+ reconnect_quiesced_until: i.reconnect_quiesced_until ?? null,
13079
13091
  quarantined: i.quarantined ?? false,
13080
13092
  // ENG-7077: the catalog remote-MCP spec, so the executor's resolver can
13081
13093
  // tell an ADR-0033 static-token remote MCP from a built-in native module.
@@ -13391,7 +13403,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
13391
13403
  var lastVersionCheckAt = 0;
13392
13404
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
13393
13405
  var lastResponsivenessProbeAt = 0;
13394
- var agtCliVersion = true ? "0.28.752" : "dev";
13406
+ var agtCliVersion = true ? "0.28.754" : "dev";
13395
13407
  function resolveBrewPath(execFileSync3) {
13396
13408
  try {
13397
13409
  const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -14932,7 +14944,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
14932
14944
  if (codeNames.length === 0) return;
14933
14945
  void (async () => {
14934
14946
  try {
14935
- const { collectDiagnostics } = await import("../persistent-session-VTK6RTLW.js");
14947
+ const { collectDiagnostics } = await import("../persistent-session-6YR3ZHZV.js");
14936
14948
  await api.post("/host/heartbeat", {
14937
14949
  host_id: hostId,
14938
14950
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15073,7 +15085,7 @@ async function pollCycleInner() {
15073
15085
  }
15074
15086
  try {
15075
15087
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15076
- const { collectDiagnostics } = await import("../persistent-session-VTK6RTLW.js");
15088
+ const { collectDiagnostics } = await import("../persistent-session-6YR3ZHZV.js");
15077
15089
  const diagCodeNames = [...agentState.persistentSessionAgents];
15078
15090
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15079
15091
  let tailscaleHostname;
@@ -15242,7 +15254,7 @@ async function pollCycleInner() {
15242
15254
  collectPanelessActivityProbes,
15243
15255
  getResponsivenessIntervalMs,
15244
15256
  occupancyQualificationClassifications
15245
- } = await import("../responsiveness-probe-TW2EAZTE.js");
15257
+ } = await import("../responsiveness-probe-Y5M7V5EC.js");
15246
15258
  const probeIntervalMs = getResponsivenessIntervalMs();
15247
15259
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15248
15260
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -15352,7 +15364,7 @@ async function pollCycleInner() {
15352
15364
  collectResponsivenessProbes,
15353
15365
  livePendingInboundOldestAgeSeconds,
15354
15366
  parkPendingInbound
15355
- } = await import("../responsiveness-probe-TW2EAZTE.js");
15367
+ } = await import("../responsiveness-probe-Y5M7V5EC.js");
15356
15368
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
15357
15369
  const wedgeNow = /* @__PURE__ */ new Date();
15358
15370
  const liveAgents = agentState.persistentSessionAgents;
@@ -15508,7 +15520,7 @@ async function pollCycleInner() {
15508
15520
  }
15509
15521
  try {
15510
15522
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
15511
- const { probeSessionAuth } = await import("../session-auth-dead-5BTBCHBT.js");
15523
+ const { probeSessionAuth } = await import("../session-auth-dead-EDLHHI3H.js");
15512
15524
  const observations = [];
15513
15525
  const pendingCacheCommits = [];
15514
15526
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -19472,7 +19484,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
19472
19484
  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}`));
19473
19485
  void (async () => {
19474
19486
  try {
19475
- const { collectDiagnostics } = await import("../persistent-session-VTK6RTLW.js");
19487
+ const { collectDiagnostics } = await import("../persistent-session-6YR3ZHZV.js");
19476
19488
  await api.post("/host/heartbeat", {
19477
19489
  host_id: hostId,
19478
19490
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -19518,7 +19530,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
19518
19530
  }
19519
19531
  try {
19520
19532
  const hostId = await getHostId();
19521
- const { collectDiagnostics } = await import("../persistent-session-VTK6RTLW.js");
19533
+ const { collectDiagnostics } = await import("../persistent-session-6YR3ZHZV.js");
19522
19534
  await api.post("/host/heartbeat", {
19523
19535
  host_id: hostId,
19524
19536
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20154,7 +20166,7 @@ async function processClaudePairSessions(agents) {
20154
20166
  killPairSession,
20155
20167
  pairTmuxSession,
20156
20168
  finalizeClaudePairOnboarding
20157
- } = await import("../claude-pair-runtime-6CV4AHYS.js");
20169
+ } = await import("../claude-pair-runtime-7MWDR3RS.js");
20158
20170
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
20159
20171
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
20160
20172
  const killed = await killPairSession(pairTmuxSession(pairId));