@integrity-labs/agt-cli 0.28.921 → 0.28.922
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-JTWIYGY2.js";
|
|
44
44
|
import {
|
|
45
45
|
getProjectDir,
|
|
46
46
|
isSessionResumeDisabled,
|
|
@@ -5467,7 +5467,7 @@ import { execFileSync, execSync } from "child_process";
|
|
|
5467
5467
|
import { existsSync as existsSync11, realpathSync as realpathSync2 } from "fs";
|
|
5468
5468
|
import chalk18 from "chalk";
|
|
5469
5469
|
import ora16 from "ora";
|
|
5470
|
-
var cliVersion = true ? "0.28.
|
|
5470
|
+
var cliVersion = true ? "0.28.922" : "dev";
|
|
5471
5471
|
async function fetchLatestVersion() {
|
|
5472
5472
|
const host2 = getHost();
|
|
5473
5473
|
if (!host2) return null;
|
|
@@ -6682,7 +6682,7 @@ function handleError(err) {
|
|
|
6682
6682
|
}
|
|
6683
6683
|
|
|
6684
6684
|
// src/bin/agt.ts
|
|
6685
|
-
var cliVersion2 = true ? "0.28.
|
|
6685
|
+
var cliVersion2 = true ? "0.28.922" : "dev";
|
|
6686
6686
|
var program = new Command();
|
|
6687
6687
|
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");
|
|
6688
6688
|
program.hook("preAction", async (thisCommand, actionCommand) => {
|
|
@@ -6942,7 +6942,7 @@ function exchangeFailureKind(err) {
|
|
|
6942
6942
|
}
|
|
6943
6943
|
|
|
6944
6944
|
// src/lib/api-client.ts
|
|
6945
|
-
var agtCliVersion = true ? "0.28.
|
|
6945
|
+
var agtCliVersion = true ? "0.28.922" : "dev";
|
|
6946
6946
|
var lastConfigHash = null;
|
|
6947
6947
|
function setConfigHash(hash) {
|
|
6948
6948
|
lastConfigHash = hash && hash.length > 0 ? hash : null;
|
|
@@ -11552,4 +11552,4 @@ export {
|
|
|
11552
11552
|
managerInstallSystemUnitCommand,
|
|
11553
11553
|
managerUninstallSystemUnitCommand
|
|
11554
11554
|
};
|
|
11555
|
-
//# sourceMappingURL=chunk-
|
|
11555
|
+
//# sourceMappingURL=chunk-JTWIYGY2.js.map
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
safeWriteJsonAtomic,
|
|
64
64
|
setConfigHash,
|
|
65
65
|
tripClass
|
|
66
|
-
} from "../chunk-
|
|
66
|
+
} from "../chunk-JTWIYGY2.js";
|
|
67
67
|
import {
|
|
68
68
|
getProjectDir as getProjectDir2,
|
|
69
69
|
getReadyTasks,
|
|
@@ -13823,7 +13823,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
13823
13823
|
var lastVersionCheckAt = 0;
|
|
13824
13824
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
13825
13825
|
var lastResponsivenessProbeAt = 0;
|
|
13826
|
-
var agtCliVersion = true ? "0.28.
|
|
13826
|
+
var agtCliVersion = true ? "0.28.922" : "dev";
|
|
13827
13827
|
function resolveBrewPath(execFileSync2) {
|
|
13828
13828
|
try {
|
|
13829
13829
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
package/dist/mcp/index.js
CHANGED
|
@@ -48514,7 +48514,7 @@ server.tool(
|
|
|
48514
48514
|
);
|
|
48515
48515
|
server.tool(
|
|
48516
48516
|
"routine_list",
|
|
48517
|
-
"List the routines YOU own - the recurring responsibilities a human accepted on your behalf. Call this FIRST whenever you need a routine_id: routine_revise and submit_routine_output both require one, and this is the only tool that produces it. Each entry gives you the routine_id, its name and status, the schedule it runs on (id, cron, timezone), its version, whether it owes a submit_routine_output call, and its FULL current prompt. The prompt is complete and untruncated on purpose: routine_revise replaces a routine's substance wholesale, so anything missing from what you read is missing from what you write. Read it here before revising rather than reconstructing it from memory. Returns an empty list if you own none - that is an answer, not an error.",
|
|
48517
|
+
"List the routines YOU own - the recurring responsibilities a human accepted on your behalf. Call this FIRST whenever you need a routine_id: routine_revise and submit_routine_output both require one, and this is the only tool that produces it. Each entry gives you the routine_id, its name and status, the schedule it runs on (id, cron, timezone), its version, whether it owes a submit_routine_output call, whether a revision you proposed is still waiting on your manager (ENG-10494 - one is pending until they resolve it, and it blocks every further revision of that routine), and its FULL current prompt. The prompt is complete and untruncated on purpose: routine_revise replaces a routine's substance wholesale, so anything missing from what you read is missing from what you write. Read it here before revising rather than reconstructing it from memory. Returns an empty list if you own none - that is an answer, not an error.",
|
|
48518
48518
|
{},
|
|
48519
48519
|
async () => {
|
|
48520
48520
|
try {
|
|
@@ -48537,9 +48537,13 @@ server.tool(
|
|
|
48537
48537
|
const when = r.cron ? `cron ${r.cron}` : r.every ? `every ${r.every}` : "no schedule";
|
|
48538
48538
|
const tz = r.timezone ? ` ${r.timezone}` : "";
|
|
48539
48539
|
const gated = r.requires_output_approval ? "\n approval: REQUIRED \u2014 call submit_routine_output instead of delivering directly" : "";
|
|
48540
|
+
const pending = r.pending_revision ? `
|
|
48541
|
+
revision pending since ${r.pending_revision.proposed_at}` + (r.pending_revision.summary ? ` \u2014 "${r.pending_revision.summary}"` : "") + (r.pending_revision.snoozed_until ? `
|
|
48542
|
+
your manager chose "not now"; the card re-surfaces ${r.pending_revision.snoozed_until}` : "") + (r.pending_revision.review_url ? `
|
|
48543
|
+
review: ${r.pending_revision.review_url}` : "") + "\n You cannot propose another revision of this routine until they resolve it. Call routine_proposal_status to read what is waiting." : "";
|
|
48540
48544
|
return `\u2022 ${r.name} [${r.status}] v${r.version}
|
|
48541
48545
|
routine_id: ${r.routine_id}
|
|
48542
|
-
schedule_id: ${r.schedule_id ?? "(none \u2014 this routine has no runtime row)"} (${when}${tz})${gated}
|
|
48546
|
+
schedule_id: ${r.schedule_id ?? "(none \u2014 this routine has no runtime row)"} (${when}${tz})${gated}${pending}
|
|
48543
48547
|
prompt:
|
|
48544
48548
|
${r.prompt ?? "(none)"}`;
|
|
48545
48549
|
}).join("\n\n");
|
|
@@ -48589,11 +48593,14 @@ server.tool(
|
|
|
48589
48593
|
content: [{ type: "text", text: data.error ?? data.message ?? "Could not propose the revision." }]
|
|
48590
48594
|
};
|
|
48591
48595
|
}
|
|
48596
|
+
const link = data.review_url ? `
|
|
48597
|
+
|
|
48598
|
+
Give your manager this link so they can accept or decline it: ${data.review_url}` : "";
|
|
48592
48599
|
return {
|
|
48593
48600
|
content: [
|
|
48594
48601
|
{
|
|
48595
48602
|
type: "text",
|
|
48596
|
-
text: data.message ?? "Revision proposed. The live routine is unchanged until your manager accepts it."
|
|
48603
|
+
text: (data.message ?? "Revision proposed. The live routine is unchanged until your manager accepts it.") + link + "\n\nCheck the outcome later with routine_proposal_status \u2014 until they resolve this one you cannot propose another revision of this routine."
|
|
48597
48604
|
}
|
|
48598
48605
|
]
|
|
48599
48606
|
};
|
|
@@ -48612,6 +48619,74 @@ server.tool(
|
|
|
48612
48619
|
}
|
|
48613
48620
|
}
|
|
48614
48621
|
);
|
|
48622
|
+
server.tool(
|
|
48623
|
+
"routine_proposal_status",
|
|
48624
|
+
"Read the outcome of the routine revisions YOU proposed with routine_revise: pending (your manager has not resolved it yet), accepted, declined, or expired - plus the summary and the FULL replacement description you submitted, so you can see what is actually waiting on them. A pending proposal also returns a review_url to hand to your manager, and is flagged `stale` when the routine has changed since you proposed (accepting it would apply a rewrite of text the routine no longer says - propose again against the current prompt instead). Call this when routine_list shows a revision pending, when routine_revise refuses because one already is, or to close the loop on a proposal you filed in an earlier session. No decline reason is recorded anywhere on this path, so a declined proposal tells you THAT it was declined and not why - ask the person rather than reporting a reason you do not have.",
|
|
48625
|
+
{
|
|
48626
|
+
routine_id: external_exports.string().trim().min(1).optional().describe("Optional: only proposals targeting this routine (the id from routine_list).")
|
|
48627
|
+
},
|
|
48628
|
+
async (params) => {
|
|
48629
|
+
try {
|
|
48630
|
+
const data = await apiPost(
|
|
48631
|
+
"/host/routines/proposals",
|
|
48632
|
+
{
|
|
48633
|
+
agent_id: AGT_AGENT_ID,
|
|
48634
|
+
...params.routine_id ? { routine_id: params.routine_id } : {}
|
|
48635
|
+
},
|
|
48636
|
+
false,
|
|
48637
|
+
15e3,
|
|
48638
|
+
"routine_proposal_status",
|
|
48639
|
+
true
|
|
48640
|
+
);
|
|
48641
|
+
if (!data.ok) {
|
|
48642
|
+
return { content: [{ type: "text", text: data.error ?? "Could not read your revision proposals." }] };
|
|
48643
|
+
}
|
|
48644
|
+
const proposals = data.proposals ?? [];
|
|
48645
|
+
if (proposals.length === 0) {
|
|
48646
|
+
return {
|
|
48647
|
+
content: [
|
|
48648
|
+
{
|
|
48649
|
+
type: "text",
|
|
48650
|
+
text: params.routine_id ? `You have proposed no revisions of routine ${params.routine_id}.` : "You have proposed no routine revisions."
|
|
48651
|
+
}
|
|
48652
|
+
]
|
|
48653
|
+
};
|
|
48654
|
+
}
|
|
48655
|
+
const body = proposals.map((p2) => {
|
|
48656
|
+
const stale = p2.stale ? `
|
|
48657
|
+
STALE \u2014 the routine is now v${p2.current_version ?? "?"} but you proposed against v${p2.from_version ?? "?"}. Read the current prompt with routine_list and propose again.` : "";
|
|
48658
|
+
const snoozed = p2.snoozed_until ? `
|
|
48659
|
+
your manager chose "not now"; the card re-surfaces ${p2.snoozed_until}` : "";
|
|
48660
|
+
const resolved = p2.resolved_at ? `
|
|
48661
|
+
resolved: ${p2.resolved_at}` : "";
|
|
48662
|
+
const link = p2.review_url ? `
|
|
48663
|
+
review: ${p2.review_url}` : "";
|
|
48664
|
+
return `\u2022 ${p2.routine_name ?? p2.routine_id} \u2014 ${p2.state.toUpperCase()}${stale}
|
|
48665
|
+
routine_id: ${p2.routine_id}
|
|
48666
|
+
proposed: ${p2.proposed_at}${resolved}${snoozed}${link}
|
|
48667
|
+
summary: ${p2.summary ?? "(none)"}
|
|
48668
|
+
proposed description:
|
|
48669
|
+
${p2.proposed_description ?? "(none)"}`;
|
|
48670
|
+
}).join("\n\n");
|
|
48671
|
+
return {
|
|
48672
|
+
content: [
|
|
48673
|
+
{
|
|
48674
|
+
type: "text",
|
|
48675
|
+
text: `${proposals.length} routine revision${proposals.length === 1 ? "" : "s"} you proposed:
|
|
48676
|
+
|
|
48677
|
+
${body}` + (data.truncated ? "\n\nTHIS IS A PAGE, NOT THE WHOLE HISTORY \u2014 the read hit its row cap, so older proposals exist that are not listed. Pass routine_id to narrow it." : "") + "\n\nNo decline reason is captured on this path \u2014 a declined proposal records that it was declined, not why."
|
|
48678
|
+
}
|
|
48679
|
+
]
|
|
48680
|
+
};
|
|
48681
|
+
} catch (err) {
|
|
48682
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
48683
|
+
return {
|
|
48684
|
+
content: [{ type: "text", text: `Could not read your revision proposals: ${msg}` }],
|
|
48685
|
+
isError: true
|
|
48686
|
+
};
|
|
48687
|
+
}
|
|
48688
|
+
}
|
|
48689
|
+
);
|
|
48615
48690
|
server.tool(
|
|
48616
48691
|
"submit_routine_output",
|
|
48617
48692
|
"Submit a gated routine's drafted output for human approval. Use ONLY when your routine prompt says the routine is in its approval phase - the platform delivers the draft after sign-off; do not deliver it yourself.",
|
|
@@ -49498,6 +49573,9 @@ var LOCAL_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
|
49498
49573
|
"routine_revise",
|
|
49499
49574
|
// ENG-9431: the discovery primitive both of the above depend on.
|
|
49500
49575
|
"routine_list",
|
|
49576
|
+
// ENG-10494: the verdict loop for routine_revise. Without it a proposed
|
|
49577
|
+
// revision is write-only, and an unseen one blocks that routine for good.
|
|
49578
|
+
"routine_proposal_status",
|
|
49501
49579
|
// ENG-10276: knowledge_get is the untruncated single-entry read. The list and
|
|
49502
49580
|
// search tools serve a stored SUMMARY column, not the entry, so this is the
|
|
49503
49581
|
// only one that can be trusted before a knowledge_update.
|
package/package.json
CHANGED
|
File without changes
|