@integrity-labs/agt-cli 0.28.420 → 0.28.421

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
@@ -40,7 +40,7 @@ import {
40
40
  success,
41
41
  table,
42
42
  warn
43
- } from "../chunk-4D4VKZPK.js";
43
+ } from "../chunk-HVVEMQWZ.js";
44
44
  import {
45
45
  AnchorSessionClient,
46
46
  CHANNEL_REGISTRY,
@@ -70,7 +70,7 @@ import {
70
70
  renderTemplate,
71
71
  resolveChannels,
72
72
  serializeManifestForSlackCli
73
- } from "../chunk-LLIMZG67.js";
73
+ } from "../chunk-B4NX2T2H.js";
74
74
  import "../chunk-XWVM4KPK.js";
75
75
 
76
76
  // src/bin/agt.ts
@@ -4829,7 +4829,7 @@ import { execFileSync, execSync } from "child_process";
4829
4829
  import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
4830
4830
  import chalk18 from "chalk";
4831
4831
  import ora16 from "ora";
4832
- var cliVersion = true ? "0.28.420" : "dev";
4832
+ var cliVersion = true ? "0.28.421" : "dev";
4833
4833
  async function fetchLatestVersion() {
4834
4834
  const host2 = getHost();
4835
4835
  if (!host2) return null;
@@ -6001,7 +6001,7 @@ function handleError(err) {
6001
6001
  }
6002
6002
 
6003
6003
  // src/bin/agt.ts
6004
- var cliVersion2 = true ? "0.28.420" : "dev";
6004
+ var cliVersion2 = true ? "0.28.421" : "dev";
6005
6005
  var program = new Command();
6006
6006
  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");
6007
6007
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -8049,6 +8049,27 @@ var FLAG_REGISTRY = [
8049
8049
  // change (ADR-0022 sensitive-flag confirm).
8050
8050
  sensitive: true
8051
8051
  },
8052
+ {
8053
+ key: "slack-scheduled-channel-guard",
8054
+ description: 'Guard on slack.reply that refuses to let an active scheduled-task destination silently move a reply to a DIFFERENT channel than the agent named (ENG-8137). CS-1505 gave an explicit inbound_id priority over the task destination but left the no-inbound_id case treating "no inbound reference" as "no destination specified" - and `channel` is a REQUIRED argument, so every call names one. The symptom: a question asked in one channel answered in another, and a reply meant as a DM landing in a public channel. Fires only when the marker carries an EXPLICIT target, the named channel differs from it, and neither an inbound_id, an enforce binding, nor an ENG-7542 channel correction is available to arbitrate. off = never runs (today behaviour: silent retarget). shadow = count + log the would-block but STILL route as today, so the false-positive rate is measurable before anyone refuses a send. enforce = block the reply and tell the agent to retry. Read live from the heartbeat flags-cache (or the env override). NOTE: enforce is currently CLAMPED to shadow host-side and setting it here will not take effect - it stays blocked until ENG-8142 teaches the Stop hook to tell a refused reply from a delivered one, because until then a blocked send fails silently (no recovery, no re-prompt, nothing in the channel). Lifting the clamp is a code change, not a flag flip.',
8055
+ flagType: "enum",
8056
+ allowedValues: ["off", "shadow", "enforce"],
8057
+ // Ships in SHADOW, not off: the counter is the whole point - the fleet metric
8058
+ // is currently blind to this misroute, which is why it went unnoticed. shadow
8059
+ // is a free local log line + counter (no model spend, no behaviour change), so
8060
+ // it measures the fire rate immediately. enforce turns a misroute into a
8061
+ // REFUSED send, which trades a confidentiality risk for an availability one -
8062
+ // that is the audited per-org flip, taken after reading the shadow numbers and
8063
+ // after ENG-8143 shrinks the stale-marker window that dominates the false
8064
+ // positives.
8065
+ defaultValue: "shadow",
8066
+ // Enum override AGT_SLACK_SCHEDULED_CHANNEL_GUARD_MODE (off|shadow|enforce),
8067
+ // resolved by resolveSlackScheduledChannelGuardMode in the channel-server bundle.
8068
+ envVar: "AGT_SLACK_SCHEDULED_CHANNEL_GUARD_MODE",
8069
+ // enforce REFUSES a send the agent asked to make - a visible availability
8070
+ // change, so flipping toward it is deliberate (ADR-0022 sensitive-flag confirm).
8071
+ sensitive: true
8072
+ },
8052
8073
  {
8053
8074
  key: "slack-hot-thread-guard",
8054
8075
  description: "Server-side hot-thread guard on the slack.reply surface (ENG-7462). Prevents an agent posting a NEW top-level Slack message when it meant to reply inside the thread it is already working in - a prompt/memory rule proved insufficient (the agent had the rule and still slipped). When a reply would otherwise post to channel ROOT (no thread_ts / message_ts / inbound_id, no active kanban card) and the agent has a recent active thread in that channel (its last bot-posted thread, from the persisted trackedThreads cache, within a freshness window), the reply is redirected into that thread. proactive:true no longer implies channel root; posting at root becomes a deliberate action (the to_channel_root flag, or the thread_ts:null sentinel). off = guard never runs, replies with no coords root exactly as today (ships dark). shadow = compute + log the would-redirect but STILL post to root (measure the fire rate before acting). enforce = apply the redirect (a soft-block: redirect + inform, never a hard rejection). Read live from the heartbeat flags-cache (or the env override); enforce is a deliberate per-org flip after a shadow soak.",
@@ -12706,4 +12727,4 @@ export {
12706
12727
  stopAllSessionsAndWait,
12707
12728
  getProjectDir
12708
12729
  };
12709
- //# sourceMappingURL=chunk-LLIMZG67.js.map
12730
+ //# sourceMappingURL=chunk-B4NX2T2H.js.map