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.
- package/bundle/{_registry.generated-7DRCE4V6.js → _registry.generated-ZJBAZMXN.js} +16 -15
- package/bundle/{_registry.generated-7DRCE4V6.js.map → _registry.generated-ZJBAZMXN.js.map} +1 -1
- package/bundle/abtars-browser.js +6 -5
- package/bundle/abtars-browser.js.map +1 -1
- package/bundle/abtars-cli.js +47 -39
- package/bundle/abtars-cli.js.map +2 -2
- package/bundle/abtars-restart.js +7 -7
- package/bundle/abtars-rss.js +2 -1
- package/bundle/abtars-rss.js.map +2 -2
- package/bundle/abtars-task.js +6 -5
- package/bundle/abtars-task.js.map +1 -1
- package/bundle/abtars-todo.js +2 -1
- package/bundle/abtars-todo.js.map +1 -1
- package/bundle/abtars.js +299 -209
- package/bundle/abtars.js.map +4 -4
- package/bundle/{acp-raw-client-AZJCEB6S.js → acp-raw-client-YTBGFN4S.js} +4 -3
- package/bundle/{acp-raw-client-AZJCEB6S.js.map → acp-raw-client-YTBGFN4S.js.map} +1 -1
- package/bundle/{action-gate-QYJL57IX.js → action-gate-YISTP773.js} +4 -3
- package/bundle/{action-gate-QYJL57IX.js.map → action-gate-YISTP773.js.map} +1 -1
- package/bundle/{agent-api-adapter-PYMNQXHE.js → agent-api-adapter-E4HWVJ32.js} +5 -4
- package/bundle/{agent-api-adapter-PYMNQXHE.js.map → agent-api-adapter-E4HWVJ32.js.map} +1 -1
- package/bundle/{agent-api-rate-limit-4GEZ4YN5.js → agent-api-rate-limit-VENFGOAD.js} +6 -5
- package/bundle/{agent-registry-563P4EUJ.js → agent-registry-DL7UT272.js} +9 -8
- package/bundle/bootstrap-V5MROD3X.js +62 -0
- package/bundle/bootstrap-V5MROD3X.js.map +7 -0
- package/bundle/{bridge-lock-transport-LXCF2IVN.js → bridge-lock-transport-BJAMHMXW.js} +6 -5
- package/bundle/{browser-2VZOGOGX.js → browser-PT54UWSW.js} +8 -7
- package/bundle/{budget-PPA7WY3D.js → budget-QNK6IIT6.js} +5 -4
- package/bundle/{budget-PPA7WY3D.js.map → budget-QNK6IIT6.js.map} +1 -1
- package/bundle/{capability-WXEA2WFK.js → capability-EKPGHQIO.js} +7 -6
- package/bundle/{chunk-C3EYYJN3.js → chunk-2BXXQG7P.js} +16 -4
- package/bundle/chunk-2BXXQG7P.js.map +7 -0
- package/bundle/{chunk-4PIVWXUJ.js → chunk-2ZD7VQRW.js} +2 -2
- package/bundle/{chunk-OY2HAK33.js → chunk-36ZEYDKZ.js} +1 -1
- package/bundle/chunk-36ZEYDKZ.js.map +7 -0
- package/bundle/{chunk-3QW2K53E.js → chunk-4IGLXZCC.js} +11 -19
- package/bundle/chunk-4IGLXZCC.js.map +7 -0
- package/bundle/{chunk-T7TAWGBX.js → chunk-52PQM4EZ.js} +2 -2
- package/bundle/{chunk-2RGR3LSV.js → chunk-5P5HF7IJ.js} +2 -2
- package/bundle/{chunk-LE23VPN3.js → chunk-63A7ZRIH.js} +4 -4
- package/bundle/{chunk-LE23VPN3.js.map → chunk-63A7ZRIH.js.map} +1 -1
- package/bundle/chunk-6IB3GVXK.js +77 -0
- package/bundle/chunk-6IB3GVXK.js.map +7 -0
- package/bundle/{chunk-OOKNHOCB.js → chunk-6S3G6GPO.js} +2 -2
- package/bundle/{chunk-E7MV7WFT.js → chunk-6VTHSN4V.js} +6 -6
- package/bundle/{chunk-NGZVJ52F.js → chunk-76YN7O3U.js} +7 -7
- package/bundle/{chunk-43DKPXTP.js → chunk-7LORCJCQ.js} +4 -4
- package/bundle/{chunk-HDOFJVFS.js → chunk-7OI46MH7.js} +3 -3
- package/bundle/{chunk-H2K23MOF.js → chunk-7XXISOHU.js} +21 -5
- package/bundle/chunk-7XXISOHU.js.map +7 -0
- package/bundle/{chunk-CB6S3ZRF.js → chunk-AFFW2LRY.js} +3 -3
- package/bundle/{chunk-TCI6FZTP.js → chunk-AHJDG6OM.js} +9 -9
- package/bundle/{chunk-NP72ZB7P.js → chunk-AMUJEP6L.js} +45 -45
- package/bundle/{chunk-NP72ZB7P.js.map → chunk-AMUJEP6L.js.map} +2 -2
- package/bundle/{chunk-BU7LTI2W.js → chunk-AWCO3DQ3.js} +6 -7
- package/bundle/chunk-AWCO3DQ3.js.map +7 -0
- package/bundle/{chunk-YME7NRGP.js → chunk-B2TIRDZC.js} +2 -2
- package/bundle/{chunk-SSCGWDIC.js → chunk-BWJ37KMW.js} +2 -2
- package/bundle/{chunk-ULO2PX3T.js → chunk-CCZ43JB7.js} +3 -3
- package/bundle/{chunk-FVUL44T4.js → chunk-CNENVY37.js} +2 -2
- package/bundle/{chunk-J5NOL4DB.js → chunk-DJOSXXM2.js} +2 -2
- package/bundle/{chunk-7RAGSHSH.js → chunk-DMDX35YT.js} +12 -10
- package/bundle/chunk-DMDX35YT.js.map +7 -0
- package/bundle/{chunk-DNDYD5SL.js → chunk-E7DZYCSF.js} +3 -3
- package/bundle/{chunk-M6Q3IQ4H.js → chunk-FF2F7ENH.js} +250 -118
- package/bundle/chunk-FF2F7ENH.js.map +7 -0
- package/bundle/{chunk-GCFIK6OB.js → chunk-FSGICOCX.js} +21 -21
- package/bundle/{chunk-IXKQ4JMX.js → chunk-GFAJSPMD.js} +33 -17
- package/bundle/chunk-GFAJSPMD.js.map +7 -0
- package/bundle/{chunk-FJF42RZY.js → chunk-GHRLO2UL.js} +3 -3
- package/bundle/{chunk-3LQOJVTB.js → chunk-HFOCNYEO.js} +1842 -1220
- package/bundle/{chunk-3LQOJVTB.js.map → chunk-HFOCNYEO.js.map} +4 -4
- package/bundle/{chunk-7WHXTCVD.js → chunk-HWFN7JGU.js} +2 -2
- package/bundle/{chunk-KBPVJGD7.js → chunk-IXGDDDAB.js} +3 -3
- package/bundle/chunk-JHLKEUHE.js +37 -0
- package/bundle/chunk-JHLKEUHE.js.map +7 -0
- package/bundle/{chunk-YEOZN5IE.js → chunk-JRGEEGZF.js} +2 -2
- package/bundle/{chunk-56D3Y44D.js → chunk-KLG4SCF7.js} +10 -10
- package/bundle/{chunk-ASYX43OU.js → chunk-LB43Q7G6.js} +26 -26
- package/bundle/{chunk-TVSPVZTX.js → chunk-LN5MNDSA.js} +3 -3
- package/bundle/{chunk-RJX45XIC.js → chunk-LPF2HELD.js} +9 -4
- package/bundle/chunk-LPF2HELD.js.map +7 -0
- package/bundle/{chunk-72T2Q7IG.js → chunk-MJACYH7A.js} +270 -282
- package/bundle/chunk-MJACYH7A.js.map +7 -0
- package/bundle/{chunk-SESM4GBM.js → chunk-MPQ2PJQX.js} +52 -25
- package/bundle/chunk-MPQ2PJQX.js.map +7 -0
- package/bundle/{chunk-FIAVVKGN.js → chunk-MTE32OQH.js} +3 -3
- package/bundle/{chunk-MV5KOWOR.js → chunk-N3Q3TASM.js} +7 -7
- package/bundle/{chunk-IQKADER4.js → chunk-O4YBJS2K.js} +2 -2
- package/bundle/{chunk-VJATH7AN.js → chunk-OOUCUCUW.js} +9 -8
- package/bundle/chunk-OOUCUCUW.js.map +7 -0
- package/bundle/{chunk-5V4VHKEA.js → chunk-OT6HLPEA.js} +3 -3
- package/bundle/{chunk-V6CV3QPH.js → chunk-OWPQIBAO.js} +2 -2
- package/bundle/{chunk-EDZGF6BC.js → chunk-QJPDBJDP.js} +11 -4
- package/bundle/chunk-QJPDBJDP.js.map +7 -0
- package/bundle/{chunk-N5VROZ7A.js → chunk-QMP2KC4W.js} +5 -5
- package/bundle/{chunk-4HNCOQSK.js → chunk-QOGZ7BFL.js} +7 -7
- package/bundle/{chunk-2LKQV2ND.js → chunk-R23FHZRY.js} +3 -3
- package/bundle/{chunk-SXNY6HC4.js → chunk-R4GYWVCR.js} +6 -6
- package/bundle/chunk-R4GYWVCR.js.map +7 -0
- package/bundle/{chunk-S7ZIGIR5.js → chunk-R76K6L6H.js} +27 -27
- package/bundle/{chunk-S7ZIGIR5.js.map → chunk-R76K6L6H.js.map} +1 -1
- package/bundle/{chunk-TY26WMQY.js → chunk-RCWQ34QR.js} +2 -2
- package/bundle/{chunk-MQJG7OJX.js → chunk-RJ2OUNFU.js} +38 -36
- package/bundle/chunk-RJ2OUNFU.js.map +7 -0
- package/bundle/{chunk-S6HEHCCG.js → chunk-RO3TAYBR.js} +83 -46
- package/bundle/chunk-RO3TAYBR.js.map +7 -0
- package/bundle/{chunk-ZOCEBV62.js → chunk-UU3RLJSD.js} +3 -3
- package/bundle/{chunk-P5O6QZDC.js → chunk-V7Y2LFO4.js} +10 -6
- package/bundle/chunk-V7Y2LFO4.js.map +7 -0
- package/bundle/{chunk-WP7FZHMI.js → chunk-W2PSVV2T.js} +2 -2
- package/bundle/{chunk-V2QIAXWZ.js → chunk-WEGFRA6G.js} +3 -3
- package/bundle/{chunk-ZY6DH2S4.js → chunk-WTIGZO3N.js} +80 -70
- package/bundle/chunk-WTIGZO3N.js.map +7 -0
- package/bundle/{chunk-O4GKI3Q3.js → chunk-X7DLKIQM.js} +4 -4
- package/bundle/{chunk-BNBC4T45.js → chunk-XZ4ZBDM5.js} +3 -3
- package/bundle/{chunk-24V4A6RP.js → chunk-YI2KSYB4.js} +4 -4
- package/bundle/{chunk-37EX63K4.js → chunk-YWHJJHJ2.js} +6998 -3621
- package/bundle/chunk-YWHJJHJ2.js.map +7 -0
- package/bundle/{chunk-IK4R3RBZ.js → chunk-YZCOA4DC.js} +3 -3
- package/bundle/{chunk-2FZJDMAF.js → chunk-ZGNSCJWH.js} +10 -10
- package/bundle/{chunk-W726UGI6.js → chunk-ZKMKAO75.js} +3 -3
- package/bundle/{chunk-WGWM4IZM.js → chunk-ZT5ZBGWS.js} +4 -4
- package/bundle/{chunk-WGWM4IZM.js.map → chunk-ZT5ZBGWS.js.map} +1 -1
- package/bundle/{commands-XXFU2ZF7.js → commands-2JQ5YTJX.js} +20 -20
- package/bundle/{config-EWDZ234X.js → config-ZEWIM5Z2.js} +8 -7
- package/bundle/{config-show-6J33O4TE.js → config-show-WBJPQPRD.js} +5 -5
- package/bundle/{context-OCS7HLJP.js → context-V75QNXB5.js} +5 -2
- package/bundle/{context-OCS7HLJP.js.map → context-V75QNXB5.js.map} +1 -1
- package/bundle/{daemon-LTDAXNA2.js → daemon-W7VQOSZC.js} +7 -7
- package/bundle/{delegation-tools-YDTWQMZD.js → delegation-tools-VGTRFQBF.js} +13 -11
- package/bundle/{registry-client-VN2MM2HI.js → deploy-5AGIULM2.js} +10 -6
- package/bundle/{deploy-lib-import-RGZJ3CGC.js → deploy-lib-import-ZBDYORN4.js} +5 -3
- package/bundle/{deps-PHSLIA77.js → deps-VB3S3RLF.js} +21 -19
- package/bundle/deps-VB3S3RLF.js.map +7 -0
- package/bundle/{direct-api-transport-OAKYQBJR.js → direct-api-transport-YSROTC35.js} +30 -28
- package/bundle/direct-api-transport-YSROTC35.js.map +7 -0
- package/bundle/{discord-adapter-WUNYPTDE.js → discord-adapter-LKBSIFLV.js} +26 -26
- package/bundle/{dist-7HEHHQI2.js → dist-KMK7TZGN.js} +376 -348
- package/bundle/dist-KMK7TZGN.js.map +7 -0
- package/bundle/{dns-wakeup-F55ALHXJ.js → dns-wakeup-KIURCCFJ.js} +4 -3
- package/bundle/{dns-wakeup-F55ALHXJ.js.map → dns-wakeup-KIURCCFJ.js.map} +1 -1
- package/bundle/{doctor-probes-3SLIUGKS.js → doctor-probes-46UKIROK.js} +4 -3
- package/bundle/{env-schema-MSDP2YBO.js → env-schema-YGHCKX5B.js} +5 -4
- package/bundle/{gossip-CS3G3447.js → gossip-VSEY2HSE.js} +7 -6
- package/bundle/{guardrails-24XK2COI.js → guardrails-U7M6H2GE.js} +6 -5
- package/bundle/{health-check-FRUNRVNQ.js → health-check-ASRLUJE5.js} +6 -2
- package/bundle/health-check-ASRLUJE5.js.map +7 -0
- package/bundle/{heartbeat-system-G4IFQXT6.js → heartbeat-system-MUXLT4E6.js} +7 -6
- package/bundle/{heartbeat-tier3-3ZO3EVXP.js → heartbeat-tier3-636ZMM4E.js} +45 -44
- package/bundle/heartbeat-tier3-636ZMM4E.js.map +7 -0
- package/bundle/{hook-system-X6INNJGV.js → hook-system-Z4XD6IM5.js} +5 -4
- package/bundle/{hotskills-6FQYTJIO.js → hotskills-AOUWVTQB.js} +7 -6
- package/bundle/{install-ZAHTZ5M5.js → install-3GGZUN22.js} +23 -20
- package/bundle/install-3GGZUN22.js.map +7 -0
- package/bundle/{install-manifest-QX7KVDCA.js → install-manifest-624KOB4S.js} +4 -3
- package/bundle/{install-manifest-QX7KVDCA.js.map → install-manifest-624KOB4S.js.map} +1 -1
- package/bundle/{irc-adapter-IEJQKKJF.js → irc-adapter-SA7GLJGR.js} +5 -4
- package/bundle/{irc-adapter-IEJQKKJF.js.map → irc-adapter-SA7GLJGR.js.map} +1 -1
- package/bundle/{irc-config-TTWNYFLH.js → irc-config-PG4X2I4M.js} +6 -5
- package/bundle/{irc-config-TTWNYFLH.js.map → irc-config-PG4X2I4M.js.map} +1 -1
- package/bundle/{kanban-board-J6RO3ZU7.js → kanban-board-4AI5Z6B5.js} +7 -5
- package/bundle/{kanban-channel-5EIXBFSA.js → kanban-channel-JMBYWGWD.js} +8 -6
- package/bundle/{lazy-require-V6EFUATC.js → lazy-require-GURNBC3C.js} +11 -6
- package/bundle/{logger-Y3VILPRH.js → logger-UQJPZMYV.js} +4 -3
- package/bundle/{logs-YS3GDURO.js → logs-2WTDLMB5.js} +5 -5
- package/bundle/{main-chat-YLZDNQPO.js → main-chat-EID5Y6H2.js} +6 -5
- package/bundle/{master-user-Z4M7KCJE.js → master-user-TKA7M2GL.js} +7 -6
- package/bundle/{media-utils-P6RZ2K3U.js → media-utils-X3UN342B.js} +44 -43
- package/bundle/{media-utils-P6RZ2K3U.js.map → media-utils-X3UN342B.js.map} +2 -2
- package/bundle/{message-pipeline-MHEBDJLH.js → message-pipeline-TAWXNEVS.js} +20 -20
- package/bundle/meta.json +9264 -8575
- package/bundle/{migrate-layout-RJJQLVGR.js → migrate-layout-KEAIIN26.js} +8 -4
- package/bundle/migrate-layout-KEAIIN26.js.map +7 -0
- package/bundle/{nerve-VZNMFDGY.js → nerve-TC34H4EL.js} +5 -4
- package/bundle/{notification-VV2OR6NW.js → notification-JQNVGICN.js} +8 -7
- package/bundle/{openrouter-credits-LXC7P4G6.js → openrouter-credits-5Q3EYWE5.js} +5 -4
- package/bundle/{openrouter-credits-LXC7P4G6.js.map → openrouter-credits-5Q3EYWE5.js.map} +1 -1
- package/bundle/{orc-KC4USP55.js → orc-74Z62W7B.js} +4 -4
- package/bundle/{orc-tools-CHRSXSAS.js → orc-tools-GME3DKIN.js} +5 -4
- package/bundle/{paths-EDK6KWHG.js → paths-BAUNPLNJ.js} +6 -2
- package/bundle/{paths-RZF6WDMG.js → paths-MZC2KU2C.js} +3 -2
- package/bundle/{peer-auth-SRONOLNG.js → peer-auth-VRO3JYL5.js} +9 -8
- package/bundle/{peer-client-VOF77T6C.js → peer-client-WLK5GZQS.js} +9 -8
- package/bundle/{peer-client-VOF77T6C.js.map → peer-client-WLK5GZQS.js.map} +1 -1
- package/bundle/{peer-config-FRWLEYQ5.js → peer-config-24WILLCJ.js} +6 -5
- package/bundle/{peer-jwt-XY3XRIA2.js → peer-jwt-ZR6RF3XM.js} +6 -5
- package/bundle/{peer-transport-UBBXTDRP.js → peer-transport-BK5VHI2M.js} +8 -7
- package/bundle/{phase-transport-4NQHZX75.js → phase-transport-7QJM7J6V.js} +18 -16
- package/bundle/{reconcile-2EUXJ6W5.js → reconcile-7N7OE2GU.js} +5 -4
- package/bundle/{reconciler-FFQGV4DO.js → reconciler-7LOOUK43.js} +13 -11
- package/bundle/{reconciler-FFQGV4DO.js.map → reconciler-7LOOUK43.js.map} +1 -1
- package/bundle/{restore-NFDE2RG6.js → restore-MENZ3I3K.js} +13 -9
- package/bundle/{restore-NFDE2RG6.js.map → restore-MENZ3I3K.js.map} +3 -3
- package/bundle/{rollback-MVZ53XS4.js → rollback-JOHY6KWW.js} +5 -5
- package/bundle/{chunk-SKY6656M.js → sandbox-runtime-T7RF4WJD.js} +11 -28
- package/bundle/{chunk-SKY6656M.js.map → sandbox-runtime-T7RF4WJD.js.map} +1 -1
- package/bundle/{self-healer-utils-KD6LV63S.js → self-healer-utils-OR2N6RLD.js} +5 -4
- package/bundle/{self-healer-utils-KD6LV63S.js.map → self-healer-utils-OR2N6RLD.js.map} +1 -1
- package/bundle/{sha-tracker-2DB4R2TW.js → sha-tracker-BXOLWZJL.js} +5 -4
- package/bundle/{skill-session-BPDVA6ZG.js → skill-session-H6EQ4NGN.js} +5 -4
- package/bundle/{skill-session-BPDVA6ZG.js.map → skill-session-H6EQ4NGN.js.map} +1 -1
- package/bundle/{skill-stats-TPD2NROA.js → skill-stats-7O777ZSZ.js} +6 -5
- package/bundle/{skill-watcher-D7QYYYON.js → skill-watcher-ZGLTDPG5.js} +6 -5
- package/bundle/{sleep-GH6DLBJJ.js → sleep-3LFZH727.js} +10 -9
- package/bundle/{soul-bundle-GXLMDBCC.js → soul-bundle-RQ2YQMJW.js} +10 -9
- package/bundle/{spin-4DBYHS3E.js → spin-76K4R6FK.js} +12 -10
- package/bundle/{spin-notifications-IKYJPER5.js → spin-notifications-LD46B4K5.js} +7 -5
- package/bundle/{spin-notifications-IKYJPER5.js.map → spin-notifications-LD46B4K5.js.map} +1 -1
- package/bundle/{spin-types-PLJH3SIK.js → spin-types-MOKTZXGB.js} +5 -4
- package/bundle/{src-SUFZ27S5.js → src-6BTCMOD3.js} +4 -4
- package/bundle/{sse-parser-anthropic-U7ILHOY5.js → sse-parser-anthropic-NV2CGBIT.js} +5 -4
- package/bundle/{sse-parser-anthropic-U7ILHOY5.js.map → sse-parser-anthropic-NV2CGBIT.js.map} +1 -1
- package/bundle/{sse-parser-responses-OI73R3AH.js → sse-parser-responses-FC3PFHQ5.js} +5 -4
- package/bundle/{sse-parser-responses-OI73R3AH.js.map → sse-parser-responses-FC3PFHQ5.js.map} +1 -1
- package/bundle/{ssrf-guard-6GP4QYVA.js → ssrf-guard-E2YPLW6G.js} +5 -4
- package/bundle/{ssrf-guard-6GP4QYVA.js.map → ssrf-guard-E2YPLW6G.js.map} +1 -1
- package/bundle/{start-JT2BPMSW.js → start-HPO5LYJP.js} +5 -5
- package/bundle/start-HPO5LYJP.js.map +7 -0
- package/bundle/{stt-KD3AABKG.js → stt-UE7EOYD7.js} +6 -5
- package/bundle/{subagent-runtime-LVECAUPV.js → subagent-runtime-4X3UHF4H.js} +6 -5
- package/bundle/system-status-PLPWV4RF.js +346 -0
- package/bundle/system-status-PLPWV4RF.js.map +7 -0
- package/bundle/{task-store-2XRDM3AW.js → task-store-RAFMDQ7N.js} +6 -5
- package/bundle/{telegram-adapter-UJ3RYYV6.js → telegram-adapter-PPXKTGOP.js} +35 -35
- package/bundle/{tool-registry-YU6WBXPA.js → tool-registry-NKIPNJZ5.js} +25 -23
- package/bundle/{tool-sandbox-RNNPDR5M.js → tool-sandbox-DQCP3UTU.js} +6 -5
- package/bundle/{transport-config-OK3MZPJK.js → transport-config-SF6GBV47.js} +9 -8
- package/bundle/{update-ENNPRW7Y.js → update-QOOGMFSJ.js} +6 -6
- package/bundle/{update-check-SJB6GV3A.js → update-check-LPZG3K5P.js} +3 -2
- package/bundle/{update-check-SJB6GV3A.js.map → update-check-LPZG3K5P.js.map} +1 -1
- package/bundle/{usage-tracker-HRSGC7QC.js → usage-tracker-TBDM4KE6.js} +2 -2
- package/bundle/{user-registry-6PUJJ5J2.js → user-registry-OYJVAHDD.js} +6 -5
- package/bundle/{wrapper-WLHLG4MI.js → wrapper-W66YICNZ.js} +3 -3
- package/bundle/{ws-peer-client-WHW3RJTD.js → ws-peer-client-G5QHOF6K.js} +15 -14
- package/bundle/{ws-peer-client-WHW3RJTD.js.map → ws-peer-client-G5QHOF6K.js.map} +2 -2
- package/package.json +3 -7
- package/scripts/emergency-deploy.sh +11 -8
- package/scripts/emergency-update.sh +156 -23
- package/templates/config/.env +1 -1
- package/templates/config/models.json +13 -0
- package/bundle/chunk-37EX63K4.js.map +0 -7
- package/bundle/chunk-3QW2K53E.js.map +0 -7
- package/bundle/chunk-72T2Q7IG.js.map +0 -7
- package/bundle/chunk-7RAGSHSH.js.map +0 -7
- package/bundle/chunk-BU7LTI2W.js.map +0 -7
- package/bundle/chunk-C3EYYJN3.js.map +0 -7
- package/bundle/chunk-CAOIIVFP.js +0 -110
- package/bundle/chunk-CAOIIVFP.js.map +0 -7
- package/bundle/chunk-EDZGF6BC.js.map +0 -7
- package/bundle/chunk-H2K23MOF.js.map +0 -7
- package/bundle/chunk-HAZHNBBY.js +0 -156
- package/bundle/chunk-HAZHNBBY.js.map +0 -7
- package/bundle/chunk-IXKQ4JMX.js.map +0 -7
- package/bundle/chunk-JAJ3DUQ2.js +0 -30
- package/bundle/chunk-JAJ3DUQ2.js.map +0 -7
- package/bundle/chunk-KMFR5AVY.js +0 -45
- package/bundle/chunk-KMFR5AVY.js.map +0 -7
- package/bundle/chunk-M6Q3IQ4H.js.map +0 -7
- package/bundle/chunk-MQJG7OJX.js.map +0 -7
- package/bundle/chunk-OY2HAK33.js.map +0 -7
- package/bundle/chunk-P5O6QZDC.js.map +0 -7
- package/bundle/chunk-RJX45XIC.js.map +0 -7
- package/bundle/chunk-S6HEHCCG.js.map +0 -7
- package/bundle/chunk-SESM4GBM.js.map +0 -7
- package/bundle/chunk-SXNY6HC4.js.map +0 -7
- package/bundle/chunk-VJATH7AN.js.map +0 -7
- package/bundle/chunk-ZY6DH2S4.js.map +0 -7
- package/bundle/deps-PHSLIA77.js.map +0 -7
- package/bundle/direct-api-transport-OAKYQBJR.js.map +0 -7
- package/bundle/dist-7HEHHQI2.js.map +0 -7
- package/bundle/health-check-FRUNRVNQ.js.map +0 -7
- package/bundle/heartbeat-tier3-3ZO3EVXP.js.map +0 -7
- package/bundle/install-ZAHTZ5M5.js.map +0 -7
- package/bundle/migrate-layout-RJJQLVGR.js.map +0 -7
- package/bundle/phase-config-V4XETN5F.js +0 -18
- package/bundle/sandbox-runtime-WHACQLLN.js +0 -22
- package/bundle/start-JT2BPMSW.js.map +0 -7
- package/bundle/system-status-XXJWTVJN.js +0 -243
- package/bundle/system-status-XXJWTVJN.js.map +0 -7
- package/bundle/user-registry-6PUJJ5J2.js.map +0 -7
- package/bundle/wrapper-WLHLG4MI.js.map +0 -7
- /package/bundle/{agent-api-rate-limit-4GEZ4YN5.js.map → agent-api-rate-limit-VENFGOAD.js.map} +0 -0
- /package/bundle/{agent-registry-563P4EUJ.js.map → agent-registry-DL7UT272.js.map} +0 -0
- /package/bundle/{bridge-lock-transport-LXCF2IVN.js.map → bridge-lock-transport-BJAMHMXW.js.map} +0 -0
- /package/bundle/{browser-2VZOGOGX.js.map → browser-PT54UWSW.js.map} +0 -0
- /package/bundle/{capability-WXEA2WFK.js.map → capability-EKPGHQIO.js.map} +0 -0
- /package/bundle/{chunk-4PIVWXUJ.js.map → chunk-2ZD7VQRW.js.map} +0 -0
- /package/bundle/{chunk-T7TAWGBX.js.map → chunk-52PQM4EZ.js.map} +0 -0
- /package/bundle/{chunk-2RGR3LSV.js.map → chunk-5P5HF7IJ.js.map} +0 -0
- /package/bundle/{chunk-OOKNHOCB.js.map → chunk-6S3G6GPO.js.map} +0 -0
- /package/bundle/{chunk-E7MV7WFT.js.map → chunk-6VTHSN4V.js.map} +0 -0
- /package/bundle/{chunk-NGZVJ52F.js.map → chunk-76YN7O3U.js.map} +0 -0
- /package/bundle/{chunk-43DKPXTP.js.map → chunk-7LORCJCQ.js.map} +0 -0
- /package/bundle/{chunk-HDOFJVFS.js.map → chunk-7OI46MH7.js.map} +0 -0
- /package/bundle/{chunk-CB6S3ZRF.js.map → chunk-AFFW2LRY.js.map} +0 -0
- /package/bundle/{chunk-TCI6FZTP.js.map → chunk-AHJDG6OM.js.map} +0 -0
- /package/bundle/{chunk-YME7NRGP.js.map → chunk-B2TIRDZC.js.map} +0 -0
- /package/bundle/{chunk-SSCGWDIC.js.map → chunk-BWJ37KMW.js.map} +0 -0
- /package/bundle/{chunk-ULO2PX3T.js.map → chunk-CCZ43JB7.js.map} +0 -0
- /package/bundle/{chunk-FVUL44T4.js.map → chunk-CNENVY37.js.map} +0 -0
- /package/bundle/{chunk-J5NOL4DB.js.map → chunk-DJOSXXM2.js.map} +0 -0
- /package/bundle/{chunk-DNDYD5SL.js.map → chunk-E7DZYCSF.js.map} +0 -0
- /package/bundle/{chunk-GCFIK6OB.js.map → chunk-FSGICOCX.js.map} +0 -0
- /package/bundle/{chunk-FJF42RZY.js.map → chunk-GHRLO2UL.js.map} +0 -0
- /package/bundle/{chunk-7WHXTCVD.js.map → chunk-HWFN7JGU.js.map} +0 -0
- /package/bundle/{chunk-KBPVJGD7.js.map → chunk-IXGDDDAB.js.map} +0 -0
- /package/bundle/{chunk-YEOZN5IE.js.map → chunk-JRGEEGZF.js.map} +0 -0
- /package/bundle/{chunk-56D3Y44D.js.map → chunk-KLG4SCF7.js.map} +0 -0
- /package/bundle/{chunk-ASYX43OU.js.map → chunk-LB43Q7G6.js.map} +0 -0
- /package/bundle/{chunk-TVSPVZTX.js.map → chunk-LN5MNDSA.js.map} +0 -0
- /package/bundle/{chunk-FIAVVKGN.js.map → chunk-MTE32OQH.js.map} +0 -0
- /package/bundle/{chunk-MV5KOWOR.js.map → chunk-N3Q3TASM.js.map} +0 -0
- /package/bundle/{chunk-IQKADER4.js.map → chunk-O4YBJS2K.js.map} +0 -0
- /package/bundle/{chunk-5V4VHKEA.js.map → chunk-OT6HLPEA.js.map} +0 -0
- /package/bundle/{chunk-V6CV3QPH.js.map → chunk-OWPQIBAO.js.map} +0 -0
- /package/bundle/{chunk-N5VROZ7A.js.map → chunk-QMP2KC4W.js.map} +0 -0
- /package/bundle/{chunk-4HNCOQSK.js.map → chunk-QOGZ7BFL.js.map} +0 -0
- /package/bundle/{chunk-2LKQV2ND.js.map → chunk-R23FHZRY.js.map} +0 -0
- /package/bundle/{chunk-TY26WMQY.js.map → chunk-RCWQ34QR.js.map} +0 -0
- /package/bundle/{chunk-ZOCEBV62.js.map → chunk-UU3RLJSD.js.map} +0 -0
- /package/bundle/{chunk-WP7FZHMI.js.map → chunk-W2PSVV2T.js.map} +0 -0
- /package/bundle/{chunk-V2QIAXWZ.js.map → chunk-WEGFRA6G.js.map} +0 -0
- /package/bundle/{chunk-O4GKI3Q3.js.map → chunk-X7DLKIQM.js.map} +0 -0
- /package/bundle/{chunk-BNBC4T45.js.map → chunk-XZ4ZBDM5.js.map} +0 -0
- /package/bundle/{chunk-24V4A6RP.js.map → chunk-YI2KSYB4.js.map} +0 -0
- /package/bundle/{chunk-IK4R3RBZ.js.map → chunk-YZCOA4DC.js.map} +0 -0
- /package/bundle/{chunk-2FZJDMAF.js.map → chunk-ZGNSCJWH.js.map} +0 -0
- /package/bundle/{chunk-W726UGI6.js.map → chunk-ZKMKAO75.js.map} +0 -0
- /package/bundle/{commands-XXFU2ZF7.js.map → commands-2JQ5YTJX.js.map} +0 -0
- /package/bundle/{config-EWDZ234X.js.map → config-ZEWIM5Z2.js.map} +0 -0
- /package/bundle/{config-show-6J33O4TE.js.map → config-show-WBJPQPRD.js.map} +0 -0
- /package/bundle/{daemon-LTDAXNA2.js.map → daemon-W7VQOSZC.js.map} +0 -0
- /package/bundle/{delegation-tools-YDTWQMZD.js.map → delegation-tools-VGTRFQBF.js.map} +0 -0
- /package/bundle/{deploy-lib-import-RGZJ3CGC.js.map → deploy-5AGIULM2.js.map} +0 -0
- /package/bundle/{doctor-probes-3SLIUGKS.js.map → deploy-lib-import-ZBDYORN4.js.map} +0 -0
- /package/bundle/{discord-adapter-WUNYPTDE.js.map → discord-adapter-LKBSIFLV.js.map} +0 -0
- /package/bundle/{env-schema-MSDP2YBO.js.map → doctor-probes-46UKIROK.js.map} +0 -0
- /package/bundle/{gossip-CS3G3447.js.map → env-schema-YGHCKX5B.js.map} +0 -0
- /package/bundle/{guardrails-24XK2COI.js.map → gossip-VSEY2HSE.js.map} +0 -0
- /package/bundle/{heartbeat-system-G4IFQXT6.js.map → guardrails-U7M6H2GE.js.map} +0 -0
- /package/bundle/{hook-system-X6INNJGV.js.map → heartbeat-system-MUXLT4E6.js.map} +0 -0
- /package/bundle/{hotskills-6FQYTJIO.js.map → hook-system-Z4XD6IM5.js.map} +0 -0
- /package/bundle/{kanban-board-J6RO3ZU7.js.map → hotskills-AOUWVTQB.js.map} +0 -0
- /package/bundle/{kanban-channel-5EIXBFSA.js.map → kanban-board-4AI5Z6B5.js.map} +0 -0
- /package/bundle/{lazy-require-V6EFUATC.js.map → kanban-channel-JMBYWGWD.js.map} +0 -0
- /package/bundle/{logger-Y3VILPRH.js.map → lazy-require-GURNBC3C.js.map} +0 -0
- /package/bundle/{main-chat-YLZDNQPO.js.map → logger-UQJPZMYV.js.map} +0 -0
- /package/bundle/{logs-YS3GDURO.js.map → logs-2WTDLMB5.js.map} +0 -0
- /package/bundle/{master-user-Z4M7KCJE.js.map → main-chat-EID5Y6H2.js.map} +0 -0
- /package/bundle/{message-pipeline-MHEBDJLH.js.map → master-user-TKA7M2GL.js.map} +0 -0
- /package/bundle/{nerve-VZNMFDGY.js.map → message-pipeline-TAWXNEVS.js.map} +0 -0
- /package/bundle/{notification-VV2OR6NW.js.map → nerve-TC34H4EL.js.map} +0 -0
- /package/bundle/{orc-tools-CHRSXSAS.js.map → notification-JQNVGICN.js.map} +0 -0
- /package/bundle/{orc-KC4USP55.js.map → orc-74Z62W7B.js.map} +0 -0
- /package/bundle/{paths-EDK6KWHG.js.map → orc-tools-GME3DKIN.js.map} +0 -0
- /package/bundle/{paths-RZF6WDMG.js.map → paths-BAUNPLNJ.js.map} +0 -0
- /package/bundle/{peer-auth-SRONOLNG.js.map → paths-MZC2KU2C.js.map} +0 -0
- /package/bundle/{peer-config-FRWLEYQ5.js.map → peer-auth-VRO3JYL5.js.map} +0 -0
- /package/bundle/{peer-jwt-XY3XRIA2.js.map → peer-config-24WILLCJ.js.map} +0 -0
- /package/bundle/{peer-transport-UBBXTDRP.js.map → peer-jwt-ZR6RF3XM.js.map} +0 -0
- /package/bundle/{phase-config-V4XETN5F.js.map → peer-transport-BK5VHI2M.js.map} +0 -0
- /package/bundle/{phase-transport-4NQHZX75.js.map → phase-transport-7QJM7J6V.js.map} +0 -0
- /package/bundle/{reconcile-2EUXJ6W5.js.map → reconcile-7N7OE2GU.js.map} +0 -0
- /package/bundle/{registry-client-VN2MM2HI.js.map → rollback-JOHY6KWW.js.map} +0 -0
- /package/bundle/{rollback-MVZ53XS4.js.map → sha-tracker-BXOLWZJL.js.map} +0 -0
- /package/bundle/{sandbox-runtime-WHACQLLN.js.map → skill-stats-7O777ZSZ.js.map} +0 -0
- /package/bundle/{sha-tracker-2DB4R2TW.js.map → skill-watcher-ZGLTDPG5.js.map} +0 -0
- /package/bundle/{skill-stats-TPD2NROA.js.map → sleep-3LFZH727.js.map} +0 -0
- /package/bundle/{skill-watcher-D7QYYYON.js.map → soul-bundle-RQ2YQMJW.js.map} +0 -0
- /package/bundle/{sleep-GH6DLBJJ.js.map → spin-76K4R6FK.js.map} +0 -0
- /package/bundle/{soul-bundle-GXLMDBCC.js.map → spin-types-MOKTZXGB.js.map} +0 -0
- /package/bundle/{spin-4DBYHS3E.js.map → src-6BTCMOD3.js.map} +0 -0
- /package/bundle/{spin-types-PLJH3SIK.js.map → stt-UE7EOYD7.js.map} +0 -0
- /package/bundle/{src-SUFZ27S5.js.map → subagent-runtime-4X3UHF4H.js.map} +0 -0
- /package/bundle/{stt-KD3AABKG.js.map → task-store-RAFMDQ7N.js.map} +0 -0
- /package/bundle/{telegram-adapter-UJ3RYYV6.js.map → telegram-adapter-PPXKTGOP.js.map} +0 -0
- /package/bundle/{subagent-runtime-LVECAUPV.js.map → tool-registry-NKIPNJZ5.js.map} +0 -0
- /package/bundle/{task-store-2XRDM3AW.js.map → tool-sandbox-DQCP3UTU.js.map} +0 -0
- /package/bundle/{tool-registry-YU6WBXPA.js.map → transport-config-SF6GBV47.js.map} +0 -0
- /package/bundle/{tool-sandbox-RNNPDR5M.js.map → update-QOOGMFSJ.js.map} +0 -0
- /package/bundle/{transport-config-OK3MZPJK.js.map → usage-tracker-TBDM4KE6.js.map} +0 -0
- /package/bundle/{update-ENNPRW7Y.js.map → user-registry-OYJVAHDD.js.map} +0 -0
- /package/bundle/{usage-tracker-HRSGC7QC.js.map → wrapper-W66YICNZ.js.map} +0 -0
|
@@ -9,10 +9,11 @@ import {
|
|
|
9
9
|
isDockerActive,
|
|
10
10
|
isGuardrailsActive,
|
|
11
11
|
isSeatbeltActive
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-IXGDDDAB.js";
|
|
13
|
+
import "./chunk-BWJ37KMW.js";
|
|
14
|
+
import "./chunk-6S3G6GPO.js";
|
|
15
|
+
import "./chunk-7XXISOHU.js";
|
|
16
|
+
import "./chunk-2BXXQG7P.js";
|
|
16
17
|
import "./chunk-7K2YZTLD.js";
|
|
17
18
|
init_guardrails();
|
|
18
19
|
export {
|
|
@@ -24,4 +25,4 @@ export {
|
|
|
24
25
|
isGuardrailsActive,
|
|
25
26
|
isSeatbeltActive
|
|
26
27
|
};
|
|
27
|
-
//# sourceMappingURL=guardrails-
|
|
28
|
+
//# sourceMappingURL=guardrails-U7M6H2GE.js.map
|
|
@@ -27,12 +27,16 @@ function checkEmbeddingModel() {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
function checkSqliteVec(home) {
|
|
30
|
+
const sharedNm = join(homedir(), ".local", "lib", "node_modules", "sqlite-vec");
|
|
31
|
+
if (existsSync(sharedNm)) {
|
|
32
|
+
return { ok: true, label: "sqlite-vec (vector search)" };
|
|
33
|
+
}
|
|
30
34
|
const abmindLib = join(process.env["ABMIND_HOME"] ?? join(homedir(), ".abmind"), "lib", "node_modules", "sqlite-vec");
|
|
31
35
|
const bundleNm = join(home, "current", "node_modules", "sqlite-vec");
|
|
32
36
|
if (existsSync(abmindLib) || existsSync(bundleNm)) {
|
|
33
37
|
return { ok: true, label: "sqlite-vec (vector search)" };
|
|
34
38
|
}
|
|
35
|
-
return { ok: false, label: "sqlite-vec (falling back to brute-force search)", hint: "Run:
|
|
39
|
+
return { ok: false, label: "sqlite-vec (falling back to brute-force search)", hint: "Run: abtars deps install" };
|
|
36
40
|
}
|
|
37
41
|
function printHealthSummary(home) {
|
|
38
42
|
const items = [
|
|
@@ -54,4 +58,4 @@ function printHealthSummary(home) {
|
|
|
54
58
|
export {
|
|
55
59
|
printHealthSummary
|
|
56
60
|
};
|
|
57
|
-
//# sourceMappingURL=health-check-
|
|
61
|
+
//# sourceMappingURL=health-check-ASRLUJE5.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli/commands/health-check.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Post-install/update health summary \u2014 detect missing external deps.\n */\n\nimport { execFileSync } from \"node:child_process\";\nimport { join } from \"node:path\";\nimport { existsSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\n\ninterface HealthItem {\n ok: boolean;\n label: string;\n hint?: string;\n}\n\nfunction checkOllama(): HealthItem {\n try {\n execFileSync(\"ollama\", [\"--version\"], { timeout: 5000, stdio: \"pipe\" });\n return { ok: true, label: \"Ollama\" };\n } catch {\n return { ok: false, label: \"Ollama (memory embeddings disabled)\", hint: \"Install: curl -fsSL https://ollama.com/install.sh | sh\" };\n }\n}\n\nfunction checkEmbeddingModel(): HealthItem {\n try {\n const out = execFileSync(\"ollama\", [\"list\"], { timeout: 10000, stdio: \"pipe\", encoding: \"utf-8\" });\n if (out.includes(\"nomic-embed-text\")) {\n return { ok: true, label: \"Embedding model (nomic-embed-text)\" };\n }\n return { ok: false, label: \"Embedding model missing\", hint: \"Run: ollama pull nomic-embed-text\" };\n } catch {\n return { ok: false, label: \"Embedding model (ollama not reachable)\", hint: \"Start ollama, then: ollama pull nomic-embed-text\" };\n }\n}\n\nfunction checkSqliteVec(home: string): HealthItem {\n const sharedNm = join(homedir(), \".local\", \"lib\", \"node_modules\", \"sqlite-vec\");\n if (existsSync(sharedNm)) {\n return { ok: true, label: \"sqlite-vec (vector search)\" };\n }\n const abmindLib = join(process.env[\"ABMIND_HOME\"] ?? join(homedir(), \".abmind\"), \"lib\", \"node_modules\", \"sqlite-vec\");\n const bundleNm = join(home, \"current\", \"node_modules\", \"sqlite-vec\");\n if (existsSync(abmindLib) || existsSync(bundleNm)) {\n return { ok: true, label: \"sqlite-vec (vector search)\" };\n }\n return { ok: false, label: \"sqlite-vec (falling back to brute-force search)\", hint: \"Run: abtars deps install\" };\n}\n\nexport function printHealthSummary(home: string): void {\n const items: HealthItem[] = [\n { ok: true, label: `Node.js ${process.versions.node}` },\n checkOllama(),\n checkEmbeddingModel(),\n checkSqliteVec(home),\n ];\n\n process.stdout.write(\"\\n\u2500\u2500 Dependency health \u2500\u2500\\n\");\n for (const item of items) {\n const icon = item.ok ? \"\u2713\" : \"\u26A0\uFE0F \";\n process.stdout.write(` ${icon} ${item.label}\\n`);\n if (item.hint) process.stdout.write(` ${item.hint}\\n`);\n }\n process.stdout.write(\"\\n\");\n}\n"],
|
|
5
|
+
"mappings": ";;;;;AAIA,SAAS,oBAAoB;AAC7B,SAAS,YAAY;AACrB,SAAS,kBAAkB;AAC3B,SAAS,eAAe;AAQxB,SAAS,cAA0B;AACjC,MAAI;AACF,iBAAa,UAAU,CAAC,WAAW,GAAG,EAAE,SAAS,KAAM,OAAO,OAAO,CAAC;AACtE,WAAO,EAAE,IAAI,MAAM,OAAO,SAAS;AAAA,EACrC,QAAQ;AACN,WAAO,EAAE,IAAI,OAAO,OAAO,uCAAuC,MAAM,yDAAyD;AAAA,EACnI;AACF;AAEA,SAAS,sBAAkC;AACzC,MAAI;AACF,UAAM,MAAM,aAAa,UAAU,CAAC,MAAM,GAAG,EAAE,SAAS,KAAO,OAAO,QAAQ,UAAU,QAAQ,CAAC;AACjG,QAAI,IAAI,SAAS,kBAAkB,GAAG;AACpC,aAAO,EAAE,IAAI,MAAM,OAAO,qCAAqC;AAAA,IACjE;AACA,WAAO,EAAE,IAAI,OAAO,OAAO,2BAA2B,MAAM,oCAAoC;AAAA,EAClG,QAAQ;AACN,WAAO,EAAE,IAAI,OAAO,OAAO,0CAA0C,MAAM,mDAAmD;AAAA,EAChI;AACF;AAEA,SAAS,eAAe,MAA0B;AAChD,QAAM,WAAW,KAAK,QAAQ,GAAG,UAAU,OAAO,gBAAgB,YAAY;AAC9E,MAAI,WAAW,QAAQ,GAAG;AACxB,WAAO,EAAE,IAAI,MAAM,OAAO,6BAA6B;AAAA,EACzD;AACA,QAAM,YAAY,KAAK,QAAQ,IAAI,aAAa,KAAK,KAAK,QAAQ,GAAG,SAAS,GAAG,OAAO,gBAAgB,YAAY;AACpH,QAAM,WAAW,KAAK,MAAM,WAAW,gBAAgB,YAAY;AACnE,MAAI,WAAW,SAAS,KAAK,WAAW,QAAQ,GAAG;AACjD,WAAO,EAAE,IAAI,MAAM,OAAO,6BAA6B;AAAA,EACzD;AACA,SAAO,EAAE,IAAI,OAAO,OAAO,mDAAmD,MAAM,2BAA2B;AACjH;AAEO,SAAS,mBAAmB,MAAoB;AACrD,QAAM,QAAsB;AAAA,IAC1B,EAAE,IAAI,MAAM,OAAO,WAAW,QAAQ,SAAS,IAAI,GAAG;AAAA,IACtD,YAAY;AAAA,IACZ,oBAAoB;AAAA,IACpB,eAAe,IAAI;AAAA,EACrB;AAEA,UAAQ,OAAO,MAAM,iDAA6B;AAClD,aAAW,QAAQ,OAAO;AACxB,UAAM,OAAO,KAAK,KAAK,WAAM;AAC7B,YAAQ,OAAO,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK;AAAA,CAAI;AAChD,QAAI,KAAK,KAAM,SAAQ,OAAO,MAAM,QAAQ,KAAK,IAAI;AAAA,CAAI;AAAA,EAC3D;AACA,UAAQ,OAAO,MAAM,IAAI;AAC3B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -5,12 +5,13 @@ import {
|
|
|
5
5
|
getHeartbeatInstance,
|
|
6
6
|
init_heartbeat_system,
|
|
7
7
|
setHeartbeatInstance
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-E7DZYCSF.js";
|
|
9
|
+
import "./chunk-ZKMKAO75.js";
|
|
10
10
|
import "./chunk-N5KN3LGD.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-W2PSVV2T.js";
|
|
12
|
+
import "./chunk-6S3G6GPO.js";
|
|
13
|
+
import "./chunk-7XXISOHU.js";
|
|
14
|
+
import "./chunk-2BXXQG7P.js";
|
|
14
15
|
import "./chunk-7K2YZTLD.js";
|
|
15
16
|
init_heartbeat_system();
|
|
16
17
|
export {
|
|
@@ -18,4 +19,4 @@ export {
|
|
|
18
19
|
getHeartbeatInstance,
|
|
19
20
|
setHeartbeatInstance
|
|
20
21
|
};
|
|
21
|
-
//# sourceMappingURL=heartbeat-system-
|
|
22
|
+
//# sourceMappingURL=heartbeat-system-MUXLT4E6.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
loadFixes,
|
|
5
5
|
recordResult,
|
|
6
6
|
shouldAttempt
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CNENVY37.js";
|
|
8
8
|
import {
|
|
9
9
|
checkCron,
|
|
10
10
|
clearPendingReminders,
|
|
@@ -17,40 +17,40 @@ import {
|
|
|
17
17
|
createMetricsTask,
|
|
18
18
|
createUserSessionExpiryTask,
|
|
19
19
|
readPendingReminders
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-AMUJEP6L.js";
|
|
21
|
+
import "./chunk-FF2F7ENH.js";
|
|
22
|
+
import "./chunk-63A7ZRIH.js";
|
|
23
|
+
import "./chunk-DJOSXXM2.js";
|
|
24
24
|
import "./chunk-ZAA7B5BN.js";
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
import "./chunk-UU3RLJSD.js";
|
|
26
|
+
import "./chunk-YWHJJHJ2.js";
|
|
27
|
+
import "./chunk-QOGZ7BFL.js";
|
|
28
|
+
import {
|
|
29
|
+
readEnvWithDefault
|
|
30
|
+
} from "./chunk-OWPQIBAO.js";
|
|
31
|
+
import "./chunk-6IB3GVXK.js";
|
|
32
|
+
import "./chunk-HWFN7JGU.js";
|
|
31
33
|
import {
|
|
32
34
|
init_spin,
|
|
33
35
|
spin_exports
|
|
34
|
-
} from "./chunk-
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import
|
|
37
|
-
|
|
38
|
-
} from "./chunk-V6CV3QPH.js";
|
|
39
|
-
import "./chunk-56D3Y44D.js";
|
|
40
|
-
import "./chunk-T7TAWGBX.js";
|
|
41
|
-
import "./chunk-S7ZIGIR5.js";
|
|
42
|
-
import "./chunk-O4GKI3Q3.js";
|
|
43
|
-
import "./chunk-4PIVWXUJ.js";
|
|
44
|
-
import "./chunk-W726UGI6.js";
|
|
45
|
-
import "./chunk-S6HEHCCG.js";
|
|
46
|
-
import "./chunk-YME7NRGP.js";
|
|
47
|
-
import "./chunk-TY26WMQY.js";
|
|
36
|
+
} from "./chunk-FSGICOCX.js";
|
|
37
|
+
import "./chunk-YWZPKBO6.js";
|
|
38
|
+
import "./chunk-KLG4SCF7.js";
|
|
39
|
+
import "./chunk-RCWQ34QR.js";
|
|
48
40
|
import {
|
|
49
41
|
init_user_registry,
|
|
50
42
|
loadUsers
|
|
51
|
-
} from "./chunk-
|
|
52
|
-
import "./chunk-
|
|
53
|
-
import "./chunk-
|
|
43
|
+
} from "./chunk-7LORCJCQ.js";
|
|
44
|
+
import "./chunk-52PQM4EZ.js";
|
|
45
|
+
import "./chunk-X7DLKIQM.js";
|
|
46
|
+
import "./chunk-2ZD7VQRW.js";
|
|
47
|
+
import "./chunk-R76K6L6H.js";
|
|
48
|
+
import "./chunk-ZKMKAO75.js";
|
|
49
|
+
import "./chunk-RO3TAYBR.js";
|
|
50
|
+
import "./chunk-GFAJSPMD.js";
|
|
51
|
+
import "./chunk-B2TIRDZC.js";
|
|
52
|
+
import "./chunk-WTIGZO3N.js";
|
|
53
|
+
import "./chunk-7OI46MH7.js";
|
|
54
54
|
import {
|
|
55
55
|
init_local_time,
|
|
56
56
|
localISO
|
|
@@ -58,23 +58,24 @@ import {
|
|
|
58
58
|
import {
|
|
59
59
|
getEnv,
|
|
60
60
|
init_env_schema
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-BWJ37KMW.js";
|
|
62
62
|
import {
|
|
63
63
|
init_log_and_swallow,
|
|
64
64
|
logAndSwallow
|
|
65
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-W2PSVV2T.js";
|
|
66
66
|
import {
|
|
67
67
|
getLogFile,
|
|
68
68
|
init_logger,
|
|
69
69
|
logDebug,
|
|
70
70
|
logInfo,
|
|
71
71
|
logWarn
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-6S3G6GPO.js";
|
|
73
73
|
import "./chunk-DGS7J4P6.js";
|
|
74
74
|
import {
|
|
75
75
|
abtarsHome,
|
|
76
76
|
init_paths
|
|
77
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-7XXISOHU.js";
|
|
78
|
+
import "./chunk-2BXXQG7P.js";
|
|
78
79
|
import {
|
|
79
80
|
__toCommonJS
|
|
80
81
|
} from "./chunk-7K2YZTLD.js";
|
|
@@ -207,7 +208,7 @@ function handleKnownFault(rule, _errorKey, adapter, chatId, dryRun) {
|
|
|
207
208
|
notify(adapter, chatId, `\u26A0\uFE0F Wired fix failed 3x for "${rule.pattern}" \u2014 suppressed 24h. Manual intervention needed.`);
|
|
208
209
|
}
|
|
209
210
|
} else if (rule.verified === false) {
|
|
210
|
-
notify(adapter, chatId, `\u{1F527} Self-fix ran: "${rule.pattern}" \u2192 ${rule.command.join(" ")} \u2713
|
|
211
|
+
notify(adapter, chatId, `\u{1F527} Self-fix ran: "${rule.pattern}" \u2192 ${(rule.command ?? []).join(" ")} \u2713
|
|
211
212
|
Run /healing approve ${rule.pattern.slice(0, 20)} to silence.`);
|
|
212
213
|
}
|
|
213
214
|
});
|
|
@@ -265,7 +266,7 @@ Do NOT attempt to fix code you don't understand.`;
|
|
|
265
266
|
}, 5 * 6e4);
|
|
266
267
|
(async () => {
|
|
267
268
|
try {
|
|
268
|
-
const { spin } = await import("./spin-
|
|
269
|
+
const { spin } = await import("./spin-76K4R6FK.js");
|
|
269
270
|
const { result } = await spin.dispatchAwait({ type: "H", goal: prompt, title: `SHA: ${errorKey.slice(0, 20)}`, source: "agent" });
|
|
270
271
|
recordResult("autofix-unknown", errorKey, true);
|
|
271
272
|
logAutoFix(`AGENT OK: ${errorKey} \u2192 ${result.slice(0, 200)}`);
|
|
@@ -297,7 +298,7 @@ function createModelHealthTask(ctx) {
|
|
|
297
298
|
const execute = async () => {
|
|
298
299
|
if (done) return;
|
|
299
300
|
done = true;
|
|
300
|
-
const { loadTransport, resolveAgent, consumeRepairs } = await import("./transport-config-
|
|
301
|
+
const { loadTransport, resolveAgent, consumeRepairs } = await import("./transport-config-SF6GBV47.js");
|
|
301
302
|
const tc = loadTransport();
|
|
302
303
|
if (!tc) return;
|
|
303
304
|
const repairs = consumeRepairs();
|
|
@@ -357,7 +358,7 @@ function createModelHealthTask(ctx) {
|
|
|
357
358
|
}
|
|
358
359
|
}
|
|
359
360
|
if (warnings.length > 0) {
|
|
360
|
-
const { sendNotification } = await import("./notification-
|
|
361
|
+
const { sendNotification } = await import("./notification-JQNVGICN.js");
|
|
361
362
|
sendNotification(ctx, `\u{1F3E5} Model health check:
|
|
362
363
|
${warnings.join("\n")}
|
|
363
364
|
Subagents will fall back to main model.`);
|
|
@@ -448,10 +449,10 @@ async function registerTier3Tasks(ctx) {
|
|
|
448
449
|
},
|
|
449
450
|
chatId: () => String(masterChatId)
|
|
450
451
|
}));
|
|
451
|
-
import("./nerve-
|
|
452
|
+
import("./nerve-TC34H4EL.js").then(({ nerve }) => {
|
|
452
453
|
nerve.on("card:done", async (cardId) => {
|
|
453
454
|
try {
|
|
454
|
-
const { kanbanPending, kanbanSetDelivering, kanbanMarkDelivered } = await import("./kanban-board-
|
|
455
|
+
const { kanbanPending, kanbanSetDelivering, kanbanMarkDelivered } = await import("./kanban-board-4AI5Z6B5.js");
|
|
455
456
|
const pending = kanbanPending();
|
|
456
457
|
const card = pending.find((c) => c.id === cardId);
|
|
457
458
|
if (!card) return;
|
|
@@ -504,15 +505,15 @@ ${String(meta.message ?? "").slice(0, 200)}`);
|
|
|
504
505
|
});
|
|
505
506
|
heartbeat.registerTask(createMetricsTask(() => cronQueue.pending));
|
|
506
507
|
heartbeat.registerTask(createUserSessionExpiryTask());
|
|
507
|
-
import("./reconciler-
|
|
508
|
+
import("./reconciler-7LOOUK43.js").then(({ startReconciler }) => {
|
|
508
509
|
startReconciler();
|
|
509
510
|
}).catch((err) => logAndSwallow(TAG, "reconciler", err));
|
|
510
|
-
import("./spin-
|
|
511
|
+
import("./spin-76K4R6FK.js").then(({ spin }) => {
|
|
511
512
|
heartbeat.registerTask({ name: "spin-tick", execute: () => spin.tick() });
|
|
512
513
|
}).catch((err) => logAndSwallow(TAG, "spin-tick", err));
|
|
513
514
|
{
|
|
514
515
|
const { spin: spinRef } = (init_spin(), __toCommonJS(spin_exports));
|
|
515
|
-
heartbeat.registerTask({ name: "busy-unstick", execute: () => {
|
|
516
|
+
heartbeat.registerTask({ name: "busy-unstick", execute: async () => {
|
|
516
517
|
const now = Date.now();
|
|
517
518
|
for (const s of spinRef.listAllSessions()) {
|
|
518
519
|
if (s.busy && s.lastActiveAt && now - s.lastActiveAt > 6e4) {
|
|
@@ -526,7 +527,7 @@ ${String(meta.message ?? "").slice(0, 200)}`);
|
|
|
526
527
|
}
|
|
527
528
|
} });
|
|
528
529
|
}
|
|
529
|
-
import("./gossip-
|
|
530
|
+
import("./gossip-VSEY2HSE.js").then(({ gossipBroadcast, setGossipInterval }) => {
|
|
530
531
|
setGossipInterval(heartbeat.intervalMs);
|
|
531
532
|
heartbeat.registerTask({ name: "gossip-health", execute: async () => {
|
|
532
533
|
gossipBroadcast();
|
|
@@ -542,7 +543,7 @@ ${String(meta.message ?? "").slice(0, 200)}`);
|
|
|
542
543
|
}
|
|
543
544
|
ctx.selfHealerTask = selfHealerTask;
|
|
544
545
|
pipelineDeps.selfHealerTask = selfHealerTask;
|
|
545
|
-
const { registerCommand } = await import("./commands-
|
|
546
|
+
const { registerCommand } = await import("./commands-2JQ5YTJX.js");
|
|
546
547
|
for (const [name, handler] of capabilities.commands) {
|
|
547
548
|
registerCommand(name, handler);
|
|
548
549
|
}
|
|
@@ -558,4 +559,4 @@ ${String(meta.message ?? "").slice(0, 200)}`);
|
|
|
558
559
|
export {
|
|
559
560
|
registerTier3Tasks
|
|
560
561
|
};
|
|
561
|
-
//# sourceMappingURL=heartbeat-tier3-
|
|
562
|
+
//# sourceMappingURL=heartbeat-tier3-636ZMM4E.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/boot/heartbeat-tier3.ts", "../src/components/self-healer.ts", "../src/boot/heartbeat-model-health.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * heartbeat-tier3.ts \u2014 Register Tier 3 heartbeat tasks.\n *\n * Called from phasePipelineDeps after transport+platforms+cronQueue are ready.\n * These tasks need transport, memory, cronQueue, or platform adapters.\n */\n\nimport { getEnv } from \"../components/env-schema.js\";\nimport { logAndSwallow } from \"../components/log-and-swallow.js\";\nimport { createSelfHealerTask } from \"../components/self-healer.js\";\nimport {\n createIdleCompactTask, createAgeCheckTask, createDbIntegrityTask,\n createKanbanDeliveryTask, createKanbanCleanupTask, createUserSessionExpiryTask, createMetricsTask,\n} from \"../components/heartbeat-tasks.js\";\nimport { checkCron, readPendingReminders, clearPendingReminders } from \"../components/tasks/task-checker.js\";\nimport { loadUsers } from \"../components/user-registry.js\";\nimport { logInfo, logWarn } from \"../components/logger.js\";\nimport { abtarsHome } from \"../paths.js\";\nimport { createCronCallback } from \"./phase-pipeline-deps.js\";\nimport { createModelHealthTask } from \"./heartbeat-model-health.js\";\nimport { readEnvWithDefault } from \"../components/env.js\";\nimport type { BootCtx } from \"./context.js\";\n\nconst TAG = \"heartbeat\";\n\nexport async function registerTier3Tasks(ctx: BootCtx): Promise<void> {\n const { heartbeat, transport, cronQueue, memory, memoryConfig, config, pipelineDeps, capabilities } = ctx;\n if (!heartbeat || !transport || !cronQueue || !pipelineDeps) return;\n\n const cronCallback = createCronCallback(ctx);\n\n heartbeat.registerTask({\n name: \"tasks\",\n execute: async () => {\n const dueTasks = checkCron();\n for (const entry of dueTasks) cronQueue.enqueue(entry, cronCallback);\n },\n });\n\n heartbeat.registerTask({\n name: \"reminder-injector\",\n execute: async () => {\n const reminders = readPendingReminders();\n if (reminders.length === 0) return;\n clearPendingReminders();\n for (const r of reminders) {\n logInfo(\"main\", `Injecting reminder for chat ${r.chatId}: \"${r.message}\"`);\n if (ctx.telegramAdapter) {\n ctx.telegramAdapter.injectMessage({\n platform: \"telegram\",\n channelId: String(r.chatId),\n userId: loadUsers().byPlatformId.get(\"telegram:\" + r.chatId)?.userId ?? \"master\",\n senderId: String(r.chatId),\n senderName: \"task\",\n text: `[Scheduled reminder] ${r.message}`,\n timestamp: Date.now(),\n threadId: r.threadId ? String(r.threadId) : undefined,\n isGroup: false,\n isVoice: false,\n });\n }\n }\n },\n });\n\n const SLEEP_HOUR = parseInt(readEnvWithDefault(\"BED_TIME\", \"2\", \"bedtime hour\").split(\":\")[0] ?? \"2\", 10);\n const SLEEP_MINUTE = parseInt(readEnvWithDefault(\"BED_TIME\", \"2\", \"bedtime hour\").split(\":\")[1] ?? \"0\", 10);\n\n if (getEnv().ctxIdleCompactMin > 0) {\n heartbeat.registerTask(createIdleCompactTask({\n transport, memory, memoryDir: memoryConfig.memoryDir,\n allowedUserIds: config.telegram.allowedUserIds,\n isSleepActive: ctx.isSleepActive,\n }));\n }\n\n heartbeat.registerTask(createAgeCheckTask({\n memory,\n bridgeLockPath: ctx.bridgeLockPath,\n sleepAuditDir: ctx.sleepAuditDir,\n sleepHour: SLEEP_HOUR,\n sleepMinute: SLEEP_MINUTE,\n isSleepActive: ctx.isSleepActive,\n // doctorPath removed \u2014 runFixes() called directly from heartbeat-tasks.ts\n startSleep: () => { ctx.sleepHandle?.spawn(); },\n checkHwSleep: () => { ctx.sleepHandle?.checkHwSleep(); },\n checkStaleSleep: () => { ctx.sleepHandle?.checkStale(); },\n cronBusy: () => cronQueue.currentJob !== null || cronQueue.pending > 0,\n }));\n\n heartbeat.registerTask(createDbIntegrityTask(memory));\n\n const masterChatId = [...config.telegram.allowedUserIds][0] ?? 0;\n heartbeat.registerTask(createKanbanDeliveryTask({\n sendSystemMessage: ctx.sendSystemMessage!,\n sendMessage: async (chatId, text) => {\n if (!ctx.telegramAdapter) return;\n await ctx.telegramAdapter.sendMessage(chatId, text);\n },\n sendDocument: async (chatId, filePath, caption) => {\n if (!ctx.telegramAdapter) return;\n await ctx.telegramAdapter.sendDocument(chatId, filePath, caption);\n },\n chatId: () => String(masterChatId),\n }));\n\n // Nerve-driven instant delivery\n import(\"../components/nerve.js\").then(({ nerve }) => {\n nerve.on(\"card:done\", async (cardId: number) => {\n try {\n const { kanbanPending, kanbanSetDelivering, kanbanMarkDelivered } = await import(\"../components/tasks/kanban-board.js\");\n const pending = kanbanPending();\n const card = pending.find((c: { id: number }) => c.id === cardId);\n if (!card) return;\n\n kanbanSetDelivering(card.id);\n const targetChat = card.chat_id || String(masterChatId);\n\n if (card.delivery_mode === \"silent\") {\n kanbanMarkDelivered(card.id);\n return;\n }\n\n if (card.delivery_mode === \"deliver\") {\n if (ctx.telegramAdapter) {\n if (card.result_path) await ctx.telegramAdapter.sendDocument(targetChat, card.result_path, card.title);\n }\n if (ctx.sendSystemMessage) {\n await ctx.sendSystemMessage(`[SYSTEM] Task \"${card.title}\" complete. File delivered: ${card.result_path ?? \"(no file)\"}`);\n }\n kanbanMarkDelivered(card.id);\n return;\n }\n\n // \"announce\" \u2014 inject into agent for natural delivery\n if (ctx.sendSystemMessage) {\n await ctx.sendSystemMessage(\n `[TASK COMPLETE] \"${card.title}\" done.\\nResult:\\n${card.result_summary ?? \"(no output)\"}\\n\\nDeliver this to the user naturally.`\n );\n }\n kanbanMarkDelivered(card.id);\n } catch (err) { logAndSwallow(TAG, \"nerve:card:done delivery\", err); }\n });\n\n nerve.on(\"channel:message\", async (_cardId: number, meta?: Record<string, unknown>) => {\n if (!meta || (meta.to as string)?.toUpperCase() !== \"MASTER\") return;\n if (!ctx.telegramAdapter) return;\n try {\n const from = meta.from as string ?? \"agent\";\n await ctx.telegramAdapter.sendMessage(String(masterChatId), `[${from}->MASTER] card:${_cardId}\\n${String(meta.message ?? \"\").slice(0, 200)}`);\n } catch (err) { logAndSwallow(TAG, \"nerve:channel:message TG notify\", err); }\n });\n }).catch(err => logAndSwallow(TAG, \"nerve import\", err));\n\n heartbeat.registerTask(createKanbanCleanupTask());\n\n import(\"../components/metrics-collector.js\").then(({ initMetrics }) => {\n initMetrics(abtarsHome());\n }).catch(() => {});\n heartbeat.registerTask(createMetricsTask(() => cronQueue.pending));\n\n heartbeat.registerTask(createUserSessionExpiryTask());\n\n // Reconciler\n import(\"../components/reconciler.js\").then(({ startReconciler }) => {\n startReconciler();\n }).catch(err => logAndSwallow(TAG, \"reconciler\", err));\n\n // Spin tick\n import(\"../components/spin.js\").then(({ spin }) => {\n heartbeat.registerTask({ name: \"spin-tick\", execute: () => spin.tick() });\n }).catch(err => logAndSwallow(TAG, \"spin-tick\", err));\n\n // Busy-unstick\n {\n const { spin: spinRef } = require(\"../components/spin.js\") as typeof import(\"../components/spin.js\");\n heartbeat.registerTask({ name: \"busy-unstick\", execute: async () => {\n const now = Date.now();\n for (const s of spinRef.listAllSessions()) {\n if (s.busy && s.lastActiveAt && now - s.lastActiveAt > 60_000) {\n if (transport && \"sendInterrupt\" in transport) {\n (transport as { sendInterrupt: (r?: string) => Promise<void> }).sendInterrupt(\"timeout\").catch(() => {});\n }\n s.busy = false;\n logWarn(TAG, `Force-cleared stuck busy on ${s.id} (>60s) \u2014 interrupted`);\n }\n }\n }});\n }\n\n // Gossip\n import(\"../components/peer-transport/gossip.js\").then(({ gossipBroadcast, setGossipInterval }) => {\n setGossipInterval(heartbeat.intervalMs);\n heartbeat.registerTask({ name: \"gossip-health\", execute: async () => { gossipBroadcast(); } });\n }).catch(err => logAndSwallow(TAG, \"gossip\", err));\n\n if (transport.healthCheck) {\n heartbeat.registerTask({ name: \"transport-health\", execute: () => transport.healthCheck!() });\n }\n\n // Self-healer\n let selfHealerTask: ReturnType<typeof createSelfHealerTask> | null = null;\n if (getEnv().selfhealEnabled) {\n selfHealerTask = createSelfHealerTask(() => ctx.telegramAdapter, config.telegram.allowedUserIds);\n heartbeat.registerTask(selfHealerTask);\n }\n ctx.selfHealerTask = selfHealerTask;\n pipelineDeps.selfHealerTask = selfHealerTask;\n\n // Capability tasks + commands\n const { registerCommand } = await import(\"../components/commands/index.js\");\n for (const [name, handler] of capabilities.commands) {\n registerCommand(name, handler);\n }\n for (const task of capabilities.heartbeatTasks) {\n heartbeat.registerTask(task);\n }\n\n // Model health\n const { task: modelHealthTask, runNow: runModelHealth } = createModelHealthTask(ctx);\n heartbeat.registerTask(modelHealthTask);\n queueMicrotask(() => { runModelHealth().catch(err => logAndSwallow(TAG, \"runModelHealth boot\", err)); });\n}\n", "/**\n * Self-healer heartbeat task \u2014 scans bridge log for ERROR lines (#954).\n *\n * Two-state dispatch:\n * 1. Known fault (pattern in sha-policy fixes) \u2192 wired command[], no LLM\n * 2. Unknown fault (no matching rule) \u2192 one-shot agent via Spin (if SELFHEAL_ENABLED)\n *\n * All gating via sha-tracker. No inline state.\n */\n\nimport { readFileSync, appendFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { spawn, execSync } from \"node:child_process\";\nimport { logInfo, logDebug } from \"./logger.js\";\nimport { getLogFile } from \"./logger.js\";\nimport { abtarsHome } from \"../paths.js\";\nimport { logAndSwallow } from \"./log-and-swallow.js\";\nimport { getEnv } from \"./env-schema.js\";\nimport { localISO } from \"../utils/local-time.js\";\nimport { loadFixes, shouldAttempt, recordResult } from \"./sha-tracker.js\";\nimport type { FixRule } from \"./sha-tracker.js\";\nimport type { HeartbeatTask } from \"../types/index.js\";\nimport type { TelegramAdapter } from \"../platforms/telegram/telegram-adapter.js\";\n\n/** Write SHA dispatch to sha-call.log (model reads this for recurrence detection). */\nfunction logShaCall(errorKey: string, errorLine: string): void {\n const logPath = join(abtarsHome(), \"logs\", \"sha-call.log\");\n const entry = JSON.stringify({ ts: localISO(), errorKey, errorLine: errorLine.slice(0, 300) });\n try { appendFileSync(logPath, entry + \"\\n\"); } catch {}\n}\n\n// Known-noise patterns are in sha-policy.json (seeded) \u2014 no hardcoded list.\n\nfunction logAutoFix(message: string): void {\n const dir = join(abtarsHome(), \"logs\");\n try { mkdirSync(dir, { recursive: true }); } catch (err) { logAndSwallow(\"self_healer\", \"op\", err); }\n const date = new Date().toISOString().slice(0, 10);\n appendFileSync(join(dir, `autofix-${date}.log`), `${localISO()} ${message}\\n`);\n}\n\nfunction notify(adapter: TelegramAdapter, chatId: string, msg: string): void {\n try { adapter.sendNotification(chatId, msg); } catch {}\n}\n\nexport function createSelfHealerTask(\n getTelegramAdapter: () => TelegramAdapter | null,\n allowedUserIds: Set<number>,\n): HeartbeatTask & { enabled: boolean } {\n let lastTs = localISO();\n let bridgeStartTs = \"\";\n let enabled = getEnv().selfhealEnabled;\n let agentRunning = false;\n const dryRun = process.env[\"SELFHEAL_DRY_RUN\"] === \"true\";\n\n const task: HeartbeatTask & { enabled: boolean } = {\n name: \"self-healer\",\n get enabled() { return enabled; },\n set enabled(v: boolean) { enabled = v; },\n execute: async () => {\n if (!enabled) return;\n const logFile = getLogFile();\n try {\n const content = readFileSync(logFile, \"utf-8\");\n const lines = content.split(\"\\n\");\n const fixes = loadFixes();\n\n if (!bridgeStartTs) {\n for (let i = lines.length - 1; i >= 0; i--) {\n if (lines[i]!.includes(\"BRIDGE START\")) { bridgeStartTs = lines[i]!.slice(0, 23); break; }\n }\n }\n\n const adapter = getTelegramAdapter();\n const chatId = String([...allowedUserIds][0] ?? \"\");\n if (!adapter || !chatId) return;\n\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i]!;\n if (line.length < 24 || !line.includes(\" ERROR \")) continue;\n const ts = line.slice(0, 23);\n if (ts <= lastTs) break;\n if (bridgeStartTs && ts < bridgeStartTs) continue;\n if (line.includes(\"TEST \")) continue;\n\n const match = line.match(/\\[([^\\]]+)\\] (.+)/);\n if (!match) continue;\n const stableMsg = match[2]!.slice(0, 80)\n .replace(/\\b[0-9a-f]{8,}\\b/gi, \"X\")\n .replace(/\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}[:\\d.]*/g, \"T\")\n .replace(/\\b\\d{4,}\\b/g, \"N\")\n .replace(/\\s+/g, \" \").trim();\n const errorKey = `${match[1]}:${stableMsg}`;\n\n // Try to match a wired fix rule\n const rule = fixes.find(f => line.includes(f.pattern));\n if (rule) {\n handleKnownFault(rule, errorKey, adapter, chatId, dryRun);\n continue;\n }\n\n // Unknown fault \u2014 agent path (one-shot)\n if (!agentRunning) {\n handleUnknownFault(line, errorKey, adapter, chatId, () => { agentRunning = false; });\n if (!agentRunning) agentRunning = true; // set after dispatch\n }\n }\n\n // Advance watermark\n if (lines.length > 1) {\n const lastLine = lines[lines.length - 2] ?? \"\";\n if (lastLine.length >= 23) lastTs = lastLine.slice(0, 23);\n }\n } catch (err) { logAndSwallow(\"self_healer\", \"op\", err); }\n },\n };\n return task;\n}\n\nfunction handleKnownFault(rule: FixRule, _errorKey: string, adapter: TelegramAdapter, chatId: string, dryRun: boolean): void {\n if (!shouldAttempt(\"autofix-known\", rule.pattern)) return;\n\n // Suppress: known noise, skip silently\n if (rule.action === \"suppress\") {\n logDebug(\"self-healer\", `Suppressed: \"${rule.pattern}\"`);\n return;\n }\n\n if (!rule.command?.length) return;\n\n if (dryRun) {\n logInfo(\"self-healer\", `[DRY-RUN] Would run: ${rule.command.join(\" \")}`);\n return;\n }\n\n logInfo(\"self-healer\", `Wired fix: ${rule.command.join(\" \")} (pattern: \"${rule.pattern}\")`);\n logAutoFix(`WIRED START: ${rule.pattern} \u2192 ${rule.command.join(\" \")}`);\n\n const child = spawn(rule.command[0]!, rule.command.slice(1), { stdio: \"ignore\" });\n child.on(\"exit\", (code) => {\n const ok = code === 0;\n recordResult(\"autofix-known\", rule.pattern, ok, ok ? undefined : `exit ${code}`);\n logAutoFix(`WIRED ${ok ? \"OK\" : \"FAIL\"}: ${rule.pattern} (exit ${code})`);\n\n if (!ok) {\n // Check if we hit maxRetries \u2014 notify user\n if (!shouldAttempt(\"autofix-known\", rule.pattern)) {\n notify(adapter, chatId, `\u26A0\uFE0F Wired fix failed 3x for \"${rule.pattern}\" \u2014 suppressed 24h. Manual intervention needed.`);\n }\n } else if (rule.verified === false) {\n // Unverified self-rule first success \u2014 notify\n notify(adapter, chatId, `\uD83D\uDD27 Self-fix ran: \"${rule.pattern}\" \u2192 ${(rule.command ?? []).join(\" \")} \u2713\\nRun /healing approve ${rule.pattern.slice(0, 20)} to silence.`);\n }\n });\n}\n\nfunction handleUnknownFault(errorLine: string, errorKey: string, adapter: TelegramAdapter, chatId: string, onDone: () => void): void {\n if (!shouldAttempt(\"autofix-unknown\", errorKey)) return;\n\n // Skip dispatch during darkwake (deploy restart) or night hours\n const hour = new Date().getHours();\n if (hour < 7) { logDebug(\"self-healer\", `Skipping SHA dispatch \u2014 night hours (${hour}:xx)`); return; }\n try {\n const lock = JSON.parse(readFileSync(join(abtarsHome(), \"bridge.lock\"), \"utf-8\"));\n if (lock.bootType === \"darkwake\") { logDebug(\"self-healer\", \"Skipping SHA dispatch \u2014 darkwake boot\"); return; }\n } catch { /* proceed if unreadable */ }\n\n logInfo(\"self-healer\", `Unknown fault \u2014 dispatching agent: ${errorKey.slice(0, 60)}`);\n logAutoFix(`AGENT START: ${errorKey}`);\n logShaCall(errorKey, errorLine);\n\n // Ensure source is available for SHA to investigate\n const srcDir = join(abtarsHome(), \"src/abtars\");\n if (!existsSync(srcDir)) {\n try {\n mkdirSync(join(abtarsHome(), \"src\"), { recursive: true });\n execSync(`git clone -b dev git@github.com:aksika/abtars.git \"${srcDir}\"`, { timeout: 60_000, stdio: \"ignore\" });\n } catch { /* proceed without source */ }\n }\n\n const prompt = `A runtime error occurred:\\n\"${errorLine.slice(0, 500)}\"\\n\\nBefore investigating, check ~/.abtars/logs/sha-call.log for prior entries matching this error pattern.\\nIf you find a PREVIOUS entry with a similar error pattern:\\n - This is a recurring fault you could not eliminate last time.\\n - Add a suppress rule to ~/.abtars/config/sha-policy-self.json (read existing file, append to fixes array):\\n {\"pattern\": \"<plain substring from the error line>\", \"action\": \"suppress\"}\\n Pattern is matched via substring (includes), NOT regex. Use a distinctive fragment.\\n - Report: \"Recurring unfixable fault \u2014 suppressed.\"\\n - Do NOT attempt a fix.\\n\\nOtherwise, diagnose and fix it. After fixing:\\n1. Report what you did (1 paragraph)\\n2. If this error is likely to recur and you found a deterministic fix, write a wired rule to ~/.abtars/config/sha-policy-self.json:\\n {\"pattern\": \"<substring>\", \"action\": \"run\", \"command\": [...], \"cooldownMin\": 30}\\n Pattern is matched via substring (includes), NOT regex.\\n If the error was a one-off or no reliable automated fix exists, skip this step.\\n\\nIf you cannot find the root cause in the source code, tell the user:\\n\"This may be fixed in a newer version. Try /update to get the latest.\"\nDo NOT attempt to fix code you don't understand.`;\n\n const timeout = setTimeout(() => { onDone(); }, 5 * 60_000);\n\n (async () => {\n try {\n const { spin } = await import(\"./spin.js\");\n const { result } = await spin.dispatchAwait({ type: \"H\", goal: prompt, title: `SHA: ${errorKey.slice(0, 20)}`, source: \"agent\" });\n recordResult(\"autofix-unknown\", errorKey, true);\n logAutoFix(`AGENT OK: ${errorKey} \u2192 ${result.slice(0, 200)}`);\n notify(adapter, chatId, `\uD83E\uDDE0 SHA agent fixed: ${errorKey.slice(0, 40)}\\n${result.slice(0, 300)}`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n recordResult(\"autofix-unknown\", errorKey, false, msg);\n logAutoFix(`AGENT FAIL: ${errorKey} \u2192 ${msg}`);\n notify(adapter, chatId, `\u26A0\uFE0F SHA agent failed: ${errorKey.slice(0, 40)}\\n${msg.slice(0, 200)}`);\n } finally {\n clearTimeout(timeout);\n onDone();\n }\n })();\n}\n", "/**\n * heartbeat-model-health.ts \u2014 Model health check task.\n * Probes each configured model on first tick. Reports failures to Telegram.\n */\n\nimport { getEnv } from \"../components/env-schema.js\";\nimport { logInfo, logWarn } from \"../components/logger.js\";\nimport type { BootCtx } from \"./context.js\";\nimport type { HeartbeatTask } from \"../types/index.js\";\n\nexport function createModelHealthTask(ctx: BootCtx): { task: HeartbeatTask; runNow: () => Promise<void> } {\n let done = false;\n\n const execute = async (): Promise<void> => {\n if (done) return;\n done = true;\n const { loadTransport, resolveAgent, consumeRepairs } = await import(\"../components/transport-config.js\");\n const tc = loadTransport();\n if (!tc) return;\n\n const repairs = consumeRepairs();\n const warnings: string[] = [];\n if (repairs.length > 0) {\n for (const r of repairs) warnings.push(`\uD83D\uDD27 ${r.agent} auto-repaired: was ${r.oldProvider} \u2014 ${r.reason}`);\n }\n\n const prof = resolveAgent(\"professor\", tc);\n if (!prof) return;\n const profType = prof.provider.transport ?? \"api\";\n\n if (profType === \"api\") {\n const agents = [\"professor\", \"dreamy\", \"browsie\", \"coding\"] as const;\n const modelToAgents = new Map<string, string[]>();\n const modelToResolved = new Map<string, { endpoint: string; apiKey: string }>();\n for (const a of agents) {\n const r = resolveAgent(a, tc);\n if (!r) continue;\n if (!modelToAgents.has(r.model)) {\n modelToAgents.set(r.model, []);\n modelToResolved.set(r.model, { endpoint: r.provider.endpoint ?? \"http://localhost:11434/v1\", apiKey: getEnv().getApiKey(r.provider.apiKeyEnv ?? \"API_KEY\") ?? \"\" });\n }\n modelToAgents.get(r.model)!.push(a);\n }\n for (const [model, agentNames] of modelToAgents) {\n const { endpoint, apiKey } = modelToResolved.get(model)!;\n try {\n const res = await fetch(`${endpoint}/chat/completions`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}) },\n body: JSON.stringify({ model, messages: [{ role: \"user\", content: \"hi\" }], max_tokens: 1 }),\n signal: AbortSignal.timeout(30_000),\n });\n if (!res.ok) {\n warnings.push(`\u26A0\uFE0F ${model} \u2014 ${res.status} ${res.statusText} (affects ${agentNames.join(\", \")})`);\n logWarn(\"model-health\", `${model} failed: ${res.status} (${agentNames.join(\", \")})`);\n } else {\n logInfo(\"model-health\", `\u2713 ${agentNames[0]}=${model}`);\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n warnings.push(`\u26A0\uFE0F ${model} \u2014 ${msg} (affects ${agentNames.join(\", \")})`);\n logWarn(\"model-health\", `${model} unreachable: ${msg} (${agentNames.join(\", \")})`);\n }\n }\n } else if (profType === \"acp\" || profType === \"tmux\") {\n const transport = ctx.transport;\n if (transport && \"isConnected\" in transport && typeof (transport as { isConnected?: () => boolean }).isConnected === \"function\") {\n const connected = (transport as { isConnected: () => boolean }).isConnected();\n if (connected) {\n logInfo(\"model-health\", `\u2713 ${profType} transport connected`);\n } else {\n warnings.push(`\u26A0\uFE0F ${profType} transport not connected`);\n logWarn(\"model-health\", `${profType} transport not connected`);\n }\n } else {\n logInfo(\"model-health\", `\u2713 ${profType} transport (no isConnected check available)`);\n }\n }\n\n if (warnings.length > 0) {\n const { sendNotification } = await import(\"../components/notification.js\");\n sendNotification(ctx, `\uD83C\uDFE5 Model health check:\\n${warnings.join(\"\\n\")}\\nSubagents will fall back to main model.`);\n }\n };\n\n return { task: { name: \"model-health\", execute }, runNow: execute };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -5,9 +5,10 @@ import {
|
|
|
5
5
|
getHookSummary,
|
|
6
6
|
hasHooks,
|
|
7
7
|
loadHookConfig
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-HWFN7JGU.js";
|
|
9
|
+
import "./chunk-6S3G6GPO.js";
|
|
10
|
+
import "./chunk-7XXISOHU.js";
|
|
11
|
+
import "./chunk-2BXXQG7P.js";
|
|
11
12
|
import "./chunk-7K2YZTLD.js";
|
|
12
13
|
export {
|
|
13
14
|
fire,
|
|
@@ -15,4 +16,4 @@ export {
|
|
|
15
16
|
hasHooks,
|
|
16
17
|
loadHookConfig
|
|
17
18
|
};
|
|
18
|
-
//# sourceMappingURL=hook-system-
|
|
19
|
+
//# sourceMappingURL=hook-system-Z4XD6IM5.js.map
|
|
@@ -5,11 +5,12 @@ import {
|
|
|
5
5
|
init_hotskills,
|
|
6
6
|
register,
|
|
7
7
|
reloadCatalog
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-YZCOA4DC.js";
|
|
9
|
+
import "./chunk-MTE32OQH.js";
|
|
10
|
+
import "./chunk-W2PSVV2T.js";
|
|
11
|
+
import "./chunk-6S3G6GPO.js";
|
|
12
|
+
import "./chunk-7XXISOHU.js";
|
|
13
|
+
import "./chunk-2BXXQG7P.js";
|
|
13
14
|
import "./chunk-7K2YZTLD.js";
|
|
14
15
|
init_hotskills();
|
|
15
16
|
export {
|
|
@@ -17,4 +18,4 @@ export {
|
|
|
17
18
|
register,
|
|
18
19
|
reloadCatalog
|
|
19
20
|
};
|
|
20
|
-
//# sourceMappingURL=hotskills-
|
|
21
|
+
//# sourceMappingURL=hotskills-AOUWVTQB.js.map
|
|
@@ -4,15 +4,15 @@ import {
|
|
|
4
4
|
emptyManifest,
|
|
5
5
|
readManifest,
|
|
6
6
|
writeManifest
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-QJPDBJDP.js";
|
|
8
8
|
import {
|
|
9
9
|
packagePaths,
|
|
10
|
-
|
|
11
|
-
} from "./chunk-
|
|
10
|
+
resolveReleasesDir
|
|
11
|
+
} from "./chunk-2BXXQG7P.js";
|
|
12
12
|
import "./chunk-7K2YZTLD.js";
|
|
13
13
|
|
|
14
14
|
// src/cli/commands/install.ts
|
|
15
|
-
import { mkdir, readFile, stat,
|
|
15
|
+
import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
|
|
16
16
|
import { existsSync, readFileSync, readdirSync, copyFileSync, mkdirSync, realpathSync } from "node:fs";
|
|
17
17
|
import { hostname, homedir as _homedir } from "node:os";
|
|
18
18
|
import { execSync } from "node:child_process";
|
|
@@ -37,7 +37,7 @@ async function exists(p) {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
async function createSkeleton(home, dryRun) {
|
|
40
|
-
const { loadManifest } = await import("./install-manifest-
|
|
40
|
+
const { loadManifest } = await import("./install-manifest-624KOB4S.js");
|
|
41
41
|
const manifest = loadManifest();
|
|
42
42
|
const dirs = manifest.directories.map((d) => join(home, d.path));
|
|
43
43
|
if (dryRun) {
|
|
@@ -51,7 +51,7 @@ async function createSkeleton(home, dryRun) {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
async function seedConfig(repoRoot, _configDir, dryRun, home) {
|
|
54
|
-
const { loadManifest } = await import("./install-manifest-
|
|
54
|
+
const { loadManifest } = await import("./install-manifest-624KOB4S.js");
|
|
55
55
|
const manifest = loadManifest(repoRoot);
|
|
56
56
|
const seeded = [];
|
|
57
57
|
for (const seed of manifest.configSeeds) {
|
|
@@ -78,18 +78,18 @@ export NODE_PATH="$HOME/.local/lib/node_modules:\${NODE_PATH:-}"
|
|
|
78
78
|
let content;
|
|
79
79
|
if (name === "abmind") {
|
|
80
80
|
content = `#!/usr/bin/env bash
|
|
81
|
-
${pathPreamble}# Resolve abmind CLI \u2014 no
|
|
82
|
-
|
|
83
|
-
SRC_CLI="$HOME/.abtars-releases/src/abmind/dist/cli/abmind.js"
|
|
81
|
+
${pathPreamble}# Resolve abmind CLI \u2014 global install is canonical under #1243 (no longer bundled in the release)
|
|
82
|
+
LOCAL_CLI="$HOME/.local/lib/node_modules/abmind/dist/cli/abmind.js"
|
|
84
83
|
GLOBAL_CLI="$(npm root -g 2>/dev/null)/abmind/dist/cli/abmind.js"
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
exec node "$SRC_CLI" "$@"
|
|
84
|
+
SRC_CLI="$HOME/.abtars-releases/src/abmind/dist/cli/abmind.js"
|
|
85
|
+
if [ -f "$LOCAL_CLI" ]; then
|
|
86
|
+
exec node "$LOCAL_CLI" "$@"
|
|
89
87
|
elif [ -f "$GLOBAL_CLI" ]; then
|
|
90
88
|
exec node "$GLOBAL_CLI" "$@"
|
|
89
|
+
elif [ -f "$SRC_CLI" ]; then
|
|
90
|
+
exec node "$SRC_CLI" "$@"
|
|
91
91
|
else
|
|
92
|
-
echo "abmind: not found. Install via npm
|
|
92
|
+
echo "abmind: not found. Install via: npm install -g abmind" >&2
|
|
93
93
|
exit 1
|
|
94
94
|
fi
|
|
95
95
|
`;
|
|
@@ -132,7 +132,6 @@ function isPathOnPATH(userBinDir) {
|
|
|
132
132
|
async function install(opts) {
|
|
133
133
|
const paths = packagePaths("abtars");
|
|
134
134
|
const home = paths.home;
|
|
135
|
-
const userBinDir = resolveUserBinDir();
|
|
136
135
|
const repoRoot = join(dirname(realpathSync(process.argv[1] ?? fileURLToPath(import.meta.url))), "..");
|
|
137
136
|
const { initInstallLog, logInstall, logInstallHeader } = await import("./install-log-Q6RUHKWC.js");
|
|
138
137
|
initInstallLog(home);
|
|
@@ -184,6 +183,10 @@ Use 'abtars update' to upgrade, or --force to re-seed missing config.
|
|
|
184
183
|
await createSkeleton(home, opts.dryRun);
|
|
185
184
|
process.stdout.write(`\u2713 skeleton at ${home}
|
|
186
185
|
`);
|
|
186
|
+
if (!opts.dryRun) {
|
|
187
|
+
const deps = await import("./deps-VB3S3RLF.js");
|
|
188
|
+
await deps.deps(["install", "native"]);
|
|
189
|
+
}
|
|
187
190
|
const identityKey = join(paths.config, "identity.key");
|
|
188
191
|
const identityPub = join(paths.config, "identity.pub");
|
|
189
192
|
if (!opts.dryRun && !await exists(identityKey)) {
|
|
@@ -217,7 +220,7 @@ Use 'abtars update' to upgrade, or --force to re-seed missing config.
|
|
|
217
220
|
process.stdout.write(`\u2713 seeded config: ${seeded.join(", ")}
|
|
218
221
|
`);
|
|
219
222
|
}
|
|
220
|
-
const { loadManifest: loadInstallManifest } = await import("./install-manifest-
|
|
223
|
+
const { loadManifest: loadInstallManifest } = await import("./install-manifest-624KOB4S.js");
|
|
221
224
|
const installManifest = loadInstallManifest(repoRoot);
|
|
222
225
|
if (!opts.dryRun) {
|
|
223
226
|
await mkdir(paths.bin, { recursive: true });
|
|
@@ -279,7 +282,7 @@ Warning: ${paths.bin} is not on $PATH. Add to your shell config:
|
|
|
279
282
|
process.stdout.write(`\u2713 restored abtars data
|
|
280
283
|
`);
|
|
281
284
|
}
|
|
282
|
-
const { resolveAbmindHome } = await import("./paths-
|
|
285
|
+
const { resolveAbmindHome } = await import("./paths-BAUNPLNJ.js");
|
|
283
286
|
const abmindHome = resolveAbmindHome();
|
|
284
287
|
const abmindSrc = join(tmpDir, "abmind");
|
|
285
288
|
if (fileExists(abmindSrc)) {
|
|
@@ -311,7 +314,7 @@ Warning: ${paths.bin} is not on $PATH. Add to your shell config:
|
|
|
311
314
|
`);
|
|
312
315
|
}
|
|
313
316
|
} else if (process.platform === "linux") {
|
|
314
|
-
const releaseSrc = join(
|
|
317
|
+
const releaseSrc = join(resolveReleasesDir(), "src", "abtars", "scripts", "abtars-watchdog.service");
|
|
315
318
|
const unitSrc = existsSync(releaseSrc) ? releaseSrc : join(home, "scripts", "abtars-watchdog.service");
|
|
316
319
|
const unitDir = join(homedir(), ".config", "systemd", "user");
|
|
317
320
|
if (existsSync(unitSrc)) {
|
|
@@ -342,7 +345,7 @@ Install complete.
|
|
|
342
345
|
|
|
343
346
|
`);
|
|
344
347
|
}
|
|
345
|
-
const { printHealthSummary } = await import("./health-check-
|
|
348
|
+
const { printHealthSummary } = await import("./health-check-ASRLUJE5.js");
|
|
346
349
|
printHealthSummary(paths.home);
|
|
347
350
|
if (!opts.dryRun && opts.restore) {
|
|
348
351
|
const { validateMinimumViability, formatValidationError } = await import("./install-validate-H74LUCE2.js");
|
|
@@ -359,4 +362,4 @@ export {
|
|
|
359
362
|
install,
|
|
360
363
|
writeWrapper
|
|
361
364
|
};
|
|
362
|
-
//# sourceMappingURL=install-
|
|
365
|
+
//# sourceMappingURL=install-3GGZUN22.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli/commands/install.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * `abtars install [--force]` \u2014 first-time scaffolding + configuration wizard.\n *\n * Exports writeWrapper (used by deploy.ts) and install() for legacy paths.\n * The primary install flow is in onboard.ts (called by CLI dispatcher as `abtars install`).\n */\n\nimport { mkdir, readFile, stat, writeFile } from 'node:fs/promises';\nimport { existsSync, readFileSync, readdirSync, copyFileSync, mkdirSync, realpathSync } from 'node:fs';\nimport { hostname, homedir as _homedir } from 'node:os';\nimport { execSync } from 'node:child_process';\nimport { basename, dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { emptyManifest, packagePaths, readManifest, resolveReleasesDir, writeManifest } from '../deploy-lib-import.js';\n\n/** Resolve real user home even under sudo. */\nfunction homedir(): string {\n const sudoUser = process.env['SUDO_USER'];\n if (sudoUser) {\n try { return execSync(`getent passwd ${sudoUser}`, { encoding: 'utf-8' }).split(':')[5]!.trim(); }\n catch { /* fall through */ }\n }\n return _homedir();\n}\n\nexport interface InstallOptions {\n readonly restore?: string;\n readonly force: boolean;\n readonly dryRun: boolean;\n readonly mode?: \"simple\" | \"daemon\";\n}\n\n// CLI wrappers are read from install-manifest.json at runtime.\n// Each is a thin wrapper that invokes `node current/dist/cli/<name>.js \"$@\"`.\n// Regenerated on every install / flat-to-releases migration.\n\nasync function exists(p: string): Promise<boolean> {\n try {\n await stat(p);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function createSkeleton(home: string, dryRun: boolean): Promise<void> {\n const { loadManifest } = await import('../install-manifest.js');\n const manifest = loadManifest();\n const dirs = manifest.directories.map(d => join(home, d.path));\n if (dryRun) {\n process.stdout.write(`[dry-run] mkdir -p:\\n ${dirs.join('\\n ')}\\n`);\n return;\n }\n for (const d of manifest.directories) {\n await mkdir(join(home, d.path), { recursive: true, mode: d.mode ? parseInt(d.mode, 8) : undefined });\n }\n}\n\nasync function seedConfig(repoRoot: string, _configDir: string, dryRun: boolean, home: string): Promise<readonly string[]> {\n const { loadManifest } = await import('../install-manifest.js');\n const manifest = loadManifest(repoRoot);\n const seeded: string[] = [];\n for (const seed of manifest.configSeeds) {\n const src = join(repoRoot, seed.source);\n const dst = join(home, seed.dest);\n if (!(await exists(src))) continue;\n if (await exists(dst)) continue;\n if (dryRun) {\n seeded.push(`[dry-run] cp ${src} ${dst}`);\n continue;\n }\n const content = await readFile(src, 'utf-8');\n await mkdir(dirname(dst), { recursive: true });\n await writeFile(dst, content, { mode: seed.mode ? parseInt(seed.mode, 8) : 0o644 });\n seeded.push(basename(dst));\n }\n return seeded;\n}\n\nexport async function writeWrapper(binDir: string, name: string, currentLink: string, dryRun: boolean): Promise<void> {\n const bundleFile = name === 'abtars' ? 'abtars-cli.js' : `${name}.js`;\n // #912: ensure node is in PATH on macOS (homebrew) and Linux (.local/bin)\n const pathPreamble = `export PATH=\"/opt/homebrew/bin:$HOME/.local/bin:$PATH\"\\nexport NODE_PATH=\"$HOME/.local/lib/node_modules:\\${NODE_PATH:-}\"\\n`;\n let content: string;\n\n if (name === 'abmind') {\n content = `#!/usr/bin/env bash\n${pathPreamble}# Resolve abmind CLI \u2014 global install is canonical under #1243 (no longer bundled in the release)\nLOCAL_CLI=\"$HOME/.local/lib/node_modules/abmind/dist/cli/abmind.js\"\nGLOBAL_CLI=\"$(npm root -g 2>/dev/null)/abmind/dist/cli/abmind.js\"\nSRC_CLI=\"$HOME/.abtars-releases/src/abmind/dist/cli/abmind.js\"\nif [ -f \"$LOCAL_CLI\" ]; then\n exec node \"$LOCAL_CLI\" \"$@\"\nelif [ -f \"$GLOBAL_CLI\" ]; then\n exec node \"$GLOBAL_CLI\" \"$@\"\nelif [ -f \"$SRC_CLI\" ]; then\n exec node \"$SRC_CLI\" \"$@\"\nelse\n echo \"abmind: not found. Install via: npm install -g abmind\" >&2\n exit 1\nfi\n`;\n } else {\n const target = join(currentLink, 'bundle', bundleFile);\n const distFile = name === 'abtars' ? 'abtars.js' : `${name}.js`;\n const fallback = join(currentLink, 'dist', 'cli', distFile);\n content = `#!/usr/bin/env bash\n${pathPreamble}if [ -f \"${target}\" ]; then\n exec node \"${target}\" \"$@\"\nelif [ -f \"${fallback}\" ]; then\n exec node \"${fallback}\" \"$@\"\nelse\n GLOBAL_BIN=\"$(npm root -g 2>/dev/null)/abtars/bundle/${bundleFile}\"\n if [ -f \"$GLOBAL_BIN\" ]; then\n exec node \"$GLOBAL_BIN\" \"$@\"\n fi\n echo \"abtars: no release staged. Run 'abtars install' first.\" >&2\n exit 1\nfi\n`;\n }\n const path = join(binDir, name);\n if (dryRun) {\n process.stdout.write(`[dry-run] write wrapper ${path}\\n`);\n return;\n }\n try { const { unlinkSync } = await import(\"node:fs\"); unlinkSync(path); } catch { /* doesn't exist */ }\n await writeFile(path, content, { mode: 0o755 });\n}\n\nfunction isPathOnPATH(userBinDir: string): boolean {\n const PATH = process.env['PATH'] ?? '';\n return PATH.split(':').some((p) => p === userBinDir);\n}\n\nexport async function install(opts: InstallOptions): Promise<number> {\n const paths = packagePaths('abtars');\n const home = paths.home;\n const repoRoot = join(dirname(realpathSync(process.argv[1] ?? fileURLToPath(import.meta.url))), \"..\");\n\n // Install log (#718)\n const { initInstallLog, logInstall, logInstallHeader } = await import(\"../install-log.js\");\n initInstallLog(home);\n logInstallHeader(\"install\");\n const _origWrite = process.stdout.write.bind(process.stdout);\n process.stdout.write = ((chunk: any, ...args: any[]) => {\n if (typeof chunk === \"string\" && (chunk.startsWith(\"\u2713\") || chunk.startsWith(\"\u26A0\"))) logInstall(chunk.trimEnd());\n return _origWrite(chunk, ...args);\n }) as typeof process.stdout.write;\n\n const homeExists = await exists(home);\n const manifest = homeExists ? await readManifest(paths.manifest) : null;\n\n // #1101: Detect and remove stale shims from previous installs\n try {\n const { execSync } = await import(\"node:child_process\");\n const shimPath = execSync(\"which abtars 2>/dev/null\", { encoding: \"utf-8\" }).trim();\n const pnpmHome = process.env.PNPM_HOME ?? \"\";\n if (shimPath && pnpmHome && !shimPath.startsWith(pnpmHome) && !shimPath.includes(\".abtars\")) {\n const { unlinkSync } = await import(\"node:fs\");\n try { unlinkSync(shimPath); process.stdout.write(`\u2713 removed stale shim ${shimPath}\\n`); }\n catch { process.stderr.write(`\u26A0\uFE0F Stale shim at ${shimPath} \u2014 remove manually: rm ${shimPath}\\n`); }\n }\n } catch { /* which failed \u2014 no shim */ }\n\n if (homeExists && manifest && !opts.force && !opts.restore) {\n process.stderr.write(\n `~/.abtars already installed at version ${manifest.version || '(unset)'}.\\nUse 'abtars update' to upgrade, or --force to re-seed missing config.\\n`,\n );\n return 2;\n }\n\n // Kill stale daemon/watchdog from previous install (#771)\n try {\n const { execSync } = await import(\"node:child_process\");\n execSync(\"systemctl is-active abtars 2>/dev/null\", { stdio: \"ignore\" });\n execSync(\"sudo -n systemctl stop abtars 2>/dev/null\", { stdio: \"ignore\" });\n execSync(\"sudo -n systemctl disable abtars 2>/dev/null\", { stdio: \"ignore\" });\n } catch { /* not running or no sudo \u2014 fine */ }\n try {\n const { execSync } = await import(\"node:child_process\");\n execSync(\"pkill -f 'abtars-watchdog.sh' 2>/dev/null\", { stdio: \"ignore\" });\n } catch { /* no watchdog \u2014 fine */ }\n\n // Create skeleton (idempotent)\n await createSkeleton(home, opts.dryRun);\n process.stdout.write(`\u2713 skeleton at ${home}\\n`);\n\n // Install native deps (better-sqlite3, sqlite-vec) \u2014 required for kanban\n if (!opts.dryRun) {\n const deps = await import('./deps.js');\n await deps.deps(['install', 'native']);\n }\n\n // Core templates: abmind seeds its own on first boot (#427 ensureInitialized).\n // No longer seeded by abtars install.\n\n // Kiro agent config created on-demand by ACP transport (ensureAgentConfig)\n\n // Generate Ed25519 identity keypair (skip if already exists)\n const identityKey = join(paths.config, 'identity.key');\n const identityPub = join(paths.config, 'identity.pub');\n if (!opts.dryRun && !(await exists(identityKey))) {\n const { generateKeyPairSync } = await import('node:crypto');\n const { privateKey, publicKey } = generateKeyPairSync('ed25519');\n await writeFile(identityKey, privateKey.export({ format: 'der', type: 'pkcs8' }).toString('base64'));\n await writeFile(identityPub, publicKey.export({ format: 'der', type: 'spki' }).toString('base64'));\n const { chmodSync } = await import('node:fs');\n chmodSync(identityKey, 0o600);\n process.stdout.write(`\u2713 identity keypair generated\\n`);\n }\n\n // Generate self-signed Ed25519 TLS certificate (skip if already exists)\n const identityCrt = join(paths.config, 'identity.crt');\n const identityTlsKey = join(paths.config, 'identity.tls.key');\n if (!opts.dryRun && !(await exists(identityCrt))) {\n const { execSync } = await import('node:child_process');\n const { chmodSync } = await import('node:fs');\n const agentName = hostname();\n try {\n execSync(`openssl req -x509 -newkey ed25519 -keyout identity.tls.key -out identity.crt -days 3650 -nodes -subj \"/CN=${agentName}\"`, { cwd: paths.config, stdio: 'ignore' });\n chmodSync(identityTlsKey, 0o600);\n process.stdout.write(`\u2713 TLS certificate generated (Ed25519, 10yr)\\n`);\n } catch (err) {\n process.stderr.write(`\u26A0 TLS cert generation failed (openssl not found?). Agent-api will start without TLS.\\n`);\n }\n }\n\n // Seed config from examples (only missing ones)\n const seeded = await seedConfig(repoRoot, paths.config, opts.dryRun, home);\n if (seeded.length > 0) {\n process.stdout.write(`\u2713 seeded config: ${seeded.join(', ')}\\n`);\n }\n\n // Write wrappers (always overwrite \u2014 they're regenerable thin shims)\n const { loadManifest: loadInstallManifest } = await import('../install-manifest.js');\n const installManifest = loadInstallManifest(repoRoot);\n if (!opts.dryRun) {\n await mkdir(paths.bin, { recursive: true });\n }\n for (const name of installManifest.cliWrappers) {\n await writeWrapper(paths.bin, name, paths.current, opts.dryRun);\n }\n process.stdout.write(`\u2713 wrappers in ${paths.bin}\\n`);\n\n // Warn if ~/.local/bin not on PATH\n if (!isPathOnPATH(paths.bin)) {\n process.stderr.write(\n `\\nWarning: ${paths.bin} is not on $PATH. Add to your shell config:\\n export PATH=\"${paths.bin}:$PATH\"\\n`,\n );\n }\n\n // Initialize manifest if brand-new install AND migration didn't write one.\n // (Migration 003 writes a manifest mid-flow with version + migration record;\n // we must not clobber it here.)\n const manifestAfter = await readManifest(paths.manifest);\n if (manifestAfter === null && !opts.dryRun) {\n await writeManifest(paths.manifest, {\n ...emptyManifest('abtars', hostname()),\n version: '',\n });\n process.stdout.write(`\u2713 manifest initialized at ${paths.manifest}\\n`);\n }\n\n // Write install mode to manifest. Priority:\n // 1. --mode flag (explicit) \u2014 always wins\n // 2. existing manifest installMode \u2014 preserved (don't clobber on --force)\n // 3. default: supervised\n const manifestForMode = await readManifest(paths.manifest);\n const existingMode = manifestForMode?.installMode;\n const mode = opts.mode ?? existingMode ?? \"daemon\";\n if (manifestForMode) {\n await writeManifest(paths.manifest, { ...manifestForMode, installMode: mode });\n }\n process.stdout.write(`\u2713 install mode: ${mode}\\n`);\n\n // Release staging is handled by `abtars update` (auto-detects npm vs git source)\n\n // Restore from backup zip\n if (opts.restore) {\n const { spawnSync } = await import('node:child_process');\n const { existsSync: fileExists } = await import('node:fs');\n const zipPath = opts.restore;\n if (!fileExists(zipPath)) {\n process.stderr.write(`error: backup file not found: ${zipPath}\\n`);\n return 1;\n }\n // Extract to temp dir\n const tmpDir = join(process.env['TMPDIR'] ?? '/tmp', `abtars-restore-${Date.now()}`);\n const is7z = zipPath.endsWith('.7z');\n const extractCmd = is7z\n ? spawnSync('7z', ['x', zipPath, `-o${tmpDir}`, '-y'], { encoding: 'utf-8' })\n : spawnSync('unzip', ['-o', zipPath, '-d', tmpDir], { encoding: 'utf-8' });\n if (extractCmd.status !== 0) {\n process.stderr.write(`error: extract failed: ${extractCmd.stderr}\\n`);\n return 1;\n }\n // Copy abtars files \u2014 overwrite everything EXCEPT binaries (releases/, current, bin/)\n const abSrc = join(tmpDir, 'abtars');\n if (fileExists(abSrc)) {\n const skipSet = new Set(['releases', 'current', 'bin']);\n for (const f of readdirSync(abSrc)) {\n if (skipSet.has(f)) continue;\n spawnSync('cp', ['-r', join(abSrc, f), home], { stdio: 'inherit' });\n }\n process.stdout.write(`\u2713 restored abtars data\\n`);\n }\n // Copy abmind files\n const { resolveAbmindHome } = await import(\"../deploy-lib/paths.js\");\n const abmindHome = resolveAbmindHome();\n const abmindSrc = join(tmpDir, 'abmind');\n if (fileExists(abmindSrc)) {\n spawnSync('cp', ['-r', ...readdirSync(abmindSrc).map(f => join(abmindSrc, f)), abmindHome], { stdio: 'inherit' });\n process.stdout.write(`\u2713 restored abmind data\\n`);\n }\n // Cleanup + resync\n spawnSync('rm', ['-rf', tmpDir]);\n process.stdout.write(`\\n\u2713 Restore complete. Run 'abtars update' to resync.\\n`);\n return 0;\n }\n\n // --- supervised: load user-scope watchdog (LaunchAgent / systemd user) ---\n if (mode === 'daemon') {\n const { execSync } = await import('node:child_process');\n if (process.platform === 'darwin') {\n const plistSrc = join(home, 'scripts', 'com.abtars.watchdog.plist');\n const plistDst = join(homedir(), 'Library', 'LaunchAgents', 'com.abtars.watchdog.plist');\n if (existsSync(plistSrc)) {\n const content = readFileSync(plistSrc, 'utf-8').replaceAll('{{HOME}}', homedir());\n const { writeFileSync } = await import('node:fs');\n writeFileSync(plistDst, content);\n const uid = `gui/${process.getuid!()}`;\n try { execSync(`launchctl bootstrap ${uid} \"${plistDst}\"`, { stdio: 'ignore', timeout: 5000 }); } catch { /* already loaded */ }\n process.stdout.write(`\u2713 watchdog LaunchAgent loaded\\n`);\n }\n } else if (process.platform === 'linux') {\n const releaseSrc = join(resolveReleasesDir(), 'src', 'abtars', 'scripts', 'abtars-watchdog.service');\n const unitSrc = existsSync(releaseSrc) ? releaseSrc : join(home, 'scripts', 'abtars-watchdog.service');\n const unitDir = join(homedir(), '.config', 'systemd', 'user');\n if (existsSync(unitSrc)) {\n mkdirSync(unitDir, { recursive: true });\n copyFileSync(unitSrc, join(unitDir, 'abtars-watchdog.service'));\n try { execSync('systemctl --user daemon-reload && systemctl --user enable --now abtars-watchdog', { stdio: 'ignore' }); } catch { /* may fail in chroot */ }\n process.stdout.write(`\u2713 watchdog systemd user service enabled\\n`);\n }\n }\n }\n\n process.stdout.write(`\\nInstall complete.\\n`);\n if (!manifestAfter || manifestAfter.version === '') {\n process.stdout.write(`Next: 'abtars update' to build and activate the first release.\\n`);\n } else {\n process.stdout.write(`\\n\u2500\u2500 Next steps \u2500\u2500\\n`);\n process.stdout.write(` 1. (Optional) Install Ollama for memory embeddings: curl -fsSL https://ollama.com/install.sh | sh\\n`);\n process.stdout.write(` 2. Start the bridge: 'abtars restart' or use the watchdog\\n\\n`);\n }\n\n const { printHealthSummary } = await import('./health-check.js');\n printHealthSummary(paths.home);\n\n // #334: Post-install healthcheck \u2014 validate operator channel exists (only on --restore)\n if (!opts.dryRun && opts.restore) {\n const { validateMinimumViability, formatValidationError } = await import('./install-validate.js');\n const validation = validateMinimumViability(paths.config);\n if (!validation.ok) {\n const invocation = `abtars install --restore ${opts.restore}`;\n process.stderr.write(\"\\n\" + formatValidationError(validation, invocation) + \"\\n\");\n return 1;\n }\n }\n\n return 0;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["execSync"]
|
|
7
|
+
}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
import {
|
|
4
4
|
init_logger,
|
|
5
5
|
logWarn
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-6S3G6GPO.js";
|
|
7
|
+
import "./chunk-7XXISOHU.js";
|
|
8
|
+
import "./chunk-2BXXQG7P.js";
|
|
8
9
|
import "./chunk-7K2YZTLD.js";
|
|
9
10
|
|
|
10
11
|
// src/cli/install-manifest.ts
|
|
@@ -101,4 +102,4 @@ export {
|
|
|
101
102
|
loadManifest,
|
|
102
103
|
reconcileManifest
|
|
103
104
|
};
|
|
104
|
-
//# sourceMappingURL=install-manifest-
|
|
105
|
+
//# sourceMappingURL=install-manifest-624KOB4S.js.map
|