chainlesschain 0.162.148 → 0.162.150
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/README.md +1 -1
- package/package.json +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-DwpCCp64.js → AIOps-CBLvrjeG.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-C9pBYocA.js → ActionButton-DYv2GtE0.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BWAkeXxK.js → Analytics-CL6PZ-Ww.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-CivFGH6B.js → AppLayout-xuyHt4uA.js} +3 -3
- package/src/assets/web-panel/assets/{Audit-Cm8hRpZm.js → Audit-DOvSVycq.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-DXdFMsE8.js → Backup-DMhfTswr.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-uAwSTeql.js → BaseInput-CQxDdm63.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-KU8eeJJE.js → Chat-BEeNhK2a.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-8nul8eTq.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-C6AMDkjd.js → Checkbox-CL04O-ER.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-t2moDxcO.js → Codegen-C50o-n7x.js} +1 -1
- package/src/assets/web-panel/assets/{Col-DCcsRRhN.js → Col-CH-bDkzs.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DtB-8SAC.js → Community-DqAIMvSe.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-CZm8THYA.js → Compact-C43fo_my.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-LiQgC7g1.js → Compliance-BERnMrdP.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-CA8SAxht.js → Cowork-Baw3w1gp.js} +4 -4
- package/src/assets/web-panel/assets/{Cron-CtRaF1wD.js → Cron-BEqAHF1-.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-6-br6Hub.js → Crosschain-CvnmKwK4.js} +1 -1
- package/src/assets/web-panel/assets/{DID-Do2EccrL.js → DID-iMPxgVdt.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-wrXcbzGe.js → Dashboard--4SJX3YR.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-p3FsT245.js → Dropdown-BgLV6xgz.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-D95A2L8q.js → EmailListRenderer-Bvb8oUD8.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-cLuJW2zo.js → FamilyGuardDashboard-DpXPjJB5.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-Brgq_cbN.js → Federation-BbFfJ1Xi.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DWLCkNgh.js → FormItemContext-DeGq1B-q.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BBqUfQd6.js → GenericCardRenderer-CNW7s9zM.js} +1 -1
- package/src/assets/web-panel/assets/{Git-8F090w4I.js → Git-L1PjW-lT.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CCogEbxb.js → Governance-PK-X58to.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CfLD7v7C.js → Inference-BePWEH-d.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DDuHJewd.js → KnowledgeGraph-LF_sBvdL.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CE8KSEVC.js → Logs-BKkfk9hy.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-DmwpZmhT.js → Marketplace-BNMqUDla.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-Bf7AazU8.js → McpTools-w4WPiyz2.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-D0QU_00S.js → Memory-DUKMVGNi.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-yXS9xdhx.js → MobileBridge-BWhiEyTJ.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-BuDUoGUP.js → MobileProjects-Ocf5JEkX.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-BYyHy28p.js → Mtc-D2B6MMhU.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-CK0aqpiZ.js → MtcAudit-DdYjCq1O.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-mNimKYeb.js → Multisig-Cb1hfuUZ.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-AioAJ0YA.js → NLProgramming-CTeImGp7.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CVVNCLHE.js → Notes-BjYNc7eQ.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-C4ABj-TK.js → NotificationSettings-Dn_NtRXQ.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-DIp8Xcbd.js → OrderTableRenderer-DVYYIizh.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-uozl_gWK.js → Organization-Be2Kmr5j.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-BCZOM2hK.js → Overflow-Cu_-qRlR.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CArcaiaj.js → P2P-DD2HoGzE.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-Sgq2Srr8.js → PdhVaultBrowser-BRI7DVth.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-BYrQrXnH.js → Permissions-C9Srcs2M.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BzHStAbz.js → PersonalDataHub-CUqcMgo1.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-k7KqxX1M.js → Pipeline-HBrQGLXt.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-IumTUWqx.js → Privacy-D-B0vjwh.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BRyImYTf.js → ProjectInit-eTeLIu9e.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-BFIqTBFk.js → ProjectSettings-DrRqCsC6.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-Dpid9CDg.js → Projects-1G9DNOhI.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-CyyFnUPs.js → Providers-RkTZzpxP.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-C82cRx-X.js → QrScannerModal-BSCUgsgC.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DGxDF521.js → QuickAsk-CHgyM3Bz.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-Cns-Am1y.js → Recommend-0lry4OZq.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-R7OqAIlg.js → RemoteSession-Cn45UroZ.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-D7mgPIYV.js → Reputation-Q-Zjb707.js} +1 -1
- package/src/assets/web-panel/assets/{Row-B3lEURyd.js → Row-BdM70oda.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-9_UVrpBt.js → RssFeed-DmOAKKap.js} +2 -2
- package/src/assets/web-panel/assets/{Search-ClZeO80q.js → Search-Dwavbm07.js} +1 -1
- package/src/assets/web-panel/assets/{Security-BNNJczEp.js → Security-DukXFCnk.js} +3 -3
- package/src/assets/web-panel/assets/{Services-C5SjrWUj.js → Services-BIlRnITu.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-Ci_obQ-g.js → Skeleton-YYVQdhhQ.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DdebN15P.js → Skills-B8_iYHz2.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-OinZP2vi.js → Sla-BdVrhT31.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-CxzbNF51.js → SpeechSettings-CD3ggRx7.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-D06N_66b.js → SyncSettings-Bp02VZFH.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-BdEdW0AZ.js → Tasks-DEVmCEsr.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-F1ctKmPa.js → Templates-B6czWc4N.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CVz1Urot.js → Tenant-BCJLv17r.js} +1 -1
- package/src/assets/web-panel/assets/Terminal-CD132d2Y.js +3 -0
- package/src/assets/web-panel/assets/{TimelineRenderer-Doitzjmf.js → TimelineRenderer-ZB-CvkZl.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BpyVRpVA.js → Tokens-BnSY0S-s.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-nWhWYTbU.js → Trigger-VZw9Oy2w.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DK_G-wLx.js → Trust-pZq7Hjd2.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-B5yBUojO.js → UkeySign-DnQaqk4q.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-C5D51qAe.js → VideoEditing-BEUfmvJV.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CLbL9K7v.js → Wallet-CoZKMXJ2.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-DZUelI3V.js → WebAuthn-CBOGVx1I.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-8RPxt4KW.js → WorkflowEditor-huSKn7TT.js} +1 -1
- package/src/assets/web-panel/assets/{chat-4N4tOA3d.js → chat-A_3w6FBO.js} +1 -1
- package/src/assets/web-panel/assets/{colors-zbbGVrua.js → colors-D1Bem9Oy.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-D7iMkbnE.js → compact-item-CJYJj0oO.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CBzPJv-w.js → createContext-BkbFiKT4.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-WDr3_M_N.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-bHdrQSqZ.js → hasIn-CKvUafVY.js} +1 -1
- package/src/assets/web-panel/assets/{index-DbE5D0WL.js → index-AjrSPnvv.js} +1 -1
- package/src/assets/web-panel/assets/{index-BCr0geV9.js → index-B8i0lViZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CiG1IZao.js → index-B9Svn0zc.js} +1 -1
- package/src/assets/web-panel/assets/{index-B1s0Bz9O.js → index-BHdHSX06.js} +1 -1
- package/src/assets/web-panel/assets/{index-QFObYeo1.js → index-BHdailyo.js} +1 -1
- package/src/assets/web-panel/assets/{index-BnBOpqv3.js → index-BJwlEnYo.js} +1 -1
- package/src/assets/web-panel/assets/{index-CdmMoYN1.js → index-BOoAQjJz.js} +1 -1
- package/src/assets/web-panel/assets/{index-DUyjUkY7.js → index-BSgWxAOG.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqdPyWm5.js → index-BdutMsne.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmqlJed-.js → index-BiDWxzbn.js} +1 -1
- package/src/assets/web-panel/assets/{index-S74FpAIn.js → index-By5a0T_W.js} +1 -1
- package/src/assets/web-panel/assets/{index-kmh1TxRa.js → index-C-WIY-FQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BTIjjXry.js → index-C37f6iey.js} +1 -1
- package/src/assets/web-panel/assets/{index-BS4_Mwk6.js → index-C9bWmTcO.js} +1 -1
- package/src/assets/web-panel/assets/{index-BBNr77E1.js → index-CBaosWRO.js} +1 -1
- package/src/assets/web-panel/assets/{index-QNAG4JtR.js → index-CBlBVJ_m.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bqmx24kh.js → index-CD62EEGo.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQfu1U78.js → index-CUj-l7GM.js} +1 -1
- package/src/assets/web-panel/assets/{index-BJ4ZGyW0.js → index-CVS8Ymuq.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ci009ijp.js → index-ChkXUj3f.js} +1 -1
- package/src/assets/web-panel/assets/{index-oDKNgCsP.js → index-Cj0OZ-37.js} +1 -1
- package/src/assets/web-panel/assets/{index-BZb8F8YG.js → index-Co3OFL0t.js} +1 -1
- package/src/assets/web-panel/assets/{index-308gCGh7.js → index-Crp8CbRg.js} +1 -1
- package/src/assets/web-panel/assets/{index-CPxkoKgA.js → index-D22zNXiS.js} +1 -1
- package/src/assets/web-panel/assets/{index-xYCm6W2h.js → index-DTs_D1OL.js} +1 -1
- package/src/assets/web-panel/assets/{index-BtbbdLnf.js → index-DfgCdFrN.js} +3 -3
- package/src/assets/web-panel/assets/{index-BsKehmmS.js → index-DjYrecNb.js} +1 -1
- package/src/assets/web-panel/assets/{index-CkxK86vf.js → index-DpW9cf3e.js} +1 -1
- package/src/assets/web-panel/assets/index-Dwix3p4g.js +1 -0
- package/src/assets/web-panel/assets/{index-CvRMA9uT.js → index-F--HuPG1.js} +1 -1
- package/src/assets/web-panel/assets/{index-DE9j5YgT.js → index-Fuk6t_3K.js} +1 -1
- package/src/assets/web-panel/assets/{index-B7b1hGry.js → index-JEAGMii9.js} +1 -1
- package/src/assets/web-panel/assets/{index-D1YDh7Wr.js → index-PF-mpv8K.js} +1 -1
- package/src/assets/web-panel/assets/index-SHaoZ0CA.js +1 -0
- package/src/assets/web-panel/assets/{index-CQ6NcfWz.js → index-b-sbVdjQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DyoNgbXl.js → index-pyvMVX8r.js} +1 -1
- package/src/assets/web-panel/assets/{index-DISWAYce.js → index-qNTtOVi_.js} +1 -1
- package/src/assets/web-panel/assets/{index-D4XKpj6c.js → index-tgO8iza6.js} +1 -1
- package/src/assets/web-panel/assets/{index-CahryTX0.js → index-ttDQVhZy.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BD55yNBt.js → initDefaultProps-DtrnfsZH.js} +1 -1
- package/src/assets/web-panel/assets/{motion-B5Bbe77U.js → motion-D4zqSaX3.js} +1 -1
- package/src/assets/web-panel/assets/{move-CTvIqHEH.js → move-CGFGOUQj.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BkNyPQKB.js → mtc-parser-DH2HvkJl.js} +1 -1
- package/src/assets/web-panel/assets/{omit-BaXJXgHA.js → omit-jJ2at5HX.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-Bw6-YTxH.js → pickAttrs-CRyMT1Fv.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BLdbkLqJ.js → placementArrow-DZ_CX0Pt.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-IVYkzntU.js → responsiveObserve-wruHk-h5.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DFMFwwtY.js → slide-BGgx8q67.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CURYRtZ1.js → statusUtils-Do5M7gKm.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Cfz63s1r.js → styleChecker-CRa-GZpX.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-COJL0KE3.js → useFlexGapSupport-BxPcq6pj.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-YLLojQQf.js → useFs-v5O2ZcJm.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BF_21qUC.js → usePersonalDataHub--z2FU0Px.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-9ZpkA7bb.js → vnode-1emidVKd.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DhtAfhl8.js → zoom-CcJaRyHs.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/assets/web-panel/remote-session-sw.js +43 -0
- package/src/command-manifest.json +22 -1
- package/src/commands/a2a.js +19 -4
- package/src/commands/activitypub.js +20 -3
- package/src/commands/agent.js +71 -10
- package/src/commands/audit.js +40 -24
- package/src/commands/codeintel.js +320 -0
- package/src/commands/collab.js +15 -2
- package/src/commands/compliance.js +5 -0
- package/src/commands/config.js +4 -1
- package/src/commands/dao.js +86 -14
- package/src/commands/dev.js +2 -0
- package/src/commands/did.js +7 -1
- package/src/commands/dlp.js +23 -1
- package/src/commands/economy.js +29 -3
- package/src/commands/eval.js +255 -0
- package/src/commands/evomap.js +26 -0
- package/src/commands/governance.js +17 -3
- package/src/commands/hardening.js +18 -0
- package/src/commands/incentive.js +5 -0
- package/src/commands/init.js +46 -2
- package/src/commands/kg.js +4 -0
- package/src/commands/loop.js +6 -1
- package/src/commands/lowcode.js +15 -2
- package/src/commands/marketplace.js +40 -6
- package/src/commands/matrix.js +20 -1
- package/src/commands/memory.js +4 -1
- package/src/commands/mtc.js +7 -1
- package/src/commands/nostr.js +31 -4
- package/src/commands/note.js +7 -4
- package/src/commands/plugin.js +474 -0
- package/src/commands/pqc.js +5 -0
- package/src/commands/reputation.js +10 -1
- package/src/commands/scim.js +6 -0
- package/src/commands/session.js +32 -10
- package/src/commands/siem.js +11 -0
- package/src/commands/sla.js +18 -3
- package/src/commands/social.js +38 -5
- package/src/commands/sso.js +10 -2
- package/src/commands/stress.js +23 -4
- package/src/commands/team.js +463 -0
- package/src/commands/tech.js +2 -0
- package/src/commands/tenant.js +10 -1
- package/src/commands/terraform.js +6 -0
- package/src/commands/update.js +1 -1
- package/src/commands/zkp.js +20 -0
- package/src/gateways/ws/message-dispatcher.js +48 -2
- package/src/gateways/ws/remote-session-protocol.js +140 -42
- package/src/gateways/ws/ws-server.js +1 -1
- package/src/harness/jsonl-session-store.js +12 -5
- package/src/harness/plugin-manager.js +16 -4
- package/src/harness/prompt-compressor.js +27 -1
- package/src/harness/remote-command-ledger.js +189 -0
- package/src/harness/remote-session-push-apns.js +246 -0
- package/src/harness/remote-session-push-errors.js +15 -0
- package/src/harness/remote-session-push-fcm.js +9 -25
- package/src/harness/remote-session-push-huawei.js +174 -0
- package/src/harness/remote-session-push-oppo.js +171 -0
- package/src/harness/remote-session-push-senders.js +42 -0
- package/src/harness/remote-session-push-vivo.js +179 -0
- package/src/harness/remote-session-push-web.js +299 -0
- package/src/harness/remote-session-push-xiaomi.js +99 -0
- package/src/harness/worktree-isolator.js +16 -6
- package/src/index.js +6 -0
- package/src/lib/__tests__/logger.test.js +5 -2
- package/src/lib/a2a-protocol.js +25 -1
- package/src/lib/activitypub-bridge.js +61 -0
- package/src/lib/agent-core.js +4 -0
- package/src/lib/agent-economy.js +262 -29
- package/src/lib/agent-network.js +7 -1
- package/src/lib/agent-sandbox.js +161 -5
- package/src/lib/agent-team/task-lease.js +434 -0
- package/src/lib/agent-team/team-budget.js +165 -0
- package/src/lib/agent-team/team-mailbox.js +106 -0
- package/src/lib/agent-team/team-runner.js +282 -0
- package/src/lib/agent-team/team-worktree.js +236 -0
- package/src/lib/agents.js +18 -0
- package/src/lib/async-hook-supervisor.cjs +391 -0
- package/src/lib/audit-logger.js +7 -6
- package/src/lib/autonomous-developer.js +60 -0
- package/src/lib/chat-core.js +17 -4
- package/src/lib/collaboration-governance.js +56 -0
- package/src/lib/community-governance.js +68 -0
- package/src/lib/compliance-manager.js +63 -0
- package/src/lib/cross-chain.js +5 -0
- package/src/lib/dao-governance.js +151 -2
- package/src/lib/did-manager.js +23 -10
- package/src/lib/dlp-engine.js +70 -0
- package/src/lib/eval/runner.js +251 -0
- package/src/lib/eval/tasks.js +626 -0
- package/src/lib/eval/trend.js +200 -0
- package/src/lib/evolution-system.js +92 -0
- package/src/lib/evomap-federation.js +55 -0
- package/src/lib/evomap-governance.js +94 -0
- package/src/lib/fatal-handler.js +17 -1
- package/src/lib/hardening-manager.js +73 -0
- package/src/lib/hierarchical-memory.js +14 -8
- package/src/lib/knowledge-exporter.js +8 -2
- package/src/lib/knowledge-graph.js +79 -0
- package/src/lib/llm-providers.js +23 -14
- package/src/lib/logger.js +4 -1
- package/src/lib/lsp/__tests__/benchmark.test.js +88 -0
- package/src/lib/lsp/__tests__/code-intelligence.integration.test.js +129 -0
- package/src/lib/lsp/__tests__/code-intelligence.test.js +228 -0
- package/src/lib/lsp/__tests__/jsonrpc-stream.test.js +104 -0
- package/src/lib/lsp/__tests__/lsp-client.test.js +269 -0
- package/src/lib/lsp/__tests__/lsp-manager.test.js +333 -0
- package/src/lib/lsp/__tests__/lsp-server-registry.test.js +128 -0
- package/src/lib/lsp/benchmark.js +257 -0
- package/src/lib/lsp/code-intelligence.js +356 -0
- package/src/lib/lsp/jsonrpc-stream.js +139 -0
- package/src/lib/lsp/lsp-client.js +339 -0
- package/src/lib/lsp/lsp-manager.js +375 -0
- package/src/lib/lsp/lsp-server-registry.js +196 -0
- package/src/lib/matrix-bridge.js +84 -0
- package/src/lib/memory-manager.js +5 -3
- package/src/lib/nostr-bridge.js +53 -0
- package/src/lib/permission-engine.js +22 -4
- package/src/lib/plugin-monitor-supervisor.js +238 -0
- package/src/lib/plugin-runtime/__tests__/remote-source.test.js +256 -0
- package/src/lib/plugin-runtime/agents.js +51 -0
- package/src/lib/plugin-runtime/bin.js +100 -0
- package/src/lib/plugin-runtime/hooks.js +100 -0
- package/src/lib/plugin-runtime/install.js +396 -0
- package/src/lib/plugin-runtime/lsp.js +75 -0
- package/src/lib/plugin-runtime/manifest.js +458 -0
- package/src/lib/plugin-runtime/mcp.js +89 -0
- package/src/lib/plugin-runtime/monitors.js +100 -0
- package/src/lib/plugin-runtime/policy.js +152 -0
- package/src/lib/plugin-runtime/reload.js +79 -0
- package/src/lib/plugin-runtime/remote-source.js +240 -0
- package/src/lib/plugin-runtime/scopes.js +197 -0
- package/src/lib/plugin-runtime/settings.js +119 -0
- package/src/lib/plugin-runtime/signature.js +107 -0
- package/src/lib/plugin-runtime/skills.js +43 -0
- package/src/lib/plugin-runtime/trust.js +140 -0
- package/src/lib/pqc-manager.js +64 -0
- package/src/lib/reputation-optimizer.js +101 -0
- package/src/lib/sandbox-egress-proxy.js +262 -0
- package/src/lib/sandbox-fs-policy.js +112 -0
- package/src/lib/sandbox-network-policy.js +151 -0
- package/src/lib/sandbox-v2.js +24 -18
- package/src/lib/scim-manager.js +36 -0
- package/src/lib/session-manager.js +5 -2
- package/src/lib/settings-hook-events.cjs +78 -6
- package/src/lib/settings-hooks.cjs +30 -3
- package/src/lib/settings-loader.cjs +35 -1
- package/src/lib/siem-exporter.js +45 -0
- package/src/lib/skill-loader.js +38 -2
- package/src/lib/skill-marketplace.js +83 -0
- package/src/lib/sla-manager.js +88 -0
- package/src/lib/social-manager.js +74 -0
- package/src/lib/stress-tester.js +65 -0
- package/src/lib/tech-learning-engine.js +75 -0
- package/src/lib/telemetry/span-recorder.js +237 -0
- package/src/lib/tenant-saas.js +107 -0
- package/src/lib/terraform-manager.js +67 -0
- package/src/lib/token-incentive.js +180 -29
- package/src/lib/wallet-manager.js +81 -35
- package/src/lib/zkp-engine.js +87 -0
- package/src/repl/agent-repl.js +417 -6
- package/src/runtime/__tests__/auto-pin.test.js +104 -0
- package/src/runtime/agent-core.js +771 -104
- package/src/runtime/auto-pin.js +117 -0
- package/src/runtime/coding-agent-contract-shared.cjs +82 -8
- package/src/runtime/coding-agent-policy.cjs +32 -7
- package/src/runtime/fallback-model.js +134 -7
- package/src/runtime/headless-runner.js +388 -108
- package/src/runtime/mcp-config.js +46 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DCNfbdlx.js +0 -1
- package/src/assets/web-panel/assets/Terminal-BvAK_Zel.js +0 -3
- package/src/assets/web-panel/assets/devWarning-C2Z5LRgq.js +0 -1
- package/src/assets/web-panel/assets/index-BGp6Yr-Y.js +0 -1
- package/src/assets/web-panel/assets/index-BXiw9dQf.js +0 -1
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `cc eval` — reliability eval harness (Phase 7). Runs a suite of self-checking
|
|
3
|
+
* coding tasks against the real agent and reports the task-success rate.
|
|
4
|
+
*
|
|
5
|
+
* Each task gets a fresh temp workspace; the agent is invoked headlessly
|
|
6
|
+
* (`cc agent -p` in that cwd with acceptEdits so it can write files) and the
|
|
7
|
+
* task's objective check() decides pass/fail. `--dry-run` swaps in a no-op agent
|
|
8
|
+
* so the harness + report can be exercised without a model.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import fs from "fs";
|
|
12
|
+
import path from "path";
|
|
13
|
+
import { fileURLToPath } from "url";
|
|
14
|
+
import { spawn } from "child_process";
|
|
15
|
+
import { runEvalSuite } from "../lib/eval/runner.js";
|
|
16
|
+
import { getSuite } from "../lib/eval/tasks.js";
|
|
17
|
+
import {
|
|
18
|
+
TelemetryRecorder,
|
|
19
|
+
formatTelemetry,
|
|
20
|
+
} from "../lib/telemetry/span-recorder.js";
|
|
21
|
+
import { computeTrend, formatTrend } from "../lib/eval/trend.js";
|
|
22
|
+
|
|
23
|
+
/** Append a run summary as one JSONL line to the history file. */
|
|
24
|
+
function appendHistory(file, record) {
|
|
25
|
+
fs.appendFileSync(file, JSON.stringify(record) + "\n", "utf8");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Read a JSONL eval-history file into an array of run records (skips bad lines). */
|
|
29
|
+
function readHistory(file) {
|
|
30
|
+
if (!fs.existsSync(file)) return [];
|
|
31
|
+
const out = [];
|
|
32
|
+
for (const line of fs.readFileSync(file, "utf8").split(/\r?\n/)) {
|
|
33
|
+
const t = line.trim();
|
|
34
|
+
if (!t) continue;
|
|
35
|
+
try {
|
|
36
|
+
out.push(JSON.parse(t));
|
|
37
|
+
} catch {
|
|
38
|
+
/* skip a corrupt history line rather than abort the report */
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
45
|
+
// This file is src/commands/eval.js → the CLI entry is bin/chainlesschain.js.
|
|
46
|
+
const BIN = path.resolve(__dirname, "..", "..", "bin", "chainlesschain.js");
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Build a runAgent that shells out to a headless `cc agent -p` in the task's
|
|
50
|
+
* workspace. acceptEdits lets it write files without an interactive prompt.
|
|
51
|
+
*/
|
|
52
|
+
function makeHeadlessRunAgent(opts = {}) {
|
|
53
|
+
return function runAgent({ prompt, cwd, timeoutMs }) {
|
|
54
|
+
return new Promise((resolve) => {
|
|
55
|
+
const args = [
|
|
56
|
+
BIN,
|
|
57
|
+
"agent",
|
|
58
|
+
"-p",
|
|
59
|
+
prompt,
|
|
60
|
+
"--permission-mode",
|
|
61
|
+
"acceptEdits",
|
|
62
|
+
"--output-format",
|
|
63
|
+
"text",
|
|
64
|
+
];
|
|
65
|
+
if (opts.model) args.push("--model", opts.model);
|
|
66
|
+
if (opts.provider) args.push("--provider", opts.provider);
|
|
67
|
+
const child = spawn(process.execPath, args, {
|
|
68
|
+
cwd,
|
|
69
|
+
env: { ...process.env, CLAUDECODE: "1" },
|
|
70
|
+
windowsHide: true,
|
|
71
|
+
});
|
|
72
|
+
let out = "";
|
|
73
|
+
let err = "";
|
|
74
|
+
let settled = false;
|
|
75
|
+
const done = (result) => {
|
|
76
|
+
if (settled) return;
|
|
77
|
+
settled = true;
|
|
78
|
+
resolve(result);
|
|
79
|
+
};
|
|
80
|
+
const timer = setTimeout(() => {
|
|
81
|
+
try {
|
|
82
|
+
child.kill("SIGTERM");
|
|
83
|
+
} catch {
|
|
84
|
+
/* already gone */
|
|
85
|
+
}
|
|
86
|
+
done({
|
|
87
|
+
ok: false,
|
|
88
|
+
output: out,
|
|
89
|
+
error: `timed out after ${timeoutMs || 120000}ms`,
|
|
90
|
+
});
|
|
91
|
+
}, timeoutMs || 120000);
|
|
92
|
+
if (typeof timer.unref === "function") timer.unref();
|
|
93
|
+
child.stdout?.on("data", (d) => (out += d.toString("utf8")));
|
|
94
|
+
child.stderr?.on("data", (d) => (err += d.toString("utf8")));
|
|
95
|
+
child.on("error", (e) => {
|
|
96
|
+
clearTimeout(timer);
|
|
97
|
+
done({ ok: false, output: out, error: e.message });
|
|
98
|
+
});
|
|
99
|
+
child.on("close", (code) => {
|
|
100
|
+
clearTimeout(timer);
|
|
101
|
+
done({ ok: code === 0, output: out, error: code === 0 ? null : err });
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function registerEvalCommand(program, { logger } = {}) {
|
|
108
|
+
const log = logger || console;
|
|
109
|
+
program
|
|
110
|
+
.command("eval")
|
|
111
|
+
.description(
|
|
112
|
+
"Run the reliability eval suite (self-checking coding tasks) and report the task-success rate",
|
|
113
|
+
)
|
|
114
|
+
.option("--suite <name>", "Suite to run", "builtin")
|
|
115
|
+
.option("--model <model>", "Model for the agent runs")
|
|
116
|
+
.option("--provider <provider>", "Provider for the agent runs")
|
|
117
|
+
.option("--json", "Output the summary as JSON")
|
|
118
|
+
.option("--keep", "Keep the per-task temp workspaces (debug)")
|
|
119
|
+
.option(
|
|
120
|
+
"--otlp <file>",
|
|
121
|
+
"Write OpenTelemetry (OTLP/JSON) spans for the run to a file",
|
|
122
|
+
)
|
|
123
|
+
.option(
|
|
124
|
+
"--dry-run",
|
|
125
|
+
"Use a no-op agent (exercise the harness/report without a model)",
|
|
126
|
+
)
|
|
127
|
+
.option(
|
|
128
|
+
"--history <file>",
|
|
129
|
+
"Append this run's summary (JSONL) for trend tracking",
|
|
130
|
+
)
|
|
131
|
+
.option(
|
|
132
|
+
"--label <label>",
|
|
133
|
+
"Tag this run in the history (e.g. a version/commit)",
|
|
134
|
+
)
|
|
135
|
+
.option(
|
|
136
|
+
"--trend",
|
|
137
|
+
"Report the pass-rate trend from --history instead of running (CI gate)",
|
|
138
|
+
)
|
|
139
|
+
.option(
|
|
140
|
+
"--regression-threshold <pct>",
|
|
141
|
+
"With --trend: pass-rate drop (in points) that fails the gate on its own",
|
|
142
|
+
"0",
|
|
143
|
+
)
|
|
144
|
+
.action(async (options) => {
|
|
145
|
+
// Trend mode: don't run the suite — read the recorded history and report
|
|
146
|
+
// the pass-rate trend + per-task regressions. This is the release-pipeline
|
|
147
|
+
// consumer (the runs themselves need a real model; the report is pure).
|
|
148
|
+
if (options.trend) {
|
|
149
|
+
if (!options.history) {
|
|
150
|
+
(log.error || console.error)("--trend requires --history <file>");
|
|
151
|
+
process.exitCode = 1;
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const runs = readHistory(options.history);
|
|
155
|
+
const threshold =
|
|
156
|
+
Math.max(0, Number(options.regressionThreshold) || 0) / 100;
|
|
157
|
+
const trend = computeTrend(runs, { regressionThreshold: threshold });
|
|
158
|
+
if (options.json) console.log(JSON.stringify(trend, null, 2));
|
|
159
|
+
else (log.log || console.log)(formatTrend(trend));
|
|
160
|
+
if (trend.regressed) process.exitCode = 1;
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
let tasks;
|
|
165
|
+
try {
|
|
166
|
+
tasks = getSuite(options.suite);
|
|
167
|
+
} catch (err) {
|
|
168
|
+
log.error ? log.error(err.message) : console.error(err.message);
|
|
169
|
+
process.exitCode = 1;
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const runAgent = options.dryRun
|
|
173
|
+
? async () => ({ ok: true, output: "(dry-run: no agent)" })
|
|
174
|
+
: makeHeadlessRunAgent({
|
|
175
|
+
model: options.model,
|
|
176
|
+
provider: options.provider,
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
// OTel-shaped telemetry for the run (per-task span + failure class).
|
|
180
|
+
const recorder = new TelemetryRecorder({ serviceName: "cc-eval" });
|
|
181
|
+
|
|
182
|
+
const summary = await runEvalSuite(tasks, {
|
|
183
|
+
runAgent,
|
|
184
|
+
recorder,
|
|
185
|
+
keepWorkspaces: options.keep === true,
|
|
186
|
+
onResult: options.json
|
|
187
|
+
? undefined
|
|
188
|
+
: (r) =>
|
|
189
|
+
(log.info || console.log)(
|
|
190
|
+
` ${r.pass ? "✔" : "✗"} ${r.id} (${r.ms}ms)` +
|
|
191
|
+
(r.error
|
|
192
|
+
? ` — ${r.error}`
|
|
193
|
+
: r.detail
|
|
194
|
+
? ` — ${r.detail}`
|
|
195
|
+
: ""),
|
|
196
|
+
),
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
if (options.otlp) {
|
|
200
|
+
try {
|
|
201
|
+
fs.writeFileSync(
|
|
202
|
+
options.otlp,
|
|
203
|
+
JSON.stringify(recorder.toOtlp(), null, 2),
|
|
204
|
+
"utf8",
|
|
205
|
+
);
|
|
206
|
+
} catch (e) {
|
|
207
|
+
(log.error || console.error)(` otlp write failed: ${e.message}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Append to the trend history (a compact record — pass counts + per-task
|
|
212
|
+
// pass/fail + a timestamp/label — so `cc eval --trend` can chart it).
|
|
213
|
+
if (options.history) {
|
|
214
|
+
try {
|
|
215
|
+
appendHistory(options.history, {
|
|
216
|
+
ranAt: new Date().toISOString(),
|
|
217
|
+
label: options.label || null,
|
|
218
|
+
passed: summary.passed,
|
|
219
|
+
total: summary.total,
|
|
220
|
+
passRate: summary.passRate,
|
|
221
|
+
unrelatedChangeRate: summary.unrelatedChangeRate,
|
|
222
|
+
results: (summary.results || []).map((r) => ({
|
|
223
|
+
id: r.id,
|
|
224
|
+
pass: r.pass,
|
|
225
|
+
})),
|
|
226
|
+
});
|
|
227
|
+
} catch (e) {
|
|
228
|
+
(log.error || console.error)(` history write failed: ${e.message}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
if (options.json) {
|
|
233
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
234
|
+
} else {
|
|
235
|
+
// Per-task lines already streamed via onResult; print the summary +
|
|
236
|
+
// the telemetry metrics (durations / failure classification).
|
|
237
|
+
const pct = (summary.passRate * 100).toFixed(1);
|
|
238
|
+
(log.log || console.log)(
|
|
239
|
+
`\nEval: ${summary.passed}/${summary.total} passed (${pct}%) in ${summary.ms}ms`,
|
|
240
|
+
);
|
|
241
|
+
if (typeof summary.unrelatedChangeRate === "number") {
|
|
242
|
+
const upct = (summary.unrelatedChangeRate * 100).toFixed(1);
|
|
243
|
+
(log.log || console.log)(
|
|
244
|
+
`Unrelated-change rate: ${upct}% (${summary.tasksWithUnrelatedChanges} task(s) edited files outside their expected surface)`,
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
if (summary.telemetry) {
|
|
248
|
+
(log.log || console.log)("\n" + formatTelemetry(summary.telemetry));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Non-zero exit when not every task passed — usable as a CI gate.
|
|
252
|
+
if (summary.passed < summary.total) process.exitCode = 1;
|
|
253
|
+
});
|
|
254
|
+
return program;
|
|
255
|
+
}
|
package/src/commands/evomap.js
CHANGED
|
@@ -11,6 +11,7 @@ import { EvoMapClient } from "../lib/evomap-client.js";
|
|
|
11
11
|
import { EvoMapManager } from "../lib/evomap-manager.js";
|
|
12
12
|
import {
|
|
13
13
|
ensureEvoMapFederationTables,
|
|
14
|
+
loadFromDb as loadFedFromDb,
|
|
14
15
|
listFederatedHubs,
|
|
15
16
|
addFederatedHub,
|
|
16
17
|
syncGenes,
|
|
@@ -28,6 +29,7 @@ import {
|
|
|
28
29
|
} from "../lib/evomap-federation.js";
|
|
29
30
|
import {
|
|
30
31
|
ensureEvoMapGovernanceTables,
|
|
32
|
+
loadFromDb as loadGovFromDb,
|
|
31
33
|
registerOwnership,
|
|
32
34
|
traceOwnership,
|
|
33
35
|
createGovernanceProposal,
|
|
@@ -221,6 +223,7 @@ export function registerEvoMapCommand(program) {
|
|
|
221
223
|
}
|
|
222
224
|
const db = ctx.db.getDatabase();
|
|
223
225
|
ensureEvoMapFederationTables(db);
|
|
226
|
+
loadFedFromDb(db);
|
|
224
227
|
|
|
225
228
|
const hubs = listFederatedHubs(db, {
|
|
226
229
|
status: options.status,
|
|
@@ -261,6 +264,7 @@ export function registerEvoMapCommand(program) {
|
|
|
261
264
|
}
|
|
262
265
|
const db = ctx.db.getDatabase();
|
|
263
266
|
ensureEvoMapFederationTables(db);
|
|
267
|
+
loadFedFromDb(db);
|
|
264
268
|
|
|
265
269
|
const hub = addFederatedHub(db, url, options.name, options.region);
|
|
266
270
|
logger.success("Hub added");
|
|
@@ -288,6 +292,7 @@ export function registerEvoMapCommand(program) {
|
|
|
288
292
|
}
|
|
289
293
|
const db = ctx.db.getDatabase();
|
|
290
294
|
ensureEvoMapFederationTables(db);
|
|
295
|
+
loadFedFromDb(db);
|
|
291
296
|
|
|
292
297
|
const geneIds = options.geneIds
|
|
293
298
|
? options.geneIds.split(",").map((s) => s.trim())
|
|
@@ -317,6 +322,7 @@ export function registerEvoMapCommand(program) {
|
|
|
317
322
|
}
|
|
318
323
|
const db = ctx.db.getDatabase();
|
|
319
324
|
ensureEvoMapFederationTables(db);
|
|
325
|
+
loadFedFromDb(db);
|
|
320
326
|
|
|
321
327
|
const report = getPressureReport();
|
|
322
328
|
if (options.json) {
|
|
@@ -354,6 +360,7 @@ export function registerEvoMapCommand(program) {
|
|
|
354
360
|
}
|
|
355
361
|
const db = ctx.db.getDatabase();
|
|
356
362
|
ensureEvoMapFederationTables(db);
|
|
363
|
+
loadFedFromDb(db);
|
|
357
364
|
|
|
358
365
|
const entry = recombineGenes(db, geneId1, geneId2);
|
|
359
366
|
logger.success("Genes recombined");
|
|
@@ -389,6 +396,7 @@ export function registerEvoMapCommand(program) {
|
|
|
389
396
|
}
|
|
390
397
|
const db = ctx.db.getDatabase();
|
|
391
398
|
ensureEvoMapFederationTables(db);
|
|
399
|
+
loadFedFromDb(db);
|
|
392
400
|
|
|
393
401
|
const entries = getLineage(geneId);
|
|
394
402
|
if (options.json) {
|
|
@@ -428,6 +436,7 @@ export function registerEvoMapCommand(program) {
|
|
|
428
436
|
}
|
|
429
437
|
const db = ctx.db.getDatabase();
|
|
430
438
|
ensureEvoMapGovernanceTables(db);
|
|
439
|
+
loadGovFromDb(db);
|
|
431
440
|
|
|
432
441
|
const result = registerOwnership(db, geneId, ownerDid);
|
|
433
442
|
logger.success("Ownership registered");
|
|
@@ -455,6 +464,7 @@ export function registerEvoMapCommand(program) {
|
|
|
455
464
|
}
|
|
456
465
|
const db = ctx.db.getDatabase();
|
|
457
466
|
ensureEvoMapGovernanceTables(db);
|
|
467
|
+
loadGovFromDb(db);
|
|
458
468
|
|
|
459
469
|
const result = traceOwnership(geneId);
|
|
460
470
|
if (options.json) {
|
|
@@ -490,6 +500,7 @@ export function registerEvoMapCommand(program) {
|
|
|
490
500
|
}
|
|
491
501
|
const db = ctx.db.getDatabase();
|
|
492
502
|
ensureEvoMapGovernanceTables(db);
|
|
503
|
+
loadGovFromDb(db);
|
|
493
504
|
|
|
494
505
|
const result = createGovernanceProposal(
|
|
495
506
|
db,
|
|
@@ -522,6 +533,7 @@ export function registerEvoMapCommand(program) {
|
|
|
522
533
|
}
|
|
523
534
|
const db = ctx.db.getDatabase();
|
|
524
535
|
ensureEvoMapGovernanceTables(db);
|
|
536
|
+
loadGovFromDb(db);
|
|
525
537
|
|
|
526
538
|
const result = voteOnGovernanceProposal(
|
|
527
539
|
db,
|
|
@@ -555,6 +567,7 @@ export function registerEvoMapCommand(program) {
|
|
|
555
567
|
}
|
|
556
568
|
const db = ctx.db.getDatabase();
|
|
557
569
|
ensureEvoMapGovernanceTables(db);
|
|
570
|
+
loadGovFromDb(db);
|
|
558
571
|
|
|
559
572
|
const result = getGovernanceDashboard();
|
|
560
573
|
if (options.json) {
|
|
@@ -626,6 +639,7 @@ export function registerEvoMapCommand(program) {
|
|
|
626
639
|
}
|
|
627
640
|
const db = ctx.db.getDatabase();
|
|
628
641
|
ensureEvoMapFederationTables(db);
|
|
642
|
+
loadFedFromDb(db);
|
|
629
643
|
console.log(JSON.stringify(setHubStatus(db, hubId, status), null, 2));
|
|
630
644
|
await shutdown();
|
|
631
645
|
} catch (err) {
|
|
@@ -650,6 +664,7 @@ export function registerEvoMapCommand(program) {
|
|
|
650
664
|
}
|
|
651
665
|
const db = ctx.db.getDatabase();
|
|
652
666
|
ensureEvoMapFederationTables(db);
|
|
667
|
+
loadFedFromDb(db);
|
|
653
668
|
const hubs = listHubsV2(db, {
|
|
654
669
|
status: options.status,
|
|
655
670
|
region: options.region,
|
|
@@ -676,6 +691,7 @@ export function registerEvoMapCommand(program) {
|
|
|
676
691
|
}
|
|
677
692
|
const db = ctx.db.getDatabase();
|
|
678
693
|
ensureEvoMapFederationTables(db);
|
|
694
|
+
loadFedFromDb(db);
|
|
679
695
|
console.log(JSON.stringify(buildFederationContext(), null, 2));
|
|
680
696
|
await shutdown();
|
|
681
697
|
} catch (err) {
|
|
@@ -696,6 +712,7 @@ export function registerEvoMapCommand(program) {
|
|
|
696
712
|
}
|
|
697
713
|
const db = ctx.db.getDatabase();
|
|
698
714
|
ensureEvoMapFederationTables(db);
|
|
715
|
+
loadFedFromDb(db);
|
|
699
716
|
console.log(JSON.stringify(getFederationStatsV2(), null, 2));
|
|
700
717
|
await shutdown();
|
|
701
718
|
} catch (err) {
|
|
@@ -748,6 +765,7 @@ export function registerEvoMapCommand(program) {
|
|
|
748
765
|
}
|
|
749
766
|
const db = ctx.db.getDatabase();
|
|
750
767
|
ensureEvoMapGovernanceTables(db);
|
|
768
|
+
loadGovFromDb(db);
|
|
751
769
|
const p = createGovernanceProposalV2(db, {
|
|
752
770
|
title: options.title,
|
|
753
771
|
description: options.description,
|
|
@@ -781,6 +799,7 @@ export function registerEvoMapCommand(program) {
|
|
|
781
799
|
}
|
|
782
800
|
const db = ctx.db.getDatabase();
|
|
783
801
|
ensureEvoMapGovernanceTables(db);
|
|
802
|
+
loadGovFromDb(db);
|
|
784
803
|
const r = castVoteV2(db, {
|
|
785
804
|
proposalId,
|
|
786
805
|
voterDid: options.voter,
|
|
@@ -807,6 +826,7 @@ export function registerEvoMapCommand(program) {
|
|
|
807
826
|
}
|
|
808
827
|
const db = ctx.db.getDatabase();
|
|
809
828
|
ensureEvoMapGovernanceTables(db);
|
|
829
|
+
loadGovFromDb(db);
|
|
810
830
|
console.log(
|
|
811
831
|
JSON.stringify(setProposalStatus(db, proposalId, status), null, 2),
|
|
812
832
|
);
|
|
@@ -829,6 +849,7 @@ export function registerEvoMapCommand(program) {
|
|
|
829
849
|
}
|
|
830
850
|
const db = ctx.db.getDatabase();
|
|
831
851
|
ensureEvoMapGovernanceTables(db);
|
|
852
|
+
loadGovFromDb(db);
|
|
832
853
|
console.log(JSON.stringify(executeProposal(db, proposalId), null, 2));
|
|
833
854
|
await shutdown();
|
|
834
855
|
} catch (err) {
|
|
@@ -849,6 +870,7 @@ export function registerEvoMapCommand(program) {
|
|
|
849
870
|
}
|
|
850
871
|
const db = ctx.db.getDatabase();
|
|
851
872
|
ensureEvoMapGovernanceTables(db);
|
|
873
|
+
loadGovFromDb(db);
|
|
852
874
|
console.log(JSON.stringify(cancelProposal(db, proposalId), null, 2));
|
|
853
875
|
await shutdown();
|
|
854
876
|
} catch (err) {
|
|
@@ -869,6 +891,7 @@ export function registerEvoMapCommand(program) {
|
|
|
869
891
|
}
|
|
870
892
|
const db = ctx.db.getDatabase();
|
|
871
893
|
ensureEvoMapGovernanceTables(db);
|
|
894
|
+
loadGovFromDb(db);
|
|
872
895
|
console.log(JSON.stringify(expireProposalsV2(db), null, 2));
|
|
873
896
|
await shutdown();
|
|
874
897
|
} catch (err) {
|
|
@@ -892,6 +915,7 @@ export function registerEvoMapCommand(program) {
|
|
|
892
915
|
}
|
|
893
916
|
const db = ctx.db.getDatabase();
|
|
894
917
|
ensureEvoMapGovernanceTables(db);
|
|
918
|
+
loadGovFromDb(db);
|
|
895
919
|
console.log(
|
|
896
920
|
JSON.stringify(
|
|
897
921
|
listProposalsV2(db, {
|
|
@@ -922,6 +946,7 @@ export function registerEvoMapCommand(program) {
|
|
|
922
946
|
}
|
|
923
947
|
const db = ctx.db.getDatabase();
|
|
924
948
|
ensureEvoMapGovernanceTables(db);
|
|
949
|
+
loadGovFromDb(db);
|
|
925
950
|
console.log(JSON.stringify(traceContributions(geneId), null, 2));
|
|
926
951
|
await shutdown();
|
|
927
952
|
} catch (err) {
|
|
@@ -942,6 +967,7 @@ export function registerEvoMapCommand(program) {
|
|
|
942
967
|
}
|
|
943
968
|
const db = ctx.db.getDatabase();
|
|
944
969
|
ensureEvoMapGovernanceTables(db);
|
|
970
|
+
loadGovFromDb(db);
|
|
945
971
|
console.log(JSON.stringify(getGovernanceStatsV2(), null, 2));
|
|
946
972
|
await shutdown();
|
|
947
973
|
} catch (err) {
|
|
@@ -12,6 +12,7 @@ import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
|
12
12
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
13
13
|
import {
|
|
14
14
|
ensureGovernanceTables,
|
|
15
|
+
loadFromDb,
|
|
15
16
|
listProposalTypes,
|
|
16
17
|
listProposalStatuses,
|
|
17
18
|
listImpactLevels,
|
|
@@ -68,6 +69,7 @@ function _dbFromCtx(ctx) {
|
|
|
68
69
|
}
|
|
69
70
|
const db = ctx.db.getDatabase();
|
|
70
71
|
ensureGovernanceTables(db);
|
|
72
|
+
loadFromDb(db);
|
|
71
73
|
return db;
|
|
72
74
|
}
|
|
73
75
|
|
|
@@ -292,7 +294,11 @@ export function registerGovernanceCommand(program) {
|
|
|
292
294
|
.command("close <proposal-id>")
|
|
293
295
|
.description("Close voting — auto-resolves to passed/rejected")
|
|
294
296
|
.option("-q, --quorum <n>", "Quorum threshold (0-1)", floatArg("--quorum"))
|
|
295
|
-
.option(
|
|
297
|
+
.option(
|
|
298
|
+
"-t, --threshold <n>",
|
|
299
|
+
"Pass threshold (0-1)",
|
|
300
|
+
floatArg("--threshold"),
|
|
301
|
+
)
|
|
296
302
|
.option(
|
|
297
303
|
"-n, --total-voters <n>",
|
|
298
304
|
"Total eligible voters (for quorum)",
|
|
@@ -404,8 +410,16 @@ export function registerGovernanceCommand(program) {
|
|
|
404
410
|
.command("tally <proposal-id>")
|
|
405
411
|
.description("Show vote tally with quorum/threshold check")
|
|
406
412
|
.option("-q, --quorum <n>", "Quorum threshold (0-1)", floatArg("--quorum"))
|
|
407
|
-
.option(
|
|
408
|
-
|
|
413
|
+
.option(
|
|
414
|
+
"-t, --threshold <n>",
|
|
415
|
+
"Pass threshold (0-1)",
|
|
416
|
+
floatArg("--threshold"),
|
|
417
|
+
)
|
|
418
|
+
.option(
|
|
419
|
+
"-n, --total-voters <n>",
|
|
420
|
+
"Total eligible voters",
|
|
421
|
+
intArg("--total-voters"),
|
|
422
|
+
)
|
|
409
423
|
.option("--json", "Output as JSON")
|
|
410
424
|
.action(async (proposalId, options) => {
|
|
411
425
|
try {
|
|
@@ -10,6 +10,7 @@ import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
|
10
10
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
11
11
|
import {
|
|
12
12
|
ensureHardeningTables,
|
|
13
|
+
loadFromDb,
|
|
13
14
|
collectBaseline,
|
|
14
15
|
compareBaseline,
|
|
15
16
|
listBaselines,
|
|
@@ -71,6 +72,7 @@ export function registerHardeningCommand(program) {
|
|
|
71
72
|
}
|
|
72
73
|
const db = ctx.db.getDatabase();
|
|
73
74
|
ensureHardeningTables(db);
|
|
75
|
+
loadFromDb(db);
|
|
74
76
|
|
|
75
77
|
const result = collectBaseline(db, name, options.version);
|
|
76
78
|
logger.success("Baseline collected");
|
|
@@ -99,6 +101,7 @@ export function registerHardeningCommand(program) {
|
|
|
99
101
|
}
|
|
100
102
|
const db = ctx.db.getDatabase();
|
|
101
103
|
ensureHardeningTables(db);
|
|
104
|
+
loadFromDb(db);
|
|
102
105
|
|
|
103
106
|
const result = compareBaseline(baselineId, options.current);
|
|
104
107
|
if (options.json) {
|
|
@@ -134,6 +137,7 @@ export function registerHardeningCommand(program) {
|
|
|
134
137
|
}
|
|
135
138
|
const db = ctx.db.getDatabase();
|
|
136
139
|
ensureHardeningTables(db);
|
|
140
|
+
loadFromDb(db);
|
|
137
141
|
|
|
138
142
|
const baselines = listBaselines();
|
|
139
143
|
if (options.json) {
|
|
@@ -171,6 +175,7 @@ export function registerHardeningCommand(program) {
|
|
|
171
175
|
}
|
|
172
176
|
const db = ctx.db.getDatabase();
|
|
173
177
|
ensureHardeningTables(db);
|
|
178
|
+
loadFromDb(db);
|
|
174
179
|
|
|
175
180
|
const result = runAudit(db, name);
|
|
176
181
|
logger.success(`Audit complete: score ${result.score}%`);
|
|
@@ -204,6 +209,7 @@ export function registerHardeningCommand(program) {
|
|
|
204
209
|
}
|
|
205
210
|
const db = ctx.db.getDatabase();
|
|
206
211
|
ensureHardeningTables(db);
|
|
212
|
+
loadFromDb(db);
|
|
207
213
|
|
|
208
214
|
const reports = getAuditReports();
|
|
209
215
|
if (options.json) {
|
|
@@ -247,6 +253,7 @@ export function registerHardeningCommand(program) {
|
|
|
247
253
|
}
|
|
248
254
|
const db = ctx.db.getDatabase();
|
|
249
255
|
ensureHardeningTables(db);
|
|
256
|
+
loadFromDb(db);
|
|
250
257
|
|
|
251
258
|
const requiredKeys = options.required
|
|
252
259
|
? options.required
|
|
@@ -305,6 +312,7 @@ export function registerHardeningCommand(program) {
|
|
|
305
312
|
}
|
|
306
313
|
const db = ctx.db.getDatabase();
|
|
307
314
|
ensureHardeningTables(db);
|
|
315
|
+
loadFromDb(db);
|
|
308
316
|
|
|
309
317
|
const result = deployCheck();
|
|
310
318
|
if (options.json) {
|
|
@@ -345,6 +353,7 @@ export function registerHardeningCommand(program) {
|
|
|
345
353
|
}
|
|
346
354
|
const db = ctx.db.getDatabase();
|
|
347
355
|
ensureHardeningTables(db);
|
|
356
|
+
loadFromDb(db);
|
|
348
357
|
|
|
349
358
|
const report = getAuditReport(auditId);
|
|
350
359
|
if (options.json) {
|
|
@@ -520,6 +529,7 @@ export function registerHardeningCommand(program) {
|
|
|
520
529
|
try {
|
|
521
530
|
const { db } = await bootstrap();
|
|
522
531
|
ensureHardeningTables(db);
|
|
532
|
+
loadFromDb(db);
|
|
523
533
|
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
524
534
|
const r = registerAuditV2(db, {
|
|
525
535
|
name,
|
|
@@ -544,6 +554,7 @@ export function registerHardeningCommand(program) {
|
|
|
544
554
|
try {
|
|
545
555
|
const { db } = await bootstrap();
|
|
546
556
|
ensureHardeningTables(db);
|
|
557
|
+
loadFromDb(db);
|
|
547
558
|
const r = startAudit(db, auditId);
|
|
548
559
|
if (opts.json) console.log(JSON.stringify(r, null, 2));
|
|
549
560
|
else console.log(`${auditId} → ${r.status}`);
|
|
@@ -565,6 +576,7 @@ export function registerHardeningCommand(program) {
|
|
|
565
576
|
try {
|
|
566
577
|
const { db } = await bootstrap();
|
|
567
578
|
ensureHardeningTables(db);
|
|
579
|
+
loadFromDb(db);
|
|
568
580
|
const warningThreshold = opts.warningThreshold
|
|
569
581
|
? Number(opts.warningThreshold)
|
|
570
582
|
: undefined;
|
|
@@ -592,6 +604,7 @@ export function registerHardeningCommand(program) {
|
|
|
592
604
|
try {
|
|
593
605
|
const { db } = await bootstrap();
|
|
594
606
|
ensureHardeningTables(db);
|
|
607
|
+
loadFromDb(db);
|
|
595
608
|
const patch = {};
|
|
596
609
|
if (opts.errorMessage !== undefined)
|
|
597
610
|
patch.errorMessage = opts.errorMessage;
|
|
@@ -626,6 +639,7 @@ export function registerHardeningCommand(program) {
|
|
|
626
639
|
try {
|
|
627
640
|
const { db } = await bootstrap();
|
|
628
641
|
ensureHardeningTables(db);
|
|
642
|
+
loadFromDb(db);
|
|
629
643
|
const r = autoTimeoutAudits(db);
|
|
630
644
|
if (opts.json) console.log(JSON.stringify(r, null, 2));
|
|
631
645
|
else console.log(`Timed out ${r.length} audit(s)`);
|
|
@@ -646,6 +660,7 @@ export function registerHardeningCommand(program) {
|
|
|
646
660
|
try {
|
|
647
661
|
const { db } = await bootstrap();
|
|
648
662
|
ensureHardeningTables(db);
|
|
663
|
+
loadFromDb(db);
|
|
649
664
|
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
650
665
|
const r = createBaselineV2(db, {
|
|
651
666
|
name,
|
|
@@ -669,6 +684,7 @@ export function registerHardeningCommand(program) {
|
|
|
669
684
|
try {
|
|
670
685
|
const { db } = await bootstrap();
|
|
671
686
|
ensureHardeningTables(db);
|
|
687
|
+
loadFromDb(db);
|
|
672
688
|
const r = activateBaseline(db, baselineId);
|
|
673
689
|
if (opts.json) console.log(JSON.stringify(r, null, 2));
|
|
674
690
|
else console.log(`${baselineId} → ${r.status}`);
|
|
@@ -689,6 +705,7 @@ export function registerHardeningCommand(program) {
|
|
|
689
705
|
try {
|
|
690
706
|
const { db } = await bootstrap();
|
|
691
707
|
ensureHardeningTables(db);
|
|
708
|
+
loadFromDb(db);
|
|
692
709
|
const patch = {};
|
|
693
710
|
if (opts.reason !== undefined) patch.reason = opts.reason;
|
|
694
711
|
if (opts.metadata !== undefined)
|
|
@@ -722,6 +739,7 @@ export function registerHardeningCommand(program) {
|
|
|
722
739
|
try {
|
|
723
740
|
const { db } = await bootstrap();
|
|
724
741
|
ensureHardeningTables(db);
|
|
742
|
+
loadFromDb(db);
|
|
725
743
|
const r = autoArchiveStaleBaselines(db);
|
|
726
744
|
if (opts.json) console.log(JSON.stringify(r, null, 2));
|
|
727
745
|
else console.log(`Archived ${r.length} baseline(s)`);
|
|
@@ -10,6 +10,7 @@ import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
|
10
10
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
11
11
|
import {
|
|
12
12
|
ensureTokenTables,
|
|
13
|
+
loadFromDb as loadIncentiveFromDb,
|
|
13
14
|
listContributionTypes,
|
|
14
15
|
listTxTypes,
|
|
15
16
|
getBalance,
|
|
@@ -57,6 +58,10 @@ function _dbFromCtx(ctx) {
|
|
|
57
58
|
}
|
|
58
59
|
const db = ctx.db.getDatabase();
|
|
59
60
|
ensureTokenTables(db);
|
|
61
|
+
// Rehydrate the ledger Maps from the token_* tables — without this every read
|
|
62
|
+
// is Map-only-empty in the fresh CLI process, and worse, _ensureAccount would
|
|
63
|
+
// clobber the persisted balance back to 0 via INSERT OR REPLACE.
|
|
64
|
+
loadIncentiveFromDb(db);
|
|
60
65
|
return db;
|
|
61
66
|
}
|
|
62
67
|
|