@integrity-labs/agt-cli 0.28.733 → 0.28.735

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.
@@ -30477,6 +30477,9 @@ function decideInboundAccess(input) {
30477
30477
  if (input.orgBoundary && !input.orgBoundary.forward) {
30478
30478
  return { kind: "drop", reason: "org_boundary" };
30479
30479
  }
30480
+ if (input.chatType && !input.chatType.forward) {
30481
+ return { kind: "drop", reason: "chat_type" };
30482
+ }
30480
30483
  if (input.senderPolicy && !input.senderPolicy.forward) {
30481
30484
  const reason = input.senderPolicy.reason;
30482
30485
  const declineWorthy = input.sameOrg && reason !== "internal_only";
@@ -14930,6 +14930,9 @@ function decideInboundAccess(input) {
14930
14930
  if (input.orgBoundary && !input.orgBoundary.forward) {
14931
14931
  return { kind: "drop", reason: "org_boundary" };
14932
14932
  }
14933
+ if (input.chatType && !input.chatType.forward) {
14934
+ return { kind: "drop", reason: "chat_type" };
14935
+ }
14933
14936
  if (input.senderPolicy && !input.senderPolicy.forward) {
14934
14937
  const reason = input.senderPolicy.reason;
14935
14938
  const declineWorthy = input.sameOrg && reason !== "internal_only";
@@ -30709,6 +30709,9 @@ function decideInboundAccess(input) {
30709
30709
  if (input.orgBoundary && !input.orgBoundary.forward) {
30710
30710
  return { kind: "drop", reason: "org_boundary" };
30711
30711
  }
30712
+ if (input.chatType && !input.chatType.forward) {
30713
+ return { kind: "drop", reason: "chat_type" };
30714
+ }
30712
30715
  if (input.senderPolicy && !input.senderPolicy.forward) {
30713
30716
  const reason = input.senderPolicy.reason;
30714
30717
  const declineWorthy = input.sameOrg && reason !== "internal_only";
@@ -30737,12 +30740,14 @@ function decideInboundAccess(input) {
30737
30740
  return { kind: "admit" };
30738
30741
  }
30739
30742
 
30740
- // src/onboarding-dm-gate.ts
30741
- var ONBOARDING_DM_ONLY_MESSAGE = "Sorry, I can only be onboarded from a Direct Message (DM).";
30743
+ // ../core/dist/channels/governance/telegram-chat-type.js
30742
30744
  function isTelegramPrivateChat(chatType) {
30743
30745
  return chatType === "private";
30744
30746
  }
30745
30747
 
30748
+ // src/onboarding-dm-gate.ts
30749
+ var ONBOARDING_DM_ONLY_MESSAGE = "Sorry, I can only be onboarded from a Direct Message (DM).";
30750
+
30746
30751
  // src/flags-cache-read.ts
30747
30752
  import { existsSync as existsSync2, readFileSync as readFileSync3 } from "fs";
30748
30753
  import { homedir as homedir2 } from "os";
@@ -40585,6 +40590,7 @@ var AGT_AGENT_ID = process.env.AGT_AGENT_ID ?? null;
40585
40590
  var ALLOWED_CHATS = new Set(
40586
40591
  (process.env.TELEGRAM_ALLOWED_CHATS ?? "").split(",").map((s) => s.trim()).filter(Boolean)
40587
40592
  );
40593
+ var PRIVATE_CHATS_ONLY = process.env.TELEGRAM_PRIVATE_CHATS_ONLY === "1";
40588
40594
  var DIAGNOSTIC_CHAT_IDS = new Set(
40589
40595
  (process.env.TELEGRAM_DIAGNOSTIC_CHAT_IDS ?? "").split(",").map((s) => s.trim()).filter(Boolean)
40590
40596
  );
@@ -44057,16 +44063,6 @@ async function pollLoop() {
44057
44063
  }
44058
44064
  const msg = update.message;
44059
44065
  if (!msg) continue;
44060
- const perfReplyRef = typeof msg.text === "string" && msg.text.trim().length > 0 && msg.reply_to_message?.from?.is_bot === true && msg.reply_to_message?.text ? PERF_REVIEW_REF_RE.exec(msg.reply_to_message.text) : null;
44061
- if (perfReplyRef && msg.from?.id != null) {
44062
- await postPerfReviewResolve(
44063
- perfReplyRef[1],
44064
- PERF_REVIEW_COMMENT_TOKEN,
44065
- String(msg.from.id),
44066
- msg.text.trim()
44067
- );
44068
- continue;
44069
- }
44070
44066
  const classifiedAttachments = classifyTelegramAttachments(msg);
44071
44067
  const content = typeof msg.text === "string" && msg.text.length > 0 ? msg.text : typeof msg.caption === "string" && msg.caption.length > 0 ? msg.caption : "";
44072
44068
  if (content.length === 0 && classifiedAttachments.length === 0) continue;
@@ -44128,17 +44124,31 @@ async function pollLoop() {
44128
44124
  // TELEGRAM_ALLOWED_CHATS is Telegram's org-boundary axis (the drift
44129
44125
  // the consolidation names). An unlisted chat is external ⇒ silent.
44130
44126
  orgBoundary: ALLOWED_CHATS.size > 0 && !ALLOWED_CHATS.has(chatId) ? { forward: false } : { forward: true },
44127
+ // CS-1628: chat-kind axis. Evaluated before command routing by the
44128
+ // composer, so a `/restart` from a group cannot execute in a chat the
44129
+ // agent is not permitted to be in.
44130
+ chatType: PRIVATE_CHATS_ONLY && !isTelegramPrivateChat(msg.chat?.type) ? { forward: false } : { forward: true },
44131
44131
  command: telegramCommand ? { command: telegramCommand, authorized: true } : void 0,
44132
44132
  // No sender-policy mode system on Telegram, so no same-org decline.
44133
44133
  sameOrg: false
44134
44134
  });
44135
- if (access.kind === "drop" && (access.reason === "org_boundary" || access.reason.startsWith("content:"))) {
44135
+ if (access.kind === "drop" && (access.reason === "org_boundary" || access.reason === "chat_type" || access.reason.startsWith("content:"))) {
44136
44136
  process.stderr.write(
44137
44137
  `telegram-channel(${AGENT_CODE_NAME}): inbound drop reason=${access.reason} chat=${redactId(chatId)}
44138
44138
  `
44139
44139
  );
44140
44140
  continue;
44141
44141
  }
44142
+ const perfReplyRef = typeof msg.text === "string" && msg.text.trim().length > 0 && msg.reply_to_message?.from?.is_bot === true && msg.reply_to_message?.text ? PERF_REVIEW_REF_RE.exec(msg.reply_to_message.text) : null;
44143
+ if (perfReplyRef && msg.from?.id != null) {
44144
+ await postPerfReviewResolve(
44145
+ perfReplyRef[1],
44146
+ PERF_REVIEW_COMMENT_TOKEN,
44147
+ String(msg.from.id),
44148
+ msg.text.trim()
44149
+ );
44150
+ continue;
44151
+ }
44142
44152
  if (msg.chat.type === "private" && !isFromBot && chatId) {
44143
44153
  recordDmActivity(recentDms, String(chatId));
44144
44154
  if (isShuttingDown) recentDmPersister?.flush(recentDms);
@@ -46,7 +46,7 @@ import {
46
46
  writeDirectChatSessionState,
47
47
  writeEgressAllowlist,
48
48
  writePersistentClaudeWrapper
49
- } from "./chunk-7KT2QNXF.js";
49
+ } from "./chunk-5CF4DRXA.js";
50
50
  import "./chunk-IBBBIE4K.js";
51
51
  import "./chunk-XWVM4KPK.js";
52
52
  export {
@@ -98,4 +98,4 @@ export {
98
98
  writeEgressAllowlist,
99
99
  writePersistentClaudeWrapper
100
100
  };
101
- //# sourceMappingURL=persistent-session-H7CP2TUX.js.map
101
+ //# sourceMappingURL=persistent-session-4KGDH66U.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-7KT2QNXF.js";
3
+ } from "./chunk-5CF4DRXA.js";
4
4
  import "./chunk-IBBBIE4K.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
@@ -745,4 +745,4 @@ export {
745
745
  readAndResetSlackReplyBindingClassifications,
746
746
  readAndResetSlackReplyTargetClassifications
747
747
  };
748
- //# sourceMappingURL=responsiveness-probe-MPPDJSOL.js.map
748
+ //# sourceMappingURL=responsiveness-probe-HNUYLIFJ.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.733",
3
+ "version": "0.28.735",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {