@integrity-labs/agt-cli 0.28.72 → 0.28.74

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.
@@ -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-JCVHOC2Q.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-VKRJVW7A.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-XW57YWRZ.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-6KND4QS7.js.map
@@ -27,7 +27,7 @@ import {
27
27
  requireHost,
28
28
  safeWriteJsonAtomic,
29
29
  setConfigHash
30
- } from "../chunk-IL4CR6YM.js";
30
+ } from "../chunk-WNUAEC22.js";
31
31
  import {
32
32
  getProjectDir as getProjectDir2,
33
33
  getReadyTasks,
@@ -65,7 +65,7 @@ import {
65
65
  takeWatchdogGiveUpCount,
66
66
  takeZombieDetection,
67
67
  transcriptActivityAgeSeconds
68
- } from "../chunk-36O7GO5B.js";
68
+ } from "../chunk-AB57D3NN.js";
69
69
  import {
70
70
  FLAGS_SCHEMA_VERSION,
71
71
  FLAG_REGISTRY,
@@ -97,7 +97,7 @@ import {
97
97
  resolveDmTarget,
98
98
  sumTranscriptUsageInWindow,
99
99
  wrapScheduledTaskPrompt
100
- } from "../chunk-Z2BMTZQK.js";
100
+ } from "../chunk-PXMYLQWB.js";
101
101
  import {
102
102
  parsePsRows,
103
103
  reapOrphanChannelMcps
@@ -6775,7 +6775,7 @@ var cachedMaintenanceWindow = null;
6775
6775
  var lastVersionCheckAt = 0;
6776
6776
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
6777
6777
  var lastResponsivenessProbeAt = 0;
6778
- var agtCliVersion = true ? "0.28.72" : "dev";
6778
+ var agtCliVersion = true ? "0.28.74" : "dev";
6779
6779
  function resolveBrewPath(execFileSync4) {
6780
6780
  try {
6781
6781
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -7883,7 +7883,7 @@ async function pollCycle() {
7883
7883
  }
7884
7884
  try {
7885
7885
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
7886
- const { collectDiagnostics } = await import("../persistent-session-JCVHOC2Q.js");
7886
+ const { collectDiagnostics } = await import("../persistent-session-VKRJVW7A.js");
7887
7887
  const diagCodeNames = [...agentState.persistentSessionAgents];
7888
7888
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
7889
7889
  let tailscaleHostname;
@@ -7984,7 +7984,7 @@ async function pollCycle() {
7984
7984
  const {
7985
7985
  collectResponsivenessProbes,
7986
7986
  getResponsivenessIntervalMs
7987
- } = await import("../responsiveness-probe-OTYU6IER.js");
7987
+ } = await import("../responsiveness-probe-2VTHIPLG.js");
7988
7988
  const probeIntervalMs = getResponsivenessIntervalMs();
7989
7989
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
7990
7990
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -8016,7 +8016,7 @@ async function pollCycle() {
8016
8016
  collectResponsivenessProbes,
8017
8017
  livePendingInboundOldestAgeSeconds,
8018
8018
  parkPendingInbound
8019
- } = await import("../responsiveness-probe-OTYU6IER.js");
8019
+ } = await import("../responsiveness-probe-2VTHIPLG.js");
8020
8020
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
8021
8021
  const wedgeNow = /* @__PURE__ */ new Date();
8022
8022
  const liveAgents = agentState.persistentSessionAgents;
@@ -11479,7 +11479,7 @@ async function processClaudePairSessions(agents) {
11479
11479
  killPairSession,
11480
11480
  pairTmuxSession,
11481
11481
  finalizeClaudePairOnboarding
11482
- } = await import("../claude-pair-runtime-XW57YWRZ.js");
11482
+ } = await import("../claude-pair-runtime-6KND4QS7.js");
11483
11483
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
11484
11484
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
11485
11485
  const killed = await killPairSession(pairTmuxSession(pairId));
package/dist/mcp/index.js CHANGED
@@ -21201,6 +21201,31 @@ function registerApprovalTools(server2, deps) {
21201
21201
  );
21202
21202
  }
21203
21203
 
21204
+ // src/kanban-log.ts
21205
+ function buildKanbanLogUpdate(params) {
21206
+ if (!params.id && !params.title) {
21207
+ return { error: "Error: provide either id or title." };
21208
+ }
21209
+ const entry = params.entry.trim();
21210
+ if (entry.length === 0) {
21211
+ return { error: "Error: entry must be non-empty." };
21212
+ }
21213
+ const update = { notes: entry };
21214
+ if (params.id) update.id = params.id;
21215
+ if (params.title) update.title = params.title;
21216
+ return { update };
21217
+ }
21218
+ function formatKanbanLogResult(label, data) {
21219
+ if (data.updated < 1) {
21220
+ return { text: `Item "${label}" not found.`, isError: true };
21221
+ }
21222
+ const trimmed = data.updated_items?.some((i) => i.notes_truncated) ?? false;
21223
+ return {
21224
+ text: trimmed ? `Logged on "${label}". (Older inline notes rolled off the 4 KB column; full history preserved.)` : `Logged on "${label}".`,
21225
+ isError: false
21226
+ };
21227
+ }
21228
+
21204
21229
  // src/index.ts
21205
21230
  import { spawn } from "child_process";
21206
21231
  var DeliveryTargetSchema = external_exports.union([
@@ -21571,6 +21596,35 @@ server.tool(
21571
21596
  };
21572
21597
  }
21573
21598
  );
21599
+ server.tool(
21600
+ "kanban_log",
21601
+ "Append a timestamped breadcrumb note to a kanban item. Use after each meaningful step (decision, file edited, blocker hit, partial result) so you can recover context if the session restarts. Notes are stored newest-first, capped at 4 KB; older inline entries roll off but the full history is preserved durably. Distinct from kanban_progress (a single live status line that overwrites) and kanban_update (notes + result) \u2014 this is breadcrumbs only.",
21602
+ {
21603
+ id: external_exports.string().optional().describe("Item UUID (preferred)"),
21604
+ title: external_exports.string().optional().describe("Item title (exact match if no id)"),
21605
+ entry: external_exports.string().describe(
21606
+ 'Single-line breadcrumb describing what you just did or learned (e.g. "Checked auth flow \u2014 found bug in middleware"). Prepended as a timestamped line; oldest entries drop off once the column exceeds 4 KB.'
21607
+ )
21608
+ },
21609
+ async (params) => {
21610
+ const built = buildKanbanLogUpdate(params);
21611
+ if ("error" in built) {
21612
+ return { content: [{ type: "text", text: built.error }], isError: true };
21613
+ }
21614
+ const data = await apiPost(
21615
+ "/host/kanban",
21616
+ {
21617
+ agent_id: AGT_AGENT_ID,
21618
+ update: [built.update]
21619
+ }
21620
+ );
21621
+ const { text, isError } = formatKanbanLogResult(
21622
+ params.id ?? params.title,
21623
+ data
21624
+ );
21625
+ return { content: [{ type: "text", text }], ...isError ? { isError: true } : {} };
21626
+ }
21627
+ );
21574
21628
  server.tool(
21575
21629
  "kanban_progress",
21576
21630
  "Report what you're doing RIGHT NOW on a kanban item. Overwrites a single live status line (the Step row on the Slack progress card the requester is watching) \u2014 not a log. Call it at the start of each phase of a long task (ideally ~every minute) so the requester can watch the work move. Each call also renews the task heartbeat. Pass an empty step to clear it.",
@@ -22556,6 +22610,7 @@ var LOCAL_TOOL_NAMES = /* @__PURE__ */ new Set([
22556
22610
  "kanban_add",
22557
22611
  "kanban_move",
22558
22612
  "kanban_update",
22613
+ "kanban_log",
22559
22614
  "kanban_progress",
22560
22615
  "kanban_done",
22561
22616
  "status_standup",
@@ -25,8 +25,8 @@ import {
25
25
  takeZombieDetection,
26
26
  writeDirectChatSessionState,
27
27
  writePersistentClaudeWrapper
28
- } from "./chunk-36O7GO5B.js";
29
- import "./chunk-Z2BMTZQK.js";
28
+ } from "./chunk-AB57D3NN.js";
29
+ import "./chunk-PXMYLQWB.js";
30
30
  import "./chunk-XWVM4KPK.js";
31
31
  export {
32
32
  SEND_KEYS_ENTER_DELAY_MS,
@@ -56,4 +56,4 @@ export {
56
56
  writeDirectChatSessionState,
57
57
  writePersistentClaudeWrapper
58
58
  };
59
- //# sourceMappingURL=persistent-session-JCVHOC2Q.js.map
59
+ //# sourceMappingURL=persistent-session-VKRJVW7A.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-36O7GO5B.js";
4
- import "./chunk-Z2BMTZQK.js";
3
+ } from "./chunk-AB57D3NN.js";
4
+ import "./chunk-PXMYLQWB.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -250,4 +250,4 @@ export {
250
250
  parkPendingInbound,
251
251
  readAndResetChannelDeflections
252
252
  };
253
- //# sourceMappingURL=responsiveness-probe-OTYU6IER.js.map
253
+ //# sourceMappingURL=responsiveness-probe-2VTHIPLG.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.72",
3
+ "version": "0.28.74",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {