chainlesschain 0.162.152 → 0.162.153

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 (164) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/assets/web-panel/assets/{AIOps-CVLVJS-Q.js → AIOps-CBilhs1R.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-CJ2_GJsI.js → ActionButton-Cf-RnC5Y.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-CZsmlTF8.js → Analytics-S8tkGhw0.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-DREvMZ62.js → AppLayout-CNXI3Bw5.js} +5 -5
  7. package/src/assets/web-panel/assets/{Audit-B4NR42w_.js → Audit-DF2zVFZ0.js} +1 -1
  8. package/src/assets/web-panel/assets/{Backup-CJFmf3In.js → Backup-CMEiwQZL.js} +1 -1
  9. package/src/assets/web-panel/assets/{BaseInput-Bh8_iUZY.js → BaseInput-rwLw4K70.js} +1 -1
  10. package/src/assets/web-panel/assets/{Chat-DEwKjIxV.js → Chat-C478H8u9.js} +5 -5
  11. package/src/assets/web-panel/assets/{ChatBubbleRenderer-BOqHkxK_.js → ChatBubbleRenderer-DNQsKN61.js} +1 -1
  12. package/src/assets/web-panel/assets/{Checkbox-DYWCqYI9.js → Checkbox-D-47X635.js} +1 -1
  13. package/src/assets/web-panel/assets/{Codegen-BlXrfZAJ.js → Codegen-Cb9Ihed5.js} +1 -1
  14. package/src/assets/web-panel/assets/{Col-DLPM22eX.js → Col-CQsdzczt.js} +1 -1
  15. package/src/assets/web-panel/assets/{Community-PFyzqijs.js → Community-DiqzeAy-.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compact-7DIfY5Wp.js → Compact-Bq-APyyF.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compliance-DF4CinPU.js → Compliance-Dnb1YxPr.js} +1 -1
  18. package/src/assets/web-panel/assets/{Cowork-B1J80Vcj.js → Cowork-CZljerdQ.js} +3 -3
  19. package/src/assets/web-panel/assets/{Cron-B7sx2OXX.js → Cron-gAdbZOq7.js} +2 -2
  20. package/src/assets/web-panel/assets/{Crosschain-omLkxmu-.js → Crosschain-DMPGXttD.js} +1 -1
  21. package/src/assets/web-panel/assets/{DID-B_7r7b5F.js → DID-C7dBDAv8.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dashboard-Cp7k3GZg.js → Dashboard-ByR4VcF8.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dropdown-BCKO89Y8.js → Dropdown-Bc4tbiQN.js} +1 -1
  24. package/src/assets/web-panel/assets/{EmailListRenderer-CNgTSsFZ.js → EmailListRenderer-BhUN2pDw.js} +1 -1
  25. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DobM83JP.js → FamilyGuardDashboard-DpJuANCD.js} +1 -1
  26. package/src/assets/web-panel/assets/{Federation-XVAYQIeu.js → Federation-BEm4TvcE.js} +1 -1
  27. package/src/assets/web-panel/assets/{FormItemContext-DV5ka1KQ.js → FormItemContext-JnkPkhiC.js} +1 -1
  28. package/src/assets/web-panel/assets/{GenericCardRenderer-Dg5q-KpC.js → GenericCardRenderer-BfCzFUIC.js} +1 -1
  29. package/src/assets/web-panel/assets/{Git-Dsn3Xhxf.js → Git-1c0MWpmD.js} +2 -2
  30. package/src/assets/web-panel/assets/{Governance-D06S4Qow.js → Governance-C_j3EBpv.js} +1 -1
  31. package/src/assets/web-panel/assets/{Inference-nAvwxUXy.js → Inference-Cb7XRgtY.js} +1 -1
  32. package/src/assets/web-panel/assets/{KnowledgeGraph-CtqRP_rF.js → KnowledgeGraph-DoHPvHyK.js} +1 -1
  33. package/src/assets/web-panel/assets/Logs-CYriKpy-.js +2 -0
  34. package/src/assets/web-panel/assets/{Marketplace-CaeY23Kj.js → Marketplace-BT56-GD0.js} +1 -1
  35. package/src/assets/web-panel/assets/{McpTools-C2HHnwnE.js → McpTools-B6XX_wnZ.js} +3 -3
  36. package/src/assets/web-panel/assets/{Memory-CWBrdKlR.js → Memory-DRgNuaQc.js} +2 -2
  37. package/src/assets/web-panel/assets/{MobileBridge-CBLQ8uCY.js → MobileBridge-B0qgvBN2.js} +1 -1
  38. package/src/assets/web-panel/assets/MobileProjects-CRRfswf7.js +1 -0
  39. package/src/assets/web-panel/assets/{Mtc-BXur-euo.js → Mtc-DnSFj9jw.js} +4 -4
  40. package/src/assets/web-panel/assets/{MtcAudit-CpQSlOQC.js → MtcAudit-c0tuz1sm.js} +5 -5
  41. package/src/assets/web-panel/assets/{Multisig-DlFwdEOA.js → Multisig-CVLBGioX.js} +3 -3
  42. package/src/assets/web-panel/assets/{NLProgramming-DSh7fevc.js → NLProgramming-CFaqmNbx.js} +1 -1
  43. package/src/assets/web-panel/assets/{Notes-Bv4NOVxg.js → Notes-BM_mNwU_.js} +3 -3
  44. package/src/assets/web-panel/assets/{NotificationSettings-CzHNnIfa.js → NotificationSettings-Sa1k3ReS.js} +1 -1
  45. package/src/assets/web-panel/assets/{OrderTableRenderer-D7pHfKK4.js → OrderTableRenderer-lWzmtqBh.js} +1 -1
  46. package/src/assets/web-panel/assets/{Organization-COzV01ed.js → Organization-C2blcq-P.js} +4 -4
  47. package/src/assets/web-panel/assets/{Overflow-CYRZJb2_.js → Overflow-B3PwOJnK.js} +1 -1
  48. package/src/assets/web-panel/assets/{P2P-DFm49FE0.js → P2P-DaB9T6tb.js} +2 -2
  49. package/src/assets/web-panel/assets/{PdhVaultBrowser-Ctr-6k5B.js → PdhVaultBrowser-BpEBZ72n.js} +5 -5
  50. package/src/assets/web-panel/assets/{Permissions-DXVrhFyv.js → Permissions-BTkWInyH.js} +4 -4
  51. package/src/assets/web-panel/assets/{PersonalDataHub-BO5utpLK.js → PersonalDataHub-LHEwNmyL.js} +2 -2
  52. package/src/assets/web-panel/assets/{Pipeline-C9irYCg7.js → Pipeline-DvWIxqH-.js} +1 -1
  53. package/src/assets/web-panel/assets/{Privacy-r13hrvoF.js → Privacy-BDbpBagU.js} +1 -1
  54. package/src/assets/web-panel/assets/{ProjectInit-PRKNPZZC.js → ProjectInit-DLeMDWWv.js} +2 -2
  55. package/src/assets/web-panel/assets/{ProjectSettings-QvxM1ZDO.js → ProjectSettings-BK3NsxIz.js} +2 -2
  56. package/src/assets/web-panel/assets/Projects-BPWPg9zA.js +1 -0
  57. package/src/assets/web-panel/assets/{Providers-DxbrccZ7.js → Providers-D2EvmPAd.js} +1 -1
  58. package/src/assets/web-panel/assets/{QrScannerModal-BMHVRxBX.js → QrScannerModal-DAcu2fNg.js} +1 -1
  59. package/src/assets/web-panel/assets/{QuickAsk-Co3_ndAH.js → QuickAsk-B7U850Yt.js} +1 -1
  60. package/src/assets/web-panel/assets/{Recommend-Cv3UWR6s.js → Recommend-bxNXLzOR.js} +1 -1
  61. package/src/assets/web-panel/assets/{RemoteSession-CSDsO2zA.js → RemoteSession-BsCjAfSJ.js} +2 -2
  62. package/src/assets/web-panel/assets/{Reputation-Bdj59vzM.js → Reputation-DZ9LPu-R.js} +1 -1
  63. package/src/assets/web-panel/assets/{Row-CejfUjmo.js → Row-cIYkCB3Y.js} +1 -1
  64. package/src/assets/web-panel/assets/{RssFeed-C83yKkvU.js → RssFeed-BxTNTtTp.js} +2 -2
  65. package/src/assets/web-panel/assets/{Search-Ck4l_VI3.js → Search-DSar6GhE.js} +1 -1
  66. package/src/assets/web-panel/assets/{Security-DGIIEx6K.js → Security-oCbIGysL.js} +4 -4
  67. package/src/assets/web-panel/assets/{Services-Cj2aNAy3.js → Services-D8yojrNv.js} +2 -2
  68. package/src/assets/web-panel/assets/{Skeleton-Dlyy8akb.js → Skeleton-vTA6P1eL.js} +1 -1
  69. package/src/assets/web-panel/assets/{Skills-C4aDa9Zh.js → Skills-BXLf_KgZ.js} +1 -1
  70. package/src/assets/web-panel/assets/{Sla-tHd_Bauo.js → Sla-Cpwxzz__.js} +1 -1
  71. package/src/assets/web-panel/assets/{SpeechSettings-DI7R0Qgd.js → SpeechSettings-DcPN9kCb.js} +1 -1
  72. package/src/assets/web-panel/assets/{SyncSettings-OOxiPdsE.js → SyncSettings-DY0U5Vuj.js} +2 -2
  73. package/src/assets/web-panel/assets/{Tasks-Nro_Ltg5.js → Tasks-DKu3-sZJ.js} +1 -1
  74. package/src/assets/web-panel/assets/{Templates-Bm7eSMWH.js → Templates-MD3nfWGm.js} +1 -1
  75. package/src/assets/web-panel/assets/{Tenant-B8F8eFvD.js → Tenant-DKVnyGXM.js} +1 -1
  76. package/src/assets/web-panel/assets/{Terminal-2oWhR7QF.js → Terminal-DQMIZfWf.js} +2 -2
  77. package/src/assets/web-panel/assets/{TimelineRenderer-GLnecmpd.js → TimelineRenderer-CugmNZTs.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tokens-CtpFyati.js → Tokens-Cjvlttu6.js} +1 -1
  79. package/src/assets/web-panel/assets/{Trigger-DGkXZzbN.js → Trigger-CzNOEcoI.js} +1 -1
  80. package/src/assets/web-panel/assets/{Trust-ClYZMkXN.js → Trust-D5jg9iPA.js} +1 -1
  81. package/src/assets/web-panel/assets/{UkeySign-C1AuEW5-.js → UkeySign-59bMlvxY.js} +1 -1
  82. package/src/assets/web-panel/assets/{VideoEditing-DHa9ekSK.js → VideoEditing-DmCzSBqn.js} +1 -1
  83. package/src/assets/web-panel/assets/{Wallet-CyQv8ZAN.js → Wallet-DoFe8V6W.js} +3 -3
  84. package/src/assets/web-panel/assets/{WebAuthn-DPxEEb5Y.js → WebAuthn-9POLER-w.js} +4 -4
  85. package/src/assets/web-panel/assets/{WorkflowEditor-C-fCM8Si.js → WorkflowEditor-cFQH0Og6.js} +1 -1
  86. package/src/assets/web-panel/assets/{chat-BMu1Pk8B.js → chat-D3fR2NkZ.js} +1 -1
  87. package/src/assets/web-panel/assets/{colors-DYPOXyWQ.js → colors-DiLEwE_P.js} +1 -1
  88. package/src/assets/web-panel/assets/{compact-item-C5r_plPk.js → compact-item-CGfFDdic.js} +1 -1
  89. package/src/assets/web-panel/assets/{createContext-9fWrWmuJ.js → createContext-BbIbOPL2.js} +1 -1
  90. package/src/assets/web-panel/assets/devWarning-B6FRgsmP.js +1 -0
  91. package/src/assets/web-panel/assets/{hasIn-CjZM2-qE.js → hasIn-DqyWp63_.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-DWwI0Jjd.js → index-BCoDp6o_.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-Co9kBFxY.js → index-BKeRBUtO.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-DjTB4wPn.js → index-BKxvHCqz.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-B56CI20h.js → index-BiLP6SNu.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-DNxR1CHs.js → index-BtcjYHgn.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-CcDGi9U1.js → index-BtwvOuvO.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-CJJx0kbR.js → index-ByE5tKjP.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-phHPSXlV.js → index-C1S30j-Z.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BsHmE__1.js → index-C2lZXIEA.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DLCoKst9.js → index-CH8gSMSA.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-jO4lIpFE.js → index-CHpI6g_S.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-0DVMoDzF.js → index-CIleIMTT.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-Bti4lpw5.js → index-CToOzfR2.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-D6zyUpD6.js → index-CZQshOyI.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-D0rFX-xN.js → index-ComvO4hy.js} +1 -1
  107. package/src/assets/web-panel/assets/index-Cq411qtc.js +1 -0
  108. package/src/assets/web-panel/assets/{index-BPucc_ES.js → index-CweXQM71.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CTnaRErh.js → index-CySlHabI.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-B_bTdeou.js → index-D16FSRMW.js} +1 -1
  111. package/src/assets/web-panel/assets/index-D1oX0DK3.js +1 -0
  112. package/src/assets/web-panel/assets/{index-Du-w2i6G.js → index-D3vQv3Kq.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-I3Qdrfcf.js → index-DH6qaU1a.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-Cd9_KCPs.js → index-DPxmTldu.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-Mipa7XgU.js → index-DQH--Uw5.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-BBVCXmJV.js → index-Db9UJVjj.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-CDaA4A0b.js → index-DdLwxj-F.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-CyUtBxnC.js → index-DdjXemK-.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-ByVDaARk.js → index-DzuGkFvy.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-BVFtY8Y4.js → index-FFlp8Jx9.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-DJk9cPrs.js → index-Km36XQ3z.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-BW-x3mUK.js → index-auI9fxYH.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-B1iUe3Ba.js → index-fCfaVIr7.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-HJdfPSMz.js → index-hVGbmc7y.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-CYoS2cwK.js → index-kL8f4MRS.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-C3E7xVl1.js → index-ns6bNnGo.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-Bglw_kmu.js → index-qHvMk0U3.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CvUR6l7C.js → index-rTrejDjk.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-oerotzoq.js → index-tLaW5UzZ.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-CGqrVLWe.js → index-xm1KHUEQ.js} +3 -3
  131. package/src/assets/web-panel/assets/{initDefaultProps-B7tpABc_.js → initDefaultProps-pg_7pnd6.js} +1 -1
  132. package/src/assets/web-panel/assets/{motion-DmvaRoVv.js → motion-B5GoJSZL.js} +1 -1
  133. package/src/assets/web-panel/assets/{move-DF4X29Wf.js → move-BaJoe2FW.js} +1 -1
  134. package/src/assets/web-panel/assets/{mtc-parser-C0cbg4PO.js → mtc-parser-CiQGbqtr.js} +1 -1
  135. package/src/assets/web-panel/assets/{omit-DZzcYy0l.js → omit-BFNEsKvU.js} +1 -1
  136. package/src/assets/web-panel/assets/{pickAttrs-DaZWfzuH.js → pickAttrs-YbSoANHm.js} +1 -1
  137. package/src/assets/web-panel/assets/{placementArrow-CBxOEyvn.js → placementArrow-C40MJPIH.js} +1 -1
  138. package/src/assets/web-panel/assets/{responsiveObserve-CGl8NIlO.js → responsiveObserve-LaVz2zF6.js} +1 -1
  139. package/src/assets/web-panel/assets/{slide-Bv330MSZ.js → slide-BkSoAGxF.js} +1 -1
  140. package/src/assets/web-panel/assets/{statusUtils-DJVy5oEM.js → statusUtils-C4jWjohA.js} +1 -1
  141. package/src/assets/web-panel/assets/{styleChecker-BiY1H5ST.js → styleChecker-BGqeIh-m.js} +1 -1
  142. package/src/assets/web-panel/assets/{useFlexGapSupport-D1sN2OlQ.js → useFlexGapSupport-JsR5NMrM.js} +1 -1
  143. package/src/assets/web-panel/assets/{useFs-DxxHawzW.js → useFs-DOiP38RR.js} +1 -1
  144. package/src/assets/web-panel/assets/{usePersonalDataHub-C1HblLrD.js → usePersonalDataHub-C-nC0ymt.js} +1 -1
  145. package/src/assets/web-panel/assets/{vnode-Dex0jy4T.js → vnode-BalilHOU.js} +1 -1
  146. package/src/assets/web-panel/assets/{zoom-Bk1MScAD.js → zoom-DjUELqks.js} +1 -1
  147. package/src/assets/web-panel/index.html +1 -1
  148. package/src/commands/team.js +34 -0
  149. package/src/data/changelog.json +7 -2
  150. package/src/harness/mcp-client.js +115 -1
  151. package/src/lib/agent-team/team-runner.js +20 -0
  152. package/src/lib/config-manager.js +14 -1
  153. package/src/lib/sub-agent-context.js +28 -7
  154. package/src/lib/telemetry/span-recorder.js +13 -1
  155. package/src/repl/agent-repl.js +52 -13
  156. package/src/repl/permission-prompt.js +58 -0
  157. package/src/runtime/agent-core.js +236 -1
  158. package/src/runtime/coding-agent-contract-shared.cjs +5 -0
  159. package/src/assets/web-panel/assets/Logs-J5aGAyfY.js +0 -2
  160. package/src/assets/web-panel/assets/MobileProjects-Q_Cy_W4_.js +0 -1
  161. package/src/assets/web-panel/assets/Projects-DfgmsN3j.js +0 -1
  162. package/src/assets/web-panel/assets/devWarning-DmRz5Pet.js +0 -1
  163. package/src/assets/web-panel/assets/index-CrsL7YBW.js +0 -1
  164. package/src/assets/web-panel/assets/index-zW69WSDA.js +0 -1
@@ -1,4 +1,4 @@
1
- import{b as D,e as k,d as F,q as _,o as H,w as I,n as O,f as R,c as z,s as f}from"./vendor-BMxUs6UX.js";import{B as p,D as j,F as C,P as q,G as A,H as G,h as v}from"./index-CGqrVLWe.js";import{w as L}from"./raf-Deuc0E8-.js";let M=!1;try{const e=Object.defineProperty({},"passive",{get(){M=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch{}function te(e,n,o,t){if(e&&e.addEventListener){let r=t;r===void 0&&M&&(n==="touchstart"||n==="touchmove"||n==="wheel")&&(r={passive:!1}),e.addEventListener(n,o,r)}return{remove:()=>{e&&e.removeEventListener&&e.removeEventListener(n,o)}}}let g;function W(e){if(typeof document>"u")return 0;if(g===void 0){const n=document.createElement("div");n.style.width="100%",n.style.height="200px";const o=document.createElement("div"),t=o.style;t.position="absolute",t.top="0",t.left="0",t.pointerEvents="none",t.visibility="hidden",t.width="200px",t.height="150px",t.overflow="hidden",o.appendChild(n),document.body.appendChild(o);const r=n.offsetWidth;o.style.overflow="scroll";let a=n.offsetWidth;r===a&&(a=o.clientWidth),document.body.removeChild(o),g=r-a}return g}function N(e){const n=e.match(/^(.*)px$/),o=Number(n?.[1]);return Number.isNaN(o)?W():o}function ne(e){if(typeof document>"u"||!e||!(e instanceof Element))return{width:0,height:0};const{width:n,height:o}=getComputedStyle(e,"::-webkit-scrollbar");return{width:N(n),height:N(o)}}const T=`vc-util-locker-${Date.now()}`;let x=0;function V(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}function Q(e){const n=D(()=>!!e&&!!e.value);x+=1;const o=`${T}_${x}`;k(t=>{if(p()){if(n.value){const r=W(),a=V();j(`
1
+ import{b as D,e as k,d as F,q as _,o as H,w as I,n as O,f as R,c as z,s as f}from"./vendor-BMxUs6UX.js";import{B as p,D as j,F as C,P as q,G as A,H as G,h as v}from"./index-xm1KHUEQ.js";import{w as L}from"./raf-Deuc0E8-.js";let M=!1;try{const e=Object.defineProperty({},"passive",{get(){M=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch{}function te(e,n,o,t){if(e&&e.addEventListener){let r=t;r===void 0&&M&&(n==="touchstart"||n==="touchmove"||n==="wheel")&&(r={passive:!1}),e.addEventListener(n,o,r)}return{remove:()=>{e&&e.removeEventListener&&e.removeEventListener(n,o)}}}let g;function W(e){if(typeof document>"u")return 0;if(g===void 0){const n=document.createElement("div");n.style.width="100%",n.style.height="200px";const o=document.createElement("div"),t=o.style;t.position="absolute",t.top="0",t.left="0",t.pointerEvents="none",t.visibility="hidden",t.width="200px",t.height="150px",t.overflow="hidden",o.appendChild(n),document.body.appendChild(o);const r=n.offsetWidth;o.style.overflow="scroll";let a=n.offsetWidth;r===a&&(a=o.clientWidth),document.body.removeChild(o),g=r-a}return g}function N(e){const n=e.match(/^(.*)px$/),o=Number(n?.[1]);return Number.isNaN(o)?W():o}function ne(e){if(typeof document>"u"||!e||!(e instanceof Element))return{width:0,height:0};const{width:n,height:o}=getComputedStyle(e,"::-webkit-scrollbar");return{width:N(n),height:N(o)}}const T=`vc-util-locker-${Date.now()}`;let x=0;function V(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}function Q(e){const n=D(()=>!!e&&!!e.value);x+=1;const o=`${T}_${x}`;k(t=>{if(p()){if(n.value){const r=W(),a=V();j(`
2
2
  html body {
3
3
  overflow-y: hidden;
4
4
  ${a?`width: calc(100% - ${r}px);`:""}
@@ -1,4 +1,4 @@
1
- import{K as t}from"./index-CGqrVLWe.js";import{i as s}from"./motion-DmvaRoVv.js";const m=new t("antMoveDownIn",{"0%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),f=new t("antMoveDownOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0}}),c=new t("antMoveLeftIn",{"0%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),y=new t("antMoveLeftOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),p=new t("antMoveRightIn",{"0%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),O=new t("antMoveRightOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),g=new t("antMoveUpIn",{"0%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),v=new t("antMoveUpOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0}}),l={"move-up":{inKeyframes:g,outKeyframes:v},"move-down":{inKeyframes:m,outKeyframes:f},"move-left":{inKeyframes:c,outKeyframes:y},"move-right":{inKeyframes:p,outKeyframes:O}},w=(n,a)=>{const{antCls:o}=n,r=`${o}-${a}`,{inKeyframes:i,outKeyframes:e}=l[a];return[s(r,i,e,n.motionDurationMid),{[`
1
+ import{K as t}from"./index-xm1KHUEQ.js";import{i as s}from"./motion-B5GoJSZL.js";const m=new t("antMoveDownIn",{"0%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),f=new t("antMoveDownOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0}}),c=new t("antMoveLeftIn",{"0%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),y=new t("antMoveLeftOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),p=new t("antMoveRightIn",{"0%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),O=new t("antMoveRightOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),g=new t("antMoveUpIn",{"0%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),v=new t("antMoveUpOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0}}),l={"move-up":{inKeyframes:g,outKeyframes:v},"move-down":{inKeyframes:m,outKeyframes:f},"move-left":{inKeyframes:c,outKeyframes:y},"move-right":{inKeyframes:p,outKeyframes:O}},w=(n,a)=>{const{antCls:o}=n,r=`${o}-${a}`,{inKeyframes:i,outKeyframes:e}=l[a];return[s(r,i,e,n.motionDurationMid),{[`
2
2
  ${r}-enter,
3
3
  ${r}-appear
4
4
  `]:{opacity:0,animationTimingFunction:n.motionEaseOutCirc},[`${r}-leave`]:{animationTimingFunction:n.motionEaseInOutCirc}}]};export{w as i};
@@ -1 +1 @@
1
- import{t as s}from"./index-CGqrVLWe.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-xm1KHUEQ.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-CGqrVLWe.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-xm1KHUEQ.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-CGqrVLWe.js";const l=`accept acceptcharset accesskey action allowfullscreen allowtransparency
1
+ import{h as i}from"./index-xm1KHUEQ.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-CGqrVLWe.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-xm1KHUEQ.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-CGqrVLWe.js";import{b as x}from"./vendor-BMxUs6UX.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-xm1KHUEQ.js";import{b as x}from"./vendor-BMxUs6UX.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-CGqrVLWe.js";import{i as e}from"./motion-DmvaRoVv.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-xm1KHUEQ.js";import{i as e}from"./motion-B5GoJSZL.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-CGqrVLWe.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-xm1KHUEQ.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-CGqrVLWe.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-xm1KHUEQ.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-BMxUs6UX.js";import{d as s}from"./styleChecker-BiY1H5ST.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-BMxUs6UX.js";import{d as s}from"./styleChecker-BGqeIh-m.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-CGqrVLWe.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-xm1KHUEQ.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-CGqrVLWe.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-xm1KHUEQ.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-CGqrVLWe.js";import{a8 as o,k as g,C as d,F as f,A as p}from"./vendor-BMxUs6UX.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-xm1KHUEQ.js";import{a8 as o,k as g,C as d,F as f,A as p}from"./vendor-BMxUs6UX.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-CGqrVLWe.js";import{i as f}from"./motion-DmvaRoVv.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-xm1KHUEQ.js";import{i as f}from"./motion-B5GoJSZL.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-CGqrVLWe.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-xm1KHUEQ.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="./assets/vendor-BMxUs6UX.js">
13
13
  <link rel="modulepreload" crossorigin href="./assets/icons-BsDmGpcT.js">
14
14
  <link rel="stylesheet" crossorigin href="./assets/index-Cq93VfoF.css">
@@ -234,6 +234,10 @@ export function registerTeamCommand(program, { logger } = {}) {
234
234
  "Restore progress from --state (completed tasks stay done; stale leases freed)",
235
235
  )
236
236
  .option("--json", "Emit the event stream as JSON lines")
237
+ .option(
238
+ "--otlp <file>",
239
+ "Write OTLP/JSON spans (one team.task span per execution, tagged workflow.run_id / workflow.name) to a file",
240
+ )
237
241
  .action(async (options) => {
238
242
  const ttlMs = Math.max(1, Number(options.ttl) || 60) * 1000;
239
243
  let reg;
@@ -380,6 +384,21 @@ export function registerTeamCommand(program, { logger } = {}) {
380
384
  runTask = makeAgentRunTask({ model: options.model });
381
385
  else runTask = async () => ({ dryRun: true });
382
386
 
387
+ // Optional workflow tracing (Claude-Code 2.1.202 parity): every task
388
+ // execution becomes a `team.task` span tagged with workflow.run_id +
389
+ // workflow.name so a collector can reassemble the run as one workflow.
390
+ let recorder = null;
391
+ if (options.otlp) {
392
+ const { TelemetryRecorder } =
393
+ await import("../lib/telemetry/span-recorder.js");
394
+ recorder = new TelemetryRecorder({
395
+ defaultAttributes: {
396
+ "workflow.run_id": `team-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
397
+ "workflow.name": path.basename(options.tasks),
398
+ },
399
+ });
400
+ }
401
+
383
402
  const teammates = Math.max(1, Number(options.teammates) || 2);
384
403
  const runner = new TeamRunner(reg, {
385
404
  teammates,
@@ -387,6 +406,7 @@ export function registerTeamCommand(program, { logger } = {}) {
387
406
  runTask,
388
407
  budget,
389
408
  mailbox,
409
+ recorder,
390
410
  onEvent: (e) => {
391
411
  if (options.json) console.log(JSON.stringify(e));
392
412
  else if (e.type === "task:claimed")
@@ -411,6 +431,20 @@ export function registerTeamCommand(program, { logger } = {}) {
411
431
  const summary = await runner.run();
412
432
  persist();
413
433
 
434
+ if (recorder && options.otlp) {
435
+ try {
436
+ fs.writeFileSync(
437
+ options.otlp,
438
+ JSON.stringify(recorder.toOtlp(), null, 2),
439
+ "utf8",
440
+ );
441
+ if (!options.json)
442
+ (log.info || console.log)(` OTLP spans → ${options.otlp}`);
443
+ } catch (e) {
444
+ (log.error || console.error)(` otlp write failed: ${e.message}`);
445
+ }
446
+ }
447
+
414
448
  // Worktree integration: sequentially preview (and optionally merge) each
415
449
  // committed branch back to base, then remove the worktrees. Conflicts are
416
450
  // reported, never force-merged.
@@ -3,17 +3,22 @@
3
3
  "releases": [
4
4
  {
5
5
  "productVersion": "Unreleased",
6
- "cliVersion": "0.162.152",
6
+ "cliVersion": "0.162.153",
7
7
  "cliVersions": [
8
8
  "0.4.46",
9
9
  "0.37.4",
10
10
  "0.162.150",
11
11
  "0.162.151",
12
- "0.162.152"
12
+ "0.162.152",
13
+ "0.162.153"
13
14
  ],
14
15
  "date": null,
15
16
  "title": "",
16
17
  "sections": [
18
+ {
19
+ "heading": "Added — cc CLI 0.162.153:上游 Claude Code parity 封顶 2.1.191 → 2.1.204(6 项,CLI-only npm 发版)",
20
+ "body": "> `chainlesschain` 0.162.152 → **0.162.153** 已发 npm `latest`(经 `npm-publish.yml`,`--provenance --access public`)。纯 `packages/cli/src` 增量,未触 `pdh/lib` → 无 Android cc bundle rollover / 无 USR_VERSION 改动。逐项经 Explore-agent grep 坐实上游 changelog(2.1.192→2.1.204)后落地,全部带回归测试(新增约 30 项);发版前本机三层全绿(unit+integration+e2e)。命令数不变(164;`cc team run --otlp` 只新增 option 非新命令)。判定明细 + N-A 清单见项目记忆 `cli-parity-gap-backlog`。\n\n- **`spawn_sub_agent` 后台模式(2.1.198)**:`background:true` 令子代理立即返回「running」句柄、父循环继续工作,结果在后续轮自动注水为 user-role 消息喂给模型;若模型想收尾但仍有后台子代理未决,循环**等待全部完成 + 注入结果 + 再给一轮**——后台成果永不静默丢失(迭代预算仍是兜底)。父 abort 信号前传防孤儿;settle-capture 包装永不 reject(未消费句柄不会变未处理 rejection);SubagentStop 钩子改在结果送达时 fire。opt-in 逐调用,省略 `background` 则阻塞路径字节不变。\n- **子代理中途失败/预算截断返回部分成果(2.1.199)**:被 API 错误(限流/掉线)或 token 预算截断的子代理此前丢弃已产出的一切(父级只见 `Sub-agent failed: <msg>` + 空 artifacts);现失败/强制完成结果把已产出内容摘要并入 summary(父模型唯一可见的通道)并保留截断前收集的 artifacts。\n- **交互权限询问 idle timeout(2.1.200)**:无人应答的权限询问此前永久阻塞整个 agent turn(`rl.question` 无超时);两个交互确认点(settings/hook `ask` + ApprovalGate)现把询问与可配置的空闲超时竞速,静默时**自动 DENY**(无人值守下 deny 是唯一安全答案)。默认关(行为字节不变),`CC_PERMISSION_ASK_TIMEOUT_MS` 环境变量或 config `permissions.askTimeoutMs` 开启;布尔/对象配置值按「非超时」拒绝。\n- **MCP roots 能力(2.1.203)**:roots 是**客户端**能力——服务器向客户端发 `roots/list` 请求索要工作区根、并订阅 `notifications/roots/list_changed`。此前**任何**服务器发起的请求都落进 `_handleMessage` 的通知分支、永不应答 → 服务器挂到自己超时。现客户端在 `initialize` 声明 `roots(listChanged)`、以会话工作目录(显式 `roots` 或 `process.cwd()`,`file://` URI)应答 `roots/list`、ack `ping`、未知服务器请求回 JSON-RPC `-32601` 而非静默;`setRoots()`/`notifyRootsListChanged()` 广播变更通知,REPL `/cd` 成功 chdir 后通知已连服务器。\n- **workflow 级 OTel 追踪属性 + `cc team run --otlp`(2.1.202)**:`TelemetryRecorder` 加 `defaultAttributes`(构造)+ `setDefaultAttribute()`——盖在每个 span 上,per-span 键优先;`agentLoop` 把 `workflow.run_id`(run id)+ 可选 `options.workflowName` 盖到本 run 全部 model/tool span。`TeamRunner` 接可选 recorder、每次执行发一个 `team.task` span(task key/holder/attempts;被丢弃的完成打标;失败记为 `task_failure` + error 状态)。新 `cc team run --otlp <file>` 写出以 team run id + 任务图文件名标记的 OTLP/JSON。真机验证:2 任务图 dry-run 产出 2 个共享同一 `workflow.run_id` 的 span。\n- **config.json 损坏先备份再降级(2.1.199)**:`loadConfig` 遇坏 config 此前已优雅降级(warn 一次 + 内存默认,读时不覆盖),但随后一跑 `cc config set` 的 load-modify-**save** 会原子替换坏文件为默认+新值,静默销毁用户仍留在坏 JSON 里的东西(API key / 自定义 baseUrl)。现首次失败加载把文件复制到 `config.json.corrupted`(固定同名、best-effort、每进程一次),警告指向它。"
21
+ },
17
22
  {
18
23
  "heading": "Fixed — cc CLI 0.162.152:全面体检 13 修复 + auto-pin 默认开 + 远控幂等激活 + 多语言 LSP/内核沙箱 CI 真机验证(CLI-only npm 发版)",
19
24
  "body": "> `chainlesschain` 0.162.151 → **0.162.152** 已发 npm `latest`(经 `npm-publish.yml`,`--provenance --access public`)。纯 `packages/cli/src` + `packages/web-panel`(随 `prepublishOnly build:web-panel` 打入包)增量,未触 `pdh/lib` → 无 Android cc bundle rollover / 无 USR_VERSION 改动。发版前本机三层全绿(unit+integration+e2e 23,167 passed / 0 fail)+ 新 `env-blocked-verification.yml` CI 门(真 gopls/rust-analyzer/jdtls 三语言 LSP + 真 bubblewrap 内核隔离,ubuntu)跑通。命令数不变(164)。\n\n- **安全(HIGH)插件签名锁可伪造绕过 `requireSignedPlugins`**:`.plugin-lock.json` 原是可写目录里的自断言 JSON(布尔字段+自选哈希,load 只重哈希不验签;install 还会把源目录自带的伪造 lock 原样拷入;组织没配 `trustedPluginKeySha256` 时 key 检查整个跳过)。改为 lock v2 落真 Ed25519 签名+公钥、load 时**真验签**、trust 指纹从嵌入公钥现算(永不信 lock 字段)、install 无条件剥离源自带 lock、`requireSignedPlugins`+空 key 名单 fail-closed 全拒。3 条 ATTACK 回归测试。\n- **安全:插件远程 registry 拒纯 HTTP**(registry 同时供 source+sha256,MITM 二者全控=完整性检查空转;loopback 豁免、`--allow-insecure-registry`/`CC_PLUGIN_REGISTRY_ALLOW_HTTP=1` 显式 opt-in)+ **fetchGitRepo 拒 `-` 开头 url/ref**(git argv 注入:registry 供的 ref=\"-f\" 在 full-clone retry 路径被 `checkout` 当选项;注意 `checkout -- <ref>` 是错修——`--` 后是 pathspec)。\n- **eval 反作弊三连**:`fix-failing-test`/`fix-build`/`upgrade-dependency` 的 do-not-edit harness 文件从 presence-regex(可被「文本还在但不执行」绕过:前插 `ALL OK`+exit(0)、重写 build.mjs 自定义 banner、run.mjs 干脆零守卫)改为逐字节比对模块常量;4 条作弊回归全在 pre-fix 代码上验 RED。\n- **远控账本双修**:`_perDeviceSeq` 乱序完成回退水位(新 commandId 复用旧 seq 本应拒 stale 实际 applied,真机复现)改 advance-only `Math.max`;`_applied/_order` 随 `cc serve` 无界涨(实测 5 万条 snapshot 14.3MB)加保留窗口(默认 1 万条、分块淘汰、`_baseIndex` 保 applyIndex 全局单调、snapshot 兼容旧格式,实测封顶 4.3MB)。\n- **`cc team` 三修**:runner 层 lease 心跳(内建 shell/agent executor 从不 renew → 超 TTL 长任务被 peer steal **并发双跑**,真时钟回归测试 pre-fix 红);`dependsOn` 拼错 key 现在 load 时报错(原静默 exit 1 + plan 波次悄悄少块);`--state` 快照 tmp+rename 原子写(写中崩溃不再截断唯一 resume 文件)。\n- **eval 基建双修**:超时改整树击杀(POSIX detached 组 / Win `taskkill /T /F`)+ 等 `close` 再 settle(原 kill 后立即 resolve,agent 还活着写文件时就快照/check/删目录);`--dry-run --history` 记录打 `dryRun:true` 且 `--trend` 排除(dry-run 恒 0%,原污染 CI 回归门造成全任务假回归)。\n- **OTLP 合规双修**:`*UnixNano` 时间戳改十进制字符串(ms×1e6≈1.8e18 超 2^53,JSON number 违 proto3 mapping、严格 collector 拒收);traceId 掺进程启动时间+pid(原裸计数器每进程重置 → 连续 run 全是 `0…01` 被 collector 并成一条 trace)。\n- **LSP 双修(多语言 CI 真机验证抓获)**:`normalizeUri` 统一盘符冒号编码(gopls 把 publish URI 重写成裸 `C:/` 而客户端 didOpen 用 `C%3A/`,诊断 Map key 永不相遇 → **Go 诊断恒空**;tsserver/pyright 原样回显故此前未暴露);读查询(def/refs/hover/symbols/diag/rename-preview)对 LSP `-32801 ContentModified` 有界重试(rust-analyzer 索引未稳时高频抛出,语义即「请重试」)。\n- **bwrap 沙箱挂载顺序**:`--tmpfs /tmp` 原在工作区 bind 之后挂载,遮蔽任何位于 /tmp 下的工作区(chdir 直接失败、沙箱不可用);tmpfs 移到 bind 之前(bwrap 顺序挂载、后挂者胜)。\n- **Added:auto-pin 默认开启(产品拍板)**:compaction 现在默认 pin 原始任务(首个 user 轮,token 上限 2000)防长会话跑偏;优先级 `--auto-pin` flag > `CC_AUTO_PIN`(\"1\"/\"0\") > config `context.autoPin` > 默认开;关= `CC_AUTO_PIN=0` 或 config false。\n- **Added:远控客户端发送 commandId/seq,Phase 5 幂等保护端到端激活**:web-panel 直连 `execute` 带顶层 uuid commandId + 抗页面重载单调 seq + per-TAB deviceId,断线后**同 id 重发一次**(服务端 ledger 保至多一次,`replayed` ack 如实上报);web/Android 的 E2EE 控制事件(prompt/approval/interrupt)把 commandId+per-pairing seq 打进加密明文(relay 本身 at-least-once 补投 offline-message——无 id 时补投的 prompt 会多跑一整个 agent turn)。勘误:所谓 Terminal 远程客户端不存在(cli 包内无此进程),客户端发送侧已全覆盖。\n- **Added:`env-blocked-verification.yml` CI 门**:ubuntu 真机跑三语言 LSP live 套(gopls/rust-analyzer/jdtls 各 def/refs/diag,`CC_LSP_LIVE_REQUIRE` 使装失败=红而非静默 skip)+ 真 bubblewrap 内核隔离套(netns 断网证明「无视 proxy env 的工具」也被拦、rootfs 只读、denyRead tmpfs 掩蔽);零 `continue-on-error`。\n- **desktop(不随 npm 包,同批落 main)**:SSO IPC 四 handler 端到端修复(refresh-token 传参形状错+读错 store、logout 把 providerId 当 sessionId 致 provider 侧撤销从未发生、handle-callback 会话 id 不达 renderer、get-sessions 恒空——统一路由到权威 SSOManager store)。"
@@ -10,6 +10,7 @@
10
10
 
11
11
  import { spawn } from "child_process";
12
12
  import { EventEmitter } from "events";
13
+ import { pathToFileURL } from "url";
13
14
  import { safeJsonParse } from "../lib/safe-json.js";
14
15
 
15
16
  /**
@@ -147,6 +148,8 @@ export class MCPClient extends EventEmitter {
147
148
  * @param {object} [options]
148
149
  * @param {string|null} [options.sessionId] agent session id advertised to
149
150
  * spawned stdio MCP servers (CC_SESSION_ID / CLAUDE_CODE_SESSION_ID env).
151
+ * @param {string[]} [options.roots] workspace root directories exposed to
152
+ * servers via the MCP roots capability. Defaults to the process cwd.
150
153
  */
151
154
  constructor(options = {}) {
152
155
  super();
@@ -156,6 +159,13 @@ export class MCPClient extends EventEmitter {
156
159
  this._reconnecting = new Map(); // name → in-flight reconnect promise
157
160
  this._sessionId =
158
161
  options && options.sessionId != null ? String(options.sessionId) : null;
162
+ // MCP roots capability (Claude-Code 2.1.203 parity): servers may ask the
163
+ // client for its workspace roots (`roots/list`, a server→client request).
164
+ // null = derive from process.cwd() at answer time.
165
+ this._roots =
166
+ options && Array.isArray(options.roots) && options.roots.length > 0
167
+ ? options.roots.map(String)
168
+ : null;
159
169
  }
160
170
 
161
171
  /**
@@ -168,6 +178,52 @@ export class MCPClient extends EventEmitter {
168
178
  this._sessionId = id != null && id !== "" ? String(id) : null;
169
179
  }
170
180
 
181
+ /**
182
+ * Current workspace roots in MCP wire shape (`file://` URIs). Falls back to
183
+ * the process cwd when no explicit roots were configured, so every session
184
+ * always advertises its working directory.
185
+ * @returns {Array<{uri: string, name: string}>}
186
+ */
187
+ listRoots() {
188
+ const dirs = this._roots || [process.cwd()];
189
+ const roots = [];
190
+ for (const dir of dirs) {
191
+ try {
192
+ roots.push({ uri: pathToFileURL(dir).href, name: dir });
193
+ } catch {
194
+ // An unconvertible path (bad injected value) is skipped, not fatal.
195
+ }
196
+ }
197
+ return roots;
198
+ }
199
+
200
+ /**
201
+ * Replace the advertised workspace roots and notify every connected server
202
+ * (`notifications/roots/list_changed`) so it can re-query `roots/list`.
203
+ * Call on working-directory changes (e.g. the REPL's /cd).
204
+ * @param {string[]|null} dirs - absolute directories; null/[] = cwd default
205
+ */
206
+ setRoots(dirs) {
207
+ const next =
208
+ Array.isArray(dirs) && dirs.length > 0 ? dirs.map(String) : null;
209
+ const changed = JSON.stringify(next) !== JSON.stringify(this._roots);
210
+ this._roots = next;
211
+ if (changed) this.notifyRootsListChanged();
212
+ }
213
+
214
+ /**
215
+ * Broadcast `notifications/roots/list_changed` to every connected server.
216
+ * Also for callers whose roots derive from process.cwd() (the default):
217
+ * after a chdir the root LIST is different even though `_roots` (null =
218
+ * "derive from cwd") did not change, so setRoots can't detect it.
219
+ */
220
+ notifyRootsListChanged() {
221
+ for (const [name, entry] of this.servers) {
222
+ if (entry.state !== ServerState.CONNECTED) continue;
223
+ this._sendNotification(name, "notifications/roots/list_changed", {});
224
+ }
225
+ }
226
+
171
227
  /**
172
228
  * Environment a spawned stdio MCP server inherits to identify the agent it
173
229
  * runs under (Claude-Code 2.1.154 / 2.1.163 parity). `CLAUDECODE` (parity)
@@ -338,7 +394,14 @@ export class MCPClient extends EventEmitter {
338
394
  // Initialize MCP protocol (retried on transient network errors).
339
395
  const initResult = await this._requestWithRetry(name, "initialize", {
340
396
  protocolVersion: "2024-11-05",
341
- capabilities: { tools: {}, resources: {}, prompts: {} },
397
+ capabilities: {
398
+ tools: {},
399
+ resources: {},
400
+ prompts: {},
401
+ // Client-side roots capability: servers may request roots/list and
402
+ // subscribe to list_changed notifications (Claude-Code 2.1.203).
403
+ roots: { listChanged: true },
404
+ },
342
405
  clientInfo: { name: "chainlesschain-cli", version: "0.37.9" },
343
406
  });
344
407
 
@@ -969,6 +1032,15 @@ export class MCPClient extends EventEmitter {
969
1032
  return;
970
1033
  }
971
1034
 
1035
+ // Server → client REQUEST (has both an id and a method, and the id is not
1036
+ // one of ours). Previously these fell into the notification branch and
1037
+ // never got a response, so a server calling e.g. roots/list hung until its
1038
+ // own timeout. Answer the ones our advertised capabilities invite.
1039
+ if (msg.id !== undefined && msg.method) {
1040
+ this._handleServerRequest(serverName, msg);
1041
+ return;
1042
+ }
1043
+
972
1044
  // Server notification
973
1045
  if (msg.method) {
974
1046
  this.emit("notification", {
@@ -978,6 +1050,48 @@ export class MCPClient extends EventEmitter {
978
1050
  });
979
1051
  }
980
1052
  }
1053
+
1054
+ /**
1055
+ * Answer a server-initiated JSON-RPC request. `roots/list` returns the
1056
+ * session's workspace roots (we advertise the roots capability); `ping`
1057
+ * gets an empty ack per spec. Anything else is answered with a JSON-RPC
1058
+ * method-not-found error instead of silence, so the server fails fast.
1059
+ */
1060
+ _handleServerRequest(serverName, msg) {
1061
+ const { id, method } = msg;
1062
+ if (method === "roots/list") {
1063
+ this._sendResponse(serverName, id, { roots: this.listRoots() });
1064
+ return;
1065
+ }
1066
+ if (method === "ping") {
1067
+ this._sendResponse(serverName, id, {});
1068
+ return;
1069
+ }
1070
+ this._sendResponse(serverName, id, undefined, {
1071
+ code: -32601,
1072
+ message: `method not found: ${method}`,
1073
+ });
1074
+ }
1075
+
1076
+ /**
1077
+ * Write a JSON-RPC response back to a stdio server. HTTP transports cannot
1078
+ * deliver server-initiated requests to this client (no persistent SSE GET
1079
+ * stream is held), so there is never a response to send there.
1080
+ */
1081
+ _sendResponse(serverName, id, result, error) {
1082
+ const entry = this.servers.get(serverName);
1083
+ if (!entry || !entry.process) return;
1084
+ const message = JSON.stringify(
1085
+ error !== undefined
1086
+ ? { jsonrpc: "2.0", id, error }
1087
+ : { jsonrpc: "2.0", id, result },
1088
+ );
1089
+ try {
1090
+ entry.process.stdin.write(message + "\n");
1091
+ } catch {
1092
+ // Ignore response write errors (server may have just exited)
1093
+ }
1094
+ }
981
1095
  }
982
1096
 
983
1097
  /**
@@ -40,6 +40,10 @@ export class TeamRunner {
40
40
  this.budget = opts.budget || null;
41
41
  // Directed/broadcast messaging between teammates (null → disabled).
42
42
  this.mailbox = opts.mailbox || null;
43
+ // Optional TelemetryRecorder: emits a `team.task` span per execution (and
44
+ // inherits the recorder's default workflow.run_id/name attributes) so
45
+ // `cc team run --otlp` traces the whole graph. Null → zero cost.
46
+ this.recorder = opts.recorder || null;
43
47
  this._executions = 0;
44
48
  this._inFlight = 0;
45
49
  this._maxInFlight = 0;
@@ -230,6 +234,13 @@ export class TeamRunner {
230
234
  ? this.mailbox.send({ from: holder, to, subject, body })
231
235
  : null;
232
236
  const startedAt = this._now();
237
+ const span = this.recorder
238
+ ? this.recorder.startSpan("team.task", {
239
+ "team.task.key": key,
240
+ "team.holder": holder,
241
+ "team.attempts": task.attempts,
242
+ })
243
+ : null;
233
244
  try {
234
245
  const result = await this.runTask({
235
246
  key,
@@ -256,6 +267,7 @@ export class TeamRunner {
256
267
  );
257
268
  }
258
269
  if (done.ok) {
270
+ if (span) span.end();
259
271
  this._setState(holder, "completed-task");
260
272
  this._emit("task:completed", {
261
273
  key,
@@ -263,6 +275,10 @@ export class TeamRunner {
263
275
  ms: this._now() - startedAt,
264
276
  });
265
277
  } else {
278
+ if (span) {
279
+ span.setAttribute("team.completion_discarded", true);
280
+ span.end();
281
+ }
266
282
  // The registry REJECTED the completion — the lease expired mid-run (the
267
283
  // task outran its TTL without renewing), so a peer may already own it.
268
284
  // Reporting `task:completed` + bumping the completed counter here would
@@ -277,6 +293,10 @@ export class TeamRunner {
277
293
  });
278
294
  }
279
295
  } catch (err) {
296
+ if (span) {
297
+ span.recordException(err, "task_failure");
298
+ span.end({ status: "error" });
299
+ }
280
300
  // A failed task still consumed a task-count slot (and any wall-clock) — fold
281
301
  // it so a doomed retry loop can't dodge the budget.
282
302
  if (this.budget) this.budget.record({ usage: null }, this._now());
@@ -5,6 +5,7 @@ import {
5
5
  mkdirSync,
6
6
  renameSync,
7
7
  unlinkSync,
8
+ copyFileSync,
8
9
  } from "node:fs";
9
10
  import { dirname } from "node:path";
10
11
  import { getConfigPath } from "./paths.js";
@@ -39,10 +40,22 @@ export function loadConfig() {
39
40
  // keeps working.
40
41
  if (!_warnedConfigPaths.has(configPath)) {
41
42
  _warnedConfigPaths.add(configPath);
43
+ // Back up the broken file before anything can clobber it: a later
44
+ // `cc config set` load-modify-saves DEFAULTS over this path, silently
45
+ // destroying whatever the user still had in the broken JSON (API keys,
46
+ // custom baseUrl). The copy gives them something to repair from.
47
+ // Fixed sibling name (no timestamp) so repeated runs don't accumulate.
48
+ let backupNote = "";
49
+ try {
50
+ copyFileSync(configPath, `${configPath}.corrupted`);
51
+ backupNote = ` A copy was saved to ${configPath}.corrupted.`;
52
+ } catch {
53
+ /* backup is best-effort — the warning still fires without it */
54
+ }
42
55
  _deps.warn(
43
56
  `⚠️ Could not read config at ${configPath} (${err.message}). ` +
44
57
  `Using defaults — your saved settings (provider / model / API key) are being IGNORED. ` +
45
- `Fix the JSON to restore them.\n`,
58
+ `Fix the JSON to restore them.${backupNote}\n`,
46
59
  );
47
60
  }
48
61
  return { ...structuredClone(DEFAULT_CONFIG) };