@termix-it/cryptoclaw 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +93 -93
- package/README.md +1 -1
- package/assets/favicon.svg +22 -0
- package/dist/{accounts-CIGHxE7R.js → accounts-BIh6Lgjl.js} +1 -1
- package/dist/{accounts-BPjR5SyC.js → accounts-DA-4bmd_.js} +1 -1
- package/dist/{acp-cli-DG9nygBk.js → acp-cli-CBFKSvET.js} +8 -8
- package/dist/{acp-cli-DBWmJpUJ.js → acp-cli-CEPAR8vh.js} +8 -8
- package/dist/{agent-3MZVCC-N.js → agent-8dTCwA-D.js} +10 -10
- package/dist/{agent-scope-DBl1We79.js → agent-scope-BJucHu4R.js} +2 -2
- package/dist/{agent-scope-e_oNRhGi.js → agent-scope-DzpuqcS9.js} +5 -1
- package/dist/{agent-scope-DLfFOxP6.js → agent-scope-GUoze5gc.js} +2 -2
- package/dist/{agent-IDE9krld.js → agent-sjalTGVA.js} +10 -10
- package/dist/{audit-jaTyyQX1.js → audit-BMzW1G5a.js} +10 -10
- package/dist/{audit-Bj_dxNaD.js → audit-DQsCrYXQ.js} +10 -10
- package/dist/{auth-health-CCM6Z3vK.js → auth-health-Cr8ib9nm.js} +1 -1
- package/dist/{auth-health-BlspzqyF.js → auth-health-Dc-ImENT.js} +1 -1
- package/dist/{auth-profiles-DoD7YxsD.js → auth-profiles-CVShF1K6.js} +2 -2
- package/dist/build-info.json +3 -3
- package/dist/{call-D2DXG0AC.js → call-D-Kvee3W.js} +2 -2
- package/dist/{call-DqxlETxE.js → call-QEaFjVBF.js} +2 -2
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-DUkxROTo.js → channel-options-B951pKy8.js} +5 -5
- package/dist/{channel-options-BHpXOBuP.js → channel-options-DJsSCLD8.js} +3 -3
- package/dist/{channel-selection-BdigfMZZ.js → channel-selection-BWiz5Osx.js} +1 -1
- package/dist/{channel-selection-D7jFTFec.js → channel-selection-ChOffLk2.js} +1 -1
- package/dist/{channel-summary-DS0kcHm2.js → channel-summary-BQMoWZQ1.js} +5 -5
- package/dist/{channel-summary-CobMoKN6.js → channel-summary-C4kSR_wu.js} +5 -5
- package/dist/{channels-cli-DBwffwqw.js → channels-cli-Fv9FTQXn.js} +34 -34
- package/dist/{channels-cli-D7ZNRrq7.js → channels-cli-Lq6EWRJ9.js} +33 -33
- package/dist/{channels-status-issues-C2UGSPvH.js → channels-status-issues-BwOdQrU9.js} +1 -1
- package/dist/{channels-status-issues-Dxmd7zYk.js → channels-status-issues-DouPXVa3.js} +1 -1
- package/dist/{chrome-CwbWzmh4.js → chrome-D0L5ufqO.js} +1 -1
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-C9xiWnx9.js → cli-Bzyu6rQE.js} +27 -27
- package/dist/{cli-D6C9z94O.js → cli-DJnpasWd.js} +27 -27
- package/dist/{command-options-DL1PhuUF.js → command-options-DBpEhnW5.js} +3 -3
- package/dist/{commands-Dpeoos11.js → commands-B0LiAJsa.js} +3 -3
- package/dist/{completion-cli-CZ8zPqPs.js → completion-cli-Bd5FrGHg.js} +27 -27
- package/dist/{completion-cli-B5nR7jt8.js → completion-cli-Cs-B1hk7.js} +1 -1
- package/dist/{config-dQK4rbfx.js → config-D1wc31Qf.js} +4 -4
- package/dist/{config-DSpb2aMV.js → config-DBZqAqbe.js} +4 -4
- package/dist/{config-IwiWafT3.js → config-fXndcfb4.js} +2 -2
- package/dist/{config-guard-DwIb5Y-v.js → config-guard-Csl9Ubn5.js} +48 -48
- package/dist/{configure-CivCcvkA.js → configure-CeTzu0Ed.js} +20 -20
- package/dist/{configure-7M9mLC4o.js → configure-CxPJaP8X.js} +20 -20
- package/dist/{control-service-BXC31sNw.js → control-service-BBeopea3.js} +4 -4
- package/dist/{control-service-lVzEzp9f.js → control-service-CWGGzqpN.js} +4 -4
- package/dist/control-ui/apple-touch-icon.png +0 -0
- package/dist/control-ui/assets/{index-DQ-7PWhX.js → index-BdjmXlOn.js} +372 -363
- package/dist/control-ui/assets/index-BdjmXlOn.js.map +1 -0
- package/dist/control-ui/assets/{index-nlpH70Eh.css → index-BxkHytum.css} +1 -1
- package/dist/control-ui/favicon-32.png +0 -0
- package/dist/control-ui/favicon.ico +0 -0
- package/dist/control-ui/favicon.svg +4 -4
- package/dist/control-ui/index.html +2 -2
- package/dist/{cron-cli-DS8ytfYQ.js → cron-cli-D8gKivN0.js} +11 -11
- package/dist/{cron-cli-Djb3HUdz.js → cron-cli-yC5Cy77c.js} +11 -11
- package/dist/{daemon-cli-KoaJ2nJX.js → daemon-cli-BM8zb09s.js} +12 -12
- package/dist/{daemon-cli-ZQIKLvAO.js → daemon-cli-D8AC0Q_A.js} +12 -12
- package/dist/{daemon-runtime-CHWbAfKs.js → daemon-runtime-BMAJ_2LE.js} +1 -1
- package/dist/{daemon-runtime-DEjUQVjL.js → daemon-runtime-CD5XPuxz.js} +1 -1
- package/dist/{deliver-sPBfRlXT.js → deliver-CNKlQLWI.js} +6 -6
- package/dist/{deliver-OfX6bSYR.js → deliver-D8Yt4jkc.js} +6 -6
- package/dist/{deliver-DVRzRmNN.js → deliver-Doq_iIoh.js} +3 -3
- package/dist/{deps-CZOfeWEp.js → deps-BhcPiVuz.js} +2 -2
- package/dist/{deps-BSdWD2wF.js → deps-ZGqhOjkR.js} +2 -2
- package/dist/{devices-cli-b9iF_uOi.js → devices-cli-BcIB2VyK.js} +7 -7
- package/dist/{devices-cli-DHSpDnCS.js → devices-cli-BcznR9RO.js} +7 -7
- package/dist/{directory-cli-qniSxsHo.js → directory-cli--IOOMz66.js} +11 -11
- package/dist/{directory-cli-D0dTuAem.js → directory-cli-DGFlpQ4T.js} +11 -11
- package/dist/{dispatcher-DA3u3CwV.js → dispatcher-cp7uHiyX.js} +1 -1
- package/dist/{dns-cli-DwwMpMuN.js → dns-cli-DkhYuREi.js} +9 -9
- package/dist/{dns-cli-C0JUNb9O.js → dns-cli-fQ4wu1HJ.js} +9 -9
- package/dist/{docs-cli-BlFHCHDz.js → docs-cli-BgnDzmFT.js} +8 -8
- package/dist/{docs-cli-BpSPrY3Y.js → docs-cli-CPaJzUSD.js} +8 -8
- package/dist/{doctor-Da1XgFcW.js → doctor-D6M3Hc0a.js} +21 -21
- package/dist/{doctor-qrtookj-.js → doctor-DRRL31R4.js} +21 -21
- package/dist/entry.js +1 -1
- package/dist/{errors--S5IAxQx.js → errors-DpH6VpWK.js} +1 -1
- package/dist/{exec-approvals-cli-Csgqkksl.js → exec-approvals-cli-BhEdzGao.js} +12 -12
- package/dist/{exec-approvals-cli-Dk4yHE2L.js → exec-approvals-cli-DHMroOAh.js} +12 -12
- package/dist/extensionAPI.js +25 -25
- package/dist/{gateway-cli-CJ7H2DgV.js → gateway-cli-CbQ4xoXp.js} +183 -108
- package/dist/{gateway-cli-CrKl-bIH.js → gateway-cli-DO7lIBZ5.js} +185 -110
- package/dist/{gateway-rpc-BPfCU2Vi.js → gateway-rpc-0hjEbkzc.js} +1 -1
- package/dist/{gateway-rpc--CH0NWWR.js → gateway-rpc-anmk3tbT.js} +1 -1
- package/dist/{github-copilot-auth-CcPEEb3Q.js → github-copilot-auth-D6I2MUxi.js} +6 -6
- package/dist/{github-copilot-auth-h3beCc_l.js → github-copilot-auth-DvShXmvU.js} +6 -6
- package/dist/{gmail-setup-utils-pZ9NnOvB.js → gmail-setup-utils-CAfk_F1J.js} +2 -2
- package/dist/{gmail-setup-utils-CnVYPhaQ.js → gmail-setup-utils-CJ1pbsWv.js} +2 -2
- package/dist/{health-format-BcsR5dtU.js → health-format-DlvTEKqI.js} +8 -8
- package/dist/{health-format-Pl8qK65t.js → health-format-SZpheYuf.js} +8 -8
- package/dist/hooks/bundled/boot-md/HOOK.md +1 -1
- package/dist/hooks/bundled/command-logger/HOOK.md +1 -1
- package/dist/hooks/bundled/session-memory/HOOK.md +1 -1
- package/dist/hooks/bundled/soul-evil/HOOK.md +1 -1
- package/dist/{hooks-cli-zkLY25DX.js → hooks-cli-CedlcxxR.js} +31 -31
- package/dist/{hooks-cli-BKHTdsn4.js → hooks-cli-DRarvOK2.js} +31 -31
- package/dist/{hooks-status-BETsyuUR.js → hooks-status-B4cP-W7z.js} +3 -3
- package/dist/{hooks-status-nPgxLL-x.js → hooks-status-n8jKv3Fm.js} +3 -3
- package/dist/{image-DAsWVn7Q.js → image-C6tw3aWy.js} +4 -4
- package/dist/{image-CC_YKDB-.js → image-CBqp4iA0.js} +3 -3
- package/dist/{image-BFNcQzKp.js → image-CQgVMkgf.js} +4 -4
- package/dist/index.js +79 -79
- package/dist/{installs-Byb3s_8P.js → installs-BhPUpyE9.js} +2 -2
- package/dist/{installs-CELeuogN.js → installs-CWAe2dOG.js} +2 -2
- package/dist/{links-cf9h8BXu.js → links-Dv1EDiwa.js} +2 -2
- package/dist/{links-Brcj2Oc-.js → links-kbubTyay.js} +2 -2
- package/dist/{loader-CU4bkeKe.js → loader-DE_vKAH5.js} +44 -44
- package/dist/{logging-BJRQDTME.js → logging-B65tlzu3.js} +2 -2
- package/dist/{logging-CD55MXc7.js → logging-C3Y3mzWS.js} +2 -2
- package/dist/{login-qr-BCr2GKX6.js → login-qr-BTMkosTm.js} +1 -1
- package/dist/{login-qr-HIPJAnbT.js → login-qr-BpdHxT8l.js} +3 -3
- package/dist/{login-qr-BMbekoZW.js → login-qr-C_Vv7Cqc.js} +3 -3
- package/dist/{logs-cli-CM7-XOcZ.js → logs-cli-_DHuOrR4.js} +9 -9
- package/dist/{logs-cli-aqjT7oHu.js → logs-cli-emy-Mg4S.js} +9 -9
- package/dist/{manager-CtGvmGvM.js → manager-CNk2RhQo.js} +3 -3
- package/dist/{manager-DpZlm3gk.js → manager-Cu-KA-wA.js} +3 -3
- package/dist/{manager-C5m5qpB0.js → manager-bvW7170C.js} +3 -3
- package/dist/{manifest-registry-BdTzIlta.js → manifest-registry-CBbBh2FT.js} +1 -1
- package/dist/{manifest-registry-DVQHMj0y.js → manifest-registry-CmLtWVRR.js} +1 -1
- package/dist/{model-selection-DuI_Ue9Q.js → model-selection-BVTyreim.js} +1 -1
- package/dist/{model-selection-Av0fLq51.js → model-selection-DmO3rB3w.js} +2 -2
- package/dist/{models-cli-gmkzOpbq.js → models-cli-CdrDfutq.js} +32 -32
- package/dist/{models-cli-C0JOZ5oP.js → models-cli-CgIqfTHx.js} +32 -32
- package/dist/{node-cli-BND9LLkM.js → node-cli-Bsn9lQ6O.js} +13 -13
- package/dist/{node-cli-DNRB94ib.js → node-cli-Ckvs6bcI.js} +13 -13
- package/dist/{nodes-cli-BCWlqHyR.js → nodes-cli-BELOAYB6.js} +10 -10
- package/dist/{nodes-cli-DWSo5dX7.js → nodes-cli-CTQPoAcf.js} +10 -10
- package/dist/{onboard-channels-DJz2TusQ.js → onboard-channels-B5qHfMk8.js} +6 -6
- package/dist/{onboard-channels-B75LjjVZ.js → onboard-channels-BgchLTab.js} +6 -6
- package/dist/{onboard-skills-ByHkU9nx.js → onboard-skills-CyG0xbsu.js} +17 -17
- package/dist/{onboard-skills-Wknr7pxR.js → onboard-skills-DEnuz7z3.js} +17 -17
- package/dist/{onboarding-BejDjkx5.js → onboarding-B6aTF0nd.js} +37 -37
- package/dist/{openclaw-root-_zPXSqgo.js → openclaw-root-Cx_l_MXP.js} +6 -2
- package/dist/{openclaw-root-YSGWCNem.js → openclaw-root-DJB4AQtF.js} +6 -2
- package/dist/{pairing-cli-Cn5vt4oI.js → pairing-cli-C_PnyRzK.js} +11 -11
- package/dist/{pairing-cli-CFqD3IdI.js → pairing-cli-CocCRLzF.js} +11 -11
- package/dist/{pairing-store-BHzy16_t.js → pairing-store-Dbotpoz6.js} +1 -1
- package/dist/{pairing-store-BOhO49Bi.js → pairing-store-cC0TwSYc.js} +1 -1
- package/dist/{paths-Dlp4VNXa.js → paths-B7p98Wg9.js} +1 -1
- package/dist/{pi-embedded-helpers-CQ9sq3Uu.js → pi-embedded-helpers-Bmu_uE8Y.js} +4 -4
- package/dist/{pi-embedded-helpers-B7ARjDEK.js → pi-embedded-helpers-CT7w1pYd.js} +2 -2
- package/dist/{pi-embedded-helpers-FPVRDeKf.js → pi-embedded-helpers-DRK9Qub7.js} +2 -2
- package/dist/{pi-tools.policy-Du4RZy9R.js → pi-tools.policy-BjgXXFkH.js} +3 -3
- package/dist/{plugin-auto-enable-RwRwIUKC.js → plugin-auto-enable-BmBAQgRq.js} +4 -4
- package/dist/{plugin-auto-enable-EBxTHjFJ.js → plugin-auto-enable-CBfM3u2p.js} +4 -4
- package/dist/plugin-sdk/index.js +1 -1
- package/dist/{plugins-BI-p2ba9.js → plugins-CB4Xjrgb.js} +2 -2
- package/dist/{plugins-Dk4UBZwz.js → plugins-CQ1FUoTO.js} +2 -2
- package/dist/{plugins-cli-CMg0G56J.js → plugins-cli-DB1NYN9W.js} +33 -33
- package/dist/{plugins-cli-CX7QeUjq.js → plugins-cli-Dn9I2nvT.js} +33 -33
- package/dist/{ports-nXmd4Efh.js → ports-CcCvup-Y.js} +2 -2
- package/dist/{program-EAMJAB_2.js → program-CL1V1uQh.js} +58 -58
- package/dist/{pw-ai-D6JUaD41.js → pw-ai-CQDH40p5.js} +2 -2
- package/dist/{pw-ai-D2jD_dho.js → pw-ai-DUv3Smif.js} +2 -2
- package/dist/{qmd-manager-B-ijyM7o.js → qmd-manager-DJdGKjf-.js} +2 -2
- package/dist/{qmd-manager-xo4abL0u.js → qmd-manager-DqhsQHr6.js} +2 -2
- package/dist/{qmd-manager-C_Jah5eo.js → qmd-manager-ym3oBzzR.js} +2 -2
- package/dist/{register.subclis-CJGimm3-.js → register.subclis-Bf9yES9h.js} +28 -28
- package/dist/{reply-DfepuqG0.js → reply-qWVVjmhR.js} +44 -44
- package/dist/{routes-DkckwrRx.js → routes-C49H9SW5.js} +4 -4
- package/dist/{routes-Q42qtNl1.js → routes-DzL6l-Oq.js} +4 -4
- package/dist/{rpc-B4lvrGrD.js → rpc-BEKdRxnk.js} +1 -1
- package/dist/{rpc-CbWcXAQK.js → rpc-jU_lA6zf.js} +1 -1
- package/dist/{run-main-JFY3X4Xh.js → run-main-C12Z921D.js} +59 -59
- package/dist/{sandbox-BGqDfFaH.js → sandbox-Cfvpk8Q8.js} +9 -9
- package/dist/{sandbox-D_Tt3WRq.js → sandbox-DcPAdlhA.js} +9 -9
- package/dist/{sandbox-cli-CaxqKiTq.js → sandbox-cli-DVfJ38Q2.js} +16 -16
- package/dist/{sandbox-cli-DA0Cbrzl.js → sandbox-cli-DqrtTHAP.js} +16 -16
- package/dist/{security-cli-Ct-pfF2h.js → security-cli-2AAajc4y.js} +18 -18
- package/dist/{security-cli-BZjA_GAD.js → security-cli-YL2ZTkkR.js} +18 -18
- package/dist/{server-context-C53lhEx_.js → server-context-9SLnBBRW.js} +4 -4
- package/dist/{server-context-B9ez46MY.js → server-context-BG54Dk0A.js} +4 -4
- package/dist/{server-node-events-Cb6QOeDH.js → server-node-events-uUSBf7hZ.js} +29 -29
- package/dist/{server-node-events-DONmQvJg.js → server-node-events-x6ZMjAs1.js} +29 -29
- package/dist/{service-audit-AsnhO40e.js → service-audit-BsDPEKdd.js} +1 -1
- package/dist/{service-audit-BM-iyLL7.js → service-audit-CCg0o0UZ.js} +1 -1
- package/dist/{skills-7V483a6m.js → skills-DaDm2aTV.js} +3 -3
- package/dist/{skills-CsZRBUj0.js → skills-DryIpWLj.js} +3 -3
- package/dist/{skills-cli-DQaq5LBX.js → skills-cli-CYZbvr7O.js} +10 -10
- package/dist/{skills-cli-dVugbaAb.js → skills-cli-eDUNGpwb.js} +10 -10
- package/dist/{skills-status-4_4zVBvV.js → skills-status-D9G4-4sK.js} +2 -2
- package/dist/{skills-status-cD4rfMR9.js → skills-status-dTiH79uI.js} +2 -2
- package/dist/{status-DSoYX3Ep.js → status-BnbwLzB2.js} +3 -3
- package/dist/{status-DHPz4Mg_.js → status-CN2V3fan.js} +37 -37
- package/dist/{status-BakhDLuG.js → status-DCrBN9vJ.js} +3 -3
- package/dist/{system-cli-CUQswQPX.js → system-cli-BEmIixtY.js} +9 -9
- package/dist/{system-cli-Cz7in_Xr.js → system-cli-ZxnlO0-v.js} +9 -9
- package/dist/{table-DDQGlZSe.js → table--L48nql9.js} +2 -2
- package/dist/{table-DAOPkdc_.js → table-C1Xupkjv.js} +2 -2
- package/dist/{tool-display-Zbh1CRw5.js → tool-display-7o4pgXYF.js} +1 -1
- package/dist/{tool-display-B2rS2o6B.js → tool-display-B9G_vqLX.js} +1 -1
- package/dist/{tui-qPHLsB-x.js → tui-3eD-E_iD.js} +6 -6
- package/dist/{tui-DFVs6pRO.js → tui-BGSteZzU.js} +6 -6
- package/dist/{tui-cli-CBKZVd1C.js → tui-cli-B9iCyCn2.js} +19 -19
- package/dist/{tui-cli-DexeJOgZ.js → tui-cli-iakTIAvk.js} +19 -19
- package/dist/{update-cli-BPUtZjbl.js → update-cli-DUO4CVNB.js} +48 -48
- package/dist/{update-cli-ehTYbpaU.js → update-cli-DlXzjuIc.js} +47 -47
- package/dist/{update-B2q3duJD.js → update-lGuOUiyd.js} +3 -3
- package/dist/{update-runner-DAeygRSU.js → update-runner-L1EJYQRF.js} +5 -5
- package/dist/{update-runner-BfncKnU6.js → update-runner-eJ773fp-.js} +5 -5
- package/dist/{update-DNnej3C6.js → update-zm4_acQX.js} +3 -3
- package/dist/{utils-D7jskKIf.js → utils-CGterW74.js} +1 -7
- package/dist/{utils-7IMqr8vR.js → utils-DV2rghi_.js} +1 -7
- package/dist/{webhooks-cli-C0CV-1jG.js → webhooks-cli-BLHZn_at.js} +10 -10
- package/dist/{webhooks-cli-DT16BygW.js → webhooks-cli-UhujyhVU.js} +10 -10
- package/dist/{widearea-dns-Dk82I4Xa.js → widearea-dns-BKbb6W_z.js} +1 -1
- package/dist/{widearea-dns-BJZTAyT3.js → widearea-dns-CVZf20c2.js} +1 -1
- package/dist/{wsl-C24YfxH9.js → wsl-DntkIGSe.js} +1 -1
- package/docs/assets/pixel-lobster.svg +3 -3
- package/docs/blockchain/aave.md +72 -0
- package/docs/blockchain/agent-identity.md +73 -0
- package/docs/blockchain/contracts.md +96 -0
- package/docs/blockchain/defi.md +61 -0
- package/docs/blockchain/index.md +92 -0
- package/docs/blockchain/market-data.md +98 -0
- package/docs/blockchain/nft.md +44 -0
- package/docs/blockchain/portfolio.md +57 -0
- package/docs/blockchain/security.md +83 -0
- package/docs/blockchain/swap.md +89 -0
- package/docs/blockchain/wallet.md +77 -0
- package/docs/concepts/features.md +29 -10
- package/docs/docs.json +76 -6
- package/docs/index.md +44 -44
- package/docs/start/getting-started.md +10 -9
- package/docs/zh-CN/blockchain/aave.md +63 -0
- package/docs/zh-CN/blockchain/agent-identity.md +62 -0
- package/docs/zh-CN/blockchain/contracts.md +64 -0
- package/docs/zh-CN/blockchain/defi.md +49 -0
- package/docs/zh-CN/blockchain/index.md +92 -0
- package/docs/zh-CN/blockchain/market-data.md +68 -0
- package/docs/zh-CN/blockchain/nft.md +43 -0
- package/docs/zh-CN/blockchain/portfolio.md +49 -0
- package/docs/zh-CN/blockchain/security.md +75 -0
- package/docs/zh-CN/blockchain/swap.md +68 -0
- package/docs/zh-CN/blockchain/wallet.md +71 -0
- package/extensions/copilot-proxy/README.md +3 -3
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/diagnostics-otel/src/service.test.ts +12 -12
- package/extensions/diagnostics-otel/src/service.ts +79 -79
- package/extensions/discord/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/config.ts +3 -3
- package/extensions/memory-lancedb/{openclaw.plugin.json → cryptoclaw.plugin.json} +1 -1
- package/extensions/memory-lancedb/index.test.ts +2 -2
- package/extensions/memory-lancedb/index.ts +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/nostr/README.md +5 -5
- package/extensions/nostr/package.json +1 -1
- package/extensions/nostr/src/channel.ts +1 -1
- package/extensions/nostr/src/nostr-state-store.test.ts +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/voice-call/README.md +14 -14
- package/extensions/voice-call/package.json +1 -1
- package/extensions/voice-call/src/cli.ts +1 -1
- package/extensions/voice-call/src/core-bridge.ts +1 -1
- package/extensions/voice-call/src/manager.test.ts +6 -6
- package/extensions/voice-call/src/manager.ts +1 -1
- package/extensions/voice-call/src/response-generator.ts +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/package.json +1 -1
- package/skills/aave-bsc/SKILL.md +6 -0
- package/skills/coding-agent/SKILL.md +5 -5
- package/skills/discord/SKILL.md +6 -6
- package/skills/tmux/SKILL.md +6 -6
- package/dist/control-ui/assets/index-DQ-7PWhX.js.map +0 -1
- /package/extensions/copilot-proxy/{openclaw.plugin.json → cryptoclaw.plugin.json} +0 -0
- /package/extensions/diagnostics-otel/{openclaw.plugin.json → cryptoclaw.plugin.json} +0 -0
- /package/extensions/discord/{openclaw.plugin.json → cryptoclaw.plugin.json} +0 -0
- /package/extensions/imessage/{openclaw.plugin.json → cryptoclaw.plugin.json} +0 -0
- /package/extensions/memory-core/{openclaw.plugin.json → cryptoclaw.plugin.json} +0 -0
- /package/extensions/nostr/{openclaw.plugin.json → cryptoclaw.plugin.json} +0 -0
- /package/extensions/signal/{openclaw.plugin.json → cryptoclaw.plugin.json} +0 -0
- /package/extensions/slack/{openclaw.plugin.json → cryptoclaw.plugin.json} +0 -0
- /package/extensions/telegram/{openclaw.plugin.json → cryptoclaw.plugin.json} +0 -0
- /package/extensions/voice-call/{openclaw.plugin.json → cryptoclaw.plugin.json} +0 -0
- /package/extensions/whatsapp/{openclaw.plugin.json → cryptoclaw.plugin.json} +0 -0
|
@@ -12,7 +12,7 @@ import { ParentBasedSampler, TraceIdRatioBasedSampler } from "@opentelemetry/sdk
|
|
|
12
12
|
import { SemanticResourceAttributes } from "@opentelemetry/semantic-conventions";
|
|
13
13
|
import { onDiagnosticEvent, registerLogTransport } from "cryptoclaw/plugin-sdk";
|
|
14
14
|
|
|
15
|
-
const DEFAULT_SERVICE_NAME = "
|
|
15
|
+
const DEFAULT_SERVICE_NAME = "cryptoclaw";
|
|
16
16
|
|
|
17
17
|
function normalizeEndpoint(endpoint?: string): string | undefined {
|
|
18
18
|
const trimmed = endpoint?.trim();
|
|
@@ -129,78 +129,78 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
129
129
|
FATAL: 21 as SeverityNumber,
|
|
130
130
|
};
|
|
131
131
|
|
|
132
|
-
const meter = metrics.getMeter("
|
|
133
|
-
const tracer = trace.getTracer("
|
|
132
|
+
const meter = metrics.getMeter("cryptoclaw");
|
|
133
|
+
const tracer = trace.getTracer("cryptoclaw");
|
|
134
134
|
|
|
135
|
-
const tokensCounter = meter.createCounter("
|
|
135
|
+
const tokensCounter = meter.createCounter("cryptoclaw.tokens", {
|
|
136
136
|
unit: "1",
|
|
137
137
|
description: "Token usage by type",
|
|
138
138
|
});
|
|
139
|
-
const costCounter = meter.createCounter("
|
|
139
|
+
const costCounter = meter.createCounter("cryptoclaw.cost.usd", {
|
|
140
140
|
unit: "1",
|
|
141
141
|
description: "Estimated model cost (USD)",
|
|
142
142
|
});
|
|
143
|
-
const durationHistogram = meter.createHistogram("
|
|
143
|
+
const durationHistogram = meter.createHistogram("cryptoclaw.run.duration_ms", {
|
|
144
144
|
unit: "ms",
|
|
145
145
|
description: "Agent run duration",
|
|
146
146
|
});
|
|
147
|
-
const contextHistogram = meter.createHistogram("
|
|
147
|
+
const contextHistogram = meter.createHistogram("cryptoclaw.context.tokens", {
|
|
148
148
|
unit: "1",
|
|
149
149
|
description: "Context window size and usage",
|
|
150
150
|
});
|
|
151
|
-
const webhookReceivedCounter = meter.createCounter("
|
|
151
|
+
const webhookReceivedCounter = meter.createCounter("cryptoclaw.webhook.received", {
|
|
152
152
|
unit: "1",
|
|
153
153
|
description: "Webhook requests received",
|
|
154
154
|
});
|
|
155
|
-
const webhookErrorCounter = meter.createCounter("
|
|
155
|
+
const webhookErrorCounter = meter.createCounter("cryptoclaw.webhook.error", {
|
|
156
156
|
unit: "1",
|
|
157
157
|
description: "Webhook processing errors",
|
|
158
158
|
});
|
|
159
|
-
const webhookDurationHistogram = meter.createHistogram("
|
|
159
|
+
const webhookDurationHistogram = meter.createHistogram("cryptoclaw.webhook.duration_ms", {
|
|
160
160
|
unit: "ms",
|
|
161
161
|
description: "Webhook processing duration",
|
|
162
162
|
});
|
|
163
|
-
const messageQueuedCounter = meter.createCounter("
|
|
163
|
+
const messageQueuedCounter = meter.createCounter("cryptoclaw.message.queued", {
|
|
164
164
|
unit: "1",
|
|
165
165
|
description: "Messages queued for processing",
|
|
166
166
|
});
|
|
167
|
-
const messageProcessedCounter = meter.createCounter("
|
|
167
|
+
const messageProcessedCounter = meter.createCounter("cryptoclaw.message.processed", {
|
|
168
168
|
unit: "1",
|
|
169
169
|
description: "Messages processed by outcome",
|
|
170
170
|
});
|
|
171
|
-
const messageDurationHistogram = meter.createHistogram("
|
|
171
|
+
const messageDurationHistogram = meter.createHistogram("cryptoclaw.message.duration_ms", {
|
|
172
172
|
unit: "ms",
|
|
173
173
|
description: "Message processing duration",
|
|
174
174
|
});
|
|
175
|
-
const queueDepthHistogram = meter.createHistogram("
|
|
175
|
+
const queueDepthHistogram = meter.createHistogram("cryptoclaw.queue.depth", {
|
|
176
176
|
unit: "1",
|
|
177
177
|
description: "Queue depth on enqueue/dequeue",
|
|
178
178
|
});
|
|
179
|
-
const queueWaitHistogram = meter.createHistogram("
|
|
179
|
+
const queueWaitHistogram = meter.createHistogram("cryptoclaw.queue.wait_ms", {
|
|
180
180
|
unit: "ms",
|
|
181
181
|
description: "Queue wait time before execution",
|
|
182
182
|
});
|
|
183
|
-
const laneEnqueueCounter = meter.createCounter("
|
|
183
|
+
const laneEnqueueCounter = meter.createCounter("cryptoclaw.queue.lane.enqueue", {
|
|
184
184
|
unit: "1",
|
|
185
185
|
description: "Command queue lane enqueue events",
|
|
186
186
|
});
|
|
187
|
-
const laneDequeueCounter = meter.createCounter("
|
|
187
|
+
const laneDequeueCounter = meter.createCounter("cryptoclaw.queue.lane.dequeue", {
|
|
188
188
|
unit: "1",
|
|
189
189
|
description: "Command queue lane dequeue events",
|
|
190
190
|
});
|
|
191
|
-
const sessionStateCounter = meter.createCounter("
|
|
191
|
+
const sessionStateCounter = meter.createCounter("cryptoclaw.session.state", {
|
|
192
192
|
unit: "1",
|
|
193
193
|
description: "Session state transitions",
|
|
194
194
|
});
|
|
195
|
-
const sessionStuckCounter = meter.createCounter("
|
|
195
|
+
const sessionStuckCounter = meter.createCounter("cryptoclaw.session.stuck", {
|
|
196
196
|
unit: "1",
|
|
197
197
|
description: "Sessions stuck in processing",
|
|
198
198
|
});
|
|
199
|
-
const sessionStuckAgeHistogram = meter.createHistogram("
|
|
199
|
+
const sessionStuckAgeHistogram = meter.createHistogram("cryptoclaw.session.stuck_age_ms", {
|
|
200
200
|
unit: "ms",
|
|
201
201
|
description: "Age of stuck sessions",
|
|
202
202
|
});
|
|
203
|
-
const runAttemptCounter = meter.createCounter("
|
|
203
|
+
const runAttemptCounter = meter.createCounter("cryptoclaw.run.attempt", {
|
|
204
204
|
unit: "1",
|
|
205
205
|
description: "Run attempts",
|
|
206
206
|
});
|
|
@@ -219,7 +219,7 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
219
219
|
: {},
|
|
220
220
|
),
|
|
221
221
|
);
|
|
222
|
-
const otelLogger = logProvider.getLogger("
|
|
222
|
+
const otelLogger = logProvider.getLogger("cryptoclaw");
|
|
223
223
|
|
|
224
224
|
stopLogTransport = registerLogTransport((logObj) => {
|
|
225
225
|
const safeStringify = (value: unknown) => {
|
|
@@ -277,13 +277,13 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
277
277
|
}
|
|
278
278
|
|
|
279
279
|
const attributes: Record<string, string | number | boolean> = {
|
|
280
|
-
"
|
|
280
|
+
"cryptoclaw.log.level": logLevelName,
|
|
281
281
|
};
|
|
282
282
|
if (meta?.name) {
|
|
283
|
-
attributes["
|
|
283
|
+
attributes["cryptoclaw.logger"] = meta.name;
|
|
284
284
|
}
|
|
285
285
|
if (meta?.parentNames?.length) {
|
|
286
|
-
attributes["
|
|
286
|
+
attributes["cryptoclaw.logger.parents"] = meta.parentNames.join(".");
|
|
287
287
|
}
|
|
288
288
|
if (bindings) {
|
|
289
289
|
for (const [key, value] of Object.entries(bindings)) {
|
|
@@ -299,7 +299,7 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
301
|
if (numericArgs.length > 0) {
|
|
302
|
-
attributes["
|
|
302
|
+
attributes["cryptoclaw.log.args"] = safeStringify(numericArgs);
|
|
303
303
|
}
|
|
304
304
|
if (meta?.path?.filePath) {
|
|
305
305
|
attributes["code.filepath"] = meta.path.filePath;
|
|
@@ -311,7 +311,7 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
311
311
|
attributes["code.function"] = meta.path.method;
|
|
312
312
|
}
|
|
313
313
|
if (meta?.path?.filePathWithLine) {
|
|
314
|
-
attributes["
|
|
314
|
+
attributes["cryptoclaw.code.location"] = meta.path.filePathWithLine;
|
|
315
315
|
}
|
|
316
316
|
|
|
317
317
|
otelLogger.emit({
|
|
@@ -340,29 +340,29 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
340
340
|
|
|
341
341
|
const recordModelUsage = (evt: Extract<DiagnosticEventPayload, { type: "model.usage" }>) => {
|
|
342
342
|
const attrs = {
|
|
343
|
-
"
|
|
344
|
-
"
|
|
345
|
-
"
|
|
343
|
+
"cryptoclaw.channel": evt.channel ?? "unknown",
|
|
344
|
+
"cryptoclaw.provider": evt.provider ?? "unknown",
|
|
345
|
+
"cryptoclaw.model": evt.model ?? "unknown",
|
|
346
346
|
};
|
|
347
347
|
|
|
348
348
|
const usage = evt.usage;
|
|
349
349
|
if (usage.input) {
|
|
350
|
-
tokensCounter.add(usage.input, { ...attrs, "
|
|
350
|
+
tokensCounter.add(usage.input, { ...attrs, "cryptoclaw.token": "input" });
|
|
351
351
|
}
|
|
352
352
|
if (usage.output) {
|
|
353
|
-
tokensCounter.add(usage.output, { ...attrs, "
|
|
353
|
+
tokensCounter.add(usage.output, { ...attrs, "cryptoclaw.token": "output" });
|
|
354
354
|
}
|
|
355
355
|
if (usage.cacheRead) {
|
|
356
|
-
tokensCounter.add(usage.cacheRead, { ...attrs, "
|
|
356
|
+
tokensCounter.add(usage.cacheRead, { ...attrs, "cryptoclaw.token": "cache_read" });
|
|
357
357
|
}
|
|
358
358
|
if (usage.cacheWrite) {
|
|
359
|
-
tokensCounter.add(usage.cacheWrite, { ...attrs, "
|
|
359
|
+
tokensCounter.add(usage.cacheWrite, { ...attrs, "cryptoclaw.token": "cache_write" });
|
|
360
360
|
}
|
|
361
361
|
if (usage.promptTokens) {
|
|
362
|
-
tokensCounter.add(usage.promptTokens, { ...attrs, "
|
|
362
|
+
tokensCounter.add(usage.promptTokens, { ...attrs, "cryptoclaw.token": "prompt" });
|
|
363
363
|
}
|
|
364
364
|
if (usage.total) {
|
|
365
|
-
tokensCounter.add(usage.total, { ...attrs, "
|
|
365
|
+
tokensCounter.add(usage.total, { ...attrs, "cryptoclaw.token": "total" });
|
|
366
366
|
}
|
|
367
367
|
|
|
368
368
|
if (evt.costUsd) {
|
|
@@ -374,13 +374,13 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
374
374
|
if (evt.context?.limit) {
|
|
375
375
|
contextHistogram.record(evt.context.limit, {
|
|
376
376
|
...attrs,
|
|
377
|
-
"
|
|
377
|
+
"cryptoclaw.context": "limit",
|
|
378
378
|
});
|
|
379
379
|
}
|
|
380
380
|
if (evt.context?.used) {
|
|
381
381
|
contextHistogram.record(evt.context.used, {
|
|
382
382
|
...attrs,
|
|
383
|
-
"
|
|
383
|
+
"cryptoclaw.context": "used",
|
|
384
384
|
});
|
|
385
385
|
}
|
|
386
386
|
|
|
@@ -389,16 +389,16 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
389
389
|
}
|
|
390
390
|
const spanAttrs: Record<string, string | number> = {
|
|
391
391
|
...attrs,
|
|
392
|
-
"
|
|
393
|
-
"
|
|
394
|
-
"
|
|
395
|
-
"
|
|
396
|
-
"
|
|
397
|
-
"
|
|
398
|
-
"
|
|
392
|
+
"cryptoclaw.sessionKey": evt.sessionKey ?? "",
|
|
393
|
+
"cryptoclaw.sessionId": evt.sessionId ?? "",
|
|
394
|
+
"cryptoclaw.tokens.input": usage.input ?? 0,
|
|
395
|
+
"cryptoclaw.tokens.output": usage.output ?? 0,
|
|
396
|
+
"cryptoclaw.tokens.cache_read": usage.cacheRead ?? 0,
|
|
397
|
+
"cryptoclaw.tokens.cache_write": usage.cacheWrite ?? 0,
|
|
398
|
+
"cryptoclaw.tokens.total": usage.total ?? 0,
|
|
399
399
|
};
|
|
400
400
|
|
|
401
|
-
const span = spanWithDuration("
|
|
401
|
+
const span = spanWithDuration("cryptoclaw.model.usage", spanAttrs, evt.durationMs);
|
|
402
402
|
span.end();
|
|
403
403
|
};
|
|
404
404
|
|
|
@@ -406,8 +406,8 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
406
406
|
evt: Extract<DiagnosticEventPayload, { type: "webhook.received" }>,
|
|
407
407
|
) => {
|
|
408
408
|
const attrs = {
|
|
409
|
-
"
|
|
410
|
-
"
|
|
409
|
+
"cryptoclaw.channel": evt.channel ?? "unknown",
|
|
410
|
+
"cryptoclaw.webhook": evt.updateType ?? "unknown",
|
|
411
411
|
};
|
|
412
412
|
webhookReceivedCounter.add(1, attrs);
|
|
413
413
|
};
|
|
@@ -416,8 +416,8 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
416
416
|
evt: Extract<DiagnosticEventPayload, { type: "webhook.processed" }>,
|
|
417
417
|
) => {
|
|
418
418
|
const attrs = {
|
|
419
|
-
"
|
|
420
|
-
"
|
|
419
|
+
"cryptoclaw.channel": evt.channel ?? "unknown",
|
|
420
|
+
"cryptoclaw.webhook": evt.updateType ?? "unknown",
|
|
421
421
|
};
|
|
422
422
|
if (typeof evt.durationMs === "number") {
|
|
423
423
|
webhookDurationHistogram.record(evt.durationMs, attrs);
|
|
@@ -427,9 +427,9 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
427
427
|
}
|
|
428
428
|
const spanAttrs: Record<string, string | number> = { ...attrs };
|
|
429
429
|
if (evt.chatId !== undefined) {
|
|
430
|
-
spanAttrs["
|
|
430
|
+
spanAttrs["cryptoclaw.chatId"] = String(evt.chatId);
|
|
431
431
|
}
|
|
432
|
-
const span = spanWithDuration("
|
|
432
|
+
const span = spanWithDuration("cryptoclaw.webhook.processed", spanAttrs, evt.durationMs);
|
|
433
433
|
span.end();
|
|
434
434
|
};
|
|
435
435
|
|
|
@@ -437,8 +437,8 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
437
437
|
evt: Extract<DiagnosticEventPayload, { type: "webhook.error" }>,
|
|
438
438
|
) => {
|
|
439
439
|
const attrs = {
|
|
440
|
-
"
|
|
441
|
-
"
|
|
440
|
+
"cryptoclaw.channel": evt.channel ?? "unknown",
|
|
441
|
+
"cryptoclaw.webhook": evt.updateType ?? "unknown",
|
|
442
442
|
};
|
|
443
443
|
webhookErrorCounter.add(1, attrs);
|
|
444
444
|
if (!tracesEnabled) {
|
|
@@ -446,12 +446,12 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
446
446
|
}
|
|
447
447
|
const spanAttrs: Record<string, string | number> = {
|
|
448
448
|
...attrs,
|
|
449
|
-
"
|
|
449
|
+
"cryptoclaw.error": evt.error,
|
|
450
450
|
};
|
|
451
451
|
if (evt.chatId !== undefined) {
|
|
452
|
-
spanAttrs["
|
|
452
|
+
spanAttrs["cryptoclaw.chatId"] = String(evt.chatId);
|
|
453
453
|
}
|
|
454
|
-
const span = tracer.startSpan("
|
|
454
|
+
const span = tracer.startSpan("cryptoclaw.webhook.error", {
|
|
455
455
|
attributes: spanAttrs,
|
|
456
456
|
});
|
|
457
457
|
span.setStatus({ code: SpanStatusCode.ERROR, message: evt.error });
|
|
@@ -462,8 +462,8 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
462
462
|
evt: Extract<DiagnosticEventPayload, { type: "message.queued" }>,
|
|
463
463
|
) => {
|
|
464
464
|
const attrs = {
|
|
465
|
-
"
|
|
466
|
-
"
|
|
465
|
+
"cryptoclaw.channel": evt.channel ?? "unknown",
|
|
466
|
+
"cryptoclaw.source": evt.source ?? "unknown",
|
|
467
467
|
};
|
|
468
468
|
messageQueuedCounter.add(1, attrs);
|
|
469
469
|
if (typeof evt.queueDepth === "number") {
|
|
@@ -475,8 +475,8 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
475
475
|
evt: Extract<DiagnosticEventPayload, { type: "message.processed" }>,
|
|
476
476
|
) => {
|
|
477
477
|
const attrs = {
|
|
478
|
-
"
|
|
479
|
-
"
|
|
478
|
+
"cryptoclaw.channel": evt.channel ?? "unknown",
|
|
479
|
+
"cryptoclaw.outcome": evt.outcome ?? "unknown",
|
|
480
480
|
};
|
|
481
481
|
messageProcessedCounter.add(1, attrs);
|
|
482
482
|
if (typeof evt.durationMs === "number") {
|
|
@@ -487,21 +487,21 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
487
487
|
}
|
|
488
488
|
const spanAttrs: Record<string, string | number> = { ...attrs };
|
|
489
489
|
if (evt.sessionKey) {
|
|
490
|
-
spanAttrs["
|
|
490
|
+
spanAttrs["cryptoclaw.sessionKey"] = evt.sessionKey;
|
|
491
491
|
}
|
|
492
492
|
if (evt.sessionId) {
|
|
493
|
-
spanAttrs["
|
|
493
|
+
spanAttrs["cryptoclaw.sessionId"] = evt.sessionId;
|
|
494
494
|
}
|
|
495
495
|
if (evt.chatId !== undefined) {
|
|
496
|
-
spanAttrs["
|
|
496
|
+
spanAttrs["cryptoclaw.chatId"] = String(evt.chatId);
|
|
497
497
|
}
|
|
498
498
|
if (evt.messageId !== undefined) {
|
|
499
|
-
spanAttrs["
|
|
499
|
+
spanAttrs["cryptoclaw.messageId"] = String(evt.messageId);
|
|
500
500
|
}
|
|
501
501
|
if (evt.reason) {
|
|
502
|
-
spanAttrs["
|
|
502
|
+
spanAttrs["cryptoclaw.reason"] = evt.reason;
|
|
503
503
|
}
|
|
504
|
-
const span = spanWithDuration("
|
|
504
|
+
const span = spanWithDuration("cryptoclaw.message.processed", spanAttrs, evt.durationMs);
|
|
505
505
|
if (evt.outcome === "error") {
|
|
506
506
|
span.setStatus({ code: SpanStatusCode.ERROR, message: evt.error });
|
|
507
507
|
}
|
|
@@ -511,7 +511,7 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
511
511
|
const recordLaneEnqueue = (
|
|
512
512
|
evt: Extract<DiagnosticEventPayload, { type: "queue.lane.enqueue" }>,
|
|
513
513
|
) => {
|
|
514
|
-
const attrs = { "
|
|
514
|
+
const attrs = { "cryptoclaw.lane": evt.lane };
|
|
515
515
|
laneEnqueueCounter.add(1, attrs);
|
|
516
516
|
queueDepthHistogram.record(evt.queueSize, attrs);
|
|
517
517
|
};
|
|
@@ -519,7 +519,7 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
519
519
|
const recordLaneDequeue = (
|
|
520
520
|
evt: Extract<DiagnosticEventPayload, { type: "queue.lane.dequeue" }>,
|
|
521
521
|
) => {
|
|
522
|
-
const attrs = { "
|
|
522
|
+
const attrs = { "cryptoclaw.lane": evt.lane };
|
|
523
523
|
laneDequeueCounter.add(1, attrs);
|
|
524
524
|
queueDepthHistogram.record(evt.queueSize, attrs);
|
|
525
525
|
if (typeof evt.waitMs === "number") {
|
|
@@ -530,9 +530,9 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
530
530
|
const recordSessionState = (
|
|
531
531
|
evt: Extract<DiagnosticEventPayload, { type: "session.state" }>,
|
|
532
532
|
) => {
|
|
533
|
-
const attrs: Record<string, string> = { "
|
|
533
|
+
const attrs: Record<string, string> = { "cryptoclaw.state": evt.state };
|
|
534
534
|
if (evt.reason) {
|
|
535
|
-
attrs["
|
|
535
|
+
attrs["cryptoclaw.reason"] = evt.reason;
|
|
536
536
|
}
|
|
537
537
|
sessionStateCounter.add(1, attrs);
|
|
538
538
|
};
|
|
@@ -540,7 +540,7 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
540
540
|
const recordSessionStuck = (
|
|
541
541
|
evt: Extract<DiagnosticEventPayload, { type: "session.stuck" }>,
|
|
542
542
|
) => {
|
|
543
|
-
const attrs: Record<string, string> = { "
|
|
543
|
+
const attrs: Record<string, string> = { "cryptoclaw.state": evt.state };
|
|
544
544
|
sessionStuckCounter.add(1, attrs);
|
|
545
545
|
if (typeof evt.ageMs === "number") {
|
|
546
546
|
sessionStuckAgeHistogram.record(evt.ageMs, attrs);
|
|
@@ -550,26 +550,26 @@ export function createDiagnosticsOtelService(): OpenClawPluginService {
|
|
|
550
550
|
}
|
|
551
551
|
const spanAttrs: Record<string, string | number> = { ...attrs };
|
|
552
552
|
if (evt.sessionKey) {
|
|
553
|
-
spanAttrs["
|
|
553
|
+
spanAttrs["cryptoclaw.sessionKey"] = evt.sessionKey;
|
|
554
554
|
}
|
|
555
555
|
if (evt.sessionId) {
|
|
556
|
-
spanAttrs["
|
|
556
|
+
spanAttrs["cryptoclaw.sessionId"] = evt.sessionId;
|
|
557
557
|
}
|
|
558
|
-
spanAttrs["
|
|
559
|
-
spanAttrs["
|
|
560
|
-
const span = tracer.startSpan("
|
|
558
|
+
spanAttrs["cryptoclaw.queueDepth"] = evt.queueDepth ?? 0;
|
|
559
|
+
spanAttrs["cryptoclaw.ageMs"] = evt.ageMs;
|
|
560
|
+
const span = tracer.startSpan("cryptoclaw.session.stuck", { attributes: spanAttrs });
|
|
561
561
|
span.setStatus({ code: SpanStatusCode.ERROR, message: "session stuck" });
|
|
562
562
|
span.end();
|
|
563
563
|
};
|
|
564
564
|
|
|
565
565
|
const recordRunAttempt = (evt: Extract<DiagnosticEventPayload, { type: "run.attempt" }>) => {
|
|
566
|
-
runAttemptCounter.add(1, { "
|
|
566
|
+
runAttemptCounter.add(1, { "cryptoclaw.attempt": evt.attempt });
|
|
567
567
|
};
|
|
568
568
|
|
|
569
569
|
const recordHeartbeat = (
|
|
570
570
|
evt: Extract<DiagnosticEventPayload, { type: "diagnostic.heartbeat" }>,
|
|
571
571
|
) => {
|
|
572
|
-
queueDepthHistogram.record(evt.queued, { "
|
|
572
|
+
queueDepthHistogram.record(evt.queued, { "cryptoclaw.channel": "heartbeat" });
|
|
573
573
|
};
|
|
574
574
|
|
|
575
575
|
unsubscribe = onDiagnosticEvent((evt: DiagnosticEventPayload) => {
|
|
@@ -17,11 +17,11 @@ export const MEMORY_CATEGORIES = ["preference", "fact", "decision", "entity", "o
|
|
|
17
17
|
export type MemoryCategory = (typeof MEMORY_CATEGORIES)[number];
|
|
18
18
|
|
|
19
19
|
const DEFAULT_MODEL = "text-embedding-3-small";
|
|
20
|
-
const LEGACY_STATE_DIRS: string[] = [];
|
|
20
|
+
const LEGACY_STATE_DIRS: string[] = [".openclaw"];
|
|
21
21
|
|
|
22
22
|
function resolveDefaultDbPath(): string {
|
|
23
23
|
const home = homedir();
|
|
24
|
-
const preferred = join(home, ".
|
|
24
|
+
const preferred = join(home, ".cryptoclaw", "memory", "lancedb");
|
|
25
25
|
try {
|
|
26
26
|
if (fs.existsSync(preferred)) {
|
|
27
27
|
return preferred;
|
|
@@ -124,7 +124,7 @@ export const memoryConfigSchema = {
|
|
|
124
124
|
},
|
|
125
125
|
dbPath: {
|
|
126
126
|
label: "Database Path",
|
|
127
|
-
placeholder: "~/.
|
|
127
|
+
placeholder: "~/.cryptoclaw/memory/lancedb",
|
|
128
128
|
advanced: true,
|
|
129
129
|
},
|
|
130
130
|
autoCapture: {
|
|
@@ -23,7 +23,7 @@ describe("memory plugin e2e", () => {
|
|
|
23
23
|
let dbPath: string;
|
|
24
24
|
|
|
25
25
|
beforeEach(async () => {
|
|
26
|
-
tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "
|
|
26
|
+
tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "cryptoclaw-memory-test-"));
|
|
27
27
|
dbPath = path.join(tmpDir, "lancedb");
|
|
28
28
|
});
|
|
29
29
|
|
|
@@ -165,7 +165,7 @@ describeLive("memory plugin live tests", () => {
|
|
|
165
165
|
let dbPath: string;
|
|
166
166
|
|
|
167
167
|
beforeEach(async () => {
|
|
168
|
-
tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "
|
|
168
|
+
tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "cryptoclaw-memory-live-"));
|
|
169
169
|
dbPath = path.join(tmpDir, "lancedb");
|
|
170
170
|
});
|
|
171
171
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cryptoclaw/memory-lancedb",
|
|
3
3
|
"version": "2026.2.4",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "CryptoClaw LanceDB-backed long-term memory plugin with auto-recall/capture",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@lancedb/lancedb": "^0.23.0",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# @
|
|
1
|
+
# @cryptoclaw/nostr
|
|
2
2
|
|
|
3
|
-
Nostr DM channel plugin for
|
|
3
|
+
Nostr DM channel plugin for CryptoClaw using NIP-04 encrypted direct messages.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
This extension adds Nostr as a messaging channel to
|
|
7
|
+
This extension adds Nostr as a messaging channel to CryptoClaw. It enables your bot to:
|
|
8
8
|
|
|
9
9
|
- Receive encrypted DMs from Nostr users
|
|
10
10
|
- Send encrypted responses back
|
|
@@ -13,7 +13,7 @@ This extension adds Nostr as a messaging channel to OpenClaw. It enables your bo
|
|
|
13
13
|
## Installation
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
|
|
16
|
+
cryptoclaw plugins install @cryptoclaw/nostr
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## Quick Setup
|
|
@@ -90,7 +90,7 @@ openclaw plugins install @openclaw/nostr
|
|
|
90
90
|
# Using strfry
|
|
91
91
|
docker run -p 7777:7777 ghcr.io/hoytech/strfry
|
|
92
92
|
|
|
93
|
-
# Configure
|
|
93
|
+
# Configure cryptoclaw to use local relay
|
|
94
94
|
"relays": ["ws://localhost:7777"]
|
|
95
95
|
```
|
|
96
96
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cryptoclaw/nostr",
|
|
3
3
|
"version": "2026.2.4",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "CryptoClaw Nostr channel plugin for NIP-04 encrypted DMs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"cryptoclaw": "workspace:*",
|
|
@@ -226,7 +226,7 @@ export const nostrPlugin: ChannelPlugin<ResolvedNostrAccount> = {
|
|
|
226
226
|
onMessage: async (senderPubkey, text, reply) => {
|
|
227
227
|
ctx.log?.debug(`[${account.accountId}] DM from ${senderPubkey}: ${text.slice(0, 50)}...`);
|
|
228
228
|
|
|
229
|
-
// Forward to
|
|
229
|
+
// Forward to CryptoClaw's message pipeline
|
|
230
230
|
await runtime.channel.reply.handleInboundMessage({
|
|
231
231
|
channel: "nostr",
|
|
232
232
|
accountId: account.accountId,
|
|
@@ -12,7 +12,7 @@ import { setNostrRuntime } from "./runtime.js";
|
|
|
12
12
|
|
|
13
13
|
async function withTempStateDir<T>(fn: (dir: string) => Promise<T>) {
|
|
14
14
|
const previous = process.env.OPENCLAW_STATE_DIR;
|
|
15
|
-
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "
|
|
15
|
+
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "cryptoclaw-nostr-"));
|
|
16
16
|
process.env.OPENCLAW_STATE_DIR = dir;
|
|
17
17
|
setNostrRuntime({
|
|
18
18
|
state: {
|