abtars 0.2.1-alpha.9 → 0.2.2
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/CHANGELOG.md +64 -0
- package/README.md +93 -34
- package/bundle/{_registry.generated-ADOYFJJ4.js → _registry.generated-KYX63MGY.js} +19 -16
- package/bundle/{_registry.generated-ADOYFJJ4.js.map → _registry.generated-KYX63MGY.js.map} +1 -1
- package/bundle/abtars-browser.js +5 -6
- package/bundle/abtars-browser.js.map +2 -2
- package/bundle/abtars-cli.js +205 -179
- package/bundle/abtars-cli.js.map +4 -4
- package/bundle/abtars-restart.js +4 -4
- package/bundle/abtars-rss.js +25 -81
- package/bundle/abtars-rss.js.map +2 -2
- package/bundle/abtars-task.js +4 -5
- package/bundle/abtars-task.js.map +2 -2
- package/bundle/abtars-todo.js +133 -0
- package/bundle/abtars-todo.js.map +7 -0
- package/bundle/abtars.js +305 -182
- package/bundle/abtars.js.map +3 -3
- package/bundle/action-gate-DYV2XQBP.js +191 -0
- package/bundle/action-gate-DYV2XQBP.js.map +7 -0
- package/bundle/{agent-api-rate-limit-C25WGSFF.js → agent-api-rate-limit-R2OFAQ3N.js} +4 -4
- package/bundle/{agent-registry-SYUFNSVB.js → agent-registry-5VL5KI6U.js} +8 -8
- package/bundle/agent-registry-PIS5XJHX.js +19 -0
- package/bundle/{bridge-lock-transport-HO545SBK.js → bridge-lock-transport-N6OGDOSE.js} +5 -5
- package/bundle/{browse-delivery-VTLEAVYA.js → browse-delivery-DXGMDMXA.js} +8 -7
- package/bundle/{browser-REIXOJ6S.js → browser-QMYGSP5W.js} +11 -10
- package/bundle/{capability-ILW3D5HS.js → capability-733TLH4W.js} +6 -6
- package/bundle/chunk-3IPMKYYH.js +672 -0
- package/bundle/chunk-3IPMKYYH.js.map +7 -0
- package/bundle/{chunk-PZE3J7ER.js → chunk-3OXQWII3.js} +2 -2
- package/bundle/{chunk-X5FBUA53.js → chunk-4WKWPU6U.js} +137 -30
- package/bundle/chunk-4WKWPU6U.js.map +7 -0
- package/bundle/{chunk-4KJ76TTE.js → chunk-4XW7YA3K.js} +3 -3
- package/bundle/{chunk-A5OJYQNU.js → chunk-5WFIAUQC.js} +49 -22
- package/bundle/chunk-5WFIAUQC.js.map +7 -0
- package/bundle/{chunk-ZVDVNSXK.js → chunk-7WFE2JI5.js} +7 -7
- package/bundle/{chunk-R36WIOYX.js → chunk-B52YRWR6.js} +34 -6
- package/bundle/chunk-B52YRWR6.js.map +7 -0
- package/bundle/{chunk-Q62SXS73.js → chunk-BBDKU4EH.js} +9 -9
- package/bundle/chunk-BBTQKKDO.js +258 -0
- package/bundle/chunk-BBTQKKDO.js.map +7 -0
- package/bundle/{chunk-EX2SRTUE.js → chunk-CYSGXNBY.js} +2 -2
- package/bundle/{chunk-LYEAHE5V.js → chunk-DCY7DGMT.js} +2 -2
- package/bundle/chunk-DGS7J4P6.js +13 -0
- package/bundle/chunk-DGS7J4P6.js.map +7 -0
- package/bundle/{chunk-LDKSCXGL.js → chunk-DHPFI7OF.js} +8 -6
- package/bundle/{chunk-LDKSCXGL.js.map → chunk-DHPFI7OF.js.map} +1 -1
- package/bundle/{chunk-G6IXMYIO.js → chunk-DO4INSXE.js} +2 -2
- package/bundle/{chunk-VA5WKN3Z.js → chunk-EGA6JQVV.js} +4 -4
- package/bundle/chunk-EKHNWFEQ.js +85 -0
- package/bundle/chunk-EKHNWFEQ.js.map +7 -0
- package/bundle/{chunk-URAQLQ2U.js → chunk-F3HMZFIL.js} +4 -4
- package/bundle/{chunk-OOKLEC6V.js → chunk-FY3QUO2L.js} +7 -7
- package/bundle/{chunk-2BY6I4P5.js → chunk-GUTRAMK3.js} +2 -2
- package/bundle/chunk-GXKJKYU4.js +1089 -0
- package/bundle/chunk-GXKJKYU4.js.map +7 -0
- package/bundle/{chunk-GPL57SRN.js → chunk-H7RX7UCR.js} +3 -3
- package/bundle/{chunk-BYDUMHXT.js → chunk-HAF2AFBW.js} +2 -2
- package/bundle/chunk-HAS5NEK7.js +189 -0
- package/bundle/chunk-HAS5NEK7.js.map +7 -0
- package/bundle/chunk-HB54S5OY.js +4036 -0
- package/bundle/chunk-HB54S5OY.js.map +7 -0
- package/bundle/{chunk-OZ4IZFV4.js → chunk-HJQZP5CK.js} +9 -9
- package/bundle/{chunk-OZ4IZFV4.js.map → chunk-HJQZP5CK.js.map} +2 -2
- package/bundle/{chunk-HEHD3GG5.js → chunk-ITB2K6LI.js} +6 -13
- package/bundle/{chunk-HEHD3GG5.js.map → chunk-ITB2K6LI.js.map} +3 -3
- package/bundle/{chunk-KSEIWT4T.js → chunk-JFKOPNKL.js} +10 -10
- package/bundle/chunk-JFKOPNKL.js.map +7 -0
- package/bundle/{chunk-KFENC7BM.js → chunk-L33WNMCP.js} +2 -2
- package/bundle/{chunk-JRG4EFMP.js → chunk-LBMETTUP.js} +3 -3
- package/bundle/{chunk-TYVI3ZWA.js → chunk-LJAG2URA.js} +10 -7
- package/bundle/chunk-LJAG2URA.js.map +7 -0
- package/bundle/{chunk-KWBGYWDO.js → chunk-N24ROESF.js} +15 -17
- package/bundle/chunk-N24ROESF.js.map +7 -0
- package/bundle/{chunk-P2BZSLJJ.js → chunk-N7UG4FID.js} +448 -129
- package/bundle/chunk-N7UG4FID.js.map +7 -0
- package/bundle/chunk-NIYVCGBC.js +330 -0
- package/bundle/chunk-NIYVCGBC.js.map +7 -0
- package/bundle/{chunk-TOUZC6NR.js → chunk-OKMN6J4Z.js} +3 -3
- package/bundle/{chunk-RV54J75Q.js → chunk-PKHYCNTT.js} +13 -12
- package/bundle/chunk-PKHYCNTT.js.map +7 -0
- package/bundle/{chunk-XZSYMCLF.js → chunk-PUDGA4RR.js} +7 -7
- package/bundle/{chunk-CELR236Q.js → chunk-Q7CH5DA3.js} +2 -2
- package/bundle/chunk-QSC6QZ44.js +183 -0
- package/bundle/chunk-QSC6QZ44.js.map +7 -0
- package/bundle/chunk-RITEGAW6.js +138 -0
- package/bundle/chunk-RITEGAW6.js.map +7 -0
- package/bundle/{chunk-UDZIZB5F.js → chunk-RTL7HO3N.js} +3 -3
- package/bundle/{chunk-ITG6XGBS.js → chunk-SA44ITVX.js} +10 -10
- package/bundle/{chunk-3MO2MDXJ.js → chunk-SA6YEFNG.js} +3 -3
- package/bundle/{chunk-4BUOO6WI.js → chunk-SMZQDMSZ.js} +31 -11
- package/bundle/chunk-SMZQDMSZ.js.map +7 -0
- package/bundle/{chunk-GBBTK6H2.js → chunk-SRFEIZQT.js} +4 -4
- package/bundle/{chunk-ELRAH7VL.js → chunk-VXUVKC66.js} +3 -3
- package/bundle/chunk-VY2BUO6L.js +4035 -0
- package/bundle/chunk-VY2BUO6L.js.map +7 -0
- package/bundle/chunk-W6ELWLAR.js +143 -0
- package/bundle/chunk-W6ELWLAR.js.map +7 -0
- package/bundle/{chunk-RSWUPUNA.js → chunk-WMWI3SJ7.js} +30 -6
- package/bundle/chunk-WMWI3SJ7.js.map +7 -0
- package/bundle/{chunk-MJ6PHMOK.js → chunk-WW5F2DCO.js} +11 -2
- package/bundle/chunk-WW5F2DCO.js.map +7 -0
- package/bundle/chunk-Y2XBDQP3.js +4055 -0
- package/bundle/chunk-Y2XBDQP3.js.map +7 -0
- package/bundle/chunk-YMGX6HNP.js +131 -0
- package/bundle/chunk-YMGX6HNP.js.map +7 -0
- package/bundle/chunk-YWZPKBO6.js +22 -0
- package/bundle/chunk-YWZPKBO6.js.map +7 -0
- package/bundle/chunk-ZAA7B5BN.js +22 -0
- package/bundle/chunk-ZAA7B5BN.js.map +7 -0
- package/bundle/{commands-WUGPBPHI.js → commands-IGRSOSK6.js} +15 -14
- package/bundle/commands-LAWVNQTO.js +34 -0
- package/bundle/commands-RBWY7YXB.js +34 -0
- package/bundle/commands-XFZNMZN6.js +34 -0
- package/bundle/{config-DQIGDX4W.js → config-NDEYF4AQ.js} +7 -7
- package/bundle/{daemon-NPKYZ3CJ.js → daemon-WOQXCKNL.js} +4 -4
- package/bundle/{delegation-tools-6FICZQ5G.js → delegation-tools-Z5OM3TXS.js} +5 -5
- package/bundle/{deploy-lib-import-SBKXDD3F.js → deploy-lib-import-6VJTYXEG.js} +2 -2
- package/bundle/{deps-HN6CEXA4.js → deps-65V7XXG4.js} +4 -4
- package/bundle/{direct-api-transport-TRV45NO6.js → direct-api-transport-OZICXTWQ.js} +43 -15
- package/bundle/direct-api-transport-OZICXTWQ.js.map +7 -0
- package/bundle/direct-api-transport-QIWA5ES2.js +889 -0
- package/bundle/direct-api-transport-QIWA5ES2.js.map +7 -0
- package/bundle/{discord-adapter-WA2MFRK3.js → discord-adapter-JFIIVG34.js} +27 -24
- package/bundle/discord-adapter-JFIIVG34.js.map +7 -0
- package/bundle/discord-adapter-U3FA5OTY.js +589 -0
- package/bundle/discord-adapter-U3FA5OTY.js.map +7 -0
- package/bundle/discord-adapter-W6L5KJ6T.js +589 -0
- package/bundle/discord-adapter-W6L5KJ6T.js.map +7 -0
- package/bundle/discord-adapter-WWM6ROTW.js +589 -0
- package/bundle/discord-adapter-WWM6ROTW.js.map +7 -0
- package/bundle/{dns-wakeup-RYOCQ6GR.js → dns-wakeup-N46RPU5E.js} +3 -3
- package/bundle/{doctor-R54GZPKL.js → doctor-PIPSGI3H.js} +18 -7
- package/bundle/{doctor-R54GZPKL.js.map → doctor-PIPSGI3H.js.map} +2 -2
- package/bundle/{ensure-invariants-BJIEOSJ2.js → ensure-invariants-3NOBCYWS.js} +4 -4
- package/bundle/{env-schema-XCPAJ6IZ.js → env-schema-T43X43BU.js} +4 -4
- package/bundle/{hook-system-POI5VRIX.js → hook-system-ZCVOFFRD.js} +4 -4
- package/bundle/hotskills-DTROJY6G.js +17 -0
- package/bundle/{install-SH4UVUXQ.js → install-I3CXVW52.js} +3 -3
- package/bundle/{install-manifest-QRWID3KZ.js → install-manifest-KBYD7SAY.js} +3 -3
- package/bundle/{irc-adapter-AIEP6OX6.js → irc-adapter-HXO5D4SW.js} +3 -3
- package/bundle/{irc-config-6VY67UPQ.js → irc-config-XN5VW2V4.js} +5 -5
- package/bundle/kanban-board-6Q5E5GEB.js +31 -0
- package/bundle/kanban-board-I52RHNHQ.js +31 -0
- package/bundle/{lazy-require-UFYFFX2R.js → lazy-require-R3JYCV5M.js} +4 -4
- package/bundle/{media-utils-MOE36VWY.js → media-utils-W7XW3SVV.js} +4 -4
- package/bundle/{message-pipeline-2MBT44FO.js → message-pipeline-4CTBJ6K2.js} +17 -14
- package/bundle/message-pipeline-4KL7OWUH.js +38 -0
- package/bundle/message-pipeline-GFKSHRFU.js +38 -0
- package/bundle/message-pipeline-TGI2WJJM.js +38 -0
- package/bundle/meta.json +3181 -2356
- package/bundle/{notification-U6F5ZBSG.js → notification-ULESRDHB.js} +7 -6
- package/bundle/{openrouter-credits-7XXO6QGQ.js → openrouter-credits-PLIKRY5D.js} +4 -4
- package/bundle/{paths-ZJYIDND2.js → paths-QQM74XYT.js} +4 -2
- package/bundle/{peer-client-T44VI7NB.js → peer-client-D2F5QWRV.js} +8 -8
- package/bundle/{peer-config-D5A4454H.js → peer-config-5SUIBJLG.js} +5 -5
- package/bundle/{phase-transport-FEZ4SIJJ.js → phase-transport-INFD6ELA.js} +10 -10
- package/bundle/phase-transport-KXFZ5BVF.js +23 -0
- package/bundle/{restore-MFSW3EBL.js → restore-Z6MF54HS.js} +4 -4
- package/bundle/{restore-MFSW3EBL.js.map → restore-Z6MF54HS.js.map} +2 -2
- package/bundle/{update-check-O5MS6B3L.js → rollback-5RXXLUD6.js} +5 -7
- package/bundle/{self-healer-utils-7NFH22VJ.js → self-healer-utils-WPKOVXJD.js} +4 -4
- package/bundle/{skill-stats-IPVKMWN3.js → skill-stats-NHNH47QW.js} +5 -5
- package/bundle/{sleep-BPWX3FCN.js → sleep-ENFZFUJJ.js} +8 -8
- package/bundle/sleep-ENFZFUJJ.js.map +7 -0
- package/bundle/{soul-bundle-BRIUDEQ2.js → soul-bundle-QTPWDJB2.js} +7 -7
- package/bundle/soul-bundle-QTPWDJB2.js.map +7 -0
- package/bundle/{soul-loader-GBXJ7EBH.js → soul-loader-LCPTN4PK.js} +8 -8
- package/bundle/soul-loader-LCPTN4PK.js.map +7 -0
- package/bundle/{sse-parser-anthropic-H42TTLBD.js → sse-parser-anthropic-PYDJM3UC.js} +4 -4
- package/bundle/{sse-parser-responses-WG2LY2ML.js → sse-parser-responses-FYT7A5WT.js} +4 -4
- package/bundle/{ssrf-guard-E2KBBC5E.js → ssrf-guard-R4P5OCTO.js} +4 -4
- package/bundle/{start-CBVKNEAT.js → start-4DNURGIY.js} +1 -1
- package/bundle/{stt-CF3CPFDC.js → stt-YN77NND6.js} +5 -5
- package/bundle/stt-YN77NND6.js.map +7 -0
- package/bundle/{subagent-runtime-4MTYUBIZ.js → subagent-runtime-5AYOXOU2.js} +5 -5
- package/bundle/subagent-runtime-5AYOXOU2.js.map +7 -0
- package/bundle/subagent-runtime-VKTX6Q2M.js +13 -0
- package/bundle/subagent-runtime-VKTX6Q2M.js.map +7 -0
- package/bundle/system-event-buffer-OEPPNUGK.js +17 -0
- package/bundle/system-event-buffer-OEPPNUGK.js.map +7 -0
- package/bundle/{system-message-TALP6GP2.js → system-message-BRU267FW.js} +3 -3
- package/bundle/{system-status-GLYXXDE3.js → system-status-7K2QTH3J.js} +58 -51
- package/bundle/system-status-7K2QTH3J.js.map +7 -0
- package/bundle/{hotskills-6ECHLXTJ.js → task-failure-buffer-DPM5MWZ5.js} +8 -7
- package/bundle/task-failure-buffer-DPM5MWZ5.js.map +7 -0
- package/bundle/{task-store-LC7ZMS72.js → task-store-VCBHAB43.js} +5 -5
- package/bundle/task-store-VCBHAB43.js.map +7 -0
- package/bundle/{telegram-adapter-BJJYXN7J.js → telegram-adapter-4KI4CJPG.js} +51 -33
- package/bundle/telegram-adapter-4KI4CJPG.js.map +7 -0
- package/bundle/telegram-adapter-76B4JRJJ.js +1080 -0
- package/bundle/telegram-adapter-76B4JRJJ.js.map +7 -0
- package/bundle/telegram-adapter-VZA74EMT.js +1080 -0
- package/bundle/telegram-adapter-VZA74EMT.js.map +7 -0
- package/bundle/telegram-adapter-ZO2CLU22.js +1080 -0
- package/bundle/telegram-adapter-ZO2CLU22.js.map +7 -0
- package/bundle/{tool-registry-T7XLTI2Q.js → tool-registry-CG7GIS64.js} +13 -9
- package/bundle/tool-registry-CG7GIS64.js.map +7 -0
- package/bundle/tool-registry-TGNU5AMG.js +43 -0
- package/bundle/tool-registry-TGNU5AMG.js.map +7 -0
- package/bundle/{tool-sandbox-OZMXJZLQ.js → tool-sandbox-TLAL55QP.js} +5 -5
- package/bundle/tool-sandbox-TLAL55QP.js.map +7 -0
- package/bundle/{transport-config-G5NKQXPJ.js → transport-config-JIKHB7GT.js} +8 -8
- package/bundle/transport-config-JIKHB7GT.js.map +7 -0
- package/bundle/update-check-AJMIBQGQ.js +81 -0
- package/bundle/update-check-AJMIBQGQ.js.map +7 -0
- package/bundle/{user-registry-NUVNEHJU.js → user-registry-PEFDZ5AV.js} +5 -5
- package/bundle/user-registry-PEFDZ5AV.js.map +7 -0
- package/core/skills/tools/gmail/SKILL.md +5 -14
- package/core/skills/tools/rss/SKILL.md +51 -0
- package/install-manifest.json +8 -2
- package/package.json +4 -2
- package/scripts/abtars-daemon.service +3 -0
- package/scripts/abtars@.service +3 -0
- package/scripts/build-and-deploy.sh +68 -0
- package/scripts/doctor.sh +38 -0
- package/scripts/emergency-deploy.sh +95 -0
- package/scripts/watchdog.sh +51 -5
- package/bundle/chunk-4BUOO6WI.js.map +0 -7
- package/bundle/chunk-A5OJYQNU.js.map +0 -7
- package/bundle/chunk-JX3ZZU3O.js +0 -82
- package/bundle/chunk-JX3ZZU3O.js.map +0 -7
- package/bundle/chunk-KJOCXWJ5.js +0 -131
- package/bundle/chunk-KJOCXWJ5.js.map +0 -7
- package/bundle/chunk-KSEIWT4T.js.map +0 -7
- package/bundle/chunk-KWBGYWDO.js.map +0 -7
- package/bundle/chunk-MJ6PHMOK.js.map +0 -7
- package/bundle/chunk-P2BZSLJJ.js.map +0 -7
- package/bundle/chunk-R36WIOYX.js.map +0 -7
- package/bundle/chunk-RE3F3CFW.js +0 -300
- package/bundle/chunk-RE3F3CFW.js.map +0 -7
- package/bundle/chunk-RSWUPUNA.js.map +0 -7
- package/bundle/chunk-RV54J75Q.js.map +0 -7
- package/bundle/chunk-TYVI3ZWA.js.map +0 -7
- package/bundle/chunk-X5FBUA53.js.map +0 -7
- package/bundle/direct-api-transport-TRV45NO6.js.map +0 -7
- package/bundle/discord-adapter-WA2MFRK3.js.map +0 -7
- package/bundle/system-status-GLYXXDE3.js.map +0 -7
- package/bundle/telegram-adapter-BJJYXN7J.js.map +0 -7
- /package/bundle/{agent-api-rate-limit-C25WGSFF.js.map → agent-api-rate-limit-R2OFAQ3N.js.map} +0 -0
- /package/bundle/{agent-registry-SYUFNSVB.js.map → agent-registry-5VL5KI6U.js.map} +0 -0
- /package/bundle/{bridge-lock-transport-HO545SBK.js.map → agent-registry-PIS5XJHX.js.map} +0 -0
- /package/bundle/{browse-delivery-VTLEAVYA.js.map → bridge-lock-transport-N6OGDOSE.js.map} +0 -0
- /package/bundle/{browser-REIXOJ6S.js.map → browse-delivery-DXGMDMXA.js.map} +0 -0
- /package/bundle/{capability-ILW3D5HS.js.map → browser-QMYGSP5W.js.map} +0 -0
- /package/bundle/{commands-WUGPBPHI.js.map → capability-733TLH4W.js.map} +0 -0
- /package/bundle/{chunk-PZE3J7ER.js.map → chunk-3OXQWII3.js.map} +0 -0
- /package/bundle/{chunk-4KJ76TTE.js.map → chunk-4XW7YA3K.js.map} +0 -0
- /package/bundle/{chunk-ZVDVNSXK.js.map → chunk-7WFE2JI5.js.map} +0 -0
- /package/bundle/{chunk-Q62SXS73.js.map → chunk-BBDKU4EH.js.map} +0 -0
- /package/bundle/{chunk-EX2SRTUE.js.map → chunk-CYSGXNBY.js.map} +0 -0
- /package/bundle/{chunk-LYEAHE5V.js.map → chunk-DCY7DGMT.js.map} +0 -0
- /package/bundle/{chunk-G6IXMYIO.js.map → chunk-DO4INSXE.js.map} +0 -0
- /package/bundle/{chunk-VA5WKN3Z.js.map → chunk-EGA6JQVV.js.map} +0 -0
- /package/bundle/{chunk-URAQLQ2U.js.map → chunk-F3HMZFIL.js.map} +0 -0
- /package/bundle/{chunk-OOKLEC6V.js.map → chunk-FY3QUO2L.js.map} +0 -0
- /package/bundle/{chunk-2BY6I4P5.js.map → chunk-GUTRAMK3.js.map} +0 -0
- /package/bundle/{chunk-GPL57SRN.js.map → chunk-H7RX7UCR.js.map} +0 -0
- /package/bundle/{chunk-BYDUMHXT.js.map → chunk-HAF2AFBW.js.map} +0 -0
- /package/bundle/{chunk-KFENC7BM.js.map → chunk-L33WNMCP.js.map} +0 -0
- /package/bundle/{chunk-JRG4EFMP.js.map → chunk-LBMETTUP.js.map} +0 -0
- /package/bundle/{chunk-TOUZC6NR.js.map → chunk-OKMN6J4Z.js.map} +0 -0
- /package/bundle/{chunk-XZSYMCLF.js.map → chunk-PUDGA4RR.js.map} +0 -0
- /package/bundle/{chunk-CELR236Q.js.map → chunk-Q7CH5DA3.js.map} +0 -0
- /package/bundle/{chunk-UDZIZB5F.js.map → chunk-RTL7HO3N.js.map} +0 -0
- /package/bundle/{chunk-ITG6XGBS.js.map → chunk-SA44ITVX.js.map} +0 -0
- /package/bundle/{chunk-3MO2MDXJ.js.map → chunk-SA6YEFNG.js.map} +0 -0
- /package/bundle/{chunk-GBBTK6H2.js.map → chunk-SRFEIZQT.js.map} +0 -0
- /package/bundle/{chunk-ELRAH7VL.js.map → chunk-VXUVKC66.js.map} +0 -0
- /package/bundle/{config-DQIGDX4W.js.map → commands-IGRSOSK6.js.map} +0 -0
- /package/bundle/{delegation-tools-6FICZQ5G.js.map → commands-LAWVNQTO.js.map} +0 -0
- /package/bundle/{deploy-lib-import-SBKXDD3F.js.map → commands-RBWY7YXB.js.map} +0 -0
- /package/bundle/{env-schema-XCPAJ6IZ.js.map → commands-XFZNMZN6.js.map} +0 -0
- /package/bundle/{hook-system-POI5VRIX.js.map → config-NDEYF4AQ.js.map} +0 -0
- /package/bundle/{daemon-NPKYZ3CJ.js.map → daemon-WOQXCKNL.js.map} +0 -0
- /package/bundle/{hotskills-6ECHLXTJ.js.map → delegation-tools-Z5OM3TXS.js.map} +0 -0
- /package/bundle/{install-SH4UVUXQ.js.map → deploy-lib-import-6VJTYXEG.js.map} +0 -0
- /package/bundle/{deps-HN6CEXA4.js.map → deps-65V7XXG4.js.map} +0 -0
- /package/bundle/{dns-wakeup-RYOCQ6GR.js.map → dns-wakeup-N46RPU5E.js.map} +0 -0
- /package/bundle/{ensure-invariants-BJIEOSJ2.js.map → ensure-invariants-3NOBCYWS.js.map} +0 -0
- /package/bundle/{lazy-require-UFYFFX2R.js.map → env-schema-T43X43BU.js.map} +0 -0
- /package/bundle/{message-pipeline-2MBT44FO.js.map → hook-system-ZCVOFFRD.js.map} +0 -0
- /package/bundle/{notification-U6F5ZBSG.js.map → hotskills-DTROJY6G.js.map} +0 -0
- /package/bundle/{paths-ZJYIDND2.js.map → install-I3CXVW52.js.map} +0 -0
- /package/bundle/{install-manifest-QRWID3KZ.js.map → install-manifest-KBYD7SAY.js.map} +0 -0
- /package/bundle/{irc-adapter-AIEP6OX6.js.map → irc-adapter-HXO5D4SW.js.map} +0 -0
- /package/bundle/{irc-config-6VY67UPQ.js.map → irc-config-XN5VW2V4.js.map} +0 -0
- /package/bundle/{peer-config-D5A4454H.js.map → kanban-board-6Q5E5GEB.js.map} +0 -0
- /package/bundle/{phase-transport-FEZ4SIJJ.js.map → kanban-board-I52RHNHQ.js.map} +0 -0
- /package/bundle/{skill-stats-IPVKMWN3.js.map → lazy-require-R3JYCV5M.js.map} +0 -0
- /package/bundle/{media-utils-MOE36VWY.js.map → media-utils-W7XW3SVV.js.map} +0 -0
- /package/bundle/{sleep-BPWX3FCN.js.map → message-pipeline-4CTBJ6K2.js.map} +0 -0
- /package/bundle/{soul-bundle-BRIUDEQ2.js.map → message-pipeline-4KL7OWUH.js.map} +0 -0
- /package/bundle/{soul-loader-GBXJ7EBH.js.map → message-pipeline-GFKSHRFU.js.map} +0 -0
- /package/bundle/{stt-CF3CPFDC.js.map → message-pipeline-TGI2WJJM.js.map} +0 -0
- /package/bundle/{subagent-runtime-4MTYUBIZ.js.map → notification-ULESRDHB.js.map} +0 -0
- /package/bundle/{openrouter-credits-7XXO6QGQ.js.map → openrouter-credits-PLIKRY5D.js.map} +0 -0
- /package/bundle/{task-store-LC7ZMS72.js.map → paths-QQM74XYT.js.map} +0 -0
- /package/bundle/{peer-client-T44VI7NB.js.map → peer-client-D2F5QWRV.js.map} +0 -0
- /package/bundle/{tool-registry-T7XLTI2Q.js.map → peer-config-5SUIBJLG.js.map} +0 -0
- /package/bundle/{tool-sandbox-OZMXJZLQ.js.map → phase-transport-INFD6ELA.js.map} +0 -0
- /package/bundle/{transport-config-G5NKQXPJ.js.map → phase-transport-KXFZ5BVF.js.map} +0 -0
- /package/bundle/{update-check-O5MS6B3L.js.map → rollback-5RXXLUD6.js.map} +0 -0
- /package/bundle/{self-healer-utils-7NFH22VJ.js.map → self-healer-utils-WPKOVXJD.js.map} +0 -0
- /package/bundle/{user-registry-NUVNEHJU.js.map → skill-stats-NHNH47QW.js.map} +0 -0
- /package/bundle/{sse-parser-anthropic-H42TTLBD.js.map → sse-parser-anthropic-PYDJM3UC.js.map} +0 -0
- /package/bundle/{sse-parser-responses-WG2LY2ML.js.map → sse-parser-responses-FYT7A5WT.js.map} +0 -0
- /package/bundle/{ssrf-guard-E2KBBC5E.js.map → ssrf-guard-R4P5OCTO.js.map} +0 -0
- /package/bundle/{start-CBVKNEAT.js.map → start-4DNURGIY.js.map} +0 -0
- /package/bundle/{system-message-TALP6GP2.js.map → system-message-BRU267FW.js.map} +0 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to abTARS. Follows [Keep a Changelog](https://keepachangelog.com/).
|
|
4
|
+
|
|
5
|
+
## [0.1.0] — 2026-05-31
|
|
6
|
+
|
|
7
|
+
First public release.
|
|
8
|
+
|
|
9
|
+
### Core
|
|
10
|
+
- **Multi-platform** — Telegram, Discord, IRC with unified message pipeline
|
|
11
|
+
- **Multi-provider** — ollama, OpenRouter, Kiro CLI, Gemini CLI, Codex
|
|
12
|
+
- **Model management** — fallback chains, health tracking, hot-swap via `/model`
|
|
13
|
+
- **Session system** — Main, Browse, Code, Task sessions with concurrent support
|
|
14
|
+
- **Context window** — compaction, ABM-L compression, multi-tier assembly
|
|
15
|
+
- **Streaming** — SSE streaming for DirectAPI transport
|
|
16
|
+
|
|
17
|
+
### Memory (via abmind)
|
|
18
|
+
- In-process memory integration (optional — bridge boots without it)
|
|
19
|
+
- 4-layer recall injected per-turn (active memory)
|
|
20
|
+
- Sleep maintenance (Dreamy subagent, 12-step overnight pipeline)
|
|
21
|
+
- Credential vault — AES-256-GCM encrypted secrets at rest
|
|
22
|
+
|
|
23
|
+
### Security
|
|
24
|
+
- **Tool sandbox** — per-session policy enforcement (checkTool/checkPath)
|
|
25
|
+
- **A2A peer restrictions** — 3-layer defense (whitelist, injection scan, system prompt)
|
|
26
|
+
- **Rate limiter** — per-caller sliding window (MAX_AGENT_CALL_PER_HOUR/DAY)
|
|
27
|
+
- **Path traversal protection** — symlink resolution, blacklist enforcement
|
|
28
|
+
- **Secret auto-migration** — keys in .env.skills auto-moved to secret/
|
|
29
|
+
- **Log redaction** — class≥2 secrets never appear in logs
|
|
30
|
+
|
|
31
|
+
### Lifecycle
|
|
32
|
+
- `abtars install` — supervised/supervised-daemon modes, systemd/launchd
|
|
33
|
+
- `abtars update` — staged deploy, <2s downtime
|
|
34
|
+
- `abtars start/stop/restart` — port-based stale process kill (#686)
|
|
35
|
+
- `abtars doctor` — FTS integrity probe, filesystem checks, auto-repair
|
|
36
|
+
- `abtars onboard` — interactive setup wizard
|
|
37
|
+
- `abtars logs/config/status/backup/rollback` — operational commands
|
|
38
|
+
- 4-layer watchdog — in-proc heartbeat, bash watchdog, OS supervisor, circuit breaker
|
|
39
|
+
|
|
40
|
+
### Platforms
|
|
41
|
+
- **Telegram** — polling, inline keyboards, model picker, TTS, image handling
|
|
42
|
+
- **Discord** — polling, mention filter, chunking, multi-guild
|
|
43
|
+
- **IRC** — multi-channel, retry with backoff, hot-reload config
|
|
44
|
+
|
|
45
|
+
### Features
|
|
46
|
+
- **Skills** — hot-reload from `~/.abtars/skills/`, self-authoring, usage tracking
|
|
47
|
+
- **Scheduled tasks** — cron-style with retry, gate scripts, notifications
|
|
48
|
+
- **Browser agent** — delegated web browsing via IPC subprocess
|
|
49
|
+
- **Peer-to-peer** — A2A protocol, TLS 1.3, JWT auth, digital signatures
|
|
50
|
+
- **Self-healer** — log watcher, auto-fix rules, circuit breaker, notification throttling
|
|
51
|
+
- **Dashboard** — web UI for status monitoring
|
|
52
|
+
- **MCP integration** — tool server support
|
|
53
|
+
- **Hooks** — extensible lifecycle hooks system
|
|
54
|
+
|
|
55
|
+
### CLI
|
|
56
|
+
- `abtars install/uninstall/update/rollback/backup`
|
|
57
|
+
- `abtars start/stop/restart/status`
|
|
58
|
+
- `abtars doctor/onboard/passwd`
|
|
59
|
+
- `abtars logs/config`
|
|
60
|
+
|
|
61
|
+
### Documentation
|
|
62
|
+
- Full wiki (29 pages): install, models, commands, sessions, skills, peers, security, resilience
|
|
63
|
+
- "How to Add a New Service" guide
|
|
64
|
+
- CLI reference
|
package/README.md
CHANGED
|
@@ -1,29 +1,36 @@
|
|
|
1
1
|
# abTARS
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Autonomous AI agent with persistent memory, self-healing, and peer-to-peer communication. Your hardware, your rules.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
abTARS runs 24/7 on your machine — talks to you via Telegram/Discord/IRC, remembers everything across sessions, executes scheduled tasks, and recovers from failures without intervention. Use frontier models through existing CLI subscriptions at zero marginal cost.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- **
|
|
10
|
-
- **Self-
|
|
11
|
-
- **
|
|
7
|
+
## Why abTARS
|
|
8
|
+
|
|
9
|
+
- 🧠 **Memory that curates itself** — multi-layer recall (5 search stages + reranking), nightly sleep maintenance, emotion tracking, contradiction detection, Memory Darwinism
|
|
10
|
+
- 🛡️ **Self-hosted, defense-in-depth** — classified memory (4 tiers, encrypted at rest), role-based access, injection scanning, secrets vault
|
|
11
|
+
- 🔄 **Runs months unattended** — 5-layer supervision, leaky-bucket model fallback, self-healing agent, standby-aware recovery
|
|
12
|
+
- 🤝 **Agent-to-agent** — P2P communication with Ed25519 signatures, mDNS wake-up, IRC coordination channels
|
|
13
|
+
- 💰 **Zero idle cost** — no LLM calls at rest, CLI subscription parasitism, budget sleep tiers
|
|
14
|
+
|
|
15
|
+
→ **[Why abTARS vs OpenClaw & Hermes](https://aksika.github.io/abtars/why)**
|
|
16
|
+
|
|
17
|
+
## Architecture
|
|
12
18
|
|
|
13
19
|
```
|
|
14
|
-
You (Telegram/Discord/IRC)
|
|
20
|
+
You (Telegram / Discord / IRC / API client)
|
|
15
21
|
│
|
|
16
22
|
▼
|
|
17
|
-
abTARS (
|
|
18
|
-
├──
|
|
19
|
-
├──
|
|
20
|
-
├── Tools (browse,
|
|
21
|
-
├──
|
|
23
|
+
abTARS (bridge)
|
|
24
|
+
├── abmind (memory — in-process, multi-layer recall, encrypted)
|
|
25
|
+
├── Skills (core + self-authored during sleep + downloadable)
|
|
26
|
+
├── Tools (browse, bash, MCP, peer_ask)
|
|
27
|
+
├── Tasks (cron scheduler + retry + DoD checks)
|
|
28
|
+
├── Agent Swarm (async background sessions)
|
|
22
29
|
│
|
|
23
|
-
├── kiro-cli
|
|
24
|
-
├── gemini-cli
|
|
25
|
-
├──
|
|
26
|
-
└──
|
|
30
|
+
├── kiro-cli → Claude, DeepSeek, MiniMax, Qwen (free tier)
|
|
31
|
+
├── gemini-cli → Gemini 2.5
|
|
32
|
+
├── Direct API → ollama, OpenRouter, any OpenAI-compatible
|
|
33
|
+
└── Peers → other abTARS instances via /v1/chat/completions
|
|
27
34
|
```
|
|
28
35
|
|
|
29
36
|
## Quick Start
|
|
@@ -37,37 +44,84 @@ abtars onboard
|
|
|
37
44
|
sudo $(which abtars) daemon install
|
|
38
45
|
```
|
|
39
46
|
|
|
40
|
-
Full
|
|
47
|
+
After install, configure `~/.abtars/config/.env` with your Telegram bot token and at least one model provider. Full guide: **[docs/wiki/install.md](docs/wiki/install.md)**
|
|
41
48
|
|
|
42
|
-
##
|
|
49
|
+
## Features
|
|
43
50
|
|
|
44
|
-
|
|
51
|
+
### Memory (abmind)
|
|
45
52
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
53
|
+
Standalone package — works with abTARS, Kiro CLI, Gemini CLI, Claude Code, Codex, Hermes, or any MCP client.
|
|
54
|
+
|
|
55
|
+
- Multi-layer recall: 5 search stages (porter FTS5 → trigram → binary signatures → vector embeddings → entity graph) + 7 post-processing layers (cross-stage penalty, context boost, emotion boost, spacing boost, quality boost, MMR reranking, interference detection)
|
|
56
|
+
- Agglutinative language support (Hungarian, Finnish, Turkish) — QWERTZ fallback, substring windows
|
|
57
|
+
- 25 emotion types with per-memory scoring, emotional arcs per topic
|
|
58
|
+
- 12-step nightly sleep: extract, consolidate, prune, detect contradictions, fix translations
|
|
59
|
+
- NATO-inspired classification: confidentiality × trust × integrity × credibility
|
|
60
|
+
- AES-256-GCM encrypted secrets vault with auto-redaction from history
|
|
61
|
+
- Memory Darwinism — unused memories fade, recalled memories strengthen
|
|
62
|
+
|
|
63
|
+
### Reliability
|
|
64
|
+
|
|
65
|
+
- **L1** Heartbeat — standby detection, bridge.lock, task dispatch
|
|
66
|
+
- **L2** In-process watchdog — detects stuck event loops
|
|
67
|
+
- **L3** External watchdog — catches dead PIDs, stale heartbeats. Circuit breaker prevents restart storms
|
|
68
|
+
- **L4** OS supervisor — launchd (macOS) / systemd (Linux) restarts the watchdog itself
|
|
69
|
+
- **L5** Preventive daily restart — eliminates memory leaks
|
|
70
|
+
- **Model health** — leaky-bucket per model, progressive penalties, arbitrarily long fallback chains
|
|
71
|
+
- **Self-healing agent** — diagnoses failed tasks, attempts repair, suspends after 3 failures
|
|
72
|
+
|
|
73
|
+
### Agent Swarm
|
|
74
|
+
|
|
75
|
+
Main agent spawns independent background sessions (own context, own tool loop). Results auto-inject into the parent's next prompt. Up to 3 concurrent. `/wait` injects instructions into running sessions.
|
|
76
|
+
|
|
77
|
+
### Peer-to-Peer
|
|
52
78
|
|
|
53
|
-
|
|
79
|
+
Multiple abTARS instances communicate via OpenAI-compatible `/v1/chat/completions` endpoint. Bearer auth per peer, Ed25519 signatures, mDNS wake-up for firewalled peers, hop-limit loop prevention.
|
|
80
|
+
|
|
81
|
+
### Security
|
|
82
|
+
|
|
83
|
+
- Platform-level access: only registered chatId/userId can reach the agent
|
|
84
|
+
- Role-based: master/user/guest — commands, tools, memory all gated
|
|
85
|
+
- Secrets vault: AES-256-GCM, scrypt-derived key, auto-encrypt on ingest
|
|
86
|
+
- Injection scanner on all inbound messages
|
|
87
|
+
- SSRF guard on browser agent
|
|
88
|
+
- Credential redaction in all logs and exports
|
|
54
89
|
|
|
55
90
|
## Supported Transports
|
|
56
91
|
|
|
57
|
-
| Transport |
|
|
58
|
-
|
|
59
|
-
| ACP | kiro-cli, gemini-cli
|
|
60
|
-
| Direct API |
|
|
61
|
-
| Hooks | abmind hooks
|
|
92
|
+
| Transport | Providers |
|
|
93
|
+
|-----------|-----------|
|
|
94
|
+
| ACP (recommended) | kiro-cli, gemini-cli |
|
|
95
|
+
| Direct API | ollama, OpenRouter, any OpenAI-compatible endpoint |
|
|
96
|
+
| Hooks (standalone) | abmind lifecycle hooks on any CLI agent |
|
|
62
97
|
|
|
63
98
|
## Requirements
|
|
64
99
|
|
|
65
100
|
- Node.js 22+
|
|
66
|
-
- A Telegram bot token
|
|
67
|
-
- At least one model provider
|
|
101
|
+
- A Telegram bot token (Discord/IRC optional)
|
|
102
|
+
- At least one model provider
|
|
68
103
|
|
|
69
104
|
Optional: ollama + `nomic-embed-text` for memory embeddings.
|
|
70
105
|
|
|
106
|
+
## Documentation
|
|
107
|
+
|
|
108
|
+
- [Installation](docs/wiki/install.md)
|
|
109
|
+
- [Configuration](docs/wiki/commands.md)
|
|
110
|
+
- [CLI Reference](docs/wiki/cli.md)
|
|
111
|
+
- [Memory System (abmind)](https://github.com/aksika/abmind)
|
|
112
|
+
- [Skills & Extensions](docs/wiki/skills.md)
|
|
113
|
+
- [Deployment & Supervision](docs/wiki/supervision.md)
|
|
114
|
+
|
|
115
|
+
Full docs: **[aksika.github.io/abtars](https://aksika.github.io/abtars/)**
|
|
116
|
+
|
|
117
|
+
## Numbers
|
|
118
|
+
|
|
119
|
+
- 1794 tests (abtars 1016 + abmind 778)
|
|
120
|
+
- 5 agent types (professor, dreamy, browsie, coding, cron)
|
|
121
|
+
- 5-layer supervision stack
|
|
122
|
+
- 3 platform adapters + OpenAI-compatible API
|
|
123
|
+
- 12-step nightly memory maintenance
|
|
124
|
+
|
|
71
125
|
## Development
|
|
72
126
|
|
|
73
127
|
```bash
|
|
@@ -76,6 +130,11 @@ cd abtars && npm install && npm run build
|
|
|
76
130
|
npm test
|
|
77
131
|
```
|
|
78
132
|
|
|
133
|
+
## Community
|
|
134
|
+
|
|
135
|
+
- **Discord:** [Join](https://discord.gg/pj2qbWJT8)
|
|
136
|
+
- **GitHub:** [aksika/abtars](https://github.com/aksika/abtars) · [aksika/abmind](https://github.com/aksika/abmind)
|
|
137
|
+
|
|
79
138
|
## License
|
|
80
139
|
|
|
81
140
|
Apache-2.0
|
|
@@ -2,29 +2,32 @@
|
|
|
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
|
browser_exports
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import {
|
|
8
|
-
hotskills_exports
|
|
9
|
-
} from "./chunk-RE3F3CFW.js";
|
|
5
|
+
} from "./chunk-RITEGAW6.js";
|
|
6
|
+
import "./chunk-DHPFI7OF.js";
|
|
10
7
|
import {
|
|
11
8
|
sleep_exports
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import
|
|
9
|
+
} from "./chunk-N24ROESF.js";
|
|
10
|
+
import {
|
|
11
|
+
hotskills_exports,
|
|
12
|
+
init_hotskills
|
|
13
|
+
} from "./chunk-NIYVCGBC.js";
|
|
14
|
+
import "./chunk-ITB2K6LI.js";
|
|
15
|
+
import "./chunk-HAF2AFBW.js";
|
|
14
16
|
import "./chunk-JAJ3DUQ2.js";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-UDZIZB5F.js";
|
|
17
|
+
import "./chunk-RTL7HO3N.js";
|
|
17
18
|
import "./chunk-TBLYGCPQ.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-H7RX7UCR.js";
|
|
19
20
|
import "./chunk-MZWMYN4O.js";
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-JFKOPNKL.js";
|
|
22
|
+
import "./chunk-3OXQWII3.js";
|
|
23
|
+
import "./chunk-CYSGXNBY.js";
|
|
24
|
+
import "./chunk-GUTRAMK3.js";
|
|
25
|
+
import "./chunk-DGS7J4P6.js";
|
|
26
|
+
import "./chunk-WW5F2DCO.js";
|
|
25
27
|
import "./chunk-7K2YZTLD.js";
|
|
26
28
|
|
|
27
29
|
// src/capabilities/_registry.generated.ts
|
|
30
|
+
init_hotskills();
|
|
28
31
|
var capabilities = [
|
|
29
32
|
{ name: "browser", module: browser_exports },
|
|
30
33
|
{ name: "hotskills", module: hotskills_exports },
|
|
@@ -33,4 +36,4 @@ var capabilities = [
|
|
|
33
36
|
export {
|
|
34
37
|
capabilities
|
|
35
38
|
};
|
|
36
|
-
//# sourceMappingURL=_registry.generated-
|
|
39
|
+
//# sourceMappingURL=_registry.generated-KYX63MGY.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/capabilities/_registry.generated.ts"],
|
|
4
4
|
"sourcesContent": ["// AUTO-GENERATED by esbuild.config.js \u2014 do not edit\n// Static capability registry for bundled builds\n\nimport * as cap0 from \"./browser/index.js\";\nimport * as cap1 from \"./hotskills/index.js\";\nimport * as cap2 from \"./sleep/index.js\";\n\nexport const capabilities = [\n { name: \"browser\", module: cap0 },\n { name: \"hotskills\", module: cap1 },\n { name: \"sleep\", module: cap2 },\n];\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AAGO,IAAM,eAAe;AAAA,EAC1B,EAAE,MAAM,WAAW,QAAQ,gBAAK;AAAA,EAChC,EAAE,MAAM,aAAa,QAAQ,kBAAK;AAAA,EAClC,EAAE,MAAM,SAAS,QAAQ,cAAK;AAChC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/bundle/abtars-browser.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
1
|
#!/usr/bin/env node
|
|
3
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);
|
|
4
3
|
import {
|
|
@@ -6,11 +5,11 @@ import {
|
|
|
6
5
|
BrowserTool,
|
|
7
6
|
DomainAllowlist,
|
|
8
7
|
getDefaultSocketPath
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-JFKOPNKL.js";
|
|
9
|
+
import "./chunk-3OXQWII3.js";
|
|
10
|
+
import "./chunk-CYSGXNBY.js";
|
|
11
|
+
import "./chunk-GUTRAMK3.js";
|
|
12
|
+
import "./chunk-WW5F2DCO.js";
|
|
14
13
|
import "./chunk-7K2YZTLD.js";
|
|
15
14
|
|
|
16
15
|
// src/cli/abtars-browser.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/cli/abtars-browser.ts"],
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/**\n * abtars-browser \u2014 standalone CLI for agent-initiated browser control.\n *\n * Gives the LLM agent direct control over a headless Chromium browser.\n * Follows the same pattern as abmind recall and abmind store.\n *\n * Usage:\n * abtars-browser --action navigate --url \"https://example.com\" --session-id default\n * abtars-browser --action fill --selector \"#email\" --value \"user@example.com\" --session-id auth\n * abtars-browser --action click --selector \"text=Sign In\" --session-id auth\n * abtars-browser --action extract_text --session-id auth\n * abtars-browser --action screenshot --full-page --session-id auth\n * abtars-browser --action get_page_info --session-id auth\n * abtars-browser --action close_session --session-id auth\n *\n * Output (success):\n * { \"success\": true, \"title\": \"Example\", \"url\": \"https://example.com\", \"status\": 200 }\n *\n * Output (error):\n * { \"success\": false, \"error\": \"navigate action requires --url\" }\n */\n\nimport * as net from \"node:net\";\nimport * as fs from \"node:fs\";\nimport type { BrowserAction, BrowserActionType, BrowserToolResult } from \"../types/browser.js\";\nimport { BrowserManager } from \"../capabilities/browser/browser-manager.js\";\nimport { BrowserTool } from \"../capabilities/browser/browser-tool.js\";\nimport { DomainAllowlist } from \"../capabilities/browser/domain-allowlist.js\";\nimport { getDefaultSocketPath } from \"../capabilities/browser/browser-ipc-server.js\";\n\n/** The 7 valid browser action types. */\nconst VALID_ACTIONS: ReadonlySet<string> = new Set<BrowserActionType>([\n \"navigate\",\n \"click\",\n \"fill\",\n \"extract_text\",\n \"screenshot\",\n \"get_page_info\",\n \"close_session\",\n \"set_cookie\",\n]);\n\nexport type RawBrowserArgs = {\n action?: string;\n url?: string;\n selector?: string;\n value?: string;\n sessionId: string;\n fullPage: boolean;\n cookieFile?: string;\n engine?: string;\n};\n\n/**\n * Parse raw CLI argv into a RawBrowserArgs object.\n * Exported for unit testing.\n */\nexport function parseArgs(argv: string[]): RawBrowserArgs {\n const args = argv.slice(2);\n const parsed: RawBrowserArgs = { sessionId: \"default\", fullPage: false };\n\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--action\": parsed.action = args[++i] ?? \"\"; break;\n case \"--url\": parsed.url = args[++i] ?? \"\"; break;\n case \"--selector\": parsed.selector = args[++i] ?? \"\"; break;\n case \"--value\": parsed.value = args[++i] ?? \"\"; break;\n case \"--session-id\": parsed.sessionId = args[++i] ?? \"default\"; break;\n case \"--full-page\": parsed.fullPage = true; break;\n case \"--cookie-file\": parsed.cookieFile = args[++i] ?? \"\"; break;\n case \"--engine\": parsed.engine = args[++i] ?? \"\"; break;\n }\n }\n\n return parsed;\n}\n\n/**\n * Validate raw CLI arguments and return either a parsed BrowserAction or an error string.\n * Exported for unit testing.\n */\nexport function validateArgs(\n raw: RawBrowserArgs,\n): { ok: true; action: BrowserAction; raw: RawBrowserArgs } | { ok: false; error: string } {\n // Validate action is one of the 7 valid types\n if (!raw.action) {\n return { ok: false, error: \"--action is required\" };\n }\n if (!VALID_ACTIONS.has(raw.action)) {\n return {\n ok: false,\n error: `Invalid action \"${raw.action}\". Valid actions: ${[...VALID_ACTIONS].join(\", \")}`,\n };\n }\n\n const actionType = raw.action as BrowserActionType;\n\n // Validate required params per action\n switch (actionType) {\n case \"navigate\":\n if (!raw.url) return { ok: false, error: \"navigate action requires --url\" };\n break;\n case \"click\":\n if (!raw.selector) return { ok: false, error: \"click action requires --selector\" };\n break;\n case \"fill\":\n if (!raw.selector) return { ok: false, error: \"fill action requires --selector\" };\n if (raw.value === undefined) return { ok: false, error: \"fill action requires --value\" };\n break;\n case \"set_cookie\":\n if (!raw.cookieFile) return { ok: false, error: \"set_cookie action requires --cookie-file\" };\n break;\n // extract_text, screenshot, get_page_info, close_session have no extra required params\n }\n\n return {\n ok: true,\n raw,\n action: {\n action: actionType,\n sessionId: raw.sessionId,\n url: raw.url,\n selector: raw.selector,\n value: raw.value,\n fullPage: raw.fullPage,\n cookieFile: raw.cookieFile,\n },\n };\n}\n\n// --- CLI entry point (only runs when executed directly) ---\n\n/**\n * Try executing the action via the main process IPC socket.\n * Returns null if socket unavailable (caller should fall back to ephemeral).\n */\nexport function executeViaIpc(\n action: BrowserAction,\n socketPath?: string,\n): Promise<BrowserToolResult | null> {\n const sock = socketPath ?? getDefaultSocketPath();\n\n if (!fs.existsSync(sock)) return Promise.resolve(null);\n\n return new Promise<BrowserToolResult | null>((resolve) => {\n const conn = net.createConnection(sock, () => {\n conn.end(JSON.stringify(action) + \"\\n\");\n });\n\n let data = \"\";\n conn.on(\"data\", (chunk) => { data += chunk.toString(); });\n\n conn.on(\"end\", () => {\n try {\n resolve(JSON.parse(data.trim()) as BrowserToolResult);\n } catch {\n resolve(null);\n }\n });\n\n conn.on(\"error\", () => resolve(null));\n\n // Don't hang forever if main process is stuck.\n conn.setTimeout(60_000, () => {\n conn.destroy();\n resolve(null);\n });\n });\n}\n\nasync function main() {\n const raw = parseArgs(process.argv);\n const validation = validateArgs(raw);\n\n if (!validation.ok) {\n console.log(JSON.stringify({ success: false, error: validation.error }));\n process.exit(1);\n }\n\n // Try IPC to main process first (sessions persist across calls).\n const ipcResult = await executeViaIpc(validation.action);\n if (ipcResult !== null) {\n console.log(JSON.stringify(ipcResult));\n return;\n }\n\n // Fallback: ephemeral browser (no session persistence).\n if (validation.raw.engine) process.env[\"BROWSER_ENGINE\"] = validation.raw.engine;\n else if (!process.env[\"BROWSER_ENGINE\"]) process.env[\"BROWSER_ENGINE\"] = \"patchright\";\n const browserManager = new BrowserManager();\n const allowlist = DomainAllowlist.fromEnv();\n const tool = new BrowserTool(browserManager, allowlist);\n\n try {\n const result = await tool.execute(validation.action);\n console.log(JSON.stringify(result));\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n console.log(JSON.stringify({ success: false, error: message }));\n } finally {\n await browserManager.shutdown();\n }\n}\n\n// Only run when executed as a script, not when imported for testing\nconst isDirectRun =\n process.argv[1]?.endsWith(\"abtars-browser.ts\") ||\n process.argv[1]?.endsWith(\"abtars-browser.js\");\nif (isDirectRun) {\n main();\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;AAsBA,YAAY,SAAS;AACrB,YAAY,QAAQ;AAQpB,IAAM,gBAAqC,oBAAI,IAAuB;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAiBM,SAAS,UAAU,MAAgC;AACxD,QAAM,OAAO,KAAK,MAAM,CAAC;AACzB,QAAM,SAAyB,EAAE,WAAW,WAAW,UAAU,MAAM;AAEvE,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAQ,KAAK,CAAC,GAAG;AAAA,MACf,KAAK;AAAgB,eAAO,SAAS,KAAK,EAAE,CAAC,KAAK;AAAI;AAAA,MACtD,KAAK;AAAgB,eAAO,MAAM,KAAK,EAAE,CAAC,KAAK;AAAI;AAAA,MACnD,KAAK;AAAgB,eAAO,WAAW,KAAK,EAAE,CAAC,KAAK;AAAI;AAAA,MACxD,KAAK;AAAgB,eAAO,QAAQ,KAAK,EAAE,CAAC,KAAK;AAAI;AAAA,MACrD,KAAK;AAAgB,eAAO,YAAY,KAAK,EAAE,CAAC,KAAK;AAAW;AAAA,MAChE,KAAK;AAAgB,eAAO,WAAW;AAAM;AAAA,MAC7C,KAAK;AAAiB,eAAO,aAAa,KAAK,EAAE,CAAC,KAAK;AAAI;AAAA,MAC3D,KAAK;AAAgB,eAAO,SAAS,KAAK,EAAE,CAAC,KAAK;AAAI;AAAA,IACxD;AAAA,EACF;AAEA,SAAO;AACT;AAMO,SAAS,aACd,KACyF;AAEzF,MAAI,CAAC,IAAI,QAAQ;AACf,WAAO,EAAE,IAAI,OAAO,OAAO,uBAAuB;AAAA,EACpD;AACA,MAAI,CAAC,cAAc,IAAI,IAAI,MAAM,GAAG;AAClC,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,OAAO,mBAAmB,IAAI,MAAM,qBAAqB,CAAC,GAAG,aAAa,EAAE,KAAK,IAAI,CAAC;AAAA,IACxF;AAAA,EACF;AAEA,QAAM,aAAa,IAAI;AAGvB,UAAQ,YAAY;AAAA,IAClB,KAAK;AACH,UAAI,CAAC,IAAI,IAAK,QAAO,EAAE,IAAI,OAAO,OAAO,iCAAiC;AAC1E;AAAA,IACF,KAAK;AACH,UAAI,CAAC,IAAI,SAAU,QAAO,EAAE,IAAI,OAAO,OAAO,mCAAmC;AACjF;AAAA,IACF,KAAK;AACH,UAAI,CAAC,IAAI,SAAU,QAAO,EAAE,IAAI,OAAO,OAAO,kCAAkC;AAChF,UAAI,IAAI,UAAU,OAAW,QAAO,EAAE,IAAI,OAAO,OAAO,+BAA+B;AACvF;AAAA,IACF,KAAK;AACH,UAAI,CAAC,IAAI,WAAY,QAAO,EAAE,IAAI,OAAO,OAAO,2CAA2C;AAC3F;AAAA,EAEJ;AAEA,SAAO;AAAA,IACL,IAAI;AAAA,IACJ;AAAA,IACA,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,WAAW,IAAI;AAAA,MACf,KAAK,IAAI;AAAA,MACT,UAAU,IAAI;AAAA,MACd,OAAO,IAAI;AAAA,MACX,UAAU,IAAI;AAAA,MACd,YAAY,IAAI;AAAA,IAClB;AAAA,EACF;AACF;AAQO,SAAS,cACd,QACA,YACmC;AACnC,QAAM,OAAO,cAAc,qBAAqB;AAEhD,MAAI,CAAI,cAAW,IAAI,EAAG,QAAO,QAAQ,QAAQ,IAAI;AAErD,SAAO,IAAI,QAAkC,CAAC,YAAY;AACxD,UAAM,OAAW,qBAAiB,MAAM,MAAM;AAC5C,WAAK,IAAI,KAAK,UAAU,MAAM,IAAI,IAAI;AAAA,IACxC,CAAC;AAED,QAAI,OAAO;AACX,SAAK,GAAG,QAAQ,CAAC,UAAU;AAAE,cAAQ,MAAM,SAAS;AAAA,IAAG,CAAC;AAExD,SAAK,GAAG,OAAO,MAAM;AACnB,UAAI;AACF,gBAAQ,KAAK,MAAM,KAAK,KAAK,CAAC,CAAsB;AAAA,MACtD,QAAQ;AACN,gBAAQ,IAAI;AAAA,MACd;AAAA,IACF,CAAC;AAED,SAAK,GAAG,SAAS,MAAM,QAAQ,IAAI,CAAC;AAGpC,SAAK,WAAW,KAAQ,MAAM;AAC5B,WAAK,QAAQ;AACb,cAAQ,IAAI;AAAA,IACd,CAAC;AAAA,EACH,CAAC;AACH;AAEA,eAAe,OAAO;AACpB,QAAM,MAAM,UAAU,QAAQ,IAAI;AAClC,QAAM,aAAa,aAAa,GAAG;AAEnC,MAAI,CAAC,WAAW,IAAI;AAClB,YAAQ,IAAI,KAAK,UAAU,EAAE,SAAS,OAAO,OAAO,WAAW,MAAM,CAAC,CAAC;AACvE,YAAQ,KAAK,CAAC;AAAA,EAChB;AAGA,QAAM,YAAY,MAAM,cAAc,WAAW,MAAM;AACvD,MAAI,cAAc,MAAM;AACtB,YAAQ,IAAI,KAAK,UAAU,SAAS,CAAC;AACrC;AAAA,EACF;AAGA,MAAI,WAAW,IAAI,OAAQ,SAAQ,IAAI,gBAAgB,IAAI,WAAW,IAAI;AAAA,WACjE,CAAC,QAAQ,IAAI,gBAAgB,EAAG,SAAQ,IAAI,gBAAgB,IAAI;AACzE,QAAM,iBAAiB,IAAI,eAAe;AAC1C,QAAM,YAAY,gBAAgB,QAAQ;AAC1C,QAAM,OAAO,IAAI,YAAY,gBAAgB,SAAS;AAEtD,MAAI;AACF,UAAM,SAAS,MAAM,KAAK,QAAQ,WAAW,MAAM;AACnD,YAAQ,IAAI,KAAK,UAAU,MAAM,CAAC;AAAA,EACpC,SAAS,KAAK;AACZ,UAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC/D,YAAQ,IAAI,KAAK,UAAU,EAAE,SAAS,OAAO,OAAO,QAAQ,CAAC,CAAC;AAAA,EAChE,UAAE;AACA,UAAM,eAAe,SAAS;AAAA,EAChC;AACF;AAGA,IAAM,cACJ,QAAQ,KAAK,CAAC,GAAG,SAAS,mBAAmB,KAC7C,QAAQ,KAAK,CAAC,GAAG,SAAS,mBAAmB;AAC/C,IAAI,aAAa;AACf,OAAK;AACP;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|