@integrity-labs/agt-cli 0.27.117 → 0.27.119
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.
- package/dist/bin/agt.js +4 -4
- package/dist/{chunk-IUN5LBTQ.js → chunk-AZEYTJ4L.js} +2 -2
- package/dist/{chunk-SDRBYSRO.js → chunk-SUSXP7ZY.js} +2 -2
- package/dist/{chunk-MTKM655R.js → chunk-Z6JJRLHH.js} +266 -2
- package/dist/chunk-Z6JJRLHH.js.map +1 -0
- package/dist/{claude-pair-runtime-UX7GWW3O.js → claude-pair-runtime-ERGB26MZ.js} +2 -2
- package/dist/lib/manager-worker.js +48 -13
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/{persistent-session-PIR45QFL.js → persistent-session-YWGDREIZ.js} +3 -3
- package/dist/responsiveness-probe-6YYCQAFI.js +157 -0
- package/dist/responsiveness-probe-6YYCQAFI.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-MTKM655R.js.map +0 -1
- package/dist/responsiveness-probe-FLQZ7E5H.js +0 -74
- package/dist/responsiveness-probe-FLQZ7E5H.js.map +0 -1
- /package/dist/{chunk-IUN5LBTQ.js.map → chunk-AZEYTJ4L.js.map} +0 -0
- /package/dist/{chunk-SDRBYSRO.js.map → chunk-SUSXP7ZY.js.map} +0 -0
- /package/dist/{claude-pair-runtime-UX7GWW3O.js.map → claude-pair-runtime-ERGB26MZ.js.map} +0 -0
- /package/dist/{persistent-session-PIR45QFL.js.map → persistent-session-YWGDREIZ.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-
|
|
103
|
+
const { resolveClaudeBinary } = await import("./persistent-session-YWGDREIZ.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-
|
|
376
|
+
//# sourceMappingURL=claude-pair-runtime-ERGB26MZ.js.map
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
provisionStopHook,
|
|
18
18
|
requireHost,
|
|
19
19
|
safeWriteJsonAtomic
|
|
20
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-SUSXP7ZY.js";
|
|
21
21
|
import {
|
|
22
22
|
getProjectDir as getProjectDir2,
|
|
23
23
|
getReadyTasks,
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
stopPersistentSession,
|
|
57
57
|
takeWatchdogGiveUpCount,
|
|
58
58
|
takeZombieDetection
|
|
59
|
-
} from "../chunk-
|
|
59
|
+
} from "../chunk-AZEYTJ4L.js";
|
|
60
60
|
import {
|
|
61
61
|
KANBAN_CHECK_COMMAND,
|
|
62
62
|
SUPPRESS_SENTINEL,
|
|
@@ -76,13 +76,14 @@ import {
|
|
|
76
76
|
parseTranscriptUsage,
|
|
77
77
|
parseUsageBanner,
|
|
78
78
|
probeComposioAccount,
|
|
79
|
+
probeComposioMcpToolCall,
|
|
79
80
|
probeHttpProvider,
|
|
80
81
|
resolveChannels,
|
|
81
82
|
resolveConnectivityProbe,
|
|
82
83
|
resolveDmTarget,
|
|
83
84
|
worseConnectivityOutcome,
|
|
84
85
|
wrapScheduledTaskPrompt
|
|
85
|
-
} from "../chunk-
|
|
86
|
+
} from "../chunk-Z6JJRLHH.js";
|
|
86
87
|
import {
|
|
87
88
|
parsePsRows,
|
|
88
89
|
reapOrphanChannelMcps
|
|
@@ -1139,6 +1140,13 @@ async function executeConnectivityProbe(target, deps = {}) {
|
|
|
1139
1140
|
if (deps.composioProbe) {
|
|
1140
1141
|
outcomes.push(await deps.composioProbe(target.definitionId, target.credentials));
|
|
1141
1142
|
}
|
|
1143
|
+
if (deps.composioToolCallProbe) {
|
|
1144
|
+
const toolCall = await deps.composioToolCallProbe({
|
|
1145
|
+
serverKey: target.mcpServerKey ?? target.definitionId,
|
|
1146
|
+
definitionId: target.definitionId
|
|
1147
|
+
});
|
|
1148
|
+
if (toolCall) outcomes.push(toolCall);
|
|
1149
|
+
}
|
|
1142
1150
|
if (outcomes.length === 0) return null;
|
|
1143
1151
|
return outcomes.reduce((acc, o) => worseConnectivityOutcome(acc, o));
|
|
1144
1152
|
}
|
|
@@ -4126,13 +4134,26 @@ async function runAgentConnectivityProbes(agent, integrations, projectDir) {
|
|
|
4126
4134
|
}
|
|
4127
4135
|
const apiKey = cfg.headers?.["x-api-key"] ?? cfg.headers?.["X-API-Key"] ?? "";
|
|
4128
4136
|
let expectedUserId = "";
|
|
4137
|
+
let serverId;
|
|
4129
4138
|
try {
|
|
4130
|
-
|
|
4139
|
+
const u = new URL(cfg.url);
|
|
4140
|
+
expectedUserId = u.searchParams.get("user_id") ?? "";
|
|
4141
|
+
const m = u.pathname.match(/\/v3\/mcp\/([^/]+)\/mcp/);
|
|
4142
|
+
serverId = m?.[1] ? decodeURIComponent(m[1]) : void 0;
|
|
4131
4143
|
} catch {
|
|
4132
4144
|
expectedUserId = "";
|
|
4133
4145
|
}
|
|
4134
4146
|
const connectedAccountId = typeof credentials?.["connected_account_id"] === "string" ? credentials["connected_account_id"] : "";
|
|
4135
|
-
return probeComposioAccount({ connectedAccountId, apiKey, expectedUserId });
|
|
4147
|
+
return probeComposioAccount({ connectedAccountId, apiKey, expectedUserId, serverId });
|
|
4148
|
+
},
|
|
4149
|
+
// ENG-6157 (Phase 2): the live tool-call leg. Uses the agent's OWN wired MCP
|
|
4150
|
+
// URL + headers (the exact path tool calls take), so a broken auth_config
|
|
4151
|
+
// linkage surfaces as a real `No connected account found` instead of a
|
|
4152
|
+
// green handshake. Skips (`null`) when no safe read-only tool is callable.
|
|
4153
|
+
composioToolCallProbe: async (target) => {
|
|
4154
|
+
const cfg = readMcpHttpServerConfig(projectDir, target.serverKey);
|
|
4155
|
+
if (!cfg) return null;
|
|
4156
|
+
return probeComposioMcpToolCall({ url: cfg.url, headers: cfg.headers });
|
|
4136
4157
|
}
|
|
4137
4158
|
};
|
|
4138
4159
|
const intervalSec = Number(process.env.AGT_CONNECTIVITY_PROBE_INTERVAL_SECONDS) || 3600;
|
|
@@ -4345,7 +4366,7 @@ var cachedMaintenanceWindow = null;
|
|
|
4345
4366
|
var lastVersionCheckAt = 0;
|
|
4346
4367
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
4347
4368
|
var lastResponsivenessProbeAt = 0;
|
|
4348
|
-
var agtCliVersion = true ? "0.27.
|
|
4369
|
+
var agtCliVersion = true ? "0.27.119" : "dev";
|
|
4349
4370
|
function resolveBrewPath(execFileSync4) {
|
|
4350
4371
|
try {
|
|
4351
4372
|
const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -5538,7 +5559,7 @@ async function pollCycle() {
|
|
|
5538
5559
|
}
|
|
5539
5560
|
try {
|
|
5540
5561
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
5541
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
5562
|
+
const { collectDiagnostics } = await import("../persistent-session-YWGDREIZ.js");
|
|
5542
5563
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
5543
5564
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
|
|
5544
5565
|
let tailscaleHostname;
|
|
@@ -5625,12 +5646,12 @@ async function pollCycle() {
|
|
|
5625
5646
|
const {
|
|
5626
5647
|
collectResponsivenessProbes,
|
|
5627
5648
|
getResponsivenessIntervalMs
|
|
5628
|
-
} = await import("../responsiveness-probe-
|
|
5649
|
+
} = await import("../responsiveness-probe-6YYCQAFI.js");
|
|
5629
5650
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
5630
5651
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
5631
5652
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
5632
5653
|
if (probeCodeNames.length > 0) {
|
|
5633
|
-
const { takeAcpxExecFailureCount, creditAcpxExecFailureCount } = await import("../persistent-session-
|
|
5654
|
+
const { takeAcpxExecFailureCount, creditAcpxExecFailureCount } = await import("../persistent-session-YWGDREIZ.js");
|
|
5634
5655
|
const drainedGiveUps = /* @__PURE__ */ new Map();
|
|
5635
5656
|
const drainedAcpxFailures = /* @__PURE__ */ new Map();
|
|
5636
5657
|
const probes = collectResponsivenessProbes(probeCodeNames).map((p) => {
|
|
@@ -5660,7 +5681,12 @@ async function pollCycle() {
|
|
|
5660
5681
|
try {
|
|
5661
5682
|
const wedgeConfig = resolveWedgeConfig();
|
|
5662
5683
|
if (wedgeConfig.mode !== "off") {
|
|
5663
|
-
const {
|
|
5684
|
+
const {
|
|
5685
|
+
collectResponsivenessProbes,
|
|
5686
|
+
livePendingInboundOldestAgeSeconds,
|
|
5687
|
+
deadLetterPendingInbound
|
|
5688
|
+
} = await import("../responsiveness-probe-6YYCQAFI.js");
|
|
5689
|
+
const wedgeNow = /* @__PURE__ */ new Date();
|
|
5664
5690
|
const liveAgents = agentState.persistentSessionAgents;
|
|
5665
5691
|
for (const tracked of consecutiveWedgeCycles.keys()) {
|
|
5666
5692
|
if (!liveAgents.has(tracked)) consecutiveWedgeCycles.delete(tracked);
|
|
@@ -5671,9 +5697,14 @@ async function pollCycle() {
|
|
|
5671
5697
|
consecutiveWedgeCycles.delete(codeName);
|
|
5672
5698
|
continue;
|
|
5673
5699
|
}
|
|
5700
|
+
const sessionStartMs = getSessionState(codeName)?.startedAt ?? null;
|
|
5674
5701
|
const signals = {
|
|
5675
5702
|
paneActivityAgeSeconds: probe.pane_activity_age_seconds,
|
|
5676
|
-
pendingInboundOldestAgeSeconds:
|
|
5703
|
+
pendingInboundOldestAgeSeconds: livePendingInboundOldestAgeSeconds(
|
|
5704
|
+
codeName,
|
|
5705
|
+
sessionStartMs,
|
|
5706
|
+
wedgeNow
|
|
5707
|
+
)
|
|
5677
5708
|
};
|
|
5678
5709
|
if (!isWedgeCandidateCycle(signals, wedgeConfig)) {
|
|
5679
5710
|
consecutiveWedgeCycles.delete(codeName);
|
|
@@ -5700,7 +5731,11 @@ async function pollCycle() {
|
|
|
5700
5731
|
}
|
|
5701
5732
|
stopPersistentSessionAndForgetMcpBaseline(codeName);
|
|
5702
5733
|
consecutiveWedgeCycles.delete(codeName);
|
|
5703
|
-
|
|
5734
|
+
const deadLettered = deadLetterPendingInbound(codeName, wedgeNow);
|
|
5735
|
+
const deadNote = deadLettered > 0 ? `, ${deadLettered} stale inbound dead-lettered` : "";
|
|
5736
|
+
log(
|
|
5737
|
+
`[wedge] forced fresh respawn ${detail} \u2192 new session ${newId} (transcript preserved${deadNote})`
|
|
5738
|
+
);
|
|
5704
5739
|
} catch (err) {
|
|
5705
5740
|
log(`[wedge] force-fresh respawn failed for ${codeName}: ${err.message}`);
|
|
5706
5741
|
}
|
|
@@ -10105,7 +10140,7 @@ async function processClaudePairSessions(agents) {
|
|
|
10105
10140
|
killPairSession,
|
|
10106
10141
|
pairTmuxSession,
|
|
10107
10142
|
finalizeClaudePairOnboarding
|
|
10108
|
-
} = await import("../claude-pair-runtime-
|
|
10143
|
+
} = await import("../claude-pair-runtime-ERGB26MZ.js");
|
|
10109
10144
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
10110
10145
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
10111
10146
|
const killed = await killPairSession(pairTmuxSession(pairId));
|