@integrity-labs/agt-cli 0.28.302 → 0.28.304
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 +3 -3
- package/dist/{chunk-D5BJLFH7.js → chunk-OA5EO3U4.js} +2 -2
- package/dist/lib/manager-worker.js +38 -5
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/mcp/slack-channel.js +111 -0
- package/package.json +1 -1
- /package/dist/{chunk-D5BJLFH7.js.map → chunk-OA5EO3U4.js.map} +0 -0
package/dist/bin/agt.js
CHANGED
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
success,
|
|
39
39
|
table,
|
|
40
40
|
warn
|
|
41
|
-
} from "../chunk-
|
|
41
|
+
} from "../chunk-OA5EO3U4.js";
|
|
42
42
|
import {
|
|
43
43
|
CHANNEL_REGISTRY,
|
|
44
44
|
DEFAULT_FRAMEWORK,
|
|
@@ -4826,7 +4826,7 @@ import { execFileSync, execSync } from "child_process";
|
|
|
4826
4826
|
import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
|
|
4827
4827
|
import chalk18 from "chalk";
|
|
4828
4828
|
import ora16 from "ora";
|
|
4829
|
-
var cliVersion = true ? "0.28.
|
|
4829
|
+
var cliVersion = true ? "0.28.304" : "dev";
|
|
4830
4830
|
async function fetchLatestVersion() {
|
|
4831
4831
|
const host2 = getHost();
|
|
4832
4832
|
if (!host2) return null;
|
|
@@ -5843,7 +5843,7 @@ function handleError(err) {
|
|
|
5843
5843
|
}
|
|
5844
5844
|
|
|
5845
5845
|
// src/bin/agt.ts
|
|
5846
|
-
var cliVersion2 = true ? "0.28.
|
|
5846
|
+
var cliVersion2 = true ? "0.28.304" : "dev";
|
|
5847
5847
|
var program = new Command();
|
|
5848
5848
|
program.name("agt").description("Augmented CLI \u2014 agent provisioning and management").version(cliVersion2).option("--json", "Emit machine-readable JSON output (suppress spinners and colors)").option("--skip-update-check", "Skip the automatic update check on startup");
|
|
5849
5849
|
program.hook("preAction", async (thisCommand, actionCommand) => {
|
|
@@ -5882,7 +5882,7 @@ function requireHost() {
|
|
|
5882
5882
|
}
|
|
5883
5883
|
|
|
5884
5884
|
// src/lib/api-client.ts
|
|
5885
|
-
var agtCliVersion = true ? "0.28.
|
|
5885
|
+
var agtCliVersion = true ? "0.28.304" : "dev";
|
|
5886
5886
|
var lastConfigHash = null;
|
|
5887
5887
|
function setConfigHash(hash) {
|
|
5888
5888
|
lastConfigHash = hash && hash.length > 0 ? hash : null;
|
|
@@ -8181,4 +8181,4 @@ export {
|
|
|
8181
8181
|
managerInstallSystemUnitCommand,
|
|
8182
8182
|
managerUninstallSystemUnitCommand
|
|
8183
8183
|
};
|
|
8184
|
-
//# sourceMappingURL=chunk-
|
|
8184
|
+
//# sourceMappingURL=chunk-OA5EO3U4.js.map
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
requireHost,
|
|
40
40
|
safeWriteJsonAtomic,
|
|
41
41
|
setConfigHash
|
|
42
|
-
} from "../chunk-
|
|
42
|
+
} from "../chunk-OA5EO3U4.js";
|
|
43
43
|
import {
|
|
44
44
|
getProjectDir as getProjectDir2,
|
|
45
45
|
getReadyTasks,
|
|
@@ -3927,6 +3927,14 @@ var HYBRID_ACTIONABLE_STATUSES = new Set(KANBAN_NUDGE_ACTIONABLE_STATUSES);
|
|
|
3927
3927
|
function isHybridActionable(item) {
|
|
3928
3928
|
return HYBRID_ACTIONABLE_STATUSES.has(item.status) && item.source_type !== "scheduled_task";
|
|
3929
3929
|
}
|
|
3930
|
+
function kanbanActionableSignature(allowed) {
|
|
3931
|
+
return allowed.map((i) => `${i.id}:${i.status}`).sort().join("|");
|
|
3932
|
+
}
|
|
3933
|
+
function shouldNudgeUnchangedBoard(signature, state7, now, fullCadenceMs) {
|
|
3934
|
+
if (!state7) return true;
|
|
3935
|
+
if (state7.signature !== signature) return true;
|
|
3936
|
+
return now - state7.nudgedAt >= fullCadenceMs;
|
|
3937
|
+
}
|
|
3930
3938
|
function isSlashCommand(command) {
|
|
3931
3939
|
return command.trimStart().startsWith("/");
|
|
3932
3940
|
}
|
|
@@ -6989,7 +6997,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
6989
6997
|
var lastVersionCheckAt = 0;
|
|
6990
6998
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
6991
6999
|
var lastResponsivenessProbeAt = 0;
|
|
6992
|
-
var agtCliVersion = true ? "0.28.
|
|
7000
|
+
var agtCliVersion = true ? "0.28.304" : "dev";
|
|
6993
7001
|
function resolveBrewPath(execFileSync2) {
|
|
6994
7002
|
try {
|
|
6995
7003
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -10104,7 +10112,12 @@ async function processAgent(agent, agentStates) {
|
|
|
10104
10112
|
);
|
|
10105
10113
|
}
|
|
10106
10114
|
} else if (allowed.length > 0) {
|
|
10107
|
-
void maybeInjectKanbanCheck(
|
|
10115
|
+
void maybeInjectKanbanCheck(
|
|
10116
|
+
agent.code_name,
|
|
10117
|
+
agent.agent_id,
|
|
10118
|
+
allowed.length,
|
|
10119
|
+
kanbanActionableSignature(allowed)
|
|
10120
|
+
);
|
|
10108
10121
|
} else if (suppressed.length > 0) {
|
|
10109
10122
|
closeInjectedRunIfOpen(
|
|
10110
10123
|
agent.code_name,
|
|
@@ -10114,6 +10127,7 @@ async function processAgent(agent, agentStates) {
|
|
|
10114
10127
|
} else if (openInjectedRunByCode.has(agent.code_name)) {
|
|
10115
10128
|
const openRunId = openInjectedRunByCode.get(agent.code_name);
|
|
10116
10129
|
openInjectedRunByCode.delete(agent.code_name);
|
|
10130
|
+
kanbanNudgeStateByCode.delete(agent.code_name);
|
|
10117
10131
|
void cancelKanbanNoticeOnDrain(agent.code_name, agent.agent_id, openRunId);
|
|
10118
10132
|
}
|
|
10119
10133
|
}
|
|
@@ -11423,6 +11437,7 @@ ${escapeXml(msg.content)}
|
|
|
11423
11437
|
log(`[direct-chat] No in-session delivery for '${agent.codeName}' (msg=${msg.id}) \u2014 leaving pending for ENG-5927 durable replay`);
|
|
11424
11438
|
}
|
|
11425
11439
|
var lastKanbanInjectAt = /* @__PURE__ */ new Map();
|
|
11440
|
+
var kanbanNudgeStateByCode = /* @__PURE__ */ new Map();
|
|
11426
11441
|
var openInjectedRunByCode = /* @__PURE__ */ new Map();
|
|
11427
11442
|
function closeInjectedRunIfOpen(codeName, outcome, outcomeMessage) {
|
|
11428
11443
|
const runId = openInjectedRunByCode.get(codeName);
|
|
@@ -11449,6 +11464,12 @@ var KANBAN_HYBRID_DEBOUNCE_MS = (() => {
|
|
|
11449
11464
|
if (Number.isFinite(parsed) && parsed > 0) return Math.max(parsed, 10) * 1e3;
|
|
11450
11465
|
return 6e4;
|
|
11451
11466
|
})();
|
|
11467
|
+
var KANBAN_HYBRID_FULL_CADENCE_MS = (() => {
|
|
11468
|
+
const raw = process.env["AGT_KANBAN_HYBRID_FULL_CADENCE_SECONDS"];
|
|
11469
|
+
const parsed = raw ? parseInt(raw, 10) : NaN;
|
|
11470
|
+
if (Number.isFinite(parsed) && parsed > 0) return Math.max(parsed * 1e3, KANBAN_HYBRID_DEBOUNCE_MS);
|
|
11471
|
+
return Math.max(5 * 6e4, KANBAN_HYBRID_DEBOUNCE_MS);
|
|
11472
|
+
})();
|
|
11452
11473
|
async function injectKanbanCheckViaDirectChat(codeName, agentId, actionableCount) {
|
|
11453
11474
|
if (isKanbanHybridDryRun()) {
|
|
11454
11475
|
log(
|
|
@@ -11483,7 +11504,15 @@ ${formatRunMarker(run_id)}` : KANBAN_CHECK_COMMAND;
|
|
|
11483
11504
|
);
|
|
11484
11505
|
return true;
|
|
11485
11506
|
}
|
|
11486
|
-
async function maybeInjectKanbanCheck(codeName, agentId, actionableCount) {
|
|
11507
|
+
async function maybeInjectKanbanCheck(codeName, agentId, actionableCount, signature) {
|
|
11508
|
+
if (!shouldNudgeUnchangedBoard(
|
|
11509
|
+
signature,
|
|
11510
|
+
kanbanNudgeStateByCode.get(codeName),
|
|
11511
|
+
Date.now(),
|
|
11512
|
+
KANBAN_HYBRID_FULL_CADENCE_MS
|
|
11513
|
+
)) {
|
|
11514
|
+
return;
|
|
11515
|
+
}
|
|
11487
11516
|
const lastAt = lastKanbanInjectAt.get(codeName) ?? 0;
|
|
11488
11517
|
if (Date.now() - lastAt < KANBAN_HYBRID_DEBOUNCE_MS) {
|
|
11489
11518
|
return;
|
|
@@ -11491,7 +11520,10 @@ async function maybeInjectKanbanCheck(codeName, agentId, actionableCount) {
|
|
|
11491
11520
|
lastKanbanInjectAt.set(codeName, Date.now());
|
|
11492
11521
|
if (hostFlagStore().getBoolean("kanban-doorbell")) {
|
|
11493
11522
|
const ok = await injectKanbanCheckViaDirectChat(codeName, agentId, actionableCount);
|
|
11494
|
-
if (ok)
|
|
11523
|
+
if (ok) {
|
|
11524
|
+
kanbanNudgeStateByCode.set(codeName, { signature, nudgedAt: Date.now() });
|
|
11525
|
+
return;
|
|
11526
|
+
}
|
|
11495
11527
|
log(`[manager-worker] kanban direct-chat enqueue failed for '${codeName}' \u2014 falling back to send-keys`);
|
|
11496
11528
|
}
|
|
11497
11529
|
const tmuxSession = `agt-${codeName}`;
|
|
@@ -11523,6 +11555,7 @@ ${formatRunMarker(run_id)}` : KANBAN_CHECK_COMMAND;
|
|
|
11523
11555
|
}
|
|
11524
11556
|
if (delivered) {
|
|
11525
11557
|
if (run_id) openInjectedRunByCode.set(codeName, run_id);
|
|
11558
|
+
kanbanNudgeStateByCode.set(codeName, { signature, nudgedAt: Date.now() });
|
|
11526
11559
|
log(
|
|
11527
11560
|
`[manager-worker] Injected kanban check for '${codeName}' (${actionableCount} actionable items)${run_id ? ` run_id=${run_id}` : ""}`
|
|
11528
11561
|
);
|