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
@@ -11,6 +11,7 @@ import { numericOption } from "../lib/cli-numeric.js";
11
11
  import { bootstrap, shutdown } from "../runtime/bootstrap.js";
12
12
  import {
13
13
  ensureComplianceTables,
14
+ loadFromDb as loadComplianceFromDb,
14
15
  collectEvidence,
15
16
  generateReport,
16
17
  classifyData,
@@ -200,6 +201,7 @@ export function registerComplianceCommand(program) {
200
201
  }
201
202
  const db = ctx.db.getDatabase();
202
203
  ensureComplianceTables(db);
204
+ loadComplianceFromDb(db);
203
205
 
204
206
  const result = collectEvidence(
205
207
  db,
@@ -247,6 +249,7 @@ export function registerComplianceCommand(program) {
247
249
  }
248
250
  const db = ctx.db.getDatabase();
249
251
  ensureComplianceTables(db);
252
+ loadComplianceFromDb(db);
250
253
 
251
254
  const fmt = options.json ? "json" : options.format;
252
255
  const useDetailed =
@@ -376,6 +379,7 @@ export function registerComplianceCommand(program) {
376
379
  }
377
380
  const db = ctx.db.getDatabase();
378
381
  ensureComplianceTables(db);
382
+ loadComplianceFromDb(db);
379
383
 
380
384
  const result = scanCompliance(db, framework);
381
385
  if (options.json) {
@@ -413,6 +417,7 @@ export function registerComplianceCommand(program) {
413
417
  }
414
418
  const db = ctx.db.getDatabase();
415
419
  ensureComplianceTables(db);
420
+ loadComplianceFromDb(db);
416
421
 
417
422
  const policies = listPolicies(db, { framework: options.framework });
418
423
  if (options.json) {
@@ -111,7 +111,10 @@ export function registerConfigCommand(program) {
111
111
  (process.platform === "win32" ? "notepad" : "vi");
112
112
  const { execSync } = await import("node:child_process");
113
113
  try {
114
- execSync(`${editor} "${configPath}"`, { stdio: "inherit" });
114
+ // Escape any `"` in the path so it can't break out of the quoted arg
115
+ // (editor stays unquoted so `$EDITOR` values with args still work).
116
+ const safePath = configPath.replace(/"/g, '\\"');
117
+ execSync(`${editor} "${safePath}"`, { stdio: "inherit" });
115
118
  } catch (err) {
116
119
  logger.error(`Failed to open editor: ${err.message}`);
117
120
  logger.info(`Config file is at: ${configPath}`);
@@ -11,6 +11,7 @@ import { parseNumberOption } from "../lib/parse-number-option.js";
11
11
  import { bootstrap, shutdown } from "../runtime/bootstrap.js";
12
12
  import {
13
13
  ensureDAOv2Tables,
14
+ loadFromDb as loadDaoFromDb,
14
15
  propose,
15
16
  vote,
16
17
  delegate,
@@ -67,6 +68,7 @@ export function registerDaoCommand(program) {
67
68
  }
68
69
  const db = ctx.db.getDatabase();
69
70
  ensureDAOv2Tables(db);
71
+ loadDaoFromDb(db);
70
72
 
71
73
  const result = propose(
72
74
  db,
@@ -106,6 +108,7 @@ export function registerDaoCommand(program) {
106
108
  }
107
109
  const db = ctx.db.getDatabase();
108
110
  ensureDAOv2Tables(db);
111
+ loadDaoFromDb(db);
109
112
 
110
113
  const result = vote(
111
114
  db,
@@ -142,6 +145,7 @@ export function registerDaoCommand(program) {
142
145
  }
143
146
  const db = ctx.db.getDatabase();
144
147
  ensureDAOv2Tables(db);
148
+ loadDaoFromDb(db);
145
149
 
146
150
  const result = delegate(
147
151
  db,
@@ -174,6 +178,7 @@ export function registerDaoCommand(program) {
174
178
  }
175
179
  const db = ctx.db.getDatabase();
176
180
  ensureDAOv2Tables(db);
181
+ loadDaoFromDb(db);
177
182
 
178
183
  const result = execute(db, proposalId);
179
184
  logger.success(`Proposal ${chalk.cyan(result.proposalId)} executed`);
@@ -199,6 +204,7 @@ export function registerDaoCommand(program) {
199
204
  }
200
205
  const db = ctx.db.getDatabase();
201
206
  ensureDAOv2Tables(db);
207
+ loadDaoFromDb(db);
202
208
 
203
209
  const result = getTreasury();
204
210
  if (options.json) {
@@ -236,6 +242,7 @@ export function registerDaoCommand(program) {
236
242
  }
237
243
  const db = ctx.db.getDatabase();
238
244
  ensureDAOv2Tables(db);
245
+ loadDaoFromDb(db);
239
246
 
240
247
  const result = allocate(
241
248
  db,
@@ -269,6 +276,7 @@ export function registerDaoCommand(program) {
269
276
  }
270
277
  const db = ctx.db.getDatabase();
271
278
  ensureDAOv2Tables(db);
279
+ loadDaoFromDb(db);
272
280
 
273
281
  const result = getStats();
274
282
  if (options.json) {
@@ -308,13 +316,26 @@ export function registerDaoCommand(program) {
308
316
  }
309
317
  const db = ctx.db.getDatabase();
310
318
  ensureDAOv2Tables(db);
319
+ loadDaoFromDb(db);
311
320
 
312
321
  const cfg = {};
313
322
  if (options.votingPeriod)
314
- cfg.votingPeriod = numericOption(options.votingPeriod, { name: "--voting-period", integer: true, min: 1 });
315
- if (options.quorum) cfg.quorum = numericOption(options.quorum, { name: "--quorum", min: 0 });
323
+ cfg.votingPeriod = numericOption(options.votingPeriod, {
324
+ name: "--voting-period",
325
+ integer: true,
326
+ min: 1,
327
+ });
328
+ if (options.quorum)
329
+ cfg.quorum = numericOption(options.quorum, {
330
+ name: "--quorum",
331
+ min: 0,
332
+ });
316
333
  if (options.executionDelay)
317
- cfg.executionDelay = numericOption(options.executionDelay, { name: "--execution-delay", integer: true, min: 0 });
334
+ cfg.executionDelay = numericOption(options.executionDelay, {
335
+ name: "--execution-delay",
336
+ integer: true,
337
+ min: 0,
338
+ });
318
339
 
319
340
  const result = configure(cfg);
320
341
  logger.success("Configuration updated");
@@ -380,6 +401,7 @@ export function registerDaoCommand(program) {
380
401
  }
381
402
  const db = ctx.db.getDatabase();
382
403
  ensureDAOv2Tables(db);
404
+ loadDaoFromDb(db);
383
405
 
384
406
  const proposal = createProposalV2(db, {
385
407
  title,
@@ -388,7 +410,11 @@ export function registerDaoCommand(program) {
388
410
  type: options.type,
389
411
  actions: parseJsonOption(options.actions, "--actions"),
390
412
  votingDurationMs: options.votingDuration
391
- ? numericOption(options.votingDuration, { name: "--voting-duration", integer: true, min: 0 })
413
+ ? numericOption(options.votingDuration, {
414
+ name: "--voting-duration",
415
+ integer: true,
416
+ min: 0,
417
+ })
392
418
  : undefined,
393
419
  });
394
420
 
@@ -421,6 +447,7 @@ export function registerDaoCommand(program) {
421
447
  }
422
448
  const db = ctx.db.getDatabase();
423
449
  ensureDAOv2Tables(db);
450
+ loadDaoFromDb(db);
424
451
 
425
452
  const p = activateProposal(db, proposalId);
426
453
  logger.success(`Proposal ${chalk.cyan(proposalId)} → ACTIVE`);
@@ -452,13 +479,20 @@ export function registerDaoCommand(program) {
452
479
  }
453
480
  const db = ctx.db.getDatabase();
454
481
  ensureDAOv2Tables(db);
482
+ loadDaoFromDb(db);
455
483
 
456
484
  const record = castVote(db, {
457
485
  proposalId,
458
486
  voterDid: options.voter,
459
487
  voteType: options.type,
460
- voteCount: numericOption(options.count, { name: "--count", integer: true, min: 1 }),
461
- balance: options.balance ? numericOption(options.balance, { name: "--balance", min: 0 }) : undefined,
488
+ voteCount: numericOption(options.count, {
489
+ name: "--count",
490
+ integer: true,
491
+ min: 1,
492
+ }),
493
+ balance: options.balance
494
+ ? numericOption(options.balance, { name: "--balance", min: 0 })
495
+ : undefined,
462
496
  });
463
497
 
464
498
  logger.success("Vote cast");
@@ -488,6 +522,7 @@ export function registerDaoCommand(program) {
488
522
  }
489
523
  const db = ctx.db.getDatabase();
490
524
  ensureDAOv2Tables(db);
525
+ loadDaoFromDb(db);
491
526
 
492
527
  const d = delegateVotingPower(db, {
493
528
  fromDid,
@@ -522,6 +557,7 @@ export function registerDaoCommand(program) {
522
557
  }
523
558
  const db = ctx.db.getDatabase();
524
559
  ensureDAOv2Tables(db);
560
+ loadDaoFromDb(db);
525
561
 
526
562
  const r = revokeDelegation(db, fromDid);
527
563
  logger.success(`Delegation revoked: ${chalk.cyan(r.id)}`);
@@ -547,6 +583,7 @@ export function registerDaoCommand(program) {
547
583
  }
548
584
  const db = ctx.db.getDatabase();
549
585
  ensureDAOv2Tables(db);
586
+ loadDaoFromDb(db);
550
587
 
551
588
  const list = getActiveDelegations();
552
589
  if (options.json) {
@@ -581,6 +618,7 @@ export function registerDaoCommand(program) {
581
618
  }
582
619
  const db = ctx.db.getDatabase();
583
620
  ensureDAOv2Tables(db);
621
+ loadDaoFromDb(db);
584
622
 
585
623
  const p = queueProposal(db, proposalId);
586
624
  logger.success(`Proposal → QUEUE`);
@@ -606,6 +644,7 @@ export function registerDaoCommand(program) {
606
644
  }
607
645
  const db = ctx.db.getDatabase();
608
646
  ensureDAOv2Tables(db);
647
+ loadDaoFromDb(db);
609
648
 
610
649
  const p = executeProposalV2(db, proposalId);
611
650
  logger.success(`Proposal ${chalk.cyan(proposalId)} → EXECUTE`);
@@ -631,6 +670,7 @@ export function registerDaoCommand(program) {
631
670
  }
632
671
  const db = ctx.db.getDatabase();
633
672
  ensureDAOv2Tables(db);
673
+ loadDaoFromDb(db);
634
674
 
635
675
  const p = cancelProposal(db, proposalId);
636
676
  logger.success(`Proposal → ${p.status}`);
@@ -662,6 +702,7 @@ export function registerDaoCommand(program) {
662
702
  }
663
703
  const db = ctx.db.getDatabase();
664
704
  ensureDAOv2Tables(db);
705
+ loadDaoFromDb(db);
665
706
 
666
707
  const tx = allocateFundsV2(db, {
667
708
  proposalId,
@@ -706,6 +747,7 @@ export function registerDaoCommand(program) {
706
747
  }
707
748
  const db = ctx.db.getDatabase();
708
749
  ensureDAOv2Tables(db);
750
+ loadDaoFromDb(db);
709
751
 
710
752
  const tx = depositToTreasuryV2(db, {
711
753
  amount: parseNumberOption(options.amount, "--amount"),
@@ -737,6 +779,7 @@ export function registerDaoCommand(program) {
737
779
  }
738
780
  const db = ctx.db.getDatabase();
739
781
  ensureDAOv2Tables(db);
782
+ loadDaoFromDb(db);
740
783
 
741
784
  const s = getTreasuryState();
742
785
  if (options.json) {
@@ -778,8 +821,16 @@ export function registerDaoCommand(program) {
778
821
  }
779
822
  const db = ctx.db.getDatabase();
780
823
  ensureDAOv2Tables(db);
781
-
782
- const s = getGovernanceStatsV2(numericOption(options.members, { name: "--members", integer: true, min: 0, fallback: 0 }));
824
+ loadDaoFromDb(db);
825
+
826
+ const s = getGovernanceStatsV2(
827
+ numericOption(options.members, {
828
+ name: "--members",
829
+ integer: true,
830
+ min: 0,
831
+ fallback: 0,
832
+ }),
833
+ );
783
834
  if (options.json) {
784
835
  console.log(JSON.stringify(s, null, 2));
785
836
  } else {
@@ -833,19 +884,40 @@ export function registerDaoCommand(program) {
833
884
  try {
834
885
  const updates = {};
835
886
  if (options.votingDuration)
836
- updates.votingDurationMs = numericOption(options.votingDuration, { name: "--voting-duration", integer: true, min: 0 });
887
+ updates.votingDurationMs = numericOption(options.votingDuration, {
888
+ name: "--voting-duration",
889
+ integer: true,
890
+ min: 0,
891
+ });
837
892
  if (options.quorumPercentage)
838
- updates.quorumPercentage = numericOption(options.quorumPercentage, { name: "--quorum-percentage", min: 0, max: 100 });
893
+ updates.quorumPercentage = numericOption(options.quorumPercentage, {
894
+ name: "--quorum-percentage",
895
+ min: 0,
896
+ max: 100,
897
+ });
839
898
  if (options.timelockMs)
840
- updates.timelockMs = numericOption(options.timelockMs, { name: "--timelock-ms", integer: true, min: 0 });
899
+ updates.timelockMs = numericOption(options.timelockMs, {
900
+ name: "--timelock-ms",
901
+ integer: true,
902
+ min: 0,
903
+ });
841
904
  if (options.quadraticEnabled !== undefined)
842
905
  updates.quadraticEnabled = options.quadraticEnabled === "true";
843
906
  if (options.maxDelegationDepth)
844
- updates.maxDelegationDepth = numericOption(options.maxDelegationDepth, { name: "--max-delegation-depth", integer: true, min: 0 });
907
+ updates.maxDelegationDepth = numericOption(
908
+ options.maxDelegationDepth,
909
+ { name: "--max-delegation-depth", integer: true, min: 0 },
910
+ );
845
911
  if (options.proposalThreshold)
846
- updates.proposalThreshold = numericOption(options.proposalThreshold, { name: "--proposal-threshold", min: 0 });
912
+ updates.proposalThreshold = numericOption(options.proposalThreshold, {
913
+ name: "--proposal-threshold",
914
+ min: 0,
915
+ });
847
916
  if (options.maxSingleAllocation)
848
- updates.maxSingleAllocation = numericOption(options.maxSingleAllocation, { name: "--max-single-allocation", min: 0 });
917
+ updates.maxSingleAllocation = numericOption(
918
+ options.maxSingleAllocation,
919
+ { name: "--max-single-allocation", min: 0 },
920
+ );
849
921
 
850
922
  const cfg = configureV2(updates);
851
923
  if (options.json) {
@@ -9,6 +9,7 @@ import { logger } from "../lib/logger.js";
9
9
  import { bootstrap, shutdown } from "../runtime/bootstrap.js";
10
10
  import {
11
11
  ensureAutonomousDevTables,
12
+ loadFromDb,
12
13
  listAutonomyLevels,
13
14
  listPhases,
14
15
  listRefactoringTypes,
@@ -73,6 +74,7 @@ function _dbFromCtx(ctx) {
73
74
  }
74
75
  const db = ctx.db.getDatabase();
75
76
  ensureAutonomousDevTables(db);
77
+ loadFromDb(db);
76
78
  return db;
77
79
  }
78
80
 
@@ -9,6 +9,7 @@ import { bootstrap, shutdown } from "../runtime/bootstrap.js";
9
9
  import {
10
10
  createIdentity,
11
11
  getIdentity,
12
+ getDefaultIdentity,
12
13
  getAllIdentities,
13
14
  setDefaultIdentity,
14
15
  deleteIdentity,
@@ -247,7 +248,12 @@ export function registerDidCommand(program) {
247
248
  const didStr =
248
249
  options.did ||
249
250
  (() => {
250
- const def = getIdentity(db, "did:chainless:");
251
+ // Must be the is_default identity. getIdentity(prefix) does an
252
+ // unordered LIKE 'did:chainless:%' and returns the first row the
253
+ // planner yields (lexicographically-smallest DID), IGNORING the
254
+ // is_default flag — so `did sign` without --did silently signed with
255
+ // the WRONG key. getDefaultIdentity filters WHERE is_default = 1.
256
+ const def = getDefaultIdentity(db);
251
257
  if (!def) throw new Error("No identities found. Create one first.");
252
258
  return def.did;
253
259
  })();
@@ -9,6 +9,7 @@ import { logger } from "../lib/logger.js";
9
9
  import { bootstrap, shutdown } from "../runtime/bootstrap.js";
10
10
  import {
11
11
  ensureDLPTables,
12
+ loadFromDb as loadDlpFromDb,
12
13
  scanContent,
13
14
  listIncidents,
14
15
  resolveIncident,
@@ -54,6 +55,7 @@ export function registerDlpCommand(program) {
54
55
  }
55
56
  const db = ctx.db.getDatabase();
56
57
  ensureDLPTables(db);
58
+ loadDlpFromDb(db);
57
59
 
58
60
  const result = scanContent(db, content, options.channel, options.user);
59
61
  if (options.json) {
@@ -94,6 +96,7 @@ export function registerDlpCommand(program) {
94
96
  }
95
97
  const db = ctx.db.getDatabase();
96
98
  ensureDLPTables(db);
99
+ loadDlpFromDb(db);
97
100
 
98
101
  const incidents = listIncidents({
99
102
  channel: options.channel,
@@ -135,6 +138,7 @@ export function registerDlpCommand(program) {
135
138
  }
136
139
  const db = ctx.db.getDatabase();
137
140
  ensureDLPTables(db);
141
+ loadDlpFromDb(db);
138
142
 
139
143
  const result = resolveIncident(db, incidentId, options.resolution);
140
144
  logger.success(
@@ -162,6 +166,7 @@ export function registerDlpCommand(program) {
162
166
  }
163
167
  const db = ctx.db.getDatabase();
164
168
  ensureDLPTables(db);
169
+ loadDlpFromDb(db);
165
170
 
166
171
  const stats = getDLPStats();
167
172
  if (options.json) {
@@ -206,6 +211,7 @@ export function registerDlpCommand(program) {
206
211
  }
207
212
  const db = ctx.db.getDatabase();
208
213
  ensureDLPTables(db);
214
+ loadDlpFromDb(db);
209
215
 
210
216
  const patterns = options.patterns
211
217
  ? options.patterns.split(",").map((s) => s.trim())
@@ -247,6 +253,7 @@ export function registerDlpCommand(program) {
247
253
  }
248
254
  const db = ctx.db.getDatabase();
249
255
  ensureDLPTables(db);
256
+ loadDlpFromDb(db);
250
257
 
251
258
  const policies = listDLPPolicies();
252
259
  if (options.json) {
@@ -280,6 +287,7 @@ export function registerDlpCommand(program) {
280
287
  }
281
288
  const db = ctx.db.getDatabase();
282
289
  ensureDLPTables(db);
290
+ loadDlpFromDb(db);
283
291
 
284
292
  deletePolicy(db, policyId);
285
293
  logger.success(`Policy ${chalk.cyan(policyId.slice(0, 8))} deleted`);
@@ -346,6 +354,7 @@ export function registerDlpCommand(program) {
346
354
  }
347
355
  const db = ctx.db.getDatabase();
348
356
  ensureDLPTables(db);
357
+ loadDlpFromDb(db);
349
358
 
350
359
  const result = createPolicyV2(db, {
351
360
  name,
@@ -392,6 +401,7 @@ export function registerDlpCommand(program) {
392
401
  }
393
402
  const db = ctx.db.getDatabase();
394
403
  ensureDLPTables(db);
404
+ loadDlpFromDb(db);
395
405
 
396
406
  console.log(JSON.stringify(getPolicyV2(policyId), null, 2));
397
407
 
@@ -414,6 +424,7 @@ export function registerDlpCommand(program) {
414
424
  }
415
425
  const db = ctx.db.getDatabase();
416
426
  ensureDLPTables(db);
427
+ loadDlpFromDb(db);
417
428
 
418
429
  console.log(
419
430
  JSON.stringify(listActivePoliciesForChannel(channel), null, 2),
@@ -450,6 +461,7 @@ export function registerDlpCommand(program) {
450
461
  }
451
462
  const db = ctx.db.getDatabase();
452
463
  ensureDLPTables(db);
464
+ loadDlpFromDb(db);
453
465
 
454
466
  const installed = installBuiltinPolicies(
455
467
  db,
@@ -481,6 +493,7 @@ export function registerDlpCommand(program) {
481
493
  }
482
494
  const db = ctx.db.getDatabase();
483
495
  ensureDLPTables(db);
496
+ loadDlpFromDb(db);
484
497
 
485
498
  let metadata = {};
486
499
  try {
@@ -528,6 +541,7 @@ export function registerDlpCommand(program) {
528
541
  }
529
542
  const db = ctx.db.getDatabase();
530
543
  ensureDLPTables(db);
544
+ loadDlpFromDb(db);
531
545
 
532
546
  const filter = {};
533
547
  if (options.channel) filter.channel = options.channel;
@@ -538,7 +552,12 @@ export function registerDlpCommand(program) {
538
552
  if (options.policy) filter.policyId = options.policy;
539
553
  if (options.from) filter.fromDate = options.from;
540
554
  if (options.to) filter.toDate = options.to;
541
- filter.limit = numericOption(options.limit, { name: "--limit", integer: true, min: 1, fallback: 50 });
555
+ filter.limit = numericOption(options.limit, {
556
+ name: "--limit",
557
+ integer: true,
558
+ min: 1,
559
+ fallback: 50,
560
+ });
542
561
  console.log(JSON.stringify(listIncidentsV2(filter), null, 2));
543
562
 
544
563
  await shutdown();
@@ -560,6 +579,7 @@ export function registerDlpCommand(program) {
560
579
  }
561
580
  const db = ctx.db.getDatabase();
562
581
  ensureDLPTables(db);
582
+ loadDlpFromDb(db);
563
583
 
564
584
  console.log(JSON.stringify(getIncidentV2(incidentId), null, 2));
565
585
 
@@ -584,6 +604,7 @@ export function registerDlpCommand(program) {
584
604
  }
585
605
  const db = ctx.db.getDatabase();
586
606
  ensureDLPTables(db);
607
+ loadDlpFromDb(db);
587
608
 
588
609
  console.log(JSON.stringify(getDLPStatsV2(), null, 2));
589
610
 
@@ -606,6 +627,7 @@ export function registerDlpCommand(program) {
606
627
  }
607
628
  const db = ctx.db.getDatabase();
608
629
  ensureDLPTables(db);
630
+ loadDlpFromDb(db);
609
631
 
610
632
  console.log(
611
633
  JSON.stringify({ highestSeverity: getHighestUnresolvedSeverity() }),
@@ -11,6 +11,7 @@ import { parseJsonOption } from "../lib/parse-json-option.js";
11
11
  import { bootstrap, shutdown } from "../runtime/bootstrap.js";
12
12
  import {
13
13
  ensureEconomyTables,
14
+ loadFromDb as loadEconomyFromDb,
14
15
  priceService,
15
16
  getServicePrice,
16
17
  pay,
@@ -69,6 +70,7 @@ export function registerEconomyCommand(program) {
69
70
  }
70
71
  const db = ctx.db.getDatabase();
71
72
  ensureEconomyTables(db);
73
+ loadEconomyFromDb(db);
72
74
 
73
75
  const result = priceService(db, serviceId, parseFloat(price), {});
74
76
  logger.success(
@@ -96,6 +98,7 @@ export function registerEconomyCommand(program) {
96
98
  }
97
99
  const db = ctx.db.getDatabase();
98
100
  ensureEconomyTables(db);
101
+ loadEconomyFromDb(db);
99
102
 
100
103
  const result = pay(
101
104
  db,
@@ -132,6 +135,7 @@ export function registerEconomyCommand(program) {
132
135
  }
133
136
  const db = ctx.db.getDatabase();
134
137
  ensureEconomyTables(db);
138
+ loadEconomyFromDb(db);
135
139
 
136
140
  const bal = getBalance(agentId);
137
141
  if (options.json) {
@@ -167,8 +171,14 @@ export function registerEconomyCommand(program) {
167
171
  }
168
172
  const db = ctx.db.getDatabase();
169
173
  ensureEconomyTables(db);
174
+ loadEconomyFromDb(db);
170
175
 
171
- const ch = openChannel(db, partyA, partyB, numericOption(options.deposit, { name: "--deposit", min: 0 }));
176
+ const ch = openChannel(
177
+ db,
178
+ partyA,
179
+ partyB,
180
+ numericOption(options.deposit, { name: "--deposit", min: 0 }),
181
+ );
172
182
  logger.success("Channel opened");
173
183
  logger.log(` ${chalk.bold("ID:")} ${chalk.cyan(ch.id)}`);
174
184
  logger.log(` ${chalk.bold("Party A:")} ${ch.partyA} (${ch.balanceA})`);
@@ -193,6 +203,7 @@ export function registerEconomyCommand(program) {
193
203
  }
194
204
  const db = ctx.db.getDatabase();
195
205
  ensureEconomyTables(db);
206
+ loadEconomyFromDb(db);
196
207
 
197
208
  const ch = closeChannel(db, channelId);
198
209
  logger.success("Channel closed and settled");
@@ -221,6 +232,7 @@ export function registerEconomyCommand(program) {
221
232
  }
222
233
  const db = ctx.db.getDatabase();
223
234
  ensureEconomyTables(db);
235
+ loadEconomyFromDb(db);
224
236
 
225
237
  const listing = listResource(
226
238
  db,
@@ -258,6 +270,7 @@ export function registerEconomyCommand(program) {
258
270
  }
259
271
  const db = ctx.db.getDatabase();
260
272
  ensureEconomyTables(db);
273
+ loadEconomyFromDb(db);
261
274
 
262
275
  const filter = options.type ? { type: options.type } : undefined;
263
276
  const listings = getMarketListings(filter);
@@ -296,8 +309,14 @@ export function registerEconomyCommand(program) {
296
309
  }
297
310
  const db = ctx.db.getDatabase();
298
311
  ensureEconomyTables(db);
312
+ loadEconomyFromDb(db);
299
313
 
300
- const result = tradeResource(listingId, buyer, parseFloat(quantity));
314
+ const result = tradeResource(
315
+ db,
316
+ listingId,
317
+ buyer,
318
+ parseFloat(quantity),
319
+ );
301
320
  logger.success("Trade complete");
302
321
  logger.log(` ${chalk.bold("Cost:")} ${result.cost}`);
303
322
  logger.log(` ${chalk.bold("Quantity:")} ${result.quantity}`);
@@ -326,6 +345,7 @@ export function registerEconomyCommand(program) {
326
345
  }
327
346
  const db = ctx.db.getDatabase();
328
347
  ensureEconomyTables(db);
348
+ loadEconomyFromDb(db);
329
349
 
330
350
  const metadata = parseJsonOption(options.metadata, "--metadata", {});
331
351
  const nftObj = mintNFT(db, owner, type, metadata);
@@ -354,6 +374,7 @@ export function registerEconomyCommand(program) {
354
374
  }
355
375
  const db = ctx.db.getDatabase();
356
376
  ensureEconomyTables(db);
377
+ loadEconomyFromDb(db);
357
378
 
358
379
  const ids = agentIds.split(",").map((s) => s.trim());
359
380
  const results = distributeRevenue(db, parseFloat(pool), ids);
@@ -386,6 +407,7 @@ export function registerEconomyCommand(program) {
386
407
  }
387
408
  const db = ctx.db.getDatabase();
388
409
  ensureEconomyTables(db);
410
+ loadEconomyFromDb(db);
389
411
 
390
412
  const c = recordContribution(db, agentId, type, parseFloat(value), "");
391
413
  logger.success("Contribution recorded");
@@ -504,7 +526,11 @@ export function registerEconomyCommand(program) {
504
526
  .argument("<to>", "To agent ID")
505
527
  .argument("<service-id>", "Service ID")
506
528
  .option("--tokens <n>", "Token count (for per_token)", intArg("--tokens"))
507
- .option("--minutes <n>", "Minute count (for per_minute)", floatArg("--minutes"))
529
+ .option(
530
+ "--minutes <n>",
531
+ "Minute count (for per_minute)",
532
+ floatArg("--minutes"),
533
+ )
508
534
  .option("--calls <n>", "Call count (for per_call)", intArg("--calls"))
509
535
  .option("--json", "Output as JSON")
510
536
  .action(async (from, to, serviceId, options) => {