@integrity-labs/agt-cli 0.28.236 → 0.28.238

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.
@@ -6959,6 +6959,16 @@ var FLAG_REGISTRY = [
6959
6959
  // flipping it (esp. beyond the canary host) is worth an explicit confirm.
6960
6960
  sensitive: true
6961
6961
  },
6962
+ {
6963
+ key: "block-turn-end-all-markers",
6964
+ description: 'Multi-marker block-turn-end (ENG-7397 / WS3, cross-thread reply routing). Extends channel-block-turn-end from the LAST channel tag to EVERY pending marker across all sources: when ON, the ghost-reply Stop hook enumerates all obligated-and-unanswered inbounds and returns a single {"decision":"block"} listing each owed conversation by inbound_id + source + safe key, so a multi-thread agent is blocked until it answers ALL of them (with WS2 it answers each by inbound_id, no coordinate risk). Requires channel-block-turn-end also ON (the hook self-gates on both). Marker-semantics-neutral: it changes WHEN the hook blocks, arms/clears no markers. The env var AGT_BLOCK_TURN_END_ALL_MARKERS_ENABLED is the operator/canary override the bash hook reads directly (materialized by the manager). Ships dark; canary per host (agt-aws-1, where the multi-thread symptom is chronic) before any fleet flip. OFF (default) = the single-marker last-tag behavior, unchanged.',
6965
+ flagType: "boolean",
6966
+ defaultValue: false,
6967
+ envVar: "AGT_BLOCK_TURN_END_ALL_MARKERS_ENABLED",
6968
+ // Broadens a turn-completion gate across every thread; flipping it beyond the
6969
+ // canary is a high-blast-radius change worth an explicit confirm.
6970
+ sensitive: true
6971
+ },
6962
6972
  {
6963
6973
  key: "ghost-reply-intent-classifier",
6964
6974
  description: "Intentional-non-reply suppression on the ghost-reply RECOVERY path (ENG-7096). The recovery-outbox consumer in the channel MCP only ever fires for turns where the agent ended with text but did NOT call the matching reply tool for that conversation - a set that includes DELIBERATE non-replies (e.g. the agent narrating that the humans in the thread are talking among themselves and it is staying out). When ON, the consumer asks a cheap model (the conversation-eval backend, AGT_CONV_EVAL_*) whether the recovered text is a real message for the user (deliver) or an internal not-replying note (suppress), biased to DELIVER and fail-open, so a classifier outage degrades to today's behaviour, never to a dropped real reply. Boolean gate; ships dark. When OFF the consumer posts every recovered reply exactly as today.",
@@ -7209,6 +7219,19 @@ var FLAG_REGISTRY = [
7209
7219
  // safety control, so mutations require explicit confirmation.
7210
7220
  sensitive: true
7211
7221
  },
7222
+ {
7223
+ key: "slack-reply-binding",
7224
+ description: "Slack reply-target binding (ENG-7396 / WS2, cross-thread reply routing): the model names which inbound it answers (inbound_id) and the server resolves the destination from its own verified record. shadow = classify + count only, routing unchanged; warn = same routing plus a tool-result note so the model self-corrects; enforce = route a bound reply to the registry thread and REJECT a reply whose target matches no inbound this process delivered. The channel server can't evaluate flags, so the manager materializes the resolved value into the AGT_SLACK_REPLY_BINDING spawn env (the operator/canary override, ADR-0022). Ships shadow.",
7225
+ flagType: "enum",
7226
+ allowedValues: ["shadow", "warn", "enforce"],
7227
+ // Declared safe value is `shadow`: observe + count only, no behaviour change.
7228
+ // enforce is the deliberate, audited flip that actually blocks/reroutes.
7229
+ defaultValue: "shadow",
7230
+ envVar: "AGT_SLACK_REPLY_BINDING",
7231
+ // enforce blocks/reroutes egress, so weakening or flipping it is worth an
7232
+ // explicit confirm (ADR-0022 §4).
7233
+ sensitive: true
7234
+ },
7212
7235
  {
7213
7236
  key: "workflows-down-sync",
7214
7237
  description: "Down-sync active dynamic workflows to agents via /host/refresh (ADR-0012, ENG-6352). When on, the API populates the per-agent workflow set (team default \u222A agent override) and the claude-code adapter writes each as .claude/workflows/<name>.js. Boolean gate; ships dark.",
@@ -7320,6 +7343,15 @@ var FLAG_REGISTRY = [
7320
7343
  // Auto-creates an org-admin-equivalent agent in every new org; flipping it on
7321
7344
  // is fleet-shaping and worth an explicit confirm (ADR-0022 §4).
7322
7345
  sensitive: true
7346
+ },
7347
+ {
7348
+ key: "kanban-source-ambiguity-guard",
7349
+ description: "Kanban source ambiguity guard (ENG-7394 / WS1a, Slack cross-thread reply routing). The kanban add path auto-injects source_integration / source_external_id from the recent-inbound cache when the agent omits them. When ON for an org, that fallback only fires when EXACTLY ONE fresh inbound thread exists (read from agent_recent_inbound_sources within the freshness window); two or more live threads inject nothing instead of the most-recent thread, so a concurrent second user's card can't be attributed to the wrong thread. Off (default) = legacy single-slot last-inbound-wins. Evaluated per-org in POST /host/kanban via getEvaluatedFlags(); rollout is a per-org override (no env override - this is an API-route gate, like admin-live-pane). Ships dark.",
7350
+ flagType: "boolean",
7351
+ // Declared safe value is `false`: the fail-safe / absent-flag direction is the
7352
+ // current behaviour (single-slot injection). Turning it ON only makes the
7353
+ // fallback MORE conservative (injects less), so it removes no control.
7354
+ defaultValue: false
7323
7355
  }
7324
7356
  ];
7325
7357
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
@@ -9053,4 +9085,4 @@ export {
9053
9085
  stopAllSessionsAndWait,
9054
9086
  getProjectDir
9055
9087
  };
9056
- //# sourceMappingURL=chunk-PYVEJMY2.js.map
9088
+ //# sourceMappingURL=chunk-P7TUBBQL.js.map