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.
- package/bundle/{_registry.generated-WGR4WOPT.js → _registry.generated-AVR7DK2A.js} +17 -14
- package/bundle/{_registry.generated-WGR4WOPT.js.map → _registry.generated-AVR7DK2A.js.map} +1 -1
- package/bundle/{abmind-lazy-7Z44NODV.js → abmind-lazy-E3YCFKQ5.js} +15 -5
- package/bundle/abtars-browser.js +4 -4
- package/bundle/abtars-cli.js +23 -13
- package/bundle/abtars-cli.js.map +2 -2
- package/bundle/abtars-restart.js +3 -3
- package/bundle/abtars-task.js +3 -3
- package/bundle/abtars-task.js.map +2 -2
- package/bundle/abtars.js +610 -455
- package/bundle/abtars.js.map +4 -4
- package/bundle/{acp-raw-client-E6FM45NC.js → acp-raw-client-UCNK3OTU.js} +2 -2
- package/bundle/{action-gate-G2V47NHW.js → action-gate-V4FCBHFB.js} +2 -2
- package/bundle/{agent-api-adapter-YAHKQMMZ.js → agent-api-adapter-7HEPYSIN.js} +3 -3
- package/bundle/{agent-api-rate-limit-WCFXJMGY.js → agent-api-rate-limit-RZSAM3SW.js} +4 -4
- package/bundle/{agent-registry-GI6CLT3Z.js → agent-registry-46A2R5KP.js} +7 -7
- package/bundle/{bootstrap-X2QYIZIJ.js → bootstrap-MIHJJSWU.js} +2 -2
- package/bundle/{bridge-lock-transport-4ZH7QTJP.js → bridge-lock-transport-7RSN7OLJ.js} +4 -4
- package/bundle/{browser-DMARZJIN.js → browser-F6BCWJWW.js} +6 -6
- package/bundle/{budget-45QOBDWA.js → budget-WUM3SPKW.js} +3 -3
- package/bundle/{capability-JFWX3IQF.js → capability-QVRKGRFC.js} +5 -5
- package/bundle/{chunk-YSKCQH6E.js → chunk-2IYJ4I66.js} +2 -2
- package/bundle/{chunk-KTYGKPYM.js → chunk-2NLUT5S2.js} +6 -6
- package/bundle/chunk-3BG3AIDP.js +191 -0
- package/bundle/chunk-3BG3AIDP.js.map +7 -0
- package/bundle/{chunk-OKAQICWY.js → chunk-3GQX34S2.js} +3 -3
- package/bundle/{chunk-QROWBWLL.js → chunk-3XZ773BS.js} +2 -2
- package/bundle/{chunk-DYBW4XXL.js → chunk-467SRLLR.js} +2 -2
- package/bundle/{chunk-LGP6TYFI.js → chunk-4AILRHUI.js} +97 -8
- package/bundle/chunk-4AILRHUI.js.map +7 -0
- package/bundle/{chunk-GPZNXY2U.js → chunk-4S3H4OK7.js} +4 -4
- package/bundle/{chunk-NDCRWEEJ.js → chunk-4Y5MJQRE.js} +6 -6
- package/bundle/{chunk-FRKW6LWB.js → chunk-55UWKI5C.js} +3 -3
- package/bundle/{chunk-4UL3KINB.js → chunk-5PNJFDSW.js} +8 -8
- package/bundle/{chunk-LUNA6PM5.js → chunk-5RVOEFGT.js} +4 -2
- package/bundle/{chunk-LUNA6PM5.js.map → chunk-5RVOEFGT.js.map} +2 -2
- package/bundle/{chunk-OXTSWQCX.js → chunk-5Y3FJ2Y7.js} +2 -2
- package/bundle/{chunk-TMUYFERL.js → chunk-6B5ZFUPD.js} +2 -2
- package/bundle/{chunk-65VCEC32.js → chunk-6PA5JBUU.js} +2 -2
- package/bundle/chunk-BNXV7SZI.js +195 -0
- package/bundle/chunk-BNXV7SZI.js.map +7 -0
- package/bundle/{chunk-AFREM7FX.js → chunk-CK7YTA2F.js} +2 -2
- package/bundle/{chunk-NRUSRJXR.js → chunk-DZJ5QZFD.js} +2 -2
- package/bundle/{chunk-YRSMGJFP.js → chunk-E67KESEG.js} +2 -2
- package/bundle/{chunk-ZV4IWKDJ.js → chunk-E7XD5UGB.js} +3 -3
- package/bundle/{chunk-GXL7HJPT.js → chunk-EAX5ZZUL.js} +63 -39
- package/bundle/chunk-EAX5ZZUL.js.map +7 -0
- package/bundle/{chunk-PEDX56EL.js → chunk-EFGBM555.js} +2 -2
- package/bundle/{chunk-EQSG2CRM.js → chunk-FGYDIX54.js} +22 -15
- package/bundle/chunk-FGYDIX54.js.map +7 -0
- package/bundle/{chunk-XWRADSXO.js → chunk-GF6NVNA7.js} +15 -5
- package/bundle/chunk-GF6NVNA7.js.map +7 -0
- package/bundle/{chunk-SIFPBTI4.js → chunk-HGSHCQ5F.js} +113 -73
- package/bundle/chunk-HGSHCQ5F.js.map +7 -0
- package/bundle/{chunk-YRU2K3O6.js → chunk-IMIGG5EO.js} +39 -39
- package/bundle/chunk-IMIGG5EO.js.map +7 -0
- package/bundle/{chunk-W4EA4GCA.js → chunk-ITOFPJAV.js} +43 -31
- package/bundle/chunk-ITOFPJAV.js.map +7 -0
- package/bundle/{chunk-UPRZDU6T.js → chunk-IY6UKLPS.js} +3 -3
- package/bundle/{chunk-EUZDKV3C.js → chunk-J4RUFAPK.js} +3 -3
- package/bundle/{chunk-HZDLFLRP.js → chunk-J7DRPVMU.js} +35 -5
- package/bundle/chunk-J7DRPVMU.js.map +7 -0
- package/bundle/{chunk-EGL6UMAO.js → chunk-JG4BKXBN.js} +7 -1
- package/bundle/chunk-JG4BKXBN.js.map +7 -0
- package/bundle/{chunk-5B5B6EHL.js → chunk-JLWYPGWI.js} +5 -5
- package/bundle/{chunk-5QUTMUIK.js → chunk-JXYWDAHD.js} +12 -12
- package/bundle/{chunk-GRVWZO4C.js → chunk-KOSFXW2S.js} +24 -3
- package/bundle/{chunk-GRVWZO4C.js.map → chunk-KOSFXW2S.js.map} +1 -1
- package/bundle/{chunk-ONBF5DDU.js → chunk-L72RIPEC.js} +248 -182
- package/bundle/chunk-L72RIPEC.js.map +7 -0
- package/bundle/{chunk-TEFZ4JA4.js → chunk-NHPLD3C7.js} +2 -2
- package/bundle/{chunk-2KC5G3EA.js → chunk-OWUO5RS3.js} +5 -5
- package/bundle/{chunk-4MULJ5SS.js → chunk-OY4Q6AMY.js} +71 -49
- package/bundle/chunk-OY4Q6AMY.js.map +7 -0
- package/bundle/{chunk-WBTJ2E62.js → chunk-P3NODAHF.js} +2 -5
- package/bundle/{chunk-WBTJ2E62.js.map → chunk-P3NODAHF.js.map} +2 -2
- package/bundle/{chunk-BROFMHC2.js → chunk-PB5GF4FG.js} +334 -237
- package/bundle/chunk-PB5GF4FG.js.map +7 -0
- package/bundle/{chunk-WYHGNI56.js → chunk-PMD5BLFS.js} +6 -6
- package/bundle/{chunk-URQPDCK5.js → chunk-Q66LQMMZ.js} +3 -3
- package/bundle/{chunk-HKRSMUXJ.js → chunk-SC2Y5NR2.js} +71 -132
- package/bundle/chunk-SC2Y5NR2.js.map +7 -0
- package/bundle/chunk-SFL4EPCZ.js +555 -0
- package/bundle/chunk-SFL4EPCZ.js.map +7 -0
- package/bundle/{chunk-LDUOOKQY.js → chunk-SJPUNDZ3.js} +5 -5
- package/bundle/{chunk-LDUOOKQY.js.map → chunk-SJPUNDZ3.js.map} +1 -1
- package/bundle/{chunk-JQDJPUHM.js → chunk-TWB2ZGVH.js} +2 -2
- package/bundle/{chunk-IJT4KWXT.js → chunk-U4U47YE7.js} +2 -2
- package/bundle/{chunk-2FAZIA37.js → chunk-W546CU3A.js} +3 -3
- package/bundle/chunk-WC5O5KOE.js +211 -0
- package/bundle/chunk-WC5O5KOE.js.map +7 -0
- package/bundle/{chunk-JNIHEDKF.js → chunk-XPWYDNWL.js} +2 -2
- package/bundle/{chunk-GWILHZPT.js → chunk-XRTXYN66.js} +10 -7
- package/bundle/{chunk-GWILHZPT.js.map → chunk-XRTXYN66.js.map} +2 -2
- package/bundle/{chunk-EFJVUJBE.js → chunk-Y5FEFKGM.js} +6 -6
- package/bundle/chunk-YJZE4OK3.js +169 -0
- package/bundle/chunk-YJZE4OK3.js.map +7 -0
- package/bundle/{chunk-GVM5YU5I.js → chunk-Z4FZPB42.js} +2 -2
- package/bundle/{chunk-7BSQ5UQO.js → chunk-ZSIDQ66D.js} +3 -3
- package/bundle/{chunk-XX6BGTPO.js → chunk-ZZZCJJEO.js} +4 -4
- package/bundle/{commands-XYEGVUZF.js → commands-2ZW6CMLC.js} +17 -16
- package/bundle/{config-M3P5IOAI.js → config-YMY5YHKN.js} +6 -6
- package/bundle/{context-2RJHC2LE.js → context-CL2RSLII.js} +7 -5
- package/bundle/context-CL2RSLII.js.map +7 -0
- package/bundle/{daemon-TB23FFWY.js → daemon-D7SU63OY.js} +3 -3
- package/bundle/{delegation-tools-QKNYQGTQ.js → delegation-tools-WS7Z56KZ.js} +12 -12
- package/bundle/{deploy-EPDWNHJU.js → deploy-AMTVKIMU.js} +2 -2
- package/bundle/{deps-WVK553KF.js → deps-T63AVJKJ.js} +3 -3
- package/bundle/{direct-api-transport-E3LNDBJT.js → direct-api-transport-QNNY2WWP.js} +56 -33
- package/bundle/direct-api-transport-QNNY2WWP.js.map +7 -0
- package/bundle/{discord-adapter-IT3KP3VB.js → discord-adapter-ABAD56Y2.js} +21 -20
- package/bundle/{discord-adapter-IT3KP3VB.js.map → discord-adapter-ABAD56Y2.js.map} +1 -1
- package/bundle/{dns-wakeup-IDOJIXBX.js → dns-wakeup-V3LEFXPE.js} +9 -33
- package/bundle/dns-wakeup-V3LEFXPE.js.map +7 -0
- package/bundle/{doctor-probes-B54JFIW3.js → doctor-probes-O6YI6XSZ.js} +6 -2
- package/bundle/{env-schema-4JXQUOH4.js → env-schema-B5RB32DC.js} +3 -3
- package/bundle/{gossip-3C3BSNPN.js → gossip-SKRCPOBS.js} +9 -5
- package/bundle/{guardrails-DL7ZSWVN.js → guardrails-64GQ5Y5K.js} +4 -4
- package/bundle/{heartbeat-system-MVTRS4GP.js → heartbeat-system-X4MUTKJD.js} +6 -6
- package/bundle/{heartbeat-tier3-ABWL3P7M.js → heartbeat-tier3-2PTPWEQQ.js} +53 -76
- package/bundle/heartbeat-tier3-2PTPWEQQ.js.map +7 -0
- package/bundle/{hook-system-M3POLUIB.js → hook-system-YB635OC4.js} +3 -3
- package/bundle/{hotskills-FWX4QI7V.js → hotskills-Q75D2DK3.js} +5 -5
- package/bundle/{install-OS3CU7NF.js → install-RFKKFSGS.js} +17 -30
- package/bundle/install-RFKKFSGS.js.map +7 -0
- package/bundle/{install-manifest-5PPWMD2W.js → install-manifest-J7ICPCJN.js} +2 -2
- package/bundle/{irc-adapter-PTTZD32W.js → irc-adapter-TVEV4R6H.js} +3 -3
- package/bundle/{irc-config-CP7ZMUOX.js → irc-config-M676FOFI.js} +4 -4
- package/bundle/{kanban-board-M326B2XJ.js → kanban-board-DLEJUCNN.js} +9 -7
- package/bundle/{kanban-channel-IJ52OMNA.js → kanban-channel-XOLUHJZJ.js} +6 -6
- package/bundle/kanban-delivery-C4QPBNPX.js +45 -0
- package/bundle/kanban-delivery-C4QPBNPX.js.map +7 -0
- package/bundle/{lazy-require-KCRVT4SI.js → lazy-require-JKQSALXN.js} +3 -3
- package/bundle/{logger-OWCSNYCA.js → logger-3EGHBD4R.js} +2 -2
- package/bundle/{main-chat-ZNUZCTNS.js → main-chat-3H63REKK.js} +4 -4
- package/bundle/{master-user-HSKM4ZFN.js → master-user-MUBUP3KD.js} +5 -5
- package/bundle/{media-utils-3ZYOD7SK.js → media-utils-HUUIALAJ.js} +3 -3
- package/bundle/{message-pipeline-P5GAQU4Z.js → message-pipeline-GRDRWONR.js} +17 -16
- package/bundle/meta.json +3699 -3138
- package/bundle/{metrics-collector-L3VPEHII.js → metrics-collector-YMUGY3PI.js} +31 -2
- package/bundle/metrics-collector-YMUGY3PI.js.map +7 -0
- package/bundle/{model-health-registry-MLEIZSTV.js → model-health-registry-QADMFQFQ.js} +2 -2
- package/bundle/{nerve-IGSXBKZZ.js → nerve-QPAEBRKX.js} +3 -3
- package/bundle/{notification-BFSIEECG.js → notification-3JICGXWU.js} +6 -6
- package/bundle/{openrouter-credits-NTVZDRYM.js → openrouter-credits-7NEIPYJN.js} +3 -3
- package/bundle/{orc-tools-4CHEFWSN.js → orc-tools-UZVPONKY.js} +5 -3
- package/bundle/{peer-auth-QC4EF2PM.js → peer-auth-RI43DKJE.js} +24 -15
- package/bundle/{peer-client-RGEU5HOK.js → peer-client-UITTMWJ2.js} +34 -29
- package/bundle/peer-client-UITTMWJ2.js.map +7 -0
- package/bundle/{peer-config-TN55LFDC.js → peer-config-URM7DCW6.js} +9 -4
- package/bundle/{peer-transport-I6JPLFZ2.js → peer-transport-SI7I72DB.js} +12 -10
- package/bundle/{phase-transport-PGKU2KD4.js → phase-transport-ESWWACZI.js} +17 -17
- package/bundle/{reconcile-CTFCLQRN.js → reconcile-GFDQYNBD.js} +3 -3
- package/bundle/{reconciler-EBKH3JNU.js → reconciler-IEUJXJN2.js} +12 -12
- package/bundle/{restore-IFHPI7I7.js → restore-FARTGLQQ.js} +3 -3
- package/bundle/{rollback-ANRI3T5Z.js → rollback-GEWPZABG.js} +2 -2
- package/bundle/{sandbox-runtime-QROWHDCS.js → sandbox-runtime-DV6E25J6.js} +2 -2
- package/bundle/{self-healer-utils-IFAYOQO2.js → self-healer-utils-P4SKNNEM.js} +3 -3
- package/bundle/{sha-tracker-ZWBP6CIJ.js → sha-tracker-77SHLYNY.js} +3 -3
- package/bundle/{skill-session-BMSRQSHV.js → skill-session-5HSMXY54.js} +3 -3
- package/bundle/{skill-stats-JORH5DGM.js → skill-stats-MI3RSWWL.js} +4 -4
- package/bundle/{skill-watcher-E4MGLKLS.js → skill-watcher-5L7JE6TN.js} +4 -4
- package/bundle/{sleep-36XS6MHJ.js → sleep-I4JFASCY.js} +11 -8
- package/bundle/{soul-bundle-VWAVHCZ6.js → soul-bundle-522C3IRH.js} +9 -8
- package/bundle/{spin-TI3TSVVT.js → spin-VHNGNWTD.js} +11 -11
- package/bundle/{spin-notifications-SE2HVZI7.js → spin-notifications-7NC5XZEM.js} +5 -5
- package/bundle/{spin-types-BLPYAETA.js → spin-types-C5KOQOPD.js} +7 -3
- package/bundle/{sse-parser-anthropic-A6R4Z2TB.js → sse-parser-anthropic-MMTVWHLI.js} +3 -3
- package/bundle/{sse-parser-responses-HSZY3QGJ.js → sse-parser-responses-3AOFN64C.js} +3 -3
- package/bundle/{ssrf-guard-O6SHIK6Q.js → ssrf-guard-U2JA72TC.js} +3 -3
- package/bundle/{start-7QZIWO3S.js → start-H5IUFAWF.js} +4 -2
- package/bundle/{start-7QZIWO3S.js.map → start-H5IUFAWF.js.map} +2 -2
- package/bundle/{stt-LGVPXMVR.js → stt-PSOPPBV4.js} +4 -4
- package/bundle/{system-status-JZU5FO7B.js → system-status-4LYGOFNO.js} +38 -24
- package/bundle/system-status-4LYGOFNO.js.map +7 -0
- package/bundle/{task-store-W5BFIAIH.js → task-store-MNCW42BW.js} +4 -4
- package/bundle/{telegram-adapter-H6PMFPMB.js → telegram-adapter-O6KIZDY6.js} +69 -46
- package/bundle/telegram-adapter-O6KIZDY6.js.map +7 -0
- package/bundle/{tool-registry-IZX2IOBM.js → tool-registry-JJMWCQKZ.js} +26 -24
- package/bundle/{tool-sandbox-4UC6GAKA.js → tool-sandbox-CNL6V6IH.js} +4 -4
- package/bundle/{transport-config-KBF5W2DP.js → transport-config-6MB2K2XC.js} +7 -7
- package/bundle/tribe-GDTFYJTK.js +111 -0
- package/bundle/tribe-GDTFYJTK.js.map +7 -0
- package/bundle/{update-MESYO4LO.js → update-HGQAOC5L.js} +3 -3
- package/bundle/{usage-tracker-NXD364VX.js → usage-tracker-SR4BI6ZT.js} +2 -2
- package/bundle/{user-registry-35BW4XKM.js → user-registry-4PACZJIJ.js} +4 -4
- package/bundle/wire-platform-KKPWNNNQ.js +88 -0
- package/bundle/wire-platform-KKPWNNNQ.js.map +7 -0
- package/bundle/ws-peer-client-U3NNPOK7.js +370 -0
- package/bundle/ws-peer-client-U3NNPOK7.js.map +7 -0
- package/package.json +1 -1
- package/scripts/abtars-watchdog.service +2 -1
- package/scripts/abtars-watchdog.sh +1 -5
- package/scripts/emergency-deploy.sh +2 -2
- package/scripts/emergency-update.sh +88 -41
- package/bundle/chunk-3AAENI2K.js +0 -210
- package/bundle/chunk-3AAENI2K.js.map +0 -7
- package/bundle/chunk-4MULJ5SS.js.map +0 -7
- package/bundle/chunk-4S554KLW.js +0 -105
- package/bundle/chunk-4S554KLW.js.map +0 -7
- package/bundle/chunk-5GCLBUBS.js +0 -257
- package/bundle/chunk-5GCLBUBS.js.map +0 -7
- package/bundle/chunk-BROFMHC2.js.map +0 -7
- package/bundle/chunk-EGL6UMAO.js.map +0 -7
- package/bundle/chunk-EQSG2CRM.js.map +0 -7
- package/bundle/chunk-GXL7HJPT.js.map +0 -7
- package/bundle/chunk-HKRSMUXJ.js.map +0 -7
- package/bundle/chunk-HT2BPTZY.js +0 -241
- package/bundle/chunk-HT2BPTZY.js.map +0 -7
- package/bundle/chunk-HZDLFLRP.js.map +0 -7
- package/bundle/chunk-IKUZPMVA.js +0 -82
- package/bundle/chunk-IKUZPMVA.js.map +0 -7
- package/bundle/chunk-LGP6TYFI.js.map +0 -7
- package/bundle/chunk-ONBF5DDU.js.map +0 -7
- package/bundle/chunk-RWRRGE4U.js +0 -72
- package/bundle/chunk-RWRRGE4U.js.map +0 -7
- package/bundle/chunk-SIFPBTI4.js.map +0 -7
- package/bundle/chunk-VUIX5AGB.js +0 -65
- package/bundle/chunk-VUIX5AGB.js.map +0 -7
- package/bundle/chunk-W4EA4GCA.js.map +0 -7
- package/bundle/chunk-XWRADSXO.js.map +0 -7
- package/bundle/chunk-Y76VUJSF.js +0 -75
- package/bundle/chunk-Y76VUJSF.js.map +0 -7
- package/bundle/chunk-YRU2K3O6.js.map +0 -7
- package/bundle/context-2RJHC2LE.js.map +0 -7
- package/bundle/direct-api-transport-E3LNDBJT.js.map +0 -7
- package/bundle/dns-wakeup-IDOJIXBX.js.map +0 -7
- package/bundle/heartbeat-tier3-ABWL3P7M.js.map +0 -7
- package/bundle/install-OS3CU7NF.js.map +0 -7
- package/bundle/metrics-collector-L3VPEHII.js.map +0 -7
- package/bundle/peer-client-RGEU5HOK.js.map +0 -7
- package/bundle/peer-jwt-NCCPXJRX.js +0 -18
- package/bundle/public/css/dashboard.css +0 -542
- package/bundle/public/index.html +0 -180
- package/bundle/public/js/app.js +0 -437
- package/bundle/public/memory-universe.js +0 -384
- package/bundle/stream-single-RFJNUTL6.js +0 -34
- package/bundle/stream-single-RFJNUTL6.js.map +0 -7
- package/bundle/subagent-runtime-5QUVES3W.js +0 -14
- package/bundle/system-status-JZU5FO7B.js.map +0 -7
- package/bundle/telegram-adapter-H6PMFPMB.js.map +0 -7
- package/bundle/usage-tracker-NXD364VX.js.map +0 -7
- package/bundle/user-registry-35BW4XKM.js.map +0 -7
- package/bundle/ws-peer-client-AIXCXF7V.js +0 -173
- package/bundle/ws-peer-client-AIXCXF7V.js.map +0 -7
- /package/bundle/{abmind-lazy-7Z44NODV.js.map → abmind-lazy-E3YCFKQ5.js.map} +0 -0
- /package/bundle/{acp-raw-client-E6FM45NC.js.map → acp-raw-client-UCNK3OTU.js.map} +0 -0
- /package/bundle/{action-gate-G2V47NHW.js.map → action-gate-V4FCBHFB.js.map} +0 -0
- /package/bundle/{agent-api-adapter-YAHKQMMZ.js.map → agent-api-adapter-7HEPYSIN.js.map} +0 -0
- /package/bundle/{agent-api-rate-limit-WCFXJMGY.js.map → agent-api-rate-limit-RZSAM3SW.js.map} +0 -0
- /package/bundle/{agent-registry-GI6CLT3Z.js.map → agent-registry-46A2R5KP.js.map} +0 -0
- /package/bundle/{bootstrap-X2QYIZIJ.js.map → bootstrap-MIHJJSWU.js.map} +0 -0
- /package/bundle/{bridge-lock-transport-4ZH7QTJP.js.map → bridge-lock-transport-7RSN7OLJ.js.map} +0 -0
- /package/bundle/{browser-DMARZJIN.js.map → browser-F6BCWJWW.js.map} +0 -0
- /package/bundle/{budget-45QOBDWA.js.map → budget-WUM3SPKW.js.map} +0 -0
- /package/bundle/{capability-JFWX3IQF.js.map → capability-QVRKGRFC.js.map} +0 -0
- /package/bundle/{chunk-YSKCQH6E.js.map → chunk-2IYJ4I66.js.map} +0 -0
- /package/bundle/{chunk-KTYGKPYM.js.map → chunk-2NLUT5S2.js.map} +0 -0
- /package/bundle/{chunk-OKAQICWY.js.map → chunk-3GQX34S2.js.map} +0 -0
- /package/bundle/{chunk-QROWBWLL.js.map → chunk-3XZ773BS.js.map} +0 -0
- /package/bundle/{chunk-DYBW4XXL.js.map → chunk-467SRLLR.js.map} +0 -0
- /package/bundle/{chunk-GPZNXY2U.js.map → chunk-4S3H4OK7.js.map} +0 -0
- /package/bundle/{chunk-NDCRWEEJ.js.map → chunk-4Y5MJQRE.js.map} +0 -0
- /package/bundle/{chunk-FRKW6LWB.js.map → chunk-55UWKI5C.js.map} +0 -0
- /package/bundle/{chunk-4UL3KINB.js.map → chunk-5PNJFDSW.js.map} +0 -0
- /package/bundle/{chunk-OXTSWQCX.js.map → chunk-5Y3FJ2Y7.js.map} +0 -0
- /package/bundle/{chunk-TMUYFERL.js.map → chunk-6B5ZFUPD.js.map} +0 -0
- /package/bundle/{chunk-65VCEC32.js.map → chunk-6PA5JBUU.js.map} +0 -0
- /package/bundle/{chunk-AFREM7FX.js.map → chunk-CK7YTA2F.js.map} +0 -0
- /package/bundle/{chunk-NRUSRJXR.js.map → chunk-DZJ5QZFD.js.map} +0 -0
- /package/bundle/{chunk-YRSMGJFP.js.map → chunk-E67KESEG.js.map} +0 -0
- /package/bundle/{chunk-ZV4IWKDJ.js.map → chunk-E7XD5UGB.js.map} +0 -0
- /package/bundle/{chunk-PEDX56EL.js.map → chunk-EFGBM555.js.map} +0 -0
- /package/bundle/{chunk-UPRZDU6T.js.map → chunk-IY6UKLPS.js.map} +0 -0
- /package/bundle/{chunk-EUZDKV3C.js.map → chunk-J4RUFAPK.js.map} +0 -0
- /package/bundle/{chunk-5B5B6EHL.js.map → chunk-JLWYPGWI.js.map} +0 -0
- /package/bundle/{chunk-5QUTMUIK.js.map → chunk-JXYWDAHD.js.map} +0 -0
- /package/bundle/{chunk-TEFZ4JA4.js.map → chunk-NHPLD3C7.js.map} +0 -0
- /package/bundle/{chunk-2KC5G3EA.js.map → chunk-OWUO5RS3.js.map} +0 -0
- /package/bundle/{chunk-WYHGNI56.js.map → chunk-PMD5BLFS.js.map} +0 -0
- /package/bundle/{chunk-URQPDCK5.js.map → chunk-Q66LQMMZ.js.map} +0 -0
- /package/bundle/{chunk-JQDJPUHM.js.map → chunk-TWB2ZGVH.js.map} +0 -0
- /package/bundle/{chunk-IJT4KWXT.js.map → chunk-U4U47YE7.js.map} +0 -0
- /package/bundle/{chunk-2FAZIA37.js.map → chunk-W546CU3A.js.map} +0 -0
- /package/bundle/{chunk-JNIHEDKF.js.map → chunk-XPWYDNWL.js.map} +0 -0
- /package/bundle/{chunk-EFJVUJBE.js.map → chunk-Y5FEFKGM.js.map} +0 -0
- /package/bundle/{chunk-GVM5YU5I.js.map → chunk-Z4FZPB42.js.map} +0 -0
- /package/bundle/{chunk-7BSQ5UQO.js.map → chunk-ZSIDQ66D.js.map} +0 -0
- /package/bundle/{chunk-XX6BGTPO.js.map → chunk-ZZZCJJEO.js.map} +0 -0
- /package/bundle/{commands-XYEGVUZF.js.map → commands-2ZW6CMLC.js.map} +0 -0
- /package/bundle/{config-M3P5IOAI.js.map → config-YMY5YHKN.js.map} +0 -0
- /package/bundle/{daemon-TB23FFWY.js.map → daemon-D7SU63OY.js.map} +0 -0
- /package/bundle/{delegation-tools-QKNYQGTQ.js.map → delegation-tools-WS7Z56KZ.js.map} +0 -0
- /package/bundle/{deploy-EPDWNHJU.js.map → deploy-AMTVKIMU.js.map} +0 -0
- /package/bundle/{deps-WVK553KF.js.map → deps-T63AVJKJ.js.map} +0 -0
- /package/bundle/{doctor-probes-B54JFIW3.js.map → doctor-probes-O6YI6XSZ.js.map} +0 -0
- /package/bundle/{env-schema-4JXQUOH4.js.map → env-schema-B5RB32DC.js.map} +0 -0
- /package/bundle/{gossip-3C3BSNPN.js.map → gossip-SKRCPOBS.js.map} +0 -0
- /package/bundle/{guardrails-DL7ZSWVN.js.map → guardrails-64GQ5Y5K.js.map} +0 -0
- /package/bundle/{heartbeat-system-MVTRS4GP.js.map → heartbeat-system-X4MUTKJD.js.map} +0 -0
- /package/bundle/{hook-system-M3POLUIB.js.map → hook-system-YB635OC4.js.map} +0 -0
- /package/bundle/{hotskills-FWX4QI7V.js.map → hotskills-Q75D2DK3.js.map} +0 -0
- /package/bundle/{install-manifest-5PPWMD2W.js.map → install-manifest-J7ICPCJN.js.map} +0 -0
- /package/bundle/{irc-adapter-PTTZD32W.js.map → irc-adapter-TVEV4R6H.js.map} +0 -0
- /package/bundle/{irc-config-CP7ZMUOX.js.map → irc-config-M676FOFI.js.map} +0 -0
- /package/bundle/{kanban-board-M326B2XJ.js.map → kanban-board-DLEJUCNN.js.map} +0 -0
- /package/bundle/{kanban-channel-IJ52OMNA.js.map → kanban-channel-XOLUHJZJ.js.map} +0 -0
- /package/bundle/{lazy-require-KCRVT4SI.js.map → lazy-require-JKQSALXN.js.map} +0 -0
- /package/bundle/{logger-OWCSNYCA.js.map → logger-3EGHBD4R.js.map} +0 -0
- /package/bundle/{main-chat-ZNUZCTNS.js.map → main-chat-3H63REKK.js.map} +0 -0
- /package/bundle/{master-user-HSKM4ZFN.js.map → master-user-MUBUP3KD.js.map} +0 -0
- /package/bundle/{media-utils-3ZYOD7SK.js.map → media-utils-HUUIALAJ.js.map} +0 -0
- /package/bundle/{message-pipeline-P5GAQU4Z.js.map → message-pipeline-GRDRWONR.js.map} +0 -0
- /package/bundle/{model-health-registry-MLEIZSTV.js.map → model-health-registry-QADMFQFQ.js.map} +0 -0
- /package/bundle/{nerve-IGSXBKZZ.js.map → nerve-QPAEBRKX.js.map} +0 -0
- /package/bundle/{notification-BFSIEECG.js.map → notification-3JICGXWU.js.map} +0 -0
- /package/bundle/{openrouter-credits-NTVZDRYM.js.map → openrouter-credits-7NEIPYJN.js.map} +0 -0
- /package/bundle/{orc-tools-4CHEFWSN.js.map → orc-tools-UZVPONKY.js.map} +0 -0
- /package/bundle/{peer-auth-QC4EF2PM.js.map → peer-auth-RI43DKJE.js.map} +0 -0
- /package/bundle/{peer-config-TN55LFDC.js.map → peer-config-URM7DCW6.js.map} +0 -0
- /package/bundle/{peer-jwt-NCCPXJRX.js.map → peer-transport-SI7I72DB.js.map} +0 -0
- /package/bundle/{peer-transport-I6JPLFZ2.js.map → phase-transport-ESWWACZI.js.map} +0 -0
- /package/bundle/{phase-transport-PGKU2KD4.js.map → reconcile-GFDQYNBD.js.map} +0 -0
- /package/bundle/{reconciler-EBKH3JNU.js.map → reconciler-IEUJXJN2.js.map} +0 -0
- /package/bundle/{restore-IFHPI7I7.js.map → restore-FARTGLQQ.js.map} +0 -0
- /package/bundle/{reconcile-CTFCLQRN.js.map → rollback-GEWPZABG.js.map} +0 -0
- /package/bundle/{sandbox-runtime-QROWHDCS.js.map → sandbox-runtime-DV6E25J6.js.map} +0 -0
- /package/bundle/{self-healer-utils-IFAYOQO2.js.map → self-healer-utils-P4SKNNEM.js.map} +0 -0
- /package/bundle/{rollback-ANRI3T5Z.js.map → sha-tracker-77SHLYNY.js.map} +0 -0
- /package/bundle/{skill-session-BMSRQSHV.js.map → skill-session-5HSMXY54.js.map} +0 -0
- /package/bundle/{sha-tracker-ZWBP6CIJ.js.map → skill-stats-MI3RSWWL.js.map} +0 -0
- /package/bundle/{skill-stats-JORH5DGM.js.map → skill-watcher-5L7JE6TN.js.map} +0 -0
- /package/bundle/{skill-watcher-E4MGLKLS.js.map → sleep-I4JFASCY.js.map} +0 -0
- /package/bundle/{sleep-36XS6MHJ.js.map → soul-bundle-522C3IRH.js.map} +0 -0
- /package/bundle/{soul-bundle-VWAVHCZ6.js.map → spin-VHNGNWTD.js.map} +0 -0
- /package/bundle/{spin-notifications-SE2HVZI7.js.map → spin-notifications-7NC5XZEM.js.map} +0 -0
- /package/bundle/{spin-TI3TSVVT.js.map → spin-types-C5KOQOPD.js.map} +0 -0
- /package/bundle/{sse-parser-anthropic-A6R4Z2TB.js.map → sse-parser-anthropic-MMTVWHLI.js.map} +0 -0
- /package/bundle/{sse-parser-responses-HSZY3QGJ.js.map → sse-parser-responses-3AOFN64C.js.map} +0 -0
- /package/bundle/{ssrf-guard-O6SHIK6Q.js.map → ssrf-guard-U2JA72TC.js.map} +0 -0
- /package/bundle/{spin-types-BLPYAETA.js.map → stt-PSOPPBV4.js.map} +0 -0
- /package/bundle/{stt-LGVPXMVR.js.map → task-store-MNCW42BW.js.map} +0 -0
- /package/bundle/{subagent-runtime-5QUVES3W.js.map → tool-registry-JJMWCQKZ.js.map} +0 -0
- /package/bundle/{task-store-W5BFIAIH.js.map → tool-sandbox-CNL6V6IH.js.map} +0 -0
- /package/bundle/{tool-registry-IZX2IOBM.js.map → transport-config-6MB2K2XC.js.map} +0 -0
- /package/bundle/{tool-sandbox-4UC6GAKA.js.map → update-HGQAOC5L.js.map} +0 -0
- /package/bundle/{transport-config-KBF5W2DP.js.map → usage-tracker-SR4BI6ZT.js.map} +0 -0
- /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
|
-
}
|