@integrity-labs/agt-cli 0.28.370 → 0.28.372
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-TDZFQHXC.js → chunk-FAMCYDMC.js} +8 -190
- package/dist/chunk-FAMCYDMC.js.map +1 -0
- package/dist/{chunk-NEM6OQLG.js → chunk-NDF3YMP5.js} +384 -1
- package/dist/chunk-NDF3YMP5.js.map +1 -0
- package/dist/{claude-pair-runtime-N4WSO5ET.js → claude-pair-runtime-U2SO44TW.js} +2 -2
- package/dist/lib/manager-worker.js +34 -15
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/{persistent-session-PW3D7TJO.js → persistent-session-HXUYS63V.js} +2 -2
- package/dist/{responsiveness-probe-G7HFTXCV.js → responsiveness-probe-TVSASSZY.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-NEM6OQLG.js.map +0 -1
- package/dist/chunk-TDZFQHXC.js.map +0 -1
- /package/dist/{claude-pair-runtime-N4WSO5ET.js.map → claude-pair-runtime-U2SO44TW.js.map} +0 -0
- /package/dist/{persistent-session-PW3D7TJO.js.map → persistent-session-HXUYS63V.js.map} +0 -0
- /package/dist/{responsiveness-probe-G7HFTXCV.js.map → responsiveness-probe-TVSASSZY.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-HXUYS63V.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-U2SO44TW.js.map
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
resolveEffectivePinRaw,
|
|
44
44
|
safeWriteJsonAtomic,
|
|
45
45
|
setConfigHash
|
|
46
|
-
} from "../chunk-
|
|
46
|
+
} from "../chunk-FAMCYDMC.js";
|
|
47
47
|
import {
|
|
48
48
|
getProjectDir as getProjectDir2,
|
|
49
49
|
getReadyTasks,
|
|
@@ -147,7 +147,7 @@ import {
|
|
|
147
147
|
toOpencodeModel,
|
|
148
148
|
transcriptActivityAgeSeconds,
|
|
149
149
|
writeEgressAllowlist
|
|
150
|
-
} from "../chunk-
|
|
150
|
+
} from "../chunk-NDF3YMP5.js";
|
|
151
151
|
import {
|
|
152
152
|
reapOrphanChannelMcps
|
|
153
153
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -4128,7 +4128,13 @@ function isKanbanHybridDryRun() {
|
|
|
4128
4128
|
}
|
|
4129
4129
|
var HYBRID_ACTIONABLE_STATUSES = new Set(KANBAN_NUDGE_ACTIONABLE_STATUSES);
|
|
4130
4130
|
function isHybridActionable(item) {
|
|
4131
|
-
return HYBRID_ACTIONABLE_STATUSES.has(item.status) && item.source_type !== "scheduled_task";
|
|
4131
|
+
return HYBRID_ACTIONABLE_STATUSES.has(item.status) && item.source_type !== "scheduled_task" && item.assignee_type !== "human";
|
|
4132
|
+
}
|
|
4133
|
+
function resolveHybridNudgeAction(stale, allowedCount, suppressedCount) {
|
|
4134
|
+
if (stale) return "skip-stale";
|
|
4135
|
+
if (allowedCount > 0) return "nudge";
|
|
4136
|
+
if (suppressedCount > 0) return "close-suppressed";
|
|
4137
|
+
return "drain";
|
|
4132
4138
|
}
|
|
4133
4139
|
function kanbanActionableSignature(allowed) {
|
|
4134
4140
|
return allowed.map((i) => `${i.id}:${i.status}`).sort().join("|");
|
|
@@ -9099,7 +9105,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
9099
9105
|
var lastVersionCheckAt = 0;
|
|
9100
9106
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
9101
9107
|
var lastResponsivenessProbeAt = 0;
|
|
9102
|
-
var agtCliVersion = true ? "0.28.
|
|
9108
|
+
var agtCliVersion = true ? "0.28.372" : "dev";
|
|
9103
9109
|
function resolveBrewPath(execFileSync2) {
|
|
9104
9110
|
try {
|
|
9105
9111
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -10118,7 +10124,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
10118
10124
|
if (codeNames.length === 0) return;
|
|
10119
10125
|
void (async () => {
|
|
10120
10126
|
try {
|
|
10121
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
10127
|
+
const { collectDiagnostics } = await import("../persistent-session-HXUYS63V.js");
|
|
10122
10128
|
await api.post("/host/heartbeat", {
|
|
10123
10129
|
host_id: hostId,
|
|
10124
10130
|
agent_diagnostics: collectDiagnostics(codeNames)
|
|
@@ -10217,7 +10223,7 @@ async function pollCycle() {
|
|
|
10217
10223
|
}
|
|
10218
10224
|
try {
|
|
10219
10225
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
10220
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
10226
|
+
const { collectDiagnostics } = await import("../persistent-session-HXUYS63V.js");
|
|
10221
10227
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
10222
10228
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
|
|
10223
10229
|
let tailscaleHostname;
|
|
@@ -10372,7 +10378,7 @@ async function pollCycle() {
|
|
|
10372
10378
|
const {
|
|
10373
10379
|
collectResponsivenessProbes,
|
|
10374
10380
|
getResponsivenessIntervalMs
|
|
10375
|
-
} = await import("../responsiveness-probe-
|
|
10381
|
+
} = await import("../responsiveness-probe-TVSASSZY.js");
|
|
10376
10382
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
10377
10383
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
10378
10384
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -10404,7 +10410,7 @@ async function pollCycle() {
|
|
|
10404
10410
|
collectResponsivenessProbes,
|
|
10405
10411
|
livePendingInboundOldestAgeSeconds,
|
|
10406
10412
|
parkPendingInbound
|
|
10407
|
-
} = await import("../responsiveness-probe-
|
|
10413
|
+
} = await import("../responsiveness-probe-TVSASSZY.js");
|
|
10408
10414
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-HYOOQV4A.js");
|
|
10409
10415
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
10410
10416
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -12042,6 +12048,12 @@ async function processAgent(agent, agentStates) {
|
|
|
12042
12048
|
}
|
|
12043
12049
|
log(`Integrations provisioned for '${agent.code_name}' (${integrations.length} integration(s))`);
|
|
12044
12050
|
const fw = agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK;
|
|
12051
|
+
if (fw === "opencode" && changedIntIds.length > 0 && isOpencodeSessionHealthy(agent.code_name)) {
|
|
12052
|
+
log(
|
|
12053
|
+
`[hot-reload] opencode integration set changed for '${agent.code_name}' (${changedIntIds.join(", ")}) - restarting serve to load new MCP servers`
|
|
12054
|
+
);
|
|
12055
|
+
stopOpencodeSession(agent.code_name, log);
|
|
12056
|
+
}
|
|
12045
12057
|
let rotationHandled = true;
|
|
12046
12058
|
if (fw === "claude-code" && isSessionHealthy(agent.code_name)) {
|
|
12047
12059
|
try {
|
|
@@ -12452,6 +12464,7 @@ async function processAgent(agent, agentStates) {
|
|
|
12452
12464
|
}
|
|
12453
12465
|
}
|
|
12454
12466
|
let boardItems = [];
|
|
12467
|
+
let boardItemsStale = false;
|
|
12455
12468
|
const hasBoardTemplates = tasks.some((t) => BOARD_INJECT_TEMPLATES.has(t.template_id));
|
|
12456
12469
|
if (hasBoardTemplates) {
|
|
12457
12470
|
try {
|
|
@@ -12460,6 +12473,7 @@ async function processAgent(agent, agentStates) {
|
|
|
12460
12473
|
kanbanBoardCache.set(agent.code_name, boardItems);
|
|
12461
12474
|
} catch {
|
|
12462
12475
|
boardItems = kanbanBoardCache.get(agent.code_name) ?? [];
|
|
12476
|
+
boardItemsStale = true;
|
|
12463
12477
|
}
|
|
12464
12478
|
}
|
|
12465
12479
|
const agentFw = agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK;
|
|
@@ -12467,7 +12481,7 @@ async function processAgent(agent, agentStates) {
|
|
|
12467
12481
|
const wantsHybridInject = isKanbanHybridEnabled();
|
|
12468
12482
|
if (agentFw === "claude-code" && sessionMode === "persistent") {
|
|
12469
12483
|
let hybridBoard = hasBoardTemplates ? boardItems : void 0;
|
|
12470
|
-
let hybridBoardStale =
|
|
12484
|
+
let hybridBoardStale = boardItemsStale;
|
|
12471
12485
|
if (!hybridBoard) {
|
|
12472
12486
|
try {
|
|
12473
12487
|
const boardData = await api.post(
|
|
@@ -12494,20 +12508,25 @@ async function processAgent(agent, agentStates) {
|
|
|
12494
12508
|
const cardStates = wedgeRestartsByCard.get(agent.code_name);
|
|
12495
12509
|
const actionable = hybridBoard.filter(isHybridActionable);
|
|
12496
12510
|
const { allowed, suppressed } = cardStates ? partitionActionableByPoison(actionable, cardStates, poisonCfg) : { allowed: actionable, suppressed: [] };
|
|
12497
|
-
|
|
12511
|
+
const nudgeAction = resolveHybridNudgeAction(
|
|
12512
|
+
hybridBoardStale,
|
|
12513
|
+
allowed.length,
|
|
12514
|
+
suppressed.length
|
|
12515
|
+
);
|
|
12516
|
+
if (nudgeAction === "skip-stale") {
|
|
12498
12517
|
if (allowed.length > 0) {
|
|
12499
12518
|
log(
|
|
12500
12519
|
`[manager-worker] kanban inject skipped for '${agent.code_name}' - board fetch failed this tick (stale cache)`
|
|
12501
12520
|
);
|
|
12502
12521
|
}
|
|
12503
|
-
} else if (
|
|
12522
|
+
} else if (nudgeAction === "nudge") {
|
|
12504
12523
|
void maybeInjectKanbanCheck(
|
|
12505
12524
|
agent.code_name,
|
|
12506
12525
|
agent.agent_id,
|
|
12507
12526
|
allowed.length,
|
|
12508
12527
|
kanbanActionableSignature(allowed)
|
|
12509
12528
|
);
|
|
12510
|
-
} else if (
|
|
12529
|
+
} else if (nudgeAction === "close-suppressed") {
|
|
12511
12530
|
closeInjectedRunIfOpen(
|
|
12512
12531
|
agent.code_name,
|
|
12513
12532
|
"completed",
|
|
@@ -13569,7 +13588,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
13569
13588
|
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}`));
|
|
13570
13589
|
void (async () => {
|
|
13571
13590
|
try {
|
|
13572
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
13591
|
+
const { collectDiagnostics } = await import("../persistent-session-HXUYS63V.js");
|
|
13573
13592
|
await api.post("/host/heartbeat", {
|
|
13574
13593
|
host_id: hostId,
|
|
13575
13594
|
agent_diagnostics: collectDiagnostics([codeName])
|
|
@@ -13619,7 +13638,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
13619
13638
|
}
|
|
13620
13639
|
try {
|
|
13621
13640
|
const hostId = await getHostId();
|
|
13622
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
13641
|
+
const { collectDiagnostics } = await import("../persistent-session-HXUYS63V.js");
|
|
13623
13642
|
await api.post("/host/heartbeat", {
|
|
13624
13643
|
host_id: hostId,
|
|
13625
13644
|
agent_diagnostics: collectDiagnostics([codeName])
|
|
@@ -14117,7 +14136,7 @@ async function processClaudePairSessions(agents) {
|
|
|
14117
14136
|
killPairSession,
|
|
14118
14137
|
pairTmuxSession,
|
|
14119
14138
|
finalizeClaudePairOnboarding
|
|
14120
|
-
} = await import("../claude-pair-runtime-
|
|
14139
|
+
} = await import("../claude-pair-runtime-U2SO44TW.js");
|
|
14121
14140
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
14122
14141
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
14123
14142
|
const killed = await killPairSession(pairTmuxSession(pairId));
|