@integrity-labs/agt-cli 0.28.284 → 0.28.286

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-MIA4XYG4.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-VUHRDURH.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-2VTCDNBY.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-5TLP7YBB.js.map
@@ -38,7 +38,7 @@ import {
38
38
  requireHost,
39
39
  safeWriteJsonAtomic,
40
40
  setConfigHash
41
- } from "../chunk-6Y7K5FLO.js";
41
+ } from "../chunk-4WRAUNC4.js";
42
42
  import {
43
43
  getProjectDir as getProjectDir2,
44
44
  getReadyTasks,
@@ -125,7 +125,7 @@ import {
125
125
  takeZombieDetection,
126
126
  transcriptActivityAgeSeconds,
127
127
  writeEgressAllowlist
128
- } from "../chunk-TZKHPDOH.js";
128
+ } from "../chunk-HI7TA73T.js";
129
129
  import {
130
130
  reapOrphanChannelMcps
131
131
  } from "../chunk-XWVM4KPK.js";
@@ -4502,7 +4502,12 @@ async function startRun(opts) {
4502
4502
  "/host/runs/start",
4503
4503
  opts
4504
4504
  );
4505
- return { run_id: res.run_id ?? null, kanban_item_id: res.kanban_item_id ?? null };
4505
+ return {
4506
+ run_id: res.run_id ?? null,
4507
+ kanban_item_id: res.kanban_item_id ?? null,
4508
+ deduped: res.deduped ?? false,
4509
+ existing_kanban_item_id: res.existing_kanban_item_id ?? null
4510
+ };
4506
4511
  } catch (err) {
4507
4512
  const errText = err instanceof Error ? err.message : String(err);
4508
4513
  const errId = createHash8("sha256").update(errText).digest("hex").slice(0, 12);
@@ -4936,7 +4941,7 @@ async function routeScheduledTaskViaKanban(codeName, agentId, task, prompt) {
4936
4941
  const priorRuns = await fetchPriorScheduledRuns(agentId, task.taskId);
4937
4942
  const contextBlocks = buildScheduledTaskContextBlocks({ priorRuns, timezone: task.timezone });
4938
4943
  const cardDescription = contextBlocks + (TOOL_DELIVERED_TEMPLATES.has(task.templateId) ? prompt + SCHEDULED_CARD_TOOL_DELIVERY_INSTRUCTION : PLAN_TEMPLATES.has(task.templateId) ? prompt + SCHEDULED_CARD_PLAN_INSTRUCTION : prompt + SCHEDULED_CARD_DELIVERY_CONTRACT);
4939
- const { run_id, kanban_item_id } = await startRun({
4944
+ const { run_id, kanban_item_id, deduped, existing_kanban_item_id } = await startRun({
4940
4945
  agent_id: agentId,
4941
4946
  source_type: "scheduled_task",
4942
4947
  source_ref: task.taskId,
@@ -4949,6 +4954,10 @@ async function routeScheduledTaskViaKanban(codeName, agentId, task, prompt) {
4949
4954
  ...deriveScheduledTaskNotify(task)
4950
4955
  }
4951
4956
  });
4957
+ if (deduped) {
4958
+ log(`[scheduled-kanban] Skipped task '${task.name}' for '${codeName}' \u2014 an open card (${existing_kanban_item_id ?? "unknown"}) already exists for this scheduled task; not re-materialising`);
4959
+ return true;
4960
+ }
4952
4961
  if (!run_id || !kanban_item_id) {
4953
4962
  log(`[scheduled-kanban] materialise incomplete for task '${task.name}' on '${codeName}' (run_id=${run_id ? "ok" : "null"}, card=${kanban_item_id ? "ok" : "null"}) \u2014 falling back to claude -p`);
4954
4963
  if (run_id) void finishRun(run_id, "failed", { outcomeMessage: "kanban materialise incomplete", completeKanbanItemId: kanban_item_id });
@@ -6886,7 +6895,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
6886
6895
  var lastVersionCheckAt = 0;
6887
6896
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
6888
6897
  var lastResponsivenessProbeAt = 0;
6889
- var agtCliVersion = true ? "0.28.284" : "dev";
6898
+ var agtCliVersion = true ? "0.28.286" : "dev";
6890
6899
  function resolveBrewPath(execFileSync2) {
6891
6900
  try {
6892
6901
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -7739,7 +7748,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
7739
7748
  if (codeNames.length === 0) return;
7740
7749
  void (async () => {
7741
7750
  try {
7742
- const { collectDiagnostics } = await import("../persistent-session-MIA4XYG4.js");
7751
+ const { collectDiagnostics } = await import("../persistent-session-VUHRDURH.js");
7743
7752
  await api.post("/host/heartbeat", {
7744
7753
  host_id: hostId,
7745
7754
  agent_diagnostics: collectDiagnostics(codeNames)
@@ -7837,7 +7846,7 @@ async function pollCycle() {
7837
7846
  }
7838
7847
  try {
7839
7848
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
7840
- const { collectDiagnostics } = await import("../persistent-session-MIA4XYG4.js");
7849
+ const { collectDiagnostics } = await import("../persistent-session-VUHRDURH.js");
7841
7850
  const diagCodeNames = [...agentState.persistentSessionAgents];
7842
7851
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
7843
7852
  let tailscaleHostname;
@@ -7985,7 +7994,7 @@ async function pollCycle() {
7985
7994
  const {
7986
7995
  collectResponsivenessProbes,
7987
7996
  getResponsivenessIntervalMs
7988
- } = await import("../responsiveness-probe-C4OMAIZQ.js");
7997
+ } = await import("../responsiveness-probe-RVFNE2EV.js");
7989
7998
  const probeIntervalMs = getResponsivenessIntervalMs();
7990
7999
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
7991
8000
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -8017,7 +8026,7 @@ async function pollCycle() {
8017
8026
  collectResponsivenessProbes,
8018
8027
  livePendingInboundOldestAgeSeconds,
8019
8028
  parkPendingInbound
8020
- } = await import("../responsiveness-probe-C4OMAIZQ.js");
8029
+ } = await import("../responsiveness-probe-RVFNE2EV.js");
8021
8030
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
8022
8031
  const wedgeNow = /* @__PURE__ */ new Date();
8023
8032
  const liveAgents = agentState.persistentSessionAgents;
@@ -10937,7 +10946,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
10937
10946
  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}`));
10938
10947
  void (async () => {
10939
10948
  try {
10940
- const { collectDiagnostics } = await import("../persistent-session-MIA4XYG4.js");
10949
+ const { collectDiagnostics } = await import("../persistent-session-VUHRDURH.js");
10941
10950
  await api.post("/host/heartbeat", {
10942
10951
  host_id: hostId,
10943
10952
  agent_diagnostics: collectDiagnostics([codeName])
@@ -10987,7 +10996,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
10987
10996
  }
10988
10997
  try {
10989
10998
  const hostId = await getHostId();
10990
- const { collectDiagnostics } = await import("../persistent-session-MIA4XYG4.js");
10999
+ const { collectDiagnostics } = await import("../persistent-session-VUHRDURH.js");
10991
11000
  await api.post("/host/heartbeat", {
10992
11001
  host_id: hostId,
10993
11002
  agent_diagnostics: collectDiagnostics([codeName])
@@ -11391,7 +11400,7 @@ async function processClaudePairSessions(agents) {
11391
11400
  killPairSession,
11392
11401
  pairTmuxSession,
11393
11402
  finalizeClaudePairOnboarding
11394
- } = await import("../claude-pair-runtime-2VTCDNBY.js");
11403
+ } = await import("../claude-pair-runtime-5TLP7YBB.js");
11395
11404
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
11396
11405
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
11397
11406
  const killed = await killPairSession(pairTmuxSession(pairId));