@integrity-labs/agt-cli 0.28.38 → 0.28.39

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-27Q5QJF6.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-CFELQZI7.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-64KMVLCZ.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-LOL5YGXP.js.map
@@ -23,7 +23,7 @@ import {
23
23
  requireHost,
24
24
  safeWriteJsonAtomic,
25
25
  setConfigHash
26
- } from "../chunk-IJT4B5PH.js";
26
+ } from "../chunk-AL7UJNNI.js";
27
27
  import {
28
28
  getProjectDir as getProjectDir2,
29
29
  getReadyTasks,
@@ -65,7 +65,7 @@ import {
65
65
  takeWatchdogGiveUpCount,
66
66
  takeZombieDetection,
67
67
  transcriptActivityAgeSeconds
68
- } from "../chunk-2V5QUET6.js";
68
+ } from "../chunk-57MHPANB.js";
69
69
  import {
70
70
  FLAGS_SCHEMA_VERSION,
71
71
  FLAG_REGISTRY,
@@ -99,7 +99,7 @@ import {
99
99
  sumTranscriptUsageInWindow,
100
100
  worseConnectivityOutcome,
101
101
  wrapScheduledTaskPrompt
102
- } from "../chunk-RYB5QSVS.js";
102
+ } from "../chunk-X5E2Q3W2.js";
103
103
  import {
104
104
  parsePsRows,
105
105
  reapOrphanChannelMcps
@@ -4855,12 +4855,17 @@ async function deliverScheduledCardResult(codeName, agentId, cardId) {
4855
4855
  markScheduledCardDeliveryComplete(cardId);
4856
4856
  return "delivered";
4857
4857
  }
4858
- await processClaudeTaskResult(codeName, agentId, task.templateId, card.result ?? "", {
4858
+ const outcome = await processClaudeTaskResult(codeName, agentId, task.templateId, card.result ?? "", {
4859
4859
  mode: task.deliveryMode,
4860
4860
  channel: task.deliveryChannel,
4861
4861
  to: task.deliveryTo,
4862
4862
  taskId: task.taskId
4863
4863
  });
4864
+ if (!outcome.ok) {
4865
+ releaseScheduledCardDelivery(cardId);
4866
+ log(`[scheduled-kanban] delivery: result post failed for card ${cardId} (task '${task.name}') on '${codeName}': ${outcome.error} \u2014 will retry`);
4867
+ return "retry";
4868
+ }
4864
4869
  markScheduledCardDeliveryComplete(cardId);
4865
4870
  log(`[scheduled-kanban] Delivered result from card ${cardId} (task '${task.name}') for '${codeName}'`);
4866
4871
  return "delivered";
@@ -4975,7 +4980,7 @@ async function processClaudeTaskResult(codeName, agentId, templateId, rawOutput,
4975
4980
  error_code: "NO_CONTENT"
4976
4981
  });
4977
4982
  }
4978
- return;
4983
+ return { ok: true };
4979
4984
  }
4980
4985
  const output = classification.deliverable;
4981
4986
  if (classification.action === "strip") {
@@ -5023,8 +5028,11 @@ async function processClaudeTaskResult(codeName, agentId, templateId, rawOutput,
5023
5028
  delivery.taskId
5024
5029
  );
5025
5030
  }
5031
+ return { ok: true };
5026
5032
  } catch (err) {
5027
- log(`[claude-scheduler] Failed to post result for '${codeName}': ${err.message}`);
5033
+ const errMsg = err instanceof Error ? err.message : String(err);
5034
+ log(`[claude-scheduler] Failed to post result for '${codeName}': ${errMsg}`);
5035
+ return { ok: false, error: errMsg };
5028
5036
  }
5029
5037
  }
5030
5038
 
@@ -5109,7 +5117,7 @@ async function executeAndProcessClaudeTask(codeName, agentId, task, prompt) {
5109
5117
  let taskResult;
5110
5118
  sanitizeMcpJson(mcpConfigPath, requireHost());
5111
5119
  const priorRuns = await fetchPriorScheduledRuns(agentId, task.taskId);
5112
- prompt = wrapScheduledTaskPrompt(prompt, { priorRuns });
5120
+ prompt = wrapScheduledTaskPrompt(prompt, { priorRuns, timezone: task.timezone });
5113
5121
  try {
5114
5122
  const claudeMdPath = join14(projectDir, "CLAUDE.md");
5115
5123
  const serverNames = [];
@@ -5190,12 +5198,28 @@ async function executeAndProcessClaudeTask(codeName, agentId, task, prompt) {
5190
5198
  const output = stdout.trim();
5191
5199
  taskResult = output.slice(0, 4e3) || void 0;
5192
5200
  log(`[claude-scheduler] Task '${task.name}' completed for '${codeName}' (${output.length} chars): ${output.slice(0, 300)}`);
5193
- await processClaudeTaskResult(codeName, agentId, task.templateId, output, {
5201
+ const outcome = await processClaudeTaskResult(codeName, agentId, task.templateId, output, {
5194
5202
  mode: task.deliveryMode,
5195
5203
  channel: task.deliveryChannel,
5196
5204
  to: task.deliveryTo,
5197
5205
  taskId: task.taskId
5198
5206
  });
5207
+ if (!outcome.ok) {
5208
+ log(`[claude-scheduler] Task '${task.name}' result post failed for '${codeName}': ${outcome.error}`);
5209
+ if (runId) {
5210
+ try {
5211
+ await finishRun(runId, "failed", {
5212
+ outcomeMessage: outcome.error,
5213
+ completeKanbanItemId: kanbanItemId,
5214
+ result: taskResult
5215
+ });
5216
+ } catch {
5217
+ }
5218
+ }
5219
+ const failedUpdate = markTaskFired(codeName, task.taskId, "error");
5220
+ claudeSchedulerStates.set(codeName, failedUpdate);
5221
+ return;
5222
+ }
5199
5223
  if (runId) {
5200
5224
  await finishRun(runId, "completed", {
5201
5225
  metadata: { output_length: output.length },
@@ -5206,10 +5230,12 @@ async function executeAndProcessClaudeTask(codeName, agentId, task, prompt) {
5206
5230
  const updated = markTaskFired(codeName, task.taskId, "ok");
5207
5231
  claudeSchedulerStates.set(codeName, updated);
5208
5232
  if (task.scheduleKind === "at") {
5209
- api.post("/host/schedules/disable", { agent_id: agentId, task_id: task.taskId }).catch(
5210
- (err) => log(`[claude-scheduler] Failed to disable one-off task '${task.name}': ${err.message}`)
5211
- );
5212
- log(`[claude-scheduler] One-off task '${task.name}' fired and disabled for '${codeName}'`);
5233
+ try {
5234
+ await api.post("/host/schedules/disable", { agent_id: agentId, task_id: task.taskId });
5235
+ log(`[claude-scheduler] One-off task '${task.name}' fired and disabled for '${codeName}'`);
5236
+ } catch (err) {
5237
+ log(`[claude-scheduler] Failed to disable one-off task '${task.name}': ${err.message}`);
5238
+ }
5213
5239
  }
5214
5240
  } catch (err) {
5215
5241
  const errMsg = err instanceof Error ? err.message : String(err);
@@ -6807,7 +6833,7 @@ var cachedMaintenanceWindow = null;
6807
6833
  var lastVersionCheckAt = 0;
6808
6834
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
6809
6835
  var lastResponsivenessProbeAt = 0;
6810
- var agtCliVersion = true ? "0.28.38" : "dev";
6836
+ var agtCliVersion = true ? "0.28.39" : "dev";
6811
6837
  function resolveBrewPath(execFileSync4) {
6812
6838
  try {
6813
6839
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -7916,7 +7942,7 @@ async function pollCycle() {
7916
7942
  }
7917
7943
  try {
7918
7944
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
7919
- const { collectDiagnostics } = await import("../persistent-session-27Q5QJF6.js");
7945
+ const { collectDiagnostics } = await import("../persistent-session-CFELQZI7.js");
7920
7946
  const diagCodeNames = [...agentState.persistentSessionAgents];
7921
7947
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
7922
7948
  let tailscaleHostname;
@@ -8017,7 +8043,7 @@ async function pollCycle() {
8017
8043
  const {
8018
8044
  collectResponsivenessProbes,
8019
8045
  getResponsivenessIntervalMs
8020
- } = await import("../responsiveness-probe-G6LP7KSH.js");
8046
+ } = await import("../responsiveness-probe-YOT3EKKN.js");
8021
8047
  const probeIntervalMs = getResponsivenessIntervalMs();
8022
8048
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
8023
8049
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -8049,7 +8075,7 @@ async function pollCycle() {
8049
8075
  collectResponsivenessProbes,
8050
8076
  livePendingInboundOldestAgeSeconds,
8051
8077
  parkPendingInbound
8052
- } = await import("../responsiveness-probe-G6LP7KSH.js");
8078
+ } = await import("../responsiveness-probe-YOT3EKKN.js");
8053
8079
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
8054
8080
  const wedgeNow = /* @__PURE__ */ new Date();
8055
8081
  const liveAgents = agentState.persistentSessionAgents;
@@ -11453,7 +11479,7 @@ async function processClaudePairSessions(agents) {
11453
11479
  killPairSession,
11454
11480
  pairTmuxSession,
11455
11481
  finalizeClaudePairOnboarding
11456
- } = await import("../claude-pair-runtime-64KMVLCZ.js");
11482
+ } = await import("../claude-pair-runtime-LOL5YGXP.js");
11457
11483
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
11458
11484
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
11459
11485
  const killed = await killPairSession(pairTmuxSession(pairId));