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
|
@@ -4,8 +4,9 @@ import {
|
|
|
4
4
|
init_logger,
|
|
5
5
|
logDebug,
|
|
6
6
|
logWarn
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-6S3G6GPO.js";
|
|
8
|
+
import "./chunk-7XXISOHU.js";
|
|
9
|
+
import "./chunk-2BXXQG7P.js";
|
|
9
10
|
import "./chunk-7K2YZTLD.js";
|
|
10
11
|
|
|
11
12
|
// src/components/transport/acp-raw-client.ts
|
|
@@ -114,4 +115,4 @@ var AcpRawClient = class {
|
|
|
114
115
|
export {
|
|
115
116
|
AcpRawClient
|
|
116
117
|
};
|
|
117
|
-
//# sourceMappingURL=acp-raw-client-
|
|
118
|
+
//# sourceMappingURL=acp-raw-client-YTBGFN4S.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/components/transport/acp-raw-client.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * ACP Raw Client \u2014 fallback JSON-RPC over raw stdin/stdout (#924).\n * Used when the SDK's ndJsonStream/Web Streams layer breaks (kiro-cli #7554).\n */\nimport { spawn, type ChildProcess } from \"node:child_process\";\nimport { logDebug, logWarn } from \"../logger.js\";\n\nconst TAG = \"acp-raw\";\n\ntype NotificationHandler = (method: string, params: Record<string, unknown>) => void;\n\nexport class AcpRawClient {\n private child: ChildProcess | null = null;\n private pending = new Map<number, { resolve: (v: any) => void; reject: (e: Error) => void }>();\n private nextId = 1;\n private buf = \"\";\n private onNotification: NotificationHandler;\n private onExit: ((code: number | null, signal: string | null) => void) | null = null;\n\n constructor(\n private cliPath: string,\n private args: string[],\n private env: NodeJS.ProcessEnv,\n private cwd: string,\n onNotification: NotificationHandler,\n ) {\n this.onNotification = onNotification;\n }\n\n spawn(): void {\n this.child = spawn(this.cliPath, this.args, {\n cwd: this.cwd,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n env: this.env,\n });\n\n this.child.stdout!.on(\"data\", (d: Buffer) => {\n this.buf += d.toString();\n const lines = this.buf.split(\"\\n\");\n this.buf = lines.pop()!;\n for (const line of lines) {\n if (!line.trim()) continue;\n try {\n const msg = JSON.parse(line);\n if (msg.id && this.pending.has(msg.id)) {\n const p = this.pending.get(msg.id)!;\n this.pending.delete(msg.id);\n if (msg.error) p.reject(new Error(msg.error.message ?? JSON.stringify(msg.error)));\n else p.resolve(msg.result);\n } else if (msg.method) {\n this.onNotification(msg.method, msg.params ?? {});\n }\n } catch { /* malformed line */ }\n }\n });\n\n this.child.stderr!.on(\"data\", (d: Buffer) => {\n logDebug(TAG, `[stderr] ${d.toString().trim()}`);\n });\n\n this.child.on(\"exit\", (code, signal) => {\n logWarn(TAG, `CLI exited (code=${code}, signal=${signal})`);\n // Reject all pending\n for (const [, p] of this.pending) p.reject(new Error(`CLI exited (code=${code})`));\n this.pending.clear();\n this.child = null;\n this.onExit?.(code, signal);\n });\n }\n\n setOnExit(handler: (code: number | null, signal: string | null) => void): void {\n this.onExit = handler;\n }\n\n private request<T = unknown>(method: string, params: Record<string, unknown>): Promise<T> {\n if (!this.child?.stdin?.writable) return Promise.reject(new Error(\"CLI not running\"));\n const id = this.nextId++;\n const payload = JSON.stringify({ jsonrpc: \"2.0\", method, params, id });\n logDebug(TAG, `\u2192 ${method} (id=${id}, ${payload.length} bytes)`);\n return new Promise((resolve, reject) => {\n this.pending.set(id, { resolve, reject });\n this.child!.stdin!.write(payload + \"\\n\");\n });\n }\n\n async initialize(): Promise<{ agentInfo: { name: string; version: string } }> {\n return this.request(\"initialize\", {\n protocolVersion: \"2025-11-16\",\n capabilities: {},\n clientInfo: { name: \"abtars\", version: \"0.2.3\" },\n });\n }\n\n async newSession(params: { cwd: string; mcpServers: unknown[] }): Promise<{ sessionId: string }> {\n return this.request(\"session/new\", params);\n }\n\n async prompt(params: { sessionId: string; prompt: Array<{ type: string; text: string }> }): Promise<{ stopReason: string }> {\n return this.request(\"session/prompt\", params);\n }\n\n get pid(): number | undefined { return this.child?.pid; }\n get alive(): boolean { return this.child !== null; }\n\n destroy(): void {\n if (this.child) {\n const pid = this.child.pid;\n this.child.kill(\"SIGTERM\");\n this.child = null;\n if (pid) setTimeout(() => { try { process.kill(pid, \"SIGKILL\"); } catch {} }, 2000).unref();\n }\n for (const [, p] of this.pending) p.reject(new Error(\"destroyed\"));\n this.pending.clear();\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -5,8 +5,9 @@ import {
|
|
|
5
5
|
logError,
|
|
6
6
|
logInfo,
|
|
7
7
|
logWarn
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-6S3G6GPO.js";
|
|
9
|
+
import "./chunk-7XXISOHU.js";
|
|
10
|
+
import "./chunk-2BXXQG7P.js";
|
|
10
11
|
import "./chunk-7K2YZTLD.js";
|
|
11
12
|
|
|
12
13
|
// src/components/action-gate.ts
|
|
@@ -188,4 +189,4 @@ Authorize?`;
|
|
|
188
189
|
export {
|
|
189
190
|
ActionGate
|
|
190
191
|
};
|
|
191
|
-
//# sourceMappingURL=action-gate-
|
|
192
|
+
//# sourceMappingURL=action-gate-YISTP773.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/components/action-gate.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * action-gate.ts \u2014 Out-of-band authorization for privileged actions.\n * Agent requests a privileged action \u2192 Telegram inline keyboard to master \u2192 proceed/deny.\n */\n\nimport { randomBytes } from \"node:crypto\";\nimport { readFileSync, writeFileSync, mkdirSync, appendFileSync, existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { logInfo, logWarn, logError } from \"./logger.js\";\n\nconst TAG = \"action-gate\";\n\nexport interface AuthToken {\n id: string;\n category: string;\n pattern: string;\n expiresAt: number;\n consumed: boolean;\n}\n\nexport interface AuthRule {\n category: string;\n pattern: string;\n action: \"allow\" | \"deny\";\n createdAt: string;\n}\n\nexport interface AuthRequest {\n id: string;\n category: string;\n detail: string;\n resolve: (granted: boolean) => void;\n timer: ReturnType<typeof setTimeout>;\n reminderSent: boolean;\n}\n\nexport type NotifyFn = (text: string, buttons: Array<{ text: string; data: string }>) => Promise<void>;\n\nexport class ActionGate {\n private tokens = new Map<string, AuthToken>();\n private pending = new Map<string, AuthRequest>();\n private rules: AuthRule[] = [];\n private rulesPath: string;\n private auditPath: string;\n private notify: NotifyFn | null = null;\n\n constructor(authDir: string) {\n this.rulesPath = join(authDir, \"rules.json\");\n this.auditPath = join(authDir, \"audit.jsonl\");\n mkdirSync(authDir, { recursive: true });\n this.loadRules();\n }\n\n setNotify(fn: NotifyFn): void {\n this.notify = fn;\n }\n\n /** Check if a rule already allows/denies this action. */\n checkRules(category: string, pattern: string): \"allow\" | \"deny\" | null {\n for (const rule of this.rules) {\n if (rule.category !== category) continue;\n if (rule.pattern === \"*\" || rule.pattern === pattern) {\n return rule.action;\n }\n }\n return null;\n }\n\n /**\n * Request authorization for a privileged action.\n * Returns true if granted, false if denied/timed out.\n */\n async requestAuth(category: string, detail: string): Promise<boolean> {\n // Check persistent rules first\n const rule = this.checkRules(category, detail);\n if (rule === \"allow\") {\n this.audit(category, detail, \"allowed-by-rule\");\n return true;\n }\n if (rule === \"deny\") {\n this.audit(category, detail, \"denied-by-rule\");\n return false;\n }\n\n // No rule \u2014 ask master via Telegram\n if (!this.notify) {\n logWarn(TAG, `No notify function \u2014 auto-denying ${category}: ${detail.slice(0, 80)}`);\n this.audit(category, detail, \"denied-no-notify\");\n return false;\n }\n\n const requestId = randomBytes(8).toString(\"hex\");\n const message = this.formatMessage(category, detail);\n\n return new Promise<boolean>((resolve) => {\n const timer = setTimeout(() => {\n this.pending.delete(requestId);\n logWarn(TAG, `Auth request timed out: ${category} ${detail.slice(0, 60)}`);\n this.audit(category, detail, \"denied-timeout\");\n resolve(false);\n }, 120_000);\n\n // 60s reminder\n const reminderTimer = setTimeout(() => {\n const req = this.pending.get(requestId);\n if (req && !req.reminderSent) {\n req.reminderSent = true;\n this.notify?.(\"\u23F3 Still waiting for authorization...\", []).catch(() => {});\n }\n }, 60_000);\n\n this.pending.set(requestId, { id: requestId, category, detail, resolve: (granted) => {\n clearTimeout(timer);\n clearTimeout(reminderTimer);\n this.pending.delete(requestId);\n resolve(granted);\n }, timer, reminderSent: false });\n\n this.notify!(message, [\n { text: \"\u2713 Allow once\", data: `auth:${requestId}:once` },\n { text: \"\uD83D\uDD13 Always allow\", data: `auth:${requestId}:always` },\n { text: \"\u274C Deny\", data: `auth:${requestId}:deny` },\n ]).catch((err) => {\n logError(TAG, `Failed to send auth request: ${err}`);\n clearTimeout(timer);\n clearTimeout(reminderTimer);\n this.pending.delete(requestId);\n this.audit(category, detail, \"denied-send-failed\");\n resolve(false);\n });\n });\n }\n\n /** Handle callback from Telegram button press. */\n handleCallback(data: string): boolean {\n const match = data.match(/^auth:([a-f0-9]+):(once|always|deny)$/);\n if (!match) return false;\n\n const [, requestId, action] = match;\n const req = this.pending.get(requestId!);\n if (!req) return false;\n\n if (action === \"once\") {\n this.audit(req.category, req.detail, \"allowed-once\");\n req.resolve(true);\n } else if (action === \"always\") {\n this.storeRule(req.category, req.detail, \"allow\");\n this.audit(req.category, req.detail, \"allowed-always\");\n req.resolve(true);\n } else {\n this.audit(req.category, req.detail, \"denied\");\n req.resolve(false);\n }\n return true;\n }\n\n /** Generate a one-use token for external CLI callers. */\n generateToken(category: string, pattern: string): string {\n const id = randomBytes(16).toString(\"hex\");\n this.tokens.set(id, {\n id,\n category,\n pattern,\n expiresAt: Date.now() + 120_000,\n consumed: false,\n });\n return id;\n }\n\n /** Validate and consume a token. */\n validateToken(tokenId: string): boolean {\n const token = this.tokens.get(tokenId);\n if (!token) return false;\n if (token.consumed || Date.now() > token.expiresAt) {\n this.tokens.delete(tokenId);\n return false;\n }\n token.consumed = true;\n this.tokens.delete(tokenId);\n return true;\n }\n\n private storeRule(category: string, pattern: string, action: \"allow\" | \"deny\"): void {\n this.rules.push({ category, pattern, action, createdAt: new Date().toISOString() });\n writeFileSync(this.rulesPath, JSON.stringify({ rules: this.rules }, null, 2) + \"\\n\");\n logInfo(TAG, `Stored rule: ${action} ${category}:${pattern}`);\n }\n\n private loadRules(): void {\n if (!existsSync(this.rulesPath)) { this.rules = []; return; }\n try {\n const data = JSON.parse(readFileSync(this.rulesPath, \"utf-8\"));\n this.rules = data.rules ?? [];\n } catch { this.rules = []; }\n }\n\n private audit(category: string, detail: string, outcome: string): void {\n const entry = JSON.stringify({ ts: new Date().toISOString(), category, detail: detail.slice(0, 200), outcome });\n try { appendFileSync(this.auditPath, entry + \"\\n\"); } catch { /* best effort */ }\n }\n\n private formatMessage(category: string, detail: string): string {\n switch (category) {\n case \"secret-recall\": return `\uD83D\uDD10 Agent wants SECRET memory:\\n\"${detail.slice(0, 100)}\"\\n\\nAuthorize?`;\n case \"bash-auth\": return `\u26A0\uFE0F Agent wants to run:\\n\\`${detail.slice(0, 200)}\\`\\n\\nAuthorize?`;\n default: return `\uD83D\uDD12 Agent requests: ${category}\\n${detail.slice(0, 150)}\\n\\nAuthorize?`;\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,8 +4,9 @@ import {
|
|
|
4
4
|
init_logger,
|
|
5
5
|
logDebug,
|
|
6
6
|
logInfo
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-6S3G6GPO.js";
|
|
8
|
+
import "./chunk-7XXISOHU.js";
|
|
9
|
+
import "./chunk-2BXXQG7P.js";
|
|
9
10
|
import "./chunk-7K2YZTLD.js";
|
|
10
11
|
|
|
11
12
|
// src/platforms/agent-api/agent-api-adapter.ts
|
|
@@ -34,7 +35,7 @@ var AgentApiAdapter = class {
|
|
|
34
35
|
* Returns the Orc's response (resolved when card completes).
|
|
35
36
|
*/
|
|
36
37
|
async handlePeerMessage(peerId, sessionId, text, timeoutMs = 3e5) {
|
|
37
|
-
const { spin } = await import("./spin-
|
|
38
|
+
const { spin } = await import("./spin-76K4R6FK.js");
|
|
38
39
|
logDebug(TAG, `-> ${peerId}/${sessionId}: ${text.slice(0, 100)}`);
|
|
39
40
|
const { result } = await spin.dispatchAwait({
|
|
40
41
|
type: "O",
|
|
@@ -51,4 +52,4 @@ var AgentApiAdapter = class {
|
|
|
51
52
|
export {
|
|
52
53
|
AgentApiAdapter
|
|
53
54
|
};
|
|
54
|
-
//# sourceMappingURL=agent-api-adapter-
|
|
55
|
+
//# sourceMappingURL=agent-api-adapter-E4HWVJ32.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/platforms/agent-api/agent-api-adapter.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * agent-api-adapter.ts \u2014 A2A as a PlatformAdapter (#978).\n *\n * Thin adapter: receives peer chat messages via HTTP, routes through\n * Spin \u2192 Orc. Peers don't get casual chat \u2014 they get orchestrated work.\n * Response buffered via Promise \u2014 resolved when Orc completes the card.\n */\n\nimport type { PlatformAdapter, PlatformCapabilities, InboundMessage, SendOpts } from \"../../types/platform.js\";\nimport { logInfo, logDebug } from \"../../components/logger.js\";\n\nconst TAG = \"a2a-adapter\";\n\nexport class AgentApiAdapter implements PlatformAdapter {\n readonly name = \"a2a\" as const;\n readonly capabilities: PlatformCapabilities = { voice: false, reactions: false, typing: false, threads: false };\n readonly supportsStreaming = false;\n\n async start(): Promise<void> {\n logInfo(TAG, \"A2A platform adapter ready\");\n }\n\n stop(): void {}\n\n authorize(_msg: InboundMessage): boolean {\n return true; // JWT already verified at HTTP layer\n }\n\n async sendMessage(_channelId: string, _text: string, _opts?: SendOpts): Promise<string | undefined> {\n return undefined; // Not used \u2014 response comes from Orc card result\n }\n\n chunkResponse(text: string): string[] {\n return [text];\n }\n\n /**\n * Process a peer chat message: route through Spin \u2192 Orc.\n * Returns the Orc's response (resolved when card completes).\n */\n async handlePeerMessage(peerId: string, sessionId: string, text: string, timeoutMs = 300_000): Promise<string> {\n const { spin } = await import(\"../../components/spin.js\");\n\n logDebug(TAG, `-> ${peerId}/${sessionId}: ${text.slice(0, 100)}`);\n\n const { result } = await spin.dispatchAwait({\n type: \"O\",\n goal: `[PEER REQUEST from ${peerId}] ${text}`,\n title: `peer:${peerId}`,\n source: \"peer\",\n timeoutMs,\n });\n\n const response = result || \"No response\";\n logDebug(TAG, `<- ${peerId}/${sessionId}: ${response.slice(0, 100)}`);\n return response;\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;AASA;AAEA,IAAM,MAAM;AAEL,IAAM,kBAAN,MAAiD;AAAA,EAC7C,OAAO;AAAA,EACP,eAAqC,EAAE,OAAO,OAAO,WAAW,OAAO,QAAQ,OAAO,SAAS,MAAM;AAAA,EACrG,oBAAoB;AAAA,EAE7B,MAAM,QAAuB;AAC3B,YAAQ,KAAK,4BAA4B;AAAA,EAC3C;AAAA,EAEA,OAAa;AAAA,EAAC;AAAA,EAEd,UAAU,MAA+B;AACvC,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,YAAY,YAAoB,OAAe,OAA+C;AAClG,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,MAAwB;AACpC,WAAO,CAAC,IAAI;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,QAAgB,WAAmB,MAAc,YAAY,KAA0B;AAC7G,UAAM,EAAE,KAAK,IAAI,MAAM,OAAO,oBAA0B;AAExD,aAAS,KAAK,MAAM,MAAM,IAAI,SAAS,KAAK,KAAK,MAAM,GAAG,GAAG,CAAC,EAAE;AAEhE,UAAM,EAAE,OAAO,IAAI,MAAM,KAAK,cAAc;AAAA,MAC1C,MAAM;AAAA,MACN,MAAM,sBAAsB,MAAM,KAAK,IAAI;AAAA,MAC3C,OAAO,QAAQ,MAAM;AAAA,MACrB,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAED,UAAM,WAAW,UAAU;AAC3B,aAAS,KAAK,MAAM,MAAM,IAAI,SAAS,KAAK,SAAS,MAAM,GAAG,GAAG,CAAC,EAAE;AACpE,WAAO;AAAA,EACT;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,14 +4,15 @@ import {
|
|
|
4
4
|
checkPeerPostLimit,
|
|
5
5
|
checkRateLimit,
|
|
6
6
|
init_agent_api_rate_limit
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-JRGEEGZF.js";
|
|
8
|
+
import "./chunk-BWJ37KMW.js";
|
|
9
|
+
import "./chunk-6S3G6GPO.js";
|
|
10
|
+
import "./chunk-7XXISOHU.js";
|
|
11
|
+
import "./chunk-2BXXQG7P.js";
|
|
11
12
|
import "./chunk-7K2YZTLD.js";
|
|
12
13
|
init_agent_api_rate_limit();
|
|
13
14
|
export {
|
|
14
15
|
checkPeerPostLimit,
|
|
15
16
|
checkRateLimit
|
|
16
17
|
};
|
|
17
|
-
//# sourceMappingURL=agent-api-rate-limit-
|
|
18
|
+
//# sourceMappingURL=agent-api-rate-limit-VENFGOAD.js.map
|
|
@@ -3,17 +3,18 @@
|
|
|
3
3
|
import {
|
|
4
4
|
createAgentTransport,
|
|
5
5
|
createSubagentTransport
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-76YN7O3U.js";
|
|
7
|
+
import "./chunk-YWHJJHJ2.js";
|
|
8
|
+
import "./chunk-ZKMKAO75.js";
|
|
9
9
|
import "./chunk-N5KN3LGD.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-BWJ37KMW.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
|
createAgentTransport,
|
|
17
18
|
createSubagentTransport
|
|
18
19
|
};
|
|
19
|
-
//# sourceMappingURL=agent-registry-
|
|
20
|
+
//# sourceMappingURL=agent-registry-DL7UT272.js.map
|
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
makeLocalBuildSource,
|
|
5
|
+
makeNpmSource,
|
|
6
|
+
syncSrcRepos
|
|
7
|
+
} from "./chunk-MJACYH7A.js";
|
|
8
|
+
import {
|
|
9
|
+
cleanStaleStaging
|
|
10
|
+
} from "./chunk-QJPDBJDP.js";
|
|
11
|
+
import {
|
|
12
|
+
packagePaths
|
|
13
|
+
} from "./chunk-2BXXQG7P.js";
|
|
14
|
+
import "./chunk-7K2YZTLD.js";
|
|
15
|
+
|
|
16
|
+
// src/cli/bootstrap.ts
|
|
17
|
+
import { join } from "node:path";
|
|
18
|
+
import { spawnSync } from "node:child_process";
|
|
19
|
+
async function bootstrap(opts) {
|
|
20
|
+
const { channel } = opts;
|
|
21
|
+
const paths = packagePaths("abtars");
|
|
22
|
+
const srcDir = join(paths.releasesDir, "src");
|
|
23
|
+
const repoRoot = join(srcDir, "abtars");
|
|
24
|
+
cleanStaleStaging(paths.appStaging);
|
|
25
|
+
let staged;
|
|
26
|
+
if (channel === "dev") {
|
|
27
|
+
try {
|
|
28
|
+
syncSrcRepos(srcDir, ["abtars"]);
|
|
29
|
+
} catch {
|
|
30
|
+
return 1;
|
|
31
|
+
}
|
|
32
|
+
const source = makeLocalBuildSource({ repoRoot, allowStale: true });
|
|
33
|
+
staged = await source.prepare({ stagingDir: paths.appStaging, home: paths.home, allowStale: true });
|
|
34
|
+
} else {
|
|
35
|
+
const source = makeNpmSource("abtars", channel === "alpha" ? "alpha" : "latest");
|
|
36
|
+
staged = await source.prepare({ stagingDir: paths.appStaging, home: paths.home, allowStale: true });
|
|
37
|
+
}
|
|
38
|
+
process.stdout.write(`\u2713 obtained ${staged.version}
|
|
39
|
+
`);
|
|
40
|
+
const freshCli = join(staged.stagedPath, "bundle", "abtars-cli.js");
|
|
41
|
+
const args = [
|
|
42
|
+
freshCli,
|
|
43
|
+
"__deploy",
|
|
44
|
+
"--staged",
|
|
45
|
+
staged.stagedPath,
|
|
46
|
+
"--version",
|
|
47
|
+
staged.version,
|
|
48
|
+
"--channel",
|
|
49
|
+
channel,
|
|
50
|
+
"--repo-root",
|
|
51
|
+
repoRoot
|
|
52
|
+
];
|
|
53
|
+
if (staged.commit) args.push("--commit", staged.commit);
|
|
54
|
+
if (staged.branch) args.push("--branch", staged.branch);
|
|
55
|
+
if (staged.packageLockHash) args.push("--package-lock-hash", staged.packageLockHash);
|
|
56
|
+
const r = spawnSync("node", args, { stdio: "inherit" });
|
|
57
|
+
return r.status ?? 1;
|
|
58
|
+
}
|
|
59
|
+
export {
|
|
60
|
+
bootstrap
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=bootstrap-V5MROD3X.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli/bootstrap.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * bootstrap.ts (#1237) \u2014 the STABLE, old-code surface of `abtars update`.\n *\n * Role: OBTAIN fresh code only (fail-safe \u2014 nothing is swapped here), then hand\n * off to the freshly-staged `__deploy` which performs activation. A bug in\n * activation is self-healing: the next update fetches the fixed __deploy and\n * runs it. Only this file (obtain) runs as old code, and its failure mode is\n * safe-abort (the running release keeps serving).\n *\n * Keep this minimal: reuse the existing obtain primitives (syncSrcRepos +\n * UpdateSource.prepare). No imports from components/*, no business logic, no\n * activation logic. #1243: abmind is no longer obtained here \u2014 it ships\n * separately and is discovered at runtime.\n */\nimport { join } from \"node:path\";\nimport { spawnSync } from \"node:child_process\";\nimport { cleanStaleStaging, packagePaths } from \"./deploy-lib/index.js\";\nimport { syncSrcRepos } from \"./deploy-lib/deploy.js\";\nimport { makeLocalBuildSource } from \"./update-sources/dev.js\";\nimport { makeNpmSource } from \"./update-sources/npm.js\";\nimport type { SourceName, StagedRelease } from \"./update-sources/types.js\";\n\nexport interface BootstrapOptions {\n readonly channel: SourceName;\n}\n\nexport async function bootstrap(opts: BootstrapOptions): Promise<number> {\n const { channel } = opts;\n const paths = packagePaths(\"abtars\");\n const srcDir = join(paths.releasesDir, \"src\");\n const repoRoot = join(srcDir, \"abtars\");\n\n // \u2500\u2500 Obtain (fail-safe) \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 cleanStaleStaging(paths.appStaging);\n let staged: StagedRelease;\n if (channel === \"dev\") {\n try { syncSrcRepos(srcDir, [\"abtars\"]); } catch { return 1; }\n const source = makeLocalBuildSource({ repoRoot, allowStale: true });\n staged = await source.prepare({ stagingDir: paths.appStaging, home: paths.home, allowStale: true });\n } else {\n const source = makeNpmSource(\"abtars\", channel === \"alpha\" ? \"alpha\" : \"latest\");\n staged = await source.prepare({ stagingDir: paths.appStaging, home: paths.home, allowStale: true });\n }\n process.stdout.write(`\u2713 obtained ${staged.version}\\n`);\n\n // \u2500\u2500 Hand off to FRESH __deploy (runs the just-staged bundle) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Detach (when needed) is the caller's concern: the /update bridge handler\n // already spawns this whole invocation detached+unref. So we run __deploy\n // synchronously and return its exit code; a terminal user sees the result.\n const freshCli = join(staged.stagedPath, \"bundle\", \"abtars-cli.js\");\n const args = [\n freshCli, \"__deploy\",\n \"--staged\", staged.stagedPath,\n \"--version\", staged.version,\n \"--channel\", channel,\n \"--repo-root\", repoRoot,\n ];\n if (staged.commit) args.push(\"--commit\", staged.commit);\n if (staged.branch) args.push(\"--branch\", staged.branch);\n if (staged.packageLockHash) args.push(\"--package-lock-hash\", staged.packageLockHash);\n\n const r = spawnSync(\"node\", args, { stdio: \"inherit\" });\n return r.status ?? 1;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;AAcA,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAW1B,eAAsB,UAAU,MAAyC;AACvE,QAAM,EAAE,QAAQ,IAAI;AACpB,QAAM,QAAQ,aAAa,QAAQ;AACnC,QAAM,SAAS,KAAK,MAAM,aAAa,KAAK;AAC5C,QAAM,WAAW,KAAK,QAAQ,QAAQ;AAGtC,oBAAkB,MAAM,UAAU;AAClC,MAAI;AACJ,MAAI,YAAY,OAAO;AACrB,QAAI;AAAE,mBAAa,QAAQ,CAAC,QAAQ,CAAC;AAAA,IAAG,QAAQ;AAAE,aAAO;AAAA,IAAG;AAC5D,UAAM,SAAS,qBAAqB,EAAE,UAAU,YAAY,KAAK,CAAC;AAClE,aAAS,MAAM,OAAO,QAAQ,EAAE,YAAY,MAAM,YAAY,MAAM,MAAM,MAAM,YAAY,KAAK,CAAC;AAAA,EACpG,OAAO;AACL,UAAM,SAAS,cAAc,UAAU,YAAY,UAAU,UAAU,QAAQ;AAC/E,aAAS,MAAM,OAAO,QAAQ,EAAE,YAAY,MAAM,YAAY,MAAM,MAAM,MAAM,YAAY,KAAK,CAAC;AAAA,EACpG;AACA,UAAQ,OAAO,MAAM,mBAAc,OAAO,OAAO;AAAA,CAAI;AAMrD,QAAM,WAAW,KAAK,OAAO,YAAY,UAAU,eAAe;AAClE,QAAM,OAAO;AAAA,IACX;AAAA,IAAU;AAAA,IACV;AAAA,IAAY,OAAO;AAAA,IACnB;AAAA,IAAa,OAAO;AAAA,IACpB;AAAA,IAAa;AAAA,IACb;AAAA,IAAe;AAAA,EACjB;AACA,MAAI,OAAO,OAAQ,MAAK,KAAK,YAAY,OAAO,MAAM;AACtD,MAAI,OAAO,OAAQ,MAAK,KAAK,YAAY,OAAO,MAAM;AACtD,MAAI,OAAO,gBAAiB,MAAK,KAAK,uBAAuB,OAAO,eAAe;AAEnF,QAAM,IAAI,UAAU,QAAQ,MAAM,EAAE,OAAO,UAAU,CAAC;AACtD,SAAO,EAAE,UAAU;AACrB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -18,11 +18,12 @@ import {
|
|
|
18
18
|
writeRestartReason,
|
|
19
19
|
writeRestartRequested,
|
|
20
20
|
writeSleepStatus
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-ZKMKAO75.js";
|
|
22
22
|
import "./chunk-N5KN3LGD.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-W2PSVV2T.js";
|
|
24
|
+
import "./chunk-6S3G6GPO.js";
|
|
25
|
+
import "./chunk-7XXISOHU.js";
|
|
26
|
+
import "./chunk-2BXXQG7P.js";
|
|
26
27
|
import "./chunk-7K2YZTLD.js";
|
|
27
28
|
init_bridge_lock_transport();
|
|
28
29
|
export {
|
|
@@ -43,4 +44,4 @@ export {
|
|
|
43
44
|
writeRestartRequested,
|
|
44
45
|
writeSleepStatus
|
|
45
46
|
};
|
|
46
|
-
//# sourceMappingURL=bridge-lock-transport-
|
|
47
|
+
//# sourceMappingURL=bridge-lock-transport-BJAMHMXW.js.map
|
|
@@ -2,14 +2,15 @@
|
|
|
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
|
register
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-6VTHSN4V.js";
|
|
6
|
+
import "./chunk-OOUCUCUW.js";
|
|
7
|
+
import "./chunk-BWJ37KMW.js";
|
|
8
|
+
import "./chunk-W2PSVV2T.js";
|
|
9
|
+
import "./chunk-6S3G6GPO.js";
|
|
10
|
+
import "./chunk-7XXISOHU.js";
|
|
11
|
+
import "./chunk-2BXXQG7P.js";
|
|
11
12
|
import "./chunk-7K2YZTLD.js";
|
|
12
13
|
export {
|
|
13
14
|
register
|
|
14
15
|
};
|
|
15
|
-
//# sourceMappingURL=browser-
|
|
16
|
+
//# sourceMappingURL=browser-PT54UWSW.js.map
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
import {
|
|
4
4
|
init_logger,
|
|
5
5
|
logWarn
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6S3G6GPO.js";
|
|
7
7
|
import {
|
|
8
8
|
abtarsHome,
|
|
9
9
|
init_paths
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-7XXISOHU.js";
|
|
11
|
+
import "./chunk-2BXXQG7P.js";
|
|
11
12
|
import "./chunk-7K2YZTLD.js";
|
|
12
13
|
|
|
13
14
|
// src/components/budget.ts
|
|
@@ -67,7 +68,7 @@ async function sendBudgetNotification(agent, reason) {
|
|
|
67
68
|
const msg = `x Budget: ${agent} hit daily ${reason} limit (${detail}). Paused until midnight.`;
|
|
68
69
|
logWarn("budget", msg);
|
|
69
70
|
try {
|
|
70
|
-
const { sendToMainChat } = await import("./main-chat-
|
|
71
|
+
const { sendToMainChat } = await import("./main-chat-EID5Y6H2.js");
|
|
71
72
|
await sendToMainChat({}, msg);
|
|
72
73
|
} catch {
|
|
73
74
|
}
|
|
@@ -88,4 +89,4 @@ export {
|
|
|
88
89
|
incrementBudgetCounter,
|
|
89
90
|
sendBudgetNotification
|
|
90
91
|
};
|
|
91
|
-
//# sourceMappingURL=budget-
|
|
92
|
+
//# sourceMappingURL=budget-QNK6IIT6.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/components/budget.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * budget.ts \u2014 Daily agent token/call budget enforcement.\n * Config: ~/.abtars/config/budget.json\n */\nimport { readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { abtarsHome } from \"../paths.js\";\nimport { logWarn } from \"./logger.js\";\n\ninterface AgentBudget { tokens?: number; calls?: number }\ninterface DailyBudget { [agent: string]: AgentBudget }\ninterface Counter { tokens: number; calls: number }\n\nconst counters = new Map<string, Counter>();\nlet lastResetDate = \"\";\nconst lastNotifiedAt = new Map<string, number>();\n\nfunction ensureToday(): void {\n const today = new Date().toISOString().slice(0, 10);\n if (today !== lastResetDate) { counters.clear(); lastResetDate = today; }\n}\n\nfunction loadBudget(): DailyBudget | null {\n try {\n const raw = readFileSync(join(abtarsHome(), \"config\", \"budget.json\"), \"utf-8\");\n const parsed = JSON.parse(raw);\n return parsed?.daily ?? null;\n } catch { return null; }\n}\n\nexport function incrementBudgetCounter(agent: string, tokens: number): void {\n if (!agent) return;\n ensureToday();\n const c = counters.get(agent) ?? { tokens: 0, calls: 0 };\n c.tokens += tokens;\n c.calls += 1;\n counters.set(agent, c);\n}\n\nexport function checkBudget(agent: string): { allowed: boolean; remaining: { tokens: number; calls: number }; limit: AgentBudget } {\n const budget = loadBudget();\n if (!budget || !budget[agent]) return { allowed: true, remaining: { tokens: Infinity, calls: Infinity }, limit: {} };\n ensureToday();\n const used = counters.get(agent) ?? { tokens: 0, calls: 0 };\n const limit = budget[agent];\n const tokenOk = !limit.tokens || used.tokens < limit.tokens * 1000;\n const callsOk = !limit.calls || used.calls < limit.calls;\n return {\n allowed: tokenOk && callsOk,\n remaining: { tokens: (limit.tokens ?? Infinity) * 1000 - used.tokens, calls: (limit.calls ?? Infinity) - used.calls },\n limit,\n };\n}\n\nexport async function sendBudgetNotification(agent: string, reason: string): Promise<void> {\n const now = Date.now();\n const last = lastNotifiedAt.get(agent) ?? 0;\n if (now - last < 3_600_000) return; // max 1 per hour per agent\n lastNotifiedAt.set(agent, now);\n const used = counters.get(agent) ?? { tokens: 0, calls: 0 };\n const limit = loadBudget()?.[agent];\n const detail = reason === \"token\"\n ? `${Math.round(used.tokens / 1000)}K/${limit?.tokens ?? \"?\"}K tokens`\n : `${used.calls}/${limit?.calls ?? \"?\"} calls`;\n const msg = `x Budget: ${agent} hit daily ${reason} limit (${detail}). Paused until midnight.`;\n logWarn(\"budget\", msg);\n try {\n const { sendToMainChat } = await import(\"./main-chat.js\");\n await sendToMainChat({}, msg);\n } catch { /* best effort */ }\n}\n\nexport function getBudgetStatus(): Array<{ agent: string; used: Counter; limit: AgentBudget }> {\n const budget = loadBudget();\n if (!budget) return [];\n ensureToday();\n return Object.entries(budget).map(([agent, limit]) => ({\n agent,\n used: counters.get(agent) ?? { tokens: 0, calls: 0 },\n limit,\n }));\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;AAMA;AACA;AAHA,SAAS,oBAAoB;AAC7B,SAAS,YAAY;AAQrB,IAAM,WAAW,oBAAI,IAAqB;AAC1C,IAAI,gBAAgB;AACpB,IAAM,iBAAiB,oBAAI,IAAoB;AAE/C,SAAS,cAAoB;AAC3B,QAAM,SAAQ,oBAAI,KAAK,GAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAClD,MAAI,UAAU,eAAe;AAAE,aAAS,MAAM;AAAG,oBAAgB;AAAA,EAAO;AAC1E;AAEA,SAAS,aAAiC;AACxC,MAAI;AACF,UAAM,MAAM,aAAa,KAAK,WAAW,GAAG,UAAU,aAAa,GAAG,OAAO;AAC7E,UAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,WAAO,QAAQ,SAAS;AAAA,EAC1B,QAAQ;AAAE,WAAO;AAAA,EAAM;AACzB;AAEO,SAAS,uBAAuB,OAAe,QAAsB;AAC1E,MAAI,CAAC,MAAO;AACZ,cAAY;AACZ,QAAM,IAAI,SAAS,IAAI,KAAK,KAAK,EAAE,QAAQ,GAAG,OAAO,EAAE;AACvD,IAAE,UAAU;AACZ,IAAE,SAAS;AACX,WAAS,IAAI,OAAO,CAAC;AACvB;AAEO,SAAS,YAAY,OAAuG;AACjI,QAAM,SAAS,WAAW;AAC1B,MAAI,CAAC,UAAU,CAAC,OAAO,KAAK,EAAG,QAAO,EAAE,SAAS,MAAM,WAAW,EAAE,QAAQ,UAAU,OAAO,SAAS,GAAG,OAAO,CAAC,EAAE;AACnH,cAAY;AACZ,QAAM,OAAO,SAAS,IAAI,KAAK,KAAK,EAAE,QAAQ,GAAG,OAAO,EAAE;AAC1D,QAAM,QAAQ,OAAO,KAAK;AAC1B,QAAM,UAAU,CAAC,MAAM,UAAU,KAAK,SAAS,MAAM,SAAS;AAC9D,QAAM,UAAU,CAAC,MAAM,SAAS,KAAK,QAAQ,MAAM;AACnD,SAAO;AAAA,IACL,SAAS,WAAW;AAAA,IACpB,WAAW,EAAE,SAAS,MAAM,UAAU,YAAY,MAAO,KAAK,QAAQ,QAAQ,MAAM,SAAS,YAAY,KAAK,MAAM;AAAA,IACpH;AAAA,EACF;AACF;AAEA,eAAsB,uBAAuB,OAAe,QAA+B;AACzF,QAAM,MAAM,KAAK,IAAI;AACrB,QAAM,OAAO,eAAe,IAAI,KAAK,KAAK;AAC1C,MAAI,MAAM,OAAO,KAAW;AAC5B,iBAAe,IAAI,OAAO,GAAG;AAC7B,QAAM,OAAO,SAAS,IAAI,KAAK,KAAK,EAAE,QAAQ,GAAG,OAAO,EAAE;AAC1D,QAAM,QAAQ,WAAW,IAAI,KAAK;AAClC,QAAM,SAAS,WAAW,UACtB,GAAG,KAAK,MAAM,KAAK,SAAS,GAAI,CAAC,KAAK,OAAO,UAAU,GAAG,aAC1D,GAAG,KAAK,KAAK,IAAI,OAAO,SAAS,GAAG;AACxC,QAAM,MAAM,aAAa,KAAK,cAAc,MAAM,WAAW,MAAM;AACnE,UAAQ,UAAU,GAAG;AACrB,MAAI;AACF,UAAM,EAAE,eAAe,IAAI,MAAM,OAAO,yBAAgB;AACxD,UAAM,eAAe,CAAC,GAAG,GAAG;AAAA,EAC9B,QAAQ;AAAA,EAAoB;AAC9B;AAEO,SAAS,kBAA+E;AAC7F,QAAM,SAAS,WAAW;AAC1B,MAAI,CAAC,OAAQ,QAAO,CAAC;AACrB,cAAY;AACZ,SAAO,OAAO,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO;AAAA,IACrD;AAAA,IACA,MAAM,SAAS,IAAI,KAAK,KAAK,EAAE,QAAQ,GAAG,OAAO,EAAE;AAAA,IACnD;AAAA,EACF,EAAE;AACJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,15 +4,16 @@ import {
|
|
|
4
4
|
createCapabilityApi,
|
|
5
5
|
createCapabilityRegistry,
|
|
6
6
|
discoverCapabilities
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-YI2KSYB4.js";
|
|
8
|
+
import "./chunk-BWJ37KMW.js";
|
|
9
|
+
import "./chunk-W2PSVV2T.js";
|
|
10
|
+
import "./chunk-6S3G6GPO.js";
|
|
11
|
+
import "./chunk-7XXISOHU.js";
|
|
12
|
+
import "./chunk-2BXXQG7P.js";
|
|
12
13
|
import "./chunk-7K2YZTLD.js";
|
|
13
14
|
export {
|
|
14
15
|
createCapabilityApi,
|
|
15
16
|
createCapabilityRegistry,
|
|
16
17
|
discoverCapabilities
|
|
17
18
|
};
|
|
18
|
-
//# sourceMappingURL=capability-
|
|
19
|
+
//# sourceMappingURL=capability-EKPGHQIO.js.map
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
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
|
+
import {
|
|
4
|
+
__esm
|
|
5
|
+
} from "./chunk-7K2YZTLD.js";
|
|
3
6
|
|
|
4
7
|
// src/cli/deploy-lib/paths.ts
|
|
5
8
|
import { homedir } from "node:os";
|
|
@@ -13,12 +16,15 @@ function resolveAbmindHome() {
|
|
|
13
16
|
function resolvePackageHome(pkg) {
|
|
14
17
|
return pkg === "abtars" ? resolveAbtarsHome() : resolveAbmindHome();
|
|
15
18
|
}
|
|
19
|
+
function resolveReleasesDir() {
|
|
20
|
+
return process.env["ABTARS_RELEASES"] ?? join(homedir(), ".abtars-releases");
|
|
21
|
+
}
|
|
16
22
|
function resolveUserBinDir() {
|
|
17
|
-
return join(homedir(), ".local", "bin");
|
|
23
|
+
return process.env["ABTARS_BIN"] ?? join(homedir(), ".local", "bin");
|
|
18
24
|
}
|
|
19
25
|
function packagePaths(pkg) {
|
|
20
26
|
const home = resolvePackageHome(pkg);
|
|
21
|
-
const releasesDir =
|
|
27
|
+
const releasesDir = resolveReleasesDir();
|
|
22
28
|
return {
|
|
23
29
|
home,
|
|
24
30
|
config: join(home, "config"),
|
|
@@ -41,12 +47,18 @@ function packagePaths(pkg) {
|
|
|
41
47
|
current: join(home, "current")
|
|
42
48
|
};
|
|
43
49
|
}
|
|
50
|
+
var init_paths = __esm({
|
|
51
|
+
"src/cli/deploy-lib/paths.ts"() {
|
|
52
|
+
}
|
|
53
|
+
});
|
|
44
54
|
|
|
45
55
|
export {
|
|
46
56
|
resolveAbtarsHome,
|
|
47
57
|
resolveAbmindHome,
|
|
48
58
|
resolvePackageHome,
|
|
59
|
+
resolveReleasesDir,
|
|
49
60
|
resolveUserBinDir,
|
|
50
|
-
packagePaths
|
|
61
|
+
packagePaths,
|
|
62
|
+
init_paths
|
|
51
63
|
};
|
|
52
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-2BXXQG7P.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli/deploy-lib/paths.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Runtime directory resolution for deploy-lib consumers.\n *\n * Rules:\n * - abtars runtime root: $ABTARS_HOME ?? ~/.abtars\n * - abmind runtime root: $ABMIND_HOME ?? ~/.abmind\n * - releases dir: $ABTARS_RELEASES ?? ~/.abtars-releases\n * - user bin dir: $ABTARS_BIN ?? ~/.local/bin\n *\n * All callers use these resolvers \u2014 never hardcode paths. Required by\n * plan #158 v7 (Ag2 round-2 nit): cross-repo manifest reads must respect\n * env-var overrides, not assume default locations.\n */\n\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\n\nexport type PackageName = 'abtars' | 'abmind';\n\nexport function resolveAbtarsHome(): string {\n return process.env['ABTARS_HOME'] ?? join(homedir(), '.abtars');\n}\n\nexport function resolveAbmindHome(): string {\n return process.env['ABMIND_HOME'] ?? join(homedir(), '.abmind');\n}\n\nexport function resolvePackageHome(pkg: PackageName): string {\n return pkg === 'abtars' ? resolveAbtarsHome() : resolveAbmindHome();\n}\n\nexport function resolveReleasesDir(): string {\n return process.env['ABTARS_RELEASES'] ?? join(homedir(), '.abtars-releases');\n}\n\nexport function resolveUserBinDir(): string {\n return process.env['ABTARS_BIN'] ?? join(homedir(), '.local', 'bin');\n}\n\nexport interface PackagePaths {\n readonly home: string;\n readonly config: string;\n readonly app: string;\n readonly appPrev: string;\n readonly appPrev1: string;\n readonly appPrev2: string;\n readonly appPrev3: string;\n readonly appStaging: string;\n readonly bin: string;\n readonly manifest: string;\n readonly lock: string;\n // #1089: releases dir layout\n readonly releasesDir: string;\n readonly releasesCurrentLink: string;\n readonly releasesHistory: string;\n readonly releasesSrc: string;\n // Legacy \u2014 kept for migration detection only. Remove after all hosts migrated.\n readonly releases: string;\n readonly current: string;\n}\n\nexport function packagePaths(pkg: PackageName): PackagePaths {\n const home = resolvePackageHome(pkg);\n const releasesDir = resolveReleasesDir();\n return {\n home,\n config: join(home, 'config'),\n app: join(home, 'app'),\n appPrev: join(home, 'app.prev'),\n appPrev1: join(home, 'app.prev.1'),\n appPrev2: join(home, 'app.prev.2'),\n appPrev3: join(home, 'app.prev.3'),\n appStaging: join(home, 'app.staging'),\n bin: resolveUserBinDir(),\n manifest: join(home, 'manifest.json'),\n lock: join(home, '.update.lock'),\n // #1089\n releasesDir,\n releasesCurrentLink: join(releasesDir, 'current'),\n releasesHistory: join(releasesDir, 'history.json'),\n releasesSrc: join(releasesDir, 'src'),\n // Legacy\n releases: join(home, 'releases'),\n current: join(home, 'current'),\n };\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAcA,SAAS,eAAe;AACxB,SAAS,YAAY;AAId,SAAS,oBAA4B;AAC1C,SAAO,QAAQ,IAAI,aAAa,KAAK,KAAK,QAAQ,GAAG,SAAS;AAChE;AAEO,SAAS,oBAA4B;AAC1C,SAAO,QAAQ,IAAI,aAAa,KAAK,KAAK,QAAQ,GAAG,SAAS;AAChE;AAEO,SAAS,mBAAmB,KAA0B;AAC3D,SAAO,QAAQ,WAAW,kBAAkB,IAAI,kBAAkB;AACpE;AAEO,SAAS,qBAA6B;AAC3C,SAAO,QAAQ,IAAI,iBAAiB,KAAK,KAAK,QAAQ,GAAG,kBAAkB;AAC7E;AAEO,SAAS,oBAA4B;AAC1C,SAAO,QAAQ,IAAI,YAAY,KAAK,KAAK,QAAQ,GAAG,UAAU,KAAK;AACrE;AAwBO,SAAS,aAAa,KAAgC;AAC3D,QAAM,OAAO,mBAAmB,GAAG;AACnC,QAAM,cAAc,mBAAmB;AACvC,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,KAAK,MAAM,QAAQ;AAAA,IAC3B,KAAK,KAAK,MAAM,KAAK;AAAA,IACrB,SAAS,KAAK,MAAM,UAAU;AAAA,IAC9B,UAAU,KAAK,MAAM,YAAY;AAAA,IACjC,UAAU,KAAK,MAAM,YAAY;AAAA,IACjC,UAAU,KAAK,MAAM,YAAY;AAAA,IACjC,YAAY,KAAK,MAAM,aAAa;AAAA,IACpC,KAAK,kBAAkB;AAAA,IACvB,UAAU,KAAK,MAAM,eAAe;AAAA,IACpC,MAAM,KAAK,MAAM,cAAc;AAAA;AAAA,IAE/B;AAAA,IACA,qBAAqB,KAAK,aAAa,SAAS;AAAA,IAChD,iBAAiB,KAAK,aAAa,cAAc;AAAA,IACjD,aAAa,KAAK,aAAa,KAAK;AAAA;AAAA,IAEpC,UAAU,KAAK,MAAM,UAAU;AAAA,IAC/B,SAAS,KAAK,MAAM,SAAS;AAAA,EAC/B;AACF;AArFA;AAAA;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
init_logger,
|
|
5
5
|
logWarn
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6S3G6GPO.js";
|
|
7
7
|
import {
|
|
8
8
|
__esm
|
|
9
9
|
} from "./chunk-7K2YZTLD.js";
|
|
@@ -65,4 +65,4 @@ export {
|
|
|
65
65
|
PEERS_SCHEMA,
|
|
66
66
|
init_config_validator
|
|
67
67
|
};
|
|
68
|
-
//# sourceMappingURL=chunk-
|
|
68
|
+
//# sourceMappingURL=chunk-2ZD7VQRW.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/crypto.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * crypto.ts \u2014 AES-256-GCM encryption for abtars secrets.\n * Shared utility (same logic in abmind). See shared-utilities.md.\n *\n * Key: ~/.abtars/secret/abtars.key (32-byte hex, passphrase-derived via scrypt).\n * Purpose derivation: HKDF(master, \"abtars-secrets-v1\") for file encryption.\n */\n\nimport { createDecipheriv, createCipheriv, randomBytes, hkdfSync, scryptSync, createHash } from \"node:crypto\";\nimport { existsSync, readFileSync, writeFileSync, mkdirSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\n\nconst ALGO = \"aes-256-gcm\";\nconst IV_LEN = 12;\nconst TAG_LEN = 16;\nconst PURPOSE = \"abtars-secrets-v1\";\n\n/** Load master key from file. Returns null if file doesn't exist. */\nexport function loadKey(keyPath: string): Buffer | null {\n try {\n if (!existsSync(keyPath)) return null;\n const hex = readFileSync(keyPath, \"utf-8\").trim();\n if (hex.length !== 64) return null;\n return Buffer.from(hex, \"hex\");\n } catch { return null; }\n}\n\n/** Derive purpose-specific key from master via HKDF. */\nexport function deriveKey(master: Buffer, purpose: string = PURPOSE): Buffer {\n return Buffer.from(hkdfSync(\"sha256\", master, \"\", purpose, 32));\n}\n\n/** Derive master key from passphrase + username (same algorithm as abmind). */\nexport function deriveFromPassphrase(passphrase: string, username: string): Buffer {\n const salt = createHash(\"sha256\").update(\"abtars:\" + username).digest().subarray(0, 16);\n return scryptSync(passphrase, salt, 32, { N: 16384, r: 8, p: 1 });\n}\n\n/** Encrypt plaintext. Returns \"ENC:\" + base64(version + iv + ciphertext + tag). */\nexport function encrypt(plaintext: string, key: Buffer): string {\n const iv = randomBytes(IV_LEN);\n const c = createCipheriv(ALGO, key, iv);\n const enc = Buffer.concat([c.update(plaintext, \"utf-8\"), c.final()]);\n return \"ENC:\" + Buffer.concat([Buffer.from([0x01]), iv, enc, c.getAuthTag()]).toString(\"base64\");\n}\n\n/** Decrypt \"ENC:...\" string. Returns plaintext or null on failure. */\nexport function decrypt(raw: string, key: Buffer): string | null {\n try {\n const buf = Buffer.from(raw.slice(4), \"base64\");\n const iv = buf.subarray(1, 1 + IV_LEN);\n const tag = buf.subarray(buf.length - TAG_LEN);\n const ct = buf.subarray(1 + IV_LEN, buf.length - TAG_LEN);\n const d = createDecipheriv(ALGO, key, iv);\n d.setAuthTag(tag);\n return d.update(ct, undefined, \"utf-8\") + d.final(\"utf-8\");\n } catch { return null; }\n}\n\n/** Write key to file (hex, mode 600). Creates parent dir if needed. */\nexport function writeKeyFile(keyPath: string, master: Buffer): void {\n mkdirSync(dirname(keyPath), { recursive: true });\n writeFileSync(keyPath, master.toString(\"hex\"), { mode: 0o600 });\n}\n\nconst VERIFY_PLAINTEXT = \"abtars-verify\";\n\n/** Create key.verify file next to the key (encrypt known plaintext). */\nexport function writeKeyVerify(keyPath: string, key: Buffer): void {\n const iv = randomBytes(IV_LEN);\n const cipher = createCipheriv(ALGO, key, iv);\n const enc = Buffer.concat([cipher.update(VERIFY_PLAINTEXT, \"utf-8\"), cipher.final()]);\n const blob = Buffer.concat([iv, enc, cipher.getAuthTag()]).toString(\"base64\");\n writeFileSync(join(dirname(keyPath), \"key.verify\"), blob, { mode: 0o600 });\n}\n\n/** Validate a key against key.verify. Returns true if key is correct or no verify file exists. */\nexport function validateKey(keyPath: string, key: Buffer): boolean {\n const verifyPath = join(dirname(keyPath), \"key.verify\");\n if (!existsSync(verifyPath)) return true; // no verify file = skip validation\n try {\n const blob = readFileSync(verifyPath, \"utf-8\").trim();\n const buf = Buffer.from(blob, \"base64\");\n const iv = buf.subarray(0, IV_LEN);\n const tag = buf.subarray(buf.length - TAG_LEN);\n const ct = buf.subarray(IV_LEN, buf.length - TAG_LEN);\n const d = createDecipheriv(ALGO, key, iv);\n d.setAuthTag(tag);\n const result = d.update(ct, undefined, \"utf-8\") + d.final(\"utf-8\");\n return result === VERIFY_PLAINTEXT;\n } catch { return false; }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
import {
|
|
4
4
|
getAlivePeers,
|
|
5
5
|
init_gossip
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-XZ4ZBDM5.js";
|
|
7
7
|
import {
|
|
8
8
|
init_peer_config,
|
|
9
9
|
loadPeerConfig
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-X7DLKIQM.js";
|
|
11
11
|
import {
|
|
12
12
|
init_logger,
|
|
13
13
|
logDebug,
|
|
14
14
|
logInfo,
|
|
15
15
|
logTrace
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-6S3G6GPO.js";
|
|
17
17
|
import {
|
|
18
18
|
__esm
|
|
19
19
|
} from "./chunk-7K2YZTLD.js";
|
|
@@ -38,14 +38,14 @@ var init_http_transport = __esm({
|
|
|
38
38
|
/** Init WS connections for all ws-outbound peers. Call on boot. */
|
|
39
39
|
async initWsConnections() {
|
|
40
40
|
const config = loadPeerConfig();
|
|
41
|
-
const { WsPeerClient: Client } = await import("./ws-peer-client-
|
|
41
|
+
const { WsPeerClient: Client } = await import("./ws-peer-client-G5QHOF6K.js");
|
|
42
42
|
for (const [name, entry] of Object.entries(config.peers)) {
|
|
43
43
|
if (entry.transport !== "ws-outbound") continue;
|
|
44
44
|
const client = new Client(name, entry);
|
|
45
45
|
client.onPush((method, payload) => {
|
|
46
46
|
if (method === "callback") {
|
|
47
47
|
const p = payload;
|
|
48
|
-
import("./kanban-board-
|
|
48
|
+
import("./kanban-board-4AI5Z6B5.js").then(({ kanbanList, kanbanComplete, kanbanFail, kanbanAddTokens }) => {
|
|
49
49
|
const cards = kanbanList("running", "status").filter((c) => {
|
|
50
50
|
if (c.type !== "remote") return false;
|
|
51
51
|
try {
|
|
@@ -58,14 +58,14 @@ var init_http_transport = __esm({
|
|
|
58
58
|
if (!cards.length) return;
|
|
59
59
|
const card = cards[0];
|
|
60
60
|
if (p.tokens_used) kanbanAddTokens(card.id, p.tokens_used);
|
|
61
|
-
if (p.status === "done") kanbanComplete(card.id,
|
|
61
|
+
if (p.status === "done") kanbanComplete(card.id, null, p.result_summary ?? "");
|
|
62
62
|
else kanbanFail(card.id, p.error ?? "remote failure");
|
|
63
|
-
import("./nerve-
|
|
63
|
+
import("./nerve-TC34H4EL.js").then(({ nerve }) => nerve.emit(p.status === "done" ? "card:done" : "card:failed", card.id));
|
|
64
64
|
}).catch(() => {
|
|
65
65
|
});
|
|
66
66
|
} else if (method === "channel") {
|
|
67
67
|
const p = payload;
|
|
68
|
-
import("./kanban-channel-
|
|
68
|
+
import("./kanban-channel-JMBYWGWD.js").then(({ channelPost }) => {
|
|
69
69
|
channelPost(p.card_id, p.from_agent, "ALL", p.message);
|
|
70
70
|
}).catch(() => {
|
|
71
71
|
});
|
|
@@ -81,20 +81,12 @@ var init_http_transport = __esm({
|
|
|
81
81
|
hasWsConnection(peer) {
|
|
82
82
|
return this.wsClients.get(peer)?.connected ?? false;
|
|
83
83
|
}
|
|
84
|
-
/** Send via WS if available, otherwise fall back to HTTP. */
|
|
85
|
-
async wsOrHttp(peer, method, payload, httpFallback) {
|
|
86
|
-
const ws = this.wsClients.get(peer);
|
|
87
|
-
if (ws?.connected) {
|
|
88
|
-
return ws.send(method, payload);
|
|
89
|
-
}
|
|
90
|
-
return httpFallback();
|
|
91
|
-
}
|
|
92
84
|
discover() {
|
|
93
85
|
return getAlivePeers();
|
|
94
86
|
}
|
|
95
87
|
async send(peer, message) {
|
|
96
88
|
if (message.type === "ask") {
|
|
97
|
-
const { callPeer } = await import("./peer-client-
|
|
89
|
+
const { callPeer } = await import("./peer-client-WLK5GZQS.js");
|
|
98
90
|
const config = loadPeerConfig();
|
|
99
91
|
return callPeer(peer, message.payload.prompt, config.maxHops);
|
|
100
92
|
}
|
|
@@ -194,7 +186,7 @@ var init_http_transport = __esm({
|
|
|
194
186
|
await this.httpCall(entry, peer, "POST", `/v1/tasks/${cardId}/messages`, JSON.stringify({ from_agent: from, message, created_at: createdAt }));
|
|
195
187
|
}
|
|
196
188
|
async httpCall(entry, peerName, method, path, body) {
|
|
197
|
-
const { mintPeerJwt, signBody, tlsOptions } = await import("./peer-auth-
|
|
189
|
+
const { mintPeerJwt, signBody, tlsOptions } = await import("./peer-auth-VRO3JYL5.js");
|
|
198
190
|
const jwt = mintPeerJwt(peerName);
|
|
199
191
|
const finalBody = body ? await signBody(peerName, body) : void 0;
|
|
200
192
|
const tls = tlsOptions(entry);
|
|
@@ -262,4 +254,4 @@ export {
|
|
|
262
254
|
initPeerTransport,
|
|
263
255
|
init_peer_transport
|
|
264
256
|
};
|
|
265
|
-
//# sourceMappingURL=chunk-
|
|
257
|
+
//# sourceMappingURL=chunk-4IGLXZCC.js.map
|