@integrity-labs/agt-cli 0.28.989 → 0.28.991

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-TGCA3LTI.js → chunk-C72SNMP6.js} +26 -5
  3. package/dist/chunk-C72SNMP6.js.map +1 -0
  4. package/dist/{chunk-6KYXH6ZZ.js → chunk-DN3KNGP4.js} +68 -6
  5. package/dist/{chunk-6KYXH6ZZ.js.map → chunk-DN3KNGP4.js.map} +1 -1
  6. package/dist/{chunk-DP443ICC.js → chunk-RQ3I7GMD.js} +30 -10
  7. package/dist/chunk-RQ3I7GMD.js.map +1 -0
  8. package/dist/{claude-pair-runtime-GQM26I3M.js → claude-pair-runtime-6IA4RPMQ.js} +2 -2
  9. package/dist/lib/manager-worker.js +32 -15
  10. package/dist/lib/manager-worker.js.map +1 -1
  11. package/dist/mcp/direct-chat-channel.js +15 -1
  12. package/dist/mcp/index.js +15 -1
  13. package/dist/mcp/origami.js +15 -1
  14. package/dist/mcp/remote-oauth-proxy.js +120 -29
  15. package/dist/mcp/slack-channel.js +15 -1
  16. package/dist/mcp/telegram-channel.js +15 -1
  17. package/dist/{persistent-session-PYYD53GZ.js → persistent-session-5EDOQC2H.js} +3 -3
  18. package/dist/{responsiveness-probe-JENZOOKG.js → responsiveness-probe-SKX77FST.js} +3 -3
  19. package/dist/{session-auth-dead-BGXRQB27.js → session-auth-dead-XTMVOHUX.js} +2 -2
  20. package/package.json +1 -1
  21. package/dist/chunk-DP443ICC.js.map +0 -1
  22. package/dist/chunk-TGCA3LTI.js.map +0 -1
  23. /package/dist/{claude-pair-runtime-GQM26I3M.js.map → claude-pair-runtime-6IA4RPMQ.js.map} +0 -0
  24. /package/dist/{persistent-session-PYYD53GZ.js.map → persistent-session-5EDOQC2H.js.map} +0 -0
  25. /package/dist/{responsiveness-probe-JENZOOKG.js.map → responsiveness-probe-SKX77FST.js.map} +0 -0
  26. /package/dist/{session-auth-dead-BGXRQB27.js.map → session-auth-dead-XTMVOHUX.js.map} +0 -0
@@ -258,7 +258,7 @@ async function spawnPairSession(session) {
258
258
  return { ok: true };
259
259
  } catch {
260
260
  }
261
- const { resolveClaudeBinary } = await import("./persistent-session-PYYD53GZ.js");
261
+ const { resolveClaudeBinary } = await import("./persistent-session-5EDOQC2H.js");
262
262
  const claudeBin = resolveClaudeBinary();
263
263
  const pairEnv = {
264
264
  ...process.env,
@@ -580,4 +580,4 @@ export {
580
580
  startClaudePair,
581
581
  submitClaudePairCode
582
582
  };
583
- //# sourceMappingURL=claude-pair-runtime-GQM26I3M.js.map
583
+ //# sourceMappingURL=claude-pair-runtime-6IA4RPMQ.js.map
@@ -63,7 +63,7 @@ import {
63
63
  safeWriteJsonAtomic,
64
64
  setConfigHash,
65
65
  tripClass
66
- } from "../chunk-DP443ICC.js";
66
+ } from "../chunk-RQ3I7GMD.js";
67
67
  import {
68
68
  getProjectDir as getProjectDir2,
69
69
  getReadyTasks,
@@ -140,7 +140,7 @@ import {
140
140
  takeZombieDetection,
141
141
  toOpencodeModel,
142
142
  writeEgressAllowlist
143
- } from "../chunk-6KYXH6ZZ.js";
143
+ } from "../chunk-DN3KNGP4.js";
144
144
  import {
145
145
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
146
146
  AnchorSessionClient,
@@ -153,6 +153,7 @@ import {
153
153
  FLAG_REGISTRY,
154
154
  FORCED_UPDATE_HARD_DEADLINE_MS,
155
155
  FORCED_UPDATE_RELAX_AFTER_MS,
156
+ HITL_TIER_ORDER,
156
157
  HOST_USAGE_POLL_INTERVAL_MS,
157
158
  INTEGRATIONS_SECTION_END,
158
159
  INTEGRATIONS_SECTION_START,
@@ -238,7 +239,7 @@ import {
238
239
  subagentActivityAgeSeconds,
239
240
  sumTranscriptUsageInWindow,
240
241
  transcriptActivityAgeSeconds
241
- } from "../chunk-TGCA3LTI.js";
242
+ } from "../chunk-C72SNMP6.js";
242
243
  import "../chunk-DHWNVVX4.js";
243
244
  import {
244
245
  reapOrphanChannelMcps
@@ -583,6 +584,11 @@ function withResolvedRemoteMcp(integration) {
583
584
  ...integration,
584
585
  remoteMcp: integration.remote_mcp ?? void 0,
585
586
  stdioMcp: integration.stdio_mcp === true ? true : void 0,
587
+ // ENG-10614: same seam as remoteMcp above. An EMPTY object maps to
588
+ // undefined deliberately - the proxy reads an empty table as "authoritative,
589
+ // every tool unknown" and refuses every call, so a definition that happens
590
+ // to have zero rows must stay ungated rather than be bricked.
591
+ toolTiers: normalizeToolTiers(integration.tool_tiers),
586
592
  // ENG-8344: same seam, same reason. Only the exact string 'broker' opts a
587
593
  // row into use-time credential delivery — anything else (including a value
588
594
  // a newer API might add later) reads as today's env delivery, so an
@@ -590,6 +596,17 @@ function withResolvedRemoteMcp(integration) {
590
596
  credentialDelivery: normalizeCredentialDelivery(integration.credential_delivery)
591
597
  };
592
598
  }
599
+ function normalizeToolTiers(raw) {
600
+ if (!raw) return void 0;
601
+ const out = {};
602
+ for (const [tool, tier] of Object.entries(raw)) {
603
+ if (typeof tool !== "string" || !tool) continue;
604
+ if (typeof tier !== "string") continue;
605
+ if (!HITL_TIER_ORDER.includes(tier)) continue;
606
+ out[tool] = tier;
607
+ }
608
+ return out;
609
+ }
593
610
  function normalizeCredentialDelivery(value) {
594
611
  const anomaly = describeUnrecognisedCredentialDelivery(value);
595
612
  if (anomaly) {
@@ -13292,7 +13309,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
13292
13309
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
13293
13310
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
13294
13311
  async function channelInboundActivityAgeSecondsFor(codeName) {
13295
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-JENZOOKG.js");
13312
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-SKX77FST.js");
13296
13313
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
13297
13314
  if (newest === null) return null;
13298
13315
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -14035,7 +14052,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
14035
14052
  var lastVersionCheckAt = 0;
14036
14053
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
14037
14054
  var lastResponsivenessProbeAt = 0;
14038
- var agtCliVersion = true ? "0.28.989" : "dev";
14055
+ var agtCliVersion = true ? "0.28.991" : "dev";
14039
14056
  function resolveBrewPath(execFileSync2) {
14040
14057
  try {
14041
14058
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -15651,7 +15668,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
15651
15668
  if (codeNames.length === 0) return;
15652
15669
  void (async () => {
15653
15670
  try {
15654
- const { collectDiagnostics } = await import("../persistent-session-PYYD53GZ.js");
15671
+ const { collectDiagnostics } = await import("../persistent-session-5EDOQC2H.js");
15655
15672
  await api.post("/host/heartbeat", {
15656
15673
  host_id: hostId,
15657
15674
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15793,7 +15810,7 @@ async function pollCycleInner() {
15793
15810
  }
15794
15811
  try {
15795
15812
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15796
- const { collectDiagnostics } = await import("../persistent-session-PYYD53GZ.js");
15813
+ const { collectDiagnostics } = await import("../persistent-session-5EDOQC2H.js");
15797
15814
  const diagCodeNames = [...agentState.persistentSessionAgents];
15798
15815
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15799
15816
  let tailscaleHostname;
@@ -15969,7 +15986,7 @@ async function pollCycleInner() {
15969
15986
  collectPanelessActivityProbes,
15970
15987
  getResponsivenessIntervalMs,
15971
15988
  occupancyQualificationClassifications
15972
- } = await import("../responsiveness-probe-JENZOOKG.js");
15989
+ } = await import("../responsiveness-probe-SKX77FST.js");
15973
15990
  const probeIntervalMs = getResponsivenessIntervalMs();
15974
15991
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15975
15992
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -16086,7 +16103,7 @@ async function pollCycleInner() {
16086
16103
  collectResponsivenessProbes,
16087
16104
  livePendingInboundOldestAgeSeconds,
16088
16105
  parkPendingInbound
16089
- } = await import("../responsiveness-probe-JENZOOKG.js");
16106
+ } = await import("../responsiveness-probe-SKX77FST.js");
16090
16107
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
16091
16108
  const wedgeNow = /* @__PURE__ */ new Date();
16092
16109
  const liveAgents = agentState.persistentSessionAgents;
@@ -16242,7 +16259,7 @@ async function pollCycleInner() {
16242
16259
  }
16243
16260
  try {
16244
16261
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
16245
- const { probeSessionAuth } = await import("../session-auth-dead-BGXRQB27.js");
16262
+ const { probeSessionAuth } = await import("../session-auth-dead-XTMVOHUX.js");
16246
16263
  const observations = [];
16247
16264
  const pendingCacheCommits = [];
16248
16265
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -16466,7 +16483,7 @@ async function pollCycleInner() {
16466
16483
  if (fastRespawn && restartAcks.has(agent.agent_id) && isSessionHealthy(agent.code_name)) {
16467
16484
  flushRestartedAgentDiagnostics(hostId, [agent.code_name]);
16468
16485
  }
16469
- if (restartAcks.has(agent.agent_id) && isSessionHealthy(agent.code_name) && hostFlagStore().getBoolean("session-tool-probe")) {
16486
+ if (restartAcks.has(agent.agent_id) && sessionHealthyAndUnblocked(agent.code_name, isSessionHealthy) && hostFlagStore().getBoolean("session-tool-probe")) {
16470
16487
  promptBindProbeAttempts.set(agent.code_name, PROMPT_BIND_PROBE_ATTEMPTS);
16471
16488
  }
16472
16489
  }
@@ -20530,7 +20547,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20530
20547
  try {
20531
20548
  const freshId = rotateSessionForWedge(codeName);
20532
20549
  consecutiveWedgeCycles.delete(codeName);
20533
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-JENZOOKG.js");
20550
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-SKX77FST.js");
20534
20551
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
20535
20552
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
20536
20553
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -20573,7 +20590,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20573
20590
  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}`));
20574
20591
  void (async () => {
20575
20592
  try {
20576
- const { collectDiagnostics } = await import("../persistent-session-PYYD53GZ.js");
20593
+ const { collectDiagnostics } = await import("../persistent-session-5EDOQC2H.js");
20577
20594
  await api.post("/host/heartbeat", {
20578
20595
  host_id: hostId,
20579
20596
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20624,7 +20641,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
20624
20641
  }
20625
20642
  try {
20626
20643
  const hostId = await getHostId();
20627
- const { collectDiagnostics } = await import("../persistent-session-PYYD53GZ.js");
20644
+ const { collectDiagnostics } = await import("../persistent-session-5EDOQC2H.js");
20628
20645
  await api.post("/host/heartbeat", {
20629
20646
  host_id: hostId,
20630
20647
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -21268,7 +21285,7 @@ async function processClaudePairSessions(agents) {
21268
21285
  killPairSession,
21269
21286
  pairTmuxSession,
21270
21287
  finalizeClaudePairOnboarding
21271
- } = await import("../claude-pair-runtime-GQM26I3M.js");
21288
+ } = await import("../claude-pair-runtime-6IA4RPMQ.js");
21272
21289
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
21273
21290
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
21274
21291
  const killed = await killPairSession(pairTmuxSession(pairId));