@integrity-labs/agt-cli 0.28.563 → 0.28.564

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-UKV7Z7ZC.js";
43
+ } from "../chunk-WYZBXSRI.js";
44
44
  import {
45
45
  AnchorSessionClient,
46
46
  CHANNEL_REGISTRY,
@@ -71,7 +71,7 @@ import {
71
71
  requiredMcpWildcard,
72
72
  resolveChannels,
73
73
  serializeManifestForSlackCli
74
- } from "../chunk-37XH72RK.js";
74
+ } from "../chunk-TOGADVFR.js";
75
75
  import "../chunk-XWVM4KPK.js";
76
76
 
77
77
  // src/bin/agt.ts
@@ -4834,7 +4834,7 @@ import { execFileSync, execSync } from "child_process";
4834
4834
  import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
4835
4835
  import chalk18 from "chalk";
4836
4836
  import ora16 from "ora";
4837
- var cliVersion = true ? "0.28.563" : "dev";
4837
+ var cliVersion = true ? "0.28.564" : "dev";
4838
4838
  async function fetchLatestVersion() {
4839
4839
  const host2 = getHost();
4840
4840
  if (!host2) return null;
@@ -6009,7 +6009,7 @@ function handleError(err) {
6009
6009
  }
6010
6010
 
6011
6011
  // src/bin/agt.ts
6012
- var cliVersion2 = true ? "0.28.563" : "dev";
6012
+ var cliVersion2 = true ? "0.28.564" : "dev";
6013
6013
  var program = new Command();
6014
6014
  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");
6015
6015
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -15763,4 +15763,4 @@ export {
15763
15763
  stopAllSessionsAndWait,
15764
15764
  getProjectDir
15765
15765
  };
15766
- //# sourceMappingURL=chunk-37XH72RK.js.map
15766
+ //# sourceMappingURL=chunk-TOGADVFR.js.map
@@ -46,7 +46,7 @@ import {
46
46
  resolveConnectivityProbe,
47
47
  worseConnectivityOutcome,
48
48
  wrapScheduledTaskPrompt
49
- } from "./chunk-37XH72RK.js";
49
+ } from "./chunk-TOGADVFR.js";
50
50
  import {
51
51
  parsePsRows
52
52
  } from "./chunk-XWVM4KPK.js";
@@ -5646,7 +5646,7 @@ function exchangeFailureKind(err) {
5646
5646
  }
5647
5647
 
5648
5648
  // src/lib/api-client.ts
5649
- var agtCliVersion = true ? "0.28.563" : "dev";
5649
+ var agtCliVersion = true ? "0.28.564" : "dev";
5650
5650
  var lastConfigHash = null;
5651
5651
  function setConfigHash(hash) {
5652
5652
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -9011,4 +9011,4 @@ export {
9011
9011
  managerInstallSystemUnitCommand,
9012
9012
  managerUninstallSystemUnitCommand
9013
9013
  };
9014
- //# sourceMappingURL=chunk-UKV7Z7ZC.js.map
9014
+ //# sourceMappingURL=chunk-WYZBXSRI.js.map
@@ -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-VHCBKZAY.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-MLLLDI5U.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-G5WJEN6W.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-63Y4MIMU.js.map
@@ -53,7 +53,7 @@ import {
53
53
  safeWriteJsonAtomic,
54
54
  setConfigHash,
55
55
  tripClass
56
- } from "../chunk-UKV7Z7ZC.js";
56
+ } from "../chunk-WYZBXSRI.js";
57
57
  import {
58
58
  getProjectDir as getProjectDir2,
59
59
  getReadyTasks,
@@ -182,7 +182,7 @@ import {
182
182
  toOpencodeModel,
183
183
  transcriptActivityAgeSeconds,
184
184
  writeEgressAllowlist
185
- } from "../chunk-37XH72RK.js";
185
+ } from "../chunk-TOGADVFR.js";
186
186
  import {
187
187
  reapOrphanChannelMcps
188
188
  } from "../chunk-XWVM4KPK.js";
@@ -10583,7 +10583,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
10583
10583
  var lastVersionCheckAt = 0;
10584
10584
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
10585
10585
  var lastResponsivenessProbeAt = 0;
10586
- var agtCliVersion = true ? "0.28.563" : "dev";
10586
+ var agtCliVersion = true ? "0.28.564" : "dev";
10587
10587
  function resolveBrewPath(execFileSync2) {
10588
10588
  try {
10589
10589
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -11887,7 +11887,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
11887
11887
  if (codeNames.length === 0) return;
11888
11888
  void (async () => {
11889
11889
  try {
11890
- const { collectDiagnostics } = await import("../persistent-session-VHCBKZAY.js");
11890
+ const { collectDiagnostics } = await import("../persistent-session-MLLLDI5U.js");
11891
11891
  await api.post("/host/heartbeat", {
11892
11892
  host_id: hostId,
11893
11893
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor)
@@ -11995,7 +11995,7 @@ async function pollCycle() {
11995
11995
  }
11996
11996
  try {
11997
11997
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
11998
- const { collectDiagnostics } = await import("../persistent-session-VHCBKZAY.js");
11998
+ const { collectDiagnostics } = await import("../persistent-session-MLLLDI5U.js");
11999
11999
  const diagCodeNames = [...agentState.persistentSessionAgents];
12000
12000
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor) : void 0;
12001
12001
  let tailscaleHostname;
@@ -12118,7 +12118,7 @@ async function pollCycle() {
12118
12118
  collectPanelessActivityProbes,
12119
12119
  getResponsivenessIntervalMs,
12120
12120
  occupancyQualificationClassifications
12121
- } = await import("../responsiveness-probe-BWN35KUV.js");
12121
+ } = await import("../responsiveness-probe-QMAIFW4P.js");
12122
12122
  const probeIntervalMs = getResponsivenessIntervalMs();
12123
12123
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
12124
12124
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -12209,7 +12209,7 @@ async function pollCycle() {
12209
12209
  collectResponsivenessProbes,
12210
12210
  livePendingInboundOldestAgeSeconds,
12211
12211
  parkPendingInbound
12212
- } = await import("../responsiveness-probe-BWN35KUV.js");
12212
+ } = await import("../responsiveness-probe-QMAIFW4P.js");
12213
12213
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
12214
12214
  const wedgeNow = /* @__PURE__ */ new Date();
12215
12215
  const liveAgents = agentState.persistentSessionAgents;
@@ -14793,15 +14793,22 @@ async function processAgent(agent, agentStates) {
14793
14793
  lastWorkTriggerAt.set(agent.code_name, triggerTs);
14794
14794
  if (agentFw === "claude-code") {
14795
14795
  if (sessionMode === "persistent") {
14796
- if (isSessionHealthy(agent.code_name)) {
14797
- const todayItem = boardItems.find((b) => b.status === "todo");
14798
- const triggerMessage = todayItem ? `New work triggered. Top item: id=${todayItem.id} title=${JSON.stringify(todayItem.title)} priority=${todayItem.priority}. Call kanban_move("${todayItem.id}", "in_progress") and start working \u2014 no need to kanban_list first.` : "New work triggered. Check your kanban board with kanban_list and pick up the next item.";
14799
- injectMessage(agent.code_name, "task", triggerMessage, {
14800
- task_name: "kanban-work-trigger"
14801
- }, log);
14802
- log(`[persistent-session] Work trigger injected for '${agent.code_name}'`);
14796
+ const actionableCount = boardItems.filter(
14797
+ (b) => KANBAN_NUDGE_ACTIONABLE_STATUSES.includes(b.status)
14798
+ ).length;
14799
+ const enqueued = await injectKanbanCheckViaDirectChat(
14800
+ agent.code_name,
14801
+ agent.agent_id,
14802
+ actionableCount
14803
+ );
14804
+ if (enqueued) {
14805
+ log(
14806
+ `[persistent-session] Work trigger enqueued on the durable rail for '${agent.code_name}' (${actionableCount} actionable card(s))`
14807
+ );
14803
14808
  } else {
14804
- log(`[persistent-session] Work trigger skipped for '${agent.code_name}' \u2014 session not yet healthy`);
14809
+ log(
14810
+ `[persistent-session] Work trigger enqueue FAILED for '${agent.code_name}' \u2014 hybrid nudge will retry`
14811
+ );
14805
14812
  }
14806
14813
  }
14807
14814
  }
@@ -15754,7 +15761,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
15754
15761
  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}`));
15755
15762
  void (async () => {
15756
15763
  try {
15757
- const { collectDiagnostics } = await import("../persistent-session-VHCBKZAY.js");
15764
+ const { collectDiagnostics } = await import("../persistent-session-MLLLDI5U.js");
15758
15765
  await api.post("/host/heartbeat", {
15759
15766
  host_id: hostId,
15760
15767
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
@@ -15804,7 +15811,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
15804
15811
  }
15805
15812
  try {
15806
15813
  const hostId = await getHostId();
15807
- const { collectDiagnostics } = await import("../persistent-session-VHCBKZAY.js");
15814
+ const { collectDiagnostics } = await import("../persistent-session-MLLLDI5U.js");
15808
15815
  await api.post("/host/heartbeat", {
15809
15816
  host_id: hostId,
15810
15817
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
@@ -15903,14 +15910,20 @@ function ensureRealtimeKanbanStarted(agentStates) {
15903
15910
  if (!agent) return;
15904
15911
  const agentFw = agentFrameworkCache.get(agent.codeName) ?? DEFAULT_FRAMEWORK;
15905
15912
  if (agentFw === "claude-code") {
15906
- if (isSessionHealthy(agent.codeName)) {
15907
- injectMessage(agent.codeName, "task", `New task added to your board: id=${item.id} title=${JSON.stringify(item.title)} priority=${item.priority}. Call kanban_move("${item.id}", "in_progress") and start working.`, {
15908
- task_name: "kanban-work-trigger"
15909
- }, log);
15910
- log(`[realtime] Injected kanban-work trigger for '${agent.codeName}': "${item.title}"`);
15911
- } else {
15912
- log(`[realtime] Work trigger skipped for '${agent.codeName}' \u2014 session not yet healthy; hybrid will pick up "${item.title}"`);
15913
- }
15913
+ void injectKanbanCheckViaDirectChat(agent.codeName, agent.agentId, 1).then((enqueued) => {
15914
+ if (enqueued) {
15915
+ log(`[realtime] Enqueued kanban-work trigger for '${agent.codeName}' item_id=${item.id}`);
15916
+ } else {
15917
+ log(
15918
+ `[realtime] Work trigger enqueue FAILED for '${agent.codeName}' item_id=${item.id} \u2014 hybrid nudge will retry`
15919
+ );
15920
+ }
15921
+ }).catch((err) => {
15922
+ const errId = createHash16("sha256").update(err instanceof Error ? err.message : String(err)).digest("hex").slice(0, 12);
15923
+ log(
15924
+ `[realtime] Work trigger enqueue threw for '${agent.codeName}' item_id=${item.id} error_id=${errId} \u2014 hybrid nudge will retry`
15925
+ );
15926
+ });
15914
15927
  }
15915
15928
  },
15916
15929
  // ENG-4507: kanban completion notification — surfaces user-driven
@@ -16376,7 +16389,7 @@ async function processClaudePairSessions(agents) {
16376
16389
  killPairSession,
16377
16390
  pairTmuxSession,
16378
16391
  finalizeClaudePairOnboarding
16379
- } = await import("../claude-pair-runtime-G5WJEN6W.js");
16392
+ } = await import("../claude-pair-runtime-63Y4MIMU.js");
16380
16393
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
16381
16394
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
16382
16395
  const killed = await killPairSession(pairTmuxSession(pairId));