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.
Files changed (322) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/assets/web-panel/.build-hash +1 -1
  4. package/src/assets/web-panel/assets/{AIOps-DwpCCp64.js → AIOps-CBLvrjeG.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-C9pBYocA.js → ActionButton-DYv2GtE0.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-BWAkeXxK.js → Analytics-CL6PZ-Ww.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-CivFGH6B.js → AppLayout-xuyHt4uA.js} +3 -3
  8. package/src/assets/web-panel/assets/{Audit-Cm8hRpZm.js → Audit-DOvSVycq.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-DXdFMsE8.js → Backup-DMhfTswr.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-uAwSTeql.js → BaseInput-CQxDdm63.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-KU8eeJJE.js → Chat-BEeNhK2a.js} +5 -5
  12. package/src/assets/web-panel/assets/ChatBubbleRenderer-8nul8eTq.js +1 -0
  13. package/src/assets/web-panel/assets/{Checkbox-C6AMDkjd.js → Checkbox-CL04O-ER.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-t2moDxcO.js → Codegen-C50o-n7x.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-DCcsRRhN.js → Col-CH-bDkzs.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-DtB-8SAC.js → Community-DqAIMvSe.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-CZm8THYA.js → Compact-C43fo_my.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-LiQgC7g1.js → Compliance-BERnMrdP.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-CA8SAxht.js → Cowork-Baw3w1gp.js} +4 -4
  20. package/src/assets/web-panel/assets/{Cron-CtRaF1wD.js → Cron-BEqAHF1-.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-6-br6Hub.js → Crosschain-CvnmKwK4.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-Do2EccrL.js → DID-iMPxgVdt.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-wrXcbzGe.js → Dashboard--4SJX3YR.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-p3FsT245.js → Dropdown-BgLV6xgz.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-D95A2L8q.js → EmailListRenderer-Bvb8oUD8.js} +1 -1
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-cLuJW2zo.js → FamilyGuardDashboard-DpXPjJB5.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-Brgq_cbN.js → Federation-BbFfJ1Xi.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-DWLCkNgh.js → FormItemContext-DeGq1B-q.js} +1 -1
  29. package/src/assets/web-panel/assets/{GenericCardRenderer-BBqUfQd6.js → GenericCardRenderer-CNW7s9zM.js} +1 -1
  30. package/src/assets/web-panel/assets/{Git-8F090w4I.js → Git-L1PjW-lT.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-CCogEbxb.js → Governance-PK-X58to.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-CfLD7v7C.js → Inference-BePWEH-d.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-DDuHJewd.js → KnowledgeGraph-LF_sBvdL.js} +1 -1
  34. package/src/assets/web-panel/assets/{Logs-CE8KSEVC.js → Logs-BKkfk9hy.js} +2 -2
  35. package/src/assets/web-panel/assets/{Marketplace-DmwpZmhT.js → Marketplace-BNMqUDla.js} +1 -1
  36. package/src/assets/web-panel/assets/{McpTools-Bf7AazU8.js → McpTools-w4WPiyz2.js} +5 -5
  37. package/src/assets/web-panel/assets/{Memory-D0QU_00S.js → Memory-DUKMVGNi.js} +2 -2
  38. package/src/assets/web-panel/assets/{MobileBridge-yXS9xdhx.js → MobileBridge-BWhiEyTJ.js} +1 -1
  39. package/src/assets/web-panel/assets/{MobileProjects-BuDUoGUP.js → MobileProjects-Ocf5JEkX.js} +1 -1
  40. package/src/assets/web-panel/assets/{Mtc-BYyHy28p.js → Mtc-D2B6MMhU.js} +4 -4
  41. package/src/assets/web-panel/assets/{MtcAudit-CK0aqpiZ.js → MtcAudit-DdYjCq1O.js} +4 -4
  42. package/src/assets/web-panel/assets/{Multisig-mNimKYeb.js → Multisig-Cb1hfuUZ.js} +3 -3
  43. package/src/assets/web-panel/assets/{NLProgramming-AioAJ0YA.js → NLProgramming-CTeImGp7.js} +1 -1
  44. package/src/assets/web-panel/assets/{Notes-CVVNCLHE.js → Notes-BjYNc7eQ.js} +4 -4
  45. package/src/assets/web-panel/assets/{NotificationSettings-C4ABj-TK.js → NotificationSettings-Dn_NtRXQ.js} +1 -1
  46. package/src/assets/web-panel/assets/{OrderTableRenderer-DIp8Xcbd.js → OrderTableRenderer-DVYYIizh.js} +1 -1
  47. package/src/assets/web-panel/assets/{Organization-uozl_gWK.js → Organization-Be2Kmr5j.js} +4 -4
  48. package/src/assets/web-panel/assets/{Overflow-BCZOM2hK.js → Overflow-Cu_-qRlR.js} +1 -1
  49. package/src/assets/web-panel/assets/{P2P-CArcaiaj.js → P2P-DD2HoGzE.js} +2 -2
  50. package/src/assets/web-panel/assets/{PdhVaultBrowser-Sgq2Srr8.js → PdhVaultBrowser-BRI7DVth.js} +3 -3
  51. package/src/assets/web-panel/assets/{Permissions-BYrQrXnH.js → Permissions-C9Srcs2M.js} +4 -4
  52. package/src/assets/web-panel/assets/{PersonalDataHub-BzHStAbz.js → PersonalDataHub-CUqcMgo1.js} +3 -3
  53. package/src/assets/web-panel/assets/{Pipeline-k7KqxX1M.js → Pipeline-HBrQGLXt.js} +1 -1
  54. package/src/assets/web-panel/assets/{Privacy-IumTUWqx.js → Privacy-D-B0vjwh.js} +1 -1
  55. package/src/assets/web-panel/assets/{ProjectInit-BRyImYTf.js → ProjectInit-eTeLIu9e.js} +2 -2
  56. package/src/assets/web-panel/assets/{ProjectSettings-BFIqTBFk.js → ProjectSettings-DrRqCsC6.js} +2 -2
  57. package/src/assets/web-panel/assets/{Projects-Dpid9CDg.js → Projects-1G9DNOhI.js} +1 -1
  58. package/src/assets/web-panel/assets/{Providers-CyyFnUPs.js → Providers-RkTZzpxP.js} +1 -1
  59. package/src/assets/web-panel/assets/{QrScannerModal-C82cRx-X.js → QrScannerModal-BSCUgsgC.js} +1 -1
  60. package/src/assets/web-panel/assets/{QuickAsk-DGxDF521.js → QuickAsk-CHgyM3Bz.js} +1 -1
  61. package/src/assets/web-panel/assets/{Recommend-Cns-Am1y.js → Recommend-0lry4OZq.js} +1 -1
  62. package/src/assets/web-panel/assets/{RemoteSession-R7OqAIlg.js → RemoteSession-Cn45UroZ.js} +2 -2
  63. package/src/assets/web-panel/assets/{Reputation-D7mgPIYV.js → Reputation-Q-Zjb707.js} +1 -1
  64. package/src/assets/web-panel/assets/{Row-B3lEURyd.js → Row-BdM70oda.js} +1 -1
  65. package/src/assets/web-panel/assets/{RssFeed-9_UVrpBt.js → RssFeed-DmOAKKap.js} +2 -2
  66. package/src/assets/web-panel/assets/{Search-ClZeO80q.js → Search-Dwavbm07.js} +1 -1
  67. package/src/assets/web-panel/assets/{Security-BNNJczEp.js → Security-DukXFCnk.js} +3 -3
  68. package/src/assets/web-panel/assets/{Services-C5SjrWUj.js → Services-BIlRnITu.js} +2 -2
  69. package/src/assets/web-panel/assets/{Skeleton-Ci_obQ-g.js → Skeleton-YYVQdhhQ.js} +1 -1
  70. package/src/assets/web-panel/assets/{Skills-DdebN15P.js → Skills-B8_iYHz2.js} +1 -1
  71. package/src/assets/web-panel/assets/{Sla-OinZP2vi.js → Sla-BdVrhT31.js} +1 -1
  72. package/src/assets/web-panel/assets/{SpeechSettings-CxzbNF51.js → SpeechSettings-CD3ggRx7.js} +1 -1
  73. package/src/assets/web-panel/assets/{SyncSettings-D06N_66b.js → SyncSettings-Bp02VZFH.js} +2 -2
  74. package/src/assets/web-panel/assets/{Tasks-BdEdW0AZ.js → Tasks-DEVmCEsr.js} +1 -1
  75. package/src/assets/web-panel/assets/{Templates-F1ctKmPa.js → Templates-B6czWc4N.js} +1 -1
  76. package/src/assets/web-panel/assets/{Tenant-CVz1Urot.js → Tenant-BCJLv17r.js} +1 -1
  77. package/src/assets/web-panel/assets/Terminal-CD132d2Y.js +3 -0
  78. package/src/assets/web-panel/assets/{TimelineRenderer-Doitzjmf.js → TimelineRenderer-ZB-CvkZl.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tokens-BpyVRpVA.js → Tokens-BnSY0S-s.js} +1 -1
  80. package/src/assets/web-panel/assets/{Trigger-nWhWYTbU.js → Trigger-VZw9Oy2w.js} +1 -1
  81. package/src/assets/web-panel/assets/{Trust-DK_G-wLx.js → Trust-pZq7Hjd2.js} +1 -1
  82. package/src/assets/web-panel/assets/{UkeySign-B5yBUojO.js → UkeySign-DnQaqk4q.js} +1 -1
  83. package/src/assets/web-panel/assets/{VideoEditing-C5D51qAe.js → VideoEditing-BEUfmvJV.js} +1 -1
  84. package/src/assets/web-panel/assets/{Wallet-CLbL9K7v.js → Wallet-CoZKMXJ2.js} +4 -4
  85. package/src/assets/web-panel/assets/{WebAuthn-DZUelI3V.js → WebAuthn-CBOGVx1I.js} +5 -5
  86. package/src/assets/web-panel/assets/{WorkflowEditor-8RPxt4KW.js → WorkflowEditor-huSKn7TT.js} +1 -1
  87. package/src/assets/web-panel/assets/{chat-4N4tOA3d.js → chat-A_3w6FBO.js} +1 -1
  88. package/src/assets/web-panel/assets/{colors-zbbGVrua.js → colors-D1Bem9Oy.js} +1 -1
  89. package/src/assets/web-panel/assets/{compact-item-D7iMkbnE.js → compact-item-CJYJj0oO.js} +1 -1
  90. package/src/assets/web-panel/assets/{createContext-CBzPJv-w.js → createContext-BkbFiKT4.js} +1 -1
  91. package/src/assets/web-panel/assets/devWarning-WDr3_M_N.js +1 -0
  92. package/src/assets/web-panel/assets/{hasIn-bHdrQSqZ.js → hasIn-CKvUafVY.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-DbE5D0WL.js → index-AjrSPnvv.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-BCr0geV9.js → index-B8i0lViZ.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-CiG1IZao.js → index-B9Svn0zc.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-B1s0Bz9O.js → index-BHdHSX06.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-QFObYeo1.js → index-BHdailyo.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BnBOpqv3.js → index-BJwlEnYo.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CdmMoYN1.js → index-BOoAQjJz.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DUyjUkY7.js → index-BSgWxAOG.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-CqdPyWm5.js → index-BdutMsne.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-DmqlJed-.js → index-BiDWxzbn.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-S74FpAIn.js → index-By5a0T_W.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-kmh1TxRa.js → index-C-WIY-FQ.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-BTIjjXry.js → index-C37f6iey.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-BS4_Mwk6.js → index-C9bWmTcO.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-BBNr77E1.js → index-CBaosWRO.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-QNAG4JtR.js → index-CBlBVJ_m.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Bqmx24kh.js → index-CD62EEGo.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CQfu1U78.js → index-CUj-l7GM.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-BJ4ZGyW0.js → index-CVS8Ymuq.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-Ci009ijp.js → index-ChkXUj3f.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-oDKNgCsP.js → index-Cj0OZ-37.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-BZb8F8YG.js → index-Co3OFL0t.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-308gCGh7.js → index-Crp8CbRg.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CPxkoKgA.js → index-D22zNXiS.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-xYCm6W2h.js → index-DTs_D1OL.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BtbbdLnf.js → index-DfgCdFrN.js} +3 -3
  119. package/src/assets/web-panel/assets/{index-BsKehmmS.js → index-DjYrecNb.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CkxK86vf.js → index-DpW9cf3e.js} +1 -1
  121. package/src/assets/web-panel/assets/index-Dwix3p4g.js +1 -0
  122. package/src/assets/web-panel/assets/{index-CvRMA9uT.js → index-F--HuPG1.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-DE9j5YgT.js → index-Fuk6t_3K.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-B7b1hGry.js → index-JEAGMii9.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-D1YDh7Wr.js → index-PF-mpv8K.js} +1 -1
  126. package/src/assets/web-panel/assets/index-SHaoZ0CA.js +1 -0
  127. package/src/assets/web-panel/assets/{index-CQ6NcfWz.js → index-b-sbVdjQ.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DyoNgbXl.js → index-pyvMVX8r.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-DISWAYce.js → index-qNTtOVi_.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-D4XKpj6c.js → index-tgO8iza6.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-CahryTX0.js → index-ttDQVhZy.js} +1 -1
  132. package/src/assets/web-panel/assets/{initDefaultProps-BD55yNBt.js → initDefaultProps-DtrnfsZH.js} +1 -1
  133. package/src/assets/web-panel/assets/{motion-B5Bbe77U.js → motion-D4zqSaX3.js} +1 -1
  134. package/src/assets/web-panel/assets/{move-CTvIqHEH.js → move-CGFGOUQj.js} +1 -1
  135. package/src/assets/web-panel/assets/{mtc-parser-BkNyPQKB.js → mtc-parser-DH2HvkJl.js} +1 -1
  136. package/src/assets/web-panel/assets/{omit-BaXJXgHA.js → omit-jJ2at5HX.js} +1 -1
  137. package/src/assets/web-panel/assets/{pickAttrs-Bw6-YTxH.js → pickAttrs-CRyMT1Fv.js} +1 -1
  138. package/src/assets/web-panel/assets/{placementArrow-BLdbkLqJ.js → placementArrow-DZ_CX0Pt.js} +1 -1
  139. package/src/assets/web-panel/assets/{responsiveObserve-IVYkzntU.js → responsiveObserve-wruHk-h5.js} +1 -1
  140. package/src/assets/web-panel/assets/{slide-DFMFwwtY.js → slide-BGgx8q67.js} +1 -1
  141. package/src/assets/web-panel/assets/{statusUtils-CURYRtZ1.js → statusUtils-Do5M7gKm.js} +1 -1
  142. package/src/assets/web-panel/assets/{styleChecker-Cfz63s1r.js → styleChecker-CRa-GZpX.js} +1 -1
  143. package/src/assets/web-panel/assets/{useFlexGapSupport-COJL0KE3.js → useFlexGapSupport-BxPcq6pj.js} +1 -1
  144. package/src/assets/web-panel/assets/{useFs-YLLojQQf.js → useFs-v5O2ZcJm.js} +1 -1
  145. package/src/assets/web-panel/assets/{usePersonalDataHub-BF_21qUC.js → usePersonalDataHub--z2FU0Px.js} +1 -1
  146. package/src/assets/web-panel/assets/{vnode-9ZpkA7bb.js → vnode-1emidVKd.js} +1 -1
  147. package/src/assets/web-panel/assets/{zoom-DhtAfhl8.js → zoom-CcJaRyHs.js} +1 -1
  148. package/src/assets/web-panel/index.html +1 -1
  149. package/src/assets/web-panel/remote-session-sw.js +43 -0
  150. package/src/command-manifest.json +22 -1
  151. package/src/commands/a2a.js +19 -4
  152. package/src/commands/activitypub.js +20 -3
  153. package/src/commands/agent.js +71 -10
  154. package/src/commands/audit.js +40 -24
  155. package/src/commands/codeintel.js +320 -0
  156. package/src/commands/collab.js +15 -2
  157. package/src/commands/compliance.js +5 -0
  158. package/src/commands/config.js +4 -1
  159. package/src/commands/dao.js +86 -14
  160. package/src/commands/dev.js +2 -0
  161. package/src/commands/did.js +7 -1
  162. package/src/commands/dlp.js +23 -1
  163. package/src/commands/economy.js +29 -3
  164. package/src/commands/eval.js +255 -0
  165. package/src/commands/evomap.js +26 -0
  166. package/src/commands/governance.js +17 -3
  167. package/src/commands/hardening.js +18 -0
  168. package/src/commands/incentive.js +5 -0
  169. package/src/commands/init.js +46 -2
  170. package/src/commands/kg.js +4 -0
  171. package/src/commands/loop.js +6 -1
  172. package/src/commands/lowcode.js +15 -2
  173. package/src/commands/marketplace.js +40 -6
  174. package/src/commands/matrix.js +20 -1
  175. package/src/commands/memory.js +4 -1
  176. package/src/commands/mtc.js +7 -1
  177. package/src/commands/nostr.js +31 -4
  178. package/src/commands/note.js +7 -4
  179. package/src/commands/plugin.js +474 -0
  180. package/src/commands/pqc.js +5 -0
  181. package/src/commands/reputation.js +10 -1
  182. package/src/commands/scim.js +6 -0
  183. package/src/commands/session.js +32 -10
  184. package/src/commands/siem.js +11 -0
  185. package/src/commands/sla.js +18 -3
  186. package/src/commands/social.js +38 -5
  187. package/src/commands/sso.js +10 -2
  188. package/src/commands/stress.js +23 -4
  189. package/src/commands/team.js +463 -0
  190. package/src/commands/tech.js +2 -0
  191. package/src/commands/tenant.js +10 -1
  192. package/src/commands/terraform.js +6 -0
  193. package/src/commands/update.js +1 -1
  194. package/src/commands/zkp.js +20 -0
  195. package/src/gateways/ws/message-dispatcher.js +48 -2
  196. package/src/gateways/ws/remote-session-protocol.js +140 -42
  197. package/src/gateways/ws/ws-server.js +1 -1
  198. package/src/harness/jsonl-session-store.js +12 -5
  199. package/src/harness/plugin-manager.js +16 -4
  200. package/src/harness/prompt-compressor.js +27 -1
  201. package/src/harness/remote-command-ledger.js +189 -0
  202. package/src/harness/remote-session-push-apns.js +246 -0
  203. package/src/harness/remote-session-push-errors.js +15 -0
  204. package/src/harness/remote-session-push-fcm.js +9 -25
  205. package/src/harness/remote-session-push-huawei.js +174 -0
  206. package/src/harness/remote-session-push-oppo.js +171 -0
  207. package/src/harness/remote-session-push-senders.js +42 -0
  208. package/src/harness/remote-session-push-vivo.js +179 -0
  209. package/src/harness/remote-session-push-web.js +299 -0
  210. package/src/harness/remote-session-push-xiaomi.js +99 -0
  211. package/src/harness/worktree-isolator.js +16 -6
  212. package/src/index.js +6 -0
  213. package/src/lib/__tests__/logger.test.js +5 -2
  214. package/src/lib/a2a-protocol.js +25 -1
  215. package/src/lib/activitypub-bridge.js +61 -0
  216. package/src/lib/agent-core.js +4 -0
  217. package/src/lib/agent-economy.js +262 -29
  218. package/src/lib/agent-network.js +7 -1
  219. package/src/lib/agent-sandbox.js +161 -5
  220. package/src/lib/agent-team/task-lease.js +434 -0
  221. package/src/lib/agent-team/team-budget.js +165 -0
  222. package/src/lib/agent-team/team-mailbox.js +106 -0
  223. package/src/lib/agent-team/team-runner.js +282 -0
  224. package/src/lib/agent-team/team-worktree.js +236 -0
  225. package/src/lib/agents.js +18 -0
  226. package/src/lib/async-hook-supervisor.cjs +391 -0
  227. package/src/lib/audit-logger.js +7 -6
  228. package/src/lib/autonomous-developer.js +60 -0
  229. package/src/lib/chat-core.js +17 -4
  230. package/src/lib/collaboration-governance.js +56 -0
  231. package/src/lib/community-governance.js +68 -0
  232. package/src/lib/compliance-manager.js +63 -0
  233. package/src/lib/cross-chain.js +5 -0
  234. package/src/lib/dao-governance.js +151 -2
  235. package/src/lib/did-manager.js +23 -10
  236. package/src/lib/dlp-engine.js +70 -0
  237. package/src/lib/eval/runner.js +251 -0
  238. package/src/lib/eval/tasks.js +626 -0
  239. package/src/lib/eval/trend.js +200 -0
  240. package/src/lib/evolution-system.js +92 -0
  241. package/src/lib/evomap-federation.js +55 -0
  242. package/src/lib/evomap-governance.js +94 -0
  243. package/src/lib/fatal-handler.js +17 -1
  244. package/src/lib/hardening-manager.js +73 -0
  245. package/src/lib/hierarchical-memory.js +14 -8
  246. package/src/lib/knowledge-exporter.js +8 -2
  247. package/src/lib/knowledge-graph.js +79 -0
  248. package/src/lib/llm-providers.js +23 -14
  249. package/src/lib/logger.js +4 -1
  250. package/src/lib/lsp/__tests__/benchmark.test.js +88 -0
  251. package/src/lib/lsp/__tests__/code-intelligence.integration.test.js +129 -0
  252. package/src/lib/lsp/__tests__/code-intelligence.test.js +228 -0
  253. package/src/lib/lsp/__tests__/jsonrpc-stream.test.js +104 -0
  254. package/src/lib/lsp/__tests__/lsp-client.test.js +269 -0
  255. package/src/lib/lsp/__tests__/lsp-manager.test.js +333 -0
  256. package/src/lib/lsp/__tests__/lsp-server-registry.test.js +128 -0
  257. package/src/lib/lsp/benchmark.js +257 -0
  258. package/src/lib/lsp/code-intelligence.js +356 -0
  259. package/src/lib/lsp/jsonrpc-stream.js +139 -0
  260. package/src/lib/lsp/lsp-client.js +339 -0
  261. package/src/lib/lsp/lsp-manager.js +375 -0
  262. package/src/lib/lsp/lsp-server-registry.js +196 -0
  263. package/src/lib/matrix-bridge.js +84 -0
  264. package/src/lib/memory-manager.js +5 -3
  265. package/src/lib/nostr-bridge.js +53 -0
  266. package/src/lib/permission-engine.js +22 -4
  267. package/src/lib/plugin-monitor-supervisor.js +238 -0
  268. package/src/lib/plugin-runtime/__tests__/remote-source.test.js +256 -0
  269. package/src/lib/plugin-runtime/agents.js +51 -0
  270. package/src/lib/plugin-runtime/bin.js +100 -0
  271. package/src/lib/plugin-runtime/hooks.js +100 -0
  272. package/src/lib/plugin-runtime/install.js +396 -0
  273. package/src/lib/plugin-runtime/lsp.js +75 -0
  274. package/src/lib/plugin-runtime/manifest.js +458 -0
  275. package/src/lib/plugin-runtime/mcp.js +89 -0
  276. package/src/lib/plugin-runtime/monitors.js +100 -0
  277. package/src/lib/plugin-runtime/policy.js +152 -0
  278. package/src/lib/plugin-runtime/reload.js +79 -0
  279. package/src/lib/plugin-runtime/remote-source.js +240 -0
  280. package/src/lib/plugin-runtime/scopes.js +197 -0
  281. package/src/lib/plugin-runtime/settings.js +119 -0
  282. package/src/lib/plugin-runtime/signature.js +107 -0
  283. package/src/lib/plugin-runtime/skills.js +43 -0
  284. package/src/lib/plugin-runtime/trust.js +140 -0
  285. package/src/lib/pqc-manager.js +64 -0
  286. package/src/lib/reputation-optimizer.js +101 -0
  287. package/src/lib/sandbox-egress-proxy.js +262 -0
  288. package/src/lib/sandbox-fs-policy.js +112 -0
  289. package/src/lib/sandbox-network-policy.js +151 -0
  290. package/src/lib/sandbox-v2.js +24 -18
  291. package/src/lib/scim-manager.js +36 -0
  292. package/src/lib/session-manager.js +5 -2
  293. package/src/lib/settings-hook-events.cjs +78 -6
  294. package/src/lib/settings-hooks.cjs +30 -3
  295. package/src/lib/settings-loader.cjs +35 -1
  296. package/src/lib/siem-exporter.js +45 -0
  297. package/src/lib/skill-loader.js +38 -2
  298. package/src/lib/skill-marketplace.js +83 -0
  299. package/src/lib/sla-manager.js +88 -0
  300. package/src/lib/social-manager.js +74 -0
  301. package/src/lib/stress-tester.js +65 -0
  302. package/src/lib/tech-learning-engine.js +75 -0
  303. package/src/lib/telemetry/span-recorder.js +237 -0
  304. package/src/lib/tenant-saas.js +107 -0
  305. package/src/lib/terraform-manager.js +67 -0
  306. package/src/lib/token-incentive.js +180 -29
  307. package/src/lib/wallet-manager.js +81 -35
  308. package/src/lib/zkp-engine.js +87 -0
  309. package/src/repl/agent-repl.js +417 -6
  310. package/src/runtime/__tests__/auto-pin.test.js +104 -0
  311. package/src/runtime/agent-core.js +771 -104
  312. package/src/runtime/auto-pin.js +117 -0
  313. package/src/runtime/coding-agent-contract-shared.cjs +82 -8
  314. package/src/runtime/coding-agent-policy.cjs +32 -7
  315. package/src/runtime/fallback-model.js +134 -7
  316. package/src/runtime/headless-runner.js +388 -108
  317. package/src/runtime/mcp-config.js +46 -0
  318. package/src/assets/web-panel/assets/ChatBubbleRenderer-DCNfbdlx.js +0 -1
  319. package/src/assets/web-panel/assets/Terminal-BvAK_Zel.js +0 -3
  320. package/src/assets/web-panel/assets/devWarning-C2Z5LRgq.js +0 -1
  321. package/src/assets/web-panel/assets/index-BGp6Yr-Y.js +0 -1
  322. 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
+ }
@@ -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("-t, --threshold <n>", "Pass threshold (0-1)", floatArg("--threshold"))
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("-t, --threshold <n>", "Pass threshold (0-1)", floatArg("--threshold"))
408
- .option("-n, --total-voters <n>", "Total eligible voters", intArg("--total-voters"))
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