@integrity-labs/agt-cli 0.28.136 → 0.28.138
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-2WWCHEQT.js → chunk-NGES4EZD.js} +2 -2
- package/dist/{chunk-FDRT52UA.js → chunk-QJCTWNIJ.js} +3 -3
- package/dist/{chunk-QKA46UNQ.js → chunk-ROOFBKRE.js} +11 -1
- package/dist/chunk-ROOFBKRE.js.map +1 -0
- package/dist/{claude-pair-runtime-ODRPKNKT.js → claude-pair-runtime-7TJXAPIK.js} +2 -2
- package/dist/lib/manager-worker.js +60 -49
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/mcp/index.js +68 -5
- package/dist/{persistent-session-VQCCFN4M.js → persistent-session-SVZCOP7I.js} +3 -3
- package/dist/{responsiveness-probe-FIXXJ7ZV.js → responsiveness-probe-AS7ASMDE.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-QKA46UNQ.js.map +0 -1
- /package/dist/{chunk-2WWCHEQT.js.map → chunk-NGES4EZD.js.map} +0 -0
- /package/dist/{chunk-FDRT52UA.js.map → chunk-QJCTWNIJ.js.map} +0 -0
- /package/dist/{claude-pair-runtime-ODRPKNKT.js.map → claude-pair-runtime-7TJXAPIK.js.map} +0 -0
- /package/dist/{persistent-session-VQCCFN4M.js.map → persistent-session-SVZCOP7I.js.map} +0 -0
- /package/dist/{responsiveness-probe-FIXXJ7ZV.js.map → responsiveness-probe-AS7ASMDE.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-SVZCOP7I.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-7TJXAPIK.js.map
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
requireHost,
|
|
29
29
|
safeWriteJsonAtomic,
|
|
30
30
|
setConfigHash
|
|
31
|
-
} from "../chunk-
|
|
31
|
+
} from "../chunk-QJCTWNIJ.js";
|
|
32
32
|
import {
|
|
33
33
|
getProjectDir as getProjectDir2,
|
|
34
34
|
getReadyTasks,
|
|
@@ -72,7 +72,7 @@ import {
|
|
|
72
72
|
takeZombieDetection,
|
|
73
73
|
transcriptActivityAgeSeconds,
|
|
74
74
|
writeEgressAllowlist
|
|
75
|
-
} from "../chunk-
|
|
75
|
+
} from "../chunk-NGES4EZD.js";
|
|
76
76
|
import {
|
|
77
77
|
FLAGS_SCHEMA_VERSION,
|
|
78
78
|
FLAG_REGISTRY,
|
|
@@ -110,7 +110,7 @@ import {
|
|
|
110
110
|
resolveDmTarget,
|
|
111
111
|
sumTranscriptUsageInWindow,
|
|
112
112
|
wrapScheduledTaskPrompt
|
|
113
|
-
} from "../chunk-
|
|
113
|
+
} from "../chunk-ROOFBKRE.js";
|
|
114
114
|
import {
|
|
115
115
|
parsePsRows,
|
|
116
116
|
reapOrphanChannelMcps
|
|
@@ -1676,6 +1676,9 @@ function decideMaintenanceWindowGate(opts) {
|
|
|
1676
1676
|
if (!opts.window) return "proceed";
|
|
1677
1677
|
return isWithinMaintenanceWindow(opts.window, opts.now) ? "proceed" : "defer";
|
|
1678
1678
|
}
|
|
1679
|
+
function shouldConsumeForcedUpdate(outcome) {
|
|
1680
|
+
return outcome !== "failed";
|
|
1681
|
+
}
|
|
1679
1682
|
function decideForcedUpdate(opts) {
|
|
1680
1683
|
const { requestedAt, lastProcessedAt, hostBusy } = opts;
|
|
1681
1684
|
if (!requestedAt) return "none";
|
|
@@ -7067,7 +7070,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
7067
7070
|
var lastVersionCheckAt = 0;
|
|
7068
7071
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
7069
7072
|
var lastResponsivenessProbeAt = 0;
|
|
7070
|
-
var agtCliVersion = true ? "0.28.
|
|
7073
|
+
var agtCliVersion = true ? "0.28.138" : "dev";
|
|
7071
7074
|
function resolveBrewPath(execFileSync4) {
|
|
7072
7075
|
try {
|
|
7073
7076
|
const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -7370,12 +7373,12 @@ var pendingUpgradeVersion = null;
|
|
|
7370
7373
|
var selfUpdateInFlight = false;
|
|
7371
7374
|
async function checkAndUpdateCli(opts) {
|
|
7372
7375
|
const force = opts?.force ?? false;
|
|
7373
|
-
if (selfUpdateInFlight) return;
|
|
7376
|
+
if (selfUpdateInFlight) return "failed";
|
|
7374
7377
|
selfUpdateInFlight = true;
|
|
7375
7378
|
try {
|
|
7376
7379
|
const cliPath = process.argv[1] ?? "";
|
|
7377
7380
|
const isDevMode = cliPath.includes("/src/") || cliPath.includes("tsx");
|
|
7378
|
-
if (isDevMode) return;
|
|
7381
|
+
if (isDevMode) return "noop";
|
|
7379
7382
|
let resolvedPath = cliPath;
|
|
7380
7383
|
try {
|
|
7381
7384
|
const { realpathSync } = await import("fs");
|
|
@@ -7384,13 +7387,13 @@ async function checkAndUpdateCli(opts) {
|
|
|
7384
7387
|
}
|
|
7385
7388
|
const isBrewFormula = /\/Cellar\/[^/]+\//.test(resolvedPath);
|
|
7386
7389
|
const isNpmGlobal = !isBrewFormula && resolvedPath.includes("node_modules");
|
|
7387
|
-
if (!isBrewFormula && !isNpmGlobal) return;
|
|
7390
|
+
if (!isBrewFormula && !isNpmGlobal) return "noop";
|
|
7388
7391
|
const { readFileSync: readF, writeFileSync: writeF } = await import("fs");
|
|
7389
7392
|
const markerPath = join16(homedir9(), ".augmented", ".last-update-check");
|
|
7390
7393
|
if (!force) {
|
|
7391
7394
|
try {
|
|
7392
7395
|
const lastCheck = parseInt(readF(markerPath, "utf-8").trim(), 10);
|
|
7393
|
-
if (Date.now() - lastCheck < UPDATE_CHECK_INTERVAL_MS) return;
|
|
7396
|
+
if (Date.now() - lastCheck < UPDATE_CHECK_INTERVAL_MS) return "noop";
|
|
7394
7397
|
} catch {
|
|
7395
7398
|
}
|
|
7396
7399
|
}
|
|
@@ -7398,15 +7401,12 @@ async function checkAndUpdateCli(opts) {
|
|
|
7398
7401
|
writeF(markerPath, String(Date.now()));
|
|
7399
7402
|
} catch {
|
|
7400
7403
|
}
|
|
7401
|
-
|
|
7402
|
-
await checkAndUpdateCliViaBrew(force);
|
|
7403
|
-
} else {
|
|
7404
|
-
await checkAndUpdateCliViaNpm(force);
|
|
7405
|
-
}
|
|
7404
|
+
const outcome = isBrewFormula ? await checkAndUpdateCliViaBrew(force) : await checkAndUpdateCliViaNpm(force);
|
|
7406
7405
|
try {
|
|
7407
7406
|
writeF(markerPath, String(Date.now()));
|
|
7408
7407
|
} catch {
|
|
7409
7408
|
}
|
|
7409
|
+
return outcome;
|
|
7410
7410
|
} finally {
|
|
7411
7411
|
selfUpdateInFlight = false;
|
|
7412
7412
|
}
|
|
@@ -7414,10 +7414,12 @@ async function checkAndUpdateCli(opts) {
|
|
|
7414
7414
|
async function checkAndUpdateCliViaBrew(force = false) {
|
|
7415
7415
|
const { execFileSync: execFileSync4 } = await import("child_process");
|
|
7416
7416
|
const brewPath = resolveBrewPath(execFileSync4);
|
|
7417
|
-
if (!brewPath) return;
|
|
7417
|
+
if (!brewPath) return "noop";
|
|
7418
|
+
let metadataFresh = true;
|
|
7418
7419
|
try {
|
|
7419
7420
|
execFileSync4(brewPath, ["update", "--quiet"], { timeout: 6e4, stdio: "pipe" });
|
|
7420
7421
|
} catch (err) {
|
|
7422
|
+
metadataFresh = false;
|
|
7421
7423
|
log(`[self-update] brew update failed (continuing with stale cache): ${err.message}`);
|
|
7422
7424
|
}
|
|
7423
7425
|
try {
|
|
@@ -7434,7 +7436,7 @@ async function checkAndUpdateCliViaBrew(force = false) {
|
|
|
7434
7436
|
log(
|
|
7435
7437
|
`[self-update] agt CLI ${installed} \u2192 ${latest} (brew) deferred \u2014 ` + formatWindowDeferLogLine(cachedMaintenanceWindow ?? {}, /* @__PURE__ */ new Date())
|
|
7436
7438
|
);
|
|
7437
|
-
return;
|
|
7439
|
+
return "noop";
|
|
7438
7440
|
}
|
|
7439
7441
|
const coalesceWindowMs = resolveCoalesceWindowMs();
|
|
7440
7442
|
const coalesce = decideSelfUpdateCoalesce({
|
|
@@ -7450,7 +7452,7 @@ async function checkAndUpdateCliViaBrew(force = false) {
|
|
|
7450
7452
|
remainingMs: coalesce.remainingMs,
|
|
7451
7453
|
windowMs: coalesceWindowMs
|
|
7452
7454
|
}));
|
|
7453
|
-
return;
|
|
7455
|
+
return "noop";
|
|
7454
7456
|
}
|
|
7455
7457
|
log(`[self-update] agt CLI update available: ${installed} \u2192 ${latest}. Upgrading via brew${force ? " (forced \u2014 Update CLI now)" : ""}...`);
|
|
7456
7458
|
try {
|
|
@@ -7462,19 +7464,23 @@ async function checkAndUpdateCliViaBrew(force = false) {
|
|
|
7462
7464
|
stampLastSelfUpdateApplied(selfUpdateAppliedMarkerPath());
|
|
7463
7465
|
restartAfterUpgrade = true;
|
|
7464
7466
|
pendingUpgradeVersion = latest;
|
|
7467
|
+
return "updated";
|
|
7465
7468
|
} catch (err) {
|
|
7466
7469
|
log(`[self-update] brew upgrade failed: ${err.message}`);
|
|
7470
|
+
return "failed";
|
|
7467
7471
|
}
|
|
7468
7472
|
} else if (!selfUpdateUpToDateLogged) {
|
|
7469
7473
|
log(`[self-update] agt CLI is up to date (brew, ${agtCliVersion})`);
|
|
7470
7474
|
selfUpdateUpToDateLogged = true;
|
|
7471
7475
|
}
|
|
7476
|
+
return metadataFresh ? "noop" : "failed";
|
|
7472
7477
|
} catch (err) {
|
|
7473
7478
|
log(`[self-update] brew outdated failed: ${err.message}`);
|
|
7479
|
+
return "failed";
|
|
7474
7480
|
}
|
|
7475
7481
|
}
|
|
7476
7482
|
async function checkAndUpdateCliViaNpm(force = false) {
|
|
7477
|
-
if (agtCliVersion === "dev") return;
|
|
7483
|
+
if (agtCliVersion === "dev") return "noop";
|
|
7478
7484
|
const channel = process.env.AGT_CLI_RELEASE_CHANNEL || "latest";
|
|
7479
7485
|
let latest;
|
|
7480
7486
|
try {
|
|
@@ -7487,17 +7493,17 @@ async function checkAndUpdateCliViaNpm(force = false) {
|
|
|
7487
7493
|
);
|
|
7488
7494
|
if (!res.ok) {
|
|
7489
7495
|
log(`[self-update] npm registry returned ${res.status} (channel=${channel})`);
|
|
7490
|
-
return;
|
|
7496
|
+
return "failed";
|
|
7491
7497
|
}
|
|
7492
7498
|
const body = await res.json();
|
|
7493
7499
|
if (!body.version) {
|
|
7494
7500
|
log(`[self-update] npm registry response missing version field`);
|
|
7495
|
-
return;
|
|
7501
|
+
return "failed";
|
|
7496
7502
|
}
|
|
7497
7503
|
latest = body.version;
|
|
7498
7504
|
} catch (err) {
|
|
7499
7505
|
log(`[self-update] npm registry fetch failed: ${err.message}`);
|
|
7500
|
-
return;
|
|
7506
|
+
return "failed";
|
|
7501
7507
|
}
|
|
7502
7508
|
const urgentTarget = await fetchUrgentDistTagVersion();
|
|
7503
7509
|
if (isUrgentUpgrade({
|
|
@@ -7508,8 +7514,7 @@ async function checkAndUpdateCliViaNpm(force = false) {
|
|
|
7508
7514
|
log(
|
|
7509
7515
|
`[self-update] URGENT agt CLI hotfix ${agtCliVersion} \u2192 ${urgentTarget} (overrides channel=${channel} + maintenance window). Upgrading via npm...`
|
|
7510
7516
|
);
|
|
7511
|
-
await installAgtCliViaNpm(urgentTarget, "urgent");
|
|
7512
|
-
return;
|
|
7517
|
+
return await installAgtCliViaNpm(urgentTarget, "urgent");
|
|
7513
7518
|
}
|
|
7514
7519
|
let shouldUpdate;
|
|
7515
7520
|
if (channel === "latest") {
|
|
@@ -7529,13 +7534,13 @@ async function checkAndUpdateCliViaNpm(force = false) {
|
|
|
7529
7534
|
log(`[self-update] agt CLI is up to date (npm, channel=${channel}, ${agtCliVersion})`);
|
|
7530
7535
|
selfUpdateUpToDateLogged = true;
|
|
7531
7536
|
}
|
|
7532
|
-
return;
|
|
7537
|
+
return "noop";
|
|
7533
7538
|
}
|
|
7534
7539
|
if (!force && decideMaintenanceWindowGate({ window: cachedMaintenanceWindow, now: /* @__PURE__ */ new Date() }) === "defer") {
|
|
7535
7540
|
log(
|
|
7536
7541
|
`[self-update] agt CLI ${agtCliVersion} \u2192 ${latest} (channel=${channel}) deferred \u2014 ` + formatWindowDeferLogLine(cachedMaintenanceWindow ?? {}, /* @__PURE__ */ new Date())
|
|
7537
7542
|
);
|
|
7538
|
-
return;
|
|
7543
|
+
return "noop";
|
|
7539
7544
|
}
|
|
7540
7545
|
const coalesceWindowMs = resolveCoalesceWindowMs();
|
|
7541
7546
|
const coalesce = decideSelfUpdateCoalesce({
|
|
@@ -7551,10 +7556,10 @@ async function checkAndUpdateCliViaNpm(force = false) {
|
|
|
7551
7556
|
remainingMs: coalesce.remainingMs,
|
|
7552
7557
|
windowMs: coalesceWindowMs
|
|
7553
7558
|
}));
|
|
7554
|
-
return;
|
|
7559
|
+
return "noop";
|
|
7555
7560
|
}
|
|
7556
7561
|
log(`[self-update] agt CLI update available: ${agtCliVersion} \u2192 ${latest} (channel=${channel}). Upgrading via npm...`);
|
|
7557
|
-
await installAgtCliViaNpm(latest, `channel=${channel}`);
|
|
7562
|
+
return await installAgtCliViaNpm(latest, `channel=${channel}`);
|
|
7558
7563
|
}
|
|
7559
7564
|
async function fetchUrgentDistTagVersion() {
|
|
7560
7565
|
try {
|
|
@@ -7584,7 +7589,7 @@ async function installAgtCliViaNpm(version, reasonLabel) {
|
|
|
7584
7589
|
execFileSync4(cmd, args, { timeout: 18e4, stdio: "pipe" });
|
|
7585
7590
|
} catch (err) {
|
|
7586
7591
|
log(`[self-update] npm upgrade failed: ${err.message}`);
|
|
7587
|
-
return;
|
|
7592
|
+
return "failed";
|
|
7588
7593
|
}
|
|
7589
7594
|
let smokeOk = false;
|
|
7590
7595
|
try {
|
|
@@ -7600,13 +7605,14 @@ async function installAgtCliViaNpm(version, reasonLabel) {
|
|
|
7600
7605
|
`[self-update] smoke check failed: \`agt --version\` would not run after install (${err.message}). The binary may be dangling; NOT restarting. systemd ExecStartPre will repair on the next start if needed.`
|
|
7601
7606
|
);
|
|
7602
7607
|
}
|
|
7603
|
-
if (!smokeOk) return;
|
|
7608
|
+
if (!smokeOk) return "failed";
|
|
7604
7609
|
log(
|
|
7605
7610
|
`[self-update] agt CLI upgraded to ${version} (${reasonLabel}). Scheduling manager restart so the new binary takes effect.`
|
|
7606
7611
|
);
|
|
7607
7612
|
stampLastSelfUpdateApplied(selfUpdateAppliedMarkerPath());
|
|
7608
7613
|
restartAfterUpgrade = true;
|
|
7609
7614
|
pendingUpgradeVersion = version;
|
|
7615
|
+
return "updated";
|
|
7610
7616
|
}
|
|
7611
7617
|
function isPrereleaseVersion(v) {
|
|
7612
7618
|
return v.replace(/^v/, "").split("+")[0].includes("-");
|
|
@@ -8197,7 +8203,7 @@ async function pollCycle() {
|
|
|
8197
8203
|
}
|
|
8198
8204
|
try {
|
|
8199
8205
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
8200
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
8206
|
+
const { collectDiagnostics } = await import("../persistent-session-SVZCOP7I.js");
|
|
8201
8207
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
8202
8208
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
|
|
8203
8209
|
let tailscaleHostname;
|
|
@@ -8294,26 +8300,31 @@ async function pollCycle() {
|
|
|
8294
8300
|
`[self-update] "Update CLI now" requested at ${requestedUpdateAt} \u2014 deferring: a self-update is already in flight. Retrying next poll.`
|
|
8295
8301
|
);
|
|
8296
8302
|
} else {
|
|
8303
|
+
log(
|
|
8304
|
+
`[self-update] "Update CLI now" requested at ${requestedUpdateAt} \u2014 running window-bypassing self-update now (host idle).`
|
|
8305
|
+
);
|
|
8297
8306
|
const prevProcessedAt = state6.lastUpdateRequestProcessedAt ?? null;
|
|
8298
|
-
|
|
8299
|
-
|
|
8300
|
-
|
|
8301
|
-
|
|
8302
|
-
|
|
8303
|
-
|
|
8304
|
-
|
|
8305
|
-
|
|
8306
|
-
|
|
8307
|
-
|
|
8308
|
-
|
|
8309
|
-
|
|
8307
|
+
void checkAndUpdateCli({ force: true }).then((outcome) => {
|
|
8308
|
+
if (!shouldConsumeForcedUpdate(outcome)) {
|
|
8309
|
+
log(
|
|
8310
|
+
`[self-update] "Update CLI now" did not complete (no install ran) \u2014 leaving the request pending; the next idle heartbeat retries.`
|
|
8311
|
+
);
|
|
8312
|
+
return;
|
|
8313
|
+
}
|
|
8314
|
+
state6.lastUpdateRequestProcessedAt = requestedUpdateAt;
|
|
8315
|
+
try {
|
|
8316
|
+
atomicWriteFileSync(getStateFile(), JSON.stringify(state6, null, 2));
|
|
8317
|
+
} catch (err) {
|
|
8318
|
+
state6.lastUpdateRequestProcessedAt = prevProcessedAt;
|
|
8319
|
+
log(
|
|
8320
|
+
`[self-update] failed to persist update-request ack; retrying next heartbeat: ${err.message}`
|
|
8321
|
+
);
|
|
8322
|
+
}
|
|
8323
|
+
}).catch((err) => {
|
|
8310
8324
|
log(
|
|
8311
|
-
`[self-update]
|
|
8312
|
-
);
|
|
8313
|
-
void checkAndUpdateCli({ force: true }).catch(
|
|
8314
|
-
(err) => log(`[self-update] forced check failed: ${err.message}`)
|
|
8325
|
+
`[self-update] forced check failed: ${err.message} \u2014 leaving the request pending for retry.`
|
|
8315
8326
|
);
|
|
8316
|
-
}
|
|
8327
|
+
});
|
|
8317
8328
|
}
|
|
8318
8329
|
}
|
|
8319
8330
|
if (hbResp?.feature_flags) {
|
|
@@ -8340,7 +8351,7 @@ async function pollCycle() {
|
|
|
8340
8351
|
const {
|
|
8341
8352
|
collectResponsivenessProbes,
|
|
8342
8353
|
getResponsivenessIntervalMs
|
|
8343
|
-
} = await import("../responsiveness-probe-
|
|
8354
|
+
} = await import("../responsiveness-probe-AS7ASMDE.js");
|
|
8344
8355
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
8345
8356
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
8346
8357
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -8372,7 +8383,7 @@ async function pollCycle() {
|
|
|
8372
8383
|
collectResponsivenessProbes,
|
|
8373
8384
|
livePendingInboundOldestAgeSeconds,
|
|
8374
8385
|
parkPendingInbound
|
|
8375
|
-
} = await import("../responsiveness-probe-
|
|
8386
|
+
} = await import("../responsiveness-probe-AS7ASMDE.js");
|
|
8376
8387
|
const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
|
|
8377
8388
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
8378
8389
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -11921,7 +11932,7 @@ async function processClaudePairSessions(agents) {
|
|
|
11921
11932
|
killPairSession,
|
|
11922
11933
|
pairTmuxSession,
|
|
11923
11934
|
finalizeClaudePairOnboarding
|
|
11924
|
-
} = await import("../claude-pair-runtime-
|
|
11935
|
+
} = await import("../claude-pair-runtime-7TJXAPIK.js");
|
|
11925
11936
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
11926
11937
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
11927
11938
|
const killed = await killPairSession(pairTmuxSession(pairId));
|