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.
Files changed (384) hide show
  1. package/bundle/{_registry.generated-7DRCE4V6.js → _registry.generated-ZJBAZMXN.js} +16 -15
  2. package/bundle/{_registry.generated-7DRCE4V6.js.map → _registry.generated-ZJBAZMXN.js.map} +1 -1
  3. package/bundle/abtars-browser.js +6 -5
  4. package/bundle/abtars-browser.js.map +1 -1
  5. package/bundle/abtars-cli.js +47 -39
  6. package/bundle/abtars-cli.js.map +2 -2
  7. package/bundle/abtars-restart.js +7 -7
  8. package/bundle/abtars-rss.js +2 -1
  9. package/bundle/abtars-rss.js.map +2 -2
  10. package/bundle/abtars-task.js +6 -5
  11. package/bundle/abtars-task.js.map +1 -1
  12. package/bundle/abtars-todo.js +2 -1
  13. package/bundle/abtars-todo.js.map +1 -1
  14. package/bundle/abtars.js +299 -209
  15. package/bundle/abtars.js.map +4 -4
  16. package/bundle/{acp-raw-client-AZJCEB6S.js → acp-raw-client-YTBGFN4S.js} +4 -3
  17. package/bundle/{acp-raw-client-AZJCEB6S.js.map → acp-raw-client-YTBGFN4S.js.map} +1 -1
  18. package/bundle/{action-gate-QYJL57IX.js → action-gate-YISTP773.js} +4 -3
  19. package/bundle/{action-gate-QYJL57IX.js.map → action-gate-YISTP773.js.map} +1 -1
  20. package/bundle/{agent-api-adapter-PYMNQXHE.js → agent-api-adapter-E4HWVJ32.js} +5 -4
  21. package/bundle/{agent-api-adapter-PYMNQXHE.js.map → agent-api-adapter-E4HWVJ32.js.map} +1 -1
  22. package/bundle/{agent-api-rate-limit-4GEZ4YN5.js → agent-api-rate-limit-VENFGOAD.js} +6 -5
  23. package/bundle/{agent-registry-563P4EUJ.js → agent-registry-DL7UT272.js} +9 -8
  24. package/bundle/bootstrap-V5MROD3X.js +62 -0
  25. package/bundle/bootstrap-V5MROD3X.js.map +7 -0
  26. package/bundle/{bridge-lock-transport-LXCF2IVN.js → bridge-lock-transport-BJAMHMXW.js} +6 -5
  27. package/bundle/{browser-2VZOGOGX.js → browser-PT54UWSW.js} +8 -7
  28. package/bundle/{budget-PPA7WY3D.js → budget-QNK6IIT6.js} +5 -4
  29. package/bundle/{budget-PPA7WY3D.js.map → budget-QNK6IIT6.js.map} +1 -1
  30. package/bundle/{capability-WXEA2WFK.js → capability-EKPGHQIO.js} +7 -6
  31. package/bundle/{chunk-C3EYYJN3.js → chunk-2BXXQG7P.js} +16 -4
  32. package/bundle/chunk-2BXXQG7P.js.map +7 -0
  33. package/bundle/{chunk-4PIVWXUJ.js → chunk-2ZD7VQRW.js} +2 -2
  34. package/bundle/{chunk-OY2HAK33.js → chunk-36ZEYDKZ.js} +1 -1
  35. package/bundle/chunk-36ZEYDKZ.js.map +7 -0
  36. package/bundle/{chunk-3QW2K53E.js → chunk-4IGLXZCC.js} +11 -19
  37. package/bundle/chunk-4IGLXZCC.js.map +7 -0
  38. package/bundle/{chunk-T7TAWGBX.js → chunk-52PQM4EZ.js} +2 -2
  39. package/bundle/{chunk-2RGR3LSV.js → chunk-5P5HF7IJ.js} +2 -2
  40. package/bundle/{chunk-LE23VPN3.js → chunk-63A7ZRIH.js} +4 -4
  41. package/bundle/{chunk-LE23VPN3.js.map → chunk-63A7ZRIH.js.map} +1 -1
  42. package/bundle/chunk-6IB3GVXK.js +77 -0
  43. package/bundle/chunk-6IB3GVXK.js.map +7 -0
  44. package/bundle/{chunk-OOKNHOCB.js → chunk-6S3G6GPO.js} +2 -2
  45. package/bundle/{chunk-E7MV7WFT.js → chunk-6VTHSN4V.js} +6 -6
  46. package/bundle/{chunk-NGZVJ52F.js → chunk-76YN7O3U.js} +7 -7
  47. package/bundle/{chunk-43DKPXTP.js → chunk-7LORCJCQ.js} +4 -4
  48. package/bundle/{chunk-HDOFJVFS.js → chunk-7OI46MH7.js} +3 -3
  49. package/bundle/{chunk-H2K23MOF.js → chunk-7XXISOHU.js} +21 -5
  50. package/bundle/chunk-7XXISOHU.js.map +7 -0
  51. package/bundle/{chunk-CB6S3ZRF.js → chunk-AFFW2LRY.js} +3 -3
  52. package/bundle/{chunk-TCI6FZTP.js → chunk-AHJDG6OM.js} +9 -9
  53. package/bundle/{chunk-NP72ZB7P.js → chunk-AMUJEP6L.js} +45 -45
  54. package/bundle/{chunk-NP72ZB7P.js.map → chunk-AMUJEP6L.js.map} +2 -2
  55. package/bundle/{chunk-BU7LTI2W.js → chunk-AWCO3DQ3.js} +6 -7
  56. package/bundle/chunk-AWCO3DQ3.js.map +7 -0
  57. package/bundle/{chunk-YME7NRGP.js → chunk-B2TIRDZC.js} +2 -2
  58. package/bundle/{chunk-SSCGWDIC.js → chunk-BWJ37KMW.js} +2 -2
  59. package/bundle/{chunk-ULO2PX3T.js → chunk-CCZ43JB7.js} +3 -3
  60. package/bundle/{chunk-FVUL44T4.js → chunk-CNENVY37.js} +2 -2
  61. package/bundle/{chunk-J5NOL4DB.js → chunk-DJOSXXM2.js} +2 -2
  62. package/bundle/{chunk-7RAGSHSH.js → chunk-DMDX35YT.js} +12 -10
  63. package/bundle/chunk-DMDX35YT.js.map +7 -0
  64. package/bundle/{chunk-DNDYD5SL.js → chunk-E7DZYCSF.js} +3 -3
  65. package/bundle/{chunk-M6Q3IQ4H.js → chunk-FF2F7ENH.js} +250 -118
  66. package/bundle/chunk-FF2F7ENH.js.map +7 -0
  67. package/bundle/{chunk-GCFIK6OB.js → chunk-FSGICOCX.js} +21 -21
  68. package/bundle/{chunk-IXKQ4JMX.js → chunk-GFAJSPMD.js} +33 -17
  69. package/bundle/chunk-GFAJSPMD.js.map +7 -0
  70. package/bundle/{chunk-FJF42RZY.js → chunk-GHRLO2UL.js} +3 -3
  71. package/bundle/{chunk-3LQOJVTB.js → chunk-HFOCNYEO.js} +1842 -1220
  72. package/bundle/{chunk-3LQOJVTB.js.map → chunk-HFOCNYEO.js.map} +4 -4
  73. package/bundle/{chunk-7WHXTCVD.js → chunk-HWFN7JGU.js} +2 -2
  74. package/bundle/{chunk-KBPVJGD7.js → chunk-IXGDDDAB.js} +3 -3
  75. package/bundle/chunk-JHLKEUHE.js +37 -0
  76. package/bundle/chunk-JHLKEUHE.js.map +7 -0
  77. package/bundle/{chunk-YEOZN5IE.js → chunk-JRGEEGZF.js} +2 -2
  78. package/bundle/{chunk-56D3Y44D.js → chunk-KLG4SCF7.js} +10 -10
  79. package/bundle/{chunk-ASYX43OU.js → chunk-LB43Q7G6.js} +26 -26
  80. package/bundle/{chunk-TVSPVZTX.js → chunk-LN5MNDSA.js} +3 -3
  81. package/bundle/{chunk-RJX45XIC.js → chunk-LPF2HELD.js} +9 -4
  82. package/bundle/chunk-LPF2HELD.js.map +7 -0
  83. package/bundle/{chunk-72T2Q7IG.js → chunk-MJACYH7A.js} +270 -282
  84. package/bundle/chunk-MJACYH7A.js.map +7 -0
  85. package/bundle/{chunk-SESM4GBM.js → chunk-MPQ2PJQX.js} +52 -25
  86. package/bundle/chunk-MPQ2PJQX.js.map +7 -0
  87. package/bundle/{chunk-FIAVVKGN.js → chunk-MTE32OQH.js} +3 -3
  88. package/bundle/{chunk-MV5KOWOR.js → chunk-N3Q3TASM.js} +7 -7
  89. package/bundle/{chunk-IQKADER4.js → chunk-O4YBJS2K.js} +2 -2
  90. package/bundle/{chunk-VJATH7AN.js → chunk-OOUCUCUW.js} +9 -8
  91. package/bundle/chunk-OOUCUCUW.js.map +7 -0
  92. package/bundle/{chunk-5V4VHKEA.js → chunk-OT6HLPEA.js} +3 -3
  93. package/bundle/{chunk-V6CV3QPH.js → chunk-OWPQIBAO.js} +2 -2
  94. package/bundle/{chunk-EDZGF6BC.js → chunk-QJPDBJDP.js} +11 -4
  95. package/bundle/chunk-QJPDBJDP.js.map +7 -0
  96. package/bundle/{chunk-N5VROZ7A.js → chunk-QMP2KC4W.js} +5 -5
  97. package/bundle/{chunk-4HNCOQSK.js → chunk-QOGZ7BFL.js} +7 -7
  98. package/bundle/{chunk-2LKQV2ND.js → chunk-R23FHZRY.js} +3 -3
  99. package/bundle/{chunk-SXNY6HC4.js → chunk-R4GYWVCR.js} +6 -6
  100. package/bundle/chunk-R4GYWVCR.js.map +7 -0
  101. package/bundle/{chunk-S7ZIGIR5.js → chunk-R76K6L6H.js} +27 -27
  102. package/bundle/{chunk-S7ZIGIR5.js.map → chunk-R76K6L6H.js.map} +1 -1
  103. package/bundle/{chunk-TY26WMQY.js → chunk-RCWQ34QR.js} +2 -2
  104. package/bundle/{chunk-MQJG7OJX.js → chunk-RJ2OUNFU.js} +38 -36
  105. package/bundle/chunk-RJ2OUNFU.js.map +7 -0
  106. package/bundle/{chunk-S6HEHCCG.js → chunk-RO3TAYBR.js} +83 -46
  107. package/bundle/chunk-RO3TAYBR.js.map +7 -0
  108. package/bundle/{chunk-ZOCEBV62.js → chunk-UU3RLJSD.js} +3 -3
  109. package/bundle/{chunk-P5O6QZDC.js → chunk-V7Y2LFO4.js} +10 -6
  110. package/bundle/chunk-V7Y2LFO4.js.map +7 -0
  111. package/bundle/{chunk-WP7FZHMI.js → chunk-W2PSVV2T.js} +2 -2
  112. package/bundle/{chunk-V2QIAXWZ.js → chunk-WEGFRA6G.js} +3 -3
  113. package/bundle/{chunk-ZY6DH2S4.js → chunk-WTIGZO3N.js} +80 -70
  114. package/bundle/chunk-WTIGZO3N.js.map +7 -0
  115. package/bundle/{chunk-O4GKI3Q3.js → chunk-X7DLKIQM.js} +4 -4
  116. package/bundle/{chunk-BNBC4T45.js → chunk-XZ4ZBDM5.js} +3 -3
  117. package/bundle/{chunk-24V4A6RP.js → chunk-YI2KSYB4.js} +4 -4
  118. package/bundle/{chunk-37EX63K4.js → chunk-YWHJJHJ2.js} +6998 -3621
  119. package/bundle/chunk-YWHJJHJ2.js.map +7 -0
  120. package/bundle/{chunk-IK4R3RBZ.js → chunk-YZCOA4DC.js} +3 -3
  121. package/bundle/{chunk-2FZJDMAF.js → chunk-ZGNSCJWH.js} +10 -10
  122. package/bundle/{chunk-W726UGI6.js → chunk-ZKMKAO75.js} +3 -3
  123. package/bundle/{chunk-WGWM4IZM.js → chunk-ZT5ZBGWS.js} +4 -4
  124. package/bundle/{chunk-WGWM4IZM.js.map → chunk-ZT5ZBGWS.js.map} +1 -1
  125. package/bundle/{commands-XXFU2ZF7.js → commands-2JQ5YTJX.js} +20 -20
  126. package/bundle/{config-EWDZ234X.js → config-ZEWIM5Z2.js} +8 -7
  127. package/bundle/{config-show-6J33O4TE.js → config-show-WBJPQPRD.js} +5 -5
  128. package/bundle/{context-OCS7HLJP.js → context-V75QNXB5.js} +5 -2
  129. package/bundle/{context-OCS7HLJP.js.map → context-V75QNXB5.js.map} +1 -1
  130. package/bundle/{daemon-LTDAXNA2.js → daemon-W7VQOSZC.js} +7 -7
  131. package/bundle/{delegation-tools-YDTWQMZD.js → delegation-tools-VGTRFQBF.js} +13 -11
  132. package/bundle/{registry-client-VN2MM2HI.js → deploy-5AGIULM2.js} +10 -6
  133. package/bundle/{deploy-lib-import-RGZJ3CGC.js → deploy-lib-import-ZBDYORN4.js} +5 -3
  134. package/bundle/{deps-PHSLIA77.js → deps-VB3S3RLF.js} +21 -19
  135. package/bundle/deps-VB3S3RLF.js.map +7 -0
  136. package/bundle/{direct-api-transport-OAKYQBJR.js → direct-api-transport-YSROTC35.js} +30 -28
  137. package/bundle/direct-api-transport-YSROTC35.js.map +7 -0
  138. package/bundle/{discord-adapter-WUNYPTDE.js → discord-adapter-LKBSIFLV.js} +26 -26
  139. package/bundle/{dist-7HEHHQI2.js → dist-KMK7TZGN.js} +376 -348
  140. package/bundle/dist-KMK7TZGN.js.map +7 -0
  141. package/bundle/{dns-wakeup-F55ALHXJ.js → dns-wakeup-KIURCCFJ.js} +4 -3
  142. package/bundle/{dns-wakeup-F55ALHXJ.js.map → dns-wakeup-KIURCCFJ.js.map} +1 -1
  143. package/bundle/{doctor-probes-3SLIUGKS.js → doctor-probes-46UKIROK.js} +4 -3
  144. package/bundle/{env-schema-MSDP2YBO.js → env-schema-YGHCKX5B.js} +5 -4
  145. package/bundle/{gossip-CS3G3447.js → gossip-VSEY2HSE.js} +7 -6
  146. package/bundle/{guardrails-24XK2COI.js → guardrails-U7M6H2GE.js} +6 -5
  147. package/bundle/{health-check-FRUNRVNQ.js → health-check-ASRLUJE5.js} +6 -2
  148. package/bundle/health-check-ASRLUJE5.js.map +7 -0
  149. package/bundle/{heartbeat-system-G4IFQXT6.js → heartbeat-system-MUXLT4E6.js} +7 -6
  150. package/bundle/{heartbeat-tier3-3ZO3EVXP.js → heartbeat-tier3-636ZMM4E.js} +45 -44
  151. package/bundle/heartbeat-tier3-636ZMM4E.js.map +7 -0
  152. package/bundle/{hook-system-X6INNJGV.js → hook-system-Z4XD6IM5.js} +5 -4
  153. package/bundle/{hotskills-6FQYTJIO.js → hotskills-AOUWVTQB.js} +7 -6
  154. package/bundle/{install-ZAHTZ5M5.js → install-3GGZUN22.js} +23 -20
  155. package/bundle/install-3GGZUN22.js.map +7 -0
  156. package/bundle/{install-manifest-QX7KVDCA.js → install-manifest-624KOB4S.js} +4 -3
  157. package/bundle/{install-manifest-QX7KVDCA.js.map → install-manifest-624KOB4S.js.map} +1 -1
  158. package/bundle/{irc-adapter-IEJQKKJF.js → irc-adapter-SA7GLJGR.js} +5 -4
  159. package/bundle/{irc-adapter-IEJQKKJF.js.map → irc-adapter-SA7GLJGR.js.map} +1 -1
  160. package/bundle/{irc-config-TTWNYFLH.js → irc-config-PG4X2I4M.js} +6 -5
  161. package/bundle/{irc-config-TTWNYFLH.js.map → irc-config-PG4X2I4M.js.map} +1 -1
  162. package/bundle/{kanban-board-J6RO3ZU7.js → kanban-board-4AI5Z6B5.js} +7 -5
  163. package/bundle/{kanban-channel-5EIXBFSA.js → kanban-channel-JMBYWGWD.js} +8 -6
  164. package/bundle/{lazy-require-V6EFUATC.js → lazy-require-GURNBC3C.js} +11 -6
  165. package/bundle/{logger-Y3VILPRH.js → logger-UQJPZMYV.js} +4 -3
  166. package/bundle/{logs-YS3GDURO.js → logs-2WTDLMB5.js} +5 -5
  167. package/bundle/{main-chat-YLZDNQPO.js → main-chat-EID5Y6H2.js} +6 -5
  168. package/bundle/{master-user-Z4M7KCJE.js → master-user-TKA7M2GL.js} +7 -6
  169. package/bundle/{media-utils-P6RZ2K3U.js → media-utils-X3UN342B.js} +44 -43
  170. package/bundle/{media-utils-P6RZ2K3U.js.map → media-utils-X3UN342B.js.map} +2 -2
  171. package/bundle/{message-pipeline-MHEBDJLH.js → message-pipeline-TAWXNEVS.js} +20 -20
  172. package/bundle/meta.json +9264 -8575
  173. package/bundle/{migrate-layout-RJJQLVGR.js → migrate-layout-KEAIIN26.js} +8 -4
  174. package/bundle/migrate-layout-KEAIIN26.js.map +7 -0
  175. package/bundle/{nerve-VZNMFDGY.js → nerve-TC34H4EL.js} +5 -4
  176. package/bundle/{notification-VV2OR6NW.js → notification-JQNVGICN.js} +8 -7
  177. package/bundle/{openrouter-credits-LXC7P4G6.js → openrouter-credits-5Q3EYWE5.js} +5 -4
  178. package/bundle/{openrouter-credits-LXC7P4G6.js.map → openrouter-credits-5Q3EYWE5.js.map} +1 -1
  179. package/bundle/{orc-KC4USP55.js → orc-74Z62W7B.js} +4 -4
  180. package/bundle/{orc-tools-CHRSXSAS.js → orc-tools-GME3DKIN.js} +5 -4
  181. package/bundle/{paths-EDK6KWHG.js → paths-BAUNPLNJ.js} +6 -2
  182. package/bundle/{paths-RZF6WDMG.js → paths-MZC2KU2C.js} +3 -2
  183. package/bundle/{peer-auth-SRONOLNG.js → peer-auth-VRO3JYL5.js} +9 -8
  184. package/bundle/{peer-client-VOF77T6C.js → peer-client-WLK5GZQS.js} +9 -8
  185. package/bundle/{peer-client-VOF77T6C.js.map → peer-client-WLK5GZQS.js.map} +1 -1
  186. package/bundle/{peer-config-FRWLEYQ5.js → peer-config-24WILLCJ.js} +6 -5
  187. package/bundle/{peer-jwt-XY3XRIA2.js → peer-jwt-ZR6RF3XM.js} +6 -5
  188. package/bundle/{peer-transport-UBBXTDRP.js → peer-transport-BK5VHI2M.js} +8 -7
  189. package/bundle/{phase-transport-4NQHZX75.js → phase-transport-7QJM7J6V.js} +18 -16
  190. package/bundle/{reconcile-2EUXJ6W5.js → reconcile-7N7OE2GU.js} +5 -4
  191. package/bundle/{reconciler-FFQGV4DO.js → reconciler-7LOOUK43.js} +13 -11
  192. package/bundle/{reconciler-FFQGV4DO.js.map → reconciler-7LOOUK43.js.map} +1 -1
  193. package/bundle/{restore-NFDE2RG6.js → restore-MENZ3I3K.js} +13 -9
  194. package/bundle/{restore-NFDE2RG6.js.map → restore-MENZ3I3K.js.map} +3 -3
  195. package/bundle/{rollback-MVZ53XS4.js → rollback-JOHY6KWW.js} +5 -5
  196. package/bundle/{chunk-SKY6656M.js → sandbox-runtime-T7RF4WJD.js} +11 -28
  197. package/bundle/{chunk-SKY6656M.js.map → sandbox-runtime-T7RF4WJD.js.map} +1 -1
  198. package/bundle/{self-healer-utils-KD6LV63S.js → self-healer-utils-OR2N6RLD.js} +5 -4
  199. package/bundle/{self-healer-utils-KD6LV63S.js.map → self-healer-utils-OR2N6RLD.js.map} +1 -1
  200. package/bundle/{sha-tracker-2DB4R2TW.js → sha-tracker-BXOLWZJL.js} +5 -4
  201. package/bundle/{skill-session-BPDVA6ZG.js → skill-session-H6EQ4NGN.js} +5 -4
  202. package/bundle/{skill-session-BPDVA6ZG.js.map → skill-session-H6EQ4NGN.js.map} +1 -1
  203. package/bundle/{skill-stats-TPD2NROA.js → skill-stats-7O777ZSZ.js} +6 -5
  204. package/bundle/{skill-watcher-D7QYYYON.js → skill-watcher-ZGLTDPG5.js} +6 -5
  205. package/bundle/{sleep-GH6DLBJJ.js → sleep-3LFZH727.js} +10 -9
  206. package/bundle/{soul-bundle-GXLMDBCC.js → soul-bundle-RQ2YQMJW.js} +10 -9
  207. package/bundle/{spin-4DBYHS3E.js → spin-76K4R6FK.js} +12 -10
  208. package/bundle/{spin-notifications-IKYJPER5.js → spin-notifications-LD46B4K5.js} +7 -5
  209. package/bundle/{spin-notifications-IKYJPER5.js.map → spin-notifications-LD46B4K5.js.map} +1 -1
  210. package/bundle/{spin-types-PLJH3SIK.js → spin-types-MOKTZXGB.js} +5 -4
  211. package/bundle/{src-SUFZ27S5.js → src-6BTCMOD3.js} +4 -4
  212. package/bundle/{sse-parser-anthropic-U7ILHOY5.js → sse-parser-anthropic-NV2CGBIT.js} +5 -4
  213. package/bundle/{sse-parser-anthropic-U7ILHOY5.js.map → sse-parser-anthropic-NV2CGBIT.js.map} +1 -1
  214. package/bundle/{sse-parser-responses-OI73R3AH.js → sse-parser-responses-FC3PFHQ5.js} +5 -4
  215. package/bundle/{sse-parser-responses-OI73R3AH.js.map → sse-parser-responses-FC3PFHQ5.js.map} +1 -1
  216. package/bundle/{ssrf-guard-6GP4QYVA.js → ssrf-guard-E2YPLW6G.js} +5 -4
  217. package/bundle/{ssrf-guard-6GP4QYVA.js.map → ssrf-guard-E2YPLW6G.js.map} +1 -1
  218. package/bundle/{start-JT2BPMSW.js → start-HPO5LYJP.js} +5 -5
  219. package/bundle/start-HPO5LYJP.js.map +7 -0
  220. package/bundle/{stt-KD3AABKG.js → stt-UE7EOYD7.js} +6 -5
  221. package/bundle/{subagent-runtime-LVECAUPV.js → subagent-runtime-4X3UHF4H.js} +6 -5
  222. package/bundle/system-status-PLPWV4RF.js +346 -0
  223. package/bundle/system-status-PLPWV4RF.js.map +7 -0
  224. package/bundle/{task-store-2XRDM3AW.js → task-store-RAFMDQ7N.js} +6 -5
  225. package/bundle/{telegram-adapter-UJ3RYYV6.js → telegram-adapter-PPXKTGOP.js} +35 -35
  226. package/bundle/{tool-registry-YU6WBXPA.js → tool-registry-NKIPNJZ5.js} +25 -23
  227. package/bundle/{tool-sandbox-RNNPDR5M.js → tool-sandbox-DQCP3UTU.js} +6 -5
  228. package/bundle/{transport-config-OK3MZPJK.js → transport-config-SF6GBV47.js} +9 -8
  229. package/bundle/{update-ENNPRW7Y.js → update-QOOGMFSJ.js} +6 -6
  230. package/bundle/{update-check-SJB6GV3A.js → update-check-LPZG3K5P.js} +3 -2
  231. package/bundle/{update-check-SJB6GV3A.js.map → update-check-LPZG3K5P.js.map} +1 -1
  232. package/bundle/{usage-tracker-HRSGC7QC.js → usage-tracker-TBDM4KE6.js} +2 -2
  233. package/bundle/{user-registry-6PUJJ5J2.js → user-registry-OYJVAHDD.js} +6 -5
  234. package/bundle/{wrapper-WLHLG4MI.js → wrapper-W66YICNZ.js} +3 -3
  235. package/bundle/{ws-peer-client-WHW3RJTD.js → ws-peer-client-G5QHOF6K.js} +15 -14
  236. package/bundle/{ws-peer-client-WHW3RJTD.js.map → ws-peer-client-G5QHOF6K.js.map} +2 -2
  237. package/package.json +3 -7
  238. package/scripts/emergency-deploy.sh +11 -8
  239. package/scripts/emergency-update.sh +156 -23
  240. package/templates/config/.env +1 -1
  241. package/templates/config/models.json +13 -0
  242. package/bundle/chunk-37EX63K4.js.map +0 -7
  243. package/bundle/chunk-3QW2K53E.js.map +0 -7
  244. package/bundle/chunk-72T2Q7IG.js.map +0 -7
  245. package/bundle/chunk-7RAGSHSH.js.map +0 -7
  246. package/bundle/chunk-BU7LTI2W.js.map +0 -7
  247. package/bundle/chunk-C3EYYJN3.js.map +0 -7
  248. package/bundle/chunk-CAOIIVFP.js +0 -110
  249. package/bundle/chunk-CAOIIVFP.js.map +0 -7
  250. package/bundle/chunk-EDZGF6BC.js.map +0 -7
  251. package/bundle/chunk-H2K23MOF.js.map +0 -7
  252. package/bundle/chunk-HAZHNBBY.js +0 -156
  253. package/bundle/chunk-HAZHNBBY.js.map +0 -7
  254. package/bundle/chunk-IXKQ4JMX.js.map +0 -7
  255. package/bundle/chunk-JAJ3DUQ2.js +0 -30
  256. package/bundle/chunk-JAJ3DUQ2.js.map +0 -7
  257. package/bundle/chunk-KMFR5AVY.js +0 -45
  258. package/bundle/chunk-KMFR5AVY.js.map +0 -7
  259. package/bundle/chunk-M6Q3IQ4H.js.map +0 -7
  260. package/bundle/chunk-MQJG7OJX.js.map +0 -7
  261. package/bundle/chunk-OY2HAK33.js.map +0 -7
  262. package/bundle/chunk-P5O6QZDC.js.map +0 -7
  263. package/bundle/chunk-RJX45XIC.js.map +0 -7
  264. package/bundle/chunk-S6HEHCCG.js.map +0 -7
  265. package/bundle/chunk-SESM4GBM.js.map +0 -7
  266. package/bundle/chunk-SXNY6HC4.js.map +0 -7
  267. package/bundle/chunk-VJATH7AN.js.map +0 -7
  268. package/bundle/chunk-ZY6DH2S4.js.map +0 -7
  269. package/bundle/deps-PHSLIA77.js.map +0 -7
  270. package/bundle/direct-api-transport-OAKYQBJR.js.map +0 -7
  271. package/bundle/dist-7HEHHQI2.js.map +0 -7
  272. package/bundle/health-check-FRUNRVNQ.js.map +0 -7
  273. package/bundle/heartbeat-tier3-3ZO3EVXP.js.map +0 -7
  274. package/bundle/install-ZAHTZ5M5.js.map +0 -7
  275. package/bundle/migrate-layout-RJJQLVGR.js.map +0 -7
  276. package/bundle/phase-config-V4XETN5F.js +0 -18
  277. package/bundle/sandbox-runtime-WHACQLLN.js +0 -22
  278. package/bundle/start-JT2BPMSW.js.map +0 -7
  279. package/bundle/system-status-XXJWTVJN.js +0 -243
  280. package/bundle/system-status-XXJWTVJN.js.map +0 -7
  281. package/bundle/user-registry-6PUJJ5J2.js.map +0 -7
  282. package/bundle/wrapper-WLHLG4MI.js.map +0 -7
  283. /package/bundle/{agent-api-rate-limit-4GEZ4YN5.js.map → agent-api-rate-limit-VENFGOAD.js.map} +0 -0
  284. /package/bundle/{agent-registry-563P4EUJ.js.map → agent-registry-DL7UT272.js.map} +0 -0
  285. /package/bundle/{bridge-lock-transport-LXCF2IVN.js.map → bridge-lock-transport-BJAMHMXW.js.map} +0 -0
  286. /package/bundle/{browser-2VZOGOGX.js.map → browser-PT54UWSW.js.map} +0 -0
  287. /package/bundle/{capability-WXEA2WFK.js.map → capability-EKPGHQIO.js.map} +0 -0
  288. /package/bundle/{chunk-4PIVWXUJ.js.map → chunk-2ZD7VQRW.js.map} +0 -0
  289. /package/bundle/{chunk-T7TAWGBX.js.map → chunk-52PQM4EZ.js.map} +0 -0
  290. /package/bundle/{chunk-2RGR3LSV.js.map → chunk-5P5HF7IJ.js.map} +0 -0
  291. /package/bundle/{chunk-OOKNHOCB.js.map → chunk-6S3G6GPO.js.map} +0 -0
  292. /package/bundle/{chunk-E7MV7WFT.js.map → chunk-6VTHSN4V.js.map} +0 -0
  293. /package/bundle/{chunk-NGZVJ52F.js.map → chunk-76YN7O3U.js.map} +0 -0
  294. /package/bundle/{chunk-43DKPXTP.js.map → chunk-7LORCJCQ.js.map} +0 -0
  295. /package/bundle/{chunk-HDOFJVFS.js.map → chunk-7OI46MH7.js.map} +0 -0
  296. /package/bundle/{chunk-CB6S3ZRF.js.map → chunk-AFFW2LRY.js.map} +0 -0
  297. /package/bundle/{chunk-TCI6FZTP.js.map → chunk-AHJDG6OM.js.map} +0 -0
  298. /package/bundle/{chunk-YME7NRGP.js.map → chunk-B2TIRDZC.js.map} +0 -0
  299. /package/bundle/{chunk-SSCGWDIC.js.map → chunk-BWJ37KMW.js.map} +0 -0
  300. /package/bundle/{chunk-ULO2PX3T.js.map → chunk-CCZ43JB7.js.map} +0 -0
  301. /package/bundle/{chunk-FVUL44T4.js.map → chunk-CNENVY37.js.map} +0 -0
  302. /package/bundle/{chunk-J5NOL4DB.js.map → chunk-DJOSXXM2.js.map} +0 -0
  303. /package/bundle/{chunk-DNDYD5SL.js.map → chunk-E7DZYCSF.js.map} +0 -0
  304. /package/bundle/{chunk-GCFIK6OB.js.map → chunk-FSGICOCX.js.map} +0 -0
  305. /package/bundle/{chunk-FJF42RZY.js.map → chunk-GHRLO2UL.js.map} +0 -0
  306. /package/bundle/{chunk-7WHXTCVD.js.map → chunk-HWFN7JGU.js.map} +0 -0
  307. /package/bundle/{chunk-KBPVJGD7.js.map → chunk-IXGDDDAB.js.map} +0 -0
  308. /package/bundle/{chunk-YEOZN5IE.js.map → chunk-JRGEEGZF.js.map} +0 -0
  309. /package/bundle/{chunk-56D3Y44D.js.map → chunk-KLG4SCF7.js.map} +0 -0
  310. /package/bundle/{chunk-ASYX43OU.js.map → chunk-LB43Q7G6.js.map} +0 -0
  311. /package/bundle/{chunk-TVSPVZTX.js.map → chunk-LN5MNDSA.js.map} +0 -0
  312. /package/bundle/{chunk-FIAVVKGN.js.map → chunk-MTE32OQH.js.map} +0 -0
  313. /package/bundle/{chunk-MV5KOWOR.js.map → chunk-N3Q3TASM.js.map} +0 -0
  314. /package/bundle/{chunk-IQKADER4.js.map → chunk-O4YBJS2K.js.map} +0 -0
  315. /package/bundle/{chunk-5V4VHKEA.js.map → chunk-OT6HLPEA.js.map} +0 -0
  316. /package/bundle/{chunk-V6CV3QPH.js.map → chunk-OWPQIBAO.js.map} +0 -0
  317. /package/bundle/{chunk-N5VROZ7A.js.map → chunk-QMP2KC4W.js.map} +0 -0
  318. /package/bundle/{chunk-4HNCOQSK.js.map → chunk-QOGZ7BFL.js.map} +0 -0
  319. /package/bundle/{chunk-2LKQV2ND.js.map → chunk-R23FHZRY.js.map} +0 -0
  320. /package/bundle/{chunk-TY26WMQY.js.map → chunk-RCWQ34QR.js.map} +0 -0
  321. /package/bundle/{chunk-ZOCEBV62.js.map → chunk-UU3RLJSD.js.map} +0 -0
  322. /package/bundle/{chunk-WP7FZHMI.js.map → chunk-W2PSVV2T.js.map} +0 -0
  323. /package/bundle/{chunk-V2QIAXWZ.js.map → chunk-WEGFRA6G.js.map} +0 -0
  324. /package/bundle/{chunk-O4GKI3Q3.js.map → chunk-X7DLKIQM.js.map} +0 -0
  325. /package/bundle/{chunk-BNBC4T45.js.map → chunk-XZ4ZBDM5.js.map} +0 -0
  326. /package/bundle/{chunk-24V4A6RP.js.map → chunk-YI2KSYB4.js.map} +0 -0
  327. /package/bundle/{chunk-IK4R3RBZ.js.map → chunk-YZCOA4DC.js.map} +0 -0
  328. /package/bundle/{chunk-2FZJDMAF.js.map → chunk-ZGNSCJWH.js.map} +0 -0
  329. /package/bundle/{chunk-W726UGI6.js.map → chunk-ZKMKAO75.js.map} +0 -0
  330. /package/bundle/{commands-XXFU2ZF7.js.map → commands-2JQ5YTJX.js.map} +0 -0
  331. /package/bundle/{config-EWDZ234X.js.map → config-ZEWIM5Z2.js.map} +0 -0
  332. /package/bundle/{config-show-6J33O4TE.js.map → config-show-WBJPQPRD.js.map} +0 -0
  333. /package/bundle/{daemon-LTDAXNA2.js.map → daemon-W7VQOSZC.js.map} +0 -0
  334. /package/bundle/{delegation-tools-YDTWQMZD.js.map → delegation-tools-VGTRFQBF.js.map} +0 -0
  335. /package/bundle/{deploy-lib-import-RGZJ3CGC.js.map → deploy-5AGIULM2.js.map} +0 -0
  336. /package/bundle/{doctor-probes-3SLIUGKS.js.map → deploy-lib-import-ZBDYORN4.js.map} +0 -0
  337. /package/bundle/{discord-adapter-WUNYPTDE.js.map → discord-adapter-LKBSIFLV.js.map} +0 -0
  338. /package/bundle/{env-schema-MSDP2YBO.js.map → doctor-probes-46UKIROK.js.map} +0 -0
  339. /package/bundle/{gossip-CS3G3447.js.map → env-schema-YGHCKX5B.js.map} +0 -0
  340. /package/bundle/{guardrails-24XK2COI.js.map → gossip-VSEY2HSE.js.map} +0 -0
  341. /package/bundle/{heartbeat-system-G4IFQXT6.js.map → guardrails-U7M6H2GE.js.map} +0 -0
  342. /package/bundle/{hook-system-X6INNJGV.js.map → heartbeat-system-MUXLT4E6.js.map} +0 -0
  343. /package/bundle/{hotskills-6FQYTJIO.js.map → hook-system-Z4XD6IM5.js.map} +0 -0
  344. /package/bundle/{kanban-board-J6RO3ZU7.js.map → hotskills-AOUWVTQB.js.map} +0 -0
  345. /package/bundle/{kanban-channel-5EIXBFSA.js.map → kanban-board-4AI5Z6B5.js.map} +0 -0
  346. /package/bundle/{lazy-require-V6EFUATC.js.map → kanban-channel-JMBYWGWD.js.map} +0 -0
  347. /package/bundle/{logger-Y3VILPRH.js.map → lazy-require-GURNBC3C.js.map} +0 -0
  348. /package/bundle/{main-chat-YLZDNQPO.js.map → logger-UQJPZMYV.js.map} +0 -0
  349. /package/bundle/{logs-YS3GDURO.js.map → logs-2WTDLMB5.js.map} +0 -0
  350. /package/bundle/{master-user-Z4M7KCJE.js.map → main-chat-EID5Y6H2.js.map} +0 -0
  351. /package/bundle/{message-pipeline-MHEBDJLH.js.map → master-user-TKA7M2GL.js.map} +0 -0
  352. /package/bundle/{nerve-VZNMFDGY.js.map → message-pipeline-TAWXNEVS.js.map} +0 -0
  353. /package/bundle/{notification-VV2OR6NW.js.map → nerve-TC34H4EL.js.map} +0 -0
  354. /package/bundle/{orc-tools-CHRSXSAS.js.map → notification-JQNVGICN.js.map} +0 -0
  355. /package/bundle/{orc-KC4USP55.js.map → orc-74Z62W7B.js.map} +0 -0
  356. /package/bundle/{paths-EDK6KWHG.js.map → orc-tools-GME3DKIN.js.map} +0 -0
  357. /package/bundle/{paths-RZF6WDMG.js.map → paths-BAUNPLNJ.js.map} +0 -0
  358. /package/bundle/{peer-auth-SRONOLNG.js.map → paths-MZC2KU2C.js.map} +0 -0
  359. /package/bundle/{peer-config-FRWLEYQ5.js.map → peer-auth-VRO3JYL5.js.map} +0 -0
  360. /package/bundle/{peer-jwt-XY3XRIA2.js.map → peer-config-24WILLCJ.js.map} +0 -0
  361. /package/bundle/{peer-transport-UBBXTDRP.js.map → peer-jwt-ZR6RF3XM.js.map} +0 -0
  362. /package/bundle/{phase-config-V4XETN5F.js.map → peer-transport-BK5VHI2M.js.map} +0 -0
  363. /package/bundle/{phase-transport-4NQHZX75.js.map → phase-transport-7QJM7J6V.js.map} +0 -0
  364. /package/bundle/{reconcile-2EUXJ6W5.js.map → reconcile-7N7OE2GU.js.map} +0 -0
  365. /package/bundle/{registry-client-VN2MM2HI.js.map → rollback-JOHY6KWW.js.map} +0 -0
  366. /package/bundle/{rollback-MVZ53XS4.js.map → sha-tracker-BXOLWZJL.js.map} +0 -0
  367. /package/bundle/{sandbox-runtime-WHACQLLN.js.map → skill-stats-7O777ZSZ.js.map} +0 -0
  368. /package/bundle/{sha-tracker-2DB4R2TW.js.map → skill-watcher-ZGLTDPG5.js.map} +0 -0
  369. /package/bundle/{skill-stats-TPD2NROA.js.map → sleep-3LFZH727.js.map} +0 -0
  370. /package/bundle/{skill-watcher-D7QYYYON.js.map → soul-bundle-RQ2YQMJW.js.map} +0 -0
  371. /package/bundle/{sleep-GH6DLBJJ.js.map → spin-76K4R6FK.js.map} +0 -0
  372. /package/bundle/{soul-bundle-GXLMDBCC.js.map → spin-types-MOKTZXGB.js.map} +0 -0
  373. /package/bundle/{spin-4DBYHS3E.js.map → src-6BTCMOD3.js.map} +0 -0
  374. /package/bundle/{spin-types-PLJH3SIK.js.map → stt-UE7EOYD7.js.map} +0 -0
  375. /package/bundle/{src-SUFZ27S5.js.map → subagent-runtime-4X3UHF4H.js.map} +0 -0
  376. /package/bundle/{stt-KD3AABKG.js.map → task-store-RAFMDQ7N.js.map} +0 -0
  377. /package/bundle/{telegram-adapter-UJ3RYYV6.js.map → telegram-adapter-PPXKTGOP.js.map} +0 -0
  378. /package/bundle/{subagent-runtime-LVECAUPV.js.map → tool-registry-NKIPNJZ5.js.map} +0 -0
  379. /package/bundle/{task-store-2XRDM3AW.js.map → tool-sandbox-DQCP3UTU.js.map} +0 -0
  380. /package/bundle/{tool-registry-YU6WBXPA.js.map → transport-config-SF6GBV47.js.map} +0 -0
  381. /package/bundle/{tool-sandbox-RNNPDR5M.js.map → update-QOOGMFSJ.js.map} +0 -0
  382. /package/bundle/{transport-config-OK3MZPJK.js.map → usage-tracker-TBDM4KE6.js.map} +0 -0
  383. /package/bundle/{update-ENNPRW7Y.js.map → user-registry-OYJVAHDD.js.map} +0 -0
  384. /package/bundle/{usage-tracker-HRSGC7QC.js.map → wrapper-W66YICNZ.js.map} +0 -0
@@ -3,9 +3,10 @@
3
3
  import {
4
4
  init_log_and_swallow,
5
5
  logAndSwallow
6
- } from "./chunk-WP7FZHMI.js";
7
- import "./chunk-OOKNHOCB.js";
8
- import "./chunk-H2K23MOF.js";
6
+ } from "./chunk-W2PSVV2T.js";
7
+ import "./chunk-6S3G6GPO.js";
8
+ import "./chunk-7XXISOHU.js";
9
+ import "./chunk-2BXXQG7P.js";
9
10
  import "./chunk-7K2YZTLD.js";
10
11
 
11
12
  // src/capabilities/browser/ssrf-guard.ts
@@ -62,4 +63,4 @@ async function isPrivateHost(hostname) {
62
63
  export {
63
64
  isPrivateHost
64
65
  };
65
- //# sourceMappingURL=ssrf-guard-6GP4QYVA.js.map
66
+ //# sourceMappingURL=ssrf-guard-E2YPLW6G.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/capabilities/browser/ssrf-guard.ts"],
4
4
  "sourcesContent": ["/**\n * SSRF guard \u2014 reject private/internal IP addresses.\n * Adapted from NemoClaw's ssrf.ts.\n */\n\nimport { logAndSwallow } from \"../../components/log-and-swallow.js\";\nimport { resolve4, resolve6 } from \"node:dns/promises\";\n\nconst PRIVATE_RANGES_V4: ReadonlyArray<[number, number, number]> = [\n // [network, mask, bits] \u2014 network & mask === candidate & mask \u2192 private\n [0x7F000000, 0xFF000000, 8], // 127.0.0.0/8\n [0x0A000000, 0xFF000000, 8], // 10.0.0.0/8\n [0xAC100000, 0xFFF00000, 12], // 172.16.0.0/12\n [0xC0A80000, 0xFFFF0000, 16], // 192.168.0.0/16\n [0xA9FE0000, 0xFFFF0000, 16], // 169.254.0.0/16 (link-local)\n [0x64400000, 0xFFC00000, 10], // 100.64.0.0/10 (CGNAT)\n [0x00000000, 0xFFFFFFFF, 32], // 0.0.0.0\n];\n\nfunction ipv4ToInt(ip: string): number {\n const parts = ip.split(\".\").map(Number);\n return ((parts[0]! << 24) | (parts[1]! << 16) | (parts[2]! << 8) | parts[3]!) >>> 0;\n}\n\nfunction isPrivateV4(ip: string): boolean {\n const n = ipv4ToInt(ip);\n return PRIVATE_RANGES_V4.some(([net, mask]) => (n & mask) >>> 0 === (net & mask) >>> 0);\n}\n\nfunction isPrivateV6(ip: string): boolean {\n const lower = ip.toLowerCase();\n return lower === \"::1\" || lower.startsWith(\"fd\") || lower.startsWith(\"fe80\") || lower.startsWith(\"::ffff:127.\");\n}\n\n/** Check if a hostname resolves to a private IP. Resolves DNS to catch rebinding. */\nexport async function isPrivateHost(hostname: string): Promise<boolean> {\n // Direct IP check\n if (/^\\d+\\.\\d+\\.\\d+\\.\\d+$/.test(hostname)) return isPrivateV4(hostname);\n if (hostname.includes(\":\")) return isPrivateV6(hostname);\n if (hostname === \"localhost\") return true;\n\n // DNS resolution check (catches DNS rebinding)\n const timeout = (p: Promise<string[]>): Promise<string[]> =>\n Promise.race([p, new Promise<string[]>((_, reject) => setTimeout(() => reject(new Error(\"dns timeout\")), 2000))]);\n\n try {\n const v4 = await timeout(resolve4(hostname));\n if (v4.some(isPrivateV4)) return true;\n } catch (err) { logAndSwallow(\"ssrf_guard\", \"op\", err); }\n\n try {\n const v6 = await timeout(resolve6(hostname));\n if (v6.some(isPrivateV6)) return true;\n } catch (err) { logAndSwallow(\"ssrf_guard\", \"op\", err); }\n\n return false;\n}\n"],
5
- "mappings": ";;;;;;;;;;;AAKA;AACA,SAAS,UAAU,gBAAgB;AAEnC,IAAM,oBAA6D;AAAA;AAAA,EAEjE,CAAC,YAAY,YAAY,CAAC;AAAA;AAAA,EAC1B,CAAC,WAAY,YAAY,CAAC;AAAA;AAAA,EAC1B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,GAAY,YAAY,EAAE;AAAA;AAC7B;AAEA,SAAS,UAAU,IAAoB;AACrC,QAAM,QAAQ,GAAG,MAAM,GAAG,EAAE,IAAI,MAAM;AACtC,UAAS,MAAM,CAAC,KAAM,KAAO,MAAM,CAAC,KAAM,KAAO,MAAM,CAAC,KAAM,IAAK,MAAM,CAAC,OAAQ;AACpF;AAEA,SAAS,YAAY,IAAqB;AACxC,QAAM,IAAI,UAAU,EAAE;AACtB,SAAO,kBAAkB,KAAK,CAAC,CAAC,KAAK,IAAI,OAAO,IAAI,UAAU,OAAO,MAAM,UAAU,CAAC;AACxF;AAEA,SAAS,YAAY,IAAqB;AACxC,QAAM,QAAQ,GAAG,YAAY;AAC7B,SAAO,UAAU,SAAS,MAAM,WAAW,IAAI,KAAK,MAAM,WAAW,MAAM,KAAK,MAAM,WAAW,aAAa;AAChH;AAGA,eAAsB,cAAc,UAAoC;AAEtE,MAAI,uBAAuB,KAAK,QAAQ,EAAG,QAAO,YAAY,QAAQ;AACtE,MAAI,SAAS,SAAS,GAAG,EAAG,QAAO,YAAY,QAAQ;AACvD,MAAI,aAAa,YAAa,QAAO;AAGrC,QAAM,UAAU,CAAC,MACf,QAAQ,KAAK,CAAC,GAAG,IAAI,QAAkB,CAAC,GAAG,WAAW,WAAW,MAAM,OAAO,IAAI,MAAM,aAAa,CAAC,GAAG,GAAI,CAAC,CAAC,CAAC;AAElH,MAAI;AACF,UAAM,KAAK,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAC3C,QAAI,GAAG,KAAK,WAAW,EAAG,QAAO;AAAA,EACnC,SAAS,KAAK;AAAE,kBAAc,cAAc,MAAM,GAAG;AAAA,EAAG;AAExD,MAAI;AACF,UAAM,KAAK,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAC3C,QAAI,GAAG,KAAK,WAAW,EAAG,QAAO;AAAA,EACnC,SAAS,KAAK;AAAE,kBAAc,cAAc,MAAM,GAAG;AAAA,EAAG;AAExD,SAAO;AACT;",
5
+ "mappings": ";;;;;;;;;;;;AAKA;AACA,SAAS,UAAU,gBAAgB;AAEnC,IAAM,oBAA6D;AAAA;AAAA,EAEjE,CAAC,YAAY,YAAY,CAAC;AAAA;AAAA,EAC1B,CAAC,WAAY,YAAY,CAAC;AAAA;AAAA,EAC1B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,GAAY,YAAY,EAAE;AAAA;AAC7B;AAEA,SAAS,UAAU,IAAoB;AACrC,QAAM,QAAQ,GAAG,MAAM,GAAG,EAAE,IAAI,MAAM;AACtC,UAAS,MAAM,CAAC,KAAM,KAAO,MAAM,CAAC,KAAM,KAAO,MAAM,CAAC,KAAM,IAAK,MAAM,CAAC,OAAQ;AACpF;AAEA,SAAS,YAAY,IAAqB;AACxC,QAAM,IAAI,UAAU,EAAE;AACtB,SAAO,kBAAkB,KAAK,CAAC,CAAC,KAAK,IAAI,OAAO,IAAI,UAAU,OAAO,MAAM,UAAU,CAAC;AACxF;AAEA,SAAS,YAAY,IAAqB;AACxC,QAAM,QAAQ,GAAG,YAAY;AAC7B,SAAO,UAAU,SAAS,MAAM,WAAW,IAAI,KAAK,MAAM,WAAW,MAAM,KAAK,MAAM,WAAW,aAAa;AAChH;AAGA,eAAsB,cAAc,UAAoC;AAEtE,MAAI,uBAAuB,KAAK,QAAQ,EAAG,QAAO,YAAY,QAAQ;AACtE,MAAI,SAAS,SAAS,GAAG,EAAG,QAAO,YAAY,QAAQ;AACvD,MAAI,aAAa,YAAa,QAAO;AAGrC,QAAM,UAAU,CAAC,MACf,QAAQ,KAAK,CAAC,GAAG,IAAI,QAAkB,CAAC,GAAG,WAAW,WAAW,MAAM,OAAO,IAAI,MAAM,aAAa,CAAC,GAAG,GAAI,CAAC,CAAC,CAAC;AAElH,MAAI;AACF,UAAM,KAAK,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAC3C,QAAI,GAAG,KAAK,WAAW,EAAG,QAAO;AAAA,EACnC,SAAS,KAAK;AAAE,kBAAc,cAAc,MAAM,GAAG;AAAA,EAAG;AAExD,MAAI;AACF,UAAM,KAAK,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAC3C,QAAI,GAAG,KAAK,WAAW,EAAG,QAAO;AAAA,EACnC,SAAS,KAAK;AAAE,kBAAc,cAAc,MAAM,GAAG;AAAA,EAAG;AAExD,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -2,13 +2,13 @@
2
2
  import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
3
3
  import {
4
4
  printBanner
5
- } from "./chunk-TVSPVZTX.js";
6
- import "./chunk-EDZGF6BC.js";
7
- import "./chunk-C3EYYJN3.js";
5
+ } from "./chunk-LN5MNDSA.js";
6
+ import "./chunk-QJPDBJDP.js";
8
7
  import {
9
8
  abtarsHome,
10
9
  init_paths
11
- } from "./chunk-H2K23MOF.js";
10
+ } from "./chunk-7XXISOHU.js";
11
+ import "./chunk-2BXXQG7P.js";
12
12
  import "./chunk-7K2YZTLD.js";
13
13
 
14
14
  // src/cli/commands/start.ts
@@ -108,4 +108,4 @@ async function start() {
108
108
  export {
109
109
  start
110
110
  };
111
- //# sourceMappingURL=start-JT2BPMSW.js.map
111
+ //# sourceMappingURL=start-HPO5LYJP.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/cli/commands/start.ts"],
4
+ "sourcesContent": ["import { printBanner } from './banner.js';\nimport { existsSync, readFileSync, unlinkSync } from \"node:fs\";\nimport { execFileSync } from \"node:child_process\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { abtarsHome } from \"../../paths.js\";\n\n\nfunction pidAlive(pid: number): boolean {\n try { process.kill(pid, 0); return true; } catch { return false; }\n}\n\nfunction readJsonField(file: string, field: string): unknown {\n try { return JSON.parse(readFileSync(file, \"utf-8\"))[field]; } catch { return undefined; }\n}\n\nexport async function start(): Promise<number> {\n await printBanner(\"start\");\n const home = abtarsHome();\n const lockFile = join(home, \"bridge.lock\");\n const startReasonFile = join(home, \".start-reason\");\n\n // Clear stop sentinel so WD/bridge can start\n try { unlinkSync(startReasonFile); } catch {}\n try { unlinkSync(join(home, \".stopped\")); } catch {}\n\n const installMode = readJsonField(join(home, \"manifest.json\"), \"installMode\") as string | undefined;\n\n // Daemon mode \u2014 let launchd/systemd handle it\n if (installMode === \"daemon\") {\n if (process.platform === \"darwin\") {\n const plistPath = join(homedir(), \"Library\", \"LaunchAgents\", \"com.abtars.watchdog.plist\");\n const uid = `gui/${process.getuid!()}`;\n try { execFileSync(\"launchctl\", [\"bootstrap\", uid, plistPath], { timeout: 5000 }); } catch {}\n } else {\n try { execFileSync(\"systemctl\", [\"--user\", \"unmask\", \"abtars-watchdog\"], { timeout: 5000 }); } catch {}\n try { execFileSync(\"systemctl\", [\"--user\", \"enable\", \"abtars-watchdog\"], { timeout: 5000 }); } catch {}\n try { execFileSync(\"systemctl\", [\"--user\", \"start\", \"abtars-watchdog\"], { timeout: 5000 }); } catch {}\n }\n process.stdout.write(`\u2713 Service loaded. Watchdog starting...\\n`);\n return 0;\n }\n\n // Simple mode \u2014 spawn bridge directly\n if (existsSync(lockFile)) {\n try {\n const lock = JSON.parse(readFileSync(lockFile, \"utf-8\"));\n if (lock.pid && pidAlive(lock.pid)) {\n process.stdout.write(`Bridge already running (pid ${lock.pid}).\\n`);\n return 0;\n }\n } catch { /* corrupt lock \u2014 proceed */ }\n }\n\n const entryPoint = join(home, \"app\", \"bundle\", \"abtars.js\");\n if (!existsSync(entryPoint)) {\n process.stderr.write(`No release deployed. Run 'abtars update' first.\\n`);\n return 1;\n }\n\n const { spawn } = await import(\"node:child_process\");\n const { openSync, closeSync, mkdirSync } = await import(\"node:fs\");\n mkdirSync(join(home, \"logs\"), { recursive: true });\n const logFd = openSync(join(home, \"logs\", \"bridge.log\"), \"a\");\n const br = spawn(\"node\", [\"--max-old-space-size=1024\", entryPoint], {\n detached: true,\n stdio: [\"ignore\", logFd, logFd],\n cwd: home,\n env: { ...process.env, ABTARS_START_REASON: \"manual-start\" },\n });\n br.unref();\n closeSync(logFd);\n process.stdout.write(`\u2713 Bridge started (pid ${br.pid}).\\n`);\n return 0;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -3,13 +3,14 @@
3
3
  import {
4
4
  LANGUAGE_HINT_PROMPT,
5
5
  transcribeAudio
6
- } from "./chunk-ZOCEBV62.js";
7
- import "./chunk-WP7FZHMI.js";
8
- import "./chunk-OOKNHOCB.js";
9
- import "./chunk-H2K23MOF.js";
6
+ } from "./chunk-UU3RLJSD.js";
7
+ import "./chunk-W2PSVV2T.js";
8
+ import "./chunk-6S3G6GPO.js";
9
+ import "./chunk-7XXISOHU.js";
10
+ import "./chunk-2BXXQG7P.js";
10
11
  import "./chunk-7K2YZTLD.js";
11
12
  export {
12
13
  LANGUAGE_HINT_PROMPT,
13
14
  transcribeAudio
14
15
  };
15
- //# sourceMappingURL=stt-KD3AABKG.js.map
16
+ //# sourceMappingURL=stt-UE7EOYD7.js.map
@@ -2,12 +2,13 @@
2
2
  import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
3
3
  import {
4
4
  SubagentRuntime
5
- } from "./chunk-2FZJDMAF.js";
6
- import "./chunk-WP7FZHMI.js";
7
- import "./chunk-OOKNHOCB.js";
8
- import "./chunk-H2K23MOF.js";
5
+ } from "./chunk-ZGNSCJWH.js";
6
+ import "./chunk-W2PSVV2T.js";
7
+ import "./chunk-6S3G6GPO.js";
8
+ import "./chunk-7XXISOHU.js";
9
+ import "./chunk-2BXXQG7P.js";
9
10
  import "./chunk-7K2YZTLD.js";
10
11
  export {
11
12
  SubagentRuntime
12
13
  };
13
- //# sourceMappingURL=subagent-runtime-LVECAUPV.js.map
14
+ //# sourceMappingURL=subagent-runtime-4X3UHF4H.js.map
@@ -0,0 +1,346 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
3
+ import {
4
+ hotskills_exports,
5
+ init_hotskills
6
+ } from "./chunk-YZCOA4DC.js";
7
+ import "./chunk-MTE32OQH.js";
8
+ import {
9
+ heartbeat_system_exports,
10
+ init_heartbeat_system
11
+ } from "./chunk-E7DZYCSF.js";
12
+ import {
13
+ getInstanceName,
14
+ init_soul_bundle
15
+ } from "./chunk-KLG4SCF7.js";
16
+ import "./chunk-7LORCJCQ.js";
17
+ import "./chunk-X7DLKIQM.js";
18
+ import "./chunk-2ZD7VQRW.js";
19
+ import "./chunk-ZKMKAO75.js";
20
+ import "./chunk-N5KN3LGD.js";
21
+ import "./chunk-BWJ37KMW.js";
22
+ import {
23
+ init_log_and_swallow,
24
+ logAndSwallow
25
+ } from "./chunk-W2PSVV2T.js";
26
+ import "./chunk-6S3G6GPO.js";
27
+ import {
28
+ init_paths,
29
+ paths_exports
30
+ } from "./chunk-7XXISOHU.js";
31
+ import "./chunk-2BXXQG7P.js";
32
+ import {
33
+ __toCommonJS
34
+ } from "./chunk-7K2YZTLD.js";
35
+
36
+ // src/components/system-status.ts
37
+ init_log_and_swallow();
38
+ init_soul_bundle();
39
+ import { readFileSync, existsSync } from "node:fs";
40
+ import { join } from "node:path";
41
+ import { homedir } from "node:os";
42
+ var SOUL_CORE_FILES = ["SOUL.md", "user_profile.md", "agent_notes.md", "memory-tools.md", "core_facts.md"];
43
+ var PLATFORM_NAMES = ["telegram", "discord", "irc"];
44
+ async function getSystemStatus(ctx) {
45
+ const { getDeployedVersion } = await import("./paths-MZC2KU2C.js");
46
+ const deployed = getDeployedVersion();
47
+ const version = deployed.version;
48
+ const commit = deployed.commit || "?";
49
+ let model = "unknown";
50
+ let transportType = "unknown";
51
+ let transportProvider = "unknown";
52
+ try {
53
+ const { loadTransport, resolveAgent } = await import("./transport-config-SF6GBV47.js");
54
+ const tc = loadTransport();
55
+ const prof = tc ? resolveAgent("professor", tc) : null;
56
+ if (prof) {
57
+ model = prof.model;
58
+ transportType = (prof.provider.transport ?? "acp").toUpperCase();
59
+ transportProvider = prof.providerName ?? "unknown";
60
+ }
61
+ } catch (err) {
62
+ logAndSwallow("system_status", "op", err);
63
+ }
64
+ const serviceStates = ctx.registry.getStates();
65
+ const subsystems = [];
66
+ for (const [name, health] of ctx.phaseHealth) {
67
+ const entry = { name, status: health.status };
68
+ const svcName = phaseToService(name);
69
+ if (svcName && serviceStates[svcName]) {
70
+ const svc = serviceStates[svcName];
71
+ if (health.status === "ok" && !svc.running) {
72
+ entry.status = svc.retrying ? "retrying" : "stopped";
73
+ }
74
+ if (svc.retrying) entry.detail = `retry #${svc.retrying.attempt}`;
75
+ }
76
+ if (name === "phaseTransport" && health.status === "ok" && ctx.transport) {
77
+ entry.detail = `${transportType} (${transportProvider}), ${ctx.transport.isReady ? "ready" : "not ready"}`;
78
+ }
79
+ if (name === "phaseHeartbeat" && health.status === "ok" && ctx.heartbeat) {
80
+ try {
81
+ const lock = JSON.parse(readFileSync(ctx.bridgeLockPath, "utf-8"));
82
+ const ago = Math.round((Date.now() - (lock.lastHeartbeat || 0)) / 6e4);
83
+ entry.detail = `${Math.round(ctx.heartbeat.intervalMs / 1e3)}s, last tick ${ago}m ago`;
84
+ } catch (err) {
85
+ logAndSwallow("system_status", "op", err);
86
+ }
87
+ }
88
+ if (name === "phaseDashboard" && health.status === "ok") {
89
+ entry.detail = `:${process.env["WEB_PORT"] || "3000"}`;
90
+ }
91
+ subsystems.push(entry);
92
+ }
93
+ const platformStates = {};
94
+ for (const name of PLATFORM_NAMES) {
95
+ const svc = serviceStates[name];
96
+ if (svc) platformStates[name] = svc.running;
97
+ }
98
+ let tasks = { recurring: 0, pending: 0, paused: 0 };
99
+ try {
100
+ const { readEntries } = await import("./task-store-RAFMDQ7N.js");
101
+ const entries = readEntries();
102
+ tasks = {
103
+ recurring: entries.filter((e) => e.schedule && !e.paused).length,
104
+ pending: entries.filter((e) => !e.fired && !e.schedule).length,
105
+ paused: entries.filter((e) => e.paused).length
106
+ };
107
+ } catch (err) {
108
+ logAndSwallow("system_status", "op", err);
109
+ }
110
+ let lastBackup = null;
111
+ try {
112
+ const { readdirSync } = await import("node:fs");
113
+ const bd = join(homedir(), ".backup-abtars");
114
+ const bk = readdirSync(bd).filter((f) => f.startsWith("abtars-") && (f.endsWith(".zip") || f.endsWith(".7z"))).sort();
115
+ if (bk.length > 0) lastBackup = bk[bk.length - 1] ?? null;
116
+ } catch (err) {
117
+ logAndSwallow("system_status", "op", err);
118
+ }
119
+ let contextPercent = -1;
120
+ let sleepStatus = null;
121
+ try {
122
+ const lock = JSON.parse(readFileSync(ctx.bridgeLockPath, "utf-8"));
123
+ if (typeof lock.contextPercent === "number") contextPercent = lock.contextPercent;
124
+ sleepStatus = lock.sleepStatus ?? null;
125
+ } catch {
126
+ }
127
+ let securityMode = "off";
128
+ let trustMode = false;
129
+ try {
130
+ const { getSecurityMode } = await import("./guardrails-U7M6H2GE.js");
131
+ const { getEnv } = await import("./env-schema-YGHCKX5B.js");
132
+ securityMode = getSecurityMode();
133
+ trustMode = getEnv().trustMode === true;
134
+ } catch (err) {
135
+ logAndSwallow("system_status", "trust", err);
136
+ }
137
+ let activeSessions = 0;
138
+ try {
139
+ const { spin } = await import("./spin-76K4R6FK.js");
140
+ activeSessions = spin.listAllSessions().length;
141
+ } catch (err) {
142
+ logAndSwallow("system_status", "spin", err);
143
+ }
144
+ let kanban = null;
145
+ try {
146
+ const { kanbanList } = await import("./kanban-board-4AI5Z6B5.js");
147
+ const all = kanbanList();
148
+ const active = all.filter((c) => ["queued", "running", "delivering"].includes(c.status)).length;
149
+ kanban = { active, total: all.length };
150
+ } catch (err) {
151
+ logAndSwallow("system_status", "kanban", err);
152
+ }
153
+ let soulBundle = null;
154
+ try {
155
+ const { getEnv } = await import("./env-schema-YGHCKX5B.js");
156
+ const memoryProvider = getEnv().memory ?? "abmind";
157
+ if (memoryProvider === "abmind" || memoryProvider === "auto") {
158
+ const coreDir = join(homedir(), ".abmind", "memory", "core");
159
+ const available = SOUL_CORE_FILES.filter((f) => existsSync(join(coreDir, f))).length;
160
+ soulBundle = { available, total: SOUL_CORE_FILES.length };
161
+ }
162
+ } catch (err) {
163
+ logAndSwallow("system_status", "soul", err);
164
+ }
165
+ let peersConfigured = 0;
166
+ try {
167
+ const { abtarsHome } = await import("./paths-MZC2KU2C.js");
168
+ const peersPath = join(abtarsHome(), "config", "peers.json");
169
+ if (existsSync(peersPath)) {
170
+ const peers = JSON.parse(readFileSync(peersPath, "utf-8"));
171
+ peersConfigured = Object.keys(peers).filter((k) => k !== "self").length;
172
+ }
173
+ } catch (err) {
174
+ logAndSwallow("system_status", "peers", err);
175
+ }
176
+ return {
177
+ version,
178
+ commit,
179
+ model,
180
+ transportType,
181
+ transportProvider,
182
+ transportReady: ctx.transport?.isReady ?? false,
183
+ uptimeMs: Date.now() - ctx.startedAt,
184
+ contextPercent,
185
+ sleepStatus,
186
+ subsystems,
187
+ tasks,
188
+ lastBackup,
189
+ securityMode,
190
+ trustMode,
191
+ activeSessions,
192
+ kanban,
193
+ soulBundle,
194
+ peersConfigured,
195
+ platformStates
196
+ };
197
+ }
198
+ function phaseToService(phaseName) {
199
+ switch (phaseName) {
200
+ case "phaseAgentApi":
201
+ return "agent-api";
202
+ default:
203
+ return null;
204
+ }
205
+ }
206
+ function renderStatusText(status) {
207
+ const uptime = formatUptime(status.uptimeMs);
208
+ const failures = status.subsystems.filter((s) => s.status === "failed" || s.status === "stopped").length;
209
+ const mood = failures === 0 ? "\u{1F60A}" : failures <= 2 ? "\u{1F610}" : "\u{1F61F}";
210
+ const sleepLabel = status.sleepStatus ?? "awake";
211
+ const lines = [
212
+ `abTARS\u2122 ${getInstanceName()} \u2014 ${sleepLabel} ${mood}`,
213
+ ` PID ${process.pid} (up ${uptime})`
214
+ ];
215
+ const wdPid = process.env["ABTARS_WATCHDOG_PID"];
216
+ if (wdPid && wdPid !== "0") {
217
+ try {
218
+ process.kill(Number(wdPid), 0);
219
+ lines.push(` Watchdog: PID ${wdPid}`);
220
+ } catch {
221
+ lines.push(" Watchdog: not running (stale PID)");
222
+ }
223
+ } else {
224
+ lines.push(" Watchdog: not detected");
225
+ }
226
+ lines.push(` Security: ${status.securityMode}`);
227
+ if (status.trustMode) lines.push(" Trust: (trusted)");
228
+ lines.push("", "Body:");
229
+ const platformEntries = ["telegram", "discord", "irc"].filter((name) => name in status.platformStates).map((name) => `${status.platformStates[name] ? "\u2713" : "\u2717"} ${name.charAt(0).toUpperCase() + name.slice(1)}`);
230
+ if (platformEntries.length > 0) {
231
+ lines.push(` \u2713 platforms: ${platformEntries.join(" ")}`);
232
+ } else {
233
+ const platformSub = status.subsystems.find((s) => s.name === "phasePlatforms");
234
+ lines.push(` ${subIcon(platformSub)} platforms${platformSub?.detail ? `: ${platformSub.detail}` : ""}`);
235
+ }
236
+ const dashSub = status.subsystems.find((s) => s.name === "phaseDashboard");
237
+ const webPort = (process.env["WEB_PORT"] ?? "").replace(/^:/, "");
238
+ if (dashSub && dashSub.status !== "skipped") {
239
+ lines.push(` ${subIcon(dashSub)} dashboard${webPort ? `: ${webPort}` : ""}`);
240
+ } else {
241
+ lines.push(" \u25CB dashboard: disabled");
242
+ }
243
+ lines.push("", "Heart:");
244
+ try {
245
+ const { getHeartbeatInstance } = (init_heartbeat_system(), __toCommonJS(heartbeat_system_exports));
246
+ const hb = getHeartbeatInstance();
247
+ if (hb) {
248
+ const intervalSec = Math.round(hb.intervalMs / 1e3);
249
+ let lastTickAgo = "";
250
+ try {
251
+ const lock = JSON.parse(readFileSync(join(homedir(), ".abtars", "bridge.lock"), "utf-8"));
252
+ if (lock.lastHeartbeat) {
253
+ const agoSec = Math.round((Date.now() - lock.lastHeartbeat) / 1e3);
254
+ lastTickAgo = ` / ${agoSec < 60 ? `${agoSec}s ago` : `${Math.round(agoSec / 60)}m ago`}`;
255
+ }
256
+ } catch {
257
+ }
258
+ lines.push(` ${hb.isRunning ? "\u2713" : "\u2717"} heartbeat: ${intervalSec}s${lastTickAgo}`);
259
+ lines.push(` \u2713 internal tasks: ${hb.getTaskNames().length}`);
260
+ } else {
261
+ lines.push(" \u2717 heartbeat: not running");
262
+ }
263
+ } catch {
264
+ lines.push(" \u25CB heartbeat: not loaded");
265
+ }
266
+ lines.push("", "Brain:");
267
+ const modelShort = status.model.split("/").pop() ?? status.model;
268
+ let lastPromptStr = "";
269
+ try {
270
+ const lock = JSON.parse(readFileSync(join(homedir(), ".abtars", "bridge.lock"), "utf-8"));
271
+ if (lock.lastPromptAt) {
272
+ const agoSec = Math.round((Date.now() - lock.lastPromptAt) / 1e3);
273
+ lastPromptStr = agoSec < 60 ? `${agoSec}s ago` : `${Math.round(agoSec / 60)}m ago`;
274
+ }
275
+ } catch {
276
+ }
277
+ lines.push(` \u2713 model: ${modelShort}${lastPromptStr ? ` / ${lastPromptStr}` : ""}`);
278
+ lines.push(` \u2713 spin: ${status.activeSessions} active session${status.activeSessions !== 1 ? "s" : ""}`);
279
+ if (status.kanban) {
280
+ lines.push(` \u2713 kanban: ${status.kanban.active}/${status.kanban.total}`);
281
+ } else {
282
+ lines.push(" \u2717 kanban: not initialized");
283
+ }
284
+ try {
285
+ const { abtarsHome } = (init_paths(), __toCommonJS(paths_exports));
286
+ const policyExists = existsSync(join(abtarsHome(), "config", "sha-policy.json"));
287
+ lines.push(` ${policyExists ? "\u2713" : "~"} SHA: ${policyExists ? "rules configured" : "no policy configured"}`);
288
+ } catch {
289
+ lines.push(" ~ SHA: no policy configured");
290
+ }
291
+ try {
292
+ const { getSkillCache } = (init_hotskills(), __toCommonJS(hotskills_exports));
293
+ const skills = getSkillCache();
294
+ const active = skills.filter((s) => !s.skipped).length;
295
+ lines.push(` \u2713 skills: ${active} active`);
296
+ } catch {
297
+ }
298
+ lines.push("", "Soul:");
299
+ if (status.soulBundle) {
300
+ const allPresent = status.soulBundle.available === status.soulBundle.total;
301
+ lines.push(` ${allPresent ? "\u2713" : "~"} memory: abmind working`);
302
+ lines.push(` soul bundle: ${status.soulBundle.available}/${status.soulBundle.total} available`);
303
+ } else {
304
+ lines.push(" \u2717 memory: none");
305
+ }
306
+ lines.push("", "Tribe:");
307
+ const apiSub = status.subsystems.find((s) => s.name === "phaseAgentApi");
308
+ const apiPort = (process.env["AGENT_API_PORT"] ?? "").replace(/^:/, "");
309
+ lines.push(` ${subIcon(apiSub)} agent-api${apiPort ? `: ${apiPort}` : ""}`);
310
+ if (status.peersConfigured > 0) {
311
+ lines.push(` \u2713 peers: ${status.peersConfigured} configured`);
312
+ } else {
313
+ lines.push(" \u25CB peers: none configured");
314
+ }
315
+ const a2aSub = status.subsystems.find((s) => s.name === "phaseA2a" || s.name === "phaseGossip");
316
+ lines.push(` ${subIcon(a2aSub)} a2a${a2aSub?.detail ? `: ${a2aSub.detail}` : ""}`);
317
+ lines.push("");
318
+ lines.push(`Tasks: ${status.tasks.recurring} recurring, ${status.tasks.pending} pending${status.tasks.paused ? `, ${status.tasks.paused} paused` : ""}`);
319
+ if (status.lastBackup) lines.push(`Last backup: ${status.lastBackup}`);
320
+ return lines.join("\n");
321
+ }
322
+ function subIcon(sub) {
323
+ if (!sub) return "\u25CB";
324
+ switch (sub.status) {
325
+ case "ok":
326
+ return "\u2713";
327
+ case "skipped":
328
+ return "\u25CB";
329
+ default:
330
+ return "\u2717";
331
+ }
332
+ }
333
+ function formatUptime(ms) {
334
+ const s = Math.floor(ms / 1e3);
335
+ const m = Math.floor(s / 60) % 60;
336
+ const h = Math.floor(s / 3600) % 24;
337
+ const d = Math.floor(s / 86400);
338
+ if (d > 0) return `${d}d ${h}h ${m}m`;
339
+ if (h > 0) return `${h}h ${m}m`;
340
+ return `${m}m`;
341
+ }
342
+ export {
343
+ getSystemStatus,
344
+ renderStatusText
345
+ };
346
+ //# sourceMappingURL=system-status-PLPWV4RF.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/system-status.ts"],
4
+ "sourcesContent": ["/**\n * system-status.ts \u2014 Single source of truth for bridge status.\n * One collector, many renderers. Used by /status (text), dashboard (HTML), future API (JSON).\n */\n\nimport { logAndSwallow } from \"./log-and-swallow.js\";\nimport { getInstanceName } from \"./soul-bundle.js\";\nimport { readFileSync, existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport type { ServiceState } from \"./service-registry.js\";\n\nexport interface SubsystemHealth {\n name: string;\n status: \"ok\" | \"failed\" | \"skipped\" | \"stopped\" | \"retrying\";\n detail?: string;\n}\n\nexport interface SystemStatus {\n version: string;\n commit: string;\n model: string;\n transportType: string;\n transportProvider: string;\n transportReady: boolean;\n uptimeMs: number;\n contextPercent: number;\n sleepStatus: string | null;\n subsystems: SubsystemHealth[];\n tasks: { recurring: number; pending: number; paused: number };\n lastBackup: string | null;\n // New fields for redesigned /status output\n securityMode: string;\n trustMode: boolean;\n activeSessions: number;\n kanban: { active: number; total: number } | null;\n soulBundle: { available: number; total: number } | null;\n peersConfigured: number;\n /** Per-platform running state: key = \"telegram\"/\"discord\"/\"irc\", value = running */\n platformStates: Record<string, boolean>;\n}\n\nexport interface StatusContext {\n phaseHealth: Map<string, { status: \"ok\" | \"failed\" | \"skipped\"; error?: string }>;\n registry: { getStates(): Record<string, ServiceState> };\n transport: { isReady: boolean } | null;\n startedAt: number;\n bridgeLockPath: string;\n heartbeat: { intervalMs: number } | null;\n}\n\nconst SOUL_CORE_FILES = [\"SOUL.md\", \"user_profile.md\", \"agent_notes.md\", \"memory-tools.md\", \"core_facts.md\"] as const;\nconst PLATFORM_NAMES = [\"telegram\", \"discord\", \"irc\"] as const;\n\nexport async function getSystemStatus(ctx: StatusContext): Promise<SystemStatus> {\n // Version + commit from manifest.json (single source of truth)\n const { getDeployedVersion } = await import(\"../paths.js\");\n const deployed = getDeployedVersion();\n const version = deployed.version;\n const commit = deployed.commit || \"?\";\n\n // Model + transport\n let model = \"unknown\";\n let transportType = \"unknown\";\n let transportProvider = \"unknown\";\n try {\n const { loadTransport, resolveAgent } = await import(\"./transport-config.js\");\n const tc = loadTransport();\n const prof = tc ? resolveAgent(\"professor\", tc) : null;\n if (prof) {\n model = prof.model;\n transportType = (prof.provider.transport ?? \"acp\").toUpperCase();\n transportProvider = prof.providerName ?? \"unknown\";\n }\n } catch (err) { logAndSwallow(\"system_status\", \"op\", err); }\n\n // Subsystem health: merge phaseHealth + ServiceRegistry live state\n const serviceStates = ctx.registry.getStates();\n const subsystems: SubsystemHealth[] = [];\n\n for (const [name, health] of ctx.phaseHealth) {\n const entry: SubsystemHealth = { name, status: health.status };\n\n const svcName = phaseToService(name);\n if (svcName && serviceStates[svcName]) {\n const svc = serviceStates[svcName] as ServiceState;\n if (health.status === \"ok\" && !svc.running) {\n entry.status = svc.retrying ? \"retrying\" : \"stopped\";\n }\n if (svc.retrying) entry.detail = `retry #${svc.retrying.attempt}`;\n }\n\n if (name === \"phaseTransport\" && health.status === \"ok\" && ctx.transport) {\n entry.detail = `${transportType} (${transportProvider}), ${ctx.transport.isReady ? \"ready\" : \"not ready\"}`;\n }\n if (name === \"phaseHeartbeat\" && health.status === \"ok\" && ctx.heartbeat) {\n try {\n const lock = JSON.parse(readFileSync(ctx.bridgeLockPath, \"utf-8\"));\n const ago = Math.round((Date.now() - (lock.lastHeartbeat || 0)) / 60000);\n entry.detail = `${Math.round(ctx.heartbeat.intervalMs / 1000)}s, last tick ${ago}m ago`;\n } catch (err) { logAndSwallow(\"system_status\", \"op\", err); }\n }\n if (name === \"phaseDashboard\" && health.status === \"ok\") {\n entry.detail = `:${process.env[\"WEB_PORT\"] || \"3000\"}`;\n }\n\n subsystems.push(entry);\n }\n\n // Platform running states (telegram, discord, irc)\n const platformStates: Record<string, boolean> = {};\n for (const name of PLATFORM_NAMES) {\n const svc = serviceStates[name];\n if (svc) platformStates[name] = svc.running;\n }\n\n // Tasks\n let tasks = { recurring: 0, pending: 0, paused: 0 };\n try {\n const { readEntries } = await import(\"./tasks/task-store.js\");\n const entries = readEntries();\n tasks = {\n recurring: entries.filter((e: any) => e.schedule && !e.paused).length,\n pending: entries.filter((e: any) => !e.fired && !e.schedule).length,\n paused: entries.filter((e: any) => e.paused).length,\n };\n } catch (err) { logAndSwallow(\"system_status\", \"op\", err); }\n\n // Last backup\n let lastBackup: string | null = null;\n try {\n const { readdirSync } = await import(\"node:fs\");\n const bd = join(homedir(), \".backup-abtars\");\n const bk = readdirSync(bd).filter((f: string) => f.startsWith(\"abtars-\") && (f.endsWith(\".zip\") || f.endsWith(\".7z\"))).sort();\n if (bk.length > 0) lastBackup = bk[bk.length - 1] ?? null;\n } catch (err) { logAndSwallow(\"system_status\", \"op\", err); }\n\n // Context percent + sleep status from bridge.lock\n let contextPercent = -1;\n let sleepStatus: string | null = null;\n try {\n const lock = JSON.parse(readFileSync(ctx.bridgeLockPath, \"utf-8\"));\n if (typeof lock.contextPercent === \"number\") contextPercent = lock.contextPercent;\n sleepStatus = lock.sleepStatus ?? null;\n } catch { /* ignore */ }\n\n // Security mode + trust\n let securityMode = \"off\";\n let trustMode = false;\n try {\n const { getSecurityMode } = await import(\"./guardrails.js\");\n const { getEnv } = await import(\"./env-schema.js\");\n securityMode = getSecurityMode();\n trustMode = (getEnv() as any).trustMode === true;\n } catch (err) { logAndSwallow(\"system_status\", \"trust\", err); }\n\n // Active Spin session count\n let activeSessions = 0;\n try {\n const { spin } = await import(\"./spin.js\");\n activeSessions = spin.listAllSessions().length;\n } catch (err) { logAndSwallow(\"system_status\", \"spin\", err); }\n\n // Kanban active/total via kanbanList\n let kanban: SystemStatus[\"kanban\"] = null;\n try {\n const { kanbanList } = await import(\"./tasks/kanban-board.js\");\n const all = kanbanList();\n const active = all.filter((c: any) => [\"queued\", \"running\", \"delivering\"].includes(c.status)).length;\n kanban = { active, total: all.length };\n } catch (err) { logAndSwallow(\"system_status\", \"kanban\", err); }\n\n // Soul bundle availability (only when abmind memory)\n let soulBundle: SystemStatus[\"soulBundle\"] = null;\n try {\n const { getEnv } = await import(\"./env-schema.js\");\n const memoryProvider = (getEnv() as any).memory ?? \"abmind\";\n if (memoryProvider === \"abmind\" || memoryProvider === \"auto\") {\n const coreDir = join(homedir(), \".abmind\", \"memory\", \"core\");\n const available = SOUL_CORE_FILES.filter(f => existsSync(join(coreDir, f))).length;\n soulBundle = { available, total: SOUL_CORE_FILES.length };\n }\n } catch (err) { logAndSwallow(\"system_status\", \"soul\", err); }\n\n // Peers configured count (exclude \"self\" entry)\n let peersConfigured = 0;\n try {\n const { abtarsHome } = await import(\"../paths.js\");\n const peersPath = join(abtarsHome(), \"config\", \"peers.json\");\n if (existsSync(peersPath)) {\n const peers = JSON.parse(readFileSync(peersPath, \"utf-8\")) as Record<string, unknown>;\n peersConfigured = Object.keys(peers).filter(k => k !== \"self\").length;\n }\n } catch (err) { logAndSwallow(\"system_status\", \"peers\", err); }\n\n return {\n version,\n commit,\n model,\n transportType,\n transportProvider,\n transportReady: ctx.transport?.isReady ?? false,\n uptimeMs: Date.now() - ctx.startedAt,\n contextPercent,\n sleepStatus,\n subsystems,\n tasks,\n lastBackup,\n securityMode,\n trustMode,\n activeSessions,\n kanban,\n soulBundle,\n peersConfigured,\n platformStates,\n };\n}\n\n/** Map phase names to ServiceRegistry service names (for live state merge). */\nfunction phaseToService(phaseName: string): string | null {\n switch (phaseName) {\n case \"phaseAgentApi\": return \"agent-api\";\n default: return null;\n }\n}\n\n/** Render SystemStatus as plain text for Telegram/Discord /status command. */\nexport function renderStatusText(status: SystemStatus): string {\n const uptime = formatUptime(status.uptimeMs);\n const failures = status.subsystems.filter(s => s.status === \"failed\" || s.status === \"stopped\").length;\n const mood = failures === 0 ? \"\uD83D\uDE0A\" : failures <= 2 ? \"\uD83D\uDE10\" : \"\uD83D\uDE1F\";\n const sleepLabel = status.sleepStatus ?? \"awake\";\n\n const lines: string[] = [\n `abTARS\u2122 ${getInstanceName()} \u2014 ${sleepLabel} ${mood}`,\n ` PID ${process.pid} (up ${uptime})`,\n ];\n\n // Watchdog\n const wdPid = process.env[\"ABTARS_WATCHDOG_PID\"];\n if (wdPid && wdPid !== \"0\") {\n try { process.kill(Number(wdPid), 0); lines.push(` Watchdog: PID ${wdPid}`); }\n catch { lines.push(\" Watchdog: not running (stale PID)\"); }\n } else {\n lines.push(\" Watchdog: not detected\");\n }\n\n lines.push(` Security: ${status.securityMode}`);\n if (status.trustMode) lines.push(\" Trust: (trusted)\");\n\n // \u2500\u2500 Body \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\", \"Body:\");\n\n // Platforms: per-platform from collected platformStates\n const platformEntries = ([\"telegram\", \"discord\", \"irc\"] as const)\n .filter(name => name in status.platformStates)\n .map(name => `${status.platformStates[name] ? \"\u2713\" : \"\u2717\"} ${name.charAt(0).toUpperCase() + name.slice(1)}`);\n\n if (platformEntries.length > 0) {\n lines.push(` \u2713 platforms: ${platformEntries.join(\" \")}`);\n } else {\n const platformSub = status.subsystems.find(s => s.name === \"phasePlatforms\");\n lines.push(` ${subIcon(platformSub)} platforms${platformSub?.detail ? `: ${platformSub.detail}` : \"\"}`);\n }\n\n const dashSub = status.subsystems.find(s => s.name === \"phaseDashboard\");\n const webPort = (process.env[\"WEB_PORT\"] ?? \"\").replace(/^:/, \"\");\n if (dashSub && dashSub.status !== \"skipped\") {\n lines.push(` ${subIcon(dashSub)} dashboard${webPort ? `: ${webPort}` : \"\"}`);\n } else {\n lines.push(\" \u25CB dashboard: disabled\");\n }\n\n // \u2500\u2500 Heart \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\", \"Heart:\");\n\n try {\n const { getHeartbeatInstance } = require(\"./heartbeat-system.js\") as typeof import(\"./heartbeat-system.js\");\n const hb = getHeartbeatInstance();\n if (hb) {\n const intervalSec = Math.round(hb.intervalMs / 1000);\n let lastTickAgo = \"\";\n try {\n const lock = JSON.parse(readFileSync(join(homedir(), \".abtars\", \"bridge.lock\"), \"utf-8\"));\n if (lock.lastHeartbeat) {\n const agoSec = Math.round((Date.now() - lock.lastHeartbeat) / 1000);\n lastTickAgo = ` / ${agoSec < 60 ? `${agoSec}s ago` : `${Math.round(agoSec / 60)}m ago`}`;\n }\n } catch { /* ignore */ }\n lines.push(` ${hb.isRunning ? \"\u2713\" : \"\u2717\"} heartbeat: ${intervalSec}s${lastTickAgo}`);\n lines.push(` \u2713 internal tasks: ${hb.getTaskNames().length}`);\n } else {\n lines.push(\" \u2717 heartbeat: not running\");\n }\n } catch { lines.push(\" \u25CB heartbeat: not loaded\"); }\n\n // \u2500\u2500 Brain \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\", \"Brain:\");\n\n const modelShort = status.model.split(\"/\").pop() ?? status.model;\n let lastPromptStr = \"\";\n try {\n const lock = JSON.parse(readFileSync(join(homedir(), \".abtars\", \"bridge.lock\"), \"utf-8\"));\n if (lock.lastPromptAt) {\n const agoSec = Math.round((Date.now() - lock.lastPromptAt) / 1000);\n lastPromptStr = agoSec < 60 ? `${agoSec}s ago` : `${Math.round(agoSec / 60)}m ago`;\n }\n } catch { /* ignore */ }\n lines.push(` \u2713 model: ${modelShort}${lastPromptStr ? ` / ${lastPromptStr}` : \"\"}`);\n\n lines.push(` \u2713 spin: ${status.activeSessions} active session${status.activeSessions !== 1 ? \"s\" : \"\"}`);\n\n if (status.kanban) {\n lines.push(` \u2713 kanban: ${status.kanban.active}/${status.kanban.total}`);\n } else {\n lines.push(\" \u2717 kanban: not initialized\");\n }\n\n // SHA \u2014 check sha-policy.json existence (same as doctor probe)\n try {\n const { abtarsHome } = require(\"../paths.js\") as typeof import(\"../paths.js\");\n const policyExists = existsSync(join(abtarsHome(), \"config\", \"sha-policy.json\"));\n lines.push(` ${policyExists ? \"\u2713\" : \"~\"} SHA: ${policyExists ? \"rules configured\" : \"no policy configured\"}`);\n } catch {\n lines.push(\" ~ SHA: no policy configured\");\n }\n\n try {\n const { getSkillCache } = require(\"../capabilities/hotskills/index.js\") as typeof import(\"../capabilities/hotskills/index.js\");\n const skills = getSkillCache();\n const active = skills.filter((s: any) => !s.skipped).length;\n lines.push(` \u2713 skills: ${active} active`);\n } catch { /* hotskills not loaded */ }\n\n // \u2500\u2500 Soul \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\", \"Soul:\");\n\n if (status.soulBundle) {\n const allPresent = status.soulBundle.available === status.soulBundle.total;\n lines.push(` ${allPresent ? \"\u2713\" : \"~\"} memory: abmind working`);\n lines.push(` soul bundle: ${status.soulBundle.available}/${status.soulBundle.total} available`);\n } else {\n lines.push(\" \u2717 memory: none\");\n }\n\n // \u2500\u2500 Tribe \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\", \"Tribe:\");\n\n const apiSub = status.subsystems.find(s => s.name === \"phaseAgentApi\");\n const apiPort = (process.env[\"AGENT_API_PORT\"] ?? \"\").replace(/^:/, \"\");\n lines.push(` ${subIcon(apiSub)} agent-api${apiPort ? `: ${apiPort}` : \"\"}`);\n\n if (status.peersConfigured > 0) {\n lines.push(` \u2713 peers: ${status.peersConfigured} configured`);\n } else {\n lines.push(\" \u25CB peers: none configured\");\n }\n\n const a2aSub = status.subsystems.find(s => s.name === \"phaseA2a\" || s.name === \"phaseGossip\");\n lines.push(` ${subIcon(a2aSub)} a2a${a2aSub?.detail ? `: ${a2aSub.detail}` : \"\"}`);\n\n // \u2500\u2500 Footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n lines.push(\"\");\n lines.push(`Tasks: ${status.tasks.recurring} recurring, ${status.tasks.pending} pending${status.tasks.paused ? `, ${status.tasks.paused} paused` : \"\"}`);\n if (status.lastBackup) lines.push(`Last backup: ${status.lastBackup}`);\n\n return lines.join(\"\\n\");\n}\n\nfunction subIcon(sub: SubsystemHealth | undefined): string {\n if (!sub) return \"\u25CB\";\n switch (sub.status) {\n case \"ok\": return \"\u2713\";\n case \"skipped\": return \"\u25CB\";\n default: return \"\u2717\";\n }\n}\n\nfunction formatUptime(ms: number): string {\n const s = Math.floor(ms / 1000);\n const m = Math.floor(s / 60) % 60;\n const h = Math.floor(s / 3600) % 24;\n const d = Math.floor(s / 86400);\n if (d > 0) return `${d}d ${h}h ${m}m`;\n if (h > 0) return `${h}h ${m}m`;\n return `${m}m`;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -7,10 +7,11 @@ import {
7
7
  recordRun,
8
8
  removeEntry,
9
9
  writeEntry
10
- } from "./chunk-HDOFJVFS.js";
11
- import "./chunk-WP7FZHMI.js";
12
- import "./chunk-OOKNHOCB.js";
13
- import "./chunk-H2K23MOF.js";
10
+ } from "./chunk-7OI46MH7.js";
11
+ import "./chunk-W2PSVV2T.js";
12
+ import "./chunk-6S3G6GPO.js";
13
+ import "./chunk-7XXISOHU.js";
14
+ import "./chunk-2BXXQG7P.js";
14
15
  import "./chunk-7K2YZTLD.js";
15
16
  export {
16
17
  closeDb,
@@ -20,4 +21,4 @@ export {
20
21
  removeEntry,
21
22
  writeEntry
22
23
  };
23
- //# sourceMappingURL=task-store-2XRDM3AW.js.map
24
+ //# sourceMappingURL=task-store-RAFMDQ7N.js.map