@integrity-labs/agt-cli 0.27.153 → 0.27.155

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.
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  claudeModelAlias,
3
3
  isClaudeFastMode
4
- } from "./chunk-FZTGR2AQ.js";
4
+ } from "./chunk-3X6V4SVW.js";
5
5
  import {
6
6
  reapOrphanChannelMcps
7
7
  } from "./chunk-XWVM4KPK.js";
@@ -1621,4 +1621,4 @@ export {
1621
1621
  stopAllSessionsAndWait,
1622
1622
  getProjectDir
1623
1623
  };
1624
- //# sourceMappingURL=chunk-FF37P4BH.js.map
1624
+ //# sourceMappingURL=chunk-FR2MNN2P.js.map
@@ -10,7 +10,7 @@ import {
10
10
  registerFramework,
11
11
  resolveAvatarEnvUrl,
12
12
  wrapScheduledTaskPrompt
13
- } from "./chunk-FZTGR2AQ.js";
13
+ } from "./chunk-3X6V4SVW.js";
14
14
 
15
15
  // ../../packages/core/dist/integrations/registry.js
16
16
  var INTEGRATION_REGISTRY = [
@@ -7972,4 +7972,4 @@ export {
7972
7972
  managerInstallSystemUnitCommand,
7973
7973
  managerUninstallSystemUnitCommand
7974
7974
  };
7975
- //# sourceMappingURL=chunk-2JIOMDRM.js.map
7975
+ //# sourceMappingURL=chunk-MYKK5OHT.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-THI6WSPJ.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-AIM4U3AL.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-VSUJJO67.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-UQFPB2BE.js.map
@@ -19,7 +19,7 @@ import {
19
19
  provisionStopHook,
20
20
  requireHost,
21
21
  safeWriteJsonAtomic
22
- } from "../chunk-2JIOMDRM.js";
22
+ } from "../chunk-MYKK5OHT.js";
23
23
  import {
24
24
  getProjectDir as getProjectDir2,
25
25
  getReadyTasks,
@@ -60,7 +60,7 @@ import {
60
60
  takeWatchdogGiveUpCount,
61
61
  takeZombieDetection,
62
62
  transcriptActivityAgeSeconds
63
- } from "../chunk-FF37P4BH.js";
63
+ } from "../chunk-FR2MNN2P.js";
64
64
  import {
65
65
  KANBAN_CHECK_COMMAND,
66
66
  MAX_AVATAR_ENV_URL_BYTES,
@@ -90,7 +90,7 @@ import {
90
90
  resolveDmTarget,
91
91
  worseConnectivityOutcome,
92
92
  wrapScheduledTaskPrompt
93
- } from "../chunk-FZTGR2AQ.js";
93
+ } from "../chunk-3X6V4SVW.js";
94
94
  import {
95
95
  parsePsRows,
96
96
  reapOrphanChannelMcps
@@ -4914,7 +4914,7 @@ var cachedMaintenanceWindow = null;
4914
4914
  var lastVersionCheckAt = 0;
4915
4915
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
4916
4916
  var lastResponsivenessProbeAt = 0;
4917
- var agtCliVersion = true ? "0.27.153" : "dev";
4917
+ var agtCliVersion = true ? "0.27.155" : "dev";
4918
4918
  function resolveBrewPath(execFileSync4) {
4919
4919
  try {
4920
4920
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -6112,7 +6112,7 @@ async function pollCycle() {
6112
6112
  }
6113
6113
  try {
6114
6114
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
6115
- const { collectDiagnostics } = await import("../persistent-session-THI6WSPJ.js");
6115
+ const { collectDiagnostics } = await import("../persistent-session-AIM4U3AL.js");
6116
6116
  const diagCodeNames = [...agentState.persistentSessionAgents];
6117
6117
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
6118
6118
  let tailscaleHostname;
@@ -6199,12 +6199,12 @@ async function pollCycle() {
6199
6199
  const {
6200
6200
  collectResponsivenessProbes,
6201
6201
  getResponsivenessIntervalMs
6202
- } = await import("../responsiveness-probe-UFF2EBGZ.js");
6202
+ } = await import("../responsiveness-probe-6L2XS27G.js");
6203
6203
  const probeIntervalMs = getResponsivenessIntervalMs();
6204
6204
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
6205
6205
  const probeCodeNames = [...agentState.persistentSessionAgents];
6206
6206
  if (probeCodeNames.length > 0) {
6207
- const { takeAcpxExecFailureCount, creditAcpxExecFailureCount } = await import("../persistent-session-THI6WSPJ.js");
6207
+ const { takeAcpxExecFailureCount, creditAcpxExecFailureCount } = await import("../persistent-session-AIM4U3AL.js");
6208
6208
  const drainedGiveUps = /* @__PURE__ */ new Map();
6209
6209
  const drainedAcpxFailures = /* @__PURE__ */ new Map();
6210
6210
  const probes = collectResponsivenessProbes(probeCodeNames).map((p) => {
@@ -6238,7 +6238,7 @@ async function pollCycle() {
6238
6238
  collectResponsivenessProbes,
6239
6239
  livePendingInboundOldestAgeSeconds,
6240
6240
  deadLetterPendingInbound
6241
- } = await import("../responsiveness-probe-UFF2EBGZ.js");
6241
+ } = await import("../responsiveness-probe-6L2XS27G.js");
6242
6242
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
6243
6243
  const wedgeNow = /* @__PURE__ */ new Date();
6244
6244
  const liveAgents = agentState.persistentSessionAgents;
@@ -10800,7 +10800,7 @@ async function processClaudePairSessions(agents) {
10800
10800
  killPairSession,
10801
10801
  pairTmuxSession,
10802
10802
  finalizeClaudePairOnboarding
10803
- } = await import("../claude-pair-runtime-VSUJJO67.js");
10803
+ } = await import("../claude-pair-runtime-UQFPB2BE.js");
10804
10804
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
10805
10805
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
10806
10806
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -15092,6 +15092,16 @@ function clearOldestSlackPendingMarkerInChannel(dir, channel, clear = defaultCle
15092
15092
  }
15093
15093
  }
15094
15094
 
15095
+ // src/slack-reply-threading.ts
15096
+ function isSlackDmChannel(channel) {
15097
+ return typeof channel === "string" && channel.startsWith("D");
15098
+ }
15099
+ function resolveReplyThreadTs(input) {
15100
+ if (input.threadTs) return input.threadTs;
15101
+ if (isSlackDmChannel(input.channel)) return void 0;
15102
+ return input.messageTs || void 0;
15103
+ }
15104
+
15095
15105
  // src/restart-confirm.ts
15096
15106
  import { existsSync as existsSync3, mkdirSync, readFileSync as readFileSync3, renameSync, unlinkSync as unlinkSync2, writeFileSync } from "fs";
15097
15107
  import { dirname } from "path";
@@ -17827,7 +17837,7 @@ mcp.setRequestHandler(ListToolsRequestSchema, async () => ({
17827
17837
  text: { type: "string", description: "The message to send" },
17828
17838
  thread_ts: {
17829
17839
  type: "string",
17830
- description: "Thread timestamp for threaded replies (from the thread_ts attribute). Omit for a top-level reply (e.g. a fresh DM)."
17840
+ description: "Thread timestamp for an existing thread reply (from the thread_ts attribute). Safe to omit: for a channel message the server automatically threads your reply off the message you are answering (via message_ts), and a DM reply posts inline."
17831
17841
  },
17832
17842
  // ENG-5861: explicit message_ts so the cleanup gate can match the
17833
17843
  // exact pending-inbound marker — necessary because top-level DM
@@ -18066,17 +18076,22 @@ mcp.setRequestHandler(CallToolRequestSchema, async (req) => {
18066
18076
  }
18067
18077
  if (name === "slack.reply") {
18068
18078
  const { channel, text, thread_ts, message_ts } = args;
18069
- if (channel && thread_ts) {
18079
+ const effectiveThreadTs = resolveReplyThreadTs({
18080
+ channel,
18081
+ threadTs: thread_ts,
18082
+ messageTs: message_ts
18083
+ });
18084
+ if (channel && effectiveThreadTs) {
18070
18085
  const killed = await isThreadKilled({
18071
18086
  channelType: "slack",
18072
18087
  channelId: channel,
18073
- threadTs: thread_ts,
18088
+ threadTs: effectiveThreadTs,
18074
18089
  agtHost: AGT_HOST,
18075
18090
  agtApiKey: AGT_API_KEY
18076
18091
  });
18077
18092
  if (killed) {
18078
18093
  process.stderr.write(
18079
- `slack-channel(${AGENT_CODE_NAME}): reply_killed channel=${redactSlackId(channel)} thread=${redactSlackId(thread_ts)}
18094
+ `slack-channel(${AGENT_CODE_NAME}): reply_killed channel=${redactSlackId(channel)} thread=${redactSlackId(effectiveThreadTs)}
18080
18095
  `
18081
18096
  );
18082
18097
  return {
@@ -18091,7 +18106,7 @@ mcp.setRequestHandler(CallToolRequestSchema, async (req) => {
18091
18106
  }
18092
18107
  }
18093
18108
  const throttleCfg = configFromEnv();
18094
- const throttleKey = thread_ts ?? channel;
18109
+ const throttleKey = effectiveThreadTs ?? channel;
18095
18110
  const throttleNow = Date.now();
18096
18111
  const throttleDecision = decideReplyThrottle({
18097
18112
  recentReplyTimestamps: getRecentReplies(channel, throttleKey, throttleNow, throttleCfg),
@@ -18103,14 +18118,14 @@ mcp.setRequestHandler(CallToolRequestSchema, async (req) => {
18103
18118
  `slack-channel(${AGENT_CODE_NAME}): reply_throttled channel=${redactSlackId(channel)} thread=${redactSlackId(throttleKey)} count=${throttleDecision.recentCount} window_ms=${throttleCfg.windowMs} threshold=${throttleCfg.threshold}
18104
18119
  `
18105
18120
  );
18106
- if (channel && thread_ts) {
18121
+ if (channel && effectiveThreadTs) {
18107
18122
  fetch("https://slack.com/api/reactions.add", {
18108
18123
  method: "POST",
18109
18124
  headers: {
18110
18125
  "Content-Type": "application/json",
18111
18126
  Authorization: `Bearer ${BOT_TOKEN}`
18112
18127
  },
18113
- body: JSON.stringify({ channel, timestamp: thread_ts, name: "lock" })
18128
+ body: JSON.stringify({ channel, timestamp: effectiveThreadTs, name: "lock" })
18114
18129
  }).catch(() => {
18115
18130
  });
18116
18131
  }
@@ -18144,7 +18159,7 @@ mcp.setRequestHandler(CallToolRequestSchema, async (req) => {
18144
18159
  body: JSON.stringify({
18145
18160
  channel,
18146
18161
  text,
18147
- ...thread_ts ? { thread_ts } : {},
18162
+ ...effectiveThreadTs ? { thread_ts: effectiveThreadTs } : {},
18148
18163
  ...buildAugmentedSlackMetadata() ? { metadata: buildAugmentedSlackMetadata() } : {}
18149
18164
  // ↑ Labels this message as Augmented-agent-originated so peer agents
18150
18165
  // enforcing sender_policy=team_agents_only can verify the sender.
@@ -18160,7 +18175,7 @@ mcp.setRequestHandler(CallToolRequestSchema, async (req) => {
18160
18175
  recordReply(channel, throttleKey, throttleNow, throttleCfg);
18161
18176
  recordActivity("reply");
18162
18177
  if (THREAD_AUTO_FOLLOW !== "off") {
18163
- const trackTs = thread_ts ?? data.ts ?? void 0;
18178
+ const trackTs = effectiveThreadTs ?? data.ts ?? void 0;
18164
18179
  rememberThread(channel, trackTs, thread_ts ? "mentioned" : "started");
18165
18180
  }
18166
18181
  if (interactiveHostAvailable() && data.ts) {
@@ -18170,7 +18185,7 @@ mcp.setRequestHandler(CallToolRequestSchema, async (req) => {
18170
18185
  agentId: AGT_AGENT_ID
18171
18186
  };
18172
18187
  const tsToRecord = data.ts;
18173
- const threadTsToRecord = thread_ts;
18188
+ const threadTsToRecord = effectiveThreadTs;
18174
18189
  void (async () => {
18175
18190
  try {
18176
18191
  const runtime = await Promise.resolve().then(() => (init_slack_block_kit_runtime(), slack_block_kit_runtime_exports));
@@ -25,8 +25,8 @@ import {
25
25
  takeAcpxExecFailureCount,
26
26
  takeZombieDetection,
27
27
  writePersistentClaudeWrapper
28
- } from "./chunk-FF37P4BH.js";
29
- import "./chunk-FZTGR2AQ.js";
28
+ } from "./chunk-FR2MNN2P.js";
29
+ import "./chunk-3X6V4SVW.js";
30
30
  import "./chunk-XWVM4KPK.js";
31
31
  export {
32
32
  SEND_KEYS_ENTER_DELAY_MS,
@@ -56,4 +56,4 @@ export {
56
56
  takeZombieDetection,
57
57
  writePersistentClaudeWrapper
58
58
  };
59
- //# sourceMappingURL=persistent-session-THI6WSPJ.js.map
59
+ //# sourceMappingURL=persistent-session-AIM4U3AL.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-FF37P4BH.js";
4
- import "./chunk-FZTGR2AQ.js";
3
+ } from "./chunk-FR2MNN2P.js";
4
+ import "./chunk-3X6V4SVW.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -154,4 +154,4 @@ export {
154
154
  livePendingInboundOldestAgeSeconds,
155
155
  oldestLivePendingInboundMtimeMs
156
156
  };
157
- //# sourceMappingURL=responsiveness-probe-UFF2EBGZ.js.map
157
+ //# sourceMappingURL=responsiveness-probe-6L2XS27G.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.27.153",
3
+ "version": "0.27.155",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {