@fased/fased 0.1.55 → 0.1.56

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.
Files changed (453) hide show
  1. package/config/capability-catalog.json +12 -0
  2. package/dist/acp/client.js +2 -2
  3. package/dist/acp/secret-file.js +2 -2
  4. package/dist/agents/agent-scope.js +2 -2
  5. package/dist/agents/apply-patch.js +8 -8
  6. package/dist/agents/auth-profiles/paths.js +2 -2
  7. package/dist/agents/auth-profiles/store.js +2 -2
  8. package/dist/agents/authenticated-model-catalog.js +3 -2
  9. package/dist/agents/bash-tools.exec-host-node.js +1 -1
  10. package/dist/agents/bash-tools.exec.js +1 -1
  11. package/dist/agents/bash-tools.shared.js +2 -2
  12. package/dist/agents/cli-credentials.js +4 -4
  13. package/dist/agents/copilot-dynamic-headers.js +37 -0
  14. package/dist/agents/current-model-catalog.js +6 -3
  15. package/dist/agents/docs-path.js +3 -3
  16. package/dist/agents/embedded-pi-mcp.js +4 -4
  17. package/dist/agents/identity-avatar.js +3 -3
  18. package/dist/agents/identity-file.js +2 -2
  19. package/dist/agents/model-catalog-source.js +2 -2
  20. package/dist/agents/model-catalog.js +1 -1
  21. package/dist/agents/model-metadata.js +34 -6
  22. package/dist/agents/openai-codex-app-server.js +499 -0
  23. package/dist/agents/pi-embedded-runner/compact.js +3 -3
  24. package/dist/agents/pi-embedded-runner/extra-params.js +159 -95
  25. package/dist/agents/pi-embedded-runner/model.js +62 -1
  26. package/dist/agents/pi-embedded-runner/moonshot-stream-wrappers.js +46 -0
  27. package/dist/agents/pi-embedded-runner/openai-stream-wrappers.js +221 -0
  28. package/dist/agents/pi-embedded-runner/run/attempt.js +6 -4
  29. package/dist/agents/pi-embedded-runner/run.js +5 -2
  30. package/dist/agents/pi-embedded-runner/utils.js +1 -1
  31. package/dist/agents/pi-embedded-runner.js +1 -1
  32. package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
  33. package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
  34. package/dist/agents/pi-model-discovery.js +6 -6
  35. package/dist/agents/pi-project-settings.js +3 -3
  36. package/dist/agents/pi-tools.js +2 -2
  37. package/dist/agents/sandbox/fs-bridge.js +2 -2
  38. package/dist/agents/session-dirs.js +4 -4
  39. package/dist/agents/session-write-lock.js +13 -13
  40. package/dist/agents/shell-utils.js +5 -5
  41. package/dist/agents/skills/bundled-dir.js +4 -4
  42. package/dist/agents/skills/local-loader.js +6 -6
  43. package/dist/agents/skills/plugin-skills.js +2 -2
  44. package/dist/agents/skills/workspace.js +13 -13
  45. package/dist/agents/skills-install-download.js +7 -7
  46. package/dist/agents/skills-install-plan.js +2 -2
  47. package/dist/agents/skills-install.js +2 -2
  48. package/dist/agents/skills-status.js +2 -2
  49. package/dist/agents/subagent-depth.js +2 -2
  50. package/dist/agents/system-prompt-params.js +2 -2
  51. package/dist/agents/tools/discord-actions-messaging.js +1 -1
  52. package/dist/agents/tools/message-tool.js +1 -1
  53. package/dist/agents/tools/session-status-tool.js +3 -3
  54. package/dist/agents/tools/slack-actions.js +1 -1
  55. package/dist/agents/tools/tts-tool.js +1 -1
  56. package/dist/agents/workspace.js +22 -22
  57. package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
  58. package/dist/auto-reply/reply/agent-runner.js +2 -2
  59. package/dist/auto-reply/reply/commands-export-session.js +7 -7
  60. package/dist/auto-reply/reply/commands-models.js +1 -1
  61. package/dist/auto-reply/reply/directive-handling.impl.js +4 -1
  62. package/dist/auto-reply/reply/dispatch-acp.js +1 -1
  63. package/dist/auto-reply/reply/dispatch-from-config.js +1 -1
  64. package/dist/auto-reply/reply/get-reply-run.js +20 -2
  65. package/dist/auto-reply/reply/model-selection.js +1 -1
  66. package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
  67. package/dist/auto-reply/reply/post-compaction-context.js +3 -3
  68. package/dist/auto-reply/reply/session-reset-model.js +1 -1
  69. package/dist/auto-reply/reply/session.js +3 -3
  70. package/dist/auto-reply/skill-commands.js +3 -3
  71. package/dist/auto-reply/status.js +7 -7
  72. package/dist/auto-reply/thinking.js +1 -1
  73. package/dist/brand.js +1 -1
  74. package/dist/browser/cdp.helpers.js +2 -2
  75. package/dist/browser/chrome.executables.js +3 -3
  76. package/dist/browser/chrome.js +5 -5
  77. package/dist/browser/chrome.profile-decoration.js +6 -6
  78. package/dist/browser/extension-relay.js +7 -7
  79. package/dist/browser/profiles-service.js +2 -2
  80. package/dist/browser/server-context.js +2 -2
  81. package/dist/browser/trash.js +4 -4
  82. package/dist/build-info.json +3 -3
  83. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  84. package/dist/canvas-host/server.js +4 -4
  85. package/dist/capabilities/catalog.js +3 -3
  86. package/dist/channels/plugins/catalog.js +3 -3
  87. package/dist/cli/browser-cli-extension.js +6 -6
  88. package/dist/cli/command-format.js +2 -2
  89. package/dist/cli/cron-cli/register.cron-add.js +1 -1
  90. package/dist/cli/cron-cli/register.cron-simple.js +2 -2
  91. package/dist/cli/dns-cli.js +9 -9
  92. package/dist/cli/gateway-cli/dev.js +5 -5
  93. package/dist/cli/gateway-cli/run.js +2 -2
  94. package/dist/cli/hooks-cli.js +5 -5
  95. package/dist/cli/lightweight/gateway-runtime-probe.js +2 -2
  96. package/dist/cli/memory-cli.js +7 -7
  97. package/dist/cli/nodes-media-utils.js +2 -2
  98. package/dist/cli/plugins-cli.js +2 -2
  99. package/dist/cli/program/register.agent.js +1 -1
  100. package/dist/cli/secrets-cli.js +3 -3
  101. package/dist/cli/windows-argv.js +2 -2
  102. package/dist/commands/agent.js +22 -3
  103. package/dist/commands/dashboard-link.js +3 -3
  104. package/dist/commands/doctor-config-flow.js +1 -1
  105. package/dist/commands/doctor-install.js +5 -5
  106. package/dist/commands/doctor-memory-search.js +2 -2
  107. package/dist/commands/doctor-platform-notes.js +2 -2
  108. package/dist/commands/doctor-sandbox.js +2 -2
  109. package/dist/commands/doctor-state-integrity.js +23 -23
  110. package/dist/commands/doctor-workspace.js +3 -3
  111. package/dist/commands/doctor.js +3 -3
  112. package/dist/commands/hosted-dashboard-probe.js +3 -3
  113. package/dist/commands/managed-up.js +2 -2
  114. package/dist/commands/model-picker.js +4 -3
  115. package/dist/commands/models/list.probe.js +1 -1
  116. package/dist/commands/models/list.registry.js +3 -2
  117. package/dist/commands/models/list.status-command.js +2 -2
  118. package/dist/commands/onboard-auth.credentials.js +3 -3
  119. package/dist/commands/onboarding/plugin-install.js +2 -2
  120. package/dist/commands/openai-codex-model-default.js +3 -2
  121. package/dist/commands/sessions-cleanup.js +2 -2
  122. package/dist/commands/signal-install.js +6 -6
  123. package/dist/commands/status-all/channels.js +2 -2
  124. package/dist/commands/wallet.js +47 -47
  125. package/dist/config/cache-utils.js +2 -2
  126. package/dist/config/includes.js +5 -5
  127. package/dist/config/io.js +2 -2
  128. package/dist/config/paths.js +3 -3
  129. package/dist/config/sat-runtime-ids.js +3 -3
  130. package/dist/config/sessions/disk-budget.js +6 -6
  131. package/dist/config/sessions/paths.js +2 -2
  132. package/dist/config/sessions/store.js +17 -17
  133. package/dist/config/sessions/transcript.js +4 -4
  134. package/dist/config/talk.js +2 -2
  135. package/dist/config/zod-schema.agent-defaults.js +4 -2
  136. package/dist/config/zod-schema.agent-runtime.js +4 -2
  137. package/dist/config/zod-schema.core.js +4 -2
  138. package/dist/control-ui/assets/{app-D2RaTXoV.js → app-D7TXyNRi.js} +390 -383
  139. package/dist/control-ui/assets/chat-model-ref-Djkv93yn.js +2 -0
  140. package/dist/control-ui/assets/{index-D2nC6I-9.js → index-BmSBom-w.js} +3 -3
  141. package/dist/control-ui/assets/{providers-CyjiG5Jw.js → providers-Cc89iMdx.js} +3 -3
  142. package/dist/control-ui/index.html +1 -1
  143. package/dist/control-ui/version.json +1 -1
  144. package/dist/cron/isolated-agent/run.js +6 -2
  145. package/dist/cron/service/jobs.js +11 -1
  146. package/dist/cron/service/store.js +2 -2
  147. package/dist/cron/store.js +6 -6
  148. package/dist/daemon/systemd-system.js +5 -5
  149. package/dist/discord/monitor/gateway-plugin.js +2 -2
  150. package/dist/discord/monitor/thread-bindings.state.js +2 -2
  151. package/dist/discord/voice/manager.js +1 -1
  152. package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
  153. package/dist/gateway/client.js +4 -4
  154. package/dist/gateway/control-ui-boot-check.js +6 -6
  155. package/dist/gateway/control-ui-login.js +7 -7
  156. package/dist/gateway/control-ui.js +9 -9
  157. package/dist/gateway/hooks-mapping.js +4 -4
  158. package/dist/gateway/protocol/schema/agents-models-skills.js +63 -4
  159. package/dist/gateway/server-discovery.js +2 -2
  160. package/dist/gateway/server-http.js +4 -4
  161. package/dist/gateway/server-methods/chat.js +3 -3
  162. package/dist/gateway/server-methods/models.js +4 -3
  163. package/dist/gateway/server-methods/sessions.js +8 -8
  164. package/dist/gateway/server-methods/tts.js +2 -2
  165. package/dist/gateway/server-methods/usage.js +2 -2
  166. package/dist/gateway/server-model-catalog.js +1 -1
  167. package/dist/gateway/server.impl.js +3 -3
  168. package/dist/gateway/session-compaction-checkpoints.js +4 -4
  169. package/dist/gateway/session-utils.fs.js +24 -24
  170. package/dist/gateway/session-utils.js +6 -6
  171. package/dist/gateway/sessions-patch.js +27 -24
  172. package/dist/hooks/bundled-dir.js +4 -4
  173. package/dist/hooks/gmail-setup-utils.js +6 -6
  174. package/dist/hooks/import-url.js +2 -2
  175. package/dist/hooks/loader.js +4 -4
  176. package/dist/hooks/workspace.js +7 -7
  177. package/dist/infra/archive.js +17 -17
  178. package/dist/infra/boundary-file-read.js +2 -2
  179. package/dist/infra/boundary-path.js +15 -15
  180. package/dist/infra/brew.js +2 -2
  181. package/dist/infra/control-ui-assets.js +14 -14
  182. package/dist/infra/device-auth-store.js +8 -8
  183. package/dist/infra/device-identity.js +8 -8
  184. package/dist/infra/dotenv.js +2 -2
  185. package/dist/infra/exec-approvals.js +8 -8
  186. package/dist/infra/exec-command-resolution.js +4 -4
  187. package/dist/infra/exec-safe-bin-trust.js +2 -2
  188. package/dist/infra/fased-root.js +5 -5
  189. package/dist/infra/fs-safe.js +14 -14
  190. package/dist/infra/gateway-lock.js +11 -11
  191. package/dist/infra/git-commit.js +5 -5
  192. package/dist/infra/git-root.js +4 -4
  193. package/dist/infra/hosted-runtime-artifact.js +3 -3
  194. package/dist/infra/is-main.js +2 -2
  195. package/dist/infra/json-file.js +7 -7
  196. package/dist/infra/outbound/delivery-queue.js +16 -16
  197. package/dist/infra/path-env.js +3 -3
  198. package/dist/infra/ports-lsof.js +4 -4
  199. package/dist/infra/provider-usage.auth.js +3 -3
  200. package/dist/infra/safe-open-sync.js +2 -2
  201. package/dist/infra/session-cost-usage.js +9 -9
  202. package/dist/infra/shell-env.js +2 -2
  203. package/dist/infra/state-migrations.fs.js +6 -6
  204. package/dist/infra/state-migrations.js +23 -23
  205. package/dist/infra/tmp-fased-dir.js +6 -6
  206. package/dist/infra/widearea-dns.js +3 -3
  207. package/dist/infra/wsl.js +2 -2
  208. package/dist/light-update-status.js +11 -11
  209. package/dist/line/accounts.js +2 -2
  210. package/dist/line/download.js +2 -2
  211. package/dist/logging/config.js +3 -3
  212. package/dist/logging/logger.js +7 -7
  213. package/dist/managed/federation.js +3 -3
  214. package/dist/managed/tunnel.js +3 -3
  215. package/dist/media/store.js +13 -13
  216. package/dist/media-understanding/runner.js +3 -3
  217. package/dist/memory/embeddings.js +2 -2
  218. package/dist/memory/internal.js +10 -10
  219. package/dist/memory/manager-sync-ops.js +7 -7
  220. package/dist/memory/repair-executor.js +17 -17
  221. package/dist/node-host/invoke-system-run-plan.js +8 -8
  222. package/dist/node-host/invoke.js +2 -2
  223. package/dist/node-host/runner.js +3 -3
  224. package/dist/pairing/pairing-store.js +3 -3
  225. package/dist/plugin-sdk/{accounts-CeRNo5Ae.js → accounts-DzWlKv1U.js} +1 -1
  226. package/dist/plugin-sdk/{actions-OMRHtXPj.js → actions-BplQVLL6.js} +4 -4
  227. package/dist/plugin-sdk/{active-listener-BlIkS3iR.js → active-listener-x4MLhYUw.js} +1 -1
  228. package/dist/plugin-sdk/{allow-list-BYeKk0Sy.js → allow-list-DyAxs4yw.js} +1 -1
  229. package/dist/plugin-sdk/{audio-preflight-B2n3a2Tj.js → audio-preflight-G8h3Sn8_.js} +43 -47
  230. package/dist/plugin-sdk/{audit-Ppg6dR_b.js → audit-CWknklvI.js} +1 -1
  231. package/dist/plugin-sdk/{channel-access-af8dWWRv.js → channel-access-a9Dnfw7-.js} +1 -1
  232. package/dist/plugin-sdk/{channel-access-configure-B6IAGlE0.js → channel-access-configure-CD4QDN5E.js} +1 -1
  233. package/dist/plugin-sdk/{channel-adapters.discord-IOZP8Cv5.js → channel-adapters.discord-BS4S4Svh.js} +1 -1
  234. package/dist/plugin-sdk/channel-plugin-common.d.ts +3 -3
  235. package/dist/plugin-sdk/channel-plugin-common.js +4 -4
  236. package/dist/plugin-sdk/{chunk-CD76Byie.js → chunk-B8EZkwiT.js} +1 -1
  237. package/dist/plugin-sdk/{chunk-items-Bu19zrYH.js → chunk-items-CEPklxGe.js} +1 -1
  238. package/dist/plugin-sdk/command-status.d.ts +2 -2
  239. package/dist/plugin-sdk/command-status.js +43 -47
  240. package/dist/plugin-sdk/{commands-registry-DgS55tNj.js → commands-registry-BfEa4tFA.js} +2 -2
  241. package/dist/plugin-sdk/{common-CWvfeiX0.js → common-CbfckC19.js} +1 -1
  242. package/dist/plugin-sdk/{config-CYDETqcF.js → config-Bt5GhnA-.js} +29 -15
  243. package/dist/plugin-sdk/{config-schema-CQ4EVcQG.js → config-schema-B9DKr6J5.js} +95877 -81287
  244. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  245. package/dist/plugin-sdk/device-pair.js +2 -3
  246. package/dist/plugin-sdk/{diagnostic-Dfn1iERm.js → diagnostic-DLL_zekv.js} +3 -3
  247. package/dist/plugin-sdk/{directory-live-DatqU-eS.js → directory-live-CSuYxdwk.js} +1 -1
  248. package/dist/plugin-sdk/{directory-live-ClwN5KKq.js → directory-live-Dw7ZgC9_.js} +1 -1
  249. package/dist/plugin-sdk/discord.d.ts +5 -5
  250. package/dist/plugin-sdk/discord.js +31 -32
  251. package/dist/plugin-sdk/{draft-stream-controls-D4Tb_iS_.js → draft-stream-controls-BqchW1vi.js} +1 -1
  252. package/dist/plugin-sdk/{fetch-guard-BuYrl6q2.js → fetch-guard-CeG6u6ld.js} +1 -1
  253. package/dist/plugin-sdk/{filesystem-manager-B9DDPgfU.js → filesystem-manager-BGGGrkiN.js} +2 -2
  254. package/dist/plugin-sdk/{fs-safe-BG-VzVkL.js → fs-safe-xBqok6yR.js} +1 -1
  255. package/dist/plugin-sdk/{group-mentions-BxDgHCgj.d.ts → group-mentions-BHRff6j8.d.ts} +1 -1
  256. package/dist/plugin-sdk/{guilds-BeT3iHHJ.js → guilds-CDhRIX57.js} +1 -1
  257. package/dist/plugin-sdk/{handle-action-B75UVKxF.js → handle-action-DbzZFYnG.js} +24 -25
  258. package/dist/plugin-sdk/{helpers-BuEwju6y.js → helpers-CluGKuIV.js} +1 -1
  259. package/dist/plugin-sdk/{image-ops-C66HPeAZ.js → image-ops-CUaLtIFj.js} +1 -1
  260. package/dist/plugin-sdk/index.d.ts +7 -7
  261. package/dist/plugin-sdk/index.js +47 -51
  262. package/dist/plugin-sdk/json-store.js +6 -6
  263. package/dist/plugin-sdk/{login-Amr2DpKU.js → login-DJuHYDiK.js} +3 -3
  264. package/dist/plugin-sdk/{login-qr-DMQNEi9m.js → login-qr-CbHL5ayf.js} +3 -3
  265. package/dist/plugin-sdk/{manager-Bvpq49BI.js → manager-oHAvZCT3.js} +7 -7
  266. package/dist/plugin-sdk/{markdown-tables-DmQ7oXOm.js → markdown-tables-Mkx7k92Y.js} +1 -1
  267. package/dist/plugin-sdk/{media-ByLQbEwJ.js → media-CA8sTmVE.js} +4 -4
  268. package/dist/plugin-sdk/{monitor-K_u6daGa.js → monitor-CZrN9pev.js} +51 -55
  269. package/dist/plugin-sdk/{monitor-S_7LrvSj.js → monitor-CmwGqNyV.js} +61 -65
  270. package/dist/plugin-sdk/{openresponses-http-BrDJUZXR.js → openresponses-http-CWOd4war.js} +43 -47
  271. package/dist/plugin-sdk/{optional-runtime-dependency-CbYjAC2b.js → optional-runtime-dependency-DKmk9PZa.js} +1 -1
  272. package/dist/plugin-sdk/{outbound-BuDafBBI.js → outbound-0oN9IfNw.js} +9 -9
  273. package/dist/plugin-sdk/{outbound-attachment-DmZmUqFP.js → outbound-attachment-DdVkqUzE.js} +2 -2
  274. package/dist/plugin-sdk/{pairing-message-D0-UWGFJ.d.ts → pairing-message-BMkkS038.d.ts} +2 -2
  275. package/dist/plugin-sdk/{pairing-message-e4D4eBDA.js → pairing-message-ClqhfCUk.js} +1 -1
  276. package/dist/plugin-sdk/{pairing-store-T3IGoGZg.js → pairing-store-B01mCSct.js} +2 -2
  277. package/dist/plugin-sdk/{pi-model-discovery-DvAG_Png.js → pi-model-discovery-Buz0JC1Y.js} +1 -1
  278. package/dist/plugin-sdk/{pi-model-discovery-runtime-NjkUgjIf.js → pi-model-discovery-runtime-DuwuoteY.js} +2 -2
  279. package/dist/plugin-sdk/{probe-Cyb-DGA3.js → probe--7xtfzMm.js} +3 -3
  280. package/dist/plugin-sdk/{probe-Dlk0Jxpw.js → probe-BFroeK3g.js} +1 -1
  281. package/dist/plugin-sdk/{probe-D8JAILir.js → probe-l_whvGLY.js} +1 -1
  282. package/dist/plugin-sdk/{resolve-channels-zEnvugag.js → probe-xY3Ky0Tx.js} +3 -4
  283. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
  284. package/dist/plugin-sdk/{pw-ai-D7eW43DL.js → pw-ai-B0domrii.js} +6 -8
  285. package/dist/plugin-sdk/{qmd-manager-DCUE21Kj.js → qmd-manager-CFFeM4Fl.js} +3 -3
  286. package/dist/plugin-sdk/{query-expansion-Zr9qQixm.js → query-expansion-CAI2kKLQ.js} +1 -1
  287. package/dist/plugin-sdk/{replies-BMIPmEoP.js → replies-1macZ1mZ.js} +4 -4
  288. package/dist/plugin-sdk/{resolve-channels-ChWKWtA9.js → resolve-channels-87LZrFk_.js} +2 -2
  289. package/dist/plugin-sdk/resolve-channels-CwB2_019.js +4 -0
  290. package/dist/plugin-sdk/{resolve-outbound-target-CXCqUUPV.js → resolve-outbound-target-BdH6LUoW.js} +2 -2
  291. package/dist/plugin-sdk/{resolve-route-DJN-SUSt.js → resolve-route-CkNIKKEW.js} +1 -1
  292. package/dist/plugin-sdk/{resolve-users-BTvjQuui.js → resolve-users-Cxb5wpAQ.js} +1 -1
  293. package/dist/plugin-sdk/{resolve-users-CTzoruIZ.js → resolve-users-V6dHh_2B.js} +2 -2
  294. package/dist/plugin-sdk/{retry-policy-CY1qY6d7.js → retry-policy-9ybIh4Fq.js} +1 -1
  295. package/dist/plugin-sdk/{runtime-CgOkQe0w.js → runtime-Dy420wBu.js} +3 -3
  296. package/dist/plugin-sdk/{runtime-dependency-DvdRNMvs.js → runtime-dependency-CIw9t7-k.js} +123 -15
  297. package/dist/plugin-sdk/{sandbox-paths-lj7_EVuA.js → sandbox-paths-w64tYl0v.js} +1 -1
  298. package/dist/plugin-sdk/sat-runtime.d.ts +3 -3
  299. package/dist/plugin-sdk/sat-runtime.js +44 -10
  300. package/dist/plugin-sdk/{send-BAz22RZr.js → send-2VcOMTN5.js} +9 -9
  301. package/dist/plugin-sdk/{send-2ITqny2W.js → send-BQUtCJFW.js} +10 -10
  302. package/dist/plugin-sdk/{send-Cr-dj6S-.js → send-DPJIIYAs.js} +6 -6
  303. package/dist/plugin-sdk/{send-BG3RWyil.js → send-Dqes9tdU.js} +13 -13
  304. package/dist/plugin-sdk/{send-eTxqFFsw.js → send-J4JWKP62.js} +8 -8
  305. package/dist/plugin-sdk/{session-C8nJmmVE.js → session-C_n2S5ub.js} +3 -3
  306. package/dist/plugin-sdk/{skill-commands-Rm5by9S8.js → skill-commands-B7wx9ax8.js} +102 -102
  307. package/dist/plugin-sdk/{slack-xvIVvyEM.js → slack-BouRQG-W.js} +64 -68
  308. package/dist/plugin-sdk/{slack-actions-BNIALJTA.js → slack-actions-CasHVtiq.js} +20 -21
  309. package/dist/plugin-sdk/slack.d.ts +5 -5
  310. package/dist/plugin-sdk/slack.js +13 -13
  311. package/dist/plugin-sdk/{ssrf-BZG8Ztod.js → ssrf-fG4UHKBw.js} +180 -2
  312. package/dist/plugin-sdk/{sticker-cache-D3oDiu2u.js → sticker-cache-BvGEUas3.js} +3 -3
  313. package/dist/plugin-sdk/{tables-DS5L7lCA.js → tables-CjlQJV4r.js} +2 -2
  314. package/dist/plugin-sdk/{device-pairing-D2Yq-_U6.js → tailscale-status-DwpNdO3Z.js} +104 -2
  315. package/dist/plugin-sdk/{targets-D6lUomJc.js → targets-QfP164Dh.js} +2 -2
  316. package/dist/plugin-sdk/{telegram-actions-MSFkDn0m.js → telegram-actions-CwYjV6Db.js} +48 -52
  317. package/dist/plugin-sdk/telegram.d.ts +5 -5
  318. package/dist/plugin-sdk/telegram.js +11 -11
  319. package/dist/plugin-sdk/{thread-bindings.lifecycle-Ry6Vcgw3.js → thread-bindings.lifecycle-DU4iX_Jr.js} +3 -3
  320. package/dist/plugin-sdk/{thread-bindings.state-C0stmvNk.js → thread-bindings.state-BgYWFjNF.js} +2 -2
  321. package/dist/plugin-sdk/{tmp-fased-dir-D91GExk4.d.ts → tmp-fased-dir-BdFQvrvw.d.ts} +2 -2
  322. package/dist/plugin-sdk/{types-DVTIpopt.d.ts → types-BYDL6dQj.d.ts} +2 -2
  323. package/dist/plugin-sdk/{types-DKvBJHfH.d.ts → types-CLIvQaVg.d.ts} +26 -1
  324. package/dist/plugin-sdk/{types-BzadOItY.d.ts → types-DyhXnYUr.d.ts} +1 -1
  325. package/dist/plugin-sdk/{types.plugin-BiHPaDTF.d.ts → types.plugin-_fbu40Re.d.ts} +7 -5
  326. package/dist/plugin-sdk/{web-DRNJxHXA.js → web-D0yENDve.js} +52 -56
  327. package/dist/plugin-sdk/{whatsapp-actions-BDXZF2R5.js → whatsapp-actions-BT2nPLyo.js} +18 -19
  328. package/dist/plugin-sdk/{whatsapp-heartbeat-CKgmwCGr.js → whatsapp-heartbeat-CiABSZ6G.js} +2 -2
  329. package/dist/plugin-sdk/whatsapp.d.ts +5 -5
  330. package/dist/plugin-sdk/whatsapp.js +14 -14
  331. package/dist/plugin-sdk/{wsl-Biw7Mj39.js → wsl-B_ojyEtC.js} +53 -53
  332. package/dist/plugins/bundled-dir.js +3 -3
  333. package/dist/plugins/discovery.js +11 -11
  334. package/dist/plugins/loader.js +13 -13
  335. package/dist/plugins/manifest-registry.js +2 -2
  336. package/dist/plugins/manifest.js +4 -4
  337. package/dist/plugins/path-safety.js +3 -3
  338. package/dist/plugins/runtime/index.js +1 -1
  339. package/dist/plugins/status-cache.js +9 -9
  340. package/dist/plugins/update.js +3 -3
  341. package/dist/plugins/web-search-install-catalog.js +3 -3
  342. package/dist/providers/github-copilot-model-discovery.js +51 -0
  343. package/dist/providers/openai-codex-model-discovery.js +166 -0
  344. package/dist/providers/refresh.js +116 -34
  345. package/dist/providers/registry.js +2 -2
  346. package/dist/providers/runtime-model-catalog.js +97 -28
  347. package/dist/secrets/apply.js +16 -16
  348. package/dist/secrets/audit.js +11 -11
  349. package/dist/secrets/shared.js +9 -9
  350. package/dist/security/scan-paths.js +2 -2
  351. package/dist/shared/config-eval.js +2 -2
  352. package/dist/shared/model-thinking.js +13 -2
  353. package/dist/shared/pid-alive.js +2 -2
  354. package/dist/tasks/standing-orders.js +5 -5
  355. package/dist/tasks/task-flow-registry.js +5 -5
  356. package/dist/tasks/task-registry.js +5 -5
  357. package/dist/tasks/workflow-definitions.js +6 -6
  358. package/dist/telegram/bot-message-context.js +1 -1
  359. package/dist/telegram/token.js +5 -5
  360. package/dist/utils.js +5 -5
  361. package/dist/wallet/local-socket-signer-broker.js +16 -16
  362. package/dist/wallet/providers/embedded-keystore-adapter.js +5 -5
  363. package/dist/wallet/providers/local-socket-signer-adapter.js +2 -2
  364. package/dist/wallet/wallet-approval-auth.js +5 -5
  365. package/dist/wallet/wallet-audit-log.js +5 -5
  366. package/dist/wallet/wallet-custody.js +21 -21
  367. package/dist/wallet/wallet-inbound-events.js +5 -5
  368. package/dist/wallet/wallet-observability.js +5 -5
  369. package/dist/wallet/wallet-policy.js +9 -9
  370. package/dist/wallet/wallet-provider-registry.js +7 -7
  371. package/dist/wallet/wallet-runtime-config.js +3 -3
  372. package/dist/wallet/wallet-secrets-store.js +22 -22
  373. package/dist/wallet/wallet-send-approvals.js +5 -5
  374. package/dist/wallet/wallet-settlement-links.js +5 -5
  375. package/dist/web/accounts.js +3 -3
  376. package/dist/web/auth-store.js +18 -18
  377. package/dist/web/session.js +4 -4
  378. package/dist/wizard/host-security-capability.js +2 -2
  379. package/dist/wizard/onboarding.host-security.js +7 -7
  380. package/dist/wizard/onboarding.js +7 -7
  381. package/dist/wizard/onboarding.wallet.js +44 -44
  382. package/extensions/acpx/package.json +1 -1
  383. package/extensions/bluebubbles/package.json +1 -1
  384. package/extensions/copilot-proxy/package.json +1 -1
  385. package/extensions/diagnostics-otel/package.json +1 -1
  386. package/extensions/fased-federation/package.json +1 -1
  387. package/extensions/google-gemini-cli-auth/package.json +1 -1
  388. package/extensions/imessage/package.json +1 -1
  389. package/extensions/irc/package.json +1 -1
  390. package/extensions/line/package.json +1 -1
  391. package/extensions/llm-task/package.json +1 -1
  392. package/extensions/lobster/package.json +1 -1
  393. package/extensions/matrix/CHANGELOG.md +6 -0
  394. package/extensions/matrix/package.json +1 -1
  395. package/extensions/mattermost/package.json +1 -1
  396. package/extensions/memory-core/package.json +2 -2
  397. package/extensions/memory-lancedb/package.json +1 -1
  398. package/extensions/minimax-portal-auth/package.json +1 -1
  399. package/extensions/msteams/CHANGELOG.md +6 -0
  400. package/extensions/msteams/package.json +1 -1
  401. package/extensions/nextcloud-talk/package.json +1 -1
  402. package/extensions/nostr/CHANGELOG.md +6 -0
  403. package/extensions/nostr/package.json +1 -1
  404. package/extensions/open-prose/package.json +1 -1
  405. package/extensions/sat-mining/package.json +1 -1
  406. package/extensions/signal/package.json +1 -1
  407. package/extensions/synology-chat/package.json +1 -1
  408. package/extensions/tlon/package.json +1 -1
  409. package/extensions/twitch/CHANGELOG.md +6 -0
  410. package/extensions/twitch/package.json +1 -1
  411. package/extensions/voice-call/CHANGELOG.md +6 -0
  412. package/extensions/voice-call/package.json +1 -1
  413. package/extensions/zalo/CHANGELOG.md +6 -0
  414. package/extensions/zalo/package.json +1 -1
  415. package/extensions/zalouser/CHANGELOG.md +6 -0
  416. package/extensions/zalouser/package.json +1 -1
  417. package/package.json +2 -1
  418. package/dist/control-ui/assets/chat-model-ref-BZFblCeY.js +0 -2
  419. package/dist/plugin-sdk/ip-C70a-YlD.js +0 -181
  420. package/dist/plugin-sdk/tailscale-status-ClsquRGs.js +0 -104
  421. package/dist/plugin-sdk/wallet-status-f0HagNeO.js +0 -11947
  422. package/dist/plugin-sdk/ws-CocpWGhl.js +0 -114
  423. /package/dist/plugin-sdk/{blocks-input-Dcitfh7h.js → blocks-input-Bg-8S2pl.js} +0 -0
  424. /package/dist/plugin-sdk/{channel-activity-Cg1xRoc2.js → channel-activity-DBDMQ3yI.js} +0 -0
  425. /package/dist/plugin-sdk/{channel-core-BOkyXXLa.js → channel-core-CFRs8LPy.js} +0 -0
  426. /package/dist/plugin-sdk/{client-D2N7hqVu.js → client-pI228AVT.js} +0 -0
  427. /package/dist/plugin-sdk/{command-poll-backoff-NAePk3eL.js → command-poll-backoff-yJU83wEq.js} +0 -0
  428. /package/dist/plugin-sdk/{date-time-CE3Uer3C.js → date-time-uUevHscU.js} +0 -0
  429. /package/dist/plugin-sdk/{diagnostic-session-state-HO94DMou.js → diagnostic-session-state-DqgfGYqZ.js} +0 -0
  430. /package/dist/plugin-sdk/{draft-stream-loop-CKyHn8IX.js → draft-stream-loop-CrOPfV3F.js} +0 -0
  431. /package/dist/plugin-sdk/{fetch-Cu-ahkie.js → fetch-BtmoPIlf.js} +0 -0
  432. /package/dist/plugin-sdk/{gateway-registry-DFsoY6C0.js → gateway-registry-DZDsqicG.js} +0 -0
  433. /package/dist/plugin-sdk/{inbound-context-BFnIdcqI.js → inbound-context-DrAcXE0y.js} +0 -0
  434. /package/dist/plugin-sdk/{internal-qo16nNU1.js → internal-CG_nHo-2.js} +0 -0
  435. /package/dist/plugin-sdk/{memory-search-C3C0bD2H.js → memory-search-VFll-AIb.js} +0 -0
  436. /package/dist/plugin-sdk/{pairing-token-N_6Jbt1L.js → pairing-token-Cs3BRKc0.js} +0 -0
  437. /package/dist/plugin-sdk/{path-alias-guards-Dg3gU-MA.js → path-alias-guards-BJZD5JMJ.js} +0 -0
  438. /package/dist/plugin-sdk/{polls-DQrR-qT3.js → polls-DKQXVfJp.js} +0 -0
  439. /package/dist/plugin-sdk/{proxy-7xs_rsnV.js → proxy-DWpYcsvR.js} +0 -0
  440. /package/dist/plugin-sdk/{qmd-scope-D1sSG_Rx.js → qmd-scope-CdX34VCV.js} +0 -0
  441. /package/dist/plugin-sdk/{redact-identifier-Q3tkvxhm.js → redact-identifier-Lt7t3l7S.js} +0 -0
  442. /package/dist/plugin-sdk/{redact-sensitive-url-dPvnFFsK.js → redact-sensitive-url-g-ukZjwA.js} +0 -0
  443. /package/dist/plugin-sdk/{render-Bwu_WxwA.js → render-e7fENCYH.js} +0 -0
  444. /package/dist/plugin-sdk/{reply-prefix-Bqzm6DC1.js → reply-prefix-ClpxvL_w.js} +0 -0
  445. /package/dist/plugin-sdk/{reply-reference-BkbK_DWT.js → reply-reference-Bqk-7HXE.js} +0 -0
  446. /package/dist/plugin-sdk/{secure-random-Bl-AVLVb.js → secure-random-BIkG-k4s.js} +0 -0
  447. /package/dist/plugin-sdk/{shared-clhhbWN3.js → shared-CBgp_GBw.js} +0 -0
  448. /package/dist/plugin-sdk/{target-errors-C_SVKoEv.js → target-errors-Ckufe179.js} +0 -0
  449. /package/dist/plugin-sdk/{targets-BDvvnlph.js → targets-CoMJ1ry1.js} +0 -0
  450. /package/dist/plugin-sdk/{tokens-BvtlOzVP.js → tokens-BbnqfVuu.js} +0 -0
  451. /package/dist/plugin-sdk/{tool-loop-detection-CWphm1k_.js → tool-loop-detection-Bp8bPJLs.js} +0 -0
  452. /package/dist/plugin-sdk/{ui-e020ouhJ.js → ui-Be8cLHIS.js} +0 -0
  453. /package/dist/plugin-sdk/{with-timeout-BYrRAYFV.js → with-timeout-ckWB8rTo.js} +0 -0
@@ -1,28 +1,28 @@
1
- import { Jt as resolveSlackGroupRequireMention, Nn as getChatChannelMeta, Yt as resolveSlackGroupToolPolicy, _t as listWhatsAppDirectoryPeersFromConfig, cn as buildSlackThreadingToolContext, dt as listDiscordDirectoryPeersFromConfig, ft as listSlackDirectoryGroupsFromConfig, gt as listWhatsAppDirectoryGroupsFromConfig, ht as listTelegramDirectoryPeersFromConfig, mt as listTelegramDirectoryGroupsFromConfig, pt as listSlackDirectoryPeersFromConfig, ut as listDiscordDirectoryGroupsFromConfig, vt as looksLikeSlackTargetId, yt as normalizeSlackMessagingTarget } from "./runtime-CgOkQe0w.js";
1
+ import { Jt as resolveSlackGroupRequireMention, Nn as getChatChannelMeta, Yt as resolveSlackGroupToolPolicy, _t as listWhatsAppDirectoryPeersFromConfig, cn as buildSlackThreadingToolContext, dt as listDiscordDirectoryPeersFromConfig, ft as listSlackDirectoryGroupsFromConfig, gt as listWhatsAppDirectoryGroupsFromConfig, ht as listTelegramDirectoryPeersFromConfig, mt as listTelegramDirectoryGroupsFromConfig, pt as listSlackDirectoryPeersFromConfig, ut as listDiscordDirectoryGroupsFromConfig, vt as looksLikeSlackTargetId, yt as normalizeSlackMessagingTarget } from "./runtime-Dy420wBu.js";
2
2
  import "./subsystem-DBPNbQDQ.js";
3
3
  import "./globals-B_jjtAje.js";
4
4
  import "./paths-BEmvSyOV.js";
5
5
  import { d as normalizeE164 } from "./utils-CYk9EKoq.js";
6
- import { h as SlackConfigSchema } from "./config-CYDETqcF.js";
6
+ import { h as SlackConfigSchema } from "./config-Bt5GhnA-.js";
7
7
  import "./agent-scope-BbgPlhtw.js";
8
8
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-HSJ2KQTc.js";
9
9
  import "./accounts-RHZyaB73.js";
10
10
  import { a as resolveSlackReplyToMode, i as resolveSlackAccount, n as listSlackAccountIds, r as resolveDefaultSlackAccountId, t as listEnabledSlackAccounts } from "./accounts-CuqIKU8X.js";
11
11
  import "./logger-BbFvCoKk.js";
12
12
  import "./exec-DQ8j4Fm3.js";
13
- import "./accounts-CeRNo5Ae.js";
13
+ import "./accounts-DzWlKv1U.js";
14
14
  import "./redact-Bm8vu_ju.js";
15
15
  import "./github-copilot-token-CUK__1s1.js";
16
16
  import "./retry-DstNBhDW.js";
17
17
  import "./paths-CTZ2RS_E.js";
18
- import { a as deleteAccountFromConfigSection, c as formatPairingApproveHint, n as applyAccountNameToChannelSection, o as setAccountEnabledInConfigSection, r as migrateBaseNameToDefaultAccount, s as buildChannelConfigSchema, t as PAIRING_APPROVED_MESSAGE, u as emptyPluginConfigSchema } from "./pairing-message-e4D4eBDA.js";
19
- import { A as resolveDefaultGroupPolicy, D as formatDocsLink, _ as setAccountGroupPolicyForChannel, a as noteChannelLookupFailure, b as setOnboardingChannelEnabled, d as promptLegacyChannelAllowFrom, g as resolveOnboardingAccountId, h as resolveAccountIdForConfigure, j as resolveOpenProviderRuntimeGroupPolicy, k as resolveAllowlistProviderRuntimeGroupPolicy, l as patchChannelConfigForAccount, o as noteChannelLookupSummary, s as parseMentionOrPrefixedId, w as buildTokenChannelStatusSummary, y as setLegacyChannelDmPolicyWithAllowFrom } from "./helpers-BuEwju6y.js";
20
- import "./optional-runtime-dependency-CbYjAC2b.js";
21
- import "./image-ops-C66HPeAZ.js";
22
- import { d as readStringParam, n as createActionGate, s as readNumberParam } from "./common-CWvfeiX0.js";
23
- import "./channel-core-BOkyXXLa.js";
24
- import { t as configureChannelAccessWithAllowlist } from "./channel-access-configure-B6IAGlE0.js";
25
- import { t as parseSlackBlocksInput } from "./blocks-input-Dcitfh7h.js";
18
+ import { a as deleteAccountFromConfigSection, c as formatPairingApproveHint, n as applyAccountNameToChannelSection, o as setAccountEnabledInConfigSection, r as migrateBaseNameToDefaultAccount, s as buildChannelConfigSchema, t as PAIRING_APPROVED_MESSAGE, u as emptyPluginConfigSchema } from "./pairing-message-ClqhfCUk.js";
19
+ import { A as resolveDefaultGroupPolicy, D as formatDocsLink, _ as setAccountGroupPolicyForChannel, a as noteChannelLookupFailure, b as setOnboardingChannelEnabled, d as promptLegacyChannelAllowFrom, g as resolveOnboardingAccountId, h as resolveAccountIdForConfigure, j as resolveOpenProviderRuntimeGroupPolicy, k as resolveAllowlistProviderRuntimeGroupPolicy, l as patchChannelConfigForAccount, o as noteChannelLookupSummary, s as parseMentionOrPrefixedId, w as buildTokenChannelStatusSummary, y as setLegacyChannelDmPolicyWithAllowFrom } from "./helpers-CluGKuIV.js";
20
+ import "./optional-runtime-dependency-DKmk9PZa.js";
21
+ import "./image-ops-CUaLtIFj.js";
22
+ import { d as readStringParam, n as createActionGate, s as readNumberParam } from "./common-CbfckC19.js";
23
+ import "./channel-core-CFRs8LPy.js";
24
+ import { t as configureChannelAccessWithAllowlist } from "./channel-access-configure-CD4QDN5E.js";
25
+ import { t as parseSlackBlocksInput } from "./blocks-input-Bg-8S2pl.js";
26
26
 
27
27
  //#region src/slack/message-actions.ts
28
28
  function listSlackMessageActions(cfg) {
@@ -314,7 +314,7 @@ async function promptSlackAllowFrom(params) {
314
314
  parseId,
315
315
  invalidWithoutTokenNote: "Slack token missing; use user ids (or mention form) only.",
316
316
  resolveEntries: async ({ token, entries }) => {
317
- const { resolveSlackUserAllowlist } = await import("./resolve-users-BTvjQuui.js").then((n) => n.n);
317
+ const { resolveSlackUserAllowlist } = await import("./resolve-users-Cxb5wpAQ.js").then((n) => n.n);
318
318
  return resolveSlackUserAllowlist({
319
319
  token,
320
320
  entries
@@ -461,7 +461,7 @@ const slackOnboardingAdapter = {
461
461
  accountId: slackAccountId
462
462
  });
463
463
  if (accountWithTokens.botToken && entries.length > 0) try {
464
- const { resolveSlackChannelAllowlist } = await import("./resolve-channels-zEnvugag.js").then((n) => n.n);
464
+ const { resolveSlackChannelAllowlist } = await import("./resolve-channels-CwB2_019.js");
465
465
  const resolved = await resolveSlackChannelAllowlist({
466
466
  token: accountWithTokens.botToken,
467
467
  entries
@@ -1,8 +1,186 @@
1
- import { d as parseLooseIpAddress, i as isCanonicalDottedDecimalIPv4, n as isBlockedSpecialUseIpv4Address, o as isIpv4Address, r as isBlockedSpecialUseIpv6Address, s as isLegacyIpv4Literal, t as extractEmbeddedIpv4FromIpv6, u as parseCanonicalIpAddress } from "./ip-C70a-YlD.js";
2
1
  import { Agent } from "undici";
3
2
  import { lookup } from "node:dns";
4
3
  import { lookup as lookup$1 } from "node:dns/promises";
4
+ import ipaddr from "ipaddr.js";
5
5
 
6
+ //#region src/shared/net/ip.ts
7
+ const BLOCKED_IPV4_SPECIAL_USE_RANGES = new Set([
8
+ "unspecified",
9
+ "broadcast",
10
+ "multicast",
11
+ "linkLocal",
12
+ "loopback",
13
+ "carrierGradeNat",
14
+ "private",
15
+ "reserved"
16
+ ]);
17
+ const BLOCKED_IPV6_SPECIAL_USE_RANGES = new Set([
18
+ "unspecified",
19
+ "loopback",
20
+ "linkLocal",
21
+ "uniqueLocal",
22
+ "multicast"
23
+ ]);
24
+ const RFC2544_BENCHMARK_PREFIX = [ipaddr.IPv4.parse("198.18.0.0"), 15];
25
+ const EMBEDDED_IPV4_SENTINEL_RULES = [
26
+ {
27
+ matches: (parts) => parts[0] === 0 && parts[1] === 0 && parts[2] === 0 && parts[3] === 0 && parts[4] === 0 && parts[5] === 0,
28
+ toHextets: (parts) => [parts[6], parts[7]]
29
+ },
30
+ {
31
+ matches: (parts) => parts[0] === 100 && parts[1] === 65435 && parts[2] === 1 && parts[3] === 0 && parts[4] === 0 && parts[5] === 0,
32
+ toHextets: (parts) => [parts[6], parts[7]]
33
+ },
34
+ {
35
+ matches: (parts) => parts[0] === 8194,
36
+ toHextets: (parts) => [parts[1], parts[2]]
37
+ },
38
+ {
39
+ matches: (parts) => parts[0] === 8193 && parts[1] === 0,
40
+ toHextets: (parts) => [parts[6] ^ 65535, parts[7] ^ 65535]
41
+ },
42
+ {
43
+ matches: (parts) => (parts[4] & 64767) === 0 && parts[5] === 24318,
44
+ toHextets: (parts) => [parts[6], parts[7]]
45
+ }
46
+ ];
47
+ function stripIpv6Brackets(value) {
48
+ if (value.startsWith("[") && value.endsWith("]")) return value.slice(1, -1);
49
+ return value;
50
+ }
51
+ function isNumericIpv4LiteralPart(value) {
52
+ return /^[0-9]+$/.test(value) || /^0x[0-9a-f]+$/i.test(value);
53
+ }
54
+ function parseIpv6WithEmbeddedIpv4(raw) {
55
+ if (!raw.includes(":") || !raw.includes(".")) return;
56
+ const match = /^(.*:)([^:%]+(?:\.[^:%]+){3})(%[0-9A-Za-z]+)?$/i.exec(raw);
57
+ if (!match) return;
58
+ const [, prefix, embeddedIpv4, zoneSuffix = ""] = match;
59
+ if (!ipaddr.IPv4.isValidFourPartDecimal(embeddedIpv4)) return;
60
+ const octets = embeddedIpv4.split(".").map((part) => Number.parseInt(part, 10));
61
+ const normalizedIpv6 = `${prefix}${(octets[0] << 8 | octets[1]).toString(16)}:${(octets[2] << 8 | octets[3]).toString(16)}${zoneSuffix}`;
62
+ if (!ipaddr.IPv6.isValid(normalizedIpv6)) return;
63
+ return ipaddr.IPv6.parse(normalizedIpv6);
64
+ }
65
+ function isIpv4Address(address) {
66
+ return address.kind() === "ipv4";
67
+ }
68
+ function isIpv6Address(address) {
69
+ return address.kind() === "ipv6";
70
+ }
71
+ function normalizeIpv4MappedAddress(address) {
72
+ if (!isIpv6Address(address)) return address;
73
+ if (!address.isIPv4MappedAddress()) return address;
74
+ return address.toIPv4Address();
75
+ }
76
+ function parseCanonicalIpAddress(raw) {
77
+ const trimmed = raw?.trim();
78
+ if (!trimmed) return;
79
+ const normalized = stripIpv6Brackets(trimmed);
80
+ if (!normalized) return;
81
+ if (ipaddr.IPv4.isValid(normalized)) {
82
+ if (!ipaddr.IPv4.isValidFourPartDecimal(normalized)) return;
83
+ return ipaddr.IPv4.parse(normalized);
84
+ }
85
+ if (ipaddr.IPv6.isValid(normalized)) return ipaddr.IPv6.parse(normalized);
86
+ return parseIpv6WithEmbeddedIpv4(normalized);
87
+ }
88
+ function parseLooseIpAddress(raw) {
89
+ const trimmed = raw?.trim();
90
+ if (!trimmed) return;
91
+ const normalized = stripIpv6Brackets(trimmed);
92
+ if (!normalized) return;
93
+ if (ipaddr.isValid(normalized)) return ipaddr.parse(normalized);
94
+ return parseIpv6WithEmbeddedIpv4(normalized);
95
+ }
96
+ function normalizeIpAddress(raw) {
97
+ const parsed = parseCanonicalIpAddress(raw);
98
+ if (!parsed) return;
99
+ return normalizeIpv4MappedAddress(parsed).toString().toLowerCase();
100
+ }
101
+ function isCanonicalDottedDecimalIPv4(raw) {
102
+ const trimmed = raw?.trim();
103
+ if (!trimmed) return false;
104
+ const normalized = stripIpv6Brackets(trimmed);
105
+ if (!normalized) return false;
106
+ return ipaddr.IPv4.isValidFourPartDecimal(normalized);
107
+ }
108
+ function isLegacyIpv4Literal(raw) {
109
+ const trimmed = raw?.trim();
110
+ if (!trimmed) return false;
111
+ const normalized = stripIpv6Brackets(trimmed);
112
+ if (!normalized || normalized.includes(":")) return false;
113
+ if (isCanonicalDottedDecimalIPv4(normalized)) return false;
114
+ const parts = normalized.split(".");
115
+ if (parts.length === 0 || parts.length > 4) return false;
116
+ if (parts.some((part) => part.length === 0)) return false;
117
+ if (!parts.every((part) => isNumericIpv4LiteralPart(part))) return false;
118
+ return true;
119
+ }
120
+ function isLoopbackIpAddress(raw) {
121
+ const parsed = parseCanonicalIpAddress(raw);
122
+ if (!parsed) return false;
123
+ return normalizeIpv4MappedAddress(parsed).range() === "loopback";
124
+ }
125
+ function isBlockedSpecialUseIpv6Address(address) {
126
+ if (BLOCKED_IPV6_SPECIAL_USE_RANGES.has(address.range())) return true;
127
+ return (address.parts[0] & 65472) === 65216;
128
+ }
129
+ function isBlockedSpecialUseIpv4Address(address, options = {}) {
130
+ const inRfc2544BenchmarkRange = address.match(RFC2544_BENCHMARK_PREFIX);
131
+ if (inRfc2544BenchmarkRange && options.allowRfc2544BenchmarkRange === true) return false;
132
+ return BLOCKED_IPV4_SPECIAL_USE_RANGES.has(address.range()) || inRfc2544BenchmarkRange;
133
+ }
134
+ function decodeIpv4FromHextets(high, low) {
135
+ const octets = [
136
+ high >>> 8 & 255,
137
+ high & 255,
138
+ low >>> 8 & 255,
139
+ low & 255
140
+ ];
141
+ return ipaddr.IPv4.parse(octets.join("."));
142
+ }
143
+ function extractEmbeddedIpv4FromIpv6(address) {
144
+ if (address.isIPv4MappedAddress()) return address.toIPv4Address();
145
+ if (address.range() === "rfc6145") return decodeIpv4FromHextets(address.parts[6], address.parts[7]);
146
+ if (address.range() === "rfc6052") return decodeIpv4FromHextets(address.parts[6], address.parts[7]);
147
+ for (const rule of EMBEDDED_IPV4_SENTINEL_RULES) {
148
+ if (!rule.matches(address.parts)) continue;
149
+ const [high, low] = rule.toHextets(address.parts);
150
+ return decodeIpv4FromHextets(high, low);
151
+ }
152
+ }
153
+ function isIpInCidr(ip, cidr) {
154
+ const normalizedIp = parseCanonicalIpAddress(ip);
155
+ if (!normalizedIp) return false;
156
+ const candidate = cidr.trim();
157
+ if (!candidate) return false;
158
+ const comparableIp = normalizeIpv4MappedAddress(normalizedIp);
159
+ if (!candidate.includes("/")) {
160
+ const exact = parseCanonicalIpAddress(candidate);
161
+ if (!exact) return false;
162
+ const comparableExact = normalizeIpv4MappedAddress(exact);
163
+ return comparableIp.kind() === comparableExact.kind() && comparableIp.toString() === comparableExact.toString();
164
+ }
165
+ let parsedCidr;
166
+ try {
167
+ parsedCidr = ipaddr.parseCIDR(candidate);
168
+ } catch {
169
+ return false;
170
+ }
171
+ const [baseAddress, prefixLength] = parsedCidr;
172
+ const comparableBase = normalizeIpv4MappedAddress(baseAddress);
173
+ if (comparableIp.kind() !== comparableBase.kind()) return false;
174
+ try {
175
+ if (isIpv4Address(comparableIp) && isIpv4Address(comparableBase)) return comparableIp.match([comparableBase, prefixLength]);
176
+ if (isIpv6Address(comparableIp) && isIpv6Address(comparableBase)) return comparableIp.match([comparableBase, prefixLength]);
177
+ return false;
178
+ } catch {
179
+ return false;
180
+ }
181
+ }
182
+
183
+ //#endregion
6
184
  //#region src/infra/net/hostname.ts
7
185
  function normalizeHostname(hostname) {
8
186
  const normalized = hostname.trim().toLowerCase().replace(/\.$/, "");
@@ -206,4 +384,4 @@ async function closeDispatcher(dispatcher) {
206
384
  }
207
385
 
208
386
  //#endregion
209
- export { isBlockedHostnameOrIp as a, normalizeHostname as c, isBlockedHostname as i, closeDispatcher as n, isPrivateIpAddress as o, createPinnedDispatcher as r, resolvePinnedHostnameWithPolicy as s, SsrFBlockedError as t };
387
+ export { isBlockedHostnameOrIp as a, normalizeHostname as c, normalizeIpAddress as d, isBlockedHostname as i, isIpInCidr as l, closeDispatcher as n, isPrivateIpAddress as o, createPinnedDispatcher as r, resolvePinnedHostnameWithPolicy as s, SsrFBlockedError as t, isLoopbackIpAddress as u };
@@ -1,7 +1,7 @@
1
- import { M as findModelInCatalog, N as loadModelCatalog, P as modelSupportsVision, qt as resolveAutoImageModel } from "./config-schema-CQ4EVcQG.js";
1
+ import { Et as resolveAutoImageModel, M as findModelInCatalog, N as loadModelCatalog, P as modelSupportsVision } from "./config-schema-B9DKr6J5.js";
2
2
  import { i as logVerbose } from "./globals-B_jjtAje.js";
3
3
  import { t as STATE_DIR } from "./paths-BEmvSyOV.js";
4
- import { Yt as resolveDefaultModelForAgent, cn as resolveApiKeyForProvider } from "./config-CYDETqcF.js";
4
+ import { Yt as resolveDefaultModelForAgent, cn as resolveApiKeyForProvider } from "./config-Bt5GhnA-.js";
5
5
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-CUK__1s1.js";
6
6
  import path from "node:path";
7
7
  import fs from "node:fs/promises";
@@ -147,7 +147,7 @@ async function describeStickerImage(params) {
147
147
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
148
148
  try {
149
149
  const buffer = await fs.readFile(imagePath);
150
- const { describeImageWithModel } = await import("./config-schema-CQ4EVcQG.js").then((n) => n.on);
150
+ const { describeImageWithModel } = await import("./config-schema-B9DKr6J5.js").then((n) => n.zt);
151
151
  return (await describeImageWithModel({
152
152
  buffer,
153
153
  fileName: "sticker.webp",
@@ -1,5 +1,5 @@
1
- import { l as markdownToIRWithMeta } from "./media-ByLQbEwJ.js";
2
- import { t as renderMarkdownWithMarkers } from "./render-Bwu_WxwA.js";
1
+ import { l as markdownToIRWithMeta } from "./media-CA8sTmVE.js";
2
+ import { t as renderMarkdownWithMarkers } from "./render-e7fENCYH.js";
3
3
 
4
4
  //#region src/markdown/tables.ts
5
5
  const MARKDOWN_STYLE_MARKERS = {
@@ -1,6 +1,37 @@
1
- import { a as resolvePairingPaths, c as writeJsonAtomic, i as pruneExpiredPending, o as createAsyncLock, r as rejectPendingPairingRequest, s as readJsonFile, t as generatePairingToken } from "./pairing-token-N_6Jbt1L.js";
1
+ import { t as runCommandWithTimeout } from "./exec-DQ8j4Fm3.js";
2
+ import { a as resolvePairingPaths, c as writeJsonAtomic, i as pruneExpiredPending, o as createAsyncLock, r as rejectPendingPairingRequest, s as readJsonFile, t as generatePairingToken } from "./pairing-token-Cs3BRKc0.js";
2
3
  import { randomUUID } from "node:crypto";
3
4
 
5
+ //#region src/plugin-sdk/run-command.ts
6
+ async function runPluginCommandWithTimeout(options) {
7
+ const [command] = options.argv;
8
+ if (!command) return {
9
+ code: 1,
10
+ stdout: "",
11
+ stderr: "command is required"
12
+ };
13
+ try {
14
+ const result = await runCommandWithTimeout(options.argv, {
15
+ timeoutMs: options.timeoutMs,
16
+ cwd: options.cwd,
17
+ env: options.env
18
+ });
19
+ const timedOut = result.termination === "timeout" || result.termination === "no-output-timeout";
20
+ return {
21
+ code: result.code ?? 1,
22
+ stdout: result.stdout,
23
+ stderr: timedOut ? result.stderr || `command timed out after ${options.timeoutMs}ms` : result.stderr
24
+ };
25
+ } catch (error) {
26
+ return {
27
+ code: 1,
28
+ stdout: "",
29
+ stderr: error instanceof Error ? error.message : String(error)
30
+ };
31
+ }
32
+ }
33
+
34
+ //#endregion
4
35
  //#region src/shared/device-auth.ts
5
36
  function normalizeDeviceAuthRole(role) {
6
37
  return role.trim();
@@ -153,4 +184,75 @@ async function clearDevicePairing(deviceId, baseDir) {
153
184
  }
154
185
 
155
186
  //#endregion
156
- export { normalizeDeviceAuthRole as a, rejectDevicePairing as i, clearDevicePairing as n, normalizeDeviceAuthScopes as o, listDevicePairing as r, approveDevicePairing as t };
187
+ //#region src/shared/gateway-bind-url.ts
188
+ function resolveGatewayBindUrl(params) {
189
+ const bind = params.bind ?? "loopback";
190
+ if (bind === "custom") {
191
+ const host = params.customBindHost?.trim();
192
+ if (host) return {
193
+ url: `${params.scheme}://${host}:${params.port}`,
194
+ source: "gateway.bind=custom"
195
+ };
196
+ return { error: "gateway.bind=custom requires gateway.customBindHost." };
197
+ }
198
+ if (bind === "tailnet") {
199
+ const host = params.pickTailnetHost();
200
+ if (host) return {
201
+ url: `${params.scheme}://${host}:${params.port}`,
202
+ source: "gateway.bind=tailnet"
203
+ };
204
+ return { error: "gateway.bind=tailnet set, but no tailnet IP was found." };
205
+ }
206
+ if (bind === "lan") {
207
+ const host = params.pickLanHost();
208
+ if (host) return {
209
+ url: `${params.scheme}://${host}:${params.port}`,
210
+ source: "gateway.bind=lan"
211
+ };
212
+ return { error: "gateway.bind=lan set, but no private LAN IP was found." };
213
+ }
214
+ return null;
215
+ }
216
+
217
+ //#endregion
218
+ //#region src/shared/tailscale-status.ts
219
+ const TAILSCALE_STATUS_COMMAND_CANDIDATES = ["tailscale", "/Applications/Tailscale.app/Contents/MacOS/Tailscale"];
220
+ function parsePossiblyNoisyJsonObject(raw) {
221
+ const start = raw.indexOf("{");
222
+ const end = raw.lastIndexOf("}");
223
+ if (start === -1 || end <= start) return {};
224
+ try {
225
+ return JSON.parse(raw.slice(start, end + 1));
226
+ } catch {
227
+ return {};
228
+ }
229
+ }
230
+ function extractTailnetHostFromStatusJson(raw) {
231
+ const parsed = parsePossiblyNoisyJsonObject(raw);
232
+ const self = typeof parsed.Self === "object" && parsed.Self !== null ? parsed.Self : void 0;
233
+ const dns = typeof self?.DNSName === "string" ? self.DNSName : void 0;
234
+ if (dns && dns.length > 0) return dns.replace(/\.$/, "");
235
+ const ips = Array.isArray(self?.TailscaleIPs) ? self.TailscaleIPs : [];
236
+ return ips.length > 0 ? ips[0] ?? null : null;
237
+ }
238
+ async function resolveTailnetHostWithRunner(runCommandWithTimeout) {
239
+ if (!runCommandWithTimeout) return null;
240
+ for (const candidate of TAILSCALE_STATUS_COMMAND_CANDIDATES) try {
241
+ const result = await runCommandWithTimeout([
242
+ candidate,
243
+ "status",
244
+ "--json"
245
+ ], { timeoutMs: 5e3 });
246
+ if (result.code !== 0) continue;
247
+ const raw = result.stdout.trim();
248
+ if (!raw) continue;
249
+ const host = extractTailnetHostFromStatusJson(raw);
250
+ if (host) return host;
251
+ } catch {
252
+ continue;
253
+ }
254
+ return null;
255
+ }
256
+
257
+ //#endregion
258
+ export { listDevicePairing as a, normalizeDeviceAuthScopes as c, clearDevicePairing as i, runPluginCommandWithTimeout as l, resolveGatewayBindUrl as n, rejectDevicePairing as o, approveDevicePairing as r, normalizeDeviceAuthRole as s, resolveTailnetHostWithRunner as t };
@@ -1,5 +1,5 @@
1
- import { Ct as ensureTargetId, Et as requireTargetKind, St as buildMessagingTarget, Tt as parseTargetPrefixes, wt as parseTargetMention } from "./runtime-CgOkQe0w.js";
2
- import { n as listDiscordDirectoryPeersLive } from "./directory-live-DatqU-eS.js";
1
+ import { Ct as ensureTargetId, Et as requireTargetKind, St as buildMessagingTarget, Tt as parseTargetPrefixes, wt as parseTargetMention } from "./runtime-Dy420wBu.js";
2
+ import { n as listDiscordDirectoryPeersLive } from "./directory-live-CSuYxdwk.js";
3
3
 
4
4
  //#region src/discord/targets.ts
5
5
  function parseDiscordTarget(raw, options = {}) {
@@ -1,68 +1,64 @@
1
- import { nr as resolveTelegramInlineButtonsScope, tr as resolveTelegramReactionLevel } from "./config-schema-CQ4EVcQG.js";
2
- import { an as resolveTelegramToken, en as createTelegramActionGate } from "./runtime-CgOkQe0w.js";
1
+ import { Hr as resolveTelegramReactionLevel, Ur as resolveTelegramInlineButtonsScope } from "./config-schema-B9DKr6J5.js";
2
+ import { an as resolveTelegramToken, en as createTelegramActionGate } from "./runtime-Dy420wBu.js";
3
3
  import "./subsystem-DBPNbQDQ.js";
4
4
  import "./globals-B_jjtAje.js";
5
5
  import "./paths-BEmvSyOV.js";
6
6
  import "./utils-CYk9EKoq.js";
7
- import "./config-CYDETqcF.js";
7
+ import "./config-Bt5GhnA-.js";
8
8
  import "./agent-scope-BbgPlhtw.js";
9
9
  import "./accounts-RHZyaB73.js";
10
10
  import "./accounts-CuqIKU8X.js";
11
11
  import "./logger-BbFvCoKk.js";
12
12
  import "./exec-DQ8j4Fm3.js";
13
- import "./accounts-CeRNo5Ae.js";
14
- import "./allow-list-BYeKk0Sy.js";
13
+ import "./accounts-DzWlKv1U.js";
14
+ import "./allow-list-DyAxs4yw.js";
15
15
  import "./redact-Bm8vu_ju.js";
16
16
  import "./github-copilot-token-CUK__1s1.js";
17
17
  import "./retry-DstNBhDW.js";
18
18
  import "./paths-CTZ2RS_E.js";
19
- import "./ip-C70a-YlD.js";
20
- import "./ssrf-BZG8Ztod.js";
21
- import "./fetch-guard-BuYrl6q2.js";
22
- import "./send-Cr-dj6S-.js";
23
- import "./helpers-BuEwju6y.js";
24
- import "./wsl-Biw7Mj39.js";
25
- import "./pairing-store-T3IGoGZg.js";
26
- import "./chunk-CD76Byie.js";
27
- import "./tailscale-status-ClsquRGs.js";
28
- import "./reply-prefix-Bqzm6DC1.js";
29
- import "./tokens-BvtlOzVP.js";
30
- import "./device-pairing-D2Yq-_U6.js";
31
- import "./pairing-token-N_6Jbt1L.js";
32
- import "./diagnostic-Dfn1iERm.js";
33
- import "./diagnostic-session-state-HO94DMou.js";
34
- import { i as resolveTelegramTargetChatType } from "./targets-BDvvnlph.js";
35
- import "./optional-runtime-dependency-CbYjAC2b.js";
36
- import "./image-ops-C66HPeAZ.js";
37
- import "./wallet-status-f0HagNeO.js";
38
- import "./pi-model-discovery-DvAG_Png.js";
39
- import "./runtime-dependency-DvdRNMvs.js";
40
- import "./ws-CocpWGhl.js";
41
- import "./path-alias-guards-Dg3gU-MA.js";
42
- import "./fs-safe-BG-VzVkL.js";
43
- import "./markdown-tables-DmQ7oXOm.js";
44
- import "./media-ByLQbEwJ.js";
45
- import "./send-eTxqFFsw.js";
46
- import "./outbound-attachment-DmZmUqFP.js";
47
- import "./fetch-Cu-ahkie.js";
48
- import "./thread-bindings.state-C0stmvNk.js";
49
- import "./memory-search-C3C0bD2H.js";
50
- import "./manager-Bvpq49BI.js";
51
- import "./query-expansion-Zr9qQixm.js";
52
- import { a as jsonResult, c as readReactionParams, d as readStringParam, s as readNumberParam, u as readStringOrNumberParam } from "./common-CWvfeiX0.js";
53
- import "./commands-registry-DgS55tNj.js";
54
- import "./skill-commands-Rm5by9S8.js";
55
- import "./directory-live-DatqU-eS.js";
56
- import "./targets-D6lUomJc.js";
57
- import "./sandbox-paths-lj7_EVuA.js";
58
- import "./resolve-route-DJN-SUSt.js";
59
- import "./render-Bwu_WxwA.js";
60
- import "./tables-DS5L7lCA.js";
61
- import "./shared-clhhbWN3.js";
62
- import "./retry-policy-CY1qY6d7.js";
63
- import { a as reactMessageTelegram, i as editMessageTelegram, n as createForumTopicTelegram, o as sendMessageTelegram, r as deleteMessageTelegram, s as sendStickerTelegram } from "./send-BG3RWyil.js";
64
- import "./proxy-7xs_rsnV.js";
65
- import { a as searchStickers, r as getCacheStats } from "./sticker-cache-D3oDiu2u.js";
19
+ import "./ssrf-fG4UHKBw.js";
20
+ import "./fetch-guard-CeG6u6ld.js";
21
+ import "./send-DPJIIYAs.js";
22
+ import "./helpers-CluGKuIV.js";
23
+ import "./wsl-B_ojyEtC.js";
24
+ import "./pairing-store-B01mCSct.js";
25
+ import "./chunk-B8EZkwiT.js";
26
+ import "./tailscale-status-DwpNdO3Z.js";
27
+ import "./reply-prefix-ClpxvL_w.js";
28
+ import "./tokens-BbnqfVuu.js";
29
+ import "./pairing-token-Cs3BRKc0.js";
30
+ import "./diagnostic-DLL_zekv.js";
31
+ import "./diagnostic-session-state-DqgfGYqZ.js";
32
+ import { i as resolveTelegramTargetChatType } from "./targets-CoMJ1ry1.js";
33
+ import "./optional-runtime-dependency-DKmk9PZa.js";
34
+ import "./image-ops-CUaLtIFj.js";
35
+ import "./memory-search-VFll-AIb.js";
36
+ import "./manager-oHAvZCT3.js";
37
+ import "./query-expansion-CAI2kKLQ.js";
38
+ import { a as jsonResult, c as readReactionParams, d as readStringParam, s as readNumberParam, u as readStringOrNumberParam } from "./common-CbfckC19.js";
39
+ import "./commands-registry-BfEa4tFA.js";
40
+ import "./runtime-dependency-CIw9t7-k.js";
41
+ import "./path-alias-guards-BJZD5JMJ.js";
42
+ import "./fs-safe-xBqok6yR.js";
43
+ import "./markdown-tables-Mkx7k92Y.js";
44
+ import "./media-CA8sTmVE.js";
45
+ import "./send-J4JWKP62.js";
46
+ import "./outbound-attachment-DdVkqUzE.js";
47
+ import "./fetch-BtmoPIlf.js";
48
+ import "./thread-bindings.state-BgYWFjNF.js";
49
+ import "./skill-commands-B7wx9ax8.js";
50
+ import "./sandbox-paths-w64tYl0v.js";
51
+ import "./directory-live-CSuYxdwk.js";
52
+ import "./targets-QfP164Dh.js";
53
+ import "./pi-model-discovery-Buz0JC1Y.js";
54
+ import "./resolve-route-CkNIKKEW.js";
55
+ import "./render-e7fENCYH.js";
56
+ import "./tables-CjlQJV4r.js";
57
+ import "./shared-CBgp_GBw.js";
58
+ import "./retry-policy-9ybIh4Fq.js";
59
+ import { a as reactMessageTelegram, i as editMessageTelegram, n as createForumTopicTelegram, o as sendMessageTelegram, r as deleteMessageTelegram, s as sendStickerTelegram } from "./send-Dqes9tdU.js";
60
+ import "./proxy-DWpYcsvR.js";
61
+ import { a as searchStickers, r as getCacheStats } from "./sticker-cache-BvGEUas3.js";
66
62
 
67
63
  //#region src/agents/tools/telegram-actions.ts
68
64
  const TELEGRAM_BUTTON_STYLES = [
@@ -1,9 +1,9 @@
1
1
  import { n as DEFAULT_ACCOUNT_ID, r as normalizeAccountId } from "./session-key--_1zVBRB.js";
2
- import { At as FasedAgentConfig, F as ChannelAccountSnapshot, Gt as TelegramAccountConfig, J as ChannelMessageActionAdapter, it as ChannelStatusIssue, n as ChannelPlugin, r as ChannelOnboardingAdapter, u as ChannelMessageActionName, ut as getChatChannelMeta } from "./types.plugin-BiHPaDTF.js";
3
- import { Bt as resolveDefaultGroupPolicy, Cn as readStringParam, Gt as listSlackDirectoryGroupsFromConfig, Jt as listTelegramDirectoryPeersFromConfig, Kt as listSlackDirectoryPeersFromConfig, Lt as TelegramProbe, Ut as listDiscordDirectoryGroupsFromConfig, Vt as resolveOpenProviderRuntimeGroupPolicy, Wt as listDiscordDirectoryPeersFromConfig, Xt as listWhatsAppDirectoryPeersFromConfig, Yt as listWhatsAppDirectoryGroupsFromConfig, _ as FasedAgentPluginApi, qt as listTelegramDirectoryGroupsFromConfig, t as PluginRuntime, yn as createActionGate, zt as resolveAllowlistProviderRuntimeGroupPolicy } from "./types-DVTIpopt.js";
4
- import { D as normalizeE164 } from "./types-DKvBJHfH.js";
5
- import { a as buildChannelConfigSchema, c as emptyPluginConfigSchema, i as setAccountEnabledInConfigSection, n as formatPairingApproveHint, o as applyAccountNameToChannelSection, r as deleteAccountFromConfigSection, s as migrateBaseNameToDefaultAccount, t as PAIRING_APPROVED_MESSAGE } from "./pairing-message-D0-UWGFJ.js";
6
- import { _ as buildTokenChannelStatusSummary, d as resolveTelegramGroupRequireMention, f as resolveTelegramGroupToolPolicy } from "./group-mentions-BxDgHCgj.js";
2
+ import { At as FasedAgentConfig, F as ChannelAccountSnapshot, J as ChannelMessageActionAdapter, Kt as TelegramAccountConfig, it as ChannelStatusIssue, n as ChannelPlugin, r as ChannelOnboardingAdapter, u as ChannelMessageActionName, ut as getChatChannelMeta } from "./types.plugin-_fbu40Re.js";
3
+ import { Bt as resolveDefaultGroupPolicy, Cn as readStringParam, Gt as listSlackDirectoryGroupsFromConfig, Jt as listTelegramDirectoryPeersFromConfig, Kt as listSlackDirectoryPeersFromConfig, Lt as TelegramProbe, Ut as listDiscordDirectoryGroupsFromConfig, Vt as resolveOpenProviderRuntimeGroupPolicy, Wt as listDiscordDirectoryPeersFromConfig, Xt as listWhatsAppDirectoryPeersFromConfig, Yt as listWhatsAppDirectoryGroupsFromConfig, _ as FasedAgentPluginApi, qt as listTelegramDirectoryGroupsFromConfig, t as PluginRuntime, yn as createActionGate, zt as resolveAllowlistProviderRuntimeGroupPolicy } from "./types-BYDL6dQj.js";
4
+ import { D as normalizeE164 } from "./types-CLIvQaVg.js";
5
+ import { a as buildChannelConfigSchema, c as emptyPluginConfigSchema, i as setAccountEnabledInConfigSection, n as formatPairingApproveHint, o as applyAccountNameToChannelSection, r as deleteAccountFromConfigSection, s as migrateBaseNameToDefaultAccount, t as PAIRING_APPROVED_MESSAGE } from "./pairing-message-BMkkS038.js";
6
+ import { _ as buildTokenChannelStatusSummary, d as resolveTelegramGroupRequireMention, f as resolveTelegramGroupToolPolicy } from "./group-mentions-BHRff6j8.js";
7
7
  import { s as TelegramConfigSchema } from "./zod-schema.providers-core-CIzCjXH9.js";
8
8
 
9
9
  //#region src/telegram/accounts.d.ts
@@ -1,28 +1,28 @@
1
- import { Nn as getChatChannelMeta, Xt as resolveTelegramGroupRequireMention, Zt as resolveTelegramGroupToolPolicy, _t as listWhatsAppDirectoryPeersFromConfig, dt as listDiscordDirectoryPeersFromConfig, ft as listSlackDirectoryGroupsFromConfig, gt as listWhatsAppDirectoryGroupsFromConfig, ht as listTelegramDirectoryPeersFromConfig, in as resolveTelegramAccount, mt as listTelegramDirectoryGroupsFromConfig, nn as listTelegramAccountIds, pt as listSlackDirectoryPeersFromConfig, rn as resolveDefaultTelegramAccountId, ut as listDiscordDirectoryGroupsFromConfig } from "./runtime-CgOkQe0w.js";
1
+ import { Nn as getChatChannelMeta, Xt as resolveTelegramGroupRequireMention, Zt as resolveTelegramGroupToolPolicy, _t as listWhatsAppDirectoryPeersFromConfig, dt as listDiscordDirectoryPeersFromConfig, ft as listSlackDirectoryGroupsFromConfig, gt as listWhatsAppDirectoryGroupsFromConfig, ht as listTelegramDirectoryPeersFromConfig, in as resolveTelegramAccount, mt as listTelegramDirectoryGroupsFromConfig, nn as listTelegramAccountIds, pt as listSlackDirectoryPeersFromConfig, rn as resolveDefaultTelegramAccountId, ut as listDiscordDirectoryGroupsFromConfig } from "./runtime-Dy420wBu.js";
2
2
  import "./subsystem-DBPNbQDQ.js";
3
3
  import "./globals-B_jjtAje.js";
4
4
  import "./paths-BEmvSyOV.js";
5
5
  import { c as isRecord, d as normalizeE164 } from "./utils-CYk9EKoq.js";
6
- import { g as TelegramConfigSchema, kr as formatCliCommand } from "./config-CYDETqcF.js";
6
+ import { _a as formatCliCommand, g as TelegramConfigSchema } from "./config-Bt5GhnA-.js";
7
7
  import "./agent-scope-BbgPlhtw.js";
8
8
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-HSJ2KQTc.js";
9
9
  import "./accounts-RHZyaB73.js";
10
10
  import "./accounts-CuqIKU8X.js";
11
11
  import "./logger-BbFvCoKk.js";
12
12
  import "./exec-DQ8j4Fm3.js";
13
- import "./accounts-CeRNo5Ae.js";
13
+ import "./accounts-DzWlKv1U.js";
14
14
  import "./redact-Bm8vu_ju.js";
15
15
  import "./github-copilot-token-CUK__1s1.js";
16
16
  import "./retry-DstNBhDW.js";
17
17
  import "./paths-CTZ2RS_E.js";
18
- import { a as deleteAccountFromConfigSection, c as formatPairingApproveHint, n as applyAccountNameToChannelSection, o as setAccountEnabledInConfigSection, r as migrateBaseNameToDefaultAccount, s as buildChannelConfigSchema, t as PAIRING_APPROVED_MESSAGE, u as emptyPluginConfigSchema } from "./pairing-message-e4D4eBDA.js";
19
- import { A as resolveDefaultGroupPolicy, D as formatDocsLink, b as setOnboardingChannelEnabled, g as resolveOnboardingAccountId, h as resolveAccountIdForConfigure, j as resolveOpenProviderRuntimeGroupPolicy, k as resolveAllowlistProviderRuntimeGroupPolicy, l as patchChannelConfigForAccount, m as promptSingleChannelToken, n as applySingleTokenPromptResult, p as promptResolvedAllowFrom, v as setChannelDmPolicyWithAllowFrom, w as buildTokenChannelStatusSummary, x as splitOnboardingEntries } from "./helpers-BuEwju6y.js";
20
- import { n as normalizeTelegramLookupTarget, r as parseTelegramTarget } from "./targets-BDvvnlph.js";
21
- import "./optional-runtime-dependency-CbYjAC2b.js";
22
- import "./image-ops-C66HPeAZ.js";
23
- import { d as readStringParam, n as createActionGate } from "./common-CWvfeiX0.js";
24
- import { i as resolveEnabledConfiguredAccountId, n as asString, t as appendMatchMetadata } from "./shared-clhhbWN3.js";
25
- import "./channel-core-BOkyXXLa.js";
18
+ import { a as deleteAccountFromConfigSection, c as formatPairingApproveHint, n as applyAccountNameToChannelSection, o as setAccountEnabledInConfigSection, r as migrateBaseNameToDefaultAccount, s as buildChannelConfigSchema, t as PAIRING_APPROVED_MESSAGE, u as emptyPluginConfigSchema } from "./pairing-message-ClqhfCUk.js";
19
+ import { A as resolveDefaultGroupPolicy, D as formatDocsLink, b as setOnboardingChannelEnabled, g as resolveOnboardingAccountId, h as resolveAccountIdForConfigure, j as resolveOpenProviderRuntimeGroupPolicy, k as resolveAllowlistProviderRuntimeGroupPolicy, l as patchChannelConfigForAccount, m as promptSingleChannelToken, n as applySingleTokenPromptResult, p as promptResolvedAllowFrom, v as setChannelDmPolicyWithAllowFrom, w as buildTokenChannelStatusSummary, x as splitOnboardingEntries } from "./helpers-CluGKuIV.js";
20
+ import { n as normalizeTelegramLookupTarget, r as parseTelegramTarget } from "./targets-CoMJ1ry1.js";
21
+ import "./optional-runtime-dependency-DKmk9PZa.js";
22
+ import "./image-ops-CUaLtIFj.js";
23
+ import { d as readStringParam, n as createActionGate } from "./common-CbfckC19.js";
24
+ import { i as resolveEnabledConfiguredAccountId, n as asString, t as appendMatchMetadata } from "./shared-CBgp_GBw.js";
25
+ import "./channel-core-CFRs8LPy.js";
26
26
 
27
27
  //#region src/channels/telegram/api.ts
28
28
  async function fetchTelegramChatId(params) {
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { i as logVerbose } from "./globals-B_jjtAje.js";
3
3
  import { l as resolveAgentIdFromSessionKey, p as normalizeAccountId } from "./session-key-HSJ2KQTc.js";
4
- import { A as DEFAULT_THREAD_BINDING_MAX_AGE_MS, C as resolveThreadBindingMaxAgeMs, D as shouldPersistBindingMutations, E as shouldDefaultPersist, F as resolveThreadBindingIntroText, H as unregisterSessionBindingAdapter, I as resolveThreadBindingThreadName, L as SYSTEM_MARK, M as THREAD_BINDINGS_SWEEP_INTERVAL_MS, O as toReusableWebhookKey, P as resolveThreadBindingFarewellText, S as resolveThreadBindingMaxAgeExpiresAt, T as setBindingRecord, V as registerSessionBindingAdapter, W as readAcpSessionEntry, _ as removeBindingRecord, a as THREAD_BINDING_TOUCH_PERSIST_MIN_INTERVAL_MS, b as resolveThreadBindingIdleTimeoutMs, d as normalizeTargetKind, f as normalizeThreadBindingDurationMs, g as rememberThreadBindingToken, h as rememberReusableWebhook, i as REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL, j as DISCORD_UNKNOWN_CHANNEL_ERROR_CODE, k as DEFAULT_THREAD_BINDING_IDLE_TIMEOUT_MS, l as getThreadBindingToken, m as rememberRecentUnboundWebhookEcho, n as MANAGERS_BY_ACCOUNT_ID, o as ensureBindingsLoaded, p as normalizeThreadId, r as PERSIST_BY_ACCOUNT_ID, s as forgetThreadBindingToken, t as BINDINGS_BY_THREAD_ID, v as resolveBindingIdsForSession, w as saveBindingsToDisk, x as resolveThreadBindingInactivityExpiresAt, y as resolveBindingRecordKey } from "./thread-bindings.state-C0stmvNk.js";
5
- import { t as parseDiscordTarget } from "./targets-D6lUomJc.js";
6
- import { b as sendWebhookMessageDiscord, g as sendMessageDiscord, nt as createDiscordRestClient, x as createThreadDiscord } from "./send-2ITqny2W.js";
4
+ import { A as DEFAULT_THREAD_BINDING_MAX_AGE_MS, C as resolveThreadBindingMaxAgeMs, D as shouldPersistBindingMutations, E as shouldDefaultPersist, F as resolveThreadBindingIntroText, H as unregisterSessionBindingAdapter, I as resolveThreadBindingThreadName, L as SYSTEM_MARK, M as THREAD_BINDINGS_SWEEP_INTERVAL_MS, O as toReusableWebhookKey, P as resolveThreadBindingFarewellText, S as resolveThreadBindingMaxAgeExpiresAt, T as setBindingRecord, V as registerSessionBindingAdapter, W as readAcpSessionEntry, _ as removeBindingRecord, a as THREAD_BINDING_TOUCH_PERSIST_MIN_INTERVAL_MS, b as resolveThreadBindingIdleTimeoutMs, d as normalizeTargetKind, f as normalizeThreadBindingDurationMs, g as rememberThreadBindingToken, h as rememberReusableWebhook, i as REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL, j as DISCORD_UNKNOWN_CHANNEL_ERROR_CODE, k as DEFAULT_THREAD_BINDING_IDLE_TIMEOUT_MS, l as getThreadBindingToken, m as rememberRecentUnboundWebhookEcho, n as MANAGERS_BY_ACCOUNT_ID, o as ensureBindingsLoaded, p as normalizeThreadId, r as PERSIST_BY_ACCOUNT_ID, s as forgetThreadBindingToken, t as BINDINGS_BY_THREAD_ID, v as resolveBindingIdsForSession, w as saveBindingsToDisk, x as resolveThreadBindingInactivityExpiresAt, y as resolveBindingRecordKey } from "./thread-bindings.state-BgYWFjNF.js";
5
+ import { t as parseDiscordTarget } from "./targets-QfP164Dh.js";
6
+ import { b as sendWebhookMessageDiscord, g as sendMessageDiscord, nt as createDiscordRestClient, x as createThreadDiscord } from "./send-BQUtCJFW.js";
7
7
  import { ChannelType, Routes } from "discord-api-types/v10";
8
8
 
9
9
  //#region src/discord/monitor/thread-bindings.persona.ts
@@ -1,6 +1,6 @@
1
- import { $ as mergeSessionEntry, T as updateSessionStore, x as loadSessionStore } from "./runtime-CgOkQe0w.js";
1
+ import { $ as mergeSessionEntry, T as updateSessionStore, x as loadSessionStore } from "./runtime-Dy420wBu.js";
2
2
  import { s as resolveStateDir } from "./paths-BEmvSyOV.js";
3
- import { n as loadConfig } from "./config-CYDETqcF.js";
3
+ import { n as loadConfig } from "./config-Bt5GhnA-.js";
4
4
  import { S as parseAgentSessionKey, l as resolveAgentIdFromSessionKey, p as normalizeAccountId } from "./session-key-HSJ2KQTc.js";
5
5
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-CUK__1s1.js";
6
6
  import { l as resolveStorePath } from "./paths-CTZ2RS_E.js";
@@ -1,5 +1,5 @@
1
- import { At as FasedAgentConfig, l as AgentDefaultsConfig } from "./types.plugin-BiHPaDTF.js";
2
- import { M as LookupFn, P as SsrFPolicy } from "./types-DKvBJHfH.js";
1
+ import { At as FasedAgentConfig, l as AgentDefaultsConfig } from "./types.plugin-_fbu40Re.js";
2
+ import { M as LookupFn, P as SsrFPolicy } from "./types-CLIvQaVg.js";
3
3
 
4
4
  //#region src/agents/agent-scope.d.ts
5
5
  type AgentEntry = NonNullable<NonNullable<FasedAgentConfig["agents"]>["list"]>[number];