abtars 0.1.0-alpha.2 → 0.1.0-alpha.21
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/bundle/_registry.generated-KQODGKTQ.js +36 -0
- package/bundle/{_registry.generated-M4WY2MMI.js.map → _registry.generated-KQODGKTQ.js.map} +1 -1
- package/bundle/abtars-browser.js +8 -7
- package/bundle/abtars-browser.js.map +1 -1
- package/bundle/abtars-cli.js +646 -73
- package/bundle/abtars-cli.js.map +4 -4
- package/bundle/abtars-restart.js +7 -6
- package/bundle/abtars-rss.js +2 -1
- package/bundle/abtars-rss.js.map +1 -1
- package/bundle/abtars-task.js +9 -8
- package/bundle/abtars-task.js.map +1 -1
- package/bundle/abtars.js +103 -96
- package/bundle/abtars.js.map +2 -2
- package/bundle/{agent-api-rate-limit-OQNFMXTZ.js → agent-api-rate-limit-7R5TX2F2.js} +7 -6
- package/bundle/{agent-api-rate-limit-OQNFMXTZ.js.map → agent-api-rate-limit-7R5TX2F2.js.map} +1 -1
- package/bundle/agent-registry-5M77ZOMV.js +19 -0
- package/bundle/agent-registry-VJMNIQ5W.js +19 -0
- package/bundle/{anthropic-adapter-2APTH3LA.js → anthropic-adapter-IBY3NPXW.js} +4 -3
- package/bundle/{anthropic-adapter-2APTH3LA.js.map → anthropic-adapter-IBY3NPXW.js.map} +1 -1
- package/bundle/{bridge-lock-transport-4AC2G5G6.js → bridge-lock-transport-HO545SBK.js} +9 -8
- package/bundle/browse-delivery-64GQIUHG.js +18 -0
- package/bundle/browser-EXR5OQGK.js +19 -0
- package/bundle/capability-HIE7UGFU.js +18 -0
- package/bundle/{chunk-BUUVFUPO.js → chunk-2BY6I4P5.js} +5 -4
- package/bundle/{chunk-BUUVFUPO.js.map → chunk-2BY6I4P5.js.map} +1 -1
- package/bundle/{chunk-Y6XAEX2Q.js → chunk-2F6XKG7Y.js} +15 -9
- package/bundle/chunk-2F6XKG7Y.js.map +7 -0
- package/bundle/{chunk-V76TVMCM.js → chunk-3MO2MDXJ.js} +5 -4
- package/bundle/{chunk-V76TVMCM.js.map → chunk-3MO2MDXJ.js.map} +1 -1
- package/bundle/{chunk-6UCRKRWR.js → chunk-6XX4OAAM.js} +22 -21
- package/bundle/chunk-6XX4OAAM.js.map +7 -0
- package/bundle/{chunk-XREWVCUO.js → chunk-7CHLS36W.js} +16 -148
- package/bundle/chunk-7CHLS36W.js.map +7 -0
- package/bundle/{chunk-NWDBD4PA.js → chunk-7K2YZTLD.js} +3 -2
- package/bundle/{chunk-JCJS4ZIB.js → chunk-AQVOAQQI.js} +5 -4
- package/bundle/{chunk-JCJS4ZIB.js.map → chunk-AQVOAQQI.js.map} +1 -1
- package/bundle/chunk-AUQD2PKM.js +136 -0
- package/bundle/chunk-AUQD2PKM.js.map +7 -0
- package/bundle/{chunk-YOCTDKKL.js → chunk-BYDUMHXT.js} +4 -3
- package/bundle/{chunk-YOCTDKKL.js.map → chunk-BYDUMHXT.js.map} +1 -1
- package/bundle/{chunk-RVE2N7FA.js → chunk-CELR236Q.js} +5 -4
- package/bundle/{chunk-RVE2N7FA.js.map → chunk-CELR236Q.js.map} +1 -1
- package/bundle/{chunk-2XU2X4OI.js → chunk-CUQA2AJT.js} +3 -2
- package/bundle/{chunk-2XU2X4OI.js.map → chunk-CUQA2AJT.js.map} +1 -1
- package/bundle/chunk-DMPR5MYT.js +183 -0
- package/bundle/chunk-DMPR5MYT.js.map +7 -0
- package/bundle/{chunk-BHMZ4RCC.js → chunk-DY3R7LDW.js} +55 -54
- package/bundle/{chunk-BHMZ4RCC.js.map → chunk-DY3R7LDW.js.map} +1 -1
- package/bundle/{chunk-AR6GO6YC.js → chunk-ELRAH7VL.js} +5 -4
- package/bundle/{chunk-AR6GO6YC.js.map → chunk-ELRAH7VL.js.map} +1 -1
- package/bundle/{chunk-FMWKEPM7.js → chunk-EX2SRTUE.js} +5 -4
- package/bundle/{chunk-FMWKEPM7.js.map → chunk-EX2SRTUE.js.map} +1 -1
- package/bundle/{chunk-JW6RU47G.js → chunk-FVQGP5YO.js} +8 -7
- package/bundle/{chunk-JW6RU47G.js.map → chunk-FVQGP5YO.js.map} +1 -1
- package/bundle/{chunk-GRNENTPA.js → chunk-G6IXMYIO.js} +4 -3
- package/bundle/{chunk-GRNENTPA.js.map → chunk-G6IXMYIO.js.map} +1 -1
- package/bundle/{chunk-6NR3OHEW.js → chunk-H2RZ4NEJ.js} +6 -5
- package/bundle/{chunk-6NR3OHEW.js.map → chunk-H2RZ4NEJ.js.map} +1 -1
- package/bundle/chunk-HVKJN3AG.js +189 -0
- package/bundle/chunk-HVKJN3AG.js.map +7 -0
- package/bundle/{chunk-265TPOPC.js → chunk-HXJRZWKA.js} +3 -2
- package/bundle/{chunk-265TPOPC.js.map → chunk-HXJRZWKA.js.map} +1 -1
- package/bundle/chunk-IU3RI5E4.js +645 -0
- package/bundle/chunk-IU3RI5E4.js.map +7 -0
- package/bundle/{chunk-GST5T3WZ.js → chunk-J5YIMCLT.js} +6 -5
- package/bundle/{chunk-GST5T3WZ.js.map → chunk-J5YIMCLT.js.map} +1 -1
- package/bundle/chunk-JAJ3DUQ2.js +30 -0
- package/bundle/{chunk-OP7BTAWY.js.map → chunk-JAJ3DUQ2.js.map} +1 -1
- package/bundle/chunk-JHF25OOG.js +645 -0
- package/bundle/chunk-JHF25OOG.js.map +7 -0
- package/bundle/{chunk-MPX525QO.js → chunk-JRG4EFMP.js} +5 -4
- package/bundle/{chunk-MPX525QO.js.map → chunk-JRG4EFMP.js.map} +1 -1
- package/bundle/{chunk-VVEDVGCR.js → chunk-JU3UBWLN.js} +17 -16
- package/bundle/{chunk-VVEDVGCR.js.map → chunk-JU3UBWLN.js.map} +1 -1
- package/bundle/{chunk-QBGBT5QS.js → chunk-JX3ZZU3O.js} +5 -4
- package/bundle/{chunk-QBGBT5QS.js.map → chunk-JX3ZZU3O.js.map} +1 -1
- package/bundle/{chunk-6SETMHNN.js → chunk-K7P74UNQ.js} +8 -7
- package/bundle/{chunk-6SETMHNN.js.map → chunk-K7P74UNQ.js.map} +1 -1
- package/bundle/{chunk-AZJIODTQ.js → chunk-KED3G7HS.js} +6 -5
- package/bundle/{chunk-AZJIODTQ.js.map → chunk-KED3G7HS.js.map} +1 -1
- package/bundle/chunk-KI2ROWAH.js +3707 -0
- package/bundle/chunk-KI2ROWAH.js.map +7 -0
- package/bundle/{chunk-UHRP745J.js → chunk-L7YHV5DL.js} +6 -5
- package/bundle/{chunk-UHRP745J.js.map → chunk-L7YHV5DL.js.map} +1 -1
- package/bundle/{chunk-BSSBCSCL.js → chunk-LD5BMLHG.js} +11 -10
- package/bundle/{chunk-BSSBCSCL.js.map → chunk-LD5BMLHG.js.map} +1 -1
- package/bundle/{chunk-2UPU3OW6.js → chunk-LYEAHE5V.js} +5 -4
- package/bundle/{chunk-2UPU3OW6.js.map → chunk-LYEAHE5V.js.map} +1 -1
- package/bundle/{chunk-3B7BBE4F.js → chunk-MCGEXAG5.js} +8 -7
- package/bundle/{chunk-3B7BBE4F.js.map → chunk-MCGEXAG5.js.map} +1 -1
- package/bundle/{chunk-X76UX47U.js → chunk-MJ6PHMOK.js} +4 -3
- package/bundle/{chunk-X76UX47U.js.map → chunk-MJ6PHMOK.js.map} +1 -1
- package/bundle/{chunk-LSPKJQCI.js → chunk-MV6CJFWR.js} +3 -2
- package/bundle/{chunk-LSPKJQCI.js.map → chunk-MV6CJFWR.js.map} +1 -1
- package/bundle/chunk-MZWMYN4O.js +17 -0
- package/bundle/{chunk-M6VBAPNT.js.map → chunk-MZWMYN4O.js.map} +1 -1
- package/bundle/{chunk-HX7Y7EYP.js → chunk-NIRYBWUW.js} +4 -3
- package/bundle/{chunk-HX7Y7EYP.js.map → chunk-NIRYBWUW.js.map} +1 -1
- package/bundle/{chunk-3E545J66.js → chunk-OW64RUE5.js} +3 -2
- package/bundle/{chunk-3E545J66.js.map → chunk-OW64RUE5.js.map} +1 -1
- package/bundle/chunk-P56PLAIC.js +126 -0
- package/bundle/chunk-P56PLAIC.js.map +7 -0
- package/bundle/{chunk-TZHIDLDS.js → chunk-P6PN34XD.js} +5 -4
- package/bundle/{chunk-TZHIDLDS.js.map → chunk-P6PN34XD.js.map} +1 -1
- package/bundle/{chunk-2UENBO6M.js → chunk-PF5UQ64X.js} +9 -8
- package/bundle/{chunk-2UENBO6M.js.map → chunk-PF5UQ64X.js.map} +1 -1
- package/bundle/{chunk-6CPN4IGS.js → chunk-PQ62LZNA.js} +9 -8
- package/bundle/{chunk-6CPN4IGS.js.map → chunk-PQ62LZNA.js.map} +1 -1
- package/bundle/{chunk-UCQ2WC3B.js → chunk-PQW5QBPY.js} +15 -8
- package/bundle/chunk-PQW5QBPY.js.map +7 -0
- package/bundle/{chunk-D2DCBO6M.js → chunk-R36WIOYX.js} +3 -2
- package/bundle/{chunk-D2DCBO6M.js.map → chunk-R36WIOYX.js.map} +1 -1
- package/bundle/chunk-RB3X66KM.js +386 -0
- package/bundle/chunk-RB3X66KM.js.map +7 -0
- package/bundle/{chunk-GUQVJC3U.js → chunk-RE3F3CFW.js} +7 -6
- package/bundle/{chunk-GUQVJC3U.js.map → chunk-RE3F3CFW.js.map} +1 -1
- package/bundle/chunk-RWUINZUQ.js +19 -0
- package/bundle/chunk-RWUINZUQ.js.map +7 -0
- package/bundle/{chunk-NT3OBORC.js → chunk-S54DBUZ4.js} +10 -9
- package/bundle/{chunk-NT3OBORC.js.map → chunk-S54DBUZ4.js.map} +1 -1
- package/bundle/{chunk-CWOHNFUV.js → chunk-SY67HM2Y.js} +3 -2
- package/bundle/{chunk-CWOHNFUV.js.map → chunk-SY67HM2Y.js.map} +1 -1
- package/bundle/{chunk-BQ2L4GMG.js → chunk-TBLYGCPQ.js} +4 -3
- package/bundle/{chunk-BQ2L4GMG.js.map → chunk-TBLYGCPQ.js.map} +1 -1
- package/bundle/chunk-TCBMBX3Z.js +183 -0
- package/bundle/chunk-TCBMBX3Z.js.map +7 -0
- package/bundle/chunk-TXRWQIQQ.js +3707 -0
- package/bundle/chunk-TXRWQIQQ.js.map +7 -0
- package/bundle/chunk-U34CSHFS.js +645 -0
- package/bundle/chunk-U34CSHFS.js.map +7 -0
- package/bundle/{chunk-CEVRHKJY.js → chunk-UDZIZB5F.js} +6 -5
- package/bundle/{chunk-CEVRHKJY.js.map → chunk-UDZIZB5F.js.map} +1 -1
- package/bundle/{chunk-W6FAL35D.js → chunk-VA5WKN3Z.js} +7 -6
- package/bundle/{chunk-W6FAL35D.js.map → chunk-VA5WKN3Z.js.map} +1 -1
- package/bundle/{chunk-X6TERNVJ.js → chunk-WX7GHGFX.js} +10 -9
- package/bundle/{chunk-X6TERNVJ.js.map → chunk-WX7GHGFX.js.map} +1 -1
- package/bundle/{chunk-PNEDC45Y.js → chunk-XETTJVEU.js} +4 -3
- package/bundle/{chunk-PNEDC45Y.js.map → chunk-XETTJVEU.js.map} +1 -1
- package/bundle/{chunk-PLCY3GFH.js → chunk-XLLSPBBT.js} +5 -4
- package/bundle/{chunk-PLCY3GFH.js.map → chunk-XLLSPBBT.js.map} +1 -1
- package/bundle/{chunk-ZXPXCDA6.js → chunk-XOCP5BMO.js} +6 -5
- package/bundle/{chunk-ZXPXCDA6.js.map → chunk-XOCP5BMO.js.map} +1 -1
- package/bundle/chunk-ZEY6YZAB.js +138 -0
- package/bundle/chunk-ZEY6YZAB.js.map +7 -0
- package/bundle/{chunk-MW6WDLU7.js → chunk-ZZR3JZHR.js} +10 -9
- package/bundle/{chunk-MW6WDLU7.js.map → chunk-ZZR3JZHR.js.map} +1 -1
- package/bundle/commands-AIL4XOIZ.js +33 -0
- package/bundle/commands-K77NVSXZ.js +32 -0
- package/bundle/commands-V6RSVC4Y.js +32 -0
- package/bundle/completion-buffer-S3LXDZG2.js +14 -0
- package/bundle/config-C6VHRJQ7.js +20 -0
- package/bundle/{config-show-ERTATR6E.js → config-show-ZTXX27FW.js} +4 -3
- package/bundle/{config-show-ERTATR6E.js.map → config-show-ZTXX27FW.js.map} +1 -1
- package/bundle/{context-HCEGZNDC.js → context-OCS7HLJP.js} +5 -4
- package/bundle/{context-HCEGZNDC.js.map → context-OCS7HLJP.js.map} +1 -1
- package/bundle/daemon-NPKYZ3CJ.js +292 -0
- package/bundle/daemon-NPKYZ3CJ.js.map +7 -0
- package/bundle/delegation-tools-PF7RD2RW.js +28 -0
- package/bundle/{deploy-lib-import-32ZFKHWP.js → deploy-lib-import-ODLDL2DB.js} +5 -4
- package/bundle/digital-signature-PNY4TR2W.js +14 -0
- package/bundle/{direct-api-transport-YR7SXXNN.js → direct-api-transport-EADHM67Z.js} +21 -20
- package/bundle/{direct-api-transport-YR7SXXNN.js.map → direct-api-transport-EADHM67Z.js.map} +1 -1
- package/bundle/direct-api-transport-SLJ2Z6NX.js +861 -0
- package/bundle/direct-api-transport-SLJ2Z6NX.js.map +7 -0
- package/bundle/{discord-adapter-YYWVMPPU.js → discord-adapter-FBJOJSTW.js} +25 -24
- package/bundle/{discord-adapter-YYWVMPPU.js.map → discord-adapter-FBJOJSTW.js.map} +1 -1
- package/bundle/discord-adapter-IJISVHUE.js +585 -0
- package/bundle/discord-adapter-IJISVHUE.js.map +7 -0
- package/bundle/discord-adapter-UYOCKRDF.js +586 -0
- package/bundle/discord-adapter-UYOCKRDF.js.map +7 -0
- package/bundle/{dist-MTMKARCP.js → dist-J3T4XVKX.js} +4 -3
- package/bundle/{dist-MTMKARCP.js.map → dist-J3T4XVKX.js.map} +1 -1
- package/bundle/{dns-wakeup-27M7D2MR.js → dns-wakeup-RYOCQ6GR.js} +6 -5
- package/bundle/{dns-wakeup-27M7D2MR.js.map → dns-wakeup-RYOCQ6GR.js.map} +1 -1
- package/bundle/{doctor-QNUSDY73.js → doctor-R54GZPKL.js} +10 -9
- package/bundle/{doctor-QNUSDY73.js.map → doctor-R54GZPKL.js.map} +1 -1
- package/bundle/{ensure-invariants-NMXNS476.js → ensure-invariants-K2ZUZ6NR.js} +7 -6
- package/bundle/{ensure-invariants-NMXNS476.js.map → ensure-invariants-K2ZUZ6NR.js.map} +1 -1
- package/bundle/ensure-invariants-KUXIW73S.js +50 -0
- package/bundle/ensure-invariants-KUXIW73S.js.map +7 -0
- package/bundle/env-schema-DGD6QWPA.js +20 -0
- package/bundle/{esm-DDP6NCZG.js → esm-PFOJARXA.js} +5 -4
- package/bundle/{esm-DDP6NCZG.js.map → esm-PFOJARXA.js.map} +1 -1
- package/bundle/{fallback-policy-L4QV2PEJ.js → fallback-policy-SR6ED5I3.js} +4 -3
- package/bundle/{fallback-policy-L4QV2PEJ.js.map → fallback-policy-SR6ED5I3.js.map} +1 -1
- package/bundle/{health-check-SPA7NT6N.js → health-check-RJ2SUJYL.js} +4 -3
- package/bundle/{health-check-SPA7NT6N.js.map → health-check-RJ2SUJYL.js.map} +1 -1
- package/bundle/hook-system-POI5VRIX.js +18 -0
- package/bundle/hotskills-6ECHLXTJ.js +13 -0
- package/bundle/install-24XR5FO5.js +13 -0
- package/bundle/install-AJ7VW76P.js +13 -0
- package/bundle/{install-log-IAPHYKD4.js → install-log-Q6RUHKWC.js} +4 -3
- package/bundle/{install-log-IAPHYKD4.js.map → install-log-Q6RUHKWC.js.map} +1 -1
- package/bundle/{install-manifest-SPQRUNXL.js → install-manifest-MCJCAYSR.js} +9 -7
- package/bundle/install-manifest-MCJCAYSR.js.map +7 -0
- package/bundle/install-manifest-ZETY4AFS.js +104 -0
- package/bundle/install-manifest-ZETY4AFS.js.map +7 -0
- package/bundle/{install-validate-PVLZXYLQ.js → install-validate-H74LUCE2.js} +4 -3
- package/bundle/{install-validate-PVLZXYLQ.js.map → install-validate-H74LUCE2.js.map} +1 -1
- package/bundle/{irc-adapter-OI5UZSQF.js → irc-adapter-RKRUSZXB.js} +7 -6
- package/bundle/{irc-adapter-OI5UZSQF.js.map → irc-adapter-RKRUSZXB.js.map} +1 -1
- package/bundle/{irc-config-55YO6EGB.js → irc-config-6VY67UPQ.js} +8 -7
- package/bundle/{irc-config-55YO6EGB.js.map → irc-config-6VY67UPQ.js.map} +1 -1
- package/bundle/{logs-ZNYXX5PA.js → logs-EK4HYRKR.js} +4 -3
- package/bundle/{logs-ZNYXX5PA.js.map → logs-EK4HYRKR.js.map} +1 -1
- package/bundle/{media-utils-XNNDTYFI.js → media-utils-QBY5WBF3.js} +8 -7
- package/bundle/{media-utils-XNNDTYFI.js.map → media-utils-QBY5WBF3.js.map} +1 -1
- package/bundle/message-pipeline-ANSMPK5O.js +34 -0
- package/bundle/message-pipeline-HXZMRGXZ.js +34 -0
- package/bundle/message-pipeline-XUUTGPFH.js +35 -0
- package/bundle/meta.json +1828 -1650
- package/bundle/model-health-registry-7ECZFCW4.js +12 -0
- package/bundle/model-health-registry-LDC76RPP.js +12 -0
- package/bundle/notification-OJ4YE4VG.js +14 -0
- package/bundle/{openrouter-credits-EDY7ETAU.js → openrouter-credits-L45SYKT3.js} +7 -6
- package/bundle/{openrouter-credits-EDY7ETAU.js.map → openrouter-credits-L45SYKT3.js.map} +1 -1
- package/bundle/{passwd-RRFV4CC5.js → passwd-QSHZJ2CG.js} +4 -3
- package/bundle/{passwd-RRFV4CC5.js.map → passwd-QSHZJ2CG.js.map} +1 -1
- package/bundle/paths-ZJYIDND2.js +18 -0
- package/bundle/{peer-client-52XYMNI7.js → peer-client-T44VI7NB.js} +13 -12
- package/bundle/{peer-client-52XYMNI7.js.map → peer-client-T44VI7NB.js.map} +1 -1
- package/bundle/peer-config-D5A4454H.js +17 -0
- package/bundle/{peer-sessions-EAXTNQ36.js → peer-sessions-MY2YVXHC.js} +4 -3
- package/bundle/{peer-sessions-EAXTNQ36.js.map → peer-sessions-MY2YVXHC.js.map} +1 -1
- package/bundle/{pending-callback-RIMQZ7FJ.js → pending-callback-6KLBSHLX.js} +4 -3
- package/bundle/{pending-callback-RIMQZ7FJ.js.map → pending-callback-6KLBSHLX.js.map} +1 -1
- package/bundle/phase-transport-43NP5XBK.js +23 -0
- package/bundle/phase-transport-GNUZI6EW.js +23 -0
- package/bundle/phase-transport-Q7K6V3VZ.js +23 -0
- package/bundle/phase-transport-SLJXIAY5.js +23 -0
- package/bundle/{responses-adapter-AAQTY3K4.js → responses-adapter-DAV2JUL7.js} +4 -3
- package/bundle/{responses-adapter-AAQTY3K4.js.map → responses-adapter-DAV2JUL7.js.map} +1 -1
- package/bundle/{restore-ZE3SEPSS.js → restore-ROJF22R2.js} +5 -4
- package/bundle/{restore-ZE3SEPSS.js.map → restore-ROJF22R2.js.map} +1 -1
- package/bundle/{self-healer-utils-DMUUXC47.js → self-healer-utils-7NFH22VJ.js} +7 -6
- package/bundle/{self-healer-utils-DMUUXC47.js.map → self-healer-utils-7NFH22VJ.js.map} +1 -1
- package/bundle/skill-stats-IPVKMWN3.js +23 -0
- package/bundle/sleep-4NVWZHVN.js +20 -0
- package/bundle/soul-bundle-7EYTEKFE.js +15 -0
- package/bundle/soul-loader-7FN7WDHM.js +18 -0
- package/bundle/soul-loader-K237NP4T.js +17 -0
- package/bundle/soul-loader-K237NP4T.js.map +7 -0
- package/bundle/soul-loader-UVJ6HZM3.js +17 -0
- package/bundle/soul-loader-UVJ6HZM3.js.map +7 -0
- package/bundle/src-Z3WR7SRT.js +9 -0
- package/bundle/src-Z3WR7SRT.js.map +7 -0
- package/bundle/{sse-parser-anthropic-P7CE2MH2.js → sse-parser-anthropic-H42TTLBD.js} +7 -6
- package/bundle/{sse-parser-anthropic-P7CE2MH2.js.map → sse-parser-anthropic-H42TTLBD.js.map} +1 -1
- package/bundle/{sse-parser-responses-EQQA5FWN.js → sse-parser-responses-WG2LY2ML.js} +7 -6
- package/bundle/{sse-parser-responses-EQQA5FWN.js.map → sse-parser-responses-WG2LY2ML.js.map} +1 -1
- package/bundle/{ssrf-guard-FZCBYIVW.js → ssrf-guard-E2KBBC5E.js} +7 -6
- package/bundle/{ssrf-guard-FZCBYIVW.js.map → ssrf-guard-E2KBBC5E.js.map} +1 -1
- package/bundle/{start-FH3GRMJ4.js → start-4IWBKLWO.js} +4 -3
- package/bundle/{start-FH3GRMJ4.js.map → start-4IWBKLWO.js.map} +1 -1
- package/bundle/{stream-single-WSG4D53C.js → stream-single-RFJNUTL6.js} +4 -3
- package/bundle/{stream-single-WSG4D53C.js.map → stream-single-RFJNUTL6.js.map} +1 -1
- package/bundle/stt-CF3CPFDC.js +15 -0
- package/bundle/stt-CF3CPFDC.js.map +7 -0
- package/bundle/subagent-runtime-P7GCFBM3.js +13 -0
- package/bundle/subagent-runtime-P7GCFBM3.js.map +7 -0
- package/bundle/subagent-runtime-USNPO4WF.js +13 -0
- package/bundle/subagent-runtime-USNPO4WF.js.map +7 -0
- package/bundle/subagent-runtime-XS2ZXYOZ.js +13 -0
- package/bundle/subagent-runtime-XS2ZXYOZ.js.map +7 -0
- package/bundle/{system-message-T5R3EYYN.js → system-message-TALP6GP2.js} +6 -5
- package/bundle/{system-message-T5R3EYYN.js.map → system-message-TALP6GP2.js.map} +1 -1
- package/bundle/{system-status-KQ6KHFJ6.js → system-status-2CR5OUDY.js} +10 -9
- package/bundle/{system-status-KQ6KHFJ6.js.map → system-status-2CR5OUDY.js.map} +1 -1
- package/bundle/task-store-KIBFZL5A.js +23 -0
- package/bundle/task-store-KIBFZL5A.js.map +7 -0
- package/bundle/{telegram-adapter-2V3XUMT5.js → telegram-adapter-ISQRW7PN.js} +34 -33
- package/bundle/{telegram-adapter-2V3XUMT5.js.map → telegram-adapter-ISQRW7PN.js.map} +1 -1
- package/bundle/telegram-adapter-QCD7AG5D.js +1062 -0
- package/bundle/telegram-adapter-QCD7AG5D.js.map +7 -0
- package/bundle/telegram-adapter-Y3PVA25S.js +1061 -0
- package/bundle/telegram-adapter-Y3PVA25S.js.map +7 -0
- package/bundle/telegram-adapter-YAXSK2RT.js +1062 -0
- package/bundle/telegram-adapter-YAXSK2RT.js.map +7 -0
- package/bundle/tool-registry-DFCCGZCB.js +39 -0
- package/bundle/tool-registry-DFCCGZCB.js.map +7 -0
- package/bundle/tool-sandbox-OZMXJZLQ.js +21 -0
- package/bundle/tool-sandbox-OZMXJZLQ.js.map +7 -0
- package/bundle/{transport-config-YLXU33RO.js → transport-config-ANPS2RYT.js} +11 -10
- package/bundle/transport-config-ANPS2RYT.js.map +7 -0
- package/bundle/update-check-O5MS6B3L.js +13 -0
- package/bundle/update-check-O5MS6B3L.js.map +7 -0
- package/bundle/usage-tracker-S4Z2G2K5.js +18 -0
- package/bundle/usage-tracker-S4Z2G2K5.js.map +7 -0
- package/bundle/user-registry-GTAJIW6E.js +17 -0
- package/bundle/user-registry-GTAJIW6E.js.map +7 -0
- package/config/.env +2 -0
- package/config/auto-fix.json +14 -0
- package/config/irc.json.example +30 -0
- package/config/models.json.example +229 -0
- package/config/peers.json.example +12 -0
- package/config/schemas/irc.schema.json +42 -0
- package/config/schemas/models.schema.json +17 -0
- package/config/schemas/peers.schema.json +35 -0
- package/config/schemas/transport.schema.json +35 -0
- package/config/schemas/users.schema.json +22 -0
- package/config/transport.default.json +30 -0
- package/config/transport.json.example +102 -0
- package/config/users.json.example +11 -0
- package/install-manifest.json +148 -0
- package/package.json +4 -2
- package/scripts/abtars-daemon.service +1 -0
- package/scripts/watchdog.sh +1 -1
- package/bundle/_registry.generated-M4WY2MMI.js +0 -35
- package/bundle/agent-registry-LT4JNQH6.js +0 -18
- package/bundle/browse-delivery-JXBY36GK.js +0 -17
- package/bundle/browser-ELNDVPLC.js +0 -18
- package/bundle/capability-CIL3G4FI.js +0 -17
- package/bundle/chunk-5R2ANXQ7.js +0 -510
- package/bundle/chunk-5R2ANXQ7.js.map +0 -7
- package/bundle/chunk-6UCRKRWR.js.map +0 -7
- package/bundle/chunk-M6VBAPNT.js +0 -16
- package/bundle/chunk-OP7BTAWY.js +0 -29
- package/bundle/chunk-UCQ2WC3B.js.map +0 -7
- package/bundle/chunk-XREWVCUO.js.map +0 -7
- package/bundle/chunk-Y6XAEX2Q.js.map +0 -7
- package/bundle/commands-BHVUOU3V.js +0 -31
- package/bundle/completion-buffer-P253ONKF.js +0 -13
- package/bundle/config-RGSDAPZN.js +0 -19
- package/bundle/delegation-tools-GYTS2D6A.js +0 -27
- package/bundle/digital-signature-OFCGSHWO.js +0 -13
- package/bundle/env-schema-2KBHBDGN.js +0 -19
- package/bundle/hook-system-6Q5YTR53.js +0 -17
- package/bundle/hotskills-K7BM4YLB.js +0 -12
- package/bundle/install-6HRZVKUM.js +0 -15
- package/bundle/install-manifest-SPQRUNXL.js.map +0 -7
- package/bundle/message-pipeline-LLH5SYMO.js +0 -33
- package/bundle/model-health-registry-35LQNVQR.js +0 -11
- package/bundle/notification-Y5S5MMLV.js +0 -13
- package/bundle/paths-G33RZWZ7.js +0 -17
- package/bundle/peer-config-VK6EDLN5.js +0 -16
- package/bundle/phase-transport-KYERDL2O.js +0 -22
- package/bundle/skill-stats-LLEXEXLR.js +0 -22
- package/bundle/sleep-OYIUOVQD.js +0 -19
- package/bundle/soul-loader-54WCVNLJ.js +0 -16
- package/bundle/src-JL4PVO23.js +0 -8
- package/bundle/stt-2UH3RITX.js +0 -14
- package/bundle/subagent-runtime-LE2ZXH3G.js +0 -12
- package/bundle/task-store-K7CQDEPI.js +0 -22
- package/bundle/tool-registry-MU3OX4UI.js +0 -38
- package/bundle/tool-sandbox-VYOK4ZOA.js +0 -20
- package/bundle/update-QCW5LXRN.js +0 -13
- package/bundle/update-check-27KZSAP6.js +0 -12
- package/bundle/usage-tracker-OVVEVMOY.js +0 -17
- package/bundle/user-registry-D4SD73UV.js +0 -16
- /package/bundle/{agent-registry-LT4JNQH6.js.map → agent-registry-5M77ZOMV.js.map} +0 -0
- /package/bundle/{bridge-lock-transport-4AC2G5G6.js.map → agent-registry-VJMNIQ5W.js.map} +0 -0
- /package/bundle/{browse-delivery-JXBY36GK.js.map → bridge-lock-transport-HO545SBK.js.map} +0 -0
- /package/bundle/{browser-ELNDVPLC.js.map → browse-delivery-64GQIUHG.js.map} +0 -0
- /package/bundle/{capability-CIL3G4FI.js.map → browser-EXR5OQGK.js.map} +0 -0
- /package/bundle/{chunk-NWDBD4PA.js.map → capability-HIE7UGFU.js.map} +0 -0
- /package/bundle/{commands-BHVUOU3V.js.map → chunk-7K2YZTLD.js.map} +0 -0
- /package/bundle/{completion-buffer-P253ONKF.js.map → commands-AIL4XOIZ.js.map} +0 -0
- /package/bundle/{config-RGSDAPZN.js.map → commands-K77NVSXZ.js.map} +0 -0
- /package/bundle/{delegation-tools-GYTS2D6A.js.map → commands-V6RSVC4Y.js.map} +0 -0
- /package/bundle/{deploy-lib-import-32ZFKHWP.js.map → completion-buffer-S3LXDZG2.js.map} +0 -0
- /package/bundle/{digital-signature-OFCGSHWO.js.map → config-C6VHRJQ7.js.map} +0 -0
- /package/bundle/{env-schema-2KBHBDGN.js.map → delegation-tools-PF7RD2RW.js.map} +0 -0
- /package/bundle/{hook-system-6Q5YTR53.js.map → deploy-lib-import-ODLDL2DB.js.map} +0 -0
- /package/bundle/{hotskills-K7BM4YLB.js.map → digital-signature-PNY4TR2W.js.map} +0 -0
- /package/bundle/{install-6HRZVKUM.js.map → env-schema-DGD6QWPA.js.map} +0 -0
- /package/bundle/{message-pipeline-LLH5SYMO.js.map → hook-system-POI5VRIX.js.map} +0 -0
- /package/bundle/{model-health-registry-35LQNVQR.js.map → hotskills-6ECHLXTJ.js.map} +0 -0
- /package/bundle/{notification-Y5S5MMLV.js.map → install-24XR5FO5.js.map} +0 -0
- /package/bundle/{paths-G33RZWZ7.js.map → install-AJ7VW76P.js.map} +0 -0
- /package/bundle/{peer-config-VK6EDLN5.js.map → message-pipeline-ANSMPK5O.js.map} +0 -0
- /package/bundle/{phase-transport-KYERDL2O.js.map → message-pipeline-HXZMRGXZ.js.map} +0 -0
- /package/bundle/{skill-stats-LLEXEXLR.js.map → message-pipeline-XUUTGPFH.js.map} +0 -0
- /package/bundle/{sleep-OYIUOVQD.js.map → model-health-registry-7ECZFCW4.js.map} +0 -0
- /package/bundle/{soul-loader-54WCVNLJ.js.map → model-health-registry-LDC76RPP.js.map} +0 -0
- /package/bundle/{src-JL4PVO23.js.map → notification-OJ4YE4VG.js.map} +0 -0
- /package/bundle/{stt-2UH3RITX.js.map → paths-ZJYIDND2.js.map} +0 -0
- /package/bundle/{subagent-runtime-LE2ZXH3G.js.map → peer-config-D5A4454H.js.map} +0 -0
- /package/bundle/{task-store-K7CQDEPI.js.map → phase-transport-43NP5XBK.js.map} +0 -0
- /package/bundle/{tool-registry-MU3OX4UI.js.map → phase-transport-GNUZI6EW.js.map} +0 -0
- /package/bundle/{tool-sandbox-VYOK4ZOA.js.map → phase-transport-Q7K6V3VZ.js.map} +0 -0
- /package/bundle/{transport-config-YLXU33RO.js.map → phase-transport-SLJXIAY5.js.map} +0 -0
- /package/bundle/{update-QCW5LXRN.js.map → skill-stats-IPVKMWN3.js.map} +0 -0
- /package/bundle/{update-check-27KZSAP6.js.map → sleep-4NVWZHVN.js.map} +0 -0
- /package/bundle/{usage-tracker-OVVEVMOY.js.map → soul-bundle-7EYTEKFE.js.map} +0 -0
- /package/bundle/{user-registry-D4SD73UV.js.map → soul-loader-7FN7WDHM.js.map} +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
|
|
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);
|
|
2
3
|
import {
|
|
3
4
|
init_logger,
|
|
4
5
|
logDebug,
|
|
5
6
|
logInfo,
|
|
6
7
|
logWarn
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-2BY6I4P5.js";
|
|
9
|
+
import "./chunk-MJ6PHMOK.js";
|
|
10
|
+
import "./chunk-7K2YZTLD.js";
|
|
10
11
|
|
|
11
12
|
// src/components/dns-wakeup.ts
|
|
12
13
|
init_logger();
|
|
@@ -104,4 +105,4 @@ export {
|
|
|
104
105
|
sendWakeup,
|
|
105
106
|
startDnsWakeup
|
|
106
107
|
};
|
|
107
|
-
//# sourceMappingURL=dns-wakeup-
|
|
108
|
+
//# sourceMappingURL=dns-wakeup-RYOCQ6GR.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/components/dns-wakeup.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * dns-wakeup.ts \u2014 mDNS-disguised UDP wake-up for A2A callback (#425).\n *\n * Sender crafts a valid mDNS PTR query: AB-<token>._workstation._tcp.local\n * Token = (ts(4) + nonce(1)) XOR HMAC-SHA256(peer.token, peername)[:5]\n *\n * Receiver tries each known peer, XORs to recover ts, validates within 60s.\n * On valid wake-up \u2192 triggers A2A callback (outbound TCP).\n *\n * Looks like normal mDNS service discovery to endpoint protection.\n */\n\nimport { createSocket, type Socket } from \"node:dgram\";\nimport { createHmac, randomBytes } from \"node:crypto\";\nimport { logInfo, logWarn, logDebug } from \"./logger.js\";\nimport type { PeerConfig } from \"./peer-config.js\";\n\nconst TAG = \"dns-wakeup\";\nconst PREFIX = \"ab-\";\nconst SUFFIX = \"._workstation._tcp.local\";\nconst PATTERN = /^ab-([a-f0-9]{10})\\._workstation\\._tcp\\.local$/;\nconst MAX_AGE_S = 60;\nconst RATE_LIMIT_MS = 5000;\n\nconst lastWakeup = new Map<string, number>();\n\n/** Parse the query name from a raw DNS/mDNS packet (minimal parser). */\nfunction parseMdnsQueryName(buf: Buffer): string | null {\n if (buf.length < 12) return null;\n let offset = 12; // skip DNS header\n const labels: string[] = [];\n while (offset < buf.length) {\n const len = buf[offset]!;\n if (len === 0) break;\n if (len > 63) return null; // compressed \u2014 not expected in queries\n offset++;\n if (offset + len > buf.length) return null;\n labels.push(buf.subarray(offset, offset + len).toString(\"ascii\"));\n offset += len;\n }\n return labels.join(\".\").toLowerCase();\n}\n\n/** Build a minimal mDNS query packet for a PTR record. */\nfunction buildMdnsQuery(name: string): Buffer {\n const labels = name.split(\".\");\n // Header: ID=0, flags=0 (standard query), QDCOUNT=1\n const header = Buffer.from([0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]);\n // Question section: labels + null + type PTR (12) + class IN (1)\n const parts: Buffer[] = [header];\n for (const label of labels) {\n parts.push(Buffer.from([label.length]));\n parts.push(Buffer.from(label, \"ascii\"));\n }\n parts.push(Buffer.from([0])); // root label\n parts.push(Buffer.from([0, 12, 0, 1])); // type PTR, class IN\n return Buffer.concat(parts);\n}\n\n/** Build an empty mDNS response (no answers \u2014 looks like \"not found\"). */\nfunction buildEmptyResponse(queryBuf: Buffer): Buffer {\n const resp = Buffer.from(queryBuf);\n // Set QR=1 (response), RCODE=0 in flags\n if (resp.length >= 4) {\n resp[2] = 0x84; // QR=1, AA=1\n resp[3] = 0x00; // RCODE=0\n }\n return resp;\n}\n\nexport function startDnsWakeup(\n port: number,\n config: PeerConfig,\n onWakeup: (peerName: string) => void,\n): Socket {\n const sock = createSocket(\"udp4\");\n\n sock.on(\"message\", (msg, rinfo) => {\n const name = parseMdnsQueryName(msg);\n if (!name || !PATTERN.test(name)) return; // early bail \u2014 not ours\n\n const token10 = name.match(PATTERN)![1]!;\n const tokenBuf = Buffer.from(token10, \"hex\"); // 5 bytes\n\n for (const [peerName, peer] of Object.entries(config.peers)) {\n const hmac = createHmac(\"sha256\", peer.token).update(peerName).digest();\n const decoded = Buffer.alloc(5);\n for (let i = 0; i < 5; i++) decoded[i] = tokenBuf[i]! ^ hmac[i]!;\n const ts = decoded.readUInt32BE(0);\n // decoded[4] = nonce \u2014 discarded\n\n if (Math.abs(Date.now() / 1000 - ts) <= MAX_AGE_S) {\n // Rate limit\n const now = Date.now();\n const last = lastWakeup.get(peerName) ?? 0;\n if (now - last < RATE_LIMIT_MS) {\n logDebug(TAG, `Rate-limited wake-up from ${peerName}`);\n return;\n }\n lastWakeup.set(peerName, now);\n\n // Send empty mDNS response\n sock.send(buildEmptyResponse(msg), rinfo.port, rinfo.address);\n\n logInfo(TAG, `Valid wake-up from ${peerName} \u2014 initiating callback`);\n onWakeup(peerName);\n return;\n }\n }\n });\n\n sock.on(\"error\", (err) => logWarn(TAG, `Socket error: ${err.message}`));\n sock.bind(port, () => logInfo(TAG, `Listening on UDP port ${port}`));\n return sock;\n}\n\n/** Send a wake-up signal to a peer (mDNS-disguised). */\nexport function sendWakeup(peerName: string, peerHost: string, udpPort: number, token: string): void {\n const ts = Math.floor(Date.now() / 1000);\n const nonce = randomBytes(1);\n const hmac = createHmac(\"sha256\", token).update(peerName).digest();\n\n const plain = Buffer.alloc(5);\n plain.writeUInt32BE(ts, 0);\n plain[4] = nonce[0]!;\n\n const xored = Buffer.alloc(5);\n for (let i = 0; i < 5; i++) xored[i] = plain[i]! ^ hmac[i]!;\n\n const queryName = `${PREFIX}${xored.toString(\"hex\")}${SUFFIX}`;\n const query = buildMdnsQuery(queryName);\n\n const sock = createSocket(\"udp4\");\n sock.send(query, udpPort, peerHost, () => sock.close());\n logDebug(TAG, `Sent wake-up to ${peerName} at ${peerHost}:${udpPort}`);\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
|
|
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);
|
|
2
3
|
import {
|
|
3
4
|
init_log_and_swallow,
|
|
4
5
|
logAndSwallow
|
|
5
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-EX2SRTUE.js";
|
|
6
7
|
import {
|
|
7
8
|
init_logger,
|
|
8
9
|
logInfo
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-2BY6I4P5.js";
|
|
11
|
+
import "./chunk-MJ6PHMOK.js";
|
|
12
|
+
import "./chunk-7K2YZTLD.js";
|
|
12
13
|
|
|
13
14
|
// src/components/doctor/index.ts
|
|
14
15
|
init_logger();
|
|
@@ -107,7 +108,7 @@ var probeTlsIdentity = async (_ctx) => {
|
|
|
107
108
|
const { existsSync } = await import("node:fs");
|
|
108
109
|
const { execSync } = await import("node:child_process");
|
|
109
110
|
const { join } = await import("node:path");
|
|
110
|
-
const { abtarsHome } = await import("./paths-
|
|
111
|
+
const { abtarsHome } = await import("./paths-ZJYIDND2.js");
|
|
111
112
|
const start = Date.now();
|
|
112
113
|
const issues = [];
|
|
113
114
|
try {
|
|
@@ -124,7 +125,7 @@ var probeTlsIdentity = async (_ctx) => {
|
|
|
124
125
|
var probeSecretPerms = async (_ctx) => {
|
|
125
126
|
const { readdirSync, statSync } = await import("node:fs");
|
|
126
127
|
const { join } = await import("node:path");
|
|
127
|
-
const { abtarsHome } = await import("./paths-
|
|
128
|
+
const { abtarsHome } = await import("./paths-ZJYIDND2.js");
|
|
128
129
|
const start = Date.now();
|
|
129
130
|
const secretDir = join(abtarsHome(), "secret");
|
|
130
131
|
let files;
|
|
@@ -209,7 +210,7 @@ async function getDoctorReport(ctx, opts) {
|
|
|
209
210
|
}
|
|
210
211
|
const totalMs = Date.now() - start;
|
|
211
212
|
try {
|
|
212
|
-
const { checkForUpdate } = await import("./update-check-
|
|
213
|
+
const { checkForUpdate } = await import("./update-check-O5MS6B3L.js");
|
|
213
214
|
const { readlinkSync } = await import("node:fs");
|
|
214
215
|
const { join } = await import("node:path");
|
|
215
216
|
const { homedir } = await import("node:os");
|
|
@@ -245,4 +246,4 @@ export {
|
|
|
245
246
|
getDoctorReport,
|
|
246
247
|
renderDoctorText
|
|
247
248
|
};
|
|
248
|
-
//# sourceMappingURL=doctor-
|
|
249
|
+
//# sourceMappingURL=doctor-R54GZPKL.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/components/doctor/index.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * doctor \u2014 deep runtime healthcheck. Probes every subsystem in parallel.\n * Shared cache (60s) prevents token-burning spam.\n */\n\nimport { logInfo } from \"../logger.js\";\nimport { logAndSwallow } from \"../log-and-swallow.js\";\n\nconst TAG = \"doctor\";\n\nexport interface ProbeResult {\n name: string;\n status: \"ok\" | \"failed\" | \"skipped\";\n latencyMs: number;\n detail?: string;\n}\n\nexport interface DoctorReport {\n results: ProbeResult[];\n totalMs: number;\n cached: boolean;\n cacheAgeMs?: number;\n}\n\nexport interface DoctorCtx {\n memory?: { getStats: () => any; getCronInfo: () => any } | null;\n transport?: { sendPrompt: (key: string, msg: string) => Promise<string> } | null;\n telegramRunning?: boolean;\n discordRunning?: boolean;\n config?: { webPort?: number } | null;\n phaseHealth?: Map<string, { status: \"ok\" | \"failed\" | \"skipped\"; error?: string }>;\n}\n\ntype ProbeFn = (ctx: DoctorCtx) => Promise<ProbeResult>;\n\nfunction withTimeout(probe: ProbeFn, timeoutMs: number): ProbeFn {\n return async (ctx) => {\n const start = Date.now();\n try {\n const result = await Promise.race([\n probe(ctx),\n new Promise<ProbeResult>((_, reject) => setTimeout(() => reject(new Error(\"timeout\")), timeoutMs)),\n ]);\n return result;\n } catch (err) {\n return { name: \"unknown\", status: \"failed\", latencyMs: Date.now() - start, detail: `timeout after ${timeoutMs}ms` };\n }\n };\n}\n\n// \u2500\u2500 Probes \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst probeMemory: ProbeFn = async (ctx) => {\n const start = Date.now();\n if (!ctx.memory) return { name: \"memory\", status: \"skipped\", latencyMs: 0, detail: \"not configured\" };\n try {\n ctx.memory.getStats();\n return { name: \"memory\", status: \"ok\", latencyMs: Date.now() - start };\n } catch (err) {\n return { name: \"memory\", status: \"failed\", latencyMs: Date.now() - start, detail: String(err) };\n }\n};\n\nconst probeTelegram: ProbeFn = async (ctx) => {\n const start = Date.now();\n if (!ctx.telegramRunning) return { name: \"telegram\", status: \"skipped\", latencyMs: 0, detail: \"not configured\" };\n return { name: \"telegram\", status: \"ok\", latencyMs: Date.now() - start, detail: \"running\" };\n};\n\nconst probeDiscord: ProbeFn = async (ctx) => {\n const start = Date.now();\n if (!ctx.discordRunning) return { name: \"discord\", status: \"skipped\", latencyMs: 0, detail: \"not configured\" };\n return { name: \"discord\", status: \"ok\", latencyMs: Date.now() - start, detail: \"running\" };\n};\n\nconst probeHeartbeat: ProbeFn = async (ctx) => {\n const start = Date.now();\n if (!ctx.memory || typeof ctx.memory.getCronInfo !== \"function\") return { name: \"heartbeat\", status: \"skipped\", latencyMs: 0 };\n try {\n const info = ctx.memory.getCronInfo();\n const running = info.heartbeatRunning;\n return { name: \"heartbeat\", status: running ? \"ok\" : \"failed\", latencyMs: Date.now() - start, detail: running ? `interval ${info.intervalMs}ms` : \"not running\" };\n } catch (err) {\n logAndSwallow(TAG, \"probe heartbeat\", err);\n return { name: \"heartbeat\", status: \"failed\", latencyMs: Date.now() - start };\n }\n};\n\nconst probeTransport: ProbeFn = async (ctx) => {\n const start = Date.now();\n if (!ctx.transport) return { name: \"transport\", status: \"skipped\", latencyMs: 0, detail: \"not configured\" };\n try {\n await ctx.transport.sendPrompt(\"__doctor_probe__\", \"hi\");\n return { name: \"transport\", status: \"ok\", latencyMs: Date.now() - start };\n } catch (err) {\n return { name: \"transport\", status: \"failed\", latencyMs: Date.now() - start, detail: (err as Error).message?.slice(0, 80) };\n }\n};\n\nconst probeDashboard: ProbeFn = async (ctx) => {\n const start = Date.now();\n const port = (ctx as any).config?.webPort ?? 3000;\n try {\n const res = await fetch(`http://localhost:${port}/`, { signal: AbortSignal.timeout(5000) });\n return { name: \"dashboard\", status: res.ok ? \"ok\" : \"failed\", latencyMs: Date.now() - start };\n } catch (err) {\n logAndSwallow(TAG, \"probe dashboard\", err);\n return { name: \"dashboard\", status: \"skipped\", latencyMs: Date.now() - start, detail: \"not running\" };\n }\n};\n\nconst probeOllama: ProbeFn = async (_ctx) => {\n const start = Date.now();\n try {\n const res = await fetch(\"http://localhost:11434/api/tags\", { signal: AbortSignal.timeout(5000) });\n return { name: \"ollama\", status: res.ok ? \"ok\" : \"failed\", latencyMs: Date.now() - start };\n } catch (err) {\n logAndSwallow(TAG, \"probe ollama\", err);\n return { name: \"ollama\", status: \"skipped\", latencyMs: Date.now() - start, detail: \"not reachable\" };\n }\n};\n\nconst probeCoreFiles: ProbeFn = async (_ctx) => {\n const { existsSync } = await import(\"node:fs\");\n const { join } = await import(\"node:path\");\n const { homedir } = await import(\"node:os\");\n const start = Date.now();\n const memDir = process.env[\"ABMIND_MEMORY_DIR\"] || join(homedir(), \".abmind\", \"memory\");\n const abmindCore = join(memDir, \"core\");\n const required = [\"SOUL.md\", \"user_profile.md\", \"agent_notes.md\", \"memory-tools.md\", \"core_facts.md\"];\n const missing = required.filter(f => !existsSync(join(abmindCore, f)));\n if (missing.length === 0) return { name: \"core-files\", status: \"ok\", latencyMs: Date.now() - start };\n return { name: \"core-files\", status: \"failed\", latencyMs: Date.now() - start, detail: `missing: ${missing.join(\", \")}` };\n};\n\nconst probeTlsIdentity: ProbeFn = async (_ctx) => {\n const { existsSync } = await import(\"node:fs\");\n const { execSync } = await import(\"node:child_process\");\n const { join } = await import(\"node:path\");\n const { abtarsHome } = await import(\"../../paths.js\");\n const start = Date.now();\n const issues: string[] = [];\n try { execSync(\"which openssl\", { stdio: \"ignore\" }); } catch { issues.push(\"openssl not found\"); }\n const configDir = join(abtarsHome(), \"config\");\n if (!existsSync(join(configDir, \"identity.crt\"))) issues.push(\"identity.crt missing\");\n if (!existsSync(join(configDir, \"identity.tls.key\"))) issues.push(\"identity.tls.key missing\");\n if (issues.length === 0) return { name: \"tls-identity\", status: \"ok\", latencyMs: Date.now() - start };\n return { name: \"tls-identity\", status: \"failed\", latencyMs: Date.now() - start, detail: issues.join(\", \") };\n};\n\nconst probeSecretPerms: ProbeFn = async (_ctx) => {\n const { readdirSync, statSync } = await import(\"node:fs\");\n const { join } = await import(\"node:path\");\n const { abtarsHome } = await import(\"../../paths.js\");\n const start = Date.now();\n const secretDir = join(abtarsHome(), \"secret\");\n let files: string[];\n try { files = readdirSync(secretDir); } catch (err) { logAndSwallow(TAG, \"readdirSync secret dir\", err); return { name: \"secret-perms\", status: \"skipped\", latencyMs: 0, detail: \"no secret/ dir\" }; }\n const bad: string[] = [];\n for (const f of files) {\n const st = statSync(join(secretDir, f));\n if (!st.isFile()) continue;\n const mode = st.mode & 0o777;\n if (mode !== 0o600) bad.push(`${f} (${mode.toString(8)})`);\n }\n if (bad.length === 0) return { name: \"secret-perms\", status: \"ok\", latencyMs: Date.now() - start, detail: `${files.filter(f => statSync(join(secretDir, f)).isFile()).length} files, all 600` };\n return { name: \"secret-perms\", status: \"failed\", latencyMs: Date.now() - start, detail: `not 600: ${bad.join(\", \")}` };\n};\n\n// \u2500\u2500 Collector \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst probeFtsIntegrity: ProbeFn = async (_ctx) => {\n const { join } = await import(\"node:path\");\n const { homedir } = await import(\"node:os\");\n const { execSync } = await import(\"node:child_process\");\n const start = Date.now();\n try {\n const dbPath = join(process.env[\"ABMIND_MEMORY_DIR\"] || join(homedir(), \".abmind\", \"memory\"), \"memory.db\");\n const tables = [\"extracted_memories_fts\", \"content_en_trigram\", \"content_original_trigram\"];\n const rebuilt: string[] = [];\n for (const t of tables) {\n try {\n execSync(`sqlite3 \"${dbPath}\" \"INSERT INTO ${t}(${t}) VALUES('integrity-check')\"`, { stdio: \"pipe\", timeout: 2000 });\n } catch {\n try {\n execSync(`sqlite3 \"${dbPath}\" \"INSERT INTO ${t}(${t}) VALUES('rebuild')\"`, { stdio: \"pipe\", timeout: 5000 });\n rebuilt.push(t);\n } catch { /* table may not exist */ }\n }\n }\n if (rebuilt.length > 0) return { name: \"fts-integrity\", status: \"ok\", latencyMs: Date.now() - start, detail: `rebuilt: ${rebuilt.join(\", \")}` };\n return { name: \"fts-integrity\", status: \"ok\", latencyMs: Date.now() - start };\n } catch (err) {\n return { name: \"fts-integrity\", status: \"failed\", latencyMs: Date.now() - start, detail: err instanceof Error ? err.message : String(err) };\n }\n};\n\nconst PROBES: Array<{ fn: ProbeFn; timeout: number }> = [\n { fn: probeCoreFiles, timeout: 1000 },\n { fn: probeFtsIntegrity, timeout: 3000 },\n { fn: probeSecretPerms, timeout: 1000 },\n { fn: probeTlsIdentity, timeout: 2000 },\n { fn: probeMemory, timeout: 5000 },\n { fn: probeTelegram, timeout: 5000 },\n { fn: probeDiscord, timeout: 5000 },\n { fn: probeHeartbeat, timeout: 2000 },\n { fn: probeDashboard, timeout: 5000 },\n { fn: probeOllama, timeout: 5000 },\n { fn: probeTransport, timeout: 10000 }, // last \u2014 most expensive\n];\n\nlet lastReport: { report: DoctorReport; generatedAt: number } | null = null;\nconst CACHE_TTL_MS = 60_000;\n\nexport async function getDoctorReport(ctx: DoctorCtx, opts?: { force?: boolean }): Promise<DoctorReport> {\n const now = Date.now();\n if (!opts?.force && lastReport && now - lastReport.generatedAt < CACHE_TTL_MS) {\n return { ...lastReport.report, cached: true, cacheAgeMs: now - lastReport.generatedAt };\n }\n\n const start = Date.now();\n const results = await Promise.all(\n PROBES.map(p => withTimeout(p.fn, p.timeout)(ctx).then(r => {\n // withTimeout may return name=\"unknown\" \u2014 fix it\n if (r.name === \"unknown\") r.name = \"probe\";\n return r;\n }))\n );\n\n // Add boot phases not covered by active probes\n const probedNames = new Set(results.map(r => r.name));\n if (ctx.phaseHealth) {\n for (const [name, h] of ctx.phaseHealth) {\n const short = name.replace(\"phase\", \"\").replace(/([A-Z])/g, \" $1\").trim().toLowerCase();\n if (!probedNames.has(short) && !probedNames.has(short.replace(\" \", \"\"))) {\n results.push({ name: short, status: h.status === \"ok\" ? \"ok\" : h.status === \"skipped\" ? \"skipped\" : \"failed\", latencyMs: 0, detail: h.error ?? (h.status === \"ok\" ? \"boot ok\" : undefined) });\n }\n }\n }\n\n const totalMs = Date.now() - start;\n\n // #440 \u2014 version staleness check\n try {\n const { checkForUpdate } = await import(\"../update-check.js\");\n const { readlinkSync } = await import(\"node:fs\");\n const { join } = await import(\"node:path\");\n const { homedir } = await import(\"node:os\");\n const target = readlinkSync(join(homedir(), \".abtars\", \"current\")).split(\"/\").pop() ?? \"\";\n const dash = target.lastIndexOf(\"-\");\n const version = dash > 0 ? target.slice(0, dash) : \"unknown\";\n const result = checkForUpdate(\"abtars\", version);\n if (result?.updateAvailable) {\n results.push({ name: \"update-available\", status: \"failed\", latencyMs: 0, detail: `update: ${result.current} \u2192 ${result.latest} available` });\n } else if (result) {\n results.push({ name: \"version\", status: \"ok\", latencyMs: 0, detail: `${result.current} (latest)` });\n }\n } catch (err) { logAndSwallow(TAG, \"version check\", err); }\n\n const report: DoctorReport = { results, totalMs, cached: false };\n lastReport = { report, generatedAt: now };\n logInfo(\"doctor\", `Probes complete: ${results.filter(r => r.status === \"ok\").length}/${results.length} ok (${totalMs}ms)`);\n return report;\n}\n\nexport function renderDoctorText(report: DoctorReport): string {\n const icon = (s: ProbeResult[\"status\"]): string => s === \"ok\" ? \"\u2713\" : s === \"failed\" ? \"\u2717\" : \"\u23ED\";\n const lines = report.results.map(r => {\n const detail = r.detail ? ` \u2014 ${r.detail}` : \"\";\n const ms = r.latencyMs > 0 ? ` (${r.latencyMs}ms)` : \"\";\n return ` ${icon(r.status)} ${r.name}${ms}${detail}`;\n });\n const tag = report.cached ? `[cached ${Math.round((report.cacheAgeMs ?? 0) / 1000)}s ago]` : \"[fresh]\";\n return `\uD83E\uDE7A Doctor Report (${(report.totalMs / 1000).toFixed(1)}s) ${tag}\\n${lines.join(\"\\n\")}`;\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
|
|
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);
|
|
2
3
|
import {
|
|
3
4
|
init_logger,
|
|
4
5
|
logInfo
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-2BY6I4P5.js";
|
|
7
|
+
import "./chunk-MJ6PHMOK.js";
|
|
8
|
+
import "./chunk-7K2YZTLD.js";
|
|
8
9
|
|
|
9
10
|
// src/cli/ensure-invariants.ts
|
|
10
11
|
init_logger();
|
|
@@ -20,7 +21,7 @@ var MIGRATIONS = [
|
|
|
20
21
|
}
|
|
21
22
|
];
|
|
22
23
|
async function ensureInstallInvariants(repoRoot, home) {
|
|
23
|
-
const { loadManifest } = await import("./install-manifest-
|
|
24
|
+
const { loadManifest } = await import("./install-manifest-MCJCAYSR.js");
|
|
24
25
|
const manifest = loadManifest(repoRoot);
|
|
25
26
|
const created = [];
|
|
26
27
|
for (const seed of manifest.configSeeds) {
|
|
@@ -46,4 +47,4 @@ async function ensureInstallInvariants(repoRoot, home) {
|
|
|
46
47
|
export {
|
|
47
48
|
ensureInstallInvariants
|
|
48
49
|
};
|
|
49
|
-
//# sourceMappingURL=ensure-invariants-
|
|
50
|
+
//# sourceMappingURL=ensure-invariants-K2ZUZ6NR.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/cli/ensure-invariants.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * ensure-invariants.ts \u2014 seed missing config files + run config migrations on update.\n * Called from both `abtars install` and `abtars update`. Idempotent.\n */\n\nimport { existsSync, readFileSync, writeFileSync, mkdirSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\nimport { logInfo } from \"../components/logger.js\";\n\nconst TAG = \"ensure-invariants\";\n\ninterface ConfigMigration {\n id: string;\n file: string; // relative to home (e.g. \"config/irc.json\")\n applies: (content: string) => boolean;\n apply: (content: string) => string;\n}\n\nconst MIGRATIONS: ConfigMigration[] = [\n {\n id: \"irc-secure-to-signed\",\n file: \"config/irc.json\",\n applies: (c) => c.includes('\"secure\"'),\n apply: (c) => c.replace(/\"secure\"/g, '\"signed\"'),\n },\n];\n\n/** Seed missing config files from install-manifest. Returns list of created files. */\nexport async function ensureInstallInvariants(repoRoot: string, home: string): Promise<string[]> {\n const { loadManifest } = await import(\"./install-manifest.js\");\n const manifest = loadManifest(repoRoot);\n const created: string[] = [];\n\n for (const seed of manifest.configSeeds) {\n const src = join(repoRoot, seed.source);\n const dst = join(home, seed.dest);\n if (!existsSync(src) || existsSync(dst)) continue;\n mkdirSync(dirname(dst), { recursive: true });\n writeFileSync(dst, readFileSync(src, \"utf-8\"), { mode: seed.mode ? parseInt(seed.mode, 8) : 0o644 });\n created.push(seed.dest);\n logInfo(TAG, `Seeded missing: ${seed.dest}`);\n }\n\n // Run config migrations\n for (const m of MIGRATIONS) {\n const path = join(home, m.file);\n if (!existsSync(path)) continue;\n const content = readFileSync(path, \"utf-8\");\n if (!m.applies(content)) continue;\n writeFileSync(path, m.apply(content));\n logInfo(TAG, `Migrated: ${m.id} (${m.file})`);\n created.push(`[migrated] ${m.file}`);\n }\n\n return created;\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;AAOA;AAFA,SAAS,YAAY,cAAc,eAAe,iBAAiB;AACnE,SAAS,MAAM,eAAe;AAG9B,IAAM,MAAM;AASZ,IAAM,aAAgC;AAAA,EACpC;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS,CAAC,MAAM,EAAE,SAAS,UAAU;AAAA,IACrC,OAAO,CAAC,MAAM,EAAE,QAAQ,aAAa,UAAU;AAAA,EACjD;AACF;AAGA,eAAsB,wBAAwB,UAAkB,MAAiC;AAC/F,QAAM,EAAE,aAAa,IAAI,MAAM,OAAO,gCAAuB;AAC7D,QAAM,WAAW,aAAa,QAAQ;AACtC,QAAM,UAAoB,CAAC;AAE3B,aAAW,QAAQ,SAAS,aAAa;AACvC,UAAM,MAAM,KAAK,UAAU,KAAK,MAAM;AACtC,UAAM,MAAM,KAAK,MAAM,KAAK,IAAI;AAChC,QAAI,CAAC,WAAW,GAAG,KAAK,WAAW,GAAG,EAAG;AACzC,cAAU,QAAQ,GAAG,GAAG,EAAE,WAAW,KAAK,CAAC;AAC3C,kBAAc,KAAK,aAAa,KAAK,OAAO,GAAG,EAAE,MAAM,KAAK,OAAO,SAAS,KAAK,MAAM,CAAC,IAAI,IAAM,CAAC;AACnG,YAAQ,KAAK,KAAK,IAAI;AACtB,YAAQ,KAAK,mBAAmB,KAAK,IAAI,EAAE;AAAA,EAC7C;AAGA,aAAW,KAAK,YAAY;AAC1B,UAAM,OAAO,KAAK,MAAM,EAAE,IAAI;AAC9B,QAAI,CAAC,WAAW,IAAI,EAAG;AACvB,UAAM,UAAU,aAAa,MAAM,OAAO;AAC1C,QAAI,CAAC,EAAE,QAAQ,OAAO,EAAG;AACzB,kBAAc,MAAM,EAAE,MAAM,OAAO,CAAC;AACpC,YAAQ,KAAK,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG;AAC5C,YAAQ,KAAK,cAAc,EAAE,IAAI,EAAE;AAAA,EACrC;AAEA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
init_logger,
|
|
5
|
+
logInfo
|
|
6
|
+
} from "./chunk-2BY6I4P5.js";
|
|
7
|
+
import "./chunk-MJ6PHMOK.js";
|
|
8
|
+
import "./chunk-7K2YZTLD.js";
|
|
9
|
+
|
|
10
|
+
// src/cli/ensure-invariants.ts
|
|
11
|
+
init_logger();
|
|
12
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
13
|
+
import { join, dirname } from "node:path";
|
|
14
|
+
var TAG = "ensure-invariants";
|
|
15
|
+
var MIGRATIONS = [
|
|
16
|
+
{
|
|
17
|
+
id: "irc-secure-to-signed",
|
|
18
|
+
file: "config/irc.json",
|
|
19
|
+
applies: (c) => c.includes('"secure"'),
|
|
20
|
+
apply: (c) => c.replace(/"secure"/g, '"signed"')
|
|
21
|
+
}
|
|
22
|
+
];
|
|
23
|
+
async function ensureInstallInvariants(repoRoot, home) {
|
|
24
|
+
const { loadManifest } = await import("./install-manifest-ZETY4AFS.js");
|
|
25
|
+
const manifest = loadManifest(repoRoot);
|
|
26
|
+
const created = [];
|
|
27
|
+
for (const seed of manifest.configSeeds) {
|
|
28
|
+
const src = join(repoRoot, seed.source);
|
|
29
|
+
const dst = join(home, seed.dest);
|
|
30
|
+
if (!existsSync(src) || existsSync(dst)) continue;
|
|
31
|
+
mkdirSync(dirname(dst), { recursive: true });
|
|
32
|
+
writeFileSync(dst, readFileSync(src, "utf-8"), { mode: seed.mode ? parseInt(seed.mode, 8) : 420 });
|
|
33
|
+
created.push(seed.dest);
|
|
34
|
+
logInfo(TAG, `Seeded missing: ${seed.dest}`);
|
|
35
|
+
}
|
|
36
|
+
for (const m of MIGRATIONS) {
|
|
37
|
+
const path = join(home, m.file);
|
|
38
|
+
if (!existsSync(path)) continue;
|
|
39
|
+
const content = readFileSync(path, "utf-8");
|
|
40
|
+
if (!m.applies(content)) continue;
|
|
41
|
+
writeFileSync(path, m.apply(content));
|
|
42
|
+
logInfo(TAG, `Migrated: ${m.id} (${m.file})`);
|
|
43
|
+
created.push(`[migrated] ${m.file}`);
|
|
44
|
+
}
|
|
45
|
+
return created;
|
|
46
|
+
}
|
|
47
|
+
export {
|
|
48
|
+
ensureInstallInvariants
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=ensure-invariants-KUXIW73S.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli/ensure-invariants.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * ensure-invariants.ts \u2014 seed missing config files + run config migrations on update.\n * Called from both `abtars install` and `abtars update`. Idempotent.\n */\n\nimport { existsSync, readFileSync, writeFileSync, mkdirSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\nimport { logInfo } from \"../components/logger.js\";\n\nconst TAG = \"ensure-invariants\";\n\ninterface ConfigMigration {\n id: string;\n file: string; // relative to home (e.g. \"config/irc.json\")\n applies: (content: string) => boolean;\n apply: (content: string) => string;\n}\n\nconst MIGRATIONS: ConfigMigration[] = [\n {\n id: \"irc-secure-to-signed\",\n file: \"config/irc.json\",\n applies: (c) => c.includes('\"secure\"'),\n apply: (c) => c.replace(/\"secure\"/g, '\"signed\"'),\n },\n];\n\n/** Seed missing config files from install-manifest. Returns list of created files. */\nexport async function ensureInstallInvariants(repoRoot: string, home: string): Promise<string[]> {\n const { loadManifest } = await import(\"./install-manifest.js\");\n const manifest = loadManifest(repoRoot);\n const created: string[] = [];\n\n for (const seed of manifest.configSeeds) {\n const src = join(repoRoot, seed.source);\n const dst = join(home, seed.dest);\n if (!existsSync(src) || existsSync(dst)) continue;\n mkdirSync(dirname(dst), { recursive: true });\n writeFileSync(dst, readFileSync(src, \"utf-8\"), { mode: seed.mode ? parseInt(seed.mode, 8) : 0o644 });\n created.push(seed.dest);\n logInfo(TAG, `Seeded missing: ${seed.dest}`);\n }\n\n // Run config migrations\n for (const m of MIGRATIONS) {\n const path = join(home, m.file);\n if (!existsSync(path)) continue;\n const content = readFileSync(path, \"utf-8\");\n if (!m.applies(content)) continue;\n writeFileSync(path, m.apply(content));\n logInfo(TAG, `Migrated: ${m.id} (${m.file})`);\n created.push(`[migrated] ${m.file}`);\n }\n\n return created;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;AAOA;AAFA,SAAS,YAAY,cAAc,eAAe,iBAAiB;AACnE,SAAS,MAAM,eAAe;AAG9B,IAAM,MAAM;AASZ,IAAM,aAAgC;AAAA,EACpC;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS,CAAC,MAAM,EAAE,SAAS,UAAU;AAAA,IACrC,OAAO,CAAC,MAAM,EAAE,QAAQ,aAAa,UAAU;AAAA,EACjD;AACF;AAGA,eAAsB,wBAAwB,UAAkB,MAAiC;AAC/F,QAAM,EAAE,aAAa,IAAI,MAAM,OAAO,gCAAuB;AAC7D,QAAM,WAAW,aAAa,QAAQ;AACtC,QAAM,UAAoB,CAAC;AAE3B,aAAW,QAAQ,SAAS,aAAa;AACvC,UAAM,MAAM,KAAK,UAAU,KAAK,MAAM;AACtC,UAAM,MAAM,KAAK,MAAM,KAAK,IAAI;AAChC,QAAI,CAAC,WAAW,GAAG,KAAK,WAAW,GAAG,EAAG;AACzC,cAAU,QAAQ,GAAG,GAAG,EAAE,WAAW,KAAK,CAAC;AAC3C,kBAAc,KAAK,aAAa,KAAK,OAAO,GAAG,EAAE,MAAM,KAAK,OAAO,SAAS,KAAK,MAAM,CAAC,IAAI,IAAM,CAAC;AACnG,YAAQ,KAAK,KAAK,IAAI;AACtB,YAAQ,KAAK,mBAAmB,KAAK,IAAI,EAAE;AAAA,EAC7C;AAGA,aAAW,KAAK,YAAY;AAC1B,UAAM,OAAO,KAAK,MAAM,EAAE,IAAI;AAC9B,QAAI,CAAC,WAAW,IAAI,EAAG;AACvB,UAAM,UAAU,aAAa,MAAM,OAAO;AAC1C,QAAI,CAAC,EAAE,QAAQ,OAAO,EAAG;AACzB,kBAAc,MAAM,EAAE,MAAM,OAAO,CAAC;AACpC,YAAQ,KAAK,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG;AAC5C,YAAQ,KAAK,cAAc,EAAE,IAAI,EAAE;AAAA,EACrC;AAEA,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
_resetEnv,
|
|
5
|
+
envDump,
|
|
6
|
+
getEnv,
|
|
7
|
+
initEnv,
|
|
8
|
+
init_env_schema
|
|
9
|
+
} from "./chunk-AQVOAQQI.js";
|
|
10
|
+
import "./chunk-2BY6I4P5.js";
|
|
11
|
+
import "./chunk-MJ6PHMOK.js";
|
|
12
|
+
import "./chunk-7K2YZTLD.js";
|
|
13
|
+
init_env_schema();
|
|
14
|
+
export {
|
|
15
|
+
_resetEnv,
|
|
16
|
+
envDump,
|
|
17
|
+
getEnv,
|
|
18
|
+
initEnv
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=env-schema-DGD6QWPA.js.map
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
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);
|
|
2
3
|
import {
|
|
3
4
|
require_ieee754
|
|
4
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-XETTJVEU.js";
|
|
5
6
|
import {
|
|
6
7
|
__commonJS,
|
|
7
8
|
__export,
|
|
8
9
|
__require,
|
|
9
10
|
__toESM
|
|
10
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-7K2YZTLD.js";
|
|
11
12
|
|
|
12
13
|
// node_modules/omggif/omggif.js
|
|
13
14
|
var require_omggif = __commonJS({
|
|
@@ -100660,4 +100661,4 @@ image-q/dist/esm/image-q.mjs:
|
|
|
100660
100661
|
sax/lib/sax.js:
|
|
100661
100662
|
(*! http://mths.be/fromcodepoint v0.1.0 by @mathias *)
|
|
100662
100663
|
*/
|
|
100663
|
-
//# sourceMappingURL=esm-
|
|
100664
|
+
//# sourceMappingURL=esm-PFOJARXA.js.map
|