@integrity-labs/agt-cli 0.28.1021 → 0.28.1022
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-SGAW3XWQ.js → chunk-5MUSHNVX.js} +3 -3
- package/dist/{chunk-CVQDMHOP.js → chunk-QXJWRE64.js} +2 -1
- package/dist/{chunk-CVQDMHOP.js.map → chunk-QXJWRE64.js.map} +1 -1
- package/dist/{claude-pair-runtime-JQRJXNSL.js → claude-pair-runtime-KKFNGRSA.js} +2 -2
- package/dist/lib/manager-worker.js +34 -12
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/mcp/direct-chat-channel.js +50 -2
- package/dist/mcp/slack-channel.js +24 -2
- package/dist/mcp/telegram-channel.js +24 -2
- package/dist/{persistent-session-UZBB7EOS.js → persistent-session-ZQDNCKQH.js} +2 -2
- package/dist/{responsiveness-probe-KLOUFBM5.js → responsiveness-probe-Q27WU2MW.js} +2 -2
- package/package.json +1 -1
- /package/dist/{chunk-SGAW3XWQ.js.map → chunk-5MUSHNVX.js.map} +0 -0
- /package/dist/{claude-pair-runtime-JQRJXNSL.js.map → claude-pair-runtime-KKFNGRSA.js.map} +0 -0
- /package/dist/{persistent-session-UZBB7EOS.js.map → persistent-session-ZQDNCKQH.js.map} +0 -0
- /package/dist/{responsiveness-probe-KLOUFBM5.js.map → responsiveness-probe-Q27WU2MW.js.map} +0 -0
|
@@ -266,7 +266,7 @@ async function spawnPairSession(session) {
|
|
|
266
266
|
return { ok: true };
|
|
267
267
|
} catch {
|
|
268
268
|
}
|
|
269
|
-
const { resolveClaudeBinary } = await import("./persistent-session-
|
|
269
|
+
const { resolveClaudeBinary } = await import("./persistent-session-ZQDNCKQH.js");
|
|
270
270
|
const claudeBin = resolveClaudeBinary();
|
|
271
271
|
const pairEnv = {
|
|
272
272
|
...process.env,
|
|
@@ -734,4 +734,4 @@ export {
|
|
|
734
734
|
startClaudePair,
|
|
735
735
|
submitClaudePairCode
|
|
736
736
|
};
|
|
737
|
-
//# sourceMappingURL=claude-pair-runtime-
|
|
737
|
+
//# sourceMappingURL=claude-pair-runtime-KKFNGRSA.js.map
|
|
@@ -66,7 +66,7 @@ import {
|
|
|
66
66
|
safeWriteJsonAtomic,
|
|
67
67
|
setConfigHash,
|
|
68
68
|
tripClass
|
|
69
|
-
} from "../chunk-
|
|
69
|
+
} from "../chunk-5MUSHNVX.js";
|
|
70
70
|
import {
|
|
71
71
|
getProjectDir as getProjectDir2,
|
|
72
72
|
getReadyTasks,
|
|
@@ -147,7 +147,7 @@ import {
|
|
|
147
147
|
takeZombieDetection,
|
|
148
148
|
toOpencodeModel,
|
|
149
149
|
writeEgressAllowlist
|
|
150
|
-
} from "../chunk-
|
|
150
|
+
} from "../chunk-QXJWRE64.js";
|
|
151
151
|
import {
|
|
152
152
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
153
153
|
AnchorSessionClient,
|
|
@@ -13790,7 +13790,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
13790
13790
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
13791
13791
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
13792
13792
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
13793
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
13793
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-Q27WU2MW.js");
|
|
13794
13794
|
const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
|
|
13795
13795
|
if (newest === null) return null;
|
|
13796
13796
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -14534,7 +14534,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
14534
14534
|
var lastVersionCheckAt = 0;
|
|
14535
14535
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
14536
14536
|
var lastResponsivenessProbeAt = 0;
|
|
14537
|
-
var agtCliVersion = true ? "0.28.
|
|
14537
|
+
var agtCliVersion = true ? "0.28.1022" : "dev";
|
|
14538
14538
|
function resolveBrewPath(execFileSync3) {
|
|
14539
14539
|
try {
|
|
14540
14540
|
const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -16169,7 +16169,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
16169
16169
|
if (codeNames.length === 0) return;
|
|
16170
16170
|
void (async () => {
|
|
16171
16171
|
try {
|
|
16172
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
16172
|
+
const { collectDiagnostics } = await import("../persistent-session-ZQDNCKQH.js");
|
|
16173
16173
|
await api.post("/host/heartbeat", {
|
|
16174
16174
|
host_id: hostId,
|
|
16175
16175
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -16311,7 +16311,7 @@ async function pollCycleInner() {
|
|
|
16311
16311
|
}
|
|
16312
16312
|
try {
|
|
16313
16313
|
const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
|
|
16314
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
16314
|
+
const { collectDiagnostics } = await import("../persistent-session-ZQDNCKQH.js");
|
|
16315
16315
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
16316
16316
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor) : void 0;
|
|
16317
16317
|
let tailscaleHostname;
|
|
@@ -16487,7 +16487,7 @@ async function pollCycleInner() {
|
|
|
16487
16487
|
collectPanelessActivityProbes,
|
|
16488
16488
|
getResponsivenessIntervalMs,
|
|
16489
16489
|
occupancyQualificationClassifications
|
|
16490
|
-
} = await import("../responsiveness-probe-
|
|
16490
|
+
} = await import("../responsiveness-probe-Q27WU2MW.js");
|
|
16491
16491
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
16492
16492
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
16493
16493
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -16604,7 +16604,7 @@ async function pollCycleInner() {
|
|
|
16604
16604
|
collectResponsivenessProbes,
|
|
16605
16605
|
livePendingInboundOldestAgeSeconds,
|
|
16606
16606
|
parkPendingInbound
|
|
16607
|
-
} = await import("../responsiveness-probe-
|
|
16607
|
+
} = await import("../responsiveness-probe-Q27WU2MW.js");
|
|
16608
16608
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
|
|
16609
16609
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
16610
16610
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -17248,6 +17248,22 @@ async function pollCycleInner() {
|
|
|
17248
17248
|
// `resets_hint` is the modal's own reset text, passed through verbatim.
|
|
17249
17249
|
// It is the only place Claude Code gives us a DATED reset; the banner
|
|
17250
17250
|
// parser elsewhere can only reconstruct an hour (ENG-8901).
|
|
17251
|
+
// ENG-10972: refresh ONLY the liveness field, leaving gave_up_at and the
|
|
17252
|
+
// reason untouched. Merge-then-write rather than write-fresh: clobbering
|
|
17253
|
+
// the file each poll would reset gave_up_at and keep re-arming the
|
|
17254
|
+
// give-up notice for as long as the modal sat there.
|
|
17255
|
+
refreshUsageLimitLiveness: (codeName) => {
|
|
17256
|
+
const dir = getFramework("claude-code").getAgentDir(codeName);
|
|
17257
|
+
const file = join42(dir, "watchdog-give-up.json");
|
|
17258
|
+
if (!existsSync19(file)) return;
|
|
17259
|
+
try {
|
|
17260
|
+
const raw = JSON.parse(readFileSync34(file, "utf8"));
|
|
17261
|
+
if (raw["reason"] !== "usage_limit") return;
|
|
17262
|
+
raw["usage_limit_last_seen_at"] = (/* @__PURE__ */ new Date()).toISOString();
|
|
17263
|
+
atomicWriteFileSync(file, JSON.stringify(raw));
|
|
17264
|
+
} catch {
|
|
17265
|
+
}
|
|
17266
|
+
},
|
|
17251
17267
|
signalUsageLimit: (codeName, resetsHint) => {
|
|
17252
17268
|
const dir = getFramework("claude-code").getAgentDir(codeName);
|
|
17253
17269
|
if (!existsSync19(dir)) return;
|
|
@@ -17256,6 +17272,12 @@ async function pollCycleInner() {
|
|
|
17256
17272
|
JSON.stringify({
|
|
17257
17273
|
gave_up_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
17258
17274
|
reason: "usage_limit",
|
|
17275
|
+
// ENG-10972: seeded here and then REFRESHED by
|
|
17276
|
+
// refreshUsageLimitLiveness on every poll while the modal is present,
|
|
17277
|
+
// so a consumer can tell a LIVE cap from a historical marker.
|
|
17278
|
+
// `gave_up_at` keeps its own meaning (decideGiveUpNotice ages against
|
|
17279
|
+
// it), so liveness gets its own field rather than overloading one.
|
|
17280
|
+
usage_limit_last_seen_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
17259
17281
|
...resetsHint ? { resets_hint: resetsHint } : {}
|
|
17260
17282
|
})
|
|
17261
17283
|
);
|
|
@@ -21164,7 +21186,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
21164
21186
|
try {
|
|
21165
21187
|
const freshId = rotateSessionForWedge(codeName);
|
|
21166
21188
|
consecutiveWedgeCycles.delete(codeName);
|
|
21167
|
-
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-
|
|
21189
|
+
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-Q27WU2MW.js");
|
|
21168
21190
|
const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
|
|
21169
21191
|
const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
|
|
21170
21192
|
const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
|
|
@@ -21207,7 +21229,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
21207
21229
|
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}`));
|
|
21208
21230
|
void (async () => {
|
|
21209
21231
|
try {
|
|
21210
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
21232
|
+
const { collectDiagnostics } = await import("../persistent-session-ZQDNCKQH.js");
|
|
21211
21233
|
await api.post("/host/heartbeat", {
|
|
21212
21234
|
host_id: hostId,
|
|
21213
21235
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -21258,7 +21280,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
21258
21280
|
}
|
|
21259
21281
|
try {
|
|
21260
21282
|
const hostId = await getHostId();
|
|
21261
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
21283
|
+
const { collectDiagnostics } = await import("../persistent-session-ZQDNCKQH.js");
|
|
21262
21284
|
await api.post("/host/heartbeat", {
|
|
21263
21285
|
host_id: hostId,
|
|
21264
21286
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -21929,7 +21951,7 @@ async function processClaudePairSessions(agents) {
|
|
|
21929
21951
|
// cannot take it for itself — by the time it runs, the write it is looking
|
|
21930
21952
|
// for may already have happened.
|
|
21931
21953
|
snapshotPairConfig
|
|
21932
|
-
} = await import("../claude-pair-runtime-
|
|
21954
|
+
} = await import("../claude-pair-runtime-KKFNGRSA.js");
|
|
21933
21955
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
21934
21956
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
21935
21957
|
const killed = await killPairSession(pairTmuxSession(pairId));
|