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
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
import {
|
|
4
4
|
init_log_and_swallow,
|
|
5
5
|
logAndSwallow
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-W2PSVV2T.js";
|
|
7
|
+
import "./chunk-6S3G6GPO.js";
|
|
8
|
+
import "./chunk-7XXISOHU.js";
|
|
9
|
+
import "./chunk-2BXXQG7P.js";
|
|
9
10
|
import "./chunk-7K2YZTLD.js";
|
|
10
11
|
|
|
11
12
|
// src/capabilities/browser/ssrf-guard.ts
|
|
@@ -62,4 +63,4 @@ async function isPrivateHost(hostname) {
|
|
|
62
63
|
export {
|
|
63
64
|
isPrivateHost
|
|
64
65
|
};
|
|
65
|
-
//# sourceMappingURL=ssrf-guard-
|
|
66
|
+
//# sourceMappingURL=ssrf-guard-E2YPLW6G.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/capabilities/browser/ssrf-guard.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * SSRF guard \u2014 reject private/internal IP addresses.\n * Adapted from NemoClaw's ssrf.ts.\n */\n\nimport { logAndSwallow } from \"../../components/log-and-swallow.js\";\nimport { resolve4, resolve6 } from \"node:dns/promises\";\n\nconst PRIVATE_RANGES_V4: ReadonlyArray<[number, number, number]> = [\n // [network, mask, bits] \u2014 network & mask === candidate & mask \u2192 private\n [0x7F000000, 0xFF000000, 8], // 127.0.0.0/8\n [0x0A000000, 0xFF000000, 8], // 10.0.0.0/8\n [0xAC100000, 0xFFF00000, 12], // 172.16.0.0/12\n [0xC0A80000, 0xFFFF0000, 16], // 192.168.0.0/16\n [0xA9FE0000, 0xFFFF0000, 16], // 169.254.0.0/16 (link-local)\n [0x64400000, 0xFFC00000, 10], // 100.64.0.0/10 (CGNAT)\n [0x00000000, 0xFFFFFFFF, 32], // 0.0.0.0\n];\n\nfunction ipv4ToInt(ip: string): number {\n const parts = ip.split(\".\").map(Number);\n return ((parts[0]! << 24) | (parts[1]! << 16) | (parts[2]! << 8) | parts[3]!) >>> 0;\n}\n\nfunction isPrivateV4(ip: string): boolean {\n const n = ipv4ToInt(ip);\n return PRIVATE_RANGES_V4.some(([net, mask]) => (n & mask) >>> 0 === (net & mask) >>> 0);\n}\n\nfunction isPrivateV6(ip: string): boolean {\n const lower = ip.toLowerCase();\n return lower === \"::1\" || lower.startsWith(\"fd\") || lower.startsWith(\"fe80\") || lower.startsWith(\"::ffff:127.\");\n}\n\n/** Check if a hostname resolves to a private IP. Resolves DNS to catch rebinding. */\nexport async function isPrivateHost(hostname: string): Promise<boolean> {\n // Direct IP check\n if (/^\\d+\\.\\d+\\.\\d+\\.\\d+$/.test(hostname)) return isPrivateV4(hostname);\n if (hostname.includes(\":\")) return isPrivateV6(hostname);\n if (hostname === \"localhost\") return true;\n\n // DNS resolution check (catches DNS rebinding)\n const timeout = (p: Promise<string[]>): Promise<string[]> =>\n Promise.race([p, new Promise<string[]>((_, reject) => setTimeout(() => reject(new Error(\"dns timeout\")), 2000))]);\n\n try {\n const v4 = await timeout(resolve4(hostname));\n if (v4.some(isPrivateV4)) return true;\n } catch (err) { logAndSwallow(\"ssrf_guard\", \"op\", err); }\n\n try {\n const v6 = await timeout(resolve6(hostname));\n if (v6.some(isPrivateV6)) return true;\n } catch (err) { logAndSwallow(\"ssrf_guard\", \"op\", err); }\n\n return false;\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;AAKA;AACA,SAAS,UAAU,gBAAgB;AAEnC,IAAM,oBAA6D;AAAA;AAAA,EAEjE,CAAC,YAAY,YAAY,CAAC;AAAA;AAAA,EAC1B,CAAC,WAAY,YAAY,CAAC;AAAA;AAAA,EAC1B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,GAAY,YAAY,EAAE;AAAA;AAC7B;AAEA,SAAS,UAAU,IAAoB;AACrC,QAAM,QAAQ,GAAG,MAAM,GAAG,EAAE,IAAI,MAAM;AACtC,UAAS,MAAM,CAAC,KAAM,KAAO,MAAM,CAAC,KAAM,KAAO,MAAM,CAAC,KAAM,IAAK,MAAM,CAAC,OAAQ;AACpF;AAEA,SAAS,YAAY,IAAqB;AACxC,QAAM,IAAI,UAAU,EAAE;AACtB,SAAO,kBAAkB,KAAK,CAAC,CAAC,KAAK,IAAI,OAAO,IAAI,UAAU,OAAO,MAAM,UAAU,CAAC;AACxF;AAEA,SAAS,YAAY,IAAqB;AACxC,QAAM,QAAQ,GAAG,YAAY;AAC7B,SAAO,UAAU,SAAS,MAAM,WAAW,IAAI,KAAK,MAAM,WAAW,MAAM,KAAK,MAAM,WAAW,aAAa;AAChH;AAGA,eAAsB,cAAc,UAAoC;AAEtE,MAAI,uBAAuB,KAAK,QAAQ,EAAG,QAAO,YAAY,QAAQ;AACtE,MAAI,SAAS,SAAS,GAAG,EAAG,QAAO,YAAY,QAAQ;AACvD,MAAI,aAAa,YAAa,QAAO;AAGrC,QAAM,UAAU,CAAC,MACf,QAAQ,KAAK,CAAC,GAAG,IAAI,QAAkB,CAAC,GAAG,WAAW,WAAW,MAAM,OAAO,IAAI,MAAM,aAAa,CAAC,GAAG,GAAI,CAAC,CAAC,CAAC;AAElH,MAAI;AACF,UAAM,KAAK,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAC3C,QAAI,GAAG,KAAK,WAAW,EAAG,QAAO;AAAA,EACnC,SAAS,KAAK;AAAE,kBAAc,cAAc,MAAM,GAAG;AAAA,EAAG;AAExD,MAAI;AACF,UAAM,KAAK,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAC3C,QAAI,GAAG,KAAK,WAAW,EAAG,QAAO;AAAA,EACnC,SAAS,KAAK;AAAE,kBAAc,cAAc,MAAM,GAAG;AAAA,EAAG;AAExD,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
|
|
3
3
|
import {
|
|
4
4
|
printBanner
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-C3EYYJN3.js";
|
|
5
|
+
} from "./chunk-LN5MNDSA.js";
|
|
6
|
+
import "./chunk-QJPDBJDP.js";
|
|
8
7
|
import {
|
|
9
8
|
abtarsHome,
|
|
10
9
|
init_paths
|
|
11
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-7XXISOHU.js";
|
|
11
|
+
import "./chunk-2BXXQG7P.js";
|
|
12
12
|
import "./chunk-7K2YZTLD.js";
|
|
13
13
|
|
|
14
14
|
// src/cli/commands/start.ts
|
|
@@ -108,4 +108,4 @@ async function start() {
|
|
|
108
108
|
export {
|
|
109
109
|
start
|
|
110
110
|
};
|
|
111
|
-
//# sourceMappingURL=start-
|
|
111
|
+
//# sourceMappingURL=start-HPO5LYJP.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli/commands/start.ts"],
|
|
4
|
+
"sourcesContent": ["import { printBanner } from './banner.js';\nimport { existsSync, readFileSync, unlinkSync } from \"node:fs\";\nimport { execFileSync } from \"node:child_process\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { abtarsHome } from \"../../paths.js\";\n\n\nfunction pidAlive(pid: number): boolean {\n try { process.kill(pid, 0); return true; } catch { return false; }\n}\n\nfunction readJsonField(file: string, field: string): unknown {\n try { return JSON.parse(readFileSync(file, \"utf-8\"))[field]; } catch { return undefined; }\n}\n\nexport async function start(): Promise<number> {\n await printBanner(\"start\");\n const home = abtarsHome();\n const lockFile = join(home, \"bridge.lock\");\n const startReasonFile = join(home, \".start-reason\");\n\n // Clear stop sentinel so WD/bridge can start\n try { unlinkSync(startReasonFile); } catch {}\n try { unlinkSync(join(home, \".stopped\")); } catch {}\n\n const installMode = readJsonField(join(home, \"manifest.json\"), \"installMode\") as string | undefined;\n\n // Daemon mode \u2014 let launchd/systemd handle it\n if (installMode === \"daemon\") {\n if (process.platform === \"darwin\") {\n const plistPath = join(homedir(), \"Library\", \"LaunchAgents\", \"com.abtars.watchdog.plist\");\n const uid = `gui/${process.getuid!()}`;\n try { execFileSync(\"launchctl\", [\"bootstrap\", uid, plistPath], { timeout: 5000 }); } catch {}\n } else {\n try { execFileSync(\"systemctl\", [\"--user\", \"unmask\", \"abtars-watchdog\"], { timeout: 5000 }); } catch {}\n try { execFileSync(\"systemctl\", [\"--user\", \"enable\", \"abtars-watchdog\"], { timeout: 5000 }); } catch {}\n try { execFileSync(\"systemctl\", [\"--user\", \"start\", \"abtars-watchdog\"], { timeout: 5000 }); } catch {}\n }\n process.stdout.write(`\u2713 Service loaded. Watchdog starting...\\n`);\n return 0;\n }\n\n // Simple mode \u2014 spawn bridge directly\n if (existsSync(lockFile)) {\n try {\n const lock = JSON.parse(readFileSync(lockFile, \"utf-8\"));\n if (lock.pid && pidAlive(lock.pid)) {\n process.stdout.write(`Bridge already running (pid ${lock.pid}).\\n`);\n return 0;\n }\n } catch { /* corrupt lock \u2014 proceed */ }\n }\n\n const entryPoint = join(home, \"app\", \"bundle\", \"abtars.js\");\n if (!existsSync(entryPoint)) {\n process.stderr.write(`No release deployed. Run 'abtars update' first.\\n`);\n return 1;\n }\n\n const { spawn } = await import(\"node:child_process\");\n const { openSync, closeSync, mkdirSync } = await import(\"node:fs\");\n mkdirSync(join(home, \"logs\"), { recursive: true });\n const logFd = openSync(join(home, \"logs\", \"bridge.log\"), \"a\");\n const br = spawn(\"node\", [\"--max-old-space-size=1024\", entryPoint], {\n detached: true,\n stdio: [\"ignore\", logFd, logFd],\n cwd: home,\n env: { ...process.env, ABTARS_START_REASON: \"manual-start\" },\n });\n br.unref();\n closeSync(logFd);\n process.stdout.write(`\u2713 Bridge started (pid ${br.pid}).\\n`);\n return 0;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
import {
|
|
4
4
|
LANGUAGE_HINT_PROMPT,
|
|
5
5
|
transcribeAudio
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-UU3RLJSD.js";
|
|
7
|
+
import "./chunk-W2PSVV2T.js";
|
|
8
|
+
import "./chunk-6S3G6GPO.js";
|
|
9
|
+
import "./chunk-7XXISOHU.js";
|
|
10
|
+
import "./chunk-2BXXQG7P.js";
|
|
10
11
|
import "./chunk-7K2YZTLD.js";
|
|
11
12
|
export {
|
|
12
13
|
LANGUAGE_HINT_PROMPT,
|
|
13
14
|
transcribeAudio
|
|
14
15
|
};
|
|
15
|
-
//# sourceMappingURL=stt-
|
|
16
|
+
//# sourceMappingURL=stt-UE7EOYD7.js.map
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
|
|
3
3
|
import {
|
|
4
4
|
SubagentRuntime
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-ZGNSCJWH.js";
|
|
6
|
+
import "./chunk-W2PSVV2T.js";
|
|
7
|
+
import "./chunk-6S3G6GPO.js";
|
|
8
|
+
import "./chunk-7XXISOHU.js";
|
|
9
|
+
import "./chunk-2BXXQG7P.js";
|
|
9
10
|
import "./chunk-7K2YZTLD.js";
|
|
10
11
|
export {
|
|
11
12
|
SubagentRuntime
|
|
12
13
|
};
|
|
13
|
-
//# sourceMappingURL=subagent-runtime-
|
|
14
|
+
//# sourceMappingURL=subagent-runtime-4X3UHF4H.js.map
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
|
|
3
|
+
import {
|
|
4
|
+
hotskills_exports,
|
|
5
|
+
init_hotskills
|
|
6
|
+
} from "./chunk-YZCOA4DC.js";
|
|
7
|
+
import "./chunk-MTE32OQH.js";
|
|
8
|
+
import {
|
|
9
|
+
heartbeat_system_exports,
|
|
10
|
+
init_heartbeat_system
|
|
11
|
+
} from "./chunk-E7DZYCSF.js";
|
|
12
|
+
import {
|
|
13
|
+
getInstanceName,
|
|
14
|
+
init_soul_bundle
|
|
15
|
+
} from "./chunk-KLG4SCF7.js";
|
|
16
|
+
import "./chunk-7LORCJCQ.js";
|
|
17
|
+
import "./chunk-X7DLKIQM.js";
|
|
18
|
+
import "./chunk-2ZD7VQRW.js";
|
|
19
|
+
import "./chunk-ZKMKAO75.js";
|
|
20
|
+
import "./chunk-N5KN3LGD.js";
|
|
21
|
+
import "./chunk-BWJ37KMW.js";
|
|
22
|
+
import {
|
|
23
|
+
init_log_and_swallow,
|
|
24
|
+
logAndSwallow
|
|
25
|
+
} from "./chunk-W2PSVV2T.js";
|
|
26
|
+
import "./chunk-6S3G6GPO.js";
|
|
27
|
+
import {
|
|
28
|
+
init_paths,
|
|
29
|
+
paths_exports
|
|
30
|
+
} from "./chunk-7XXISOHU.js";
|
|
31
|
+
import "./chunk-2BXXQG7P.js";
|
|
32
|
+
import {
|
|
33
|
+
__toCommonJS
|
|
34
|
+
} from "./chunk-7K2YZTLD.js";
|
|
35
|
+
|
|
36
|
+
// src/components/system-status.ts
|
|
37
|
+
init_log_and_swallow();
|
|
38
|
+
init_soul_bundle();
|
|
39
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
40
|
+
import { join } from "node:path";
|
|
41
|
+
import { homedir } from "node:os";
|
|
42
|
+
var SOUL_CORE_FILES = ["SOUL.md", "user_profile.md", "agent_notes.md", "memory-tools.md", "core_facts.md"];
|
|
43
|
+
var PLATFORM_NAMES = ["telegram", "discord", "irc"];
|
|
44
|
+
async function getSystemStatus(ctx) {
|
|
45
|
+
const { getDeployedVersion } = await import("./paths-MZC2KU2C.js");
|
|
46
|
+
const deployed = getDeployedVersion();
|
|
47
|
+
const version = deployed.version;
|
|
48
|
+
const commit = deployed.commit || "?";
|
|
49
|
+
let model = "unknown";
|
|
50
|
+
let transportType = "unknown";
|
|
51
|
+
let transportProvider = "unknown";
|
|
52
|
+
try {
|
|
53
|
+
const { loadTransport, resolveAgent } = await import("./transport-config-SF6GBV47.js");
|
|
54
|
+
const tc = loadTransport();
|
|
55
|
+
const prof = tc ? resolveAgent("professor", tc) : null;
|
|
56
|
+
if (prof) {
|
|
57
|
+
model = prof.model;
|
|
58
|
+
transportType = (prof.provider.transport ?? "acp").toUpperCase();
|
|
59
|
+
transportProvider = prof.providerName ?? "unknown";
|
|
60
|
+
}
|
|
61
|
+
} catch (err) {
|
|
62
|
+
logAndSwallow("system_status", "op", err);
|
|
63
|
+
}
|
|
64
|
+
const serviceStates = ctx.registry.getStates();
|
|
65
|
+
const subsystems = [];
|
|
66
|
+
for (const [name, health] of ctx.phaseHealth) {
|
|
67
|
+
const entry = { name, status: health.status };
|
|
68
|
+
const svcName = phaseToService(name);
|
|
69
|
+
if (svcName && serviceStates[svcName]) {
|
|
70
|
+
const svc = serviceStates[svcName];
|
|
71
|
+
if (health.status === "ok" && !svc.running) {
|
|
72
|
+
entry.status = svc.retrying ? "retrying" : "stopped";
|
|
73
|
+
}
|
|
74
|
+
if (svc.retrying) entry.detail = `retry #${svc.retrying.attempt}`;
|
|
75
|
+
}
|
|
76
|
+
if (name === "phaseTransport" && health.status === "ok" && ctx.transport) {
|
|
77
|
+
entry.detail = `${transportType} (${transportProvider}), ${ctx.transport.isReady ? "ready" : "not ready"}`;
|
|
78
|
+
}
|
|
79
|
+
if (name === "phaseHeartbeat" && health.status === "ok" && ctx.heartbeat) {
|
|
80
|
+
try {
|
|
81
|
+
const lock = JSON.parse(readFileSync(ctx.bridgeLockPath, "utf-8"));
|
|
82
|
+
const ago = Math.round((Date.now() - (lock.lastHeartbeat || 0)) / 6e4);
|
|
83
|
+
entry.detail = `${Math.round(ctx.heartbeat.intervalMs / 1e3)}s, last tick ${ago}m ago`;
|
|
84
|
+
} catch (err) {
|
|
85
|
+
logAndSwallow("system_status", "op", err);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (name === "phaseDashboard" && health.status === "ok") {
|
|
89
|
+
entry.detail = `:${process.env["WEB_PORT"] || "3000"}`;
|
|
90
|
+
}
|
|
91
|
+
subsystems.push(entry);
|
|
92
|
+
}
|
|
93
|
+
const platformStates = {};
|
|
94
|
+
for (const name of PLATFORM_NAMES) {
|
|
95
|
+
const svc = serviceStates[name];
|
|
96
|
+
if (svc) platformStates[name] = svc.running;
|
|
97
|
+
}
|
|
98
|
+
let tasks = { recurring: 0, pending: 0, paused: 0 };
|
|
99
|
+
try {
|
|
100
|
+
const { readEntries } = await import("./task-store-RAFMDQ7N.js");
|
|
101
|
+
const entries = readEntries();
|
|
102
|
+
tasks = {
|
|
103
|
+
recurring: entries.filter((e) => e.schedule && !e.paused).length,
|
|
104
|
+
pending: entries.filter((e) => !e.fired && !e.schedule).length,
|
|
105
|
+
paused: entries.filter((e) => e.paused).length
|
|
106
|
+
};
|
|
107
|
+
} catch (err) {
|
|
108
|
+
logAndSwallow("system_status", "op", err);
|
|
109
|
+
}
|
|
110
|
+
let lastBackup = null;
|
|
111
|
+
try {
|
|
112
|
+
const { readdirSync } = await import("node:fs");
|
|
113
|
+
const bd = join(homedir(), ".backup-abtars");
|
|
114
|
+
const bk = readdirSync(bd).filter((f) => f.startsWith("abtars-") && (f.endsWith(".zip") || f.endsWith(".7z"))).sort();
|
|
115
|
+
if (bk.length > 0) lastBackup = bk[bk.length - 1] ?? null;
|
|
116
|
+
} catch (err) {
|
|
117
|
+
logAndSwallow("system_status", "op", err);
|
|
118
|
+
}
|
|
119
|
+
let contextPercent = -1;
|
|
120
|
+
let sleepStatus = null;
|
|
121
|
+
try {
|
|
122
|
+
const lock = JSON.parse(readFileSync(ctx.bridgeLockPath, "utf-8"));
|
|
123
|
+
if (typeof lock.contextPercent === "number") contextPercent = lock.contextPercent;
|
|
124
|
+
sleepStatus = lock.sleepStatus ?? null;
|
|
125
|
+
} catch {
|
|
126
|
+
}
|
|
127
|
+
let securityMode = "off";
|
|
128
|
+
let trustMode = false;
|
|
129
|
+
try {
|
|
130
|
+
const { getSecurityMode } = await import("./guardrails-U7M6H2GE.js");
|
|
131
|
+
const { getEnv } = await import("./env-schema-YGHCKX5B.js");
|
|
132
|
+
securityMode = getSecurityMode();
|
|
133
|
+
trustMode = getEnv().trustMode === true;
|
|
134
|
+
} catch (err) {
|
|
135
|
+
logAndSwallow("system_status", "trust", err);
|
|
136
|
+
}
|
|
137
|
+
let activeSessions = 0;
|
|
138
|
+
try {
|
|
139
|
+
const { spin } = await import("./spin-76K4R6FK.js");
|
|
140
|
+
activeSessions = spin.listAllSessions().length;
|
|
141
|
+
} catch (err) {
|
|
142
|
+
logAndSwallow("system_status", "spin", err);
|
|
143
|
+
}
|
|
144
|
+
let kanban = null;
|
|
145
|
+
try {
|
|
146
|
+
const { kanbanList } = await import("./kanban-board-4AI5Z6B5.js");
|
|
147
|
+
const all = kanbanList();
|
|
148
|
+
const active = all.filter((c) => ["queued", "running", "delivering"].includes(c.status)).length;
|
|
149
|
+
kanban = { active, total: all.length };
|
|
150
|
+
} catch (err) {
|
|
151
|
+
logAndSwallow("system_status", "kanban", err);
|
|
152
|
+
}
|
|
153
|
+
let soulBundle = null;
|
|
154
|
+
try {
|
|
155
|
+
const { getEnv } = await import("./env-schema-YGHCKX5B.js");
|
|
156
|
+
const memoryProvider = getEnv().memory ?? "abmind";
|
|
157
|
+
if (memoryProvider === "abmind" || memoryProvider === "auto") {
|
|
158
|
+
const coreDir = join(homedir(), ".abmind", "memory", "core");
|
|
159
|
+
const available = SOUL_CORE_FILES.filter((f) => existsSync(join(coreDir, f))).length;
|
|
160
|
+
soulBundle = { available, total: SOUL_CORE_FILES.length };
|
|
161
|
+
}
|
|
162
|
+
} catch (err) {
|
|
163
|
+
logAndSwallow("system_status", "soul", err);
|
|
164
|
+
}
|
|
165
|
+
let peersConfigured = 0;
|
|
166
|
+
try {
|
|
167
|
+
const { abtarsHome } = await import("./paths-MZC2KU2C.js");
|
|
168
|
+
const peersPath = join(abtarsHome(), "config", "peers.json");
|
|
169
|
+
if (existsSync(peersPath)) {
|
|
170
|
+
const peers = JSON.parse(readFileSync(peersPath, "utf-8"));
|
|
171
|
+
peersConfigured = Object.keys(peers).filter((k) => k !== "self").length;
|
|
172
|
+
}
|
|
173
|
+
} catch (err) {
|
|
174
|
+
logAndSwallow("system_status", "peers", err);
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
version,
|
|
178
|
+
commit,
|
|
179
|
+
model,
|
|
180
|
+
transportType,
|
|
181
|
+
transportProvider,
|
|
182
|
+
transportReady: ctx.transport?.isReady ?? false,
|
|
183
|
+
uptimeMs: Date.now() - ctx.startedAt,
|
|
184
|
+
contextPercent,
|
|
185
|
+
sleepStatus,
|
|
186
|
+
subsystems,
|
|
187
|
+
tasks,
|
|
188
|
+
lastBackup,
|
|
189
|
+
securityMode,
|
|
190
|
+
trustMode,
|
|
191
|
+
activeSessions,
|
|
192
|
+
kanban,
|
|
193
|
+
soulBundle,
|
|
194
|
+
peersConfigured,
|
|
195
|
+
platformStates
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
function phaseToService(phaseName) {
|
|
199
|
+
switch (phaseName) {
|
|
200
|
+
case "phaseAgentApi":
|
|
201
|
+
return "agent-api";
|
|
202
|
+
default:
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
function renderStatusText(status) {
|
|
207
|
+
const uptime = formatUptime(status.uptimeMs);
|
|
208
|
+
const failures = status.subsystems.filter((s) => s.status === "failed" || s.status === "stopped").length;
|
|
209
|
+
const mood = failures === 0 ? "\u{1F60A}" : failures <= 2 ? "\u{1F610}" : "\u{1F61F}";
|
|
210
|
+
const sleepLabel = status.sleepStatus ?? "awake";
|
|
211
|
+
const lines = [
|
|
212
|
+
`abTARS\u2122 ${getInstanceName()} \u2014 ${sleepLabel} ${mood}`,
|
|
213
|
+
` PID ${process.pid} (up ${uptime})`
|
|
214
|
+
];
|
|
215
|
+
const wdPid = process.env["ABTARS_WATCHDOG_PID"];
|
|
216
|
+
if (wdPid && wdPid !== "0") {
|
|
217
|
+
try {
|
|
218
|
+
process.kill(Number(wdPid), 0);
|
|
219
|
+
lines.push(` Watchdog: PID ${wdPid}`);
|
|
220
|
+
} catch {
|
|
221
|
+
lines.push(" Watchdog: not running (stale PID)");
|
|
222
|
+
}
|
|
223
|
+
} else {
|
|
224
|
+
lines.push(" Watchdog: not detected");
|
|
225
|
+
}
|
|
226
|
+
lines.push(` Security: ${status.securityMode}`);
|
|
227
|
+
if (status.trustMode) lines.push(" Trust: (trusted)");
|
|
228
|
+
lines.push("", "Body:");
|
|
229
|
+
const platformEntries = ["telegram", "discord", "irc"].filter((name) => name in status.platformStates).map((name) => `${status.platformStates[name] ? "\u2713" : "\u2717"} ${name.charAt(0).toUpperCase() + name.slice(1)}`);
|
|
230
|
+
if (platformEntries.length > 0) {
|
|
231
|
+
lines.push(` \u2713 platforms: ${platformEntries.join(" ")}`);
|
|
232
|
+
} else {
|
|
233
|
+
const platformSub = status.subsystems.find((s) => s.name === "phasePlatforms");
|
|
234
|
+
lines.push(` ${subIcon(platformSub)} platforms${platformSub?.detail ? `: ${platformSub.detail}` : ""}`);
|
|
235
|
+
}
|
|
236
|
+
const dashSub = status.subsystems.find((s) => s.name === "phaseDashboard");
|
|
237
|
+
const webPort = (process.env["WEB_PORT"] ?? "").replace(/^:/, "");
|
|
238
|
+
if (dashSub && dashSub.status !== "skipped") {
|
|
239
|
+
lines.push(` ${subIcon(dashSub)} dashboard${webPort ? `: ${webPort}` : ""}`);
|
|
240
|
+
} else {
|
|
241
|
+
lines.push(" \u25CB dashboard: disabled");
|
|
242
|
+
}
|
|
243
|
+
lines.push("", "Heart:");
|
|
244
|
+
try {
|
|
245
|
+
const { getHeartbeatInstance } = (init_heartbeat_system(), __toCommonJS(heartbeat_system_exports));
|
|
246
|
+
const hb = getHeartbeatInstance();
|
|
247
|
+
if (hb) {
|
|
248
|
+
const intervalSec = Math.round(hb.intervalMs / 1e3);
|
|
249
|
+
let lastTickAgo = "";
|
|
250
|
+
try {
|
|
251
|
+
const lock = JSON.parse(readFileSync(join(homedir(), ".abtars", "bridge.lock"), "utf-8"));
|
|
252
|
+
if (lock.lastHeartbeat) {
|
|
253
|
+
const agoSec = Math.round((Date.now() - lock.lastHeartbeat) / 1e3);
|
|
254
|
+
lastTickAgo = ` / ${agoSec < 60 ? `${agoSec}s ago` : `${Math.round(agoSec / 60)}m ago`}`;
|
|
255
|
+
}
|
|
256
|
+
} catch {
|
|
257
|
+
}
|
|
258
|
+
lines.push(` ${hb.isRunning ? "\u2713" : "\u2717"} heartbeat: ${intervalSec}s${lastTickAgo}`);
|
|
259
|
+
lines.push(` \u2713 internal tasks: ${hb.getTaskNames().length}`);
|
|
260
|
+
} else {
|
|
261
|
+
lines.push(" \u2717 heartbeat: not running");
|
|
262
|
+
}
|
|
263
|
+
} catch {
|
|
264
|
+
lines.push(" \u25CB heartbeat: not loaded");
|
|
265
|
+
}
|
|
266
|
+
lines.push("", "Brain:");
|
|
267
|
+
const modelShort = status.model.split("/").pop() ?? status.model;
|
|
268
|
+
let lastPromptStr = "";
|
|
269
|
+
try {
|
|
270
|
+
const lock = JSON.parse(readFileSync(join(homedir(), ".abtars", "bridge.lock"), "utf-8"));
|
|
271
|
+
if (lock.lastPromptAt) {
|
|
272
|
+
const agoSec = Math.round((Date.now() - lock.lastPromptAt) / 1e3);
|
|
273
|
+
lastPromptStr = agoSec < 60 ? `${agoSec}s ago` : `${Math.round(agoSec / 60)}m ago`;
|
|
274
|
+
}
|
|
275
|
+
} catch {
|
|
276
|
+
}
|
|
277
|
+
lines.push(` \u2713 model: ${modelShort}${lastPromptStr ? ` / ${lastPromptStr}` : ""}`);
|
|
278
|
+
lines.push(` \u2713 spin: ${status.activeSessions} active session${status.activeSessions !== 1 ? "s" : ""}`);
|
|
279
|
+
if (status.kanban) {
|
|
280
|
+
lines.push(` \u2713 kanban: ${status.kanban.active}/${status.kanban.total}`);
|
|
281
|
+
} else {
|
|
282
|
+
lines.push(" \u2717 kanban: not initialized");
|
|
283
|
+
}
|
|
284
|
+
try {
|
|
285
|
+
const { abtarsHome } = (init_paths(), __toCommonJS(paths_exports));
|
|
286
|
+
const policyExists = existsSync(join(abtarsHome(), "config", "sha-policy.json"));
|
|
287
|
+
lines.push(` ${policyExists ? "\u2713" : "~"} SHA: ${policyExists ? "rules configured" : "no policy configured"}`);
|
|
288
|
+
} catch {
|
|
289
|
+
lines.push(" ~ SHA: no policy configured");
|
|
290
|
+
}
|
|
291
|
+
try {
|
|
292
|
+
const { getSkillCache } = (init_hotskills(), __toCommonJS(hotskills_exports));
|
|
293
|
+
const skills = getSkillCache();
|
|
294
|
+
const active = skills.filter((s) => !s.skipped).length;
|
|
295
|
+
lines.push(` \u2713 skills: ${active} active`);
|
|
296
|
+
} catch {
|
|
297
|
+
}
|
|
298
|
+
lines.push("", "Soul:");
|
|
299
|
+
if (status.soulBundle) {
|
|
300
|
+
const allPresent = status.soulBundle.available === status.soulBundle.total;
|
|
301
|
+
lines.push(` ${allPresent ? "\u2713" : "~"} memory: abmind working`);
|
|
302
|
+
lines.push(` soul bundle: ${status.soulBundle.available}/${status.soulBundle.total} available`);
|
|
303
|
+
} else {
|
|
304
|
+
lines.push(" \u2717 memory: none");
|
|
305
|
+
}
|
|
306
|
+
lines.push("", "Tribe:");
|
|
307
|
+
const apiSub = status.subsystems.find((s) => s.name === "phaseAgentApi");
|
|
308
|
+
const apiPort = (process.env["AGENT_API_PORT"] ?? "").replace(/^:/, "");
|
|
309
|
+
lines.push(` ${subIcon(apiSub)} agent-api${apiPort ? `: ${apiPort}` : ""}`);
|
|
310
|
+
if (status.peersConfigured > 0) {
|
|
311
|
+
lines.push(` \u2713 peers: ${status.peersConfigured} configured`);
|
|
312
|
+
} else {
|
|
313
|
+
lines.push(" \u25CB peers: none configured");
|
|
314
|
+
}
|
|
315
|
+
const a2aSub = status.subsystems.find((s) => s.name === "phaseA2a" || s.name === "phaseGossip");
|
|
316
|
+
lines.push(` ${subIcon(a2aSub)} a2a${a2aSub?.detail ? `: ${a2aSub.detail}` : ""}`);
|
|
317
|
+
lines.push("");
|
|
318
|
+
lines.push(`Tasks: ${status.tasks.recurring} recurring, ${status.tasks.pending} pending${status.tasks.paused ? `, ${status.tasks.paused} paused` : ""}`);
|
|
319
|
+
if (status.lastBackup) lines.push(`Last backup: ${status.lastBackup}`);
|
|
320
|
+
return lines.join("\n");
|
|
321
|
+
}
|
|
322
|
+
function subIcon(sub) {
|
|
323
|
+
if (!sub) return "\u25CB";
|
|
324
|
+
switch (sub.status) {
|
|
325
|
+
case "ok":
|
|
326
|
+
return "\u2713";
|
|
327
|
+
case "skipped":
|
|
328
|
+
return "\u25CB";
|
|
329
|
+
default:
|
|
330
|
+
return "\u2717";
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
function formatUptime(ms) {
|
|
334
|
+
const s = Math.floor(ms / 1e3);
|
|
335
|
+
const m = Math.floor(s / 60) % 60;
|
|
336
|
+
const h = Math.floor(s / 3600) % 24;
|
|
337
|
+
const d = Math.floor(s / 86400);
|
|
338
|
+
if (d > 0) return `${d}d ${h}h ${m}m`;
|
|
339
|
+
if (h > 0) return `${h}h ${m}m`;
|
|
340
|
+
return `${m}m`;
|
|
341
|
+
}
|
|
342
|
+
export {
|
|
343
|
+
getSystemStatus,
|
|
344
|
+
renderStatusText
|
|
345
|
+
};
|
|
346
|
+
//# sourceMappingURL=system-status-PLPWV4RF.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/system-status.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * system-status.ts \u2014 Single source of truth for bridge status.\n * One collector, many renderers. Used by /status (text), dashboard (HTML), future API (JSON).\n */\n\nimport { logAndSwallow } from \"./log-and-swallow.js\";\nimport { getInstanceName } from \"./soul-bundle.js\";\nimport { readFileSync, existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport type { ServiceState } from \"./service-registry.js\";\n\nexport interface SubsystemHealth {\n name: string;\n status: \"ok\" | \"failed\" | \"skipped\" | \"stopped\" | \"retrying\";\n detail?: string;\n}\n\nexport interface SystemStatus {\n version: string;\n commit: string;\n model: string;\n transportType: string;\n transportProvider: string;\n transportReady: boolean;\n uptimeMs: number;\n contextPercent: number;\n sleepStatus: string | null;\n subsystems: SubsystemHealth[];\n tasks: { recurring: number; pending: number; paused: number };\n lastBackup: string | null;\n // New fields for redesigned /status output\n securityMode: string;\n trustMode: boolean;\n activeSessions: number;\n kanban: { active: number; total: number } | null;\n soulBundle: { available: number; total: number } | null;\n peersConfigured: number;\n /** Per-platform running state: key = \"telegram\"/\"discord\"/\"irc\", value = running */\n platformStates: Record<string, boolean>;\n}\n\nexport interface StatusContext {\n phaseHealth: Map<string, { status: \"ok\" | \"failed\" | \"skipped\"; error?: string }>;\n registry: { getStates(): Record<string, ServiceState> };\n transport: { isReady: boolean } | null;\n startedAt: number;\n bridgeLockPath: string;\n heartbeat: { intervalMs: number } | null;\n}\n\nconst SOUL_CORE_FILES = [\"SOUL.md\", \"user_profile.md\", \"agent_notes.md\", \"memory-tools.md\", \"core_facts.md\"] as const;\nconst PLATFORM_NAMES = [\"telegram\", \"discord\", \"irc\"] as const;\n\nexport async function getSystemStatus(ctx: StatusContext): Promise<SystemStatus> {\n // Version + commit from manifest.json (single source of truth)\n const { getDeployedVersion } = await import(\"../paths.js\");\n const deployed = getDeployedVersion();\n const version = deployed.version;\n const commit = deployed.commit || \"?\";\n\n // Model + transport\n let model = \"unknown\";\n let transportType = \"unknown\";\n let transportProvider = \"unknown\";\n try {\n const { loadTransport, resolveAgent } = await import(\"./transport-config.js\");\n const tc = loadTransport();\n const prof = tc ? resolveAgent(\"professor\", tc) : null;\n if (prof) {\n model = prof.model;\n transportType = (prof.provider.transport ?? \"acp\").toUpperCase();\n transportProvider = prof.providerName ?? \"unknown\";\n }\n } catch (err) { logAndSwallow(\"system_status\", \"op\", err); }\n\n // Subsystem health: merge phaseHealth + ServiceRegistry live state\n const serviceStates = ctx.registry.getStates();\n const subsystems: SubsystemHealth[] = [];\n\n for (const [name, health] of ctx.phaseHealth) {\n const entry: SubsystemHealth = { name, status: health.status };\n\n const svcName = phaseToService(name);\n if (svcName && serviceStates[svcName]) {\n const svc = serviceStates[svcName] as ServiceState;\n if (health.status === \"ok\" && !svc.running) {\n entry.status = svc.retrying ? \"retrying\" : \"stopped\";\n }\n if (svc.retrying) entry.detail = `retry #${svc.retrying.attempt}`;\n }\n\n if (name === \"phaseTransport\" && health.status === \"ok\" && ctx.transport) {\n entry.detail = `${transportType} (${transportProvider}), ${ctx.transport.isReady ? \"ready\" : \"not ready\"}`;\n }\n if (name === \"phaseHeartbeat\" && health.status === \"ok\" && ctx.heartbeat) {\n try {\n const lock = JSON.parse(readFileSync(ctx.bridgeLockPath, \"utf-8\"));\n const ago = Math.round((Date.now() - (lock.lastHeartbeat || 0)) / 60000);\n entry.detail = `${Math.round(ctx.heartbeat.intervalMs / 1000)}s, last tick ${ago}m ago`;\n } catch (err) { logAndSwallow(\"system_status\", \"op\", err); }\n }\n if (name === \"phaseDashboard\" && health.status === \"ok\") {\n entry.detail = `:${process.env[\"WEB_PORT\"] || \"3000\"}`;\n }\n\n subsystems.push(entry);\n }\n\n // Platform running states (telegram, discord, irc)\n const platformStates: Record<string, boolean> = {};\n for (const name of PLATFORM_NAMES) {\n const svc = serviceStates[name];\n if (svc) platformStates[name] = svc.running;\n }\n\n // Tasks\n let tasks = { recurring: 0, pending: 0, paused: 0 };\n try {\n const { readEntries } = await import(\"./tasks/task-store.js\");\n const entries = readEntries();\n tasks = {\n recurring: entries.filter((e: any) => e.schedule && !e.paused).length,\n pending: entries.filter((e: any) => !e.fired && !e.schedule).length,\n paused: entries.filter((e: any) => e.paused).length,\n };\n } catch (err) { logAndSwallow(\"system_status\", \"op\", err); }\n\n // Last backup\n let lastBackup: string | null = null;\n try {\n const { readdirSync } = await import(\"node:fs\");\n const bd = join(homedir(), \".backup-abtars\");\n const bk = readdirSync(bd).filter((f: string) => f.startsWith(\"abtars-\") && (f.endsWith(\".zip\") || f.endsWith(\".7z\"))).sort();\n if (bk.length > 0) lastBackup = bk[bk.length - 1] ?? null;\n } catch (err) { logAndSwallow(\"system_status\", \"op\", err); }\n\n // Context percent + sleep status from bridge.lock\n let contextPercent = -1;\n let sleepStatus: string | null = null;\n try {\n const lock = JSON.parse(readFileSync(ctx.bridgeLockPath, \"utf-8\"));\n if (typeof lock.contextPercent === \"number\") contextPercent = lock.contextPercent;\n sleepStatus = lock.sleepStatus ?? null;\n } catch { /* ignore */ }\n\n // Security mode + trust\n let securityMode = \"off\";\n let trustMode = false;\n try {\n const { getSecurityMode } = await import(\"./guardrails.js\");\n const { getEnv } = await import(\"./env-schema.js\");\n securityMode = getSecurityMode();\n trustMode = (getEnv() as any).trustMode === true;\n } catch (err) { logAndSwallow(\"system_status\", \"trust\", err); }\n\n // Active Spin session count\n let activeSessions = 0;\n try {\n const { spin } = await import(\"./spin.js\");\n activeSessions = spin.listAllSessions().length;\n } catch (err) { logAndSwallow(\"system_status\", \"spin\", err); }\n\n // Kanban active/total via kanbanList\n let kanban: SystemStatus[\"kanban\"] = null;\n try {\n const { kanbanList } = await import(\"./tasks/kanban-board.js\");\n const all = kanbanList();\n const active = all.filter((c: any) => [\"queued\", \"running\", \"delivering\"].includes(c.status)).length;\n kanban = { active, total: all.length };\n } catch (err) { logAndSwallow(\"system_status\", \"kanban\", err); }\n\n // Soul bundle availability (only when abmind memory)\n let soulBundle: SystemStatus[\"soulBundle\"] = null;\n try {\n const { getEnv } = await import(\"./env-schema.js\");\n const memoryProvider = (getEnv() as any).memory ?? \"abmind\";\n if (memoryProvider === \"abmind\" || memoryProvider === \"auto\") {\n const coreDir = join(homedir(), \".abmind\", \"memory\", \"core\");\n const available = SOUL_CORE_FILES.filter(f => existsSync(join(coreDir, f))).length;\n soulBundle = { available, total: SOUL_CORE_FILES.length };\n }\n } catch (err) { logAndSwallow(\"system_status\", \"soul\", err); }\n\n // Peers configured count (exclude \"self\" entry)\n let peersConfigured = 0;\n try {\n const { abtarsHome } = await import(\"../paths.js\");\n const peersPath = join(abtarsHome(), \"config\", \"peers.json\");\n if (existsSync(peersPath)) {\n const peers = JSON.parse(readFileSync(peersPath, \"utf-8\")) as Record<string, unknown>;\n peersConfigured = Object.keys(peers).filter(k => k !== \"self\").length;\n }\n } catch (err) { logAndSwallow(\"system_status\", \"peers\", err); }\n\n return {\n version,\n commit,\n model,\n transportType,\n transportProvider,\n transportReady: ctx.transport?.isReady ?? false,\n uptimeMs: Date.now() - ctx.startedAt,\n contextPercent,\n sleepStatus,\n subsystems,\n tasks,\n lastBackup,\n securityMode,\n trustMode,\n activeSessions,\n kanban,\n soulBundle,\n peersConfigured,\n platformStates,\n };\n}\n\n/** Map phase names to ServiceRegistry service names (for live state merge). */\nfunction phaseToService(phaseName: string): string | null {\n switch (phaseName) {\n case \"phaseAgentApi\": return \"agent-api\";\n default: return null;\n }\n}\n\n/** Render SystemStatus as plain text for Telegram/Discord /status command. */\nexport function renderStatusText(status: SystemStatus): string {\n const uptime = formatUptime(status.uptimeMs);\n const failures = status.subsystems.filter(s => s.status === \"failed\" || s.status === \"stopped\").length;\n const mood = failures === 0 ? \"\uD83D\uDE0A\" : failures <= 2 ? \"\uD83D\uDE10\" : \"\uD83D\uDE1F\";\n const sleepLabel = status.sleepStatus ?? \"awake\";\n\n const lines: string[] = [\n `abTARS\u2122 ${getInstanceName()} \u2014 ${sleepLabel} ${mood}`,\n ` PID ${process.pid} (up ${uptime})`,\n ];\n\n // Watchdog\n const wdPid = process.env[\"ABTARS_WATCHDOG_PID\"];\n if (wdPid && wdPid !== \"0\") {\n try { process.kill(Number(wdPid), 0); lines.push(` Watchdog: PID ${wdPid}`); }\n catch { lines.push(\" Watchdog: not running (stale PID)\"); }\n } else {\n lines.push(\" Watchdog: not detected\");\n }\n\n lines.push(` Security: ${status.securityMode}`);\n if (status.trustMode) lines.push(\" Trust: (trusted)\");\n\n // \u2500\u2500 Body \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\", \"Body:\");\n\n // Platforms: per-platform from collected platformStates\n const platformEntries = ([\"telegram\", \"discord\", \"irc\"] as const)\n .filter(name => name in status.platformStates)\n .map(name => `${status.platformStates[name] ? \"\u2713\" : \"\u2717\"} ${name.charAt(0).toUpperCase() + name.slice(1)}`);\n\n if (platformEntries.length > 0) {\n lines.push(` \u2713 platforms: ${platformEntries.join(\" \")}`);\n } else {\n const platformSub = status.subsystems.find(s => s.name === \"phasePlatforms\");\n lines.push(` ${subIcon(platformSub)} platforms${platformSub?.detail ? `: ${platformSub.detail}` : \"\"}`);\n }\n\n const dashSub = status.subsystems.find(s => s.name === \"phaseDashboard\");\n const webPort = (process.env[\"WEB_PORT\"] ?? \"\").replace(/^:/, \"\");\n if (dashSub && dashSub.status !== \"skipped\") {\n lines.push(` ${subIcon(dashSub)} dashboard${webPort ? `: ${webPort}` : \"\"}`);\n } else {\n lines.push(\" \u25CB dashboard: disabled\");\n }\n\n // \u2500\u2500 Heart \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\", \"Heart:\");\n\n try {\n const { getHeartbeatInstance } = require(\"./heartbeat-system.js\") as typeof import(\"./heartbeat-system.js\");\n const hb = getHeartbeatInstance();\n if (hb) {\n const intervalSec = Math.round(hb.intervalMs / 1000);\n let lastTickAgo = \"\";\n try {\n const lock = JSON.parse(readFileSync(join(homedir(), \".abtars\", \"bridge.lock\"), \"utf-8\"));\n if (lock.lastHeartbeat) {\n const agoSec = Math.round((Date.now() - lock.lastHeartbeat) / 1000);\n lastTickAgo = ` / ${agoSec < 60 ? `${agoSec}s ago` : `${Math.round(agoSec / 60)}m ago`}`;\n }\n } catch { /* ignore */ }\n lines.push(` ${hb.isRunning ? \"\u2713\" : \"\u2717\"} heartbeat: ${intervalSec}s${lastTickAgo}`);\n lines.push(` \u2713 internal tasks: ${hb.getTaskNames().length}`);\n } else {\n lines.push(\" \u2717 heartbeat: not running\");\n }\n } catch { lines.push(\" \u25CB heartbeat: not loaded\"); }\n\n // \u2500\u2500 Brain \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\", \"Brain:\");\n\n const modelShort = status.model.split(\"/\").pop() ?? status.model;\n let lastPromptStr = \"\";\n try {\n const lock = JSON.parse(readFileSync(join(homedir(), \".abtars\", \"bridge.lock\"), \"utf-8\"));\n if (lock.lastPromptAt) {\n const agoSec = Math.round((Date.now() - lock.lastPromptAt) / 1000);\n lastPromptStr = agoSec < 60 ? `${agoSec}s ago` : `${Math.round(agoSec / 60)}m ago`;\n }\n } catch { /* ignore */ }\n lines.push(` \u2713 model: ${modelShort}${lastPromptStr ? ` / ${lastPromptStr}` : \"\"}`);\n\n lines.push(` \u2713 spin: ${status.activeSessions} active session${status.activeSessions !== 1 ? \"s\" : \"\"}`);\n\n if (status.kanban) {\n lines.push(` \u2713 kanban: ${status.kanban.active}/${status.kanban.total}`);\n } else {\n lines.push(\" \u2717 kanban: not initialized\");\n }\n\n // SHA \u2014 check sha-policy.json existence (same as doctor probe)\n try {\n const { abtarsHome } = require(\"../paths.js\") as typeof import(\"../paths.js\");\n const policyExists = existsSync(join(abtarsHome(), \"config\", \"sha-policy.json\"));\n lines.push(` ${policyExists ? \"\u2713\" : \"~\"} SHA: ${policyExists ? \"rules configured\" : \"no policy configured\"}`);\n } catch {\n lines.push(\" ~ SHA: no policy configured\");\n }\n\n try {\n const { getSkillCache } = require(\"../capabilities/hotskills/index.js\") as typeof import(\"../capabilities/hotskills/index.js\");\n const skills = getSkillCache();\n const active = skills.filter((s: any) => !s.skipped).length;\n lines.push(` \u2713 skills: ${active} active`);\n } catch { /* hotskills not loaded */ }\n\n // \u2500\u2500 Soul \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\", \"Soul:\");\n\n if (status.soulBundle) {\n const allPresent = status.soulBundle.available === status.soulBundle.total;\n lines.push(` ${allPresent ? \"\u2713\" : \"~\"} memory: abmind working`);\n lines.push(` soul bundle: ${status.soulBundle.available}/${status.soulBundle.total} available`);\n } else {\n lines.push(\" \u2717 memory: none\");\n }\n\n // \u2500\u2500 Tribe \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\", \"Tribe:\");\n\n const apiSub = status.subsystems.find(s => s.name === \"phaseAgentApi\");\n const apiPort = (process.env[\"AGENT_API_PORT\"] ?? \"\").replace(/^:/, \"\");\n lines.push(` ${subIcon(apiSub)} agent-api${apiPort ? `: ${apiPort}` : \"\"}`);\n\n if (status.peersConfigured > 0) {\n lines.push(` \u2713 peers: ${status.peersConfigured} configured`);\n } else {\n lines.push(\" \u25CB peers: none configured\");\n }\n\n const a2aSub = status.subsystems.find(s => s.name === \"phaseA2a\" || s.name === \"phaseGossip\");\n lines.push(` ${subIcon(a2aSub)} a2a${a2aSub?.detail ? `: ${a2aSub.detail}` : \"\"}`);\n\n // \u2500\u2500 Footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\");\n lines.push(`Tasks: ${status.tasks.recurring} recurring, ${status.tasks.pending} pending${status.tasks.paused ? `, ${status.tasks.paused} paused` : \"\"}`);\n if (status.lastBackup) lines.push(`Last backup: ${status.lastBackup}`);\n\n return lines.join(\"\\n\");\n}\n\nfunction subIcon(sub: SubsystemHealth | undefined): string {\n if (!sub) return \"\u25CB\";\n switch (sub.status) {\n case \"ok\": return \"\u2713\";\n case \"skipped\": return \"\u25CB\";\n default: return \"\u2717\";\n }\n}\n\nfunction formatUptime(ms: number): string {\n const s = Math.floor(ms / 1000);\n const m = Math.floor(s / 60) % 60;\n const h = Math.floor(s / 3600) % 24;\n const d = Math.floor(s / 86400);\n if (d > 0) return `${d}d ${h}h ${m}m`;\n if (h > 0) return `${h}h ${m}m`;\n return `${m}m`;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -7,10 +7,11 @@ import {
|
|
|
7
7
|
recordRun,
|
|
8
8
|
removeEntry,
|
|
9
9
|
writeEntry
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-7OI46MH7.js";
|
|
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
|
export {
|
|
16
17
|
closeDb,
|
|
@@ -20,4 +21,4 @@ export {
|
|
|
20
21
|
removeEntry,
|
|
21
22
|
writeEntry
|
|
22
23
|
};
|
|
23
|
-
//# sourceMappingURL=task-store-
|
|
24
|
+
//# sourceMappingURL=task-store-RAFMDQ7N.js.map
|