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
@@ -2,36 +2,37 @@
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
  require_ws
5
- } from "./chunk-LE23VPN3.js";
5
+ } from "./chunk-63A7ZRIH.js";
6
6
  import {
7
7
  transcribeAudio
8
- } from "./chunk-ZOCEBV62.js";
8
+ } from "./chunk-UU3RLJSD.js";
9
9
  import {
10
10
  ModelNotFoundError
11
- } from "./chunk-37EX63K4.js";
11
+ } from "./chunk-YWHJJHJ2.js";
12
12
  import {
13
13
  abmind
14
- } from "./chunk-JAJ3DUQ2.js";
14
+ } from "./chunk-6IB3GVXK.js";
15
15
  import {
16
16
  fire,
17
17
  hasHooks
18
- } from "./chunk-7WHXTCVD.js";
19
- import {
20
- handleNLMCommand
21
- } from "./chunk-HAZHNBBY.js";
18
+ } from "./chunk-HWFN7JGU.js";
22
19
  import {
23
20
  sanitizeOutbound
24
21
  } from "./chunk-YWZPKBO6.js";
25
22
  import {
26
23
  buildSoulBundle,
27
24
  init_soul_bundle
28
- } from "./chunk-56D3Y44D.js";
25
+ } from "./chunk-KLG4SCF7.js";
26
+ import {
27
+ init_user_registry,
28
+ loadUsers
29
+ } from "./chunk-7LORCJCQ.js";
29
30
  import {
30
31
  init_spin_types,
31
32
  parseSessionType,
32
33
  sessionType,
33
34
  typeLabel
34
- } from "./chunk-T7TAWGBX.js";
35
+ } from "./chunk-52PQM4EZ.js";
35
36
  import {
36
37
  init_bridge_lock_transport,
37
38
  readAndClearRestartReason,
@@ -39,14 +40,10 @@ import {
39
40
  updateBridgeLockField,
40
41
  writeForceSleep,
41
42
  writeSleepStatus
42
- } from "./chunk-W726UGI6.js";
43
- import {
44
- init_user_registry,
45
- loadUsers
46
- } from "./chunk-43DKPXTP.js";
43
+ } from "./chunk-ZKMKAO75.js";
47
44
  import {
48
45
  readEntries
49
- } from "./chunk-HDOFJVFS.js";
46
+ } from "./chunk-7OI46MH7.js";
50
47
  import {
51
48
  init_local_time,
52
49
  localTime
@@ -54,11 +51,11 @@ import {
54
51
  import {
55
52
  getEnv,
56
53
  init_env_schema
57
- } from "./chunk-SSCGWDIC.js";
54
+ } from "./chunk-BWJ37KMW.js";
58
55
  import {
59
56
  init_log_and_swallow,
60
57
  logAndSwallow
61
- } from "./chunk-WP7FZHMI.js";
58
+ } from "./chunk-W2PSVV2T.js";
62
59
  import {
63
60
  init_logger,
64
61
  logDebug,
@@ -66,20 +63,20 @@ import {
66
63
  logInfo,
67
64
  logTrace,
68
65
  logWarn
69
- } from "./chunk-OOKNHOCB.js";
66
+ } from "./chunk-6S3G6GPO.js";
70
67
  import {
71
68
  abtarsHome,
72
69
  init_paths
73
- } from "./chunk-H2K23MOF.js";
70
+ } from "./chunk-7XXISOHU.js";
74
71
  import {
75
72
  __commonJS,
76
73
  __require,
77
74
  __toESM
78
75
  } from "./chunk-7K2YZTLD.js";
79
76
 
80
- // node_modules/.pnpm/@andresaya+edge-tts@1.8.0_typescript@5.9.3/node_modules/@andresaya/edge-tts/dist/config/constants.js
77
+ // node_modules/@andresaya/edge-tts/dist/config/constants.js
81
78
  var require_constants = __commonJS({
82
- "node_modules/.pnpm/@andresaya+edge-tts@1.8.0_typescript@5.9.3/node_modules/@andresaya/edge-tts/dist/config/constants.js"(exports) {
79
+ "node_modules/@andresaya/edge-tts/dist/config/constants.js"(exports) {
83
80
  "use strict";
84
81
  Object.defineProperty(exports, "__esModule", { value: true });
85
82
  exports.Constants = void 0;
@@ -130,9 +127,9 @@ var require_constants = __commonJS({
130
127
  }
131
128
  });
132
129
 
133
- // node_modules/.pnpm/@andresaya+edge-tts@1.8.0_typescript@5.9.3/node_modules/@andresaya/edge-tts/dist/services/EdgeTTS.js
130
+ // node_modules/@andresaya/edge-tts/dist/services/EdgeTTS.js
134
131
  var require_EdgeTTS = __commonJS({
135
- "node_modules/.pnpm/@andresaya+edge-tts@1.8.0_typescript@5.9.3/node_modules/@andresaya/edge-tts/dist/services/EdgeTTS.js"(exports) {
132
+ "node_modules/@andresaya/edge-tts/dist/services/EdgeTTS.js"(exports) {
136
133
  "use strict";
137
134
  var __importDefault = exports && exports.__importDefault || function(mod) {
138
135
  return mod && mod.__esModule ? mod : { "default": mod };
@@ -624,9 +621,9 @@ ${SSML_text}`;
624
621
  }
625
622
  });
626
623
 
627
- // node_modules/.pnpm/@andresaya+edge-tts@1.8.0_typescript@5.9.3/node_modules/@andresaya/edge-tts/dist/index.js
624
+ // node_modules/@andresaya/edge-tts/dist/index.js
628
625
  var require_dist = __commonJS({
629
- "node_modules/.pnpm/@andresaya+edge-tts@1.8.0_typescript@5.9.3/node_modules/@andresaya/edge-tts/dist/index.js"(exports) {
626
+ "node_modules/@andresaya/edge-tts/dist/index.js"(exports) {
630
627
  "use strict";
631
628
  Object.defineProperty(exports, "__esModule", { value: true });
632
629
  exports.Constants = exports.EdgeTTS = void 0;
@@ -825,7 +822,7 @@ var commandMiddleware = async (ctx, next) => {
825
822
  updateCtxStart,
826
823
  conversationBuffer
827
824
  } = deps;
828
- const { spin } = await import("./spin-4DBYHS3E.js");
825
+ const { spin } = await import("./spin-76K4R6FK.js");
829
826
  const registry = loadUsers();
830
827
  const resolvedUserId = msg.userId;
831
828
  const user = registry.byUserId.get(resolvedUserId);
@@ -919,7 +916,7 @@ var busyGuardMiddleware = async (ctx, next) => {
919
916
  const { msg, adapter, deps } = ctx;
920
917
  const userId = msg.userId;
921
918
  const activeId = deps.sessionManager.getActiveSessionId(userId, msg.platform);
922
- const { spin } = await import("./spin-4DBYHS3E.js");
919
+ const { spin } = await import("./spin-76K4R6FK.js");
923
920
  const entry = spin.getSessionById(activeId);
924
921
  if (!entry) {
925
922
  await next();
@@ -1051,7 +1048,7 @@ async function buildPrompt(msg, text, deps, registry) {
1051
1048
  const userId = msg.userId;
1052
1049
  const sessionKey = deps.sessionManager.getActiveSessionId(userId, msg.platform);
1053
1050
  const bufKey = `${msg.platform}:${channelId}`;
1054
- const { spin } = await import("./spin-4DBYHS3E.js");
1051
+ const { spin } = await import("./spin-76K4R6FK.js");
1055
1052
  const pSession = spin.getSessionById(sessionKey);
1056
1053
  let prompt = `[${localTime()}] ${text}`;
1057
1054
  let imageContent;
@@ -1399,7 +1396,7 @@ function setIdleCompactReset(fn) {
1399
1396
  async function resetAndPrepare(opts) {
1400
1397
  await opts.transport.resetSession(opts.sessionKey);
1401
1398
  if (opts.conversationBuffer && opts.bufKey) opts.conversationBuffer.clear(opts.bufKey);
1402
- const { spin } = await import("./spin-4DBYHS3E.js");
1399
+ const { spin } = await import("./spin-76K4R6FK.js");
1403
1400
  const pSession = spin.getSessionById(opts.sessionKey);
1404
1401
  if (pSession) {
1405
1402
  pSession.seen = false;
@@ -1429,8 +1426,8 @@ async function handleInboundMessage(msg, adapter, deps) {
1429
1426
  return;
1430
1427
  }
1431
1428
  }
1432
- const { spin } = await import("./spin-4DBYHS3E.js");
1433
- const { sessionType: sessionType2 } = await import("./spin-types-PLJH3SIK.js");
1429
+ const { spin } = await import("./spin-76K4R6FK.js");
1430
+ const { sessionType: sessionType2 } = await import("./spin-types-MOKTZXGB.js");
1434
1431
  const switchedSession = spin.getActiveSession(msg.userId, msg.platform);
1435
1432
  const switchedToLive = switchedSession?.transport && sessionType2(switchedSession) !== "A" && switchedSession.status === "ready";
1436
1433
  if (switchedToLive) {
@@ -1522,7 +1519,7 @@ ${prompt}`;
1522
1519
  const sessionTransport = activeSession.transport ?? transport;
1523
1520
  logDebug(TAG3, `Route: session=${activeSessionId} type=${sessionType2(activeSession)} transport=${activeSession.transport ? "session" : "main"}`);
1524
1521
  if ("sandboxPolicy" in sessionTransport) {
1525
- const { buildPolicy } = await import("./tool-sandbox-RNNPDR5M.js");
1522
+ const { buildPolicy } = await import("./tool-sandbox-DQCP3UTU.js");
1526
1523
  sessionTransport.sandboxPolicy = buildPolicy("owner");
1527
1524
  }
1528
1525
  if ("isPaused" in sessionTransport) {
@@ -1865,7 +1862,7 @@ function registerCommand(name, handler) {
1865
1862
  registerExact(name, handler);
1866
1863
  }
1867
1864
  async function handleCommand(text, ctx) {
1868
- const isMaster = !ctx.userId || ctx.userId === "master" || (await import("./user-registry-6PUJJ5J2.js")).loadUsers().byUserId.get(ctx.userId)?.role === "master";
1865
+ const isMaster = !ctx.userId || ctx.userId === "master" || (await import("./user-registry-OYJVAHDD.js")).loadUsers().byUserId.get(ctx.userId)?.role === "master";
1869
1866
  if (!isMaster) {
1870
1867
  const cmd = text.split(/\s/)[0];
1871
1868
  if (cmd.startsWith("/") && !NON_MASTER_COMMANDS.has(cmd)) {
@@ -1899,7 +1896,7 @@ Type /help for available commands.`);
1899
1896
  return false;
1900
1897
  }
1901
1898
  async function triggerNewSession(ctx, reason = "new-session") {
1902
- const { hasHooks: hasHooks2, fire: fireHook } = await import("./hook-system-X6INNJGV.js");
1899
+ const { hasHooks: hasHooks2, fire: fireHook } = await import("./hook-system-Z4XD6IM5.js");
1903
1900
  if (hasHooks2("SessionEnd")) {
1904
1901
  await fireHook("SessionEnd", { event: "SessionEnd", timestamp: (/* @__PURE__ */ new Date()).toISOString(), sessionKey: ctx.sessionKey, platform: ctx.platform, userId: ctx.userId, reason }).catch((err) => logAndSwallow(TAG4, "fireHook session", err));
1905
1902
  }
@@ -1917,12 +1914,12 @@ async function triggerNewSession(ctx, reason = "new-session") {
1917
1914
  }
1918
1915
  }
1919
1916
  async function triggerResetSession(ctx) {
1920
- const { hasHooks: hasHooks2, fire: fireHook } = await import("./hook-system-X6INNJGV.js");
1917
+ const { hasHooks: hasHooks2, fire: fireHook } = await import("./hook-system-Z4XD6IM5.js");
1921
1918
  if (hasHooks2("SessionEnd")) {
1922
1919
  await fireHook("SessionEnd", { event: "SessionEnd", timestamp: (/* @__PURE__ */ new Date()).toISOString(), sessionKey: ctx.sessionKey, platform: ctx.platform, userId: ctx.userId, reason: "reset-transport" }).catch((err) => logAndSwallow(TAG4, "fireHook session", err));
1923
1920
  }
1924
1921
  await ctx.idleSave.save(ctx.sessionKey, ctx.chatId);
1925
- const { clearTransportCache } = await import("./transport-config-OK3MZPJK.js");
1922
+ const { clearTransportCache } = await import("./transport-config-SF6GBV47.js");
1926
1923
  clearTransportCache();
1927
1924
  if (ctx.rebuildTransport) await ctx.rebuildTransport();
1928
1925
  await resetAndPrepare({
@@ -1986,7 +1983,7 @@ var TAG5 = "cmd";
1986
1983
  async function handleNewReset(text, ctx) {
1987
1984
  const isResetDefault = text.trim().toLowerCase() === "/reset default";
1988
1985
  if (isResetDefault) {
1989
- const { resetToDefaults } = await import("./transport-config-OK3MZPJK.js");
1986
+ const { resetToDefaults } = await import("./transport-config-SF6GBV47.js");
1990
1987
  resetToDefaults();
1991
1988
  } else {
1992
1989
  try {
@@ -2026,7 +2023,7 @@ async function handleEmergencyAlias(_text, ctx) {
2026
2023
  return handleModels("/model emergency", ctx);
2027
2024
  }
2028
2025
  async function handleModels(text, ctx) {
2029
- const { loadTransport, resolveAgent, getModelsForProvider, writeTransportConfig } = await import("./transport-config-OK3MZPJK.js");
2026
+ const { loadTransport, resolveAgent, getModelsForProvider, writeTransportConfig } = await import("./transport-config-SF6GBV47.js");
2030
2027
  const tc = loadTransport();
2031
2028
  const prof = tc ? resolveAgent("professor", tc) : null;
2032
2029
  const currentModel = ("currentModel" in ctx.transport ? ctx.transport.currentModel : void 0) ?? prof?.model ?? "unknown";
@@ -2044,8 +2041,8 @@ async function handleModels(text, ctx) {
2044
2041
  if (tc) {
2045
2042
  const hmProvider = tc.hailMary ? tc.providers[tc.hailMary.provider] : void 0;
2046
2043
  if (hmProvider) {
2047
- const { validateProviderReady, formatValidationError } = await import("./transport-config-OK3MZPJK.js");
2048
- const { getEnv: getEnv2 } = await import("./env-schema-MSDP2YBO.js");
2044
+ const { validateProviderReady, formatValidationError } = await import("./transport-config-SF6GBV47.js");
2045
+ const { getEnv: getEnv2 } = await import("./env-schema-YGHCKX5B.js");
2049
2046
  const result = validateProviderReady(tc.hailMary.provider, hmProvider, getEnv2());
2050
2047
  if (!result.ok) {
2051
2048
  await ctx.reply(formatValidationError(tc.hailMary.provider, result));
@@ -2058,7 +2055,7 @@ async function handleModels(text, ctx) {
2058
2055
  return true;
2059
2056
  }
2060
2057
  if (arg === "restore") {
2061
- const { restorePrevious } = await import("./transport-config-OK3MZPJK.js");
2058
+ const { restorePrevious } = await import("./transport-config-SF6GBV47.js");
2062
2059
  const result = restorePrevious();
2063
2060
  if (!result.ok) {
2064
2061
  await ctx.reply(`\u274C ${result.error}`);
@@ -2070,7 +2067,7 @@ async function handleModels(text, ctx) {
2070
2067
  return true;
2071
2068
  }
2072
2069
  if (arg === "default") {
2073
- const { resetToDefaults } = await import("./transport-config-OK3MZPJK.js");
2070
+ const { resetToDefaults } = await import("./transport-config-SF6GBV47.js");
2074
2071
  if (!resetToDefaults()) {
2075
2072
  await ctx.reply("\u274C Factory config not found \u2014 run abtars install to restore.");
2076
2073
  return true;
@@ -2096,7 +2093,7 @@ async function handleModels(text, ctx) {
2096
2093
  return true;
2097
2094
  }
2098
2095
  const endpoint = prof.provider.endpoint ?? "http://localhost:11434/v1";
2099
- const apiKey = prof.provider.apiKeyEnv ? (await import("./env-schema-MSDP2YBO.js")).getEnv().getApiKey(prof.provider.apiKeyEnv) : void 0;
2096
+ const apiKey = prof.provider.apiKeyEnv ? (await import("./env-schema-YGHCKX5B.js")).getEnv().getApiKey(prof.provider.apiKeyEnv) : void 0;
2100
2097
  const models = /* @__PURE__ */ new Set();
2101
2098
  for (const [, agent] of Object.entries(tc.agents)) {
2102
2099
  if (agent.provider === prof.providerName) models.add(agent.model);
@@ -2107,7 +2104,7 @@ async function handleModels(text, ctx) {
2107
2104
  if (tc.hailMary?.provider === prof.providerName) models.add(tc.hailMary.model);
2108
2105
  await ctx.reply(`\u{1FA7A} Checking ${models.size} models on ${prof.providerName}...`);
2109
2106
  const results = [];
2110
- const { loadModels } = await import("./transport-config-OK3MZPJK.js");
2107
+ const { loadModels } = await import("./transport-config-SF6GBV47.js");
2111
2108
  const catalog = loadModels();
2112
2109
  for (const model of models) {
2113
2110
  try {
@@ -2145,7 +2142,7 @@ async function handleModels(text, ctx) {
2145
2142
  }
2146
2143
  const { writeFileSync: writeFileSync2 } = await import("node:fs");
2147
2144
  const { join: join4 } = await import("node:path");
2148
- const { configDir } = await import("./transport-config-OK3MZPJK.js");
2145
+ const { configDir } = await import("./transport-config-SF6GBV47.js");
2149
2146
  writeFileSync2(join4(configDir(), "models.json"), JSON.stringify(catalog, null, 2) + "\n");
2150
2147
  await ctx.reply(`\u{1FA7A} Model Health:
2151
2148
  ${results.join("\n")}`);
@@ -2168,8 +2165,8 @@ ${results.join("\n")}`);
2168
2165
  return true;
2169
2166
  }
2170
2167
  {
2171
- const { validateProviderReady, formatValidationError } = await import("./transport-config-OK3MZPJK.js");
2172
- const { getEnv: getEnv2 } = await import("./env-schema-MSDP2YBO.js");
2168
+ const { validateProviderReady, formatValidationError } = await import("./transport-config-SF6GBV47.js");
2169
+ const { getEnv: getEnv2 } = await import("./env-schema-YGHCKX5B.js");
2173
2170
  const result = validateProviderReady(prof.providerName, prof.provider, getEnv2());
2174
2171
  if (!result.ok) {
2175
2172
  await ctx.reply(formatValidationError(prof.providerName, result));
@@ -2177,7 +2174,7 @@ ${results.join("\n")}`);
2177
2174
  }
2178
2175
  }
2179
2176
  tc.agents["professor"].model = newModel;
2180
- const { cleanDemotedModels } = await import("./transport-config-OK3MZPJK.js");
2177
+ const { cleanDemotedModels } = await import("./transport-config-SF6GBV47.js");
2181
2178
  cleanDemotedModels(tc, newModel);
2182
2179
  writeTransportConfig(tc, `professor model \u2192 ${newModel}`);
2183
2180
  if ("setModel" in ctx.transport) {
@@ -2188,7 +2185,7 @@ ${results.join("\n")}`);
2188
2185
  }
2189
2186
  if (arg === "list" || arg.startsWith("list ")) {
2190
2187
  const providerArg = arg.slice(5).trim();
2191
- const { getAvailableProviders, getModelsForProvider: getModels } = await import("./transport-config-OK3MZPJK.js");
2188
+ const { getAvailableProviders, getModelsForProvider: getModels } = await import("./transport-config-SF6GBV47.js");
2192
2189
  if (!tc) {
2193
2190
  await ctx.reply("\u274C transport.json not loaded");
2194
2191
  return true;
@@ -2246,8 +2243,8 @@ Use /model quick <name> to switch.`);
2246
2243
  await ctx.reply(`\u274C Provider "${providerName}" not found. Available: ${Object.keys(tc.providers).join(", ")}`);
2247
2244
  return true;
2248
2245
  }
2249
- const { validateProviderReady, formatValidationError, loadProviderDefaults } = await import("./transport-config-OK3MZPJK.js");
2250
- const { getEnv: getEnv2 } = await import("./env-schema-MSDP2YBO.js");
2246
+ const { validateProviderReady, formatValidationError, loadProviderDefaults } = await import("./transport-config-SF6GBV47.js");
2247
+ const { getEnv: getEnv2 } = await import("./env-schema-YGHCKX5B.js");
2251
2248
  const validation = validateProviderReady(providerName, provider2, getEnv2());
2252
2249
  if (!validation.ok) {
2253
2250
  await ctx.reply(formatValidationError(providerName, validation));
@@ -2345,7 +2342,7 @@ async function handleDoctor(_text, ctx) {
2345
2342
  const arg = _text.replace(/^\/(doctor|health)\s*/i, "").trim().toLowerCase();
2346
2343
  if (arg === "fix" || arg === "fix-full") {
2347
2344
  try {
2348
- const { runFixes, runAllProbes: runAllProbes2, renderHuman: renderHuman2 } = await import("./doctor-probes-3SLIUGKS.js");
2345
+ const { runFixes, runAllProbes: runAllProbes2, renderHuman: renderHuman2 } = await import("./doctor-probes-46UKIROK.js");
2349
2346
  const fixes = await runFixes();
2350
2347
  const fixLines = fixes.map((f) => ` ${f.success ? "+" : "x"} ${f.action}`).join("\n");
2351
2348
  const output2 = await runAllProbes2();
@@ -2359,14 +2356,14 @@ ${renderHuman2(output2)}`);
2359
2356
  return true;
2360
2357
  }
2361
2358
  await ctx.reply("\u{1FA7A} Running diagnostics...");
2362
- const { runAllProbes, renderHuman } = await import("./doctor-probes-3SLIUGKS.js");
2359
+ const { runAllProbes, renderHuman } = await import("./doctor-probes-46UKIROK.js");
2363
2360
  const output = await runAllProbes();
2364
2361
  await ctx.reply(renderHuman(output));
2365
2362
  return true;
2366
2363
  }
2367
2364
  async function handleStatus(_text, ctx) {
2368
2365
  if (ctx.phaseHealth && ctx.registry) {
2369
- const { getSystemStatus, renderStatusText } = await import("./system-status-XXJWTVJN.js");
2366
+ const { getSystemStatus, renderStatusText } = await import("./system-status-PLPWV4RF.js");
2370
2367
  const status = await getSystemStatus({
2371
2368
  phaseHealth: ctx.phaseHealth,
2372
2369
  registry: ctx.registry,
@@ -2377,7 +2374,7 @@ async function handleStatus(_text, ctx) {
2377
2374
  });
2378
2375
  let text = renderStatusText(status);
2379
2376
  if (_text.trim().toLowerCase() === "full") {
2380
- const { envDump } = await import("./env-schema-MSDP2YBO.js");
2377
+ const { envDump } = await import("./env-schema-YGHCKX5B.js");
2381
2378
  const dump = envDump();
2382
2379
  const envLines = Object.entries(dump).slice(0, 30).map(([k, v]) => ` ${k}: ${v}`);
2383
2380
  text += "\n\n\u{1F4CB} Config (top 30):\n" + envLines.join("\n");
@@ -2399,7 +2396,7 @@ async function handleWait(text, ctx) {
2399
2396
  }
2400
2397
  async function handleStop(_text, ctx) {
2401
2398
  await ctx.transport.sendInterrupt();
2402
- const { spin } = await import("./spin-4DBYHS3E.js");
2399
+ const { spin } = await import("./spin-76K4R6FK.js");
2403
2400
  const s = spin.getSessionById(ctx.sessionKey);
2404
2401
  if (s) s.busy = false;
2405
2402
  await ctx.reply("\u{1F6D1} Ctrl+C sent.");
@@ -2422,7 +2419,7 @@ async function handleRestart(_text, ctx) {
2422
2419
  return true;
2423
2420
  }
2424
2421
  async function handleHeartbeat(_text, ctx) {
2425
- const { getHeartbeatInstance } = await import("./heartbeat-system-G4IFQXT6.js");
2422
+ const { getHeartbeatInstance } = await import("./heartbeat-system-MUXLT4E6.js");
2426
2423
  const hb = getHeartbeatInstance();
2427
2424
  if (!hb) {
2428
2425
  await ctx.reply("\u{1F493} Heartbeat not available.");
@@ -2468,13 +2465,13 @@ async function handleHealing(text, ctx) {
2468
2465
  return true;
2469
2466
  }
2470
2467
  if (cmd === "reset") {
2471
- const { resetAutofixState } = await import("./sha-tracker-2DB4R2TW.js");
2468
+ const { resetAutofixState } = await import("./sha-tracker-BXOLWZJL.js");
2472
2469
  resetAutofixState();
2473
2470
  await ctx.reply("\u{1FA7A} Autofix state reset \u2014 all suppressed faults re-enabled.");
2474
2471
  return true;
2475
2472
  }
2476
2473
  if (cmd === "list") {
2477
- const { loadFixes } = await import("./sha-tracker-2DB4R2TW.js");
2474
+ const { loadFixes } = await import("./sha-tracker-BXOLWZJL.js");
2478
2475
  const { readFileSync: readFileSync3 } = await import("node:fs");
2479
2476
  const { join: join4 } = await import("node:path");
2480
2477
  const fixes = loadFixes();
@@ -2504,7 +2501,7 @@ ${lines.join("\n")}`);
2504
2501
  await ctx.reply("Usage: /healing approve <pattern>");
2505
2502
  return true;
2506
2503
  }
2507
- const { approveFix } = await import("./sha-tracker-2DB4R2TW.js");
2504
+ const { approveFix } = await import("./sha-tracker-BXOLWZJL.js");
2508
2505
  const ok = approveFix(pattern);
2509
2506
  await ctx.reply(ok ? `\u2713 Approved: "${pattern}"` : `\u274C Pattern not found in self-rules.`);
2510
2507
  return true;
@@ -2515,7 +2512,7 @@ ${lines.join("\n")}`);
2515
2512
  await ctx.reply("Usage: /healing disable <pattern>");
2516
2513
  return true;
2517
2514
  }
2518
- const { disableFix } = await import("./sha-tracker-2DB4R2TW.js");
2515
+ const { disableFix } = await import("./sha-tracker-BXOLWZJL.js");
2519
2516
  const ok = disableFix(pattern);
2520
2517
  await ctx.reply(ok ? `\u2713 Disabled: "${pattern}"` : `\u274C Pattern not found in self-rules.`);
2521
2518
  return true;
@@ -2530,7 +2527,7 @@ async function handleFull(_text, ctx) {
2530
2527
  await ctx.reply("\u{1F4FA} Full mode is only available on Telegram.");
2531
2528
  return true;
2532
2529
  }
2533
- const { spin } = await import("./spin-4DBYHS3E.js");
2530
+ const { spin } = await import("./spin-76K4R6FK.js");
2534
2531
  const s = spin.getSessionById(ctx.sessionKey);
2535
2532
  if (s) s.fullMode = true;
2536
2533
  await ctx.reply("\u{1F4FA} Full mode \u2014 sending raw output, TTS disabled.");
@@ -2541,7 +2538,7 @@ async function handleShort(_text, ctx) {
2541
2538
  await ctx.reply("\u2702\uFE0F Short mode is only available on Telegram.");
2542
2539
  return true;
2543
2540
  }
2544
- const { spin } = await import("./spin-4DBYHS3E.js");
2541
+ const { spin } = await import("./spin-76K4R6FK.js");
2545
2542
  const s = spin.getSessionById(ctx.sessionKey);
2546
2543
  if (s) s.fullMode = false;
2547
2544
  await ctx.reply("\u2702\uFE0F Short mode \u2014 clean responses, TTS enabled.");
@@ -2567,7 +2564,7 @@ async function buildStatusLines(ctx) {
2567
2564
  if ("currentModel" in ctx.transport) {
2568
2565
  model = ctx.transport.currentModel;
2569
2566
  } else {
2570
- const { loadTransport, resolveAgent } = await import("./transport-config-OK3MZPJK.js");
2567
+ const { loadTransport, resolveAgent } = await import("./transport-config-SF6GBV47.js");
2571
2568
  const tc2 = loadTransport();
2572
2569
  const prof2 = tc2 ? resolveAgent("professor", tc2) : null;
2573
2570
  model = prof2?.model ?? "unknown";
@@ -2575,9 +2572,9 @@ async function buildStatusLines(ctx) {
2575
2572
  const transportStatus = ctx.transport.isReady ? "\u2713 Connected" : "\u274C Disconnected";
2576
2573
  const uptime = formatUptime(Date.now() - ctx.startedAt);
2577
2574
  const ctxPct = ctx.transport.contextPercent >= 0 ? `${ctx.transport.contextPercent}%` : "n/a";
2578
- const { getHeartbeatInstance } = await import("./heartbeat-system-G4IFQXT6.js");
2575
+ const { getHeartbeatInstance } = await import("./heartbeat-system-MUXLT4E6.js");
2579
2576
  const hb = getHeartbeatInstance();
2580
- const { loadTransport: lt, resolveAgent: ra } = await import("./transport-config-OK3MZPJK.js");
2577
+ const { loadTransport: lt, resolveAgent: ra } = await import("./transport-config-SF6GBV47.js");
2581
2578
  const tc = lt();
2582
2579
  const prof = tc ? ra("professor", tc) : null;
2583
2580
  const provider = prof?.providerName ?? "unknown";
@@ -2645,8 +2642,8 @@ function formatUptime(ms) {
2645
2642
  return h > 0 ? `${h}h ${m}m` : `${m}m`;
2646
2643
  }
2647
2644
  async function handleUsage(_text, ctx) {
2648
- const { readUsage, resetUsage } = await import("./usage-tracker-HRSGC7QC.js");
2649
- const { loadModels } = await import("./transport-config-OK3MZPJK.js");
2645
+ const { readUsage, resetUsage } = await import("./usage-tracker-TBDM4KE6.js");
2646
+ const { loadModels } = await import("./transport-config-SF6GBV47.js");
2650
2647
  const arg = _text.replace("/usage", "").trim();
2651
2648
  if (arg === "reset") {
2652
2649
  resetUsage();
@@ -2697,13 +2694,13 @@ async function handleUsage(_text, ctx) {
2697
2694
  `;
2698
2695
  }
2699
2696
  }
2700
- const { fetchOpenRouterCredits } = await import("./openrouter-credits-LXC7P4G6.js");
2697
+ const { fetchOpenRouterCredits } = await import("./openrouter-credits-5Q3EYWE5.js");
2701
2698
  const credits = await fetchOpenRouterCredits();
2702
2699
  if (credits) {
2703
2700
  msg += `
2704
2701
  \u{1F4B3} OpenRouter: $${credits.remaining.toFixed(2)} remaining ($${credits.purchased.toFixed(2)} purchased, $${credits.used.toFixed(2)} used)`;
2705
2702
  }
2706
- const { getBudgetStatus } = await import("./budget-PPA7WY3D.js");
2703
+ const { getBudgetStatus } = await import("./budget-QNK6IIT6.js");
2707
2704
  const budgetItems = getBudgetStatus();
2708
2705
  if (budgetItems.length > 0) {
2709
2706
  msg += `
@@ -2720,7 +2717,7 @@ async function handleUsage(_text, ctx) {
2720
2717
  return true;
2721
2718
  }
2722
2719
  async function handleOpenRouter(_text, ctx) {
2723
- const { fetchOpenRouterCredits } = await import("./openrouter-credits-LXC7P4G6.js");
2720
+ const { fetchOpenRouterCredits } = await import("./openrouter-credits-5Q3EYWE5.js");
2724
2721
  const credits = await fetchOpenRouterCredits();
2725
2722
  if (!credits) {
2726
2723
  await ctx.reply("\u274C OpenRouter API key not set or request failed.");
@@ -2736,7 +2733,7 @@ Remaining: $${credits.remaining.toFixed(2)}`
2736
2733
  return true;
2737
2734
  }
2738
2735
  async function handleWhoami(_text, ctx) {
2739
- const { loadUsers: loadUsers2 } = await import("./user-registry-6PUJJ5J2.js");
2736
+ const { loadUsers: loadUsers2 } = await import("./user-registry-OYJVAHDD.js");
2740
2737
  const reg = loadUsers2();
2741
2738
  const CLASS_NAMES = ["UNCLASSIFIED", "RESTRICTED", "CONFIDENTIAL", "SECRET"];
2742
2739
  const user = ctx.userId ? reg.byUserId.get(ctx.userId) : void 0;
@@ -2753,10 +2750,10 @@ chatId: ${ctx.chatId}`);
2753
2750
  }
2754
2751
  async function handleSoftware(_text, ctx) {
2755
2752
  const { existsSync } = await import("node:fs");
2756
- const { abtarsHome: abtarsHome2 } = await import("./paths-RZF6WDMG.js");
2753
+ const { abtarsHome: abtarsHome2 } = await import("./paths-MZC2KU2C.js");
2757
2754
  const home = abtarsHome2();
2758
2755
  const arg = _text.replace(/^\/(software|update)\s*/i, "").trim();
2759
- const { loadUsers: loadUsers2 } = await import("./user-registry-6PUJJ5J2.js");
2756
+ const { loadUsers: loadUsers2 } = await import("./user-registry-OYJVAHDD.js");
2760
2757
  const user = loadUsers2().byUserId.get(ctx.userId);
2761
2758
  const isMaster = user?.role === "master";
2762
2759
  if (arg.startsWith("rollback")) {
@@ -2776,7 +2773,7 @@ async function handleSoftware(_text, ctx) {
2776
2773
  }
2777
2774
  await ctx.reply(`\u26A0\uFE0F Rolling back to slot ${asSlot}...`);
2778
2775
  try {
2779
- const { rollback } = await import("./rollback-MVZ53XS4.js");
2776
+ const { rollback } = await import("./rollback-JOHY6KWW.js");
2780
2777
  const code = await rollback({ to: asSlot });
2781
2778
  if (code !== 0) {
2782
2779
  await ctx.reply(`\u274C Rollback failed (exit ${code}).`);
@@ -2919,7 +2916,7 @@ ${stderr.slice(-300)}`).catch(() => {
2919
2916
  }
2920
2917
  const lines = ["\u{1F527} Software"];
2921
2918
  try {
2922
- const { getDeployedVersion } = await import("./paths-RZF6WDMG.js");
2919
+ const { getDeployedVersion } = await import("./paths-MZC2KU2C.js");
2923
2920
  const ver = getDeployedVersion();
2924
2921
  const manifest = existsSync(join2(home, "manifest.json")) ? JSON.parse(readFileSync(join2(home, "manifest.json"), "utf-8")) : null;
2925
2922
  const deployed = manifest?.activatedAt ? new Date(manifest.activatedAt).toLocaleString() : "unknown";
@@ -2936,12 +2933,12 @@ ${stderr.slice(-300)}`).catch(() => {
2936
2933
  lines.push(" abtars: unknown");
2937
2934
  }
2938
2935
  lines.push("");
2939
- const { getEnv: getEnv2 } = await import("./env-schema-MSDP2YBO.js");
2936
+ const { getEnv: getEnv2 } = await import("./env-schema-YGHCKX5B.js");
2940
2937
  const memoryProvider = getEnv2().memory;
2941
2938
  if (memoryProvider === "abmind" || memoryProvider === "auto") {
2942
2939
  const abmindBundlePkg = join2(home, "app", "bundle", "node_modules", "abmind", "package.json");
2943
2940
  const abmindAppPkg = join2(home, "app", "node_modules", "abmind", "package.json");
2944
- const { abmindHome: resolveAbmind } = await import("./paths-RZF6WDMG.js");
2941
+ const { abmindHome: resolveAbmind } = await import("./paths-MZC2KU2C.js");
2945
2942
  const abmHome = resolveAbmind();
2946
2943
  const abmindManifest = join2(abmHome, "manifest.json");
2947
2944
  const abmindPkgPath = existsSync(abmindBundlePkg) ? abmindBundlePkg : existsSync(abmindAppPkg) ? abmindAppPkg : null;
@@ -3054,6 +3051,140 @@ Cron depth: avg=${s.cronDepth.avg} max=${s.cronDepth.max}`);
3054
3051
  return true;
3055
3052
  }
3056
3053
 
3054
+ // src/components/nlm-command-handler.ts
3055
+ init_env_schema();
3056
+ init_logger();
3057
+ init_log_and_swallow();
3058
+ import { execFile } from "node:child_process";
3059
+ var TAG7 = "NLMCommand";
3060
+ var TIMEOUT_MS = 12e4;
3061
+ function loadNLMConfig() {
3062
+ const raw = String(getEnv().notebooklmEnabled);
3063
+ return {
3064
+ enabled: raw === "true" || raw === "1",
3065
+ defaultNotebook: getEnv().notebooklmDefaultNotebook
3066
+ };
3067
+ }
3068
+ function nlmExec(args) {
3069
+ const start = Date.now();
3070
+ logDebug(TAG7, `nlm ${args.join(" ")}`);
3071
+ return new Promise((resolve) => {
3072
+ const ac = new AbortController();
3073
+ const timer = setTimeout(() => ac.abort(), TIMEOUT_MS);
3074
+ try {
3075
+ execFile("nlm", args, { signal: ac.signal, maxBuffer: 10 * 1024 * 1024 }, (err, stdout, stderr) => {
3076
+ clearTimeout(timer);
3077
+ logDebug(TAG7, `nlm completed in ${Date.now() - start}ms`);
3078
+ if (err) {
3079
+ if (err.name === "AbortError" || err.code === "ABORT_ERR") {
3080
+ resolve({ ok: false, error: `Timeout after ${TIMEOUT_MS / 1e3}s` });
3081
+ return;
3082
+ }
3083
+ resolve({ ok: false, error: stderr?.trim() || err.message });
3084
+ return;
3085
+ }
3086
+ resolve({ ok: true, data: stdout.trim() });
3087
+ });
3088
+ } catch (err) {
3089
+ clearTimeout(timer);
3090
+ resolve({ ok: false, error: err instanceof Error ? err.message : String(err) });
3091
+ }
3092
+ });
3093
+ }
3094
+ async function handleNLMCommand(args, config) {
3095
+ if (!config.enabled) {
3096
+ return { text: "\u{1F4DA} Knowledge base is disabled." };
3097
+ }
3098
+ const parts = args.split(/\s+/).filter(Boolean);
3099
+ const sub = parts[0] ?? "";
3100
+ try {
3101
+ switch (sub) {
3102
+ case "list":
3103
+ return await handleList();
3104
+ case "create":
3105
+ return await handleCreate(parts.slice(1).join(" "));
3106
+ case "sources":
3107
+ return await handleSources(parts[1] ?? "");
3108
+ case "query":
3109
+ return await handleQuery(parts.slice(1).join(" "), config);
3110
+ default:
3111
+ return { text: "Usage: /nlm list | /nlm create <name> | /nlm sources <notebook-id> | /nlm query <question>" };
3112
+ }
3113
+ } catch (err) {
3114
+ logError(TAG7, "NLM command failed", err);
3115
+ return { text: `\u274C NLM error: ${err instanceof Error ? err.message : String(err)}` };
3116
+ }
3117
+ }
3118
+ async function handleList() {
3119
+ const result = await nlmExec(["notebook", "list", "--json"]);
3120
+ if (!result.ok) return { text: `\u274C ${result.error}` };
3121
+ try {
3122
+ const notebooks = JSON.parse(result.data);
3123
+ if (!Array.isArray(notebooks) || notebooks.length === 0) return { text: "\u{1F4DA} No notebooks found." };
3124
+ const lines = notebooks.map(
3125
+ (n) => `\u2022 ${n.title ?? n.name ?? "?"} (${n.id ?? n.notebook_id ?? "?"})`
3126
+ );
3127
+ return { text: `\u{1F4DA} Notebooks:
3128
+
3129
+ ${lines.join("\n")}` };
3130
+ } catch (err) {
3131
+ logAndSwallow(TAG7, "JSON.parse notebook list", err);
3132
+ return { text: `\u{1F4DA} ${result.data}` };
3133
+ }
3134
+ }
3135
+ async function handleCreate(name) {
3136
+ if (!name) return { text: "Usage: /nlm create <name>" };
3137
+ const result = await nlmExec(["notebook", "create", name, "--json"]);
3138
+ if (!result.ok) return { text: `\u274C ${result.error}` };
3139
+ try {
3140
+ const parsed = JSON.parse(result.data);
3141
+ const id = parsed.notebook_id ?? parsed.id ?? "?";
3142
+ logInfo(TAG7, `Created notebook "${name}" \u2192 ${id}`);
3143
+ return { text: `\u2713 Notebook "${name}" created (${id})` };
3144
+ } catch (err) {
3145
+ logAndSwallow(TAG7, "JSON.parse notebook create", err);
3146
+ return { text: `\u2713 ${result.data}` };
3147
+ }
3148
+ }
3149
+ async function handleSources(notebookId) {
3150
+ if (!notebookId) return { text: "Usage: /nlm sources <notebook-id>" };
3151
+ const result = await nlmExec(["source", "list", notebookId, "--json"]);
3152
+ if (!result.ok) return { text: `\u274C ${result.error}` };
3153
+ try {
3154
+ const sources = JSON.parse(result.data);
3155
+ if (!Array.isArray(sources) || sources.length === 0) return { text: `\u{1F4C4} No sources in notebook.` };
3156
+ const lines = sources.map(
3157
+ (s) => `\u2022 [${s.type ?? s.source_type ?? "?"}] ${s.title ?? s.name ?? "?"}`
3158
+ );
3159
+ return { text: `\u{1F4C4} Sources:
3160
+
3161
+ ${lines.join("\n")}` };
3162
+ } catch (err) {
3163
+ logAndSwallow(TAG7, "JSON.parse source list", err);
3164
+ return { text: `\u{1F4C4} ${result.data}` };
3165
+ }
3166
+ }
3167
+ async function handleQuery(question, config) {
3168
+ if (!question) return { text: "Usage: /nlm query <question>" };
3169
+ const nbId = config.defaultNotebook;
3170
+ if (!nbId) return { text: "\u274C No default notebook configured (NOTEBOOKLM_DEFAULT_NOTEBOOK)." };
3171
+ const result = await nlmExec(["notebook", "query", nbId, question, "--json"]);
3172
+ if (!result.ok) return { text: `\u274C ${result.error}` };
3173
+ try {
3174
+ const parsed = JSON.parse(result.data);
3175
+ const answer = parsed.answer ?? parsed.response ?? result.data;
3176
+ const sources = parsed.sources_used ?? parsed.citations ?? [];
3177
+ const citations = Array.isArray(sources) && sources.length > 0 ? `
3178
+
3179
+ \u{1F4CE} Sources: ${sources.map((s) => s.title ?? s.name ?? s.source_name ?? "?").join(", ")}` : "";
3180
+ logInfo(TAG7, `Query OK \u2014 answerLen=${String(answer).length}`);
3181
+ return { text: `\u{1F4DA} ${answer}${citations}` };
3182
+ } catch (err) {
3183
+ logAndSwallow(TAG7, "JSON.parse query result", err);
3184
+ return { text: `\u{1F4DA} ${result.data}` };
3185
+ }
3186
+ }
3187
+
3057
3188
  // src/components/commands/handlers-memory.ts
3058
3189
  async function handleMemory(_text, ctx) {
3059
3190
  if (!ctx.memory) {
@@ -3115,7 +3246,7 @@ import { spawn } from "node:child_process";
3115
3246
  import { readFileSync as readFileSync2, readdirSync as readdirSync2, unlinkSync } from "node:fs";
3116
3247
  import { join as join3 } from "node:path";
3117
3248
  import { platform } from "node:os";
3118
- var TAG7 = "cmd";
3249
+ var TAG8 = "cmd";
3119
3250
  async function handleSleep(_text, ctx) {
3120
3251
  const sleepStatus = readBridgeLockField("sleepStatus") ?? "awake";
3121
3252
  const progress = ctx.sleepProgress?.();
@@ -3178,7 +3309,7 @@ async function handleSleepSub(text, ctx) {
3178
3309
  }
3179
3310
  writeForceSleep("resume via /sleep resume");
3180
3311
  await ctx.reply("Sleep resume queued");
3181
- logInfo(TAG7, "Sleep resume triggered via /sleep resume");
3312
+ logInfo(TAG8, "Sleep resume triggered via /sleep resume");
3182
3313
  return true;
3183
3314
  }
3184
3315
  if (sub === "now") {
@@ -3194,7 +3325,7 @@ async function handleSleepSub(text, ctx) {
3194
3325
  }
3195
3326
  writeForceSleep("fresh via /sleep now");
3196
3327
  await ctx.reply("\u{1F4A4} Full sleep cycle initiated");
3197
- logInfo(TAG7, "Fresh sleep triggered via /sleep now");
3328
+ logInfo(TAG8, "Fresh sleep triggered via /sleep now");
3198
3329
  return true;
3199
3330
  }
3200
3331
  await ctx.reply("Unknown subcommand. Use /sleep, /sleep resume, or /sleep now.");
@@ -3235,7 +3366,7 @@ function readLatestSleepLock(auditDir) {
3235
3366
  const date = dateMatch ? `${dateMatch[1]}-${dateMatch[2]}-${dateMatch[3]}` : "unknown";
3236
3367
  return { date, status: raw.status ?? "unknown", llmCalls: raw.llmCalls ?? 0, startedAt: raw.startedAt, steps: raw.steps ?? {} };
3237
3368
  } catch (err) {
3238
- logAndSwallow(TAG7, "readLastSleepAudit", err);
3369
+ logAndSwallow(TAG8, "readLastSleepAudit", err);
3239
3370
  return null;
3240
3371
  }
3241
3372
  }
@@ -3246,10 +3377,10 @@ function todayLockPath(auditDir) {
3246
3377
  }
3247
3378
 
3248
3379
  // src/components/commands/exec-async.ts
3249
- import { execFile } from "node:child_process";
3380
+ import { execFile as execFile2 } from "node:child_process";
3250
3381
  function execAsync(cmd, args, timeoutMs) {
3251
3382
  return new Promise((resolve) => {
3252
- const child = execFile(cmd, args, { timeout: timeoutMs, encoding: "utf-8" }, (err, stdout) => {
3383
+ const child = execFile2(cmd, args, { timeout: timeoutMs, encoding: "utf-8" }, (err, stdout) => {
3253
3384
  resolve(err ? null : stdout.trim());
3254
3385
  });
3255
3386
  child.stderr?.resume();
@@ -3259,13 +3390,13 @@ function execAsync(cmd, args, timeoutMs) {
3259
3390
  // src/components/commands/handlers-tasks.ts
3260
3391
  init_logger();
3261
3392
  init_log_and_swallow();
3262
- var TAG8 = "cmd_tasks";
3393
+ var TAG9 = "cmd_tasks";
3263
3394
  async function handleTasksList(_text, ctx) {
3264
3395
  const tz = process.env["TZ"] || Intl.DateTimeFormat().resolvedOptions().timeZone;
3265
3396
  const now = (/* @__PURE__ */ new Date()).toLocaleString("en-GB", { timeZone: tz, dateStyle: "medium", timeStyle: "medium" });
3266
3397
  let listing;
3267
3398
  try {
3268
- const { readEntries: readEntries2 } = await import("./task-store-2XRDM3AW.js");
3399
+ const { readEntries: readEntries2 } = await import("./task-store-RAFMDQ7N.js");
3269
3400
  const entries = readEntries2();
3270
3401
  const active = entries.filter((e) => !e.fired);
3271
3402
  active.sort((a, b) => {
@@ -3314,7 +3445,7 @@ async function handleTasksList(_text, ctx) {
3314
3445
  if (ctx.cronCurrentJob) {
3315
3446
  const j = ctx.cronCurrentJob;
3316
3447
  const ago = Math.round((Date.now() - j.startedAt) / 1e3);
3317
- const name = j.message.split("\n")[0].slice(0, 30);
3448
+ const name = (j.message.split("\n")[0] ?? "").slice(0, 30);
3318
3449
  running = `
3319
3450
  ~ Running: ${name} (${ago}s)`;
3320
3451
  }
@@ -3330,7 +3461,7 @@ async function handleTasksTrigger(text, ctx) {
3330
3461
  return true;
3331
3462
  }
3332
3463
  let id = raw;
3333
- const { readEntry, readEntries: readEntries2 } = await import("./task-store-2XRDM3AW.js");
3464
+ const { readEntry, readEntries: readEntries2 } = await import("./task-store-RAFMDQ7N.js");
3334
3465
  if (!readEntry(id)) {
3335
3466
  const normalized = raw.toLowerCase().replace(/\s+/g, "-");
3336
3467
  if (readEntry(normalized)) {
@@ -3348,7 +3479,7 @@ async function handleTasksTrigger(text, ctx) {
3348
3479
  let name = id;
3349
3480
  try {
3350
3481
  const entry = readEntry(id);
3351
- if (entry) name = entry.title || entry.message.split("\n")[0].slice(0, 30);
3482
+ if (entry) name = entry.title || (entry.message.split("\n")[0] ?? "").slice(0, 30);
3352
3483
  } catch {
3353
3484
  }
3354
3485
  await ctx.reply(`Running task: ${name}`);
@@ -3377,7 +3508,7 @@ ${lines.join("\n") || "(no runs)"}
3377
3508
  if (placeholderId !== void 0 && ctx.editReply) await ctx.editReply(placeholderId, body);
3378
3509
  else await ctx.reply(body, { parseMode: "Markdown" });
3379
3510
  } catch (err) {
3380
- logAndSwallow(TAG8, "read task history", err);
3511
+ logAndSwallow(TAG9, "read task history", err);
3381
3512
  const msg = "\u274C Failed to read history";
3382
3513
  if (placeholderId !== void 0 && ctx.editReply) await ctx.editReply(placeholderId, msg);
3383
3514
  else await ctx.reply(msg);
@@ -3403,7 +3534,7 @@ async function handleTaskPause(text, ctx) {
3403
3534
  }
3404
3535
  async function handleKanban(text, ctx) {
3405
3536
  try {
3406
- const { kanbanList } = await import("./kanban-board-J6RO3ZU7.js");
3537
+ const { kanbanList } = await import("./kanban-board-4AI5Z6B5.js");
3407
3538
  const arg = text.replace(/^\/kanban\s*/, "").trim();
3408
3539
  const ALLOWED_FILTERS = /* @__PURE__ */ new Set(["status", "source", "priority", "labels", "type"]);
3409
3540
  let filterVal;
@@ -3453,9 +3584,9 @@ async function handleKanban(text, ctx) {
3453
3584
  }
3454
3585
  async function handleChannel(text, ctx) {
3455
3586
  const args = text.replace(/^\/channel\s*/i, "").trim();
3456
- const { channelRead, channelPost } = await import("./kanban-channel-5EIXBFSA.js");
3587
+ const { channelRead, channelPost } = await import("./kanban-channel-JMBYWGWD.js");
3457
3588
  if (!args) {
3458
- const { kanbanList } = await import("./kanban-board-J6RO3ZU7.js");
3589
+ const { kanbanList } = await import("./kanban-board-4AI5Z6B5.js");
3459
3590
  const active = kanbanList("running");
3460
3591
  if (active.length === 0) {
3461
3592
  await ctx.reply("No active channels.");
@@ -3501,7 +3632,7 @@ ${lines.join("\n")}`);
3501
3632
  async function handleTodo(_text, ctx) {
3502
3633
  const { existsSync, readFileSync: readFileSync3 } = await import("node:fs");
3503
3634
  const { join: join4 } = await import("node:path");
3504
- const { abtarsHome: abtarsHome2 } = await import("./paths-RZF6WDMG.js");
3635
+ const { abtarsHome: abtarsHome2 } = await import("./paths-MZC2KU2C.js");
3505
3636
  const todoPath = join4(abtarsHome2(), "workspace", "todo", "todo.md");
3506
3637
  if (!existsSync(todoPath)) {
3507
3638
  await ctx.reply("Todo list is empty.");
@@ -3518,16 +3649,16 @@ async function handleTodo(_text, ctx) {
3518
3649
 
3519
3650
  // src/components/commands/handlers-admin.ts
3520
3651
  init_log_and_swallow();
3521
- var TAG9 = "cmd_admin";
3652
+ var TAG10 = "cmd_admin";
3522
3653
  async function handleUsers(text, ctx) {
3523
- const { loadUsers: loadUsers2 } = await import("./user-registry-6PUJJ5J2.js");
3654
+ const { loadUsers: loadUsers2 } = await import("./user-registry-OYJVAHDD.js");
3524
3655
  const parts = text.trim().split(/\s+/);
3525
3656
  const sub = parts[1];
3526
3657
  if (sub === "approve" && parts[2]) {
3527
3658
  const platformId = parts[2];
3528
3659
  const { writeFileSync: writeFileSync2, readFileSync: readFileSync3 } = await import("node:fs");
3529
3660
  const { join: join4 } = await import("node:path");
3530
- const { abtarsHome: abtarsHome2 } = await import("./paths-RZF6WDMG.js");
3661
+ const { abtarsHome: abtarsHome2 } = await import("./paths-MZC2KU2C.js");
3531
3662
  const configPath = join4(abtarsHome2(), "config", "users.json");
3532
3663
  try {
3533
3664
  const raw = JSON.parse(readFileSync3(configPath, "utf-8"));
@@ -3549,7 +3680,7 @@ async function handleUsers(text, ctx) {
3549
3680
  const targetUserId = parts[2];
3550
3681
  const { writeFileSync: writeFileSync2, readFileSync: readFileSync3 } = await import("node:fs");
3551
3682
  const { join: join4 } = await import("node:path");
3552
- const { abtarsHome: abtarsHome2 } = await import("./paths-RZF6WDMG.js");
3683
+ const { abtarsHome: abtarsHome2 } = await import("./paths-MZC2KU2C.js");
3553
3684
  const configPath = join4(abtarsHome2(), "config", "users.json");
3554
3685
  try {
3555
3686
  const raw = JSON.parse(readFileSync3(configPath, "utf-8"));
@@ -3581,19 +3712,19 @@ async function handleSkills(text, ctx) {
3581
3712
  await ctx.reply("Usage: /skill run <name>");
3582
3713
  return true;
3583
3714
  }
3584
- const { launchSkill } = await import("./skill-session-BPDVA6ZG.js");
3715
+ const { launchSkill } = await import("./skill-session-H6EQ4NGN.js");
3585
3716
  const err = await launchSkill(skillName, ctx.userId, String(ctx.chatId));
3586
3717
  await ctx.reply(err ?? `* Skill "${skillName}" started.`);
3587
3718
  return true;
3588
3719
  }
3589
3720
  if (args === "stop") {
3590
- const { endSkillSession } = await import("./skill-session-BPDVA6ZG.js");
3721
+ const { endSkillSession } = await import("./skill-session-H6EQ4NGN.js");
3591
3722
  const ended = await endSkillSession(String(ctx.chatId));
3592
3723
  await ctx.reply(ended ? "* Skill session ended." : "No active skill session.");
3593
3724
  return true;
3594
3725
  }
3595
3726
  if (args === "list") {
3596
- const { listRunnableSkills } = await import("./skill-session-BPDVA6ZG.js");
3727
+ const { listRunnableSkills } = await import("./skill-session-H6EQ4NGN.js");
3597
3728
  const skills2 = listRunnableSkills();
3598
3729
  if (skills2.length === 0) {
3599
3730
  await ctx.reply("No runnable skills (no skill.json found).");
@@ -3607,12 +3738,12 @@ Use: /skill run <name>`);
3607
3738
  return true;
3608
3739
  }
3609
3740
  if (text.includes("reload")) {
3610
- const { reloadCatalog } = await import("./hotskills-6FQYTJIO.js");
3741
+ const { reloadCatalog } = await import("./hotskills-AOUWVTQB.js");
3611
3742
  const count = reloadCatalog();
3612
3743
  await ctx.reply(`Reloaded \u2014 ${count} skills available.`);
3613
3744
  return true;
3614
3745
  }
3615
- const { getSkillCache } = await import("./hotskills-6FQYTJIO.js");
3746
+ const { getSkillCache } = await import("./hotskills-AOUWVTQB.js");
3616
3747
  const skills = getSkillCache();
3617
3748
  if (skills.length === 0) {
3618
3749
  await ctx.reply("\u{1F4DA} No skills loaded.");
@@ -3639,7 +3770,7 @@ ${sections.join("\n\n")}`);
3639
3770
  return true;
3640
3771
  }
3641
3772
  async function handleHooks(_text, ctx) {
3642
- const { getHookSummary } = await import("./hook-system-X6INNJGV.js");
3773
+ const { getHookSummary } = await import("./hook-system-Z4XD6IM5.js");
3643
3774
  const summary = getHookSummary();
3644
3775
  const lines = ["\u{1FA9D} Hooks:"];
3645
3776
  for (const { event, hooks } of summary) {
@@ -3655,7 +3786,7 @@ async function handleHooks(_text, ctx) {
3655
3786
  async function handleMcp(_text, ctx) {
3656
3787
  const arg = _text.replace(/^\/mcp\s*/i, "").trim().toLowerCase();
3657
3788
  if (arg === "start") {
3658
- const { loadUsers: loadUsers2 } = await import("./user-registry-6PUJJ5J2.js");
3789
+ const { loadUsers: loadUsers2 } = await import("./user-registry-OYJVAHDD.js");
3659
3790
  const registry = loadUsers2();
3660
3791
  const user = registry.byUserId.get(ctx.userId);
3661
3792
  if (user?.role !== "master") {
@@ -3696,7 +3827,7 @@ ${result}` : "\u{1F4E6} mcporter daemon start failed.");
3696
3827
  }
3697
3828
  body = lines.join("\n");
3698
3829
  } catch (err) {
3699
- logAndSwallow(TAG9, "JSON.parse mcp list", err);
3830
+ logAndSwallow(TAG10, "JSON.parse mcp list", err);
3700
3831
  body = "\u{1F4E6} MCP: installed, list output unparseable";
3701
3832
  }
3702
3833
  }
@@ -3763,7 +3894,7 @@ ${cmds.join("\n")}`);
3763
3894
  return true;
3764
3895
  }
3765
3896
  async function handlePeers(_text, ctx) {
3766
- const { getPeerTable } = await import("./gossip-CS3G3447.js");
3897
+ const { getPeerTable } = await import("./gossip-VSEY2HSE.js");
3767
3898
  const peers = getPeerTable(true);
3768
3899
  if (peers.length === 0) {
3769
3900
  await ctx.reply("No peers configured or gossip not started.");
@@ -3788,11 +3919,11 @@ ${peers.length} peer(s) (${alive} alive, ${peers.length - alive} dead)`);
3788
3919
  init_logger();
3789
3920
  init_log_and_swallow();
3790
3921
  init_spin_types();
3791
- var TAG10 = "cmd:session";
3922
+ var TAG11 = "cmd:session";
3792
3923
  async function handleSession(text, ctx) {
3793
3924
  const args = text.replace(/^\/session\s*/i, "").trim();
3794
3925
  if (!args) {
3795
- const { getMasterUserId } = await import("./master-user-Z4M7KCJE.js");
3926
+ const { getMasterUserId } = await import("./master-user-TKA7M2GL.js");
3796
3927
  const isMaster = ctx.userId === getMasterUserId();
3797
3928
  await ctx.reply(ctx.sessionManager.formatList(ctx.userId, ctx.platform, isMaster));
3798
3929
  return true;
@@ -3811,7 +3942,7 @@ async function handleSession(text, ctx) {
3811
3942
  }
3812
3943
  await ctx.reply(`\u2713 Session #${result.shortIndex} (${typeLabel(sessionType(result))}) created.`);
3813
3944
  ctx.sessionManager.greetSession(result, ctx.chatId, ctx.userId);
3814
- logInfo(TAG10, `New session ${result.id} for ${ctx.userId}`);
3945
+ logInfo(TAG11, `New session ${result.id} for ${ctx.userId}`);
3815
3946
  return true;
3816
3947
  }
3817
3948
  if (args.startsWith("end")) {
@@ -3827,7 +3958,7 @@ async function handleSession(text, ctx) {
3827
3958
  return true;
3828
3959
  }
3829
3960
  await ctx.reply(`\u2713 Session #${result.shortIndex} (${typeLabel(sessionType(result))}) ended.`);
3830
- logInfo(TAG10, `Ended session ${result.id}`);
3961
+ logInfo(TAG11, `Ended session ${result.id}`);
3831
3962
  return true;
3832
3963
  }
3833
3964
  if (args.startsWith("kill")) {
@@ -3847,11 +3978,11 @@ async function handleSession(text, ctx) {
3847
3978
  const db = ctx.memory.db;
3848
3979
  if (db) db.prepare("DELETE FROM messages WHERE session_id = ?").run(result.id);
3849
3980
  } catch (err) {
3850
- logAndSwallow(TAG10, "delete session messages", err);
3981
+ logAndSwallow(TAG11, "delete session messages", err);
3851
3982
  }
3852
3983
  }
3853
3984
  await ctx.reply(`\u{1F5D1}\uFE0F Session #${result.shortIndex} (${typeLabel(sessionType(result))}) killed.`);
3854
- logInfo(TAG10, `Killed session ${result.id}`);
3985
+ logInfo(TAG11, `Killed session ${result.id}`);
3855
3986
  return true;
3856
3987
  }
3857
3988
  if (args.startsWith("pause")) {
@@ -3867,7 +3998,7 @@ async function handleSession(text, ctx) {
3867
3998
  return true;
3868
3999
  }
3869
4000
  await ctx.reply(`\u23F8 Session #${result.shortIndex} (${typeLabel(sessionType(result))}) paused.`);
3870
- logInfo(TAG10, `Paused session ${result.id}`);
4001
+ logInfo(TAG11, `Paused session ${result.id}`);
3871
4002
  return true;
3872
4003
  }
3873
4004
  if (args.startsWith("resume")) {
@@ -3883,7 +4014,7 @@ async function handleSession(text, ctx) {
3883
4014
  return true;
3884
4015
  }
3885
4016
  await ctx.reply(`\u25B6\uFE0F Session #${result.shortIndex} (${typeLabel(sessionType(result))}) resumed.`);
3886
- logInfo(TAG10, `Resumed session ${result.id}`);
4017
+ logInfo(TAG11, `Resumed session ${result.id}`);
3887
4018
  return true;
3888
4019
  }
3889
4020
  const index = parseInt(args, 10);
@@ -3894,7 +4025,7 @@ async function handleSession(text, ctx) {
3894
4025
  return true;
3895
4026
  }
3896
4027
  await ctx.reply(`\u{1F500} Switched to session #${result.shortIndex} (${typeLabel(sessionType(result))}).`);
3897
- logInfo(TAG10, `Switched to session ${result.id}`);
4028
+ logInfo(TAG11, `Switched to session ${result.id}`);
3898
4029
  return true;
3899
4030
  }
3900
4031
  await ctx.reply("Usage: /session [new [browse|code|task] | end [#] | kill <#> | pause [#] | resume [#] | <#>]");
@@ -3962,6 +4093,7 @@ registerPrefix("/tasks pause ", handleTaskPause);
3962
4093
  registerPrefix("/tasks resume ", handleTaskPause);
3963
4094
 
3964
4095
  export {
4096
+ loadNLMConfig,
3965
4097
  cleanResponse,
3966
4098
  registerCommand,
3967
4099
  handleCommand,
@@ -3974,4 +4106,4 @@ export {
3974
4106
  resetAndPrepare,
3975
4107
  handleInboundMessage
3976
4108
  };
3977
- //# sourceMappingURL=chunk-M6Q3IQ4H.js.map
4109
+ //# sourceMappingURL=chunk-FF2F7ENH.js.map