@integrity-labs/agt-cli 0.28.354 → 0.28.356

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.
@@ -37368,6 +37368,15 @@ function buildSlackMcpInstructions(opts) {
37368
37368
  // src/slack-react-taxonomy.ts
37369
37369
  var SLACK_REACT_TOOL_DESCRIPTION = "Add an emoji reaction to a Slack message. Use sparingly \u2014 prefer a text reply. Reaction taxonomy: \u2705 = action completed successfully. \u{1F4DD} (:memo:) and \u26A0\uFE0F (:warning:) are blessed for explicit multi-state STATUS pipelines only \u2014 e.g. marking a run/parent \u2705 done / \u{1F4DD} waiting / \u26A0\uFE0F failed for at-a-glance status. That exception is narrow: never use a reaction to tell a user that YOUR reply failed \u2014 NEVER react to signal failure of your own work; on failure call slack.reply with one sentence explaining what went wrong instead (no stack traces, no secrets). \u{1F440} (eyes) is already auto-applied on inbound; do not duplicate. \u23F3 (:hourglass_flowing_sand:) is reserved for the system to mark an inbound that arrived while the agent couldn't reply \u2014 never add \u23F3 or \u274C yourself. (A \u{1F512} you may see on a thread is the server's reply-throttle marker, not a coerced reaction \u2014 slack.react passes your emoji straight through to Slack and never rewrites it to \u{1F512}.)";
37370
37370
 
37371
+ // src/slack-routed-to-note.ts
37372
+ function describeChannelRedirect(input) {
37373
+ const { requestedChannel, effectiveChannel, reason = null } = input;
37374
+ if (!requestedChannel) return null;
37375
+ if (requestedChannel === effectiveChannel) return null;
37376
+ const why = reason === "scheduled-task" ? " (routed to the scheduled task's configured destination)" : reason === "dm-channel-guard" ? " (redirected by the DM-channel guard because those coordinates belong to a DM)" : "";
37377
+ return `Heads up: this was delivered to ${effectiveChannel}, NOT the ${requestedChannel} you named${why}. routed_to=${effectiveChannel}. If ${effectiveChannel} is not where you intended this to go, the destination is misconfigured; do not assume it posted to ${requestedChannel}.`;
37378
+ }
37379
+
37371
37380
  // src/slack-reply-binding-telemetry.ts
37372
37381
  import { readFileSync as readFileSync13, writeFileSync as writeFileSync10 } from "fs";
37373
37382
  import { join as join13 } from "path";
@@ -41451,6 +41460,12 @@ mcp.setRequestHandler(CallToolRequestSchema, async (req) => {
41451
41460
  if (hotThreadRedirected) {
41452
41461
  base += ". Note: this was threaded into the conversation you are actively working in rather than posted at the channel root. If you genuinely meant to start a NEW top-level topic, resend with to_channel_root:true.";
41453
41462
  }
41463
+ const redirectNote = describeChannelRedirect({
41464
+ requestedChannel: channel,
41465
+ effectiveChannel,
41466
+ reason: scheduledDest?.retargeted ? "scheduled-task" : channelGuard.corrected ? "dm-channel-guard" : null
41467
+ });
41468
+ if (redirectNote) base += `. ${redirectNote}`;
41454
41469
  const sentTs = typeof data.ts === "string" ? data.ts : void 0;
41455
41470
  return {
41456
41471
  content: [{ type: "text", text: sentTs ? `${base} (ts=${sentTs})` : base }]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.354",
3
+ "version": "0.28.356",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {