@integrity-labs/agt-cli 0.27.112 → 0.27.113

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.
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  claudeModelAlias,
3
3
  isClaudeFastMode
4
- } from "./chunk-Z3YQYO43.js";
4
+ } from "./chunk-MTKM655R.js";
5
5
  import {
6
6
  reapOrphanChannelMcps
7
7
  } from "./chunk-XWVM4KPK.js";
@@ -1574,4 +1574,4 @@ export {
1574
1574
  stopAllSessionsAndWait,
1575
1575
  getProjectDir
1576
1576
  };
1577
- //# sourceMappingURL=chunk-D2EJL2KI.js.map
1577
+ //# sourceMappingURL=chunk-RN3OMHW7.js.map
@@ -9,7 +9,7 @@ import {
9
9
  parseDeliveryTarget,
10
10
  registerFramework,
11
11
  wrapScheduledTaskPrompt
12
- } from "./chunk-Z3YQYO43.js";
12
+ } from "./chunk-MTKM655R.js";
13
13
 
14
14
  // ../../packages/core/dist/integrations/registry.js
15
15
  var INTEGRATION_REGISTRY = [
@@ -7591,4 +7591,4 @@ export {
7591
7591
  managerInstallSystemUnitCommand,
7592
7592
  managerUninstallSystemUnitCommand
7593
7593
  };
7594
- //# sourceMappingURL=chunk-ILYN3XBV.js.map
7594
+ //# sourceMappingURL=chunk-UHG6DSOX.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-3ZWAGNNO.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-E6YLH6TX.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-DS7675XI.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-KVJ4U436.js.map
@@ -17,7 +17,7 @@ import {
17
17
  provisionStopHook,
18
18
  requireHost,
19
19
  safeWriteJsonAtomic
20
- } from "../chunk-ILYN3XBV.js";
20
+ } from "../chunk-UHG6DSOX.js";
21
21
  import {
22
22
  getProjectDir as getProjectDir2,
23
23
  getReadyTasks,
@@ -55,7 +55,7 @@ import {
55
55
  stopPersistentSession,
56
56
  takeWatchdogGiveUpCount,
57
57
  takeZombieDetection
58
- } from "../chunk-D2EJL2KI.js";
58
+ } from "../chunk-RN3OMHW7.js";
59
59
  import {
60
60
  KANBAN_CHECK_COMMAND,
61
61
  SUPPRESS_SENTINEL,
@@ -74,12 +74,14 @@ import {
74
74
  parseDeliveryTarget,
75
75
  parseTranscriptUsage,
76
76
  parseUsageBanner,
77
+ probeComposioAccount,
77
78
  probeHttpProvider,
78
79
  resolveChannels,
79
80
  resolveConnectivityProbe,
80
81
  resolveDmTarget,
82
+ worseConnectivityOutcome,
81
83
  wrapScheduledTaskPrompt
82
- } from "../chunk-Z3YQYO43.js";
84
+ } from "../chunk-MTKM655R.js";
83
85
  import {
84
86
  parsePsRows,
85
87
  reapOrphanChannelMcps
@@ -1030,6 +1032,22 @@ async function executeConnectivityProbe(target, deps = {}) {
1030
1032
  case "composio_account":
1031
1033
  if (!deps.composioProbe) return null;
1032
1034
  return deps.composioProbe(target.definitionId, target.credentials);
1035
+ case "managed_composite": {
1036
+ const outcomes = [];
1037
+ if (deps.mcpProbe) {
1038
+ outcomes.push(
1039
+ await deps.mcpProbe({
1040
+ serverKey: target.mcpServerKey ?? target.definitionId,
1041
+ definitionId: target.definitionId
1042
+ })
1043
+ );
1044
+ }
1045
+ if (deps.composioProbe) {
1046
+ outcomes.push(await deps.composioProbe(target.definitionId, target.credentials));
1047
+ }
1048
+ if (outcomes.length === 0) return null;
1049
+ return outcomes.reduce((acc, o) => worseConnectivityOutcome(acc, o));
1050
+ }
1033
1051
  case "mcp_tools_list":
1034
1052
  if (!deps.mcpProbe) return null;
1035
1053
  return deps.mcpProbe({
@@ -3929,6 +3947,28 @@ async function runAgentConnectivityProbes(agent, integrations, projectDir) {
3929
3947
  return { status: "transient_error", message: `MCP server '${target.serverKey}' not resolvable from .mcp.json` };
3930
3948
  }
3931
3949
  return probeMcpHttp(cfg);
3950
+ },
3951
+ // ENG-6139: connected-account binding check for managed (Composio) toolkits.
3952
+ // The MCP handshake reads green on a dead/mis-bound account, so the managed
3953
+ // probe also verifies the account is ACTIVE + bound to the entity the agent
3954
+ // queries with. Inputs come from the agent's OWN wired MCP server: the
3955
+ // `x-api-key` header and the `user_id` query param (the agent already
3956
+ // authenticates with these), plus the recorded connected_account_id.
3957
+ composioProbe: async (definitionId, credentials) => {
3958
+ const serverKey = definitionId.replace(/[^a-z0-9]/gi, "_").toLowerCase();
3959
+ const cfg = readMcpHttpServerConfig(projectDir, serverKey);
3960
+ if (!cfg) {
3961
+ return { status: "transient_error", message: `MCP server '${serverKey}' not resolvable from .mcp.json` };
3962
+ }
3963
+ const apiKey = cfg.headers?.["x-api-key"] ?? cfg.headers?.["X-API-Key"] ?? "";
3964
+ let expectedUserId = "";
3965
+ try {
3966
+ expectedUserId = new URL(cfg.url).searchParams.get("user_id") ?? "";
3967
+ } catch {
3968
+ expectedUserId = "";
3969
+ }
3970
+ const connectedAccountId = typeof credentials?.["connected_account_id"] === "string" ? credentials["connected_account_id"] : "";
3971
+ return probeComposioAccount({ connectedAccountId, apiKey, expectedUserId });
3932
3972
  }
3933
3973
  };
3934
3974
  const intervalSec = Number(process.env.AGT_CONNECTIVITY_PROBE_INTERVAL_SECONDS) || 3600;
@@ -4133,7 +4173,7 @@ var cachedMaintenanceWindow = null;
4133
4173
  var lastVersionCheckAt = 0;
4134
4174
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
4135
4175
  var lastResponsivenessProbeAt = 0;
4136
- var agtCliVersion = true ? "0.27.112" : "dev";
4176
+ var agtCliVersion = true ? "0.27.113" : "dev";
4137
4177
  function resolveBrewPath(execFileSync4) {
4138
4178
  try {
4139
4179
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -5326,7 +5366,7 @@ async function pollCycle() {
5326
5366
  }
5327
5367
  try {
5328
5368
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
5329
- const { collectDiagnostics } = await import("../persistent-session-3ZWAGNNO.js");
5369
+ const { collectDiagnostics } = await import("../persistent-session-E6YLH6TX.js");
5330
5370
  const diagCodeNames = [...agentState.persistentSessionAgents];
5331
5371
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
5332
5372
  let tailscaleHostname;
@@ -5413,12 +5453,12 @@ async function pollCycle() {
5413
5453
  const {
5414
5454
  collectResponsivenessProbes,
5415
5455
  getResponsivenessIntervalMs
5416
- } = await import("../responsiveness-probe-EGXJFJBW.js");
5456
+ } = await import("../responsiveness-probe-TDHX6JKG.js");
5417
5457
  const probeIntervalMs = getResponsivenessIntervalMs();
5418
5458
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
5419
5459
  const probeCodeNames = [...agentState.persistentSessionAgents];
5420
5460
  if (probeCodeNames.length > 0) {
5421
- const { takeAcpxExecFailureCount, creditAcpxExecFailureCount } = await import("../persistent-session-3ZWAGNNO.js");
5461
+ const { takeAcpxExecFailureCount, creditAcpxExecFailureCount } = await import("../persistent-session-E6YLH6TX.js");
5422
5462
  const drainedGiveUps = /* @__PURE__ */ new Map();
5423
5463
  const drainedAcpxFailures = /* @__PURE__ */ new Map();
5424
5464
  const probes = collectResponsivenessProbes(probeCodeNames).map((p) => {
@@ -9794,7 +9834,7 @@ async function processClaudePairSessions(agents) {
9794
9834
  killPairSession,
9795
9835
  pairTmuxSession,
9796
9836
  finalizeClaudePairOnboarding
9797
- } = await import("../claude-pair-runtime-DS7675XI.js");
9837
+ } = await import("../claude-pair-runtime-KVJ4U436.js");
9798
9838
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
9799
9839
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
9800
9840
  const killed = await killPairSession(pairTmuxSession(pairId));