@integrity-labs/agt-cli 0.28.645 → 0.28.647
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 +5 -5
- package/dist/{chunk-T47HZECK.js → chunk-3WJXUNQH.js} +4 -4
- package/dist/{chunk-2MDR3ZHP.js → chunk-3ZK66WZZ.js} +98 -1
- package/dist/{chunk-2MDR3ZHP.js.map → chunk-3ZK66WZZ.js.map} +1 -1
- package/dist/{chunk-Z2SA7JLD.js → chunk-PJSEFPIS.js} +2 -2
- package/dist/{claude-pair-runtime-YA5QHYHF.js → claude-pair-runtime-56Z3MRYQ.js} +2 -2
- package/dist/lib/manager-worker.js +96 -17
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/{persistent-session-ZXOO6LYN.js → persistent-session-KMPIHBCE.js} +3 -3
- package/dist/{responsiveness-probe-RQCDK5LF.js → responsiveness-probe-24SNN4ZH.js} +20 -5
- package/dist/responsiveness-probe-24SNN4ZH.js.map +1 -0
- package/dist/{session-auth-dead-DPY5S3RZ.js → session-auth-dead-EB2WYA52.js} +2 -2
- package/package.json +1 -1
- package/dist/responsiveness-probe-RQCDK5LF.js.map +0 -1
- /package/dist/{chunk-T47HZECK.js.map → chunk-3WJXUNQH.js.map} +0 -0
- /package/dist/{chunk-Z2SA7JLD.js.map → chunk-PJSEFPIS.js.map} +0 -0
- /package/dist/{claude-pair-runtime-YA5QHYHF.js.map → claude-pair-runtime-56Z3MRYQ.js.map} +0 -0
- /package/dist/{persistent-session-ZXOO6LYN.js.map → persistent-session-KMPIHBCE.js.map} +0 -0
- /package/dist/{session-auth-dead-DPY5S3RZ.js.map → session-auth-dead-EB2WYA52.js.map} +0 -0
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
rotateDailySession,
|
|
17
17
|
sessionFileExists,
|
|
18
18
|
todayLocalIso
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-3ZK66WZZ.js";
|
|
20
20
|
import {
|
|
21
21
|
reapOrphanChannelMcps
|
|
22
22
|
} from "./chunk-XWVM4KPK.js";
|
|
@@ -4313,4 +4313,4 @@ export {
|
|
|
4313
4313
|
stopAllSessionsAndWait,
|
|
4314
4314
|
getProjectDir
|
|
4315
4315
|
};
|
|
4316
|
-
//# sourceMappingURL=chunk-
|
|
4316
|
+
//# sourceMappingURL=chunk-PJSEFPIS.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-
|
|
103
|
+
const { resolveClaudeBinary } = await import("./persistent-session-KMPIHBCE.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-56Z3MRYQ.js.map
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
safeWriteJsonAtomic,
|
|
56
56
|
setConfigHash,
|
|
57
57
|
tripClass
|
|
58
|
-
} from "../chunk-
|
|
58
|
+
} from "../chunk-3WJXUNQH.js";
|
|
59
59
|
import {
|
|
60
60
|
getProjectDir as getProjectDir2,
|
|
61
61
|
getReadyTasks,
|
|
@@ -111,7 +111,7 @@ import {
|
|
|
111
111
|
takeZombieDetection,
|
|
112
112
|
toOpencodeModel,
|
|
113
113
|
writeEgressAllowlist
|
|
114
|
-
} from "../chunk-
|
|
114
|
+
} from "../chunk-PJSEFPIS.js";
|
|
115
115
|
import {
|
|
116
116
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
117
117
|
AnchorSessionClient,
|
|
@@ -146,6 +146,7 @@ import {
|
|
|
146
146
|
estimateActiveTasksTokens,
|
|
147
147
|
extractFrontmatter,
|
|
148
148
|
extractQualifyingTurns,
|
|
149
|
+
extractToolCallEvents,
|
|
149
150
|
findRunMarker,
|
|
150
151
|
forcedUpdatePendingForMs,
|
|
151
152
|
formatActorId,
|
|
@@ -156,6 +157,8 @@ import {
|
|
|
156
157
|
isAgentIdle,
|
|
157
158
|
isAgentTimezoneOverrideExpired,
|
|
158
159
|
isBareAck,
|
|
160
|
+
isBucketInBracket,
|
|
161
|
+
isBucketInOpenCall,
|
|
159
162
|
isBucketQualified,
|
|
160
163
|
isControlPlaneOnlyConfigKey,
|
|
161
164
|
isControlPlaneOnlyEnvVar,
|
|
@@ -172,6 +175,7 @@ import {
|
|
|
172
175
|
isVacuousDeliverReason,
|
|
173
176
|
laneTagFragment,
|
|
174
177
|
minutesSinceLocalMidnight,
|
|
178
|
+
pairToolCallBrackets,
|
|
175
179
|
parseDeliverAssertion,
|
|
176
180
|
parseDeliveryTarget,
|
|
177
181
|
parseTranscriptUsage,
|
|
@@ -188,7 +192,7 @@ import {
|
|
|
188
192
|
subagentActivityAgeSeconds,
|
|
189
193
|
sumTranscriptUsageInWindow,
|
|
190
194
|
transcriptActivityAgeSeconds
|
|
191
|
-
} from "../chunk-
|
|
195
|
+
} from "../chunk-3ZK66WZZ.js";
|
|
192
196
|
import {
|
|
193
197
|
reapOrphanChannelMcps
|
|
194
198
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -7508,8 +7512,10 @@ function rostersMeasuredZero(mode, attested, runtimeRunning) {
|
|
|
7508
7512
|
var TAIL_BYTES = 256 * 1024;
|
|
7509
7513
|
var MAX_RECORD_ALIGN_BYTES = 8 * 1024 * 1024;
|
|
7510
7514
|
var GATE_MAX_BUCKET_AGE_MS = 30 * 6e4;
|
|
7515
|
+
var MAX_BRACKET_DEFERRAL_MS = 25 * 6e4;
|
|
7511
7516
|
var TRANSCRIPT_MTIME_WINDOW_MS4 = GATE_MAX_BUCKET_AGE_MS + DEFAULT_NEIGHBOURHOOD_MS + 6e4;
|
|
7512
7517
|
var cache2 = /* @__PURE__ */ new Map();
|
|
7518
|
+
var brackets = /* @__PURE__ */ new Map();
|
|
7513
7519
|
function readAlignedTail(path, tailBytes, maxAlignBytes) {
|
|
7514
7520
|
let fd = null;
|
|
7515
7521
|
try {
|
|
@@ -7607,6 +7613,37 @@ function candidateTranscriptPaths(dir) {
|
|
|
7607
7613
|
}
|
|
7608
7614
|
return { paths, complete };
|
|
7609
7615
|
}
|
|
7616
|
+
function foldToolCallBrackets(codeName, eventsByPath, nowMs) {
|
|
7617
|
+
const state8 = brackets.get(codeName) ?? {
|
|
7618
|
+
open: /* @__PURE__ */ new Map(),
|
|
7619
|
+
closed: []
|
|
7620
|
+
};
|
|
7621
|
+
const nextOpen = /* @__PURE__ */ new Map();
|
|
7622
|
+
const openOut = [];
|
|
7623
|
+
const paths = /* @__PURE__ */ new Set([...state8.open.keys(), ...eventsByPath.keys()]);
|
|
7624
|
+
for (const path of paths) {
|
|
7625
|
+
const carried = state8.open.get(path) ?? [];
|
|
7626
|
+
const paired = pairToolCallBrackets(eventsByPath.get(path) ?? [], carried);
|
|
7627
|
+
state8.closed.push(...paired.brackets);
|
|
7628
|
+
const live = paired.open.filter((c) => nowMs - c.startMs <= MAX_BRACKET_DEFERRAL_MS);
|
|
7629
|
+
if (live.length > 0) {
|
|
7630
|
+
nextOpen.set(path, live);
|
|
7631
|
+
openOut.push(...live);
|
|
7632
|
+
}
|
|
7633
|
+
}
|
|
7634
|
+
const keepFrom = nowMs - GATE_MAX_BUCKET_AGE_MS;
|
|
7635
|
+
const seen = /* @__PURE__ */ new Set();
|
|
7636
|
+
const closed = [];
|
|
7637
|
+
for (const b of state8.closed) {
|
|
7638
|
+
if (b.endMs < keepFrom) continue;
|
|
7639
|
+
const key = `${b.id}\0${b.startMs}\0${b.endMs}`;
|
|
7640
|
+
if (seen.has(key)) continue;
|
|
7641
|
+
seen.add(key);
|
|
7642
|
+
closed.push(b);
|
|
7643
|
+
}
|
|
7644
|
+
brackets.set(codeName, { open: nextOpen, closed });
|
|
7645
|
+
return { toolCallBrackets: closed, openToolCalls: openOut };
|
|
7646
|
+
}
|
|
7610
7647
|
function collectQualifyingTurns(codeName, nowMs, opts = {}) {
|
|
7611
7648
|
const dir = opts.transcriptDir ?? sessionTranscriptDir(getProjectDir(codeName));
|
|
7612
7649
|
const tailBytes = opts.tailBytes ?? TAIL_BYTES;
|
|
@@ -7615,6 +7652,7 @@ function collectQualifyingTurns(codeName, nowMs, opts = {}) {
|
|
|
7615
7652
|
const agentCache = cache2.get(codeName) ?? /* @__PURE__ */ new Map();
|
|
7616
7653
|
const nextCache = /* @__PURE__ */ new Map();
|
|
7617
7654
|
const all = /* @__PURE__ */ new Set();
|
|
7655
|
+
const eventsByPath = /* @__PURE__ */ new Map();
|
|
7618
7656
|
let transcriptsRead = 0;
|
|
7619
7657
|
let coveredFromMs = Number.NEGATIVE_INFINITY;
|
|
7620
7658
|
const raiseCoverageFloor = (floor) => {
|
|
@@ -7638,6 +7676,7 @@ function collectQualifyingTurns(codeName, nowMs, opts = {}) {
|
|
|
7638
7676
|
nextCache.set(path, seen);
|
|
7639
7677
|
for (const t of seen.turns) all.add(t);
|
|
7640
7678
|
raiseCoverageFloor(seen.coverageFloorMs);
|
|
7679
|
+
eventsByPath.set(path, seen.events);
|
|
7641
7680
|
continue;
|
|
7642
7681
|
}
|
|
7643
7682
|
const aligned = readAlignedTail(path, tailBytes, maxAlignBytes);
|
|
@@ -7656,21 +7695,34 @@ function collectQualifyingTurns(codeName, nowMs, opts = {}) {
|
|
|
7656
7695
|
raiseCoverageFloor(coverageFloorMs);
|
|
7657
7696
|
transcriptsRead += 1;
|
|
7658
7697
|
const turns = extractQualifyingTurns(content, { startMs: sinceMs });
|
|
7698
|
+
const events = extractToolCallEvents(content);
|
|
7699
|
+
eventsByPath.set(path, events);
|
|
7659
7700
|
if (!floorUnknown) {
|
|
7660
|
-
nextCache.set(path, { mtimeMs: st.mtimeMs, size: st.size, turns, coverageFloorMs });
|
|
7701
|
+
nextCache.set(path, { mtimeMs: st.mtimeMs, size: st.size, turns, coverageFloorMs, events });
|
|
7661
7702
|
}
|
|
7662
7703
|
for (const t of turns) all.add(t);
|
|
7663
7704
|
}
|
|
7664
7705
|
cache2.set(codeName, nextCache);
|
|
7665
|
-
|
|
7706
|
+
const { toolCallBrackets, openToolCalls } = foldToolCallBrackets(codeName, eventsByPath, nowMs);
|
|
7707
|
+
return {
|
|
7708
|
+
turns: [...all].sort((a, b) => a - b),
|
|
7709
|
+
transcriptsRead,
|
|
7710
|
+
complete,
|
|
7711
|
+
coveredFromMs,
|
|
7712
|
+
toolCallBrackets,
|
|
7713
|
+
openToolCalls
|
|
7714
|
+
};
|
|
7666
7715
|
}
|
|
7667
7716
|
function qualifyBuckets(buckets, qualifying, mode, nowMs, neighbourhoodMs = DEFAULT_NEIGHBOURHOOD_MS) {
|
|
7668
7717
|
const failOpen = !qualifying.complete;
|
|
7669
7718
|
const kept = [];
|
|
7719
|
+
const deferred = [];
|
|
7670
7720
|
let qualified = 0;
|
|
7671
7721
|
let unqualifiedDropped = 0;
|
|
7672
7722
|
let unreadable = 0;
|
|
7673
7723
|
let coverageShortfall = 0;
|
|
7724
|
+
let qualifiedByBracket = 0;
|
|
7725
|
+
let bracketDeferred = 0;
|
|
7674
7726
|
for (const b of buckets) {
|
|
7675
7727
|
const startMs = Date.parse(b.bucket);
|
|
7676
7728
|
const parsed = Number.isFinite(startMs);
|
|
@@ -7685,15 +7737,35 @@ function qualifyBuckets(buckets, qualifying, mode, nowMs, neighbourhoodMs = DEFA
|
|
|
7685
7737
|
kept.push(b);
|
|
7686
7738
|
continue;
|
|
7687
7739
|
}
|
|
7740
|
+
if (isBucketInBracket(startMs, qualifying.toolCallBrackets)) {
|
|
7741
|
+
qualifiedByBracket += 1;
|
|
7742
|
+
kept.push(b);
|
|
7743
|
+
continue;
|
|
7744
|
+
}
|
|
7688
7745
|
if (startMs - neighbourhoodMs < qualifying.coveredFromMs) {
|
|
7689
7746
|
coverageShortfall += 1;
|
|
7690
7747
|
kept.push(b);
|
|
7691
7748
|
continue;
|
|
7692
7749
|
}
|
|
7750
|
+
if (nowMs - startMs <= MAX_BRACKET_DEFERRAL_MS && isBucketInOpenCall(startMs, qualifying.openToolCalls)) {
|
|
7751
|
+
bracketDeferred += 1;
|
|
7752
|
+
if (mode === "shadow") kept.push(b);
|
|
7753
|
+
else deferred.push(b);
|
|
7754
|
+
continue;
|
|
7755
|
+
}
|
|
7693
7756
|
unqualifiedDropped += 1;
|
|
7694
7757
|
if (mode === "shadow") kept.push(b);
|
|
7695
7758
|
}
|
|
7696
|
-
return {
|
|
7759
|
+
return {
|
|
7760
|
+
kept,
|
|
7761
|
+
qualified,
|
|
7762
|
+
unqualifiedDropped,
|
|
7763
|
+
unreadable,
|
|
7764
|
+
coverageShortfall,
|
|
7765
|
+
qualifiedByBracket,
|
|
7766
|
+
bracketDeferred,
|
|
7767
|
+
deferred
|
|
7768
|
+
};
|
|
7697
7769
|
}
|
|
7698
7770
|
|
|
7699
7771
|
// src/lib/pane-occupancy-sampler.ts
|
|
@@ -11535,7 +11607,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
11535
11607
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
11536
11608
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
11537
11609
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
11538
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
11610
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-24SNN4ZH.js");
|
|
11539
11611
|
const newest = newestPendingInboundActivityMtimeMs(dirname10(paneLogPath(codeName)));
|
|
11540
11612
|
if (newest === null) return null;
|
|
11541
11613
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -12178,7 +12250,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
12178
12250
|
var lastVersionCheckAt = 0;
|
|
12179
12251
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
12180
12252
|
var lastResponsivenessProbeAt = 0;
|
|
12181
|
-
var agtCliVersion = true ? "0.28.
|
|
12253
|
+
var agtCliVersion = true ? "0.28.647" : "dev";
|
|
12182
12254
|
function resolveBrewPath(execFileSync3) {
|
|
12183
12255
|
try {
|
|
12184
12256
|
const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -12691,6 +12763,7 @@ var selfUpdatePinInvalidLogged = false;
|
|
|
12691
12763
|
var restartAfterUpgrade = false;
|
|
12692
12764
|
var pendingUpgradeVersion = null;
|
|
12693
12765
|
var selfUpdateInFlight = false;
|
|
12766
|
+
var upgradeRestartInitiated = false;
|
|
12694
12767
|
var cachedUpdateRequestedAt = null;
|
|
12695
12768
|
var forcedUpdateDeferStreak = 0;
|
|
12696
12769
|
var forcedUpdateRelaxAnnounced = false;
|
|
@@ -13485,7 +13558,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
13485
13558
|
if (codeNames.length === 0) return;
|
|
13486
13559
|
void (async () => {
|
|
13487
13560
|
try {
|
|
13488
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
13561
|
+
const { collectDiagnostics } = await import("../persistent-session-KMPIHBCE.js");
|
|
13489
13562
|
await api.post("/host/heartbeat", {
|
|
13490
13563
|
host_id: hostId,
|
|
13491
13564
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -13601,7 +13674,7 @@ async function pollCycleInner() {
|
|
|
13601
13674
|
}
|
|
13602
13675
|
try {
|
|
13603
13676
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
13604
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
13677
|
+
const { collectDiagnostics } = await import("../persistent-session-KMPIHBCE.js");
|
|
13605
13678
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
13606
13679
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor) : void 0;
|
|
13607
13680
|
let tailscaleHostname;
|
|
@@ -13724,7 +13797,7 @@ async function pollCycleInner() {
|
|
|
13724
13797
|
collectPanelessActivityProbes,
|
|
13725
13798
|
getResponsivenessIntervalMs,
|
|
13726
13799
|
occupancyQualificationClassifications
|
|
13727
|
-
} = await import("../responsiveness-probe-
|
|
13800
|
+
} = await import("../responsiveness-probe-24SNN4ZH.js");
|
|
13728
13801
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
13729
13802
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
13730
13803
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -13768,9 +13841,13 @@ async function pollCycleInner() {
|
|
|
13768
13841
|
qualified: 0,
|
|
13769
13842
|
unqualifiedDropped: 0,
|
|
13770
13843
|
unreadable: raw.length,
|
|
13771
|
-
coverageShortfall: 0
|
|
13844
|
+
coverageShortfall: 0,
|
|
13845
|
+
qualifiedByBracket: 0,
|
|
13846
|
+
bracketDeferred: 0,
|
|
13847
|
+
deferred: []
|
|
13772
13848
|
};
|
|
13773
13849
|
}
|
|
13850
|
+
if (q.deferred.length > 0) sharedBusyBuckets.credit(codeName, q.deferred);
|
|
13774
13851
|
if (q.kept.length > 0) drainedBuckets.set(codeName, q.kept);
|
|
13775
13852
|
return {
|
|
13776
13853
|
buckets: q.kept,
|
|
@@ -13830,7 +13907,7 @@ async function pollCycleInner() {
|
|
|
13830
13907
|
collectResponsivenessProbes,
|
|
13831
13908
|
livePendingInboundOldestAgeSeconds,
|
|
13832
13909
|
parkPendingInbound
|
|
13833
|
-
} = await import("../responsiveness-probe-
|
|
13910
|
+
} = await import("../responsiveness-probe-24SNN4ZH.js");
|
|
13834
13911
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
|
|
13835
13912
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
13836
13913
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -13986,7 +14063,7 @@ async function pollCycleInner() {
|
|
|
13986
14063
|
}
|
|
13987
14064
|
try {
|
|
13988
14065
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
|
|
13989
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
14066
|
+
const { probeSessionAuth } = await import("../session-auth-dead-EB2WYA52.js");
|
|
13990
14067
|
const observations = [];
|
|
13991
14068
|
const pendingCacheCommits = [];
|
|
13992
14069
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -17619,7 +17696,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
17619
17696
|
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}`));
|
|
17620
17697
|
void (async () => {
|
|
17621
17698
|
try {
|
|
17622
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
17699
|
+
const { collectDiagnostics } = await import("../persistent-session-KMPIHBCE.js");
|
|
17623
17700
|
await api.post("/host/heartbeat", {
|
|
17624
17701
|
host_id: hostId,
|
|
17625
17702
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -17670,7 +17747,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
17670
17747
|
}
|
|
17671
17748
|
try {
|
|
17672
17749
|
const hostId = await getHostId();
|
|
17673
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
17750
|
+
const { collectDiagnostics } = await import("../persistent-session-KMPIHBCE.js");
|
|
17674
17751
|
await api.post("/host/heartbeat", {
|
|
17675
17752
|
host_id: hostId,
|
|
17676
17753
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -18267,7 +18344,7 @@ async function processClaudePairSessions(agents) {
|
|
|
18267
18344
|
killPairSession,
|
|
18268
18345
|
pairTmuxSession,
|
|
18269
18346
|
finalizeClaudePairOnboarding
|
|
18270
|
-
} = await import("../claude-pair-runtime-
|
|
18347
|
+
} = await import("../claude-pair-runtime-56Z3MRYQ.js");
|
|
18271
18348
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
18272
18349
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
18273
18350
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -18798,6 +18875,8 @@ async function reportSelfUpdateRestarts() {
|
|
|
18798
18875
|
function scheduleNext() {
|
|
18799
18876
|
if (!running || !config) return;
|
|
18800
18877
|
const restartNow = () => {
|
|
18878
|
+
if (upgradeRestartInitiated) return;
|
|
18879
|
+
upgradeRestartInitiated = true;
|
|
18801
18880
|
log(`[self-update] Restarting manager to load upgraded binary (${pendingUpgradeVersion ?? "unknown version"})`);
|
|
18802
18881
|
void reportSelfUpdateRestarts().catch((err) => log(`[self-update] restart-event audit failed: ${err.message}`)).finally(() => {
|
|
18803
18882
|
void stopPolling({ forcedExitCode: SUPERVISOR_RESTART_EXIT_CODE }).then(() => {
|