abtars 0.3.4-alpha.8 → 0.3.4
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.
- package/bundle/{_registry.generated-YP5GLSG7.js → _registry.generated-AVR7DK2A.js} +15 -15
- package/bundle/{abmind-lazy-7Z44NODV.js → abmind-lazy-E3YCFKQ5.js} +15 -5
- package/bundle/abtars-browser.js +4 -4
- package/bundle/abtars-cli.js +23 -13
- package/bundle/abtars-cli.js.map +2 -2
- package/bundle/abtars-restart.js +3 -3
- package/bundle/abtars-task.js +3 -3
- package/bundle/abtars.js +385 -466
- package/bundle/abtars.js.map +4 -4
- package/bundle/{acp-raw-client-E6FM45NC.js → acp-raw-client-UCNK3OTU.js} +2 -2
- package/bundle/{action-gate-G2V47NHW.js → action-gate-V4FCBHFB.js} +2 -2
- package/bundle/{agent-api-adapter-WRGEQ6DV.js → agent-api-adapter-7HEPYSIN.js} +3 -3
- package/bundle/{agent-api-rate-limit-WCFXJMGY.js → agent-api-rate-limit-RZSAM3SW.js} +4 -4
- package/bundle/{agent-registry-GHNG2PH3.js → agent-registry-46A2R5KP.js} +7 -7
- package/bundle/{bootstrap-PZIDBPEJ.js → bootstrap-MIHJJSWU.js} +2 -2
- package/bundle/{bridge-lock-transport-4ZH7QTJP.js → bridge-lock-transport-7RSN7OLJ.js} +4 -4
- package/bundle/{browser-D3LZV7ZK.js → browser-F6BCWJWW.js} +6 -6
- package/bundle/{budget-45QOBDWA.js → budget-WUM3SPKW.js} +3 -3
- package/bundle/{capability-JFWX3IQF.js → capability-QVRKGRFC.js} +5 -5
- package/bundle/{chunk-YSKCQH6E.js → chunk-2IYJ4I66.js} +2 -2
- package/bundle/{chunk-W2R2HFOQ.js → chunk-2NLUT5S2.js} +6 -6
- package/bundle/chunk-3BG3AIDP.js +191 -0
- package/bundle/chunk-3BG3AIDP.js.map +7 -0
- package/bundle/{chunk-OKAQICWY.js → chunk-3GQX34S2.js} +3 -3
- package/bundle/{chunk-QROWBWLL.js → chunk-3XZ773BS.js} +2 -2
- package/bundle/{chunk-DYBW4XXL.js → chunk-467SRLLR.js} +2 -2
- package/bundle/{chunk-374NCXFZ.js → chunk-4AILRHUI.js} +10 -8
- package/bundle/chunk-4AILRHUI.js.map +7 -0
- package/bundle/{chunk-GPZNXY2U.js → chunk-4S3H4OK7.js} +4 -4
- package/bundle/{chunk-NDCRWEEJ.js → chunk-4Y5MJQRE.js} +6 -6
- package/bundle/{chunk-FRKW6LWB.js → chunk-55UWKI5C.js} +3 -3
- package/bundle/{chunk-7JN2MMU7.js → chunk-5PNJFDSW.js} +8 -8
- package/bundle/{chunk-LUNA6PM5.js → chunk-5RVOEFGT.js} +4 -2
- package/bundle/{chunk-LUNA6PM5.js.map → chunk-5RVOEFGT.js.map} +2 -2
- package/bundle/{chunk-OXTSWQCX.js → chunk-5Y3FJ2Y7.js} +2 -2
- package/bundle/{chunk-TMUYFERL.js → chunk-6B5ZFUPD.js} +2 -2
- package/bundle/{chunk-65VCEC32.js → chunk-6PA5JBUU.js} +2 -2
- package/bundle/{chunk-C7K6VZNY.js → chunk-BNXV7SZI.js} +21 -12
- package/bundle/chunk-BNXV7SZI.js.map +7 -0
- package/bundle/{chunk-AFREM7FX.js → chunk-CK7YTA2F.js} +2 -2
- package/bundle/{chunk-NRUSRJXR.js → chunk-DZJ5QZFD.js} +2 -2
- package/bundle/{chunk-YRSMGJFP.js → chunk-E67KESEG.js} +2 -2
- package/bundle/{chunk-ZV4IWKDJ.js → chunk-E7XD5UGB.js} +3 -3
- package/bundle/{chunk-CXXU3HAU.js → chunk-EAX5ZZUL.js} +63 -39
- package/bundle/chunk-EAX5ZZUL.js.map +7 -0
- package/bundle/{chunk-PEDX56EL.js → chunk-EFGBM555.js} +2 -2
- package/bundle/{chunk-EQSG2CRM.js → chunk-FGYDIX54.js} +22 -15
- package/bundle/chunk-FGYDIX54.js.map +7 -0
- package/bundle/{chunk-YPAQEQSC.js → chunk-GF6NVNA7.js} +15 -5
- package/bundle/chunk-GF6NVNA7.js.map +7 -0
- package/bundle/{chunk-UNM3OXHB.js → chunk-HGSHCQ5F.js} +110 -72
- package/bundle/{chunk-UNM3OXHB.js.map → chunk-HGSHCQ5F.js.map} +2 -2
- package/bundle/{chunk-VXCETPZU.js → chunk-IMIGG5EO.js} +39 -39
- package/bundle/chunk-IMIGG5EO.js.map +7 -0
- package/bundle/{chunk-P2K2K6XL.js → chunk-ITOFPJAV.js} +44 -32
- package/bundle/chunk-ITOFPJAV.js.map +7 -0
- package/bundle/{chunk-75ATTOW4.js → chunk-IY6UKLPS.js} +3 -3
- package/bundle/{chunk-EUZDKV3C.js → chunk-J4RUFAPK.js} +3 -3
- package/bundle/{chunk-HZDLFLRP.js → chunk-J7DRPVMU.js} +35 -5
- package/bundle/chunk-J7DRPVMU.js.map +7 -0
- package/bundle/{chunk-EGL6UMAO.js → chunk-JG4BKXBN.js} +7 -1
- package/bundle/chunk-JG4BKXBN.js.map +7 -0
- package/bundle/{chunk-N4EB6LA7.js → chunk-JLWYPGWI.js} +5 -5
- package/bundle/{chunk-5QUTMUIK.js → chunk-JXYWDAHD.js} +12 -12
- package/bundle/{chunk-GRVWZO4C.js → chunk-KOSFXW2S.js} +24 -3
- package/bundle/{chunk-GRVWZO4C.js.map → chunk-KOSFXW2S.js.map} +1 -1
- package/bundle/{chunk-M3JEX6L4.js → chunk-L72RIPEC.js} +9 -9
- package/bundle/{chunk-TEFZ4JA4.js → chunk-NHPLD3C7.js} +2 -2
- package/bundle/{chunk-2KC5G3EA.js → chunk-OWUO5RS3.js} +5 -5
- package/bundle/{chunk-4MULJ5SS.js → chunk-OY4Q6AMY.js} +71 -49
- package/bundle/chunk-OY4Q6AMY.js.map +7 -0
- package/bundle/{chunk-WBTJ2E62.js → chunk-P3NODAHF.js} +2 -5
- package/bundle/{chunk-WBTJ2E62.js.map → chunk-P3NODAHF.js.map} +2 -2
- package/bundle/{chunk-SMPHE3ZM.js → chunk-PB5GF4FG.js} +215 -163
- package/bundle/chunk-PB5GF4FG.js.map +7 -0
- package/bundle/{chunk-WYHGNI56.js → chunk-PMD5BLFS.js} +6 -6
- package/bundle/{chunk-URQPDCK5.js → chunk-Q66LQMMZ.js} +3 -3
- package/bundle/{chunk-IHYKTDIP.js → chunk-SC2Y5NR2.js} +36 -119
- package/bundle/chunk-SC2Y5NR2.js.map +7 -0
- package/bundle/chunk-SFL4EPCZ.js +555 -0
- package/bundle/chunk-SFL4EPCZ.js.map +7 -0
- package/bundle/{chunk-LDUOOKQY.js → chunk-SJPUNDZ3.js} +5 -5
- package/bundle/{chunk-LDUOOKQY.js.map → chunk-SJPUNDZ3.js.map} +1 -1
- package/bundle/{chunk-JQDJPUHM.js → chunk-TWB2ZGVH.js} +2 -2
- package/bundle/{chunk-IJT4KWXT.js → chunk-U4U47YE7.js} +2 -2
- package/bundle/{chunk-2FAZIA37.js → chunk-W546CU3A.js} +3 -3
- package/bundle/chunk-WC5O5KOE.js +211 -0
- package/bundle/chunk-WC5O5KOE.js.map +7 -0
- package/bundle/{chunk-JNIHEDKF.js → chunk-XPWYDNWL.js} +2 -2
- package/bundle/{chunk-GWILHZPT.js → chunk-XRTXYN66.js} +10 -7
- package/bundle/{chunk-GWILHZPT.js.map → chunk-XRTXYN66.js.map} +2 -2
- package/bundle/{chunk-EFJVUJBE.js → chunk-Y5FEFKGM.js} +6 -6
- package/bundle/chunk-YJZE4OK3.js +169 -0
- package/bundle/chunk-YJZE4OK3.js.map +7 -0
- package/bundle/{chunk-GVM5YU5I.js → chunk-Z4FZPB42.js} +2 -2
- package/bundle/{chunk-7BSQ5UQO.js → chunk-ZSIDQ66D.js} +3 -3
- package/bundle/{chunk-XX6BGTPO.js → chunk-ZZZCJJEO.js} +4 -4
- package/bundle/{commands-OIISYHTD.js → commands-2ZW6CMLC.js} +17 -16
- package/bundle/{config-M3P5IOAI.js → config-YMY5YHKN.js} +6 -6
- package/bundle/{context-2RJHC2LE.js → context-CL2RSLII.js} +7 -5
- package/bundle/context-CL2RSLII.js.map +7 -0
- package/bundle/{daemon-TB23FFWY.js → daemon-D7SU63OY.js} +3 -3
- package/bundle/{delegation-tools-YATZFKYO.js → delegation-tools-WS7Z56KZ.js} +12 -12
- package/bundle/{deploy-T6R45OZJ.js → deploy-AMTVKIMU.js} +2 -2
- package/bundle/{deps-WVK553KF.js → deps-T63AVJKJ.js} +3 -3
- package/bundle/{direct-api-transport-S2RDH2I7.js → direct-api-transport-QNNY2WWP.js} +51 -32
- package/bundle/direct-api-transport-QNNY2WWP.js.map +7 -0
- package/bundle/{discord-adapter-UTXUWX3A.js → discord-adapter-ABAD56Y2.js} +21 -20
- package/bundle/{discord-adapter-UTXUWX3A.js.map → discord-adapter-ABAD56Y2.js.map} +1 -1
- package/bundle/{dns-wakeup-IDOJIXBX.js → dns-wakeup-V3LEFXPE.js} +9 -33
- package/bundle/dns-wakeup-V3LEFXPE.js.map +7 -0
- package/bundle/{doctor-probes-B54JFIW3.js → doctor-probes-O6YI6XSZ.js} +6 -2
- package/bundle/{env-schema-4JXQUOH4.js → env-schema-B5RB32DC.js} +3 -3
- package/bundle/{gossip-3C3BSNPN.js → gossip-SKRCPOBS.js} +9 -5
- package/bundle/{guardrails-DL7ZSWVN.js → guardrails-64GQ5Y5K.js} +4 -4
- package/bundle/{heartbeat-system-MVTRS4GP.js → heartbeat-system-X4MUTKJD.js} +6 -6
- package/bundle/{heartbeat-tier3-6KH45CL6.js → heartbeat-tier3-2PTPWEQQ.js} +53 -76
- package/bundle/heartbeat-tier3-2PTPWEQQ.js.map +7 -0
- package/bundle/{hook-system-M3POLUIB.js → hook-system-YB635OC4.js} +3 -3
- package/bundle/{hotskills-FWX4QI7V.js → hotskills-Q75D2DK3.js} +5 -5
- package/bundle/{install-OS3CU7NF.js → install-RFKKFSGS.js} +17 -30
- package/bundle/install-RFKKFSGS.js.map +7 -0
- package/bundle/{install-manifest-5PPWMD2W.js → install-manifest-J7ICPCJN.js} +2 -2
- package/bundle/{irc-adapter-PTTZD32W.js → irc-adapter-TVEV4R6H.js} +3 -3
- package/bundle/{irc-config-CP7ZMUOX.js → irc-config-M676FOFI.js} +4 -4
- package/bundle/{kanban-board-M326B2XJ.js → kanban-board-DLEJUCNN.js} +9 -7
- package/bundle/{kanban-channel-IJ52OMNA.js → kanban-channel-XOLUHJZJ.js} +6 -6
- package/bundle/kanban-delivery-C4QPBNPX.js +45 -0
- package/bundle/kanban-delivery-C4QPBNPX.js.map +7 -0
- package/bundle/{lazy-require-KCRVT4SI.js → lazy-require-JKQSALXN.js} +3 -3
- package/bundle/{logger-OWCSNYCA.js → logger-3EGHBD4R.js} +2 -2
- package/bundle/{main-chat-ZNUZCTNS.js → main-chat-3H63REKK.js} +4 -4
- package/bundle/{master-user-HSKM4ZFN.js → master-user-MUBUP3KD.js} +5 -5
- package/bundle/{media-utils-3ZYOD7SK.js → media-utils-HUUIALAJ.js} +3 -3
- package/bundle/{message-pipeline-AUIUNM5R.js → message-pipeline-GRDRWONR.js} +17 -16
- package/bundle/meta.json +2773 -2241
- package/bundle/{metrics-collector-L3VPEHII.js → metrics-collector-YMUGY3PI.js} +31 -2
- package/bundle/metrics-collector-YMUGY3PI.js.map +7 -0
- package/bundle/{model-health-registry-MLEIZSTV.js → model-health-registry-QADMFQFQ.js} +2 -2
- package/bundle/{nerve-IGSXBKZZ.js → nerve-QPAEBRKX.js} +3 -3
- package/bundle/{notification-BFSIEECG.js → notification-3JICGXWU.js} +6 -6
- package/bundle/{openrouter-credits-NTVZDRYM.js → openrouter-credits-7NEIPYJN.js} +3 -3
- package/bundle/{orc-tools-TOD4WHTM.js → orc-tools-UZVPONKY.js} +5 -3
- package/bundle/{peer-auth-QC4EF2PM.js → peer-auth-RI43DKJE.js} +24 -15
- package/bundle/{peer-client-RGEU5HOK.js → peer-client-UITTMWJ2.js} +34 -29
- package/bundle/peer-client-UITTMWJ2.js.map +7 -0
- package/bundle/{peer-config-TN55LFDC.js → peer-config-URM7DCW6.js} +9 -4
- package/bundle/{peer-transport-5VKK2I7P.js → peer-transport-SI7I72DB.js} +12 -10
- package/bundle/{phase-transport-FS6NL4A5.js → phase-transport-ESWWACZI.js} +17 -17
- package/bundle/{reconcile-CTFCLQRN.js → reconcile-GFDQYNBD.js} +3 -3
- package/bundle/{reconciler-NZ4O4BCP.js → reconciler-IEUJXJN2.js} +12 -12
- package/bundle/{restore-IFHPI7I7.js → restore-FARTGLQQ.js} +3 -3
- package/bundle/{rollback-ANRI3T5Z.js → rollback-GEWPZABG.js} +2 -2
- package/bundle/{sandbox-runtime-QROWHDCS.js → sandbox-runtime-DV6E25J6.js} +2 -2
- package/bundle/{self-healer-utils-IFAYOQO2.js → self-healer-utils-P4SKNNEM.js} +3 -3
- package/bundle/{sha-tracker-ZWBP6CIJ.js → sha-tracker-77SHLYNY.js} +3 -3
- package/bundle/{skill-session-VJXTKOKL.js → skill-session-5HSMXY54.js} +3 -3
- package/bundle/{skill-stats-JORH5DGM.js → skill-stats-MI3RSWWL.js} +4 -4
- package/bundle/{skill-watcher-E4MGLKLS.js → skill-watcher-5L7JE6TN.js} +4 -4
- package/bundle/{sleep-BEWAUFCL.js → sleep-I4JFASCY.js} +11 -11
- package/bundle/{soul-bundle-VWAVHCZ6.js → soul-bundle-522C3IRH.js} +9 -8
- package/bundle/{spin-E3ZDEDKT.js → spin-VHNGNWTD.js} +11 -11
- package/bundle/{spin-notifications-SE2HVZI7.js → spin-notifications-7NC5XZEM.js} +5 -5
- package/bundle/{spin-types-OIE67MJK.js → spin-types-C5KOQOPD.js} +7 -3
- package/bundle/{sse-parser-anthropic-A6R4Z2TB.js → sse-parser-anthropic-MMTVWHLI.js} +3 -3
- package/bundle/{sse-parser-responses-HSZY3QGJ.js → sse-parser-responses-3AOFN64C.js} +3 -3
- package/bundle/{ssrf-guard-O6SHIK6Q.js → ssrf-guard-U2JA72TC.js} +3 -3
- package/bundle/{start-7QZIWO3S.js → start-H5IUFAWF.js} +4 -2
- package/bundle/{start-7QZIWO3S.js.map → start-H5IUFAWF.js.map} +2 -2
- package/bundle/{stt-LGVPXMVR.js → stt-PSOPPBV4.js} +4 -4
- package/bundle/{system-status-FAVNIUFJ.js → system-status-4LYGOFNO.js} +38 -24
- package/bundle/system-status-4LYGOFNO.js.map +7 -0
- package/bundle/{task-store-W5BFIAIH.js → task-store-MNCW42BW.js} +4 -4
- package/bundle/{telegram-adapter-4TX7QWKC.js → telegram-adapter-O6KIZDY6.js} +62 -45
- package/bundle/telegram-adapter-O6KIZDY6.js.map +7 -0
- package/bundle/{tool-registry-7FK3OQGL.js → tool-registry-JJMWCQKZ.js} +26 -24
- package/bundle/{tool-sandbox-4UC6GAKA.js → tool-sandbox-CNL6V6IH.js} +4 -4
- package/bundle/{transport-config-KBF5W2DP.js → transport-config-6MB2K2XC.js} +7 -7
- package/bundle/tribe-GDTFYJTK.js +111 -0
- package/bundle/tribe-GDTFYJTK.js.map +7 -0
- package/bundle/{update-CKFP6LBE.js → update-HGQAOC5L.js} +3 -3
- package/bundle/{usage-tracker-NXD364VX.js → usage-tracker-SR4BI6ZT.js} +2 -2
- package/bundle/{user-registry-35BW4XKM.js → user-registry-4PACZJIJ.js} +4 -4
- package/bundle/wire-platform-KKPWNNNQ.js +88 -0
- package/bundle/wire-platform-KKPWNNNQ.js.map +7 -0
- package/bundle/ws-peer-client-U3NNPOK7.js +370 -0
- package/bundle/ws-peer-client-U3NNPOK7.js.map +7 -0
- package/package.json +1 -1
- package/scripts/abtars-watchdog.sh +1 -5
- package/scripts/emergency-deploy.sh +2 -2
- package/scripts/emergency-update.sh +36 -37
- package/bundle/chunk-374NCXFZ.js.map +0 -7
- package/bundle/chunk-4MULJ5SS.js.map +0 -7
- package/bundle/chunk-4S554KLW.js +0 -105
- package/bundle/chunk-4S554KLW.js.map +0 -7
- package/bundle/chunk-C7K6VZNY.js.map +0 -7
- package/bundle/chunk-CXXU3HAU.js.map +0 -7
- package/bundle/chunk-EGL6UMAO.js.map +0 -7
- package/bundle/chunk-EQSG2CRM.js.map +0 -7
- package/bundle/chunk-HT2BPTZY.js +0 -241
- package/bundle/chunk-HT2BPTZY.js.map +0 -7
- package/bundle/chunk-HZDLFLRP.js.map +0 -7
- package/bundle/chunk-IHYKTDIP.js.map +0 -7
- package/bundle/chunk-IKUZPMVA.js +0 -82
- package/bundle/chunk-IKUZPMVA.js.map +0 -7
- package/bundle/chunk-P2K2K6XL.js.map +0 -7
- package/bundle/chunk-PU5HSKWH.js +0 -257
- package/bundle/chunk-PU5HSKWH.js.map +0 -7
- package/bundle/chunk-RWRRGE4U.js +0 -72
- package/bundle/chunk-RWRRGE4U.js.map +0 -7
- package/bundle/chunk-SMPHE3ZM.js.map +0 -7
- package/bundle/chunk-VUIX5AGB.js +0 -65
- package/bundle/chunk-VUIX5AGB.js.map +0 -7
- package/bundle/chunk-VXCETPZU.js.map +0 -7
- package/bundle/chunk-YPAQEQSC.js.map +0 -7
- package/bundle/context-2RJHC2LE.js.map +0 -7
- package/bundle/direct-api-transport-S2RDH2I7.js.map +0 -7
- package/bundle/dns-wakeup-IDOJIXBX.js.map +0 -7
- package/bundle/heartbeat-tier3-6KH45CL6.js.map +0 -7
- package/bundle/install-OS3CU7NF.js.map +0 -7
- package/bundle/metrics-collector-L3VPEHII.js.map +0 -7
- package/bundle/peer-client-RGEU5HOK.js.map +0 -7
- package/bundle/peer-jwt-NCCPXJRX.js +0 -18
- package/bundle/stream-single-RFJNUTL6.js +0 -34
- package/bundle/stream-single-RFJNUTL6.js.map +0 -7
- package/bundle/system-status-FAVNIUFJ.js.map +0 -7
- package/bundle/telegram-adapter-4TX7QWKC.js.map +0 -7
- package/bundle/user-registry-35BW4XKM.js.map +0 -7
- package/bundle/ws-peer-client-AIXCXF7V.js +0 -173
- package/bundle/ws-peer-client-AIXCXF7V.js.map +0 -7
- /package/bundle/{_registry.generated-YP5GLSG7.js.map → _registry.generated-AVR7DK2A.js.map} +0 -0
- /package/bundle/{abmind-lazy-7Z44NODV.js.map → abmind-lazy-E3YCFKQ5.js.map} +0 -0
- /package/bundle/{acp-raw-client-E6FM45NC.js.map → acp-raw-client-UCNK3OTU.js.map} +0 -0
- /package/bundle/{action-gate-G2V47NHW.js.map → action-gate-V4FCBHFB.js.map} +0 -0
- /package/bundle/{agent-api-adapter-WRGEQ6DV.js.map → agent-api-adapter-7HEPYSIN.js.map} +0 -0
- /package/bundle/{agent-api-rate-limit-WCFXJMGY.js.map → agent-api-rate-limit-RZSAM3SW.js.map} +0 -0
- /package/bundle/{agent-registry-GHNG2PH3.js.map → agent-registry-46A2R5KP.js.map} +0 -0
- /package/bundle/{bootstrap-PZIDBPEJ.js.map → bootstrap-MIHJJSWU.js.map} +0 -0
- /package/bundle/{bridge-lock-transport-4ZH7QTJP.js.map → bridge-lock-transport-7RSN7OLJ.js.map} +0 -0
- /package/bundle/{browser-D3LZV7ZK.js.map → browser-F6BCWJWW.js.map} +0 -0
- /package/bundle/{budget-45QOBDWA.js.map → budget-WUM3SPKW.js.map} +0 -0
- /package/bundle/{capability-JFWX3IQF.js.map → capability-QVRKGRFC.js.map} +0 -0
- /package/bundle/{chunk-YSKCQH6E.js.map → chunk-2IYJ4I66.js.map} +0 -0
- /package/bundle/{chunk-W2R2HFOQ.js.map → chunk-2NLUT5S2.js.map} +0 -0
- /package/bundle/{chunk-OKAQICWY.js.map → chunk-3GQX34S2.js.map} +0 -0
- /package/bundle/{chunk-QROWBWLL.js.map → chunk-3XZ773BS.js.map} +0 -0
- /package/bundle/{chunk-DYBW4XXL.js.map → chunk-467SRLLR.js.map} +0 -0
- /package/bundle/{chunk-GPZNXY2U.js.map → chunk-4S3H4OK7.js.map} +0 -0
- /package/bundle/{chunk-NDCRWEEJ.js.map → chunk-4Y5MJQRE.js.map} +0 -0
- /package/bundle/{chunk-FRKW6LWB.js.map → chunk-55UWKI5C.js.map} +0 -0
- /package/bundle/{chunk-7JN2MMU7.js.map → chunk-5PNJFDSW.js.map} +0 -0
- /package/bundle/{chunk-OXTSWQCX.js.map → chunk-5Y3FJ2Y7.js.map} +0 -0
- /package/bundle/{chunk-TMUYFERL.js.map → chunk-6B5ZFUPD.js.map} +0 -0
- /package/bundle/{chunk-65VCEC32.js.map → chunk-6PA5JBUU.js.map} +0 -0
- /package/bundle/{chunk-AFREM7FX.js.map → chunk-CK7YTA2F.js.map} +0 -0
- /package/bundle/{chunk-NRUSRJXR.js.map → chunk-DZJ5QZFD.js.map} +0 -0
- /package/bundle/{chunk-YRSMGJFP.js.map → chunk-E67KESEG.js.map} +0 -0
- /package/bundle/{chunk-ZV4IWKDJ.js.map → chunk-E7XD5UGB.js.map} +0 -0
- /package/bundle/{chunk-PEDX56EL.js.map → chunk-EFGBM555.js.map} +0 -0
- /package/bundle/{chunk-75ATTOW4.js.map → chunk-IY6UKLPS.js.map} +0 -0
- /package/bundle/{chunk-EUZDKV3C.js.map → chunk-J4RUFAPK.js.map} +0 -0
- /package/bundle/{chunk-N4EB6LA7.js.map → chunk-JLWYPGWI.js.map} +0 -0
- /package/bundle/{chunk-5QUTMUIK.js.map → chunk-JXYWDAHD.js.map} +0 -0
- /package/bundle/{chunk-M3JEX6L4.js.map → chunk-L72RIPEC.js.map} +0 -0
- /package/bundle/{chunk-TEFZ4JA4.js.map → chunk-NHPLD3C7.js.map} +0 -0
- /package/bundle/{chunk-2KC5G3EA.js.map → chunk-OWUO5RS3.js.map} +0 -0
- /package/bundle/{chunk-WYHGNI56.js.map → chunk-PMD5BLFS.js.map} +0 -0
- /package/bundle/{chunk-URQPDCK5.js.map → chunk-Q66LQMMZ.js.map} +0 -0
- /package/bundle/{chunk-JQDJPUHM.js.map → chunk-TWB2ZGVH.js.map} +0 -0
- /package/bundle/{chunk-IJT4KWXT.js.map → chunk-U4U47YE7.js.map} +0 -0
- /package/bundle/{chunk-2FAZIA37.js.map → chunk-W546CU3A.js.map} +0 -0
- /package/bundle/{chunk-JNIHEDKF.js.map → chunk-XPWYDNWL.js.map} +0 -0
- /package/bundle/{chunk-EFJVUJBE.js.map → chunk-Y5FEFKGM.js.map} +0 -0
- /package/bundle/{chunk-GVM5YU5I.js.map → chunk-Z4FZPB42.js.map} +0 -0
- /package/bundle/{chunk-7BSQ5UQO.js.map → chunk-ZSIDQ66D.js.map} +0 -0
- /package/bundle/{chunk-XX6BGTPO.js.map → chunk-ZZZCJJEO.js.map} +0 -0
- /package/bundle/{commands-OIISYHTD.js.map → commands-2ZW6CMLC.js.map} +0 -0
- /package/bundle/{config-M3P5IOAI.js.map → config-YMY5YHKN.js.map} +0 -0
- /package/bundle/{daemon-TB23FFWY.js.map → daemon-D7SU63OY.js.map} +0 -0
- /package/bundle/{delegation-tools-YATZFKYO.js.map → delegation-tools-WS7Z56KZ.js.map} +0 -0
- /package/bundle/{deploy-T6R45OZJ.js.map → deploy-AMTVKIMU.js.map} +0 -0
- /package/bundle/{deps-WVK553KF.js.map → deps-T63AVJKJ.js.map} +0 -0
- /package/bundle/{doctor-probes-B54JFIW3.js.map → doctor-probes-O6YI6XSZ.js.map} +0 -0
- /package/bundle/{env-schema-4JXQUOH4.js.map → env-schema-B5RB32DC.js.map} +0 -0
- /package/bundle/{gossip-3C3BSNPN.js.map → gossip-SKRCPOBS.js.map} +0 -0
- /package/bundle/{guardrails-DL7ZSWVN.js.map → guardrails-64GQ5Y5K.js.map} +0 -0
- /package/bundle/{heartbeat-system-MVTRS4GP.js.map → heartbeat-system-X4MUTKJD.js.map} +0 -0
- /package/bundle/{hook-system-M3POLUIB.js.map → hook-system-YB635OC4.js.map} +0 -0
- /package/bundle/{hotskills-FWX4QI7V.js.map → hotskills-Q75D2DK3.js.map} +0 -0
- /package/bundle/{install-manifest-5PPWMD2W.js.map → install-manifest-J7ICPCJN.js.map} +0 -0
- /package/bundle/{irc-adapter-PTTZD32W.js.map → irc-adapter-TVEV4R6H.js.map} +0 -0
- /package/bundle/{irc-config-CP7ZMUOX.js.map → irc-config-M676FOFI.js.map} +0 -0
- /package/bundle/{kanban-board-M326B2XJ.js.map → kanban-board-DLEJUCNN.js.map} +0 -0
- /package/bundle/{kanban-channel-IJ52OMNA.js.map → kanban-channel-XOLUHJZJ.js.map} +0 -0
- /package/bundle/{lazy-require-KCRVT4SI.js.map → lazy-require-JKQSALXN.js.map} +0 -0
- /package/bundle/{logger-OWCSNYCA.js.map → logger-3EGHBD4R.js.map} +0 -0
- /package/bundle/{main-chat-ZNUZCTNS.js.map → main-chat-3H63REKK.js.map} +0 -0
- /package/bundle/{master-user-HSKM4ZFN.js.map → master-user-MUBUP3KD.js.map} +0 -0
- /package/bundle/{media-utils-3ZYOD7SK.js.map → media-utils-HUUIALAJ.js.map} +0 -0
- /package/bundle/{message-pipeline-AUIUNM5R.js.map → message-pipeline-GRDRWONR.js.map} +0 -0
- /package/bundle/{model-health-registry-MLEIZSTV.js.map → model-health-registry-QADMFQFQ.js.map} +0 -0
- /package/bundle/{nerve-IGSXBKZZ.js.map → nerve-QPAEBRKX.js.map} +0 -0
- /package/bundle/{notification-BFSIEECG.js.map → notification-3JICGXWU.js.map} +0 -0
- /package/bundle/{openrouter-credits-NTVZDRYM.js.map → openrouter-credits-7NEIPYJN.js.map} +0 -0
- /package/bundle/{orc-tools-TOD4WHTM.js.map → orc-tools-UZVPONKY.js.map} +0 -0
- /package/bundle/{peer-auth-QC4EF2PM.js.map → peer-auth-RI43DKJE.js.map} +0 -0
- /package/bundle/{peer-config-TN55LFDC.js.map → peer-config-URM7DCW6.js.map} +0 -0
- /package/bundle/{peer-jwt-NCCPXJRX.js.map → peer-transport-SI7I72DB.js.map} +0 -0
- /package/bundle/{peer-transport-5VKK2I7P.js.map → phase-transport-ESWWACZI.js.map} +0 -0
- /package/bundle/{phase-transport-FS6NL4A5.js.map → reconcile-GFDQYNBD.js.map} +0 -0
- /package/bundle/{reconciler-NZ4O4BCP.js.map → reconciler-IEUJXJN2.js.map} +0 -0
- /package/bundle/{restore-IFHPI7I7.js.map → restore-FARTGLQQ.js.map} +0 -0
- /package/bundle/{reconcile-CTFCLQRN.js.map → rollback-GEWPZABG.js.map} +0 -0
- /package/bundle/{sandbox-runtime-QROWHDCS.js.map → sandbox-runtime-DV6E25J6.js.map} +0 -0
- /package/bundle/{self-healer-utils-IFAYOQO2.js.map → self-healer-utils-P4SKNNEM.js.map} +0 -0
- /package/bundle/{rollback-ANRI3T5Z.js.map → sha-tracker-77SHLYNY.js.map} +0 -0
- /package/bundle/{skill-session-VJXTKOKL.js.map → skill-session-5HSMXY54.js.map} +0 -0
- /package/bundle/{sha-tracker-ZWBP6CIJ.js.map → skill-stats-MI3RSWWL.js.map} +0 -0
- /package/bundle/{skill-stats-JORH5DGM.js.map → skill-watcher-5L7JE6TN.js.map} +0 -0
- /package/bundle/{skill-watcher-E4MGLKLS.js.map → sleep-I4JFASCY.js.map} +0 -0
- /package/bundle/{sleep-BEWAUFCL.js.map → soul-bundle-522C3IRH.js.map} +0 -0
- /package/bundle/{soul-bundle-VWAVHCZ6.js.map → spin-VHNGNWTD.js.map} +0 -0
- /package/bundle/{spin-notifications-SE2HVZI7.js.map → spin-notifications-7NC5XZEM.js.map} +0 -0
- /package/bundle/{spin-E3ZDEDKT.js.map → spin-types-C5KOQOPD.js.map} +0 -0
- /package/bundle/{sse-parser-anthropic-A6R4Z2TB.js.map → sse-parser-anthropic-MMTVWHLI.js.map} +0 -0
- /package/bundle/{sse-parser-responses-HSZY3QGJ.js.map → sse-parser-responses-3AOFN64C.js.map} +0 -0
- /package/bundle/{ssrf-guard-O6SHIK6Q.js.map → ssrf-guard-U2JA72TC.js.map} +0 -0
- /package/bundle/{spin-types-OIE67MJK.js.map → stt-PSOPPBV4.js.map} +0 -0
- /package/bundle/{stt-LGVPXMVR.js.map → task-store-MNCW42BW.js.map} +0 -0
- /package/bundle/{task-store-W5BFIAIH.js.map → tool-registry-JJMWCQKZ.js.map} +0 -0
- /package/bundle/{tool-registry-7FK3OQGL.js.map → tool-sandbox-CNL6V6IH.js.map} +0 -0
- /package/bundle/{tool-sandbox-4UC6GAKA.js.map → transport-config-6MB2K2XC.js.map} +0 -0
- /package/bundle/{transport-config-KBF5W2DP.js.map → update-HGQAOC5L.js.map} +0 -0
- /package/bundle/{update-CKFP6LBE.js.map → usage-tracker-SR4BI6ZT.js.map} +0 -0
- /package/bundle/{usage-tracker-NXD364VX.js.map → user-registry-4PACZJIJ.js.map} +0 -0
|
@@ -5,34 +5,34 @@ import {
|
|
|
5
5
|
} from "./chunk-63A7ZRIH.js";
|
|
6
6
|
import {
|
|
7
7
|
transcribeAudio
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-3GQX34S2.js";
|
|
9
9
|
import {
|
|
10
10
|
ModelNotFoundError
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-JXYWDAHD.js";
|
|
12
12
|
import {
|
|
13
13
|
fire,
|
|
14
14
|
hasHooks
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-DZJ5QZFD.js";
|
|
16
16
|
import {
|
|
17
17
|
init_spin_types,
|
|
18
18
|
parseSessionType,
|
|
19
19
|
sessionType,
|
|
20
20
|
typeLabel
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-BNXV7SZI.js";
|
|
22
22
|
import {
|
|
23
23
|
sanitizeOutbound
|
|
24
24
|
} from "./chunk-YWZPKBO6.js";
|
|
25
25
|
import {
|
|
26
26
|
abmind
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-YJZE4OK3.js";
|
|
28
28
|
import {
|
|
29
29
|
buildSoulBundle,
|
|
30
30
|
init_soul_bundle
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-Y5FEFKGM.js";
|
|
32
32
|
import {
|
|
33
33
|
init_user_registry,
|
|
34
34
|
loadUsers
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-E7XD5UGB.js";
|
|
36
36
|
import {
|
|
37
37
|
init_bridge_lock_transport,
|
|
38
38
|
readAndClearRestartReason,
|
|
@@ -40,10 +40,10 @@ import {
|
|
|
40
40
|
updateBridgeLockField,
|
|
41
41
|
writeForceSleep,
|
|
42
42
|
writeSleepStatus
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-KOSFXW2S.js";
|
|
44
44
|
import {
|
|
45
45
|
readEntries
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-EFGBM555.js";
|
|
47
47
|
import {
|
|
48
48
|
init_local_time,
|
|
49
49
|
localTime
|
|
@@ -51,11 +51,11 @@ import {
|
|
|
51
51
|
import {
|
|
52
52
|
getEnv,
|
|
53
53
|
init_env_schema
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-6PA5JBUU.js";
|
|
55
55
|
import {
|
|
56
56
|
init_log_and_swallow,
|
|
57
57
|
logAndSwallow
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-2IYJ4I66.js";
|
|
59
59
|
import {
|
|
60
60
|
init_logger,
|
|
61
61
|
logDebug,
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
logInfo,
|
|
64
64
|
logTrace,
|
|
65
65
|
logWarn
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-XRTXYN66.js";
|
|
67
67
|
import {
|
|
68
68
|
abtarsHome,
|
|
69
69
|
init_paths
|
|
@@ -822,7 +822,7 @@ var commandMiddleware = async (ctx, next) => {
|
|
|
822
822
|
updateCtxStart,
|
|
823
823
|
conversationBuffer
|
|
824
824
|
} = deps;
|
|
825
|
-
const { spin } = await import("./spin-
|
|
825
|
+
const { spin } = await import("./spin-VHNGNWTD.js");
|
|
826
826
|
const registry = loadUsers();
|
|
827
827
|
const resolvedUserId = msg.userId;
|
|
828
828
|
const user = registry.byUserId.get(resolvedUserId);
|
|
@@ -917,7 +917,7 @@ var busyGuardMiddleware = async (ctx, next) => {
|
|
|
917
917
|
const { msg, adapter, deps } = ctx;
|
|
918
918
|
const userId = msg.userId;
|
|
919
919
|
const activeId = deps.sessionManager.getActiveSessionId(userId, msg.platform);
|
|
920
|
-
const { spin } = await import("./spin-
|
|
920
|
+
const { spin } = await import("./spin-VHNGNWTD.js");
|
|
921
921
|
const entry = spin.getSessionById(activeId);
|
|
922
922
|
if (!entry) {
|
|
923
923
|
await next();
|
|
@@ -1050,7 +1050,7 @@ async function buildPrompt(msg, text, deps, registry) {
|
|
|
1050
1050
|
const userId = msg.userId;
|
|
1051
1051
|
const sessionKey = deps.sessionManager.getActiveSessionId(userId, msg.platform);
|
|
1052
1052
|
const bufKey = `${msg.platform}:${channelId}`;
|
|
1053
|
-
const { spin } = await import("./spin-
|
|
1053
|
+
const { spin } = await import("./spin-VHNGNWTD.js");
|
|
1054
1054
|
const pSession = spin.getSessionById(sessionKey);
|
|
1055
1055
|
let prompt = `[${localTime()}] ${text}`;
|
|
1056
1056
|
let imageContent;
|
|
@@ -1398,7 +1398,7 @@ function setIdleCompactReset(fn) {
|
|
|
1398
1398
|
async function resetAndPrepare(opts) {
|
|
1399
1399
|
await opts.transport.resetSession(opts.sessionKey);
|
|
1400
1400
|
if (opts.conversationBuffer && opts.bufKey) opts.conversationBuffer.clear(opts.bufKey);
|
|
1401
|
-
const { spin } = await import("./spin-
|
|
1401
|
+
const { spin } = await import("./spin-VHNGNWTD.js");
|
|
1402
1402
|
const pSession = spin.getSessionById(opts.sessionKey);
|
|
1403
1403
|
if (pSession) {
|
|
1404
1404
|
pSession.seen = false;
|
|
@@ -1428,8 +1428,8 @@ async function handleInboundMessage(msg, adapter, deps) {
|
|
|
1428
1428
|
return;
|
|
1429
1429
|
}
|
|
1430
1430
|
}
|
|
1431
|
-
const { spin } = await import("./spin-
|
|
1432
|
-
const { sessionType: sessionType2 } = await import("./spin-types-
|
|
1431
|
+
const { spin } = await import("./spin-VHNGNWTD.js");
|
|
1432
|
+
const { sessionType: sessionType2 } = await import("./spin-types-C5KOQOPD.js");
|
|
1433
1433
|
const switchedSession = spin.getActiveSession(msg.userId, msg.platform);
|
|
1434
1434
|
const switchedToLive = switchedSession?.transport && sessionType2(switchedSession) !== "A" && switchedSession.status === "ready";
|
|
1435
1435
|
if (switchedToLive) {
|
|
@@ -1521,7 +1521,7 @@ ${prompt}`;
|
|
|
1521
1521
|
const sessionTransport = activeSession.transport ?? transport;
|
|
1522
1522
|
logDebug(TAG3, `Route: session=${activeSessionId} type=${sessionType2(activeSession)} transport=${activeSession.transport ? "session" : "main"}`);
|
|
1523
1523
|
if ("sandboxPolicy" in sessionTransport) {
|
|
1524
|
-
const { buildPolicy } = await import("./tool-sandbox-
|
|
1524
|
+
const { buildPolicy } = await import("./tool-sandbox-CNL6V6IH.js");
|
|
1525
1525
|
sessionTransport.sandboxPolicy = buildPolicy("owner");
|
|
1526
1526
|
}
|
|
1527
1527
|
if ("isPaused" in sessionTransport) {
|
|
@@ -1543,6 +1543,8 @@ ${prompt}`;
|
|
|
1543
1543
|
userId,
|
|
1544
1544
|
await: true
|
|
1545
1545
|
}).then((r) => r.result ?? "");
|
|
1546
|
+
void responsePromise.catch(() => {
|
|
1547
|
+
});
|
|
1546
1548
|
if (!isVoice && adapter.setReaction && msg.messageId) {
|
|
1547
1549
|
await adapter.setReaction(channelId, msg.messageId, "\u{1F440}");
|
|
1548
1550
|
}
|
|
@@ -1806,19 +1808,21 @@ Use /model to switch.`, { threadId: msg.threadId });
|
|
|
1806
1808
|
}).catch((err2) => logAndSwallow(TAG3, "adapter call", err2));
|
|
1807
1809
|
}
|
|
1808
1810
|
const errStr = String(err instanceof Error ? err.message : JSON.stringify(err));
|
|
1811
|
+
const SYNTHETIC_PREFIXES = ["[SESSION START]", "[SYSTEM]", "[TASK COMPLETE]"];
|
|
1812
|
+
const notifyUser = !SYNTHETIC_PREFIXES.some((p) => text.startsWith(p));
|
|
1809
1813
|
const isContextOverflow = errStr.includes("ValidationException") || (errStr.includes("context window") || errStr.includes("token limit") || errStr.includes("maximum context"));
|
|
1810
1814
|
const isTimeout = errStr.includes("timed out") || errStr.includes("Prompt already in progress");
|
|
1811
1815
|
if (isContextOverflow) {
|
|
1812
1816
|
logWarn(TAG3, `Context overflow detected \u2014 auto-resetting session`);
|
|
1813
1817
|
await resetAndPrepare({ transport, sessionKey: activeSessionId, reason: `ctx-overflow: ${errStr.slice(0, 100)}` });
|
|
1814
|
-
await adapter.sendMessage(channelId, "\u{1F504} Context window full \u2014 session reset. Send your message again.", { threadId: msg.threadId }).catch((err2) => logAndSwallow(TAG3, "adapter call", err2));
|
|
1818
|
+
if (notifyUser) await adapter.sendMessage(channelId, "\u{1F504} Context window full \u2014 session reset. Send your message again.", { threadId: msg.threadId }).catch((err2) => logAndSwallow(TAG3, "adapter call", err2));
|
|
1815
1819
|
} else if (isTimeout) {
|
|
1816
1820
|
logWarn(TAG3, `Request timeout \u2014 not resetting session`);
|
|
1817
|
-
await adapter.sendMessage(channelId, "\u274C Model timed out.", { threadId: msg.threadId }).catch((err2) => logAndSwallow(TAG3, "adapter call", err2));
|
|
1821
|
+
if (notifyUser) await adapter.sendMessage(channelId, "\u274C Model timed out.", { threadId: msg.threadId }).catch((err2) => logAndSwallow(TAG3, "adapter call", err2));
|
|
1818
1822
|
} else {
|
|
1819
1823
|
logError(TAG3, `Pipeline error: ${errStr.slice(0, 500)}`);
|
|
1820
1824
|
const reason = errStr.includes("credits") ? "OpenRouter credits exhausted \u2014 top up at openrouter.ai/credits" : errStr.includes("rate") || errStr.includes("429") ? "Rate limited." : errStr.includes("auth") || errStr.includes("401") || errStr.includes("403") ? "Authentication failed." : errStr.includes("connect") || errStr.includes("ECONNREFUSED") ? "Connection lost." : errStr.includes("exhausted") || errStr.includes("no candidates") ? "All models exhausted." : errStr.includes("aborted") || errStr.includes("code=20") ? "Request aborted \u2014 model connection dropped." : `Error: ${errStr.slice(0, 80)}`;
|
|
1821
|
-
await adapter.sendMessage(channelId, `\u274C ${reason}`, { threadId: msg.threadId }).catch((err2) => logAndSwallow(TAG3, "adapter call", err2));
|
|
1825
|
+
if (notifyUser) await adapter.sendMessage(channelId, `\u274C ${reason}`, { threadId: msg.threadId }).catch((err2) => logAndSwallow(TAG3, "adapter call", err2));
|
|
1822
1826
|
}
|
|
1823
1827
|
} finally {
|
|
1824
1828
|
clearInterval(typingInterval);
|
|
@@ -1874,7 +1878,7 @@ function registerCommand(name, handler) {
|
|
|
1874
1878
|
registerExact(name, handler);
|
|
1875
1879
|
}
|
|
1876
1880
|
async function handleCommand(text, ctx) {
|
|
1877
|
-
const isMaster = !ctx.userId || ctx.userId === "master" || (await import("./user-registry-
|
|
1881
|
+
const isMaster = !ctx.userId || ctx.userId === "master" || (await import("./user-registry-4PACZJIJ.js")).loadUsers().byUserId.get(ctx.userId)?.role === "master";
|
|
1878
1882
|
if (!isMaster) {
|
|
1879
1883
|
const cmd = text.split(/\s/)[0];
|
|
1880
1884
|
if (cmd.startsWith("/") && !NON_MASTER_COMMANDS.has(cmd)) {
|
|
@@ -1908,7 +1912,7 @@ Type /help for available commands.`);
|
|
|
1908
1912
|
return false;
|
|
1909
1913
|
}
|
|
1910
1914
|
async function triggerNewSession(ctx, reason = "new-session") {
|
|
1911
|
-
const { hasHooks: hasHooks2, fire: fireHook } = await import("./hook-system-
|
|
1915
|
+
const { hasHooks: hasHooks2, fire: fireHook } = await import("./hook-system-YB635OC4.js");
|
|
1912
1916
|
if (hasHooks2("SessionEnd")) {
|
|
1913
1917
|
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));
|
|
1914
1918
|
}
|
|
@@ -1926,12 +1930,12 @@ async function triggerNewSession(ctx, reason = "new-session") {
|
|
|
1926
1930
|
}
|
|
1927
1931
|
}
|
|
1928
1932
|
async function triggerResetSession(ctx) {
|
|
1929
|
-
const { hasHooks: hasHooks2, fire: fireHook } = await import("./hook-system-
|
|
1933
|
+
const { hasHooks: hasHooks2, fire: fireHook } = await import("./hook-system-YB635OC4.js");
|
|
1930
1934
|
if (hasHooks2("SessionEnd")) {
|
|
1931
1935
|
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));
|
|
1932
1936
|
}
|
|
1933
1937
|
await ctx.idleSave.save(ctx.sessionKey, ctx.chatId);
|
|
1934
|
-
const { clearTransportCache } = await import("./transport-config-
|
|
1938
|
+
const { clearTransportCache } = await import("./transport-config-6MB2K2XC.js");
|
|
1935
1939
|
clearTransportCache();
|
|
1936
1940
|
if (ctx.rebuildTransport) await ctx.rebuildTransport();
|
|
1937
1941
|
await resetAndPrepare({
|
|
@@ -1995,7 +1999,7 @@ var TAG5 = "cmd";
|
|
|
1995
1999
|
async function handleNewReset(text, ctx) {
|
|
1996
2000
|
const isResetDefault = text.trim().toLowerCase() === "/reset default";
|
|
1997
2001
|
if (isResetDefault) {
|
|
1998
|
-
const { resetToDefaults } = await import("./transport-config-
|
|
2002
|
+
const { resetToDefaults } = await import("./transport-config-6MB2K2XC.js");
|
|
1999
2003
|
resetToDefaults();
|
|
2000
2004
|
} else {
|
|
2001
2005
|
try {
|
|
@@ -2017,17 +2021,29 @@ async function handleNewReset(text, ctx) {
|
|
|
2017
2021
|
}
|
|
2018
2022
|
async function handleCompact(_text, ctx) {
|
|
2019
2023
|
try {
|
|
2024
|
+
const { isCompactable } = await import("./spin-types-C5KOQOPD.js");
|
|
2025
|
+
if (!isCompactable(ctx.sessionKey)) {
|
|
2026
|
+
await ctx.reply("Compaction not available for this session.");
|
|
2027
|
+
return true;
|
|
2028
|
+
}
|
|
2020
2029
|
const transport = ctx.transport;
|
|
2021
2030
|
if (transport.contextOrchestrator) {
|
|
2022
2031
|
const budget = transport.config?.maxContext ?? 2e5;
|
|
2023
|
-
const
|
|
2024
|
-
|
|
2032
|
+
const result = await transport.contextOrchestrator.forceCompact(ctx.sessionKey, budget);
|
|
2033
|
+
if (result.skipped) {
|
|
2034
|
+
await ctx.reply("Compaction skipped (recent passes saved little \u2014 retry in ~30 min).");
|
|
2035
|
+
} else if (result.ok) {
|
|
2036
|
+
const pct = Math.round(result.savingsPct * 100);
|
|
2037
|
+
await ctx.reply(`Compaction complete. ${result.tokensBefore}\u2192${result.tokensAfter} tokens (${pct}% saved).`);
|
|
2038
|
+
} else {
|
|
2039
|
+
await ctx.reply("Nothing to compact.");
|
|
2040
|
+
}
|
|
2025
2041
|
} else {
|
|
2026
|
-
await ctx.reply("
|
|
2042
|
+
await ctx.reply("Context engine not active for this transport.");
|
|
2027
2043
|
}
|
|
2028
2044
|
} catch (err) {
|
|
2029
2045
|
logError(TAG5, "Manual compaction failed", err);
|
|
2030
|
-
await ctx.reply("
|
|
2046
|
+
await ctx.reply("Compaction failed.");
|
|
2031
2047
|
}
|
|
2032
2048
|
return true;
|
|
2033
2049
|
}
|
|
@@ -2035,7 +2051,7 @@ async function handleEmergencyAlias(_text, ctx) {
|
|
|
2035
2051
|
return handleModels("/model emergency", ctx);
|
|
2036
2052
|
}
|
|
2037
2053
|
async function handleModels(text, ctx) {
|
|
2038
|
-
const { loadTransport, resolveAgent, getModelsForProvider, writeTransportConfig } = await import("./transport-config-
|
|
2054
|
+
const { loadTransport, resolveAgent, getModelsForProvider, writeTransportConfig } = await import("./transport-config-6MB2K2XC.js");
|
|
2039
2055
|
const tc = loadTransport();
|
|
2040
2056
|
const prof = tc ? resolveAgent("professor", tc) : null;
|
|
2041
2057
|
const currentModel = ("currentModel" in ctx.transport ? ctx.transport.currentModel : void 0) ?? prof?.model ?? "unknown";
|
|
@@ -2053,8 +2069,8 @@ async function handleModels(text, ctx) {
|
|
|
2053
2069
|
if (tc) {
|
|
2054
2070
|
const hmProvider = tc.hailMary ? tc.providers[tc.hailMary.provider] : void 0;
|
|
2055
2071
|
if (hmProvider) {
|
|
2056
|
-
const { validateProviderReady, formatValidationError } = await import("./transport-config-
|
|
2057
|
-
const { getEnv: getEnv2 } = await import("./env-schema-
|
|
2072
|
+
const { validateProviderReady, formatValidationError } = await import("./transport-config-6MB2K2XC.js");
|
|
2073
|
+
const { getEnv: getEnv2 } = await import("./env-schema-B5RB32DC.js");
|
|
2058
2074
|
const result = validateProviderReady(tc.hailMary.provider, hmProvider, getEnv2());
|
|
2059
2075
|
if (!result.ok) {
|
|
2060
2076
|
await ctx.reply(formatValidationError(tc.hailMary.provider, result));
|
|
@@ -2067,7 +2083,7 @@ async function handleModels(text, ctx) {
|
|
|
2067
2083
|
return true;
|
|
2068
2084
|
}
|
|
2069
2085
|
if (arg === "restore") {
|
|
2070
|
-
const { restorePrevious } = await import("./transport-config-
|
|
2086
|
+
const { restorePrevious } = await import("./transport-config-6MB2K2XC.js");
|
|
2071
2087
|
const result = restorePrevious();
|
|
2072
2088
|
if (!result.ok) {
|
|
2073
2089
|
await ctx.reply(`\u274C ${result.error}`);
|
|
@@ -2079,7 +2095,7 @@ async function handleModels(text, ctx) {
|
|
|
2079
2095
|
return true;
|
|
2080
2096
|
}
|
|
2081
2097
|
if (arg === "default") {
|
|
2082
|
-
const { resetToDefaults } = await import("./transport-config-
|
|
2098
|
+
const { resetToDefaults } = await import("./transport-config-6MB2K2XC.js");
|
|
2083
2099
|
if (!resetToDefaults()) {
|
|
2084
2100
|
await ctx.reply("\u274C Factory config not found \u2014 run abtars install to restore.");
|
|
2085
2101
|
return true;
|
|
@@ -2087,15 +2103,15 @@ async function handleModels(text, ctx) {
|
|
|
2087
2103
|
await ctx.reply("\u{1F504} Factory config restored.");
|
|
2088
2104
|
return true;
|
|
2089
2105
|
}
|
|
2090
|
-
if (arg === "health reset" || arg === "primary") {
|
|
2106
|
+
if (arg === "health reset" || arg === "primary" || arg === "reset") {
|
|
2091
2107
|
const t = ctx.transport;
|
|
2092
2108
|
const wasEmergency = t.isEmergencyMode;
|
|
2093
2109
|
t.setEmergencyMode?.(null);
|
|
2094
2110
|
if (t.policy?.registry) {
|
|
2095
2111
|
t.policy.registry.resetAll();
|
|
2096
|
-
await ctx.reply(wasEmergency ? "
|
|
2112
|
+
await ctx.reply(wasEmergency ? "Model health reset + emergency mode cleared \u2014 primary model active." : "Model health reset \u2014 all models available (sticky credits/auth cleared).");
|
|
2097
2113
|
} else {
|
|
2098
|
-
await ctx.reply("
|
|
2114
|
+
await ctx.reply("No fallback policy configured.");
|
|
2099
2115
|
}
|
|
2100
2116
|
return true;
|
|
2101
2117
|
}
|
|
@@ -2105,7 +2121,7 @@ async function handleModels(text, ctx) {
|
|
|
2105
2121
|
return true;
|
|
2106
2122
|
}
|
|
2107
2123
|
const endpoint = prof.provider.endpoint ?? "http://localhost:11434/v1";
|
|
2108
|
-
const apiKey = prof.provider.apiKeyEnv ? (await import("./env-schema-
|
|
2124
|
+
const apiKey = prof.provider.apiKeyEnv ? (await import("./env-schema-B5RB32DC.js")).getEnv().getApiKey(prof.provider.apiKeyEnv) : void 0;
|
|
2109
2125
|
const models = /* @__PURE__ */ new Set();
|
|
2110
2126
|
for (const [, agent] of Object.entries(tc.agents)) {
|
|
2111
2127
|
if (agent.provider === prof.providerName) models.add(agent.model);
|
|
@@ -2116,7 +2132,7 @@ async function handleModels(text, ctx) {
|
|
|
2116
2132
|
if (tc.hailMary?.provider === prof.providerName) models.add(tc.hailMary.model);
|
|
2117
2133
|
await ctx.reply(`\u{1FA7A} Checking ${models.size} models on ${prof.providerName}...`);
|
|
2118
2134
|
const results = [];
|
|
2119
|
-
const { loadModels } = await import("./transport-config-
|
|
2135
|
+
const { loadModels } = await import("./transport-config-6MB2K2XC.js");
|
|
2120
2136
|
const catalog = loadModels();
|
|
2121
2137
|
for (const model of models) {
|
|
2122
2138
|
try {
|
|
@@ -2154,7 +2170,7 @@ async function handleModels(text, ctx) {
|
|
|
2154
2170
|
}
|
|
2155
2171
|
const { writeFileSync: writeFileSync2 } = await import("node:fs");
|
|
2156
2172
|
const { join: join4 } = await import("node:path");
|
|
2157
|
-
const { configDir } = await import("./transport-config-
|
|
2173
|
+
const { configDir } = await import("./transport-config-6MB2K2XC.js");
|
|
2158
2174
|
writeFileSync2(join4(configDir(), "models.json"), JSON.stringify(catalog, null, 2) + "\n");
|
|
2159
2175
|
await ctx.reply(`\u{1FA7A} Model Health:
|
|
2160
2176
|
${results.join("\n")}`);
|
|
@@ -2177,8 +2193,8 @@ ${results.join("\n")}`);
|
|
|
2177
2193
|
return true;
|
|
2178
2194
|
}
|
|
2179
2195
|
{
|
|
2180
|
-
const { validateProviderReady, formatValidationError } = await import("./transport-config-
|
|
2181
|
-
const { getEnv: getEnv2 } = await import("./env-schema-
|
|
2196
|
+
const { validateProviderReady, formatValidationError } = await import("./transport-config-6MB2K2XC.js");
|
|
2197
|
+
const { getEnv: getEnv2 } = await import("./env-schema-B5RB32DC.js");
|
|
2182
2198
|
const result = validateProviderReady(prof.providerName, prof.provider, getEnv2());
|
|
2183
2199
|
if (!result.ok) {
|
|
2184
2200
|
await ctx.reply(formatValidationError(prof.providerName, result));
|
|
@@ -2186,7 +2202,7 @@ ${results.join("\n")}`);
|
|
|
2186
2202
|
}
|
|
2187
2203
|
}
|
|
2188
2204
|
tc.agents["professor"].model = newModel;
|
|
2189
|
-
const { cleanDemotedModels } = await import("./transport-config-
|
|
2205
|
+
const { cleanDemotedModels } = await import("./transport-config-6MB2K2XC.js");
|
|
2190
2206
|
cleanDemotedModels(tc, newModel);
|
|
2191
2207
|
writeTransportConfig(tc, `professor model \u2192 ${newModel}`);
|
|
2192
2208
|
if ("setModel" in ctx.transport) {
|
|
@@ -2197,7 +2213,7 @@ ${results.join("\n")}`);
|
|
|
2197
2213
|
}
|
|
2198
2214
|
if (arg === "list" || arg.startsWith("list ")) {
|
|
2199
2215
|
const providerArg = arg.slice(5).trim();
|
|
2200
|
-
const { getAvailableProviders, getModelsForProvider: getModels } = await import("./transport-config-
|
|
2216
|
+
const { getAvailableProviders, getModelsForProvider: getModels } = await import("./transport-config-6MB2K2XC.js");
|
|
2201
2217
|
if (!tc) {
|
|
2202
2218
|
await ctx.reply("\u274C transport.json not loaded");
|
|
2203
2219
|
return true;
|
|
@@ -2255,8 +2271,8 @@ Use /model quick <name> to switch.`);
|
|
|
2255
2271
|
await ctx.reply(`\u274C Provider "${providerName}" not found. Available: ${Object.keys(tc.providers).join(", ")}`);
|
|
2256
2272
|
return true;
|
|
2257
2273
|
}
|
|
2258
|
-
const { validateProviderReady, formatValidationError, loadProviderDefaults } = await import("./transport-config-
|
|
2259
|
-
const { getEnv: getEnv2 } = await import("./env-schema-
|
|
2274
|
+
const { validateProviderReady, formatValidationError, loadProviderDefaults } = await import("./transport-config-6MB2K2XC.js");
|
|
2275
|
+
const { getEnv: getEnv2 } = await import("./env-schema-B5RB32DC.js");
|
|
2260
2276
|
const validation = validateProviderReady(providerName, provider2, getEnv2());
|
|
2261
2277
|
if (!validation.ok) {
|
|
2262
2278
|
await ctx.reply(formatValidationError(providerName, validation));
|
|
@@ -2366,7 +2382,7 @@ async function handleDoctor(_text, ctx) {
|
|
|
2366
2382
|
const arg = _text.replace(/^\/(doctor|health)\s*/i, "").trim().toLowerCase();
|
|
2367
2383
|
if (arg === "fix" || arg === "fix-full") {
|
|
2368
2384
|
try {
|
|
2369
|
-
const { runFixes, runAllProbes: runAllProbes2, renderHuman: renderHuman2 } = await import("./doctor-probes-
|
|
2385
|
+
const { runFixes, runAllProbes: runAllProbes2, renderHuman: renderHuman2 } = await import("./doctor-probes-O6YI6XSZ.js");
|
|
2370
2386
|
const fixes = await runFixes();
|
|
2371
2387
|
const fixLines = fixes.map((f) => ` ${f.success ? "+" : "x"} ${f.action}`).join("\n");
|
|
2372
2388
|
const output2 = await runAllProbes2();
|
|
@@ -2380,14 +2396,14 @@ ${renderHuman2(output2)}`);
|
|
|
2380
2396
|
return true;
|
|
2381
2397
|
}
|
|
2382
2398
|
await ctx.reply("\u{1FA7A} Running diagnostics...");
|
|
2383
|
-
const { runAllProbes, renderHuman } = await import("./doctor-probes-
|
|
2399
|
+
const { runAllProbes, renderHuman } = await import("./doctor-probes-O6YI6XSZ.js");
|
|
2384
2400
|
const output = await runAllProbes();
|
|
2385
2401
|
await ctx.reply(renderHuman(output));
|
|
2386
2402
|
return true;
|
|
2387
2403
|
}
|
|
2388
2404
|
async function handleStatus(_text, ctx) {
|
|
2389
2405
|
if (ctx.phaseHealth && ctx.registry) {
|
|
2390
|
-
const { getSystemStatus, renderStatusText } = await import("./system-status-
|
|
2406
|
+
const { getSystemStatus, renderStatusText } = await import("./system-status-4LYGOFNO.js");
|
|
2391
2407
|
const status = await getSystemStatus({
|
|
2392
2408
|
phaseHealth: ctx.phaseHealth,
|
|
2393
2409
|
registry: ctx.registry,
|
|
@@ -2398,7 +2414,7 @@ async function handleStatus(_text, ctx) {
|
|
|
2398
2414
|
});
|
|
2399
2415
|
let text = renderStatusText(status);
|
|
2400
2416
|
if (_text.trim().toLowerCase() === "full") {
|
|
2401
|
-
const { envDump } = await import("./env-schema-
|
|
2417
|
+
const { envDump } = await import("./env-schema-B5RB32DC.js");
|
|
2402
2418
|
const dump = envDump();
|
|
2403
2419
|
const envLines = Object.entries(dump).slice(0, 30).map(([k, v]) => ` ${k}: ${v}`);
|
|
2404
2420
|
text += "\n\n\u{1F4CB} Config (top 30):\n" + envLines.join("\n");
|
|
@@ -2420,7 +2436,7 @@ async function handleWait(text, ctx) {
|
|
|
2420
2436
|
}
|
|
2421
2437
|
async function handleStop(_text, ctx) {
|
|
2422
2438
|
await ctx.transport.sendInterrupt();
|
|
2423
|
-
const { spin } = await import("./spin-
|
|
2439
|
+
const { spin } = await import("./spin-VHNGNWTD.js");
|
|
2424
2440
|
const s = spin.getSessionById(ctx.sessionKey);
|
|
2425
2441
|
if (s) s.busy = false;
|
|
2426
2442
|
await ctx.reply("\u{1F6D1} Ctrl+C sent.");
|
|
@@ -2443,7 +2459,7 @@ async function handleRestart(_text, ctx) {
|
|
|
2443
2459
|
return true;
|
|
2444
2460
|
}
|
|
2445
2461
|
async function handleHeartbeat(_text, ctx) {
|
|
2446
|
-
const { getHeartbeatInstance } = await import("./heartbeat-system-
|
|
2462
|
+
const { getHeartbeatInstance } = await import("./heartbeat-system-X4MUTKJD.js");
|
|
2447
2463
|
const hb = getHeartbeatInstance();
|
|
2448
2464
|
if (!hb) {
|
|
2449
2465
|
await ctx.reply("\u{1F493} Heartbeat not available.");
|
|
@@ -2489,13 +2505,13 @@ async function handleHealing(text, ctx) {
|
|
|
2489
2505
|
return true;
|
|
2490
2506
|
}
|
|
2491
2507
|
if (cmd === "reset") {
|
|
2492
|
-
const { resetAutofixState } = await import("./sha-tracker-
|
|
2508
|
+
const { resetAutofixState } = await import("./sha-tracker-77SHLYNY.js");
|
|
2493
2509
|
resetAutofixState();
|
|
2494
2510
|
await ctx.reply("\u{1FA7A} Autofix state reset \u2014 all suppressed faults re-enabled.");
|
|
2495
2511
|
return true;
|
|
2496
2512
|
}
|
|
2497
2513
|
if (cmd === "list") {
|
|
2498
|
-
const { loadFixes } = await import("./sha-tracker-
|
|
2514
|
+
const { loadFixes } = await import("./sha-tracker-77SHLYNY.js");
|
|
2499
2515
|
const { readFileSync: readFileSync3 } = await import("node:fs");
|
|
2500
2516
|
const { join: join4 } = await import("node:path");
|
|
2501
2517
|
const fixes = loadFixes();
|
|
@@ -2525,7 +2541,7 @@ ${lines.join("\n")}`);
|
|
|
2525
2541
|
await ctx.reply("Usage: /healing approve <pattern>");
|
|
2526
2542
|
return true;
|
|
2527
2543
|
}
|
|
2528
|
-
const { approveFix } = await import("./sha-tracker-
|
|
2544
|
+
const { approveFix } = await import("./sha-tracker-77SHLYNY.js");
|
|
2529
2545
|
const ok = approveFix(pattern);
|
|
2530
2546
|
await ctx.reply(ok ? `\u2713 Approved: "${pattern}"` : `\u274C Pattern not found in self-rules.`);
|
|
2531
2547
|
return true;
|
|
@@ -2536,7 +2552,7 @@ ${lines.join("\n")}`);
|
|
|
2536
2552
|
await ctx.reply("Usage: /healing disable <pattern>");
|
|
2537
2553
|
return true;
|
|
2538
2554
|
}
|
|
2539
|
-
const { disableFix } = await import("./sha-tracker-
|
|
2555
|
+
const { disableFix } = await import("./sha-tracker-77SHLYNY.js");
|
|
2540
2556
|
const ok = disableFix(pattern);
|
|
2541
2557
|
await ctx.reply(ok ? `\u2713 Disabled: "${pattern}"` : `\u274C Pattern not found in self-rules.`);
|
|
2542
2558
|
return true;
|
|
@@ -2551,7 +2567,7 @@ async function handleFull(_text, ctx) {
|
|
|
2551
2567
|
await ctx.reply("\u{1F4FA} Full mode is only available on Telegram.");
|
|
2552
2568
|
return true;
|
|
2553
2569
|
}
|
|
2554
|
-
const { spin } = await import("./spin-
|
|
2570
|
+
const { spin } = await import("./spin-VHNGNWTD.js");
|
|
2555
2571
|
const s = spin.getSessionById(ctx.sessionKey);
|
|
2556
2572
|
if (s) s.fullMode = true;
|
|
2557
2573
|
await ctx.reply("\u{1F4FA} Full mode \u2014 sending raw output, TTS disabled.");
|
|
@@ -2562,7 +2578,7 @@ async function handleShort(_text, ctx) {
|
|
|
2562
2578
|
await ctx.reply("\u2702\uFE0F Short mode is only available on Telegram.");
|
|
2563
2579
|
return true;
|
|
2564
2580
|
}
|
|
2565
|
-
const { spin } = await import("./spin-
|
|
2581
|
+
const { spin } = await import("./spin-VHNGNWTD.js");
|
|
2566
2582
|
const s = spin.getSessionById(ctx.sessionKey);
|
|
2567
2583
|
if (s) s.fullMode = false;
|
|
2568
2584
|
await ctx.reply("\u2702\uFE0F Short mode \u2014 clean responses, TTS enabled.");
|
|
@@ -2588,7 +2604,7 @@ async function buildStatusLines(ctx) {
|
|
|
2588
2604
|
if ("currentModel" in ctx.transport) {
|
|
2589
2605
|
model = ctx.transport.currentModel;
|
|
2590
2606
|
} else {
|
|
2591
|
-
const { loadTransport, resolveAgent } = await import("./transport-config-
|
|
2607
|
+
const { loadTransport, resolveAgent } = await import("./transport-config-6MB2K2XC.js");
|
|
2592
2608
|
const tc2 = loadTransport();
|
|
2593
2609
|
const prof2 = tc2 ? resolveAgent("professor", tc2) : null;
|
|
2594
2610
|
model = prof2?.model ?? "unknown";
|
|
@@ -2596,9 +2612,9 @@ async function buildStatusLines(ctx) {
|
|
|
2596
2612
|
const transportStatus = ctx.transport.isReady ? "\u2713 Connected" : "\u274C Disconnected";
|
|
2597
2613
|
const uptime = formatUptime(Date.now() - ctx.startedAt);
|
|
2598
2614
|
const ctxPct = ctx.transport.contextPercent >= 0 ? `${ctx.transport.contextPercent}%` : "n/a";
|
|
2599
|
-
const { getHeartbeatInstance } = await import("./heartbeat-system-
|
|
2615
|
+
const { getHeartbeatInstance } = await import("./heartbeat-system-X4MUTKJD.js");
|
|
2600
2616
|
const hb = getHeartbeatInstance();
|
|
2601
|
-
const { loadTransport: lt, resolveAgent: ra } = await import("./transport-config-
|
|
2617
|
+
const { loadTransport: lt, resolveAgent: ra } = await import("./transport-config-6MB2K2XC.js");
|
|
2602
2618
|
const tc = lt();
|
|
2603
2619
|
const prof = tc ? ra("professor", tc) : null;
|
|
2604
2620
|
const provider = prof?.providerName ?? "unknown";
|
|
@@ -2671,8 +2687,8 @@ function formatUptime(ms) {
|
|
|
2671
2687
|
return h > 0 ? `${h}h ${m}m` : `${m}m`;
|
|
2672
2688
|
}
|
|
2673
2689
|
async function handleUsage(_text, ctx) {
|
|
2674
|
-
const { readUsage, resetUsage } = await import("./usage-tracker-
|
|
2675
|
-
const { loadModels } = await import("./transport-config-
|
|
2690
|
+
const { readUsage, resetUsage } = await import("./usage-tracker-SR4BI6ZT.js");
|
|
2691
|
+
const { loadModels } = await import("./transport-config-6MB2K2XC.js");
|
|
2676
2692
|
const arg = _text.replace("/usage", "").trim();
|
|
2677
2693
|
if (arg === "reset") {
|
|
2678
2694
|
resetUsage();
|
|
@@ -2723,13 +2739,13 @@ async function handleUsage(_text, ctx) {
|
|
|
2723
2739
|
`;
|
|
2724
2740
|
}
|
|
2725
2741
|
}
|
|
2726
|
-
const { fetchOpenRouterCredits } = await import("./openrouter-credits-
|
|
2742
|
+
const { fetchOpenRouterCredits } = await import("./openrouter-credits-7NEIPYJN.js");
|
|
2727
2743
|
const credits = await fetchOpenRouterCredits();
|
|
2728
2744
|
if (credits) {
|
|
2729
2745
|
msg += `
|
|
2730
2746
|
\u{1F4B3} OpenRouter: $${credits.remaining.toFixed(2)} remaining ($${credits.purchased.toFixed(2)} purchased, $${credits.used.toFixed(2)} used)`;
|
|
2731
2747
|
}
|
|
2732
|
-
const { getBudgetStatus } = await import("./budget-
|
|
2748
|
+
const { getBudgetStatus } = await import("./budget-WUM3SPKW.js");
|
|
2733
2749
|
const budgetItems = getBudgetStatus();
|
|
2734
2750
|
if (budgetItems.length > 0) {
|
|
2735
2751
|
msg += `
|
|
@@ -2746,7 +2762,7 @@ async function handleUsage(_text, ctx) {
|
|
|
2746
2762
|
return true;
|
|
2747
2763
|
}
|
|
2748
2764
|
async function handleOpenRouter(_text, ctx) {
|
|
2749
|
-
const { fetchOpenRouterCredits } = await import("./openrouter-credits-
|
|
2765
|
+
const { fetchOpenRouterCredits } = await import("./openrouter-credits-7NEIPYJN.js");
|
|
2750
2766
|
const credits = await fetchOpenRouterCredits();
|
|
2751
2767
|
if (!credits) {
|
|
2752
2768
|
await ctx.reply("\u274C OpenRouter API key not set or request failed.");
|
|
@@ -2762,7 +2778,7 @@ Remaining: $${credits.remaining.toFixed(2)}`
|
|
|
2762
2778
|
return true;
|
|
2763
2779
|
}
|
|
2764
2780
|
async function handleWhoami(_text, ctx) {
|
|
2765
|
-
const { loadUsers: loadUsers2 } = await import("./user-registry-
|
|
2781
|
+
const { loadUsers: loadUsers2 } = await import("./user-registry-4PACZJIJ.js");
|
|
2766
2782
|
const reg = loadUsers2();
|
|
2767
2783
|
const CLASS_NAMES = ["UNCLASSIFIED", "RESTRICTED", "CONFIDENTIAL", "SECRET"];
|
|
2768
2784
|
const user = ctx.userId ? reg.byUserId.get(ctx.userId) : void 0;
|
|
@@ -2802,10 +2818,8 @@ function makeExecHelper(spawnFn) {
|
|
|
2802
2818
|
});
|
|
2803
2819
|
}
|
|
2804
2820
|
async function runDevUpdate(ctx, spawnFn, execHelper) {
|
|
2805
|
-
const { existsSync: fsExistsSync } = await import("node:fs");
|
|
2806
2821
|
const releasesRoot = join2(process.env["HOME"] ?? "", ".abtars-releases", "src");
|
|
2807
2822
|
const abtarsDir = join2(releasesRoot, "abtars");
|
|
2808
|
-
const abmindDir = join2(releasesRoot, "abmind");
|
|
2809
2823
|
const execP = execHelper ?? makeExecHelper(spawnFn);
|
|
2810
2824
|
await ctx.reply("Checking for updates...");
|
|
2811
2825
|
const fetchResult = await execP("git", ["-C", abtarsDir, "fetch", "origin", "dev"], { timeout: 3e4 });
|
|
@@ -2839,38 +2853,8 @@ ${commits.slice(0, 300)}
|
|
|
2839
2853
|
try {
|
|
2840
2854
|
const co = await execP("git", ["-C", abtarsDir, "checkout", "origin/dev"], { timeout: 1e4 });
|
|
2841
2855
|
if (!co.ok) throw new Error(`checkout failed: ${co.stderr.slice(-300) || co.stdout.slice(-300)}`);
|
|
2842
|
-
const abmindGit = join2(abmindDir, ".git");
|
|
2843
|
-
if (!fsExistsSync(abmindGit)) {
|
|
2844
|
-
const cloneResult = await execP("git", ["clone", "--depth", "1", "-b", "dev", "https://github.com/aksika/abmind.git", abmindDir], { timeout: 12e4 });
|
|
2845
|
-
if (!cloneResult.ok) logWarn("update", "abmind clone failed \u2014 skipping abmind update");
|
|
2846
|
-
}
|
|
2847
|
-
if (fsExistsSync(abmindGit)) {
|
|
2848
|
-
await execP("git", ["-C", abmindDir, "fetch", "origin", "dev"], { timeout: 3e4 });
|
|
2849
|
-
await execP("git", ["-C", abmindDir, "checkout", "origin/dev"], { timeout: 1e4 });
|
|
2850
|
-
}
|
|
2851
2856
|
const build = await execP("node", ["esbuild.config.js"], { cwd: abtarsDir, timeout: 18e4 });
|
|
2852
2857
|
if (!build.ok) throw new Error(`build failed: ${build.stderr.slice(-400) || build.stdout.slice(-400)}`);
|
|
2853
|
-
const abmindGit2 = join2(abmindDir, ".git");
|
|
2854
|
-
if (ctx.memoryConfig.memoryEnabled && fsExistsSync(abmindGit2)) {
|
|
2855
|
-
let needAbmindUpdate = false;
|
|
2856
|
-
try {
|
|
2857
|
-
const manifestRaw = readFileSync(join2(homedir(), ".abmind", "manifest.json"), "utf-8");
|
|
2858
|
-
const mf = JSON.parse(manifestRaw);
|
|
2859
|
-
if (!mf.source || mf.source === "npm") {
|
|
2860
|
-
needAbmindUpdate = true;
|
|
2861
|
-
} else {
|
|
2862
|
-
const headCommit = (await execP("git", ["-C", abmindDir, "rev-parse", "--short", "HEAD"], { timeout: 5e3 })).stdout.trim();
|
|
2863
|
-
if (!headCommit || headCommit !== (mf.commit ?? "")) needAbmindUpdate = true;
|
|
2864
|
-
}
|
|
2865
|
-
} catch {
|
|
2866
|
-
needAbmindUpdate = true;
|
|
2867
|
-
}
|
|
2868
|
-
if (needAbmindUpdate) {
|
|
2869
|
-
const abmindProc = spawnFn("abmind", ["update", "--dev", abmindDir], { detached: true, stdio: "ignore" });
|
|
2870
|
-
abmindProc.on("error", (err) => logWarn("update", `spawn abmind failed (non-fatal): ${err.message}`));
|
|
2871
|
-
abmindProc.unref();
|
|
2872
|
-
}
|
|
2873
|
-
}
|
|
2874
2858
|
} catch (err) {
|
|
2875
2859
|
const msg = err instanceof Error ? err.message : String(err);
|
|
2876
2860
|
logWarn("update", `update aborted: ${msg}`);
|
|
@@ -2888,7 +2872,7 @@ async function handleSoftware(_text, ctx) {
|
|
|
2888
2872
|
const { abtarsHome: abtarsHome2 } = await import("./paths-X4LRYUI6.js");
|
|
2889
2873
|
const home = abtarsHome2();
|
|
2890
2874
|
const arg = _text.replace(/^\/(software|update)\s*/i, "").trim();
|
|
2891
|
-
const { loadUsers: loadUsers2 } = await import("./user-registry-
|
|
2875
|
+
const { loadUsers: loadUsers2 } = await import("./user-registry-4PACZJIJ.js");
|
|
2892
2876
|
const user = loadUsers2().byUserId.get(ctx.userId);
|
|
2893
2877
|
const isMaster = user?.role === "master";
|
|
2894
2878
|
if (arg.startsWith("rollback")) {
|
|
@@ -2908,7 +2892,7 @@ async function handleSoftware(_text, ctx) {
|
|
|
2908
2892
|
}
|
|
2909
2893
|
await ctx.reply(`\u26A0\uFE0F Rolling back to slot ${asSlot}...`);
|
|
2910
2894
|
try {
|
|
2911
|
-
const { rollback } = await import("./rollback-
|
|
2895
|
+
const { rollback } = await import("./rollback-GEWPZABG.js");
|
|
2912
2896
|
const code = await rollback({ to: asSlot });
|
|
2913
2897
|
if (code !== 0) {
|
|
2914
2898
|
await ctx.reply(`\u274C Rollback failed (exit ${code}).`);
|
|
@@ -2918,6 +2902,29 @@ async function handleSoftware(_text, ctx) {
|
|
|
2918
2902
|
}
|
|
2919
2903
|
return true;
|
|
2920
2904
|
}
|
|
2905
|
+
if (arg === "abmind" || arg === "update abmind") {
|
|
2906
|
+
if (!isMaster) {
|
|
2907
|
+
await ctx.reply("Requires master role.");
|
|
2908
|
+
return true;
|
|
2909
|
+
}
|
|
2910
|
+
await ctx.reply("Updating abmind from dev (pull + build + install)...");
|
|
2911
|
+
logInfo("update", "abmind dev update requested");
|
|
2912
|
+
const { spawn: spawn3 } = await import("node:child_process");
|
|
2913
|
+
const child = spawn3("abmind", ["update", "--dev"], { stdio: ["ignore", "pipe", "pipe"] });
|
|
2914
|
+
let stderr = "";
|
|
2915
|
+
child.on("error", (err) => logWarn("update", `spawn abmind failed (non-fatal): ${err.message}`));
|
|
2916
|
+
child.stderr?.on("data", (d) => {
|
|
2917
|
+
stderr += d.toString();
|
|
2918
|
+
});
|
|
2919
|
+
child.on("close", (code) => {
|
|
2920
|
+
if (code !== 0 && code !== null) ctx.reply(`x abmind update failed (exit ${code}):
|
|
2921
|
+
${stderr.slice(-300)}`).catch(() => {
|
|
2922
|
+
});
|
|
2923
|
+
else ctx.reply("+ abmind update complete \u2014 check /software").catch(() => {
|
|
2924
|
+
});
|
|
2925
|
+
});
|
|
2926
|
+
return true;
|
|
2927
|
+
}
|
|
2921
2928
|
if (arg === "update" || arg === "update dev" || arg === "dev" || arg === "update git" || arg === "git" || arg === "update alpha" || arg === "alpha" || arg === "update stable" || arg === "stable" || arg === "update deploy" || arg === "deploy" || arg === "update pull" || arg === "pull" || arg === "update build" || arg === "build") {
|
|
2922
2929
|
if (arg === "update") {
|
|
2923
2930
|
await ctx.reply("Usage: /update dev | alpha | stable");
|
|
@@ -2946,9 +2953,6 @@ async function handleSoftware(_text, ctx) {
|
|
|
2946
2953
|
${stderr.slice(-300)}`).catch(() => {
|
|
2947
2954
|
});
|
|
2948
2955
|
});
|
|
2949
|
-
if (ctx.memoryConfig.memoryEnabled) {
|
|
2950
|
-
spawnDetached("abmind", ["update", "--alpha"], "update");
|
|
2951
|
-
}
|
|
2952
2956
|
} else {
|
|
2953
2957
|
await ctx.reply("Updating from npm (stable)...");
|
|
2954
2958
|
logInfo("update", "npm stable update requested");
|
|
@@ -2964,9 +2968,6 @@ ${stderr.slice(-300)}`).catch(() => {
|
|
|
2964
2968
|
${stderr.slice(-300)}`).catch(() => {
|
|
2965
2969
|
});
|
|
2966
2970
|
});
|
|
2967
|
-
if (ctx.memoryConfig.memoryEnabled) {
|
|
2968
|
-
spawnDetached("abmind", ["update", "--stable"], "update");
|
|
2969
|
-
}
|
|
2970
2971
|
}
|
|
2971
2972
|
return true;
|
|
2972
2973
|
}
|
|
@@ -3017,7 +3018,7 @@ ${stderr.slice(-300)}`).catch(() => {
|
|
|
3017
3018
|
lines.push(" abtars: unknown");
|
|
3018
3019
|
}
|
|
3019
3020
|
lines.push("");
|
|
3020
|
-
const { getEnv: getEnv2 } = await import("./env-schema-
|
|
3021
|
+
const { getEnv: getEnv2 } = await import("./env-schema-B5RB32DC.js");
|
|
3021
3022
|
const memoryProvider = getEnv2().memory;
|
|
3022
3023
|
if (memoryProvider === "abmind" || memoryProvider === "auto") {
|
|
3023
3024
|
const abmindBundlePkg = join2(home, "app", "bundle", "node_modules", "abmind", "package.json");
|
|
@@ -3108,7 +3109,7 @@ ${stderr.slice(-300)}`).catch(() => {
|
|
|
3108
3109
|
return true;
|
|
3109
3110
|
}
|
|
3110
3111
|
async function handleMetrics(_text, ctx) {
|
|
3111
|
-
const { getMetricsSummary } = await import("./metrics-collector-
|
|
3112
|
+
const { getMetricsSummary } = await import("./metrics-collector-YMUGY3PI.js");
|
|
3112
3113
|
const s = getMetricsSummary();
|
|
3113
3114
|
const lines = ["Metrics (recent window):"];
|
|
3114
3115
|
const models = Object.entries(s.llm);
|
|
@@ -3128,6 +3129,10 @@ Recall: p50=${s.recall.p50}ms p95=${s.recall.p95}ms (${s.recall.calls} calls)`);
|
|
|
3128
3129
|
const rate = s.sleep.calls > 0 ? Math.round((1 - s.sleep.failures / s.sleep.calls) * 100) : 100;
|
|
3129
3130
|
lines.push(`
|
|
3130
3131
|
Sleep: ${s.sleep.calls} runs, ${rate}% success`);
|
|
3132
|
+
}
|
|
3133
|
+
if (s.compaction) {
|
|
3134
|
+
lines.push(`
|
|
3135
|
+
Compaction: ${s.compaction.count} passes (${s.compaction.failures} failed), p50=${s.compaction.p50}ms p95=${s.compaction.p95}ms, avg ${s.compaction.avgSavingsPct}% saved`);
|
|
3131
3136
|
}
|
|
3132
3137
|
lines.push(`
|
|
3133
3138
|
Cron depth: avg=${s.cronDepth.avg} max=${s.cronDepth.max}`);
|
|
@@ -3482,7 +3487,7 @@ async function handleTasksList(_text, ctx) {
|
|
|
3482
3487
|
const now = (/* @__PURE__ */ new Date()).toLocaleString("en-GB", { timeZone: tz, dateStyle: "medium", timeStyle: "medium" });
|
|
3483
3488
|
let listing;
|
|
3484
3489
|
try {
|
|
3485
|
-
const { readEntries: readEntries2 } = await import("./task-store-
|
|
3490
|
+
const { readEntries: readEntries2 } = await import("./task-store-MNCW42BW.js");
|
|
3486
3491
|
const entries = readEntries2();
|
|
3487
3492
|
const active = entries.filter((e) => !e.fired);
|
|
3488
3493
|
active.sort((a, b) => {
|
|
@@ -3547,7 +3552,7 @@ async function handleTasksTrigger(text, ctx) {
|
|
|
3547
3552
|
return true;
|
|
3548
3553
|
}
|
|
3549
3554
|
let id = raw;
|
|
3550
|
-
const { readEntry, readEntries: readEntries2 } = await import("./task-store-
|
|
3555
|
+
const { readEntry, readEntries: readEntries2 } = await import("./task-store-MNCW42BW.js");
|
|
3551
3556
|
if (!readEntry(id)) {
|
|
3552
3557
|
const normalized = raw.toLowerCase().replace(/\s+/g, "-");
|
|
3553
3558
|
if (readEntry(normalized)) {
|
|
@@ -3620,59 +3625,105 @@ async function handleTaskPause(text, ctx) {
|
|
|
3620
3625
|
}
|
|
3621
3626
|
async function handleKanban(text, ctx) {
|
|
3622
3627
|
try {
|
|
3623
|
-
const { kanbanList } = await import("./kanban-board-
|
|
3624
|
-
const arg = text.replace(/^\/kanban\s
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3628
|
+
const { kanbanList, kanbanGetCard, kanbanSearch } = await import("./kanban-board-DLEJUCNN.js");
|
|
3629
|
+
const arg = text.replace(/^\/kanban\s*/i, "").trim().replace(/[\u201C\u201D\u201E\u201F]/g, '"');
|
|
3630
|
+
if (!arg) {
|
|
3631
|
+
const cards = kanbanList();
|
|
3632
|
+
if (cards.length === 0) {
|
|
3633
|
+
await ctx.reply("Kanban board is empty.");
|
|
3634
|
+
return true;
|
|
3635
|
+
}
|
|
3636
|
+
await ctx.reply(renderList(cards));
|
|
3637
|
+
return true;
|
|
3638
|
+
}
|
|
3629
3639
|
if (arg === "all") {
|
|
3630
|
-
|
|
3631
|
-
|
|
3632
|
-
|
|
3633
|
-
if (!key || !val || !ALLOWED_FILTERS.has(key)) {
|
|
3634
|
-
await ctx.reply(`\u274C Invalid filter. Use: /kanban [all | status=X | source=X | priority=X | labels=X | type=X]`);
|
|
3640
|
+
const cards = kanbanList("*");
|
|
3641
|
+
if (cards.length === 0) {
|
|
3642
|
+
await ctx.reply("Kanban board is empty.");
|
|
3635
3643
|
return true;
|
|
3636
3644
|
}
|
|
3637
|
-
|
|
3638
|
-
filterVal = val.replace(/[^a-zA-Z0-9_,-]/g, "").slice(0, 30);
|
|
3639
|
-
} else if (arg) {
|
|
3640
|
-
filterVal = arg.replace(/[^a-zA-Z0-9_,-]/g, "").slice(0, 30);
|
|
3641
|
-
}
|
|
3642
|
-
const cards = showAll ? kanbanList("*") : kanbanList(filterVal, filterKey);
|
|
3643
|
-
if (cards.length === 0) {
|
|
3644
|
-
await ctx.reply("\u{1F4CB} Kanban board is empty.");
|
|
3645
|
+
await ctx.reply(renderList(cards));
|
|
3645
3646
|
return true;
|
|
3646
3647
|
}
|
|
3647
|
-
|
|
3648
|
-
const
|
|
3649
|
-
|
|
3650
|
-
|
|
3651
|
-
|
|
3652
|
-
return `${icon} #${c.id} ${title} (${c.source}/${c.priority})${doneAt}${due}`;
|
|
3653
|
-
});
|
|
3654
|
-
const header = `\u{1F4CB} Kanban Board (${cards.length}):
|
|
3655
|
-
`;
|
|
3656
|
-
let body = "";
|
|
3657
|
-
for (const line of lines) {
|
|
3658
|
-
if (header.length + body.length + line.length + 1 > 3900) {
|
|
3659
|
-
body += `
|
|
3660
|
-
\u2026 +${cards.length - body.split("\n").length} more`;
|
|
3661
|
-
break;
|
|
3648
|
+
if (/^\d+$/.test(arg)) {
|
|
3649
|
+
const card = kanbanGetCard(Number(arg));
|
|
3650
|
+
if (!card) {
|
|
3651
|
+
await ctx.reply(`No card #${arg}.`);
|
|
3652
|
+
return true;
|
|
3662
3653
|
}
|
|
3663
|
-
|
|
3654
|
+
await ctx.reply(renderDetail(card));
|
|
3655
|
+
return true;
|
|
3664
3656
|
}
|
|
3665
|
-
|
|
3657
|
+
if (/^".*"$/.test(arg)) {
|
|
3658
|
+
const term = arg.slice(1, -1).trim();
|
|
3659
|
+
if (!term) {
|
|
3660
|
+
await ctx.reply(`Usage: /kanban "<search term>"`);
|
|
3661
|
+
return true;
|
|
3662
|
+
}
|
|
3663
|
+
const cards = kanbanSearch(term);
|
|
3664
|
+
if (cards.length === 0) {
|
|
3665
|
+
await ctx.reply(`No cards matching "${term}".`);
|
|
3666
|
+
return true;
|
|
3667
|
+
}
|
|
3668
|
+
await ctx.reply(renderList(cards));
|
|
3669
|
+
return true;
|
|
3670
|
+
}
|
|
3671
|
+
await ctx.reply(`Usage:
|
|
3672
|
+
/kanban \u2014 active cards
|
|
3673
|
+
/kanban all \u2014 all cards
|
|
3674
|
+
/kanban <id> \u2014 ticket detail
|
|
3675
|
+
/kanban "<term>" \u2014 search`);
|
|
3666
3676
|
} catch (err) {
|
|
3667
|
-
await ctx.reply(
|
|
3677
|
+
await ctx.reply(`Failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
3668
3678
|
}
|
|
3669
3679
|
return true;
|
|
3670
3680
|
}
|
|
3681
|
+
function renderList(cards) {
|
|
3682
|
+
const lines = cards.map((c) => {
|
|
3683
|
+
const icon = c.status === "delivered" ? "\u2713" : c.status === "done" ? "+" : c.status === "running" ? "~" : c.status === "failed" ? "\u2717" : "-";
|
|
3684
|
+
const due = c.due_at ? ` due:${c.due_at.slice(0, 10)}` : "";
|
|
3685
|
+
const doneAt = c.delivered_at ? ` ${c.delivered_at.slice(2, 10).replace(/-/g, "")}:${c.delivered_at.slice(11, 16).replace(":", "")}` : "";
|
|
3686
|
+
const title = c.title.length > 20 ? c.title.slice(0, 17) + "\u2026" : c.title;
|
|
3687
|
+
return `${icon} #${c.id} ${title} (${c.source}/${c.priority})${doneAt}${due}`;
|
|
3688
|
+
});
|
|
3689
|
+
const header = `Kanban Board (${cards.length}):
|
|
3690
|
+
`;
|
|
3691
|
+
let body = "";
|
|
3692
|
+
for (const line of lines) {
|
|
3693
|
+
if (header.length + body.length + line.length + 1 > 3900) {
|
|
3694
|
+
body += `
|
|
3695
|
+
\u2026 +${cards.length - body.split("\n").length} more`;
|
|
3696
|
+
break;
|
|
3697
|
+
}
|
|
3698
|
+
body += (body ? "\n" : "") + line;
|
|
3699
|
+
}
|
|
3700
|
+
return header + body;
|
|
3701
|
+
}
|
|
3702
|
+
function renderDetail(c) {
|
|
3703
|
+
if (!c) return "(not found)";
|
|
3704
|
+
const icon = c.status === "delivered" ? "\u2713" : c.status === "done" ? "+" : c.status === "running" ? "~" : c.status === "failed" ? "\u2717" : "-";
|
|
3705
|
+
const lines = [
|
|
3706
|
+
`${icon} #${c.id}: ${c.title}`,
|
|
3707
|
+
`Status: ${c.status} | Priority: ${c.priority} | Source: ${c.source}`
|
|
3708
|
+
];
|
|
3709
|
+
if (c.type) lines.push(`Type: ${c.type}`);
|
|
3710
|
+
if (c.labels) lines.push(`Labels: ${c.labels}`);
|
|
3711
|
+
if (c.assignee && c.assignee !== "professor") lines.push(`Assignee: ${c.assignee}`);
|
|
3712
|
+
if (c.due_at) lines.push(`Due: ${c.due_at.slice(0, 10)}`);
|
|
3713
|
+
lines.push(`Created: ${c.created_at.slice(0, 16)}`);
|
|
3714
|
+
if (c.completed_at) lines.push(`Completed:${c.completed_at.slice(0, 16)}`);
|
|
3715
|
+
if (c.delivered_at) lines.push(`Delivered:${c.delivered_at.slice(0, 16)}`);
|
|
3716
|
+
if (c.result_path) lines.push(`File: ${c.result_path}`);
|
|
3717
|
+
if (c.result_summary) lines.push(`Result: ${c.result_summary.slice(0, 300)}${c.result_summary.length > 300 ? "\u2026" : ""}`);
|
|
3718
|
+
if (c.error) lines.push(`Error: ${c.error.slice(0, 200)}`);
|
|
3719
|
+
if (c.notes) lines.push(`Notes: ${c.notes.slice(0, 100)}`);
|
|
3720
|
+
return lines.join("\n");
|
|
3721
|
+
}
|
|
3671
3722
|
async function handleChannel(text, ctx) {
|
|
3672
3723
|
const args = text.replace(/^\/channel\s*/i, "").trim();
|
|
3673
|
-
const { channelRead, channelPost } = await import("./kanban-channel-
|
|
3724
|
+
const { channelRead, channelPost } = await import("./kanban-channel-XOLUHJZJ.js");
|
|
3674
3725
|
if (!args) {
|
|
3675
|
-
const { kanbanList } = await import("./kanban-board-
|
|
3726
|
+
const { kanbanList } = await import("./kanban-board-DLEJUCNN.js");
|
|
3676
3727
|
const active = kanbanList("running");
|
|
3677
3728
|
if (active.length === 0) {
|
|
3678
3729
|
await ctx.reply("No active channels.");
|
|
@@ -3737,7 +3788,7 @@ async function handleTodo(_text, ctx) {
|
|
|
3737
3788
|
init_log_and_swallow();
|
|
3738
3789
|
var TAG10 = "cmd_admin";
|
|
3739
3790
|
async function handleUsers(text, ctx) {
|
|
3740
|
-
const { loadUsers: loadUsers2 } = await import("./user-registry-
|
|
3791
|
+
const { loadUsers: loadUsers2 } = await import("./user-registry-4PACZJIJ.js");
|
|
3741
3792
|
const parts = text.trim().split(/\s+/);
|
|
3742
3793
|
const sub = parts[1];
|
|
3743
3794
|
if (sub === "approve" && parts[2]) {
|
|
@@ -3798,19 +3849,19 @@ async function handleSkills(text, ctx) {
|
|
|
3798
3849
|
await ctx.reply("Usage: /skill run <name>");
|
|
3799
3850
|
return true;
|
|
3800
3851
|
}
|
|
3801
|
-
const { launchSkill } = await import("./skill-session-
|
|
3852
|
+
const { launchSkill } = await import("./skill-session-5HSMXY54.js");
|
|
3802
3853
|
const err = await launchSkill(skillName, ctx.userId, String(ctx.chatId));
|
|
3803
3854
|
await ctx.reply(err ?? `* Skill "${skillName}" started.`);
|
|
3804
3855
|
return true;
|
|
3805
3856
|
}
|
|
3806
3857
|
if (args === "stop") {
|
|
3807
|
-
const { endSkillSession } = await import("./skill-session-
|
|
3858
|
+
const { endSkillSession } = await import("./skill-session-5HSMXY54.js");
|
|
3808
3859
|
const ended = await endSkillSession(String(ctx.chatId));
|
|
3809
3860
|
await ctx.reply(ended ? "* Skill session ended." : "No active skill session.");
|
|
3810
3861
|
return true;
|
|
3811
3862
|
}
|
|
3812
3863
|
if (args === "list") {
|
|
3813
|
-
const { listRunnableSkills } = await import("./skill-session-
|
|
3864
|
+
const { listRunnableSkills } = await import("./skill-session-5HSMXY54.js");
|
|
3814
3865
|
const skills2 = listRunnableSkills();
|
|
3815
3866
|
if (skills2.length === 0) {
|
|
3816
3867
|
await ctx.reply("No runnable skills (no skill.json found).");
|
|
@@ -3824,12 +3875,12 @@ Use: /skill run <name>`);
|
|
|
3824
3875
|
return true;
|
|
3825
3876
|
}
|
|
3826
3877
|
if (text.includes("reload")) {
|
|
3827
|
-
const { reloadCatalog } = await import("./hotskills-
|
|
3878
|
+
const { reloadCatalog } = await import("./hotskills-Q75D2DK3.js");
|
|
3828
3879
|
const count = reloadCatalog();
|
|
3829
3880
|
await ctx.reply(`Reloaded \u2014 ${count} skills available.`);
|
|
3830
3881
|
return true;
|
|
3831
3882
|
}
|
|
3832
|
-
const { getSkillCache } = await import("./hotskills-
|
|
3883
|
+
const { getSkillCache } = await import("./hotskills-Q75D2DK3.js");
|
|
3833
3884
|
const skills = getSkillCache();
|
|
3834
3885
|
if (skills.length === 0) {
|
|
3835
3886
|
await ctx.reply("\u{1F4DA} No skills loaded.");
|
|
@@ -3856,7 +3907,7 @@ ${sections.join("\n\n")}`);
|
|
|
3856
3907
|
return true;
|
|
3857
3908
|
}
|
|
3858
3909
|
async function handleHooks(_text, ctx) {
|
|
3859
|
-
const { getHookSummary } = await import("./hook-system-
|
|
3910
|
+
const { getHookSummary } = await import("./hook-system-YB635OC4.js");
|
|
3860
3911
|
const summary = getHookSummary();
|
|
3861
3912
|
const lines = ["\u{1FA9D} Hooks:"];
|
|
3862
3913
|
for (const { event, hooks } of summary) {
|
|
@@ -3872,7 +3923,7 @@ async function handleHooks(_text, ctx) {
|
|
|
3872
3923
|
async function handleMcp(_text, ctx) {
|
|
3873
3924
|
const arg = _text.replace(/^\/mcp\s*/i, "").trim().toLowerCase();
|
|
3874
3925
|
if (arg === "start") {
|
|
3875
|
-
const { loadUsers: loadUsers2 } = await import("./user-registry-
|
|
3926
|
+
const { loadUsers: loadUsers2 } = await import("./user-registry-4PACZJIJ.js");
|
|
3876
3927
|
const registry = loadUsers2();
|
|
3877
3928
|
const user = registry.byUserId.get(ctx.userId);
|
|
3878
3929
|
if (user?.role !== "master") {
|
|
@@ -3935,6 +3986,7 @@ async function handleHelp(_text, ctx) {
|
|
|
3935
3986
|
"/software update npm \u2014 Update from npm registry",
|
|
3936
3987
|
"/software rollback <version|slot> \u2014 Roll back to previous version or slot (1-3)",
|
|
3937
3988
|
"/update \u2014 Alias for /software update pull",
|
|
3989
|
+
"/update abmind \u2014 Update abmind from dev (pull + build + install)",
|
|
3938
3990
|
"/model \u2014 Model configuration (provider, context, fallbacks)",
|
|
3939
3991
|
"/model set <name> \u2014 Switch model",
|
|
3940
3992
|
"/doctor \u2014 Deep probe all subsystems",
|
|
@@ -3980,7 +4032,7 @@ ${cmds.join("\n")}`);
|
|
|
3980
4032
|
return true;
|
|
3981
4033
|
}
|
|
3982
4034
|
async function handlePeers(_text, ctx) {
|
|
3983
|
-
const { getPeerTable } = await import("./gossip-
|
|
4035
|
+
const { getPeerTable } = await import("./gossip-SKRCPOBS.js");
|
|
3984
4036
|
const peers = getPeerTable(true);
|
|
3985
4037
|
if (peers.length === 0) {
|
|
3986
4038
|
await ctx.reply("No peers configured or gossip not started.");
|
|
@@ -4009,7 +4061,7 @@ var TAG11 = "cmd:session";
|
|
|
4009
4061
|
async function handleSession(text, ctx) {
|
|
4010
4062
|
const args = text.replace(/^\/session\s*/i, "").trim();
|
|
4011
4063
|
if (!args) {
|
|
4012
|
-
const { getMasterUserId } = await import("./master-user-
|
|
4064
|
+
const { getMasterUserId } = await import("./master-user-MUBUP3KD.js");
|
|
4013
4065
|
const isMaster = ctx.userId === getMasterUserId();
|
|
4014
4066
|
await ctx.reply(ctx.sessionManager.formatList(ctx.userId, ctx.platform, isMaster));
|
|
4015
4067
|
return true;
|
|
@@ -4192,4 +4244,4 @@ export {
|
|
|
4192
4244
|
resetAndPrepare,
|
|
4193
4245
|
handleInboundMessage
|
|
4194
4246
|
};
|
|
4195
|
-
//# sourceMappingURL=chunk-
|
|
4247
|
+
//# sourceMappingURL=chunk-PB5GF4FG.js.map
|