@integrity-labs/agt-cli 0.27.106 → 0.27.107

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
@@ -28,7 +28,7 @@ import {
28
28
  success,
29
29
  table,
30
30
  warn
31
- } from "../chunk-4WI2ACNG.js";
31
+ } from "../chunk-KBN7SNAV.js";
32
32
  import {
33
33
  CHANNEL_REGISTRY,
34
34
  DEPLOYMENT_TEMPLATES,
@@ -54,7 +54,7 @@ import {
54
54
  renderTemplate,
55
55
  resolveChannels,
56
56
  serializeManifestForSlackCli
57
- } from "../chunk-GKRVSTYY.js";
57
+ } from "../chunk-BP4D3ZPJ.js";
58
58
 
59
59
  // src/bin/agt.ts
60
60
  import { join as join20 } from "path";
@@ -4934,7 +4934,7 @@ import { execFileSync, execSync } from "child_process";
4934
4934
  import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
4935
4935
  import chalk18 from "chalk";
4936
4936
  import ora16 from "ora";
4937
- var cliVersion = true ? "0.27.106" : "dev";
4937
+ var cliVersion = true ? "0.27.107" : "dev";
4938
4938
  async function fetchLatestVersion() {
4939
4939
  const host2 = getHost();
4940
4940
  if (!host2) return null;
@@ -5857,7 +5857,7 @@ function handleError(err) {
5857
5857
  }
5858
5858
 
5859
5859
  // src/bin/agt.ts
5860
- var cliVersion2 = true ? "0.27.106" : "dev";
5860
+ var cliVersion2 = true ? "0.27.107" : "dev";
5861
5861
  var program = new Command();
5862
5862
  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");
5863
5863
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -4285,4 +4285,4 @@ export {
4285
4285
  attributeTranscriptUsageByRun,
4286
4286
  KANBAN_CHECK_COMMAND
4287
4287
  };
4288
- //# sourceMappingURL=chunk-GKRVSTYY.js.map
4288
+ //# sourceMappingURL=chunk-BP4D3ZPJ.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  claudeModelAlias,
3
3
  isClaudeFastMode
4
- } from "./chunk-GKRVSTYY.js";
4
+ } from "./chunk-BP4D3ZPJ.js";
5
5
  import {
6
6
  reapOrphanChannelMcps
7
7
  } from "./chunk-XWVM4KPK.js";
@@ -1574,4 +1574,4 @@ export {
1574
1574
  stopAllSessionsAndWait,
1575
1575
  getProjectDir
1576
1576
  };
1577
- //# sourceMappingURL=chunk-SKKWVNUY.js.map
1577
+ //# sourceMappingURL=chunk-DFQ2EOHB.js.map
@@ -9,7 +9,7 @@ import {
9
9
  parseDeliveryTarget,
10
10
  registerFramework,
11
11
  wrapScheduledTaskPrompt
12
- } from "./chunk-GKRVSTYY.js";
12
+ } from "./chunk-BP4D3ZPJ.js";
13
13
 
14
14
  // ../../packages/core/dist/integrations/registry.js
15
15
  var INTEGRATION_REGISTRY = [
@@ -7586,4 +7586,4 @@ export {
7586
7586
  managerInstallSystemUnitCommand,
7587
7587
  managerUninstallSystemUnitCommand
7588
7588
  };
7589
- //# sourceMappingURL=chunk-4WI2ACNG.js.map
7589
+ //# sourceMappingURL=chunk-KBN7SNAV.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-4O56FXQX.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-HGR5D4DJ.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-Q4FKQLMQ.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-AI37D2CT.js.map
@@ -17,7 +17,7 @@ import {
17
17
  provisionStopHook,
18
18
  requireHost,
19
19
  safeWriteJsonAtomic
20
- } from "../chunk-4WI2ACNG.js";
20
+ } from "../chunk-KBN7SNAV.js";
21
21
  import {
22
22
  getProjectDir as getProjectDir2,
23
23
  getReadyTasks,
@@ -55,7 +55,7 @@ import {
55
55
  stopPersistentSession,
56
56
  takeWatchdogGiveUpCount,
57
57
  takeZombieDetection
58
- } from "../chunk-SKKWVNUY.js";
58
+ } from "../chunk-DFQ2EOHB.js";
59
59
  import {
60
60
  KANBAN_CHECK_COMMAND,
61
61
  SUPPRESS_SENTINEL,
@@ -79,7 +79,7 @@ import {
79
79
  resolveConnectivityProbe,
80
80
  resolveDmTarget,
81
81
  wrapScheduledTaskPrompt
82
- } from "../chunk-GKRVSTYY.js";
82
+ } from "../chunk-BP4D3ZPJ.js";
83
83
  import {
84
84
  parsePsRows,
85
85
  reapOrphanChannelMcps
@@ -4039,7 +4039,7 @@ var cachedMaintenanceWindow = null;
4039
4039
  var lastVersionCheckAt = 0;
4040
4040
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
4041
4041
  var lastResponsivenessProbeAt = 0;
4042
- var agtCliVersion = true ? "0.27.106" : "dev";
4042
+ var agtCliVersion = true ? "0.27.107" : "dev";
4043
4043
  function resolveBrewPath(execFileSync4) {
4044
4044
  try {
4045
4045
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -5232,7 +5232,7 @@ async function pollCycle() {
5232
5232
  }
5233
5233
  try {
5234
5234
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
5235
- const { collectDiagnostics } = await import("../persistent-session-4O56FXQX.js");
5235
+ const { collectDiagnostics } = await import("../persistent-session-HGR5D4DJ.js");
5236
5236
  const diagCodeNames = [...agentState.persistentSessionAgents];
5237
5237
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
5238
5238
  let tailscaleHostname;
@@ -5319,12 +5319,12 @@ async function pollCycle() {
5319
5319
  const {
5320
5320
  collectResponsivenessProbes,
5321
5321
  getResponsivenessIntervalMs
5322
- } = await import("../responsiveness-probe-I4XS2KCA.js");
5322
+ } = await import("../responsiveness-probe-FS376EVY.js");
5323
5323
  const probeIntervalMs = getResponsivenessIntervalMs();
5324
5324
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
5325
5325
  const probeCodeNames = [...agentState.persistentSessionAgents];
5326
5326
  if (probeCodeNames.length > 0) {
5327
- const { takeAcpxExecFailureCount, creditAcpxExecFailureCount } = await import("../persistent-session-4O56FXQX.js");
5327
+ const { takeAcpxExecFailureCount, creditAcpxExecFailureCount } = await import("../persistent-session-HGR5D4DJ.js");
5328
5328
  const drainedGiveUps = /* @__PURE__ */ new Map();
5329
5329
  const drainedAcpxFailures = /* @__PURE__ */ new Map();
5330
5330
  const probes = collectResponsivenessProbes(probeCodeNames).map((p) => {
@@ -7645,6 +7645,17 @@ async function deliverScheduledCardResult(codeName, agentId, cardId) {
7645
7645
  markScheduledCardDeliveryComplete(cardId);
7646
7646
  return "terminal";
7647
7647
  }
7648
+ if (card.suppress_delivery === true) {
7649
+ log(`[scheduled-kanban] Suppressing delivery (structured flag) for card ${cardId} (task '${task.name}') on '${codeName}' \u2014 result recorded on the card only`);
7650
+ if (task.deliveryMode === "announce" && task.deliveryTo) {
7651
+ await reportDeliveryStatus(agentId, task.taskId, {
7652
+ status: "skipped",
7653
+ error_code: "NO_CONTENT"
7654
+ });
7655
+ }
7656
+ markScheduledCardDeliveryComplete(cardId);
7657
+ return "delivered";
7658
+ }
7648
7659
  await processClaudeTaskResult(codeName, agentId, task.templateId, card.result ?? "", {
7649
7660
  mode: task.deliveryMode,
7650
7661
  channel: task.deliveryChannel,
@@ -7679,7 +7690,7 @@ var SCHEDULED_CARD_DELIVERY_CONTRACT = `
7679
7690
  ---
7680
7691
  [delivery contract \u2014 system]
7681
7692
  The result you write on this card IS the message that will be delivered to the user. Delivery happens automatically from the card \u2014 never send, post, or message it yourself.
7682
- If \u2014 and ONLY if \u2014 the task above contains explicit opt-out wording the user typed ("DO NOT notify me unless \u2026", "only if X", "stay silent unless \u2026") and that condition is NOT met this run, write exactly ${SUPPRESS_SENTINEL} \u2014 bare, no backticks, no other text \u2014 ALONE as the card result and mark the card done. That is the ONLY way to honor the user's do-not-notify instruction; writing "nothing urgent" / "all quiet" instead would still be DELIVERED as a message. If the task asks for a digest/report WITHOUT opt-out wording, a zero-item report is a valid deliverable \u2014 deliver it.`;
7693
+ If \u2014 and ONLY if \u2014 the task above contains explicit opt-out wording the user typed ("DO NOT notify me unless \u2026", "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 is still recorded 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" / "all quiet" result WITHOUT the flag would still be DELIVERED as a message. (Legacy fallback: writing exactly ${SUPPRESS_SENTINEL} alone as the result also suppresses.) If the task asks for a digest/report WITHOUT opt-out wording, a zero-item report is a valid deliverable \u2014 deliver it.`;
7683
7694
  async function routeScheduledTaskViaKanban(codeName, agentId, task, prompt) {
7684
7695
  const { run_id, kanban_item_id } = await startRun({
7685
7696
  agent_id: agentId,
@@ -7700,7 +7711,7 @@ async function routeScheduledTaskViaKanban(codeName, agentId, task, prompt) {
7700
7711
  return false;
7701
7712
  }
7702
7713
  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.
7703
- 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, write exactly ${SUPPRESS_SENTINEL} \u2014 bare, no backticks, no other text, no "nothing urgent", no notes \u2014 ALONE as the card result and mark the card done. That is the ONLY way to honor the user's do-not-notify instruction: a "nothing urgent" status 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.
7714
+ 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.
7704
7715
  ` + formatRunMarker(run_id);
7705
7716
  let injectStatus;
7706
7717
  try {
@@ -9668,7 +9679,7 @@ async function processClaudePairSessions(agents) {
9668
9679
  killPairSession,
9669
9680
  pairTmuxSession,
9670
9681
  finalizeClaudePairOnboarding
9671
- } = await import("../claude-pair-runtime-Q4FKQLMQ.js");
9682
+ } = await import("../claude-pair-runtime-AI37D2CT.js");
9672
9683
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
9673
9684
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
9674
9685
  const killed = await killPairSession(pairTmuxSession(pairId));