chainlesschain 0.161.8 → 0.161.10

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 (165) hide show
  1. package/package.json +2 -1
  2. package/src/assets/web-panel/.build-hash +1 -1
  3. package/src/assets/web-panel/assets/{AIOps-Uls1XIO4.js → AIOps-CmCGAwDv.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-BpVrefl1.js → ActionButton-eeaISbP3.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-Z1Rgg9PA.js → Analytics-CJEX10hA.js} +2 -2
  6. package/src/assets/web-panel/assets/AppLayout-BpbfrB7k.css +1 -0
  7. package/src/assets/web-panel/assets/AppLayout-CrYEU1PZ.js +3 -0
  8. package/src/assets/web-panel/assets/{Audit-Co6yYgmX.js → Audit-B4BUSPse.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-1IZDB3QD.js → Backup-DIDcWoL9.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-LYB_wIZP.js → BaseInput-CuJjCIcU.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-D-6LDWGl.js → Chat-D-yEkssi.js} +3 -3
  12. package/src/assets/web-panel/assets/{Checkbox-dLnnw7OE.js → Checkbox-Bww7tFNj.js} +1 -1
  13. package/src/assets/web-panel/assets/{Codegen-Wh6xypMx.js → Codegen-D9k-kRxr.js} +1 -1
  14. package/src/assets/web-panel/assets/{Col-BT8lkjSw.js → Col-CWhmQejT.js} +1 -1
  15. package/src/assets/web-panel/assets/{Community-CdAeMHde.js → Community-Ck1ojsb1.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compact-VsImrjgV.js → Compact-CuDFE-4P.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compliance-PScuVx8d.js → Compliance-BSOLLyKA.js} +1 -1
  18. package/src/assets/web-panel/assets/{Cowork-qB8hRW0r.js → Cowork-BiOMErjG.js} +3 -3
  19. package/src/assets/web-panel/assets/{Cron-CuSjuE-h.js → Cron-DnVm70q-.js} +2 -2
  20. package/src/assets/web-panel/assets/{Crosschain-BqIRd8bv.js → Crosschain-CqIVrbR9.js} +1 -1
  21. package/src/assets/web-panel/assets/{DID-BT5BJ0DF.js → DID-DS9MUwUx.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dashboard-BX-06zEm.js → Dashboard-BlrXX2bG.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dropdown-Pjo3G3Vf.js → Dropdown-CqBG_led.js} +1 -1
  24. package/src/assets/web-panel/assets/{Federation-BbnYcYhr.js → Federation-DCBYjpOX.js} +1 -1
  25. package/src/assets/web-panel/assets/{FormItemContext-C3hf4K1_.js → FormItemContext-DQUjKw5j.js} +1 -1
  26. package/src/assets/web-panel/assets/{Git-Cmw6_HXW.js → Git-pitws4KW.js} +2 -2
  27. package/src/assets/web-panel/assets/{Governance-BFBvB2G6.js → Governance-BNG31zqe.js} +1 -1
  28. package/src/assets/web-panel/assets/{Inference-BBdX3YjM.js → Inference-W32jdXsU.js} +1 -1
  29. package/src/assets/web-panel/assets/{KnowledgeGraph-BC-bcvNY.js → KnowledgeGraph-_qBNRolE.js} +1 -1
  30. package/src/assets/web-panel/assets/{Logs-B9DuqFeW.js → Logs-BnnANM_j.js} +1 -1
  31. package/src/assets/web-panel/assets/{Marketplace-Bff1ja4R.js → Marketplace-C6OwNTw7.js} +1 -1
  32. package/src/assets/web-panel/assets/{McpTools-DnWqjtkb.js → McpTools-D7cbYTwR.js} +3 -3
  33. package/src/assets/web-panel/assets/{Memory-C6YXBuM7.js → Memory-7kL8dh9_.js} +2 -2
  34. package/src/assets/web-panel/assets/MobileBridge-B5ZSxpt9.js +3 -0
  35. package/src/assets/web-panel/assets/MobileBridge-DkkMCDx9.css +1 -0
  36. package/src/assets/web-panel/assets/{Mtc-r-J4WRfp.js → Mtc-DOm5jweE.js} +4 -4
  37. package/src/assets/web-panel/assets/{MtcAudit-DFqXLHn6.js → MtcAudit-D9rDFqWR.js} +1 -1
  38. package/src/assets/web-panel/assets/Multisig-CVqb7ayL.js +1 -0
  39. package/src/assets/web-panel/assets/Multisig-D-IuEDLa.css +1 -0
  40. package/src/assets/web-panel/assets/{NLProgramming-s5CrjYto.js → NLProgramming-BETAJaqD.js} +1 -1
  41. package/src/assets/web-panel/assets/{Notes-TAbnvDCd.js → Notes-CUJ1PDmG.js} +3 -3
  42. package/src/assets/web-panel/assets/{NotificationSettings-BZIKI219.js → NotificationSettings-BauSiotO.js} +1 -1
  43. package/src/assets/web-panel/assets/{Organization-BXbSljYa.js → Organization-B0T5PGg4.js} +4 -4
  44. package/src/assets/web-panel/assets/{Overflow-O2RWHZxH.js → Overflow-CHLIn241.js} +1 -1
  45. package/src/assets/web-panel/assets/{OverrideContext-DSwW21YS.js → OverrideContext-DYxbd09I.js} +1 -1
  46. package/src/assets/web-panel/assets/{P2P-B8jBZLh6.js → P2P-yqfDCE9U.js} +2 -2
  47. package/src/assets/web-panel/assets/{Permissions-Cexi8Jr6.js → Permissions-DWu7ec_n.js} +4 -4
  48. package/src/assets/web-panel/assets/{Pipeline-BwIBnNzj.js → Pipeline-BPXGoHep.js} +1 -1
  49. package/src/assets/web-panel/assets/{Privacy-D-LOR9um.js → Privacy-B2fRmhNs.js} +1 -1
  50. package/src/assets/web-panel/assets/ProjectInit-CteEo-wF.css +1 -0
  51. package/src/assets/web-panel/assets/{Projects-Bis42Cb6.js → ProjectInit-dPr0sgSZ.js} +2 -2
  52. package/src/assets/web-panel/assets/{ProjectSettings-DZ_fdRRJ.js → ProjectSettings-dKjwdfXX.js} +1 -1
  53. package/src/assets/web-panel/assets/Projects-C34BWmmy.css +1 -0
  54. package/src/assets/web-panel/assets/Projects-fRCTrULX.js +1 -0
  55. package/src/assets/web-panel/assets/{Providers-DH6hY4Gx.js → Providers-OpB_FLki.js} +1 -1
  56. package/src/assets/web-panel/assets/{QuickAsk-Ur0bUXHK.js → QuickAsk-B0gFMvI8.js} +1 -1
  57. package/src/assets/web-panel/assets/{Recommend-CLDQjSf6.js → Recommend-C2NwxWiR.js} +1 -1
  58. package/src/assets/web-panel/assets/{Reputation-StG-zGil.js → Reputation-CTBtQ8Bi.js} +1 -1
  59. package/src/assets/web-panel/assets/{Row-DAWA1cwa.js → Row-CQ36tMlO.js} +1 -1
  60. package/src/assets/web-panel/assets/{RssFeed-rb2CP-IS.js → RssFeed-ChOug33H.js} +3 -3
  61. package/src/assets/web-panel/assets/{Search-Y9qsWaAE.js → Search-DrlVYajZ.js} +1 -1
  62. package/src/assets/web-panel/assets/{Security-BanZDWBe.js → Security-BxWm_HMW.js} +3 -3
  63. package/src/assets/web-panel/assets/{Services-DFOMZwqJ.js → Services-Bq__zdi1.js} +2 -2
  64. package/src/assets/web-panel/assets/{Skeleton-Cy48VmyC.js → Skeleton-D2BPihBx.js} +1 -1
  65. package/src/assets/web-panel/assets/{Skills-BqdkGRyO.js → Skills-Q1ZtavwR.js} +1 -1
  66. package/src/assets/web-panel/assets/{Sla-B8lXq9rJ.js → Sla-CyIKjjSg.js} +1 -1
  67. package/src/assets/web-panel/assets/{SpeechSettings-CmIkYpWT.js → SpeechSettings-DPddWDCV.js} +1 -1
  68. package/src/assets/web-panel/assets/{SyncSettings-tZDaJZ0S.js → SyncSettings-CY-Fdii1.js} +1 -1
  69. package/src/assets/web-panel/assets/{Tasks-DxBlrylF.js → Tasks-DAWxFePY.js} +1 -1
  70. package/src/assets/web-panel/assets/{Templates-ByshgJtu.js → Templates-CuIQmfXP.js} +1 -1
  71. package/src/assets/web-panel/assets/{Tenant-DCpEpRf1.js → Tenant-CYsUC_mL.js} +1 -1
  72. package/src/assets/web-panel/assets/{Tokens-BIUug_M_.js → Tokens-DpwM8qKh.js} +1 -1
  73. package/src/assets/web-panel/assets/{Trigger-DY4iT_Sv.js → Trigger-CBHUHnc-.js} +1 -1
  74. package/src/assets/web-panel/assets/{Trust-fAtm0ohe.js → Trust-DfQZgxcX.js} +1 -1
  75. package/src/assets/web-panel/assets/{UkeySign-CwbV_ITc.js → UkeySign-BcOnuHWe.js} +1 -1
  76. package/src/assets/web-panel/assets/{VideoEditing-CBJ5dw8E.js → VideoEditing-Ci-c6HHb.js} +1 -1
  77. package/src/assets/web-panel/assets/{Wallet-B1fyWeNC.js → Wallet-DBuVM9t_.js} +4 -4
  78. package/src/assets/web-panel/assets/{WebAuthn-by6IZMeB.js → WebAuthn-Dc3XC6-l.js} +5 -5
  79. package/src/assets/web-panel/assets/{WorkflowEditor-DZkBKsSU.js → WorkflowEditor-BFBZCgWB.js} +1 -1
  80. package/src/assets/web-panel/assets/{chat-CKAWhBMH.js → chat-tqUunmHQ.js} +1 -1
  81. package/src/assets/web-panel/assets/{collapseMotion-6-_FbiKl.js → collapseMotion-CZQhO80h.js} +1 -1
  82. package/src/assets/web-panel/assets/{colors-DgRS7Mb2.js → colors-7dfqj18R.js} +1 -1
  83. package/src/assets/web-panel/assets/{compact-item-CQUZCSRU.js → compact-item-_8YefjuR.js} +1 -1
  84. package/src/assets/web-panel/assets/{createContext-DgOciZHM.js → createContext-CPZ59Zcw.js} +1 -1
  85. package/src/assets/web-panel/assets/{echarts-BrEnqXDv.js → echarts-TwhxblyG.js} +1 -1
  86. package/src/assets/web-panel/assets/{hasIn-DEXVOypF.js → hasIn-BidaS7SK.js} +1 -1
  87. package/src/assets/web-panel/assets/icons-Q99MnhG8.js +57 -0
  88. package/src/assets/web-panel/assets/{index-wPVZuwWm.js → index-51Z_iRMU.js} +2 -2
  89. package/src/assets/web-panel/assets/{index-BYrBEkTv.js → index-B3-Fdfqy.js} +1 -1
  90. package/src/assets/web-panel/assets/{index-nMw96bEM.js → index-BJmJfXGw.js} +1 -1
  91. package/src/assets/web-panel/assets/{index-HE37tYPs.js → index-BUlPL2uR.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-ZOpqRGzA.js → index-B_pQvbuN.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-D8S-7oDQ.js → index-BqsvxElz.js} +9 -9
  94. package/src/assets/web-panel/assets/{index-CS3fI6_d.js → index-BtBRkcWM.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-CCuIY7Ff.js → index-C0MN4j0q.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-D1dIizuf.js → index-CAUH-6ta.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-o6vVX9C_.js → index-CG0swGFV.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-Bo43zHIV.js → index-CLceS3rm.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-DkBSIb9k.js → index-CW90j-dZ.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-hfGZzUzb.js → index-Ca0EAS0W.js} +1 -1
  101. package/src/assets/web-panel/assets/index-Ca5Qc31r.js +1 -0
  102. package/src/assets/web-panel/assets/{index-B1USa9q3.js → index-CmCovo5r.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-CQepaPId.js → index-CvkR7sYL.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-D3tqZAdL.js → index-Cw1VkvZr.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-D2PDzVV6.js → index-Cxwyyzpd.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DBRA1wFF.js → index-Cxy6yDHf.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DpL-43E_.js → index-CzARuKje.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BQDGHgXQ.js → index-D7yjk-E8.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-1EDbawpk.js → index-D8upWkW0.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-DW_-28b4.js → index-D95E7B-a.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DjQzFo-O.js → index-DJa3dvQf.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BEnMJ3rw.js → index-DJfKgyA-.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-Ce57JGJq.js → index-DMRsx5W4.js} +1 -1
  114. package/src/assets/web-panel/assets/index-DP7namG9.js +21 -0
  115. package/src/assets/web-panel/assets/{index-jLpDpunJ.js → index-DTmWBWkJ.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CH5YkJC9.js → index-DTwrQg1G.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-_Oe8Zr99.js → index-DWSEcCO0.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BMx0R9Vw.js → index-D_vErh-N.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-BjpS0vcp.js → index-DccwP9Op.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CetlLBjh.js → index-Dev3hWia.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CEt0RfAY.js → index-DfHN8qWn.js} +1 -1
  122. package/src/assets/web-panel/assets/index-Ds3hIeDc.js +1 -0
  123. package/src/assets/web-panel/assets/{index-nIXYg_tf.js → index-DsykGbFs.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-bRI-SvZ-.js → index-OZ08PLpO.js} +1 -1
  125. package/src/assets/web-panel/assets/index-QVPLcn-I.js +1 -0
  126. package/src/assets/web-panel/assets/{index-B-g1My7q.js → index-Xg1JWxyg.js} +1 -1
  127. package/src/assets/web-panel/assets/{initDefaultProps-BSTz5E8D.js → initDefaultProps-DBQ94EVq.js} +1 -1
  128. package/src/assets/web-panel/assets/{markdown-xjUYbPSW.js → markdown-CsiA8-E5.js} +1 -1
  129. package/src/assets/web-panel/assets/{markdown-vYH_ziAO.js → markdown-Yo_c6Krv.js} +1 -1
  130. package/src/assets/web-panel/assets/{motion-B10pjDA-.js → motion-BAgV2nZt.js} +1 -1
  131. package/src/assets/web-panel/assets/{move-B_PFOXXn.js → move-CPhu8BHp.js} +1 -1
  132. package/src/assets/web-panel/assets/{omit-Bf31gUOR.js → omit-BKpLUN0q.js} +1 -1
  133. package/src/assets/web-panel/assets/{pickAttrs-CTOOvnV9.js → pickAttrs-BicOrtU0.js} +1 -1
  134. package/src/assets/web-panel/assets/{placementArrow-DfXqIy1B.js → placementArrow-D2-Ct0PH.js} +1 -1
  135. package/src/assets/web-panel/assets/{responsiveObserve-BonUzZVT.js → responsiveObserve-DGFr293p.js} +1 -1
  136. package/src/assets/web-panel/assets/{slide-DtkoQrl3.js → slide-C7zAHcKr.js} +1 -1
  137. package/src/assets/web-panel/assets/{statusUtils-BJlmtjwo.js → statusUtils-ByfnDIgi.js} +1 -1
  138. package/src/assets/web-panel/assets/{styleChecker-CoQ2DFN_.js → styleChecker-C-ldcMcB.js} +1 -1
  139. package/src/assets/web-panel/assets/useFlexGapSupport-CKCvqfWX.js +1 -0
  140. package/src/assets/web-panel/assets/{useFs-DNCH6P7V.js → useFs-yX-MUKbZ.js} +1 -1
  141. package/src/assets/web-panel/assets/{useMergedState-n0f81Aew.js → useMergedState-D3PX36GT.js} +1 -1
  142. package/src/assets/web-panel/assets/{useRefs-CTh0C9xI.js → useRefs-opfcK7Pm.js} +1 -1
  143. package/src/assets/web-panel/assets/{useState-4T1Ntfpx.js → useState-Cp5WlLTS.js} +1 -1
  144. package/src/assets/web-panel/assets/{vendor-Ci2pTZ_t.js → vendor-BVLz_z7V.js} +1 -1
  145. package/src/assets/web-panel/assets/{vnode-CAFNU-3N.js → vnode-CW-Z-Xwr.js} +1 -1
  146. package/src/assets/web-panel/assets/{zoom-Beg44Pk9.js → zoom-DR60LSPO.js} +1 -1
  147. package/src/assets/web-panel/index.html +3 -3
  148. package/src/commands/marketplace.js +286 -0
  149. package/src/commands/mtc.js +1 -1
  150. package/src/commands/multisig.js +471 -0
  151. package/src/commands/p2p.js +114 -7
  152. package/src/commands/project.js +258 -0
  153. package/src/index.js +5 -0
  154. package/src/lib/audit-mtc.js +1 -1
  155. package/src/lib/multisig-runtime.js +160 -0
  156. package/src/lib/p2p-manager.js +96 -2
  157. package/src/lib/project-runtime.js +171 -0
  158. package/src/assets/web-panel/assets/AppLayout-GvY1b95g.js +0 -1
  159. package/src/assets/web-panel/assets/AppLayout-P7jhSfLy.css +0 -1
  160. package/src/assets/web-panel/assets/Projects-B5IgXt-x.css +0 -1
  161. package/src/assets/web-panel/assets/icons-B2G69bhT.js +0 -57
  162. package/src/assets/web-panel/assets/index-DLnvncqr.js +0 -1
  163. package/src/assets/web-panel/assets/index-DsmrJv8Y.js +0 -21
  164. package/src/assets/web-panel/assets/index-Rvjbak1o.js +0 -1
  165. package/src/assets/web-panel/assets/useFlexGapSupport-BD9H_ICR.js +0 -1
@@ -1,4 +1,4 @@
1
- import{K as o}from"./index-D8S-7oDQ.js";import{i as f}from"./motion-B10pjDA-.js";const c=new o("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),y=new o("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),a=new o("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),s=new o("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),g=new o("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),O=new o("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),l=new o("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),u=new o("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}}),p=new o("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),z=new o("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}}),K=new o("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),w=new o("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}}),I={zoom:{inKeyframes:c,outKeyframes:y},"zoom-big":{inKeyframes:a,outKeyframes:s},"zoom-big-fast":{inKeyframes:a,outKeyframes:s},"zoom-left":{inKeyframes:l,outKeyframes:u},"zoom-right":{inKeyframes:p,outKeyframes:z},"zoom-up":{inKeyframes:g,outKeyframes:O},"zoom-down":{inKeyframes:K,outKeyframes:w}},h=(n,r)=>{const{antCls:m}=n,t=`${m}-${r}`,{inKeyframes:i,outKeyframes:e}=I[r];return[f(t,i,e,r==="zoom-big-fast"?n.motionDurationFast:n.motionDurationMid),{[`
1
+ import{K as o}from"./index-BqsvxElz.js";import{i as f}from"./motion-BAgV2nZt.js";const c=new o("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),y=new o("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),a=new o("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),s=new o("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),g=new o("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),O=new o("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),l=new o("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),u=new o("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}}),p=new o("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),z=new o("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}}),K=new o("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),w=new o("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}}),I={zoom:{inKeyframes:c,outKeyframes:y},"zoom-big":{inKeyframes:a,outKeyframes:s},"zoom-big-fast":{inKeyframes:a,outKeyframes:s},"zoom-left":{inKeyframes:l,outKeyframes:u},"zoom-right":{inKeyframes:p,outKeyframes:z},"zoom-up":{inKeyframes:g,outKeyframes:O},"zoom-down":{inKeyframes:K,outKeyframes:w}},h=(n,r)=>{const{antCls:m}=n,t=`${m}-${r}`,{inKeyframes:i,outKeyframes:e}=I[r];return[f(t,i,e,r==="zoom-big-fast"?n.motionDurationFast:n.motionDurationMid),{[`
2
2
  ${t}-enter,
3
3
  ${t}-appear
4
4
  `]:{transform:"scale(0)",opacity:0,animationTimingFunction:n.motionEaseOutCirc,"&-prepare":{transform:"none"}},[`${t}-leave`]:{animationTimingFunction:n.motionEaseInOutCirc}}]};export{h as i,c as z};
@@ -8,9 +8,9 @@
8
8
  // Injected by web-ui-server.js at serve time
9
9
  window.__CC_CONFIG__ = __CC_CONFIG_PLACEHOLDER__;
10
10
  </script>
11
- <script type="module" crossorigin src="./assets/index-D8S-7oDQ.js"></script>
12
- <link rel="modulepreload" crossorigin href="./assets/vendor-Ci2pTZ_t.js">
13
- <link rel="modulepreload" crossorigin href="./assets/icons-B2G69bhT.js">
11
+ <script type="module" crossorigin src="./assets/index-BqsvxElz.js"></script>
12
+ <link rel="modulepreload" crossorigin href="./assets/vendor-BVLz_z7V.js">
13
+ <link rel="modulepreload" crossorigin href="./assets/icons-Q99MnhG8.js">
14
14
  <link rel="stylesheet" crossorigin href="./assets/index-CfX1DEtk.css">
15
15
  </head>
16
16
  <body>
@@ -34,6 +34,17 @@ import {
34
34
  setInvocationStatus,
35
35
  getMarketplaceStatsV2,
36
36
  } from "../lib/skill-marketplace.js";
37
+ import {
38
+ openMultisigManager,
39
+ defaultMultisigDbPath,
40
+ defaultMultisigLogPath,
41
+ readSecretKey,
42
+ } from "../lib/multisig-runtime.js";
43
+
44
+ // v1.2 m-of-n Phase 2 — marketplace.purchase 大额触发阈值。设计文档 §1 写的
45
+ // "商品 price ≥ ¥1000"。fen = ¥ × 100。可由命令行 --threshold-fen 覆盖(测试用)。
46
+ export const LARGE_PURCHASE_THRESHOLD_FEN = 100_000;
47
+ const MULTISIG_DOMAIN = "marketplace.purchase";
37
48
 
38
49
  function _dbFromCtx(ctx) {
39
50
  if (!ctx.db) {
@@ -579,6 +590,281 @@ export function registerMarketplaceCommand(program) {
579
590
  process.exit(1);
580
591
  }
581
592
  });
593
+
594
+ /* ── v1.2 m-of-n Phase 2: marketplace.purchase mediator ─────── */
595
+
596
+ mp.command("purchase <itemId>")
597
+ .description(
598
+ "Initiate a purchase. Large orders (≥ threshold) route through M-of-N multisig.",
599
+ )
600
+ .requiredOption("--amount-fen <n>", "Order amount in fen (¥ × 100)", (v) =>
601
+ parseInt(v, 10),
602
+ )
603
+ .requiredOption("--buyer <did>", "Buyer DID (multisig initiator)")
604
+ .option("--alg <alg>", "Initiator signing alg", "Ed25519")
605
+ .option("--key <hex|path>", "Initiator secret key hex / file")
606
+ .option(
607
+ "--threshold-fen <n>",
608
+ `Override large-order threshold (default ${LARGE_PURCHASE_THRESHOLD_FEN})`,
609
+ (v) => parseInt(v, 10),
610
+ )
611
+ .option("--item-name <name>", "Optional item display name")
612
+ .option("--db <path>", "Multisig DB path", defaultMultisigDbPath())
613
+ .option("--log <path>", "Governance log path", defaultMultisigLogPath())
614
+ .option("--json", "Output JSON")
615
+ .action(async (itemId, options) => {
616
+ try {
617
+ const threshold = options.thresholdFen ?? LARGE_PURCHASE_THRESHOLD_FEN;
618
+ const amountFen = options.amountFen;
619
+ if (!Number.isFinite(amountFen) || amountFen <= 0) {
620
+ logger.error("--amount-fen must be positive integer");
621
+ process.exit(2);
622
+ }
623
+ const requiresMultisig = amountFen >= threshold;
624
+
625
+ if (!requiresMultisig) {
626
+ // Below threshold: direct path. No real payment processor in CLI scope
627
+ // — emit a "purchased" record. Phase 2 doesn't aim to wire a real
628
+ // payment gateway; it aims to gate large orders through multisig.
629
+ if (options.json) {
630
+ console.log(
631
+ JSON.stringify(
632
+ {
633
+ status: "purchased",
634
+ itemId,
635
+ amountFen,
636
+ buyer: options.buyer,
637
+ path: "direct",
638
+ },
639
+ null,
640
+ 2,
641
+ ),
642
+ );
643
+ } else {
644
+ logger.log(
645
+ chalk.green(
646
+ `✓ Purchase executed (direct, below ¥${(threshold / 100).toFixed(2)} threshold)`,
647
+ ),
648
+ );
649
+ logger.log(` itemId: ${itemId}`);
650
+ logger.log(` amount: ¥${(amountFen / 100).toFixed(2)}`);
651
+ }
652
+ return;
653
+ }
654
+
655
+ // Above threshold: route through multisig.
656
+ const { store, mgr, close } = await openMultisigManager(
657
+ options.db,
658
+ options.log,
659
+ );
660
+ try {
661
+ const policy = store.getPolicy(MULTISIG_DOMAIN);
662
+ if (!policy) {
663
+ const msg = `No multisig policy for domain "${MULTISIG_DOMAIN}" — cannot route ¥${(amountFen / 100).toFixed(2)} (≥ threshold). Run: cc multisig policy set ${MULTISIG_DOMAIN} --m <M> --members <json>`;
664
+ if (options.json) {
665
+ console.log(
666
+ JSON.stringify(
667
+ {
668
+ status: "blocked",
669
+ reason: "no_policy",
670
+ itemId,
671
+ amountFen,
672
+ path: "multisig",
673
+ },
674
+ null,
675
+ 2,
676
+ ),
677
+ );
678
+ } else {
679
+ logger.error(chalk.red(`✗ ${msg}`));
680
+ }
681
+ process.exit(2);
682
+ }
683
+ const secretKey = readSecretKey(options.key);
684
+ const result = mgr.propose({
685
+ domain: MULTISIG_DOMAIN,
686
+ payload: {
687
+ itemId,
688
+ amountFen,
689
+ buyer: options.buyer,
690
+ itemName: options.itemName || null,
691
+ },
692
+ policy,
693
+ initiator: {
694
+ did: options.buyer,
695
+ alg: options.alg,
696
+ secretKey,
697
+ },
698
+ });
699
+ if (options.json) {
700
+ console.log(
701
+ JSON.stringify(
702
+ {
703
+ status: "needs_co_sign",
704
+ path: "multisig",
705
+ proposalId: result.proposal.id,
706
+ reachedThreshold: result.reachedThreshold,
707
+ requiredSigs: policy.m,
708
+ itemId,
709
+ amountFen,
710
+ },
711
+ null,
712
+ 2,
713
+ ),
714
+ );
715
+ } else {
716
+ logger.log(
717
+ chalk.cyan(
718
+ `↪ Routed through multisig (¥${(amountFen / 100).toFixed(2)} ≥ ¥${(threshold / 100).toFixed(2)} threshold)`,
719
+ ),
720
+ );
721
+ logger.log(` proposalId: ${result.proposal.id}`);
722
+ logger.log(
723
+ ` needs ${policy.m} of ${policy.members.length} signatures`,
724
+ );
725
+ if (result.reachedThreshold) {
726
+ logger.log(
727
+ chalk.green(
728
+ " ✓ threshold reached on first signature — run: cc marketplace consume",
729
+ ),
730
+ );
731
+ } else {
732
+ logger.log(
733
+ ` next: co-signers run: cc multisig sign ${result.proposal.id}`,
734
+ );
735
+ }
736
+ }
737
+ } finally {
738
+ close();
739
+ }
740
+ } catch (err) {
741
+ logger.error(`Purchase failed: ${err.message}`);
742
+ process.exit(1);
743
+ }
744
+ });
745
+
746
+ mp.command("consume <proposalId>")
747
+ .description(
748
+ "Execute a multisig-gated purchase after threshold reached (marks proposal consumed)",
749
+ )
750
+ .option("--db <path>", "Multisig DB path", defaultMultisigDbPath())
751
+ .option("--log <path>", "Governance log path", defaultMultisigLogPath())
752
+ .option("--json", "Output JSON")
753
+ .action(async (proposalId, options) => {
754
+ try {
755
+ const { mgr, close } = await openMultisigManager(
756
+ options.db,
757
+ options.log,
758
+ );
759
+ try {
760
+ const got = mgr.get(proposalId);
761
+ if (!got) {
762
+ if (options.json) {
763
+ console.log(
764
+ JSON.stringify(
765
+ { status: "error", reason: "proposal_not_found" },
766
+ null,
767
+ 2,
768
+ ),
769
+ );
770
+ } else {
771
+ logger.error(chalk.red(`No proposal: ${proposalId}`));
772
+ }
773
+ process.exit(2);
774
+ }
775
+ if (got.proposal.domain !== MULTISIG_DOMAIN) {
776
+ if (options.json) {
777
+ console.log(
778
+ JSON.stringify(
779
+ {
780
+ status: "error",
781
+ reason: "wrong_domain",
782
+ expected: MULTISIG_DOMAIN,
783
+ actual: got.proposal.domain,
784
+ },
785
+ null,
786
+ 2,
787
+ ),
788
+ );
789
+ } else {
790
+ logger.error(
791
+ chalk.red(
792
+ `Proposal domain "${got.proposal.domain}" is not "${MULTISIG_DOMAIN}" — use cc multisig finalize instead.`,
793
+ ),
794
+ );
795
+ }
796
+ process.exit(2);
797
+ }
798
+ if (got.proposal.state !== "reached") {
799
+ if (options.json) {
800
+ console.log(
801
+ JSON.stringify(
802
+ {
803
+ status: "error",
804
+ reason: `proposal_state_${got.proposal.state}`,
805
+ },
806
+ null,
807
+ 2,
808
+ ),
809
+ );
810
+ } else {
811
+ logger.error(
812
+ chalk.red(
813
+ `Proposal state is "${got.proposal.state}", need "reached" — sign more before consume.`,
814
+ ),
815
+ );
816
+ }
817
+ process.exit(2);
818
+ }
819
+
820
+ // Execute purchase from proposal payload (CLI stub — Phase 2 doesn't
821
+ // ship a real payment processor). Just print the order, then finalize.
822
+ const order = JSON.parse(got.proposal.payloadJcs);
823
+ const finalizeRes = mgr.finalize(proposalId);
824
+ if (!finalizeRes.ok) {
825
+ if (options.json) {
826
+ console.log(
827
+ JSON.stringify(
828
+ { status: "error", reason: finalizeRes.reason },
829
+ null,
830
+ 2,
831
+ ),
832
+ );
833
+ } else {
834
+ logger.error(chalk.red(`Finalize failed: ${finalizeRes.reason}`));
835
+ }
836
+ process.exit(1);
837
+ }
838
+ if (options.json) {
839
+ console.log(
840
+ JSON.stringify(
841
+ {
842
+ status: "consumed",
843
+ proposalId,
844
+ order,
845
+ },
846
+ null,
847
+ 2,
848
+ ),
849
+ );
850
+ } else {
851
+ logger.log(
852
+ chalk.green(
853
+ `✓ Purchase consumed — order ${order.itemId} for ¥${(order.amountFen / 100).toFixed(2)}`,
854
+ ),
855
+ );
856
+ logger.log(` buyer: ${order.buyer}`);
857
+ if (order.itemName) logger.log(` item: ${order.itemName}`);
858
+ logger.log(` proposalId: ${proposalId}`);
859
+ }
860
+ } finally {
861
+ close();
862
+ }
863
+ } catch (err) {
864
+ logger.error(`Consume failed: ${err.message}`);
865
+ process.exit(1);
866
+ }
867
+ });
582
868
  }
583
869
 
584
870
  // === Iter16 V2 governance overlay ===
@@ -11,7 +11,7 @@
11
11
  import fs from "node:fs";
12
12
  import path from "node:path";
13
13
  import chalk from "chalk";
14
- import { ed25519 as nobleEd25519 } from "@noble/curves/ed25519";
14
+ import { ed25519 as nobleEd25519 } from "@noble/curves/ed25519.js";
15
15
  import { logger } from "../lib/logger.js";
16
16
  import { bootstrap, shutdown } from "../runtime/bootstrap.js";
17
17
  import { getAllIdentities, getIdentity } from "../lib/did-manager.js";