blun-king-cli 9.0.0 → 9.1.0
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/LIESMICH.txt +32 -13
- package/README.md +39 -20
- package/bin/blun.js +248 -160
- package/bin/core-bootstrap.js +47 -0
- package/bin/king.js +277 -1
- package/bin/launcher-mode.js +15 -3
- package/bin/launcher-runtime.js +293 -0
- package/bin/plugin-bootstrap.js +11 -4
- package/bin/private-paths.js +1577 -10
- package/bin/update-lease.js +399 -0
- package/bin/update-notice.js +1245 -0
- package/blun.mjs +26606 -25239
- package/dist-web/assets/{CodeBlockNode-Bsvp6ZEy.js → CodeBlockNode-CXnTLMNr.js} +1 -1
- package/dist-web/assets/{CodeBlockShell.vue_vue_type_style_index_0_lang-ta7hLjia.js → CodeBlockShell.vue_vue_type_style_index_0_lang-CCF8Ntnq.js} +1 -1
- package/dist-web/assets/{DesignSystemView-BmDDe28A.js → DesignSystemView-BbMOu-XO.js} +1 -1
- package/dist-web/assets/{Tooltip-nEEfaYVY.js → Tooltip-CFQEzqC-.js} +1 -1
- package/dist-web/assets/abnfDiagram-N423BO3Z-CsByy-GW.js +1 -0
- package/dist-web/assets/abnfDiagram-N423BO3Z-Z1APZG5m.js +1 -0
- package/dist-web/assets/arc-C-LXCaja.js +1 -0
- package/dist-web/assets/arc-C4VyWloT.js +1 -0
- package/dist-web/assets/architectureDiagram-T3A2C74G-DZq4L18e.js +36 -0
- package/dist-web/assets/architectureDiagram-T3A2C74G-DpddbUcM.js +36 -0
- package/dist-web/assets/blockDiagram-VBNYF7ZC-BV4sIf98.js +132 -0
- package/dist-web/assets/blockDiagram-VBNYF7ZC-BqccOSMr.js +132 -0
- package/dist-web/assets/{c4Diagram-AAUBKEIU-DtzacMnD.js → c4Diagram-5PPSVZJV-0MRkZlgP.js} +1 -1
- package/dist-web/assets/{c4Diagram-AAUBKEIU-D1VdMx8d.js → c4Diagram-5PPSVZJV-OHAcJrTy.js} +1 -1
- package/dist-web/assets/channel-B2VOQOI-.js +1 -0
- package/dist-web/assets/channel-DKjwM05G.js +1 -0
- package/dist-web/assets/{chunk-ND2GUHAM-DJoY9wNJ.js → chunk-2GRJ4B5K-DqJHs8Fw.js} +1 -1
- package/dist-web/assets/{chunk-ND2GUHAM-C4-rwdcv.js → chunk-2GRJ4B5K-oO6nqeLA.js} +1 -1
- package/dist-web/assets/{chunk-QZHKN3VN-C7YGaShq.js → chunk-2Q5K7J3B-B1nCd91o.js} +1 -1
- package/dist-web/assets/{chunk-QZHKN3VN-_Rz9_NuS.js → chunk-2Q5K7J3B-BC0Hsfqy.js} +1 -1
- package/dist-web/assets/chunk-5RXB4S5H-BfZa4yDH.js +231 -0
- package/dist-web/assets/chunk-5RXB4S5H-neG70kZx.js +231 -0
- package/dist-web/assets/{chunk-FMBD7UC4-DlLNDUx6.js → chunk-5VM5RSS4-l7biGqeH.js} +1 -1
- package/dist-web/assets/{chunk-FMBD7UC4-B2zs_Y-d.js → chunk-5VM5RSS4-u00AcpiJ.js} +1 -1
- package/dist-web/assets/chunk-6Q2QTUOP-BO-F11Gs.js +88 -0
- package/dist-web/assets/chunk-6Q2QTUOP-RUVRPBzG.js +88 -0
- package/dist-web/assets/{chunk-727SXJPM-Dn5wkDO_.js → chunk-GF5L2VYU-Ba-86KTd.js} +5 -5
- package/dist-web/assets/{chunk-727SXJPM-Dk2Xa3bA.js → chunk-GF5L2VYU-BtC69fw0.js} +5 -5
- package/dist-web/assets/{chunk-4BX2VUAB-DxZViaHS.js → chunk-JWPE2WC7-DIOubEqr.js} +1 -1
- package/dist-web/assets/{chunk-4BX2VUAB-WqrE2gaw.js → chunk-JWPE2WC7-u8Pcfhwh.js} +1 -1
- package/dist-web/assets/{chunk-2J33WTMH-Dm_s0_4f.js → chunk-KBJHAD2P-DDUeH_Ba.js} +1 -1
- package/dist-web/assets/{chunk-2J33WTMH-w4sdiKFO.js → chunk-KBJHAD2P-DS3BL64y.js} +1 -1
- package/dist-web/assets/chunk-RYQCIY6F-B9gFMVbS.js +1 -0
- package/dist-web/assets/chunk-RYQCIY6F-xg3EO0le.js +1 -0
- package/dist-web/assets/{chunk-55IACEB6-B5dE1-Um.js → chunk-XXDRQBXY-B60H0rRC.js} +1 -1
- package/dist-web/assets/{chunk-55IACEB6-B12zGIFz.js → chunk-XXDRQBXY-Bn1Xz6TQ.js} +1 -1
- package/dist-web/assets/classDiagram-JCYQIIEL-BA1TjAxj.js +1 -0
- package/dist-web/assets/classDiagram-JCYQIIEL-BNU7Qn4k.js +1 -0
- package/dist-web/assets/classDiagram-v2-OCEON4UE-BA1TjAxj.js +1 -0
- package/dist-web/assets/classDiagram-v2-OCEON4UE-BNU7Qn4k.js +1 -0
- package/dist-web/assets/{cose-bilkent-S5V4N54A-Bi19n8m-.js → cose-bilkent-JH36ORCC-4Ybddg08.js} +1 -1
- package/dist-web/assets/{cose-bilkent-S5V4N54A-c8o8NFp5.js → cose-bilkent-JH36ORCC-DqigO3T4.js} +1 -1
- package/dist-web/assets/cynefin-VYW2F7L2-C-EfYT07.js +178 -0
- package/dist-web/assets/cynefin-VYW2F7L2-rpD93tQ-.js +178 -0
- package/dist-web/assets/cynefinDiagram-MW4NZA55-DWZPLJcD.js +62 -0
- package/dist-web/assets/cynefinDiagram-MW4NZA55-DbTqnkVJ.js +62 -0
- package/dist-web/assets/dagre-VZM6K2ZE-DcM8aEVY.js +4 -0
- package/dist-web/assets/dagre-VZM6K2ZE-M_HVNtqP.js +4 -0
- package/dist-web/assets/diagram-7IWD3JNH-DoNximNF.js +30 -0
- package/dist-web/assets/diagram-7IWD3JNH-UymgsBNa.js +30 -0
- package/dist-web/assets/{diagram-KO2AKTUF-CFQs13i5.js → diagram-B4RE2ZJO-BVA2EhnC.js} +3 -3
- package/dist-web/assets/{diagram-KO2AKTUF-agFIuPJW.js → diagram-B4RE2ZJO-BiYu5WPF.js} +3 -3
- package/dist-web/assets/{diagram-LMA3HP47-TMIXizxR.js → diagram-LBJQPF4R-BD3kkgOO.js} +2 -2
- package/dist-web/assets/{diagram-LMA3HP47-He5zlyMt.js → diagram-LBJQPF4R-m3a1Euj3.js} +2 -2
- package/dist-web/assets/diagram-Q27KOJAE-D1mYQ_cI.js +24 -0
- package/dist-web/assets/diagram-Q27KOJAE-hy_T73PK.js +24 -0
- package/dist-web/assets/diagram-UB23O5K3-BWkoQZ4A.js +41 -0
- package/dist-web/assets/diagram-UB23O5K3-BtX8u6HG.js +41 -0
- package/dist-web/assets/ebnfDiagram-BXEA7PRR-BKs9JUHW.js +1 -0
- package/dist-web/assets/ebnfDiagram-BXEA7PRR-CBAnFkRF.js +1 -0
- package/dist-web/assets/erDiagram-JOGREHBK-3vKcWsxm.js +85 -0
- package/dist-web/assets/erDiagram-JOGREHBK-BIpd6dTf.js +85 -0
- package/dist-web/assets/flowDiagram-UKHOOZJN-D9wBbHm2.js +156 -0
- package/dist-web/assets/flowDiagram-UKHOOZJN-Z83i2UWI.js +156 -0
- package/dist-web/assets/ganttDiagram-PKOTCBZU-Cd_dViF-.js +292 -0
- package/dist-web/assets/ganttDiagram-PKOTCBZU-DFrb_S1d.js +292 -0
- package/dist-web/assets/{gitGraphDiagram-PVQCEYII-BSDFfwdY.js → gitGraphDiagram-DS77QQ5N-BiEEtTo7.js} +3 -3
- package/dist-web/assets/{gitGraphDiagram-PVQCEYII-DMbTATyw.js → gitGraphDiagram-DS77QQ5N-Dp3Ar-hi.js} +3 -3
- package/dist-web/assets/{graph-BwjfAU3j.js → graph-CAUpWmoK.js} +1 -1
- package/dist-web/assets/{graph--OzhPTMs.js → graph-DOmOIIwC.js} +1 -1
- package/dist-web/assets/{index-W6VnSrkB.js → index-Ba1OvLjf.js} +2 -2
- package/dist-web/assets/{index-CkVgGDpx.js → index-CiPA8Kex.js} +4 -4
- package/dist-web/assets/{index-BzK4vJBu.js → index-DdEakFJM.js} +1 -1
- package/dist-web/assets/{index10-Czg_oF-W.js → index10-CNr4U-Nw.js} +1 -1
- package/dist-web/assets/{index11-BjzCZuCr.js → index11-Dto_yZNz.js} +1 -1
- package/dist-web/assets/{index5-DlVoNkCD.js → index5-B2PldaO2.js} +1 -1
- package/dist-web/assets/{index6-BxiXA2yo.js → index6-CBdZmmyx.js} +1 -1
- package/dist-web/assets/{index7-BPdza6d1.js → index7-Dz9oCsUF.js} +1 -1
- package/dist-web/assets/{index8-Q_XzGC1Z.js → index8-B6k25jtU.js} +2 -2
- package/dist-web/assets/{infoDiagram-5YYISTIA-2JF3XEdD.js → infoDiagram-6WML65LV-BSa2g04G.js} +1 -1
- package/dist-web/assets/{infoDiagram-5YYISTIA-UrQusrJq.js → infoDiagram-6WML65LV-D4ph2sIH.js} +1 -1
- package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-7RVUL-vB.js → ishikawaDiagram-WSZJBQD7-DjKjbMm9.js} +5 -5
- package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-C5OstRVV.js → ishikawaDiagram-WSZJBQD7-Hm36UOQe.js} +5 -5
- package/dist-web/assets/{journeyDiagram-JHISSGLW-B34fCMu9.js → journeyDiagram-NVQOT4AX-DttHDfPQ.js} +1 -1
- package/dist-web/assets/{journeyDiagram-JHISSGLW-yctdo4bX.js → journeyDiagram-NVQOT4AX-MvWWPNDV.js} +1 -1
- package/dist-web/assets/{kanban-definition-UN3LZRKU-BS4FBZsQ.js → kanban-definition-27J2QSJJ-C5gB-W0d.js} +7 -7
- package/dist-web/assets/{kanban-definition-UN3LZRKU-CxBCv27E.js → kanban-definition-27J2QSJJ-Cu-E_cXA.js} +5 -5
- package/dist-web/assets/layout-CvP6o9AK.js +1 -0
- package/dist-web/assets/layout-D-LzfAck.js +1 -0
- package/dist-web/assets/{linear-3mB6q2-g.js → linear-B3HWgQI2.js} +1 -1
- package/dist-web/assets/{linear-BKCnUo31.js → linear-BRGe4-d6.js} +1 -1
- package/dist-web/assets/map-CWKZqZjr.js +1 -0
- package/dist-web/assets/map-DxJ2ADlA.js +1 -0
- package/dist-web/assets/mermaid.core-D-9Sx1No.js +314 -0
- package/dist-web/assets/mermaidParser.worker-PTFfzpoB.js +318 -0
- package/dist-web/assets/{mindmap-definition-RKZ34NQL-BmJZpjh6.js → mindmap-definition-FAOFIHXS-C4vnms3i.js} +2 -2
- package/dist-web/assets/{mindmap-definition-RKZ34NQL-1mjWUcf6.js → mindmap-definition-FAOFIHXS-Cg_hoVIq.js} +1 -1
- package/dist-web/assets/pegDiagram-VL7TDLO6-B2fFEFUH.js +1 -0
- package/dist-web/assets/pegDiagram-VL7TDLO6-CSX9hitD.js +1 -0
- package/dist-web/assets/pieDiagram-7S7Q4E2Y-0L0mxahZ.js +39 -0
- package/dist-web/assets/pieDiagram-7S7Q4E2Y-C7T0Cmw1.js +39 -0
- package/dist-web/assets/{quadrantDiagram-W4KKPZXB-BmT_qM09.js → quadrantDiagram-CIZ2JOQS-BBy7w4kD.js} +3 -3
- package/dist-web/assets/{quadrantDiagram-W4KKPZXB-C0kPuyNP.js → quadrantDiagram-CIZ2JOQS-U483z0er.js} +3 -3
- package/dist-web/assets/railroadDiagram-AXF67PYL-D80a2_DJ.js +1 -0
- package/dist-web/assets/railroadDiagram-AXF67PYL-DX8y0MzW.js +1 -0
- package/dist-web/assets/{requirementDiagram-4Y6WPE33-C0YP_Amt.js → requirementDiagram-LRYGKXZP-CeyHfq8t.js} +3 -3
- package/dist-web/assets/{requirementDiagram-4Y6WPE33-CZrxH1Y2.js → requirementDiagram-LRYGKXZP-DGD5J_4k.js} +3 -3
- package/dist-web/assets/sankeyDiagram-W5VNT64P-CCISkkrR.js +40 -0
- package/dist-web/assets/sankeyDiagram-W5VNT64P-CT5PdZz2.js +40 -0
- package/dist-web/assets/sequenceDiagram-SI44F4Z6-BeMzHWXI.js +162 -0
- package/dist-web/assets/sequenceDiagram-SI44F4Z6-jQfm2XS7.js +162 -0
- package/dist-web/assets/sizeCapture-X5ZJPWSS-BQsTdtrv.js +1 -0
- package/dist-web/assets/sizeCapture-X5ZJPWSS-lRZsmCoS.js +1 -0
- package/dist-web/assets/stateDiagram-OKZ733FA-ClCgTdUm.js +1 -0
- package/dist-web/assets/stateDiagram-OKZ733FA-Cv59z5YT.js +1 -0
- package/dist-web/assets/stateDiagram-v2-UEYNNEHI-R8jTc--F.js +1 -0
- package/dist-web/assets/stateDiagram-v2-UEYNNEHI-fi_lrTAx.js +1 -0
- package/dist-web/assets/swimlanes-SLNWSIFB-BCdOUN05.js +2 -0
- package/dist-web/assets/swimlanes-SLNWSIFB-Cu5l7SuR.js +1 -0
- package/dist-web/assets/swimlanesDiagram-ULZ7WXOC-BUd_uYK3.js +8 -0
- package/dist-web/assets/swimlanesDiagram-ULZ7WXOC-CalrsgPK.js +8 -0
- package/dist-web/assets/{timeline-definition-PNZ67QCA-DsVZdrZa.js → timeline-definition-Z64GVDOM-CMjnh4bu.js} +4 -4
- package/dist-web/assets/{timeline-definition-PNZ67QCA-DnB6Usl0.js → timeline-definition-Z64GVDOM-DpWutSKa.js} +4 -4
- package/dist-web/assets/vennDiagram-T6HMQDX7-DKJW_8oU.js +34 -0
- package/dist-web/assets/vennDiagram-T6HMQDX7-DVC5JVsc.js +34 -0
- package/dist-web/assets/{vue.runtime.esm-bundler-pgHGheCW.js → vue.runtime.esm-bundler-BwwRtQwQ.js} +1 -1
- package/dist-web/assets/{wardleyDiagram-YWT4CUSO-oBauTCEw.js → wardleyDiagram-T6FBY63Y-BK2mrq7L.js} +3 -3
- package/dist-web/assets/{wardleyDiagram-YWT4CUSO-DCiyDQNB.js → wardleyDiagram-T6FBY63Y-oUvgepFn.js} +3 -3
- package/dist-web/assets/xychartDiagram-ELKLHX3M-DI6n79q0.js +7 -0
- package/dist-web/assets/xychartDiagram-ELKLHX3M-DUJu9F7-.js +7 -0
- package/dist-web/index.html +1 -1
- package/dist-web/vis/index.html.gz +0 -0
- package/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
- package/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
- package/package.json +9 -11
- package/skills/screenshot-lesen/SKILL.md +0 -1
- package/skills/web-lesen/SKILL.md +0 -1
- package/telegram-plugin/dist/bridge.mjs +7 -25
- package/telegram-plugin/dist/mcp-server.mjs +236 -71
- package/dist-web/assets/arc-4xPfymbf.js +0 -1
- package/dist-web/assets/arc-Doj0wRZ0.js +0 -1
- package/dist-web/assets/architectureDiagram-3BPJPVTR-BGih283a.js +0 -36
- package/dist-web/assets/architectureDiagram-3BPJPVTR-CQ09RrbH.js +0 -36
- package/dist-web/assets/blockDiagram-GPEHLZMM-3ShMf1gu.js +0 -132
- package/dist-web/assets/blockDiagram-GPEHLZMM-CAtDjkJt.js +0 -132
- package/dist-web/assets/channel-DNkUo9e6.js +0 -1
- package/dist-web/assets/channel-DcnUTIGB.js +0 -1
- package/dist-web/assets/chunk-AQP2D5EJ-FS8-f8lF.js +0 -231
- package/dist-web/assets/chunk-AQP2D5EJ-UKhb4V4r.js +0 -231
- package/dist-web/assets/classDiagram-4FO5ZUOK-B1ZO8EbE.js +0 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-xk6cM9Kq.js +0 -1
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-B1ZO8EbE.js +0 -1
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-xk6cM9Kq.js +0 -1
- package/dist-web/assets/dagre-BM42HDAG-CmUO9qKN.js +0 -4
- package/dist-web/assets/dagre-BM42HDAG-DLMfLCoV.js +0 -4
- package/dist-web/assets/diagram-2AECGRRQ-DQTst0OH.js +0 -43
- package/dist-web/assets/diagram-2AECGRRQ-L74iLMqd.js +0 -43
- package/dist-web/assets/diagram-5GNKFQAL-BiBm7CJR.js +0 -10
- package/dist-web/assets/diagram-5GNKFQAL-DoE6q7H1.js +0 -10
- package/dist-web/assets/diagram-OG6HWLK6-BHCt1E0n.js +0 -24
- package/dist-web/assets/diagram-OG6HWLK6-DRyxjFMa.js +0 -24
- package/dist-web/assets/erDiagram-TEJ5UH35-BoDczjGG.js +0 -85
- package/dist-web/assets/erDiagram-TEJ5UH35-yd6SOv_7.js +0 -85
- package/dist-web/assets/flowDiagram-I6XJVG4X-DHoceI7r.js +0 -162
- package/dist-web/assets/flowDiagram-I6XJVG4X-DkYNQv0R.js +0 -162
- package/dist-web/assets/ganttDiagram-6RSMTGT7-Cg1TQBc0.js +0 -292
- package/dist-web/assets/ganttDiagram-6RSMTGT7-Z6klo7KK.js +0 -292
- package/dist-web/assets/layout-C1ojF0zw.js +0 -1
- package/dist-web/assets/layout-SsrduOYp.js +0 -1
- package/dist-web/assets/mermaid.core-D_lKT0dR.js +0 -309
- package/dist-web/assets/mermaidParser.worker-Dx4jPi9z.js +0 -313
- package/dist-web/assets/pieDiagram-4H26LBE5-BU41t2A_.js +0 -30
- package/dist-web/assets/pieDiagram-4H26LBE5-BkwDAvbt.js +0 -30
- package/dist-web/assets/sankeyDiagram-5OEKKPKP-De_o7hDr.js +0 -40
- package/dist-web/assets/sankeyDiagram-5OEKKPKP-Dvuj6bMA.js +0 -40
- package/dist-web/assets/sequenceDiagram-3UESZ5HK-DuCrgPyA.js +0 -162
- package/dist-web/assets/sequenceDiagram-3UESZ5HK-VAxffBe7.js +0 -162
- package/dist-web/assets/stateDiagram-AJRCARHV-CYLupxM7.js +0 -1
- package/dist-web/assets/stateDiagram-AJRCARHV-nDExQydZ.js +0 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-BhEc7Thx.js +0 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-BzwD_BIl.js +0 -1
- package/dist-web/assets/vennDiagram-CIIHVFJN-BBHQmCFf.js +0 -34
- package/dist-web/assets/vennDiagram-CIIHVFJN-Cfj-K9NW.js +0 -34
- package/dist-web/assets/wardley-L42UT6IY-BJFn8eDD.js +0 -173
- package/dist-web/assets/wardley-L42UT6IY-BSu8-4hg.js +0 -173
- package/dist-web/assets/xychartDiagram-2RQKCTM6-C2iZpl9I.js +0 -7
- package/dist-web/assets/xychartDiagram-2RQKCTM6-Db_VoDBV.js +0 -7
- package/mnemo/access_routes.js +0 -692
- package/mnemo/agent_governance.js +0 -4242
- package/mnemo/agent_mail.js +0 -901
- package/mnemo/bootstrap_auto.js +0 -137
- package/mnemo/brief_coordination.js +0 -226
- package/mnemo/code_read_tools.js +0 -375
- package/mnemo/context_preview_tools.js +0 -603
- package/mnemo/embeddings.js +0 -66
- package/mnemo/external_repo_ops.js +0 -575
- package/mnemo/facts/example-project-rules.json +0 -90
- package/mnemo/facts/example.json +0 -34
- package/mnemo/identity_schema.sql +0 -139
- package/mnemo/journal_schema.js +0 -561
- package/mnemo/loop_doctor_tools.js +0 -661
- package/mnemo/mail_secret_refs.js +0 -150
- package/mnemo/mcp.js +0 -9309
- package/mnemo/memory_consolidation.js +0 -1914
- package/mnemo/memory_health_tools.js +0 -165
- package/mnemo/package.json +0 -79
- package/mnemo/protected_scope_gate.js +0 -627
- package/mnemo/resource_access_control.js +0 -684
- package/mnemo/runtime_governance.js +0 -1256
- package/mnemo/runtime_turn_gate.js +0 -862
- package/mnemo/sandbox.js +0 -143
- package/mnemo/schema.sql +0 -389
- package/mnemo/shared_utils.js +0 -763
- package/mnemo/skills/agent-auto-resume/SKILL.md +0 -56
- package/mnemo/skills/agent_hand/SKILL.md +0 -43
- package/mnemo/skills/agent_hand/run.js +0 -63
- package/mnemo/skills/book_flight/SKILL.md +0 -34
- package/mnemo/skills/external_repo_review/SKILL.md +0 -43
- package/mnemo/skills/external_repo_review/run.js +0 -73
- package/mnemo/skills/pay_invoice/SKILL.md +0 -34
- package/mnemo/team_quality_ops.js +0 -944
- package/mnemo/timeline_report_tools.js +0 -810
- package/mnemo/write_gate_risk.js +0 -80
- package/mnemo/writer_health.js +0 -152
- package/skills/doku-ingestion/SKILL.md +0 -48
- package/skills/doku-ingestion/ingest_docs.py +0 -133
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const { parseMaybeJson, normalizeAgentName } = require("./shared_utils");
|
|
4
|
-
|
|
5
|
-
function safeAll(db, sql, params = []) {
|
|
6
|
-
try { return db.prepare(sql).all(...params); } catch { return []; }
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function isoAgo(minutes) {
|
|
10
|
-
return new Date(Date.now() - Math.max(1, minutes || 1440) * 60000).toISOString();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function ageMinutes(iso) {
|
|
14
|
-
const t = iso ? Date.parse(iso) : 0;
|
|
15
|
-
if (!t) return null;
|
|
16
|
-
return Math.max(0, Math.round((Date.now() - t) / 60000));
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function pushLatest(map, agent, target, row) {
|
|
20
|
-
if (!agent) return;
|
|
21
|
-
if (!map.has(agent)) map.set(agent, new Map());
|
|
22
|
-
const current = map.get(agent).get(target);
|
|
23
|
-
if (!current || String(row.started_at || "") > String(current.started_at || "")) {
|
|
24
|
-
map.get(agent).set(target, row);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const LEGACY_RUNTIME_SOURCE = "cl" + "aude-code";
|
|
29
|
-
const LEGACY_RUNTIME_PREFIX = "cl" + "aude";
|
|
30
|
-
|
|
31
|
-
function captureAt(captures, currentKind, legacyKind) {
|
|
32
|
-
const row = captures[currentKind] || (legacyKind ? captures[legacyKind] : null);
|
|
33
|
-
return row && row.occurred_at || null;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function rowPayload(row) {
|
|
37
|
-
return parseMaybeJson(row && row.payload_json, {}) || {};
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function memoryHealth(db, a = {}) {
|
|
41
|
-
const staleMinutes = Math.max(5, Number(a.stale_minutes || 1440));
|
|
42
|
-
const since = a.since || isoAgo(Math.max(staleMinutes, Number(a.window_minutes || 1440)));
|
|
43
|
-
const requestedAgent = normalizeAgentName(a.agent_name || "");
|
|
44
|
-
const actionRows = safeAll(db, `
|
|
45
|
-
SELECT id, agent_name, target, status, payload_json, meta_json, started_at, session_id
|
|
46
|
-
FROM agent_action
|
|
47
|
-
WHERE action_kind='mnemo_runtime_hook' AND started_at >= ?
|
|
48
|
-
ORDER BY started_at DESC
|
|
49
|
-
LIMIT ?
|
|
50
|
-
`, [since, Math.min(Number(a.limit || 2000), 5000)]);
|
|
51
|
-
const registryRows = safeAll(db, "SELECT agent_name, status, last_seen_at FROM agent_registry ORDER BY agent_name");
|
|
52
|
-
const captureRows = safeAll(db, `
|
|
53
|
-
SELECT source, event_kind, actor, status, occurred_at, meta_json
|
|
54
|
-
FROM capture_receipt
|
|
55
|
-
WHERE source IN ('agent-runtime', ?) AND occurred_at >= ?
|
|
56
|
-
ORDER BY occurred_at DESC
|
|
57
|
-
LIMIT 2000
|
|
58
|
-
`, [LEGACY_RUNTIME_SOURCE, since]);
|
|
59
|
-
|
|
60
|
-
const agents = new Set(registryRows.map((row) => normalizeAgentName(row.agent_name)).filter(Boolean));
|
|
61
|
-
const latestByAgent = new Map();
|
|
62
|
-
const failuresByAgent = new Map();
|
|
63
|
-
const capturesByAgent = new Map();
|
|
64
|
-
|
|
65
|
-
for (const row of actionRows) {
|
|
66
|
-
const agent = normalizeAgentName(row.agent_name);
|
|
67
|
-
if (!agent) continue;
|
|
68
|
-
agents.add(agent);
|
|
69
|
-
pushLatest(latestByAgent, agent, row.target || "unknown", row);
|
|
70
|
-
if (String(row.status || "").toLowerCase() !== "ok") {
|
|
71
|
-
failuresByAgent.set(agent, (failuresByAgent.get(agent) || 0) + 1);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
for (const row of captureRows) {
|
|
76
|
-
const meta = parseMaybeJson(row.meta_json, {}) || {};
|
|
77
|
-
const agent = normalizeAgentName(meta.agent_name || row.actor);
|
|
78
|
-
if (!agent) continue;
|
|
79
|
-
agents.add(agent);
|
|
80
|
-
if (!capturesByAgent.has(agent)) capturesByAgent.set(agent, {});
|
|
81
|
-
const bucket = capturesByAgent.get(agent);
|
|
82
|
-
const key = row.event_kind || "capture";
|
|
83
|
-
if (!bucket[key] || String(row.occurred_at || "") > String(bucket[key].occurred_at || "")) {
|
|
84
|
-
bucket[key] = row;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const agentRows = Array.from(agents)
|
|
89
|
-
.filter((agent) => !requestedAgent || agent === requestedAgent)
|
|
90
|
-
.sort()
|
|
91
|
-
.map((agent) => {
|
|
92
|
-
const byTarget = latestByAgent.get(agent) || new Map();
|
|
93
|
-
const latestActions = {};
|
|
94
|
-
for (const [target, row] of byTarget.entries()) {
|
|
95
|
-
const payload = rowPayload(row);
|
|
96
|
-
latestActions[target] = {
|
|
97
|
-
at: row.started_at,
|
|
98
|
-
age_min: ageMinutes(row.started_at),
|
|
99
|
-
status: row.status,
|
|
100
|
-
session_id: row.session_id || null,
|
|
101
|
-
transcript_sync_ok: payload.transcript_sync_ok,
|
|
102
|
-
transcript_count: payload.transcript_count,
|
|
103
|
-
prior_recall_ok: payload.prior_recall_ok,
|
|
104
|
-
prior_count: payload.prior_count,
|
|
105
|
-
prompt_capture_ok: payload.prompt_capture_ok,
|
|
106
|
-
blockers: payload.blockers || [],
|
|
107
|
-
warnings: payload.warnings || []
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
const latest = actionRows.find((row) => normalizeAgentName(row.agent_name) === agent) || null;
|
|
111
|
-
const latestPayload = rowPayload(latest);
|
|
112
|
-
const failures = failuresByAgent.get(agent) || 0;
|
|
113
|
-
const stale = !latest || ageMinutes(latest.started_at) > staleMinutes;
|
|
114
|
-
const latestStatus = latest ? String(latest.status || "").toLowerCase() : "missing";
|
|
115
|
-
const health = !latest ? "unknown" : (latestStatus !== "ok" ? "error" : (stale ? "stale" : (failures ? "degraded" : "ok")));
|
|
116
|
-
const captures = capturesByAgent.get(agent) || {};
|
|
117
|
-
return {
|
|
118
|
-
agent_name: agent,
|
|
119
|
-
health,
|
|
120
|
-
last_hook_at: latest && latest.started_at || null,
|
|
121
|
-
last_hook_age_min: latest ? ageMinutes(latest.started_at) : null,
|
|
122
|
-
failures_in_window: failures,
|
|
123
|
-
latest_hook: latest ? latest.target : null,
|
|
124
|
-
latest_prior_recall_ok: latestPayload.prior_recall_ok == null ? null : !!latestPayload.prior_recall_ok,
|
|
125
|
-
latest_prior_count: latestPayload.prior_count == null ? null : latestPayload.prior_count,
|
|
126
|
-
latest_transcript_sync_ok: latestPayload.transcript_sync_ok == null ? null : !!latestPayload.transcript_sync_ok,
|
|
127
|
-
latest_transcript_count: latestPayload.transcript_count == null ? null : latestPayload.transcript_count,
|
|
128
|
-
lifecycle: latestActions,
|
|
129
|
-
captures: {
|
|
130
|
-
last_user_prompt_at: captures.user_prompt_submit && captures.user_prompt_submit.occurred_at || null,
|
|
131
|
-
last_transcript_turn_at: captureAt(captures, "runtime_transcript_turn", LEGACY_RUNTIME_PREFIX + "_transcript_turn"),
|
|
132
|
-
last_precompact_at: captureAt(captures, "runtime_precompact_snapshot", LEGACY_RUNTIME_PREFIX + "_precompact_snapshot"),
|
|
133
|
-
last_session_end_at: captureAt(captures, "runtime_session_end_snapshot", LEGACY_RUNTIME_PREFIX + "_session_end_snapshot")
|
|
134
|
-
},
|
|
135
|
-
required_hooks_seen: {
|
|
136
|
-
session_start: !!latestActions.SessionStart,
|
|
137
|
-
user_prompt: !!latestActions.UserPromptSubmit,
|
|
138
|
-
pre_compact: !!latestActions.PreCompact,
|
|
139
|
-
post_tool: !!latestActions.PostToolUse,
|
|
140
|
-
stop: !!latestActions.Stop,
|
|
141
|
-
session_end: !!latestActions.SessionEnd
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
const summary = {
|
|
147
|
-
total: agentRows.length,
|
|
148
|
-
ok: agentRows.filter((row) => row.health === "ok").length,
|
|
149
|
-
degraded: agentRows.filter((row) => row.health === "degraded").length,
|
|
150
|
-
stale: agentRows.filter((row) => row.health === "stale").length,
|
|
151
|
-
error: agentRows.filter((row) => row.health === "error").length,
|
|
152
|
-
unknown: agentRows.filter((row) => row.health === "unknown").length,
|
|
153
|
-
failures_in_window: agentRows.reduce((sum, row) => sum + (row.failures_in_window || 0), 0)
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
return {
|
|
157
|
-
checked_at: new Date().toISOString(),
|
|
158
|
-
since,
|
|
159
|
-
stale_minutes: staleMinutes,
|
|
160
|
-
summary,
|
|
161
|
-
agents: agentRows
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
module.exports = { memoryHealth };
|
package/mnemo/package.json
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@mnemo/core",
|
|
3
|
-
"version": "0.1.1",
|
|
4
|
-
"description": "Persistent memory + identity engine. SQLite + FTS5 + sqlite-vec embeddings + MCP server. The core a personal/team agent runs on so it never starts at zero.",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"homepage": "https://github.com/Maykbiletti/mnemo",
|
|
7
|
-
"repository": {
|
|
8
|
-
"type": "git",
|
|
9
|
-
"url": "https://github.com/Maykbiletti/mnemo.git"
|
|
10
|
-
},
|
|
11
|
-
"main": "mcp.js",
|
|
12
|
-
"bin": {
|
|
13
|
-
"mnemo": "./bin/mnemo.js",
|
|
14
|
-
"mnemo-daemon": "./daemon.js",
|
|
15
|
-
"mnemo-mcp": "./mcp.js",
|
|
16
|
-
"mnemo-agent-loop": "./agent_loop_worker.js",
|
|
17
|
-
"mnemo-agent-loop-start": "./bin/agent-loop-start.js",
|
|
18
|
-
"mnemo-backfill-universal": "./universal_backfill.js",
|
|
19
|
-
"mnemo-approved-artifact-hub": "./bin/approved-artifact-hub.js",
|
|
20
|
-
"mnemo-firm-hook": "./hooks/firm-runtime-hook.js",
|
|
21
|
-
"mnemo-hook-doctor": "./hooks/hook-doctor.js",
|
|
22
|
-
"mnemo-hook-watchdog": "./hooks/hook-watchdog.js",
|
|
23
|
-
"mnemo-site-contract-audit": "./bin/site-contract-audit.js",
|
|
24
|
-
"mnemo-route-matrix-audit": "./bin/route-matrix-audit.js"
|
|
25
|
-
},
|
|
26
|
-
"scripts": {
|
|
27
|
-
"init": "node bin/mnemo.js init",
|
|
28
|
-
"bootstrap": "node bin/mnemo.js init",
|
|
29
|
-
"bootstrap:auto": "node bootstrap_auto.js",
|
|
30
|
-
"start": "node daemon.js",
|
|
31
|
-
"daemon": "node daemon.js",
|
|
32
|
-
"agent-loop": "node agent_loop_worker.js",
|
|
33
|
-
"agent-loop:start": "node bin/agent-loop-start.js",
|
|
34
|
-
"backfill:universal": "node universal_backfill.js",
|
|
35
|
-
"artifact-hub:validate": "node bin/approved-artifact-hub.js validate",
|
|
36
|
-
"mcp": "node mcp.js",
|
|
37
|
-
"hook:session-start": "node hooks/firm-runtime-hook.js session-start",
|
|
38
|
-
"hook:user-prompt": "node hooks/firm-runtime-hook.js user-prompt",
|
|
39
|
-
"hook:pre-compact": "node hooks/firm-runtime-hook.js pre-compact",
|
|
40
|
-
"hook:pre-tool": "node hooks/firm-runtime-hook.js pre-tool",
|
|
41
|
-
"hook:post-tool": "node hooks/firm-runtime-hook.js post-tool",
|
|
42
|
-
"hook:stop": "node hooks/firm-runtime-hook.js stop",
|
|
43
|
-
"hook:session-end": "node hooks/firm-runtime-hook.js session-end",
|
|
44
|
-
"hook:doctor": "node hooks/hook-doctor.js",
|
|
45
|
-
"hook:watchdog": "node hooks/hook-watchdog.js --flush --heal",
|
|
46
|
-
"site-contract-audit": "node bin/site-contract-audit.js",
|
|
47
|
-
"route-matrix-audit": "node bin/route-matrix-audit.js",
|
|
48
|
-
"embed": "node embedding_writer.js",
|
|
49
|
-
"loops": "node loop_scanner_v2.js",
|
|
50
|
-
"export": "node export_declarative.js",
|
|
51
|
-
"test": "node test_shared_utils.js && node test_http_utils.js && node test_brief_coordination.js && node test_access_routes.js && node test_protected_scope_gate.js && node test_resource_access_control.js && node test_approved_artifact_hub.js && node test_runtime_governance.js && node test_memory_consolidation.js && node test_agent_governance.js && node test_gstack_governance.js && node test_writer_health.js && node test_daemon_health_dispatch.js && node test_runtime_enforcement.js && node test_access_owner_question_guard.js && node test_runtime_turn_resume_pack.js && node test_mcp_runtime_receipt_token.js && node test_agent_mail_check.js && node test_external_repo_ops.js && node test_write_gate_risk.js && node test_semantic.js",
|
|
52
|
-
"test:integration": "node test_universal_capture.js"
|
|
53
|
-
},
|
|
54
|
-
"dependencies": {
|
|
55
|
-
"@xenova/transformers": "^2.17.2",
|
|
56
|
-
"better-sqlite3": "^12.9.0",
|
|
57
|
-
"imapflow": "^1.3.3",
|
|
58
|
-
"mailparser": "^3.9.8",
|
|
59
|
-
"sqlite-vec": "^0.1.9"
|
|
60
|
-
},
|
|
61
|
-
"overrides": {
|
|
62
|
-
"protobufjs": "^7.5.5"
|
|
63
|
-
},
|
|
64
|
-
"engines": {
|
|
65
|
-
"node": ">=20.0.0"
|
|
66
|
-
},
|
|
67
|
-
"keywords": [
|
|
68
|
-
"memory",
|
|
69
|
-
"agent",
|
|
70
|
-
"mcp",
|
|
71
|
-
"sqlite",
|
|
72
|
-
"embeddings",
|
|
73
|
-
"personal-agent",
|
|
74
|
-
"coding-agent",
|
|
75
|
-
"firm-os",
|
|
76
|
-
"llm-memory",
|
|
77
|
-
"vector-search"
|
|
78
|
-
]
|
|
79
|
-
}
|