@gaodefa/daocore 2026.5.73 → 2026.5.75

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 (1068) hide show
  1. package/dist/abort-CB4Bin7P.js +277 -0
  2. package/dist/abort.runtime-C5imf3M6.js +2 -0
  3. package/dist/abort.runtime.js +1 -1
  4. package/dist/account-inspect-BrLOD3dL.js +173 -0
  5. package/dist/accounts-BJghihjE.js +107 -0
  6. package/dist/accounts-Cmmoz0Uc.js +119 -0
  7. package/dist/accounts-CtHQ9LlB.js +2 -0
  8. package/dist/accounts-D2XmsEdz.js +107 -0
  9. package/dist/acp-runtime-CsJkP6Eh.js +26 -0
  10. package/dist/acp-spawn-DrF63yyT.js +1275 -0
  11. package/dist/acp-spawn-ORtTG-uw.js +2 -0
  12. package/dist/acp-stateful-target-driver-XI6lnVTT.js +89 -0
  13. package/dist/action-kill-BkWa08iK.js +33 -0
  14. package/dist/action-runtime-CW2Fkm81.js +469 -0
  15. package/dist/action-runtime-api-LQHyxfBM.js +2 -0
  16. package/dist/action-send-BSTkpsKB.js +39 -0
  17. package/dist/action-spawn-CG0owoYM.js +47 -0
  18. package/dist/actions-BQH4Vf20.js +161 -0
  19. package/dist/actions.runtime-BwFgiJFE.js +5 -0
  20. package/dist/agent-B1k62jFg.js +3 -0
  21. package/dist/agent-CooPvAB8.js +2 -0
  22. package/dist/agent-command-Djll6bnb.js +1367 -0
  23. package/dist/agent-components.runtime-Bxmeq5SX.js +10 -0
  24. package/dist/agent-components.runtime.js +1 -1
  25. package/dist/agent-harness-runtime-Bt2xTt2z.js +180 -0
  26. package/dist/agent-harness-task-runtime-C6Sx-QFy.js +140 -0
  27. package/dist/agent-runner-execution-CUB1dxz1.js +1713 -0
  28. package/dist/agent-runner-utils-LoP2ghjB.js +266 -0
  29. package/dist/agent-runner.runtime-B6FEpN97.js +3455 -0
  30. package/dist/agent-runner.runtime.js +1 -1
  31. package/dist/agent-runtime-DDBYT9PU.js +229 -0
  32. package/dist/agent-via-gateway-Cac7aWXN.js +463 -0
  33. package/dist/api-C7_eM4X7.js +2 -0
  34. package/dist/api-CTv-thVP.js +2 -0
  35. package/dist/api-CyVlHCwr.js +6 -0
  36. package/dist/api-DfnW7Cwk.js +134 -0
  37. package/dist/api-mdeTtlMU.js +3 -0
  38. package/dist/api-rzVN_ShI.js +639 -0
  39. package/dist/apply-CA6OjGyH.js +41 -0
  40. package/dist/apply-YMZKb6rV.js +54 -0
  41. package/dist/approval-handler.runtime-Bo3XBEmS.js +130 -0
  42. package/dist/assistant-D0Y0TW8p.js +291 -0
  43. package/dist/attachment-normalize-CRqY0rzf.js +225 -0
  44. package/dist/attempt-execution-BL2-MkN9.js +558 -0
  45. package/dist/attempt-execution.runtime-BbkIPww8.js +3 -0
  46. package/dist/attempt-execution.runtime.js +1 -1
  47. package/dist/attempt-execution.shared-xgnVkNxr.js +38 -0
  48. package/dist/attempt.prompt-helpers--NxxT8xy.js +475 -0
  49. package/dist/attempt.tool-run-context-EsAayWh6.js +2094 -0
  50. package/dist/binding-routing-BIf2zYbn.js +113 -0
  51. package/dist/binding-targets-CnVPlLL3.js +121 -0
  52. package/dist/bot-BUkIAmq4.js +7894 -0
  53. package/dist/bot-deps-BDpF3-2x.js +747 -0
  54. package/dist/bot-deps-Ctxazu0z.js +2 -0
  55. package/dist/bot-message-context.runtime-Ddl-CF0g.js +7 -0
  56. package/dist/bot-message-context.runtime.js +1 -1
  57. package/dist/bot-message-context.session.runtime-BOBDJGi6.js +12 -0
  58. package/dist/bot-message-context.session.runtime.js +1 -1
  59. package/dist/bot-native-commands.delivery.runtime-Cp2bC1cm.js +4 -0
  60. package/dist/bot-native-commands.delivery.runtime.js +1 -1
  61. package/dist/bot-native-commands.runtime-BxOgiBSg.js +13 -0
  62. package/dist/bot-native-commands.runtime.js +1 -1
  63. package/dist/bridge-server-BD8gdvCj.js +113 -0
  64. package/dist/browser-cli-BxOiqtw0.js +230 -0
  65. package/dist/browser-cli-CQSbU4r7.js +2 -0
  66. package/dist/browser-cli-actions-input-CACwoXjH.js +473 -0
  67. package/dist/browser-cli-actions-observe-7y44Efff.js +81 -0
  68. package/dist/browser-cli-debug--cZDNVgZ.js +137 -0
  69. package/dist/browser-cli-inspect-Bjm1LYpb.js +104 -0
  70. package/dist/browser-cli-manage-BdoQAGZ5.js +443 -0
  71. package/dist/browser-cli-resize-CiWfi52U.js +26 -0
  72. package/dist/browser-cli-shared-Cf2UTok5.js +50 -0
  73. package/dist/browser-cli-state-BzSo9Zyo.js +337 -0
  74. package/dist/browser-control-auth-goBz3LrL.js +2 -0
  75. package/dist/browser-profiles-5QyWxduY.js +2 -0
  76. package/dist/browser-runtime-DpYYMv_-.js +384 -0
  77. package/dist/build-BOWwrF6B.js +257 -0
  78. package/dist/build-info.json +3 -3
  79. package/dist/bundled/boot-md/handler.js +2 -2
  80. package/dist/bundled/session-memory/handler.js +1 -1
  81. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  82. package/dist/capability-cli-p3b5r_A5.js +1782 -0
  83. package/dist/channel-8rtqtIC-.js +238 -0
  84. package/dist/channel-B2t80bjP.js +1556 -0
  85. package/dist/channel-BFgbA2E6.js +562 -0
  86. package/dist/channel-BPZSxEkQ.js +808 -0
  87. package/dist/channel-BibcrGJ7.js +955 -0
  88. package/dist/channel-Bj3a13bG.js +1777 -0
  89. package/dist/channel-Bsd0VVMJ.js +2126 -0
  90. package/dist/channel-C4Ouz2jY.js +481 -0
  91. package/dist/channel-CXcp2i5k.js +653 -0
  92. package/dist/channel-CZNxKVdH.js +1134 -0
  93. package/dist/channel-CfI-ubEB.js +740 -0
  94. package/dist/channel-CgNA5Zih.js +1496 -0
  95. package/dist/channel-D5n_k9F5.js +867 -0
  96. package/dist/channel-D7vJSPUF.js +1249 -0
  97. package/dist/channel-DcV0Ld4N.js +362 -0
  98. package/dist/channel-De73mgO_.js +508 -0
  99. package/dist/channel-Dmdu9Pzb.js +376 -0
  100. package/dist/channel-actions.runtime-CihZrf0M.js +265 -0
  101. package/dist/channel-actions.runtime.js +1 -1
  102. package/dist/channel-cGJKLfJe.d.ts +427 -0
  103. package/dist/channel-core-Ng_haxOP.js +5 -0
  104. package/dist/channel-inbound-Dz8i5Map.js +80 -0
  105. package/dist/channel-plugin-runtime-BGwpeswU.js +998 -0
  106. package/dist/channel-runtime-5xfHeIpP.js +408 -0
  107. package/dist/channel.runtime-3cv5PIqa.js +21009 -0
  108. package/dist/channel.runtime-B48fiEqP.js +109 -0
  109. package/dist/channel.runtime-B9omb8Je.js +733 -0
  110. package/dist/channel.runtime-BTnYLrjs.js +652 -0
  111. package/dist/channel.runtime-Bw4vm2KP.js +4 -0
  112. package/dist/channel.runtime-JZVnahXY.js +254 -0
  113. package/dist/channel.runtime-OyE1NDe4.js +2528 -0
  114. package/dist/channel.runtime-Q3Chs30P.js +1008 -0
  115. package/dist/channel.runtime-cGEI9b88.js +88 -0
  116. package/dist/channel.setup-BvvO8wUo.js +1098 -0
  117. package/dist/channel.setup-Cy2rvR1u.js +10 -0
  118. package/dist/channel.setup-Xo7BBamM.js +343 -0
  119. package/dist/chat-CfSmQsWK.js +2666 -0
  120. package/dist/chrome-CB8ELr8g.js +1503 -0
  121. package/dist/cli/run-main.js +5 -5
  122. package/dist/cli-CCnAoXu8.js +1341 -0
  123. package/dist/cli-compaction-C5z02QAR.js +347 -0
  124. package/dist/cli-metadata-VfQG__-m.js +22 -0
  125. package/dist/cli-runner-C8VlXbx6.js +2 -0
  126. package/dist/cli-runner-FnNwgi9z.js +540 -0
  127. package/dist/cli-runner.runtime-3y8ztIrM.js +4 -0
  128. package/dist/cli-runner.runtime-DjJNUNqh.js +3 -0
  129. package/dist/cli-runner.runtime.js +1 -1
  130. package/dist/cli-startup-metadata.json +8 -8
  131. package/dist/client-BxaKR3NR.js +650 -0
  132. package/dist/client-adapter-CD2eYE5u.js +897 -0
  133. package/dist/client-factory-wknOz0YZ.js +9 -0
  134. package/dist/command-auth-5oWRlAgW.js +135 -0
  135. package/dist/command-handlers-DRLCoUOI.js +1609 -0
  136. package/dist/command-registry-ClgHMh-P.js +4 -0
  137. package/dist/command-registry-Crw-ALyo.js +9 -0
  138. package/dist/command-registry-core-Q8mKRnm2.js +110 -0
  139. package/dist/command-status.runtime-Bv5-S6Jh.js +90 -0
  140. package/dist/command-status.runtime.js +1 -1
  141. package/dist/commands-acp-D7wwvhSb.js +74 -0
  142. package/dist/commands-compact.runtime-Do6XoPgi.js +10 -0
  143. package/dist/commands-compact.runtime.js +1 -1
  144. package/dist/commands-handlers.runtime-CQIeiOBs.js +6154 -0
  145. package/dist/commands-handlers.runtime.js +1 -1
  146. package/dist/commands-status--6Ec-6xl.js +3 -0
  147. package/dist/commands-status-B71V5ctj.js +16 -0
  148. package/dist/commands-status.runtime--6Ec-6xl.js +3 -0
  149. package/dist/commands-status.runtime.js +1 -1
  150. package/dist/commands-subagents-control.runtime-0bdHKGkh.js +2 -0
  151. package/dist/commands-subagents-control.runtime-C699ndyM.js +3 -0
  152. package/dist/commands-subagents-control.runtime.js +1 -1
  153. package/dist/commands-system-prompt-B-_6D_8o.js +2 -0
  154. package/dist/commands-system-prompt-Cf5S370X.js +162 -0
  155. package/dist/commands.runtime-C95VhDIj.js +176 -0
  156. package/dist/commands.runtime.js +1 -1
  157. package/dist/commitments/runtime.js +1 -1
  158. package/dist/compact-BUfPJl6J.js +1141 -0
  159. package/dist/compact-WFlFbfB-.js +480 -0
  160. package/dist/compact.runtime-CQnO12gG.js +12 -0
  161. package/dist/compact.runtime.js +1 -1
  162. package/dist/completion-cli-uJRHgHYJ.js +315 -0
  163. package/dist/computer-use-BqSdNbdx.js +367 -0
  164. package/dist/config-5QyWxduY.js +2 -0
  165. package/dist/config-D7UGquxF.js +373 -0
  166. package/dist/config-mutations-BcFxP9jF.js +159 -0
  167. package/dist/context-engine-host-compat-BBGC6Eb4.js +2 -0
  168. package/dist/context-engine-host-compat-Us6I7iiS.js +288 -0
  169. package/dist/context-engine-lifecycle-BRYjJ_xx.js +1274 -0
  170. package/dist/control-auth-Dz6wWtYF.js +114 -0
  171. package/dist/control-service-OTMJ16Vr.js +145 -0
  172. package/dist/control-ui/assets/agents-B6Fnnycd.js +1008 -0
  173. package/dist/control-ui/assets/channel-config-extras-Bfyy8zu1.js +2 -0
  174. package/dist/control-ui/assets/channels-Cz4PQN2A.js +367 -0
  175. package/dist/control-ui/assets/cron-CNn6C7Np.js +1013 -0
  176. package/dist/control-ui/assets/debug-D1moRGPg.js +97 -0
  177. package/dist/control-ui/assets/index-CWpjkFbm.js +7378 -0
  178. package/dist/control-ui/assets/index-Cc-YFhIX.css +1 -0
  179. package/dist/control-ui/assets/instances-CD1vgemb.js +57 -0
  180. package/dist/control-ui/assets/logs-DFBfz91p.js +74 -0
  181. package/dist/control-ui/assets/nodes-D_ByFobS.js +436 -0
  182. package/dist/control-ui/assets/sessions-CI1Fspms.js +399 -0
  183. package/dist/control-ui/assets/skills-DtnIlsXa.js +314 -0
  184. package/dist/control-ui/assets/skills-shared-CxPIl_DL.js +11 -0
  185. package/dist/control-ui/index.html +2 -2
  186. package/dist/control-ui/sw.js +1 -1
  187. package/dist/conversation-binding-runtime-Qzm50Ztm.js +4 -0
  188. package/dist/conversation-runtime-B8IRh0X_.js +31 -0
  189. package/dist/core-B9JJc5bK.js +282 -0
  190. package/dist/core-api-BkLqoKIY.js +5 -0
  191. package/dist/core-api-D_qLiSVx.js +2 -0
  192. package/dist/crestodian/crestodian.js +1 -1
  193. package/dist/crestodian/rescue-message.js +1 -1
  194. package/dist/crestodian-Wce00VL9.js +55 -0
  195. package/dist/daocore-tools-BGfsn9OX.js +11727 -0
  196. package/dist/delivery-CKZNf6HN.js +1002 -0
  197. package/dist/dialogue-DMyfQ10Y.js +37 -0
  198. package/dist/dir-fetch-tool-Bodc_UiO.js +565 -0
  199. package/dist/dir-list-tool-DKdRgmE0.js +100 -0
  200. package/dist/direct-dm-gubxMBvV.js +64 -0
  201. package/dist/directive-handling.fast-lane-SIR-LK_X.js +68 -0
  202. package/dist/directive-handling.impl-CyETmsuZ.js +2 -0
  203. package/dist/directive-handling.impl-DBRFiFvk.js +818 -0
  204. package/dist/directive-handling.model-selection-DY-tmC6k.js +122 -0
  205. package/dist/directive-handling.persist.runtime-NzxgMnZ0.js +263 -0
  206. package/dist/directive-handling.persist.runtime.js +1 -1
  207. package/dist/dispatch-Cfc2X0Y6.js +1640 -0
  208. package/dist/dispatch-acp-transcript.runtime-QL350v4-.js +40 -0
  209. package/dist/dispatch-acp-transcript.runtime.js +1 -1
  210. package/dist/dispatch-acp.runtime-D3FviqFZ.js +18 -0
  211. package/dist/dispatch-acp.runtime.js +1 -1
  212. package/dist/doctor-C7gTSFfH.js +6 -0
  213. package/dist/doctor-DiHS_IQ0.js +2 -0
  214. package/dist/doctor-config-flow-B8FwXA-r.js +1741 -0
  215. package/dist/doctor-core-checks-BYeuryZ4.js +2 -0
  216. package/dist/doctor-core-checks-CnzzLGiH.js +573 -0
  217. package/dist/doctor-health-BnmOyTty.js +65 -0
  218. package/dist/doctor-health-contributions-ocQMPxjM.js +696 -0
  219. package/dist/doctor-lint-CjRi8o5u.js +94 -0
  220. package/dist/doctor-state-integrity-Dbu4NMz2.js +1231 -0
  221. package/dist/dynamic-tools-6zBBc1qr.js +486 -0
  222. package/dist/embedded-backend-BZOf3nmp.js +579 -0
  223. package/dist/embedded-gateway-stub.runtime-Bz0nKXhe.js +12 -0
  224. package/dist/embedded-gateway-stub.runtime.js +1 -1
  225. package/dist/exec-approvals-D7MoRNan.js +149 -0
  226. package/dist/extensionAPI.js +1 -1
  227. package/dist/extensions/active-memory/index.js +1 -1
  228. package/dist/extensions/admin-http-rpc/index.js +1 -1
  229. package/dist/extensions/browser/browser-bridge.js +1 -1
  230. package/dist/extensions/browser/browser-config.js +4 -4
  231. package/dist/extensions/browser/browser-control-auth.js +2 -2
  232. package/dist/extensions/browser/browser-doctor.js +2 -2
  233. package/dist/extensions/browser/browser-maintenance.js +1 -1
  234. package/dist/extensions/browser/browser-profiles.js +2 -2
  235. package/dist/extensions/browser/browser-runtime-api.js +11 -11
  236. package/dist/extensions/browser/cli-metadata.js +1 -1
  237. package/dist/extensions/browser/index.js +1 -1
  238. package/dist/extensions/browser/plugin-registration.js +1 -1
  239. package/dist/extensions/browser/register.runtime.js +4 -4
  240. package/dist/extensions/browser/runtime-api.js +13 -13
  241. package/dist/extensions/canvas/index.js +1 -1
  242. package/dist/extensions/clickclack/api.js +2 -2
  243. package/dist/extensions/clickclack/channel-plugin-api.js +1 -1
  244. package/dist/extensions/clickclack/runtime-api.js +2 -2
  245. package/dist/extensions/device-pair/api.js +1 -1
  246. package/dist/extensions/device-pair/pair-command-approve.js +1 -1
  247. package/dist/extensions/file-transfer/index.js +4 -4
  248. package/dist/extensions/imessage/api.js +2 -2
  249. package/dist/extensions/imessage/channel-plugin-api.js +1 -1
  250. package/dist/extensions/imessage/message-tool-api.d.ts +1 -1
  251. package/dist/extensions/imessage/runtime-api.js +3 -3
  252. package/dist/extensions/irc/api.js +2 -2
  253. package/dist/extensions/irc/channel-plugin-api.js +1 -1
  254. package/dist/extensions/llm-task/index.js +1 -1
  255. package/dist/extensions/mattermost/api.js +1 -1
  256. package/dist/extensions/mattermost/channel-plugin-api.js +1 -1
  257. package/dist/extensions/mattermost/channel-plugin-runtime.js +1 -1
  258. package/dist/extensions/mattermost/policy-api.js +1 -1
  259. package/dist/extensions/mattermost/runtime-api.js +2 -2
  260. package/dist/extensions/mattermost/slash-route-api.js +1 -1
  261. package/dist/extensions/memory-core/cli-metadata.js +1 -1
  262. package/dist/extensions/migrate-claude/apply.js +1 -1
  263. package/dist/extensions/migrate-claude/index.js +1 -1
  264. package/dist/extensions/migrate-claude/plan.js +1 -1
  265. package/dist/extensions/migrate-claude/provider.js +1 -1
  266. package/dist/extensions/migrate-claude/targets.js +1 -1
  267. package/dist/extensions/migrate-hermes/apply.js +1 -1
  268. package/dist/extensions/migrate-hermes/index.js +1 -1
  269. package/dist/extensions/migrate-hermes/model.js +1 -1
  270. package/dist/extensions/migrate-hermes/plan.js +1 -1
  271. package/dist/extensions/migrate-hermes/provider.js +1 -1
  272. package/dist/extensions/migrate-hermes/secrets.js +1 -1
  273. package/dist/extensions/migrate-hermes/targets.js +1 -1
  274. package/dist/extensions/policy/api.js +1 -1
  275. package/dist/extensions/policy/index.js +2 -2
  276. package/dist/extensions/signal/api.js +6 -6
  277. package/dist/extensions/signal/channel-plugin-api.js +1 -1
  278. package/dist/extensions/signal/reaction-runtime-api.js +1 -1
  279. package/dist/extensions/signal/runtime-api.js +7 -7
  280. package/dist/extensions/skill-workshop/api.js +1 -1
  281. package/dist/extensions/skill-workshop/index.js +2 -2
  282. package/dist/extensions/telegram/account-inspect-api.js +1 -1
  283. package/dist/extensions/telegram/api.js +11 -11
  284. package/dist/extensions/telegram/channel-plugin-api.js +2 -2
  285. package/dist/extensions/telegram/contract-api.js +3 -3
  286. package/dist/extensions/telegram/runtime-api.js +7 -7
  287. package/dist/extensions/telegram/security-audit-contract-api.js +1 -1
  288. package/dist/extensions/telegram/setup-plugin-api.js +1 -1
  289. package/dist/extensions/telegram/test-api.js +2 -2
  290. package/dist/extensions/webhooks/api.js +1 -1
  291. package/dist/extensions/webhooks/index.js +1 -1
  292. package/dist/extensions/xai/index.js +4 -4
  293. package/dist/extensions/xai/realtime-transcription-provider.js +1 -1
  294. package/dist/extensions/xai/speech-provider.js +1 -1
  295. package/dist/extensions/xai/test-api.js +1 -1
  296. package/dist/extensions/xai/tts.js +1 -1
  297. package/dist/extensions/xai/web-search.js +1 -1
  298. package/dist/extensions/xai/xai-oauth.js +1 -1
  299. package/dist/file-fetch-tool-UOp-kXiF.js +124 -0
  300. package/dist/file-write-tool-Bmics566.js +127 -0
  301. package/dist/format-BAPtahQp.js +1145 -0
  302. package/dist/gateway-cli-C9vWttAu.js +435 -0
  303. package/dist/gateway-method-runtime-cf2DQe_R.js +21 -0
  304. package/dist/get-reply-from-config.runtime-973T_WNQ.js +2 -0
  305. package/dist/get-reply-from-config.runtime.js +1 -1
  306. package/dist/get-reply-nFbvZyXJ.js +4689 -0
  307. package/dist/graph-users-DX3qj987.js +1419 -0
  308. package/dist/group-access-fUxE_esT.js +112 -0
  309. package/dist/handle-action.guild-admin-DzmixKDt.js +288 -0
  310. package/dist/harness-BvoaeM2G.js +61 -0
  311. package/dist/health-BNfYEJaa.js +4 -0
  312. package/dist/heartbeat-runner-DHFAz5O-.js +5 -0
  313. package/dist/heartbeat-runner.runtime-BTARhrNZ.js +4 -0
  314. package/dist/heartbeat-runner.runtime.js +1 -1
  315. package/dist/hooks-DxGU2YA5.js +534 -0
  316. package/dist/inbound-direct-dm-runtime-CAX9fltu.js +2 -0
  317. package/dist/inbound-reply-dispatch-T13MYtrr.js +148 -0
  318. package/dist/index.js +1 -1
  319. package/dist/init-DCCh5oSO.js +59 -0
  320. package/dist/inline-buttons-DaFc4jXn.js +40 -0
  321. package/dist/internal-events-Gz1ipxmh.js +90 -0
  322. package/dist/isolated-agent-CHUsxMC-.js +1118 -0
  323. package/dist/isolated-agent-K2nfnPOc.js +2 -0
  324. package/dist/lifecycle-kyB2yqsq.js +571 -0
  325. package/dist/list.probe-BSjy8u2p.js +449 -0
  326. package/dist/list.status-command-BxIAK-G5.js +789 -0
  327. package/dist/llm-slug-generator-BMH4faWD.js +78 -0
  328. package/dist/llm-slug-generator.js +1 -1
  329. package/dist/local-dispatch.runtime-DFy7ycDP.js +9 -0
  330. package/dist/local-dispatch.runtime.js +1 -1
  331. package/dist/manager.runtime-CPqoT9HS.js +2714 -0
  332. package/dist/manager.runtime.js +1 -1
  333. package/dist/markdown-to-line-DQuET8BD.js +811 -0
  334. package/dist/mcp-http-BTLfb7mN.js +555 -0
  335. package/dist/mcp-http-Bcx2IvUV.js +2 -0
  336. package/dist/media-understanding-provider-BXfXH9ER.js +339 -0
  337. package/dist/message-actions-O4ffm7Zz.js +145 -0
  338. package/dist/message-handler-B3NHGkvn.js +1715 -0
  339. package/dist/message-handler-Dm-49Yay.js +384 -0
  340. package/dist/message-handler.preflight-Dmy4TMmc.js +1125 -0
  341. package/dist/message-handler.process-BvIh9714.js +1484 -0
  342. package/dist/model-CiE38oM-.js +74 -0
  343. package/dist/model-selection-B4wj_z32.js +272 -0
  344. package/dist/models-DF0uMtab.js +2 -0
  345. package/dist/models-DupIeDpS.js +104 -0
  346. package/dist/models-cli-BKoIijSE.js +256 -0
  347. package/dist/monitor-BGkgqVYu.js +4377 -0
  348. package/dist/monitor-BJBnArAU.js +834 -0
  349. package/dist/monitor-C1L1aR0q.js +2788 -0
  350. package/dist/monitor-C3wAzu_q.js +2 -0
  351. package/dist/monitor-CN29zOnf.js +1370 -0
  352. package/dist/monitor-D7FhV0Qe.js +1657 -0
  353. package/dist/monitor-Dcy6FUPv.js +60 -0
  354. package/dist/monitor-Y4SvOC0z.js +715 -0
  355. package/dist/monitor-auth-B_73QHux.js +179 -0
  356. package/dist/monitor-polling.runtime-D3yoLMON.js +883 -0
  357. package/dist/monitor-polling.runtime.js +1 -1
  358. package/dist/monitor-webhook.runtime-CnchK0Ki.js +387 -0
  359. package/dist/monitor-webhook.runtime.js +1 -1
  360. package/dist/monitor.account-B0u_Xih0.js +5233 -0
  361. package/dist/monitor.runtime-9JVw9n8z.js +2 -0
  362. package/dist/monitor.runtime.js +1 -1
  363. package/dist/monitor.webhook-ixq3jhC8.js +180 -0
  364. package/dist/node-cli-sessions-C07qXjfH.js +1228 -0
  365. package/dist/openai-http-DL1i7Pdz.js +824 -0
  366. package/dist/openresponses-http-4vW7i5hM.js +1173 -0
  367. package/dist/operations-hyqHq47Z.js +805 -0
  368. package/dist/outbound-adapter-B2lF_Qp0.js +543 -0
  369. package/dist/outbound-session-route-CXbw-Zbl.js +45 -0
  370. package/dist/outbound.runtime-ROOz_EXD.js +2 -0
  371. package/dist/outbound.runtime.js +1 -1
  372. package/dist/pi-embedded-D23Jv1_v.js +4 -0
  373. package/dist/pi-embedded-LwXPGFfT.js +3796 -0
  374. package/dist/pi-embedded.runtime-Rk5rpqL7.js +4 -0
  375. package/dist/pi-embedded.runtime.js +1 -1
  376. package/dist/pi-tools-DqhrI9AL.js +2413 -0
  377. package/dist/plan-BCEMv5RF.js +112 -0
  378. package/dist/plan-BHwmpZjz.js +81 -0
  379. package/dist/plugin-app-cache-key-CWYPZS_p.js +46 -0
  380. package/dist/plugin-enabled-NkokTFHK.js +233 -0
  381. package/dist/plugin-oDyOB4UI.js +12396 -0
  382. package/dist/plugin-registration-CeH_6Is4.js +88 -0
  383. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  384. package/dist/plugin-sdk/acp-runtime-backend.js +1 -1
  385. package/dist/plugin-sdk/acp-runtime.js +2 -2
  386. package/dist/plugin-sdk/agent-harness-runtime.js +6 -6
  387. package/dist/plugin-sdk/agent-harness-task-runtime.js +1 -1
  388. package/dist/plugin-sdk/agent-harness.js +7 -7
  389. package/dist/plugin-sdk/agent-runtime.js +2 -2
  390. package/dist/plugin-sdk/channel-core.js +2 -2
  391. package/dist/plugin-sdk/channel-inbound.js +2 -2
  392. package/dist/plugin-sdk/channel-test-helpers.js +1 -1
  393. package/dist/plugin-sdk/command-auth.js +1 -1
  394. package/dist/plugin-sdk/command-status-runtime.js +1 -1
  395. package/dist/plugin-sdk/compat.js +1 -1
  396. package/dist/plugin-sdk/conversation-binding-runtime.js +2 -2
  397. package/dist/plugin-sdk/conversation-runtime.js +3 -3
  398. package/dist/plugin-sdk/core.js +2 -2
  399. package/dist/plugin-sdk/direct-dm.js +1 -1
  400. package/dist/plugin-sdk/gateway-method-runtime.js +1 -1
  401. package/dist/plugin-sdk/health.js +2 -2
  402. package/dist/plugin-sdk/inbound-reply-dispatch.js +1 -1
  403. package/dist/plugin-sdk/index.js +1 -1
  404. package/dist/plugin-sdk/mattermost.js +1 -1
  405. package/dist/plugin-sdk/plugin-test-contracts.js +2 -2
  406. package/dist/plugin-sdk/provider-test-contracts.js +4 -4
  407. package/dist/plugin-sdk/reply-runtime.js +4 -4
  408. package/dist/plugin-sdk/testing.js +2 -2
  409. package/dist/plugin-sdk/zalouser.js +1 -1
  410. package/dist/plugin-service-XeCZ8oFI.js +1229 -0
  411. package/dist/plugins/runtime/index.js +4 -4
  412. package/dist/policy-BsS7jXyV.js +138 -0
  413. package/dist/policy-dTLidj41.js +680 -0
  414. package/dist/prepare.runtime-CxSRhibQ.js +732 -0
  415. package/dist/prepare.runtime.js +1 -1
  416. package/dist/preview-warnings-CYO_Ec8j.js +392 -0
  417. package/dist/probe-B38i01ob.js +2 -0
  418. package/dist/probe-BfuwJZxZ.js +47 -0
  419. package/dist/probe-DaZ-zbpf.js +2204 -0
  420. package/dist/probe-TNHaSvg4.js +682 -0
  421. package/dist/program-BHDY7txk.js +131 -0
  422. package/dist/provider-B2OEKMgz.js +8735 -0
  423. package/dist/provider-BN5zYpXy.js +152 -0
  424. package/dist/provider-C5wk4Zq2.js +32 -0
  425. package/dist/provider-C_AVioxd.js +32 -0
  426. package/dist/provider-dispatcher-D8wmCCX8.js +22 -0
  427. package/dist/provider-dispatcher.runtime.js +1 -1
  428. package/dist/provider-session.runtime-B63XBUkk.js +9 -0
  429. package/dist/provider-session.runtime.js +1 -1
  430. package/dist/provider.runtime-D1lu1iBi.js +2 -0
  431. package/dist/provider.runtime.js +1 -1
  432. package/dist/public-surface-loader-ClnvswYD.js +114 -0
  433. package/dist/pw-ai-CUvQLjDl.js +3029 -0
  434. package/dist/pw-role-snapshot-DqOQm6b-.js +333 -0
  435. package/dist/reaction-level-DdxMc_S-.js +19 -0
  436. package/dist/reaction-runtime-api-DV5ADguG.js +116 -0
  437. package/dist/realtime-transcription-provider-Jx3qVPVX.js +205 -0
  438. package/dist/register-B6JqGeZm.js +2178 -0
  439. package/dist/register.agent-pQ55YbLM.js +156 -0
  440. package/dist/register.crestodian-DG48cq1n.js +24 -0
  441. package/dist/register.maintenance-CmyTyWfW.js +83 -0
  442. package/dist/register.runtime-Dc2ah3hl.js +54 -0
  443. package/dist/register.subclis-BNslxGzE.js +3 -0
  444. package/dist/register.subclis-BltgkX8W.js +31 -0
  445. package/dist/register.subclis-core-CXo28UGO.js +273 -0
  446. package/dist/repair-sequencing-SddJfHba.js +640 -0
  447. package/dist/reply-delivery-YOUVxLhE.js +196 -0
  448. package/dist/reply-runtime-Bic05q8u.js +11 -0
  449. package/dist/reply.runtime-973T_WNQ.js +2 -0
  450. package/dist/reply.runtime.js +1 -1
  451. package/dist/request-De-MLnVs.js +54 -0
  452. package/dist/resolve-allowlist-0P5Zm3Ih.js +220 -0
  453. package/dist/result-fallback-classifier-CRFWJOeW.js +79 -0
  454. package/dist/route-A4sH-KRJ.js +469 -0
  455. package/dist/route-resolution-BR89k_5k.js +274 -0
  456. package/dist/routes-BbmTgfa7.js +3602 -0
  457. package/dist/routes-H_X6d_BR.js +2 -0
  458. package/dist/run-C_HJBF46.js +1162 -0
  459. package/dist/run-attempt-DVUpjMzw.js +7704 -0
  460. package/dist/run-command-CtO053FV.js +23 -0
  461. package/dist/run-command-whpq0vSs.js +2 -0
  462. package/dist/run-embedded.runtime-z8KRAA9N.js +4 -0
  463. package/dist/run-embedded.runtime.js +1 -1
  464. package/dist/run-execution-cli.runtime-DP4sTGB3.js +4 -0
  465. package/dist/run-execution-cli.runtime.js +1 -1
  466. package/dist/run-executor.runtime.js +1 -1
  467. package/dist/run-subagent-registry.runtime-Ic4qjJAZ.js +2 -0
  468. package/dist/run-subagent-registry.runtime.js +1 -1
  469. package/dist/runtime-C84q1uWh.js +438 -0
  470. package/dist/runtime-DM-8CUG8.js +1287 -0
  471. package/dist/runtime-api-B92-eAFH.js +4 -0
  472. package/dist/runtime-api-BA-_f4wN.js +21 -0
  473. package/dist/runtime-api-C3x1bTUP.js +3 -0
  474. package/dist/runtime-api-C4J88HGc.js +13 -0
  475. package/dist/runtime-api-CBJPQTPG.js +24 -0
  476. package/dist/runtime-api-DI4rBaZp.js +17 -0
  477. package/dist/runtime-api-D_JIC4_F.js +13 -0
  478. package/dist/runtime-api.actions-Crwfcz27.js +3 -0
  479. package/dist/runtime-api.monitor-KeGId_a2.js +6 -0
  480. package/dist/runtime-api.send-DkmqVan7.js +4 -0
  481. package/dist/runtime-api.threads--LYxacx4.js +2 -0
  482. package/dist/runtime-channel-C0fX96Yx.js +2 -0
  483. package/dist/runtime-channel-CmXstmiO.js +150 -0
  484. package/dist/runtime-embedded-pi.runtime-C0nckPTh.js +2 -0
  485. package/dist/runtime-embedded-pi.runtime.js +1 -1
  486. package/dist/runtime-o-9rMitP.js +6179 -0
  487. package/dist/sanitize-outbound-BDtDO_r3.js +127 -0
  488. package/dist/sdk-setup-tools-Bw1sb2J0.js +8 -0
  489. package/dist/secrets-Cexd83PL.js +113 -0
  490. package/dist/security-audit-DeMasGQi.js +122 -0
  491. package/dist/security-audit-lZXBiK8a.js +118 -0
  492. package/dist/security-audit.runtime-B73uav0c.js +2 -0
  493. package/dist/security-audit.runtime.js +1 -1
  494. package/dist/selection-BPe1-NRx.js +16157 -0
  495. package/dist/selection-DtlsSu6t.js +3 -0
  496. package/dist/send-BP8O_f3_.js +2 -0
  497. package/dist/send-DB92XENW.js +192 -0
  498. package/dist/send-DPpvAomE.js +1631 -0
  499. package/dist/send-DUSg5J3j.js +143 -0
  500. package/dist/send.components-Beh2GSlI.js +500 -0
  501. package/dist/send.components-vjkB2tEO.js +2 -0
  502. package/dist/send.runtime-XHNBD8mm.js +2 -0
  503. package/dist/send.runtime.js +1 -1
  504. package/dist/server-CAQk-GlH.js +24 -0
  505. package/dist/server-Um3iJ7EL.js +73 -0
  506. package/dist/server-close.runtime.js +1 -1
  507. package/dist/server-context-Cq6Mf_Hx.js +2 -0
  508. package/dist/server-context-CxM3niUB.js +955 -0
  509. package/dist/server-cron-BSh0DjkH.js +2989 -0
  510. package/dist/server-cron-Csg1r2SE.js +2 -0
  511. package/dist/server-methods-CBPnwVD3.js +16499 -0
  512. package/dist/server-node-events-CZCahsw3.js +596 -0
  513. package/dist/server-plugin-bootstrap-DB4Iptzd.js +70 -0
  514. package/dist/server-plugins-BZIW7Sn8.js +432 -0
  515. package/dist/server-reload-handlers-V9f07KRC.js +714 -0
  516. package/dist/server-restart-sentinel-DSQyhuO9.js +2 -0
  517. package/dist/server-restart-sentinel-DnS4nSXg.js +747 -0
  518. package/dist/server-runtime-services-Da8S4dip.js +2 -0
  519. package/dist/server-runtime-services-hMwmCtz4.js +267 -0
  520. package/dist/server-startup-plugins-CFedlOir.js +113 -0
  521. package/dist/server-startup-post-attach-BC4ypGDV.js +716 -0
  522. package/dist/server-ws-runtime-BZdnJ8_f.js +349 -0
  523. package/dist/server.impl-JxdGpBse.js +2586 -0
  524. package/dist/service-CrRxM1s3.js +1446 -0
  525. package/dist/session-binding-B1kLTRx0.js +219 -0
  526. package/dist/session-binding-BhmP2qr8.js +2 -0
  527. package/dist/session-kill-http-hVTRFmxJ.js +121 -0
  528. package/dist/session-reset-service-NFIUAaub.js +625 -0
  529. package/dist/session-route-CAVGKfbY.js +93 -0
  530. package/dist/session-status.runtime-CAujMI0m.js +2 -0
  531. package/dist/session-status.runtime.js +1 -1
  532. package/dist/session-subagent-reactivation.runtime-CAD_WZE1.js +2 -0
  533. package/dist/session-subagent-reactivation.runtime.js +1 -1
  534. package/dist/session-tab-registry-BIhFQ2_N.js +521 -0
  535. package/dist/sessions-history-http-DTUCgSIv.js +430 -0
  536. package/dist/sessions.runtime-BhxJAIUl.js +2 -0
  537. package/dist/sessions.runtime.js +1 -1
  538. package/dist/setup-api-BaSNfjGt.js +29 -0
  539. package/dist/setup-core-Cv-UM5DV.js +174 -0
  540. package/dist/setup-surface-3iygBoSk.js +288 -0
  541. package/dist/setup-surface-BYu3PlXP.js +405 -0
  542. package/dist/setup-surface-BnCUx0xf.js +221 -0
  543. package/dist/setup-surface-DajEGPq9.js +320 -0
  544. package/dist/shared-DjUBdZw0.js +121 -0
  545. package/dist/shared-client-B364qsQs.js +2 -0
  546. package/dist/shared-client-vi4UjWgq.js +629 -0
  547. package/dist/side-question-Cfz-6Mik.js +683 -0
  548. package/dist/skill-tool-dispatch.runtime-BHi8qkm6.js +143 -0
  549. package/dist/skill-tool-dispatch.runtime.js +1 -1
  550. package/dist/slash-state-1yv6e-CZ.js +2166 -0
  551. package/dist/speech-provider-BBTLPoxz.js +184 -0
  552. package/dist/src-DQGUHoew.js +4256 -0
  553. package/dist/startup-context-CSXtIxM4.js +313 -0
  554. package/dist/status-subagents.runtime-Ce4XFNpI.js +18 -0
  555. package/dist/status-subagents.runtime.js +1 -1
  556. package/dist/status-text-B_aeJyIx.js +296 -0
  557. package/dist/sticker-cache-CyXfXSnD.js +206 -0
  558. package/dist/sticker-vision.runtime-CfEwepme.js +17 -0
  559. package/dist/sticker-vision.runtime.js +1 -1
  560. package/dist/subagent-announce-DJP9Deag.js +354 -0
  561. package/dist/subagent-announce-delivery-djkdPFWz.js +958 -0
  562. package/dist/subagent-control-C59CHxJT.js +508 -0
  563. package/dist/subagent-hooks-B7HsNzMr.js +230 -0
  564. package/dist/subagent-hooks-BPSvsSKo.js +2 -0
  565. package/dist/subagent-hooks-Bg-RSz4n.js +146 -0
  566. package/dist/subagent-hooks-BvAYM6MF.js +2 -0
  567. package/dist/subagent-hooks-DCga-z0P.js +2 -0
  568. package/dist/subagent-hooks-DpUUm-nC.js +116 -0
  569. package/dist/subagent-hooks-api-BfBPES7I.js +23 -0
  570. package/dist/subagent-hooks-api-Ct3H1JvT.js +23 -0
  571. package/dist/subagent-hooks-api-D-gcal8L.js +22 -0
  572. package/dist/subagent-orphan-recovery-TurbGwPo.js +352 -0
  573. package/dist/subagent-registry-Dcr5vJsh.js +3 -0
  574. package/dist/subagent-registry-almRMGiJ.js +2351 -0
  575. package/dist/subagent-registry.runtime.js +1 -1
  576. package/dist/subagent-session-cleanup-DStloUoa.js +525 -0
  577. package/dist/subagent-spawn-a5zQq79_.js +1164 -0
  578. package/dist/target-id-C0AUAPRt.js +107 -0
  579. package/dist/targets-9NQEAB_8.js +44 -0
  580. package/dist/targets-BX9hUOE0.js +19 -0
  581. package/dist/targets-uCQJMS9L.js +19 -0
  582. package/dist/task-registry-control.runtime.js +1 -1
  583. package/dist/telegram/token.js +1 -1
  584. package/dist/testing-CL4tSWlY.js +267 -0
  585. package/dist/thread-bindings-CuYgnJrA.js +232 -0
  586. package/dist/thread-bindings-DrLRFv9V.js +571 -0
  587. package/dist/thread-bindings-DuDBMJUH.js +8 -0
  588. package/dist/thread-bindings-DuPLUeEg.js +228 -0
  589. package/dist/thread-bindings.discord-api-CRkN3LO6.js +187 -0
  590. package/dist/thread-bindings.manager-U4vvV74R.js +2 -0
  591. package/dist/thread-bindings.manager-qvjQ7XrE.js +536 -0
  592. package/dist/thread-lifecycle-ebEJZlV8.js +1614 -0
  593. package/dist/token-BfUGddbB.js +134 -0
  594. package/dist/tool-DMbMn8SG.js +139 -0
  595. package/dist/tool-actions.runtime-3flyBx99.js +534 -0
  596. package/dist/tool-actions.runtime.js +1 -1
  597. package/dist/tool-resolution-CteuwLWG.js +149 -0
  598. package/dist/tools-effective-inventory-C3umjhj4.js +204 -0
  599. package/dist/tools-invoke-http-BPDxOpMS.js +67 -0
  600. package/dist/tools-invoke-shared-BgajIn1A.js +200 -0
  601. package/dist/tts-DWkHFEoO.js +66 -0
  602. package/dist/tui-BLuAg68O.js +2 -0
  603. package/dist/tui-backend-B_XhQILj.js +256 -0
  604. package/dist/tui-cli-C3L6mNyE.js +37 -0
  605. package/dist/tui-kx080n35.js +4709 -0
  606. package/dist/update-cli-Ca7CiQOc.js +3664 -0
  607. package/dist/vision-tools-V-w_kZa2.js +1409 -0
  608. package/dist/web-search-LuWKS3f2.js +62 -0
  609. package/dist/web-search-provider.runtime-CmbTFxDm.js +2 -0
  610. package/dist/web-search-provider.runtime-DZXMqd4W.js +328 -0
  611. package/dist/web-search-provider.runtime.js +1 -1
  612. package/dist/xai-oauth-C_tPwhEw.js +479 -0
  613. package/dist/xai-user-agent-C1zI5_IU.js +32 -0
  614. package/package.json +1 -1
  615. package/dist/abort-By1jCXcv.js +0 -277
  616. package/dist/abort.runtime-BUEReR-v.js +0 -2
  617. package/dist/account-inspect-DkuYTikX.js +0 -173
  618. package/dist/accounts-C19Qdo7I.js +0 -107
  619. package/dist/accounts-CjG0t0Cv.js +0 -119
  620. package/dist/accounts-CtWjp889.js +0 -2
  621. package/dist/accounts-qPTOizTg.js +0 -107
  622. package/dist/acp-runtime-CMLjiKa-.js +0 -26
  623. package/dist/acp-spawn-BGT-Px6Z.js +0 -1275
  624. package/dist/acp-spawn-CPO-hI4Y.js +0 -2
  625. package/dist/acp-stateful-target-driver-CDW_IRB4.js +0 -89
  626. package/dist/action-kill-B77KpIIQ.js +0 -33
  627. package/dist/action-runtime-EWSpHGrj.js +0 -469
  628. package/dist/action-runtime-api-bUNFqFoC.js +0 -2
  629. package/dist/action-send-DkQiw_fv.js +0 -39
  630. package/dist/action-spawn-noygtmpa.js +0 -47
  631. package/dist/actions-CPKTkTAD.js +0 -161
  632. package/dist/actions.runtime-eslFNzsP.js +0 -5
  633. package/dist/agent-CjNqqyKT.js +0 -3
  634. package/dist/agent-DaUQpTpc.js +0 -2
  635. package/dist/agent-command-DFcGb1lF.js +0 -1367
  636. package/dist/agent-components.runtime-_b4M39T5.js +0 -10
  637. package/dist/agent-harness-runtime-C09s_5eo.js +0 -180
  638. package/dist/agent-harness-task-runtime-wnzHUZZT.js +0 -140
  639. package/dist/agent-runner-execution-Bx_X59we.js +0 -1713
  640. package/dist/agent-runner-utils-hOwJODaJ.js +0 -266
  641. package/dist/agent-runner.runtime-LeZ65RXP.js +0 -3455
  642. package/dist/agent-runtime-Cio-RAUW.js +0 -229
  643. package/dist/agent-via-gateway-C06ks7Yk.js +0 -463
  644. package/dist/api-CBKedD81.js +0 -2
  645. package/dist/api-Ct1qM1Qp.js +0 -3
  646. package/dist/api-DN_WUxmH.js +0 -639
  647. package/dist/api-D_cLf5HR.js +0 -6
  648. package/dist/api-DhpRwVRC.js +0 -134
  649. package/dist/api-HHeiUqKx.js +0 -2
  650. package/dist/apply-CBc3t-6b.js +0 -41
  651. package/dist/apply-DP2LNAI1.js +0 -54
  652. package/dist/approval-handler.runtime-D3dVfQpz.js +0 -130
  653. package/dist/assistant-CJUhCzx1.js +0 -291
  654. package/dist/attachment-normalize-B7BuPwh0.js +0 -225
  655. package/dist/attempt-execution-C_zoopZx.js +0 -558
  656. package/dist/attempt-execution.runtime-BORPE4U7.js +0 -3
  657. package/dist/attempt-execution.shared-CVs8nY8C.js +0 -38
  658. package/dist/attempt.prompt-helpers-hRgWdd1i.js +0 -475
  659. package/dist/attempt.tool-run-context-kTuNRgCl.js +0 -2094
  660. package/dist/binding-routing-DODVC3IC.js +0 -113
  661. package/dist/binding-targets-AB_RKGdU.js +0 -121
  662. package/dist/bot-CSLsTmf1.js +0 -7894
  663. package/dist/bot-deps-DynTqfAM.js +0 -2
  664. package/dist/bot-deps-W46ftf2D.js +0 -747
  665. package/dist/bot-message-context.runtime-CYqi6a9-.js +0 -7
  666. package/dist/bot-message-context.session.runtime-zGfXe8D8.js +0 -12
  667. package/dist/bot-native-commands.delivery.runtime-Cl0_uLC6.js +0 -4
  668. package/dist/bot-native-commands.runtime-yy3akJPm.js +0 -13
  669. package/dist/bridge-server-B6ImaGh0.js +0 -113
  670. package/dist/browser-cli-CPNZpueD.js +0 -230
  671. package/dist/browser-cli-CntDlufK.js +0 -2
  672. package/dist/browser-cli-actions-input-DiJDRQCl.js +0 -473
  673. package/dist/browser-cli-actions-observe-9KtuDERW.js +0 -81
  674. package/dist/browser-cli-debug-lSi6c_Ol.js +0 -137
  675. package/dist/browser-cli-inspect-B5KmooQv.js +0 -104
  676. package/dist/browser-cli-manage-ClQjPfwK.js +0 -443
  677. package/dist/browser-cli-resize-DDY2Vnxq.js +0 -26
  678. package/dist/browser-cli-shared-KEAus8qW.js +0 -50
  679. package/dist/browser-cli-state-cmFcL-Ov.js +0 -337
  680. package/dist/browser-control-auth-B9USDwU2.js +0 -2
  681. package/dist/browser-profiles-wUaKqWjT.js +0 -2
  682. package/dist/browser-runtime-BMjauwo0.js +0 -384
  683. package/dist/build-Dpe0nJg9.js +0 -257
  684. package/dist/capability-cli-APHxOZ1-.js +0 -1782
  685. package/dist/channel--E_8Ztf3.js +0 -238
  686. package/dist/channel-3EQVZa8n.js +0 -2126
  687. package/dist/channel-BWohDmFY.js +0 -1777
  688. package/dist/channel-BfuypvUg.js +0 -562
  689. package/dist/channel-C-xJIqXb.js +0 -508
  690. package/dist/channel-C9ZiWsaI.js +0 -1496
  691. package/dist/channel-CWrkQgCl.js +0 -376
  692. package/dist/channel-CeYYSdzG.js +0 -740
  693. package/dist/channel-ClyBSyAK.js +0 -481
  694. package/dist/channel-Czs81UUj.d.ts +0 -427
  695. package/dist/channel-DG1b4zfh.js +0 -1134
  696. package/dist/channel-DW54rSJn.js +0 -1249
  697. package/dist/channel-DxjDXDxn.js +0 -867
  698. package/dist/channel-FomvCEVN.js +0 -955
  699. package/dist/channel-GKsXwHeD.js +0 -808
  700. package/dist/channel-WXdZaj61.js +0 -653
  701. package/dist/channel-actions.runtime-NGRDvF7V.js +0 -265
  702. package/dist/channel-core-DtMwDjjI.js +0 -5
  703. package/dist/channel-e8DrnKQ4.js +0 -1556
  704. package/dist/channel-inbound-DHAnp9B7.js +0 -80
  705. package/dist/channel-nELBI87_.js +0 -362
  706. package/dist/channel-plugin-runtime-Djo2BcWh.js +0 -998
  707. package/dist/channel-runtime-CAlo3fCO.js +0 -408
  708. package/dist/channel.runtime-B3Ul1RFH.js +0 -4
  709. package/dist/channel.runtime-B9St3ZA6.js +0 -2528
  710. package/dist/channel.runtime-BJQkhPRD.js +0 -109
  711. package/dist/channel.runtime-CK75RXGn.js +0 -652
  712. package/dist/channel.runtime-CToTSl-o.js +0 -254
  713. package/dist/channel.runtime-CmCC2X3-.js +0 -1008
  714. package/dist/channel.runtime-D9aRtIhc.js +0 -733
  715. package/dist/channel.runtime-awjkyecJ.js +0 -88
  716. package/dist/channel.runtime-j5gDw94U.js +0 -21009
  717. package/dist/channel.setup--MA2uXGh.js +0 -1098
  718. package/dist/channel.setup-CoJW0xXI.js +0 -343
  719. package/dist/channel.setup-Du2MwoWF.js +0 -10
  720. package/dist/chat-_rJvHV8g.js +0 -2666
  721. package/dist/chrome-Du8Sd8UD.js +0 -1503
  722. package/dist/cli-DmfcqkxN.js +0 -1341
  723. package/dist/cli-compaction-6W-_Qcqh.js +0 -347
  724. package/dist/cli-metadata-B4zGtsS4.js +0 -22
  725. package/dist/cli-runner-C2sL9k3L.js +0 -2
  726. package/dist/cli-runner-DppcV2AG.js +0 -540
  727. package/dist/cli-runner.runtime-CQLSyTQY.js +0 -4
  728. package/dist/cli-runner.runtime-CbEAn48-.js +0 -3
  729. package/dist/client-Dk9ROpNW.js +0 -650
  730. package/dist/client-adapter-ClI0hCmb.js +0 -897
  731. package/dist/client-factory-CaCu9BQF.js +0 -9
  732. package/dist/command-auth-6q0HyTu9.js +0 -135
  733. package/dist/command-handlers-DMAACmGz.js +0 -1609
  734. package/dist/command-registry-CfpDWtfY.js +0 -9
  735. package/dist/command-registry-Dnxqw0fv.js +0 -4
  736. package/dist/command-registry-core-D11J7oB_.js +0 -110
  737. package/dist/command-status.runtime-DrsPaVZw.js +0 -90
  738. package/dist/commands-acp-B4PDb6rs.js +0 -74
  739. package/dist/commands-compact.runtime-BmK2PNTw.js +0 -10
  740. package/dist/commands-handlers.runtime-C5hpRwAL.js +0 -6154
  741. package/dist/commands-status-CiZyKzzI.js +0 -3
  742. package/dist/commands-status-CzSWpd6s.js +0 -16
  743. package/dist/commands-status.runtime-CiZyKzzI.js +0 -3
  744. package/dist/commands-subagents-control.runtime-qc9m5MmZ.js +0 -3
  745. package/dist/commands-subagents-control.runtime-tWG0OlZd.js +0 -2
  746. package/dist/commands-system-prompt-6Q-vf5jq.js +0 -162
  747. package/dist/commands-system-prompt-FecWmCWC.js +0 -2
  748. package/dist/commands.runtime-DEt9uWfr.js +0 -176
  749. package/dist/compact-CgCjnQEP.js +0 -480
  750. package/dist/compact-D6t2ld0f.js +0 -1141
  751. package/dist/compact.runtime-CtoOHiEB.js +0 -12
  752. package/dist/completion-cli-CAHVBBDJ.js +0 -315
  753. package/dist/computer-use-CdIz1WHr.js +0 -367
  754. package/dist/config-CFxlEsAY.js +0 -373
  755. package/dist/config-mutations-6ioXU8Qg.js +0 -159
  756. package/dist/config-wUaKqWjT.js +0 -2
  757. package/dist/context-engine-host-compat-CFAOug91.js +0 -288
  758. package/dist/context-engine-host-compat-Cqe9ZyUZ.js +0 -2
  759. package/dist/context-engine-lifecycle-BjQwDRNw.js +0 -1274
  760. package/dist/control-auth-Du_jaEQB.js +0 -114
  761. package/dist/control-service-DIBBeoM_.js +0 -145
  762. package/dist/control-ui/assets/agents-CVagVGyI.js +0 -1008
  763. package/dist/control-ui/assets/channel-config-extras-uH6FhJPM.js +0 -2
  764. package/dist/control-ui/assets/channels-D-GpOtsc.js +0 -367
  765. package/dist/control-ui/assets/cron-CbBhpK3S.js +0 -1013
  766. package/dist/control-ui/assets/debug-D_dDVs7g.js +0 -97
  767. package/dist/control-ui/assets/index-Bw00mYfr.css +0 -1
  768. package/dist/control-ui/assets/index-CN27fKY0.js +0 -7378
  769. package/dist/control-ui/assets/instances-DLj-EIdC.js +0 -57
  770. package/dist/control-ui/assets/logs-ByEMvGoZ.js +0 -74
  771. package/dist/control-ui/assets/nodes-WpwlG-tv.js +0 -436
  772. package/dist/control-ui/assets/sessions-B85xIUVe.js +0 -399
  773. package/dist/control-ui/assets/skills-gUCKESxe.js +0 -314
  774. package/dist/control-ui/assets/skills-shared-BIJClrSK.js +0 -11
  775. package/dist/conversation-binding-runtime-BnDFNjpw.js +0 -4
  776. package/dist/conversation-runtime-DXfeo_YZ.js +0 -31
  777. package/dist/core-CwGP8lnn.js +0 -282
  778. package/dist/core-api-B3hgaGPY.js +0 -5
  779. package/dist/core-api-DhVgU6Pw.js +0 -2
  780. package/dist/crestodian-BQF8KHgB.js +0 -55
  781. package/dist/daocore-tools-DwFKEwEz.js +0 -11727
  782. package/dist/delivery-LkV1NN8a.js +0 -1002
  783. package/dist/dialogue-BIB1NqtA.js +0 -37
  784. package/dist/dir-fetch-tool-DyG20xlt.js +0 -565
  785. package/dist/dir-list-tool-BntISSEL.js +0 -100
  786. package/dist/direct-dm-Dfgmj_Rk.js +0 -64
  787. package/dist/directive-handling.fast-lane-CPtDyKdP.js +0 -68
  788. package/dist/directive-handling.impl-CuhOq-BS.js +0 -2
  789. package/dist/directive-handling.impl-SAvKobjF.js +0 -818
  790. package/dist/directive-handling.model-selection-3dnu2j_t.js +0 -122
  791. package/dist/directive-handling.persist.runtime-y8pN8w-i.js +0 -263
  792. package/dist/dispatch-C_JMxM3D.js +0 -1640
  793. package/dist/dispatch-acp-transcript.runtime-BA4jA5DL.js +0 -40
  794. package/dist/dispatch-acp.runtime-BhpXHUuZ.js +0 -18
  795. package/dist/doctor-CRMnQl-o.js +0 -6
  796. package/dist/doctor-DD_iqydP.js +0 -2
  797. package/dist/doctor-config-flow-BXKaaiSk.js +0 -1741
  798. package/dist/doctor-core-checks-CSYsZXuS.js +0 -573
  799. package/dist/doctor-core-checks-xGSa7eSt.js +0 -2
  800. package/dist/doctor-health-contributions-DVLNXMsN.js +0 -696
  801. package/dist/doctor-health-wIbh8NF6.js +0 -65
  802. package/dist/doctor-lint-Hq2tNUox.js +0 -94
  803. package/dist/doctor-state-integrity-CQQ1oMeP.js +0 -1231
  804. package/dist/dynamic-tools-B3DtJJJn.js +0 -486
  805. package/dist/embedded-backend-Cz0ZebJI.js +0 -579
  806. package/dist/embedded-gateway-stub.runtime-CIk1aOal.js +0 -12
  807. package/dist/exec-approvals-DqJA2OTf.js +0 -149
  808. package/dist/file-fetch-tool-BM0auSop.js +0 -124
  809. package/dist/file-write-tool-CshXwc98.js +0 -127
  810. package/dist/format-BrPefrQt.js +0 -1145
  811. package/dist/gateway-cli-UkR6BmcI.js +0 -435
  812. package/dist/gateway-method-runtime-ucwF-DHM.js +0 -21
  813. package/dist/get-reply-BJ1QFEY8.js +0 -4689
  814. package/dist/get-reply-from-config.runtime-Rm8cMH3e.js +0 -2
  815. package/dist/graph-users-D2gOcc5D.js +0 -1419
  816. package/dist/group-access-BkQ2ldY4.js +0 -112
  817. package/dist/handle-action.guild-admin-aiua5pA-.js +0 -288
  818. package/dist/harness-BT2riWLr.js +0 -61
  819. package/dist/health-CnVZ4T6j.js +0 -4
  820. package/dist/heartbeat-runner-Cjg3EgS1.js +0 -5
  821. package/dist/heartbeat-runner.runtime-CoC3qR61.js +0 -4
  822. package/dist/hooks-DlRvRnbJ.js +0 -534
  823. package/dist/inbound-direct-dm-runtime-BzQSanFy.js +0 -2
  824. package/dist/inbound-reply-dispatch-CDI1clh-.js +0 -148
  825. package/dist/init-pnw2iggs.js +0 -59
  826. package/dist/inline-buttons-Bh_p4ehq.js +0 -40
  827. package/dist/internal-events-u0Ov8uLt.js +0 -90
  828. package/dist/isolated-agent-By1ca-36.js +0 -2
  829. package/dist/isolated-agent-Zz-RQA7J.js +0 -1118
  830. package/dist/lifecycle-R9-dS5vo.js +0 -571
  831. package/dist/list.probe-CZLSVJOU.js +0 -449
  832. package/dist/list.status-command-BfFEfb9a.js +0 -789
  833. package/dist/llm-slug-generator-dCtCznm8.js +0 -78
  834. package/dist/local-dispatch.runtime-D9LP1xHX.js +0 -9
  835. package/dist/manager.runtime-6QpcwMf8.js +0 -2714
  836. package/dist/markdown-to-line-zbqRGuzM.js +0 -811
  837. package/dist/mcp-http-8c8x2bw2.js +0 -555
  838. package/dist/mcp-http-_a6CgNfk.js +0 -2
  839. package/dist/media-understanding-provider-CXP_WVXG.js +0 -339
  840. package/dist/message-actions-SByKheul.js +0 -145
  841. package/dist/message-handler-CKCY2qPA.js +0 -384
  842. package/dist/message-handler-StORmhkH.js +0 -1715
  843. package/dist/message-handler.preflight-BBcy1Vmz.js +0 -1125
  844. package/dist/message-handler.process-DC3NGb_U.js +0 -1484
  845. package/dist/model-qHmcK-wV.js +0 -74
  846. package/dist/model-selection-C_bNk70D.js +0 -272
  847. package/dist/models-0m6kj9Kh.js +0 -104
  848. package/dist/models-P3tVodj6.js +0 -2
  849. package/dist/models-cli-C_jhGL9M.js +0 -256
  850. package/dist/monitor-BK8o2fuJ.js +0 -2788
  851. package/dist/monitor-Bi5Al5Qq.js +0 -1657
  852. package/dist/monitor-CG3e3DTn.js +0 -4377
  853. package/dist/monitor-Cfa9dKXg.js +0 -1370
  854. package/dist/monitor-D3o4Su4a.js +0 -834
  855. package/dist/monitor-D5fMTlZ5.js +0 -60
  856. package/dist/monitor-DmPTU0tw.js +0 -715
  857. package/dist/monitor-DzgPE9f5.js +0 -2
  858. package/dist/monitor-auth-CVtN6J4_.js +0 -179
  859. package/dist/monitor-polling.runtime-Cg2e0kqq.js +0 -883
  860. package/dist/monitor-webhook.runtime-Dj1HmLMX.js +0 -387
  861. package/dist/monitor.account-BQImY6W4.js +0 -5233
  862. package/dist/monitor.runtime-CDK8uUpm.js +0 -2
  863. package/dist/monitor.webhook-DyEHhPJ1.js +0 -180
  864. package/dist/node-cli-sessions-Bv5PguQJ.js +0 -1228
  865. package/dist/openai-http-CIBLqlWd.js +0 -824
  866. package/dist/openresponses-http-DjoX4IHF.js +0 -1173
  867. package/dist/operations-DP1MZD9K.js +0 -805
  868. package/dist/outbound-adapter-BAwVSQlL.js +0 -543
  869. package/dist/outbound-session-route-DtqxN5uz.js +0 -45
  870. package/dist/outbound.runtime-DHPJ4ASv.js +0 -2
  871. package/dist/pi-embedded-BAC7pDy3.js +0 -4
  872. package/dist/pi-embedded-CNX1q8t8.js +0 -3796
  873. package/dist/pi-embedded.runtime-SbuDxtwm.js +0 -4
  874. package/dist/pi-tools-CnpfHiC0.js +0 -2413
  875. package/dist/plan-BNvONvjS.js +0 -81
  876. package/dist/plan-CADq4BFI.js +0 -112
  877. package/dist/plugin-D7gXSmDQ.js +0 -12396
  878. package/dist/plugin-app-cache-key-DrmlMiVI.js +0 -46
  879. package/dist/plugin-enabled-BoIsHSBf.js +0 -233
  880. package/dist/plugin-registration-yt9E-tcz.js +0 -88
  881. package/dist/plugin-service-BV0GV7gk.js +0 -1229
  882. package/dist/policy-D11pkH-F.js +0 -680
  883. package/dist/policy-DRVErS8F.js +0 -138
  884. package/dist/prepare.runtime-D5popyud.js +0 -732
  885. package/dist/preview-warnings-CdcHFLjy.js +0 -392
  886. package/dist/probe-BR_XxREj.js +0 -682
  887. package/dist/probe-CSkuj1Ki.js +0 -47
  888. package/dist/probe-DZHxSUyh.js +0 -2204
  889. package/dist/probe-DvUH7S2e.js +0 -2
  890. package/dist/program-Dp1JSnyB.js +0 -131
  891. package/dist/provider-4N9pa4vk.js +0 -32
  892. package/dist/provider-B6N1_oRM.js +0 -8735
  893. package/dist/provider-_W55dN19.js +0 -152
  894. package/dist/provider-dispatcher-BY0BKM51.js +0 -22
  895. package/dist/provider-session.runtime-CIMHFVsw.js +0 -9
  896. package/dist/provider-yjwJ7cEv.js +0 -32
  897. package/dist/provider.runtime-BXgHyxdL.js +0 -2
  898. package/dist/public-surface-loader-BtZpLAiq.js +0 -114
  899. package/dist/pw-ai-C8gW7XAX.js +0 -3029
  900. package/dist/pw-role-snapshot-DUCYIx3v.js +0 -333
  901. package/dist/reaction-level-D9FhYPnf.js +0 -19
  902. package/dist/reaction-runtime-api-C3r-xTtB.js +0 -116
  903. package/dist/realtime-transcription-provider-Ibc5MlDn.js +0 -205
  904. package/dist/register-C8HRj-Rv.js +0 -2178
  905. package/dist/register.agent-DRcH0h2g.js +0 -156
  906. package/dist/register.crestodian-Cc0_1XnJ.js +0 -24
  907. package/dist/register.maintenance-hDD-888W.js +0 -83
  908. package/dist/register.runtime-3KCk-rHT.js +0 -54
  909. package/dist/register.subclis-CrUZyRN9.js +0 -31
  910. package/dist/register.subclis-DGaNfEn8.js +0 -3
  911. package/dist/register.subclis-core-B5LkL2i6.js +0 -273
  912. package/dist/repair-sequencing-DSOttY24.js +0 -640
  913. package/dist/reply-delivery-CjS0vGdN.js +0 -196
  914. package/dist/reply-runtime-CEB3h2ID.js +0 -11
  915. package/dist/reply.runtime-Rm8cMH3e.js +0 -2
  916. package/dist/request-hp0T5HDv.js +0 -54
  917. package/dist/resolve-allowlist-BN__FO0F.js +0 -220
  918. package/dist/result-fallback-classifier-CfKrq2-s.js +0 -79
  919. package/dist/route-B2z32D9-.js +0 -469
  920. package/dist/route-resolution-B25jgDh8.js +0 -274
  921. package/dist/routes-CM95LS3k.js +0 -3602
  922. package/dist/routes-CUOimkJP.js +0 -2
  923. package/dist/run-CCrse9cU.js +0 -1162
  924. package/dist/run-attempt-Bp3H4oIM.js +0 -7704
  925. package/dist/run-command-9aTCc0HJ.js +0 -23
  926. package/dist/run-command-BuJ1fk8M.js +0 -2
  927. package/dist/run-embedded.runtime-CTprMJ8Z.js +0 -4
  928. package/dist/run-execution-cli.runtime-B05Oa61H.js +0 -4
  929. package/dist/run-subagent-registry.runtime-CJ0Hs8Pw.js +0 -2
  930. package/dist/runtime-CKKZ8Pcs.js +0 -438
  931. package/dist/runtime-Cdi7BCo3.js +0 -6179
  932. package/dist/runtime-D3XaGRT8.js +0 -1287
  933. package/dist/runtime-api-1yqMVS2P.js +0 -17
  934. package/dist/runtime-api-B2sZsZh8.js +0 -4
  935. package/dist/runtime-api-BgQT9LMm.js +0 -21
  936. package/dist/runtime-api-CsbGUmvA.js +0 -3
  937. package/dist/runtime-api-DpTi-PJ3.js +0 -24
  938. package/dist/runtime-api-c9O4luRc.js +0 -13
  939. package/dist/runtime-api-iiw2xe0i.js +0 -13
  940. package/dist/runtime-api.actions-BVrajshb.js +0 -3
  941. package/dist/runtime-api.monitor-BShOXy33.js +0 -6
  942. package/dist/runtime-api.send-BTuGzQtf.js +0 -4
  943. package/dist/runtime-api.threads-3cF-9XFp.js +0 -2
  944. package/dist/runtime-channel-CwZHOoMT.js +0 -2
  945. package/dist/runtime-channel-fHBJLcYG.js +0 -150
  946. package/dist/runtime-embedded-pi.runtime-Cgc2MHEr.js +0 -2
  947. package/dist/sanitize-outbound-DTdYOSuN.js +0 -127
  948. package/dist/sdk-setup-tools-DsgXMSJF.js +0 -8
  949. package/dist/secrets-xq1GA7Xo.js +0 -113
  950. package/dist/security-audit-Du_2AwxR.js +0 -122
  951. package/dist/security-audit-i1ehCFCk.js +0 -118
  952. package/dist/security-audit.runtime-nBiU375z.js +0 -2
  953. package/dist/selection-CZeNX1pE.js +0 -3
  954. package/dist/selection-DTrJ8MmR.js +0 -16157
  955. package/dist/send-79TPg_6c.js +0 -2
  956. package/dist/send-91PqXvSN.js +0 -192
  957. package/dist/send-C2reDA-B.js +0 -143
  958. package/dist/send-JRMzkOJi.js +0 -1631
  959. package/dist/send.components-Dv_9V1n4.js +0 -500
  960. package/dist/send.components-MeAhqv9J.js +0 -2
  961. package/dist/send.runtime-BXAcNcFW.js +0 -2
  962. package/dist/server-CFMwy7OB.js +0 -24
  963. package/dist/server-context-Dqwl703G.js +0 -955
  964. package/dist/server-context-wK29CPaJ.js +0 -2
  965. package/dist/server-cron-B1DKKd9L.js +0 -2
  966. package/dist/server-cron-i1RW7vPj.js +0 -2989
  967. package/dist/server-jF0fwwqG.js +0 -73
  968. package/dist/server-methods-CbFofeYw.js +0 -16499
  969. package/dist/server-node-events-DL9C2Zgb.js +0 -596
  970. package/dist/server-plugin-bootstrap-BpLRcl2N.js +0 -70
  971. package/dist/server-plugins-Bw4luxP4.js +0 -432
  972. package/dist/server-reload-handlers-Du2MmNNy.js +0 -714
  973. package/dist/server-restart-sentinel-Bi93NfH5.js +0 -747
  974. package/dist/server-restart-sentinel-CZQ5DtCS.js +0 -2
  975. package/dist/server-runtime-services-6xIr0oF5.js +0 -267
  976. package/dist/server-runtime-services-Bn_-QBG_.js +0 -2
  977. package/dist/server-startup-plugins-D67Ykogy.js +0 -113
  978. package/dist/server-startup-post-attach-DGj_JzsI.js +0 -716
  979. package/dist/server-ws-runtime-DY6Aw13I.js +0 -349
  980. package/dist/server.impl-6rbQJgzF.js +0 -2586
  981. package/dist/service-BniJ-ml1.js +0 -1446
  982. package/dist/session-binding-BCrf6P9-.js +0 -2
  983. package/dist/session-binding-Dv-7cruS.js +0 -219
  984. package/dist/session-kill-http-BJFrJrtN.js +0 -121
  985. package/dist/session-reset-service-BbWtWMwD.js +0 -625
  986. package/dist/session-route-DU5w8Y32.js +0 -93
  987. package/dist/session-status.runtime-BlQpbVG5.js +0 -2
  988. package/dist/session-subagent-reactivation.runtime-5Q01Ew9-.js +0 -2
  989. package/dist/session-tab-registry-BuYe4OOF.js +0 -521
  990. package/dist/sessions-history-http-DSsnYvkK.js +0 -430
  991. package/dist/sessions.runtime-BmeoWYRz.js +0 -2
  992. package/dist/setup-api-CKNdGNsP.js +0 -29
  993. package/dist/setup-core-DP5EwSY0.js +0 -174
  994. package/dist/setup-surface-BYCu55nE.js +0 -288
  995. package/dist/setup-surface-B_2igLCv.js +0 -405
  996. package/dist/setup-surface-BcnlyFJo.js +0 -221
  997. package/dist/setup-surface-BuTeC8Tu.js +0 -320
  998. package/dist/shared-RXlS1jcs.js +0 -121
  999. package/dist/shared-client-C3MyzMO-.js +0 -2
  1000. package/dist/shared-client-ChFVc6qy.js +0 -629
  1001. package/dist/side-question-C7XXJ3WJ.js +0 -683
  1002. package/dist/skill-tool-dispatch.runtime-D-KdTx1M.js +0 -143
  1003. package/dist/slash-state-Bkj8dL5a.js +0 -2166
  1004. package/dist/speech-provider-BunrBrCI.js +0 -184
  1005. package/dist/src-CEgolSf5.js +0 -4256
  1006. package/dist/startup-context-JB4BWjRi.js +0 -313
  1007. package/dist/status-subagents.runtime-Bp7aARu7.js +0 -18
  1008. package/dist/status-text-DN8S2Q1J.js +0 -296
  1009. package/dist/sticker-cache-Be-oBI7L.js +0 -206
  1010. package/dist/sticker-vision.runtime-Ba4krDPo.js +0 -17
  1011. package/dist/subagent-announce-C7j9VsZa.js +0 -354
  1012. package/dist/subagent-announce-delivery-CB4UtEg2.js +0 -958
  1013. package/dist/subagent-control-C4koBB2g.js +0 -508
  1014. package/dist/subagent-hooks-C6RmP8Ul.js +0 -2
  1015. package/dist/subagent-hooks-CrDfx1bX.js +0 -146
  1016. package/dist/subagent-hooks-Dh-10ODX.js +0 -116
  1017. package/dist/subagent-hooks-DjGGmJOs.js +0 -2
  1018. package/dist/subagent-hooks-Djrkg_r_.js +0 -230
  1019. package/dist/subagent-hooks-XiGzfcD1.js +0 -2
  1020. package/dist/subagent-hooks-api-BAuY6yAp.js +0 -23
  1021. package/dist/subagent-hooks-api-X4Wq3-bg.js +0 -22
  1022. package/dist/subagent-hooks-api-uGaYQ3ls.js +0 -23
  1023. package/dist/subagent-orphan-recovery-CiT4T6EK.js +0 -352
  1024. package/dist/subagent-registry-CJUOLPWx.js +0 -3
  1025. package/dist/subagent-registry-DkLEo8Gw.js +0 -2351
  1026. package/dist/subagent-session-cleanup-BXd7lwdo.js +0 -525
  1027. package/dist/subagent-spawn-C0nFUSkA.js +0 -1164
  1028. package/dist/target-id-C-_5ZyaM.js +0 -107
  1029. package/dist/targets-C6aOnm7M.js +0 -19
  1030. package/dist/targets-CeAvrPZY.js +0 -19
  1031. package/dist/targets-CiQWn-48.js +0 -44
  1032. package/dist/testing-dGXqtqph.js +0 -267
  1033. package/dist/thread-bindings-2it1TXRk.js +0 -228
  1034. package/dist/thread-bindings-BVsdSE6x.js +0 -232
  1035. package/dist/thread-bindings-CxRt4oO6.js +0 -571
  1036. package/dist/thread-bindings-Duucj0p6.js +0 -8
  1037. package/dist/thread-bindings.discord-api-5DrSBok8.js +0 -187
  1038. package/dist/thread-bindings.manager-8Evv-rZ-.js +0 -2
  1039. package/dist/thread-bindings.manager-Dqs05Cqt.js +0 -536
  1040. package/dist/thread-lifecycle-a9ORG_Qn.js +0 -1614
  1041. package/dist/token-Cd4ZyEet.js +0 -134
  1042. package/dist/tool-X8pfYjSy.js +0 -139
  1043. package/dist/tool-actions.runtime-Be5Jzai5.js +0 -534
  1044. package/dist/tool-resolution-BsitImc6.js +0 -149
  1045. package/dist/tools-effective-inventory-BZrHm8Fz.js +0 -204
  1046. package/dist/tools-invoke-http-ShL1W_9J.js +0 -67
  1047. package/dist/tools-invoke-shared-DeHgr_VB.js +0 -200
  1048. package/dist/tts-Ayx5XgJd.js +0 -66
  1049. package/dist/tui-BMb_k0zQ.js +0 -2
  1050. package/dist/tui-Cok5WLhQ.js +0 -4709
  1051. package/dist/tui-backend-ByoQP-cW.js +0 -256
  1052. package/dist/tui-cli-CUq3hRch.js +0 -37
  1053. package/dist/update-cli-CEgVV8KX.js +0 -3664
  1054. package/dist/vision-tools-l3OhetFy.js +0 -1409
  1055. package/dist/web-search-cDMQBezP.js +0 -62
  1056. package/dist/web-search-provider.runtime-Ckon24db.js +0 -2
  1057. package/dist/web-search-provider.runtime-bfpMar6S.js +0 -328
  1058. package/dist/xai-oauth-DI_oDf1M.js +0 -479
  1059. package/dist/xai-user-agent-C3kBfnkY.js +0 -32
  1060. /package/dist/{acp-runtime-backend-BZ5O5ObX.js → acp-runtime-backend-BetObVpx.js} +0 -0
  1061. /package/dist/{channel-actions-CgtkgM0g.js → channel-actions-DckqlhU7.js} +0 -0
  1062. /package/dist/{command-status-runtime-CP5giZCt.js → command-status-runtime-E16rrPc3.js} +0 -0
  1063. /package/dist/{delegate-BqgaH2oz.js → delegate-BSLYNrsG.js} +0 -0
  1064. /package/dist/{dispatch-acp-BZWxbCpX.js → dispatch-acp-D4tmhg9Q.js} +0 -0
  1065. /package/dist/{heartbeat-runner-Ci-DNWRz.js → heartbeat-runner-DVT5MIY3.js} +0 -0
  1066. /package/dist/{library-Be_uMwZR.js → library-DxK3LF7B.js} +0 -0
  1067. /package/dist/{run-executor.runtime-CMc4ImJr.js → run-executor.runtime-6pORvlOZ.js} +0 -0
  1068. /package/dist/{shared-RstjPNr2.js → shared-KCy8RvKa.js} +0 -0
@@ -1,1496 +0,0 @@
1
- import { i as formatErrorMessage } from "./errors-D_oyTIw2.js";
2
- import { t as DEFAULT_ACCOUNT_ID } from "./account-id-B32J-iNN.js";
3
- import { Et as array, Nn as record, Rn as string, Tn as object, Zn as unknown, dn as literal, wn as number, yt as _enum } from "./schemas-Del5uzR8.js";
4
- import { t as safeParseJsonWithSchema } from "./zod-parse-B4dzFRWI.js";
5
- import { t as privateFileStore } from "./private-file-store-C_5ZwE9L.js";
6
- import { r as buildChannelConfigSchema } from "./config-schema-CpJ4LFf2.js";
7
- import { o as resolveStableChannelMessageIngress } from "./runtime-W39pAdFK.js";
8
- import { l as createScopedDmSecurityResolver, u as createTopLevelChannelConfigAdapter } from "./channel-config-helpers-CQb9YOAn.js";
9
- import { n as formatPairingApproveHint } from "./helpers-DII7kv8Y.js";
10
- import "./error-runtime--zM-GsR-.js";
11
- import { n as describeAccountSnapshot } from "./account-helpers-BEXOONiv.js";
12
- import { i as createChatChannelPlugin, t as buildChannelOutboundSessionRoute, u as stripChannelTargetPrefix } from "./core-CwGP8lnn.js";
13
- import "./channel-core-DtMwDjjI.js";
14
- import { t as createPluginRuntimeStore } from "./runtime-store-BSkCngaf.js";
15
- import "./security-runtime-Q5KQBgu1.js";
16
- import { t as createDirectDmPreCryptoGuardPolicy } from "./direct-dm-guard-policy-Bi3caG-G.js";
17
- import { c as collectStatusIssuesFromLastError, d as createDefaultChannelRuntimeState, u as createComputedAccountStatusAdapter } from "./status-helpers-nyf_mfYa.js";
18
- import { r as buildTrafficStatusSummary, t as buildPassiveChannelStatusSummary } from "./extension-shared-D6I0yOLZ.js";
19
- import "./channel-ingress-runtime-BZvnfysR.js";
20
- import { k as createChannelMessageAdapterFromOutbound } from "./channel-message-BzXIpZDL.js";
21
- import { n as createChannelPairingController } from "./channel-pairing-BQeyBt0a.js";
22
- import { t as attachChannelToResult } from "./channel-send-result-swFdRKhg.js";
23
- import { n as NostrProfileSchema, t as NostrConfigSchema } from "./config-schema-C-NqMGUr.js";
24
- import { a as resolveNostrAccount, c as SimplePool, d as verifyEvent, f as cbc, g as randomBytes, h as hexToBytes, i as resolveDefaultNostrAccountId, l as finalizeEvent, m as secp256k1, n as nostrSetupWizard, o as normalizePubkey, p as base64, r as listNostrAccountIds, s as validatePrivateKey, t as nostrSetupAdapter, u as getPublicKey } from "./setup-surface-Cf3nizr7.js";
25
- import { i as DEFAULT_RELAYS } from "./setup-adapter-DMuZmn45.js";
26
- import path from "node:path";
27
- import os from "node:os";
28
- //#region node_modules/nostr-tools/lib/esm/nip04.js
29
- var utf8Decoder = new TextDecoder("utf-8");
30
- var utf8Encoder = new TextEncoder();
31
- function encrypt(secretKey, pubkey, text) {
32
- const privkey = secretKey instanceof Uint8Array ? secretKey : hexToBytes(secretKey);
33
- const normalizedKey = getNormalizedX(secp256k1.getSharedSecret(privkey, hexToBytes("02" + pubkey)));
34
- let iv = Uint8Array.from(randomBytes(16));
35
- let plaintext = utf8Encoder.encode(text);
36
- let ciphertext = cbc(normalizedKey, iv).encrypt(plaintext);
37
- return `${base64.encode(new Uint8Array(ciphertext))}?iv=${base64.encode(new Uint8Array(iv.buffer))}`;
38
- }
39
- function decrypt(secretKey, pubkey, data) {
40
- const privkey = secretKey instanceof Uint8Array ? secretKey : hexToBytes(secretKey);
41
- let [ctb64, ivb64] = data.split("?iv=");
42
- let normalizedKey = getNormalizedX(secp256k1.getSharedSecret(privkey, hexToBytes("02" + pubkey)));
43
- let iv = base64.decode(ivb64);
44
- let ciphertext = base64.decode(ctb64);
45
- let plaintext = cbc(normalizedKey, iv).decrypt(ciphertext);
46
- return utf8Decoder.decode(plaintext);
47
- }
48
- function getNormalizedX(key) {
49
- return key.slice(1, 33);
50
- }
51
- //#endregion
52
- //#region extensions/nostr/src/metrics.ts
53
- /**
54
- * Create a metrics collector instance.
55
- * Optionally pass an onMetric callback to receive real-time metric events.
56
- */
57
- function createMetrics(onMetric) {
58
- let eventsReceived = 0;
59
- let eventsProcessed = 0;
60
- let eventsDuplicate = 0;
61
- const eventsRejected = {
62
- invalidShape: 0,
63
- wrongKind: 0,
64
- stale: 0,
65
- future: 0,
66
- rateLimited: 0,
67
- invalidSignature: 0,
68
- oversizedCiphertext: 0,
69
- oversizedPlaintext: 0,
70
- decryptFailed: 0,
71
- selfMessage: 0
72
- };
73
- const relays = /* @__PURE__ */ new Map();
74
- const rateLimiting = {
75
- perSenderHits: 0,
76
- globalHits: 0
77
- };
78
- const decrypt = {
79
- success: 0,
80
- failure: 0
81
- };
82
- const memory = {
83
- seenTrackerSize: 0,
84
- rateLimiterEntries: 0
85
- };
86
- function getOrCreateRelay(url) {
87
- let relay = relays.get(url);
88
- if (!relay) {
89
- relay = {
90
- connects: 0,
91
- disconnects: 0,
92
- reconnects: 0,
93
- errors: 0,
94
- messagesReceived: {
95
- event: 0,
96
- eose: 0,
97
- closed: 0,
98
- notice: 0,
99
- ok: 0,
100
- auth: 0
101
- },
102
- circuitBreakerState: "closed",
103
- circuitBreakerOpens: 0,
104
- circuitBreakerCloses: 0
105
- };
106
- relays.set(url, relay);
107
- }
108
- return relay;
109
- }
110
- function emit(name, value = 1, labels) {
111
- if (onMetric) onMetric({
112
- name,
113
- value,
114
- timestamp: Date.now(),
115
- labels
116
- });
117
- const relayUrl = labels?.relay;
118
- switch (name) {
119
- case "event.received":
120
- eventsReceived += value;
121
- break;
122
- case "event.processed":
123
- eventsProcessed += value;
124
- break;
125
- case "event.duplicate":
126
- eventsDuplicate += value;
127
- break;
128
- case "event.rejected.invalid_shape":
129
- eventsRejected.invalidShape += value;
130
- break;
131
- case "event.rejected.wrong_kind":
132
- eventsRejected.wrongKind += value;
133
- break;
134
- case "event.rejected.stale":
135
- eventsRejected.stale += value;
136
- break;
137
- case "event.rejected.future":
138
- eventsRejected.future += value;
139
- break;
140
- case "event.rejected.rate_limited":
141
- eventsRejected.rateLimited += value;
142
- break;
143
- case "event.rejected.invalid_signature":
144
- eventsRejected.invalidSignature += value;
145
- break;
146
- case "event.rejected.oversized_ciphertext":
147
- eventsRejected.oversizedCiphertext += value;
148
- break;
149
- case "event.rejected.oversized_plaintext":
150
- eventsRejected.oversizedPlaintext += value;
151
- break;
152
- case "event.rejected.decrypt_failed":
153
- eventsRejected.decryptFailed += value;
154
- break;
155
- case "event.rejected.self_message":
156
- eventsRejected.selfMessage += value;
157
- break;
158
- case "relay.connect":
159
- if (relayUrl) getOrCreateRelay(relayUrl).connects += value;
160
- break;
161
- case "relay.disconnect":
162
- if (relayUrl) getOrCreateRelay(relayUrl).disconnects += value;
163
- break;
164
- case "relay.reconnect":
165
- if (relayUrl) getOrCreateRelay(relayUrl).reconnects += value;
166
- break;
167
- case "relay.error":
168
- if (relayUrl) getOrCreateRelay(relayUrl).errors += value;
169
- break;
170
- case "relay.message.event":
171
- if (relayUrl) getOrCreateRelay(relayUrl).messagesReceived.event += value;
172
- break;
173
- case "relay.message.eose":
174
- if (relayUrl) getOrCreateRelay(relayUrl).messagesReceived.eose += value;
175
- break;
176
- case "relay.message.closed":
177
- if (relayUrl) getOrCreateRelay(relayUrl).messagesReceived.closed += value;
178
- break;
179
- case "relay.message.notice":
180
- if (relayUrl) getOrCreateRelay(relayUrl).messagesReceived.notice += value;
181
- break;
182
- case "relay.message.ok":
183
- if (relayUrl) getOrCreateRelay(relayUrl).messagesReceived.ok += value;
184
- break;
185
- case "relay.message.auth":
186
- if (relayUrl) getOrCreateRelay(relayUrl).messagesReceived.auth += value;
187
- break;
188
- case "relay.circuit_breaker.open":
189
- if (relayUrl) {
190
- const r = getOrCreateRelay(relayUrl);
191
- r.circuitBreakerState = "open";
192
- r.circuitBreakerOpens += value;
193
- }
194
- break;
195
- case "relay.circuit_breaker.close":
196
- if (relayUrl) {
197
- const r = getOrCreateRelay(relayUrl);
198
- r.circuitBreakerState = "closed";
199
- r.circuitBreakerCloses += value;
200
- }
201
- break;
202
- case "relay.circuit_breaker.half_open":
203
- if (relayUrl) getOrCreateRelay(relayUrl).circuitBreakerState = "half_open";
204
- break;
205
- case "rate_limit.per_sender":
206
- rateLimiting.perSenderHits += value;
207
- break;
208
- case "rate_limit.global":
209
- rateLimiting.globalHits += value;
210
- break;
211
- case "decrypt.success":
212
- decrypt.success += value;
213
- break;
214
- case "decrypt.failure":
215
- decrypt.failure += value;
216
- break;
217
- case "memory.seen_tracker_size":
218
- memory.seenTrackerSize = value;
219
- break;
220
- case "memory.rate_limiter_entries":
221
- memory.rateLimiterEntries = value;
222
- break;
223
- }
224
- }
225
- function getSnapshot() {
226
- const relaysObj = {};
227
- for (const [url, stats] of relays) relaysObj[url] = {
228
- ...stats,
229
- messagesReceived: { ...stats.messagesReceived }
230
- };
231
- return {
232
- eventsReceived,
233
- eventsProcessed,
234
- eventsDuplicate,
235
- eventsRejected: { ...eventsRejected },
236
- relays: relaysObj,
237
- rateLimiting: { ...rateLimiting },
238
- decrypt: { ...decrypt },
239
- memory: { ...memory },
240
- snapshotAt: Date.now()
241
- };
242
- }
243
- function reset() {
244
- eventsReceived = 0;
245
- eventsProcessed = 0;
246
- eventsDuplicate = 0;
247
- Object.assign(eventsRejected, {
248
- invalidShape: 0,
249
- wrongKind: 0,
250
- stale: 0,
251
- future: 0,
252
- rateLimited: 0,
253
- invalidSignature: 0,
254
- oversizedCiphertext: 0,
255
- oversizedPlaintext: 0,
256
- decryptFailed: 0,
257
- selfMessage: 0
258
- });
259
- relays.clear();
260
- rateLimiting.perSenderHits = 0;
261
- rateLimiting.globalHits = 0;
262
- decrypt.success = 0;
263
- decrypt.failure = 0;
264
- memory.seenTrackerSize = 0;
265
- memory.rateLimiterEntries = 0;
266
- }
267
- return {
268
- emit,
269
- getSnapshot,
270
- reset
271
- };
272
- }
273
- /**
274
- * Create a no-op metrics instance (for when metrics are disabled).
275
- */
276
- function createNoopMetrics() {
277
- const emptySnapshot = {
278
- eventsReceived: 0,
279
- eventsProcessed: 0,
280
- eventsDuplicate: 0,
281
- eventsRejected: {
282
- invalidShape: 0,
283
- wrongKind: 0,
284
- stale: 0,
285
- future: 0,
286
- rateLimited: 0,
287
- invalidSignature: 0,
288
- oversizedCiphertext: 0,
289
- oversizedPlaintext: 0,
290
- decryptFailed: 0,
291
- selfMessage: 0
292
- },
293
- relays: {},
294
- rateLimiting: {
295
- perSenderHits: 0,
296
- globalHits: 0
297
- },
298
- decrypt: {
299
- success: 0,
300
- failure: 0
301
- },
302
- memory: {
303
- seenTrackerSize: 0,
304
- rateLimiterEntries: 0
305
- },
306
- snapshotAt: 0
307
- };
308
- return {
309
- emit: () => {},
310
- getSnapshot: () => ({
311
- ...emptySnapshot,
312
- snapshotAt: Date.now()
313
- }),
314
- reset: () => {}
315
- };
316
- }
317
- //#endregion
318
- //#region extensions/nostr/src/nostr-profile-core.ts
319
- /**
320
- * Convert our config profile schema to NIP-01 content format.
321
- * Strips undefined fields and validates URLs.
322
- */
323
- function profileToContent(profile) {
324
- const validated = NostrProfileSchema.parse(profile);
325
- const content = {};
326
- if (validated.name !== void 0) content.name = validated.name;
327
- if (validated.displayName !== void 0) content.display_name = validated.displayName;
328
- if (validated.about !== void 0) content.about = validated.about;
329
- if (validated.picture !== void 0) content.picture = validated.picture;
330
- if (validated.banner !== void 0) content.banner = validated.banner;
331
- if (validated.website !== void 0) content.website = validated.website;
332
- if (validated.nip05 !== void 0) content.nip05 = validated.nip05;
333
- if (validated.lud16 !== void 0) content.lud16 = validated.lud16;
334
- return content;
335
- }
336
- /**
337
- * Convert NIP-01 content format back to our config profile schema.
338
- * Useful for importing existing profiles from relays.
339
- */
340
- function contentToProfile(content) {
341
- const profile = {};
342
- if (content.name !== void 0) profile.name = content.name;
343
- if (content.display_name !== void 0) profile.displayName = content.display_name;
344
- if (content.about !== void 0) profile.about = content.about;
345
- if (content.picture !== void 0) profile.picture = content.picture;
346
- if (content.banner !== void 0) profile.banner = content.banner;
347
- if (content.website !== void 0) profile.website = content.website;
348
- if (content.nip05 !== void 0) profile.nip05 = content.nip05;
349
- if (content.lud16 !== void 0) profile.lud16 = content.lud16;
350
- return profile;
351
- }
352
- //#endregion
353
- //#region extensions/nostr/src/nostr-profile.ts
354
- /**
355
- * Nostr Profile Management (NIP-01 kind:0)
356
- *
357
- * Profile events are "replaceable" - the latest created_at wins.
358
- * This module handles profile event creation and publishing.
359
- */
360
- /**
361
- * Create a signed kind:0 profile event.
362
- *
363
- * @param sk - Private key as Uint8Array (32 bytes)
364
- * @param profile - Profile data to include
365
- * @param lastPublishedAt - Previous profile timestamp (for monotonic guarantee)
366
- * @returns Signed Nostr event
367
- */
368
- function createProfileEvent(sk, profile, lastPublishedAt) {
369
- const content = profileToContent(profile);
370
- const contentJson = JSON.stringify(content);
371
- const now = Math.floor(Date.now() / 1e3);
372
- return finalizeEvent({
373
- kind: 0,
374
- content: contentJson,
375
- tags: [],
376
- created_at: lastPublishedAt !== void 0 ? Math.max(now, lastPublishedAt + 1) : now
377
- }, sk);
378
- }
379
- /** Per-relay publish timeout (ms) */
380
- const RELAY_PUBLISH_TIMEOUT_MS = 5e3;
381
- /**
382
- * Publish a profile event to multiple relays.
383
- *
384
- * Best-effort: publishes to all relays in parallel, reports per-relay results.
385
- * Does NOT retry automatically - caller should handle retries if needed.
386
- *
387
- * @param pool - SimplePool instance for relay connections
388
- * @param relays - Array of relay WebSocket URLs
389
- * @param event - Signed profile event (kind:0)
390
- * @returns Publish results with successes and failures
391
- */
392
- async function publishProfileEvent(pool, relays, event) {
393
- const successes = [];
394
- const failures = [];
395
- const publishPromises = relays.map(async (relay) => {
396
- try {
397
- const timeoutPromise = new Promise((_, reject) => {
398
- setTimeout(() => reject(/* @__PURE__ */ new Error("timeout")), RELAY_PUBLISH_TIMEOUT_MS);
399
- });
400
- await Promise.race([...pool.publish([relay], event), timeoutPromise]);
401
- successes.push(relay);
402
- } catch (err) {
403
- const errorMessage = formatErrorMessage(err);
404
- failures.push({
405
- relay,
406
- error: errorMessage
407
- });
408
- }
409
- });
410
- await Promise.all(publishPromises);
411
- return {
412
- eventId: event.id,
413
- successes,
414
- failures,
415
- createdAt: event.created_at
416
- };
417
- }
418
- /**
419
- * Create and publish a profile event in one call.
420
- *
421
- * @param pool - SimplePool instance
422
- * @param sk - Private key as Uint8Array
423
- * @param relays - Array of relay URLs
424
- * @param profile - Profile data
425
- * @param lastPublishedAt - Previous timestamp for monotonic ordering
426
- * @returns Publish results
427
- */
428
- async function publishProfile(pool, sk, relays, profile, lastPublishedAt) {
429
- return publishProfileEvent(pool, relays, createProfileEvent(sk, profile, lastPublishedAt));
430
- }
431
- //#endregion
432
- //#region extensions/nostr/src/runtime.ts
433
- const { setRuntime: setNostrRuntime, getRuntime: getNostrRuntime } = createPluginRuntimeStore({
434
- pluginId: "nostr",
435
- errorMessage: "Nostr runtime not initialized"
436
- });
437
- //#endregion
438
- //#region extensions/nostr/src/nostr-state-store.ts
439
- const STORE_VERSION = 2;
440
- const PROFILE_STATE_VERSION = 1;
441
- const NullableFiniteNumberSchema = number().finite().nullable().catch(null);
442
- const NostrBusStateV1Schema = object({
443
- version: literal(1),
444
- lastProcessedAt: NullableFiniteNumberSchema,
445
- gatewayStartedAt: NullableFiniteNumberSchema
446
- });
447
- const NostrBusStateSchema = object({
448
- version: literal(2),
449
- lastProcessedAt: NullableFiniteNumberSchema,
450
- gatewayStartedAt: NullableFiniteNumberSchema,
451
- recentEventIds: array(unknown()).catch([]).transform((ids) => ids.filter((id) => typeof id === "string"))
452
- });
453
- const NostrProfileStateSchema = object({
454
- version: literal(1),
455
- lastPublishedAt: NullableFiniteNumberSchema,
456
- lastPublishedEventId: string().nullable().catch(null),
457
- lastPublishResults: record(string(), _enum([
458
- "ok",
459
- "failed",
460
- "timeout"
461
- ])).nullable().catch(null)
462
- });
463
- function normalizeAccountId(accountId) {
464
- const trimmed = accountId?.trim();
465
- if (!trimmed) return "default";
466
- return trimmed.replace(/[^a-z0-9._-]+/gi, "_");
467
- }
468
- function resolveNostrStatePath(accountId, env = process.env) {
469
- const stateDir = getNostrRuntime().state.resolveStateDir(env, os.homedir);
470
- const normalized = normalizeAccountId(accountId);
471
- return path.join(stateDir, "nostr", `bus-state-${normalized}.json`);
472
- }
473
- function resolveNostrProfileStatePath(accountId, env = process.env) {
474
- const stateDir = getNostrRuntime().state.resolveStateDir(env, os.homedir);
475
- const normalized = normalizeAccountId(accountId);
476
- return path.join(stateDir, "nostr", `profile-state-${normalized}.json`);
477
- }
478
- function safeParseState(raw) {
479
- const parsedV2 = safeParseJsonWithSchema(NostrBusStateSchema, raw);
480
- if (parsedV2) return parsedV2;
481
- const parsedV1 = safeParseJsonWithSchema(NostrBusStateV1Schema, raw);
482
- if (!parsedV1) return null;
483
- return {
484
- version: 2,
485
- lastProcessedAt: parsedV1.lastProcessedAt,
486
- gatewayStartedAt: parsedV1.gatewayStartedAt,
487
- recentEventIds: []
488
- };
489
- }
490
- async function readNostrBusState(params) {
491
- const filePath = resolveNostrStatePath(params.accountId, params.env);
492
- try {
493
- const raw = await privateFileStore(path.dirname(filePath)).readTextIfExists(path.basename(filePath));
494
- if (raw === null) return null;
495
- return safeParseState(raw);
496
- } catch {
497
- return null;
498
- }
499
- }
500
- async function writeNostrBusState(params) {
501
- const filePath = resolveNostrStatePath(params.accountId, params.env);
502
- const payload = {
503
- version: STORE_VERSION,
504
- lastProcessedAt: params.lastProcessedAt,
505
- gatewayStartedAt: params.gatewayStartedAt,
506
- recentEventIds: (params.recentEventIds ?? []).filter((x) => typeof x === "string")
507
- };
508
- await privateFileStore(path.dirname(filePath)).writeJson(path.basename(filePath), payload, { trailingNewline: true });
509
- }
510
- /**
511
- * Determine the `since` timestamp for subscription.
512
- * Returns the later of: lastProcessedAt or gatewayStartedAt (both from disk),
513
- * falling back to `now` for fresh starts.
514
- */
515
- function computeSinceTimestamp(state, nowSec = Math.floor(Date.now() / 1e3)) {
516
- if (!state) return nowSec;
517
- const candidates = [state.lastProcessedAt, state.gatewayStartedAt].filter((t) => t !== null && t > 0);
518
- if (candidates.length === 0) return nowSec;
519
- return Math.max(...candidates);
520
- }
521
- function safeParseProfileState(raw) {
522
- return safeParseJsonWithSchema(NostrProfileStateSchema, raw);
523
- }
524
- async function readNostrProfileState(params) {
525
- const filePath = resolveNostrProfileStatePath(params.accountId, params.env);
526
- try {
527
- const raw = await privateFileStore(path.dirname(filePath)).readTextIfExists(path.basename(filePath));
528
- if (raw === null) return null;
529
- return safeParseProfileState(raw);
530
- } catch {
531
- return null;
532
- }
533
- }
534
- async function writeNostrProfileState(params) {
535
- const filePath = resolveNostrProfileStatePath(params.accountId, params.env);
536
- const payload = {
537
- version: PROFILE_STATE_VERSION,
538
- lastPublishedAt: params.lastPublishedAt,
539
- lastPublishedEventId: params.lastPublishedEventId,
540
- lastPublishResults: params.lastPublishResults
541
- };
542
- await privateFileStore(path.dirname(filePath)).writeJson(path.basename(filePath), payload, { trailingNewline: true });
543
- }
544
- //#endregion
545
- //#region extensions/nostr/src/seen-tracker.ts
546
- /**
547
- * Create a new seen tracker with LRU eviction and TTL expiration.
548
- */
549
- function createSeenTracker(options) {
550
- const maxEntries = options?.maxEntries ?? 1e5;
551
- const ttlMs = options?.ttlMs ?? 3600 * 1e3;
552
- const pruneIntervalMs = options?.pruneIntervalMs ?? 600 * 1e3;
553
- const entries = /* @__PURE__ */ new Map();
554
- let head = null;
555
- let tail = null;
556
- function moveToFront(id) {
557
- const entry = entries.get(id);
558
- if (!entry) return;
559
- if (head === id) return;
560
- if (entry.prev) {
561
- const prevEntry = entries.get(entry.prev);
562
- if (prevEntry) prevEntry.next = entry.next;
563
- }
564
- if (entry.next) {
565
- const nextEntry = entries.get(entry.next);
566
- if (nextEntry) nextEntry.prev = entry.prev;
567
- }
568
- if (tail === id) tail = entry.prev;
569
- entry.prev = null;
570
- entry.next = head;
571
- if (head) {
572
- const headEntry = entries.get(head);
573
- if (headEntry) headEntry.prev = id;
574
- }
575
- head = id;
576
- if (!tail) tail = id;
577
- }
578
- function removeFromList(id) {
579
- const entry = entries.get(id);
580
- if (!entry) return;
581
- if (entry.prev) {
582
- const prevEntry = entries.get(entry.prev);
583
- if (prevEntry) prevEntry.next = entry.next;
584
- } else head = entry.next;
585
- if (entry.next) {
586
- const nextEntry = entries.get(entry.next);
587
- if (nextEntry) nextEntry.prev = entry.prev;
588
- } else tail = entry.prev;
589
- }
590
- function evictLRU() {
591
- if (!tail) return;
592
- const idToEvict = tail;
593
- removeFromList(idToEvict);
594
- entries.delete(idToEvict);
595
- }
596
- function insertAtFront(id, seenAt) {
597
- const newEntry = {
598
- seenAt,
599
- prev: null,
600
- next: head
601
- };
602
- if (head) {
603
- const headEntry = entries.get(head);
604
- if (headEntry) headEntry.prev = id;
605
- }
606
- entries.set(id, newEntry);
607
- head = id;
608
- if (!tail) tail = id;
609
- }
610
- function pruneExpired() {
611
- const now = Date.now();
612
- const toDelete = [];
613
- for (const [id, entry] of entries) if (now - entry.seenAt > ttlMs) toDelete.push(id);
614
- for (const id of toDelete) {
615
- removeFromList(id);
616
- entries.delete(id);
617
- }
618
- }
619
- let pruneTimer;
620
- if (pruneIntervalMs > 0) {
621
- pruneTimer = setInterval(pruneExpired, pruneIntervalMs);
622
- if (pruneTimer.unref) pruneTimer.unref();
623
- }
624
- function add(id) {
625
- const now = Date.now();
626
- const existing = entries.get(id);
627
- if (existing) {
628
- existing.seenAt = now;
629
- moveToFront(id);
630
- return;
631
- }
632
- while (entries.size >= maxEntries) evictLRU();
633
- insertAtFront(id, now);
634
- }
635
- function has(id) {
636
- const entry = entries.get(id);
637
- if (!entry) {
638
- add(id);
639
- return false;
640
- }
641
- if (Date.now() - entry.seenAt > ttlMs) {
642
- removeFromList(id);
643
- entries.delete(id);
644
- add(id);
645
- return false;
646
- }
647
- entry.seenAt = Date.now();
648
- moveToFront(id);
649
- return true;
650
- }
651
- function peek(id) {
652
- const entry = entries.get(id);
653
- if (!entry) return false;
654
- if (Date.now() - entry.seenAt > ttlMs) {
655
- removeFromList(id);
656
- entries.delete(id);
657
- return false;
658
- }
659
- return true;
660
- }
661
- function deleteEntry(id) {
662
- if (entries.has(id)) {
663
- removeFromList(id);
664
- entries.delete(id);
665
- }
666
- }
667
- function clear() {
668
- entries.clear();
669
- head = null;
670
- tail = null;
671
- }
672
- function size() {
673
- return entries.size;
674
- }
675
- function stop() {
676
- if (pruneTimer) {
677
- clearInterval(pruneTimer);
678
- pruneTimer = void 0;
679
- }
680
- }
681
- function seed(ids) {
682
- const now = Date.now();
683
- for (let i = ids.length - 1; i >= 0; i--) {
684
- const id = ids[i];
685
- if (!entries.has(id) && entries.size < maxEntries) insertAtFront(id, now);
686
- }
687
- }
688
- return {
689
- has,
690
- add,
691
- peek,
692
- delete: deleteEntry,
693
- clear,
694
- size,
695
- stop,
696
- seed
697
- };
698
- }
699
- //#endregion
700
- //#region extensions/nostr/src/nostr-bus.ts
701
- const STARTUP_LOOKBACK_SEC = 120;
702
- const MAX_PERSISTED_EVENT_IDS = 5e3;
703
- const STATE_PERSIST_DEBOUNCE_MS = 5e3;
704
- const DEFAULT_INBOUND_GUARD_POLICY = createDirectDmPreCryptoGuardPolicy();
705
- const CIRCUIT_BREAKER_THRESHOLD = 5;
706
- const CIRCUIT_BREAKER_RESET_MS = 3e4;
707
- const HEALTH_WINDOW_MS = 6e4;
708
- function createFixedWindowRateLimiter(params) {
709
- const windowMs = Math.max(1, Math.floor(params.windowMs));
710
- const maxRequests = Math.max(1, Math.floor(params.maxRequests));
711
- const maxTrackedKeys = Math.max(1, Math.floor(params.maxTrackedKeys));
712
- const state = /* @__PURE__ */ new Map();
713
- const touch = (key, value) => {
714
- state.delete(key);
715
- state.set(key, value);
716
- };
717
- const prune = (nowMs) => {
718
- for (const [key, entry] of state) if (nowMs - entry.windowStartMs >= windowMs) state.delete(key);
719
- while (state.size > maxTrackedKeys) {
720
- const oldest = state.keys().next().value;
721
- if (!oldest) break;
722
- state.delete(oldest);
723
- }
724
- };
725
- return {
726
- isRateLimited: (key, nowMs = Date.now()) => {
727
- if (!key) return false;
728
- prune(nowMs);
729
- const existing = state.get(key);
730
- if (!existing || nowMs - existing.windowStartMs >= windowMs) {
731
- touch(key, {
732
- count: 1,
733
- windowStartMs: nowMs
734
- });
735
- return false;
736
- }
737
- const nextCount = existing.count + 1;
738
- touch(key, {
739
- count: nextCount,
740
- windowStartMs: existing.windowStartMs
741
- });
742
- return nextCount > maxRequests;
743
- },
744
- size: () => state.size,
745
- clear: () => state.clear()
746
- };
747
- }
748
- function createCircuitBreaker(relay, metrics, threshold = CIRCUIT_BREAKER_THRESHOLD, resetMs = CIRCUIT_BREAKER_RESET_MS) {
749
- const state = {
750
- state: "closed",
751
- failures: 0,
752
- lastFailure: 0,
753
- lastSuccess: Date.now()
754
- };
755
- return {
756
- canAttempt() {
757
- if (state.state === "closed") return true;
758
- if (state.state === "open") {
759
- if (Date.now() - state.lastFailure >= resetMs) {
760
- state.state = "half_open";
761
- metrics.emit("relay.circuit_breaker.half_open", 1, { relay });
762
- return true;
763
- }
764
- return false;
765
- }
766
- return true;
767
- },
768
- recordSuccess() {
769
- if (state.state === "half_open") {
770
- state.state = "closed";
771
- state.failures = 0;
772
- metrics.emit("relay.circuit_breaker.close", 1, { relay });
773
- } else if (state.state === "closed") state.failures = 0;
774
- state.lastSuccess = Date.now();
775
- },
776
- recordFailure() {
777
- state.failures++;
778
- state.lastFailure = Date.now();
779
- if (state.state === "half_open") {
780
- state.state = "open";
781
- metrics.emit("relay.circuit_breaker.open", 1, { relay });
782
- } else if (state.state === "closed" && state.failures >= threshold) {
783
- state.state = "open";
784
- metrics.emit("relay.circuit_breaker.open", 1, { relay });
785
- }
786
- },
787
- getState() {
788
- return state.state;
789
- }
790
- };
791
- }
792
- function createRelayHealthTracker() {
793
- const stats = /* @__PURE__ */ new Map();
794
- function getOrCreate(relay) {
795
- let s = stats.get(relay);
796
- if (!s) {
797
- s = {
798
- successCount: 0,
799
- failureCount: 0,
800
- latencySum: 0,
801
- latencyCount: 0,
802
- lastSuccess: 0,
803
- lastFailure: 0
804
- };
805
- stats.set(relay, s);
806
- }
807
- return s;
808
- }
809
- return {
810
- recordSuccess(relay, latencyMs) {
811
- const s = getOrCreate(relay);
812
- s.successCount++;
813
- s.latencySum += latencyMs;
814
- s.latencyCount++;
815
- s.lastSuccess = Date.now();
816
- },
817
- recordFailure(relay) {
818
- const s = getOrCreate(relay);
819
- s.failureCount++;
820
- s.lastFailure = Date.now();
821
- },
822
- getScore(relay) {
823
- const s = stats.get(relay);
824
- if (!s) return .5;
825
- const total = s.successCount + s.failureCount;
826
- if (total === 0) return .5;
827
- const successRate = s.successCount / total;
828
- const now = Date.now();
829
- const recencyBonus = s.lastSuccess > s.lastFailure ? Math.max(0, 1 - (now - s.lastSuccess) / HEALTH_WINDOW_MS) * .2 : 0;
830
- const avgLatency = s.latencyCount > 0 ? s.latencySum / s.latencyCount : 1e3;
831
- const latencyPenalty = Math.min(.2, avgLatency / 1e4);
832
- return Math.max(0, Math.min(1, successRate + recencyBonus - latencyPenalty));
833
- },
834
- getSortedRelays(relays) {
835
- return [...relays].toSorted((a, b) => this.getScore(b) - this.getScore(a));
836
- }
837
- };
838
- }
839
- /**
840
- * Start the Nostr DM bus - subscribes to NIP-04 encrypted DMs
841
- */
842
- async function startNostrBus(options) {
843
- const { privateKey, relays = DEFAULT_RELAYS, onMessage, authorizeSender, onError, onEose, onMetric, maxSeenEntries = 1e5, seenTtlMs = 3600 * 1e3 } = options;
844
- const sk = validatePrivateKey(privateKey);
845
- const pk = getPublicKey(sk);
846
- const pool = new SimplePool();
847
- const accountId = options.accountId ?? pk.slice(0, 16);
848
- const gatewayStartedAt = Math.floor(Date.now() / 1e3);
849
- const guardPolicy = createDirectDmPreCryptoGuardPolicy({
850
- ...DEFAULT_INBOUND_GUARD_POLICY,
851
- ...options.guardPolicy,
852
- rateLimit: {
853
- ...DEFAULT_INBOUND_GUARD_POLICY.rateLimit,
854
- ...options.guardPolicy?.rateLimit
855
- }
856
- });
857
- const metrics = onMetric ? createMetrics(onMetric) : createNoopMetrics();
858
- const seen = createSeenTracker({
859
- maxEntries: maxSeenEntries,
860
- ttlMs: seenTtlMs
861
- });
862
- const circuitBreakers = /* @__PURE__ */ new Map();
863
- const healthTracker = createRelayHealthTracker();
864
- for (const relay of relays) circuitBreakers.set(relay, createCircuitBreaker(relay, metrics));
865
- const state = await readNostrBusState({ accountId });
866
- const baseSince = computeSinceTimestamp(state, gatewayStartedAt);
867
- const since = Math.max(0, baseSince - STARTUP_LOOKBACK_SEC);
868
- if (state?.recentEventIds?.length) seen.seed(state.recentEventIds);
869
- await writeNostrBusState({
870
- accountId,
871
- lastProcessedAt: state?.lastProcessedAt ?? gatewayStartedAt,
872
- gatewayStartedAt,
873
- recentEventIds: state?.recentEventIds ?? []
874
- });
875
- let pendingWrite;
876
- let lastProcessedAt = state?.lastProcessedAt ?? gatewayStartedAt;
877
- let recentEventIds = (state?.recentEventIds ?? []).slice(-5e3);
878
- function scheduleStatePersist(eventCreatedAt, eventId) {
879
- lastProcessedAt = Math.max(lastProcessedAt, eventCreatedAt);
880
- recentEventIds.push(eventId);
881
- if (recentEventIds.length > MAX_PERSISTED_EVENT_IDS) recentEventIds = recentEventIds.slice(-5e3);
882
- if (pendingWrite) clearTimeout(pendingWrite);
883
- pendingWrite = setTimeout(() => {
884
- writeNostrBusState({
885
- accountId,
886
- lastProcessedAt,
887
- gatewayStartedAt,
888
- recentEventIds
889
- }).catch((err) => onError?.(err, "persist state"));
890
- }, STATE_PERSIST_DEBOUNCE_MS);
891
- }
892
- const inflight = /* @__PURE__ */ new Set();
893
- const perSenderRateLimiter = createFixedWindowRateLimiter({
894
- windowMs: guardPolicy.rateLimit.windowMs,
895
- maxRequests: guardPolicy.rateLimit.maxPerSenderPerWindow,
896
- maxTrackedKeys: guardPolicy.rateLimit.maxTrackedSenderKeys
897
- });
898
- const globalRateLimiter = createFixedWindowRateLimiter({
899
- windowMs: guardPolicy.rateLimit.windowMs,
900
- maxRequests: guardPolicy.rateLimit.maxGlobalPerWindow,
901
- maxTrackedKeys: 1
902
- });
903
- const updateRateLimiterSizeMetric = () => {
904
- metrics.emit("memory.rate_limiter_entries", perSenderRateLimiter.size() + globalRateLimiter.size());
905
- };
906
- async function handleEvent(event) {
907
- try {
908
- metrics.emit("event.received");
909
- if (seen.peek(event.id) || inflight.has(event.id)) {
910
- metrics.emit("event.duplicate");
911
- return;
912
- }
913
- inflight.add(event.id);
914
- const markSeen = () => {
915
- seen.add(event.id);
916
- metrics.emit("memory.seen_tracker_size", seen.size());
917
- };
918
- const rejectAndMarkSeen = (metric) => {
919
- markSeen();
920
- metrics.emit(metric);
921
- };
922
- if (event.pubkey === pk) {
923
- rejectAndMarkSeen("event.rejected.self_message");
924
- return;
925
- }
926
- if (event.created_at < since) {
927
- rejectAndMarkSeen("event.rejected.stale");
928
- return;
929
- }
930
- if (event.created_at > Math.floor(Date.now() / 1e3) + guardPolicy.maxFutureSkewSec) {
931
- metrics.emit("event.rejected.future");
932
- return;
933
- }
934
- if (!guardPolicy.allowedKinds.includes(event.kind)) {
935
- rejectAndMarkSeen("event.rejected.wrong_kind");
936
- return;
937
- }
938
- let targetsUs = false;
939
- for (const t of event.tags) if (t[0] === "p" && t[1] === pk) {
940
- targetsUs = true;
941
- break;
942
- }
943
- if (!targetsUs) {
944
- rejectAndMarkSeen("event.rejected.wrong_kind");
945
- return;
946
- }
947
- const replyTo = async (text) => {
948
- await sendEncryptedDm(pool, sk, event.pubkey, text, relays, metrics, circuitBreakers, healthTracker, onError);
949
- };
950
- const rejectIfGlobalRateLimited = () => {
951
- updateRateLimiterSizeMetric();
952
- if (globalRateLimiter.isRateLimited("global")) {
953
- metrics.emit("rate_limit.global");
954
- metrics.emit("event.rejected.rate_limited");
955
- updateRateLimiterSizeMetric();
956
- return true;
957
- }
958
- updateRateLimiterSizeMetric();
959
- return false;
960
- };
961
- const rejectIfVerifiedSenderRateLimited = () => {
962
- updateRateLimiterSizeMetric();
963
- if (perSenderRateLimiter.isRateLimited(event.pubkey)) {
964
- metrics.emit("rate_limit.per_sender");
965
- metrics.emit("event.rejected.rate_limited");
966
- updateRateLimiterSizeMetric();
967
- return true;
968
- }
969
- updateRateLimiterSizeMetric();
970
- return false;
971
- };
972
- if (Buffer.byteLength(event.content, "utf8") > guardPolicy.maxCiphertextBytes) {
973
- if (rejectIfGlobalRateLimited()) return;
974
- rejectAndMarkSeen("event.rejected.oversized_ciphertext");
975
- return;
976
- }
977
- if (rejectIfGlobalRateLimited()) return;
978
- if (!verifyEvent(event)) {
979
- rejectAndMarkSeen("event.rejected.invalid_signature");
980
- onError?.(/* @__PURE__ */ new Error("Invalid signature"), `event ${event.id}`);
981
- return;
982
- }
983
- if (rejectIfVerifiedSenderRateLimited()) return;
984
- if (authorizeSender) {
985
- if (await authorizeSender({
986
- senderPubkey: event.pubkey,
987
- reply: replyTo
988
- }) !== "allow") {
989
- markSeen();
990
- return;
991
- }
992
- }
993
- let plaintext;
994
- try {
995
- plaintext = decrypt(sk, event.pubkey, event.content);
996
- metrics.emit("decrypt.success");
997
- } catch (err) {
998
- markSeen();
999
- metrics.emit("decrypt.failure");
1000
- metrics.emit("event.rejected.decrypt_failed");
1001
- onError?.(err, `decrypt from ${event.pubkey}`);
1002
- return;
1003
- }
1004
- if (Buffer.byteLength(plaintext, "utf8") > guardPolicy.maxPlaintextBytes) {
1005
- markSeen();
1006
- metrics.emit("event.rejected.oversized_plaintext");
1007
- return;
1008
- }
1009
- await onMessage(event.pubkey, plaintext, replyTo, {
1010
- eventId: event.id,
1011
- createdAt: event.created_at
1012
- });
1013
- markSeen();
1014
- metrics.emit("event.processed");
1015
- scheduleStatePersist(event.created_at, event.id);
1016
- } catch (err) {
1017
- onError?.(err, `event ${event.id}`);
1018
- } finally {
1019
- inflight.delete(event.id);
1020
- }
1021
- }
1022
- const sub = pool.subscribeMany(relays, [{
1023
- kinds: [4],
1024
- "#p": [pk],
1025
- since
1026
- }], {
1027
- onevent: handleEvent,
1028
- oneose: () => {
1029
- for (const relay of relays) metrics.emit("relay.message.eose", 1, { relay });
1030
- onEose?.(relays.join(", "));
1031
- },
1032
- onclose: (reason) => {
1033
- for (const relay of relays) {
1034
- metrics.emit("relay.message.closed", 1, { relay });
1035
- options.onDisconnect?.(relay);
1036
- }
1037
- onError?.(/* @__PURE__ */ new Error(`Subscription closed: ${reason.join(", ")}`), "subscription");
1038
- }
1039
- });
1040
- const sendDm = async (toPubkey, text) => {
1041
- await sendEncryptedDm(pool, sk, toPubkey, text, relays, metrics, circuitBreakers, healthTracker, onError);
1042
- };
1043
- const publishProfile$1 = async (profile) => {
1044
- const result = await publishProfile(pool, sk, relays, profile, (await readNostrProfileState({ accountId }))?.lastPublishedAt ?? void 0);
1045
- const publishResults = {};
1046
- for (const relay of result.successes) publishResults[relay] = "ok";
1047
- for (const { relay, error } of result.failures) publishResults[relay] = error === "timeout" ? "timeout" : "failed";
1048
- await writeNostrProfileState({
1049
- accountId,
1050
- lastPublishedAt: result.createdAt,
1051
- lastPublishedEventId: result.eventId,
1052
- lastPublishResults: publishResults
1053
- });
1054
- return result;
1055
- };
1056
- const getProfileState = async () => {
1057
- const state = await readNostrProfileState({ accountId });
1058
- return {
1059
- lastPublishedAt: state?.lastPublishedAt ?? null,
1060
- lastPublishedEventId: state?.lastPublishedEventId ?? null,
1061
- lastPublishResults: state?.lastPublishResults ?? null
1062
- };
1063
- };
1064
- return {
1065
- close: () => {
1066
- sub.close();
1067
- seen.stop();
1068
- perSenderRateLimiter.clear();
1069
- globalRateLimiter.clear();
1070
- if (pendingWrite) {
1071
- clearTimeout(pendingWrite);
1072
- writeNostrBusState({
1073
- accountId,
1074
- lastProcessedAt,
1075
- gatewayStartedAt,
1076
- recentEventIds
1077
- }).catch((err) => onError?.(err, "persist state on close"));
1078
- }
1079
- },
1080
- publicKey: pk,
1081
- sendDm,
1082
- getMetrics: () => metrics.getSnapshot(),
1083
- publishProfile: publishProfile$1,
1084
- getProfileState
1085
- };
1086
- }
1087
- /**
1088
- * Send an encrypted DM to a pubkey
1089
- */
1090
- async function sendEncryptedDm(pool, sk, toPubkey, text, relays, metrics, circuitBreakers, healthTracker, onError) {
1091
- const reply = finalizeEvent({
1092
- kind: 4,
1093
- content: encrypt(sk, toPubkey, text),
1094
- tags: [["p", toPubkey]],
1095
- created_at: Math.floor(Date.now() / 1e3)
1096
- }, sk);
1097
- const sortedRelays = healthTracker.getSortedRelays(relays);
1098
- let lastError;
1099
- for (const relay of sortedRelays) {
1100
- const cb = circuitBreakers.get(relay);
1101
- if (cb && !cb.canAttempt()) continue;
1102
- const startTime = Date.now();
1103
- try {
1104
- const [publishPromise] = pool.publish([relay], reply);
1105
- if (!publishPromise) throw new Error(`Failed to create publish promise for relay ${relay}`);
1106
- await publishPromise;
1107
- const latency = Date.now() - startTime;
1108
- cb?.recordSuccess();
1109
- healthTracker.recordSuccess(relay, latency);
1110
- return;
1111
- } catch (err) {
1112
- lastError = err;
1113
- const latency = Date.now() - startTime;
1114
- cb?.recordFailure();
1115
- healthTracker.recordFailure(relay);
1116
- metrics.emit("relay.error", 1, {
1117
- relay,
1118
- latency
1119
- });
1120
- onError?.(lastError, `publish to ${relay}`);
1121
- }
1122
- }
1123
- throw new Error(`Failed to publish to any relay: ${lastError?.message}`);
1124
- }
1125
- //#endregion
1126
- //#region extensions/nostr/src/gateway.ts
1127
- const activeBuses = /* @__PURE__ */ new Map();
1128
- const metricsSnapshots = /* @__PURE__ */ new Map();
1129
- const ACCESS_GROUP_PREFIX = "accessGroup:";
1130
- function parseNostrAccessGroupAllowFromEntry(entry) {
1131
- const trimmed = entry.trim();
1132
- if (!trimmed.startsWith(ACCESS_GROUP_PREFIX)) return null;
1133
- return trimmed.slice(12).trim() || null;
1134
- }
1135
- function normalizeNostrAllowEntry(entry) {
1136
- const trimmed = entry.trim();
1137
- if (!trimmed) return null;
1138
- if (trimmed === "*") return "*";
1139
- const accessGroup = parseNostrAccessGroupAllowFromEntry(trimmed);
1140
- if (accessGroup) return `accessGroup:${accessGroup}`;
1141
- try {
1142
- return normalizePubkey(trimmed.replace(/^nostr:/i, ""));
1143
- } catch {
1144
- return null;
1145
- }
1146
- }
1147
- function normalizeNostrSenderPubkey(value) {
1148
- try {
1149
- return normalizePubkey(value);
1150
- } catch {
1151
- return null;
1152
- }
1153
- }
1154
- const nostrIngressIdentity = {
1155
- key: "nostr-pubkey",
1156
- normalizeEntry: normalizeNostrAllowEntry,
1157
- normalizeSubject: normalizeNostrSenderPubkey,
1158
- sensitivity: "pii",
1159
- entryIdPrefix: "nostr-entry"
1160
- };
1161
- const startNostrGatewayAccount = async (ctx) => {
1162
- const account = ctx.account;
1163
- ctx.setStatus({
1164
- accountId: account.accountId,
1165
- publicKey: account.publicKey
1166
- });
1167
- ctx.log?.info?.(`[${account.accountId}] starting Nostr provider (pubkey: ${account.publicKey})`);
1168
- if (!account.configured) throw new Error("Nostr private key not configured");
1169
- const runtime = getNostrRuntime();
1170
- const pairing = createChannelPairingController({
1171
- core: runtime,
1172
- channel: "nostr",
1173
- accountId: account.accountId
1174
- });
1175
- const resolveInboundAccess = async (senderPubkey, rawBody) => await resolveStableChannelMessageIngress({
1176
- channelId: "nostr",
1177
- accountId: account.accountId,
1178
- identity: nostrIngressIdentity,
1179
- cfg: ctx.cfg,
1180
- useDefaultPairingStore: true,
1181
- subject: { stableId: senderPubkey },
1182
- conversation: {
1183
- kind: "direct",
1184
- id: senderPubkey
1185
- },
1186
- dmPolicy: account.config.dmPolicy ?? "pairing",
1187
- allowFrom: account.config.allowFrom,
1188
- command: runtime.channel.commands.shouldComputeCommandAuthorized(rawBody, ctx.cfg) ? { modeWhenAccessGroupsOff: "configured" } : void 0
1189
- });
1190
- let busHandle = null;
1191
- const authorizeSender = async (input) => {
1192
- const resolved = await resolveInboundAccess(input.senderId, "");
1193
- if (resolved.senderAccess.decision === "allow") return "allow";
1194
- if (resolved.senderAccess.decision === "pairing") {
1195
- await pairing.issueChallenge({
1196
- senderId: input.senderId,
1197
- senderIdLine: `Your Nostr pubkey: ${input.senderId}`,
1198
- sendPairingReply: input.reply,
1199
- onCreated: () => {
1200
- ctx.log?.debug?.(`[${account.accountId}] nostr pairing request sender=${input.senderId}`);
1201
- },
1202
- onReplyError: (err) => {
1203
- ctx.log?.warn?.(`[${account.accountId}] nostr pairing reply failed for ${input.senderId}: ${String(err)}`);
1204
- }
1205
- });
1206
- return "pairing";
1207
- }
1208
- ctx.log?.debug?.(`[${account.accountId}] blocked Nostr sender ${input.senderId} (${resolved.senderAccess.reasonCode})`);
1209
- return "block";
1210
- };
1211
- const bus = await startNostrBus({
1212
- accountId: account.accountId,
1213
- privateKey: account.privateKey,
1214
- relays: account.relays,
1215
- authorizeSender: async ({ senderPubkey, reply }) => await authorizeSender({
1216
- senderId: senderPubkey,
1217
- reply
1218
- }),
1219
- onMessage: async (senderPubkey, text, reply, meta) => {
1220
- const resolvedAccess = await resolveInboundAccess(senderPubkey, text);
1221
- if (resolvedAccess.senderAccess.decision !== "allow") {
1222
- ctx.log?.warn?.(`[${account.accountId}] dropping Nostr DM after preflight drift (${senderPubkey}, ${resolvedAccess.senderAccess.reasonCode})`);
1223
- return;
1224
- }
1225
- const { dispatchInboundDirectDmWithRuntime } = await import("./inbound-direct-dm-runtime-BzQSanFy.js");
1226
- await dispatchInboundDirectDmWithRuntime({
1227
- cfg: ctx.cfg,
1228
- runtime,
1229
- channel: "nostr",
1230
- channelLabel: "Nostr",
1231
- accountId: account.accountId,
1232
- peer: {
1233
- kind: "direct",
1234
- id: senderPubkey
1235
- },
1236
- senderId: senderPubkey,
1237
- senderAddress: `nostr:${senderPubkey}`,
1238
- recipientAddress: `nostr:${account.publicKey}`,
1239
- conversationLabel: senderPubkey,
1240
- rawBody: text,
1241
- messageId: meta.eventId,
1242
- timestamp: meta.createdAt * 1e3,
1243
- commandAuthorized: resolvedAccess.commandAccess.requested ? resolvedAccess.commandAccess.authorized : void 0,
1244
- deliver: async (payload) => {
1245
- const outboundText = payload && typeof payload === "object" && "text" in payload ? payload.text ?? "" : "";
1246
- if (!outboundText.trim()) return;
1247
- const tableMode = runtime.channel.text.resolveMarkdownTableMode({
1248
- cfg: ctx.cfg,
1249
- channel: "nostr",
1250
- accountId: account.accountId
1251
- });
1252
- await reply(runtime.channel.text.convertMarkdownTables(outboundText, tableMode));
1253
- },
1254
- onRecordError: (err) => {
1255
- ctx.log?.error?.(`[${account.accountId}] failed recording Nostr inbound session: ${String(err)}`);
1256
- },
1257
- onDispatchError: (err, info) => {
1258
- ctx.log?.error?.(`[${account.accountId}] Nostr ${info.kind} reply failed: ${String(err)}`);
1259
- }
1260
- });
1261
- },
1262
- onError: (error, context) => {
1263
- ctx.log?.error?.(`[${account.accountId}] Nostr error (${context}): ${error.message}`);
1264
- },
1265
- onConnect: (relay) => {
1266
- ctx.log?.debug?.(`[${account.accountId}] Connected to relay: ${relay}`);
1267
- },
1268
- onDisconnect: (relay) => {
1269
- ctx.log?.debug?.(`[${account.accountId}] Disconnected from relay: ${relay}`);
1270
- },
1271
- onEose: (relays) => {
1272
- ctx.log?.debug?.(`[${account.accountId}] EOSE received from relays: ${relays}`);
1273
- },
1274
- onMetric: (event) => {
1275
- if (event.name.startsWith("event.rejected.")) ctx.log?.debug?.(`[${account.accountId}] Metric: ${event.name} ${JSON.stringify(event.labels)}`);
1276
- else if (event.name === "relay.circuit_breaker.open") ctx.log?.warn?.(`[${account.accountId}] Circuit breaker opened for relay: ${event.labels?.relay}`);
1277
- else if (event.name === "relay.circuit_breaker.close") ctx.log?.info?.(`[${account.accountId}] Circuit breaker closed for relay: ${event.labels?.relay}`);
1278
- else if (event.name === "relay.error") ctx.log?.debug?.(`[${account.accountId}] Relay error: ${event.labels?.relay}`);
1279
- if (busHandle) metricsSnapshots.set(account.accountId, busHandle.getMetrics());
1280
- }
1281
- });
1282
- busHandle = bus;
1283
- activeBuses.set(account.accountId, bus);
1284
- ctx.log?.info?.(`[${account.accountId}] Nostr provider started, connected to ${account.relays.length} relay(s)`);
1285
- return { stop: () => {
1286
- bus.close();
1287
- activeBuses.delete(account.accountId);
1288
- metricsSnapshots.delete(account.accountId);
1289
- ctx.log?.info?.(`[${account.accountId}] Nostr provider stopped`);
1290
- } };
1291
- };
1292
- const nostrPairingTextAdapter = {
1293
- idLabel: "nostrPubkey",
1294
- message: "Your pairing request has been approved!",
1295
- normalizeAllowEntry: (entry) => {
1296
- try {
1297
- return normalizePubkey(entry.trim().replace(/^nostr:/i, ""));
1298
- } catch {
1299
- return entry.trim();
1300
- }
1301
- },
1302
- notify: async ({ cfg, id, message, accountId }) => {
1303
- const bus = activeBuses.get(accountId ?? resolveDefaultNostrAccountId(cfg));
1304
- if (bus) await bus.sendDm(id, message);
1305
- }
1306
- };
1307
- const nostrOutboundAdapter = {
1308
- deliveryMode: "direct",
1309
- textChunkLimit: 4e3,
1310
- deliveryCapabilities: { durableFinal: {
1311
- text: true,
1312
- messageSendingHooks: true
1313
- } },
1314
- sendText: async ({ cfg, to, text, accountId }) => {
1315
- const core = getNostrRuntime();
1316
- const aid = accountId ?? resolveDefaultNostrAccountId(cfg);
1317
- const bus = activeBuses.get(aid);
1318
- if (!bus) throw new Error(`Nostr bus not running for account ${aid}`);
1319
- const tableMode = core.channel.text.resolveMarkdownTableMode({
1320
- cfg,
1321
- channel: "nostr",
1322
- accountId: aid
1323
- });
1324
- const message = core.channel.text.convertMarkdownTables(text ?? "", tableMode);
1325
- const normalizedTo = normalizePubkey(to);
1326
- await bus.sendDm(normalizedTo, message);
1327
- return attachChannelToResult("nostr", {
1328
- to: normalizedTo,
1329
- messageId: `nostr-${Date.now()}`
1330
- });
1331
- }
1332
- };
1333
- function getActiveNostrBuses() {
1334
- return new Map(activeBuses);
1335
- }
1336
- //#endregion
1337
- //#region extensions/nostr/src/session-route.ts
1338
- function resolveNostrOutboundSessionRoute(params) {
1339
- const target = stripChannelTargetPrefix(params.target, "nostr");
1340
- if (!target) return null;
1341
- return buildChannelOutboundSessionRoute({
1342
- cfg: params.cfg,
1343
- agentId: params.agentId,
1344
- channel: "nostr",
1345
- accountId: params.accountId,
1346
- peer: {
1347
- kind: "direct",
1348
- id: target
1349
- },
1350
- chatType: "direct",
1351
- from: `nostr:${target}`,
1352
- to: `nostr:${target}`
1353
- });
1354
- }
1355
- //#endregion
1356
- //#region extensions/nostr/src/channel.ts
1357
- const resolveNostrDmPolicy = createScopedDmSecurityResolver({
1358
- channelKey: "nostr",
1359
- resolvePolicy: (account) => account.config.dmPolicy,
1360
- resolveAllowFrom: (account) => account.config.allowFrom,
1361
- policyPathSuffix: "dmPolicy",
1362
- defaultPolicy: "pairing",
1363
- approveHint: formatPairingApproveHint("nostr"),
1364
- normalizeEntry: (raw) => {
1365
- try {
1366
- return normalizePubkey(raw.trim().replace(/^nostr:/i, ""));
1367
- } catch {
1368
- return raw.trim();
1369
- }
1370
- }
1371
- });
1372
- const nostrConfigAdapter = createTopLevelChannelConfigAdapter({
1373
- sectionKey: "nostr",
1374
- resolveAccount: (cfg) => resolveNostrAccount({ cfg }),
1375
- listAccountIds: listNostrAccountIds,
1376
- defaultAccountId: resolveDefaultNostrAccountId,
1377
- deleteMode: "clear-fields",
1378
- clearBaseFields: [
1379
- "name",
1380
- "defaultAccount",
1381
- "privateKey",
1382
- "relays",
1383
- "dmPolicy",
1384
- "allowFrom",
1385
- "profile"
1386
- ],
1387
- resolveAllowFrom: (account) => account.config.allowFrom,
1388
- formatAllowFrom: (allowFrom) => allowFrom.map((entry) => String(entry).trim()).filter(Boolean).map((entry) => {
1389
- if (entry === "*") return "*";
1390
- try {
1391
- return normalizePubkey(entry);
1392
- } catch {
1393
- return entry;
1394
- }
1395
- }).filter(Boolean)
1396
- });
1397
- const nostrMessageAdapter = createChannelMessageAdapterFromOutbound({
1398
- id: "nostr",
1399
- outbound: nostrOutboundAdapter
1400
- });
1401
- const nostrPlugin = createChatChannelPlugin({
1402
- base: {
1403
- id: "nostr",
1404
- meta: {
1405
- id: "nostr",
1406
- label: "Nostr",
1407
- selectionLabel: "Nostr",
1408
- docsPath: "/channels/nostr",
1409
- docsLabel: "nostr",
1410
- blurb: "Decentralized DMs via Nostr relays (NIP-04)",
1411
- order: 100
1412
- },
1413
- capabilities: {
1414
- chatTypes: ["direct"],
1415
- media: false
1416
- },
1417
- reload: { configPrefixes: ["channels.nostr"] },
1418
- configSchema: buildChannelConfigSchema(NostrConfigSchema),
1419
- setup: nostrSetupAdapter,
1420
- setupWizard: nostrSetupWizard,
1421
- config: {
1422
- ...nostrConfigAdapter,
1423
- isConfigured: (account) => account.configured,
1424
- describeAccount: (account) => describeAccountSnapshot({
1425
- account,
1426
- configured: account.configured,
1427
- extra: { publicKey: account.publicKey }
1428
- })
1429
- },
1430
- messaging: {
1431
- targetPrefixes: ["nostr"],
1432
- normalizeTarget: (target) => {
1433
- const cleaned = target.trim().replace(/^nostr:/i, "");
1434
- try {
1435
- return normalizePubkey(cleaned);
1436
- } catch {
1437
- return cleaned;
1438
- }
1439
- },
1440
- targetResolver: {
1441
- looksLikeId: (input) => {
1442
- const trimmed = input.trim();
1443
- return trimmed.startsWith("npub1") || /^[0-9a-fA-F]{64}$/.test(trimmed);
1444
- },
1445
- hint: "<npub|hex pubkey|nostr:npub...>"
1446
- },
1447
- resolveOutboundSessionRoute: (params) => resolveNostrOutboundSessionRoute(params)
1448
- },
1449
- message: nostrMessageAdapter,
1450
- status: { ...createComputedAccountStatusAdapter({
1451
- defaultRuntime: createDefaultChannelRuntimeState(DEFAULT_ACCOUNT_ID),
1452
- collectStatusIssues: (accounts) => collectStatusIssuesFromLastError("nostr", accounts),
1453
- buildChannelSummary: ({ snapshot }) => buildPassiveChannelStatusSummary(snapshot, { publicKey: snapshot.publicKey ?? null }),
1454
- resolveAccountSnapshot: ({ account, runtime }) => ({
1455
- accountId: account.accountId,
1456
- name: account.name,
1457
- enabled: account.enabled,
1458
- configured: account.configured,
1459
- extra: {
1460
- publicKey: account.publicKey,
1461
- profile: account.profile,
1462
- ...buildTrafficStatusSummary(runtime)
1463
- }
1464
- })
1465
- }) },
1466
- gateway: { startAccount: startNostrGatewayAccount }
1467
- },
1468
- pairing: { text: nostrPairingTextAdapter },
1469
- security: { resolveDmPolicy: resolveNostrDmPolicy },
1470
- outbound: nostrOutboundAdapter
1471
- });
1472
- /**
1473
- * Publish a profile (kind:0) for a Nostr account.
1474
- * @param accountId - Account ID (defaults to "default")
1475
- * @param profile - Profile data to publish
1476
- * @returns Publish results with successes and failures
1477
- * @throws Error if account is not running
1478
- */
1479
- async function publishNostrProfile(accountId, profile) {
1480
- const resolvedAccountId = accountId ?? "default";
1481
- const bus = getActiveNostrBuses().get(resolvedAccountId);
1482
- if (!bus) throw new Error(`Nostr bus not running for account ${resolvedAccountId}`);
1483
- return bus.publishProfile(profile);
1484
- }
1485
- /**
1486
- * Get profile publish state for a Nostr account.
1487
- * @param accountId - Account ID (defaults to "default")
1488
- * @returns Profile publish state or null if account not running
1489
- */
1490
- async function getNostrProfileState(accountId = DEFAULT_ACCOUNT_ID) {
1491
- const bus = getActiveNostrBuses().get(accountId);
1492
- if (!bus) return null;
1493
- return bus.getProfileState();
1494
- }
1495
- //#endregion
1496
- export { setNostrRuntime as a, getNostrRuntime as i, nostrPlugin as n, contentToProfile as o, publishNostrProfile as r, getNostrProfileState as t };