@fased/fased 0.1.36 → 0.1.38

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 (240) 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-Zgt0NP54.js → accounts-RT6y7n3H.js} +1 -1
  34. package/dist/plugin-sdk/{actions-lB3PCwsz.js → actions-BrU_JMqM.js} +2 -2
  35. package/dist/plugin-sdk/{actions-BI5QViLk.js → actions-CUdVHzeJ.js} +2 -2
  36. package/dist/plugin-sdk/{active-listener-DKZiSaRA.js → active-listener-CE8t5g6l.js} +1 -1
  37. package/dist/plugin-sdk/{active-listener-D6_pdTMC.js → active-listener-Dx1SEGDn.js} +1 -1
  38. package/dist/plugin-sdk/{audio-preflight-Dx8J7XhV.js → audio-preflight-BPK8t0tI.js} +22 -22
  39. package/dist/plugin-sdk/{audio-preflight-CeRstduc.js → audio-preflight-kCa_KGRH.js} +22 -22
  40. package/dist/plugin-sdk/{audit-BImNOQvk.js → audit-DxB2Kml5.js} +11 -11
  41. package/dist/plugin-sdk/{audit-CKWkq0Un.js → audit-sSeRDwJb.js} +11 -11
  42. package/dist/plugin-sdk/channel-plugin-common.js +3 -2
  43. package/dist/plugin-sdk/{chunk-skAJZWCT.js → chunk-KCxbJLsV.js} +1 -1
  44. package/dist/plugin-sdk/{chunk-Cjw4712g.js → chunk-M2d7r-Zt.js} +1 -1
  45. package/dist/plugin-sdk/{chunk-items-Df5811D0.js → chunk-items-DGHUeFuI.js} +1 -1
  46. package/dist/plugin-sdk/command-status.js +22 -22
  47. package/dist/plugin-sdk/{commands-registry-5J619bQ2.js → commands-registry-CdT-nl7v.js} +2 -2
  48. package/dist/plugin-sdk/{commands-registry-CoLAT03J.js → commands-registry-DoWdYAJd.js} +2 -2
  49. package/dist/plugin-sdk/{common-CSTxewqY.js → common-Cpw-vuuM.js} +1 -1
  50. package/dist/plugin-sdk/{common-BiF0sTnY.js → common-DJWrErdE.js} +1 -1
  51. package/dist/plugin-sdk/{config-BxVjLTIv.js → config-C0qggNKQ.js} +7 -7
  52. package/dist/plugin-sdk/{config-TFokWwvO.js → config-CgwTaper.js} +45 -2
  53. package/dist/plugin-sdk/{config-DXlISPlx.js → config-DtqAN2L3.js} +45 -2
  54. package/dist/plugin-sdk/discord.js +2 -1
  55. package/dist/plugin-sdk/{fetch-guard-DPMynms8.js → fetch-guard-BLdujDnt.js} +1 -1
  56. package/dist/plugin-sdk/{fetch-guard-COLmW2TM.js → fetch-guard-DTKgMN9f.js} +1 -1
  57. package/dist/plugin-sdk/{handle-action-C-UndB8E.js → handle-action-B61D85yo.js} +12 -12
  58. package/dist/plugin-sdk/{handle-action-hhufKxmU.js → handle-action-CjcxGzQD.js} +12 -12
  59. package/dist/plugin-sdk/index.js +22 -22
  60. package/dist/plugin-sdk/{login-DL1oBBfL.js → login-CB_nCjX3.js} +3 -3
  61. package/dist/plugin-sdk/{login-Dnxas1dI.js → login-CzUuDd1v.js} +3 -3
  62. package/dist/plugin-sdk/{login-qr-CVQsGWKq.js → login-qr-D7MEpFza.js} +3 -3
  63. package/dist/plugin-sdk/{login-qr-B343JNXJ.js → login-qr-DgxfBFVN.js} +3 -3
  64. package/dist/plugin-sdk/{manager-BytwRIfK.js → manager-9see0IX5.js} +8 -3
  65. package/dist/plugin-sdk/{manager-BZjd_PCt.js → manager-D2kZ0Cps.js} +8 -3
  66. package/dist/plugin-sdk/{markdown-tables-krKiU4cT.js → markdown-tables-CCSD52rA.js} +1 -1
  67. package/dist/plugin-sdk/{markdown-tables-9rJDQ1X-.js → markdown-tables-DWUNvLrc.js} +1 -1
  68. package/dist/plugin-sdk/{media-D7ZkWU-A.js → media-C7YT4DeU.js} +13 -4
  69. package/dist/plugin-sdk/{media-C6C2c9a4.js → media-Cxw-xLGU.js} +13 -4
  70. package/dist/plugin-sdk/{monitor-BsLMfn3U.js → monitor-6lkdOqhQ.js} +26 -26
  71. package/dist/plugin-sdk/{monitor-BCxkQBoh.js → monitor-C6Ohw9BA.js} +26 -26
  72. package/dist/plugin-sdk/{monitor-BzDW50H6.js → monitor-o20KTHIi.js} +29 -29
  73. package/dist/plugin-sdk/{monitor-CVQNDfhs.js → monitor-rOs3mUol.js} +27 -27
  74. package/dist/plugin-sdk/{openresponses-http-BB67Z4QM.js → openresponses-http-BJONnUdy.js} +22 -22
  75. package/dist/plugin-sdk/{openresponses-http-NE76GGhj.js → openresponses-http-DkWqYznu.js} +22 -22
  76. package/dist/plugin-sdk/{ssrf-u0Ul7okY.js → optional-runtime-dependency-szS49voX.js} +46 -2
  77. package/dist/plugin-sdk/{outbound-PGNWU6T-.js → outbound-BCxOxdi-.js} +6 -6
  78. package/dist/plugin-sdk/{outbound-BHWJD9q0.js → outbound-JIwQbpRY.js} +6 -6
  79. package/dist/plugin-sdk/{outbound-attachment-BVzfhqnk.js → outbound-attachment-C-jSFaEB.js} +1 -1
  80. package/dist/plugin-sdk/{outbound-attachment-ClMvNW17.js → outbound-attachment-D6tj5Y5H.js} +1 -1
  81. package/dist/plugin-sdk/{pi-embedded-runner-DQ6UPx6-.js → pi-embedded-runner-DqDy0MWN.js} +72 -60
  82. package/dist/plugin-sdk/{pi-model-discovery-D51L5E9I.js → pi-model-discovery-DadlvsZW.js} +1 -1
  83. package/dist/plugin-sdk/{pi-model-discovery-runtime-DxoFm4Vd.js → pi-model-discovery-runtime-C5ssE6EW.js} +1 -1
  84. package/dist/plugin-sdk/{pi-model-discovery-runtime-DRuh4PNV.js → pi-model-discovery-runtime-DAaOPt64.js} +2 -2
  85. package/dist/plugin-sdk/{pi-model-discovery-runtime-BTWgkx4x.js → pi-model-discovery-runtime-gd77b0UF.js} +2 -2
  86. package/dist/plugin-sdk/{pi-model-discovery-CkH5l9X5.js → pi-model-discovery-yifTIDIn.js} +1 -1
  87. package/dist/plugin-sdk/{pw-ai-DZs6uYRd.js → pw-ai-Boor5vYw.js} +6 -5
  88. package/dist/plugin-sdk/{pw-ai-Cn-EUPZK.js → pw-ai-sH1Pi-Fh.js} +6 -5
  89. package/dist/plugin-sdk/{registry-B4HvWzob.js → registry-DNkJsNsz.js} +4 -3
  90. package/dist/plugin-sdk/{replies-jDMUBsNO.js → replies-fvzN5wnU.js} +2 -2
  91. package/dist/plugin-sdk/{replies-B_LW9c9f.js → replies-zebgZCHX.js} +2 -2
  92. package/dist/plugin-sdk/{resolve-route-_YZHbS-z.js → resolve-route-CNhTJG_2.js} +1 -1
  93. package/dist/plugin-sdk/{resolve-route-DlHzggnG.js → resolve-route-DO0WR4nB.js} +1 -1
  94. package/dist/plugin-sdk/{resolve-utils-zBhVX3Vx.js → resolve-utils-bixHYDBj.js} +1 -1
  95. package/dist/plugin-sdk/{retry-policy-DGLs5ebP.js → retry-policy-BLYEgIwP.js} +1 -1
  96. package/dist/plugin-sdk/{retry-policy-DaodShGa.js → retry-policy-sM01QZT2.js} +1 -1
  97. package/dist/plugin-sdk/{runtime-Dd0sswuW.js → runtime-BPyuAmka.js} +4 -3
  98. package/dist/plugin-sdk/{paths-CBCpJ5bu.js → runtime-dependency-Csswyv5r.js} +27 -3
  99. package/dist/plugin-sdk/{paths-DW-U2r7Y.js → runtime-dependency-Deg_sw2k.js} +36 -12
  100. package/dist/plugin-sdk/sat-runtime.js +1 -0
  101. package/dist/plugin-sdk/{send-8remZhsH.js → send-B09HRfHN.js} +6 -6
  102. package/dist/plugin-sdk/{send-DaaAscWj.js → send-BBYcgXA4.js} +5 -5
  103. package/dist/plugin-sdk/{send-DFTB0cnx.js → send-BQXQA81e.js} +6 -6
  104. package/dist/plugin-sdk/{send-CtMVvMJs.js → send-BzFdvD_i.js} +6 -6
  105. package/dist/plugin-sdk/{send-Di9irjS-.js → send-C3u-F_8s.js} +6 -6
  106. package/dist/plugin-sdk/{send-Dl88ZKq2.js → send-D3836_UN.js} +6 -6
  107. package/dist/plugin-sdk/{send-ifgZCHVB.js → send-D7tr-EsH.js} +5 -5
  108. package/dist/plugin-sdk/{send-DvUpYh0d.js → send-DRGzRdI3.js} +6 -6
  109. package/dist/plugin-sdk/{send-D2jlPeKH.js → send-DfkPKz_0.js} +4 -4
  110. package/dist/plugin-sdk/{send-QSt6nbny.js → send-DsxFXrCO.js} +4 -4
  111. package/dist/plugin-sdk/{session-CknrceVU.js → session-DG_bYisw.js} +2 -2
  112. package/dist/plugin-sdk/{session-CyRTcJ8N.js → session-EIStzK0E.js} +2 -2
  113. package/dist/plugin-sdk/{skill-commands-DHxkTA0s.js → skill-commands-CkgGmWBS.js} +2 -2
  114. package/dist/plugin-sdk/{skill-commands-CLXAG5sU.js → skill-commands-hyZA0LE3.js} +2 -2
  115. package/dist/plugin-sdk/{slack-Br9c6Yzs.js → slack-BErIh0uj.js} +34 -34
  116. package/dist/plugin-sdk/{slack-BpJXkwxF.js → slack-CGTAN4UD.js} +34 -34
  117. package/dist/plugin-sdk/{slack-actions-8tLGt1Ht.js → slack-actions-BQawWGTJ.js} +11 -11
  118. package/dist/plugin-sdk/{slack-actions-CDSSRo8Y.js → slack-actions-DDMszx56.js} +11 -11
  119. package/dist/plugin-sdk/slack.js +2 -1
  120. package/dist/plugin-sdk/src/brand.d.ts +2 -2
  121. package/dist/plugin-sdk/src/browser/runtime-dependency.d.ts +3 -0
  122. package/dist/plugin-sdk/src/infra/optional-runtime-dependency.d.ts +6 -0
  123. package/dist/plugin-sdk/{ssrf-fG4UHKBw.js → ssrf-Cce6LubA.js} +41 -7
  124. package/dist/plugin-sdk/{status-DoxnzyMC.js → status-CCGFb0f2.js} +76 -64
  125. package/dist/plugin-sdk/{sticker-cache-zmJ39ByC.js → sticker-cache-CKAkkCoU.js} +3 -3
  126. package/dist/plugin-sdk/{sticker-cache-D7WcMYsF.js → sticker-cache-wxl1Me2i.js} +3 -3
  127. package/dist/plugin-sdk/{tables-CkxblF0u.js → tables-BD7H5ug-.js} +1 -1
  128. package/dist/plugin-sdk/{tables-RBtf8G4P.js → tables-CJE8kB35.js} +1 -1
  129. package/dist/plugin-sdk/{telegram-actions-DAeYXSLk.js → telegram-actions-BRUNEXMr.js} +25 -25
  130. package/dist/plugin-sdk/{telegram-actions-BDeS3ocd.js → telegram-actions-r86ntIKR.js} +25 -25
  131. package/dist/plugin-sdk/telegram.js +2 -1
  132. package/dist/plugin-sdk/{thread-bindings.lifecycle-DsB94WbE.js → thread-bindings.lifecycle-Djem8FWF.js} +2 -2
  133. package/dist/plugin-sdk/{thread-bindings.lifecycle-DMhV3TsR.js → thread-bindings.lifecycle-gmHv3hc7.js} +2 -2
  134. package/dist/plugin-sdk/{thread-bindings.state-DYWpy7hJ.js → thread-bindings.state-CNT2vxm3.js} +2 -2
  135. package/dist/plugin-sdk/{thread-bindings.state-DG5cBaRn.js → thread-bindings.state-D8kN2X6H.js} +2 -2
  136. package/dist/plugin-sdk/{web-DJwacWQo.js → web-02I0vmdu.js} +26 -26
  137. package/dist/plugin-sdk/{web-IJ4NoGPJ.js → web-CXz56wyu.js} +26 -26
  138. package/dist/plugin-sdk/{whatsapp-actions-DAY8hWpD.js → whatsapp-actions-68Mfs2dJ.js} +12 -12
  139. package/dist/plugin-sdk/{whatsapp-actions-6opfo-oB.js → whatsapp-actions-DRqtzvTO.js} +12 -12
  140. package/dist/plugin-sdk/whatsapp.js +2 -1
  141. package/dist/plugin-sdk/{wsl-B2euLEc2.js → wsl-DcM2PgSS.js} +3 -3
  142. package/dist/plugin-sdk/{wsl-B8eyviuv.js → wsl-PXrdWitE.js} +3 -3
  143. package/dist/plugins/update.js +1 -1
  144. package/dist/tts/tts-core.js +6 -1
  145. package/dist/wizard/onboarding.finalize.js +9 -0
  146. package/extensions/acpx/package.json +1 -1
  147. package/extensions/bluebubbles/package.json +1 -1
  148. package/extensions/copilot-proxy/package.json +1 -1
  149. package/extensions/diagnostics-otel/package.json +1 -1
  150. package/extensions/fased-federation/package.json +1 -1
  151. package/extensions/google-gemini-cli-auth/package.json +1 -1
  152. package/extensions/imessage/package.json +1 -1
  153. package/extensions/irc/package.json +1 -1
  154. package/extensions/line/package.json +1 -1
  155. package/extensions/llm-task/package.json +1 -1
  156. package/extensions/lobster/package.json +1 -1
  157. package/extensions/matrix/CHANGELOG.md +12 -0
  158. package/extensions/matrix/package.json +1 -1
  159. package/extensions/mattermost/package.json +1 -1
  160. package/extensions/memory-core/package.json +2 -2
  161. package/extensions/memory-lancedb/package.json +1 -1
  162. package/extensions/minimax-portal-auth/package.json +1 -1
  163. package/extensions/msteams/CHANGELOG.md +12 -0
  164. package/extensions/msteams/package.json +1 -1
  165. package/extensions/nextcloud-talk/package.json +1 -1
  166. package/extensions/nostr/CHANGELOG.md +12 -0
  167. package/extensions/nostr/package.json +1 -1
  168. package/extensions/open-prose/package.json +1 -1
  169. package/extensions/sat-mining/package.json +1 -1
  170. package/extensions/signal/package.json +1 -1
  171. package/extensions/synology-chat/package.json +1 -1
  172. package/extensions/tlon/package.json +1 -1
  173. package/extensions/twitch/CHANGELOG.md +12 -0
  174. package/extensions/twitch/package.json +1 -1
  175. package/extensions/voice-call/CHANGELOG.md +12 -0
  176. package/extensions/voice-call/package.json +1 -1
  177. package/extensions/zalo/CHANGELOG.md +12 -0
  178. package/extensions/zalo/package.json +1 -1
  179. package/extensions/zalouser/CHANGELOG.md +12 -0
  180. package/extensions/zalouser/package.json +1 -1
  181. package/package.json +22 -15
  182. package/extensions/feishu/fased.plugin.json +0 -10
  183. package/extensions/feishu/index.ts +0 -63
  184. package/extensions/feishu/package.json +0 -33
  185. package/extensions/feishu/skills/feishu-doc/SKILL.md +0 -211
  186. package/extensions/feishu/skills/feishu-doc/references/block-types.md +0 -103
  187. package/extensions/feishu/skills/feishu-drive/SKILL.md +0 -97
  188. package/extensions/feishu/skills/feishu-perm/SKILL.md +0 -119
  189. package/extensions/feishu/skills/feishu-wiki/SKILL.md +0 -111
  190. package/extensions/feishu/src/accounts.ts +0 -159
  191. package/extensions/feishu/src/bitable.ts +0 -713
  192. package/extensions/feishu/src/bot.ts +0 -979
  193. package/extensions/feishu/src/channel.ts +0 -359
  194. package/extensions/feishu/src/client.ts +0 -118
  195. package/extensions/feishu/src/config-schema.ts +0 -226
  196. package/extensions/feishu/src/dedup.ts +0 -54
  197. package/extensions/feishu/src/directory.ts +0 -177
  198. package/extensions/feishu/src/doc-schema.ts +0 -122
  199. package/extensions/feishu/src/docx.ts +0 -998
  200. package/extensions/feishu/src/drive-schema.ts +0 -46
  201. package/extensions/feishu/src/drive.ts +0 -232
  202. package/extensions/feishu/src/dynamic-agent.ts +0 -131
  203. package/extensions/feishu/src/external-keys.ts +0 -19
  204. package/extensions/feishu/src/media.ts +0 -447
  205. package/extensions/feishu/src/mention.ts +0 -133
  206. package/extensions/feishu/src/monitor.ts +0 -434
  207. package/extensions/feishu/src/onboarding.ts +0 -430
  208. package/extensions/feishu/src/outbound.ts +0 -56
  209. package/extensions/feishu/src/perm-schema.ts +0 -52
  210. package/extensions/feishu/src/perm.ts +0 -180
  211. package/extensions/feishu/src/policy.ts +0 -116
  212. package/extensions/feishu/src/probe.ts +0 -44
  213. package/extensions/feishu/src/reactions.ts +0 -160
  214. package/extensions/feishu/src/reply-dispatcher.ts +0 -239
  215. package/extensions/feishu/src/runtime.ts +0 -14
  216. package/extensions/feishu/src/send-result.ts +0 -29
  217. package/extensions/feishu/src/send-target.ts +0 -25
  218. package/extensions/feishu/src/send.ts +0 -313
  219. package/extensions/feishu/src/streaming-card.ts +0 -218
  220. package/extensions/feishu/src/targets.ts +0 -78
  221. package/extensions/feishu/src/tool-account.ts +0 -58
  222. package/extensions/feishu/src/tools-config.ts +0 -21
  223. package/extensions/feishu/src/types.ts +0 -81
  224. package/extensions/feishu/src/typing.ts +0 -80
  225. package/extensions/feishu/src/wiki-schema.ts +0 -55
  226. package/extensions/feishu/src/wiki.ts +0 -237
  227. package/extensions/googlechat/fased.plugin.json +0 -9
  228. package/extensions/googlechat/index.ts +0 -19
  229. package/extensions/googlechat/package.json +0 -37
  230. package/extensions/googlechat/src/accounts.ts +0 -147
  231. package/extensions/googlechat/src/actions.ts +0 -176
  232. package/extensions/googlechat/src/api.ts +0 -282
  233. package/extensions/googlechat/src/auth.ts +0 -137
  234. package/extensions/googlechat/src/channel.ts +0 -591
  235. package/extensions/googlechat/src/monitor.ts +0 -996
  236. package/extensions/googlechat/src/onboarding.ts +0 -344
  237. package/extensions/googlechat/src/runtime.ts +0 -14
  238. package/extensions/googlechat/src/targets.ts +0 -65
  239. package/extensions/googlechat/src/types.config.ts +0 -3
  240. package/extensions/googlechat/src/types.ts +0 -73
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./app-DXYMrRJ9.js","./icons-D3-vEvih.js","./open-external-url-DwSiwMPl.js","./chat-model-ref-DV2P__mw.js","./marketplace-order-evidence-DkR0ZRHa.js","./mining-commit-R-6nu87p.js","./task-ledger-source-route-C-yTp0QU.js","./wallet-policy-C3ZS66Rl.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./app-JBrTSsNu.js","./icons-D3-vEvih.js","./open-external-url-DwSiwMPl.js","./chat-model-ref-DV2P__mw.js","./marketplace-order-evidence-DkR0ZRHa.js","./mining-commit-R-6nu87p.js","./task-ledger-source-route-C-yTp0QU.js","./wallet-policy-C3ZS66Rl.js"])))=>i.map(i=>d[i]);
2
2
  (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e={"entry-loaded":10,"app-import-start":20,"app-imported":30,"custom-element-defined":40,connected:50,"first-updated":60,rendered:70,"boot-failed":100};function t(t,n){if(typeof window>`u`)return;let r=window.__FASED_CONTROL_UI_BOOT=window.__FASED_CONTROL_UI_BOOT??{},i=e[r.stage]??0;e[t]<i&&r.stage!==`boot-failed`||(r.stage=t,r.detail=n??``,r.updatedAt=Date.now(),typeof r.mark==`function`&&r.mark(t,n),typeof window.dispatchEvent==`function`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(`fased-control-ui-boot`,{detail:{stage:t,detail:n??``}})))}var n=`modulepreload`,r=function(e,t){return new URL(e,t).href},i={},a=function(e,t,a){let o=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,new URL(`../../../src/node/plugins/importAnalysisBuild.ts`,import.meta.url)).href}o=l(t.map(t=>{if(t=r(t,a),t=u(t),t in i)return;i[t]=!0;let o=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let r=e[n];if(r.href===t&&(!o||r.rel===`stylesheet`))return}let s=document.createElement(`link`);if(s.rel=o?`stylesheet`:n,o||(s.as=`script`),s.crossOrigin=``,s.href=t,c&&s.setAttribute(`nonce`,c),document.head.appendChild(s),o)return new Promise((e,n)=>{s.addEventListener(`load`,e),s.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(t=>{for(let e of t||[])e.status===`rejected`&&s(e.reason);return e().catch(s)})};function o(e){let n=e instanceof Error?e.stack??e.message:String(e);t(`boot-failed`,n||`Unknown dashboard boot error.`);let r=document.querySelector(`fased-app`);if(!r)return;r.innerHTML=``;let i=document.createElement(`style`);i.textContent=`
3
3
  body {
4
4
  margin: 0;
@@ -57,5 +57,5 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./app-DXYMrRJ9.js","./
57
57
  font-weight: 650;
58
58
  cursor: pointer;
59
59
  }
60
- `;let a=document.createElement(`div`);a.className=`boot-page`;let o=document.createElement(`section`);o.className=`boot-card`;let s=document.createElement(`h1`);s.className=`boot-title`,s.textContent=`Dashboard bundle could not load`;let c=document.createElement(`p`);c.className=`boot-desc`,c.textContent=`The gateway page loaded, but the browser could not start the dashboard bundle. Reload first. If it keeps happening after an update, clear this site's browser data and sign in again.`;let l=document.createElement(`div`);l.className=`boot-error`,l.textContent=n||`Unknown dashboard boot error.`;let u=document.createElement(`button`);u.className=`boot-button`,u.textContent=`Reload`,u.addEventListener(`click`,()=>window.location.reload()),o.append(s,c,l,u),a.append(o),r.append(i,a)}t(`entry-loaded`),t(`app-import-start`),a(()=>import(`./app-DXYMrRJ9.js`).then(()=>t(`app-imported`)),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url).catch(o);export{t as n,a as t};
61
- //# sourceMappingURL=index-iGQkJE0l.js.map
60
+ `;let a=document.createElement(`div`);a.className=`boot-page`;let o=document.createElement(`section`);o.className=`boot-card`;let s=document.createElement(`h1`);s.className=`boot-title`,s.textContent=`Dashboard bundle could not load`;let c=document.createElement(`p`);c.className=`boot-desc`,c.textContent=`The gateway page loaded, but the browser could not start the dashboard bundle. Reload first. If it keeps happening after an update, clear this site's browser data and sign in again.`;let l=document.createElement(`div`);l.className=`boot-error`,l.textContent=n||`Unknown dashboard boot error.`;let u=document.createElement(`button`);u.className=`boot-button`,u.textContent=`Reload`,u.addEventListener(`click`,()=>window.location.reload()),o.append(s,c,l,u),a.append(o),r.append(i,a)}t(`entry-loaded`),t(`app-import-start`),a(()=>import(`./app-JBrTSsNu.js`).then(()=>t(`app-imported`)),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url).catch(o);export{t as n,a as t};
61
+ //# sourceMappingURL=index-H-2DWAnH.js.map
@@ -14,7 +14,7 @@
14
14
  <link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
15
15
  <link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png" />
16
16
  <script data-fased-boot-watchdog src="./boot-watchdog.js" defer></script>
17
- <script type="module" crossorigin src="./assets/index-iGQkJE0l.js"></script>
17
+ <script type="module" crossorigin src="./assets/index-H-2DWAnH.js"></script>
18
18
  <link rel="stylesheet" crossorigin href="./assets/index-RwVraC3c.css">
19
19
  </head>
20
20
  <body>
@@ -74,6 +74,7 @@ const METHOD_SCOPE_GROUPS = {
74
74
  "commands.list",
75
75
  "tools.catalog",
76
76
  "tools.effective",
77
+ "services.capabilities",
77
78
  "services.webSearch.providers",
78
79
  "services.webSearch.test",
79
80
  "tasks.list",
@@ -10,9 +10,9 @@ import { resolveChannelPluginExpectedPluginIds } from "../../channels/plugins/ca
10
10
  import { scheduleGatewaySigusr1Restart } from "../../infra/restart.js";
11
11
  import { buildNpmResolutionInstallFields } from "../../plugins/installs.js";
12
12
  import { executePluginUninstallLifecycle, executePluginUpdateLifecycle, finalizeInstalledPluginConfig } from "../../plugins/lifecycle.js";
13
+ import { buildPluginMarketplaceReport, resolvePluginMarketplaceEntry } from "../../plugins/marketplace.js";
13
14
  import { assertValidParams } from "./validation.js";
14
15
  import { buildPluginMarketplaceUpdateReview, formatPluginMarketplaceUpdateReviewWarnings } from "../../plugins/marketplace-update-review.js";
15
- import { buildPluginMarketplaceReport, resolvePluginMarketplaceEntry } from "../../plugins/marketplace.js";
16
16
  import { setPluginAdminRpcActionGrant, setPluginRuntimeSessionReadGrant } from "../../plugins/runtime-helper-grants.js";
17
17
 
18
18
  //#region src/gateway/server-methods/plugins-marketplace.ts
@@ -2,6 +2,7 @@ import { loadConfig } from "../../config/io.js";
2
2
  import "../../config/config.js";
3
3
  import { ErrorCodes, errorShape } from "../protocol/schema/error-codes.js";
4
4
  import "../protocol/index.js";
5
+ import { buildCapabilityReadinessReport } from "../../capabilities/catalog.js";
5
6
  import { formatForLog } from "../ws-log.js";
6
7
  import { runGmailSetup } from "../../hooks/gmail-ops.js";
7
8
  import { listConfiguredWebSearchProviders, runWebSearch } from "../../web-search/runtime.js";
@@ -55,6 +56,13 @@ function gmailSetupOptions(params) {
55
56
  };
56
57
  }
57
58
  const servicesHandlers = {
59
+ "services.capabilities": async ({ respond }) => {
60
+ try {
61
+ respond(true, buildCapabilityReadinessReport());
62
+ } catch (err) {
63
+ respond(false, undefined, errorShape(ErrorCodes.UNAVAILABLE, formatForLog(err)));
64
+ }
65
+ },
58
66
  "services.gmail.setup": async ({ respond, params }) => {
59
67
  try {
60
68
  const parsed = gmailSetupOptions(params);
@@ -74,6 +74,7 @@ const BASE_METHODS = [
74
74
  "commands.list",
75
75
  "tools.catalog",
76
76
  "tools.effective",
77
+ "services.capabilities",
77
78
  "services.gmail.setup",
78
79
  "services.webSearch.test",
79
80
  "services.webSearch.providers",
@@ -0,0 +1,46 @@
1
+ import { resolvePluginInstallDir } from "../plugins/install.js";
2
+ import { createRequire } from "node:module";
3
+ import { pathToFileURL } from "node:url";
4
+ import path from "node:path";
5
+
6
+ //#region src/infra/optional-runtime-dependency.ts
7
+ const imports = new Map();
8
+ function missingRuntimeMessage(params) {
9
+ const detail = params.cause instanceof Error ? params.cause.message : String(params.cause);
10
+ return new Error(`${params.dependency} is not available. Install ${params.packageName} with ` + `\`fased components install ${params.componentId}\`, restart the Gateway, and try again. ` + `(${detail})`, { cause: params.cause });
11
+ }
12
+ async function importFromInstalledComponent(params) {
13
+ try {
14
+ return await import(params.dependency);
15
+ } catch (coreError) {
16
+ try {
17
+ const componentRoot = resolvePluginInstallDir(params.componentId);
18
+ const requireFromComponent = createRequire(path.join(componentRoot, "package.json"));
19
+ const resolved = requireFromComponent.resolve(params.dependency);
20
+ return await import(pathToFileURL(resolved).href);
21
+ } catch (componentError) {
22
+ throw missingRuntimeMessage({
23
+ ...params,
24
+ cause: componentError ?? coreError
25
+ });
26
+ }
27
+ }
28
+ }
29
+ async function importOptionalRuntimeDependency(params) {
30
+ const key = `${params.componentId}:${params.dependency}`;
31
+ let pending = imports.get(key);
32
+ if (!pending) {
33
+ pending = importFromInstalledComponent(params).catch((error) => {
34
+ imports.delete(key);
35
+ throw error;
36
+ });
37
+ imports.set(key, pending);
38
+ }
39
+ return await pending;
40
+ }
41
+ function resetOptionalRuntimeDependencyCacheForTest() {
42
+ imports.clear();
43
+ }
44
+
45
+ //#endregion
46
+ export { importOptionalRuntimeDependency };
@@ -1,4 +1,5 @@
1
1
  import { runExec } from "../process/exec.js";
2
+ import { importOptionalRuntimeDependency } from "../infra/optional-runtime-dependency.js";
2
3
  import os from "node:os";
3
4
  import path from "node:path";
4
5
  import fs from "node:fs/promises";
@@ -30,7 +31,11 @@ function prefersSips() {
30
31
  return process.env.FASED_IMAGE_BACKEND === "sips" || process.env.FASED_IMAGE_BACKEND !== "sharp" && isBun() && process.platform === "darwin";
31
32
  }
32
33
  async function loadSharp() {
33
- const mod = await import("sharp");
34
+ const mod = await importOptionalRuntimeDependency({
35
+ componentId: "media-runtime",
36
+ packageName: "@fased/media-runtime",
37
+ dependency: "sharp"
38
+ });
34
39
  const sharp = mod.default ?? mod;
35
40
  return (buffer) => sharp(buffer, { failOnError: false });
36
41
  }
@@ -1,4 +1,5 @@
1
1
  import { logWarn } from "../logger.js";
2
+ import { importOptionalRuntimeDependency } from "../infra/optional-runtime-dependency.js";
2
3
  import { fetchWithSsrFGuard } from "../infra/net/fetch-guard.js";
3
4
  import { readResponseWithLimit } from "./read-response-with-limit.js";
4
5
  import { canonicalizeBase64, estimateBase64DecodedBytes } from "./base64.js";
@@ -8,7 +9,11 @@ let canvasModulePromise = null;
8
9
  let pdfJsModulePromise = null;
9
10
  async function loadCanvasModule() {
10
11
  if (!canvasModulePromise) {
11
- canvasModulePromise = import("@napi-rs/canvas").catch((err) => {
12
+ canvasModulePromise = importOptionalRuntimeDependency({
13
+ componentId: "media-runtime",
14
+ packageName: "@fased/media-runtime",
15
+ dependency: "@napi-rs/canvas"
16
+ }).catch((err) => {
12
17
  canvasModulePromise = null;
13
18
  throw new Error(`Optional dependency @napi-rs/canvas is required for PDF image extraction: ${String(err)}`);
14
19
  });
@@ -17,7 +22,11 @@ async function loadCanvasModule() {
17
22
  }
18
23
  async function loadPdfJsModule() {
19
24
  if (!pdfJsModulePromise) {
20
- pdfJsModulePromise = import("pdfjs-dist/legacy/build/pdf.mjs").catch((err) => {
25
+ pdfJsModulePromise = importOptionalRuntimeDependency({
26
+ componentId: "media-runtime",
27
+ packageName: "@fased/media-runtime",
28
+ dependency: "pdfjs-dist/legacy/build/pdf.mjs"
29
+ }).catch((err) => {
21
30
  pdfJsModulePromise = null;
22
31
  throw new Error(`Optional dependency pdfjs-dist is required for PDF extraction: ${String(err)}`);
23
32
  });
@@ -1,6 +1,6 @@
1
+ import { importOptionalRuntimeDependency } from "../infra/optional-runtime-dependency.js";
1
2
  import { mediaKindFromMime } from "./constants.js";
2
3
  import path from "node:path";
3
- import { fileTypeFromBuffer } from "file-type";
4
4
 
5
5
  //#region src/media/mime.ts
6
6
  const EXT_BY_MIME = {
@@ -61,6 +61,11 @@ async function sniffMime(buffer) {
61
61
  return undefined;
62
62
  }
63
63
  try {
64
+ const { fileTypeFromBuffer } = await importOptionalRuntimeDependency({
65
+ componentId: "media-runtime",
66
+ packageName: "@fased/media-runtime",
67
+ dependency: "file-type"
68
+ });
64
69
  const type = await fileTypeFromBuffer(buffer);
65
70
  return type?.mime ?? undefined;
66
71
  } catch {
@@ -1,7 +1,13 @@
1
+ import { importOptionalRuntimeDependency } from "../infra/optional-runtime-dependency.js";
2
+
1
3
  //#region src/memory/sqlite-vec.ts
2
4
  async function loadSqliteVecExtension(params) {
3
5
  try {
4
- const sqliteVec = await import("sqlite-vec");
6
+ const sqliteVec = await importOptionalRuntimeDependency({
7
+ componentId: "local-memory-runtime",
8
+ packageName: "@fased/local-memory-runtime",
9
+ dependency: "sqlite-vec"
10
+ });
5
11
  const resolvedPath = params.extensionPath?.trim() ? params.extensionPath.trim() : undefined;
6
12
  const extensionPath = resolvedPath ?? sqliteVec.getLoadablePath();
7
13
  params.db.enableLoadExtension(true);
@@ -1,4 +1,4 @@
1
- import { Tn as formatCliCommand } from "./config-TFokWwvO.js";
1
+ import { Tn as formatCliCommand } from "./config-CgwTaper.js";
2
2
  import { a as resolveOAuthDir, c as expandHomePrefix, u as resolveRequiredHomeDir } from "./paths-GdhK5mV_.js";
3
3
  import { c as success, n as info, p as getChildLogger } from "./globals-BtKmaIS3.js";
4
4
  import { h as resolveUserPath } from "./utils-LGKVujSU.js";
@@ -2,7 +2,7 @@ import { i as defaultRuntime } from "./subsystem-DBPNbQDQ.js";
2
2
  import { c as success, n as info, p as getChildLogger } from "./globals-B_jjtAje.js";
3
3
  import { a as resolveOAuthDir, c as expandHomePrefix, u as resolveRequiredHomeDir } from "./paths-BEmvSyOV.js";
4
4
  import { h as resolveUserPath } from "./utils-CYk9EKoq.js";
5
- import { vr as formatCliCommand } from "./config-DXlISPlx.js";
5
+ import { yr as formatCliCommand } from "./config-DtqAN2L3.js";
6
6
  import { n as resolveAccountEntry, t as createAccountListHelpers } from "./account-helpers-Bdfws46K.js";
7
7
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-HSJ2KQTc.js";
8
8
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import { i as logVerbose } from "./globals-B_jjtAje.js";
2
- import { n as loadConfig } from "./config-DXlISPlx.js";
2
+ import { n as loadConfig } from "./config-DtqAN2L3.js";
3
3
  import { i as resolveSlackBotToken, t as resolveSlackAccount } from "./accounts-DTdM1xcj.js";
4
- import { a as validateSlackBlocksArray, o as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-D2jlPeKH.js";
4
+ import { a as validateSlackBlocksArray, o as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-DfkPKz_0.js";
5
5
  import { n as createSlackWebClient } from "./client-DWTXscox.js";
6
6
 
7
7
  //#region src/slack/actions.ts
@@ -1,7 +1,7 @@
1
- import { n as loadConfig } from "./config-TFokWwvO.js";
1
+ import { n as loadConfig } from "./config-CgwTaper.js";
2
2
  import { i as logVerbose } from "./globals-BtKmaIS3.js";
3
3
  import { i as resolveSlackBotToken, t as resolveSlackAccount } from "./accounts-BRbbLNW_.js";
4
- import { a as validateSlackBlocksArray, o as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-QSt6nbny.js";
4
+ import { a as validateSlackBlocksArray, o as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-DsxFXrCO.js";
5
5
  import { n as createSlackWebClient } from "./client-Dn_01zRN.js";
6
6
 
7
7
  //#region src/slack/actions.ts
@@ -1,4 +1,4 @@
1
- import { vr as formatCliCommand } from "./config-DXlISPlx.js";
1
+ import { yr as formatCliCommand } from "./config-DtqAN2L3.js";
2
2
  import { f as DEFAULT_ACCOUNT_ID } from "./session-key-HSJ2KQTc.js";
3
3
 
4
4
  //#region src/web/active-listener.ts
@@ -1,4 +1,4 @@
1
- import { Tn as formatCliCommand } from "./config-TFokWwvO.js";
1
+ import { Tn as formatCliCommand } from "./config-CgwTaper.js";
2
2
  import { f as DEFAULT_ACCOUNT_ID } from "./session-key-Bp3qq3bm.js";
3
3
 
4
4
  //#region src/web/active-listener.ts
@@ -1,50 +1,50 @@
1
- import { At as resolveMediaAttachmentLocalRoots, Dt as createMediaAttachmentCache, Et as buildProviderRegistry, Mt as isAudioAttachment, Ot as normalizeMediaAttachments, jt as runCapability } from "./pi-embedded-runner-DQ6UPx6-.js";
2
- import "./runtime-Dd0sswuW.js";
1
+ import { At as resolveMediaAttachmentLocalRoots, Dt as createMediaAttachmentCache, Et as buildProviderRegistry, Mt as isAudioAttachment, Ot as normalizeMediaAttachments, jt as runCapability } from "./pi-embedded-runner-DqDy0MWN.js";
2
+ import "./runtime-BPyuAmka.js";
3
3
  import "./subsystem-DBPNbQDQ.js";
4
4
  import { i as logVerbose, s as shouldLogVerbose } from "./globals-B_jjtAje.js";
5
5
  import "./paths-BEmvSyOV.js";
6
6
  import "./utils-CYk9EKoq.js";
7
- import "./config-DXlISPlx.js";
7
+ import "./config-DtqAN2L3.js";
8
8
  import "./agent-scope-kIJqg5PA.js";
9
9
  import "./accounts-D7_p-Ivb.js";
10
10
  import "./accounts-DTdM1xcj.js";
11
- import "./accounts-Zgt0NP54.js";
11
+ import "./accounts-RT6y7n3H.js";
12
12
  import "./tokens-CQRTq-NN.js";
13
13
  import "./allow-list-C9N6FKeC.js";
14
14
  import "./redact-CwCz68Mi.js";
15
15
  import "./github-copilot-token-Dgug856m.js";
16
16
  import "./retry-DycQ4ymF.js";
17
17
  import "./paths-B88DQEK8.js";
18
- import "./ssrf-fG4UHKBw.js";
19
- import "./fetch-guard-COLmW2TM.js";
20
- import "./send-DvUpYh0d.js";
21
- import "./wsl-B8eyviuv.js";
22
- import "./chunk-Cjw4712g.js";
18
+ import "./optional-runtime-dependency-szS49voX.js";
19
+ import "./fetch-guard-DTKgMN9f.js";
20
+ import "./send-DRGzRdI3.js";
21
+ import "./wsl-PXrdWitE.js";
22
+ import "./chunk-M2d7r-Zt.js";
23
23
  import "./reply-prefix-DqlCqHXT.js";
24
- import "./skill-commands-DHxkTA0s.js";
24
+ import "./skill-commands-CkgGmWBS.js";
25
25
  import "./diagnostic-CuhHqubd.js";
26
26
  import "./diagnostic-session-state-Zw87xFym.js";
27
- import "./media-C6C2c9a4.js";
28
- import "./pi-model-discovery-CkH5l9X5.js";
29
- import "./paths-CBCpJ5bu.js";
27
+ import "./media-Cxw-xLGU.js";
28
+ import "./pi-model-discovery-yifTIDIn.js";
29
+ import "./runtime-dependency-Csswyv5r.js";
30
30
  import "./path-alias-guards-CcQroDXQ.js";
31
31
  import "./fs-safe-BPYS6-j1.js";
32
- import "./markdown-tables-krKiU4cT.js";
33
- import "./send-ifgZCHVB.js";
34
- import "./outbound-attachment-BVzfhqnk.js";
32
+ import "./markdown-tables-CCSD52rA.js";
33
+ import "./send-D7tr-EsH.js";
34
+ import "./outbound-attachment-C-jSFaEB.js";
35
35
  import "./fetch-D70syO9t.js";
36
- import "./thread-bindings.state-DYWpy7hJ.js";
36
+ import "./thread-bindings.state-CNT2vxm3.js";
37
37
  import "./memory-search-J6AYuENR.js";
38
- import "./manager-BZjd_PCt.js";
38
+ import "./manager-D2kZ0Cps.js";
39
39
  import "./query-expansion-VePrajug.js";
40
- import "./common-CSTxewqY.js";
41
- import "./commands-registry-5J619bQ2.js";
40
+ import "./common-Cpw-vuuM.js";
41
+ import "./commands-registry-CdT-nl7v.js";
42
42
  import "./directory-live-BxSH0XXX.js";
43
43
  import "./targets-cA134MEE.js";
44
44
  import "./sandbox-paths-CkTERCrj.js";
45
- import "./resolve-route-_YZHbS-z.js";
45
+ import "./resolve-route-CNhTJG_2.js";
46
46
  import "./render-C9LkRUhd.js";
47
- import "./tables-CkxblF0u.js";
47
+ import "./tables-CJE8kB35.js";
48
48
 
49
49
  //#region src/media-understanding/audio-preflight.ts
50
50
  /**
@@ -1,4 +1,4 @@
1
- import "./config-TFokWwvO.js";
1
+ import "./config-CgwTaper.js";
2
2
  import "./paths-GdhK5mV_.js";
3
3
  import { i as logVerbose, s as shouldLogVerbose } from "./globals-BtKmaIS3.js";
4
4
  import "./utils-LGKVujSU.js";
@@ -7,44 +7,44 @@ 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 { ct as buildProviderRegistry, ft as resolveMediaAttachmentLocalRoots, lt as createMediaAttachmentCache, mt as isAudioAttachment, pt as runCapability, ut as normalizeMediaAttachments } 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 { ct as buildProviderRegistry, ft as resolveMediaAttachmentLocalRoots, lt as createMediaAttachmentCache, mt as isAudioAttachment, pt as runCapability, ut as normalizeMediaAttachments } from "./status-CCGFb0f2.js";
18
+ import "./runtime-dependency-Deg_sw2k.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
  //#region src/media-understanding/audio-preflight.ts
50
50
  /**
@@ -1,32 +1,32 @@
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 "./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
24
  import "./directory-live-BxSH0XXX.js";
25
25
  import "./targets-cA134MEE.js";
26
26
  import "./render-C9LkRUhd.js";
27
- import "./tables-CkxblF0u.js";
28
- import "./retry-policy-DaodShGa.js";
29
- import { $ as fetchChannelPermissionsDiscord } from "./send-DFTB0cnx.js";
27
+ import "./tables-CJE8kB35.js";
28
+ import "./retry-policy-sM01QZT2.js";
29
+ import { $ as fetchChannelPermissionsDiscord } from "./send-BQXQA81e.js";
30
30
 
31
31
  //#region src/discord/audit.ts
32
32
  const REQUIRED_CHANNEL_PERMISSIONS = ["ViewChannel", "SendMessages"];
@@ -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,26 +7,26 @@ 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 "./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
24
  import "./directory-live-8umGGN7a.js";
25
25
  import "./targets-t1hbjHdJ.js";
26
26
  import "./render-C9LkRUhd.js";
27
- import "./tables-RBtf8G4P.js";
28
- import "./retry-policy-DGLs5ebP.js";
29
- import { $ as fetchChannelPermissionsDiscord } from "./send-Di9irjS-.js";
27
+ import "./tables-BD7H5ug-.js";
28
+ import "./retry-policy-BLYEgIwP.js";
29
+ import { $ as fetchChannelPermissionsDiscord } from "./send-C3u-F_8s.js";
30
30
 
31
31
  //#region src/discord/audit.ts
32
32
  const REQUIRED_CHANNEL_PERMISSIONS = ["ViewChannel", "SendMessages"];
@@ -1,4 +1,4 @@
1
- import { a as resolveImplicitProviders, c as resolveProcessScopedMap, d as expandHomePrefix, f as resolveRequiredHomeDir, h as normalizeAccountId, i as resolveImplicitCopilotProvider, l as isRecord, m as DEFAULT_ACCOUNT_ID, p as formatCliCommand, r as normalizeProviders, s as resolveFasedAgentDir, t as loadConfig, u as createSubsystemLogger } from "./config-BxVjLTIv.js";
1
+ import { a as resolveImplicitProviders, c as resolveProcessScopedMap, d as expandHomePrefix, f as resolveRequiredHomeDir, h as normalizeAccountId, i as resolveImplicitCopilotProvider, l as isRecord, m as DEFAULT_ACCOUNT_ID, p as formatCliCommand, r as normalizeProviders, s as resolveFasedAgentDir, t as loadConfig, u as createSubsystemLogger } from "./config-C0qggNKQ.js";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import os from "node:os";
@@ -280,6 +280,7 @@ const METHOD_SCOPE_GROUPS = {
280
280
  "commands.list",
281
281
  "tools.catalog",
282
282
  "tools.effective",
283
+ "services.capabilities",
283
284
  "services.webSearch.providers",
284
285
  "services.webSearch.test",
285
286
  "tasks.list",
@@ -855,7 +856,7 @@ async function loadContextCache() {
855
856
  await ensureFasedModelsJson(cfg);
856
857
  } catch {}
857
858
  try {
858
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-runtime-DxoFm4Vd.js");
859
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-runtime-C5ssE6EW.js");
859
860
  const agentDir = resolveFasedAgentDir();
860
861
  const modelRegistry = discoverModels(discoverAuthStorage(agentDir), agentDir);
861
862
  applyDiscoveredContextWindows({
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { p as normalizeAccountId } from "./session-key-Bp3qq3bm.js";
3
- import { Dt as INTERNAL_MESSAGE_CHANNEL } from "./registry-B4HvWzob.js";
3
+ import { Dt as INTERNAL_MESSAGE_CHANNEL } from "./registry-DNkJsNsz.js";
4
4
  import { n as resolveAccountEntry } from "./account-helpers-CMvQP0I-.js";
5
5
 
6
6
  //#region src/markdown/fences.ts
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { Ut as INTERNAL_MESSAGE_CHANNEL } from "./runtime-Dd0sswuW.js";
2
+ import { Ut as INTERNAL_MESSAGE_CHANNEL } from "./runtime-BPyuAmka.js";
3
3
  import { n as resolveAccountEntry } from "./account-helpers-Bdfws46K.js";
4
4
  import { p as normalizeAccountId } from "./session-key-HSJ2KQTc.js";
5
5
 
@@ -1,4 +1,4 @@
1
- import { gt as wrapExternalContent } from "./pi-embedded-runner-DQ6UPx6-.js";
1
+ import { gt as wrapExternalContent } from "./pi-embedded-runner-DqDy0MWN.js";
2
2
 
3
3
  //#region src/security/channel-metadata.ts
4
4
  const DEFAULT_MAX_CHARS = 800;