chainlesschain 0.166.79 → 0.166.81

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 (167) hide show
  1. package/README.md +8 -8
  2. package/package.json +2 -2
  3. package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
  4. package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
  5. package/src/assets/web-panel/assets/{AIOps-CwD6Pm_Y.js → AIOps-BZPs-bVl.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-Du5Rp-O6.js → ActionButton-BP1iLSwn.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-DY9l72ma.js → Analytics-WxwtPqcd.js} +2 -2
  8. package/src/assets/web-panel/assets/{AppLayout-7t1WIaCJ.js → AppLayout-DvcgeNkP.js} +5 -5
  9. package/src/assets/web-panel/assets/{Artifacts-BLIA5yny.js → Artifacts-CtYGOtnT.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-BC_N0QTg.js → Audit-BBzFYWMk.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-CA7SxDtg.js → BackgroundAgents-Dl9wCt0Y.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-BZ4AzS1_.js → Backup-CAL13Eak.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-BhiggGaH.js → BaseInput-f_lncpU_.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-CDdBoIBI.js → Chat-DLEbkiqI.js} +5 -5
  15. package/src/assets/web-panel/assets/ChatBubbleRenderer-1tCmIvv1.js +1 -0
  16. package/src/assets/web-panel/assets/{Checkbox-asoMKSEK.js → Checkbox-SNvgd2UG.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-B0gElLdm.js → Codegen-BG0D-INl.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-DrNzLpF6.js → Col-DUBBZz0e.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-DCzB5qkI.js → Community-8LfuBDPs.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-Db-Eua_j.js → Compact-GWs7Ka6o.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-B76NByjl.js → Compliance-CXRhB-KC.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-C-nK6Qpk.js → Cowork-OpW8dLKg.js} +2 -2
  23. package/src/assets/web-panel/assets/{Cron-C-GlQO19.js → Cron-6e47Syc_.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-Cuuz9IIh.js → Crosschain-D-vGH4nC.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-gwFaT973.js → DID-zEIa2jNx.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-DHDt5jEf.js → Dashboard-BfUbZxsl.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-CJ9kog-Y.js → Dropdown-BeCD8gf0.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-DOSXFRiQ.js → EmailListRenderer-apOBM2r2.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-CHYMP7rR.js → EvolutionSettings-C2dK36po.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-C1gzG5EK.js → FamilyGuardDashboard-DPMLWPTR.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation-CEdNVWUw.js → Federation-CivI2pzm.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-CwVOWPX8.js → FormItemContext-B3zrwBDw.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-CgNUs3kT.js → GenericCardRenderer-jGgdcPck.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-DM4MNnQo.js → Git-Cpfkrasd.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-DdOtjkvd.js → Governance-DG8_7YS3.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-28PidFfr.js → Inference-TQgUqPXx.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-Bpj_qNUK.js → KnowledgeGraph-By657fHZ.js} +1 -1
  38. package/src/assets/web-panel/assets/{Logs-C6Ix19Ay.js → Logs-CFJ_70-E.js} +2 -2
  39. package/src/assets/web-panel/assets/{MarkdownRenderer-Bj6mtPbf.js → MarkdownRenderer-BpRWpN1E.js} +1 -1
  40. package/src/assets/web-panel/assets/{Marketplace-DqkhRSMP.js → Marketplace-BWC3xler.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-1WQ2SjaE.js → McpTools-B0NkUzeJ.js} +3 -3
  42. package/src/assets/web-panel/assets/{Memory-BWTi7v6R.js → Memory-DBnXwjWD.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-DB4wu3UE.js → MobileBridge-BNWDrEJ4.js} +1 -1
  44. package/src/assets/web-panel/assets/{MobileProjects-Bh9pWx2f.js → MobileProjects-BaE94B_N.js} +1 -1
  45. package/src/assets/web-panel/assets/{Mtc-BVF1Wrno.js → Mtc-Bp3OAEYb.js} +5 -5
  46. package/src/assets/web-panel/assets/{MtcAudit-DtNfslPf.js → MtcAudit-_1T24zO3.js} +4 -4
  47. package/src/assets/web-panel/assets/{Multisig-4qcXP0bf.js → Multisig-C2i6Yi0B.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-BRJl5Ehw.js → NLProgramming-CBq3ujGE.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-BRY_bgMk.js → Notes-BxRmci_W.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-DirXMFz4.js → NotificationSettings-CqBLgOdv.js} +1 -1
  51. package/src/assets/web-panel/assets/{OrderTableRenderer-BlrY8lwu.js → OrderTableRenderer-cODPlpK7.js} +1 -1
  52. package/src/assets/web-panel/assets/{Organization-CVzQ1vO-.js → Organization-DlTnQBlp.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-A3rXTPG4.js → Overflow-Df2jS2Ep.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-Db9ABWz0.js → P2P-BwieT0aA.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-CPv0H2OZ.js → PdhVaultBrowser-Btw816xR.js} +3 -3
  56. package/src/assets/web-panel/assets/{Permissions-COnW4sIR.js → Permissions-BhVYLcqT.js} +3 -3
  57. package/src/assets/web-panel/assets/{PersonalDataHub-C1hG7rp7.js → PersonalDataHub-CPbNKPCA.js} +3 -3
  58. package/src/assets/web-panel/assets/{Pipeline---GLRDEe.js → Pipeline-B1BuhoY3.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-aaN9R3Lu.js → Privacy-BWeikVbU.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-C-kw49hE.js → ProjectInit-BVXcimHE.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-y5tTkBTC.js → ProjectSettings-CX87x3rT.js} +2 -2
  62. package/src/assets/web-panel/assets/{Projects-DZHlhyPB.js → Projects-3Qo2Mvxb.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-LqxnV72o.js → Providers-CGm0Wuer.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-D_q-Y5F0.js → QrScannerModal-DJxv7J64.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-_E_KB5o8.js → QuickAsk-DOXBReRk.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-BN8S5WJA.js → Recommend--MiLwmLM.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-BFzrY_aW.js → RemoteSession-D6LoXH94.js} +2 -2
  68. package/src/assets/web-panel/assets/{Reputation-C1HCLaTV.js → Reputation-G2jToiqh.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-B8T2-Qv7.js → Row-B79ZV_lZ.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-CNQLk8v1.js → RssFeed-CHQN68w_.js} +2 -2
  71. package/src/assets/web-panel/assets/{Search-BOx720Kc.js → Search-j7v5S2Fa.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-Ds8z6PF6.js → Security-B2ykFZJH.js} +3 -3
  73. package/src/assets/web-panel/assets/{Services-C0-YkRSF.js → Services-H8BK8uX0.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-DUHlSySD.js → Skeleton-XEUUrOTK.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-C8CBbbh0.js → Skills-B387UJPk.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-lQltyYfB.js → Sla-CWWBujpe.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-B5vyOma-.js → SpeechSettings-Q2AOv9DV.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-BKDPu_y-.js → SyncSettings-OSNyOUr8.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-Bgvf7LTx.js → Tasks-DfUDrno5.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-BMZyYYS7.js → Templates-CSTkzDRS.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-7PYTig8f.js → Tenant-BR__gCTG.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-C2W0LMdR.js → Terminal-Bv4DM5OI.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-CqREew_l.js → TimelineRenderer-DUnZuAtn.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-BhTyxTuD.js → Tokens-Dm0sczRV.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger-DxNSSZy_.js → Trigger-DsSOp0Ob.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-Dy_wfbIh.js → Trust-C0HJtFwV.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-DJC5ANqx.js → UkeySign-BbqIZiX-.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-CNFevrO4.js → VideoEditing-D7dDTt3D.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-CXzuS1YK.js → Wallet-DJGu0KWq.js} +2 -2
  90. package/src/assets/web-panel/assets/{WebAuthn-BWS6HP8c.js → WebAuthn-x8OoogZU.js} +3 -3
  91. package/src/assets/web-panel/assets/{WorkflowEditor-swiN_7Vj.js → WorkflowEditor-CC3jIUqx.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-NwH7qlBs.js → chat-Bqgv5oe8.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-h6nRhBTw.js → colors-CbAMqLFr.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-BQ6B6rP2.js → compact-item-B-zIDFg3.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-CQkJuRcG.js → createContext-D_s1ZLtZ.js} +1 -1
  96. package/src/assets/web-panel/assets/devWarning-QMSC9xgn.js +1 -0
  97. package/src/assets/web-panel/assets/{hasIn-Diwl1WyI.js → hasIn-Cj_J9Eb9.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-B3QgcUBV.js → index-0je3TLmx.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-DQYZa1Ci.js → index-3o8DjHHt.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-D_HY0nyN.js → index-B6qoyCkx.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-pYwYBVeQ.js → index-BFNO6ycz.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CatBQDSQ.js → index-BGxI_Qxg.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-BheCvudN.js → index-BLwUCYDf.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-DjB8IC9D.js → index-BN5sO3kL.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-BcKDUGYf.js → index-BPdH-XTd.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-BRl3KUj0.js → index-Bi1E5h9V.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CqH-oOR3.js → index-BivQyKes.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BYYb8oeV.js → index-BjfpW5s3.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Bs6HyCfP.js → index-BtJzqXCQ.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Da8frO_A.js → index-Bw88Mk2t.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DKaB4xTf.js → index-C-Z13SCI.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-C7-T-u0L.js → index-C6bAvixK.js} +3 -3
  113. package/src/assets/web-panel/assets/{index-D5P498Rk.js → index-C6lO24YD.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-BnQUin2K.js → index-CD_A-N7c.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-mxxZtsHp.js → index-CSzWODfj.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-BjcARUtr.js → index-CVPI_iIh.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BvPz6vZ8.js → index-Cg0oYTy5.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-AzeSQJDK.js → index-CsHTqPTg.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CRWpixu2.js → index-Cu3FtpNc.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-C3Ye1ISy.js → index-Cy3XOp7S.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CwsoVDi-.js → index-Cz0blpuN.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-TYMmUsxZ.js → index-D1t2IqNU.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-B5gj_uCC.js → index-D9CqHOgd.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-GTefQSbY.js → index-DVjFV2mg.js} +1 -1
  125. package/src/assets/web-panel/assets/index-DVq7UuW0.js +1 -0
  126. package/src/assets/web-panel/assets/index-DYVepsIV.js +1 -0
  127. package/src/assets/web-panel/assets/{index-DZ9CNcbJ.js → index-D_igPAXH.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-Dwpthe2b.js → index-DtplHZ5o.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-iHNOr_wL.js → index-DuqVIsHL.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-CyBtEVLM.js → index-J4JLWUMK.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DZAsByy4.js → index-JdSkHz64.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-Fm95dO4u.js → index-KY7udrs-.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-0ZztPzIm.js → index-ab6FUgkq.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-BI3ALCgN.js → index-dg0JqQDA.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-OEWSrqit.js → index-ggeC-_dR.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-BcjlIMP9.js → index-nEWJobH4.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-BeUrpC_H.js → initDefaultProps-DDIGXQ08.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-CHW5EXt1.js → motion-97SXSYE4.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-CWaoWJvF.js → move-CfDQMFRe.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-CEC6Us1u.js → mtc-parser-qLYCGwY8.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-1D-kP_Qj.js → omit-xVqy1mCI.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-CsS0myLl.js → pickAttrs-DCGlFyfv.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-bMThOvkI.js → placementArrow-DYgPuMk3.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-B72knbW8.js → responsiveObserve-7zUIdAWH.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-C3bI_2yy.js → slide-TyaiZlSh.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-0-FmcCAS.js → statusUtils-BPd13Fae.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-DXUyqoWY.js → styleChecker-A44XGgQ0.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-BSSnL3f1.js → useFlexGapSupport-ZX5EUa8B.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-B0Cvvl0S.js → useFs-Sh_fBPqz.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-6D-d4WU5.js → usePersonalDataHub-DhR6Izei.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode-zjIrlxT_.js → vnode-DC8g6oRh.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-Hw7NEisu.js → zoom-DRjJmOwj.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/data/changelog.json +27 -1
  155. package/src/gateways/ws/ws-approval-gate.js +7 -0
  156. package/src/lib/agent-sandbox.js +18 -1
  157. package/src/lib/auto-mode-config.js +5 -0
  158. package/src/lib/plan-mode.js +15 -4
  159. package/src/lib/process-execution-broker/linux-generic-bwrap-runtime.js +2 -2
  160. package/src/lib/process-execution-broker/linux-open-flags.js +26 -0
  161. package/src/lib/process-execution-broker/platform-sandbox.js +5 -9
  162. package/src/lib/sandbox-egress-authority-monitor.js +137 -0
  163. package/src/runtime/agent-core.js +176 -24
  164. package/src/assets/web-panel/assets/ChatBubbleRenderer-hsBsrl31.js +0 -1
  165. package/src/assets/web-panel/assets/devWarning-Bz6vqBGV.js +0 -1
  166. package/src/assets/web-panel/assets/index-1b7DEw-w.js +0 -1
  167. package/src/assets/web-panel/assets/index-CfD4tMuW.js +0 -1
@@ -1 +1 @@
1
- import{h as s}from"./index-C7-T-u0L.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-C6bAvixK.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-C7-T-u0L.js";const l=`accept acceptcharset accesskey action allowfullscreen allowtransparency
1
+ import{h as i}from"./index-C6bAvixK.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-C7-T-u0L.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-C6bAvixK.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-C7-T-u0L.js";import{b as x}from"./vendor-Bn1JzzAn.js";const v=["xxxl","xxl","xl","lg","md","sm","xs"],p=r=>({xs:`(max-width: ${r.screenXSMax}px)`,sm:`(min-width: ${r.screenSM}px)`,md:`(min-width: ${r.screenMD}px)`,lg:`(min-width: ${r.screenLG}px)`,xl:`(min-width: ${r.screenXL}px)`,xxl:`(min-width: ${r.screenXXL}px)`,xxxl:`{min-width: ${r.screenXXXL}px}`});function w(){const[,r]=o();return x(()=>{const n=p(r.value),i=new Map;let a=-1,c={};return{matchHandlers:{},dispatch(e){return c=e,i.forEach(t=>t(c)),i.size>=1},subscribe(e){return i.size||this.register(),a+=1,i.set(a,e),e(c),a},unsubscribe(e){i.delete(e),i.size||this.unregister()},unregister(){Object.keys(n).forEach(e=>{const t=n[e],s=this.matchHandlers[t];s?.mql.removeListener(s?.listener)}),i.clear()},register(){Object.keys(n).forEach(e=>{const t=n[e],s=l=>{let{matches:m}=l;this.dispatch(h(h({},c),{[e]:m}))},d=window.matchMedia(t);d.addListener(s),this.matchHandlers[t]={mql:d,listener:s},s(d)})},responsiveMap:n}})}export{v as r,w as u};
1
+ import{J as o,h}from"./index-C6bAvixK.js";import{b as x}from"./vendor-Bn1JzzAn.js";const v=["xxxl","xxl","xl","lg","md","sm","xs"],p=r=>({xs:`(max-width: ${r.screenXSMax}px)`,sm:`(min-width: ${r.screenSM}px)`,md:`(min-width: ${r.screenMD}px)`,lg:`(min-width: ${r.screenLG}px)`,xl:`(min-width: ${r.screenXL}px)`,xxl:`(min-width: ${r.screenXXL}px)`,xxxl:`{min-width: ${r.screenXXXL}px}`});function w(){const[,r]=o();return x(()=>{const n=p(r.value),i=new Map;let a=-1,c={};return{matchHandlers:{},dispatch(e){return c=e,i.forEach(t=>t(c)),i.size>=1},subscribe(e){return i.size||this.register(),a+=1,i.set(a,e),e(c),a},unsubscribe(e){i.delete(e),i.size||this.unregister()},unregister(){Object.keys(n).forEach(e=>{const t=n[e],s=this.matchHandlers[t];s?.mql.removeListener(s?.listener)}),i.clear()},register(){Object.keys(n).forEach(e=>{const t=n[e],s=l=>{let{matches:m}=l;this.dispatch(h(h({},c),{[e]:m}))},d=window.matchMedia(t);d.addListener(s),this.matchHandlers[t]={mql:d,listener:s},s(d)})},responsiveMap:n}})}export{v as r,w as u};
@@ -1,4 +1,4 @@
1
- import{K as n}from"./index-C7-T-u0L.js";import{i as e}from"./motion-CHW5EXt1.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-C6bAvixK.js";import{i as e}from"./motion-97SXSYE4.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-C7-T-u0L.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-C6bAvixK.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-C7-T-u0L.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-C6bAvixK.js";const i=()=>d()&&window.document.documentElement,c=e=>{if(d()&&window.document.documentElement){const t=Array.isArray(e)?e:[e],{documentElement:n}=window.document;return t.some(r=>r in n.style)}return!1},u=(e,t)=>{if(!c(e))return!1;const n=document.createElement("div"),r=n.style[e];return n.style[e]=t,n.style[e]!==r};function s(e,t){return!Array.isArray(e)&&t!==void 0?u(e,t):c(e)}let o;const p=()=>{if(!i())return!1;if(o!==void 0)return o;const e=document.createElement("div");return e.style.display="flex",e.style.flexDirection="column",e.style.rowGap="1px",e.appendChild(document.createElement("div")),e.appendChild(document.createElement("div")),document.body.appendChild(e),o=e.scrollHeight===1,document.body.removeChild(e),o};export{i as c,p as d,s as i};
@@ -1 +1 @@
1
- import{o,s as t}from"./vendor-Bn1JzzAn.js";import{d as s}from"./styleChecker-DXUyqoWY.js";const r=(()=>{const e=t(!1);return o(()=>{e.value=s()}),e});export{r as u};
1
+ import{o,s as t}from"./vendor-Bn1JzzAn.js";import{d as s}from"./styleChecker-A44XGgQ0.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-C7-T-u0L.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-C6bAvixK.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 v}from"./index-C7-T-u0L.js";import{u as _}from"./useShellMode-CgR0wCYM.js";function d(r){if(!r)return r;if(r.error)throw new Error(r.error);return r.result!==void 0?r.result:r}async function p(r,s={},e=!0){try{if(e!==!0||!r||typeof r.sendRaw!="function")return{status:"unavailable",path:null};const a=await r.sendRaw({type:"fs.openDirectory",title:s.title},6e4);if(a&&(a.ok===!1||a.error))return{status:"unavailable",path:null};const t=a&&a.result!==void 0?a.result:a;return t&&(t.ok===!1||t.error||t.unsupported===!0)?{status:"unavailable",path:null}:t&&t.canceled===!0?{status:"cancelled",path:null}:t&&typeof t.path=="string"&&t.path.length>0?{status:"selected",path:t.path}:{status:"unavailable",path:null}}catch{return{status:"unavailable",path:null}}}function b(r,s,e,a,t){return typeof r.onMessage!="function"||typeof r.sendRaw!="function"?r.sendRaw({type:s,...e},t).then(d):new Promise((n,u)=>{const l=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,w=`${s}.event`,m=`${s}.end`;let c=!1,h=()=>{};const o=(i,f)=>{if(!c){c=!0,clearTimeout(g);try{h()}catch{}i(f)}},g=setTimeout(()=>{o(u,new Error(`stream timeout (${t}ms): ${s}`))},t),y=r.onMessage(i=>{if(!(c||!i)&&!(i.id!==l&&i.requestId!==l)){if(i.type===w){if(typeof a=="function")try{a(i.event||i)}catch{}return}if(i.type===m){o(n,d(i));return}i.type==="error"&&o(u,new Error(i.message||"stream error"))}});h=typeof y=="function"?y:()=>{},Promise.resolve(r.sendRaw({id:l,type:s,...e},t)).catch(()=>{})})}function k(){const r=v(),s=_(),e=(a,t={},n=3e4)=>r.sendRaw({type:a,...t},n).then(d);return{async health(){return await e("personal-data-hub.health",{},8e3)},async stats(){return await e("personal-data-hub.stats",{},8e3)},async listAdapters(){return await e("personal-data-hub.list-adapters",{},5e3)},async pickFile(a={}){try{const t=await r.sendRaw({type:"fs.openDialog",title:a.title,filters:a.filters},6e4),n=t&&t.result!==void 0?t.result:t,u=n&&typeof n.path=="string"?n.path:n&&typeof n.filePath=="string"?n.filePath:null;return n&&n.canceled!==!0&&u?u:null}catch{return null}},async pickDirectoryResult(a={}){return await p(r,a,s.isEmbedded)},async pickDirectory(a={}){const t=await p(r,a,s.isEmbedded);return t.status==="selected"?t.path:null},async adapterReadiness(a){return await e("personal-data-hub.adapter-readiness",Number.isInteger(a)?{timeoutMs:a}:{},15e3)},async syncAdapter(a,t={}){return await e("personal-data-hub.sync-adapter",{name:a,options:t},6e5)},async syncAll(a={}){return await e("personal-data-hub.sync-all",{options:a},6e5)},async registerMock({name:a="mock",count:t=20,seed:n=1}={}){return await e("personal-data-hub.register-mock",{name:a,count:t,seed:n})},async unregister(a){return await e("personal-data-hub.unregister",{name:a})},async ask(a,t={}){return await e("personal-data-hub.ask",{question:a,options:t},18e4)},async queryEvents(a={}){return await e("personal-data-hub.query-events",a,1e4)},async recentAudit(a={}){return await e("personal-data-hub.recent-audit",a,1e4)},async searchEvents(a={}){return await e("personal-data-hub.search-events",a,15e3)},async facetCounts(a={}){return await e("personal-data-hub.facet-counts",a,1e4)},async testEmailAuth(a){return await e("personal-data-hub.test-email-auth",{account:a},3e4)},async registerEmail(a,t={}){return await e("personal-data-hub.register-email",{account:a,opts:t},15e3)},async unregisterEmail(a){return await e("personal-data-hub.unregister-email",{email:a},5e3)},async listEmailAccounts(){return await e("personal-data-hub.list-email-accounts",{},5e3)},async activateEmail(a){return await e("personal-data-hub.activate-email",{email:a},5e3)},async eventDetail(a){return await e("personal-data-hub.event-detail",{eventId:a},5e3)},async syncAdapterStream(a,t={},n){return await b(r,"personal-data-hub.sync-adapter-stream",{name:a,options:t},n,6e5)},async syncAllStream(a={},t){return await b(r,"personal-data-hub.sync-all-stream",{options:a},t,9e5)},async registerAlipay(a,t={}){return await e("personal-data-hub.register-alipay",{account:a,opts:t},15e3)},async unregisterAlipay(a){return await e("personal-data-hub.unregister-alipay",{email:a},5e3)},async listAlipayAccounts(){return await e("personal-data-hub.list-alipay-accounts",{},5e3)},async activateAlipay(a){return await e("personal-data-hub.activate-alipay",{email:a},5e3)},async importAlipayBill({zipPath:a,csvPath:t,zipPassword:n}={}){return await e("personal-data-hub.import-alipay-bill",{zipPath:a,csvPath:t,zipPassword:n},3e5)},async reviewQueueList(a=50){return await e("personal-data-hub.review-queue-list",{limit:a},5e3)},async reviewDecision(a,t){return await e("personal-data-hub.review-decision",{reviewId:a,decision:t},5e3)},async manualMerge(a,t){return await e("personal-data-hub.manual-merge",{aId:a,bId:t},5e3)},async manualUnmerge(a){return await e("personal-data-hub.manual-unmerge",{personId:a},5e3)},async resolverDrain(a=50){return await e("personal-data-hub.resolver-drain",{limit:a},18e4)},async resolverStats(){return await e("personal-data-hub.resolver-stats",{},5e3)},async skillsList(){return await e("personal-data-hub.skills-list",{},5e3)},async runSkill(a,t={}){return await e("personal-data-hub.run-skill",{name:a,options:t},12e4)},async openAichatLogin(a,t={}){return await e("personal-data-hub.aichat-open-login",{vendor:a,opts:t},1e4)},async probeAichatCookies(a,t){return await e("personal-data-hub.aichat-probe-cookies",{vendor:a,cookieHeader:t},1e4)},async registerAichatVendor(a,t,n={}){return await e("personal-data-hub.aichat-register-vendor",{vendor:a,cookies:t,opts:n},3e4)},async rotateAichatLogin(a){return await e("personal-data-hub.aichat-rotate-login",{vendor:a},1e4)},async listAichatAccounts(){return await e("personal-data-hub.list-aichat-accounts",{},5e3)},async unregisterAichat(a){return await e("personal-data-hub.unregister-aichat",{vendor:a},5e3)},async aichatHealthCheckOnce(){return await e("personal-data-hub.aichat-health-check-once",{},3e4)},async probeWechatEnv(){return await e("personal-data-hub.wechat-env-probe",{},15e3)},async registerWechat({account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l}={}){return await e("personal-data-hub.register-wechat",{account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l},45e3)},async listWechatAccounts(){return await e("personal-data-hub.list-wechat-accounts",{},5e3)},async activateWechat(a,t={}){return await e("personal-data-hub.activate-wechat",{uin:a,fridaOpts:t.fridaOpts,keyProviderOverride:t.keyProviderOverride},45e3)},async unregisterWechat(a){return await e("personal-data-hub.unregister-wechat",{uin:a},5e3)},async bilibiliAdbSync(a={}){return await e("personal-data-hub.bilibili-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bilibiliAdbDoctor(){return await e("personal-data-hub.bilibili-adb-doctor",{},15e3)},async weiboAdbSync(a={}){return await e("personal-data-hub.weibo-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async xhsAdbSync(a={}){return await e("personal-data-hub.xhs-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async toutiaoAdbSync(a={}){return await e("personal-data-hub.toutiao-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},9e4)},async kuaishouAdbSync(a={}){return await e("personal-data-hub.kuaishou-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bridgeDoctor(){return await e("personal-data-hub.bridge-doctor",{},6e4)},async douyinAdbSync(a={}){return await e("personal-data-hub.douyin-adb-sync",{uid:a.uid,limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)}}}export{k as u};
1
+ import{u as v}from"./index-C6bAvixK.js";import{u as _}from"./useShellMode-CgR0wCYM.js";function d(r){if(!r)return r;if(r.error)throw new Error(r.error);return r.result!==void 0?r.result:r}async function p(r,s={},e=!0){try{if(e!==!0||!r||typeof r.sendRaw!="function")return{status:"unavailable",path:null};const a=await r.sendRaw({type:"fs.openDirectory",title:s.title},6e4);if(a&&(a.ok===!1||a.error))return{status:"unavailable",path:null};const t=a&&a.result!==void 0?a.result:a;return t&&(t.ok===!1||t.error||t.unsupported===!0)?{status:"unavailable",path:null}:t&&t.canceled===!0?{status:"cancelled",path:null}:t&&typeof t.path=="string"&&t.path.length>0?{status:"selected",path:t.path}:{status:"unavailable",path:null}}catch{return{status:"unavailable",path:null}}}function b(r,s,e,a,t){return typeof r.onMessage!="function"||typeof r.sendRaw!="function"?r.sendRaw({type:s,...e},t).then(d):new Promise((n,u)=>{const l=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,w=`${s}.event`,m=`${s}.end`;let c=!1,h=()=>{};const o=(i,f)=>{if(!c){c=!0,clearTimeout(g);try{h()}catch{}i(f)}},g=setTimeout(()=>{o(u,new Error(`stream timeout (${t}ms): ${s}`))},t),y=r.onMessage(i=>{if(!(c||!i)&&!(i.id!==l&&i.requestId!==l)){if(i.type===w){if(typeof a=="function")try{a(i.event||i)}catch{}return}if(i.type===m){o(n,d(i));return}i.type==="error"&&o(u,new Error(i.message||"stream error"))}});h=typeof y=="function"?y:()=>{},Promise.resolve(r.sendRaw({id:l,type:s,...e},t)).catch(()=>{})})}function k(){const r=v(),s=_(),e=(a,t={},n=3e4)=>r.sendRaw({type:a,...t},n).then(d);return{async health(){return await e("personal-data-hub.health",{},8e3)},async stats(){return await e("personal-data-hub.stats",{},8e3)},async listAdapters(){return await e("personal-data-hub.list-adapters",{},5e3)},async pickFile(a={}){try{const t=await r.sendRaw({type:"fs.openDialog",title:a.title,filters:a.filters},6e4),n=t&&t.result!==void 0?t.result:t,u=n&&typeof n.path=="string"?n.path:n&&typeof n.filePath=="string"?n.filePath:null;return n&&n.canceled!==!0&&u?u:null}catch{return null}},async pickDirectoryResult(a={}){return await p(r,a,s.isEmbedded)},async pickDirectory(a={}){const t=await p(r,a,s.isEmbedded);return t.status==="selected"?t.path:null},async adapterReadiness(a){return await e("personal-data-hub.adapter-readiness",Number.isInteger(a)?{timeoutMs:a}:{},15e3)},async syncAdapter(a,t={}){return await e("personal-data-hub.sync-adapter",{name:a,options:t},6e5)},async syncAll(a={}){return await e("personal-data-hub.sync-all",{options:a},6e5)},async registerMock({name:a="mock",count:t=20,seed:n=1}={}){return await e("personal-data-hub.register-mock",{name:a,count:t,seed:n})},async unregister(a){return await e("personal-data-hub.unregister",{name:a})},async ask(a,t={}){return await e("personal-data-hub.ask",{question:a,options:t},18e4)},async queryEvents(a={}){return await e("personal-data-hub.query-events",a,1e4)},async recentAudit(a={}){return await e("personal-data-hub.recent-audit",a,1e4)},async searchEvents(a={}){return await e("personal-data-hub.search-events",a,15e3)},async facetCounts(a={}){return await e("personal-data-hub.facet-counts",a,1e4)},async testEmailAuth(a){return await e("personal-data-hub.test-email-auth",{account:a},3e4)},async registerEmail(a,t={}){return await e("personal-data-hub.register-email",{account:a,opts:t},15e3)},async unregisterEmail(a){return await e("personal-data-hub.unregister-email",{email:a},5e3)},async listEmailAccounts(){return await e("personal-data-hub.list-email-accounts",{},5e3)},async activateEmail(a){return await e("personal-data-hub.activate-email",{email:a},5e3)},async eventDetail(a){return await e("personal-data-hub.event-detail",{eventId:a},5e3)},async syncAdapterStream(a,t={},n){return await b(r,"personal-data-hub.sync-adapter-stream",{name:a,options:t},n,6e5)},async syncAllStream(a={},t){return await b(r,"personal-data-hub.sync-all-stream",{options:a},t,9e5)},async registerAlipay(a,t={}){return await e("personal-data-hub.register-alipay",{account:a,opts:t},15e3)},async unregisterAlipay(a){return await e("personal-data-hub.unregister-alipay",{email:a},5e3)},async listAlipayAccounts(){return await e("personal-data-hub.list-alipay-accounts",{},5e3)},async activateAlipay(a){return await e("personal-data-hub.activate-alipay",{email:a},5e3)},async importAlipayBill({zipPath:a,csvPath:t,zipPassword:n}={}){return await e("personal-data-hub.import-alipay-bill",{zipPath:a,csvPath:t,zipPassword:n},3e5)},async reviewQueueList(a=50){return await e("personal-data-hub.review-queue-list",{limit:a},5e3)},async reviewDecision(a,t){return await e("personal-data-hub.review-decision",{reviewId:a,decision:t},5e3)},async manualMerge(a,t){return await e("personal-data-hub.manual-merge",{aId:a,bId:t},5e3)},async manualUnmerge(a){return await e("personal-data-hub.manual-unmerge",{personId:a},5e3)},async resolverDrain(a=50){return await e("personal-data-hub.resolver-drain",{limit:a},18e4)},async resolverStats(){return await e("personal-data-hub.resolver-stats",{},5e3)},async skillsList(){return await e("personal-data-hub.skills-list",{},5e3)},async runSkill(a,t={}){return await e("personal-data-hub.run-skill",{name:a,options:t},12e4)},async openAichatLogin(a,t={}){return await e("personal-data-hub.aichat-open-login",{vendor:a,opts:t},1e4)},async probeAichatCookies(a,t){return await e("personal-data-hub.aichat-probe-cookies",{vendor:a,cookieHeader:t},1e4)},async registerAichatVendor(a,t,n={}){return await e("personal-data-hub.aichat-register-vendor",{vendor:a,cookies:t,opts:n},3e4)},async rotateAichatLogin(a){return await e("personal-data-hub.aichat-rotate-login",{vendor:a},1e4)},async listAichatAccounts(){return await e("personal-data-hub.list-aichat-accounts",{},5e3)},async unregisterAichat(a){return await e("personal-data-hub.unregister-aichat",{vendor:a},5e3)},async aichatHealthCheckOnce(){return await e("personal-data-hub.aichat-health-check-once",{},3e4)},async probeWechatEnv(){return await e("personal-data-hub.wechat-env-probe",{},15e3)},async registerWechat({account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l}={}){return await e("personal-data-hub.register-wechat",{account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l},45e3)},async listWechatAccounts(){return await e("personal-data-hub.list-wechat-accounts",{},5e3)},async activateWechat(a,t={}){return await e("personal-data-hub.activate-wechat",{uin:a,fridaOpts:t.fridaOpts,keyProviderOverride:t.keyProviderOverride},45e3)},async unregisterWechat(a){return await e("personal-data-hub.unregister-wechat",{uin:a},5e3)},async bilibiliAdbSync(a={}){return await e("personal-data-hub.bilibili-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bilibiliAdbDoctor(){return await e("personal-data-hub.bilibili-adb-doctor",{},15e3)},async weiboAdbSync(a={}){return await e("personal-data-hub.weibo-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async xhsAdbSync(a={}){return await e("personal-data-hub.xhs-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async toutiaoAdbSync(a={}){return await e("personal-data-hub.toutiao-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},9e4)},async kuaishouAdbSync(a={}){return await e("personal-data-hub.kuaishou-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bridgeDoctor(){return await e("personal-data-hub.bridge-doctor",{},6e4)},async douyinAdbSync(a={}){return await e("personal-data-hub.douyin-adb-sync",{uid:a.uid,limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)}}}export{k as u};
@@ -1 +1 @@
1
- import{N as i,h as a,w as l}from"./index-C7-T-u0L.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-Bn1JzzAn.js";function c(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,u=e;if(Array.isArray(e)&&(u=i(e)[0]),!u)return null;const n=o(u,r,s);return n.props=t?a(a({},n.props),r):n.props,l(typeof n.props.class!="object","class must be string"),n}function V(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(s=>c(s,r,t))}function v(e,r,t){p(o(e,a({},r)),t)}const m=e=>(e||[]).some(r=>g(r)?!(r.type===d||r.type===f&&!m(r.children)):!0)?e:null;function h(e,r,t,s){var u;const n=(u=e[r])===null||u===void 0?void 0:u.call(e,t);return m(n)?n:s?.()}export{h as a,V as b,c,v as t};
1
+ import{N as i,h as a,w as l}from"./index-C6bAvixK.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-Bn1JzzAn.js";function c(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,u=e;if(Array.isArray(e)&&(u=i(e)[0]),!u)return null;const n=o(u,r,s);return n.props=t?a(a({},n.props),r):n.props,l(typeof n.props.class!="object","class must be string"),n}function V(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(s=>c(s,r,t))}function v(e,r,t){p(o(e,a({},r)),t)}const m=e=>(e||[]).some(r=>g(r)?!(r.type===d||r.type===f&&!m(r.children)):!0)?e:null;function h(e,r,t,s){var u;const n=(u=e[r])===null||u===void 0?void 0:u.call(e,t);return m(n)?n:s?.()}export{h as a,V as b,c,v as t};
@@ -1,4 +1,4 @@
1
- import{K as o}from"./index-C7-T-u0L.js";import{i as f}from"./motion-CHW5EXt1.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-C6bAvixK.js";import{i as f}from"./motion-97SXSYE4.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-C7-T-u0L.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-C6bAvixK.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="./assets/vendor-Bn1JzzAn.js">
13
13
  <link rel="modulepreload" crossorigin href="./assets/icons-DG5UD-6K.js">
14
14
  <link rel="stylesheet" crossorigin href="./assets/index-Cq93VfoF.css">
@@ -1,6 +1,32 @@
1
1
  {
2
2
  "source": "CHANGELOG.md",
3
3
  "releases": [
4
+ {
5
+ "productVersion": null,
6
+ "cliVersion": "0.166.81",
7
+ "cliVersions": ["0.166.81"],
8
+ "date": null,
9
+ "title": "",
10
+ "sections": [
11
+ {
12
+ "heading": "Fixed - cc CLI 0.166.81: latch Plan and approval revisions during Docker egress",
13
+ "body": "- Bind Plan and ApprovalGate snapshots before the first asynchronous shell\n permission read. During a running Docker egress command, subscribe to their\n committed revisions and revoke the broker and target when authority changes.\n- Session Core 0.3.14 supplies the monotonic per-session ApprovalGate revision.\n This covers supported in-process policy updates; settings files, mutable host\n policy, Auto Mode state, and external writes still need a unified epoch.\n- Pair VS Code 0.37.123 and JetBrains 0.4.143 after the CLI's exact-commit\n release checks and public npm readback. JetBrains creates its Windows bridge\n lockfile with owner-only permissions before writing the bearer token."
14
+ }
15
+ ]
16
+ },
17
+ {
18
+ "productVersion": null,
19
+ "cliVersion": "0.166.80",
20
+ "cliVersions": ["0.166.80"],
21
+ "date": null,
22
+ "title": "",
23
+ "sections": [
24
+ {
25
+ "heading": "Fixed - cc CLI 0.166.80: revoke active Docker egress shells",
26
+ "body": "- Revalidate live shell and sandbox authority while a Docker egress command is\n running. A failed or timed-out check locks revocation, cuts the policy broker,\n closes the target container, and prevents a successful execution receipt.\n- Check authority again immediately before target start and receipt issuance;\n reject sessions delivered after revocation. A real Linux Docker probe checks\n tunnel closure, target termination, container cleanup, and rejected outcome.\n- This bounded poll does not provide a lossless policy revision subscription;\n a policy change reverted between checks remains outside its detection scope."
27
+ }
28
+ ]
29
+ },
4
30
  {
5
31
  "productVersion": null,
6
32
  "cliVersion": "0.166.79",
@@ -10,7 +36,7 @@
10
36
  "sections": [
11
37
  {
12
38
  "heading": "Added - cc CLI 0.166.79: opt-in Docker domain egress",
13
- "body": "- Add an explicit Linux Docker egress engine for `run_shell`, with pinned target\n and relay images, a Unix-socket policy broker, target isolation verification,\n and a real product-path Docker probe.\n- Report an unknown execution outcome after target start or cleanup uncertainty\n without suggesting a safe automatic retry. Runtime policy-revision revocation\n remains under development."
39
+ "body": "- Add an explicit Linux Docker egress engine for `run_shell`, with pinned target\n and relay images, a Unix-socket policy broker, target isolation verification,\n and a real product-path Docker probe.\n- Report an unknown execution outcome after target start or cleanup uncertainty\n without suggesting a safe automatic retry. Lossless policy-revision\n subscription remains under development."
14
40
  }
15
41
  ]
16
42
  },
@@ -261,6 +261,13 @@ export async function createWsApprovalGate({
261
261
  getSessionPolicy: (sid) => inner.getSessionPolicy(sid || sessionId),
262
262
  setSessionPolicy: (sid, policy) =>
263
263
  inner.setSessionPolicy(sid || sessionId, policy),
264
+ getAuthorizationPolicySnapshot: (sid) =>
265
+ inner.getAuthorizationPolicySnapshot?.(sid || sessionId) || null,
266
+ subscribePolicyRevision:
267
+ typeof inner.subscribePolicyRevision === "function"
268
+ ? (sid, listener) =>
269
+ inner.subscribePolicyRevision(sid || sessionId, listener)
270
+ : undefined,
264
271
  beginTurn: (turnId) => ledgerState.ledger.beginTurn(turnId),
265
272
  listGrants: () => ledgerState.ledger.listGrants(),
266
273
  revokeGrant: (grantId) => {
@@ -1130,6 +1130,14 @@ export async function executeDockerEgressShell(command, sandbox, options = {}) {
1130
1130
  });
1131
1131
  observedResult = result;
1132
1132
  await session.close();
1133
+ try {
1134
+ // The final live-authority fence must run after cleanup and immediately
1135
+ // before the execution receipt is issued.
1136
+ await options.beforeReceipt?.();
1137
+ } catch (error) {
1138
+ authorityError = error;
1139
+ throw error;
1140
+ }
1133
1141
  if (
1134
1142
  !startAuthorized ||
1135
1143
  !Number.isInteger(result?.exitCode) ||
@@ -1158,7 +1166,16 @@ export async function executeDockerEgressShell(command, sandbox, options = {}) {
1158
1166
  error.cleanupError = cleanupError;
1159
1167
  }
1160
1168
  }
1161
- if (authorityError) throw authorityError;
1169
+ if (authorityError) {
1170
+ if (startAuthorized)
1171
+ return {
1172
+ ...failure(),
1173
+ authorityFailure: {
1174
+ code: authorityError.code || "CC_DOCKER_EGRESS_AUTHORITY_CHANGED",
1175
+ },
1176
+ };
1177
+ throw authorityError;
1178
+ }
1162
1179
  return failure();
1163
1180
  }
1164
1181
  }
@@ -356,6 +356,11 @@ export function createAutoModeApprovalGate(inner, resolved, opts = {}) {
356
356
  }),
357
357
  });
358
358
  },
359
+ subscribePolicyRevision:
360
+ typeof inner?.subscribePolicyRevision === "function"
361
+ ? (sessionId, listener) =>
362
+ inner.subscribePolicyRevision(sessionId, listener)
363
+ : undefined,
359
364
  consumeAuthorization(authorization, ctx) {
360
365
  if (typeof inner?.consumeAuthorization !== "function") {
361
366
  throw new Error("Approval authorization consumer is unavailable");
@@ -893,8 +893,8 @@ export class PlanModeManager extends EventEmitter {
893
893
  }
894
894
 
895
895
  _commitMutation(transaction, eventType) {
896
+ const previousRevision = this.revision;
896
897
  if (!this._persistence) {
897
- const previousRevision = this.revision;
898
898
  this.revision += 1;
899
899
  this.updatedAt = Date.now();
900
900
  this.lastEvent = this.sessionId
@@ -906,6 +906,11 @@ export class PlanModeManager extends EventEmitter {
906
906
  timestamp: this.updatedAt,
907
907
  })
908
908
  : null;
909
+ this.emit("revision-changed", {
910
+ revision: this.revision,
911
+ previousRevision,
912
+ type: eventType,
913
+ });
909
914
  if (this.lastEvent) this.emit("session-event", { ...this.lastEvent });
910
915
  return null;
911
916
  }
@@ -920,6 +925,11 @@ export class PlanModeManager extends EventEmitter {
920
925
  this.revision = snapshot.revision;
921
926
  this.updatedAt = snapshot.updatedAt;
922
927
  this.lastEvent = snapshot.event;
928
+ this.emit("revision-changed", {
929
+ revision: this.revision,
930
+ previousRevision,
931
+ type: eventType,
932
+ });
923
933
  this.emit("session-event", { ...this.lastEvent });
924
934
  return null;
925
935
  } catch (error) {
@@ -1369,7 +1379,7 @@ export class PlanModeManager extends EventEmitter {
1369
1379
  /**
1370
1380
  * Check if a tool is allowed in current state
1371
1381
  */
1372
- isToolAllowed(toolName) {
1382
+ isToolAllowed(toolName, { recordBlocked = true } = {}) {
1373
1383
  if (!this.isActive()) return true;
1374
1384
  if (
1375
1385
  this.state === PlanState.APPROVED ||
@@ -1377,7 +1387,8 @@ export class PlanModeManager extends EventEmitter {
1377
1387
  ) {
1378
1388
  const allowed =
1379
1389
  this.executionLock?.allowedTools.includes(toolName) === true;
1380
- if (!allowed) this._recordBlockedTool(toolName, "execution-lock");
1390
+ if (!allowed && recordBlocked)
1391
+ this._recordBlockedTool(toolName, "execution-lock");
1381
1392
  return allowed;
1382
1393
  }
1383
1394
 
@@ -1386,7 +1397,7 @@ export class PlanModeManager extends EventEmitter {
1386
1397
 
1387
1398
  // Block write tools and log
1388
1399
  if (WRITE_TOOLS.has(toolName)) {
1389
- this._recordBlockedTool(toolName, "planning");
1400
+ if (recordBlocked) this._recordBlockedTool(toolName, "planning");
1390
1401
  return false;
1391
1402
  }
1392
1403
 
@@ -21,13 +21,13 @@ import {
21
21
  buildLinuxBwrapDescriptorScrubbedLaunch,
22
22
  LINUX_BWRAP_DESCRIPTOR_SCRUBBER_PATH,
23
23
  } from "./linux-bwrap-descriptor-launch.js";
24
+ import { linuxTmpfileFlag } from "./linux-open-flags.js";
24
25
 
25
26
  const BWRAP_PATH = "/usr/bin/bwrap";
26
27
  const MAX_ATTESTED_FILE_BYTES = 256 * 1024 * 1024;
27
28
  const MAX_MOUNTINFO_BYTES = 4 * 1024 * 1024;
28
29
  const MOUNTINFO_PATH = "/proc/self/mountinfo";
29
30
  const MOUNT_TOPOLOGY_VERSION = 1;
30
- const O_TMPFILE = 0x410000;
31
31
  const SYSTEM_DESTINATIONS = [
32
32
  "/usr",
33
33
  "/bin",
@@ -1085,7 +1085,7 @@ function createTrustedResources(
1085
1085
  const flags =
1086
1086
  Number(constants.O_RDWR) |
1087
1087
  Number(constants.O_EXCL) |
1088
- Number(constants.O_TMPFILE ?? O_TMPFILE) |
1088
+ linuxTmpfileFlag(constants) |
1089
1089
  Number(constants.O_NOFOLLOW || 0) |
1090
1090
  Number(constants.O_NONBLOCK || 0);
1091
1091
  const fd = track(runtime.fs.openSync("/tmp", flags, 0o400), phase);
@@ -0,0 +1,26 @@
1
+ // Linux defines O_TMPFILE as __O_TMPFILE | O_DIRECTORY. O_DIRECTORY is
2
+ // architecture-specific (0x4000 on ARM64, 0x10000 on x64), while Node does
3
+ // not expose O_TMPFILE on every supported build.
4
+ const LINUX_ANONYMOUS_TMPFILE_BIT = 0x400000;
5
+
6
+ export function linuxTmpfileFlag(constants) {
7
+ const directoryFlag = constants?.O_DIRECTORY;
8
+ if (
9
+ !Number.isSafeInteger(directoryFlag) ||
10
+ directoryFlag <= 0 ||
11
+ (directoryFlag & (directoryFlag - 1)) !== 0
12
+ ) {
13
+ throw new Error("linux_o_directory_unavailable");
14
+ }
15
+
16
+ const fallbackFlag = LINUX_ANONYMOUS_TMPFILE_BIT | directoryFlag;
17
+ const tmpfileFlag = constants.O_TMPFILE ?? fallbackFlag;
18
+ if (
19
+ !Number.isSafeInteger(tmpfileFlag) ||
20
+ (tmpfileFlag & LINUX_ANONYMOUS_TMPFILE_BIT) === 0 ||
21
+ (tmpfileFlag & directoryFlag) !== directoryFlag
22
+ ) {
23
+ throw new Error("linux_o_tmpfile_invalid");
24
+ }
25
+ return tmpfileFlag;
26
+ }
@@ -33,6 +33,7 @@ import {
33
33
  applyLinuxGenericWorkspaceSandbox,
34
34
  isLinuxGenericWorkspaceContract,
35
35
  } from "./linux-generic-bwrap-runtime.js";
36
+ import { linuxTmpfileFlag } from "./linux-open-flags.js";
36
37
  import {
37
38
  buildLinuxBwrapDescriptorScrubbedLaunch,
38
39
  LINUX_BWRAP_DESCRIPTOR_SCRUBBER_PATH,
@@ -288,10 +289,7 @@ const LINUX_ELF_MACHINES = Object.freeze({
288
289
  arm64: 183,
289
290
  riscv64: 243,
290
291
  });
291
- // Linux asm-generic: __O_TMPFILE (0x400000) | O_DIRECTORY (0x010000).
292
- // x64, arm64, and riscv64 use this value; unsupported seccomp architectures
293
- // already fail closed before the anonymous filter is created.
294
- const LINUX_O_TMPFILE = 0x410000;
292
+ // Anonymous snapshots and seccomp filters require the native O_TMPFILE flag.
295
293
  const LINUX_CLONE_NEWNS = 0x00020000;
296
294
  const LINUX_CLONE_NEWUSER = 0x10000000;
297
295
  const LINUX_NAMESPACE_CLONE_FLAGS = LINUX_CLONE_NEWNS | LINUX_CLONE_NEWUSER;
@@ -2728,9 +2726,7 @@ function sameWindowsFileIdentity(left, right) {
2728
2726
  // the deletion authority.
2729
2727
  function sameWindowsFileObjectIdentity(left, right) {
2730
2728
  return (
2731
- left.dev === right.dev &&
2732
- left.ino === right.ino &&
2733
- left.mode === right.mode
2729
+ left.dev === right.dev && left.ino === right.ino && left.mode === right.mode
2734
2730
  );
2735
2731
  }
2736
2732
 
@@ -5853,7 +5849,7 @@ function createLinuxRegularFileSnapshot(
5853
5849
  const writerFlags =
5854
5850
  Number(constants.O_RDWR) |
5855
5851
  Number(constants.O_EXCL) |
5856
- Number(constants.O_TMPFILE ?? LINUX_O_TMPFILE) |
5852
+ linuxTmpfileFlag(constants) |
5857
5853
  Number(constants.O_NOFOLLOW || 0) |
5858
5854
  Number(constants.O_NONBLOCK || 0);
5859
5855
  writerFd = runtime.fs.openSync("/tmp", writerFlags, snapshotSourceMode);
@@ -7442,7 +7438,7 @@ function pinLinuxNetworkSeccompFilter(runtime, options = {}) {
7442
7438
  const flags =
7443
7439
  Number(constants.O_RDWR) |
7444
7440
  Number(constants.O_EXCL) |
7445
- Number(constants.O_TMPFILE ?? LINUX_O_TMPFILE) |
7441
+ linuxTmpfileFlag(constants) |
7446
7442
  Number(constants.O_NOFOLLOW || 0) |
7447
7443
  Number(constants.O_NONBLOCK || 0);
7448
7444
  // An anonymous inode avoids a same-UID process opening the filter by path.
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Recheck the live shell authority while a Docker egress session exists. This
3
+ * is a bounded poll, not a lossless revision subscription: changes that are
4
+ * reverted between checks cannot be observed.
5
+ */
6
+ export function createDockerEgressAuthorityMonitor({
7
+ revalidate,
8
+ abortProxy,
9
+ intervalMs = 500,
10
+ checkTimeoutMs = 5_000,
11
+ }) {
12
+ if (typeof revalidate !== "function" || typeof abortProxy !== "function")
13
+ throw new TypeError("Docker egress authority callbacks are required");
14
+ let revoked = null;
15
+ let session = null;
16
+ let timer = null;
17
+ let checking = null;
18
+ let stopped = false;
19
+ const cleanupTasks = new Set();
20
+
21
+ function trackCleanup(operation) {
22
+ try {
23
+ const task = Promise.resolve(operation());
24
+ cleanupTasks.add(task);
25
+ void task.catch((error) => {
26
+ if (revoked && !revoked.cleanupError) revoked.cleanupError = error;
27
+ });
28
+ void task.finally(() => cleanupTasks.delete(task)).catch(() => {});
29
+ } catch (error) {
30
+ if (revoked && !revoked.cleanupError) revoked.cleanupError = error;
31
+ }
32
+ }
33
+
34
+ function revoke(cause) {
35
+ if (revoked) return revoked;
36
+ revoked =
37
+ cause instanceof Error
38
+ ? cause
39
+ : new Error("Docker egress authority was revoked");
40
+ if (!revoked.code) revoked.code = "CC_DOCKER_EGRESS_AUTHORITY_CHANGED";
41
+ clearTimeout(timer);
42
+ // Latch first, then cut the broker before closing the target containers.
43
+ trackCleanup(abortProxy);
44
+ if (session) trackCleanup(() => session.close());
45
+ return revoked;
46
+ }
47
+
48
+ function assertAuthorized() {
49
+ if (revoked) throw revoked;
50
+ }
51
+
52
+ function attachSession(value) {
53
+ session = value;
54
+ if (revoked) {
55
+ trackCleanup(() => value.close());
56
+ throw revoked;
57
+ }
58
+ }
59
+
60
+ function checkNow() {
61
+ assertAuthorized();
62
+ if (checking) return checking;
63
+ let timeout;
64
+ const deadline = new Promise((_, reject) => {
65
+ timeout = setTimeout(() => {
66
+ reject(
67
+ Object.assign(new Error("Docker egress authority check timed out"), {
68
+ code: "CC_DOCKER_EGRESS_AUTHORITY_TIMEOUT",
69
+ }),
70
+ );
71
+ }, checkTimeoutMs);
72
+ timeout.unref?.();
73
+ });
74
+ const current = Promise.race([Promise.resolve().then(revalidate), deadline])
75
+ .then((accepted) => {
76
+ if (accepted === false)
77
+ throw new Error("Docker egress authority check rejected execution");
78
+ assertAuthorized();
79
+ })
80
+ .catch((error) => {
81
+ throw revoke(error);
82
+ })
83
+ .finally(() => {
84
+ clearTimeout(timeout);
85
+ if (checking === current) checking = null;
86
+ });
87
+ checking = current;
88
+ return current;
89
+ }
90
+
91
+ async function checkFresh() {
92
+ // A check already in flight may have sampled authority before a dispatch
93
+ // or receipt boundary. Drain it, then make a new observation.
94
+ if (checking) await checking;
95
+ assertAuthorized();
96
+ await checkNow();
97
+ }
98
+
99
+ function schedule() {
100
+ if (stopped || revoked) return;
101
+ timer = setTimeout(async () => {
102
+ if (stopped || revoked) return;
103
+ try {
104
+ await checkNow();
105
+ } catch {
106
+ // revoke() already latched the error and started teardown.
107
+ }
108
+ schedule();
109
+ }, intervalMs);
110
+ timer.unref?.();
111
+ }
112
+
113
+ return {
114
+ get revocationError() {
115
+ return revoked;
116
+ },
117
+ start: schedule,
118
+ checkNow,
119
+ checkFresh,
120
+ assertAuthorized,
121
+ attachSession,
122
+ revoke,
123
+ async finish() {
124
+ stopped = true;
125
+ clearTimeout(timer);
126
+ await checkFresh();
127
+ assertAuthorized();
128
+ },
129
+ stop() {
130
+ stopped = true;
131
+ clearTimeout(timer);
132
+ },
133
+ async awaitCleanup() {
134
+ await Promise.allSettled([...cleanupTasks]);
135
+ },
136
+ };
137
+ }