abtars 0.3.4-alpha.7 → 0.3.4

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 (348) hide show
  1. package/bundle/{_registry.generated-WGR4WOPT.js → _registry.generated-AVR7DK2A.js} +17 -14
  2. package/bundle/{_registry.generated-WGR4WOPT.js.map → _registry.generated-AVR7DK2A.js.map} +1 -1
  3. package/bundle/{abmind-lazy-7Z44NODV.js → abmind-lazy-E3YCFKQ5.js} +15 -5
  4. package/bundle/abtars-browser.js +4 -4
  5. package/bundle/abtars-cli.js +23 -13
  6. package/bundle/abtars-cli.js.map +2 -2
  7. package/bundle/abtars-restart.js +3 -3
  8. package/bundle/abtars-task.js +3 -3
  9. package/bundle/abtars-task.js.map +2 -2
  10. package/bundle/abtars.js +610 -455
  11. package/bundle/abtars.js.map +4 -4
  12. package/bundle/{acp-raw-client-E6FM45NC.js → acp-raw-client-UCNK3OTU.js} +2 -2
  13. package/bundle/{action-gate-G2V47NHW.js → action-gate-V4FCBHFB.js} +2 -2
  14. package/bundle/{agent-api-adapter-YAHKQMMZ.js → agent-api-adapter-7HEPYSIN.js} +3 -3
  15. package/bundle/{agent-api-rate-limit-WCFXJMGY.js → agent-api-rate-limit-RZSAM3SW.js} +4 -4
  16. package/bundle/{agent-registry-GI6CLT3Z.js → agent-registry-46A2R5KP.js} +7 -7
  17. package/bundle/{bootstrap-X2QYIZIJ.js → bootstrap-MIHJJSWU.js} +2 -2
  18. package/bundle/{bridge-lock-transport-4ZH7QTJP.js → bridge-lock-transport-7RSN7OLJ.js} +4 -4
  19. package/bundle/{browser-DMARZJIN.js → browser-F6BCWJWW.js} +6 -6
  20. package/bundle/{budget-45QOBDWA.js → budget-WUM3SPKW.js} +3 -3
  21. package/bundle/{capability-JFWX3IQF.js → capability-QVRKGRFC.js} +5 -5
  22. package/bundle/{chunk-YSKCQH6E.js → chunk-2IYJ4I66.js} +2 -2
  23. package/bundle/{chunk-KTYGKPYM.js → chunk-2NLUT5S2.js} +6 -6
  24. package/bundle/chunk-3BG3AIDP.js +191 -0
  25. package/bundle/chunk-3BG3AIDP.js.map +7 -0
  26. package/bundle/{chunk-OKAQICWY.js → chunk-3GQX34S2.js} +3 -3
  27. package/bundle/{chunk-QROWBWLL.js → chunk-3XZ773BS.js} +2 -2
  28. package/bundle/{chunk-DYBW4XXL.js → chunk-467SRLLR.js} +2 -2
  29. package/bundle/{chunk-LGP6TYFI.js → chunk-4AILRHUI.js} +97 -8
  30. package/bundle/chunk-4AILRHUI.js.map +7 -0
  31. package/bundle/{chunk-GPZNXY2U.js → chunk-4S3H4OK7.js} +4 -4
  32. package/bundle/{chunk-NDCRWEEJ.js → chunk-4Y5MJQRE.js} +6 -6
  33. package/bundle/{chunk-FRKW6LWB.js → chunk-55UWKI5C.js} +3 -3
  34. package/bundle/{chunk-4UL3KINB.js → chunk-5PNJFDSW.js} +8 -8
  35. package/bundle/{chunk-LUNA6PM5.js → chunk-5RVOEFGT.js} +4 -2
  36. package/bundle/{chunk-LUNA6PM5.js.map → chunk-5RVOEFGT.js.map} +2 -2
  37. package/bundle/{chunk-OXTSWQCX.js → chunk-5Y3FJ2Y7.js} +2 -2
  38. package/bundle/{chunk-TMUYFERL.js → chunk-6B5ZFUPD.js} +2 -2
  39. package/bundle/{chunk-65VCEC32.js → chunk-6PA5JBUU.js} +2 -2
  40. package/bundle/chunk-BNXV7SZI.js +195 -0
  41. package/bundle/chunk-BNXV7SZI.js.map +7 -0
  42. package/bundle/{chunk-AFREM7FX.js → chunk-CK7YTA2F.js} +2 -2
  43. package/bundle/{chunk-NRUSRJXR.js → chunk-DZJ5QZFD.js} +2 -2
  44. package/bundle/{chunk-YRSMGJFP.js → chunk-E67KESEG.js} +2 -2
  45. package/bundle/{chunk-ZV4IWKDJ.js → chunk-E7XD5UGB.js} +3 -3
  46. package/bundle/{chunk-GXL7HJPT.js → chunk-EAX5ZZUL.js} +63 -39
  47. package/bundle/chunk-EAX5ZZUL.js.map +7 -0
  48. package/bundle/{chunk-PEDX56EL.js → chunk-EFGBM555.js} +2 -2
  49. package/bundle/{chunk-EQSG2CRM.js → chunk-FGYDIX54.js} +22 -15
  50. package/bundle/chunk-FGYDIX54.js.map +7 -0
  51. package/bundle/{chunk-XWRADSXO.js → chunk-GF6NVNA7.js} +15 -5
  52. package/bundle/chunk-GF6NVNA7.js.map +7 -0
  53. package/bundle/{chunk-SIFPBTI4.js → chunk-HGSHCQ5F.js} +113 -73
  54. package/bundle/chunk-HGSHCQ5F.js.map +7 -0
  55. package/bundle/{chunk-YRU2K3O6.js → chunk-IMIGG5EO.js} +39 -39
  56. package/bundle/chunk-IMIGG5EO.js.map +7 -0
  57. package/bundle/{chunk-W4EA4GCA.js → chunk-ITOFPJAV.js} +43 -31
  58. package/bundle/chunk-ITOFPJAV.js.map +7 -0
  59. package/bundle/{chunk-UPRZDU6T.js → chunk-IY6UKLPS.js} +3 -3
  60. package/bundle/{chunk-EUZDKV3C.js → chunk-J4RUFAPK.js} +3 -3
  61. package/bundle/{chunk-HZDLFLRP.js → chunk-J7DRPVMU.js} +35 -5
  62. package/bundle/chunk-J7DRPVMU.js.map +7 -0
  63. package/bundle/{chunk-EGL6UMAO.js → chunk-JG4BKXBN.js} +7 -1
  64. package/bundle/chunk-JG4BKXBN.js.map +7 -0
  65. package/bundle/{chunk-5B5B6EHL.js → chunk-JLWYPGWI.js} +5 -5
  66. package/bundle/{chunk-5QUTMUIK.js → chunk-JXYWDAHD.js} +12 -12
  67. package/bundle/{chunk-GRVWZO4C.js → chunk-KOSFXW2S.js} +24 -3
  68. package/bundle/{chunk-GRVWZO4C.js.map → chunk-KOSFXW2S.js.map} +1 -1
  69. package/bundle/{chunk-ONBF5DDU.js → chunk-L72RIPEC.js} +248 -182
  70. package/bundle/chunk-L72RIPEC.js.map +7 -0
  71. package/bundle/{chunk-TEFZ4JA4.js → chunk-NHPLD3C7.js} +2 -2
  72. package/bundle/{chunk-2KC5G3EA.js → chunk-OWUO5RS3.js} +5 -5
  73. package/bundle/{chunk-4MULJ5SS.js → chunk-OY4Q6AMY.js} +71 -49
  74. package/bundle/chunk-OY4Q6AMY.js.map +7 -0
  75. package/bundle/{chunk-WBTJ2E62.js → chunk-P3NODAHF.js} +2 -5
  76. package/bundle/{chunk-WBTJ2E62.js.map → chunk-P3NODAHF.js.map} +2 -2
  77. package/bundle/{chunk-BROFMHC2.js → chunk-PB5GF4FG.js} +334 -237
  78. package/bundle/chunk-PB5GF4FG.js.map +7 -0
  79. package/bundle/{chunk-WYHGNI56.js → chunk-PMD5BLFS.js} +6 -6
  80. package/bundle/{chunk-URQPDCK5.js → chunk-Q66LQMMZ.js} +3 -3
  81. package/bundle/{chunk-HKRSMUXJ.js → chunk-SC2Y5NR2.js} +71 -132
  82. package/bundle/chunk-SC2Y5NR2.js.map +7 -0
  83. package/bundle/chunk-SFL4EPCZ.js +555 -0
  84. package/bundle/chunk-SFL4EPCZ.js.map +7 -0
  85. package/bundle/{chunk-LDUOOKQY.js → chunk-SJPUNDZ3.js} +5 -5
  86. package/bundle/{chunk-LDUOOKQY.js.map → chunk-SJPUNDZ3.js.map} +1 -1
  87. package/bundle/{chunk-JQDJPUHM.js → chunk-TWB2ZGVH.js} +2 -2
  88. package/bundle/{chunk-IJT4KWXT.js → chunk-U4U47YE7.js} +2 -2
  89. package/bundle/{chunk-2FAZIA37.js → chunk-W546CU3A.js} +3 -3
  90. package/bundle/chunk-WC5O5KOE.js +211 -0
  91. package/bundle/chunk-WC5O5KOE.js.map +7 -0
  92. package/bundle/{chunk-JNIHEDKF.js → chunk-XPWYDNWL.js} +2 -2
  93. package/bundle/{chunk-GWILHZPT.js → chunk-XRTXYN66.js} +10 -7
  94. package/bundle/{chunk-GWILHZPT.js.map → chunk-XRTXYN66.js.map} +2 -2
  95. package/bundle/{chunk-EFJVUJBE.js → chunk-Y5FEFKGM.js} +6 -6
  96. package/bundle/chunk-YJZE4OK3.js +169 -0
  97. package/bundle/chunk-YJZE4OK3.js.map +7 -0
  98. package/bundle/{chunk-GVM5YU5I.js → chunk-Z4FZPB42.js} +2 -2
  99. package/bundle/{chunk-7BSQ5UQO.js → chunk-ZSIDQ66D.js} +3 -3
  100. package/bundle/{chunk-XX6BGTPO.js → chunk-ZZZCJJEO.js} +4 -4
  101. package/bundle/{commands-XYEGVUZF.js → commands-2ZW6CMLC.js} +17 -16
  102. package/bundle/{config-M3P5IOAI.js → config-YMY5YHKN.js} +6 -6
  103. package/bundle/{context-2RJHC2LE.js → context-CL2RSLII.js} +7 -5
  104. package/bundle/context-CL2RSLII.js.map +7 -0
  105. package/bundle/{daemon-TB23FFWY.js → daemon-D7SU63OY.js} +3 -3
  106. package/bundle/{delegation-tools-QKNYQGTQ.js → delegation-tools-WS7Z56KZ.js} +12 -12
  107. package/bundle/{deploy-EPDWNHJU.js → deploy-AMTVKIMU.js} +2 -2
  108. package/bundle/{deps-WVK553KF.js → deps-T63AVJKJ.js} +3 -3
  109. package/bundle/{direct-api-transport-E3LNDBJT.js → direct-api-transport-QNNY2WWP.js} +56 -33
  110. package/bundle/direct-api-transport-QNNY2WWP.js.map +7 -0
  111. package/bundle/{discord-adapter-IT3KP3VB.js → discord-adapter-ABAD56Y2.js} +21 -20
  112. package/bundle/{discord-adapter-IT3KP3VB.js.map → discord-adapter-ABAD56Y2.js.map} +1 -1
  113. package/bundle/{dns-wakeup-IDOJIXBX.js → dns-wakeup-V3LEFXPE.js} +9 -33
  114. package/bundle/dns-wakeup-V3LEFXPE.js.map +7 -0
  115. package/bundle/{doctor-probes-B54JFIW3.js → doctor-probes-O6YI6XSZ.js} +6 -2
  116. package/bundle/{env-schema-4JXQUOH4.js → env-schema-B5RB32DC.js} +3 -3
  117. package/bundle/{gossip-3C3BSNPN.js → gossip-SKRCPOBS.js} +9 -5
  118. package/bundle/{guardrails-DL7ZSWVN.js → guardrails-64GQ5Y5K.js} +4 -4
  119. package/bundle/{heartbeat-system-MVTRS4GP.js → heartbeat-system-X4MUTKJD.js} +6 -6
  120. package/bundle/{heartbeat-tier3-ABWL3P7M.js → heartbeat-tier3-2PTPWEQQ.js} +53 -76
  121. package/bundle/heartbeat-tier3-2PTPWEQQ.js.map +7 -0
  122. package/bundle/{hook-system-M3POLUIB.js → hook-system-YB635OC4.js} +3 -3
  123. package/bundle/{hotskills-FWX4QI7V.js → hotskills-Q75D2DK3.js} +5 -5
  124. package/bundle/{install-OS3CU7NF.js → install-RFKKFSGS.js} +17 -30
  125. package/bundle/install-RFKKFSGS.js.map +7 -0
  126. package/bundle/{install-manifest-5PPWMD2W.js → install-manifest-J7ICPCJN.js} +2 -2
  127. package/bundle/{irc-adapter-PTTZD32W.js → irc-adapter-TVEV4R6H.js} +3 -3
  128. package/bundle/{irc-config-CP7ZMUOX.js → irc-config-M676FOFI.js} +4 -4
  129. package/bundle/{kanban-board-M326B2XJ.js → kanban-board-DLEJUCNN.js} +9 -7
  130. package/bundle/{kanban-channel-IJ52OMNA.js → kanban-channel-XOLUHJZJ.js} +6 -6
  131. package/bundle/kanban-delivery-C4QPBNPX.js +45 -0
  132. package/bundle/kanban-delivery-C4QPBNPX.js.map +7 -0
  133. package/bundle/{lazy-require-KCRVT4SI.js → lazy-require-JKQSALXN.js} +3 -3
  134. package/bundle/{logger-OWCSNYCA.js → logger-3EGHBD4R.js} +2 -2
  135. package/bundle/{main-chat-ZNUZCTNS.js → main-chat-3H63REKK.js} +4 -4
  136. package/bundle/{master-user-HSKM4ZFN.js → master-user-MUBUP3KD.js} +5 -5
  137. package/bundle/{media-utils-3ZYOD7SK.js → media-utils-HUUIALAJ.js} +3 -3
  138. package/bundle/{message-pipeline-P5GAQU4Z.js → message-pipeline-GRDRWONR.js} +17 -16
  139. package/bundle/meta.json +3699 -3138
  140. package/bundle/{metrics-collector-L3VPEHII.js → metrics-collector-YMUGY3PI.js} +31 -2
  141. package/bundle/metrics-collector-YMUGY3PI.js.map +7 -0
  142. package/bundle/{model-health-registry-MLEIZSTV.js → model-health-registry-QADMFQFQ.js} +2 -2
  143. package/bundle/{nerve-IGSXBKZZ.js → nerve-QPAEBRKX.js} +3 -3
  144. package/bundle/{notification-BFSIEECG.js → notification-3JICGXWU.js} +6 -6
  145. package/bundle/{openrouter-credits-NTVZDRYM.js → openrouter-credits-7NEIPYJN.js} +3 -3
  146. package/bundle/{orc-tools-4CHEFWSN.js → orc-tools-UZVPONKY.js} +5 -3
  147. package/bundle/{peer-auth-QC4EF2PM.js → peer-auth-RI43DKJE.js} +24 -15
  148. package/bundle/{peer-client-RGEU5HOK.js → peer-client-UITTMWJ2.js} +34 -29
  149. package/bundle/peer-client-UITTMWJ2.js.map +7 -0
  150. package/bundle/{peer-config-TN55LFDC.js → peer-config-URM7DCW6.js} +9 -4
  151. package/bundle/{peer-transport-I6JPLFZ2.js → peer-transport-SI7I72DB.js} +12 -10
  152. package/bundle/{phase-transport-PGKU2KD4.js → phase-transport-ESWWACZI.js} +17 -17
  153. package/bundle/{reconcile-CTFCLQRN.js → reconcile-GFDQYNBD.js} +3 -3
  154. package/bundle/{reconciler-EBKH3JNU.js → reconciler-IEUJXJN2.js} +12 -12
  155. package/bundle/{restore-IFHPI7I7.js → restore-FARTGLQQ.js} +3 -3
  156. package/bundle/{rollback-ANRI3T5Z.js → rollback-GEWPZABG.js} +2 -2
  157. package/bundle/{sandbox-runtime-QROWHDCS.js → sandbox-runtime-DV6E25J6.js} +2 -2
  158. package/bundle/{self-healer-utils-IFAYOQO2.js → self-healer-utils-P4SKNNEM.js} +3 -3
  159. package/bundle/{sha-tracker-ZWBP6CIJ.js → sha-tracker-77SHLYNY.js} +3 -3
  160. package/bundle/{skill-session-BMSRQSHV.js → skill-session-5HSMXY54.js} +3 -3
  161. package/bundle/{skill-stats-JORH5DGM.js → skill-stats-MI3RSWWL.js} +4 -4
  162. package/bundle/{skill-watcher-E4MGLKLS.js → skill-watcher-5L7JE6TN.js} +4 -4
  163. package/bundle/{sleep-36XS6MHJ.js → sleep-I4JFASCY.js} +11 -8
  164. package/bundle/{soul-bundle-VWAVHCZ6.js → soul-bundle-522C3IRH.js} +9 -8
  165. package/bundle/{spin-TI3TSVVT.js → spin-VHNGNWTD.js} +11 -11
  166. package/bundle/{spin-notifications-SE2HVZI7.js → spin-notifications-7NC5XZEM.js} +5 -5
  167. package/bundle/{spin-types-BLPYAETA.js → spin-types-C5KOQOPD.js} +7 -3
  168. package/bundle/{sse-parser-anthropic-A6R4Z2TB.js → sse-parser-anthropic-MMTVWHLI.js} +3 -3
  169. package/bundle/{sse-parser-responses-HSZY3QGJ.js → sse-parser-responses-3AOFN64C.js} +3 -3
  170. package/bundle/{ssrf-guard-O6SHIK6Q.js → ssrf-guard-U2JA72TC.js} +3 -3
  171. package/bundle/{start-7QZIWO3S.js → start-H5IUFAWF.js} +4 -2
  172. package/bundle/{start-7QZIWO3S.js.map → start-H5IUFAWF.js.map} +2 -2
  173. package/bundle/{stt-LGVPXMVR.js → stt-PSOPPBV4.js} +4 -4
  174. package/bundle/{system-status-JZU5FO7B.js → system-status-4LYGOFNO.js} +38 -24
  175. package/bundle/system-status-4LYGOFNO.js.map +7 -0
  176. package/bundle/{task-store-W5BFIAIH.js → task-store-MNCW42BW.js} +4 -4
  177. package/bundle/{telegram-adapter-H6PMFPMB.js → telegram-adapter-O6KIZDY6.js} +69 -46
  178. package/bundle/telegram-adapter-O6KIZDY6.js.map +7 -0
  179. package/bundle/{tool-registry-IZX2IOBM.js → tool-registry-JJMWCQKZ.js} +26 -24
  180. package/bundle/{tool-sandbox-4UC6GAKA.js → tool-sandbox-CNL6V6IH.js} +4 -4
  181. package/bundle/{transport-config-KBF5W2DP.js → transport-config-6MB2K2XC.js} +7 -7
  182. package/bundle/tribe-GDTFYJTK.js +111 -0
  183. package/bundle/tribe-GDTFYJTK.js.map +7 -0
  184. package/bundle/{update-MESYO4LO.js → update-HGQAOC5L.js} +3 -3
  185. package/bundle/{usage-tracker-NXD364VX.js → usage-tracker-SR4BI6ZT.js} +2 -2
  186. package/bundle/{user-registry-35BW4XKM.js → user-registry-4PACZJIJ.js} +4 -4
  187. package/bundle/wire-platform-KKPWNNNQ.js +88 -0
  188. package/bundle/wire-platform-KKPWNNNQ.js.map +7 -0
  189. package/bundle/ws-peer-client-U3NNPOK7.js +370 -0
  190. package/bundle/ws-peer-client-U3NNPOK7.js.map +7 -0
  191. package/package.json +1 -1
  192. package/scripts/abtars-watchdog.service +2 -1
  193. package/scripts/abtars-watchdog.sh +1 -5
  194. package/scripts/emergency-deploy.sh +2 -2
  195. package/scripts/emergency-update.sh +88 -41
  196. package/bundle/chunk-3AAENI2K.js +0 -210
  197. package/bundle/chunk-3AAENI2K.js.map +0 -7
  198. package/bundle/chunk-4MULJ5SS.js.map +0 -7
  199. package/bundle/chunk-4S554KLW.js +0 -105
  200. package/bundle/chunk-4S554KLW.js.map +0 -7
  201. package/bundle/chunk-5GCLBUBS.js +0 -257
  202. package/bundle/chunk-5GCLBUBS.js.map +0 -7
  203. package/bundle/chunk-BROFMHC2.js.map +0 -7
  204. package/bundle/chunk-EGL6UMAO.js.map +0 -7
  205. package/bundle/chunk-EQSG2CRM.js.map +0 -7
  206. package/bundle/chunk-GXL7HJPT.js.map +0 -7
  207. package/bundle/chunk-HKRSMUXJ.js.map +0 -7
  208. package/bundle/chunk-HT2BPTZY.js +0 -241
  209. package/bundle/chunk-HT2BPTZY.js.map +0 -7
  210. package/bundle/chunk-HZDLFLRP.js.map +0 -7
  211. package/bundle/chunk-IKUZPMVA.js +0 -82
  212. package/bundle/chunk-IKUZPMVA.js.map +0 -7
  213. package/bundle/chunk-LGP6TYFI.js.map +0 -7
  214. package/bundle/chunk-ONBF5DDU.js.map +0 -7
  215. package/bundle/chunk-RWRRGE4U.js +0 -72
  216. package/bundle/chunk-RWRRGE4U.js.map +0 -7
  217. package/bundle/chunk-SIFPBTI4.js.map +0 -7
  218. package/bundle/chunk-VUIX5AGB.js +0 -65
  219. package/bundle/chunk-VUIX5AGB.js.map +0 -7
  220. package/bundle/chunk-W4EA4GCA.js.map +0 -7
  221. package/bundle/chunk-XWRADSXO.js.map +0 -7
  222. package/bundle/chunk-Y76VUJSF.js +0 -75
  223. package/bundle/chunk-Y76VUJSF.js.map +0 -7
  224. package/bundle/chunk-YRU2K3O6.js.map +0 -7
  225. package/bundle/context-2RJHC2LE.js.map +0 -7
  226. package/bundle/direct-api-transport-E3LNDBJT.js.map +0 -7
  227. package/bundle/dns-wakeup-IDOJIXBX.js.map +0 -7
  228. package/bundle/heartbeat-tier3-ABWL3P7M.js.map +0 -7
  229. package/bundle/install-OS3CU7NF.js.map +0 -7
  230. package/bundle/metrics-collector-L3VPEHII.js.map +0 -7
  231. package/bundle/peer-client-RGEU5HOK.js.map +0 -7
  232. package/bundle/peer-jwt-NCCPXJRX.js +0 -18
  233. package/bundle/public/css/dashboard.css +0 -542
  234. package/bundle/public/index.html +0 -180
  235. package/bundle/public/js/app.js +0 -437
  236. package/bundle/public/memory-universe.js +0 -384
  237. package/bundle/stream-single-RFJNUTL6.js +0 -34
  238. package/bundle/stream-single-RFJNUTL6.js.map +0 -7
  239. package/bundle/subagent-runtime-5QUVES3W.js +0 -14
  240. package/bundle/system-status-JZU5FO7B.js.map +0 -7
  241. package/bundle/telegram-adapter-H6PMFPMB.js.map +0 -7
  242. package/bundle/usage-tracker-NXD364VX.js.map +0 -7
  243. package/bundle/user-registry-35BW4XKM.js.map +0 -7
  244. package/bundle/ws-peer-client-AIXCXF7V.js +0 -173
  245. package/bundle/ws-peer-client-AIXCXF7V.js.map +0 -7
  246. /package/bundle/{abmind-lazy-7Z44NODV.js.map → abmind-lazy-E3YCFKQ5.js.map} +0 -0
  247. /package/bundle/{acp-raw-client-E6FM45NC.js.map → acp-raw-client-UCNK3OTU.js.map} +0 -0
  248. /package/bundle/{action-gate-G2V47NHW.js.map → action-gate-V4FCBHFB.js.map} +0 -0
  249. /package/bundle/{agent-api-adapter-YAHKQMMZ.js.map → agent-api-adapter-7HEPYSIN.js.map} +0 -0
  250. /package/bundle/{agent-api-rate-limit-WCFXJMGY.js.map → agent-api-rate-limit-RZSAM3SW.js.map} +0 -0
  251. /package/bundle/{agent-registry-GI6CLT3Z.js.map → agent-registry-46A2R5KP.js.map} +0 -0
  252. /package/bundle/{bootstrap-X2QYIZIJ.js.map → bootstrap-MIHJJSWU.js.map} +0 -0
  253. /package/bundle/{bridge-lock-transport-4ZH7QTJP.js.map → bridge-lock-transport-7RSN7OLJ.js.map} +0 -0
  254. /package/bundle/{browser-DMARZJIN.js.map → browser-F6BCWJWW.js.map} +0 -0
  255. /package/bundle/{budget-45QOBDWA.js.map → budget-WUM3SPKW.js.map} +0 -0
  256. /package/bundle/{capability-JFWX3IQF.js.map → capability-QVRKGRFC.js.map} +0 -0
  257. /package/bundle/{chunk-YSKCQH6E.js.map → chunk-2IYJ4I66.js.map} +0 -0
  258. /package/bundle/{chunk-KTYGKPYM.js.map → chunk-2NLUT5S2.js.map} +0 -0
  259. /package/bundle/{chunk-OKAQICWY.js.map → chunk-3GQX34S2.js.map} +0 -0
  260. /package/bundle/{chunk-QROWBWLL.js.map → chunk-3XZ773BS.js.map} +0 -0
  261. /package/bundle/{chunk-DYBW4XXL.js.map → chunk-467SRLLR.js.map} +0 -0
  262. /package/bundle/{chunk-GPZNXY2U.js.map → chunk-4S3H4OK7.js.map} +0 -0
  263. /package/bundle/{chunk-NDCRWEEJ.js.map → chunk-4Y5MJQRE.js.map} +0 -0
  264. /package/bundle/{chunk-FRKW6LWB.js.map → chunk-55UWKI5C.js.map} +0 -0
  265. /package/bundle/{chunk-4UL3KINB.js.map → chunk-5PNJFDSW.js.map} +0 -0
  266. /package/bundle/{chunk-OXTSWQCX.js.map → chunk-5Y3FJ2Y7.js.map} +0 -0
  267. /package/bundle/{chunk-TMUYFERL.js.map → chunk-6B5ZFUPD.js.map} +0 -0
  268. /package/bundle/{chunk-65VCEC32.js.map → chunk-6PA5JBUU.js.map} +0 -0
  269. /package/bundle/{chunk-AFREM7FX.js.map → chunk-CK7YTA2F.js.map} +0 -0
  270. /package/bundle/{chunk-NRUSRJXR.js.map → chunk-DZJ5QZFD.js.map} +0 -0
  271. /package/bundle/{chunk-YRSMGJFP.js.map → chunk-E67KESEG.js.map} +0 -0
  272. /package/bundle/{chunk-ZV4IWKDJ.js.map → chunk-E7XD5UGB.js.map} +0 -0
  273. /package/bundle/{chunk-PEDX56EL.js.map → chunk-EFGBM555.js.map} +0 -0
  274. /package/bundle/{chunk-UPRZDU6T.js.map → chunk-IY6UKLPS.js.map} +0 -0
  275. /package/bundle/{chunk-EUZDKV3C.js.map → chunk-J4RUFAPK.js.map} +0 -0
  276. /package/bundle/{chunk-5B5B6EHL.js.map → chunk-JLWYPGWI.js.map} +0 -0
  277. /package/bundle/{chunk-5QUTMUIK.js.map → chunk-JXYWDAHD.js.map} +0 -0
  278. /package/bundle/{chunk-TEFZ4JA4.js.map → chunk-NHPLD3C7.js.map} +0 -0
  279. /package/bundle/{chunk-2KC5G3EA.js.map → chunk-OWUO5RS3.js.map} +0 -0
  280. /package/bundle/{chunk-WYHGNI56.js.map → chunk-PMD5BLFS.js.map} +0 -0
  281. /package/bundle/{chunk-URQPDCK5.js.map → chunk-Q66LQMMZ.js.map} +0 -0
  282. /package/bundle/{chunk-JQDJPUHM.js.map → chunk-TWB2ZGVH.js.map} +0 -0
  283. /package/bundle/{chunk-IJT4KWXT.js.map → chunk-U4U47YE7.js.map} +0 -0
  284. /package/bundle/{chunk-2FAZIA37.js.map → chunk-W546CU3A.js.map} +0 -0
  285. /package/bundle/{chunk-JNIHEDKF.js.map → chunk-XPWYDNWL.js.map} +0 -0
  286. /package/bundle/{chunk-EFJVUJBE.js.map → chunk-Y5FEFKGM.js.map} +0 -0
  287. /package/bundle/{chunk-GVM5YU5I.js.map → chunk-Z4FZPB42.js.map} +0 -0
  288. /package/bundle/{chunk-7BSQ5UQO.js.map → chunk-ZSIDQ66D.js.map} +0 -0
  289. /package/bundle/{chunk-XX6BGTPO.js.map → chunk-ZZZCJJEO.js.map} +0 -0
  290. /package/bundle/{commands-XYEGVUZF.js.map → commands-2ZW6CMLC.js.map} +0 -0
  291. /package/bundle/{config-M3P5IOAI.js.map → config-YMY5YHKN.js.map} +0 -0
  292. /package/bundle/{daemon-TB23FFWY.js.map → daemon-D7SU63OY.js.map} +0 -0
  293. /package/bundle/{delegation-tools-QKNYQGTQ.js.map → delegation-tools-WS7Z56KZ.js.map} +0 -0
  294. /package/bundle/{deploy-EPDWNHJU.js.map → deploy-AMTVKIMU.js.map} +0 -0
  295. /package/bundle/{deps-WVK553KF.js.map → deps-T63AVJKJ.js.map} +0 -0
  296. /package/bundle/{doctor-probes-B54JFIW3.js.map → doctor-probes-O6YI6XSZ.js.map} +0 -0
  297. /package/bundle/{env-schema-4JXQUOH4.js.map → env-schema-B5RB32DC.js.map} +0 -0
  298. /package/bundle/{gossip-3C3BSNPN.js.map → gossip-SKRCPOBS.js.map} +0 -0
  299. /package/bundle/{guardrails-DL7ZSWVN.js.map → guardrails-64GQ5Y5K.js.map} +0 -0
  300. /package/bundle/{heartbeat-system-MVTRS4GP.js.map → heartbeat-system-X4MUTKJD.js.map} +0 -0
  301. /package/bundle/{hook-system-M3POLUIB.js.map → hook-system-YB635OC4.js.map} +0 -0
  302. /package/bundle/{hotskills-FWX4QI7V.js.map → hotskills-Q75D2DK3.js.map} +0 -0
  303. /package/bundle/{install-manifest-5PPWMD2W.js.map → install-manifest-J7ICPCJN.js.map} +0 -0
  304. /package/bundle/{irc-adapter-PTTZD32W.js.map → irc-adapter-TVEV4R6H.js.map} +0 -0
  305. /package/bundle/{irc-config-CP7ZMUOX.js.map → irc-config-M676FOFI.js.map} +0 -0
  306. /package/bundle/{kanban-board-M326B2XJ.js.map → kanban-board-DLEJUCNN.js.map} +0 -0
  307. /package/bundle/{kanban-channel-IJ52OMNA.js.map → kanban-channel-XOLUHJZJ.js.map} +0 -0
  308. /package/bundle/{lazy-require-KCRVT4SI.js.map → lazy-require-JKQSALXN.js.map} +0 -0
  309. /package/bundle/{logger-OWCSNYCA.js.map → logger-3EGHBD4R.js.map} +0 -0
  310. /package/bundle/{main-chat-ZNUZCTNS.js.map → main-chat-3H63REKK.js.map} +0 -0
  311. /package/bundle/{master-user-HSKM4ZFN.js.map → master-user-MUBUP3KD.js.map} +0 -0
  312. /package/bundle/{media-utils-3ZYOD7SK.js.map → media-utils-HUUIALAJ.js.map} +0 -0
  313. /package/bundle/{message-pipeline-P5GAQU4Z.js.map → message-pipeline-GRDRWONR.js.map} +0 -0
  314. /package/bundle/{model-health-registry-MLEIZSTV.js.map → model-health-registry-QADMFQFQ.js.map} +0 -0
  315. /package/bundle/{nerve-IGSXBKZZ.js.map → nerve-QPAEBRKX.js.map} +0 -0
  316. /package/bundle/{notification-BFSIEECG.js.map → notification-3JICGXWU.js.map} +0 -0
  317. /package/bundle/{openrouter-credits-NTVZDRYM.js.map → openrouter-credits-7NEIPYJN.js.map} +0 -0
  318. /package/bundle/{orc-tools-4CHEFWSN.js.map → orc-tools-UZVPONKY.js.map} +0 -0
  319. /package/bundle/{peer-auth-QC4EF2PM.js.map → peer-auth-RI43DKJE.js.map} +0 -0
  320. /package/bundle/{peer-config-TN55LFDC.js.map → peer-config-URM7DCW6.js.map} +0 -0
  321. /package/bundle/{peer-jwt-NCCPXJRX.js.map → peer-transport-SI7I72DB.js.map} +0 -0
  322. /package/bundle/{peer-transport-I6JPLFZ2.js.map → phase-transport-ESWWACZI.js.map} +0 -0
  323. /package/bundle/{phase-transport-PGKU2KD4.js.map → reconcile-GFDQYNBD.js.map} +0 -0
  324. /package/bundle/{reconciler-EBKH3JNU.js.map → reconciler-IEUJXJN2.js.map} +0 -0
  325. /package/bundle/{restore-IFHPI7I7.js.map → restore-FARTGLQQ.js.map} +0 -0
  326. /package/bundle/{reconcile-CTFCLQRN.js.map → rollback-GEWPZABG.js.map} +0 -0
  327. /package/bundle/{sandbox-runtime-QROWHDCS.js.map → sandbox-runtime-DV6E25J6.js.map} +0 -0
  328. /package/bundle/{self-healer-utils-IFAYOQO2.js.map → self-healer-utils-P4SKNNEM.js.map} +0 -0
  329. /package/bundle/{rollback-ANRI3T5Z.js.map → sha-tracker-77SHLYNY.js.map} +0 -0
  330. /package/bundle/{skill-session-BMSRQSHV.js.map → skill-session-5HSMXY54.js.map} +0 -0
  331. /package/bundle/{sha-tracker-ZWBP6CIJ.js.map → skill-stats-MI3RSWWL.js.map} +0 -0
  332. /package/bundle/{skill-stats-JORH5DGM.js.map → skill-watcher-5L7JE6TN.js.map} +0 -0
  333. /package/bundle/{skill-watcher-E4MGLKLS.js.map → sleep-I4JFASCY.js.map} +0 -0
  334. /package/bundle/{sleep-36XS6MHJ.js.map → soul-bundle-522C3IRH.js.map} +0 -0
  335. /package/bundle/{soul-bundle-VWAVHCZ6.js.map → spin-VHNGNWTD.js.map} +0 -0
  336. /package/bundle/{spin-notifications-SE2HVZI7.js.map → spin-notifications-7NC5XZEM.js.map} +0 -0
  337. /package/bundle/{spin-TI3TSVVT.js.map → spin-types-C5KOQOPD.js.map} +0 -0
  338. /package/bundle/{sse-parser-anthropic-A6R4Z2TB.js.map → sse-parser-anthropic-MMTVWHLI.js.map} +0 -0
  339. /package/bundle/{sse-parser-responses-HSZY3QGJ.js.map → sse-parser-responses-3AOFN64C.js.map} +0 -0
  340. /package/bundle/{ssrf-guard-O6SHIK6Q.js.map → ssrf-guard-U2JA72TC.js.map} +0 -0
  341. /package/bundle/{spin-types-BLPYAETA.js.map → stt-PSOPPBV4.js.map} +0 -0
  342. /package/bundle/{stt-LGVPXMVR.js.map → task-store-MNCW42BW.js.map} +0 -0
  343. /package/bundle/{subagent-runtime-5QUVES3W.js.map → tool-registry-JJMWCQKZ.js.map} +0 -0
  344. /package/bundle/{task-store-W5BFIAIH.js.map → tool-sandbox-CNL6V6IH.js.map} +0 -0
  345. /package/bundle/{tool-registry-IZX2IOBM.js.map → transport-config-6MB2K2XC.js.map} +0 -0
  346. /package/bundle/{tool-sandbox-4UC6GAKA.js.map → update-HGQAOC5L.js.map} +0 -0
  347. /package/bundle/{transport-config-KBF5W2DP.js.map → usage-tracker-SR4BI6ZT.js.map} +0 -0
  348. /package/bundle/{update-MESYO4LO.js.map → user-registry-4PACZJIJ.js.map} +0 -0
@@ -1,384 +0,0 @@
1
- /* Memory Universe — 3D visualization of extracted memories */
2
- /* Standalone module, loaded on demand by dashboard */
3
-
4
- (function() {
5
- 'use strict';
6
-
7
- var V = '0.183.2';
8
- var CDN = 'https://cdn.jsdelivr.net/npm/three@' + V;
9
-
10
- var TYPE_COLORS = {
11
- fact: [0.0, 0.9, 0.9], // cyan
12
- decision: [0.7, 0.3, 1.0], // purple
13
- preference: [1.0, 0.6, 0.1], // amber
14
- event: [0.2, 1.0, 0.4], // green
15
- lesson: [1.0, 0.15, 0.15], // red
16
- feedback: [1.0, 0.85, 0.2], // gold
17
- story: [0.3, 0.5, 1.0], // blue
18
- };
19
-
20
- window.initMemoryUniverse = function(token) {
21
- // Create overlay
22
- var overlay = document.createElement('div');
23
- overlay.id = 'memory-universe-overlay';
24
- overlay.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;z-index:10000;background:#000;';
25
- overlay.innerHTML = '<div id="mu-loading" style="position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#0ff;font-family:monospace;font-size:18px;">Loading Memory Universe...</div>' +
26
- '<div id="mu-info" style="display:none;position:absolute;right:0;top:0;width:340px;height:100%;background:rgba(0,0,0,0.85);border-left:1px solid #0ff3;padding:20px;overflow-y:auto;font-family:monospace;color:#e0e0e0;font-size:15px;"></div>' +
27
- '<div id="mu-tooltip" style="display:none;position:absolute;pointer-events:none;background:rgba(0,10,20,0.9);border:1px solid #0ff5;padding:8px 12px;border-radius:4px;color:#e0e0e0;font-family:monospace;font-size:12px;max-width:300px;"></div>' +
28
- '<button id="mu-close" style="position:absolute;top:16px;left:16px;z-index:10001;background:none;border:none;color:#0ff6;font-size:16px;cursor:pointer;padding:6px 10px;font-family:monospace;">← back</button>' +
29
- '<div id="mu-stats" style="position:absolute;bottom:16px;left:16px;color:#0ff8;font-family:monospace;font-size:12px;"></div>';
30
- document.body.appendChild(overlay);
31
-
32
- var closeBtn = document.getElementById('mu-close');
33
- closeBtn.onclick = destroy;
34
- document.addEventListener('keydown', onEsc);
35
-
36
- function onEsc(e) { if (e.key === 'Escape') destroy(); }
37
- function destroy() {
38
- document.removeEventListener('keydown', onEsc);
39
- if (animId) cancelAnimationFrame(animId);
40
- overlay.remove();
41
- }
42
-
43
- var animId = null;
44
- var memories = [], entities = [], links = [];
45
- var particleData = [];
46
-
47
- // Fetch data then load Three.js
48
- fetch('/api/memory/all', { headers: { 'Authorization': 'Bearer ' + token } })
49
- .then(function(r) { return r.json(); })
50
- .then(function(data) {
51
- memories = data.memories || [];
52
- // #225: entities + memory_entities dropped. Viz renders memories only;
53
- // entity-cluster and link code below is now dead-but-harmless (no-ops
54
- // on empty arrays). Future: simplify or repurpose viz — separate ticket.
55
- entities = data.entities || [];
56
- links = data.links || [];
57
- document.getElementById('mu-stats').textContent = memories.length + ' memories';
58
- // Inject import map for Three.js ES modules
59
- var im = document.createElement('script');
60
- im.type = 'importmap';
61
- im.textContent = JSON.stringify({ imports: {
62
- "three": CDN + "/build/three.module.min.js",
63
- "three/addons/": CDN + "/examples/jsm/"
64
- }});
65
- document.head.appendChild(im);
66
- return import(CDN + "/build/three.module.min.js");
67
- })
68
- .then(function(THREE) {
69
- return Promise.all([
70
- import(CDN + "/examples/jsm/controls/OrbitControls.js"),
71
- import(CDN + "/examples/jsm/postprocessing/EffectComposer.js"),
72
- import(CDN + "/examples/jsm/postprocessing/RenderPass.js"),
73
- import(CDN + "/examples/jsm/postprocessing/UnrealBloomPass.js"),
74
- ]).then(function(mods) {
75
- return { THREE: THREE, OrbitControls: mods[0].OrbitControls, EffectComposer: mods[1].EffectComposer, RenderPass: mods[2].RenderPass, UnrealBloomPass: mods[3].UnrealBloomPass };
76
- });
77
- })
78
- .then(function(m) { buildScene(m); })
79
- .catch(function(err) {
80
- document.getElementById('mu-loading').textContent = 'Error: ' + err.message;
81
- });
82
-
83
- function buildScene(m) {
84
- var THREE = m.THREE;
85
- document.getElementById('mu-loading').style.display = 'none';
86
-
87
- var w = window.innerWidth, h = window.innerHeight;
88
- var scene = new THREE.Scene();
89
- scene.background = new THREE.Color(0x000008);
90
-
91
- var camera = new THREE.PerspectiveCamera(60, w / h, 0.1, 1000);
92
- camera.position.set(0, 5, 25);
93
-
94
- var renderer = new THREE.WebGLRenderer({ antialias: true });
95
- renderer.setSize(w, h);
96
- renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
97
- renderer.toneMapping = THREE.ACESFilmicToneMapping;
98
- renderer.toneMappingExposure = 1.2;
99
- overlay.insertBefore(renderer.domElement, overlay.firstChild);
100
-
101
- // Post-processing: bloom
102
- var composer = new m.EffectComposer(renderer);
103
- composer.addPass(new m.RenderPass(scene, camera));
104
- var bloom = new m.UnrealBloomPass(new THREE.Vector2(w, h), 0.8, 0.3, 0.6);
105
- composer.addPass(bloom);
106
-
107
- // Controls
108
- var controls = new m.OrbitControls(camera, renderer.domElement);
109
- controls.enableDamping = true;
110
- controls.dampingFactor = 0.05;
111
- controls.autoRotate = true;
112
- controls.autoRotateSpeed = 0.3;
113
-
114
- // Starfield background
115
- var starGeo = new THREE.BufferGeometry();
116
- var starPos = new Float32Array(3000 * 3);
117
- for (var i = 0; i < 3000; i++) {
118
- starPos[i * 3] = (Math.random() - 0.5) * 200;
119
- starPos[i * 3 + 1] = (Math.random() - 0.5) * 200;
120
- starPos[i * 3 + 2] = (Math.random() - 0.5) * 200;
121
- }
122
- starGeo.setAttribute('position', new THREE.BufferAttribute(starPos, 3));
123
- var starMat = new THREE.ShaderMaterial({
124
- vertexShader: 'void main() { vec4 mv = modelViewMatrix * vec4(position,1.0); gl_PointSize = 1.5; gl_Position = projectionMatrix * mv; }',
125
- fragmentShader: 'void main() { float d = length(gl_PointCoord-vec2(0.5)); if(d>0.5) discard; gl_FragColor = vec4(0.2,0.27,0.4, 1.0-d*2.0); }',
126
- transparent: true, depthWrite: false,
127
- });
128
- scene.add(new THREE.Points(starGeo, starMat));
129
-
130
- // Build entity clusters — assign positions
131
- var entityPositions = {};
132
- entities.forEach(function(e, i) {
133
- var angle = (i / Math.max(entities.length, 1)) * Math.PI * 2;
134
- var r = 6 + Math.random() * 4;
135
- entityPositions[e.id] = { x: Math.cos(angle) * r, y: (Math.random() - 0.5) * 4, z: Math.sin(angle) * r };
136
- });
137
-
138
- // Map memory→entities
139
- var memEntityMap = {};
140
- links.forEach(function(l) {
141
- if (!memEntityMap[l.memory_id]) memEntityMap[l.memory_id] = [];
142
- memEntityMap[l.memory_id].push(l.entity_id);
143
- });
144
-
145
- // Memory particles
146
- var count = memories.length;
147
- var positions = new Float32Array(count * 3);
148
- var colors = new Float32Array(count * 3);
149
- var sizes = new Float32Array(count);
150
- var opacities = new Float32Array(count);
151
- var pulseRates = new Float32Array(count);
152
- var brightnesses = new Float32Array(count);
153
- var hasEmbeddings = new Float32Array(count);
154
-
155
- var now = Date.now();
156
- var oldest = memories.reduce(function(a, m) { return Math.min(a, m.created_at || now); }, now);
157
- var timeSpan = Math.max(now - oldest, 1);
158
-
159
- memories.forEach(function(mem, i) {
160
- var c = TYPE_COLORS[mem.memory_type] || TYPE_COLORS.fact;
161
-
162
- // Position: entity cluster or random sphere
163
- var px, py, pz;
164
- var memEntities = memEntityMap[mem.id];
165
- if (memEntities && memEntities.length > 0) {
166
- var ep = entityPositions[memEntities[0]];
167
- if (ep) {
168
- px = ep.x + (Math.random() - 0.5) * 3;
169
- py = ep.y + (Math.random() - 0.5) * 2;
170
- pz = ep.z + (Math.random() - 0.5) * 3;
171
- }
172
- }
173
- if (px === undefined) {
174
- var theta = Math.random() * Math.PI * 2;
175
- var phi = Math.acos(2 * Math.random() - 1);
176
- var rad = 4 + Math.random() * 10;
177
- px = rad * Math.sin(phi) * Math.cos(theta);
178
- py = ((mem.created_at - oldest) / timeSpan) * 12 - 6 + (Math.random() - 0.5) * 2;
179
- pz = rad * Math.sin(phi) * Math.sin(theta);
180
- }
181
-
182
- positions[i * 3] = px;
183
- positions[i * 3 + 1] = py;
184
- positions[i * 3 + 2] = pz;
185
-
186
- colors[i * 3] = c[0];
187
- colors[i * 3 + 1] = c[1];
188
- colors[i * 3 + 2] = c[2];
189
-
190
- sizes[i] = Math.max(0.8, Math.min(4.0, 0.8 + (mem.recall_count || 0) * 0.3));
191
-
192
- // Credibility → opacity: 1=confirmed(1.0), 6=unknown(0.3)
193
- opacities[i] = Math.max(0.3, 1.0 - ((mem.credibility || 6) - 1) * 0.14);
194
-
195
- // Pulse: emotion intensity (further from 0 = faster)
196
- pulseRates[i] = Math.abs(mem.emotion_score || 0) * 0.6;
197
-
198
- // Brightness: classification (S=1.5, C=1.1, R=0.8, U=0.5)
199
- brightnesses[i] = 0.5 + (mem.classification || 0) * 0.33;
200
-
201
- // Trust → core dot: 3=bright, 0=none
202
- hasEmbeddings[i] = (mem.trust || 0) / 3.0;
203
-
204
- particleData.push({
205
- index: i,
206
- memory: mem,
207
- basePos: { x: px, y: py, z: pz },
208
- entities: memEntities || [],
209
- });
210
- });
211
-
212
- var geo = new THREE.BufferGeometry();
213
- geo.setAttribute('position', new THREE.BufferAttribute(positions, 3));
214
- geo.setAttribute('color', new THREE.BufferAttribute(colors, 3));
215
- geo.setAttribute('size', new THREE.BufferAttribute(sizes, 1));
216
- geo.setAttribute('opacity', new THREE.BufferAttribute(opacities, 1));
217
- geo.setAttribute('pulseRate', new THREE.BufferAttribute(pulseRates, 1));
218
- geo.setAttribute('brightness', new THREE.BufferAttribute(brightnesses, 1));
219
- geo.setAttribute('hasEmbed', new THREE.BufferAttribute(hasEmbeddings, 1));
220
-
221
- var vertexShader = [
222
- 'attribute float size;',
223
- 'attribute float opacity;',
224
- 'attribute float pulseRate;',
225
- 'attribute float brightness;',
226
- 'attribute float hasEmbed;',
227
- 'uniform float uTime;',
228
- 'varying vec3 vColor;',
229
- 'varying float vOpacity;',
230
- 'varying float vHasEmbed;',
231
- 'void main() {',
232
- ' float pulse = pulseRate > 0.0 ? 0.85 + 0.15 * sin(uTime * pulseRate + float(gl_VertexID) * 1.7) : 1.0;',
233
- ' vColor = color * brightness * pulse;',
234
- ' vOpacity = opacity;',
235
- ' vHasEmbed = hasEmbed;',
236
- ' vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);',
237
- ' gl_PointSize = size * pulse * (400.0 / -mvPosition.z);',
238
- ' gl_Position = projectionMatrix * mvPosition;',
239
- '}',
240
- ].join('\n');
241
-
242
- var fragmentShader = [
243
- 'varying vec3 vColor;',
244
- 'varying float vOpacity;',
245
- 'varying float vHasEmbed;',
246
- 'void main() {',
247
- ' float d = length(gl_PointCoord - vec2(0.5));',
248
- ' if (d > 0.5) discard;',
249
- ' float glow = exp(-d * 12.0);',
250
- // Core dot for trust
251
- ' float core = vHasEmbed * smoothstep(0.08, 0.0, d) * 0.8;',
252
- ' vec3 col = vColor * glow + vec3(core);',
253
- ' gl_FragColor = vec4(col, glow * vOpacity + core);',
254
- '}',
255
- ].join('\n');
256
-
257
- var mat = new THREE.ShaderMaterial({
258
- vertexShader: vertexShader,
259
- fragmentShader: fragmentShader,
260
- uniforms: { uTime: { value: 0.0 } },
261
- vertexColors: true,
262
- transparent: true,
263
- blending: THREE.AdditiveBlending,
264
- depthWrite: false,
265
- });
266
-
267
- var points = new THREE.Points(geo, mat);
268
- scene.add(points);
269
-
270
- // Entity connection lines
271
- var lineMat = new THREE.LineBasicMaterial({ color: 0x0066aa, transparent: true, opacity: 0.08 });
272
- links.forEach(function(l) {
273
- var mems = particleData.filter(function(p) { return p.entities.indexOf(l.entity_id) >= 0; });
274
- for (var a = 0; a < mems.length; a++) {
275
- for (var b = a + 1; b < mems.length && b < a + 3; b++) {
276
- var lineGeo = new THREE.BufferGeometry().setFromPoints([
277
- new THREE.Vector3(mems[a].basePos.x, mems[a].basePos.y, mems[a].basePos.z),
278
- new THREE.Vector3(mems[b].basePos.x, mems[b].basePos.y, mems[b].basePos.z),
279
- ]);
280
- scene.add(new THREE.Line(lineGeo, lineMat));
281
- }
282
- }
283
- });
284
-
285
- // Raycaster for interaction
286
- var raycaster = new THREE.Raycaster();
287
- raycaster.params.Points.threshold = 0.5;
288
- var mouse = new THREE.Vector2();
289
- var tooltip = document.getElementById('mu-tooltip');
290
- var infoPanel = document.getElementById('mu-info');
291
- var hoveredIdx = -1;
292
-
293
- renderer.domElement.addEventListener('mousemove', function(e) {
294
- mouse.x = (e.clientX / w) * 2 - 1;
295
- mouse.y = -(e.clientY / h) * 2 + 1;
296
- raycaster.setFromCamera(mouse, camera);
297
- var intersects = raycaster.intersectObject(points);
298
- if (intersects.length > 0) {
299
- var idx = intersects[0].index;
300
- if (idx !== hoveredIdx && idx < particleData.length) {
301
- hoveredIdx = idx;
302
- var mem = particleData[idx].memory;
303
- tooltip.style.display = 'block';
304
- tooltip.style.left = (e.clientX + 16) + 'px';
305
- tooltip.style.top = (e.clientY - 10) + 'px';
306
- tooltip.textContent = mem.content_en ? mem.content_en.substring(0, 120) + (mem.content_en.length > 120 ? '...' : '') : '(empty)';
307
- }
308
- } else {
309
- hoveredIdx = -1;
310
- tooltip.style.display = 'none';
311
- }
312
- });
313
-
314
- renderer.domElement.addEventListener('click', function(e) {
315
- raycaster.setFromCamera(mouse, camera);
316
- var intersects = raycaster.intersectObject(points);
317
- if (intersects.length > 0 && intersects[0].index < particleData.length) {
318
- var mem = particleData[intersects[0].index].memory;
319
- var entNames = particleData[intersects[0].index].entities.map(function(eid) {
320
- var ent = entities.find(function(e) { return e.id === eid; });
321
- return ent ? ent.name : '?';
322
- });
323
- var typeColorMap = { fact: '#0ee', decision: '#b44ff', preference: '#fa0', event: '#3f4', lesson: '#f22', feedback: '#fd3' };
324
- var typeColor = typeColorMap[mem.memory_type] || '#fff';
325
- infoPanel.style.display = 'block';
326
- infoPanel.innerHTML =
327
- '<div style="margin-bottom:16px;"><button onclick="document.getElementById(\'mu-info\').style.display=\'none\'" style="background:none;border:1px solid #0ff5;color:#0ff;cursor:pointer;padding:4px 10px;border-radius:3px;">✕</button></div>' +
328
- '<div style="color:#0ff;font-size:11px;margin-bottom:8px;">MEMORY #' + mem.id + '</div>' +
329
- '<div style="margin-bottom:12px;line-height:1.5;">' + escHtml(mem.content_en || '') + '</div>' +
330
- (mem.content_original && mem.content_original !== mem.content_en ? '<div style="color:#888;font-size:11px;margin-bottom:12px;">' + escHtml(mem.content_original) + '</div>' : '') +
331
- '<div style="display:grid;grid-template-columns:1fr 1fr;gap:6px;font-size:12px;">' +
332
- '<div>Type: <span style="color:' + typeColor + ';">' + (mem.memory_type || '?') + '</span></div>' +
333
- '<div>Class: <span style="color:' + (['#0ff','#66f','#fa0','#f22'][mem.classification || 0] || '#fff') + ';">' + (['U','R','C','S'][mem.classification || 0] || '?') + '</span></div>' +
334
- '<div>Emotion: <span style="color:' + (mem.emotion_score > 0 ? '#4f4' : mem.emotion_score < 0 ? '#f44' : '#888') + ';">' + (mem.emotion_score || 0) + '</span></div>' +
335
- '<div>Recall: <span style="color:#0ff;">' + (mem.recall_count || 0) + '</span></div>' +
336
- '<div>Trust: ' + (mem.trust ?? '?') + '</div>' +
337
- '<div>Integrity: ' + (mem.integrity ?? '?') + '</div>' +
338
- '<div>Credibility: ' + (mem.credibility ?? '?') + '</div>' +
339
- '<div>Relevance: ' + (mem.relevance_score || 0) + '</div>' +
340
- '</div>' +
341
- (entNames.length > 0 ? '<div style="margin-top:12px;color:#0ff8;font-size:11px;">Entities: ' + entNames.join(', ') + '</div>' : '') +
342
- '<div style="margin-top:12px;color:#666;font-size:10px;">Created: ' + new Date(mem.created_at).toLocaleString() + '</div>';
343
- }
344
- });
345
-
346
- // Animation
347
- var clock = new THREE.Clock();
348
- function animate() {
349
- animId = requestAnimationFrame(animate);
350
- var t = clock.getElapsedTime();
351
- var posAttr = geo.attributes.position;
352
-
353
- for (var i = 0; i < particleData.length; i++) {
354
- var p = particleData[i];
355
- var drift = 0.15;
356
- posAttr.array[i * 3] = p.basePos.x + Math.sin(t * 0.3 + i * 0.7) * drift;
357
- posAttr.array[i * 3 + 1] = p.basePos.y + Math.cos(t * 0.2 + i * 1.1) * drift;
358
- posAttr.array[i * 3 + 2] = p.basePos.z + Math.sin(t * 0.25 + i * 0.5) * drift;
359
- }
360
- posAttr.needsUpdate = true;
361
-
362
- mat.uniforms.uTime.value = t;
363
- controls.update();
364
- composer.render();
365
- }
366
- animate();
367
-
368
- // Resize
369
- window.addEventListener('resize', function() {
370
- w = window.innerWidth; h = window.innerHeight;
371
- camera.aspect = w / h;
372
- camera.updateProjectionMatrix();
373
- renderer.setSize(w, h);
374
- composer.setSize(w, h);
375
- });
376
- }
377
-
378
- function escHtml(s) {
379
- var d = document.createElement('div');
380
- d.textContent = s;
381
- return d.innerHTML;
382
- }
383
- };
384
- })();
@@ -1,34 +0,0 @@
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 "./chunk-7K2YZTLD.js";
4
-
5
- // src/components/transport/stream-single.ts
6
- async function streamSingleCompletion(params) {
7
- const { endpoint, apiKey, model, systemPrompt, userPrompt, maxTokens } = params;
8
- const body = {
9
- model,
10
- messages: [
11
- { role: "system", content: systemPrompt },
12
- { role: "user", content: userPrompt }
13
- ],
14
- max_tokens: maxTokens,
15
- stream: false
16
- };
17
- const headers = { "Content-Type": "application/json" };
18
- if (apiKey) headers["Authorization"] = `Bearer ${apiKey}`;
19
- const response = await fetch(`${endpoint}/chat/completions`, {
20
- method: "POST",
21
- headers,
22
- body: JSON.stringify(body),
23
- signal: AbortSignal.timeout(6e4)
24
- });
25
- if (!response.ok) {
26
- throw new Error(`Summarization LLM call failed: ${response.status} ${response.statusText}`);
27
- }
28
- const json = await response.json();
29
- return json.choices?.[0]?.message?.content?.trim() ?? "";
30
- }
31
- export {
32
- streamSingleCompletion
33
- };
34
- //# sourceMappingURL=stream-single-RFJNUTL6.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/components/transport/stream-single.ts"],
4
- "sourcesContent": ["/**\n * stream-single.ts \u2014 Single-shot LLM completion for internal use (summarization, etc.).\n * Non-streaming, returns full text response.\n */\n\nexport interface SingleCompletionParams {\n endpoint: string;\n apiKey?: string;\n model: string;\n systemPrompt: string;\n userPrompt: string;\n maxTokens: number;\n}\n\nexport async function streamSingleCompletion(params: SingleCompletionParams): Promise<string> {\n const { endpoint, apiKey, model, systemPrompt, userPrompt, maxTokens } = params;\n\n const body = {\n model,\n messages: [\n { role: \"system\", content: systemPrompt },\n { role: \"user\", content: userPrompt },\n ],\n max_tokens: maxTokens,\n stream: false,\n };\n\n const headers: Record<string, string> = { \"Content-Type\": \"application/json\" };\n if (apiKey) headers[\"Authorization\"] = `Bearer ${apiKey}`;\n\n const response = await fetch(`${endpoint}/chat/completions`, {\n method: \"POST\",\n headers,\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(60_000),\n });\n\n if (!response.ok) {\n throw new Error(`Summarization LLM call failed: ${response.status} ${response.statusText}`);\n }\n\n const json = await response.json() as { choices?: Array<{ message?: { content?: string } }> };\n return json.choices?.[0]?.message?.content?.trim() ?? \"\";\n}\n"],
5
- "mappings": ";;;;;AAcA,eAAsB,uBAAuB,QAAiD;AAC5F,QAAM,EAAE,UAAU,QAAQ,OAAO,cAAc,YAAY,UAAU,IAAI;AAEzE,QAAM,OAAO;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,aAAa;AAAA,MACxC,EAAE,MAAM,QAAQ,SAAS,WAAW;AAAA,IACtC;AAAA,IACA,YAAY;AAAA,IACZ,QAAQ;AAAA,EACV;AAEA,QAAM,UAAkC,EAAE,gBAAgB,mBAAmB;AAC7E,MAAI,OAAQ,SAAQ,eAAe,IAAI,UAAU,MAAM;AAEvD,QAAM,WAAW,MAAM,MAAM,GAAG,QAAQ,qBAAqB;AAAA,IAC3D,QAAQ;AAAA,IACR;AAAA,IACA,MAAM,KAAK,UAAU,IAAI;AAAA,IACzB,QAAQ,YAAY,QAAQ,GAAM;AAAA,EACpC,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,kCAAkC,SAAS,MAAM,IAAI,SAAS,UAAU,EAAE;AAAA,EAC5F;AAEA,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,SAAO,KAAK,UAAU,CAAC,GAAG,SAAS,SAAS,KAAK,KAAK;AACxD;",
6
- "names": []
7
- }
@@ -1,14 +0,0 @@
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
- SubagentRuntime
5
- } from "./chunk-3AAENI2K.js";
6
- import "./chunk-YSKCQH6E.js";
7
- import "./chunk-GWILHZPT.js";
8
- import "./chunk-GALQBVKO.js";
9
- import "./chunk-O7KQG6ME.js";
10
- import "./chunk-7K2YZTLD.js";
11
- export {
12
- SubagentRuntime
13
- };
14
- //# sourceMappingURL=subagent-runtime-5QUVES3W.js.map
@@ -1,7 +0,0 @@
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 { abmindHome } = await import(\"../paths.js\");\n const memoryProvider = (getEnv() as any).memory ?? \"abmind\";\n if (memoryProvider === \"abmind\" || memoryProvider === \"auto\") {\n const coreDir = join(abmindHome(), \"memory\", \"core\");\n if (existsSync(coreDir)) {\n const available = SOUL_CORE_FILES.filter(f => existsSync(join(coreDir, f))).length;\n soulBundle = { available, total: SOUL_CORE_FILES.length };\n }\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
- }