@integrity-labs/agt-cli 0.28.1000 → 0.28.1001

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,12 +40,12 @@ import {
40
40
  success,
41
41
  table,
42
42
  warn
43
- } from "../chunk-HJC2BA34.js";
43
+ } from "../chunk-AKSY2IXR.js";
44
44
  import {
45
45
  getProjectDir,
46
46
  isSessionResumeDisabled,
47
47
  readDirectChatSessionState
48
- } from "../chunk-Y6XZ22QG.js";
48
+ } from "../chunk-S6GIPDPI.js";
49
49
  import {
50
50
  AnchorSessionClient,
51
51
  CHANNEL_REGISTRY,
@@ -79,7 +79,7 @@ import {
79
79
  serializeManifestForSlackCli,
80
80
  sessionFileExists,
81
81
  sessionTranscriptDir
82
- } from "../chunk-PNV5I6FY.js";
82
+ } from "../chunk-DGVA3EGS.js";
83
83
  import "../chunk-DHWNVVX4.js";
84
84
  import "../chunk-XWVM4KPK.js";
85
85
  import "../chunk-DGUM43GV.js";
@@ -5473,7 +5473,7 @@ import { execFileSync, execSync } from "child_process";
5473
5473
  import { existsSync as existsSync11, realpathSync as realpathSync2 } from "fs";
5474
5474
  import chalk18 from "chalk";
5475
5475
  import ora16 from "ora";
5476
- var cliVersion = true ? "0.28.1000" : "dev";
5476
+ var cliVersion = true ? "0.28.1001" : "dev";
5477
5477
  async function fetchLatestVersion() {
5478
5478
  const host2 = getHost();
5479
5479
  if (!host2) return null;
@@ -6733,7 +6733,7 @@ function handleError(err) {
6733
6733
  }
6734
6734
 
6735
6735
  // src/bin/agt.ts
6736
- var cliVersion2 = true ? "0.28.1000" : "dev";
6736
+ var cliVersion2 = true ? "0.28.1001" : "dev";
6737
6737
  var program = new Command();
6738
6738
  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");
6739
6739
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -15,7 +15,7 @@ import {
15
15
  parseEnvFileEntries,
16
16
  parseEnvIntegrations,
17
17
  shellQuote
18
- } from "./chunk-Y6XZ22QG.js";
18
+ } from "./chunk-S6GIPDPI.js";
19
19
  import {
20
20
  BIND_FAILURE_QUARANTINE_THRESHOLD,
21
21
  INTEGRATIONS_SECTION_END,
@@ -75,7 +75,7 @@ import {
75
75
  sessionTranscriptDir,
76
76
  worseConnectivityOutcome,
77
77
  wrapScheduledTaskPrompt
78
- } from "./chunk-PNV5I6FY.js";
78
+ } from "./chunk-DGVA3EGS.js";
79
79
  import {
80
80
  classifyUnanswerablePane,
81
81
  summarizeUnanswerablePane
@@ -6974,7 +6974,7 @@ function exchangeFailureKind(err) {
6974
6974
  }
6975
6975
 
6976
6976
  // src/lib/api-client.ts
6977
- var agtCliVersion = true ? "0.28.1000" : "dev";
6977
+ var agtCliVersion = true ? "0.28.1001" : "dev";
6978
6978
  var lastConfigHash = null;
6979
6979
  function setConfigHash(hash) {
6980
6980
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -11725,4 +11725,4 @@ export {
11725
11725
  managerInstallSystemUnitCommand,
11726
11726
  managerUninstallSystemUnitCommand
11727
11727
  };
11728
- //# sourceMappingURL=chunk-HJC2BA34.js.map
11728
+ //# sourceMappingURL=chunk-AKSY2IXR.js.map
@@ -15289,4 +15289,4 @@ export {
15289
15289
  peekCurrentSession,
15290
15290
  readDailySessionPin
15291
15291
  };
15292
- //# sourceMappingURL=chunk-PNV5I6FY.js.map
15292
+ //# sourceMappingURL=chunk-DGVA3EGS.js.map
@@ -23,7 +23,7 @@ import {
23
23
  rotateDailySession,
24
24
  sessionFileExists,
25
25
  todayLocalIso
26
- } from "./chunk-PNV5I6FY.js";
26
+ } from "./chunk-DGVA3EGS.js";
27
27
  import {
28
28
  classifyUnanswerablePane,
29
29
  findUsageLimitResetHint,
@@ -5776,4 +5776,4 @@ export {
5776
5776
  stopAllSessionsAndWait,
5777
5777
  getProjectDir
5778
5778
  };
5779
- //# sourceMappingURL=chunk-Y6XZ22QG.js.map
5779
+ //# sourceMappingURL=chunk-S6GIPDPI.js.map
@@ -259,7 +259,7 @@ async function spawnPairSession(session) {
259
259
  return { ok: true };
260
260
  } catch {
261
261
  }
262
- const { resolveClaudeBinary } = await import("./persistent-session-7LJLWENT.js");
262
+ const { resolveClaudeBinary } = await import("./persistent-session-TJCQT3PO.js");
263
263
  const claudeBin = resolveClaudeBinary();
264
264
  const pairEnv = {
265
265
  ...process.env,
@@ -581,4 +581,4 @@ export {
581
581
  startClaudePair,
582
582
  submitClaudePairCode
583
583
  };
584
- //# sourceMappingURL=claude-pair-runtime-Y74LRKDF.js.map
584
+ //# sourceMappingURL=claude-pair-runtime-3MVJHMXZ.js.map
@@ -63,7 +63,7 @@ import {
63
63
  safeWriteJsonAtomic,
64
64
  setConfigHash,
65
65
  tripClass
66
- } from "../chunk-HJC2BA34.js";
66
+ } from "../chunk-AKSY2IXR.js";
67
67
  import {
68
68
  getProjectDir as getProjectDir2,
69
69
  getReadyTasks,
@@ -141,7 +141,7 @@ import {
141
141
  takeZombieDetection,
142
142
  toOpencodeModel,
143
143
  writeEgressAllowlist
144
- } from "../chunk-Y6XZ22QG.js";
144
+ } from "../chunk-S6GIPDPI.js";
145
145
  import {
146
146
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
147
147
  AnchorSessionClient,
@@ -240,7 +240,7 @@ import {
240
240
  subagentActivityAgeSeconds,
241
241
  sumTranscriptUsageInWindow,
242
242
  transcriptActivityAgeSeconds
243
- } from "../chunk-PNV5I6FY.js";
243
+ } from "../chunk-DGVA3EGS.js";
244
244
  import "../chunk-DHWNVVX4.js";
245
245
  import {
246
246
  reapOrphanChannelMcps
@@ -13311,7 +13311,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
13311
13311
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
13312
13312
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
13313
13313
  async function channelInboundActivityAgeSecondsFor(codeName) {
13314
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-37ADO2K7.js");
13314
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-735NGRLO.js");
13315
13315
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
13316
13316
  if (newest === null) return null;
13317
13317
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -14054,7 +14054,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
14054
14054
  var lastVersionCheckAt = 0;
14055
14055
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
14056
14056
  var lastResponsivenessProbeAt = 0;
14057
- var agtCliVersion = true ? "0.28.1000" : "dev";
14057
+ var agtCliVersion = true ? "0.28.1001" : "dev";
14058
14058
  function resolveBrewPath(execFileSync2) {
14059
14059
  try {
14060
14060
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -15670,7 +15670,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
15670
15670
  if (codeNames.length === 0) return;
15671
15671
  void (async () => {
15672
15672
  try {
15673
- const { collectDiagnostics } = await import("../persistent-session-7LJLWENT.js");
15673
+ const { collectDiagnostics } = await import("../persistent-session-TJCQT3PO.js");
15674
15674
  await api.post("/host/heartbeat", {
15675
15675
  host_id: hostId,
15676
15676
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15812,7 +15812,7 @@ async function pollCycleInner() {
15812
15812
  }
15813
15813
  try {
15814
15814
  const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
15815
- const { collectDiagnostics } = await import("../persistent-session-7LJLWENT.js");
15815
+ const { collectDiagnostics } = await import("../persistent-session-TJCQT3PO.js");
15816
15816
  const diagCodeNames = [...agentState.persistentSessionAgents];
15817
15817
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15818
15818
  let tailscaleHostname;
@@ -15988,7 +15988,7 @@ async function pollCycleInner() {
15988
15988
  collectPanelessActivityProbes,
15989
15989
  getResponsivenessIntervalMs,
15990
15990
  occupancyQualificationClassifications
15991
- } = await import("../responsiveness-probe-37ADO2K7.js");
15991
+ } = await import("../responsiveness-probe-735NGRLO.js");
15992
15992
  const probeIntervalMs = getResponsivenessIntervalMs();
15993
15993
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15994
15994
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -16105,7 +16105,7 @@ async function pollCycleInner() {
16105
16105
  collectResponsivenessProbes,
16106
16106
  livePendingInboundOldestAgeSeconds,
16107
16107
  parkPendingInbound
16108
- } = await import("../responsiveness-probe-37ADO2K7.js");
16108
+ } = await import("../responsiveness-probe-735NGRLO.js");
16109
16109
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
16110
16110
  const wedgeNow = /* @__PURE__ */ new Date();
16111
16111
  const liveAgents = agentState.persistentSessionAgents;
@@ -16261,7 +16261,7 @@ async function pollCycleInner() {
16261
16261
  }
16262
16262
  try {
16263
16263
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-VR5QGP3J.js");
16264
- const { probeSessionAuth } = await import("../session-auth-dead-4UM3DFGG.js");
16264
+ const { probeSessionAuth } = await import("../session-auth-dead-YP4EGJTE.js");
16265
16265
  const observations = [];
16266
16266
  const pendingCacheCommits = [];
16267
16267
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -20549,7 +20549,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20549
20549
  try {
20550
20550
  const freshId = rotateSessionForWedge(codeName);
20551
20551
  consecutiveWedgeCycles.delete(codeName);
20552
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-37ADO2K7.js");
20552
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-735NGRLO.js");
20553
20553
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
20554
20554
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
20555
20555
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -20592,7 +20592,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20592
20592
  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}`));
20593
20593
  void (async () => {
20594
20594
  try {
20595
- const { collectDiagnostics } = await import("../persistent-session-7LJLWENT.js");
20595
+ const { collectDiagnostics } = await import("../persistent-session-TJCQT3PO.js");
20596
20596
  await api.post("/host/heartbeat", {
20597
20597
  host_id: hostId,
20598
20598
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20643,7 +20643,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
20643
20643
  }
20644
20644
  try {
20645
20645
  const hostId = await getHostId();
20646
- const { collectDiagnostics } = await import("../persistent-session-7LJLWENT.js");
20646
+ const { collectDiagnostics } = await import("../persistent-session-TJCQT3PO.js");
20647
20647
  await api.post("/host/heartbeat", {
20648
20648
  host_id: hostId,
20649
20649
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -21303,7 +21303,7 @@ async function processClaudePairSessions(agents) {
21303
21303
  killPairSession,
21304
21304
  pairTmuxSession,
21305
21305
  finalizeClaudePairOnboarding
21306
- } = await import("../claude-pair-runtime-Y74LRKDF.js");
21306
+ } = await import("../claude-pair-runtime-3MVJHMXZ.js");
21307
21307
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
21308
21308
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
21309
21309
  const killed = await killPairSession(pairTmuxSession(pairId));
package/dist/mcp/index.js CHANGED
@@ -46716,8 +46716,26 @@ function buildKanbanUpdateItem(id, fields) {
46716
46716
  if (fields.result !== void 0) item.result = fields.result;
46717
46717
  if (fields.new_title !== void 0) item.new_title = fields.new_title;
46718
46718
  if (fields.new_description !== void 0) item.new_description = fields.new_description;
46719
+ if (fields.priority !== void 0) item.priority = fields.priority;
46719
46720
  return item;
46720
46721
  }
46722
+ function resolveKanbanUpdateTarget(match, params) {
46723
+ if (match) {
46724
+ if (match.assigned) {
46725
+ return {
46726
+ kind: "human_assigned",
46727
+ id: match.id,
46728
+ title: match.title,
46729
+ ...match.assigneeName ? { assigneeName: match.assigneeName } : {}
46730
+ };
46731
+ }
46732
+ return { kind: "send", id: match.id, label: match.title };
46733
+ }
46734
+ if (params.id) {
46735
+ return { kind: "send", id: params.id, label: params.id };
46736
+ }
46737
+ return { kind: "not_found", label: params.title ?? params.id ?? "" };
46738
+ }
46721
46739
 
46722
46740
  // src/kanban-add.ts
46723
46741
  function buildKanbanAddItem(params) {
@@ -47456,7 +47474,7 @@ server.tool(
47456
47474
  );
47457
47475
  server.tool(
47458
47476
  "kanban_update",
47459
- "Update notes, result, title or description on a kanban item without changing its status. CS-1682: `new_title`/`new_description` CORRECT the card itself \u2014 use them when a card was created on a premise that turned out to be wrong, so later readers see the corrected framing rather than the original error with a retraction buried in notes. Every content change is recorded append-only in the card's event history with its before and after, so a correction is visible as a correction and can never be a silent rewrite.",
47477
+ "Update notes, result, title, description or PRIORITY on a kanban item without changing its status. CS-1682: `new_title`/`new_description` CORRECT the card itself \u2014 use them when a card was created on a premise that turned out to be wrong, so later readers see the corrected framing rather than the original error with a retraction buried in notes. Every content change is recorded append-only in the card's event history with its before and after, so a correction is visible as a correction and can never be a silent rewrite. CS-1750: `priority` RE-RANKS a card you already filed - use it when work turns out to be more or less urgent than it looked. This matters more than it sounds: your own board feed is ordered by priority and TRUNCATED, so a card left at the wrong priority can fall out of the list you read.",
47460
47478
  {
47461
47479
  id: external_exports.string().optional().describe("Item UUID (preferred)"),
47462
47480
  title: external_exports.string().optional().describe(
@@ -47471,6 +47489,12 @@ server.tool(
47471
47489
  ),
47472
47490
  new_description: external_exports.string().optional().describe(
47473
47491
  "CS-1682: replace the card's description. Use to correct a description founded on a false premise; the previous text is preserved in the card's event history."
47492
+ ),
47493
+ // CS-1750: the same shape kanban_add declares, deliberately character for character.
47494
+ // A tool that accepted a wider range here than the one that created the card would
47495
+ // let an agent re-rank a card into a value it could never have filed it at.
47496
+ priority: external_exports.number().int().min(1).max(3).optional().describe(
47497
+ "CS-1750: re-rank the card. 1=high, 2=medium, 3=low. Omit to leave it unchanged; the previous value is preserved in the card's event history."
47474
47498
  )
47475
47499
  },
47476
47500
  async (params) => {
@@ -47486,21 +47510,28 @@ server.tool(
47486
47510
  const match = board.items.find(
47487
47511
  (i) => i.id === params.id || i.title === params.title
47488
47512
  );
47489
- if (!match) {
47513
+ const target = resolveKanbanUpdateTarget(
47514
+ match ? {
47515
+ id: match.id,
47516
+ title: match.title,
47517
+ assigned: isHumanAssigned(match),
47518
+ assigneeName: match.assignee_name ?? null
47519
+ } : void 0,
47520
+ { id: params.id, title: params.title }
47521
+ );
47522
+ if (target.kind === "not_found") {
47490
47523
  return {
47491
- content: [
47492
- { type: "text", text: `Item "${params.id ?? params.title}" not found.` }
47493
- ],
47524
+ content: [{ type: "text", text: `Item "${target.label}" not found.` }],
47494
47525
  isError: true
47495
47526
  };
47496
47527
  }
47497
- if (isHumanAssigned(match)) {
47498
- const who = match.assignee_name ? ` (${match.assignee_name})` : "";
47528
+ if (target.kind === "human_assigned") {
47529
+ const who = target.assigneeName ? ` (${target.assigneeName})` : "";
47499
47530
  return {
47500
47531
  content: [
47501
47532
  {
47502
47533
  type: "text",
47503
- text: `Can't update "${match.title}" \u2014 that card is assigned to a person${who}, not to you. Call kanban_recall with id ${match.id} to bring it back onto your board first.`
47534
+ text: `Can't update "${target.title}" \u2014 that card is assigned to a person${who}, not to you. Call kanban_recall with id ${target.id} to bring it back onto your board first.`
47504
47535
  }
47505
47536
  ],
47506
47537
  isError: true
@@ -47509,7 +47540,7 @@ server.tool(
47509
47540
  const data = await apiPost("/host/kanban", {
47510
47541
  agent_id: AGT_AGENT_ID,
47511
47542
  update: [
47512
- buildKanbanUpdateItem(match.id, {
47543
+ buildKanbanUpdateItem(target.id, {
47513
47544
  notes: params.notes,
47514
47545
  result: params.result,
47515
47546
  // CS-1682: `new_*` all the way down to the wire, NOT plain `title`.
@@ -47518,18 +47549,20 @@ server.tool(
47518
47549
  // renaming anything. Keeping the names distinct end-to-end is what
47519
47550
  // makes that impossible rather than merely unlikely.
47520
47551
  new_title: params.new_title,
47521
- new_description: params.new_description
47552
+ new_description: params.new_description,
47553
+ // CS-1750: presence-guarded all the way down - see buildKanbanUpdateItem.
47554
+ priority: params.priority
47522
47555
  })
47523
47556
  ]
47524
47557
  });
47525
47558
  const outcome = describeKanbanWriteOutcome(
47526
47559
  data,
47527
- { id: match.id },
47528
- match.title,
47560
+ { id: target.id },
47561
+ target.label,
47529
47562
  // CS-1683: say so when the append evicted older inline notes. `kanban_log`
47530
47563
  // has warned since ENG-5731; this tool did not, and it is the one whose
47531
47564
  // NAME does not tell you `notes` is an append at all.
47532
- () => `Updated "${match.title}".${noteRollOffNotice(data)}`
47565
+ () => `Updated "${target.label}".${noteRollOffNotice(data)}`
47533
47566
  );
47534
47567
  return {
47535
47568
  content: [{ type: "text", text: outcome.text }],
@@ -64,8 +64,8 @@ import {
64
64
  writeDirectChatSessionState,
65
65
  writeEgressAllowlist,
66
66
  writePersistentClaudeWrapper
67
- } from "./chunk-Y6XZ22QG.js";
68
- import "./chunk-PNV5I6FY.js";
67
+ } from "./chunk-S6GIPDPI.js";
68
+ import "./chunk-DGVA3EGS.js";
69
69
  import "./chunk-DHWNVVX4.js";
70
70
  import "./chunk-XWVM4KPK.js";
71
71
  import "./chunk-DGUM43GV.js";
@@ -136,4 +136,4 @@ export {
136
136
  writeEgressAllowlist,
137
137
  writePersistentClaudeWrapper
138
138
  };
139
- //# sourceMappingURL=persistent-session-7LJLWENT.js.map
139
+ //# sourceMappingURL=persistent-session-TJCQT3PO.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-Y6XZ22QG.js";
4
- import "./chunk-PNV5I6FY.js";
3
+ } from "./chunk-S6GIPDPI.js";
4
+ import "./chunk-DGVA3EGS.js";
5
5
  import "./chunk-DHWNVVX4.js";
6
6
  import "./chunk-XWVM4KPK.js";
7
7
  import "./chunk-DGUM43GV.js";
@@ -801,4 +801,4 @@ export {
801
801
  readAndResetSlackReplyBindingClassifications,
802
802
  readAndResetSlackReplyTargetClassifications
803
803
  };
804
- //# sourceMappingURL=responsiveness-probe-37ADO2K7.js.map
804
+ //# sourceMappingURL=responsiveness-probe-735NGRLO.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-PNV5I6FY.js";
3
+ } from "./chunk-DGVA3EGS.js";
4
4
  import "./chunk-DGUM43GV.js";
5
5
 
6
6
  // src/lib/session-auth-dead.ts
@@ -204,4 +204,4 @@ export {
204
204
  decideSessionAuthState,
205
205
  probeSessionAuth
206
206
  };
207
- //# sourceMappingURL=session-auth-dead-4UM3DFGG.js.map
207
+ //# sourceMappingURL=session-auth-dead-YP4EGJTE.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.1000",
3
+ "version": "0.28.1001",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {