@integrity-labs/agt-cli 0.12.7 → 0.12.8

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.
@@ -17,7 +17,7 @@ import {
17
17
  resolveChannels,
18
18
  resolveDmTarget,
19
19
  wrapScheduledTaskPrompt
20
- } from "../chunk-35KA6J3P.js";
20
+ } from "../chunk-ZFTZDO5E.js";
21
21
  import {
22
22
  findTaskByTemplate,
23
23
  getProjectDir,
@@ -1122,7 +1122,10 @@ function send(msg) {
1122
1122
  var managerLogPath = null;
1123
1123
  function redactForDiskLog(value) {
1124
1124
  try {
1125
- return value.replace(/\b(Bearer\s+)[A-Za-z0-9._-]+\b/gi, "$1[REDACTED]").replace(/\bxox[baprs]-[A-Za-z0-9-]+\b/g, "[REDACTED-SLACK]").replace(/\btlk_[A-Za-z0-9._-]+\b/g, "[REDACTED-HOST]").replace(/\bsk-ant-[A-Za-z0-9_-]+\b/g, "[REDACTED-ANTHROPIC]").replace(/\b\d{8,12}:[A-Za-z0-9_-]{30,}\b/g, "[REDACTED-TELEGRAM]").replace(/\b([A-Z0-9_]*(?:TOKEN|SECRET|API[_-]?KEY|PASSWORD)[A-Z0-9_]*)=\S+/gi, "$1=[REDACTED]");
1125
+ return value.replace(/\b(Bearer\s+)[A-Za-z0-9._-]+\b/gi, "$1[REDACTED]").replace(/\bxox[baprs]-[A-Za-z0-9-]+\b/g, "[REDACTED-SLACK]").replace(/\btlk_[A-Za-z0-9._-]+\b/g, "[REDACTED-HOST]").replace(/\bsk-ant-[A-Za-z0-9_-]+\b/g, "[REDACTED-ANTHROPIC]").replace(/\b\d{8,12}:[A-Za-z0-9_-]{30,}\b/g, "[REDACTED-TELEGRAM]").replace(
1126
+ /\b([A-Z0-9_]*(?:TOKEN|SECRET|API[_-]?KEY|PASSWORD)[A-Z0-9_]*)=(?:"[^"\r\n]*"|'[^'\r\n]*'|[^\s\r\n]+)/gi,
1127
+ "$1=[REDACTED]"
1128
+ );
1126
1129
  } catch {
1127
1130
  return "[REDACTED]";
1128
1131
  }
@@ -1130,9 +1133,7 @@ function redactForDiskLog(value) {
1130
1133
  function log(msg) {
1131
1134
  const ts = (/* @__PURE__ */ new Date()).toISOString();
1132
1135
  const safeMsg = redactForDiskLog(msg);
1133
- const rawStderrOptIn = process.env["AGT_LOG_RAW_SECRETS"] === "1" && process.stderr.isTTY;
1134
- const stderrMsg = rawStderrOptIn ? msg : safeMsg;
1135
- process.stderr.write(`[manager-worker ${ts}] ${stderrMsg}
1136
+ process.stderr.write(`[manager-worker ${ts}] ${safeMsg}
1136
1137
  `);
1137
1138
  try {
1138
1139
  if (!managerLogPath) {
@@ -1991,9 +1992,20 @@ async function processAgent(agent, agentStates) {
1991
1992
  activeChannels.get(channelId).add(agent.code_name);
1992
1993
  const configHash = createHash("sha256").update(JSON.stringify(entry.config)).digest("hex");
1993
1994
  const cacheKey = `${agent.agent_id}:${channelId}`;
1994
- if (knownChannelConfigHashes.get(cacheKey) === configHash) {
1995
+ let onDiskPresent = true;
1996
+ try {
1997
+ onDiskPresent = frameworkAdapter.hasChannelCredentials?.(agent.code_name, channelId) ?? true;
1998
+ } catch (err) {
1999
+ log(`hasChannelCredentials failed for '${agent.code_name}/${channelId}': ${err.message} \u2014 forcing credential rewrite`);
2000
+ onDiskPresent = false;
2001
+ }
2002
+ if (knownChannelConfigHashes.get(cacheKey) === configHash && onDiskPresent) {
1995
2003
  continue;
1996
2004
  }
2005
+ if (!onDiskPresent && knownChannelConfigHashes.has(cacheKey)) {
2006
+ log(`Cached hash for '${agent.code_name}/${channelId}' but on-disk entry missing \u2014 re-writing credentials`);
2007
+ knownChannelConfigHashes.delete(cacheKey);
2008
+ }
1997
2009
  try {
1998
2010
  const sessionMode2 = refreshData.agent.session_mode;
1999
2011
  frameworkAdapter.writeChannelCredentials(agent.code_name, channelId, entry.config, { sessionMode: sessionMode2 });
@@ -3027,14 +3039,18 @@ async function ensurePersistentSession(agent, tasks, boardItems, refreshData) {
3027
3039
  const channels = [];
3028
3040
  const devChannels = [];
3029
3041
  if (channelConfigs) {
3030
- if ("telegram" in channelConfigs) {
3031
- channels.push("plugin:telegram@claude-plugins-official");
3042
+ const isChannelEnabled = (id) => {
3043
+ const entry = channelConfigs[id];
3044
+ return !!entry?.config && (entry.status === "active" || entry.status === "pending");
3045
+ };
3046
+ if (isChannelEnabled("slack")) {
3047
+ devChannels.push("server:slack");
3032
3048
  }
3033
- if ("discord" in channelConfigs) {
3034
- channels.push("plugin:discord@claude-plugins-official");
3049
+ if (isChannelEnabled("telegram")) {
3050
+ devChannels.push("server:telegram");
3035
3051
  }
3036
- if ("slack" in channelConfigs) {
3037
- devChannels.push("server:slack");
3052
+ if (isChannelEnabled("discord")) {
3053
+ channels.push("plugin:discord@claude-plugins-official");
3038
3054
  }
3039
3055
  }
3040
3056
  devChannels.push("server:direct-chat");
@@ -4749,7 +4765,7 @@ function deployMcpAssets() {
4749
4765
  log("[manager] MCP assets not found in CLI package \u2014 skipping deployment");
4750
4766
  return;
4751
4767
  }
4752
- for (const file of ["index.js", "slack-channel.js", "direct-chat-channel.js"]) {
4768
+ for (const file of ["index.js", "slack-channel.js", "direct-chat-channel.js", "telegram-channel.js"]) {
4753
4769
  const src = join2(mcpSourceDir, file);
4754
4770
  const dst = join2(targetDir, file);
4755
4771
  if (!existsSync(src)) continue;