@integrity-labs/agt-cli 0.28.633 → 0.28.635
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
CHANGED
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
success,
|
|
41
41
|
table,
|
|
42
42
|
warn
|
|
43
|
-
} from "../chunk-
|
|
43
|
+
} from "../chunk-J6KQDGWM.js";
|
|
44
44
|
import {
|
|
45
45
|
readDirectChatSessionState
|
|
46
46
|
} from "../chunk-GNTCOXZG.js";
|
|
@@ -4909,7 +4909,7 @@ import { execFileSync, execSync } from "child_process";
|
|
|
4909
4909
|
import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
|
|
4910
4910
|
import chalk18 from "chalk";
|
|
4911
4911
|
import ora16 from "ora";
|
|
4912
|
-
var cliVersion = true ? "0.28.
|
|
4912
|
+
var cliVersion = true ? "0.28.635" : "dev";
|
|
4913
4913
|
async function fetchLatestVersion() {
|
|
4914
4914
|
const host2 = getHost();
|
|
4915
4915
|
if (!host2) return null;
|
|
@@ -6089,7 +6089,7 @@ function handleError(err) {
|
|
|
6089
6089
|
}
|
|
6090
6090
|
|
|
6091
6091
|
// src/bin/agt.ts
|
|
6092
|
-
var cliVersion2 = true ? "0.28.
|
|
6092
|
+
var cliVersion2 = true ? "0.28.635" : "dev";
|
|
6093
6093
|
var program = new Command();
|
|
6094
6094
|
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");
|
|
6095
6095
|
program.hook("preAction", async (thisCommand, actionCommand) => {
|
|
@@ -6069,7 +6069,7 @@ function exchangeFailureKind(err) {
|
|
|
6069
6069
|
}
|
|
6070
6070
|
|
|
6071
6071
|
// src/lib/api-client.ts
|
|
6072
|
-
var agtCliVersion = true ? "0.28.
|
|
6072
|
+
var agtCliVersion = true ? "0.28.635" : "dev";
|
|
6073
6073
|
var lastConfigHash = null;
|
|
6074
6074
|
function setConfigHash(hash) {
|
|
6075
6075
|
lastConfigHash = hash && hash.length > 0 ? hash : null;
|
|
@@ -9630,4 +9630,4 @@ export {
|
|
|
9630
9630
|
managerInstallSystemUnitCommand,
|
|
9631
9631
|
managerUninstallSystemUnitCommand
|
|
9632
9632
|
};
|
|
9633
|
-
//# sourceMappingURL=chunk-
|
|
9633
|
+
//# sourceMappingURL=chunk-J6KQDGWM.js.map
|
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
safeWriteJsonAtomic,
|
|
55
55
|
setConfigHash,
|
|
56
56
|
tripClass
|
|
57
|
-
} from "../chunk-
|
|
57
|
+
} from "../chunk-J6KQDGWM.js";
|
|
58
58
|
import {
|
|
59
59
|
getProjectDir as getProjectDir2,
|
|
60
60
|
getReadyTasks,
|
|
@@ -12131,7 +12131,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
12131
12131
|
var lastVersionCheckAt = 0;
|
|
12132
12132
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
12133
12133
|
var lastResponsivenessProbeAt = 0;
|
|
12134
|
-
var agtCliVersion = true ? "0.28.
|
|
12134
|
+
var agtCliVersion = true ? "0.28.635" : "dev";
|
|
12135
12135
|
function resolveBrewPath(execFileSync3) {
|
|
12136
12136
|
try {
|
|
12137
12137
|
const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
package/dist/mcp/index.js
CHANGED
|
@@ -21359,13 +21359,32 @@ function renderWaitingClause(item, nowMs) {
|
|
|
21359
21359
|
const ask = item.waiting_on ? `: ${item.waiting_on.length > 80 ? `${item.waiting_on.slice(0, 77)}...` : item.waiting_on}` : "";
|
|
21360
21360
|
return head ? `${head}${ask}` : "";
|
|
21361
21361
|
}
|
|
21362
|
-
|
|
21362
|
+
var KANBAN_DESCRIPTION_MAX_CHARS = 1200;
|
|
21363
|
+
var TERMINAL_STATUSES_FOR_DESCRIPTION = /* @__PURE__ */ new Set(["done", "failed"]);
|
|
21364
|
+
function truncateByCodePoints(text, max) {
|
|
21365
|
+
const points = Array.from(text);
|
|
21366
|
+
if (points.length <= max) return { shown: text, total: points.length, truncated: false };
|
|
21367
|
+
return { shown: points.slice(0, max).join(""), total: points.length, truncated: true };
|
|
21368
|
+
}
|
|
21369
|
+
function renderDescriptionClause(item) {
|
|
21370
|
+
const text = item.description?.trim();
|
|
21371
|
+
if (!text) return null;
|
|
21372
|
+
if (TERMINAL_STATUSES_FOR_DESCRIPTION.has(item.status)) return null;
|
|
21373
|
+
const { shown, total, truncated } = truncateByCodePoints(text, KANBAN_DESCRIPTION_MAX_CHARS);
|
|
21374
|
+
if (!truncated) return ` ${text}`;
|
|
21375
|
+
return ` ${shown}
|
|
21376
|
+
[description truncated \u2014 showing ${KANBAN_DESCRIPTION_MAX_CHARS} of ${total} characters; open the card in the console for the rest]`;
|
|
21377
|
+
}
|
|
21378
|
+
function renderKanbanItemLine(item, nowMs, suffix = "") {
|
|
21363
21379
|
const pri = kanbanPriorityLabel(item.priority);
|
|
21364
21380
|
const est = item.estimated_minutes ? ` ~${item.estimated_minutes}min` : "";
|
|
21365
21381
|
const del = item.deliverable ? ` \u2192 ${item.deliverable}` : "";
|
|
21366
21382
|
const res = item.result ? ` \u2713 ${item.result}` : "";
|
|
21367
21383
|
const wait = renderWaitingClause(item, nowMs);
|
|
21368
|
-
|
|
21384
|
+
const head = `- [${pri}] ${item.title}${wait}${est}${del}${res} (id: ${item.id})${suffix}`;
|
|
21385
|
+
const desc = renderDescriptionClause(item);
|
|
21386
|
+
return desc ? `${head}
|
|
21387
|
+
${desc}` : head;
|
|
21369
21388
|
}
|
|
21370
21389
|
function renderKanbanList(items, nowMs = Date.now()) {
|
|
21371
21390
|
if (!items.length) return "Board is empty.";
|
|
@@ -21390,7 +21409,7 @@ function renderKanbanList(items, nowMs = Date.now()) {
|
|
|
21390
21409
|
## ${BLOCKED_ON_ME_SECTION_HEADING} (${blockedOnMe.length})`);
|
|
21391
21410
|
lines.push(BLOCKED_ON_ME_SECTION_NOTE);
|
|
21392
21411
|
for (const item of blockedOnMe) {
|
|
21393
|
-
lines.push(
|
|
21412
|
+
lines.push(renderKanbanItemLine(item, nowMs, ` [blocking ${item.blocked_agent_label}]`));
|
|
21394
21413
|
}
|
|
21395
21414
|
}
|
|
21396
21415
|
if (humanAssigned.length) {
|
|
@@ -21399,7 +21418,7 @@ function renderKanbanList(items, nowMs = Date.now()) {
|
|
|
21399
21418
|
lines.push(HUMAN_ASSIGNED_SECTION_NOTE);
|
|
21400
21419
|
for (const item of humanAssigned) {
|
|
21401
21420
|
const who = item.assignee_name ? ` [with ${item.assignee_name}]` : "";
|
|
21402
|
-
lines.push(
|
|
21421
|
+
lines.push(renderKanbanItemLine(item, nowMs, who));
|
|
21403
21422
|
}
|
|
21404
21423
|
}
|
|
21405
21424
|
return lines.join("\n");
|
|
@@ -22401,6 +22420,7 @@ server.tool(
|
|
|
22401
22420
|
return { content: [{ type: "text", text: renderKanbanList(data.items) }] };
|
|
22402
22421
|
}
|
|
22403
22422
|
);
|
|
22423
|
+
var KANBAN_SEARCH_DESCRIPTION_MAX_CHARS = 300;
|
|
22404
22424
|
server.tool(
|
|
22405
22425
|
"kanban_search",
|
|
22406
22426
|
`Search your FULL kanban history by keyword \u2014 including done cards older than 24h that kanban_list omits. Use this BEFORE telling anyone you have "no record" of work they say you did: the board only shows the last 24h of completed cards, so "it's not on my board" does NOT mean you never did it. Each hit includes the card's result (the actual deliverable), so you can recite what you produced. An empty query returns your most recent cards across all statuses.`,
|
|
@@ -22440,6 +22460,15 @@ server.tool(
|
|
|
22440
22460
|
const via = item.source_integration ? ` via ${item.source_integration}` : "";
|
|
22441
22461
|
lines.push(`
|
|
22442
22462
|
- [${item.status}${via}, ${day}] ${item.title} (id: ${item.id})`);
|
|
22463
|
+
const desc = item.description?.trim();
|
|
22464
|
+
if (desc) {
|
|
22465
|
+
const { shown, total, truncated } = truncateByCodePoints(
|
|
22466
|
+
desc,
|
|
22467
|
+
KANBAN_SEARCH_DESCRIPTION_MAX_CHARS
|
|
22468
|
+
);
|
|
22469
|
+
const line = truncated ? `${shown} \u2026(description trimmed at ${KANBAN_SEARCH_DESCRIPTION_MAX_CHARS} of ${total} characters; open the card in the console for the full text)` : desc;
|
|
22470
|
+
lines.push(` ${line}`);
|
|
22471
|
+
}
|
|
22443
22472
|
if (item.deliverable) lines.push(` \u2192 ${item.deliverable}`);
|
|
22444
22473
|
if (item.result) {
|
|
22445
22474
|
const more = item.result_truncated ? " \u2026(result trimmed; open the card in the console for the full text)" : "";
|
|
@@ -22878,7 +22907,14 @@ server.tool(
|
|
|
22878
22907
|
"Optional: the slug (or UUID) of ANOTHER team in your organization to assign across teams. Omit for a same-team handoff. Requires the org to have cross-team assignment enabled and a peer grant; otherwise the target reads as not-found."
|
|
22879
22908
|
),
|
|
22880
22909
|
title: external_exports.string().describe("Task title (max 200 chars)"),
|
|
22881
|
-
|
|
22910
|
+
// CS-1589: this is the ONLY field that carries the substance of a handoff —
|
|
22911
|
+
// title is a headline, deliverable is an outcome — so say plainly that it
|
|
22912
|
+
// reaches the target and that everything they need has to be in it. The
|
|
22913
|
+
// reported failure was an agent that put a complete brief here, got a clean
|
|
22914
|
+
// success message, and delegated a card the recipient read as two lines.
|
|
22915
|
+
description: external_exports.string().optional().describe(
|
|
22916
|
+
"The BRIEF \u2014 this is what the target actually reads on their board, so put everything they need to do the work here: source data and URLs, constraints, specifications, rules they must follow, and anything they should NOT redo. Title and deliverable are a headline and an outcome; they cannot carry instructions. Long briefs are shown in full up to 1200 characters on their board and visibly marked as trimmed beyond that (the whole text is always kept on the card)."
|
|
22917
|
+
),
|
|
22882
22918
|
priority: external_exports.number().int().min(1).max(3).optional().describe("Priority: 1=high, 2=medium (default), 3=low"),
|
|
22883
22919
|
status: external_exports.enum(["backlog", "todo", "in_progress"]).optional().describe(
|
|
22884
22920
|
"Which column the card lands in on the recipient's board (default: todo). Use 'backlog' to stage it as not-yet-actionable work the teammate will pull later, 'todo' for ready-to-work, 'in_progress' if they should start immediately."
|
package/package.json
CHANGED
|
File without changes
|