abtars 0.3.3 → 0.3.4-alpha.1

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 (384) hide show
  1. package/bundle/{_registry.generated-7DRCE4V6.js → _registry.generated-ZJBAZMXN.js} +16 -15
  2. package/bundle/{_registry.generated-7DRCE4V6.js.map → _registry.generated-ZJBAZMXN.js.map} +1 -1
  3. package/bundle/abtars-browser.js +6 -5
  4. package/bundle/abtars-browser.js.map +1 -1
  5. package/bundle/abtars-cli.js +47 -39
  6. package/bundle/abtars-cli.js.map +2 -2
  7. package/bundle/abtars-restart.js +7 -7
  8. package/bundle/abtars-rss.js +2 -1
  9. package/bundle/abtars-rss.js.map +2 -2
  10. package/bundle/abtars-task.js +6 -5
  11. package/bundle/abtars-task.js.map +1 -1
  12. package/bundle/abtars-todo.js +2 -1
  13. package/bundle/abtars-todo.js.map +1 -1
  14. package/bundle/abtars.js +299 -209
  15. package/bundle/abtars.js.map +4 -4
  16. package/bundle/{acp-raw-client-AZJCEB6S.js → acp-raw-client-YTBGFN4S.js} +4 -3
  17. package/bundle/{acp-raw-client-AZJCEB6S.js.map → acp-raw-client-YTBGFN4S.js.map} +1 -1
  18. package/bundle/{action-gate-QYJL57IX.js → action-gate-YISTP773.js} +4 -3
  19. package/bundle/{action-gate-QYJL57IX.js.map → action-gate-YISTP773.js.map} +1 -1
  20. package/bundle/{agent-api-adapter-PYMNQXHE.js → agent-api-adapter-E4HWVJ32.js} +5 -4
  21. package/bundle/{agent-api-adapter-PYMNQXHE.js.map → agent-api-adapter-E4HWVJ32.js.map} +1 -1
  22. package/bundle/{agent-api-rate-limit-4GEZ4YN5.js → agent-api-rate-limit-VENFGOAD.js} +6 -5
  23. package/bundle/{agent-registry-563P4EUJ.js → agent-registry-DL7UT272.js} +9 -8
  24. package/bundle/bootstrap-V5MROD3X.js +62 -0
  25. package/bundle/bootstrap-V5MROD3X.js.map +7 -0
  26. package/bundle/{bridge-lock-transport-LXCF2IVN.js → bridge-lock-transport-BJAMHMXW.js} +6 -5
  27. package/bundle/{browser-2VZOGOGX.js → browser-PT54UWSW.js} +8 -7
  28. package/bundle/{budget-PPA7WY3D.js → budget-QNK6IIT6.js} +5 -4
  29. package/bundle/{budget-PPA7WY3D.js.map → budget-QNK6IIT6.js.map} +1 -1
  30. package/bundle/{capability-WXEA2WFK.js → capability-EKPGHQIO.js} +7 -6
  31. package/bundle/{chunk-C3EYYJN3.js → chunk-2BXXQG7P.js} +16 -4
  32. package/bundle/chunk-2BXXQG7P.js.map +7 -0
  33. package/bundle/{chunk-4PIVWXUJ.js → chunk-2ZD7VQRW.js} +2 -2
  34. package/bundle/{chunk-OY2HAK33.js → chunk-36ZEYDKZ.js} +1 -1
  35. package/bundle/chunk-36ZEYDKZ.js.map +7 -0
  36. package/bundle/{chunk-3QW2K53E.js → chunk-4IGLXZCC.js} +11 -19
  37. package/bundle/chunk-4IGLXZCC.js.map +7 -0
  38. package/bundle/{chunk-T7TAWGBX.js → chunk-52PQM4EZ.js} +2 -2
  39. package/bundle/{chunk-2RGR3LSV.js → chunk-5P5HF7IJ.js} +2 -2
  40. package/bundle/{chunk-LE23VPN3.js → chunk-63A7ZRIH.js} +4 -4
  41. package/bundle/{chunk-LE23VPN3.js.map → chunk-63A7ZRIH.js.map} +1 -1
  42. package/bundle/chunk-6IB3GVXK.js +77 -0
  43. package/bundle/chunk-6IB3GVXK.js.map +7 -0
  44. package/bundle/{chunk-OOKNHOCB.js → chunk-6S3G6GPO.js} +2 -2
  45. package/bundle/{chunk-E7MV7WFT.js → chunk-6VTHSN4V.js} +6 -6
  46. package/bundle/{chunk-NGZVJ52F.js → chunk-76YN7O3U.js} +7 -7
  47. package/bundle/{chunk-43DKPXTP.js → chunk-7LORCJCQ.js} +4 -4
  48. package/bundle/{chunk-HDOFJVFS.js → chunk-7OI46MH7.js} +3 -3
  49. package/bundle/{chunk-H2K23MOF.js → chunk-7XXISOHU.js} +21 -5
  50. package/bundle/chunk-7XXISOHU.js.map +7 -0
  51. package/bundle/{chunk-CB6S3ZRF.js → chunk-AFFW2LRY.js} +3 -3
  52. package/bundle/{chunk-TCI6FZTP.js → chunk-AHJDG6OM.js} +9 -9
  53. package/bundle/{chunk-NP72ZB7P.js → chunk-AMUJEP6L.js} +45 -45
  54. package/bundle/{chunk-NP72ZB7P.js.map → chunk-AMUJEP6L.js.map} +2 -2
  55. package/bundle/{chunk-BU7LTI2W.js → chunk-AWCO3DQ3.js} +6 -7
  56. package/bundle/chunk-AWCO3DQ3.js.map +7 -0
  57. package/bundle/{chunk-YME7NRGP.js → chunk-B2TIRDZC.js} +2 -2
  58. package/bundle/{chunk-SSCGWDIC.js → chunk-BWJ37KMW.js} +2 -2
  59. package/bundle/{chunk-ULO2PX3T.js → chunk-CCZ43JB7.js} +3 -3
  60. package/bundle/{chunk-FVUL44T4.js → chunk-CNENVY37.js} +2 -2
  61. package/bundle/{chunk-J5NOL4DB.js → chunk-DJOSXXM2.js} +2 -2
  62. package/bundle/{chunk-7RAGSHSH.js → chunk-DMDX35YT.js} +12 -10
  63. package/bundle/chunk-DMDX35YT.js.map +7 -0
  64. package/bundle/{chunk-DNDYD5SL.js → chunk-E7DZYCSF.js} +3 -3
  65. package/bundle/{chunk-M6Q3IQ4H.js → chunk-FF2F7ENH.js} +250 -118
  66. package/bundle/chunk-FF2F7ENH.js.map +7 -0
  67. package/bundle/{chunk-GCFIK6OB.js → chunk-FSGICOCX.js} +21 -21
  68. package/bundle/{chunk-IXKQ4JMX.js → chunk-GFAJSPMD.js} +33 -17
  69. package/bundle/chunk-GFAJSPMD.js.map +7 -0
  70. package/bundle/{chunk-FJF42RZY.js → chunk-GHRLO2UL.js} +3 -3
  71. package/bundle/{chunk-3LQOJVTB.js → chunk-HFOCNYEO.js} +1842 -1220
  72. package/bundle/{chunk-3LQOJVTB.js.map → chunk-HFOCNYEO.js.map} +4 -4
  73. package/bundle/{chunk-7WHXTCVD.js → chunk-HWFN7JGU.js} +2 -2
  74. package/bundle/{chunk-KBPVJGD7.js → chunk-IXGDDDAB.js} +3 -3
  75. package/bundle/chunk-JHLKEUHE.js +37 -0
  76. package/bundle/chunk-JHLKEUHE.js.map +7 -0
  77. package/bundle/{chunk-YEOZN5IE.js → chunk-JRGEEGZF.js} +2 -2
  78. package/bundle/{chunk-56D3Y44D.js → chunk-KLG4SCF7.js} +10 -10
  79. package/bundle/{chunk-ASYX43OU.js → chunk-LB43Q7G6.js} +26 -26
  80. package/bundle/{chunk-TVSPVZTX.js → chunk-LN5MNDSA.js} +3 -3
  81. package/bundle/{chunk-RJX45XIC.js → chunk-LPF2HELD.js} +9 -4
  82. package/bundle/chunk-LPF2HELD.js.map +7 -0
  83. package/bundle/{chunk-72T2Q7IG.js → chunk-MJACYH7A.js} +270 -282
  84. package/bundle/chunk-MJACYH7A.js.map +7 -0
  85. package/bundle/{chunk-SESM4GBM.js → chunk-MPQ2PJQX.js} +52 -25
  86. package/bundle/chunk-MPQ2PJQX.js.map +7 -0
  87. package/bundle/{chunk-FIAVVKGN.js → chunk-MTE32OQH.js} +3 -3
  88. package/bundle/{chunk-MV5KOWOR.js → chunk-N3Q3TASM.js} +7 -7
  89. package/bundle/{chunk-IQKADER4.js → chunk-O4YBJS2K.js} +2 -2
  90. package/bundle/{chunk-VJATH7AN.js → chunk-OOUCUCUW.js} +9 -8
  91. package/bundle/chunk-OOUCUCUW.js.map +7 -0
  92. package/bundle/{chunk-5V4VHKEA.js → chunk-OT6HLPEA.js} +3 -3
  93. package/bundle/{chunk-V6CV3QPH.js → chunk-OWPQIBAO.js} +2 -2
  94. package/bundle/{chunk-EDZGF6BC.js → chunk-QJPDBJDP.js} +11 -4
  95. package/bundle/chunk-QJPDBJDP.js.map +7 -0
  96. package/bundle/{chunk-N5VROZ7A.js → chunk-QMP2KC4W.js} +5 -5
  97. package/bundle/{chunk-4HNCOQSK.js → chunk-QOGZ7BFL.js} +7 -7
  98. package/bundle/{chunk-2LKQV2ND.js → chunk-R23FHZRY.js} +3 -3
  99. package/bundle/{chunk-SXNY6HC4.js → chunk-R4GYWVCR.js} +6 -6
  100. package/bundle/chunk-R4GYWVCR.js.map +7 -0
  101. package/bundle/{chunk-S7ZIGIR5.js → chunk-R76K6L6H.js} +27 -27
  102. package/bundle/{chunk-S7ZIGIR5.js.map → chunk-R76K6L6H.js.map} +1 -1
  103. package/bundle/{chunk-TY26WMQY.js → chunk-RCWQ34QR.js} +2 -2
  104. package/bundle/{chunk-MQJG7OJX.js → chunk-RJ2OUNFU.js} +38 -36
  105. package/bundle/chunk-RJ2OUNFU.js.map +7 -0
  106. package/bundle/{chunk-S6HEHCCG.js → chunk-RO3TAYBR.js} +83 -46
  107. package/bundle/chunk-RO3TAYBR.js.map +7 -0
  108. package/bundle/{chunk-ZOCEBV62.js → chunk-UU3RLJSD.js} +3 -3
  109. package/bundle/{chunk-P5O6QZDC.js → chunk-V7Y2LFO4.js} +10 -6
  110. package/bundle/chunk-V7Y2LFO4.js.map +7 -0
  111. package/bundle/{chunk-WP7FZHMI.js → chunk-W2PSVV2T.js} +2 -2
  112. package/bundle/{chunk-V2QIAXWZ.js → chunk-WEGFRA6G.js} +3 -3
  113. package/bundle/{chunk-ZY6DH2S4.js → chunk-WTIGZO3N.js} +80 -70
  114. package/bundle/chunk-WTIGZO3N.js.map +7 -0
  115. package/bundle/{chunk-O4GKI3Q3.js → chunk-X7DLKIQM.js} +4 -4
  116. package/bundle/{chunk-BNBC4T45.js → chunk-XZ4ZBDM5.js} +3 -3
  117. package/bundle/{chunk-24V4A6RP.js → chunk-YI2KSYB4.js} +4 -4
  118. package/bundle/{chunk-37EX63K4.js → chunk-YWHJJHJ2.js} +6998 -3621
  119. package/bundle/chunk-YWHJJHJ2.js.map +7 -0
  120. package/bundle/{chunk-IK4R3RBZ.js → chunk-YZCOA4DC.js} +3 -3
  121. package/bundle/{chunk-2FZJDMAF.js → chunk-ZGNSCJWH.js} +10 -10
  122. package/bundle/{chunk-W726UGI6.js → chunk-ZKMKAO75.js} +3 -3
  123. package/bundle/{chunk-WGWM4IZM.js → chunk-ZT5ZBGWS.js} +4 -4
  124. package/bundle/{chunk-WGWM4IZM.js.map → chunk-ZT5ZBGWS.js.map} +1 -1
  125. package/bundle/{commands-XXFU2ZF7.js → commands-2JQ5YTJX.js} +20 -20
  126. package/bundle/{config-EWDZ234X.js → config-ZEWIM5Z2.js} +8 -7
  127. package/bundle/{config-show-6J33O4TE.js → config-show-WBJPQPRD.js} +5 -5
  128. package/bundle/{context-OCS7HLJP.js → context-V75QNXB5.js} +5 -2
  129. package/bundle/{context-OCS7HLJP.js.map → context-V75QNXB5.js.map} +1 -1
  130. package/bundle/{daemon-LTDAXNA2.js → daemon-W7VQOSZC.js} +7 -7
  131. package/bundle/{delegation-tools-YDTWQMZD.js → delegation-tools-VGTRFQBF.js} +13 -11
  132. package/bundle/{registry-client-VN2MM2HI.js → deploy-5AGIULM2.js} +10 -6
  133. package/bundle/{deploy-lib-import-RGZJ3CGC.js → deploy-lib-import-ZBDYORN4.js} +5 -3
  134. package/bundle/{deps-PHSLIA77.js → deps-VB3S3RLF.js} +21 -19
  135. package/bundle/deps-VB3S3RLF.js.map +7 -0
  136. package/bundle/{direct-api-transport-OAKYQBJR.js → direct-api-transport-YSROTC35.js} +30 -28
  137. package/bundle/direct-api-transport-YSROTC35.js.map +7 -0
  138. package/bundle/{discord-adapter-WUNYPTDE.js → discord-adapter-LKBSIFLV.js} +26 -26
  139. package/bundle/{dist-7HEHHQI2.js → dist-KMK7TZGN.js} +376 -348
  140. package/bundle/dist-KMK7TZGN.js.map +7 -0
  141. package/bundle/{dns-wakeup-F55ALHXJ.js → dns-wakeup-KIURCCFJ.js} +4 -3
  142. package/bundle/{dns-wakeup-F55ALHXJ.js.map → dns-wakeup-KIURCCFJ.js.map} +1 -1
  143. package/bundle/{doctor-probes-3SLIUGKS.js → doctor-probes-46UKIROK.js} +4 -3
  144. package/bundle/{env-schema-MSDP2YBO.js → env-schema-YGHCKX5B.js} +5 -4
  145. package/bundle/{gossip-CS3G3447.js → gossip-VSEY2HSE.js} +7 -6
  146. package/bundle/{guardrails-24XK2COI.js → guardrails-U7M6H2GE.js} +6 -5
  147. package/bundle/{health-check-FRUNRVNQ.js → health-check-ASRLUJE5.js} +6 -2
  148. package/bundle/health-check-ASRLUJE5.js.map +7 -0
  149. package/bundle/{heartbeat-system-G4IFQXT6.js → heartbeat-system-MUXLT4E6.js} +7 -6
  150. package/bundle/{heartbeat-tier3-3ZO3EVXP.js → heartbeat-tier3-636ZMM4E.js} +45 -44
  151. package/bundle/heartbeat-tier3-636ZMM4E.js.map +7 -0
  152. package/bundle/{hook-system-X6INNJGV.js → hook-system-Z4XD6IM5.js} +5 -4
  153. package/bundle/{hotskills-6FQYTJIO.js → hotskills-AOUWVTQB.js} +7 -6
  154. package/bundle/{install-ZAHTZ5M5.js → install-3GGZUN22.js} +23 -20
  155. package/bundle/install-3GGZUN22.js.map +7 -0
  156. package/bundle/{install-manifest-QX7KVDCA.js → install-manifest-624KOB4S.js} +4 -3
  157. package/bundle/{install-manifest-QX7KVDCA.js.map → install-manifest-624KOB4S.js.map} +1 -1
  158. package/bundle/{irc-adapter-IEJQKKJF.js → irc-adapter-SA7GLJGR.js} +5 -4
  159. package/bundle/{irc-adapter-IEJQKKJF.js.map → irc-adapter-SA7GLJGR.js.map} +1 -1
  160. package/bundle/{irc-config-TTWNYFLH.js → irc-config-PG4X2I4M.js} +6 -5
  161. package/bundle/{irc-config-TTWNYFLH.js.map → irc-config-PG4X2I4M.js.map} +1 -1
  162. package/bundle/{kanban-board-J6RO3ZU7.js → kanban-board-4AI5Z6B5.js} +7 -5
  163. package/bundle/{kanban-channel-5EIXBFSA.js → kanban-channel-JMBYWGWD.js} +8 -6
  164. package/bundle/{lazy-require-V6EFUATC.js → lazy-require-GURNBC3C.js} +11 -6
  165. package/bundle/{logger-Y3VILPRH.js → logger-UQJPZMYV.js} +4 -3
  166. package/bundle/{logs-YS3GDURO.js → logs-2WTDLMB5.js} +5 -5
  167. package/bundle/{main-chat-YLZDNQPO.js → main-chat-EID5Y6H2.js} +6 -5
  168. package/bundle/{master-user-Z4M7KCJE.js → master-user-TKA7M2GL.js} +7 -6
  169. package/bundle/{media-utils-P6RZ2K3U.js → media-utils-X3UN342B.js} +44 -43
  170. package/bundle/{media-utils-P6RZ2K3U.js.map → media-utils-X3UN342B.js.map} +2 -2
  171. package/bundle/{message-pipeline-MHEBDJLH.js → message-pipeline-TAWXNEVS.js} +20 -20
  172. package/bundle/meta.json +9264 -8575
  173. package/bundle/{migrate-layout-RJJQLVGR.js → migrate-layout-KEAIIN26.js} +8 -4
  174. package/bundle/migrate-layout-KEAIIN26.js.map +7 -0
  175. package/bundle/{nerve-VZNMFDGY.js → nerve-TC34H4EL.js} +5 -4
  176. package/bundle/{notification-VV2OR6NW.js → notification-JQNVGICN.js} +8 -7
  177. package/bundle/{openrouter-credits-LXC7P4G6.js → openrouter-credits-5Q3EYWE5.js} +5 -4
  178. package/bundle/{openrouter-credits-LXC7P4G6.js.map → openrouter-credits-5Q3EYWE5.js.map} +1 -1
  179. package/bundle/{orc-KC4USP55.js → orc-74Z62W7B.js} +4 -4
  180. package/bundle/{orc-tools-CHRSXSAS.js → orc-tools-GME3DKIN.js} +5 -4
  181. package/bundle/{paths-EDK6KWHG.js → paths-BAUNPLNJ.js} +6 -2
  182. package/bundle/{paths-RZF6WDMG.js → paths-MZC2KU2C.js} +3 -2
  183. package/bundle/{peer-auth-SRONOLNG.js → peer-auth-VRO3JYL5.js} +9 -8
  184. package/bundle/{peer-client-VOF77T6C.js → peer-client-WLK5GZQS.js} +9 -8
  185. package/bundle/{peer-client-VOF77T6C.js.map → peer-client-WLK5GZQS.js.map} +1 -1
  186. package/bundle/{peer-config-FRWLEYQ5.js → peer-config-24WILLCJ.js} +6 -5
  187. package/bundle/{peer-jwt-XY3XRIA2.js → peer-jwt-ZR6RF3XM.js} +6 -5
  188. package/bundle/{peer-transport-UBBXTDRP.js → peer-transport-BK5VHI2M.js} +8 -7
  189. package/bundle/{phase-transport-4NQHZX75.js → phase-transport-7QJM7J6V.js} +18 -16
  190. package/bundle/{reconcile-2EUXJ6W5.js → reconcile-7N7OE2GU.js} +5 -4
  191. package/bundle/{reconciler-FFQGV4DO.js → reconciler-7LOOUK43.js} +13 -11
  192. package/bundle/{reconciler-FFQGV4DO.js.map → reconciler-7LOOUK43.js.map} +1 -1
  193. package/bundle/{restore-NFDE2RG6.js → restore-MENZ3I3K.js} +13 -9
  194. package/bundle/{restore-NFDE2RG6.js.map → restore-MENZ3I3K.js.map} +3 -3
  195. package/bundle/{rollback-MVZ53XS4.js → rollback-JOHY6KWW.js} +5 -5
  196. package/bundle/{chunk-SKY6656M.js → sandbox-runtime-T7RF4WJD.js} +11 -28
  197. package/bundle/{chunk-SKY6656M.js.map → sandbox-runtime-T7RF4WJD.js.map} +1 -1
  198. package/bundle/{self-healer-utils-KD6LV63S.js → self-healer-utils-OR2N6RLD.js} +5 -4
  199. package/bundle/{self-healer-utils-KD6LV63S.js.map → self-healer-utils-OR2N6RLD.js.map} +1 -1
  200. package/bundle/{sha-tracker-2DB4R2TW.js → sha-tracker-BXOLWZJL.js} +5 -4
  201. package/bundle/{skill-session-BPDVA6ZG.js → skill-session-H6EQ4NGN.js} +5 -4
  202. package/bundle/{skill-session-BPDVA6ZG.js.map → skill-session-H6EQ4NGN.js.map} +1 -1
  203. package/bundle/{skill-stats-TPD2NROA.js → skill-stats-7O777ZSZ.js} +6 -5
  204. package/bundle/{skill-watcher-D7QYYYON.js → skill-watcher-ZGLTDPG5.js} +6 -5
  205. package/bundle/{sleep-GH6DLBJJ.js → sleep-3LFZH727.js} +10 -9
  206. package/bundle/{soul-bundle-GXLMDBCC.js → soul-bundle-RQ2YQMJW.js} +10 -9
  207. package/bundle/{spin-4DBYHS3E.js → spin-76K4R6FK.js} +12 -10
  208. package/bundle/{spin-notifications-IKYJPER5.js → spin-notifications-LD46B4K5.js} +7 -5
  209. package/bundle/{spin-notifications-IKYJPER5.js.map → spin-notifications-LD46B4K5.js.map} +1 -1
  210. package/bundle/{spin-types-PLJH3SIK.js → spin-types-MOKTZXGB.js} +5 -4
  211. package/bundle/{src-SUFZ27S5.js → src-6BTCMOD3.js} +4 -4
  212. package/bundle/{sse-parser-anthropic-U7ILHOY5.js → sse-parser-anthropic-NV2CGBIT.js} +5 -4
  213. package/bundle/{sse-parser-anthropic-U7ILHOY5.js.map → sse-parser-anthropic-NV2CGBIT.js.map} +1 -1
  214. package/bundle/{sse-parser-responses-OI73R3AH.js → sse-parser-responses-FC3PFHQ5.js} +5 -4
  215. package/bundle/{sse-parser-responses-OI73R3AH.js.map → sse-parser-responses-FC3PFHQ5.js.map} +1 -1
  216. package/bundle/{ssrf-guard-6GP4QYVA.js → ssrf-guard-E2YPLW6G.js} +5 -4
  217. package/bundle/{ssrf-guard-6GP4QYVA.js.map → ssrf-guard-E2YPLW6G.js.map} +1 -1
  218. package/bundle/{start-JT2BPMSW.js → start-HPO5LYJP.js} +5 -5
  219. package/bundle/start-HPO5LYJP.js.map +7 -0
  220. package/bundle/{stt-KD3AABKG.js → stt-UE7EOYD7.js} +6 -5
  221. package/bundle/{subagent-runtime-LVECAUPV.js → subagent-runtime-4X3UHF4H.js} +6 -5
  222. package/bundle/system-status-PLPWV4RF.js +346 -0
  223. package/bundle/system-status-PLPWV4RF.js.map +7 -0
  224. package/bundle/{task-store-2XRDM3AW.js → task-store-RAFMDQ7N.js} +6 -5
  225. package/bundle/{telegram-adapter-UJ3RYYV6.js → telegram-adapter-PPXKTGOP.js} +35 -35
  226. package/bundle/{tool-registry-YU6WBXPA.js → tool-registry-NKIPNJZ5.js} +25 -23
  227. package/bundle/{tool-sandbox-RNNPDR5M.js → tool-sandbox-DQCP3UTU.js} +6 -5
  228. package/bundle/{transport-config-OK3MZPJK.js → transport-config-SF6GBV47.js} +9 -8
  229. package/bundle/{update-ENNPRW7Y.js → update-QOOGMFSJ.js} +6 -6
  230. package/bundle/{update-check-SJB6GV3A.js → update-check-LPZG3K5P.js} +3 -2
  231. package/bundle/{update-check-SJB6GV3A.js.map → update-check-LPZG3K5P.js.map} +1 -1
  232. package/bundle/{usage-tracker-HRSGC7QC.js → usage-tracker-TBDM4KE6.js} +2 -2
  233. package/bundle/{user-registry-6PUJJ5J2.js → user-registry-OYJVAHDD.js} +6 -5
  234. package/bundle/{wrapper-WLHLG4MI.js → wrapper-W66YICNZ.js} +3 -3
  235. package/bundle/{ws-peer-client-WHW3RJTD.js → ws-peer-client-G5QHOF6K.js} +15 -14
  236. package/bundle/{ws-peer-client-WHW3RJTD.js.map → ws-peer-client-G5QHOF6K.js.map} +2 -2
  237. package/package.json +3 -7
  238. package/scripts/emergency-deploy.sh +11 -8
  239. package/scripts/emergency-update.sh +156 -23
  240. package/templates/config/.env +1 -1
  241. package/templates/config/models.json +13 -0
  242. package/bundle/chunk-37EX63K4.js.map +0 -7
  243. package/bundle/chunk-3QW2K53E.js.map +0 -7
  244. package/bundle/chunk-72T2Q7IG.js.map +0 -7
  245. package/bundle/chunk-7RAGSHSH.js.map +0 -7
  246. package/bundle/chunk-BU7LTI2W.js.map +0 -7
  247. package/bundle/chunk-C3EYYJN3.js.map +0 -7
  248. package/bundle/chunk-CAOIIVFP.js +0 -110
  249. package/bundle/chunk-CAOIIVFP.js.map +0 -7
  250. package/bundle/chunk-EDZGF6BC.js.map +0 -7
  251. package/bundle/chunk-H2K23MOF.js.map +0 -7
  252. package/bundle/chunk-HAZHNBBY.js +0 -156
  253. package/bundle/chunk-HAZHNBBY.js.map +0 -7
  254. package/bundle/chunk-IXKQ4JMX.js.map +0 -7
  255. package/bundle/chunk-JAJ3DUQ2.js +0 -30
  256. package/bundle/chunk-JAJ3DUQ2.js.map +0 -7
  257. package/bundle/chunk-KMFR5AVY.js +0 -45
  258. package/bundle/chunk-KMFR5AVY.js.map +0 -7
  259. package/bundle/chunk-M6Q3IQ4H.js.map +0 -7
  260. package/bundle/chunk-MQJG7OJX.js.map +0 -7
  261. package/bundle/chunk-OY2HAK33.js.map +0 -7
  262. package/bundle/chunk-P5O6QZDC.js.map +0 -7
  263. package/bundle/chunk-RJX45XIC.js.map +0 -7
  264. package/bundle/chunk-S6HEHCCG.js.map +0 -7
  265. package/bundle/chunk-SESM4GBM.js.map +0 -7
  266. package/bundle/chunk-SXNY6HC4.js.map +0 -7
  267. package/bundle/chunk-VJATH7AN.js.map +0 -7
  268. package/bundle/chunk-ZY6DH2S4.js.map +0 -7
  269. package/bundle/deps-PHSLIA77.js.map +0 -7
  270. package/bundle/direct-api-transport-OAKYQBJR.js.map +0 -7
  271. package/bundle/dist-7HEHHQI2.js.map +0 -7
  272. package/bundle/health-check-FRUNRVNQ.js.map +0 -7
  273. package/bundle/heartbeat-tier3-3ZO3EVXP.js.map +0 -7
  274. package/bundle/install-ZAHTZ5M5.js.map +0 -7
  275. package/bundle/migrate-layout-RJJQLVGR.js.map +0 -7
  276. package/bundle/phase-config-V4XETN5F.js +0 -18
  277. package/bundle/sandbox-runtime-WHACQLLN.js +0 -22
  278. package/bundle/start-JT2BPMSW.js.map +0 -7
  279. package/bundle/system-status-XXJWTVJN.js +0 -243
  280. package/bundle/system-status-XXJWTVJN.js.map +0 -7
  281. package/bundle/user-registry-6PUJJ5J2.js.map +0 -7
  282. package/bundle/wrapper-WLHLG4MI.js.map +0 -7
  283. /package/bundle/{agent-api-rate-limit-4GEZ4YN5.js.map → agent-api-rate-limit-VENFGOAD.js.map} +0 -0
  284. /package/bundle/{agent-registry-563P4EUJ.js.map → agent-registry-DL7UT272.js.map} +0 -0
  285. /package/bundle/{bridge-lock-transport-LXCF2IVN.js.map → bridge-lock-transport-BJAMHMXW.js.map} +0 -0
  286. /package/bundle/{browser-2VZOGOGX.js.map → browser-PT54UWSW.js.map} +0 -0
  287. /package/bundle/{capability-WXEA2WFK.js.map → capability-EKPGHQIO.js.map} +0 -0
  288. /package/bundle/{chunk-4PIVWXUJ.js.map → chunk-2ZD7VQRW.js.map} +0 -0
  289. /package/bundle/{chunk-T7TAWGBX.js.map → chunk-52PQM4EZ.js.map} +0 -0
  290. /package/bundle/{chunk-2RGR3LSV.js.map → chunk-5P5HF7IJ.js.map} +0 -0
  291. /package/bundle/{chunk-OOKNHOCB.js.map → chunk-6S3G6GPO.js.map} +0 -0
  292. /package/bundle/{chunk-E7MV7WFT.js.map → chunk-6VTHSN4V.js.map} +0 -0
  293. /package/bundle/{chunk-NGZVJ52F.js.map → chunk-76YN7O3U.js.map} +0 -0
  294. /package/bundle/{chunk-43DKPXTP.js.map → chunk-7LORCJCQ.js.map} +0 -0
  295. /package/bundle/{chunk-HDOFJVFS.js.map → chunk-7OI46MH7.js.map} +0 -0
  296. /package/bundle/{chunk-CB6S3ZRF.js.map → chunk-AFFW2LRY.js.map} +0 -0
  297. /package/bundle/{chunk-TCI6FZTP.js.map → chunk-AHJDG6OM.js.map} +0 -0
  298. /package/bundle/{chunk-YME7NRGP.js.map → chunk-B2TIRDZC.js.map} +0 -0
  299. /package/bundle/{chunk-SSCGWDIC.js.map → chunk-BWJ37KMW.js.map} +0 -0
  300. /package/bundle/{chunk-ULO2PX3T.js.map → chunk-CCZ43JB7.js.map} +0 -0
  301. /package/bundle/{chunk-FVUL44T4.js.map → chunk-CNENVY37.js.map} +0 -0
  302. /package/bundle/{chunk-J5NOL4DB.js.map → chunk-DJOSXXM2.js.map} +0 -0
  303. /package/bundle/{chunk-DNDYD5SL.js.map → chunk-E7DZYCSF.js.map} +0 -0
  304. /package/bundle/{chunk-GCFIK6OB.js.map → chunk-FSGICOCX.js.map} +0 -0
  305. /package/bundle/{chunk-FJF42RZY.js.map → chunk-GHRLO2UL.js.map} +0 -0
  306. /package/bundle/{chunk-7WHXTCVD.js.map → chunk-HWFN7JGU.js.map} +0 -0
  307. /package/bundle/{chunk-KBPVJGD7.js.map → chunk-IXGDDDAB.js.map} +0 -0
  308. /package/bundle/{chunk-YEOZN5IE.js.map → chunk-JRGEEGZF.js.map} +0 -0
  309. /package/bundle/{chunk-56D3Y44D.js.map → chunk-KLG4SCF7.js.map} +0 -0
  310. /package/bundle/{chunk-ASYX43OU.js.map → chunk-LB43Q7G6.js.map} +0 -0
  311. /package/bundle/{chunk-TVSPVZTX.js.map → chunk-LN5MNDSA.js.map} +0 -0
  312. /package/bundle/{chunk-FIAVVKGN.js.map → chunk-MTE32OQH.js.map} +0 -0
  313. /package/bundle/{chunk-MV5KOWOR.js.map → chunk-N3Q3TASM.js.map} +0 -0
  314. /package/bundle/{chunk-IQKADER4.js.map → chunk-O4YBJS2K.js.map} +0 -0
  315. /package/bundle/{chunk-5V4VHKEA.js.map → chunk-OT6HLPEA.js.map} +0 -0
  316. /package/bundle/{chunk-V6CV3QPH.js.map → chunk-OWPQIBAO.js.map} +0 -0
  317. /package/bundle/{chunk-N5VROZ7A.js.map → chunk-QMP2KC4W.js.map} +0 -0
  318. /package/bundle/{chunk-4HNCOQSK.js.map → chunk-QOGZ7BFL.js.map} +0 -0
  319. /package/bundle/{chunk-2LKQV2ND.js.map → chunk-R23FHZRY.js.map} +0 -0
  320. /package/bundle/{chunk-TY26WMQY.js.map → chunk-RCWQ34QR.js.map} +0 -0
  321. /package/bundle/{chunk-ZOCEBV62.js.map → chunk-UU3RLJSD.js.map} +0 -0
  322. /package/bundle/{chunk-WP7FZHMI.js.map → chunk-W2PSVV2T.js.map} +0 -0
  323. /package/bundle/{chunk-V2QIAXWZ.js.map → chunk-WEGFRA6G.js.map} +0 -0
  324. /package/bundle/{chunk-O4GKI3Q3.js.map → chunk-X7DLKIQM.js.map} +0 -0
  325. /package/bundle/{chunk-BNBC4T45.js.map → chunk-XZ4ZBDM5.js.map} +0 -0
  326. /package/bundle/{chunk-24V4A6RP.js.map → chunk-YI2KSYB4.js.map} +0 -0
  327. /package/bundle/{chunk-IK4R3RBZ.js.map → chunk-YZCOA4DC.js.map} +0 -0
  328. /package/bundle/{chunk-2FZJDMAF.js.map → chunk-ZGNSCJWH.js.map} +0 -0
  329. /package/bundle/{chunk-W726UGI6.js.map → chunk-ZKMKAO75.js.map} +0 -0
  330. /package/bundle/{commands-XXFU2ZF7.js.map → commands-2JQ5YTJX.js.map} +0 -0
  331. /package/bundle/{config-EWDZ234X.js.map → config-ZEWIM5Z2.js.map} +0 -0
  332. /package/bundle/{config-show-6J33O4TE.js.map → config-show-WBJPQPRD.js.map} +0 -0
  333. /package/bundle/{daemon-LTDAXNA2.js.map → daemon-W7VQOSZC.js.map} +0 -0
  334. /package/bundle/{delegation-tools-YDTWQMZD.js.map → delegation-tools-VGTRFQBF.js.map} +0 -0
  335. /package/bundle/{deploy-lib-import-RGZJ3CGC.js.map → deploy-5AGIULM2.js.map} +0 -0
  336. /package/bundle/{doctor-probes-3SLIUGKS.js.map → deploy-lib-import-ZBDYORN4.js.map} +0 -0
  337. /package/bundle/{discord-adapter-WUNYPTDE.js.map → discord-adapter-LKBSIFLV.js.map} +0 -0
  338. /package/bundle/{env-schema-MSDP2YBO.js.map → doctor-probes-46UKIROK.js.map} +0 -0
  339. /package/bundle/{gossip-CS3G3447.js.map → env-schema-YGHCKX5B.js.map} +0 -0
  340. /package/bundle/{guardrails-24XK2COI.js.map → gossip-VSEY2HSE.js.map} +0 -0
  341. /package/bundle/{heartbeat-system-G4IFQXT6.js.map → guardrails-U7M6H2GE.js.map} +0 -0
  342. /package/bundle/{hook-system-X6INNJGV.js.map → heartbeat-system-MUXLT4E6.js.map} +0 -0
  343. /package/bundle/{hotskills-6FQYTJIO.js.map → hook-system-Z4XD6IM5.js.map} +0 -0
  344. /package/bundle/{kanban-board-J6RO3ZU7.js.map → hotskills-AOUWVTQB.js.map} +0 -0
  345. /package/bundle/{kanban-channel-5EIXBFSA.js.map → kanban-board-4AI5Z6B5.js.map} +0 -0
  346. /package/bundle/{lazy-require-V6EFUATC.js.map → kanban-channel-JMBYWGWD.js.map} +0 -0
  347. /package/bundle/{logger-Y3VILPRH.js.map → lazy-require-GURNBC3C.js.map} +0 -0
  348. /package/bundle/{main-chat-YLZDNQPO.js.map → logger-UQJPZMYV.js.map} +0 -0
  349. /package/bundle/{logs-YS3GDURO.js.map → logs-2WTDLMB5.js.map} +0 -0
  350. /package/bundle/{master-user-Z4M7KCJE.js.map → main-chat-EID5Y6H2.js.map} +0 -0
  351. /package/bundle/{message-pipeline-MHEBDJLH.js.map → master-user-TKA7M2GL.js.map} +0 -0
  352. /package/bundle/{nerve-VZNMFDGY.js.map → message-pipeline-TAWXNEVS.js.map} +0 -0
  353. /package/bundle/{notification-VV2OR6NW.js.map → nerve-TC34H4EL.js.map} +0 -0
  354. /package/bundle/{orc-tools-CHRSXSAS.js.map → notification-JQNVGICN.js.map} +0 -0
  355. /package/bundle/{orc-KC4USP55.js.map → orc-74Z62W7B.js.map} +0 -0
  356. /package/bundle/{paths-EDK6KWHG.js.map → orc-tools-GME3DKIN.js.map} +0 -0
  357. /package/bundle/{paths-RZF6WDMG.js.map → paths-BAUNPLNJ.js.map} +0 -0
  358. /package/bundle/{peer-auth-SRONOLNG.js.map → paths-MZC2KU2C.js.map} +0 -0
  359. /package/bundle/{peer-config-FRWLEYQ5.js.map → peer-auth-VRO3JYL5.js.map} +0 -0
  360. /package/bundle/{peer-jwt-XY3XRIA2.js.map → peer-config-24WILLCJ.js.map} +0 -0
  361. /package/bundle/{peer-transport-UBBXTDRP.js.map → peer-jwt-ZR6RF3XM.js.map} +0 -0
  362. /package/bundle/{phase-config-V4XETN5F.js.map → peer-transport-BK5VHI2M.js.map} +0 -0
  363. /package/bundle/{phase-transport-4NQHZX75.js.map → phase-transport-7QJM7J6V.js.map} +0 -0
  364. /package/bundle/{reconcile-2EUXJ6W5.js.map → reconcile-7N7OE2GU.js.map} +0 -0
  365. /package/bundle/{registry-client-VN2MM2HI.js.map → rollback-JOHY6KWW.js.map} +0 -0
  366. /package/bundle/{rollback-MVZ53XS4.js.map → sha-tracker-BXOLWZJL.js.map} +0 -0
  367. /package/bundle/{sandbox-runtime-WHACQLLN.js.map → skill-stats-7O777ZSZ.js.map} +0 -0
  368. /package/bundle/{sha-tracker-2DB4R2TW.js.map → skill-watcher-ZGLTDPG5.js.map} +0 -0
  369. /package/bundle/{skill-stats-TPD2NROA.js.map → sleep-3LFZH727.js.map} +0 -0
  370. /package/bundle/{skill-watcher-D7QYYYON.js.map → soul-bundle-RQ2YQMJW.js.map} +0 -0
  371. /package/bundle/{sleep-GH6DLBJJ.js.map → spin-76K4R6FK.js.map} +0 -0
  372. /package/bundle/{soul-bundle-GXLMDBCC.js.map → spin-types-MOKTZXGB.js.map} +0 -0
  373. /package/bundle/{spin-4DBYHS3E.js.map → src-6BTCMOD3.js.map} +0 -0
  374. /package/bundle/{spin-types-PLJH3SIK.js.map → stt-UE7EOYD7.js.map} +0 -0
  375. /package/bundle/{src-SUFZ27S5.js.map → subagent-runtime-4X3UHF4H.js.map} +0 -0
  376. /package/bundle/{stt-KD3AABKG.js.map → task-store-RAFMDQ7N.js.map} +0 -0
  377. /package/bundle/{telegram-adapter-UJ3RYYV6.js.map → telegram-adapter-PPXKTGOP.js.map} +0 -0
  378. /package/bundle/{subagent-runtime-LVECAUPV.js.map → tool-registry-NKIPNJZ5.js.map} +0 -0
  379. /package/bundle/{task-store-2XRDM3AW.js.map → tool-sandbox-DQCP3UTU.js.map} +0 -0
  380. /package/bundle/{tool-registry-YU6WBXPA.js.map → transport-config-SF6GBV47.js.map} +0 -0
  381. /package/bundle/{tool-sandbox-RNNPDR5M.js.map → update-QOOGMFSJ.js.map} +0 -0
  382. /package/bundle/{transport-config-OK3MZPJK.js.map → usage-tracker-TBDM4KE6.js.map} +0 -0
  383. /package/bundle/{update-ENNPRW7Y.js.map → user-registry-OYJVAHDD.js.map} +0 -0
  384. /package/bundle/{usage-tracker-HRSGC7QC.js.map → wrapper-W66YICNZ.js.map} +0 -0
@@ -8,50 +8,50 @@ import {
8
8
  emojiToTag,
9
9
  formatReactionSignal,
10
10
  routeReaction
11
- } from "./chunk-CB6S3ZRF.js";
11
+ } from "./chunk-AFFW2LRY.js";
12
12
  import {
13
13
  cleanResponse,
14
14
  handleInboundMessage,
15
15
  resetAndPrepare
16
- } from "./chunk-M6Q3IQ4H.js";
17
- import "./chunk-LE23VPN3.js";
18
- import "./chunk-ZOCEBV62.js";
19
- import "./chunk-37EX63K4.js";
20
- import "./chunk-JAJ3DUQ2.js";
21
- import "./chunk-7WHXTCVD.js";
22
- import "./chunk-HAZHNBBY.js";
16
+ } from "./chunk-FF2F7ENH.js";
17
+ import "./chunk-63A7ZRIH.js";
18
+ import "./chunk-UU3RLJSD.js";
19
+ import "./chunk-YWHJJHJ2.js";
20
+ import "./chunk-6IB3GVXK.js";
21
+ import "./chunk-HWFN7JGU.js";
23
22
  import "./chunk-YWZPKBO6.js";
24
- import "./chunk-56D3Y44D.js";
25
- import "./chunk-T7TAWGBX.js";
26
- import "./chunk-S7ZIGIR5.js";
27
- import "./chunk-O4GKI3Q3.js";
28
- import "./chunk-4PIVWXUJ.js";
29
- import "./chunk-W726UGI6.js";
23
+ import "./chunk-KLG4SCF7.js";
30
24
  import {
31
25
  init_user_registry,
32
26
  loadUsers
33
- } from "./chunk-43DKPXTP.js";
34
- import "./chunk-HDOFJVFS.js";
27
+ } from "./chunk-7LORCJCQ.js";
28
+ import "./chunk-52PQM4EZ.js";
29
+ import "./chunk-X7DLKIQM.js";
30
+ import "./chunk-2ZD7VQRW.js";
31
+ import "./chunk-R76K6L6H.js";
32
+ import "./chunk-ZKMKAO75.js";
33
+ import "./chunk-7OI46MH7.js";
35
34
  import "./chunk-N5KN3LGD.js";
36
35
  import {
37
36
  getEnv,
38
37
  init_env_schema
39
- } from "./chunk-SSCGWDIC.js";
38
+ } from "./chunk-BWJ37KMW.js";
40
39
  import {
41
40
  init_log_and_swallow,
42
41
  logAndSwallow
43
- } from "./chunk-WP7FZHMI.js";
42
+ } from "./chunk-W2PSVV2T.js";
44
43
  import {
45
44
  init_logger,
46
45
  logDebug,
47
46
  logError,
48
47
  logInfo,
49
48
  logWarn
50
- } from "./chunk-OOKNHOCB.js";
49
+ } from "./chunk-6S3G6GPO.js";
51
50
  import {
52
51
  abtarsHome,
53
52
  init_paths
54
- } from "./chunk-H2K23MOF.js";
53
+ } from "./chunk-7XXISOHU.js";
54
+ import "./chunk-2BXXQG7P.js";
55
55
  import "./chunk-7K2YZTLD.js";
56
56
 
57
57
  // src/platforms/telegram/telegram-adapter.ts
@@ -409,7 +409,7 @@ async function handleModelPickerCallback(data, chatId, api, state, deps) {
409
409
  }
410
410
  if (target.startsWith("p:")) {
411
411
  const agent = target.slice(2);
412
- const { loadTransport, resolveAgent, getAvailableProviders, getModelsForProvider } = await import("./transport-config-OK3MZPJK.js");
412
+ const { loadTransport, resolveAgent, getAvailableProviders, getModelsForProvider } = await import("./transport-config-SF6GBV47.js");
413
413
  const tc = loadTransport();
414
414
  if (!tc) {
415
415
  await api.sendMessage(chatId, "\u274C transport.json not loaded");
@@ -434,7 +434,7 @@ async function handleModelPickerCallback(data, chatId, api, state, deps) {
434
434
  if (target.startsWith("s:")) {
435
435
  const slot = target.slice(2);
436
436
  state._pendingSlot = slot;
437
- const { loadTransport, resolveAgent, getAvailableProviders, getModelsForProvider } = await import("./transport-config-OK3MZPJK.js");
437
+ const { loadTransport, resolveAgent, getAvailableProviders, getModelsForProvider } = await import("./transport-config-SF6GBV47.js");
438
438
  const tc = loadTransport();
439
439
  if (!tc) {
440
440
  await api.sendMessage(chatId, "\u274C transport.json not loaded");
@@ -454,7 +454,7 @@ async function handleModelPickerCallback(data, chatId, api, state, deps) {
454
454
  }
455
455
  } else if (data.startsWith("mslot:")) {
456
456
  const agent = data.slice(6);
457
- const { loadTransport, resolveAgent, getAvailableProviders, getModelsForProvider } = await import("./transport-config-OK3MZPJK.js");
457
+ const { loadTransport, resolveAgent, getAvailableProviders, getModelsForProvider } = await import("./transport-config-SF6GBV47.js");
458
458
  const tc = loadTransport();
459
459
  if (!tc) {
460
460
  await api.sendMessage(chatId, "\u274C transport.json not loaded");
@@ -492,7 +492,7 @@ async function handleModelPickerCallback(data, chatId, api, state, deps) {
492
492
  await api.sendMessage(chatId, `\u{1F50C} Pick provider:`, { reply_markup: { inline_keyboard: buttons } });
493
493
  } else if (data.startsWith("mprov:")) {
494
494
  const [, agent, providerName] = data.split(":");
495
- const { loadTransport, getModelsForProvider, formatRank, formatCost } = await import("./transport-config-OK3MZPJK.js");
495
+ const { loadTransport, getModelsForProvider, formatRank, formatCost } = await import("./transport-config-SF6GBV47.js");
496
496
  const tc = loadTransport();
497
497
  let models = getModelsForProvider(providerName);
498
498
  const providerConfig = tc?.providers[providerName];
@@ -508,7 +508,7 @@ async function handleModelPickerCallback(data, chatId, api, state, deps) {
508
508
  await api.sendMessage(chatId, `\u{1F4CB} Models on ${providerName}:`, { reply_markup: { inline_keyboard: buttons } });
509
509
  } else if (data.startsWith("mpos:")) {
510
510
  const [, , , slot] = data.split(":");
511
- const { loadTransport, resolveAgent, getAvailableProviders, getModelsForProvider } = await import("./transport-config-OK3MZPJK.js");
511
+ const { loadTransport, resolveAgent, getAvailableProviders, getModelsForProvider } = await import("./transport-config-SF6GBV47.js");
512
512
  const tc = loadTransport();
513
513
  if (!tc) {
514
514
  await api.sendMessage(chatId, "\u274C transport.json not loaded");
@@ -539,7 +539,7 @@ async function handleModelPickerCallback(data, chatId, api, state, deps) {
539
539
  await api.sendMessage(chatId, `\u{1F50C} Provider for ${slotLabel}:`, { reply_markup: { inline_keyboard: buttons } });
540
540
  } else if (data.startsWith("mprov2:")) {
541
541
  const [, slot, providerName] = data.split(":");
542
- const { getModelsForProvider, formatRank, formatCost, loadTransport } = await import("./transport-config-OK3MZPJK.js");
542
+ const { getModelsForProvider, formatRank, formatCost, loadTransport } = await import("./transport-config-SF6GBV47.js");
543
543
  const tc = loadTransport();
544
544
  const providerConfig = tc?.providers[providerName];
545
545
  let models = getModelsForProvider(providerName);
@@ -562,7 +562,7 @@ async function handleModelPickerCallback(data, chatId, api, state, deps) {
562
562
  const slot = state._pendingSlot ?? "professor";
563
563
  state._pendingSlot = void 0;
564
564
  state._modelPickerCache = [];
565
- const { loadTransport, writeTransportConfig, resolveAgent, getModelsForProvider, validateProviderReady, formatValidationError } = await import("./transport-config-OK3MZPJK.js");
565
+ const { loadTransport, writeTransportConfig, resolveAgent, getModelsForProvider, validateProviderReady, formatValidationError } = await import("./transport-config-SF6GBV47.js");
566
566
  const tc = loadTransport();
567
567
  if (!tc) {
568
568
  await api.sendMessage(chatId, "\u274C transport.json not loaded");
@@ -606,14 +606,14 @@ async function handleModelPickerCallback(data, chatId, api, state, deps) {
606
606
  if (!tc.agents["professor"]) tc.agents["professor"] = { model: "", provider: "" };
607
607
  if (!tc.agents["professor"].fallbacks) tc.agents["professor"].fallbacks = [];
608
608
  tc.agents["professor"].fallbacks[fbIndex] = { model, provider: providerName };
609
- const { cleanDemotedModels } = await import("./transport-config-OK3MZPJK.js");
609
+ const { cleanDemotedModels } = await import("./transport-config-SF6GBV47.js");
610
610
  cleanDemotedModels(tc, model);
611
611
  writeTransportConfig(tc, `professor fallback ${fbIndex + 1} \u2192 ${model} (${providerName})`);
612
612
  await api.sendMessage(chatId, `\u2713 Fallback ${fbIndex + 1} \u2192 ${model} (${providerName})`);
613
613
  } else {
614
614
  const oldProvider = tc.agents[agentKey]?.provider;
615
615
  tc.agents[agentKey] = { ...tc.agents[agentKey], model, provider: providerName };
616
- const { cleanDemotedModels } = await import("./transport-config-OK3MZPJK.js");
616
+ const { cleanDemotedModels } = await import("./transport-config-SF6GBV47.js");
617
617
  cleanDemotedModels(tc, model);
618
618
  writeTransportConfig(tc, `${agentKey} \u2192 ${model} (${providerName})`);
619
619
  const providerChanged = oldProvider !== providerName;
@@ -890,7 +890,7 @@ var TelegramAdapter = class {
890
890
  await this.setReaction(String(chatId), messageId, "\u{1F440}");
891
891
  const voiceFile = message.voice || message.audio;
892
892
  const audioBuffer = await this.downloadVoice(voiceFile.file_id);
893
- const { transcribeAudio } = await import("./stt-KD3AABKG.js");
893
+ const { transcribeAudio } = await import("./stt-UE7EOYD7.js");
894
894
  const result = await transcribeAudio(audioBuffer, "voice.ogg", this.deps.pipeline.sttConfig);
895
895
  const transcript = result.text;
896
896
  if (!transcript) {
@@ -943,7 +943,7 @@ var TelegramAdapter = class {
943
943
  let mediaPath;
944
944
  if ((hasPhoto || hasDocument) && this.securityGate.authorizeById(String(message.from?.id))) {
945
945
  try {
946
- const { saveInboundMedia } = await import("./media-utils-P6RZ2K3U.js");
946
+ const { saveInboundMedia } = await import("./media-utils-X3UN342B.js");
947
947
  let fileId;
948
948
  let extHint;
949
949
  let claimedMime;
@@ -977,7 +977,7 @@ ${text}`;
977
977
  }
978
978
  if (reply?.photo?.length && !mediaPath && this.securityGate.authorizeById(String(message.from?.id))) {
979
979
  try {
980
- const { saveInboundMedia } = await import("./media-utils-P6RZ2K3U.js");
980
+ const { saveInboundMedia } = await import("./media-utils-X3UN342B.js");
981
981
  const photo = reply.photo[reply.photo.length - 1];
982
982
  const buf = await this.downloadVoice(photo.file_id);
983
983
  const saved = await saveInboundMedia(buf, chatId, { extHint: ".jpg" });
@@ -1036,7 +1036,7 @@ ${text}`;
1036
1036
  const tag = emojiToTag(emojis[0]);
1037
1037
  const updated = this.deps.memory.updateEmotionByPlatformId(loadUsers().byPlatformId.get(`telegram:${chatId}`)?.userId ?? "master", reaction.message_id, score, tag);
1038
1038
  if (updated) logDebug(TAG4, `Emotion score ${score} set on platform msg ${reaction.message_id}`);
1039
- const { getRecalledIdsForMessage } = await import("./message-pipeline-MHEBDJLH.js");
1039
+ const { getRecalledIdsForMessage } = await import("./message-pipeline-TAWXNEVS.js");
1040
1040
  const recalledIds = getRecalledIdsForMessage(reaction.message_id);
1041
1041
  if (recalledIds && recalledIds.length > 0) {
1042
1042
  if (score < 0) {
@@ -1059,7 +1059,7 @@ ${text}`;
1059
1059
  } else {
1060
1060
  const reactionUser = loadUsers().byPlatformId.get("telegram:" + user.id)?.userId ?? "unknown";
1061
1061
  const activeId = this.deps.sessionManager.getActiveSessionId(reactionUser, "telegram");
1062
- const { spin } = await import("./spin-4DBYHS3E.js");
1062
+ const { spin } = await import("./spin-76K4R6FK.js");
1063
1063
  const entry = spin.getSessionById(activeId);
1064
1064
  if (entry?.busy) {
1065
1065
  entry.queue.push({ msg: { userId: reactionUser, channelId: String(chatId), senderName, senderId: String(user.id), text: signal, messageId: reaction.message_id, platform: "telegram", timestamp: Date.now(), isGroup: false, isVoice: false }, adapter: this });
@@ -1092,4 +1092,4 @@ export {
1092
1092
  TELEGRAM_CAPABILITIES,
1093
1093
  TelegramAdapter
1094
1094
  };
1095
- //# sourceMappingURL=telegram-adapter-UJ3RYYV6.js.map
1095
+ //# sourceMappingURL=telegram-adapter-PPXKTGOP.js.map
@@ -13,30 +13,32 @@ import {
13
13
  setPeerActivityCallback,
14
14
  setSeatbelt,
15
15
  setSendDocument
16
- } from "./chunk-MQJG7OJX.js";
17
- import "./chunk-JAJ3DUQ2.js";
18
- import "./chunk-KBPVJGD7.js";
16
+ } from "./chunk-RJ2OUNFU.js";
17
+ import "./chunk-6IB3GVXK.js";
18
+ import "./chunk-QMP2KC4W.js";
19
+ import "./chunk-IXGDDDAB.js";
19
20
  import "./chunk-VOLAZHA2.js";
20
- import "./chunk-5V4VHKEA.js";
21
- import "./chunk-ULO2PX3T.js";
22
- import "./chunk-N5VROZ7A.js";
23
- import "./chunk-GCFIK6OB.js";
21
+ import "./chunk-DMDX35YT.js";
22
+ import "./chunk-FSGICOCX.js";
23
+ import "./chunk-OT6HLPEA.js";
24
+ import "./chunk-CCZ43JB7.js";
24
25
  import "./chunk-MV6CJFWR.js";
25
- import "./chunk-SESM4GBM.js";
26
- import "./chunk-3QW2K53E.js";
27
- import "./chunk-7RAGSHSH.js";
28
- import "./chunk-T7TAWGBX.js";
29
- import "./chunk-BNBC4T45.js";
30
- import "./chunk-O4GKI3Q3.js";
31
- import "./chunk-4PIVWXUJ.js";
32
- import "./chunk-S6HEHCCG.js";
33
- import "./chunk-YME7NRGP.js";
34
- import "./chunk-TY26WMQY.js";
35
- import "./chunk-43DKPXTP.js";
36
- import "./chunk-SSCGWDIC.js";
37
- import "./chunk-WP7FZHMI.js";
38
- import "./chunk-OOKNHOCB.js";
39
- import "./chunk-H2K23MOF.js";
26
+ import "./chunk-MPQ2PJQX.js";
27
+ import "./chunk-4IGLXZCC.js";
28
+ import "./chunk-RCWQ34QR.js";
29
+ import "./chunk-7LORCJCQ.js";
30
+ import "./chunk-52PQM4EZ.js";
31
+ import "./chunk-XZ4ZBDM5.js";
32
+ import "./chunk-X7DLKIQM.js";
33
+ import "./chunk-2ZD7VQRW.js";
34
+ import "./chunk-RO3TAYBR.js";
35
+ import "./chunk-GFAJSPMD.js";
36
+ import "./chunk-B2TIRDZC.js";
37
+ import "./chunk-BWJ37KMW.js";
38
+ import "./chunk-W2PSVV2T.js";
39
+ import "./chunk-6S3G6GPO.js";
40
+ import "./chunk-7XXISOHU.js";
41
+ import "./chunk-2BXXQG7P.js";
40
42
  import "./chunk-7K2YZTLD.js";
41
43
  export {
42
44
  executeToolCall,
@@ -52,4 +54,4 @@ export {
52
54
  setSeatbelt,
53
55
  setSendDocument
54
56
  };
55
- //# sourceMappingURL=tool-registry-YU6WBXPA.js.map
57
+ //# sourceMappingURL=tool-registry-NKIPNJZ5.js.map
@@ -6,10 +6,11 @@ import {
6
6
  buildPolicy,
7
7
  checkPath,
8
8
  checkTool
9
- } from "./chunk-5V4VHKEA.js";
10
- import "./chunk-WP7FZHMI.js";
11
- import "./chunk-OOKNHOCB.js";
12
- import "./chunk-H2K23MOF.js";
9
+ } from "./chunk-OT6HLPEA.js";
10
+ import "./chunk-W2PSVV2T.js";
11
+ import "./chunk-6S3G6GPO.js";
12
+ import "./chunk-7XXISOHU.js";
13
+ import "./chunk-2BXXQG7P.js";
13
14
  import "./chunk-7K2YZTLD.js";
14
15
  export {
15
16
  ToolLoopGuard,
@@ -18,4 +19,4 @@ export {
18
19
  checkPath,
19
20
  checkTool
20
21
  };
21
- //# sourceMappingURL=tool-sandbox-RNNPDR5M.js.map
22
+ //# sourceMappingURL=tool-sandbox-DQCP3UTU.js.map
@@ -23,13 +23,14 @@ import {
23
23
  validateAtStartup,
24
24
  validateProviderReady,
25
25
  writeTransportConfig
26
- } from "./chunk-4HNCOQSK.js";
27
- import "./chunk-V6CV3QPH.js";
28
- import "./chunk-4PIVWXUJ.js";
29
- import "./chunk-SSCGWDIC.js";
30
- import "./chunk-WP7FZHMI.js";
31
- import "./chunk-OOKNHOCB.js";
32
- import "./chunk-H2K23MOF.js";
26
+ } from "./chunk-QOGZ7BFL.js";
27
+ import "./chunk-OWPQIBAO.js";
28
+ import "./chunk-2ZD7VQRW.js";
29
+ import "./chunk-BWJ37KMW.js";
30
+ import "./chunk-W2PSVV2T.js";
31
+ import "./chunk-6S3G6GPO.js";
32
+ import "./chunk-7XXISOHU.js";
33
+ import "./chunk-2BXXQG7P.js";
33
34
  import "./chunk-7K2YZTLD.js";
34
35
  export {
35
36
  cleanDemotedModels,
@@ -55,4 +56,4 @@ export {
55
56
  validateProviderReady,
56
57
  writeTransportConfig
57
58
  };
58
- //# sourceMappingURL=transport-config-OK3MZPJK.js.map
59
+ //# sourceMappingURL=transport-config-SF6GBV47.js.map
@@ -2,13 +2,13 @@
2
2
  import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
3
3
  import {
4
4
  update
5
- } from "./chunk-72T2Q7IG.js";
6
- import "./chunk-KMFR5AVY.js";
7
- import "./chunk-TVSPVZTX.js";
8
- import "./chunk-EDZGF6BC.js";
9
- import "./chunk-C3EYYJN3.js";
5
+ } from "./chunk-JHLKEUHE.js";
6
+ import "./chunk-MJACYH7A.js";
7
+ import "./chunk-LN5MNDSA.js";
8
+ import "./chunk-QJPDBJDP.js";
9
+ import "./chunk-2BXXQG7P.js";
10
10
  import "./chunk-7K2YZTLD.js";
11
11
  export {
12
12
  update
13
13
  };
14
- //# sourceMappingURL=update-ENNPRW7Y.js.map
14
+ //# sourceMappingURL=update-QOOGMFSJ.js.map
@@ -3,7 +3,8 @@
3
3
  import {
4
4
  abtarsHome,
5
5
  init_paths
6
- } from "./chunk-H2K23MOF.js";
6
+ } from "./chunk-7XXISOHU.js";
7
+ import "./chunk-2BXXQG7P.js";
7
8
  import "./chunk-7K2YZTLD.js";
8
9
 
9
10
  // src/components/update-check.ts
@@ -78,4 +79,4 @@ function checkForUpdate(pkg, currentVersion, opts) {
78
79
  export {
79
80
  checkForUpdate
80
81
  };
81
- //# sourceMappingURL=update-check-SJB6GV3A.js.map
82
+ //# sourceMappingURL=update-check-LPZG3K5P.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/components/update-check.ts"],
4
4
  "sourcesContent": ["/**\n * update-check.ts \u2014 Check npm registry for newer abtars versions (#440, #588, #806).\n * Once-per-release notification. No daily nagging. Env: UPDATE_NOTIFICATION=OFF to disable.\n */\n\nimport { execFileSync } from \"node:child_process\";\nimport { readFileSync, writeFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { abtarsHome } from \"../paths.js\";\n\nconst DEFAULT_TTL_MS = 6 * 60 * 60_000; // 6h\n\ninterface CacheData {\n ts: number;\n latest: string;\n lastNotifiedVersion?: string;\n}\n\nfunction cachePath(pkg?: string): string {\n const dir = join(abtarsHome(), \"state\");\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n return join(dir, pkg ? `update-check-${pkg}.json` : \"update-check.json\");\n}\n\nfunction readCache(ttlMs: number, pkg?: string): CacheData | null {\n try {\n const data = JSON.parse(readFileSync(cachePath(pkg), \"utf-8\")) as CacheData;\n if (Date.now() - data.ts < ttlMs) return data;\n } catch { /* missing or corrupt */ }\n return null;\n}\n\nfunction writeCache(data: CacheData, pkg?: string): void {\n try { writeFileSync(cachePath(pkg), JSON.stringify(data), \"utf-8\"); } catch { /* non-critical */ }\n}\n\n/** Fetch the appropriate version from npm based on whether we're running a prerelease. */\nfunction fetchLatest(pkg: string, currentVersion: string): string | null {\n try {\n // If running a prerelease, compare against alpha tag\n if (currentVersion.includes(\"-alpha\") || currentVersion.includes(\"-beta\")) {\n const raw = execFileSync(\"npm\", [\"view\", pkg, \"dist-tags\", \"--json\"], { encoding: \"utf-8\", timeout: 10_000 }).trim();\n const tags = JSON.parse(raw) as Record<string, string>;\n return tags.alpha ?? tags.latest ?? null;\n }\n return execFileSync(\"npm\", [\"view\", pkg, \"version\"], { encoding: \"utf-8\", timeout: 10_000 }).trim();\n } catch {\n return null;\n }\n}\n\n/** True if a is newer than b. Handles prerelease: strips -alpha.N, compares base, then prerelease number. */\nfunction isNewer(a: string, b: string): boolean {\n const parseVer = (v: string): { parts: number[]; pre: number | null } => {\n const [base, preStr] = v.split(\"-alpha.\");\n return { parts: (base ?? \"\").split(\".\").map(Number), pre: preStr != null ? Number(preStr) : null };\n };\n const va = parseVer(a);\n const vb = parseVer(b);\n // Compare base version\n for (let i = 0; i < 3; i++) {\n if ((va.parts[i] ?? 0) > (vb.parts[i] ?? 0)) return true;\n if ((va.parts[i] ?? 0) < (vb.parts[i] ?? 0)) return false;\n }\n // Same base \u2014 compare prerelease (null = stable > any alpha)\n if (va.pre === null && vb.pre !== null) return true; // stable > alpha\n if (va.pre !== null && vb.pre === null) return false; // alpha < stable\n if (va.pre !== null && vb.pre !== null) return va.pre > vb.pre;\n return false;\n}\n\nexport interface UpdateCheckResult {\n current: string;\n latest: string;\n updateAvailable: boolean;\n shouldNotify: boolean;\n}\n\n/**\n * Check if a newer version is available on npm.\n * Returns null if check is skipped (cached fresh / offline / npm not found / notifications off).\n */\nexport function checkForUpdate(pkg: string, currentVersion: string, opts?: { ttlMs?: number }): UpdateCheckResult | null {\n // Env kill-switch\n if (process.env.UPDATE_NOTIFICATION === \"OFF\") return null;\n\n const ttlMs = opts?.ttlMs ?? DEFAULT_TTL_MS;\n const cache = readCache(ttlMs, pkg);\n const latest = cache?.latest ?? fetchLatest(pkg, currentVersion);\n if (!latest) return null;\n\n const updateAvailable = isNewer(latest, currentVersion);\n // Notify once per release: only if latest !== lastNotifiedVersion\n const shouldNotify = updateAvailable && cache?.lastNotifiedVersion !== latest;\n\n const newCache: CacheData = {\n ts: Date.now(),\n latest,\n lastNotifiedVersion: shouldNotify ? latest : cache?.lastNotifiedVersion,\n };\n if (!cache || shouldNotify) writeCache(newCache, pkg);\n\n return { current: currentVersion, latest, updateAvailable, shouldNotify };\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -7,7 +7,7 @@ import {
7
7
  readUsage,
8
8
  recordUsage,
9
9
  resetUsage
10
- } from "./chunk-2RGR3LSV.js";
10
+ } from "./chunk-5P5HF7IJ.js";
11
11
  import "./chunk-7K2YZTLD.js";
12
12
  export {
13
13
  flushUsage,
@@ -17,4 +17,4 @@ export {
17
17
  recordUsage,
18
18
  resetUsage
19
19
  };
20
- //# sourceMappingURL=usage-tracker-HRSGC7QC.js.map
20
+ //# sourceMappingURL=usage-tracker-TBDM4KE6.js.map
@@ -5,10 +5,11 @@ import {
5
5
  init_user_registry,
6
6
  loadUsers,
7
7
  setUserRegistryOverride
8
- } from "./chunk-43DKPXTP.js";
9
- import "./chunk-SSCGWDIC.js";
10
- import "./chunk-OOKNHOCB.js";
11
- import "./chunk-H2K23MOF.js";
8
+ } from "./chunk-7LORCJCQ.js";
9
+ import "./chunk-BWJ37KMW.js";
10
+ import "./chunk-6S3G6GPO.js";
11
+ import "./chunk-7XXISOHU.js";
12
+ import "./chunk-2BXXQG7P.js";
12
13
  import "./chunk-7K2YZTLD.js";
13
14
  init_user_registry();
14
15
  export {
@@ -16,4 +17,4 @@ export {
16
17
  loadUsers,
17
18
  setUserRegistryOverride
18
19
  };
19
- //# sourceMappingURL=user-registry-6PUJJ5J2.js.map
20
+ //# sourceMappingURL=user-registry-OYJVAHDD.js.map
@@ -11,8 +11,8 @@ import {
11
11
  import_websocket_server,
12
12
  init_wrapper,
13
13
  wrapper_default
14
- } from "./chunk-WGWM4IZM.js";
15
- import "./chunk-S7ZIGIR5.js";
14
+ } from "./chunk-ZT5ZBGWS.js";
15
+ import "./chunk-R76K6L6H.js";
16
16
  import "./chunk-7K2YZTLD.js";
17
17
  init_wrapper();
18
18
  var export_PerMessageDeflate = import_permessage_deflate.default;
@@ -34,4 +34,4 @@ export {
34
34
  export_extension as extension,
35
35
  export_subprotocol as subprotocol
36
36
  };
37
- //# sourceMappingURL=wrapper-WLHLG4MI.js.map
37
+ //# sourceMappingURL=wrapper-W66YICNZ.js.map
@@ -5,26 +5,27 @@ import {
5
5
  mintPeerJwt,
6
6
  signBody,
7
7
  tlsOptions
8
- } from "./chunk-FJF42RZY.js";
9
- import {
10
- init_wrapper,
11
- wrapper_default
12
- } from "./chunk-WGWM4IZM.js";
13
- import "./chunk-S7ZIGIR5.js";
8
+ } from "./chunk-GHRLO2UL.js";
14
9
  import {
15
10
  init_peer_config,
16
11
  loadPeerConfig
17
- } from "./chunk-O4GKI3Q3.js";
18
- import "./chunk-4PIVWXUJ.js";
19
- import "./chunk-IQKADER4.js";
20
- import "./chunk-WP7FZHMI.js";
12
+ } from "./chunk-X7DLKIQM.js";
13
+ import "./chunk-2ZD7VQRW.js";
14
+ import {
15
+ init_wrapper,
16
+ wrapper_default
17
+ } from "./chunk-ZT5ZBGWS.js";
18
+ import "./chunk-R76K6L6H.js";
19
+ import "./chunk-O4YBJS2K.js";
20
+ import "./chunk-W2PSVV2T.js";
21
21
  import {
22
22
  init_logger,
23
23
  logDebug,
24
24
  logInfo,
25
25
  logWarn
26
- } from "./chunk-OOKNHOCB.js";
27
- import "./chunk-H2K23MOF.js";
26
+ } from "./chunk-6S3G6GPO.js";
27
+ import "./chunk-7XXISOHU.js";
28
+ import "./chunk-2BXXQG7P.js";
28
29
  import {
29
30
  __esm
30
31
  } from "./chunk-7K2YZTLD.js";
@@ -150,7 +151,7 @@ var init_ws_peer_client = __esm({
150
151
  clearTimeout(this.pongTimer);
151
152
  this.pongTimer = null;
152
153
  }
153
- for (const [id, p] of this.pending) {
154
+ for (const [, p] of this.pending) {
154
155
  clearTimeout(p.timer);
155
156
  p.reject(new Error("WS connection closed"));
156
157
  }
@@ -169,4 +170,4 @@ init_ws_peer_client();
169
170
  export {
170
171
  WsPeerClient
171
172
  };
172
- //# sourceMappingURL=ws-peer-client-WHW3RJTD.js.map
173
+ //# sourceMappingURL=ws-peer-client-G5QHOF6K.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/components/peer-transport/ws-peer-client.ts"],
4
- "sourcesContent": ["/**\n * ws-peer-client.ts \u2014 Persistent outbound WebSocket to a peer (#972).\n * KP connects OUT to Molty. Molty pushes callbacks/channels down the WS.\n */\nimport WebSocket from \"ws\";\nimport { randomUUID } from \"node:crypto\";\nimport { mintPeerJwt, signBody, tlsOptions } from \"./peer-auth.js\";\nimport { loadPeerConfig, type PeerEntry } from \"../peer-config.js\";\nimport { logInfo, logWarn, logDebug } from \"../logger.js\";\n\nconst TAG = \"ws-peer\";\nconst PING_INTERVAL_MS = 30_000;\nconst PONG_TIMEOUT_MS = 10_000;\nconst MAX_BACKOFF_MS = 30_000;\nconst REQUEST_TIMEOUT_MS = 30_000;\n\ntype PushHandler = (method: string, payload: unknown) => void;\ntype PendingRequest = { resolve: (v: unknown) => void; reject: (e: Error) => void; timer: ReturnType<typeof setTimeout> };\n\nexport class WsPeerClient {\n private ws: WebSocket | null = null;\n private peerName: string;\n private entry: PeerEntry;\n private backoff = 1000;\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n private pingTimer: ReturnType<typeof setInterval> | null = null;\n private pongTimer: ReturnType<typeof setTimeout> | null = null;\n private pushHandler: PushHandler | null = null;\n private pending = new Map<string, PendingRequest>();\n private destroyed = false;\n\n constructor(peerName: string, entry: PeerEntry) {\n this.peerName = peerName;\n this.entry = entry;\n }\n\n onPush(handler: PushHandler): void { this.pushHandler = handler; }\n\n connect(): void {\n if (this.destroyed) return;\n const url = `wss://${this.entry.host}:${this.entry.port}/v1/ws`;\n const jwt = mintPeerJwt(this.peerName);\n const tls = tlsOptions(this.entry);\n\n this.ws = new WebSocket(url, {\n headers: { Authorization: `Bearer ${jwt}` },\n ...tls,\n } as any);\n\n this.ws.on(\"open\", () => {\n logInfo(TAG, `Connected to ${this.peerName}`);\n this.backoff = 1000;\n this.startPing();\n });\n\n this.ws.on(\"message\", (data) => this.handleMessage(data.toString()));\n\n this.ws.on(\"pong\", () => {\n if (this.pongTimer) { clearTimeout(this.pongTimer); this.pongTimer = null; }\n });\n\n this.ws.on(\"close\", () => {\n this.cleanup();\n if (!this.destroyed) this.scheduleReconnect();\n });\n\n this.ws.on(\"error\", (err) => {\n logDebug(TAG, `WS error (${this.peerName}): ${err.message}`);\n this.ws?.close();\n });\n }\n\n async send(method: string, payload: unknown): Promise<unknown> {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n throw new Error(`WS not connected to ${this.peerName}`);\n }\n const id = randomUUID();\n const config = loadPeerConfig();\n const body = JSON.stringify(payload);\n const signed = await signBody(this.peerName, body, config.self.signingKey, config.self.name);\n\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n this.pending.delete(id);\n reject(new Error(`WS request timeout (${this.peerName}/${method})`));\n }, REQUEST_TIMEOUT_MS);\n this.pending.set(id, { resolve, reject, timer });\n this.ws!.send(JSON.stringify({ type: \"request\", id, method, payload: JSON.parse(signed) }));\n });\n }\n\n get connected(): boolean { return this.ws?.readyState === WebSocket.OPEN; }\n\n destroy(): void {\n this.destroyed = true;\n if (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n this.cleanup();\n this.ws?.close();\n }\n\n private handleMessage(raw: string): void {\n try {\n const msg = JSON.parse(raw);\n if (msg.type === \"response\" && msg.id && this.pending.has(msg.id)) {\n const p = this.pending.get(msg.id)!;\n this.pending.delete(msg.id);\n clearTimeout(p.timer);\n p.resolve(msg.payload);\n } else if (msg.type === \"push\") {\n this.pushHandler?.(msg.method, msg.payload);\n }\n } catch { /* malformed \u2014 ignore */ }\n }\n\n private startPing(): void {\n this.pingTimer = setInterval(() => {\n if (this.ws?.readyState !== WebSocket.OPEN) return;\n this.ws.ping();\n this.pongTimer = setTimeout(() => {\n logWarn(TAG, `No pong from ${this.peerName} \u2014 closing`);\n this.ws?.terminate();\n }, PONG_TIMEOUT_MS);\n }, PING_INTERVAL_MS);\n }\n\n private cleanup(): void {\n if (this.pingTimer) { clearInterval(this.pingTimer); this.pingTimer = null; }\n if (this.pongTimer) { clearTimeout(this.pongTimer); this.pongTimer = null; }\n // Reject all pending requests\n for (const [id, p] of this.pending) {\n clearTimeout(p.timer);\n p.reject(new Error(\"WS connection closed\"));\n }\n this.pending.clear();\n }\n\n private scheduleReconnect(): void {\n const jitter = this.backoff * (0.8 + Math.random() * 0.4); // \u00B120%\n logDebug(TAG, `Reconnecting to ${this.peerName} in ${Math.round(jitter)}ms`);\n this.reconnectTimer = setTimeout(() => this.connect(), jitter);\n this.backoff = Math.min(this.backoff * 2, MAX_BACKOFF_MS);\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * ws-peer-client.ts \u2014 Persistent outbound WebSocket to a peer (#972).\n * KP connects OUT to Molty. Molty pushes callbacks/channels down the WS.\n */\nimport WebSocket from \"ws\";\nimport { randomUUID } from \"node:crypto\";\nimport { mintPeerJwt, signBody, tlsOptions } from \"./peer-auth.js\";\nimport { loadPeerConfig, type PeerEntry } from \"../peer-config.js\";\nimport { logInfo, logWarn, logDebug } from \"../logger.js\";\n\nconst TAG = \"ws-peer\";\nconst PING_INTERVAL_MS = 30_000;\nconst PONG_TIMEOUT_MS = 10_000;\nconst MAX_BACKOFF_MS = 30_000;\nconst REQUEST_TIMEOUT_MS = 30_000;\n\ntype PushHandler = (method: string, payload: unknown) => void;\ntype PendingRequest = { resolve: (v: unknown) => void; reject: (e: Error) => void; timer: ReturnType<typeof setTimeout> };\n\nexport class WsPeerClient {\n private ws: WebSocket | null = null;\n private peerName: string;\n private entry: PeerEntry;\n private backoff = 1000;\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n private pingTimer: ReturnType<typeof setInterval> | null = null;\n private pongTimer: ReturnType<typeof setTimeout> | null = null;\n private pushHandler: PushHandler | null = null;\n private pending = new Map<string, PendingRequest>();\n private destroyed = false;\n\n constructor(peerName: string, entry: PeerEntry) {\n this.peerName = peerName;\n this.entry = entry;\n }\n\n onPush(handler: PushHandler): void { this.pushHandler = handler; }\n\n connect(): void {\n if (this.destroyed) return;\n const url = `wss://${this.entry.host}:${this.entry.port}/v1/ws`;\n const jwt = mintPeerJwt(this.peerName);\n const tls = tlsOptions(this.entry);\n\n this.ws = new WebSocket(url, {\n headers: { Authorization: `Bearer ${jwt}` },\n ...tls,\n } as any);\n\n this.ws.on(\"open\", () => {\n logInfo(TAG, `Connected to ${this.peerName}`);\n this.backoff = 1000;\n this.startPing();\n });\n\n this.ws.on(\"message\", (data) => this.handleMessage(data.toString()));\n\n this.ws.on(\"pong\", () => {\n if (this.pongTimer) { clearTimeout(this.pongTimer); this.pongTimer = null; }\n });\n\n this.ws.on(\"close\", () => {\n this.cleanup();\n if (!this.destroyed) this.scheduleReconnect();\n });\n\n this.ws.on(\"error\", (err) => {\n logDebug(TAG, `WS error (${this.peerName}): ${err.message}`);\n this.ws?.close();\n });\n }\n\n async send(method: string, payload: unknown): Promise<unknown> {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n throw new Error(`WS not connected to ${this.peerName}`);\n }\n const id = randomUUID();\n const config = loadPeerConfig();\n const body = JSON.stringify(payload);\n const signed = await signBody(this.peerName, body, config.self.signingKey, config.self.name);\n\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n this.pending.delete(id);\n reject(new Error(`WS request timeout (${this.peerName}/${method})`));\n }, REQUEST_TIMEOUT_MS);\n this.pending.set(id, { resolve, reject, timer });\n this.ws!.send(JSON.stringify({ type: \"request\", id, method, payload: JSON.parse(signed) }));\n });\n }\n\n get connected(): boolean { return this.ws?.readyState === WebSocket.OPEN; }\n\n destroy(): void {\n this.destroyed = true;\n if (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n this.cleanup();\n this.ws?.close();\n }\n\n private handleMessage(raw: string): void {\n try {\n const msg = JSON.parse(raw);\n if (msg.type === \"response\" && msg.id && this.pending.has(msg.id)) {\n const p = this.pending.get(msg.id)!;\n this.pending.delete(msg.id);\n clearTimeout(p.timer);\n p.resolve(msg.payload);\n } else if (msg.type === \"push\") {\n this.pushHandler?.(msg.method, msg.payload);\n }\n } catch { /* malformed \u2014 ignore */ }\n }\n\n private startPing(): void {\n this.pingTimer = setInterval(() => {\n if (this.ws?.readyState !== WebSocket.OPEN) return;\n this.ws.ping();\n this.pongTimer = setTimeout(() => {\n logWarn(TAG, `No pong from ${this.peerName} \u2014 closing`);\n this.ws?.terminate();\n }, PONG_TIMEOUT_MS);\n }, PING_INTERVAL_MS);\n }\n\n private cleanup(): void {\n if (this.pingTimer) { clearInterval(this.pingTimer); this.pingTimer = null; }\n if (this.pongTimer) { clearTimeout(this.pongTimer); this.pongTimer = null; }\n // Reject all pending requests\n for (const [, p] of this.pending) {\n clearTimeout(p.timer);\n p.reject(new Error(\"WS connection closed\"));\n }\n this.pending.clear();\n }\n\n private scheduleReconnect(): void {\n const jitter = this.backoff * (0.8 + Math.random() * 0.4); // \u00B120%\n logDebug(TAG, `Reconnecting to ${this.peerName} in ${Math.round(jitter)}ms`);\n this.reconnectTimer = setTimeout(() => this.connect(), jitter);\n this.backoff = Math.min(this.backoff * 2, MAX_BACKOFF_MS);\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "abtars",
3
- "version": "0.3.3",
3
+ "version": "0.3.4-alpha.1",
4
4
  "description": "Standalone agent bridging Telegram to Kiro CLI via tmux/ACP",
5
5
  "type": "module",
6
6
  "main": "bundle/abtars.js",
7
7
  "scripts": {
8
8
  "build": "tsc && rm -rf dist/components/dashboard/public && cp -r src/components/dashboard/public dist/components/dashboard/public && git log -1 --format='{\"hash\":\"%h\",\"date\":\"%ci\"}' > dist/build-info.json",
9
- "bundle": "rm -rf bundle && cd ../abmind && npm run build && cd ../abtars && node esbuild.config.js && rm -rf bundle/public && cp -r src/components/dashboard/public bundle/public && cp -r agents bundle/agents",
9
+ "bundle": "rm -rf bundle && node esbuild.config.js && rm -rf bundle/public && cp -r src/components/dashboard/public bundle/public && ([ -d agents ] && cp -r agents bundle/agents || true)",
10
10
  "dev": "node --import tsx src/main.ts",
11
11
  "start": "node dist/main.js",
12
12
  "typecheck": "tsc --noEmit",
@@ -55,9 +55,5 @@
55
55
  "CHANGELOG.md",
56
56
  "install-manifest.json",
57
57
  "config/"
58
- ],
59
- "optionalDependencies": {
60
- "better-sqlite3": "^12.10.0",
61
- "cloakbrowser": "^0.4.3"
62
- }
58
+ ]
63
59
  }
@@ -51,17 +51,20 @@ else
51
51
  fi
52
52
  sleep 2
53
53
 
54
- # 5. Atomic swap (no gap where app/ is missing)
54
+ # 5. Build into releasesDir staging, then swap app/ symlink
55
+ RELEASES_DIR="${ABTARS_RELEASES:-$HOME/.abtars-releases}"
55
56
  echo "Deploying..."
56
- rm -rf "$HOME_DIR/app.staging"
57
- mkdir -p "$HOME_DIR/app.staging/bundle"
58
- cp -r "$SRC_DIR/bundle/"* "$HOME_DIR/app.staging/bundle/"
59
- mkdir -p "$HOME_DIR/app.staging/bundle/node_modules/abmind"
60
- cp -r "$ABMIND_SRC/dist" "$HOME_DIR/app.staging/bundle/node_modules/abmind/"
61
- cp "$ABMIND_SRC/package.json" "$HOME_DIR/app.staging/bundle/node_modules/abmind/"
57
+ rm -rf "$RELEASES_DIR/app.staging"
58
+ mkdir -p "$RELEASES_DIR/app.staging/bundle"
59
+ cp -r "$SRC_DIR/bundle/"* "$RELEASES_DIR/app.staging/bundle/"
60
+ mkdir -p "$RELEASES_DIR/app.staging/bundle/node_modules/abmind"
61
+ cp -r "$ABMIND_SRC/dist" "$RELEASES_DIR/app.staging/bundle/node_modules/abmind/"
62
+ cp "$ABMIND_SRC/package.json" "$RELEASES_DIR/app.staging/bundle/node_modules/abmind/"
62
63
  rm -rf "$HOME_DIR/app.prev"
63
64
  [ -d "$HOME_DIR/app" ] && mv "$HOME_DIR/app" "$HOME_DIR/app.prev"
64
- mv "$HOME_DIR/app.staging" "$HOME_DIR/app"
65
+ # cp+rm instead of mv: staging is in releasesDir, app/ stays in HOME_DIR (cross-fs safe)
66
+ cp -r "$RELEASES_DIR/app.staging" "$HOME_DIR/app"
67
+ rm -rf "$RELEASES_DIR/app.staging"
65
68
  [ -d "$HOME_DIR/app.prev/bundle/node_modules" ] && mv "$HOME_DIR/app.prev/bundle/node_modules" "$HOME_DIR/app/bundle/node_modules"
66
69
 
67
70
  # 6. Write minimal manifest