@integrity-labs/agt-cli 0.27.143 → 0.27.144

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.
@@ -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-255IRT6T.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-35PWSTLO.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-Z2WAQRSW.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-GIUCD7IG.js.map
@@ -18,7 +18,7 @@ import {
18
18
  provisionStopHook,
19
19
  requireHost,
20
20
  safeWriteJsonAtomic
21
- } from "../chunk-IKJYJYPI.js";
21
+ } from "../chunk-HPUIWWKD.js";
22
22
  import {
23
23
  getProjectDir as getProjectDir2,
24
24
  getReadyTasks,
@@ -54,7 +54,7 @@ import {
54
54
  stopPersistentSession,
55
55
  takeWatchdogGiveUpCount,
56
56
  takeZombieDetection
57
- } from "../chunk-BQCBWYT3.js";
57
+ } from "../chunk-7GKJZBTB.js";
58
58
  import {
59
59
  KANBAN_CHECK_COMMAND,
60
60
  MAX_AVATAR_ENV_URL_BYTES,
@@ -83,7 +83,7 @@ import {
83
83
  resolveDmTarget,
84
84
  worseConnectivityOutcome,
85
85
  wrapScheduledTaskPrompt
86
- } from "../chunk-ZXIGQDOP.js";
86
+ } from "../chunk-WOOYOAPG.js";
87
87
  import {
88
88
  isAgentIdle,
89
89
  isStaleForToday,
@@ -4760,7 +4760,7 @@ var cachedMaintenanceWindow = null;
4760
4760
  var lastVersionCheckAt = 0;
4761
4761
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
4762
4762
  var lastResponsivenessProbeAt = 0;
4763
- var agtCliVersion = true ? "0.27.143" : "dev";
4763
+ var agtCliVersion = true ? "0.27.144" : "dev";
4764
4764
  function resolveBrewPath(execFileSync4) {
4765
4765
  try {
4766
4766
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -5958,7 +5958,7 @@ async function pollCycle() {
5958
5958
  }
5959
5959
  try {
5960
5960
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
5961
- const { collectDiagnostics } = await import("../persistent-session-255IRT6T.js");
5961
+ const { collectDiagnostics } = await import("../persistent-session-35PWSTLO.js");
5962
5962
  const diagCodeNames = [...agentState.persistentSessionAgents];
5963
5963
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
5964
5964
  let tailscaleHostname;
@@ -6045,12 +6045,12 @@ async function pollCycle() {
6045
6045
  const {
6046
6046
  collectResponsivenessProbes,
6047
6047
  getResponsivenessIntervalMs
6048
- } = await import("../responsiveness-probe-Q35EEOHM.js");
6048
+ } = await import("../responsiveness-probe-MA4M2QM4.js");
6049
6049
  const probeIntervalMs = getResponsivenessIntervalMs();
6050
6050
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
6051
6051
  const probeCodeNames = [...agentState.persistentSessionAgents];
6052
6052
  if (probeCodeNames.length > 0) {
6053
- const { takeAcpxExecFailureCount, creditAcpxExecFailureCount } = await import("../persistent-session-255IRT6T.js");
6053
+ const { takeAcpxExecFailureCount, creditAcpxExecFailureCount } = await import("../persistent-session-35PWSTLO.js");
6054
6054
  const drainedGiveUps = /* @__PURE__ */ new Map();
6055
6055
  const drainedAcpxFailures = /* @__PURE__ */ new Map();
6056
6056
  const probes = collectResponsivenessProbes(probeCodeNames).map((p) => {
@@ -6084,7 +6084,7 @@ async function pollCycle() {
6084
6084
  collectResponsivenessProbes,
6085
6085
  livePendingInboundOldestAgeSeconds,
6086
6086
  deadLetterPendingInbound
6087
- } = await import("../responsiveness-probe-Q35EEOHM.js");
6087
+ } = await import("../responsiveness-probe-MA4M2QM4.js");
6088
6088
  const { transcriptActivityAgeSeconds } = await import("../daily-session-PNQX5URX.js");
6089
6089
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
6090
6090
  const wedgeNow = /* @__PURE__ */ new Date();
@@ -10615,7 +10615,7 @@ async function processClaudePairSessions(agents) {
10615
10615
  killPairSession,
10616
10616
  pairTmuxSession,
10617
10617
  finalizeClaudePairOnboarding
10618
- } = await import("../claude-pair-runtime-Z2WAQRSW.js");
10618
+ } = await import("../claude-pair-runtime-GIUCD7IG.js");
10619
10619
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
10620
10620
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
10621
10621
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -15568,6 +15568,19 @@ function mergeInboundText(text, blocks) {
15568
15568
  return { content, recoveredTable: rendered.length > 0 && content !== text };
15569
15569
  }
15570
15570
 
15571
+ // src/slack-allowlist-source.ts
15572
+ function parseAllowedUsersCsv(raw) {
15573
+ return new Set(
15574
+ (raw ?? "").split(",").map((s) => s.trim()).filter((s) => s.length > 0)
15575
+ );
15576
+ }
15577
+ function extractAllowedUsersFromMcpJson(jsonText) {
15578
+ const parsed = JSON.parse(jsonText);
15579
+ const slackServer = parsed.mcpServers?.["slack"];
15580
+ if (!slackServer) return null;
15581
+ return parseAllowedUsersCsv(slackServer.env?.["SLACK_ALLOWED_USERS"]);
15582
+ }
15583
+
15571
15584
  // src/slack-response-mode.ts
15572
15585
  var MODES = [
15573
15586
  "mention_only",
@@ -16306,9 +16319,7 @@ async function maybeSendSenderPolicyDecline(args) {
16306
16319
  var BLOCK_KIT_ENABLED = process.env.SLACK_BLOCK_KIT_ENABLED === "true";
16307
16320
  var BLOCK_KIT_ASK_USER_ENABLED = process.env.SLACK_BLOCK_KIT_ASK_USER_ENABLED === "true";
16308
16321
  var BLOCK_KIT_DISABLED = process.env.SLACK_BLOCK_KIT_DISABLED === "true";
16309
- var ALLOWED_USERS = new Set(
16310
- (process.env.SLACK_ALLOWED_USERS ?? "").split(",").map((s) => s.trim()).filter(Boolean)
16311
- );
16322
+ var ALLOWED_USERS = parseAllowedUsersCsv(process.env.SLACK_ALLOWED_USERS);
16312
16323
  var THREAD_AUTO_FOLLOW = process.env.SLACK_THREAD_AUTO_FOLLOW ?? "off";
16313
16324
  var CHANNEL_RESPONSE_MODE = parseResponseMode(process.env.SLACK_CHANNEL_RESPONSE_MODE);
16314
16325
  var SLACK_PEER_DISABLED_MODE = (() => {
@@ -16355,6 +16366,28 @@ var SLACK_PEER_CLASSIFIER_CONFIG = {
16355
16366
  peer_disabled_mode: SLACK_PEER_DISABLED_MODE
16356
16367
  };
16357
16368
  var SLACK_AGENT_DIR = AGENT_CODE_NAME ? join6(homedir2(), ".augmented", AGENT_CODE_NAME) : null;
16369
+ var SLACK_MCP_CONFIG_PATH = SLACK_AGENT_DIR ? join6(SLACK_AGENT_DIR, "project", ".mcp.json") : null;
16370
+ var liveAllowedUsersCache = null;
16371
+ function readLiveAllowedUsers() {
16372
+ if (!SLACK_MCP_CONFIG_PATH) return null;
16373
+ try {
16374
+ const mtimeMs = statSync2(SLACK_MCP_CONFIG_PATH).mtimeMs;
16375
+ if (liveAllowedUsersCache && liveAllowedUsersCache.mtimeMs === mtimeMs) {
16376
+ return liveAllowedUsersCache.value;
16377
+ }
16378
+ const value = extractAllowedUsersFromMcpJson(
16379
+ readFileSync7(SLACK_MCP_CONFIG_PATH, "utf-8")
16380
+ );
16381
+ if (value === null) return null;
16382
+ liveAllowedUsersCache = { mtimeMs, value };
16383
+ return value;
16384
+ } catch {
16385
+ return null;
16386
+ }
16387
+ }
16388
+ function getEffectiveAllowedUsers() {
16389
+ return readLiveAllowedUsers() ?? ALLOWED_USERS;
16390
+ }
16358
16391
  var SLACK_PENDING_INBOUND_DIR = SLACK_AGENT_DIR ? join6(SLACK_AGENT_DIR, "slack-pending-inbound") : null;
16359
16392
  var SLACK_RECOVERY_OUTBOX_DIR = SLACK_AGENT_DIR ? join6(SLACK_AGENT_DIR, "slack-recovery-outbox") : null;
16360
16393
  var SLACK_RESTART_CONFIRM_FILE = SLACK_AGENT_DIR ? join6(SLACK_AGENT_DIR, "slack-restart-confirm.json") : null;
@@ -17298,7 +17331,7 @@ async function handleDebugSlashCommand(payload, responseUrl) {
17298
17331
  const verdict = evaluateDebugGate({
17299
17332
  channelId: payload.channel_id,
17300
17333
  userId: payload.user_id,
17301
- allowedUsers: ALLOWED_USERS
17334
+ allowedUsers: getEffectiveAllowedUsers()
17302
17335
  });
17303
17336
  const investigateCmd = agentSlashCommand("/investigate");
17304
17337
  if (!verdict.ok) {
@@ -17400,7 +17433,8 @@ async function handleSlashCommandEnvelope(payload) {
17400
17433
  return;
17401
17434
  }
17402
17435
  if (matchesAgentCommand(command, "/restart")) {
17403
- if (ALLOWED_USERS.size > 0 && (!payload.user_id || !ALLOWED_USERS.has(payload.user_id))) {
17436
+ const restartAllowedUsers = getEffectiveAllowedUsers();
17437
+ if (restartAllowedUsers.size > 0 && (!payload.user_id || !restartAllowedUsers.has(payload.user_id))) {
17404
17438
  process.stderr.write(
17405
17439
  `slack-channel(${codeName}): /restart slash-command denied \u2014 user not in SLACK_ALLOWED_USERS
17406
17440
  `
@@ -19085,7 +19119,7 @@ async function connectSocketMode() {
19085
19119
  return;
19086
19120
  }
19087
19121
  if (isRestartCommand) {
19088
- const senderAllowed = isRestartSenderAllowed(ALLOWED_USERS, evt.user);
19122
+ const senderAllowed = isRestartSenderAllowed(getEffectiveAllowedUsers(), evt.user);
19089
19123
  if (!senderAllowed) {
19090
19124
  await denyUnauthorizedRestart({
19091
19125
  channel: evt.channel ?? "",
@@ -25,8 +25,8 @@ import {
25
25
  takeAcpxExecFailureCount,
26
26
  takeZombieDetection,
27
27
  writePersistentClaudeWrapper
28
- } from "./chunk-BQCBWYT3.js";
29
- import "./chunk-ZXIGQDOP.js";
28
+ } from "./chunk-7GKJZBTB.js";
29
+ import "./chunk-WOOYOAPG.js";
30
30
  import "./chunk-354FAVQR.js";
31
31
  import "./chunk-XWVM4KPK.js";
32
32
  export {
@@ -57,4 +57,4 @@ export {
57
57
  takeZombieDetection,
58
58
  writePersistentClaudeWrapper
59
59
  };
60
- //# sourceMappingURL=persistent-session-255IRT6T.js.map
60
+ //# sourceMappingURL=persistent-session-35PWSTLO.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-BQCBWYT3.js";
4
- import "./chunk-ZXIGQDOP.js";
3
+ } from "./chunk-7GKJZBTB.js";
4
+ import "./chunk-WOOYOAPG.js";
5
5
  import "./chunk-354FAVQR.js";
6
6
  import "./chunk-XWVM4KPK.js";
7
7
 
@@ -155,4 +155,4 @@ export {
155
155
  livePendingInboundOldestAgeSeconds,
156
156
  oldestLivePendingInboundMtimeMs
157
157
  };
158
- //# sourceMappingURL=responsiveness-probe-Q35EEOHM.js.map
158
+ //# sourceMappingURL=responsiveness-probe-MA4M2QM4.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.27.143",
3
+ "version": "0.27.144",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {