@integrity-labs/agt-cli 0.28.348 → 0.28.350

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-G22EFMQM.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-CBWLRSM5.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-LGKYHBI2.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-FCW6HWAR.js.map
@@ -46,7 +46,7 @@ import {
46
46
  resolveEffectivePinRaw,
47
47
  safeWriteJsonAtomic,
48
48
  setConfigHash
49
- } from "../chunk-3ME4JXUG.js";
49
+ } from "../chunk-LM2RJRAT.js";
50
50
  import {
51
51
  getProjectDir as getProjectDir2,
52
52
  getReadyTasks,
@@ -137,7 +137,7 @@ import {
137
137
  takeZombieDetection,
138
138
  transcriptActivityAgeSeconds,
139
139
  writeEgressAllowlist
140
- } from "../chunk-ZGY4ADGS.js";
140
+ } from "../chunk-EUDBJHMA.js";
141
141
  import {
142
142
  reapOrphanChannelMcps
143
143
  } from "../chunk-XWVM4KPK.js";
@@ -5350,13 +5350,13 @@ async function routeScheduledTaskViaKanban(codeName, agentId, task, prompt) {
5350
5350
  const suppressionTeaching = (task.deliveryPolicy ?? "always") === "conditional" ? `THIS task is CONDITIONAL: quiet runs stay SILENT automatically. Write your findings on the card and mark it done \u2014 if nothing met the user's criteria, NOTHING will be sent (no flag needed). If something DID meet the criteria and the user must be told, call kanban_done with suppress_delivery: false AND delivery_reason naming the concrete trigger that fired (e.g. "urgent email from the CEO", "CI failing on main"); a vacuous reason like "status check" or "all clear" is rejected and stays silent. That explicit, justified assert is the ONLY way this result reaches the user.
5351
5351
  ` : `If \u2014 and ONLY if \u2014 the task description contains explicit opt-out wording the user typed (e.g. "DO NOT notify me unless urgent", "only if X", "stay silent unless \u2026") and that condition is NOT met this run, call kanban_done with suppress_delivery: true \u2014 your result stays on the card but will NOT be messaged to the user. That is how you honor the user's do-not-notify instruction: a "nothing urgent" result without the flag would still be DELIVERED as a message. A report with zero items is only a valid deliverable when the task asks for a digest WITHOUT opt-out wording \u2014 when in doubt, deliver.
5352
5352
  `;
5353
- const nudge = TOOL_DELIVERED_TEMPLATES.has(task.templateId) ? `You have a new scheduled task on your kanban board: id=${kanban_item_id} title=${JSON.stringify(task.name)}. Call kanban_move("${kanban_item_id}", "in_progress"), then do the work described on the card. This task DELIVERS VIA A TOOL, not the card: you MUST call the tool the task specifies \u2014 for the weekly performance review that is submit_performance_review \u2014 to actually deliver it. Writing a summary to the card does NOT send anything and is NOT a substitute for the tool call. After the tool call, note briefly on the card what you sent and mark it done.
5354
- ` + formatRunMarker(run_id) : `You have a new scheduled task on your kanban board: id=${kanban_item_id} title=${JSON.stringify(task.name)}. Call kanban_move("${kanban_item_id}", "in_progress"), do the work described on the card, then write the finished result onto the card and mark it done. Do NOT send, post, or message the result to anyone yourself \u2014 the result you write on the card IS the message that will be delivered to the user; delivery happens automatically from the card.
5353
+ const nudge = TOOL_DELIVERED_TEMPLATES.has(task.templateId) ? `A scheduled task just fired and it is now a card on YOUR board that YOU work. The schedule only controls WHEN this card arrives, not who executes it: nothing else runs it for you, so do the work yourself now. Card: id=${kanban_item_id} title=${JSON.stringify(task.name)}. Call kanban_move("${kanban_item_id}", "in_progress"), then do the work described on the card. This task DELIVERS VIA A TOOL, not the card: you MUST call the tool the task specifies \u2014 for the weekly performance review that is submit_performance_review \u2014 to actually deliver it. Writing a summary to the card does NOT send anything and is NOT a substitute for the tool call. After the tool call, note briefly on the card what you sent and mark it done.
5354
+ ` + formatRunMarker(run_id) : `A scheduled task just fired and it is now a card on YOUR board that YOU work. The schedule only controls WHEN this card arrives, not who executes it: nothing else runs it for you, so do the work yourself now. Card: id=${kanban_item_id} title=${JSON.stringify(task.name)}. Call kanban_move("${kanban_item_id}", "in_progress"), do the work described on the card, then write the finished result onto the card and mark it done. Do NOT send, post, or message the result to anyone yourself \u2014 the result you write on the card IS the message that will be delivered to the user; delivery happens automatically from the card.
5355
5355
  ` + suppressionTeaching + formatRunMarker(run_id);
5356
5356
  stampScheduledTurnMarker(codeName, task.taskId, resolveScheduledSlackTarget(task));
5357
5357
  let injectStatus;
5358
5358
  try {
5359
- injectStatus = await injectMessageWithStatus(codeName, "task", nudge, { task_name: "scheduled-task" }, log);
5359
+ injectStatus = await injectMessageWithStatus(codeName, "task", nudge, { task_name: "scheduled-task-do-now" }, log);
5360
5360
  } catch (err) {
5361
5361
  log(`[scheduled-kanban] nudge injection threw for task '${task.name}' on '${codeName}': ${err.message} \u2014 closing card + falling back to claude -p`);
5362
5362
  void finishRun(run_id, "failed", { outcomeMessage: "scheduled-task nudge delivery threw", completeKanbanItemId: kanban_item_id });
@@ -9303,7 +9303,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
9303
9303
  var lastVersionCheckAt = 0;
9304
9304
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
9305
9305
  var lastResponsivenessProbeAt = 0;
9306
- var agtCliVersion = true ? "0.28.348" : "dev";
9306
+ var agtCliVersion = true ? "0.28.350" : "dev";
9307
9307
  function resolveBrewPath(execFileSync2) {
9308
9308
  try {
9309
9309
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -10268,7 +10268,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
10268
10268
  if (codeNames.length === 0) return;
10269
10269
  void (async () => {
10270
10270
  try {
10271
- const { collectDiagnostics } = await import("../persistent-session-G22EFMQM.js");
10271
+ const { collectDiagnostics } = await import("../persistent-session-CBWLRSM5.js");
10272
10272
  await api.post("/host/heartbeat", {
10273
10273
  host_id: hostId,
10274
10274
  agent_diagnostics: collectDiagnostics(codeNames)
@@ -10367,7 +10367,7 @@ async function pollCycle() {
10367
10367
  }
10368
10368
  try {
10369
10369
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
10370
- const { collectDiagnostics } = await import("../persistent-session-G22EFMQM.js");
10370
+ const { collectDiagnostics } = await import("../persistent-session-CBWLRSM5.js");
10371
10371
  const diagCodeNames = [...agentState.persistentSessionAgents];
10372
10372
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
10373
10373
  let tailscaleHostname;
@@ -10522,7 +10522,7 @@ async function pollCycle() {
10522
10522
  const {
10523
10523
  collectResponsivenessProbes,
10524
10524
  getResponsivenessIntervalMs
10525
- } = await import("../responsiveness-probe-HXZFFAGD.js");
10525
+ } = await import("../responsiveness-probe-56WUFX3U.js");
10526
10526
  const probeIntervalMs = getResponsivenessIntervalMs();
10527
10527
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
10528
10528
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -10554,7 +10554,7 @@ async function pollCycle() {
10554
10554
  collectResponsivenessProbes,
10555
10555
  livePendingInboundOldestAgeSeconds,
10556
10556
  parkPendingInbound
10557
- } = await import("../responsiveness-probe-HXZFFAGD.js");
10557
+ } = await import("../responsiveness-probe-56WUFX3U.js");
10558
10558
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-HYOOQV4A.js");
10559
10559
  const wedgeNow = /* @__PURE__ */ new Date();
10560
10560
  const liveAgents = agentState.persistentSessionAgents;
@@ -13668,7 +13668,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
13668
13668
  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}`));
13669
13669
  void (async () => {
13670
13670
  try {
13671
- const { collectDiagnostics } = await import("../persistent-session-G22EFMQM.js");
13671
+ const { collectDiagnostics } = await import("../persistent-session-CBWLRSM5.js");
13672
13672
  await api.post("/host/heartbeat", {
13673
13673
  host_id: hostId,
13674
13674
  agent_diagnostics: collectDiagnostics([codeName])
@@ -13718,7 +13718,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
13718
13718
  }
13719
13719
  try {
13720
13720
  const hostId = await getHostId();
13721
- const { collectDiagnostics } = await import("../persistent-session-G22EFMQM.js");
13721
+ const { collectDiagnostics } = await import("../persistent-session-CBWLRSM5.js");
13722
13722
  await api.post("/host/heartbeat", {
13723
13723
  host_id: hostId,
13724
13724
  agent_diagnostics: collectDiagnostics([codeName])
@@ -14216,7 +14216,7 @@ async function processClaudePairSessions(agents) {
14216
14216
  killPairSession,
14217
14217
  pairTmuxSession,
14218
14218
  finalizeClaudePairOnboarding
14219
- } = await import("../claude-pair-runtime-LGKYHBI2.js");
14219
+ } = await import("../claude-pair-runtime-FCW6HWAR.js");
14220
14220
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
14221
14221
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
14222
14222
  const killed = await killPairSession(pairTmuxSession(pairId));