chainlesschain 0.166.121 → 0.166.125

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/README.md +23 -3
  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-DYEi6MCC.js → AIOps-BP7bvhgw.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-kLXp42k3.js → ActionButton-CRSlqvUW.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-BOgKma-R.js → Analytics-Uh-IHXPq.js} +3 -3
  8. package/src/assets/web-panel/assets/{AppLayout-D8z-uRpv.js → AppLayout-BV2iUfEI.js} +5 -5
  9. package/src/assets/web-panel/assets/Artifacts-INNQe4tS.js +1 -0
  10. package/src/assets/web-panel/assets/{Audit-GjRCAv0V.js → Audit-CYX8n3_m.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-CpQcMxi1.js → BackgroundAgents-BqmXROox.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-BuQNWrhT.js → Backup-BnVDRZIg.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-QuOtSaFy.js → BaseInput-Bb6UmdRt.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-BC0W1L_3.js → Chat-hz3OIIbK.js} +5 -5
  15. package/src/assets/web-panel/assets/{ChatBubbleRenderer-B6SagRW5.js → ChatBubbleRenderer-DGNJTSsQ.js} +1 -1
  16. package/src/assets/web-panel/assets/{Checkbox-BsdQ1Ku0.js → Checkbox-CQikB2We.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-CPsAAoqV.js → Codegen-B2nJ-skp.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-C9LgCMN0.js → Col-klIv1AGo.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-Xj0vGvD5.js → Community-Di-kPX__.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-CXoqTgrf.js → Compact-BxqPTGPL.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-CeshjrVy.js → Compliance-BGMFZVuF.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-DjXRRrg1.js → Cowork-mqWGIwSR.js} +3 -3
  23. package/src/assets/web-panel/assets/{Cron-vGoU419C.js → Cron-DR5O38TG.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-DZaChZ5s.js → Crosschain-D6hPm17z.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-BojMQqQM.js → DID-DoWPTVwK.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-pKAYt4UL.js → Dashboard-BPL8xNW_.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-CqJa8N05.js → Dropdown-CiSVSWe5.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-fZ4_KAvw.js → EmailListRenderer-xx2j4JdY.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-C3kenWes.js → EvolutionSettings-C8hEbz_k.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-B3tqj1Hu.js → FamilyGuardDashboard-DyXIXJ_A.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation-CS1M1oJN.js → Federation-Byr6DvRk.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-C5q-KYPu.js → FormItemContext-CQGnmQJv.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-Bl43BLxD.js → GenericCardRenderer-hQguQVZ3.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-BiN2Uo-z.js → Git-BecJOnx6.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-weglJWG4.js → Governance-BJddTPXq.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-B4qBxVSK.js → Inference-D24icM6B.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-iePl1vLv.js → KnowledgeGraph-Do22sAeu.js} +1 -1
  38. package/src/assets/web-panel/assets/{Logs-t2lKo4HX.js → Logs-hUuWosrZ.js} +2 -2
  39. package/src/assets/web-panel/assets/MarkdownRenderer-Bjl9v5wW.js +1 -0
  40. package/src/assets/web-panel/assets/{Marketplace-D0Y_OmXs.js → Marketplace-Dp5LwB9H.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-B7zxPsFE.js → McpTools-BiVU1FMc.js} +3 -3
  42. package/src/assets/web-panel/assets/{Memory-DDpmVHpl.js → Memory-CIxR4kQp.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-BLXNdKH0.js → MobileBridge-BfuDQmNF.js} +1 -1
  44. package/src/assets/web-panel/assets/MobileProjects-DjmNE-wQ.js +1 -0
  45. package/src/assets/web-panel/assets/{Mtc-7OFckDUe.js → Mtc-CTvkHtBz.js} +5 -5
  46. package/src/assets/web-panel/assets/{MtcAudit-2QFWPXVR.js → MtcAudit-DkF8di0r.js} +4 -4
  47. package/src/assets/web-panel/assets/{Multisig-D9opE0iP.js → Multisig-BsI3rR_s.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-jOD2E7Rs.js → NLProgramming-DUE2RUBH.js} +1 -1
  49. package/src/assets/web-panel/assets/Notes-CZH-8mLz.js +7 -0
  50. package/src/assets/web-panel/assets/{NotificationSettings-Itz3X5DM.js → NotificationSettings-BWrE5Fdu.js} +1 -1
  51. package/src/assets/web-panel/assets/OrderTableRenderer-DBkeHV6o.js +1 -0
  52. package/src/assets/web-panel/assets/{Organization-CKgpbSoy.js → Organization-GfJxDuZd.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-C0Pi9LvB.js → Overflow-DVpJGkTd.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-DdIDorai.js → P2P-DLWmK0no.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-DVJz6cGr.js → PdhVaultBrowser-CgJZVTlX.js} +5 -5
  56. package/src/assets/web-panel/assets/{Permissions-D19dtcL0.js → Permissions-CutFqMXH.js} +4 -4
  57. package/src/assets/web-panel/assets/{PersonalDataHub-A-QMQUJW.js → PersonalDataHub-CfqM7ZpK.js} +5 -5
  58. package/src/assets/web-panel/assets/{Pipeline-7YF1yhkH.js → Pipeline-ie5hQZ0r.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-CcsoAU7d.js → Privacy-B1KdLF7O.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-CMU0Z5in.js → ProjectInit-CRPPcQzY.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-D3l0RXK6.js → ProjectSettings-Do6fMBWF.js} +2 -2
  62. package/src/assets/web-panel/assets/{Projects-BCcHN_fQ.js → Projects-BOB6rWxT.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-DB0pw3DM.js → Providers-CgZd2eBh.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-SVvLX_VH.js → QrScannerModal-DrPG8IxK.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-B4dJgwL4.js → QuickAsk-D_uU-5Ph.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-9GxSlYt5.js → Recommend-DDId0K_9.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-C5vzfpTM.js → RemoteSession-BnJcoKDQ.js} +3 -3
  68. package/src/assets/web-panel/assets/{Reputation-7AeSkJz1.js → Reputation-BnnmzZb0.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-Dc3RwqWR.js → Row-ChHU3TqH.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-Y8iSgp9o.js → RssFeed-DeiKl8k2.js} +3 -3
  71. package/src/assets/web-panel/assets/{Search-bxkz-UtW.js → Search-Cd0Byr5Y.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-cs5yf-AE.js → Security-CHqAAtUE.js} +4 -4
  73. package/src/assets/web-panel/assets/{Services-2va9CJFi.js → Services-CaC6ZaY3.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-n8HOSPcE.js → Skeleton-Do4HAN0a.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-BcV5aWYc.js → Skills-CoElvXB8.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-B73zPlDG.js → Sla-jJiTPvtG.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-OhhEZsxi.js → SpeechSettings-OXfemdVC.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-4HT8618-.js → SyncSettings-JPkmyUwi.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-Dw7nEG94.js → Tasks-BGG7ffmW.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-BX7zHI9M.js → Templates-DeK9-2LY.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-SrFN1ZTF.js → Tenant-BTQSUiAe.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-B-ohas9S.js → Terminal-nSeD_GjQ.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-exEpcIMD.js → TimelineRenderer-DWj9DOd9.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-Fucr0-Ek.js → Tokens-CNi7fvHT.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger-CPlH4qBU.js → Trigger-qXYBuAUZ.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-DCNisGxI.js → Trust-UMIDxWBQ.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-Crf4bea0.js → UkeySign-VWmZ_L_a.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-JAq5jURW.js → VideoEditing-Dwlrr7Ju.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-BaOfcyqF.js → Wallet-DY25E1_s.js} +4 -4
  90. package/src/assets/web-panel/assets/{WebAuthn-DMtCTRsk.js → WebAuthn-Cg4ZH9YH.js} +5 -5
  91. package/src/assets/web-panel/assets/{WorkflowEditor-BAKiA5p0.js → WorkflowEditor-LB5NqSGq.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-D3MA12Z1.js → chat-CaCuVsD2.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-C7xYOAG-.js → colors-BG2JI5F8.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-ClybpIV-.js → compact-item-CdTkLvXf.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-Dyp-8LSs.js → createContext-Wv41oeUq.js} +1 -1
  96. package/src/assets/web-panel/assets/devWarning-CgQHHMHl.js +1 -0
  97. package/src/assets/web-panel/assets/{hasIn-D4xsaFD1.js → hasIn-B7Uw6Y5_.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-DNeHM7F3.js → index--q3_jHhu.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CHJUN9dR.js → index-0DcGfrpr.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DT57ltH_.js → index-27hwVsUl.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-nV4PAkOC.js → index-6TrZH59x.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-D5aA2hc_.js → index-98U0Akgy.js} +1 -1
  103. package/src/assets/web-panel/assets/index-B5iepofq.js +1 -0
  104. package/src/assets/web-panel/assets/{index-Bn8O_DC1.js → index-B68Kr1A0.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-BpLWtYzy.js → index-BLLVYN1S.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-_9loRV63.js → index-BN8FIy9Z.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-D6GFzqYv.js → index-BONqMz21.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-CiRxc4Y0.js → index-BWuKDmL6.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-BagQvwmy.js → index-BfpOUAjn.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-BcmJBS7G.js → index-ByGwOQL-.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-BKyEhMUl.js → index-BzQ1hohb.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-D6ETHrUX.js → index-C58rpLKM.js} +3 -3
  113. package/src/assets/web-panel/assets/{index-ZmHm5rHI.js → index-CAG1C05A.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-B7jiI-31.js → index-CCVpB1HT.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-CS7E_bsQ.js → index-CDA9_4jw.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DuGdqMTo.js → index-CDuOf0Sk.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-DJVzi25x.js → index-CZCE6USm.js} +1 -1
  118. package/src/assets/web-panel/assets/index-C_pAjUXd.js +1 -0
  119. package/src/assets/web-panel/assets/{index-CSOgUWox.js → index-Cd9QfEPf.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CvsWZZzU.js → index-CeBODQXm.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-DWHngGhj.js → index-ChJPZoiz.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-Cvwa0445.js → index-Cnkd1twb.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-BmBqpU1f.js → index-D6wz6Lj3.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-Rk6e-ajq.js → index-DTWvW7Q9.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DDDP6-gb.js → index-DyBgFbOX.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-avRJM_PM.js → index-DyddYZY6.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CNBhQp0_.js → index-FYb9E4P0.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DMlcfkHz.js → index-Hcx0wbx7.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-B-eU0wCl.js → index-X3kmZCFh.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-BfZW-iaH.js → index-XVz1pdi4.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-BMybVxE3.js → index-a811Rdaf.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-v5sQDXJx.js → index-m9IlVQwa.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-CxSVA3yj.js → index-oICFzKT6.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-KvhXXaLi.js → index-tyw6dj9r.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-ciHSB-CC.js → index-xZOajA5D.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-faSaFsUp.js → index-zEDHN35C.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-xrojGNIo.js → initDefaultProps-rhNcfOEv.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-DzhD1BmE.js → motion-C3Ot7PRG.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-BAq6xac8.js → move-BSbZkByI.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-CbbkHqsY.js → mtc-parser-BHcarv2m.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-DvK7nt_t.js → omit-CH8lRpcG.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-B8N30ZEF.js → pickAttrs-DiLvg1NK.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-cUxaRoU7.js → placementArrow-DXqb9Lm6.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-CxMioios.js → responsiveObserve-qhZCsCCH.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-CQx7R0mc.js → slide-amPl47DO.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-kUphM3-c.js → statusUtils-BIM6xD4_.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-BrGZ1xWq.js → styleChecker-BQM4w1nF.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-Sb5Vj_ag.js → useFlexGapSupport-CQLRdXAd.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-DrMnDCO5.js → useFs-CjgDjsYN.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-C48ZIkOr.js → usePersonalDataHub-BNs5KK4A.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode-BQP6PZY_.js → vnode-CEORzacS.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-DOJny9bH.js → zoom-CJco15He.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/data/changelog.json +26 -0
  155. package/src/lib/evolution/evidence-json-text.js +241 -18
  156. package/src/lib/evolution/evolution-evidence-projector.js +55 -4
  157. package/src/lib/runnable-provider.js +1 -1
  158. package/src/assets/web-panel/assets/Artifacts-TFX0t24T.js +0 -1
  159. package/src/assets/web-panel/assets/MarkdownRenderer-CxSrBHYC.js +0 -1
  160. package/src/assets/web-panel/assets/MobileProjects-CF6DqNfk.js +0 -1
  161. package/src/assets/web-panel/assets/Notes-CgtysN6L.js +0 -7
  162. package/src/assets/web-panel/assets/OrderTableRenderer-C2ylWgSI.js +0 -1
  163. package/src/assets/web-panel/assets/devWarning-CTazgK0z.js +0 -1
  164. package/src/assets/web-panel/assets/index-CrZlBv0O.js +0 -1
  165. package/src/assets/web-panel/assets/index-DyNp52Uj.js +0 -1
@@ -1 +1 @@
1
- import{J as o,h}from"./index-D6ETHrUX.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-C58rpLKM.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-D6ETHrUX.js";import{i as e}from"./motion-DzhD1BmE.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-C58rpLKM.js";import{i as e}from"./motion-C3Ot7PRG.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-D6ETHrUX.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-C58rpLKM.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-D6ETHrUX.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-C58rpLKM.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-BrGZ1xWq.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-BQM4w1nF.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-D6ETHrUX.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-C58rpLKM.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-D6ETHrUX.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-C58rpLKM.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-D6ETHrUX.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-C58rpLKM.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-D6ETHrUX.js";import{i as f}from"./motion-DzhD1BmE.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-C58rpLKM.js";import{i as f}from"./motion-C3Ot7PRG.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-D6ETHrUX.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-C58rpLKM.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.125",
7
+ "cliVersions": ["0.166.125"],
8
+ "date": "2026-10-26",
9
+ "title": "",
10
+ "sections": [
11
+ {
12
+ "heading": "Fixed - cc CLI 0.166.125: source expressions in completed tool history (candidate, 2026-10-26)",
13
+ "body": "- Recognize Python list/object unpacking, JavaScript spread and bounded unary/binary expressions in code fields so completed tool history can reach the next model turn.\n- Keep malformed/duplicate JSON and projection budgets enforced, retain conservative sensitive-source guards, and preserve v7 evidence verification with versioned v8 rules.\n- Add regressions for object/serialized arguments, paired results, fenced code, sensitive assignment wrappers and real Agent continuation without tool replay. Child dependency pins are unchanged. Publication requires exact-source three-OS CLI CI and Strict Sandbox followed by Actions OIDC."
14
+ }
15
+ ]
16
+ },
17
+ {
18
+ "productVersion": null,
19
+ "cliVersion": "0.166.123",
20
+ "cliVersions": ["0.166.123"],
21
+ "date": "2026-10-26",
22
+ "title": "",
23
+ "sections": [
24
+ {
25
+ "heading": "Fixed - cc CLI 0.166.123: model selection, Windows first-token latency and Python evidence (candidate, 2026-10-26)",
26
+ "body": "- Keep inherited `fable[1m]` Anthropic settings from overriding a configured Volcengine model; preserve explicit model choices and compatible provider settings.\n- Reuse an isolated Windows ACL worker without caching authority results. Recheck current tokens, paths and ACLs on every operation; retain bounded response binding, process-kill deadlines and failure cleanup. Use monotonic request deadlines and a stable child working directory.\n- Admit bounded Python f-string table-label alignment in Agent tool evidence instead of rejecting it as malformed JSON. Preserve sensitive-key handling, strict JSON parsing, cumulative budgets and historical v6 verification through the new v7 projection rules.\n- Pin Session Core 0.3.24, publish and verify the child before the CLI through GitHub Actions OIDC, and require exact-source Linux, Windows and macOS CLI CI and CLI Strict Sandbox before publication. Publish and verify before merging the release PR.\n- Retire unpublished candidate 0.166.122 after CI found stale bundled changelog data and Windows transport test and lifecycle issues. Retain its immutable source tag. Existing IDE pairing remains VS Code 0.37.161 / JetBrains 0.4.178; acceptance remains 32/45 with 13 unfinished, NOT_PAID_READY / NOT_ADMITTED / HOLD."
27
+ }
28
+ ]
29
+ },
4
30
  {
5
31
  "productVersion": null,
6
32
  "cliVersion": "0.166.121",
@@ -110,6 +110,68 @@ function assignmentKeyBefore(text, start, end) {
110
110
  return keyEnd > index + 1 ? text.slice(index + 1, keyEnd) : undefined;
111
111
  }
112
112
 
113
+ // New expression syntax retains all preceding decoded names, including targets
114
+ // across calls, destructuring and nested statements. Without a language parser,
115
+ // newline/semicolon cannot prove an enclosing sensitive assignment has ended.
116
+ // This check applies only to newly admitted syntax; historical code keeps its
117
+ // existing scanner. The cursor and shared budgets bound the additional work.
118
+ function createSourcePrefixTracker(text, requireSafeKey, rejectOpaque) {
119
+ let cursor = 0;
120
+ let candidates = [];
121
+ return (until) => {
122
+ while (cursor < until) {
123
+ const char = text[cursor];
124
+ if (char === "`") {
125
+ let end = cursor + 1;
126
+ for (; end < text.length; end++) {
127
+ if (text[end] === "\\") end++;
128
+ else if (text[end] === "`") break;
129
+ }
130
+ // Template interpolation has its own grammar. Do not grant new source
131
+ // semantics inside it without a decoder for its escapes and bindings.
132
+ if (end >= until) rejectOpaque();
133
+ cursor = end + 1;
134
+ continue;
135
+ }
136
+ if (char === '"' || char === "'") {
137
+ const literal = (
138
+ char === '"' ? CODE_DOUBLE_QUOTED_PREFIX : CODE_SINGLE_QUOTED_PREFIX
139
+ ).exec(text.slice(cursor))?.[0];
140
+ if (!literal) {
141
+ cursor++;
142
+ continue;
143
+ }
144
+ candidates.push({ literal });
145
+ cursor += literal.length;
146
+ continue;
147
+ }
148
+ const name =
149
+ /^(?:[$_\p{ID_Start}]|\\u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\}))(?:[$\p{ID_Continue}]|\\u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\}))*/u.exec(
150
+ text.slice(cursor),
151
+ )?.[0];
152
+ if (name) {
153
+ candidates.push({ key: name });
154
+ cursor += name.length;
155
+ continue;
156
+ }
157
+ if (text.slice(cursor, cursor + 2) === "/*") {
158
+ const end = text.indexOf("*/", cursor + 2);
159
+ if (end < 0 || end >= until) rejectOpaque();
160
+ cursor = end + 2;
161
+ continue;
162
+ }
163
+ if (char === "#" && /\s/u.test(text[cursor + 1] ?? "")) {
164
+ const newline = text.indexOf("\n", cursor);
165
+ cursor = newline < 0 ? text.length : newline;
166
+ continue;
167
+ }
168
+ cursor++;
169
+ }
170
+ for (const entry of candidates) requireSafeKey(entry);
171
+ candidates = [];
172
+ };
173
+ }
174
+
113
175
  export function createEvidenceJsonTextBoundary(
114
176
  fail,
115
177
  policy = EVIDENCE_JSON_POLICY,
@@ -134,6 +196,38 @@ export function createEvidenceJsonTextBoundary(
134
196
  Object.defineProperty(error, PARSE_FAILURE, { value: kind });
135
197
  throw error;
136
198
  };
199
+ // Source syntax is admitted only at a known code field. Require an operand:
200
+ // a bare spread/operator must never turn malformed JSON into plain text.
201
+ // Do not admit templates or regex literals: their escapes are not decoded by
202
+ // this boundary. Numeric operands retain the strict JSON number budget.
203
+ const sourceOperand = (text) => {
204
+ const rest = text.trimStart();
205
+ if (/^[$_\p{ID_Start}('"[{]/u.test(rest)) return true;
206
+ const token = /^(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/u.exec(rest)?.[0];
207
+ if (!token || /[\w$.]/u.test(rest[token.length] ?? "")) return false;
208
+ const number = Number(token);
209
+ if (
210
+ !Number.isFinite(number) ||
211
+ (Number.isInteger(number) && !Number.isSafeInteger(number))
212
+ )
213
+ parserReject("budget");
214
+ return true;
215
+ };
216
+ const sourcePrefix = (text, objectSpread = false) => {
217
+ const token = (
218
+ objectSpread ? /^(?:\*\*|\.\.\.)/u : /^(?:\.\.\.|\*{1,2}|[+!~]|-(?!\d))/u
219
+ ).exec(text)?.[0];
220
+ return token !== undefined && sourceOperand(text.slice(token.length));
221
+ };
222
+ const sourceContinuation = (text) => {
223
+ // Existing call/member/conditional syntax keeps its historical handling.
224
+ if (/^[.(?]/u.test(text)) return true;
225
+ const token =
226
+ /^(?:\*\*|\/\/|>>>?|<<|===?|!==?|<=?|>=?|&&?|\|\|?|[-+*/%&|^]|(?:and|or|if|in|is|not)\b)/u.exec(
227
+ text,
228
+ )?.[0];
229
+ return token !== undefined && sourceOperand(text.slice(token.length));
230
+ };
137
231
  const decodeSourceString = (literal, quote) => {
138
232
  let output = "";
139
233
  for (let index = 1; index < literal.length - 1; index++) {
@@ -206,7 +300,11 @@ export function createEvidenceJsonTextBoundary(
206
300
  }
207
301
  return output;
208
302
  };
209
- const parser = (text, start, { allowSingleQuotedStrings = false } = {}) => {
303
+ const parser = (
304
+ text,
305
+ start,
306
+ { allowSingleQuotedStrings = false, allowSourceExpressions = false } = {},
307
+ ) => {
210
308
  let index = start;
211
309
  const whitespace = () => {
212
310
  while (/[ \t\r\n]/u.test(text[index] ?? "x")) index++;
@@ -259,6 +357,8 @@ export function createEvidenceJsonTextBoundary(
259
357
  while (index < text.length) {
260
358
  let key;
261
359
  if (!array) {
360
+ if (allowSourceExpressions && sourcePrefix(text.slice(index), true))
361
+ parserReject("source-expression");
262
362
  if (
263
363
  text[index] !== '"' &&
264
364
  !(allowSingleQuotedStrings && text[index] === "'")
@@ -286,6 +386,12 @@ export function createEvidenceJsonTextBoundary(
286
386
  return output;
287
387
  }
288
388
  if (text[index] !== ",") {
389
+ if (
390
+ allowSourceExpressions &&
391
+ !/^[.(+*/?]/u.test(text[index] ?? "") &&
392
+ sourceContinuation(text.slice(index))
393
+ )
394
+ parserReject("source-expression");
289
395
  // Slices, comprehensions and member/call/arithmetic expressions
290
396
  // are source syntax. Missing delimiters and trailing commas stay
291
397
  // malformed JSON, including in run_code output.
@@ -307,6 +413,8 @@ export function createEvidenceJsonTextBoundary(
307
413
  text.slice(index),
308
414
  )?.[0];
309
415
  if (!token) {
416
+ if (allowSourceExpressions && sourcePrefix(text.slice(index)))
417
+ parserReject("source-expression");
310
418
  return parserReject(
311
419
  /^[A-Za-z_$][A-Za-z0-9_$]*|^\(/u.test(text.slice(index))
312
420
  ? "code-expression"
@@ -314,6 +422,14 @@ export function createEvidenceJsonTextBoundary(
314
422
  );
315
423
  }
316
424
  index += token.length;
425
+ if (
426
+ allowSourceExpressions &&
427
+ /^-?\d/u.test(token) &&
428
+ (/[\p{ID_Continue}$]/u.test(text[index] ?? "") ||
429
+ (text[index] === "." &&
430
+ !/^\.{1,2}[$_\p{ID_Start}]/u.test(text.slice(index))))
431
+ )
432
+ parserReject("syntax");
317
433
  // A primitive prefix is not a complete source expression. In particular,
318
434
  // redacting only `true` from trueSecretValue would expose the suffix of
319
435
  // a sensitive quoted assignment. Historical policies retain their parser.
@@ -344,6 +460,7 @@ export function createEvidenceJsonTextBoundary(
344
460
  layer = 0,
345
461
  objectOnly = false,
346
462
  codeText = false,
463
+ pythonFString = false,
347
464
  fencedCodeLanguages = null,
348
465
  visit,
349
466
  plain,
@@ -370,11 +487,35 @@ export function createEvidenceJsonTextBoundary(
370
487
  bytes += Buffer.byteLength(text, "utf8");
371
488
  if (bytes > policy.maxDecodedBytes)
372
489
  reject("Agent model JSON text exceeds its budget");
373
- const transform = (parsed) => {
490
+ const transform = (parsed, textContext) => {
374
491
  if (layer >= policy.maxLayers)
375
492
  reject("Agent model JSON text exceeds its budget");
376
- return visit(parsed, layer + 1);
493
+ return visit(parsed, layer + 1, textContext);
377
494
  };
495
+ const requireSafeSourceKey = (key) => {
496
+ const probe = Object.defineProperty(Object.create(null), key, {
497
+ value: "source-expression",
498
+ enumerable: true,
499
+ });
500
+ if (!equal(probe, transform(probe)))
501
+ reject(
502
+ "Agent model code expression under a sensitive key cannot be safely projected",
503
+ );
504
+ };
505
+ const requireSafeSourceAssignments = createSourcePrefixTracker(
506
+ text,
507
+ ({ key, literal }) => {
508
+ if (literal) {
509
+ const reader = parser(literal, 0, { allowSingleQuotedStrings: true });
510
+ key = reader.value();
511
+ } else key = decodeSourceString(`"${key}"`, '"');
512
+ requireSafeSourceKey(key);
513
+ },
514
+ () =>
515
+ reject(
516
+ "Agent model code expression under an opaque source context cannot be safely projected",
517
+ ),
518
+ );
378
519
  if (objectOnly) {
379
520
  const reader = parser(text, 0);
380
521
  let parsed;
@@ -406,6 +547,56 @@ export function createEvidenceJsonTextBoundary(
406
547
  char === "{" || char === "["
407
548
  ? text.slice(index + 1).match(/^\s*(.)/u)?.[1]
408
549
  : undefined;
550
+ // Python's f"{'branch':<52}" formats a literal label; the colon is not
551
+ // a JSON key/value separator. Grant this meaning only while scanning an
552
+ // explicitly prefixed source string, with a complete bounded format.
553
+ // Escaped braces, arbitrary expressions and malformed JSON retain the
554
+ // strict scanner. Sensitive decoded labels still fail closed.
555
+ if (
556
+ codeText &&
557
+ pythonFString &&
558
+ policy.pythonFStringPolicy === "bounded-static-label-alignment-v1" &&
559
+ char === "{" &&
560
+ text[index - 1] !== "{"
561
+ ) {
562
+ const literalStart = index + 1;
563
+ const literal =
564
+ CODE_SINGLE_QUOTED_PREFIX.exec(text.slice(literalStart))?.[0] ??
565
+ CODE_DOUBLE_QUOTED_PREFIX.exec(text.slice(literalStart))?.[0];
566
+ const suffix = literal
567
+ ? /^:[<>^]\d{1,4}s?\}/u.exec(
568
+ text.slice(literalStart + literal.length),
569
+ )?.[0]
570
+ : undefined;
571
+ if (suffix) {
572
+ const reader = parser(text, literalStart, {
573
+ allowSingleQuotedStrings: true,
574
+ });
575
+ let label;
576
+ try {
577
+ label = reader.value();
578
+ } catch (error) {
579
+ rejectParseFailure(error);
580
+ }
581
+ const probe = Object.defineProperty(Object.create(null), label, {
582
+ value: "source-expression",
583
+ enumerable: true,
584
+ });
585
+ if (!equal(probe, transform(probe)))
586
+ reject(
587
+ "Agent model code expression under a sensitive key cannot be safely projected",
588
+ );
589
+ const safe = transform(label);
590
+ const end = reader.end() + suffix.length;
591
+ const replacement = equal(label, safe)
592
+ ? text.slice(index, end)
593
+ : `{${JSON.stringify(safe)}${suffix}`;
594
+ output += plain(text.slice(plainStart, index)) + replacement;
595
+ index = end;
596
+ plainStart = index;
597
+ continue;
598
+ }
599
+ }
409
600
  // Human-readable status markers are not JSON arrays. Only complete,
410
601
  // bounded numeric formats qualify; quotes, escapes, commas and nested
411
602
  // containers must still go through strict parsing. Leave these spans in
@@ -465,6 +656,9 @@ export function createEvidenceJsonTextBoundary(
465
656
  // A recognized container is always tried as strict JSON first, even
466
657
  // inside code. Only an explicit non-JSON token allows literal scanning.
467
658
  allowSingleQuotedStrings: codeText && !container,
659
+ allowSourceExpressions:
660
+ codeText &&
661
+ policy.sourceExpressionPolicy === "bounded-source-tokens-v1",
468
662
  });
469
663
  let parsed;
470
664
  let valueEnd;
@@ -473,7 +667,16 @@ export function createEvidenceJsonTextBoundary(
473
667
  valueEnd = reader.end();
474
668
  } catch (error) {
475
669
  const kind = error?.[PARSE_FAILURE];
476
- if (!codeText || kind !== "code-expression") rejectParseFailure(error);
670
+ if (
671
+ !codeText ||
672
+ !["code-expression", "source-expression"].includes(kind)
673
+ )
674
+ rejectParseFailure(error);
675
+ if (kind === "source-expression") {
676
+ requireSafeSourceAssignments(index);
677
+ const key = assignmentKeyBefore(text, plainStart, index);
678
+ if (key) requireSafeSourceKey(key);
679
+ }
477
680
  // Python/JavaScript containers may contain single quotes or expressions.
478
681
  // Scan their literals individually, preserving nested strict JSON scans.
479
682
  // Keep consumed nodes charged so repeated fallback cannot reset budgets.
@@ -487,14 +690,7 @@ export function createEvidenceJsonTextBoundary(
487
690
  // An expression cannot be visited as a decoded JSON value. Preserve
488
691
  // the decoded key boundary: otherwise a password list/call expression
489
692
  // could expose its string literals when scanning resumes inside it.
490
- const probe = Object.defineProperty(Object.create(null), parsed, {
491
- value: "source-expression",
492
- enumerable: true,
493
- });
494
- if (!equal(probe, transform(probe)))
495
- reject(
496
- "Agent model code expression under a sensitive key cannot be safely projected",
497
- );
693
+ requireSafeSourceKey(parsed);
498
694
  };
499
695
  if (pair) {
500
696
  const rhsStart = reader.end() + 1;
@@ -509,16 +705,23 @@ export function createEvidenceJsonTextBoundary(
509
705
  pair = false;
510
706
  } else {
511
707
  try {
512
- const rhsContainer = /^[ \t\r\n]*[\[{]/u.test(text.slice(rhsStart));
708
+ const rhsContainer = /^[ \t\r\n]*[[{]/u.test(text.slice(rhsStart));
513
709
  const rhs = parser(text, rhsStart, {
514
710
  allowSingleQuotedStrings: codeText && !rhsContainer,
711
+ allowSourceExpressions:
712
+ codeText &&
713
+ policy.sourceExpressionPolicy === "bounded-source-tokens-v1",
515
714
  });
516
715
  const entry = rhs.value();
517
716
  const entryEnd = rhs.end();
518
717
  rhs.whitespace();
519
718
  if (
520
719
  (codeText || policy.proseQuotedPairPolicy) &&
521
- /^[+\-*/%?.([<>&|^=!"']/u.test(text[rhs.end()] ?? "")
720
+ (/^[+\-*/%?.([<>&|^=!"']/u.test(text[rhs.end()] ?? "") ||
721
+ (codeText &&
722
+ policy.sourceExpressionPolicy ===
723
+ "bounded-source-tokens-v1" &&
724
+ sourceContinuation(text.slice(rhs.end()))))
522
725
  )
523
726
  requireSafeExpressionKey();
524
727
  parsed = Object.defineProperty(Object.create(null), parsed, {
@@ -531,7 +734,8 @@ export function createEvidenceJsonTextBoundary(
531
734
  if (kind === undefined) throw error;
532
735
  if (
533
736
  (!codeText && !policy.proseQuotedPairPolicy) ||
534
- kind !== "code-expression"
737
+ (kind !== "code-expression" &&
738
+ !(codeText && kind === "source-expression"))
535
739
  )
536
740
  rejectParseFailure(error);
537
741
  // A standalone prose label or a source key followed by an
@@ -544,11 +748,24 @@ export function createEvidenceJsonTextBoundary(
544
748
  }
545
749
  }
546
750
  }
751
+ const pythonFStringPrefix =
752
+ codeText &&
753
+ quoted &&
754
+ !pair &&
755
+ policy.pythonFStringPolicy === "bounded-static-label-alignment-v1"
756
+ ? /(?:^|[^\p{ID_Continue}$])(f|fr|rf)$/iu.exec(
757
+ text.slice(Math.max(0, index - 3), index),
758
+ )?.[1]
759
+ : undefined;
547
760
  const assignmentKey =
548
761
  quoted && !pair
549
762
  ? // Scan backward once; an unanchored greedy key regex would retry at
550
763
  // every offset of a long ordinary prefix before a quoted fragment.
551
- assignmentKeyBefore(text, plainStart, index)
764
+ assignmentKeyBefore(
765
+ text,
766
+ plainStart,
767
+ index - (pythonFStringPrefix?.length ?? 0),
768
+ )
552
769
  : undefined;
553
770
  let end = valueEnd;
554
771
  if (pair) {
@@ -561,12 +778,18 @@ export function createEvidenceJsonTextBoundary(
561
778
  enumerable: true,
562
779
  });
563
780
  }
564
- const safe = transform(parsed);
781
+ const safe = transform(
782
+ parsed,
783
+ pythonFStringPrefix ? { pythonFString: true } : undefined,
784
+ );
565
785
  if (
566
786
  (codeText || policy.proseQuotedPairPolicy) &&
567
787
  assignmentKey &&
568
788
  !equal(parsed, safe) &&
569
- /^\s*[+\-*/%?.([<>&|^=!"']/u.test(text.slice(end))
789
+ (/^\s*[+\-*/%?.([<>&|^=!"']/u.test(text.slice(end)) ||
790
+ (codeText &&
791
+ policy.sourceExpressionPolicy === "bounded-source-tokens-v1" &&
792
+ sourceContinuation(text.slice(end).trimStart())))
570
793
  )
571
794
  reject(
572
795
  "Agent model code expression under a sensitive key cannot be safely projected",