chainlesschain 0.162.165 → 0.162.166

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 (160) hide show
  1. package/package.json +3 -1
  2. package/src/assets/web-panel/assets/{AIOps-DgGZr3PR.js → AIOps-LbDx7jL6.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-BAOgBIc_.js → ActionButton-DnurtK34.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-Ds4GAvNF.js → Analytics-DXSsV1am.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-CoJvCkoF.js → AppLayout-dqRpzNuD.js} +4 -4
  6. package/src/assets/web-panel/assets/{Artifacts-6EgUaE1T.js → Artifacts-BwdmYepK.js} +1 -1
  7. package/src/assets/web-panel/assets/{Audit-BYie_i74.js → Audit-oSX0kOUG.js} +1 -1
  8. package/src/assets/web-panel/assets/{BackgroundAgents-D5gxOhjd.js → BackgroundAgents-C2KxJahT.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-CIsVK2pT.js → Backup-B4TkxWkC.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-ClorP55M.js → BaseInput-CX5-KxeU.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-CnhTPGGA.js → Chat-O_HzD-PL.js} +5 -5
  12. package/src/assets/web-panel/assets/{ChatBubbleRenderer-Bl1VXgwp.js → ChatBubbleRenderer-Br8saHQA.js} +1 -1
  13. package/src/assets/web-panel/assets/{Checkbox-BRavl7TP.js → Checkbox-ChepDpC1.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-BXg_ErNT.js → Codegen-D9z8kc7q.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-CfDPzFPq.js → Col-B-H5eoNw.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-Cgo0httP.js → Community-Ccyp_Kk5.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-DU5JcEQM.js → Compact-BNvBznp_.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-DCH_TVBl.js → Compliance-D1FjRd8n.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-IGb5O2IH.js → Cowork-CV9B9u-8.js} +2 -2
  20. package/src/assets/web-panel/assets/{Cron-CPp_Xp9F.js → Cron-BowJ4VIx.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-Cwrqklzw.js → Crosschain-BJc6jzRF.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-D55sBQwM.js → DID-BEp8NV6D.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-CedXhGmP.js → Dashboard-Dls0B3YB.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-Dm6_v3V4.js → Dropdown-DQ7zXVtD.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-CWjnuE3G.js → EmailListRenderer-B9q79tOl.js} +1 -1
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DubTh7y-.js → FamilyGuardDashboard-CD8Ie-88.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-DlSM4uJv.js → Federation-5o7XU5Vf.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-BYhg0vtG.js → FormItemContext-DeKbMvOs.js} +1 -1
  29. package/src/assets/web-panel/assets/{GenericCardRenderer-Bkh7qjfK.js → GenericCardRenderer-CZiQvz_z.js} +1 -1
  30. package/src/assets/web-panel/assets/{Git-DSLWPKvn.js → Git-CTvFxVV8.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-DIj9O8BB.js → Governance-DwzFIjHt.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-Dhep3e5Y.js → Inference-CJBk59c-.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-Cj8vzxB_.js → KnowledgeGraph-DfsaXN2z.js} +1 -1
  34. package/src/assets/web-panel/assets/{Logs-Ba4SsPja.js → Logs-DVRYf18S.js} +2 -2
  35. package/src/assets/web-panel/assets/MarkdownRenderer-BL_WsWZM.js +1 -0
  36. package/src/assets/web-panel/assets/{Marketplace-CGs9IIbf.js → Marketplace-BuIwyE4t.js} +1 -1
  37. package/src/assets/web-panel/assets/{McpTools-BTPAoX4K.js → McpTools-D3U0o78E.js} +5 -5
  38. package/src/assets/web-panel/assets/{Memory-BJ6ISf2c.js → Memory-QYVmyb3b.js} +2 -2
  39. package/src/assets/web-panel/assets/{MobileBridge-Ca6n3Dcn.js → MobileBridge-BFgrj6eZ.js} +1 -1
  40. package/src/assets/web-panel/assets/{MobileProjects-lvilHuLt.js → MobileProjects-Bp5QB-46.js} +1 -1
  41. package/src/assets/web-panel/assets/{Mtc-CMo0acBV.js → Mtc-BZQu8TcH.js} +4 -4
  42. package/src/assets/web-panel/assets/{MtcAudit-Hz5wBvFX.js → MtcAudit-BnFfEkLo.js} +4 -4
  43. package/src/assets/web-panel/assets/{Multisig-BK2aKWE6.js → Multisig-iUnNS9Cm.js} +3 -3
  44. package/src/assets/web-panel/assets/{NLProgramming-CExpnYMI.js → NLProgramming-DNNz1y9Y.js} +1 -1
  45. package/src/assets/web-panel/assets/{Notes-B7IFbuBo.js → Notes-CZezNYRU.js} +3 -3
  46. package/src/assets/web-panel/assets/{NotificationSettings-VrGchtb0.js → NotificationSettings-DBvrplIR.js} +1 -1
  47. package/src/assets/web-panel/assets/{OrderTableRenderer-CyrNTxkU.js → OrderTableRenderer-CTDtee49.js} +1 -1
  48. package/src/assets/web-panel/assets/{Organization-I0C17GBP.js → Organization-CCOUJX1R.js} +4 -4
  49. package/src/assets/web-panel/assets/{Overflow-CXcWvERe.js → Overflow-DcZghdk0.js} +1 -1
  50. package/src/assets/web-panel/assets/{P2P-FFSCXrZq.js → P2P-jmddWX9q.js} +2 -2
  51. package/src/assets/web-panel/assets/{PdhVaultBrowser-1PB-p8Zk.js → PdhVaultBrowser-wfjMcczl.js} +4 -4
  52. package/src/assets/web-panel/assets/{Permissions-C1YHejsb.js → Permissions-DU1GJjca.js} +4 -4
  53. package/src/assets/web-panel/assets/{PersonalDataHub-CEMPpgf8.js → PersonalDataHub-BzTMzDF9.js} +3 -3
  54. package/src/assets/web-panel/assets/{Pipeline-FoIScdLr.js → Pipeline-DPmjlpVc.js} +1 -1
  55. package/src/assets/web-panel/assets/{Privacy-DDfbEzEj.js → Privacy-B6HRLpfK.js} +1 -1
  56. package/src/assets/web-panel/assets/{ProjectInit-Dso4kB0O.js → ProjectInit-Cyy86AsN.js} +2 -2
  57. package/src/assets/web-panel/assets/{ProjectSettings-WvDoydDc.js → ProjectSettings-Bl_WQxJ5.js} +2 -2
  58. package/src/assets/web-panel/assets/{Projects-NJp0kzkd.js → Projects-Co9yKThA.js} +1 -1
  59. package/src/assets/web-panel/assets/{Providers-BuJXnOLI.js → Providers-DLa4NlIs.js} +1 -1
  60. package/src/assets/web-panel/assets/{QrScannerModal-Bb3lMvGG.js → QrScannerModal-BvzM7q5f.js} +1 -1
  61. package/src/assets/web-panel/assets/{QuickAsk-Ddxra3fK.js → QuickAsk-BN8yyyUj.js} +1 -1
  62. package/src/assets/web-panel/assets/{Recommend-BW-dR9qw.js → Recommend-QsVN4w0i.js} +1 -1
  63. package/src/assets/web-panel/assets/{RemoteSession-Hnm7-Qkm.js → RemoteSession-tkDXw-TY.js} +2 -2
  64. package/src/assets/web-panel/assets/{Reputation-DKz6meHE.js → Reputation-DAifkGsy.js} +1 -1
  65. package/src/assets/web-panel/assets/{Row-BuAsoNTS.js → Row-D7dZEyak.js} +1 -1
  66. package/src/assets/web-panel/assets/{RssFeed-_do9DMIH.js → RssFeed-DB5sImTA.js} +2 -2
  67. package/src/assets/web-panel/assets/{Search-CMlcw7ND.js → Search-3py3TO9V.js} +1 -1
  68. package/src/assets/web-panel/assets/{Security-DhAkfSpM.js → Security-DhNUfT_k.js} +3 -3
  69. package/src/assets/web-panel/assets/{Services-5zKLhy46.js → Services-DjJAA_5D.js} +2 -2
  70. package/src/assets/web-panel/assets/{Skeleton-DCMZ3wfv.js → Skeleton-u95JjK3n.js} +1 -1
  71. package/src/assets/web-panel/assets/{Skills-DxQgYCC_.js → Skills-DPo3L0Tz.js} +1 -1
  72. package/src/assets/web-panel/assets/{Sla-CJmE4cSN.js → Sla-DWhkAZV1.js} +1 -1
  73. package/src/assets/web-panel/assets/{SpeechSettings-BgpRTPQp.js → SpeechSettings-PUegMtqV.js} +1 -1
  74. package/src/assets/web-panel/assets/{SyncSettings-DkogtYbB.js → SyncSettings-BMNYrnrU.js} +2 -2
  75. package/src/assets/web-panel/assets/{Tasks-D5OrwAl9.js → Tasks-CYm_oTJC.js} +1 -1
  76. package/src/assets/web-panel/assets/{Templates-DAZIu5nN.js → Templates-Dw9Er5DN.js} +1 -1
  77. package/src/assets/web-panel/assets/{Tenant-BRJMI-su.js → Tenant-7P3QIBSo.js} +1 -1
  78. package/src/assets/web-panel/assets/Terminal-ClPrfWW7.js +3 -0
  79. package/src/assets/web-panel/assets/{TimelineRenderer-D4z9aSGD.js → TimelineRenderer-DbCd1bDH.js} +1 -1
  80. package/src/assets/web-panel/assets/{Tokens-zgYA4UOI.js → Tokens-EQofpA0t.js} +1 -1
  81. package/src/assets/web-panel/assets/{Trigger-DMOgHX4m.js → Trigger-ChNLLypd.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trust-CEtoNwcT.js → Trust-dlVGUKs5.js} +1 -1
  83. package/src/assets/web-panel/assets/{UkeySign-DFx2pQfO.js → UkeySign-BXyBUhNF.js} +1 -1
  84. package/src/assets/web-panel/assets/{VideoEditing-DLssy-7B.js → VideoEditing-BE8-68ge.js} +1 -1
  85. package/src/assets/web-panel/assets/{Wallet-DQHc6gTl.js → Wallet-7ZIJOwNg.js} +4 -4
  86. package/src/assets/web-panel/assets/{WebAuthn-DgKcODkn.js → WebAuthn-DgNd2Amr.js} +3 -3
  87. package/src/assets/web-panel/assets/{WorkflowEditor-cPEWfMOf.js → WorkflowEditor-Z-Un-9l5.js} +1 -1
  88. package/src/assets/web-panel/assets/{chat-Coj7rSO1.js → chat-CtVDEkUc.js} +1 -1
  89. package/src/assets/web-panel/assets/{colors-DiyGfr-6.js → colors-PXtJ2f1B.js} +1 -1
  90. package/src/assets/web-panel/assets/{compact-item-DB63aMXh.js → compact-item-oN96nuBi.js} +1 -1
  91. package/src/assets/web-panel/assets/{createContext-CENpsYHg.js → createContext-okCJXQXa.js} +1 -1
  92. package/src/assets/web-panel/assets/devWarning-BzV6dk1B.js +1 -0
  93. package/src/assets/web-panel/assets/{hasIn-B9NOmk0K.js → hasIn-pcHm--4o.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-VDFbduzG.js → index-5aO2V0V4.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-Yb9EfUnY.js → index-BDR2mi1p.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-BpmTl8QC.js → index-BEtzqJw3.js} +1 -1
  97. package/src/assets/web-panel/assets/index-BFrAwXHp.js +1 -0
  98. package/src/assets/web-panel/assets/{index-nio98wGC.js → index-BHJIfdCV.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-t6hXF2Cw.js → index-BUTyx-Lk.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CRhEJ8JO.js → index-BUUJ2WfG.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-BvQq6gX2.js → index-BZKk4Lnm.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-BkoqtJzV.js → index-BeAWCGEK.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-7IMjHwGU.js → index-Bht9n8Sm.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-B45osqnZ.js → index-BjVIZfdA.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-CmNCDN5t.js → index-Bl6N7ZyX.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-BXzMKVLp.js → index-BnhHxZul.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-U_snupDl.js → index-BuME9k4Y.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-Dg0v-CXZ.js → index-C0rfJBU3.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CKNt2vfs.js → index-C4ravjdv.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-BxvNtndl.js → index-CAQktO-6.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CvTJ-x6b.js → index-CK0H3pQW.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DAMKhjtT.js → index-CQ1ZzJjN.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-mTK_ZHhE.js → index-CQYes2mk.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-76GMjcbq.js → index-CWUJlCvK.js} +3 -3
  115. package/src/assets/web-panel/assets/{index-CwkK9Kl2.js → index-CXhezK4d.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-D_rZCxxI.js → index-Cc_MkksW.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BramLq29.js → index-CopGaCI_.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-CXRknr9W.js → index-Cs1fGk1Z.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-DANoIqXP.js → index-D0bfypsF.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-ClEy1v1o.js → index-D1efSh1X.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-Bvj07Ab1.js → index-DBcKBb1E.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-CxVfbuj9.js → index-DC0bqrqV.js} +1 -1
  123. package/src/assets/web-panel/assets/index-DJQFP47u.js +1 -0
  124. package/src/assets/web-panel/assets/{index-CTuX_MU0.js → index-DfL10EcN.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-C9d8hdgY.js → index-DtsyPnF5.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CAXouogg.js → index-Rk0X8lVz.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-Y_UKQpsV.js → index-T3QE8LuV.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DqLC0iE4.js → index-_SaFHNsG.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-Kp2AETEw.js → index-jAY55MSx.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-DsPDEHOg.js → index-mB1UV7wA.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-KDCuTzdx.js → index-nMqLdwao.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-B0C6zl0y.js → index-vW0lwj0Y.js} +1 -1
  133. package/src/assets/web-panel/assets/{initDefaultProps-GTwJVIOz.js → initDefaultProps-CG1jyiI7.js} +1 -1
  134. package/src/assets/web-panel/assets/{motion-BJQLsPx8.js → motion-C8BYa98D.js} +1 -1
  135. package/src/assets/web-panel/assets/{move-DVQM0bdG.js → move-D1hqwitW.js} +1 -1
  136. package/src/assets/web-panel/assets/{mtc-parser-CMXI1I2y.js → mtc-parser-C2lol8rp.js} +1 -1
  137. package/src/assets/web-panel/assets/{omit-CAc8MDw9.js → omit-Ct6Zghfi.js} +1 -1
  138. package/src/assets/web-panel/assets/{pickAttrs-BgqzoyP7.js → pickAttrs-CSYbYfdc.js} +1 -1
  139. package/src/assets/web-panel/assets/{placementArrow-B9ebCdRy.js → placementArrow-WCk8di0z.js} +1 -1
  140. package/src/assets/web-panel/assets/{responsiveObserve-Dy8D0D3n.js → responsiveObserve-CEC8CZ-3.js} +1 -1
  141. package/src/assets/web-panel/assets/{slide-Bcrc8J39.js → slide-BsXyd7Lq.js} +1 -1
  142. package/src/assets/web-panel/assets/{statusUtils-CDW6FOlc.js → statusUtils-tDKldiUT.js} +1 -1
  143. package/src/assets/web-panel/assets/{styleChecker-CWhJrDON.js → styleChecker-BIS2unhx.js} +1 -1
  144. package/src/assets/web-panel/assets/{useFlexGapSupport-C82c33XI.js → useFlexGapSupport-yFTVMDUv.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFs-A6m--mih.js → useFs-CZYbJwkO.js} +1 -1
  146. package/src/assets/web-panel/assets/{usePersonalDataHub-m-1laJY5.js → usePersonalDataHub-sbEHRLAM.js} +1 -1
  147. package/src/assets/web-panel/assets/{vnode-CL9oKKRa.js → vnode-BVjeSEQK.js} +1 -1
  148. package/src/assets/web-panel/assets/{zoom-DrOyaof3.js → zoom-BZKVvEZ6.js} +1 -1
  149. package/src/assets/web-panel/index.html +1 -1
  150. package/src/data/changelog.json +7 -2
  151. package/src/lib/background-session-transport.js +24 -2
  152. package/src/lib/governance-coverage.js +179 -0
  153. package/src/lib/packer/smoke-runner.js +85 -15
  154. package/src/lib/protocol-replay.js +153 -0
  155. package/src/runtime/agent-core.js +35 -0
  156. package/src/assets/web-panel/assets/MarkdownRenderer-DUjyuVB3.js +0 -1
  157. package/src/assets/web-panel/assets/Terminal-CMXLqQKF.js +0 -3
  158. package/src/assets/web-panel/assets/devWarning-XvRaIiyt.js +0 -1
  159. package/src/assets/web-panel/assets/index-CbO1zSXV.js +0 -1
  160. package/src/assets/web-panel/assets/index-aCu2gbUb.js +0 -1
@@ -1 +1 @@
1
- import{t as s}from"./index-76GMjcbq.js";const i=Object.freeze({ok:!1,config:{enabled:!1,batch_interval_seconds:3600,namespace_prefix:"",issuer:""},staging:{count:0,malformed:0,oldest_queued_at:null},batches:{count:0,last_batch_id:null,last_closed_at:null,last_tree_size:null,last_tree_head_id:null}});function n(r,t=0){return typeof r=="number"&&Number.isFinite(r)?r:t}function a(r,t=""){return typeof r=="string"?r:t}function f(r){const t=JSON.parse(JSON.stringify(i)),e=r&&typeof r=="object"&&!Array.isArray(r)?r:s(r);return!e||typeof e!="object"||Array.isArray(e)||(t.ok=!0,e.config&&typeof e.config=="object"&&(t.config.enabled=e.config.enabled===!0,t.config.batch_interval_seconds=n(e.config.batch_interval_seconds,t.config.batch_interval_seconds),t.config.namespace_prefix=a(e.config.namespace_prefix),t.config.issuer=a(e.config.issuer)),e.staging&&typeof e.staging=="object"&&(t.staging.count=n(e.staging.count,0),t.staging.malformed=n(e.staging.malformed,0),t.staging.oldest_queued_at=e.staging.oldest_queued_at??null),e.batches&&typeof e.batches=="object"&&(t.batches.count=n(e.batches.count,0),t.batches.last_batch_id=e.batches.last_batch_id??null,t.batches.last_closed_at=e.batches.last_closed_at??null,t.batches.last_tree_size=e.batches.last_tree_size??null,t.batches.last_tree_head_id=e.batches.last_tree_head_id??null)),t}const o=Object.freeze({ok:!1,exists:!1,stateFile:"",lastSeq:0,lastFingerprint:null,lastPublishedAt:null,historyCount:0,history:[]});function l(r){if(!r||typeof r!="object")return null;const t=a(r.seq);return t?{key:t,seq:t,namespace:a(r.namespace),treeHeadId:a(r.tree_head_id),rootHash:a(r.root_hash),treeSize:n(r.tree_size,0),fingerprint:a(r.fingerprint),publishedAt:a(r.published_at),batchDir:a(r.batch_dir)}:null}function _(r){const t=JSON.parse(JSON.stringify(o)),e=s(r);return!e||typeof e!="object"||Array.isArray(e)||(t.ok=e.ok===!0,t.exists=e.exists===!0,t.stateFile=a(e.state_file),!t.exists)||(t.lastSeq=n(e.last_seq,0),t.lastFingerprint=e.last_fingerprint??null,t.lastPublishedAt=e.last_published_at??null,t.historyCount=n(e.history_count,0),Array.isArray(e.history)&&(t.history=e.history.map(l).filter(Boolean))),t}const u=Object.freeze({ok:!1,code:"",recoverable:!1,leaf:null,treeHead:null,raw:null});function d(r){const t=JSON.parse(JSON.stringify(u)),e=s(r);return!e||typeof e!="object"||Array.isArray(e)||(t.raw=e,t.ok=e.ok===!0,t.code=a(e.code,e.reason||""),t.recoverable=e.recoverable===!0,e.leaf&&typeof e.leaf=="object"&&(t.leaf=e.leaf),e.treeHead&&typeof e.treeHead=="object"&&(t.treeHead=e.treeHead)),t}function h(r){return typeof r!="number"||!Number.isFinite(r)||r<=0?"—":r<60?`${r}s`:r<3600?`${Math.round(r/60)}min`:`${Math.round(r/3600)}h`}function b(r){if(!r)return"—";const t=new Date(r);return isNaN(t.getTime())?r:t.toLocaleString("zh-CN",{hour12:!1})}function g(r){if(!r)return"—";const t=Date.parse(r);if(isNaN(t))return r;const e=Math.round((Date.now()-t)/1e3);return e<60?`${e}s 前`:e<3600?`${Math.round(e/60)}min 前`:e<86400?`${Math.round(e/3600)}h 前`:`${Math.round(e/86400)}d 前`}export{f as a,_ as b,b as c,h as d,g as f,d as p};
1
+ import{t as s}from"./index-CWUJlCvK.js";const i=Object.freeze({ok:!1,config:{enabled:!1,batch_interval_seconds:3600,namespace_prefix:"",issuer:""},staging:{count:0,malformed:0,oldest_queued_at:null},batches:{count:0,last_batch_id:null,last_closed_at:null,last_tree_size:null,last_tree_head_id:null}});function n(r,t=0){return typeof r=="number"&&Number.isFinite(r)?r:t}function a(r,t=""){return typeof r=="string"?r:t}function f(r){const t=JSON.parse(JSON.stringify(i)),e=r&&typeof r=="object"&&!Array.isArray(r)?r:s(r);return!e||typeof e!="object"||Array.isArray(e)||(t.ok=!0,e.config&&typeof e.config=="object"&&(t.config.enabled=e.config.enabled===!0,t.config.batch_interval_seconds=n(e.config.batch_interval_seconds,t.config.batch_interval_seconds),t.config.namespace_prefix=a(e.config.namespace_prefix),t.config.issuer=a(e.config.issuer)),e.staging&&typeof e.staging=="object"&&(t.staging.count=n(e.staging.count,0),t.staging.malformed=n(e.staging.malformed,0),t.staging.oldest_queued_at=e.staging.oldest_queued_at??null),e.batches&&typeof e.batches=="object"&&(t.batches.count=n(e.batches.count,0),t.batches.last_batch_id=e.batches.last_batch_id??null,t.batches.last_closed_at=e.batches.last_closed_at??null,t.batches.last_tree_size=e.batches.last_tree_size??null,t.batches.last_tree_head_id=e.batches.last_tree_head_id??null)),t}const o=Object.freeze({ok:!1,exists:!1,stateFile:"",lastSeq:0,lastFingerprint:null,lastPublishedAt:null,historyCount:0,history:[]});function l(r){if(!r||typeof r!="object")return null;const t=a(r.seq);return t?{key:t,seq:t,namespace:a(r.namespace),treeHeadId:a(r.tree_head_id),rootHash:a(r.root_hash),treeSize:n(r.tree_size,0),fingerprint:a(r.fingerprint),publishedAt:a(r.published_at),batchDir:a(r.batch_dir)}:null}function _(r){const t=JSON.parse(JSON.stringify(o)),e=s(r);return!e||typeof e!="object"||Array.isArray(e)||(t.ok=e.ok===!0,t.exists=e.exists===!0,t.stateFile=a(e.state_file),!t.exists)||(t.lastSeq=n(e.last_seq,0),t.lastFingerprint=e.last_fingerprint??null,t.lastPublishedAt=e.last_published_at??null,t.historyCount=n(e.history_count,0),Array.isArray(e.history)&&(t.history=e.history.map(l).filter(Boolean))),t}const u=Object.freeze({ok:!1,code:"",recoverable:!1,leaf:null,treeHead:null,raw:null});function d(r){const t=JSON.parse(JSON.stringify(u)),e=s(r);return!e||typeof e!="object"||Array.isArray(e)||(t.raw=e,t.ok=e.ok===!0,t.code=a(e.code,e.reason||""),t.recoverable=e.recoverable===!0,e.leaf&&typeof e.leaf=="object"&&(t.leaf=e.leaf),e.treeHead&&typeof e.treeHead=="object"&&(t.treeHead=e.treeHead)),t}function h(r){return typeof r!="number"||!Number.isFinite(r)||r<=0?"—":r<60?`${r}s`:r<3600?`${Math.round(r/60)}min`:`${Math.round(r/3600)}h`}function b(r){if(!r)return"—";const t=new Date(r);return isNaN(t.getTime())?r:t.toLocaleString("zh-CN",{hour12:!1})}function g(r){if(!r)return"—";const t=Date.parse(r);if(isNaN(t))return r;const e=Math.round((Date.now()-t)/1e3);return e<60?`${e}s 前`:e<3600?`${Math.round(e/60)}min 前`:e<86400?`${Math.round(e/3600)}h 前`:`${Math.round(e/86400)}d 前`}export{f as a,_ as b,b as c,h as d,g as f,d as p};
@@ -1 +1 @@
1
- import{h as s}from"./index-76GMjcbq.js";function a(n,t){const e=s({},n);for(let o=0;o<t.length;o+=1){const r=t[o];delete e[r]}return e}export{a as o};
1
+ import{h as s}from"./index-CWUJlCvK.js";function a(n,t){const e=s({},n);for(let o=0;o<t.length;o+=1){const r=t[o];delete e[r]}return e}export{a as o};
@@ -1,4 +1,4 @@
1
- import{h as i}from"./index-76GMjcbq.js";const l=`accept acceptcharset accesskey action allowfullscreen allowtransparency
1
+ import{h as i}from"./index-CWUJlCvK.js";const l=`accept acceptcharset accesskey action allowfullscreen allowtransparency
2
2
  alt async autocomplete autofocus autoplay capture cellpadding cellspacing challenge
3
3
  charset checked classid classname colspan cols content contenteditable contextmenu
4
4
  controls coords crossorigin data datetime default defer dir disabled download draggable
@@ -1 +1 @@
1
- import{h as i}from"./index-76GMjcbq.js";const L=(e,o,t,n,p)=>{const r=e/2,a=0,s=r,m=t*1/Math.sqrt(2),h=r-t*(1-1/Math.sqrt(2)),b=r-o*(1/Math.sqrt(2)),u=t*(Math.sqrt(2)-1)+o*(1/Math.sqrt(2)),g=2*r-b,w=u,d=2*r-m,c=h,A=2*r-a,x=s,v=r*Math.sqrt(2)+t*(Math.sqrt(2)-2),$=t*(Math.sqrt(2)-1);return{pointerEvents:"none",width:e,height:e,overflow:"hidden","&::after":{content:'""',position:"absolute",width:v,height:v,bottom:0,insetInline:0,margin:"auto",borderRadius:{_skip_check_:!0,value:`0 0 ${o}px 0`},transform:"translateY(50%) rotate(-135deg)",boxShadow:p,zIndex:0,background:"transparent"},"&::before":{position:"absolute",bottom:0,insetInlineStart:0,width:e,height:e/2,background:n,clipPath:{_multi_value_:!0,value:[`polygon(${$}px 100%, 50% ${$}px, ${2*r-$}px 100%, ${$}px 100%)`,`path('M ${a} ${s} A ${t} ${t} 0 0 0 ${m} ${h} L ${b} ${u} A ${o} ${o} 0 0 1 ${g} ${w} L ${d} ${c} A ${t} ${t} 0 0 0 ${A} ${x} Z')`]},content:'""'}}},f={adjustX:1,adjustY:1},l=[0,0],j={left:{points:["cr","cl"],overflow:f,offset:[-4,0],targetOffset:l},right:{points:["cl","cr"],overflow:f,offset:[4,0],targetOffset:l},top:{points:["bc","tc"],overflow:f,offset:[0,-4],targetOffset:l},bottom:{points:["tc","bc"],overflow:f,offset:[0,4],targetOffset:l},topLeft:{points:["bl","tl"],overflow:f,offset:[0,-4],targetOffset:l},leftTop:{points:["tr","tl"],overflow:f,offset:[-4,0],targetOffset:l},topRight:{points:["br","tr"],overflow:f,offset:[0,-4],targetOffset:l},rightTop:{points:["tl","tr"],overflow:f,offset:[4,0],targetOffset:l},bottomRight:{points:["tr","br"],overflow:f,offset:[0,4],targetOffset:l},rightBottom:{points:["bl","br"],overflow:f,offset:[4,0],targetOffset:l},bottomLeft:{points:["tl","bl"],overflow:f,offset:[0,4],targetOffset:l},leftBottom:{points:["br","bl"],overflow:f,offset:[-4,0],targetOffset:l}},M={adjustX:1,adjustY:1},O={adjustX:0,adjustY:0},T=[0,0];function k(e){return typeof e=="boolean"?e?M:O:i(i({},O),e)}function Y(e){const{arrowWidth:o=4,horizontalArrowShift:t=16,verticalArrowShift:n=8,autoAdjustOverflow:p,arrowPointAtCenter:r}=e,a={left:{points:["cr","cl"],offset:[-4,0]},right:{points:["cl","cr"],offset:[4,0]},top:{points:["bc","tc"],offset:[0,-4]},bottom:{points:["tc","bc"],offset:[0,4]},topLeft:{points:["bl","tc"],offset:[-(t+o),-4]},leftTop:{points:["tr","cl"],offset:[-4,-(n+o)]},topRight:{points:["br","tc"],offset:[t+o,-4]},rightTop:{points:["tl","cr"],offset:[4,-(n+o)]},bottomRight:{points:["tr","bc"],offset:[t+o,4]},rightBottom:{points:["bl","cr"],offset:[4,n+o]},bottomLeft:{points:["tl","bc"],offset:[-(t+o),4]},leftBottom:{points:["br","cl"],offset:[-4,n+o]}};return Object.keys(a).forEach(s=>{a[s]=r?i(i({},a[s]),{overflow:k(p),targetOffset:T}):i(i({},j[s]),{overflow:k(p)}),a[s].ignoreShake=!0}),a}function _(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return e.map(t=>`${o}${t}`).join(",")}const X=8;function B(e){const o=X,{sizePopupArrow:t,contentRadius:n,borderRadiusOuter:p,limitVerticalRadius:r}=e,a=t/2-Math.ceil(p*(Math.sqrt(2)-1)),s=(n>12?n+2:12)-a,m=r?o-a:s;return{dropdownArrowOffset:s,dropdownArrowOffsetVertical:m}}function q(e,o){const{componentCls:t,sizePopupArrow:n,marginXXS:p,borderRadiusXS:r,borderRadiusOuter:a,boxShadowPopoverArrow:s}=e,{colorBg:m,showArrowCls:h,contentRadius:b=e.borderRadiusLG,limitVerticalRadius:u}=o,{dropdownArrowOffsetVertical:g,dropdownArrowOffset:w}=B({sizePopupArrow:n,contentRadius:b,borderRadiusOuter:a,limitVerticalRadius:u}),d=n/2+p;return{[t]:{[`${t}-arrow`]:[i(i({position:"absolute",zIndex:1,display:"block"},L(n,r,a,m,s)),{"&:before":{background:m}})],[[`&-placement-top ${t}-arrow`,`&-placement-topLeft ${t}-arrow`,`&-placement-topRight ${t}-arrow`].join(",")]:{bottom:0,transform:"translateY(100%) rotate(180deg)"},[`&-placement-top ${t}-arrow`]:{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(100%) rotate(180deg)"},[`&-placement-topLeft ${t}-arrow`]:{left:{_skip_check_:!0,value:w}},[`&-placement-topRight ${t}-arrow`]:{right:{_skip_check_:!0,value:w}},[[`&-placement-bottom ${t}-arrow`,`&-placement-bottomLeft ${t}-arrow`,`&-placement-bottomRight ${t}-arrow`].join(",")]:{top:0,transform:"translateY(-100%)"},[`&-placement-bottom ${t}-arrow`]:{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(-100%)"},[`&-placement-bottomLeft ${t}-arrow`]:{left:{_skip_check_:!0,value:w}},[`&-placement-bottomRight ${t}-arrow`]:{right:{_skip_check_:!0,value:w}},[[`&-placement-left ${t}-arrow`,`&-placement-leftTop ${t}-arrow`,`&-placement-leftBottom ${t}-arrow`].join(",")]:{right:{_skip_check_:!0,value:0},transform:"translateX(100%) rotate(90deg)"},[`&-placement-left ${t}-arrow`]:{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(100%) rotate(90deg)"},[`&-placement-leftTop ${t}-arrow`]:{top:g},[`&-placement-leftBottom ${t}-arrow`]:{bottom:g},[[`&-placement-right ${t}-arrow`,`&-placement-rightTop ${t}-arrow`,`&-placement-rightBottom ${t}-arrow`].join(",")]:{left:{_skip_check_:!0,value:0},transform:"translateX(-100%) rotate(-90deg)"},[`&-placement-right ${t}-arrow`]:{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(-100%) rotate(-90deg)"},[`&-placement-rightTop ${t}-arrow`]:{top:g},[`&-placement-rightBottom ${t}-arrow`]:{bottom:g},[_(["&-placement-topLeft","&-placement-top","&-placement-topRight"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingBottom:d},[_(["&-placement-bottomLeft","&-placement-bottom","&-placement-bottomRight"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingTop:d},[_(["&-placement-leftTop","&-placement-left","&-placement-leftBottom"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingRight:{_skip_check_:!0,value:d}},[_(["&-placement-rightTop","&-placement-right","&-placement-rightBottom"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingLeft:{_skip_check_:!0,value:d}}}}}export{X as M,Y as a,B as b,q as g,j as p,L as r};
1
+ import{h as i}from"./index-CWUJlCvK.js";const L=(e,o,t,n,p)=>{const r=e/2,a=0,s=r,m=t*1/Math.sqrt(2),h=r-t*(1-1/Math.sqrt(2)),b=r-o*(1/Math.sqrt(2)),u=t*(Math.sqrt(2)-1)+o*(1/Math.sqrt(2)),g=2*r-b,w=u,d=2*r-m,c=h,A=2*r-a,x=s,v=r*Math.sqrt(2)+t*(Math.sqrt(2)-2),$=t*(Math.sqrt(2)-1);return{pointerEvents:"none",width:e,height:e,overflow:"hidden","&::after":{content:'""',position:"absolute",width:v,height:v,bottom:0,insetInline:0,margin:"auto",borderRadius:{_skip_check_:!0,value:`0 0 ${o}px 0`},transform:"translateY(50%) rotate(-135deg)",boxShadow:p,zIndex:0,background:"transparent"},"&::before":{position:"absolute",bottom:0,insetInlineStart:0,width:e,height:e/2,background:n,clipPath:{_multi_value_:!0,value:[`polygon(${$}px 100%, 50% ${$}px, ${2*r-$}px 100%, ${$}px 100%)`,`path('M ${a} ${s} A ${t} ${t} 0 0 0 ${m} ${h} L ${b} ${u} A ${o} ${o} 0 0 1 ${g} ${w} L ${d} ${c} A ${t} ${t} 0 0 0 ${A} ${x} Z')`]},content:'""'}}},f={adjustX:1,adjustY:1},l=[0,0],j={left:{points:["cr","cl"],overflow:f,offset:[-4,0],targetOffset:l},right:{points:["cl","cr"],overflow:f,offset:[4,0],targetOffset:l},top:{points:["bc","tc"],overflow:f,offset:[0,-4],targetOffset:l},bottom:{points:["tc","bc"],overflow:f,offset:[0,4],targetOffset:l},topLeft:{points:["bl","tl"],overflow:f,offset:[0,-4],targetOffset:l},leftTop:{points:["tr","tl"],overflow:f,offset:[-4,0],targetOffset:l},topRight:{points:["br","tr"],overflow:f,offset:[0,-4],targetOffset:l},rightTop:{points:["tl","tr"],overflow:f,offset:[4,0],targetOffset:l},bottomRight:{points:["tr","br"],overflow:f,offset:[0,4],targetOffset:l},rightBottom:{points:["bl","br"],overflow:f,offset:[4,0],targetOffset:l},bottomLeft:{points:["tl","bl"],overflow:f,offset:[0,4],targetOffset:l},leftBottom:{points:["br","bl"],overflow:f,offset:[-4,0],targetOffset:l}},M={adjustX:1,adjustY:1},O={adjustX:0,adjustY:0},T=[0,0];function k(e){return typeof e=="boolean"?e?M:O:i(i({},O),e)}function Y(e){const{arrowWidth:o=4,horizontalArrowShift:t=16,verticalArrowShift:n=8,autoAdjustOverflow:p,arrowPointAtCenter:r}=e,a={left:{points:["cr","cl"],offset:[-4,0]},right:{points:["cl","cr"],offset:[4,0]},top:{points:["bc","tc"],offset:[0,-4]},bottom:{points:["tc","bc"],offset:[0,4]},topLeft:{points:["bl","tc"],offset:[-(t+o),-4]},leftTop:{points:["tr","cl"],offset:[-4,-(n+o)]},topRight:{points:["br","tc"],offset:[t+o,-4]},rightTop:{points:["tl","cr"],offset:[4,-(n+o)]},bottomRight:{points:["tr","bc"],offset:[t+o,4]},rightBottom:{points:["bl","cr"],offset:[4,n+o]},bottomLeft:{points:["tl","bc"],offset:[-(t+o),4]},leftBottom:{points:["br","cl"],offset:[-4,n+o]}};return Object.keys(a).forEach(s=>{a[s]=r?i(i({},a[s]),{overflow:k(p),targetOffset:T}):i(i({},j[s]),{overflow:k(p)}),a[s].ignoreShake=!0}),a}function _(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return e.map(t=>`${o}${t}`).join(",")}const X=8;function B(e){const o=X,{sizePopupArrow:t,contentRadius:n,borderRadiusOuter:p,limitVerticalRadius:r}=e,a=t/2-Math.ceil(p*(Math.sqrt(2)-1)),s=(n>12?n+2:12)-a,m=r?o-a:s;return{dropdownArrowOffset:s,dropdownArrowOffsetVertical:m}}function q(e,o){const{componentCls:t,sizePopupArrow:n,marginXXS:p,borderRadiusXS:r,borderRadiusOuter:a,boxShadowPopoverArrow:s}=e,{colorBg:m,showArrowCls:h,contentRadius:b=e.borderRadiusLG,limitVerticalRadius:u}=o,{dropdownArrowOffsetVertical:g,dropdownArrowOffset:w}=B({sizePopupArrow:n,contentRadius:b,borderRadiusOuter:a,limitVerticalRadius:u}),d=n/2+p;return{[t]:{[`${t}-arrow`]:[i(i({position:"absolute",zIndex:1,display:"block"},L(n,r,a,m,s)),{"&:before":{background:m}})],[[`&-placement-top ${t}-arrow`,`&-placement-topLeft ${t}-arrow`,`&-placement-topRight ${t}-arrow`].join(",")]:{bottom:0,transform:"translateY(100%) rotate(180deg)"},[`&-placement-top ${t}-arrow`]:{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(100%) rotate(180deg)"},[`&-placement-topLeft ${t}-arrow`]:{left:{_skip_check_:!0,value:w}},[`&-placement-topRight ${t}-arrow`]:{right:{_skip_check_:!0,value:w}},[[`&-placement-bottom ${t}-arrow`,`&-placement-bottomLeft ${t}-arrow`,`&-placement-bottomRight ${t}-arrow`].join(",")]:{top:0,transform:"translateY(-100%)"},[`&-placement-bottom ${t}-arrow`]:{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(-100%)"},[`&-placement-bottomLeft ${t}-arrow`]:{left:{_skip_check_:!0,value:w}},[`&-placement-bottomRight ${t}-arrow`]:{right:{_skip_check_:!0,value:w}},[[`&-placement-left ${t}-arrow`,`&-placement-leftTop ${t}-arrow`,`&-placement-leftBottom ${t}-arrow`].join(",")]:{right:{_skip_check_:!0,value:0},transform:"translateX(100%) rotate(90deg)"},[`&-placement-left ${t}-arrow`]:{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(100%) rotate(90deg)"},[`&-placement-leftTop ${t}-arrow`]:{top:g},[`&-placement-leftBottom ${t}-arrow`]:{bottom:g},[[`&-placement-right ${t}-arrow`,`&-placement-rightTop ${t}-arrow`,`&-placement-rightBottom ${t}-arrow`].join(",")]:{left:{_skip_check_:!0,value:0},transform:"translateX(-100%) rotate(-90deg)"},[`&-placement-right ${t}-arrow`]:{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(-100%) rotate(-90deg)"},[`&-placement-rightTop ${t}-arrow`]:{top:g},[`&-placement-rightBottom ${t}-arrow`]:{bottom:g},[_(["&-placement-topLeft","&-placement-top","&-placement-topRight"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingBottom:d},[_(["&-placement-bottomLeft","&-placement-bottom","&-placement-bottomRight"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingTop:d},[_(["&-placement-leftTop","&-placement-left","&-placement-leftBottom"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingRight:{_skip_check_:!0,value:d}},[_(["&-placement-rightTop","&-placement-right","&-placement-rightBottom"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingLeft:{_skip_check_:!0,value:d}}}}}export{X as M,Y as a,B as b,q as g,j as p,L as r};
@@ -1 +1 @@
1
- import{J as o,h}from"./index-76GMjcbq.js";import{b as x}from"./vendor-Bn1JzzAn.js";const v=["xxxl","xxl","xl","lg","md","sm","xs"],p=r=>({xs:`(max-width: ${r.screenXSMax}px)`,sm:`(min-width: ${r.screenSM}px)`,md:`(min-width: ${r.screenMD}px)`,lg:`(min-width: ${r.screenLG}px)`,xl:`(min-width: ${r.screenXL}px)`,xxl:`(min-width: ${r.screenXXL}px)`,xxxl:`{min-width: ${r.screenXXXL}px}`});function w(){const[,r]=o();return x(()=>{const n=p(r.value),i=new Map;let a=-1,c={};return{matchHandlers:{},dispatch(e){return c=e,i.forEach(t=>t(c)),i.size>=1},subscribe(e){return i.size||this.register(),a+=1,i.set(a,e),e(c),a},unsubscribe(e){i.delete(e),i.size||this.unregister()},unregister(){Object.keys(n).forEach(e=>{const t=n[e],s=this.matchHandlers[t];s?.mql.removeListener(s?.listener)}),i.clear()},register(){Object.keys(n).forEach(e=>{const t=n[e],s=l=>{let{matches:m}=l;this.dispatch(h(h({},c),{[e]:m}))},d=window.matchMedia(t);d.addListener(s),this.matchHandlers[t]={mql:d,listener:s},s(d)})},responsiveMap:n}})}export{v as r,w as u};
1
+ import{J as o,h}from"./index-CWUJlCvK.js";import{b as x}from"./vendor-Bn1JzzAn.js";const v=["xxxl","xxl","xl","lg","md","sm","xs"],p=r=>({xs:`(max-width: ${r.screenXSMax}px)`,sm:`(min-width: ${r.screenSM}px)`,md:`(min-width: ${r.screenMD}px)`,lg:`(min-width: ${r.screenLG}px)`,xl:`(min-width: ${r.screenXL}px)`,xxl:`(min-width: ${r.screenXXL}px)`,xxxl:`{min-width: ${r.screenXXXL}px}`});function w(){const[,r]=o();return x(()=>{const n=p(r.value),i=new Map;let a=-1,c={};return{matchHandlers:{},dispatch(e){return c=e,i.forEach(t=>t(c)),i.size>=1},subscribe(e){return i.size||this.register(),a+=1,i.set(a,e),e(c),a},unsubscribe(e){i.delete(e),i.size||this.unregister()},unregister(){Object.keys(n).forEach(e=>{const t=n[e],s=this.matchHandlers[t];s?.mql.removeListener(s?.listener)}),i.clear()},register(){Object.keys(n).forEach(e=>{const t=n[e],s=l=>{let{matches:m}=l;this.dispatch(h(h({},c),{[e]:m}))},d=window.matchMedia(t);d.addListener(s),this.matchHandlers[t]={mql:d,listener:s},s(d)})},responsiveMap:n}})}export{v as r,w as u};
@@ -1,4 +1,4 @@
1
- import{K as n}from"./index-76GMjcbq.js";import{i as e}from"./motion-BJQLsPx8.js";const m=new n("antSlideUpIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1}}),f=new n("antSlideUpOut",{"0%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0}}),c=new n("antSlideDownIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1}}),l=new n("antSlideDownOut",{"0%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0}}),y=new n("antSlideLeftIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1}}),p=new n("antSlideLeftOut",{"0%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0}}),O=new n("antSlideRightIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1}}),d=new n("antSlideRightOut",{"0%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0}}),g={"slide-up":{inKeyframes:m,outKeyframes:f},"slide-down":{inKeyframes:c,outKeyframes:l},"slide-left":{inKeyframes:y,outKeyframes:p},"slide-right":{inKeyframes:O,outKeyframes:d}},K=(t,r)=>{const{antCls:a}=t,i=`${a}-${r}`,{inKeyframes:s,outKeyframes:o}=g[r];return[e(i,s,o,t.motionDurationMid),{[`
1
+ import{K as n}from"./index-CWUJlCvK.js";import{i as e}from"./motion-C8BYa98D.js";const m=new n("antSlideUpIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1}}),f=new n("antSlideUpOut",{"0%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0}}),c=new n("antSlideDownIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1}}),l=new n("antSlideDownOut",{"0%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0}}),y=new n("antSlideLeftIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1}}),p=new n("antSlideLeftOut",{"0%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0}}),O=new n("antSlideRightIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1}}),d=new n("antSlideRightOut",{"0%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0}}),g={"slide-up":{inKeyframes:m,outKeyframes:f},"slide-down":{inKeyframes:c,outKeyframes:l},"slide-left":{inKeyframes:y,outKeyframes:p},"slide-right":{inKeyframes:O,outKeyframes:d}},K=(t,r)=>{const{antCls:a}=t,i=`${a}-${r}`,{inKeyframes:s,outKeyframes:o}=g[r];return[e(i,s,o,t.motionDurationMid),{[`
2
2
  ${i}-enter,
3
3
  ${i}-appear
4
4
  `]:{transform:"scale(0)",transformOrigin:"0% 0%",opacity:0,animationTimingFunction:t.motionEaseOutQuint},[`${i}-leave`]:{animationTimingFunction:t.motionEaseInQuint}}]};export{f as a,c as b,m as c,K as i,l as s};
@@ -1 +1 @@
1
- import{i as e}from"./index-76GMjcbq.js";function r(a,s,t){return e({[`${a}-status-success`]:s==="success",[`${a}-status-warning`]:s==="warning",[`${a}-status-error`]:s==="error",[`${a}-status-validating`]:s==="validating",[`${a}-has-feedback`]:t})}const c=(a,s)=>s||a;export{c as a,r as g};
1
+ import{i as e}from"./index-CWUJlCvK.js";function r(a,s,t){return e({[`${a}-status-success`]:s==="success",[`${a}-status-warning`]:s==="warning",[`${a}-status-error`]:s==="error",[`${a}-status-validating`]:s==="validating",[`${a}-has-feedback`]:t})}const c=(a,s)=>s||a;export{c as a,r as g};
@@ -1 +1 @@
1
- import{B as d}from"./index-76GMjcbq.js";const i=()=>d()&&window.document.documentElement,c=e=>{if(d()&&window.document.documentElement){const t=Array.isArray(e)?e:[e],{documentElement:n}=window.document;return t.some(r=>r in n.style)}return!1},u=(e,t)=>{if(!c(e))return!1;const n=document.createElement("div"),r=n.style[e];return n.style[e]=t,n.style[e]!==r};function s(e,t){return!Array.isArray(e)&&t!==void 0?u(e,t):c(e)}let o;const p=()=>{if(!i())return!1;if(o!==void 0)return o;const e=document.createElement("div");return e.style.display="flex",e.style.flexDirection="column",e.style.rowGap="1px",e.appendChild(document.createElement("div")),e.appendChild(document.createElement("div")),document.body.appendChild(e),o=e.scrollHeight===1,document.body.removeChild(e),o};export{i as c,p as d,s as i};
1
+ import{B as d}from"./index-CWUJlCvK.js";const i=()=>d()&&window.document.documentElement,c=e=>{if(d()&&window.document.documentElement){const t=Array.isArray(e)?e:[e],{documentElement:n}=window.document;return t.some(r=>r in n.style)}return!1},u=(e,t)=>{if(!c(e))return!1;const n=document.createElement("div"),r=n.style[e];return n.style[e]=t,n.style[e]!==r};function s(e,t){return!Array.isArray(e)&&t!==void 0?u(e,t):c(e)}let o;const p=()=>{if(!i())return!1;if(o!==void 0)return o;const e=document.createElement("div");return e.style.display="flex",e.style.flexDirection="column",e.style.rowGap="1px",e.appendChild(document.createElement("div")),e.appendChild(document.createElement("div")),document.body.appendChild(e),o=e.scrollHeight===1,document.body.removeChild(e),o};export{i as c,p as d,s as i};
@@ -1 +1 @@
1
- import{o,s as t}from"./vendor-Bn1JzzAn.js";import{d as s}from"./styleChecker-CWhJrDON.js";const r=(()=>{const e=t(!1);return o(()=>{e.value=s()}),e});export{r as u};
1
+ import{o,s as t}from"./vendor-Bn1JzzAn.js";import{d as s}from"./styleChecker-BIS2unhx.js";const r=(()=>{const e=t(!1);return o(()=>{e.value=s()}),e});export{r as u};
@@ -1 +1 @@
1
- import{u as d}from"./index-76GMjcbq.js";import{u as c}from"./useShellMode-CgR0wCYM.js";function u({accept:l=""}={}){return new Promise(a=>{if(typeof document>"u"){a({canceled:!0,path:null,content:null});return}const n=document.createElement("input");n.type="file",l&&(n.accept=l),n.style.display="none",document.body.appendChild(n);let o=!1;const i=()=>{n.parentNode&&n.parentNode.removeChild(n)},r=()=>{if(o)return;o=!0;const e=n.files&&n.files[0];if(!e){i(),a({canceled:!0,path:null,content:null});return}const t=new FileReader;t.onload=()=>{i(),a({canceled:!1,path:e.name,size:e.size,content:typeof t.result=="string"?t.result:""})},t.onerror=()=>{i(),a({canceled:!1,path:e.name,size:e.size,content:null,reason:"read_failed"})},t.readAsText(e)};n.addEventListener("change",r),n.click()})}function f(l,{defaultPath:a="download.txt"}={}){if(typeof document>"u")return{canceled:!0,path:null};const n=new Blob([l],{type:"text/plain"}),o=URL.createObjectURL(n),i=document.createElement("a");return i.href=o,i.download=a,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(o),{canceled:!1,path:a}}function p(l){if(!Array.isArray(l))return"";const a=[];for(const n of l)if(Array.isArray(n.extensions))for(const o of n.extensions)a.push(`.${o.replace(/^\./,"")}`);return a.join(",")}function m(){const l=d();async function a(r={}){if(c().isEmbedded){const e=await l.sendRaw({type:"fs.openDialog",title:r.title,filters:r.filters},6e4);if(e&&e.ok===!1)throw new Error(e.error||"fs.openDialog failed");const t=e?.result??e;return{canceled:!!t.canceled,path:t.path??null,content:t.content??null,size:t.size,reason:t.reason}}return u({accept:p(r.filters)})}async function n(r,e={}){if(typeof r!="string")throw new Error("content must be a string");if(c().isEmbedded){const t=await l.sendRaw({type:"fs.saveDialog",title:e.title,defaultPath:e.defaultPath,filters:e.filters,content:r},6e4);if(t&&t.ok===!1)throw new Error(t.error||"fs.saveDialog failed");const s=t?.result??t;return{canceled:!!s.canceled,path:s.path??null}}return f(r,{defaultPath:e.defaultPath})}async function o(r,e={}){const t=JSON.stringify(r,null,2),s={...e,defaultPath:e.defaultPath||"data.json",filters:e.filters||[{name:"JSON",extensions:["json"]}]};return n(t,s)}async function i(r={}){if(!c().isEmbedded)return{canceled:!0,path:null,initialized:!1,unsupported:!0};const e=await l.sendRaw({type:"fs.openDirectory",title:r.title},6e4);if(e&&e.ok===!1)throw new Error(e.error||"fs.openDirectory failed");const t=e?.result??e;return{canceled:!!t.canceled,path:t.path??null,initialized:!!t.initialized}}return{pickFileText:a,saveText:n,saveJson:o,pickDirectory:i}}export{m as u};
1
+ import{u as d}from"./index-CWUJlCvK.js";import{u as c}from"./useShellMode-CgR0wCYM.js";function u({accept:l=""}={}){return new Promise(a=>{if(typeof document>"u"){a({canceled:!0,path:null,content:null});return}const n=document.createElement("input");n.type="file",l&&(n.accept=l),n.style.display="none",document.body.appendChild(n);let o=!1;const i=()=>{n.parentNode&&n.parentNode.removeChild(n)},r=()=>{if(o)return;o=!0;const e=n.files&&n.files[0];if(!e){i(),a({canceled:!0,path:null,content:null});return}const t=new FileReader;t.onload=()=>{i(),a({canceled:!1,path:e.name,size:e.size,content:typeof t.result=="string"?t.result:""})},t.onerror=()=>{i(),a({canceled:!1,path:e.name,size:e.size,content:null,reason:"read_failed"})},t.readAsText(e)};n.addEventListener("change",r),n.click()})}function f(l,{defaultPath:a="download.txt"}={}){if(typeof document>"u")return{canceled:!0,path:null};const n=new Blob([l],{type:"text/plain"}),o=URL.createObjectURL(n),i=document.createElement("a");return i.href=o,i.download=a,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(o),{canceled:!1,path:a}}function p(l){if(!Array.isArray(l))return"";const a=[];for(const n of l)if(Array.isArray(n.extensions))for(const o of n.extensions)a.push(`.${o.replace(/^\./,"")}`);return a.join(",")}function m(){const l=d();async function a(r={}){if(c().isEmbedded){const e=await l.sendRaw({type:"fs.openDialog",title:r.title,filters:r.filters},6e4);if(e&&e.ok===!1)throw new Error(e.error||"fs.openDialog failed");const t=e?.result??e;return{canceled:!!t.canceled,path:t.path??null,content:t.content??null,size:t.size,reason:t.reason}}return u({accept:p(r.filters)})}async function n(r,e={}){if(typeof r!="string")throw new Error("content must be a string");if(c().isEmbedded){const t=await l.sendRaw({type:"fs.saveDialog",title:e.title,defaultPath:e.defaultPath,filters:e.filters,content:r},6e4);if(t&&t.ok===!1)throw new Error(t.error||"fs.saveDialog failed");const s=t?.result??t;return{canceled:!!s.canceled,path:s.path??null}}return f(r,{defaultPath:e.defaultPath})}async function o(r,e={}){const t=JSON.stringify(r,null,2),s={...e,defaultPath:e.defaultPath||"data.json",filters:e.filters||[{name:"JSON",extensions:["json"]}]};return n(t,s)}async function i(r={}){if(!c().isEmbedded)return{canceled:!0,path:null,initialized:!1,unsupported:!0};const e=await l.sendRaw({type:"fs.openDirectory",title:r.title},6e4);if(e&&e.ok===!1)throw new Error(e.error||"fs.openDirectory failed");const t=e?.result??e;return{canceled:!!t.canceled,path:t.path??null,initialized:!!t.initialized}}return{pickFileText:a,saveText:n,saveJson:o,pickDirectory:i}}export{m as u};
@@ -1 +1 @@
1
- import{u as f}from"./index-76GMjcbq.js";function d(n){if(!n)return n;if(n.error)throw new Error(n.error);return n.result!==void 0?n.result:n}function p(n,t,a,e,r){return typeof n.onMessage!="function"||typeof n.sendRaw!="function"?n.sendRaw({type:t,...a},r).then(d):new Promise((u,s)=>{const l=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,w=`${t}.event`,g=`${t}.end`;let c=!1,y=()=>{};const o=(i,b)=>{if(!c){c=!0,clearTimeout(m);try{y()}catch{}i(b)}},m=setTimeout(()=>{o(s,new Error(`stream timeout (${r}ms): ${t}`))},r),h=n.onMessage(i=>{if(!(c||!i)&&!(i.id!==l&&i.requestId!==l)){if(i.type===w){if(typeof e=="function")try{e(i.event||i)}catch{}return}if(i.type===g){o(u,d(i));return}i.type==="error"&&o(s,new Error(i.message||"stream error"))}});y=typeof h=="function"?h:()=>{},Promise.resolve(n.sendRaw({id:l,type:t,...a},r)).catch(()=>{})})}function D(){const n=f(),t=(a,e={},r=3e4)=>n.sendRaw({type:a,...e},r).then(d);return{async health(){return await t("personal-data-hub.health",{},8e3)},async stats(){return await t("personal-data-hub.stats",{},8e3)},async listAdapters(){return await t("personal-data-hub.list-adapters",{},5e3)},async pickFile(a={}){try{const e=await n.sendRaw({type:"fs.openDialog",title:a.title,filters:a.filters},6e4),r=e&&e.result!==void 0?e.result:e;return r&&r.ok&&typeof r.filePath=="string"?r.filePath:null}catch{return null}},async adapterReadiness(a){return await t("personal-data-hub.adapter-readiness",Number.isInteger(a)?{timeoutMs:a}:{},15e3)},async syncAdapter(a,e={}){return await t("personal-data-hub.sync-adapter",{name:a,options:e},12e4)},async syncAll(a={}){return await t("personal-data-hub.sync-all",{options:a},6e5)},async registerMock({name:a="mock",count:e=20,seed:r=1}={}){return await t("personal-data-hub.register-mock",{name:a,count:e,seed:r})},async unregister(a){return await t("personal-data-hub.unregister",{name:a})},async ask(a,e={}){return await t("personal-data-hub.ask",{question:a,options:e},18e4)},async queryEvents(a={}){return await t("personal-data-hub.query-events",a,1e4)},async recentAudit(a={}){return await t("personal-data-hub.recent-audit",a,1e4)},async searchEvents(a={}){return await t("personal-data-hub.search-events",a,15e3)},async facetCounts(a={}){return await t("personal-data-hub.facet-counts",a,1e4)},async testEmailAuth(a){return await t("personal-data-hub.test-email-auth",{account:a},3e4)},async registerEmail(a,e={}){return await t("personal-data-hub.register-email",{account:a,opts:e},15e3)},async unregisterEmail(a){return await t("personal-data-hub.unregister-email",{email:a},5e3)},async listEmailAccounts(){return await t("personal-data-hub.list-email-accounts",{},5e3)},async eventDetail(a){return await t("personal-data-hub.event-detail",{eventId:a},5e3)},async syncAdapterStream(a,e={},r){return await p(n,"personal-data-hub.sync-adapter-stream",{name:a,options:e},r,6e5)},async syncAllStream(a={},e){return await p(n,"personal-data-hub.sync-all-stream",{options:a},e,9e5)},async registerAlipay(a,e={}){return await t("personal-data-hub.register-alipay",{account:a,opts:e},15e3)},async unregisterAlipay(a){return await t("personal-data-hub.unregister-alipay",{email:a},5e3)},async listAlipayAccounts(){return await t("personal-data-hub.list-alipay-accounts",{},5e3)},async importAlipayBill({zipPath:a,csvPath:e,zipPassword:r}={}){return await t("personal-data-hub.import-alipay-bill",{zipPath:a,csvPath:e,zipPassword:r},3e5)},async reviewQueueList(a=50){return await t("personal-data-hub.review-queue-list",{limit:a},5e3)},async reviewDecision(a,e){return await t("personal-data-hub.review-decision",{reviewId:a,decision:e},5e3)},async manualMerge(a,e){return await t("personal-data-hub.manual-merge",{aId:a,bId:e},5e3)},async manualUnmerge(a){return await t("personal-data-hub.manual-unmerge",{personId:a},5e3)},async resolverDrain(a=50){return await t("personal-data-hub.resolver-drain",{limit:a},18e4)},async resolverStats(){return await t("personal-data-hub.resolver-stats",{},5e3)},async skillsList(){return await t("personal-data-hub.skills-list",{},5e3)},async runSkill(a,e={}){return await t("personal-data-hub.run-skill",{name:a,options:e},12e4)},async openAichatLogin(a,e={}){return await t("personal-data-hub.aichat-open-login",{vendor:a,opts:e},1e4)},async probeAichatCookies(a,e){return await t("personal-data-hub.aichat-probe-cookies",{vendor:a,cookieHeader:e},1e4)},async registerAichatVendor(a,e,r={}){return await t("personal-data-hub.aichat-register-vendor",{vendor:a,cookies:e,opts:r},3e4)},async rotateAichatLogin(a){return await t("personal-data-hub.aichat-rotate-login",{vendor:a},1e4)},async listAichatAccounts(){return await t("personal-data-hub.list-aichat-accounts",{},5e3)},async unregisterAichat(a){return await t("personal-data-hub.unregister-aichat",{vendor:a},5e3)},async aichatHealthCheckOnce(){return await t("personal-data-hub.aichat-health-check-once",{},3e4)},async probeWechatEnv(){return await t("personal-data-hub.wechat-env-probe",{},15e3)},async registerWechat({account:a,dbPath:e,wechatDataPath:r,fridaOpts:u,keyProviderOverride:s}={}){return await t("personal-data-hub.register-wechat",{account:a,dbPath:e,wechatDataPath:r,fridaOpts:u,keyProviderOverride:s},45e3)},async listWechatAccounts(){return await t("personal-data-hub.list-wechat-accounts",{},5e3)},async unregisterWechat(a){return await t("personal-data-hub.unregister-wechat",{uin:a},5e3)},async bilibiliAdbSync(a={}){return await t("personal-data-hub.bilibili-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bilibiliAdbDoctor(){return await t("personal-data-hub.bilibili-adb-doctor",{},15e3)},async weiboAdbSync(a={}){return await t("personal-data-hub.weibo-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async xhsAdbSync(a={}){return await t("personal-data-hub.xhs-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async toutiaoAdbSync(a={}){return await t("personal-data-hub.toutiao-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},9e4)},async kuaishouAdbSync(a={}){return await t("personal-data-hub.kuaishou-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bridgeDoctor(){return await t("personal-data-hub.bridge-doctor",{},6e4)},async douyinAdbSync(a={}){return await t("personal-data-hub.douyin-adb-sync",{uid:a.uid,limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)}}}export{D as u};
1
+ import{u as f}from"./index-CWUJlCvK.js";function d(n){if(!n)return n;if(n.error)throw new Error(n.error);return n.result!==void 0?n.result:n}function p(n,t,a,e,r){return typeof n.onMessage!="function"||typeof n.sendRaw!="function"?n.sendRaw({type:t,...a},r).then(d):new Promise((u,s)=>{const l=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,w=`${t}.event`,g=`${t}.end`;let c=!1,y=()=>{};const o=(i,b)=>{if(!c){c=!0,clearTimeout(m);try{y()}catch{}i(b)}},m=setTimeout(()=>{o(s,new Error(`stream timeout (${r}ms): ${t}`))},r),h=n.onMessage(i=>{if(!(c||!i)&&!(i.id!==l&&i.requestId!==l)){if(i.type===w){if(typeof e=="function")try{e(i.event||i)}catch{}return}if(i.type===g){o(u,d(i));return}i.type==="error"&&o(s,new Error(i.message||"stream error"))}});y=typeof h=="function"?h:()=>{},Promise.resolve(n.sendRaw({id:l,type:t,...a},r)).catch(()=>{})})}function D(){const n=f(),t=(a,e={},r=3e4)=>n.sendRaw({type:a,...e},r).then(d);return{async health(){return await t("personal-data-hub.health",{},8e3)},async stats(){return await t("personal-data-hub.stats",{},8e3)},async listAdapters(){return await t("personal-data-hub.list-adapters",{},5e3)},async pickFile(a={}){try{const e=await n.sendRaw({type:"fs.openDialog",title:a.title,filters:a.filters},6e4),r=e&&e.result!==void 0?e.result:e;return r&&r.ok&&typeof r.filePath=="string"?r.filePath:null}catch{return null}},async adapterReadiness(a){return await t("personal-data-hub.adapter-readiness",Number.isInteger(a)?{timeoutMs:a}:{},15e3)},async syncAdapter(a,e={}){return await t("personal-data-hub.sync-adapter",{name:a,options:e},12e4)},async syncAll(a={}){return await t("personal-data-hub.sync-all",{options:a},6e5)},async registerMock({name:a="mock",count:e=20,seed:r=1}={}){return await t("personal-data-hub.register-mock",{name:a,count:e,seed:r})},async unregister(a){return await t("personal-data-hub.unregister",{name:a})},async ask(a,e={}){return await t("personal-data-hub.ask",{question:a,options:e},18e4)},async queryEvents(a={}){return await t("personal-data-hub.query-events",a,1e4)},async recentAudit(a={}){return await t("personal-data-hub.recent-audit",a,1e4)},async searchEvents(a={}){return await t("personal-data-hub.search-events",a,15e3)},async facetCounts(a={}){return await t("personal-data-hub.facet-counts",a,1e4)},async testEmailAuth(a){return await t("personal-data-hub.test-email-auth",{account:a},3e4)},async registerEmail(a,e={}){return await t("personal-data-hub.register-email",{account:a,opts:e},15e3)},async unregisterEmail(a){return await t("personal-data-hub.unregister-email",{email:a},5e3)},async listEmailAccounts(){return await t("personal-data-hub.list-email-accounts",{},5e3)},async eventDetail(a){return await t("personal-data-hub.event-detail",{eventId:a},5e3)},async syncAdapterStream(a,e={},r){return await p(n,"personal-data-hub.sync-adapter-stream",{name:a,options:e},r,6e5)},async syncAllStream(a={},e){return await p(n,"personal-data-hub.sync-all-stream",{options:a},e,9e5)},async registerAlipay(a,e={}){return await t("personal-data-hub.register-alipay",{account:a,opts:e},15e3)},async unregisterAlipay(a){return await t("personal-data-hub.unregister-alipay",{email:a},5e3)},async listAlipayAccounts(){return await t("personal-data-hub.list-alipay-accounts",{},5e3)},async importAlipayBill({zipPath:a,csvPath:e,zipPassword:r}={}){return await t("personal-data-hub.import-alipay-bill",{zipPath:a,csvPath:e,zipPassword:r},3e5)},async reviewQueueList(a=50){return await t("personal-data-hub.review-queue-list",{limit:a},5e3)},async reviewDecision(a,e){return await t("personal-data-hub.review-decision",{reviewId:a,decision:e},5e3)},async manualMerge(a,e){return await t("personal-data-hub.manual-merge",{aId:a,bId:e},5e3)},async manualUnmerge(a){return await t("personal-data-hub.manual-unmerge",{personId:a},5e3)},async resolverDrain(a=50){return await t("personal-data-hub.resolver-drain",{limit:a},18e4)},async resolverStats(){return await t("personal-data-hub.resolver-stats",{},5e3)},async skillsList(){return await t("personal-data-hub.skills-list",{},5e3)},async runSkill(a,e={}){return await t("personal-data-hub.run-skill",{name:a,options:e},12e4)},async openAichatLogin(a,e={}){return await t("personal-data-hub.aichat-open-login",{vendor:a,opts:e},1e4)},async probeAichatCookies(a,e){return await t("personal-data-hub.aichat-probe-cookies",{vendor:a,cookieHeader:e},1e4)},async registerAichatVendor(a,e,r={}){return await t("personal-data-hub.aichat-register-vendor",{vendor:a,cookies:e,opts:r},3e4)},async rotateAichatLogin(a){return await t("personal-data-hub.aichat-rotate-login",{vendor:a},1e4)},async listAichatAccounts(){return await t("personal-data-hub.list-aichat-accounts",{},5e3)},async unregisterAichat(a){return await t("personal-data-hub.unregister-aichat",{vendor:a},5e3)},async aichatHealthCheckOnce(){return await t("personal-data-hub.aichat-health-check-once",{},3e4)},async probeWechatEnv(){return await t("personal-data-hub.wechat-env-probe",{},15e3)},async registerWechat({account:a,dbPath:e,wechatDataPath:r,fridaOpts:u,keyProviderOverride:s}={}){return await t("personal-data-hub.register-wechat",{account:a,dbPath:e,wechatDataPath:r,fridaOpts:u,keyProviderOverride:s},45e3)},async listWechatAccounts(){return await t("personal-data-hub.list-wechat-accounts",{},5e3)},async unregisterWechat(a){return await t("personal-data-hub.unregister-wechat",{uin:a},5e3)},async bilibiliAdbSync(a={}){return await t("personal-data-hub.bilibili-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bilibiliAdbDoctor(){return await t("personal-data-hub.bilibili-adb-doctor",{},15e3)},async weiboAdbSync(a={}){return await t("personal-data-hub.weibo-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async xhsAdbSync(a={}){return await t("personal-data-hub.xhs-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async toutiaoAdbSync(a={}){return await t("personal-data-hub.toutiao-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},9e4)},async kuaishouAdbSync(a={}){return await t("personal-data-hub.kuaishou-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bridgeDoctor(){return await t("personal-data-hub.bridge-doctor",{},6e4)},async douyinAdbSync(a={}){return await t("personal-data-hub.douyin-adb-sync",{uid:a.uid,limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)}}}export{D as u};
@@ -1 +1 @@
1
- import{N as i,h as a,w as l}from"./index-76GMjcbq.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-Bn1JzzAn.js";function c(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,u=e;if(Array.isArray(e)&&(u=i(e)[0]),!u)return null;const n=o(u,r,s);return n.props=t?a(a({},n.props),r):n.props,l(typeof n.props.class!="object","class must be string"),n}function V(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(s=>c(s,r,t))}function v(e,r,t){p(o(e,a({},r)),t)}const m=e=>(e||[]).some(r=>g(r)?!(r.type===d||r.type===f&&!m(r.children)):!0)?e:null;function h(e,r,t,s){var u;const n=(u=e[r])===null||u===void 0?void 0:u.call(e,t);return m(n)?n:s?.()}export{h as a,V as b,c,v as t};
1
+ import{N as i,h as a,w as l}from"./index-CWUJlCvK.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-Bn1JzzAn.js";function c(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,u=e;if(Array.isArray(e)&&(u=i(e)[0]),!u)return null;const n=o(u,r,s);return n.props=t?a(a({},n.props),r):n.props,l(typeof n.props.class!="object","class must be string"),n}function V(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(s=>c(s,r,t))}function v(e,r,t){p(o(e,a({},r)),t)}const m=e=>(e||[]).some(r=>g(r)?!(r.type===d||r.type===f&&!m(r.children)):!0)?e:null;function h(e,r,t,s){var u;const n=(u=e[r])===null||u===void 0?void 0:u.call(e,t);return m(n)?n:s?.()}export{h as a,V as b,c,v as t};
@@ -1,4 +1,4 @@
1
- import{K as o}from"./index-76GMjcbq.js";import{i as f}from"./motion-BJQLsPx8.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-CWUJlCvK.js";import{i as f}from"./motion-C8BYa98D.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,7 +8,7 @@
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-76GMjcbq.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-CWUJlCvK.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="./assets/vendor-Bn1JzzAn.js">
13
13
  <link rel="modulepreload" crossorigin href="./assets/icons-DG5UD-6K.js">
14
14
  <link rel="stylesheet" crossorigin href="./assets/index-Cq93VfoF.css">
@@ -3,7 +3,7 @@
3
3
  "releases": [
4
4
  {
5
5
  "productVersion": "Unreleased",
6
- "cliVersion": "0.162.165",
6
+ "cliVersion": "0.162.166",
7
7
  "cliVersions": [
8
8
  "0.4.46",
9
9
  "0.4.51",
@@ -23,11 +23,16 @@
23
23
  "0.162.162",
24
24
  "0.162.163",
25
25
  "0.162.164",
26
- "0.162.165"
26
+ "0.162.165",
27
+ "0.162.166"
27
28
  ],
28
29
  "date": null,
29
30
  "title": "",
30
31
  "sections": [
32
+ {
33
+ "heading": "Added — cc CLI 0.162.166:P1-9「Capability Manifest 与脱敏诊断包」收官——协议文档 CI byte-diff / 离线协议回放 / 治理覆盖率指标(CLI-only npm 发版)",
34
+ "body": "> `chainlesschain` 0.162.165 → **0.162.166** 发 npm `latest`(经 `npm-publish.yml`,`--provenance --access public`)。纯 `packages/cli/src` 增量(新增 3 个 `src/lib` 纯逻辑模块 + 3 个 `scripts/` 离线工具 + 测试);未触 `pdh/lib` → 无 Android cc bundle rollover / 无 USR_VERSION 改动。**只加 npm 脚本 + 离线工具,无新增顶层命令,命令数 175 不变**;默认路径字节不变。本版把 `docs/CLAUDE_CODE_IDE_INCREMENTAL_GAP_ANALYSIS_2026-07-13.md` 的 P1-9 三个剩项全部收口。\n\n- **协议能力文档 CI byte-diff 单源生成**:新增生成器 `scripts/gen-protocol-doc.mjs`(`--out`/`--check`)从唯一源 `capability-manifest.js` `renderProtocolDoc()` 投影出 `docs/cli/PROTOCOL_CAPABILITY_MANIFEST.generated.md`(协议版本 + 可协商 wire 特性表 + 权限模式);npm 脚本 `docs:protocol` / `docs:protocol:check`;`capability-manifest.test.js` 新增 byte-diff 断言(读签入副本 = `renderProtocolDoc()`),manifest 加 wire 字段但未重生成即测试红——drift 不可能 merge 绿。\n- **离线协议回放 + 兼容审计**:新增 `protocol-replay.js`——拿一段录制的 stream-json 会话 + 协商上下文(server×client offer),**无需活体对端**离线①回放到该协商下的线上形态(未通过协商的字段按 field-gate 剥离)②审计录制是否遵守协商(任何帧携带已 gate-OFF 的可协商 wire 字段 = 前向兼容违规,fail-closed)。可 gate 字段集从唯一源 `toFieldGate()` 投影不会漂移;`sessionDigest` 键序无关可 pin golden 录制。离线工具 `scripts/replay-protocol.mjs`(`--replay`/`--audit`,违规 exit 1)+ golden fixture。\n- **治理覆盖率指标(§11.3 验收)**:新增 `governance-coverage.js`——①高风险 Tool Call Ledger/Trace 覆盖率(每个不可逆副作用调用须既有 side-effect-ledger 记录又有 trace span,「高风险」复用唯一源 `classifyToolSideEffect`)②Plugin/MCP/Skill/Hook 溯源可追溯率(外部来源调用须带 source+version+scope+权限决策);`ok` 仅双 100% 才真(fail-closed),给逐条未覆盖项。离线工具 `scripts/coverage-report.mjs`(读 run-summary JSON,任一 gap exit 1,可对录制 run 工件 CI 强制 100%)。"
35
+ },
31
36
  {
32
37
  "heading": "Added — cc CLI 0.162.165:精简项目记忆——`--no-project-memory` 全关 + `CC_PROJECT_MEMORY=lean` 只留入口文件 + IDE 聊天「精简上下文」默认开(CLI-only npm 发版)",
33
38
  "body": "> `chainlesschain` 0.162.164 → **0.162.165** 发 npm `latest`(经 `npm-publish.yml`,`--provenance --access public`)。纯 `packages/cli/src`(+ VS Code 插件设置);未触 `pdh/lib` → 无 Android cc bundle rollover / 无 USR_VERSION 改动。命令面只加 `cc agent --no-project-memory` **标志** + `CC_PROJECT_MEMORY` 环境变量识别,**顶层命令数 175 不变**;默认路径字节不变。动机:文档密集的仓库里 `cc agent` 每轮都把整套项目记忆重发进系统提示(本仓库实测约 12k token/轮),付费模型即真金白银。\n\n- **精简系统提示三态**:`cc agent` 每轮重发的项目记忆现分三档——`full`(默认,不变)/ `lean` / `off`。`--no-project-memory`(全关)跳过整个自动加载的项目记忆层级(`cc.md`/`CLAUDE.md`/`AGENTS.md` 入口 + `CLAUDE.local.md` + `.claude/rules/*` + `.chainlesschain/rules.md`),贯穿 headless `-p` / stream-json / 交互 REPL 全模式;`agent` 需要时仍可用工具自读那些文件。\n- **`CC_PROJECT_MEMORY=lean` 只留入口文件**:保留主入口指令文件(按 `cc.md` > `CLAUDE.md` > `AGENTS.md` 首个命中,优先 `cc.md`),丢掉沉重附属——`CLAUDE.local.md`(个人开发状态)、`.claude/rules/*.md`、`.chainlesschain/rules.md`。本仓库实测项目记忆 ~12k → ~5k token/轮,入口文件保留。遗留 `CC_PROJECT_MEMORY=0`(关指令块、`rules.md` 仍保留)契约完全不变。\n- **IDE 聊天「精简上下文」(随本版 CLI 运行时生效,设置随下次插件发版)**:VS Code 插件新增 `chainlesschain.chat.leanContext`(默认开)→ 面板子进程注入 `CC_PROJECT_MEMORY=lean`。经**环境变量而非 CLI 标志**下发——旧 `cc` 不认时自动回退 full(安全、不会因未知标志报错),终端 `cc` 不受影响。"
@@ -270,12 +270,34 @@ export function connectBackgroundSession(opts) {
270
270
  if (message.type === "hello") {
271
271
  settled = true;
272
272
  clearTimeout(timer);
273
+ // The transport client socket must never be the sole reason its
274
+ // owner's event loop stays alive — real callers are held open by
275
+ // their own handles (attach: stdin/readline; WS bridge: the
276
+ // WebSocket server), both of which already unref their poll timers.
277
+ // A still-open (or half-closed) socket lingering at teardown was
278
+ // pinning vitest's forks-pool worker past its terminate deadline
279
+ // → "Worker exited unexpectedly" flake on CI.
280
+ socket.unref?.();
273
281
  resolve({
274
282
  hello: message,
275
283
  send: (msg) => writeMessage(socket, msg),
276
284
  close: () => {
277
- writeMessage(socket, { type: "detach" });
278
- socket.end();
285
+ // Best-effort graceful detach, then HARD destroy so the client
286
+ // handle is released synchronously. `socket.end()` alone leaves
287
+ // a half-open, still-REFERENCED socket: a prior `send()` (i.e.
288
+ // socket.write) re-refs the handle, undoing the connect-time
289
+ // unref, so end()'s FIN-wait keeps the owner's event loop alive
290
+ // until the peer FINs back. Under CI's 2-fork parallel load that
291
+ // outlived vitest's worker-terminate deadline → "Worker exited
292
+ // unexpectedly" forks-pool flake. destroy() drops the handle now;
293
+ // the worker sees the socket close and finalizes the same as it
294
+ // would on an explicit detach.
295
+ try {
296
+ writeMessage(socket, { type: "detach" });
297
+ } catch {
298
+ /* peer already gone */
299
+ }
300
+ socket.destroy();
279
301
  },
280
302
  });
281
303
  }
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Governance coverage metrics — the last open item of P1-9 ("覆盖率指标") in
3
+ * docs/CLAUDE_CODE_IDE_INCREMENTAL_GAP_ANALYSIS_2026-07-13.md, and the
4
+ * computation behind two §11.3 acceptance targets:
5
+ *
6
+ * - "高风险 Tool Call Ledger/Trace 覆盖率:100%"
7
+ * every high-risk (irreversible side-effecting) tool call MUST have a
8
+ * side-effect-ledger entry AND a trace span.
9
+ * - "Plugin/MCP/Skill/Hook 来源、版本、权限可追溯率:100%"
10
+ * every externally-sourced tool/skill call MUST carry full provenance
11
+ * (source + version + scope + a recorded permission decision).
12
+ *
13
+ * "High-risk" is NOT re-defined here — it is exactly what [[side-effect-ledger.js]]
14
+ * `classifyToolSideEffect` records (the ONE source), so this metric can't drift
15
+ * from what the ledger actually tracks. Provenance rows are the attribution
16
+ * records [[agent-tool-admission.js]] `buildToolAttribution` produces.
17
+ *
18
+ * PURE + deterministic: no fs / process / clock / RNG. The caller gathers a run's
19
+ * tool calls, the op-ids that got a ledger entry, the op-ids that got a trace
20
+ * span, and the attribution records; this reads back coverage ratios + the exact
21
+ * uncovered items so a gap is actionable, not just a number.
22
+ */
23
+
24
+ import { classifyToolSideEffect } from "./side-effect-ledger.js";
25
+
26
+ /** Coverage ratio in [0,1]; an empty population is vacuously fully covered. */
27
+ function ratio(covered, total) {
28
+ return total === 0 ? 1 : covered / total;
29
+ }
30
+
31
+ /** Whether a tool call is high-risk (records an irreversible side effect). */
32
+ export function isHighRiskToolCall(call) {
33
+ return classifyToolSideEffect(call?.tool, call?.args || {}) != null;
34
+ }
35
+
36
+ /**
37
+ * High-risk tool-call ledger + trace coverage (§11.3 metric).
38
+ *
39
+ * @param {object} params
40
+ * @param {Array<{tool:string, args?:object, opId?:string}>} params.toolCalls
41
+ * every tool call the run issued (only high-risk ones enter the denominator)
42
+ * @param {Iterable<string>} [params.ledgerOpIds] op-ids that got a ledger entry
43
+ * @param {Iterable<string>} [params.tracedOpIds] op-ids that got a trace span
44
+ * @returns {{highRiskCount:number, ledgerCovered:number, traceCovered:number,
45
+ * ledgerCoverage:number, traceCoverage:number,
46
+ * uncoveredLedger:object[], uncoveredTrace:object[], ok:boolean}}
47
+ */
48
+ export function computeSideEffectCoverage({
49
+ toolCalls = [],
50
+ ledgerOpIds = [],
51
+ tracedOpIds = [],
52
+ } = {}) {
53
+ const ledgerSet = new Set([...ledgerOpIds].map(String));
54
+ const traceSet = new Set([...tracedOpIds].map(String));
55
+
56
+ const highRisk = [];
57
+ (Array.isArray(toolCalls) ? toolCalls : []).forEach((call, index) => {
58
+ const cls = classifyToolSideEffect(call?.tool, call?.args || {});
59
+ if (!cls) return; // not high-risk — excluded from the denominator
60
+ const opId = call?.opId == null ? null : String(call.opId);
61
+ highRisk.push({
62
+ index,
63
+ tool: String(call?.tool || ""),
64
+ kind: cls.kind,
65
+ opId,
66
+ ledger: opId != null && ledgerSet.has(opId),
67
+ traced: opId != null && traceSet.has(opId),
68
+ });
69
+ });
70
+
71
+ const total = highRisk.length;
72
+ const ledgerCovered = highRisk.filter((h) => h.ledger).length;
73
+ const traceCovered = highRisk.filter((h) => h.traced).length;
74
+ const pick = (h) => ({
75
+ index: h.index,
76
+ tool: h.tool,
77
+ kind: h.kind,
78
+ opId: h.opId,
79
+ });
80
+
81
+ return {
82
+ highRiskCount: total,
83
+ ledgerCovered,
84
+ traceCovered,
85
+ ledgerCoverage: ratio(ledgerCovered, total),
86
+ traceCoverage: ratio(traceCovered, total),
87
+ uncoveredLedger: highRisk.filter((h) => !h.ledger).map(pick),
88
+ uncoveredTrace: highRisk.filter((h) => !h.traced).map(pick),
89
+ ok: total === 0 ? true : ledgerCovered === total && traceCovered === total,
90
+ };
91
+ }
92
+
93
+ /** An attribution is in the provenance denominator if it's externally sourced. */
94
+ function inProvenanceScope(attr) {
95
+ return Boolean(attr?.source) || String(attr?.tier || "") === "extension";
96
+ }
97
+
98
+ /**
99
+ * Plugin/MCP/Skill/Hook provenance traceability coverage (§11.3 metric). Only
100
+ * externally-sourced (or extension-tier) calls enter the denominator; a built-in
101
+ * mvp tool with no source is not part of this metric. An in-scope row is
102
+ * traceable only when source + version + scope are all present AND a permission
103
+ * decision was recorded (`admitted` is not null).
104
+ *
105
+ * @param {Array<object>} attributions buildToolAttribution() records
106
+ * @returns {{total:number, traceable:number, coverage:number,
107
+ * untraceable:Array<{index:number, tool:(string|null), missing:string[]}>,
108
+ * ok:boolean}}
109
+ */
110
+ export function computeProvenanceCoverage(attributions = []) {
111
+ const rows = [];
112
+ (Array.isArray(attributions) ? attributions : []).forEach((attr, index) => {
113
+ if (!inProvenanceScope(attr)) return;
114
+ const missing = [];
115
+ if (!attr?.source) missing.push("source");
116
+ if (!attr?.version) missing.push("version");
117
+ if (!attr?.scope) missing.push("scope");
118
+ if (attr?.admitted == null) missing.push("permission");
119
+ rows.push({
120
+ index,
121
+ tool: attr?.tool ?? null,
122
+ traceable: missing.length === 0,
123
+ missing,
124
+ });
125
+ });
126
+
127
+ const total = rows.length;
128
+ const traceable = rows.filter((r) => r.traceable).length;
129
+ return {
130
+ total,
131
+ traceable,
132
+ coverage: ratio(traceable, total),
133
+ untraceable: rows.filter((r) => !r.traceable),
134
+ ok: total === 0 ? true : traceable === total,
135
+ };
136
+ }
137
+
138
+ /** Format a ratio in [0,1] as a whole-or-1-decimal percentage string. */
139
+ function pct(r) {
140
+ const v = r * 100;
141
+ return (Number.isInteger(v) ? v.toFixed(0) : v.toFixed(1)) + "%";
142
+ }
143
+
144
+ /**
145
+ * Combine both metrics into one report + a fail-closed `ok` (both must be 100%).
146
+ *
147
+ * @param {object} params
148
+ * @param {Array} [params.toolCalls]
149
+ * @param {Iterable<string>} [params.ledgerOpIds]
150
+ * @param {Iterable<string>} [params.tracedOpIds]
151
+ * @param {Array} [params.attributions]
152
+ * @returns {{sideEffect:object, provenance:object, ok:boolean}}
153
+ */
154
+ export function computeGovernanceCoverage({
155
+ toolCalls = [],
156
+ ledgerOpIds = [],
157
+ tracedOpIds = [],
158
+ attributions = [],
159
+ } = {}) {
160
+ const sideEffect = computeSideEffectCoverage({
161
+ toolCalls,
162
+ ledgerOpIds,
163
+ tracedOpIds,
164
+ });
165
+ const provenance = computeProvenanceCoverage(attributions);
166
+ return { sideEffect, provenance, ok: sideEffect.ok && provenance.ok };
167
+ }
168
+
169
+ /** One-line, token-free summary of a governance coverage report. */
170
+ export function summarizeGovernanceCoverage(report) {
171
+ const se = report?.sideEffect || {};
172
+ const pr = report?.provenance || {};
173
+ return (
174
+ `high-risk ledger ${pct(se.ledgerCoverage ?? 1)} / trace ` +
175
+ `${pct(se.traceCoverage ?? 1)} (${se.highRiskCount ?? 0} calls) · ` +
176
+ `provenance ${pct(pr.coverage ?? 1)} (${pr.total ?? 0} sourced) · ` +
177
+ `${report?.ok ? "OK" : "GAPS"}`
178
+ );
179
+ }