@integrity-labs/agt-cli 0.28.148 → 0.28.149

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
@@ -37,7 +37,7 @@ import {
37
37
  success,
38
38
  table,
39
39
  warn
40
- } from "../chunk-LCEI5TTS.js";
40
+ } from "../chunk-A4S52T2C.js";
41
41
  import {
42
42
  CHANNEL_REGISTRY,
43
43
  DEPLOYMENT_TEMPLATES,
@@ -64,7 +64,7 @@ import {
64
64
  renderTemplate,
65
65
  resolveChannels,
66
66
  serializeManifestForSlackCli
67
- } from "../chunk-XZGF45BJ.js";
67
+ } from "../chunk-5AIF4FOP.js";
68
68
 
69
69
  // src/bin/agt.ts
70
70
  import { join as join22 } from "path";
@@ -4777,7 +4777,7 @@ import { execFileSync, execSync } from "child_process";
4777
4777
  import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
4778
4778
  import chalk18 from "chalk";
4779
4779
  import ora16 from "ora";
4780
- var cliVersion = true ? "0.28.148" : "dev";
4780
+ var cliVersion = true ? "0.28.149" : "dev";
4781
4781
  async function fetchLatestVersion() {
4782
4782
  const host2 = getHost();
4783
4783
  if (!host2) return null;
@@ -5791,7 +5791,7 @@ function handleError(err) {
5791
5791
  }
5792
5792
 
5793
5793
  // src/bin/agt.ts
5794
- var cliVersion2 = true ? "0.28.148" : "dev";
5794
+ var cliVersion2 = true ? "0.28.149" : "dev";
5795
5795
  var program = new Command();
5796
5796
  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");
5797
5797
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -6094,6 +6094,7 @@ export {
6094
6094
  detectDrift,
6095
6095
  SUPPRESS_SENTINEL,
6096
6096
  classifyOutput,
6097
+ isVacuousDeliverReason,
6097
6098
  parseDeliverAssertion,
6098
6099
  parseUsageBanner,
6099
6100
  formatRunMarker,
@@ -6113,4 +6114,4 @@ export {
6113
6114
  parseEnvIntegrations,
6114
6115
  probeMcpEnvSubstitution
6115
6116
  };
6116
- //# sourceMappingURL=chunk-XZGF45BJ.js.map
6117
+ //# sourceMappingURL=chunk-5AIF4FOP.js.map
@@ -22,7 +22,7 @@ import {
22
22
  resolveConnectivityProbe,
23
23
  worseConnectivityOutcome,
24
24
  wrapScheduledTaskPrompt
25
- } from "./chunk-XZGF45BJ.js";
25
+ } from "./chunk-5AIF4FOP.js";
26
26
 
27
27
  // ../../packages/core/dist/integrations/registry.js
28
28
  var INTEGRATION_REGISTRY = [
@@ -7814,7 +7814,7 @@ function requireHost() {
7814
7814
  }
7815
7815
 
7816
7816
  // src/lib/api-client.ts
7817
- var agtCliVersion = true ? "0.28.148" : "dev";
7817
+ var agtCliVersion = true ? "0.28.149" : "dev";
7818
7818
  var lastConfigHash = null;
7819
7819
  function setConfigHash(hash) {
7820
7820
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -9111,4 +9111,4 @@ export {
9111
9111
  managerInstallSystemUnitCommand,
9112
9112
  managerUninstallSystemUnitCommand
9113
9113
  };
9114
- //# sourceMappingURL=chunk-LCEI5TTS.js.map
9114
+ //# sourceMappingURL=chunk-A4S52T2C.js.map
@@ -3,7 +3,7 @@ import {
3
3
  formatMissingVar,
4
4
  isClaudeFastMode,
5
5
  probeMcpEnvSubstitution
6
- } from "./chunk-XZGF45BJ.js";
6
+ } from "./chunk-5AIF4FOP.js";
7
7
  import {
8
8
  reapOrphanChannelMcps
9
9
  } from "./chunk-XWVM4KPK.js";
@@ -1590,4 +1590,4 @@ export {
1590
1590
  stopAllSessionsAndWait,
1591
1591
  getProjectDir
1592
1592
  };
1593
- //# sourceMappingURL=chunk-6BJVRM6Y.js.map
1593
+ //# sourceMappingURL=chunk-SVF454L3.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-IRXYCR5Q.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-IMMJEVRD.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-AXBFPLBA.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-OU4ROYH4.js.map
@@ -28,7 +28,7 @@ import {
28
28
  requireHost,
29
29
  safeWriteJsonAtomic,
30
30
  setConfigHash
31
- } from "../chunk-LCEI5TTS.js";
31
+ } from "../chunk-A4S52T2C.js";
32
32
  import {
33
33
  getProjectDir as getProjectDir2,
34
34
  getReadyTasks,
@@ -72,7 +72,7 @@ import {
72
72
  takeZombieDetection,
73
73
  transcriptActivityAgeSeconds,
74
74
  writeEgressAllowlist
75
- } from "../chunk-6BJVRM6Y.js";
75
+ } from "../chunk-SVF454L3.js";
76
76
  import {
77
77
  FLAGS_SCHEMA_VERSION,
78
78
  FLAG_REGISTRY,
@@ -98,6 +98,7 @@ import {
98
98
  isResolveError,
99
99
  isSelfCompletion,
100
100
  isUnsetTimezone,
101
+ isVacuousDeliverReason,
101
102
  laneTagFragment,
102
103
  parseDeliverAssertion,
103
104
  parseDeliveryTarget,
@@ -111,7 +112,7 @@ import {
111
112
  resolveDmTarget,
112
113
  sumTranscriptUsageInWindow,
113
114
  wrapScheduledTaskPrompt
114
- } from "../chunk-XZGF45BJ.js";
115
+ } from "../chunk-5AIF4FOP.js";
115
116
  import {
116
117
  parsePsRows,
117
118
  reapOrphanChannelMcps
@@ -5145,9 +5146,10 @@ async function deliverScheduledCardResult(codeName, agentId, cardId, completedBy
5145
5146
  return "terminal";
5146
5147
  }
5147
5148
  const deliveryPolicy = task.deliveryPolicy ?? "always";
5148
- if (deliveryPolicy === "never" || deliveryPolicy === "conditional" && card.suppress_delivery !== false) {
5149
+ const vacuousAssertion = deliveryPolicy === "conditional" && card.suppress_delivery === false && card.delivery_reason !== void 0 && isVacuousDeliverReason(card.delivery_reason);
5150
+ if (deliveryPolicy === "never" || deliveryPolicy === "conditional" && card.suppress_delivery !== false || vacuousAssertion) {
5149
5151
  log(
5150
- `[scheduled-kanban] Suppressed by delivery_policy=${deliveryPolicy} for card ${cardId} (task '${task.name}') on '${codeName}' \u2014 result recorded on the card only (tombstone)`
5152
+ `[scheduled-kanban] Suppressed by delivery_policy=${deliveryPolicy}` + (vacuousAssertion ? " (asserted delivery but reason was vacuous/empty)" : "") + ` for card ${cardId} (task '${task.name}') on '${codeName}' - result recorded on the card only (tombstone)`
5151
5153
  );
5152
5154
  if (task.deliveryMode === "announce" && task.deliveryTo) {
5153
5155
  await reportDeliveryStatus(agentId, task.taskId, {
@@ -5237,7 +5239,7 @@ async function routeScheduledTaskViaKanban(codeName, agentId, task, prompt) {
5237
5239
  if (run_id) void finishRun(run_id, "failed", { outcomeMessage: "kanban materialise incomplete", completeKanbanItemId: kanban_item_id });
5238
5240
  return false;
5239
5241
  }
5240
- 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 \u2014 that explicit assert is the ONLY way this result reaches the user.
5242
+ 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.
5241
5243
  ` : `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.
5242
5244
  `;
5243
5245
  const nudge = `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.
@@ -7122,7 +7124,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
7122
7124
  var lastVersionCheckAt = 0;
7123
7125
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
7124
7126
  var lastResponsivenessProbeAt = 0;
7125
- var agtCliVersion = true ? "0.28.148" : "dev";
7127
+ var agtCliVersion = true ? "0.28.149" : "dev";
7126
7128
  function resolveBrewPath(execFileSync4) {
7127
7129
  try {
7128
7130
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -8255,7 +8257,7 @@ async function pollCycle() {
8255
8257
  }
8256
8258
  try {
8257
8259
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
8258
- const { collectDiagnostics } = await import("../persistent-session-IRXYCR5Q.js");
8260
+ const { collectDiagnostics } = await import("../persistent-session-IMMJEVRD.js");
8259
8261
  const diagCodeNames = [...agentState.persistentSessionAgents];
8260
8262
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
8261
8263
  let tailscaleHostname;
@@ -8403,7 +8405,7 @@ async function pollCycle() {
8403
8405
  const {
8404
8406
  collectResponsivenessProbes,
8405
8407
  getResponsivenessIntervalMs
8406
- } = await import("../responsiveness-probe-VVDZTLJS.js");
8408
+ } = await import("../responsiveness-probe-Z2GD24QE.js");
8407
8409
  const probeIntervalMs = getResponsivenessIntervalMs();
8408
8410
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
8409
8411
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -8435,7 +8437,7 @@ async function pollCycle() {
8435
8437
  collectResponsivenessProbes,
8436
8438
  livePendingInboundOldestAgeSeconds,
8437
8439
  parkPendingInbound
8438
- } = await import("../responsiveness-probe-VVDZTLJS.js");
8440
+ } = await import("../responsiveness-probe-Z2GD24QE.js");
8439
8441
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
8440
8442
  const wedgeNow = /* @__PURE__ */ new Date();
8441
8443
  const liveAgents = agentState.persistentSessionAgents;
@@ -12028,7 +12030,7 @@ async function processClaudePairSessions(agents) {
12028
12030
  killPairSession,
12029
12031
  pairTmuxSession,
12030
12032
  finalizeClaudePairOnboarding
12031
- } = await import("../claude-pair-runtime-AXBFPLBA.js");
12033
+ } = await import("../claude-pair-runtime-OU4ROYH4.js");
12032
12034
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
12033
12035
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
12034
12036
  const killed = await killPairSession(pairTmuxSession(pairId));