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,128 @@
1
+ /**
2
+ * lsp-server-registry tests — language mapping, bin resolution (project-local
3
+ * wins over PATH), plugin server registration, and availability probing. FS
4
+ * existence is faked via `_deps.existsSync`; no real toolchain needed.
5
+ */
6
+
7
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
8
+ import path from "path";
9
+ import {
10
+ languageIdForFile,
11
+ resolveServer,
12
+ resolveBin,
13
+ probeServers,
14
+ registerLanguageServer,
15
+ _resetPluginServers,
16
+ _deps,
17
+ } from "../lsp-server-registry.js";
18
+
19
+ let origExists;
20
+ beforeEach(() => {
21
+ origExists = _deps.existsSync;
22
+ _resetPluginServers();
23
+ });
24
+ afterEach(() => {
25
+ _deps.existsSync = origExists;
26
+ _resetPluginServers();
27
+ });
28
+
29
+ /** existsSync true only for the given absolute paths (normalized separators). */
30
+ function existsFor(paths) {
31
+ const set = new Set(paths.map((p) => p.replace(/\\/g, "/")));
32
+ _deps.existsSync = (p) => set.has(String(p).replace(/\\/g, "/"));
33
+ }
34
+
35
+ describe("languageIdForFile", () => {
36
+ it("maps common extensions", () => {
37
+ expect(languageIdForFile("a.ts")).toBe("typescript");
38
+ expect(languageIdForFile("a.TSX")).toBe("typescriptreact");
39
+ expect(languageIdForFile("a.py")).toBe("python");
40
+ expect(languageIdForFile("a.go")).toBe("go");
41
+ expect(languageIdForFile("a.rs")).toBe("rust");
42
+ });
43
+ it("returns null for unsupported extensions", () => {
44
+ expect(languageIdForFile("a.txt")).toBeNull();
45
+ expect(languageIdForFile("noext")).toBeNull();
46
+ });
47
+ });
48
+
49
+ describe("resolveBin", () => {
50
+ it("prefers project node_modules/.bin over PATH", () => {
51
+ const isWin = process.platform === "win32";
52
+ const binName = isWin
53
+ ? "typescript-language-server.cmd"
54
+ : "typescript-language-server";
55
+ const localBin = path.join("/proj", "node_modules", ".bin", binName);
56
+ existsFor([localBin]);
57
+ const resolved = resolveBin("typescript-language-server", "/proj");
58
+ expect(resolved.replace(/\\/g, "/")).toBe(localBin.replace(/\\/g, "/"));
59
+ });
60
+
61
+ it("returns null when nothing resolves", () => {
62
+ existsFor([]);
63
+ expect(resolveBin("nonexistent-server", "/proj")).toBeNull();
64
+ });
65
+ });
66
+
67
+ describe("resolveServer", () => {
68
+ it("resolves a TS server command with --stdio args", () => {
69
+ const isWin = process.platform === "win32";
70
+ const binName = isWin
71
+ ? "typescript-language-server.cmd"
72
+ : "typescript-language-server";
73
+ existsFor([path.join("/proj", "node_modules", ".bin", binName)]);
74
+ const s = resolveServer("typescript", "/proj");
75
+ expect(s).toMatchObject({
76
+ languageId: "typescript",
77
+ id: "typescript-language-server",
78
+ args: ["--stdio"],
79
+ });
80
+ expect(s.command).toContain("typescript-language-server");
81
+ });
82
+
83
+ it("returns null for a language with no installed server", () => {
84
+ existsFor([]);
85
+ expect(resolveServer("rust", "/proj")).toBeNull();
86
+ });
87
+
88
+ it("returns null for an unknown language", () => {
89
+ existsFor([]);
90
+ expect(resolveServer("cobol", "/proj")).toBeNull();
91
+ });
92
+ });
93
+
94
+ describe("plugin server registration", () => {
95
+ it("registers an extra language server and its extensions", () => {
96
+ registerLanguageServer({
97
+ languageId: "zig",
98
+ extensions: [".zig"],
99
+ command: "zls",
100
+ args: [],
101
+ });
102
+ expect(languageIdForFile("a.zig")).toBe("zig");
103
+ const isWin = process.platform === "win32";
104
+ existsFor([
105
+ path.join("/proj", "node_modules", ".bin", isWin ? "zls.cmd" : "zls"),
106
+ ]);
107
+ const s = resolveServer("zig", "/proj");
108
+ expect(s).toMatchObject({ id: "zls" });
109
+ });
110
+
111
+ it("rejects an incomplete registration", () => {
112
+ expect(() => registerLanguageServer({ languageId: "x" })).toThrow(
113
+ /requires/,
114
+ );
115
+ });
116
+ });
117
+
118
+ describe("probeServers", () => {
119
+ it("reports availability per server family", () => {
120
+ existsFor([]); // nothing installed
121
+ const rows = probeServers("/proj");
122
+ expect(rows.every((r) => r.available === false)).toBe(true);
123
+ // one row per distinct server id (TS family collapses)
124
+ const ids = rows.map((r) => r.id);
125
+ expect(new Set(ids).size).toBe(ids.length);
126
+ expect(ids).toContain("typescript-language-server");
127
+ });
128
+ });
@@ -0,0 +1,257 @@
1
+ /**
2
+ * LSP code-intelligence latency benchmark.
3
+ *
4
+ * Measures the two numbers the Phase 2 acceptance criteria call for on real
5
+ * repos: **startup latency** (cold spawn + project index + first answer) and
6
+ * **per-query latency** (warm def / refs / hover / diagnostics / symbols), plus
7
+ * best-effort server-process RSS. Pure timing/stat helpers are separated out so
8
+ * they are unit-testable without spawning anything.
9
+ *
10
+ * Deliberately drives the SAME `CodeIntelligence` the agent tool uses, so the
11
+ * numbers reflect real agent-path latency, not a synthetic micro-path.
12
+ */
13
+
14
+ import { CodeIntelligence } from "./code-intelligence.js";
15
+
16
+ /** now() in fractional milliseconds — injectable for deterministic tests. */
17
+ export const _deps = {
18
+ now: () => Number(process.hrtime.bigint() / 1000n) / 1000,
19
+ sampleRss: sampleRssDefault,
20
+ };
21
+
22
+ /** p-th percentile (0..100) of an UNSORTED sample via linear interpolation. */
23
+ export function percentile(samples, p) {
24
+ if (!samples.length) return null;
25
+ const sorted = [...samples].sort((a, b) => a - b);
26
+ if (sorted.length === 1) return sorted[0];
27
+ const rank = (p / 100) * (sorted.length - 1);
28
+ const lo = Math.floor(rank);
29
+ const hi = Math.ceil(rank);
30
+ if (lo === hi) return sorted[lo];
31
+ return sorted[lo] + (sorted[hi] - sorted[lo]) * (rank - lo);
32
+ }
33
+
34
+ /** Summary stats for a latency sample (all in ms), rounded to 0.1ms. */
35
+ export function summarize(samples) {
36
+ if (!samples.length) return { n: 0 };
37
+ const round = (x) => (x == null ? null : Math.round(x * 10) / 10);
38
+ const sum = samples.reduce((a, b) => a + b, 0);
39
+ return {
40
+ n: samples.length,
41
+ min: round(Math.min(...samples)),
42
+ median: round(percentile(samples, 50)),
43
+ p95: round(percentile(samples, 95)),
44
+ max: round(Math.max(...samples)),
45
+ mean: round(sum / samples.length),
46
+ };
47
+ }
48
+
49
+ /**
50
+ * Run the benchmark. Returns a structured report; never throws for the
51
+ * "no server installed" case (returns { available:false, reason }).
52
+ *
53
+ * @param {object} opts
54
+ * @param {string} opts.projectRoot
55
+ * @param {string} opts.file a real source file in the project
56
+ * @param {number} [opts.runs=20] timed iterations per operation
57
+ * @param {number} [opts.warmup=2] untimed warmup iterations per operation
58
+ * @param {(msg:string)=>void} [opts.onProgress]
59
+ */
60
+ export async function runLatencyBenchmark(opts) {
61
+ const {
62
+ projectRoot,
63
+ file,
64
+ runs = 20,
65
+ warmup = 2,
66
+ onProgress = () => {},
67
+ } = opts;
68
+ const ci = new CodeIntelligence({ projectRoot, coldStart: true });
69
+ const report = {
70
+ file,
71
+ runs,
72
+ available: true,
73
+ coldStartMs: null,
74
+ probe: null,
75
+ ops: {},
76
+ server: null,
77
+ };
78
+ try {
79
+ // --- cold start: first query pays spawn + project index ---
80
+ onProgress("cold start (spawn + index + first query)…");
81
+ const t0 = _deps.now();
82
+ const first = await ci.documentSymbols(file);
83
+ report.coldStartMs = round1(_deps.now() - t0);
84
+ if (!first.available) {
85
+ return { available: false, reason: first.reason };
86
+ }
87
+
88
+ // --- choose a probe position from a real symbol (so def/refs have a target) ---
89
+ const probe = pickProbe(first.symbols);
90
+ report.probe = probe;
91
+
92
+ // best-effort server memory now that it's warm
93
+ report.server = await captureServerInfo(ci);
94
+
95
+ // --- timed operations (warm) ---
96
+ const ops = [
97
+ { name: "document_symbols", run: () => ci.documentSymbols(file) },
98
+ {
99
+ name: "definition",
100
+ run: () => ci.definition(file, probe.line, probe.col),
101
+ needsProbe: true,
102
+ },
103
+ {
104
+ name: "references",
105
+ run: () => ci.references(file, probe.line, probe.col),
106
+ needsProbe: true,
107
+ },
108
+ {
109
+ name: "hover",
110
+ run: () => ci.hover(file, probe.line, probe.col),
111
+ needsProbe: true,
112
+ },
113
+ {
114
+ name: "diagnostics",
115
+ run: () => ci.diagnostics(file, { timeoutMs: 4000 }),
116
+ },
117
+ ];
118
+
119
+ for (const op of ops) {
120
+ if (op.needsProbe && !probe) {
121
+ report.ops[op.name] = { skipped: "no probe symbol" };
122
+ continue;
123
+ }
124
+ onProgress(`${op.name} …`);
125
+ for (let i = 0; i < warmup; i++) await op.run();
126
+ const samples = [];
127
+ for (let i = 0; i < runs; i++) {
128
+ const s = _deps.now();
129
+ await op.run();
130
+ samples.push(_deps.now() - s);
131
+ }
132
+ report.ops[op.name] = summarize(samples);
133
+ }
134
+ return report;
135
+ } finally {
136
+ await ci.dispose();
137
+ }
138
+ }
139
+
140
+ function pickProbe(symbols) {
141
+ if (!Array.isArray(symbols) || !symbols.length) return null;
142
+ // Prefer a function/method/class — those have meaningful def/refs.
143
+ const preferred = symbols.find((s) =>
144
+ ["function", "method", "class"].includes(s.kind),
145
+ );
146
+ const s = preferred || symbols[0];
147
+ return { line: s.line, col: s.col, name: s.name, kind: s.kind };
148
+ }
149
+
150
+ async function captureServerInfo(ci) {
151
+ try {
152
+ const servers = ci.manager.listServers();
153
+ if (!servers.length) return null;
154
+ const s = servers[0];
155
+ const rssMb = s.pid != null ? await _deps.sampleRss(s.pid) : null;
156
+ return { serverId: s.serverId, pid: s.pid, rssMb };
157
+ } catch {
158
+ return null;
159
+ }
160
+ }
161
+
162
+ /**
163
+ * Best-effort resident-set-size (MB) of the server, summed over the pid AND its
164
+ * descendants. This matters on Windows: a `.cmd` server is launched through
165
+ * `cmd.exe /c`, so the tracked pid is the launcher and the real language server
166
+ * (node/tsserver) is a child — measuring only the launcher reports a few MB and
167
+ * lies. We sum the whole subtree. Returns null if it can't be read (never throws
168
+ * — memory is a bonus metric, not load-bearing).
169
+ */
170
+ async function sampleRssDefault(pid) {
171
+ const { execFileSync } = await import("child_process");
172
+ try {
173
+ if (process.platform === "win32") {
174
+ // One snapshot of every process → parent map → sum the subtree at `pid`.
175
+ const csv = execFileSync(
176
+ "wmic",
177
+ [
178
+ "process",
179
+ "get",
180
+ "ProcessId,ParentProcessId,WorkingSetSize",
181
+ "/format:csv",
182
+ ],
183
+ { encoding: "utf8", windowsHide: true, maxBuffer: 16 * 1024 * 1024 },
184
+ );
185
+ const bytes = sumSubtreeRssFromWmicCsv(csv, pid);
186
+ return bytes != null ? Math.round(bytes / (1024 * 1024)) : null;
187
+ }
188
+ // POSIX: not wrapped, so the pid is the real server. Sum pid + children.
189
+ const out = execFileSync("ps", ["-o", "pid=,ppid=,rss="], {
190
+ encoding: "utf8",
191
+ });
192
+ const rows = out
193
+ .trim()
194
+ .split(/\r?\n/)
195
+ .map((l) => l.trim().split(/\s+/).map(Number));
196
+ const kb = sumSubtreeRss(
197
+ rows.map(([p, pp, rss]) => ({ pid: p, ppid: pp, val: rss })),
198
+ pid,
199
+ );
200
+ return kb != null ? Math.round(kb / 1024) : null;
201
+ } catch {
202
+ return null;
203
+ }
204
+ }
205
+
206
+ /** Parse `wmic ... /format:csv` output and sum WorkingSetSize over pid's subtree (bytes). */
207
+ export function sumSubtreeRssFromWmicCsv(csv, rootPid) {
208
+ const lines = csv
209
+ .split(/\r?\n/)
210
+ .map((l) => l.trim())
211
+ .filter(Boolean);
212
+ const header = lines.find((l) => /ProcessId/i.test(l));
213
+ if (!header) return null;
214
+ const cols = header.split(",");
215
+ const iPid = cols.findIndex((c) => /^ProcessId$/i.test(c));
216
+ const iPpid = cols.findIndex((c) => /^ParentProcessId$/i.test(c));
217
+ const iRss = cols.findIndex((c) => /^WorkingSetSize$/i.test(c));
218
+ if (iPid < 0 || iPpid < 0 || iRss < 0) return null;
219
+ const rows = [];
220
+ for (const l of lines) {
221
+ if (l === header || /ProcessId/i.test(l)) continue;
222
+ const f = l.split(",");
223
+ const pid = Number(f[iPid]);
224
+ const ppid = Number(f[iPpid]);
225
+ const val = Number(f[iRss]);
226
+ if (Number.isFinite(pid))
227
+ rows.push({ pid, ppid, val: Number.isFinite(val) ? val : 0 });
228
+ }
229
+ return sumSubtreeRss(rows, rootPid);
230
+ }
231
+
232
+ /** Sum `val` over `rootPid` and all its transitive descendants. */
233
+ export function sumSubtreeRss(rows, rootPid) {
234
+ const childrenOf = new Map();
235
+ const valOf = new Map();
236
+ for (const r of rows) {
237
+ valOf.set(r.pid, r.val);
238
+ if (!childrenOf.has(r.ppid)) childrenOf.set(r.ppid, []);
239
+ childrenOf.get(r.ppid).push(r.pid);
240
+ }
241
+ if (!valOf.has(rootPid)) return null;
242
+ let total = 0;
243
+ const seen = new Set();
244
+ const stack = [rootPid];
245
+ while (stack.length) {
246
+ const p = stack.pop();
247
+ if (seen.has(p)) continue;
248
+ seen.add(p);
249
+ total += valOf.get(p) || 0;
250
+ for (const c of childrenOf.get(p) || []) stack.push(c);
251
+ }
252
+ return total;
253
+ }
254
+
255
+ function round1(x) {
256
+ return Math.round(x * 10) / 10;
257
+ }