@fased/fased 0.1.36 → 0.1.37

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 (244) hide show
  1. package/config/capability-catalog.json +241 -0
  2. package/config/dependency-ownership.json +130 -0
  3. package/config/official-channel-catalog.json +39 -0
  4. package/dist/agents/tools/web-fetch-utils.js +2 -1
  5. package/dist/agents/tools/web-fetch-visibility.js +3 -1
  6. package/dist/brand.js +1 -1
  7. package/dist/browser/pw-session.js +2 -1
  8. package/dist/browser/pw-tools-core.state.js +3 -2
  9. package/dist/browser/runtime-dependency.js +27 -0
  10. package/dist/build-info.json +3 -3
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/capabilities/catalog.js +228 -0
  13. package/dist/cli/components-cli.js +105 -0
  14. package/dist/cli/hooks-cli.js +1 -1
  15. package/dist/cli/plugins-cli.js +3 -3
  16. package/dist/cli/program/register.subclis.js +9 -0
  17. package/dist/cli/update-cli/update-command.js +1 -1
  18. package/dist/commands/doctor-capabilities.js +26 -0
  19. package/dist/commands/doctor.js +2 -0
  20. package/dist/control-ui/assets/{app-DXYMrRJ9.js → app-JBrTSsNu.js} +1480 -1465
  21. package/dist/control-ui/assets/{index-iGQkJE0l.js → index-H-2DWAnH.js} +3 -3
  22. package/dist/control-ui/index.html +1 -1
  23. package/dist/gateway/method-scopes.js +1 -0
  24. package/dist/gateway/server-methods/plugins-marketplace.js +1 -1
  25. package/dist/gateway/server-methods/services.js +8 -0
  26. package/dist/gateway/server-methods-list.js +1 -0
  27. package/dist/infra/optional-runtime-dependency.js +46 -0
  28. package/dist/media/image-ops.js +6 -1
  29. package/dist/media/input-files.js +11 -2
  30. package/dist/media/mime.js +6 -1
  31. package/dist/memory/sqlite-vec.js +7 -1
  32. package/dist/plugin-sdk/{accounts-VqAX3HJ0.js → accounts-BwkH5bTD.js} +1 -1
  33. package/dist/plugin-sdk/{accounts-COY-15zJ.js → accounts-C5BjfxoO.js} +1 -1
  34. package/dist/plugin-sdk/{accounts-Zgt0NP54.js → accounts-RT6y7n3H.js} +1 -1
  35. package/dist/plugin-sdk/{actions-lB3PCwsz.js → actions-BrU_JMqM.js} +2 -2
  36. package/dist/plugin-sdk/{actions-BI5QViLk.js → actions-CUdVHzeJ.js} +2 -2
  37. package/dist/plugin-sdk/{active-listener-DKZiSaRA.js → active-listener-CE8t5g6l.js} +1 -1
  38. package/dist/plugin-sdk/{active-listener-D6_pdTMC.js → active-listener-Dx1SEGDn.js} +1 -1
  39. package/dist/plugin-sdk/{audio-preflight-Dx8J7XhV.js → audio-preflight-C8SbY4fV.js} +22 -22
  40. package/dist/plugin-sdk/{audio-preflight-CeRstduc.js → audio-preflight-CuABlLDL.js} +22 -22
  41. package/dist/plugin-sdk/{audit-BImNOQvk.js → audit-DxB2Kml5.js} +11 -11
  42. package/dist/plugin-sdk/{audit-CKWkq0Un.js → audit-sSeRDwJb.js} +11 -11
  43. package/dist/plugin-sdk/channel-plugin-common.js +3 -2
  44. package/dist/plugin-sdk/{chunk-skAJZWCT.js → chunk-KCxbJLsV.js} +1 -1
  45. package/dist/plugin-sdk/{chunk-Cjw4712g.js → chunk-M2d7r-Zt.js} +1 -1
  46. package/dist/plugin-sdk/{chunk-items-Df5811D0.js → chunk-items-BGbYyNvO.js} +1 -1
  47. package/dist/plugin-sdk/command-status.js +22 -22
  48. package/dist/plugin-sdk/{commands-registry-5J619bQ2.js → commands-registry-CdT-nl7v.js} +2 -2
  49. package/dist/plugin-sdk/{commands-registry-CoLAT03J.js → commands-registry-DoWdYAJd.js} +2 -2
  50. package/dist/plugin-sdk/{common-CSTxewqY.js → common-Cpw-vuuM.js} +1 -1
  51. package/dist/plugin-sdk/{common-BiF0sTnY.js → common-DJWrErdE.js} +1 -1
  52. package/dist/plugin-sdk/{config-BxVjLTIv.js → config-C0qggNKQ.js} +7 -7
  53. package/dist/plugin-sdk/{config-TFokWwvO.js → config-CgwTaper.js} +45 -2
  54. package/dist/plugin-sdk/{config-DXlISPlx.js → config-DtqAN2L3.js} +45 -2
  55. package/dist/plugin-sdk/{config-DgD5T-Ui.js → config-g1MG9Bet.js} +7 -7
  56. package/dist/plugin-sdk/discord.js +2 -1
  57. package/dist/plugin-sdk/{fetch-guard-DPMynms8.js → fetch-guard-BLdujDnt.js} +1 -1
  58. package/dist/plugin-sdk/{fetch-guard-COLmW2TM.js → fetch-guard-DTKgMN9f.js} +1 -1
  59. package/dist/plugin-sdk/{handle-action-C-UndB8E.js → handle-action-B61D85yo.js} +12 -12
  60. package/dist/plugin-sdk/{handle-action-hhufKxmU.js → handle-action-CjcxGzQD.js} +12 -12
  61. package/dist/plugin-sdk/index.js +22 -22
  62. package/dist/plugin-sdk/{login-DL1oBBfL.js → login-CB_nCjX3.js} +3 -3
  63. package/dist/plugin-sdk/{login-YveoqEvH.js → login-CfRfRNc7.js} +2 -2
  64. package/dist/plugin-sdk/{login-Dnxas1dI.js → login-CzUuDd1v.js} +3 -3
  65. package/dist/plugin-sdk/{login-qr-CVQsGWKq.js → login-qr-D7MEpFza.js} +3 -3
  66. package/dist/plugin-sdk/{login-qr-B343JNXJ.js → login-qr-DgxfBFVN.js} +3 -3
  67. package/dist/plugin-sdk/{manager-BytwRIfK.js → manager-9see0IX5.js} +8 -3
  68. package/dist/plugin-sdk/{manager-BZjd_PCt.js → manager-D2kZ0Cps.js} +8 -3
  69. package/dist/plugin-sdk/{markdown-tables-krKiU4cT.js → markdown-tables-CCSD52rA.js} +1 -1
  70. package/dist/plugin-sdk/{markdown-tables-9rJDQ1X-.js → markdown-tables-DWUNvLrc.js} +1 -1
  71. package/dist/plugin-sdk/{media-D7ZkWU-A.js → media-C7YT4DeU.js} +13 -4
  72. package/dist/plugin-sdk/{media-C6C2c9a4.js → media-Cxw-xLGU.js} +13 -4
  73. package/dist/plugin-sdk/{monitor-CVQNDfhs.js → monitor-9X7wapUN.js} +27 -27
  74. package/dist/plugin-sdk/{monitor-BCxkQBoh.js → monitor-B3IfJzKX.js} +26 -26
  75. package/dist/plugin-sdk/{monitor-BzDW50H6.js → monitor-CTjAST_W.js} +27 -27
  76. package/dist/plugin-sdk/{monitor-BsLMfn3U.js → monitor-tYFfy2u-.js} +26 -26
  77. package/dist/plugin-sdk/{openresponses-http-BB67Z4QM.js → openresponses-http-DEB2fEya.js} +22 -22
  78. package/dist/plugin-sdk/{openresponses-http-NE76GGhj.js → openresponses-http-YgMg1jnp.js} +22 -22
  79. package/dist/plugin-sdk/{ssrf-u0Ul7okY.js → optional-runtime-dependency-szS49voX.js} +46 -2
  80. package/dist/plugin-sdk/{outbound-PGNWU6T-.js → outbound-BCxOxdi-.js} +6 -6
  81. package/dist/plugin-sdk/{outbound-BHWJD9q0.js → outbound-JIwQbpRY.js} +6 -6
  82. package/dist/plugin-sdk/{outbound-attachment-BVzfhqnk.js → outbound-attachment-C-jSFaEB.js} +1 -1
  83. package/dist/plugin-sdk/{outbound-attachment-ClMvNW17.js → outbound-attachment-D6tj5Y5H.js} +1 -1
  84. package/dist/plugin-sdk/{pi-embedded-runner-DQ6UPx6-.js → pi-embedded-runner-CUVk8CIj.js} +72 -60
  85. package/dist/plugin-sdk/{pi-model-discovery-D51L5E9I.js → pi-model-discovery-DadlvsZW.js} +1 -1
  86. package/dist/plugin-sdk/{pi-model-discovery-runtime-DxoFm4Vd.js → pi-model-discovery-runtime-C5ssE6EW.js} +1 -1
  87. package/dist/plugin-sdk/{pi-model-discovery-runtime-DRuh4PNV.js → pi-model-discovery-runtime-DAaOPt64.js} +2 -2
  88. package/dist/plugin-sdk/{pi-model-discovery-runtime-CQOauapl.js → pi-model-discovery-runtime-LB-5lX5L.js} +1 -1
  89. package/dist/plugin-sdk/{pi-model-discovery-runtime-BTWgkx4x.js → pi-model-discovery-runtime-gd77b0UF.js} +2 -2
  90. package/dist/plugin-sdk/{pi-model-discovery-CkH5l9X5.js → pi-model-discovery-yifTIDIn.js} +1 -1
  91. package/dist/plugin-sdk/{pw-ai-DZs6uYRd.js → pw-ai-SNCI9UXT.js} +6 -5
  92. package/dist/plugin-sdk/{pw-ai-Cn-EUPZK.js → pw-ai-sH1Pi-Fh.js} +6 -5
  93. package/dist/plugin-sdk/{registry-B4HvWzob.js → registry-DNkJsNsz.js} +4 -3
  94. package/dist/plugin-sdk/{replies-jDMUBsNO.js → replies-fvzN5wnU.js} +2 -2
  95. package/dist/plugin-sdk/{replies-B_LW9c9f.js → replies-zebgZCHX.js} +2 -2
  96. package/dist/plugin-sdk/{resolve-route-_YZHbS-z.js → resolve-route-CNhTJG_2.js} +1 -1
  97. package/dist/plugin-sdk/{resolve-route-DlHzggnG.js → resolve-route-DO0WR4nB.js} +1 -1
  98. package/dist/plugin-sdk/{resolve-utils-zBhVX3Vx.js → resolve-utils-EFP1DYqG.js} +1 -1
  99. package/dist/plugin-sdk/{retry-policy-DGLs5ebP.js → retry-policy-BLYEgIwP.js} +1 -1
  100. package/dist/plugin-sdk/{retry-policy-DaodShGa.js → retry-policy-sM01QZT2.js} +1 -1
  101. package/dist/plugin-sdk/{runtime-Dd0sswuW.js → runtime-BPyuAmka.js} +4 -3
  102. package/dist/plugin-sdk/{paths-DW-U2r7Y.js → runtime-dependency-B-1u41Ph.js} +27 -3
  103. package/dist/plugin-sdk/{paths-CBCpJ5bu.js → runtime-dependency-Csswyv5r.js} +27 -3
  104. package/dist/plugin-sdk/sat-runtime.js +1 -0
  105. package/dist/plugin-sdk/{send-8remZhsH.js → send-B09HRfHN.js} +6 -6
  106. package/dist/plugin-sdk/{send-DaaAscWj.js → send-BBYcgXA4.js} +5 -5
  107. package/dist/plugin-sdk/{send-DFTB0cnx.js → send-BQXQA81e.js} +6 -6
  108. package/dist/plugin-sdk/{send-CtMVvMJs.js → send-BzFdvD_i.js} +6 -6
  109. package/dist/plugin-sdk/{send-Di9irjS-.js → send-C3u-F_8s.js} +6 -6
  110. package/dist/plugin-sdk/{send-Dl88ZKq2.js → send-D3836_UN.js} +6 -6
  111. package/dist/plugin-sdk/{send-ifgZCHVB.js → send-D7tr-EsH.js} +5 -5
  112. package/dist/plugin-sdk/{send-DvUpYh0d.js → send-DRGzRdI3.js} +6 -6
  113. package/dist/plugin-sdk/{send-D2jlPeKH.js → send-DfkPKz_0.js} +4 -4
  114. package/dist/plugin-sdk/{send-QSt6nbny.js → send-DsxFXrCO.js} +4 -4
  115. package/dist/plugin-sdk/{session-CknrceVU.js → session-DG_bYisw.js} +2 -2
  116. package/dist/plugin-sdk/{session-CyRTcJ8N.js → session-EIStzK0E.js} +2 -2
  117. package/dist/plugin-sdk/{skill-commands-DHxkTA0s.js → skill-commands-CkgGmWBS.js} +2 -2
  118. package/dist/plugin-sdk/{skill-commands-CLXAG5sU.js → skill-commands-hyZA0LE3.js} +2 -2
  119. package/dist/plugin-sdk/{slack-BpJXkwxF.js → slack-C0WZVJPZ.js} +34 -34
  120. package/dist/plugin-sdk/{slack-Br9c6Yzs.js → slack-DtlPw_PN.js} +34 -34
  121. package/dist/plugin-sdk/{slack-actions-8tLGt1Ht.js → slack-actions-BQawWGTJ.js} +11 -11
  122. package/dist/plugin-sdk/{slack-actions-CDSSRo8Y.js → slack-actions-DDMszx56.js} +11 -11
  123. package/dist/plugin-sdk/slack.js +2 -1
  124. package/dist/plugin-sdk/src/brand.d.ts +2 -2
  125. package/dist/plugin-sdk/src/browser/runtime-dependency.d.ts +3 -0
  126. package/dist/plugin-sdk/src/infra/optional-runtime-dependency.d.ts +6 -0
  127. package/dist/plugin-sdk/{ssrf-fG4UHKBw.js → ssrf-Cce6LubA.js} +41 -7
  128. package/dist/plugin-sdk/{status-DoxnzyMC.js → status-CIiBeb9B.js} +72 -60
  129. package/dist/plugin-sdk/{sticker-cache-zmJ39ByC.js → sticker-cache-9houHChV.js} +3 -3
  130. package/dist/plugin-sdk/{sticker-cache-D7WcMYsF.js → sticker-cache-Dwi-XsgB.js} +3 -3
  131. package/dist/plugin-sdk/{tables-CkxblF0u.js → tables-BD7H5ug-.js} +1 -1
  132. package/dist/plugin-sdk/{tables-RBtf8G4P.js → tables-CJE8kB35.js} +1 -1
  133. package/dist/plugin-sdk/{telegram-actions-DAeYXSLk.js → telegram-actions-Bu1edXF2.js} +25 -25
  134. package/dist/plugin-sdk/{telegram-actions-BDeS3ocd.js → telegram-actions-CRXVO8lG.js} +25 -25
  135. package/dist/plugin-sdk/telegram.js +2 -1
  136. package/dist/plugin-sdk/{thread-bindings.lifecycle-DsB94WbE.js → thread-bindings.lifecycle-Djem8FWF.js} +2 -2
  137. package/dist/plugin-sdk/{thread-bindings.lifecycle-DMhV3TsR.js → thread-bindings.lifecycle-gmHv3hc7.js} +2 -2
  138. package/dist/plugin-sdk/{thread-bindings.state-DYWpy7hJ.js → thread-bindings.state-CNT2vxm3.js} +2 -2
  139. package/dist/plugin-sdk/{thread-bindings.state-DG5cBaRn.js → thread-bindings.state-D8kN2X6H.js} +2 -2
  140. package/dist/plugin-sdk/{web-IJ4NoGPJ.js → web-DCrVQr6y.js} +26 -26
  141. package/dist/plugin-sdk/{web-DJwacWQo.js → web-Ds6OWw3C.js} +26 -26
  142. package/dist/plugin-sdk/{whatsapp-actions-DAY8hWpD.js → whatsapp-actions-68Mfs2dJ.js} +12 -12
  143. package/dist/plugin-sdk/{whatsapp-actions-6opfo-oB.js → whatsapp-actions-DRqtzvTO.js} +12 -12
  144. package/dist/plugin-sdk/whatsapp.js +6 -5
  145. package/dist/plugin-sdk/{wsl-B2euLEc2.js → wsl-DcM2PgSS.js} +3 -3
  146. package/dist/plugin-sdk/{wsl-B8eyviuv.js → wsl-PXrdWitE.js} +3 -3
  147. package/dist/plugins/update.js +1 -1
  148. package/dist/tts/tts-core.js +6 -1
  149. package/dist/wizard/onboarding.finalize.js +9 -0
  150. package/extensions/acpx/package.json +1 -1
  151. package/extensions/bluebubbles/package.json +1 -1
  152. package/extensions/copilot-proxy/package.json +1 -1
  153. package/extensions/diagnostics-otel/package.json +1 -1
  154. package/extensions/fased-federation/package.json +1 -1
  155. package/extensions/google-gemini-cli-auth/package.json +1 -1
  156. package/extensions/imessage/package.json +1 -1
  157. package/extensions/irc/package.json +1 -1
  158. package/extensions/line/package.json +1 -1
  159. package/extensions/llm-task/package.json +1 -1
  160. package/extensions/lobster/package.json +1 -1
  161. package/extensions/matrix/CHANGELOG.md +6 -0
  162. package/extensions/matrix/package.json +1 -1
  163. package/extensions/mattermost/package.json +1 -1
  164. package/extensions/memory-core/package.json +2 -2
  165. package/extensions/memory-lancedb/package.json +1 -1
  166. package/extensions/minimax-portal-auth/package.json +1 -1
  167. package/extensions/msteams/CHANGELOG.md +6 -0
  168. package/extensions/msteams/package.json +1 -1
  169. package/extensions/nextcloud-talk/package.json +1 -1
  170. package/extensions/nostr/CHANGELOG.md +6 -0
  171. package/extensions/nostr/package.json +1 -1
  172. package/extensions/open-prose/package.json +1 -1
  173. package/extensions/sat-mining/package.json +1 -1
  174. package/extensions/signal/package.json +1 -1
  175. package/extensions/synology-chat/package.json +1 -1
  176. package/extensions/tlon/package.json +1 -1
  177. package/extensions/twitch/CHANGELOG.md +6 -0
  178. package/extensions/twitch/package.json +1 -1
  179. package/extensions/voice-call/CHANGELOG.md +6 -0
  180. package/extensions/voice-call/package.json +1 -1
  181. package/extensions/zalo/CHANGELOG.md +6 -0
  182. package/extensions/zalo/package.json +1 -1
  183. package/extensions/zalouser/CHANGELOG.md +6 -0
  184. package/extensions/zalouser/package.json +1 -1
  185. package/package.json +22 -15
  186. package/extensions/feishu/fased.plugin.json +0 -10
  187. package/extensions/feishu/index.ts +0 -63
  188. package/extensions/feishu/package.json +0 -33
  189. package/extensions/feishu/skills/feishu-doc/SKILL.md +0 -211
  190. package/extensions/feishu/skills/feishu-doc/references/block-types.md +0 -103
  191. package/extensions/feishu/skills/feishu-drive/SKILL.md +0 -97
  192. package/extensions/feishu/skills/feishu-perm/SKILL.md +0 -119
  193. package/extensions/feishu/skills/feishu-wiki/SKILL.md +0 -111
  194. package/extensions/feishu/src/accounts.ts +0 -159
  195. package/extensions/feishu/src/bitable.ts +0 -713
  196. package/extensions/feishu/src/bot.ts +0 -979
  197. package/extensions/feishu/src/channel.ts +0 -359
  198. package/extensions/feishu/src/client.ts +0 -118
  199. package/extensions/feishu/src/config-schema.ts +0 -226
  200. package/extensions/feishu/src/dedup.ts +0 -54
  201. package/extensions/feishu/src/directory.ts +0 -177
  202. package/extensions/feishu/src/doc-schema.ts +0 -122
  203. package/extensions/feishu/src/docx.ts +0 -998
  204. package/extensions/feishu/src/drive-schema.ts +0 -46
  205. package/extensions/feishu/src/drive.ts +0 -232
  206. package/extensions/feishu/src/dynamic-agent.ts +0 -131
  207. package/extensions/feishu/src/external-keys.ts +0 -19
  208. package/extensions/feishu/src/media.ts +0 -447
  209. package/extensions/feishu/src/mention.ts +0 -133
  210. package/extensions/feishu/src/monitor.ts +0 -434
  211. package/extensions/feishu/src/onboarding.ts +0 -430
  212. package/extensions/feishu/src/outbound.ts +0 -56
  213. package/extensions/feishu/src/perm-schema.ts +0 -52
  214. package/extensions/feishu/src/perm.ts +0 -180
  215. package/extensions/feishu/src/policy.ts +0 -116
  216. package/extensions/feishu/src/probe.ts +0 -44
  217. package/extensions/feishu/src/reactions.ts +0 -160
  218. package/extensions/feishu/src/reply-dispatcher.ts +0 -239
  219. package/extensions/feishu/src/runtime.ts +0 -14
  220. package/extensions/feishu/src/send-result.ts +0 -29
  221. package/extensions/feishu/src/send-target.ts +0 -25
  222. package/extensions/feishu/src/send.ts +0 -313
  223. package/extensions/feishu/src/streaming-card.ts +0 -218
  224. package/extensions/feishu/src/targets.ts +0 -78
  225. package/extensions/feishu/src/tool-account.ts +0 -58
  226. package/extensions/feishu/src/tools-config.ts +0 -21
  227. package/extensions/feishu/src/types.ts +0 -81
  228. package/extensions/feishu/src/typing.ts +0 -80
  229. package/extensions/feishu/src/wiki-schema.ts +0 -55
  230. package/extensions/feishu/src/wiki.ts +0 -237
  231. package/extensions/googlechat/fased.plugin.json +0 -9
  232. package/extensions/googlechat/index.ts +0 -19
  233. package/extensions/googlechat/package.json +0 -37
  234. package/extensions/googlechat/src/accounts.ts +0 -147
  235. package/extensions/googlechat/src/actions.ts +0 -176
  236. package/extensions/googlechat/src/api.ts +0 -282
  237. package/extensions/googlechat/src/auth.ts +0 -137
  238. package/extensions/googlechat/src/channel.ts +0 -591
  239. package/extensions/googlechat/src/monitor.ts +0 -996
  240. package/extensions/googlechat/src/onboarding.ts +0 -344
  241. package/extensions/googlechat/src/runtime.ts +0 -14
  242. package/extensions/googlechat/src/targets.ts +0 -65
  243. package/extensions/googlechat/src/types.config.ts +0 -3
  244. package/extensions/googlechat/src/types.ts +0 -73
@@ -1,4 +1,4 @@
1
- import "./config-TFokWwvO.js";
1
+ import "./config-CgwTaper.js";
2
2
  import "./paths-GdhK5mV_.js";
3
3
  import "./globals-BtKmaIS3.js";
4
4
  import "./utils-LGKVujSU.js";
@@ -7,43 +7,43 @@ import "./agent-scope-BuTbywla.js";
7
7
  import "./redact-Ck-wgswc.js";
8
8
  import "./github-copilot-token-Djqpy66R.js";
9
9
  import "./retry-Cq65ROXv.js";
10
- import "./registry-B4HvWzob.js";
10
+ import "./registry-DNkJsNsz.js";
11
11
  import "./accounts-BJFheJNv.js";
12
12
  import "./accounts-BRbbLNW_.js";
13
- import "./accounts-VqAX3HJ0.js";
13
+ import "./accounts-BwkH5bTD.js";
14
14
  import "./tokens-BK5rrwBB.js";
15
15
  import "./allow-list-CBtbuDI8.js";
16
16
  import "./paths-DTurNPnO.js";
17
- import { n as buildCommandsMessagePaginated, r as buildHelpMessage, t as buildCommandsMessage } from "./status-DoxnzyMC.js";
18
- import "./paths-DW-U2r7Y.js";
19
- import "./ssrf-u0Ul7okY.js";
20
- import "./skill-commands-CLXAG5sU.js";
21
- import "./pi-model-discovery-D51L5E9I.js";
17
+ import { n as buildCommandsMessagePaginated, r as buildHelpMessage, t as buildCommandsMessage } from "./status-CIiBeb9B.js";
18
+ import "./runtime-dependency-B-1u41Ph.js";
19
+ import "./ssrf-Cce6LubA.js";
20
+ import "./skill-commands-hyZA0LE3.js";
21
+ import "./pi-model-discovery-DadlvsZW.js";
22
22
  import "./reply-prefix-Y14LY6Rn.js";
23
- import "./media-D7ZkWU-A.js";
23
+ import "./media-C7YT4DeU.js";
24
24
  import "./path-alias-guards-C76pC928.js";
25
25
  import "./fs-safe-BDnJzutp.js";
26
26
  import "./diagnostic-DpyvOvs2.js";
27
- import "./chunk-skAJZWCT.js";
28
- import "./markdown-tables-9rJDQ1X-.js";
29
- import "./send-DaaAscWj.js";
30
- import "./fetch-guard-DPMynms8.js";
31
- import "./outbound-attachment-ClMvNW17.js";
27
+ import "./chunk-KCxbJLsV.js";
28
+ import "./markdown-tables-DWUNvLrc.js";
29
+ import "./send-BBYcgXA4.js";
30
+ import "./fetch-guard-BLdujDnt.js";
31
+ import "./outbound-attachment-D6tj5Y5H.js";
32
32
  import "./fetch-xfeOsibm.js";
33
- import "./common-BiF0sTnY.js";
34
- import "./commands-registry-CoLAT03J.js";
35
- import "./thread-bindings.state-DG5cBaRn.js";
33
+ import "./common-DJWrErdE.js";
34
+ import "./commands-registry-DoWdYAJd.js";
35
+ import "./thread-bindings.state-D8kN2X6H.js";
36
36
  import "./memory-search-B-0Fwnrp.js";
37
- import "./manager-BytwRIfK.js";
37
+ import "./manager-9see0IX5.js";
38
38
  import "./query-expansion-DjJAUtDU.js";
39
39
  import "./diagnostic-session-state-CT36_PCE.js";
40
- import "./wsl-B2euLEc2.js";
40
+ import "./wsl-DcM2PgSS.js";
41
41
  import "./sandbox-paths-DMnFyOaA.js";
42
42
  import "./directory-live-8umGGN7a.js";
43
43
  import "./targets-t1hbjHdJ.js";
44
- import "./send-Dl88ZKq2.js";
45
- import "./resolve-route-DlHzggnG.js";
44
+ import "./send-D3836_UN.js";
45
+ import "./resolve-route-DO0WR4nB.js";
46
46
  import "./render-C9LkRUhd.js";
47
- import "./tables-RBtf8G4P.js";
47
+ import "./tables-BD7H5ug-.js";
48
48
 
49
49
  export { buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage };
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { dt as listChannelDocks, lt as normalizeChannelId, t as getActivePluginRegistry } from "./runtime-Dd0sswuW.js";
2
+ import { dt as listChannelDocks, lt as normalizeChannelId, t as getActivePluginRegistry } from "./runtime-BPyuAmka.js";
3
3
  import { C as isPlainObject, o as escapeRegExp } from "./utils-CYk9EKoq.js";
4
- import { Wt as resolveConfiguredModelRef, Xn as listThinkingLevels, nr as DEFAULT_PROVIDER, tr as DEFAULT_MODEL } from "./config-DXlISPlx.js";
4
+ import { Wt as resolveConfiguredModelRef, Xn as listThinkingLevels, nr as DEFAULT_PROVIDER, tr as DEFAULT_MODEL } from "./config-DtqAN2L3.js";
5
5
 
6
6
  //#region src/config/commands.ts
7
7
  function resolveAutoDefault(providerId) {
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { Hn as DEFAULT_MODEL, Ln as listThinkingLevels, Un as DEFAULT_PROVIDER, wt as resolveConfiguredModelRef } from "./config-TFokWwvO.js";
2
+ import { Hn as DEFAULT_MODEL, Ln as listThinkingLevels, Un as DEFAULT_PROVIDER, wt as resolveConfiguredModelRef } from "./config-CgwTaper.js";
3
3
  import { C as isPlainObject, o as escapeRegExp } from "./utils-LGKVujSU.js";
4
- import { a as getActivePluginRegistry, lt as listChannelDocks, st as normalizeChannelId } from "./registry-B4HvWzob.js";
4
+ import { a as getActivePluginRegistry, lt as listChannelDocks, st as normalizeChannelId } from "./registry-DNkJsNsz.js";
5
5
 
6
6
  //#region src/auto-reply/thinking.ts
7
7
  function normalizeOnOffFullLevel(raw) {
@@ -1,5 +1,5 @@
1
1
  import { t as createSubsystemLogger } from "./subsystem-DBPNbQDQ.js";
2
- import { a as buildImageResizeSideGrid, g as detectMime, i as IMAGE_REDUCE_QUALITY_STEPS, o as getImageMetadata, s as resizeToJpeg } from "./media-C6C2c9a4.js";
2
+ import { a as buildImageResizeSideGrid, g as detectMime, i as IMAGE_REDUCE_QUALITY_STEPS, o as getImageMetadata, s as resizeToJpeg } from "./media-Cxw-xLGU.js";
3
3
  import fs from "node:fs/promises";
4
4
 
5
5
  //#region src/media/base64.ts
@@ -1,5 +1,5 @@
1
1
  import { t as createSubsystemLogger } from "./subsystem-BmpnSVOu.js";
2
- import { a as buildImageResizeSideGrid, g as detectMime, i as IMAGE_REDUCE_QUALITY_STEPS, o as getImageMetadata, s as resizeToJpeg } from "./media-D7ZkWU-A.js";
2
+ import { a as buildImageResizeSideGrid, g as detectMime, i as IMAGE_REDUCE_QUALITY_STEPS, o as getImageMetadata, s as resizeToJpeg } from "./media-C7YT4DeU.js";
3
3
  import fs from "node:fs/promises";
4
4
 
5
5
  //#region src/media/base64.ts
@@ -4,7 +4,7 @@ import path from "node:path";
4
4
  import chalk, { Chalk } from "chalk";
5
5
  import { Logger } from "tslog";
6
6
  import os from "node:os";
7
- import json5 from "json5";
7
+ import JSON5 from "json5";
8
8
  import { isDeepStrictEqual, promisify } from "node:util";
9
9
  import fs$1 from "node:fs/promises";
10
10
  import { execFile, execFileSync } from "node:child_process";
@@ -433,7 +433,7 @@ function readLoggingConfig() {
433
433
  try {
434
434
  if (!fs.existsSync(configPath)) return;
435
435
  const raw = fs.readFileSync(configPath, "utf-8");
436
- const logging = json5.parse(raw)?.logging;
436
+ const logging = JSON5.parse(raw)?.logging;
437
437
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
438
438
  return logging;
439
439
  } catch {
@@ -2795,7 +2795,7 @@ function loadPluginManifest(rootDir) {
2795
2795
  }
2796
2796
  let raw;
2797
2797
  try {
2798
- raw = json5.parse(fs.readFileSync(opened.fd, "utf-8"));
2798
+ raw = JSON5.parse(fs.readFileSync(opened.fd, "utf-8"));
2799
2799
  } catch (err) {
2800
2800
  return {
2801
2801
  ok: false,
@@ -13235,7 +13235,7 @@ const defaultResolver = {
13235
13235
  resolvedPath,
13236
13236
  rootRealDir
13237
13237
  }),
13238
- parseJson: (raw) => json5.parse(raw)
13238
+ parseJson: (raw) => JSON5.parse(raw)
13239
13239
  };
13240
13240
  /**
13241
13241
  * Resolves all $include directives in a parsed config object.
@@ -19848,7 +19848,7 @@ function resolveConfigPathForDeps(deps) {
19848
19848
  function normalizeDeps(overrides = {}) {
19849
19849
  return {
19850
19850
  fs: overrides.fs ?? fs,
19851
- json5: overrides.json5 ?? json5,
19851
+ json5: overrides.json5 ?? JSON5,
19852
19852
  env: overrides.env ?? process.env,
19853
19853
  homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
19854
19854
  configPath: overrides.configPath ?? "",
@@ -19859,11 +19859,11 @@ function maybeLoadDotEnvForConfig(env) {
19859
19859
  if (env !== process.env) return;
19860
19860
  loadDotEnv({ quiet: true });
19861
19861
  }
19862
- function parseConfigJson5(raw, json5$1 = json5) {
19862
+ function parseConfigJson5(raw, json5 = JSON5) {
19863
19863
  try {
19864
19864
  return {
19865
19865
  ok: true,
19866
- parsed: json5$1.parse(raw)
19866
+ parsed: json5.parse(raw)
19867
19867
  };
19868
19868
  } catch (err) {
19869
19869
  return {
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { c as expandHomePrefix, n as resolveConfigPath, o as resolveOAuthPath, r as resolveDefaultConfigCandidates, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-GdhK5mV_.js";
3
- import { C as isPlainObject$2, c as isRecord$3, h as resolveUserPath, p as resolveConfigDir } from "./utils-LGKVujSU.js";
3
+ import { C as isPlainObject$2, c as isRecord$3, h as resolveUserPath, p as resolveConfigDir, t as CONFIG_DIR } from "./utils-LGKVujSU.js";
4
4
  import { d as normalizeChatChannelId, l as CORE_RUNTIME_CHANNEL_IDS, s as CHANNEL_IDS, t as createSubsystemLogger } from "./subsystem-BmpnSVOu.js";
5
5
  import { $ as isPathInside$2, B as openBoundaryFileSync, D as resolveFasedAgentPackageRootSync, F as resolveAgentModelFallbackValues, I as resolveAgentModelPrimaryValue, K as runExec, L as toAgentModelListLike, P as MAX_AGENT_MODEL_FALLBACKS, R as canUseBoundaryFileOpen, i as resolveAgentConfig, l as resolveAgentWorkspaceDir, o as resolveAgentEffectiveModelPrimary, u as resolveDefaultAgentId } from "./agent-scope-BuTbywla.js";
6
6
  import { t as redactSensitiveText } from "./redact-Ck-wgswc.js";
@@ -828,6 +828,28 @@ const DEFAULT_MAX_EXTRACTED_BYTES = 512 * 1024 * 1024;
828
828
  const DEFAULT_MAX_ENTRY_BYTES = 256 * 1024 * 1024;
829
829
  const OPEN_WRITE_FLAGS = constants.O_WRONLY | constants.O_CREAT | constants.O_TRUNC | (process.platform !== "win32" && "O_NOFOLLOW" in constants ? constants.O_NOFOLLOW : 0);
830
830
 
831
+ //#endregion
832
+ //#region src/infra/install-safe-path.ts
833
+ function safeDirName(input) {
834
+ const trimmed = input.trim();
835
+ if (!trimmed) return trimmed;
836
+ return trimmed.replaceAll("/", "__").replaceAll("\\", "__");
837
+ }
838
+ function resolveSafeInstallDir(params) {
839
+ const targetDir = path.join(params.baseDir, safeDirName(params.id));
840
+ const resolvedBase = path.resolve(params.baseDir);
841
+ const resolvedTarget = path.resolve(targetDir);
842
+ const relative = path.relative(resolvedBase, resolvedTarget);
843
+ if (!relative || relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) return {
844
+ ok: false,
845
+ error: params.invalidNameMessage
846
+ };
847
+ return {
848
+ ok: true,
849
+ path: targetDir
850
+ };
851
+ }
852
+
831
853
  //#endregion
832
854
  //#region src/security/scan-paths.ts
833
855
  function isPathInside$1(basePath, candidatePath) {
@@ -1122,6 +1144,27 @@ function getPackageManifestMetadata(manifest) {
1122
1144
  return manifest[MANIFEST_KEY];
1123
1145
  }
1124
1146
 
1147
+ //#endregion
1148
+ //#region src/plugins/install.ts
1149
+ function validatePluginId(pluginId) {
1150
+ if (!pluginId) return "invalid plugin name: missing";
1151
+ if (pluginId === "." || pluginId === "..") return "invalid plugin name: reserved path segment";
1152
+ if (pluginId.includes("/") || pluginId.includes("\\")) return "invalid plugin name: path separators not allowed";
1153
+ return null;
1154
+ }
1155
+ function resolvePluginInstallDir(pluginId, extensionsDir) {
1156
+ const extensionsBase = extensionsDir ? resolveUserPath(extensionsDir) : path.join(CONFIG_DIR, "extensions");
1157
+ const pluginIdError = validatePluginId(pluginId);
1158
+ if (pluginIdError) throw new Error(pluginIdError);
1159
+ const targetDirResult = resolveSafeInstallDir({
1160
+ baseDir: extensionsBase,
1161
+ id: pluginId,
1162
+ invalidNameMessage: "invalid plugin name: path traversal detected"
1163
+ });
1164
+ if (!targetDirResult.ok) throw new Error(targetDirResult.error);
1165
+ return targetDirResult.path;
1166
+ }
1167
+
1125
1168
  //#endregion
1126
1169
  //#region src/plugins/slots.ts
1127
1170
  const DEFAULT_SLOT_BY_KEY = { memory: "memory-core" };
@@ -22859,4 +22902,4 @@ async function writeConfigFile(cfg, options = {}) {
22859
22902
  }
22860
22903
 
22861
22904
  //#endregion
22862
- export { unwrapKnownDispatchWrapperInvocation as $, isTruthyEnvValue as $n, markAuthProfileUsed as $t, setConfigOverride as A, assertSecretInputResolved as An, resolveThinkingDefault as At, normalizeTrustedSafeBinDirs as B, supportsXHighThinking as Bn, resolveModelAuthMode as Bt, isAvatarDataUrl as C, resolveMemorySlotDecision as Cn, parseModelRef as Ct, validateJsonSchemaValue as D, resolveAuthProfileDisplayLabel as Dn, resolveModelRefFromString as Dt, isSupportedLocalAvatarExtension as E, resolveCliName as En, resolveExplicitConfiguredModelRef as Et, unsetConfigValueAtPath as F, formatThinkingLevels as Fn, getApiKeyForModel as Ft, splitCommandChain as G, getPackageManifestMetadata as Gn, normalizeModelCatalogModelId as Gt, analyzeShellCommand as H, DEFAULT_MODEL as Hn, listCurrentModelCatalogRows as Ht, ensurePluginAllowlisted as I, formatXHighModelHint as In, getCustomProviderApiKey as It, resolveAllowlistCandidatePath as J, formatErrorMessage as Jn, auth_profiles_exports as Jt, DEFAULT_SAFE_BINS as K, MANIFEST_KEY as Kn, normalizeModelCatalogProviderId as Kt, getTrustedSafeBinDirs as L, listThinkingLevels as Ln, requireApiKey as Lt, getConfigValueAtPath as M, splitTrailingAuthProfile as Mn, normalizeProviders as Mt, parseConfigPath as N, isOpenAISignInRuntimeModelSupported as Nn, resolveImplicitCopilotProvider as Nt, getConfigOverrides as O, isPrivateNetworkBaseUrl as On, resolveReasoningDefault as Ot, setConfigValueAtPath as P, lookupProviderManifestModelCapability as Pn, resolveImplicitProviders as Pt, isShellWrapperExecutable as Q, resolveShellEnvFallbackTimeoutMs as Qn, markAuthProfileFailure as Qt, isTrustedSafeBinPath as R, normalizeThinkLevel as Rn, resolveApiKeyForProvider as Rt, AVATAR_MAX_BYTES as S, resolveEffectiveEnableState as Sn, normalizeProviderId as St, isPathWithinRoot as T, formatCliCommand as Tn, resolveDefaultModelForAgent as Tt, buildEnforcedShellCommand as U, DEFAULT_PROVIDER as Un, buildModelCatalogMergeKey as Ut, validateSafeBinArgv as V, DEFAULT_CONTEXT_TOKENS as Vn, CURRENT_MODEL_PROVIDER_CATALOG as Vt, isWindowsPlatform as W, VERSION as Wn, mergeModelCatalogRowsByAuthority as Wt, extractShellWrapperInlineCommand as X, isErrno as Xn, getSoonestCooldownExpiry as Xt, resolveCommandResolutionFromArgv as Y, formatUncaughtError as Yn, resolveAuthProfileOrder as Yt, isDispatchWrapperExecutable as Z, getShellPathFromLoginShell as Zn, isProfileInCooldown as Zt, normalizeScpRemoteHost as _, isPathInside as _n, findNormalizedProviderValue as _t, readConfigFileSnapshotForWrite as a, markAuthProfileGood as an, resolveOwnerDisplaySetting as ar, applyMergePatch as at, parseDurationMs as b, isPluginRuntimeSessionReadAllowed as bn, modelKey as bt, validateConfigObjectWithPlugins as c, resolveFasedAgentAgentDir as cn, resolveDiscordPreviewStreamMode as ct, resolveTelegramCustomCommands as d, resolveProcessScopedMap as dn, resolveTelegramPreviewStreamMode as dt, resolveProfilesUnavailableReason as en, parseBooleanValue as er, unwrapKnownShellMultiplexerInvocation as et, DEFAULT_IMESSAGE_ATTACHMENT_ROOTS as f, isPidAlive as fn, DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH as ft, resolveIMessageRemoteAttachmentRoots as g, discoverFasedAgentPlugins as gn, buildModelAliasIndex as gt, resolveIMessageAttachmentRoots as h, loadPluginManifestRegistry as hn, buildConfiguredAllowlistKeys as ht, readConfigFileSnapshot as i, listProvidersWithStoredCredentials as in, sanitizeHostExecEnv as ir, resolveSafeBinProfiles as it, unsetConfigOverride as j, coerceSecretRef as jn, normalizeGoogleModelId as jt, resetConfigOverrides as k, normalizeSecretInput as kn, resolveSubagentSpawnModelSelection as kt, TELEGRAM_COMMAND_NAME_PATTERN as l, resolveFasedAgentDir as ln, resolveSlackNativeStreaming as lt, mergeInboundPathRoots as m, normalizeProviderId$1 as mn, buildAllowedModelSet as mt, loadConfig as n, dedupeProfileIds as nn, isDangerousHostEnvVarName as nr, SAFE_BIN_PROFILES as nt, resolveConfigSnapshotHash as o, ensureAuthProfileStore as on, isSafeExecutableValue as ot, isInboundPathAllowed as p, findNormalizedProviderValue$1 as pn, resolveAgentMaxConcurrent as pt, matchAllowlist as q, extractErrorCode as qn, normalizeProviderCatalogRows as qt, parseConfigJson5 as r, listProfilesForProvider as rn, isDangerousHostInheritedEnvVarName as rr, normalizeSafeBinProfileFixtures as rt, writeConfigFile as s, resolveAuthStorePathForDisplay as sn, mapStreamingModeToSlackLegacyDraftStreamMode as st, createConfigIO as t, resolveApiKeyForProfile as tn, isDangerousHostEnvOverrideVarName as tr, splitShellArgs as tt, normalizeTelegramCommandName as u, withFileLock as un, resolveSlackStreamingMode as ut, MODEL_APIS as v, safeStatSync as vn, inferUniqueProviderFromConfiguredModels as vt, isAvatarHttpUrl as w, resolvePluginAdminRpcActionGrant as wn, resolveConfiguredModelRef as wt, parseByteSize as x, normalizePluginsConfig as xn, normalizeModelRef as xt, getBlockedNetworkModeReason as y, applyTestPluginDefaults as yn, isCliProvider as yt, listWritableExplicitTrustedSafeBinDirs as z, resolveModelThinkingCapability as zn, resolveEnvApiKey as zt };
22905
+ export { unwrapKnownDispatchWrapperInvocation as $, resolveShellEnvFallbackTimeoutMs as $n, markAuthProfileUsed as $t, setConfigOverride as A, assertSecretInputResolved as An, resolveThinkingDefault as At, normalizeTrustedSafeBinDirs as B, supportsXHighThinking as Bn, resolveModelAuthMode as Bt, isAvatarDataUrl as C, resolveMemorySlotDecision as Cn, parseModelRef as Ct, validateJsonSchemaValue as D, resolveAuthProfileDisplayLabel as Dn, resolveModelRefFromString as Dt, isSupportedLocalAvatarExtension as E, resolveCliName as En, resolveExplicitConfiguredModelRef as Et, unsetConfigValueAtPath as F, formatThinkingLevels as Fn, getApiKeyForModel as Ft, splitCommandChain as G, resolvePluginInstallDir as Gn, normalizeModelCatalogModelId as Gt, analyzeShellCommand as H, DEFAULT_MODEL as Hn, listCurrentModelCatalogRows as Ht, ensurePluginAllowlisted as I, formatXHighModelHint as In, getCustomProviderApiKey as It, resolveAllowlistCandidatePath as J, extractErrorCode as Jn, auth_profiles_exports as Jt, DEFAULT_SAFE_BINS as K, getPackageManifestMetadata as Kn, normalizeModelCatalogProviderId as Kt, getTrustedSafeBinDirs as L, listThinkingLevels as Ln, requireApiKey as Lt, getConfigValueAtPath as M, splitTrailingAuthProfile as Mn, normalizeProviders as Mt, parseConfigPath as N, isOpenAISignInRuntimeModelSupported as Nn, resolveImplicitCopilotProvider as Nt, getConfigOverrides as O, isPrivateNetworkBaseUrl as On, resolveReasoningDefault as Ot, setConfigValueAtPath as P, lookupProviderManifestModelCapability as Pn, resolveImplicitProviders as Pt, isShellWrapperExecutable as Q, getShellPathFromLoginShell as Qn, markAuthProfileFailure as Qt, isTrustedSafeBinPath as R, normalizeThinkLevel as Rn, resolveApiKeyForProvider as Rt, AVATAR_MAX_BYTES as S, resolveEffectiveEnableState as Sn, normalizeProviderId as St, isPathWithinRoot as T, formatCliCommand as Tn, resolveDefaultModelForAgent as Tt, buildEnforcedShellCommand as U, DEFAULT_PROVIDER as Un, buildModelCatalogMergeKey as Ut, validateSafeBinArgv as V, DEFAULT_CONTEXT_TOKENS as Vn, CURRENT_MODEL_PROVIDER_CATALOG as Vt, isWindowsPlatform as W, VERSION as Wn, mergeModelCatalogRowsByAuthority as Wt, extractShellWrapperInlineCommand as X, formatUncaughtError as Xn, getSoonestCooldownExpiry as Xt, resolveCommandResolutionFromArgv as Y, formatErrorMessage as Yn, resolveAuthProfileOrder as Yt, isDispatchWrapperExecutable as Z, isErrno as Zn, isProfileInCooldown as Zt, normalizeScpRemoteHost as _, isPathInside as _n, findNormalizedProviderValue as _t, readConfigFileSnapshotForWrite as a, markAuthProfileGood as an, sanitizeHostExecEnv as ar, applyMergePatch as at, parseDurationMs as b, isPluginRuntimeSessionReadAllowed as bn, modelKey as bt, validateConfigObjectWithPlugins as c, resolveFasedAgentAgentDir as cn, resolveDiscordPreviewStreamMode as ct, resolveTelegramCustomCommands as d, resolveProcessScopedMap as dn, resolveTelegramPreviewStreamMode as dt, resolveProfilesUnavailableReason as en, isTruthyEnvValue as er, unwrapKnownShellMultiplexerInvocation as et, DEFAULT_IMESSAGE_ATTACHMENT_ROOTS as f, isPidAlive as fn, DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH as ft, resolveIMessageRemoteAttachmentRoots as g, discoverFasedAgentPlugins as gn, buildModelAliasIndex as gt, resolveIMessageAttachmentRoots as h, loadPluginManifestRegistry as hn, buildConfiguredAllowlistKeys as ht, readConfigFileSnapshot as i, listProvidersWithStoredCredentials as in, isDangerousHostInheritedEnvVarName as ir, resolveSafeBinProfiles as it, unsetConfigOverride as j, coerceSecretRef as jn, normalizeGoogleModelId as jt, resetConfigOverrides as k, normalizeSecretInput as kn, resolveSubagentSpawnModelSelection as kt, TELEGRAM_COMMAND_NAME_PATTERN as l, resolveFasedAgentDir as ln, resolveSlackNativeStreaming as lt, mergeInboundPathRoots as m, normalizeProviderId$1 as mn, buildAllowedModelSet as mt, loadConfig as n, dedupeProfileIds as nn, isDangerousHostEnvOverrideVarName as nr, SAFE_BIN_PROFILES as nt, resolveConfigSnapshotHash as o, ensureAuthProfileStore as on, resolveOwnerDisplaySetting as or, isSafeExecutableValue as ot, isInboundPathAllowed as p, findNormalizedProviderValue$1 as pn, resolveAgentMaxConcurrent as pt, matchAllowlist as q, MANIFEST_KEY as qn, normalizeProviderCatalogRows as qt, parseConfigJson5 as r, listProfilesForProvider as rn, isDangerousHostEnvVarName as rr, normalizeSafeBinProfileFixtures as rt, writeConfigFile as s, resolveAuthStorePathForDisplay as sn, mapStreamingModeToSlackLegacyDraftStreamMode as st, createConfigIO as t, resolveApiKeyForProfile as tn, parseBooleanValue as tr, splitShellArgs as tt, normalizeTelegramCommandName as u, withFileLock as un, resolveSlackStreamingMode as ut, MODEL_APIS as v, safeStatSync as vn, inferUniqueProviderFromConfiguredModels as vt, isAvatarHttpUrl as w, resolvePluginAdminRpcActionGrant as wn, resolveConfiguredModelRef as wt, parseByteSize as x, normalizePluginsConfig as xn, normalizeModelRef as xt, getBlockedNetworkModeReason as y, applyTestPluginDefaults as yn, isCliProvider as yt, listWritableExplicitTrustedSafeBinDirs as z, resolveModelThinkingCapability as zn, resolveEnvApiKey as zt };
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { c as CHANNEL_IDS, f as normalizeChatChannelId, t as createSubsystemLogger, u as CORE_RUNTIME_CHANNEL_IDS } from "./subsystem-DBPNbQDQ.js";
3
3
  import { c as expandHomePrefix, n as resolveConfigPath, o as resolveOAuthPath, r as resolveDefaultConfigCandidates, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-BEmvSyOV.js";
4
- import { C as isPlainObject$2, c as isRecord$3, h as resolveUserPath, p as resolveConfigDir } from "./utils-CYk9EKoq.js";
4
+ import { C as isPlainObject$2, c as isRecord$3, h as resolveUserPath, p as resolveConfigDir, t as CONFIG_DIR } from "./utils-CYk9EKoq.js";
5
5
  import { D as resolveFasedAgentPackageRootSync, F as canUseBoundaryFileOpen, H as isNotFoundPathError, J as resolveAgentModelFallbackValues, L as openBoundaryFileSync, U as isPathInside$2, W as isSymlinkOpenError, X as toAgentModelListLike, Y as resolveAgentModelPrimaryValue, i as resolveAgentConfig, k as runExec, l as resolveAgentWorkspaceDir, o as resolveAgentEffectiveModelPrimary, q as MAX_AGENT_MODEL_FALLBACKS, u as resolveDefaultAgentId } from "./agent-scope-kIJqg5PA.js";
6
6
  import { h as isBlockedObjectKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-HSJ2KQTc.js";
7
7
  import { n as redactSensitiveText } from "./redact-CwCz68Mi.js";
@@ -1472,6 +1472,28 @@ async function extractArchive(params) {
1472
1472
  }), params.timeoutMs, label);
1473
1473
  }
1474
1474
 
1475
+ //#endregion
1476
+ //#region src/infra/install-safe-path.ts
1477
+ function safeDirName(input) {
1478
+ const trimmed = input.trim();
1479
+ if (!trimmed) return trimmed;
1480
+ return trimmed.replaceAll("/", "__").replaceAll("\\", "__");
1481
+ }
1482
+ function resolveSafeInstallDir(params) {
1483
+ const targetDir = path.join(params.baseDir, safeDirName(params.id));
1484
+ const resolvedBase = path.resolve(params.baseDir);
1485
+ const resolvedTarget = path.resolve(targetDir);
1486
+ const relative = path.relative(resolvedBase, resolvedTarget);
1487
+ if (!relative || relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) return {
1488
+ ok: false,
1489
+ error: params.invalidNameMessage
1490
+ };
1491
+ return {
1492
+ ok: true,
1493
+ path: targetDir
1494
+ };
1495
+ }
1496
+
1475
1497
  //#endregion
1476
1498
  //#region src/security/scan-paths.ts
1477
1499
  function isPathInside$1(basePath, candidatePath) {
@@ -1766,6 +1788,27 @@ function getPackageManifestMetadata(manifest) {
1766
1788
  return manifest[MANIFEST_KEY];
1767
1789
  }
1768
1790
 
1791
+ //#endregion
1792
+ //#region src/plugins/install.ts
1793
+ function validatePluginId(pluginId) {
1794
+ if (!pluginId) return "invalid plugin name: missing";
1795
+ if (pluginId === "." || pluginId === "..") return "invalid plugin name: reserved path segment";
1796
+ if (pluginId.includes("/") || pluginId.includes("\\")) return "invalid plugin name: path separators not allowed";
1797
+ return null;
1798
+ }
1799
+ function resolvePluginInstallDir(pluginId, extensionsDir) {
1800
+ const extensionsBase = extensionsDir ? resolveUserPath(extensionsDir) : path.join(CONFIG_DIR, "extensions");
1801
+ const pluginIdError = validatePluginId(pluginId);
1802
+ if (pluginIdError) throw new Error(pluginIdError);
1803
+ const targetDirResult = resolveSafeInstallDir({
1804
+ baseDir: extensionsBase,
1805
+ id: pluginId,
1806
+ invalidNameMessage: "invalid plugin name: path traversal detected"
1807
+ });
1808
+ if (!targetDirResult.ok) throw new Error(targetDirResult.error);
1809
+ return targetDirResult.path;
1810
+ }
1811
+
1769
1812
  //#endregion
1770
1813
  //#region src/plugins/uninstall.ts
1771
1814
  /**
@@ -23203,4 +23246,4 @@ async function writeConfigFile(cfg, options = {}) {
23203
23246
  }
23204
23247
 
23205
23248
  //#endregion
23206
- export { parseConfigPath as $, supportsXHighThinking as $n, resolveImplicitCopilotProvider as $t, TtsAutoSchema as A, acquireFileLock as An, resolveSlackStreamingMode as At, AVATAR_MAX_BYTES as B, resolveAuthProfileDisplayLabel as Bn, modelKey as Bt, BlockStreamingCoalesceSchema as C, listProfilesForProvider as Cn, isPluginRuntimeSessionReadAllowed as Cr, normalizeSafeBinProfileFixtures as Ct, MarkdownConfigSchema as D, resolveAuthStorePathForDisplay as Dn, resolvePluginAdminRpcActionGrant as Dr, mapStreamingModeToSlackLegacyDraftStreamMode as Dt, GroupPolicySchema as E, ensureAuthProfileStore as En, resolveMemorySlotDecision as Er, isSafeExecutableValue as Et, requireOpenAllowFrom as F, normalizeProviderId$1 as Fn, buildConfiguredAllowlistKeys as Ft, isWorkspaceRelativeAvatarPath as G, splitTrailingAuthProfile as Gn, resolveDefaultModelForAgent as Gt, isAvatarHttpUrl as H, normalizeSecretInput as Hn, normalizeProviderId as Ht, MODEL_APIS as I, loadPluginManifestRegistry as In, buildModelAliasIndex as It, getConfigOverrides as J, formatThinkingLevels as Jn, resolveReasoningDefault as Jt, resolveAvatarMime as K, isOpenAISignInRuntimeModelSupported as Kn, resolveExplicitConfiguredModelRef as Kt, getBlockedNetworkModeReason as L, discoverFasedAgentPlugins as Ln, findNormalizedProviderValue as Lt, TtsModeSchema as M, resolveProcessScopedMap as Mn, DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH as Mt, TtsProviderSchema as N, isPidAlive as Nn, resolveAgentMaxConcurrent as Nt, MarkdownTableModeSchema as O, resolveFasedAgentAgentDir as On, resolveDiscordPreviewStreamMode as Ot, normalizeAllowFrom as P, findNormalizedProviderValue$1 as Pn, buildAllowedModelSet as Pt, getConfigValueAtPath as Q, resolveModelThinkingCapability as Qn, normalizeProviders as Qt, parseDurationMs as R, isPathInside as Rn, inferUniqueProviderFromConfiguredModels as Rt, ToolPolicySchema as S, dedupeProfileIds as Sn, applyTestPluginDefaults as Sr, SAFE_BIN_PROFILES as St, DmPolicySchema as T, markAuthProfileGood as Tn, resolveEffectiveEnableState as Tr, applyMergePatch as Tt, isPathWithinRoot as U, assertSecretInputResolved as Un, parseModelRef as Ut, isAvatarDataUrl as V, isPrivateNetworkBaseUrl as Vn, normalizeModelRef as Vt, isSupportedLocalAvatarExtension as W, coerceSecretRef as Wn, resolveConfiguredModelRef as Wt, setConfigOverride as X, listThinkingLevels as Xn, resolveThinkingDefault as Xt, resetConfigOverrides as Y, formatXHighModelHint as Yn, resolveSubagentSpawnModelSelection as Yt, unsetConfigOverride as Z, normalizeThinkLevel as Zn, normalizeGoogleModelId as Zt, isInboundPathAllowed as _, isProfileInCooldown as _n, resolveOwnerDisplaySetting as _r, isDispatchWrapperExecutable as _t, readConfigFileSnapshotForWrite as a, resolveEnvApiKey as an, MANIFEST_KEY as ar, listWritableExplicitTrustedSafeBinDirs as at, resolveIMessageRemoteAttachmentRoots as b, resolveProfilesUnavailableReason as bn, isTruthyEnvValue as br, unwrapKnownShellMultiplexerInvocation as bt, validateConfigObjectWithPlugins as c, listCurrentModelCatalogRows as cn, formatUncaughtError as cr, analyzeShellCommand as ct, MSTeamsConfigSchema as d, normalizeModelCatalogModelId as dn, getShellPathFromLoginShell as dr, splitCommandChain as dt, resolveImplicitProviders as en, DEFAULT_CONTEXT_TOKENS as er, setConfigValueAtPath as et, SignalConfigSchema as f, normalizeModelCatalogProviderId as fn, resolveShellEnvFallbackTimeoutMs as fr, DEFAULT_SAFE_BINS as ft, DEFAULT_IMESSAGE_ATTACHMENT_ROOTS as g, getSoonestCooldownExpiry as gn, sanitizeHostExecEnv as gr, extractShellWrapperInlineCommand as gt, resolveTelegramCustomCommands as h, resolveAuthProfileOrder as hn, isDangerousHostInheritedEnvVarName as hr, resolveCommandResolutionFromArgv as ht, readConfigFileSnapshot as i, resolveApiKeyForProvider as in, getPackageManifestMetadata as ir, isTrustedSafeBinPath as it, TtsConfigSchema as j, withFileLock as jn, resolveTelegramPreviewStreamMode as jt, ReplyRuntimeConfigSchemaShape as k, resolveFasedAgentDir as kn, resolveSlackNativeStreaming as kt, GoogleChatConfigSchema as l, buildModelCatalogMergeKey as ln, isErrno as lr, buildEnforcedShellCommand as lt, normalizeTelegramCommandName as m, auth_profiles_exports as mn, isDangerousHostEnvVarName as mr, resolveAllowlistCandidatePath as mt, loadConfig as n, getCustomProviderApiKey as nn, DEFAULT_PROVIDER as nr, ensurePluginAllowlisted as nt, resolveConfigSnapshotHash as o, resolveModelAuthMode as on, extractErrorCode as or, normalizeTrustedSafeBinDirs as ot, TELEGRAM_COMMAND_NAME_PATTERN as p, normalizeProviderCatalogRows as pn, isDangerousHostEnvOverrideVarName as pr, matchAllowlist as pt, validateJsonSchemaValue as q, lookupProviderManifestModelCapability as qn, resolveModelRefFromString as qt, parseConfigJson5 as r, requireApiKey as rn, VERSION as rr, getTrustedSafeBinDirs as rt, writeConfigFile as s, CURRENT_MODEL_PROVIDER_CATALOG as sn, formatErrorMessage as sr, validateSafeBinArgv as st, createConfigIO as t, getApiKeyForModel as tn, DEFAULT_MODEL as tr, unsetConfigValueAtPath as tt, IMessageConfigSchema as u, mergeModelCatalogRowsByAuthority as un, extractArchive as ur, isWindowsPlatform as ut, mergeInboundPathRoots as v, markAuthProfileFailure as vn, formatCliCommand as vr, isShellWrapperExecutable as vt, DmConfigSchema as w, listProvidersWithStoredCredentials as wn, normalizePluginsConfig as wr, resolveSafeBinProfiles as wt, normalizeScpRemoteHost as x, resolveApiKeyForProfile as xn, parseBooleanValue as xr, splitShellArgs as xt, resolveIMessageAttachmentRoots as y, markAuthProfileUsed as yn, resolveCliName as yr, unwrapKnownDispatchWrapperInvocation as yt, parseByteSize as z, safeStatSync as zn, isCliProvider as zt };
23249
+ export { parseConfigPath as $, supportsXHighThinking as $n, resolveImplicitCopilotProvider as $t, TtsAutoSchema as A, acquireFileLock as An, resolveSlackStreamingMode as At, AVATAR_MAX_BYTES as B, resolveAuthProfileDisplayLabel as Bn, modelKey as Bt, BlockStreamingCoalesceSchema as C, listProfilesForProvider as Cn, applyTestPluginDefaults as Cr, normalizeSafeBinProfileFixtures as Ct, MarkdownConfigSchema as D, resolveAuthStorePathForDisplay as Dn, resolveMemorySlotDecision as Dr, mapStreamingModeToSlackLegacyDraftStreamMode as Dt, GroupPolicySchema as E, ensureAuthProfileStore as En, resolveEffectiveEnableState as Er, isSafeExecutableValue as Et, requireOpenAllowFrom as F, normalizeProviderId$1 as Fn, buildConfiguredAllowlistKeys as Ft, isWorkspaceRelativeAvatarPath as G, splitTrailingAuthProfile as Gn, resolveDefaultModelForAgent as Gt, isAvatarHttpUrl as H, normalizeSecretInput as Hn, normalizeProviderId as Ht, MODEL_APIS as I, loadPluginManifestRegistry as In, buildModelAliasIndex as It, getConfigOverrides as J, formatThinkingLevels as Jn, resolveReasoningDefault as Jt, resolveAvatarMime as K, isOpenAISignInRuntimeModelSupported as Kn, resolveExplicitConfiguredModelRef as Kt, getBlockedNetworkModeReason as L, discoverFasedAgentPlugins as Ln, findNormalizedProviderValue as Lt, TtsModeSchema as M, resolveProcessScopedMap as Mn, DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH as Mt, TtsProviderSchema as N, isPidAlive as Nn, resolveAgentMaxConcurrent as Nt, MarkdownTableModeSchema as O, resolveFasedAgentAgentDir as On, resolvePluginAdminRpcActionGrant as Or, resolveDiscordPreviewStreamMode as Ot, normalizeAllowFrom as P, findNormalizedProviderValue$1 as Pn, buildAllowedModelSet as Pt, getConfigValueAtPath as Q, resolveModelThinkingCapability as Qn, normalizeProviders as Qt, parseDurationMs as R, isPathInside as Rn, inferUniqueProviderFromConfiguredModels as Rt, ToolPolicySchema as S, dedupeProfileIds as Sn, parseBooleanValue as Sr, SAFE_BIN_PROFILES as St, DmPolicySchema as T, markAuthProfileGood as Tn, normalizePluginsConfig as Tr, applyMergePatch as Tt, isPathWithinRoot as U, assertSecretInputResolved as Un, parseModelRef as Ut, isAvatarDataUrl as V, isPrivateNetworkBaseUrl as Vn, normalizeModelRef as Vt, isSupportedLocalAvatarExtension as W, coerceSecretRef as Wn, resolveConfiguredModelRef as Wt, setConfigOverride as X, listThinkingLevels as Xn, resolveThinkingDefault as Xt, resetConfigOverrides as Y, formatXHighModelHint as Yn, resolveSubagentSpawnModelSelection as Yt, unsetConfigOverride as Z, normalizeThinkLevel as Zn, normalizeGoogleModelId as Zt, isInboundPathAllowed as _, isProfileInCooldown as _n, sanitizeHostExecEnv as _r, isDispatchWrapperExecutable as _t, readConfigFileSnapshotForWrite as a, resolveEnvApiKey as an, getPackageManifestMetadata as ar, listWritableExplicitTrustedSafeBinDirs as at, resolveIMessageRemoteAttachmentRoots as b, resolveProfilesUnavailableReason as bn, resolveCliName as br, unwrapKnownShellMultiplexerInvocation as bt, validateConfigObjectWithPlugins as c, listCurrentModelCatalogRows as cn, formatErrorMessage as cr, analyzeShellCommand as ct, MSTeamsConfigSchema as d, normalizeModelCatalogModelId as dn, extractArchive as dr, splitCommandChain as dt, resolveImplicitProviders as en, DEFAULT_CONTEXT_TOKENS as er, setConfigValueAtPath as et, SignalConfigSchema as f, normalizeModelCatalogProviderId as fn, getShellPathFromLoginShell as fr, DEFAULT_SAFE_BINS as ft, DEFAULT_IMESSAGE_ATTACHMENT_ROOTS as g, getSoonestCooldownExpiry as gn, isDangerousHostInheritedEnvVarName as gr, extractShellWrapperInlineCommand as gt, resolveTelegramCustomCommands as h, resolveAuthProfileOrder as hn, isDangerousHostEnvVarName as hr, resolveCommandResolutionFromArgv as ht, readConfigFileSnapshot as i, resolveApiKeyForProvider as in, resolvePluginInstallDir as ir, isTrustedSafeBinPath as it, TtsConfigSchema as j, withFileLock as jn, resolveTelegramPreviewStreamMode as jt, ReplyRuntimeConfigSchemaShape as k, resolveFasedAgentDir as kn, resolveSlackNativeStreaming as kt, GoogleChatConfigSchema as l, buildModelCatalogMergeKey as ln, formatUncaughtError as lr, buildEnforcedShellCommand as lt, normalizeTelegramCommandName as m, auth_profiles_exports as mn, isDangerousHostEnvOverrideVarName as mr, resolveAllowlistCandidatePath as mt, loadConfig as n, getCustomProviderApiKey as nn, DEFAULT_PROVIDER as nr, ensurePluginAllowlisted as nt, resolveConfigSnapshotHash as o, resolveModelAuthMode as on, MANIFEST_KEY as or, normalizeTrustedSafeBinDirs as ot, TELEGRAM_COMMAND_NAME_PATTERN as p, normalizeProviderCatalogRows as pn, resolveShellEnvFallbackTimeoutMs as pr, matchAllowlist as pt, validateJsonSchemaValue as q, lookupProviderManifestModelCapability as qn, resolveModelRefFromString as qt, parseConfigJson5 as r, requireApiKey as rn, VERSION as rr, getTrustedSafeBinDirs as rt, writeConfigFile as s, CURRENT_MODEL_PROVIDER_CATALOG as sn, extractErrorCode as sr, validateSafeBinArgv as st, createConfigIO as t, getApiKeyForModel as tn, DEFAULT_MODEL as tr, unsetConfigValueAtPath as tt, IMessageConfigSchema as u, mergeModelCatalogRowsByAuthority as un, isErrno as ur, isWindowsPlatform as ut, mergeInboundPathRoots as v, markAuthProfileFailure as vn, resolveOwnerDisplaySetting as vr, isShellWrapperExecutable as vt, DmConfigSchema as w, listProvidersWithStoredCredentials as wn, isPluginRuntimeSessionReadAllowed as wr, resolveSafeBinProfiles as wt, normalizeScpRemoteHost as x, resolveApiKeyForProfile as xn, isTruthyEnvValue as xr, splitShellArgs as xt, resolveIMessageAttachmentRoots as y, markAuthProfileUsed as yn, formatCliCommand as yr, unwrapKnownDispatchWrapperInvocation as yt, parseByteSize as z, safeStatSync as zn, isCliProvider as zt };
@@ -4,7 +4,7 @@ import chalk, { Chalk } from "chalk";
4
4
  import fs, { constants } from "node:fs";
5
5
  import { Logger } from "tslog";
6
6
  import os from "node:os";
7
- import JSON5 from "json5";
7
+ import json5 from "json5";
8
8
  import util, { isDeepStrictEqual, promisify } from "node:util";
9
9
  import fs$1 from "node:fs/promises";
10
10
  import { execFile, execFileSync } from "node:child_process";
@@ -325,7 +325,7 @@ function readLoggingConfig() {
325
325
  try {
326
326
  if (!fs.existsSync(configPath)) return;
327
327
  const raw = fs.readFileSync(configPath, "utf-8");
328
- const logging = JSON5.parse(raw)?.logging;
328
+ const logging = json5.parse(raw)?.logging;
329
329
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
330
330
  return logging;
331
331
  } catch {
@@ -3028,7 +3028,7 @@ function loadPluginManifest(rootDir) {
3028
3028
  }
3029
3029
  let raw;
3030
3030
  try {
3031
- raw = JSON5.parse(fs.readFileSync(opened.fd, "utf-8"));
3031
+ raw = json5.parse(fs.readFileSync(opened.fd, "utf-8"));
3032
3032
  } catch (err) {
3033
3033
  return {
3034
3034
  ok: false,
@@ -13468,7 +13468,7 @@ const defaultResolver = {
13468
13468
  resolvedPath,
13469
13469
  rootRealDir
13470
13470
  }),
13471
- parseJson: (raw) => JSON5.parse(raw)
13471
+ parseJson: (raw) => json5.parse(raw)
13472
13472
  };
13473
13473
  /**
13474
13474
  * Resolves all $include directives in a parsed config object.
@@ -20081,7 +20081,7 @@ function resolveConfigPathForDeps(deps) {
20081
20081
  function normalizeDeps(overrides = {}) {
20082
20082
  return {
20083
20083
  fs: overrides.fs ?? fs,
20084
- json5: overrides.json5 ?? JSON5,
20084
+ json5: overrides.json5 ?? json5,
20085
20085
  env: overrides.env ?? process.env,
20086
20086
  homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
20087
20087
  configPath: overrides.configPath ?? "",
@@ -20092,11 +20092,11 @@ function maybeLoadDotEnvForConfig(env) {
20092
20092
  if (env !== process.env) return;
20093
20093
  loadDotEnv({ quiet: true });
20094
20094
  }
20095
- function parseConfigJson5(raw, json5 = JSON5) {
20095
+ function parseConfigJson5(raw, json5$1 = json5) {
20096
20096
  try {
20097
20097
  return {
20098
20098
  ok: true,
20099
- parsed: json5.parse(raw)
20099
+ parsed: json5$1.parse(raw)
20100
20100
  };
20101
20101
  } catch (err) {
20102
20102
  return {
@@ -1,6 +1,7 @@
1
1
  import { a as resolveImplicitCopilotProvider, c as resolveFasedAgentDir, d as saveJsonFile, f as formatCliCommand, g as normalizeChatChannelId, h as createSubsystemLogger, i as normalizeProviders, l as resolveProcessScopedMap, m as isTruthyEnvValue, n as DiscordConfigSchema, o as resolveImplicitProviders, p as resolveDefaultAgentId, t as loadConfig, u as loadJsonFile } from "./config-BULEb5QB.js";
2
2
  import { A as expandHomePrefix, D as resolveOAuthDir, a as resolveAgentIdFromSessionKey, d as normalizeE164, g as logVerbose, i as normalizeAgentId, j as resolveRequiredHomeDir, k as resolveStateDir, l as formatTerminalLink, o as DEFAULT_ACCOUNT_ID, p as resolveUserPath, s as normalizeAccountId, u as isRecord } from "./retry-CB29XXbz.js";
3
3
  import { i as resolveDiscordToken, r as normalizeDiscordToken, t as normalizeDiscordSlug$1 } from "./allow-list-Cgjx0Mc-.js";
4
+ import { createRequire } from "node:module";
4
5
  import path from "node:path";
5
6
  import fs, { constants } from "node:fs";
6
7
  import os from "node:os";
@@ -10,7 +11,6 @@ import { execFile } from "node:child_process";
10
11
  import { fileURLToPath } from "node:url";
11
12
  import crypto from "node:crypto";
12
13
  import "@mariozechner/pi-coding-agent";
13
- import "file-type";
14
14
  import { ChannelType, PermissionFlagsBits, Routes } from "discord-api-types/v10";
15
15
  import { RequestClient } from "@buape/carbon";
16
16
  import "discord-api-types/payloads/v10";
@@ -112,6 +112,7 @@ const METHOD_SCOPE_GROUPS = {
112
112
  "commands.list",
113
113
  "tools.catalog",
114
114
  "tools.effective",
115
+ "services.capabilities",
115
116
  "services.webSearch.providers",
116
117
  "services.webSearch.test",
117
118
  "tasks.list",
@@ -1,5 +1,5 @@
1
1
  import { Z as logWarn } from "./agent-scope-BuTbywla.js";
2
- import { a as resolvePinnedHostnameWithPolicy, n as closeDispatcher, r as createPinnedDispatcher, t as SsrFBlockedError } from "./ssrf-u0Ul7okY.js";
2
+ import { a as resolvePinnedHostnameWithPolicy, n as closeDispatcher, r as createPinnedDispatcher, t as SsrFBlockedError } from "./ssrf-Cce6LubA.js";
3
3
  import { t as bindAbortRelay } from "./fetch-timeout-Dyj5Y_Ss.js";
4
4
  import { t as normalizeRequestInitHeadersForFetch } from "./fetch-headers-BTcaUCW6.js";
5
5
  import { EnvHttpProxyAgent } from "undici";
@@ -1,7 +1,7 @@
1
1
  import { P as logWarn } from "./agent-scope-kIJqg5PA.js";
2
2
  import { t as bindAbortRelay } from "./fetch-timeout-l_6RdoMw.js";
3
3
  import { t as normalizeRequestInitHeadersForFetch } from "./fetch-headers-my7hgV2G.js";
4
- import { n as closeDispatcher, r as createPinnedDispatcher, s as resolvePinnedHostnameWithPolicy, t as SsrFBlockedError } from "./ssrf-fG4UHKBw.js";
4
+ import { c as resolvePinnedHostnameWithPolicy, i as createPinnedDispatcher, n as SsrFBlockedError, r as closeDispatcher } from "./optional-runtime-dependency-szS49voX.js";
5
5
  import { EnvHttpProxyAgent } from "undici";
6
6
 
7
7
  //#region src/infra/net/fetch-guard.ts
@@ -1,4 +1,4 @@
1
- import "./config-TFokWwvO.js";
1
+ import "./config-CgwTaper.js";
2
2
  import "./paths-GdhK5mV_.js";
3
3
  import "./globals-BtKmaIS3.js";
4
4
  import "./utils-LGKVujSU.js";
@@ -7,30 +7,30 @@ import "./agent-scope-BuTbywla.js";
7
7
  import "./redact-Ck-wgswc.js";
8
8
  import "./github-copilot-token-Djqpy66R.js";
9
9
  import "./retry-Cq65ROXv.js";
10
- import "./registry-B4HvWzob.js";
10
+ import "./registry-DNkJsNsz.js";
11
11
  import { t as createDiscordActionGate } from "./accounts-BJFheJNv.js";
12
12
  import "./accounts-BRbbLNW_.js";
13
- import "./accounts-VqAX3HJ0.js";
13
+ import "./accounts-BwkH5bTD.js";
14
14
  import "./allow-list-CBtbuDI8.js";
15
15
  import "./paths-DTurNPnO.js";
16
- import "./ssrf-u0Ul7okY.js";
17
- import "./media-D7ZkWU-A.js";
16
+ import "./ssrf-Cce6LubA.js";
17
+ import "./media-C7YT4DeU.js";
18
18
  import "./path-alias-guards-C76pC928.js";
19
19
  import "./fs-safe-BDnJzutp.js";
20
- import "./chunk-skAJZWCT.js";
21
- import "./markdown-tables-9rJDQ1X-.js";
22
- import "./fetch-guard-DPMynms8.js";
20
+ import "./chunk-KCxbJLsV.js";
21
+ import "./markdown-tables-DWUNvLrc.js";
22
+ import "./fetch-guard-BLdujDnt.js";
23
23
  import "./fetch-xfeOsibm.js";
24
- import { a as jsonResult, c as readReactionParams, d as readStringParam, l as readStringArrayParam, o as parseAvailableTags, s as readNumberParam } from "./common-BiF0sTnY.js";
24
+ import { a as jsonResult, c as readReactionParams, d as readStringParam, l as readStringArrayParam, o as parseAvailableTags, s as readNumberParam } from "./common-DJWrErdE.js";
25
25
  import { i as withNormalizedTimestamp } from "./date-time-BtRPVcm7.js";
26
26
  import { t as assertMediaNotDataUrl } from "./sandbox-paths-DMnFyOaA.js";
27
27
  import "./directory-live-8umGGN7a.js";
28
28
  import { n as resolveDiscordChannelId } from "./targets-t1hbjHdJ.js";
29
29
  import "./render-C9LkRUhd.js";
30
- import "./tables-RBtf8G4P.js";
31
- import "./retry-policy-DGLs5ebP.js";
30
+ import "./tables-BD7H5ug-.js";
31
+ import "./retry-policy-BLYEgIwP.js";
32
32
  import { i as getPresence, t as getGateway } from "./gateway-registry-w_Z-PHGf.js";
33
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, D as pinMessageDiscord, E as listThreadsDiscord, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, P as fetchChannelInfoDiscord, R as kickMemberDiscord, S as deleteMessageDiscord, T as listPinsDiscord, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, a as removeReactionDiscord, et as hasAnyGuildPermissionDiscord, g as sendMessageDiscord, i as removeOwnReactionsDiscord, j as addRoleDiscord, k as searchMessagesDiscord, n as fetchReactionsDiscord, o as sendDiscordComponentMessage, p as readDiscordComponentSpec, q as deleteChannelDiscord, r as reactMessageDiscord, v as sendStickerDiscord, w as fetchMessageDiscord, x as createThreadDiscord, y as sendVoiceMessageDiscord, z as listGuildChannelsDiscord } from "./send-Di9irjS-.js";
33
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, D as pinMessageDiscord, E as listThreadsDiscord, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, P as fetchChannelInfoDiscord, R as kickMemberDiscord, S as deleteMessageDiscord, T as listPinsDiscord, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, a as removeReactionDiscord, et as hasAnyGuildPermissionDiscord, g as sendMessageDiscord, i as removeOwnReactionsDiscord, j as addRoleDiscord, k as searchMessagesDiscord, n as fetchReactionsDiscord, o as sendDiscordComponentMessage, p as readDiscordComponentSpec, q as deleteChannelDiscord, r as reactMessageDiscord, v as sendStickerDiscord, w as fetchMessageDiscord, x as createThreadDiscord, y as sendVoiceMessageDiscord, z as listGuildChannelsDiscord } from "./send-C3u-F_8s.js";
34
34
  import { PermissionFlagsBits } from "discord-api-types/v10";
35
35
 
36
36
  //#region src/agents/tools/discord-actions-guild.ts
@@ -1,36 +1,36 @@
1
- import "./runtime-Dd0sswuW.js";
1
+ import "./runtime-BPyuAmka.js";
2
2
  import "./subsystem-DBPNbQDQ.js";
3
3
  import "./globals-B_jjtAje.js";
4
4
  import "./paths-BEmvSyOV.js";
5
5
  import "./utils-CYk9EKoq.js";
6
- import "./config-DXlISPlx.js";
6
+ import "./config-DtqAN2L3.js";
7
7
  import "./agent-scope-kIJqg5PA.js";
8
8
  import { t as createDiscordActionGate } from "./accounts-D7_p-Ivb.js";
9
9
  import "./accounts-DTdM1xcj.js";
10
- import "./accounts-Zgt0NP54.js";
10
+ import "./accounts-RT6y7n3H.js";
11
11
  import "./allow-list-C9N6FKeC.js";
12
12
  import "./redact-CwCz68Mi.js";
13
13
  import "./github-copilot-token-Dgug856m.js";
14
14
  import "./retry-DycQ4ymF.js";
15
15
  import "./paths-B88DQEK8.js";
16
- import "./ssrf-fG4UHKBw.js";
17
- import "./fetch-guard-COLmW2TM.js";
18
- import "./chunk-Cjw4712g.js";
19
- import "./media-C6C2c9a4.js";
16
+ import "./optional-runtime-dependency-szS49voX.js";
17
+ import "./fetch-guard-DTKgMN9f.js";
18
+ import "./chunk-M2d7r-Zt.js";
19
+ import "./media-Cxw-xLGU.js";
20
20
  import "./path-alias-guards-CcQroDXQ.js";
21
21
  import "./fs-safe-BPYS6-j1.js";
22
- import "./markdown-tables-krKiU4cT.js";
22
+ import "./markdown-tables-CCSD52rA.js";
23
23
  import "./fetch-D70syO9t.js";
24
- import { a as jsonResult, c as readReactionParams, d as readStringParam, l as readStringArrayParam, o as parseAvailableTags, s as readNumberParam } from "./common-CSTxewqY.js";
24
+ import { a as jsonResult, c as readReactionParams, d as readStringParam, l as readStringArrayParam, o as parseAvailableTags, s as readNumberParam } from "./common-Cpw-vuuM.js";
25
25
  import "./directory-live-BxSH0XXX.js";
26
26
  import { n as resolveDiscordChannelId } from "./targets-cA134MEE.js";
27
27
  import { t as assertMediaNotDataUrl } from "./sandbox-paths-CkTERCrj.js";
28
28
  import { i as withNormalizedTimestamp } from "./date-time-Bo5FVB7G.js";
29
29
  import "./render-C9LkRUhd.js";
30
- import "./tables-CkxblF0u.js";
31
- import "./retry-policy-DaodShGa.js";
30
+ import "./tables-CJE8kB35.js";
31
+ import "./retry-policy-sM01QZT2.js";
32
32
  import { i as getPresence, t as getGateway } from "./gateway-registry-CtUjFG3Q.js";
33
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, D as pinMessageDiscord, E as listThreadsDiscord, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, P as fetchChannelInfoDiscord, R as kickMemberDiscord, S as deleteMessageDiscord, T as listPinsDiscord, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, a as removeReactionDiscord, et as hasAnyGuildPermissionDiscord, g as sendMessageDiscord, i as removeOwnReactionsDiscord, j as addRoleDiscord, k as searchMessagesDiscord, n as fetchReactionsDiscord, o as sendDiscordComponentMessage, p as readDiscordComponentSpec, q as deleteChannelDiscord, r as reactMessageDiscord, v as sendStickerDiscord, w as fetchMessageDiscord, x as createThreadDiscord, y as sendVoiceMessageDiscord, z as listGuildChannelsDiscord } from "./send-DFTB0cnx.js";
33
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, D as pinMessageDiscord, E as listThreadsDiscord, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, P as fetchChannelInfoDiscord, R as kickMemberDiscord, S as deleteMessageDiscord, T as listPinsDiscord, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, a as removeReactionDiscord, et as hasAnyGuildPermissionDiscord, g as sendMessageDiscord, i as removeOwnReactionsDiscord, j as addRoleDiscord, k as searchMessagesDiscord, n as fetchReactionsDiscord, o as sendDiscordComponentMessage, p as readDiscordComponentSpec, q as deleteChannelDiscord, r as reactMessageDiscord, v as sendStickerDiscord, w as fetchMessageDiscord, x as createThreadDiscord, y as sendVoiceMessageDiscord, z as listGuildChannelsDiscord } from "./send-BQXQA81e.js";
34
34
  import { PermissionFlagsBits } from "discord-api-types/v10";
35
35
 
36
36
  //#region src/agents/tools/discord-actions-guild.ts