chainlesschain 0.166.118 → 0.166.123

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 (163) hide show
  1. package/README.md +20 -2
  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-BGySwMIP.js → AIOps-C-tjdqdU.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-Chn7fBLr.js → ActionButton-BO-Va_7P.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-ORH7UkGa.js → Analytics-C4abdfMl.js} +3 -3
  8. package/src/assets/web-panel/assets/{AppLayout-8xV4jWjP.js → AppLayout-R0PVTt_L.js} +5 -5
  9. package/src/assets/web-panel/assets/{Artifacts-26SBK-x-.js → Artifacts-Bx9i0fTm.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-CtXpqbXg.js → Audit-Ben_vkQv.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-C5zLvQis.js → BackgroundAgents-DYXk5NF7.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-C93xY4vO.js → Backup-DWvhnz4a.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-DpVCHfAn.js → BaseInput-Cnt7Lsw0.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-DM0LblR2.js → Chat-D1IxtF3O.js} +5 -5
  15. package/src/assets/web-panel/assets/{ChatBubbleRenderer-unlQUF1T.js → ChatBubbleRenderer-D_LhAwtF.js} +1 -1
  16. package/src/assets/web-panel/assets/{Checkbox-BsAt3cKR.js → Checkbox-C4Mq1fW_.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-E_kp4KFd.js → Codegen-DxNiYuf2.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-6msR3T6I.js → Col-Er2GMIwp.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-PyX9c5D-.js → Community-DY77zEtx.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-7G1bVDSH.js → Compact-vGbhGcj5.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-DcHN7GlD.js → Compliance-D_apMw_L.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-WUIHJYDx.js → Cowork-CzpeLIS0.js} +3 -3
  23. package/src/assets/web-panel/assets/{Cron-CWgCbptg.js → Cron-DkJn0etH.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-BzKZ6roD.js → Crosschain-xUoFR9Kc.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-r7zxeItn.js → DID-CK6pStH-.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-D3pBiN2H.js → Dashboard-CMmMmKdI.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-C4otRJlZ.js → Dropdown-DcuW2bMi.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-CzDTC8lm.js → EmailListRenderer-Bala_XmD.js} +1 -1
  29. package/src/assets/web-panel/assets/EvolutionSettings-BdSnL7Vs.js +1 -0
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-BKdEyuiR.js → FamilyGuardDashboard-Tv2-X2Dt.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation-dsI-xcpf.js → Federation-BLpjJPtu.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-CEEb1fMR.js → FormItemContext-Z0hL2bcM.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-D_mfO3Ts.js → GenericCardRenderer-kOH9PidD.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-CBwr2ZI3.js → Git-DnqdUfjy.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-D-Wy2Jjr.js → Governance-CSFh7-6e.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-B4Yk_IRx.js → Inference-6c0j3NP8.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-DoI7bi6m.js → KnowledgeGraph-DqlWAC7d.js} +1 -1
  38. package/src/assets/web-panel/assets/{Logs-Ce1IiKAj.js → Logs-pffKkPA3.js} +2 -2
  39. package/src/assets/web-panel/assets/{MarkdownRenderer-GND_8y0V.js → MarkdownRenderer-DpyiXUmk.js} +1 -1
  40. package/src/assets/web-panel/assets/{Marketplace-CsIEByzK.js → Marketplace-D37-zXmo.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-_DRzjcIn.js → McpTools-DGG6wfLP.js} +2 -2
  42. package/src/assets/web-panel/assets/{Memory-zvLpyi__.js → Memory-DjECKlfE.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-DXd1ik2Z.js → MobileBridge--zANjFPV.js} +1 -1
  44. package/src/assets/web-panel/assets/{MobileProjects-DKh2q-Y9.js → MobileProjects-82ulqAUz.js} +1 -1
  45. package/src/assets/web-panel/assets/{Mtc-Ct-fhtIx.js → Mtc-BRZc_D3a.js} +2 -2
  46. package/src/assets/web-panel/assets/{MtcAudit-J4zY3Oqk.js → MtcAudit-B4sPjzTs.js} +2 -2
  47. package/src/assets/web-panel/assets/{Multisig-B2HJMCKe.js → Multisig-CsdVSHvp.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-CwcSmU4q.js → NLProgramming-rN5MTPrM.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-Da53L6wb.js → Notes-CfCzpBLf.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-BxhufdrA.js → NotificationSettings-Bgnc5-lu.js} +1 -1
  51. package/src/assets/web-panel/assets/OrderTableRenderer-vcR0ywXM.js +1 -0
  52. package/src/assets/web-panel/assets/{Organization-MIsMrUes.js → Organization-BWHfXikQ.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-Dy2P4v3q.js → Overflow-BfmX1brf.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-CD9Sxn2y.js → P2P-Bgqrc7Gj.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-BvBWgfG0.js → PdhVaultBrowser-8n-lvjGR.js} +5 -5
  56. package/src/assets/web-panel/assets/{Permissions-CwOlDRis.js → Permissions-DZvi_R1S.js} +4 -4
  57. package/src/assets/web-panel/assets/{PersonalDataHub-CZYaxEpv.js → PersonalDataHub-d-SaMCBl.js} +4 -4
  58. package/src/assets/web-panel/assets/{Pipeline-kLU7PUbB.js → Pipeline-BtppU6_K.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-BVRycSiI.js → Privacy-D8bAp4YK.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-DP3pr7uJ.js → ProjectInit-DbkjQ5Tu.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-CACaDYjs.js → ProjectSettings-h7KEbaRt.js} +2 -2
  62. package/src/assets/web-panel/assets/Projects-Cv23MVaI.js +1 -0
  63. package/src/assets/web-panel/assets/{Providers-D7Y9WHRE.js → Providers-By9_cN-N.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-CeP8xzs1.js → QrScannerModal-BEpf5wsF.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-iJVFrhZ2.js → QuickAsk-eiQ-KUeQ.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-DmTpnagw.js → Recommend-DKpC7mUA.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-C6ek8Uni.js → RemoteSession-Z2N0xnf3.js} +2 -2
  68. package/src/assets/web-panel/assets/{Reputation-CPfwc9de.js → Reputation-DmknmR2x.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-C1wwtSMJ.js → Row-BOI5kMGe.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-BiDJsqaH.js → RssFeed-micYN0Y6.js} +3 -3
  71. package/src/assets/web-panel/assets/{Search-BF6Aon95.js → Search-C7l6pJP7.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-Bps0XnV4.js → Security-YYgdmPUQ.js} +3 -3
  73. package/src/assets/web-panel/assets/{Services-uf92smGR.js → Services-IqE2jmer.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-DQd4eVWW.js → Skeleton-B40v1963.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-DgamiYa5.js → Skills-B5XhRxiz.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-CF1IVIrm.js → Sla-CR9FTy0l.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-Bzxmjbpc.js → SpeechSettings-qU35iVHu.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-B8zKauiq.js → SyncSettings-Ty9clGaJ.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-DPKV_xSt.js → Tasks-B3L8-JKq.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-BikeSZIF.js → Templates-r3oMi1-3.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-CEaUaDkJ.js → Tenant-CbIHlv2e.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-ZPgOSQ_q.js → Terminal-V2EXXRcY.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-DmyB4Udk.js → TimelineRenderer-DIfjYDRV.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-g85Pm5TO.js → Tokens-o7spb61I.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger-D202hx9a.js → Trigger-C9Mx4M1Z.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-DzvQYVFy.js → Trust-BO1ooAq1.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-KRzwddVg.js → UkeySign-BqFvW_RC.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-IRBXLO2z.js → VideoEditing-CGCdftvj.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-DSf5KPgQ.js → Wallet-xI4tcBY8.js} +4 -4
  90. package/src/assets/web-panel/assets/{WebAuthn-DNPxLTCc.js → WebAuthn-9GP7HTR7.js} +4 -4
  91. package/src/assets/web-panel/assets/{WorkflowEditor-C3wAtVcK.js → WorkflowEditor-B9h2rJSw.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-q3XXUtv2.js → chat-QkuzCwVj.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-CF54SNei.js → colors-zLVw-h4c.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-BaRkvZuT.js → compact-item-CMO1mB03.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-CDR9hsfs.js → createContext-DNGLcpGd.js} +1 -1
  96. package/src/assets/web-panel/assets/devWarning-BHskhca6.js +1 -0
  97. package/src/assets/web-panel/assets/{hasIn-DlC--S8R.js → hasIn-d27IiOzc.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-D0H-N0uG.js → index-0fgps_Ha.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-BZrE0Go8.js → index-1vkEjspu.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-D4wUDFRg.js → index-B-7uVSmD.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-C87Yr3h1.js → index-B0AVVWRp.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-C9Wypz9e.js → index-B1YE9vXa.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-BJO0n1LQ.js → index-BIPaY2R7.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BizdX2X5.js → index-BKEvKuq6.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-DJFipyK7.js → index-BmvaP46c.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-BU5DJqk7.js → index-BwpB82Xl.js} +1 -1
  107. package/src/assets/web-panel/assets/index-ByQoHRw-.js +1 -0
  108. package/src/assets/web-panel/assets/{index-CAxSyMrF.js → index-C2_Bbcup.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DntKLOs9.js → index-C6nrSRBx.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Dplhl6gh.js → index-CD2REWY7.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-B0V9rgdu.js → index-CFMd66NM.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-CAoG_E-q.js → index-CJpHuknz.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-Kerduyao.js → index-CRhckfWe.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-CNZQEZ9g.js → index-Cj9NMUTv.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-CSClXoB3.js → index-CqVXEx5l.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CZ8azVgB.js → index-Czx0FlX_.js} +3 -3
  117. package/src/assets/web-panel/assets/{index-Ctid12Gq.js → index-D7hqqF5C.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-CR_wqMGy.js → index-DGNE9Xm-.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-BY-Tf3OM.js → index-DGjWl8Rt.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-Ccc5z8eJ.js → index-DJ2M_yRa.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-IVQdOBNN.js → index-DOz_Tlza.js} +1 -1
  122. package/src/assets/web-panel/assets/index-DSojR8WR.js +1 -0
  123. package/src/assets/web-panel/assets/{index-B0Ptc7yu.js → index-DbtxyEga.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-D0vIgprF.js → index-DcJ6eK35.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-CtGfeD7E.js → index-DjboeGlp.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-BEiUlFKb.js → index-IBrGVX5g.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-Cl6av3X7.js → index-KwO1ni8W.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CPvIhha6.js → index-MlwjpKXX.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-DiQzer2R.js → index-SmN-h9ye.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-DX2REKNp.js → index-TPdHE3X9.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-Dq8q_PWB.js → index-VV-CCwRg.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-qZDNFll9.js → index-XnJSs5Sx.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-CC5HjNM6.js → index-c8o5sSmC.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-CeiKbM3a.js → index-gln9cpY4.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-W6cLGjpW.js → index-wIxrU-u5.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-Dc3gD0cw.js → index-yAaQ43Yv.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-Ccz7v71u.js → initDefaultProps-mTv02Iv2.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-BlCLpVDp.js → motion-DIWq6Zdd.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-B80G7fLU.js → move-Cs0zlq4K.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-Djw08NJh.js → mtc-parser-D9YFWslw.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-Bg_G1eUr.js → omit-D1blfLNP.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-Df9zYUg2.js → pickAttrs-DGpZjtCx.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-DjCDLhJ4.js → placementArrow-U4Xuy5q7.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve--Naz7NgY.js → responsiveObserve-sv8vtjTZ.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-CHn3ald-.js → slide-Abur0WLB.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-BiGwoIK_.js → statusUtils-M9GWlDcS.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-Zf2dQx1j.js → styleChecker-Bb9iHj5r.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-sLES8nyD.js → useFlexGapSupport-BVNU1yiq.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-DV1Hl4qu.js → useFs-pGc0P1Qu.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-CZXr2Qxg.js → usePersonalDataHub-C8em9rTC.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode-e8Eo3Oyl.js → vnode-xeBAzt3Y.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-B8A6xKMF.js → zoom-mTBeZV-N.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 +130 -9
  156. package/src/lib/evolution/evolution-evidence-projector.js +56 -4
  157. package/src/lib/runnable-provider.js +1 -1
  158. package/src/assets/web-panel/assets/EvolutionSettings-DGkXiIs-.js +0 -1
  159. package/src/assets/web-panel/assets/OrderTableRenderer-BoFwohAi.js +0 -1
  160. package/src/assets/web-panel/assets/Projects-CB1k4zTC.js +0 -1
  161. package/src/assets/web-panel/assets/devWarning-1LO-NplX.js +0 -1
  162. package/src/assets/web-panel/assets/index-BLaJsev4.js +0 -1
  163. package/src/assets/web-panel/assets/index-BLmviChG.js +0 -1
@@ -1 +1 @@
1
- import{u as v}from"./index-CZ8azVgB.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-Czx0FlX_.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-CZ8azVgB.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-Czx0FlX_.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-CZ8azVgB.js";import{i as f}from"./motion-BlCLpVDp.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-Czx0FlX_.js";import{i as f}from"./motion-DIWq6Zdd.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-CZ8azVgB.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-Czx0FlX_.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.123",
7
+ "cliVersions": ["0.166.123"],
8
+ "date": "2026-10-26",
9
+ "title": "",
10
+ "sections": [
11
+ {
12
+ "heading": "Fixed - cc CLI 0.166.123: model selection, Windows first-token latency and Python evidence (candidate, 2026-10-26)",
13
+ "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."
14
+ }
15
+ ]
16
+ },
17
+ {
18
+ "productVersion": null,
19
+ "cliVersion": "0.166.121",
20
+ "cliVersions": ["0.166.121"],
21
+ "date": "2026-10-25",
22
+ "title": "",
23
+ "sections": [
24
+ {
25
+ "heading": "Fixed - cc CLI 0.166.121: display text at Evolution ingress (candidate, 2026-10-25)",
26
+ "body": "- Recognize bounded status/progress/percentage markers, timestamps, Git hashes/ranges, version/wiki links, numeric regex ranges and simple unquoted Shell tests without mistaking them for damaged JSON.\n- Admit non-sensitive standalone quoted prose labels; preserve strict container parsing, duplicate-key rejection, decoded sensitive-key scanning and cumulative budgets. ANSI controls retain the existing injection quarantine.\n- Reject primitive-prefix and concatenated sensitive assignments that cannot be safely projected, preventing suffix exposure after partial redaction.\n- Version new Agent model projections as v6 while preserving all historical ruleset digests and verification semantics.\n- Retain unchanged published child dependencies and preceding IDE pairing (VS Code 0.37.160 / JetBrains 0.4.177). CLI candidate 0.166.119 was withdrawn after changelog packaging preflight; 0.166.120 was blocked by an existing cross-filesystem Windows test fixture assumption on Linux. Neither candidate was published; both immutable source tags are retained.\n- Bind simulated Windows volume authority to the fixture filesystem so independent temporary mounts do not produce false identity-race failures. Preserve production handle and path identity checks.\n- Give the concurrent settings-writer success fixture a bounded acquisition window for real Windows I/O while retaining the production two-second admission deadline, strict lock ownership, short-budget refusal checks and existing child/test deadlines.\n- Require exact-commit Linux, Windows and macOS CLI CI and CLI Strict Sandbox, GitHub Actions OIDC publication and public npm readback before merging the release PR. No new live model-task acceptance is claimed; historical limits remain."
27
+ }
28
+ ]
29
+ },
4
30
  {
5
31
  "productVersion": null,
6
32
  "cliVersion": "0.166.118",
@@ -65,6 +65,28 @@ const CODE_DOUBLE_QUOTED_PREFIX = /^"(?:[^"\\\x00-\x1f]|\\[\s\S])*"/u;
65
65
  const CODE_SINGLE_QUOTED_PREFIX = /^'(?:[^'\\\x00-\x1f]|\\[\s\S])*'/u;
66
66
  /* eslint-enable no-control-regex */
67
67
 
68
+ // Only closed, bounded display formats qualify. Never accept quotes, escapes,
69
+ // commas or nested containers here. Exponent-shaped hashes remain JSON numbers
70
+ // so non-finite/unsafe numeric values cannot evade the existing budget checks.
71
+ const DISPLAY_BRACKET_MARKER = new RegExp(
72
+ "^\\[(?:" +
73
+ "\\d+[ \\t]+\\d+(?:[ \\t]+\\d+)*|" +
74
+ "\\d+[ \\t]*\\/[ \\t]*\\d+(?:[ \\t]+\\d{1,3}%)?|" +
75
+ "\\d+[ \\t]+of[ \\t]+\\d+|" +
76
+ "\\d{1,3}(?:\\.\\d+)?%|" +
77
+ "\\d{4}-\\d{2}-\\d{2}(?:[ T]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?(?:Z|[+-]\\d{2}:\\d{2})?)?|" +
78
+ "\\d{1,2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?|" +
79
+ "v?\\d+\\.\\d+\\.\\d+|" +
80
+ "[0-9]-[0-9]|" +
81
+ "\\[[A-Za-z][A-Za-z0-9_./ #+-]*\\]|" +
82
+ "[ \\t]+\\d+[ \\t]+-(?:eq|ne|lt|le|gt|ge)[ \\t]+\\d+[ \\t]+|" +
83
+ "\\[[ \\t]+-[defrswx][ \\t]+[A-Za-z0-9_./-]+[ \\t]+\\]|" +
84
+ "(?!\\d+[eE]\\d+\\])(?=[0-9a-f]{7,64}\\])(?=[0-9a-f]*[a-f])[0-9][0-9a-f]+|" +
85
+ "[0-9a-f]{7,64}\\.\\.[0-9a-f]{7,64}" +
86
+ ")\\]",
87
+ "u",
88
+ );
89
+
68
90
  export function isAgentToolArgumentsPath(path) {
69
91
  return (
70
92
  path.length === 6 &&
@@ -292,6 +314,14 @@ export function createEvidenceJsonTextBoundary(
292
314
  );
293
315
  }
294
316
  index += token.length;
317
+ // A primitive prefix is not a complete source expression. In particular,
318
+ // redacting only `true` from trueSecretValue would expose the suffix of
319
+ // a sensitive quoted assignment. Historical policies retain their parser.
320
+ if (
321
+ policy.proseQuotedPairPolicy &&
322
+ /[\p{ID_Continue}$\\]/u.test(text[index] ?? "")
323
+ )
324
+ return parserReject("code-expression");
295
325
  const parsed = JSON.parse(token);
296
326
  if (
297
327
  typeof parsed === "number" &&
@@ -314,6 +344,7 @@ export function createEvidenceJsonTextBoundary(
314
344
  layer = 0,
315
345
  objectOnly = false,
316
346
  codeText = false,
347
+ pythonFString = false,
317
348
  fencedCodeLanguages = null,
318
349
  visit,
319
350
  plain,
@@ -340,10 +371,10 @@ export function createEvidenceJsonTextBoundary(
340
371
  bytes += Buffer.byteLength(text, "utf8");
341
372
  if (bytes > policy.maxDecodedBytes)
342
373
  reject("Agent model JSON text exceeds its budget");
343
- const transform = (parsed) => {
374
+ const transform = (parsed, textContext) => {
344
375
  if (layer >= policy.maxLayers)
345
376
  reject("Agent model JSON text exceeds its budget");
346
- return visit(parsed, layer + 1);
377
+ return visit(parsed, layer + 1, textContext);
347
378
  };
348
379
  if (objectOnly) {
349
380
  const reader = parser(text, 0);
@@ -376,6 +407,76 @@ export function createEvidenceJsonTextBoundary(
376
407
  char === "{" || char === "["
377
408
  ? text.slice(index + 1).match(/^\s*(.)/u)?.[1]
378
409
  : undefined;
410
+ // Python's f"{'branch':<52}" formats a literal label; the colon is not
411
+ // a JSON key/value separator. Grant this meaning only while scanning an
412
+ // explicitly prefixed source string, with a complete bounded format.
413
+ // Escaped braces, arbitrary expressions and malformed JSON retain the
414
+ // strict scanner. Sensitive decoded labels still fail closed.
415
+ if (
416
+ codeText &&
417
+ pythonFString &&
418
+ policy.pythonFStringPolicy === "bounded-static-label-alignment-v1" &&
419
+ char === "{" &&
420
+ text[index - 1] !== "{"
421
+ ) {
422
+ const literalStart = index + 1;
423
+ const literal =
424
+ CODE_SINGLE_QUOTED_PREFIX.exec(text.slice(literalStart))?.[0] ??
425
+ CODE_DOUBLE_QUOTED_PREFIX.exec(text.slice(literalStart))?.[0];
426
+ const suffix = literal
427
+ ? /^:[<>^]\d{1,4}s?\}/u.exec(
428
+ text.slice(literalStart + literal.length),
429
+ )?.[0]
430
+ : undefined;
431
+ if (suffix) {
432
+ const reader = parser(text, literalStart, {
433
+ allowSingleQuotedStrings: true,
434
+ });
435
+ let label;
436
+ try {
437
+ label = reader.value();
438
+ } catch (error) {
439
+ rejectParseFailure(error);
440
+ }
441
+ const probe = Object.defineProperty(Object.create(null), label, {
442
+ value: "source-expression",
443
+ enumerable: true,
444
+ });
445
+ if (!equal(probe, transform(probe)))
446
+ reject(
447
+ "Agent model code expression under a sensitive key cannot be safely projected",
448
+ );
449
+ const safe = transform(label);
450
+ const end = reader.end() + suffix.length;
451
+ const replacement = equal(label, safe)
452
+ ? text.slice(index, end)
453
+ : `{${JSON.stringify(safe)}${suffix}`;
454
+ output += plain(text.slice(plainStart, index)) + replacement;
455
+ index = end;
456
+ plainStart = index;
457
+ continue;
458
+ }
459
+ }
460
+ // Human-readable status markers are not JSON arrays. Only complete,
461
+ // bounded numeric formats qualify; quotes, escapes, commas and nested
462
+ // containers must still go through strict parsing. Leave these spans in
463
+ // plain text so the ordinary credential/PII sanitizer still sees them.
464
+ if (
465
+ char === "[" &&
466
+ policy.bracketMarkerPolicy === "bounded-display-markers-v1"
467
+ ) {
468
+ // ANSI CSI controls in terminal output start with ESC followed by [.
469
+ // Limit recognition to numeric parameters and a final control letter.
470
+ const marker =
471
+ (text[index - 1] === "\x1b"
472
+ ? /^\[[0-9;:?]{0,64}[A-Za-z]/u.exec(text.slice(index, index + 128))
473
+ : null) ??
474
+ DISPLAY_BRACKET_MARKER.exec(text.slice(index, index + 128));
475
+ if (marker) {
476
+ index += marker[0].length;
477
+ continue;
478
+ }
479
+ }
379
480
  const container =
380
481
  (char === "{" &&
381
482
  (next === '"' || next === "}" || next === "'" || next === "\\")) ||
@@ -467,7 +568,7 @@ export function createEvidenceJsonTextBoundary(
467
568
  const entryEnd = rhs.end();
468
569
  rhs.whitespace();
469
570
  if (
470
- codeText &&
571
+ (codeText || policy.proseQuotedPairPolicy) &&
471
572
  /^[+\-*/%?.([<>&|^=!"']/u.test(text[rhs.end()] ?? "")
472
573
  )
473
574
  requireSafeExpressionKey();
@@ -479,10 +580,14 @@ export function createEvidenceJsonTextBoundary(
479
580
  } catch (error) {
480
581
  const kind = error?.[PARSE_FAILURE];
481
582
  if (kind === undefined) throw error;
482
- if (!codeText || kind !== "code-expression")
583
+ if (
584
+ (!codeText && !policy.proseQuotedPairPolicy) ||
585
+ kind !== "code-expression"
586
+ )
483
587
  rejectParseFailure(error);
484
- // In a run_code source/result string, a quoted key followed by a
485
- // Python/JavaScript expression is code, not a broken JSON pair.
588
+ // A standalone prose label or a source key followed by an
589
+ // expression is not a broken JSON container. Sensitive decoded
590
+ // keys still fail closed before scanning resumes.
486
591
  // Resume the scan at the next literal so any string value still
487
592
  // receives key-aware or ordinary secret scanning.
488
593
  requireSafeExpressionKey();
@@ -490,11 +595,24 @@ export function createEvidenceJsonTextBoundary(
490
595
  }
491
596
  }
492
597
  }
598
+ const pythonFStringPrefix =
599
+ codeText &&
600
+ quoted &&
601
+ !pair &&
602
+ policy.pythonFStringPolicy === "bounded-static-label-alignment-v1"
603
+ ? /(?:^|[^\p{ID_Continue}$])(f|fr|rf)$/iu.exec(
604
+ text.slice(Math.max(0, index - 3), index),
605
+ )?.[1]
606
+ : undefined;
493
607
  const assignmentKey =
494
608
  quoted && !pair
495
609
  ? // Scan backward once; an unanchored greedy key regex would retry at
496
610
  // every offset of a long ordinary prefix before a quoted fragment.
497
- assignmentKeyBefore(text, plainStart, index)
611
+ assignmentKeyBefore(
612
+ text,
613
+ plainStart,
614
+ index - (pythonFStringPrefix?.length ?? 0),
615
+ )
498
616
  : undefined;
499
617
  let end = valueEnd;
500
618
  if (pair) {
@@ -507,9 +625,12 @@ export function createEvidenceJsonTextBoundary(
507
625
  enumerable: true,
508
626
  });
509
627
  }
510
- const safe = transform(parsed);
628
+ const safe = transform(
629
+ parsed,
630
+ pythonFStringPrefix ? { pythonFString: true } : undefined,
631
+ );
511
632
  if (
512
- codeText &&
633
+ (codeText || policy.proseQuotedPairPolicy) &&
513
634
  assignmentKey &&
514
635
  !equal(parsed, safe) &&
515
636
  /^\s*[+\-*/%?.([<>&|^=!"']/u.test(text.slice(end))
@@ -562,13 +562,50 @@ export const EVOLUTION_AGENT_MODEL_PROJECTION_RULESET_V4_DIGEST = `sha256:${crea
562
562
  "utf8",
563
563
  )
564
564
  .digest("hex")}`;
565
- const AGENT_MODEL_RULESET = Object.freeze({
565
+ const AGENT_MODEL_RULESET_V5 = Object.freeze({
566
566
  ...AGENT_MODEL_RULESET_V4,
567
567
  schema: "chainlesschain.evolution-agent-model-projection-rules/v5",
568
568
  version: 5,
569
569
  fencedCodePolicy: "closed-message-code-fence-literal-scan-v1",
570
570
  fencedCodeLanguages: AGENT_FENCED_CODE_LANGUAGES,
571
571
  });
572
+ export const EVOLUTION_AGENT_MODEL_PROJECTION_RULESET_V5_DIGEST = `sha256:${createHash(
573
+ "sha256",
574
+ )
575
+ .update(
576
+ `${AGENT_MODEL_RULESET_V5.schema}\0${JSON.stringify(AGENT_MODEL_RULESET_V5)}`,
577
+ "utf8",
578
+ )
579
+ .digest("hex")}`;
580
+ const AGENT_MODEL_RULESET_V6 = Object.freeze({
581
+ ...AGENT_MODEL_RULESET_V5,
582
+ schema: "chainlesschain.evolution-agent-model-projection-rules/v6",
583
+ version: 6,
584
+ jsonTextPolicy: Object.freeze({
585
+ ...AGENT_MODEL_RULESET_V5.jsonTextPolicy,
586
+ version: 3,
587
+ bracketMarkerPolicy: "bounded-display-markers-v1",
588
+ proseQuotedPairPolicy: "non-sensitive-top-level-expression-v1",
589
+ }),
590
+ });
591
+ export const EVOLUTION_AGENT_MODEL_PROJECTION_RULESET_V6_DIGEST = `sha256:${createHash(
592
+ "sha256",
593
+ )
594
+ .update(
595
+ `${AGENT_MODEL_RULESET_V6.schema}\0${JSON.stringify(AGENT_MODEL_RULESET_V6)}`,
596
+ "utf8",
597
+ )
598
+ .digest("hex")}`;
599
+ const AGENT_MODEL_RULESET = Object.freeze({
600
+ ...AGENT_MODEL_RULESET_V6,
601
+ schema: "chainlesschain.evolution-agent-model-projection-rules/v7",
602
+ version: 7,
603
+ jsonTextPolicy: Object.freeze({
604
+ ...AGENT_MODEL_RULESET_V6.jsonTextPolicy,
605
+ version: 4,
606
+ pythonFStringPolicy: "bounded-static-label-alignment-v1",
607
+ }),
608
+ });
572
609
  export const EVOLUTION_AGENT_MODEL_PROJECTION_RULESET_DIGEST = `sha256:${createHash(
573
610
  "sha256",
574
611
  )
@@ -601,6 +638,8 @@ const SUPPORTED_RULESETS = new Map([
601
638
  [EVOLUTION_AGENT_MODEL_PROJECTION_RULESET_V2_DIGEST, AGENT_MODEL_RULESET_V2],
602
639
  [EVOLUTION_AGENT_MODEL_PROJECTION_RULESET_V3_DIGEST, AGENT_MODEL_RULESET_V3],
603
640
  [EVOLUTION_AGENT_MODEL_PROJECTION_RULESET_V4_DIGEST, AGENT_MODEL_RULESET_V4],
641
+ [EVOLUTION_AGENT_MODEL_PROJECTION_RULESET_V5_DIGEST, AGENT_MODEL_RULESET_V5],
642
+ [EVOLUTION_AGENT_MODEL_PROJECTION_RULESET_V6_DIGEST, AGENT_MODEL_RULESET_V6],
604
643
  [EVOLUTION_AGENT_MODEL_PROJECTION_RULESET_DIGEST, AGENT_MODEL_RULESET],
605
644
  ]);
606
645
 
@@ -676,6 +715,8 @@ const AGENT_VALUE_PATTERNS = Object.freeze([
676
715
  function valuePatterns(ruleset) {
677
716
  return ruleset === SKILL_DECISION_RULESET ||
678
717
  ruleset === AGENT_MODEL_RULESET ||
718
+ ruleset === AGENT_MODEL_RULESET_V6 ||
719
+ ruleset === AGENT_MODEL_RULESET_V5 ||
679
720
  ruleset === AGENT_MODEL_RULESET_V4 ||
680
721
  ruleset === AGENT_MODEL_RULESET_V3 ||
681
722
  ruleset === AGENT_MODEL_RULESET_V2 ||
@@ -1414,7 +1455,7 @@ function sanitizePayload(
1414
1455
  ruleset.jsonTextPolicy,
1415
1456
  )
1416
1457
  : null;
1417
- const visit = (value, path, depth, layer = 0) => {
1458
+ const visit = (value, path, depth, layer = 0, textContext = null) => {
1418
1459
  nodes += 1;
1419
1460
  if (nodes > ruleset.maxNodes || depth > ruleset.maxDepth) {
1420
1461
  truncated = true;
@@ -1428,6 +1469,8 @@ function sanitizePayload(
1428
1469
  const toolArguments = jsonText && isAgentToolArgumentsPath(path);
1429
1470
  const opaqueTransportBlock =
1430
1471
  ruleset === AGENT_MODEL_RULESET ||
1472
+ ruleset === AGENT_MODEL_RULESET_V6 ||
1473
+ ruleset === AGENT_MODEL_RULESET_V5 ||
1431
1474
  ruleset === AGENT_MODEL_RULESET_V4 ||
1432
1475
  ruleset === AGENT_MODEL_RULESET_V3
1433
1476
  ? projectAgentOpaqueTransportBlock(value, path.join("."))
@@ -1450,7 +1493,8 @@ function sanitizePayload(
1450
1493
  const output = jsonText(value, {
1451
1494
  layer,
1452
1495
  objectOnly: toolArguments,
1453
- codeText,
1496
+ codeText: codeText || textContext?.pythonFString === true,
1497
+ pythonFString: textContext?.pythonFString === true,
1454
1498
  // Only direct message text can contain Markdown code examples. Tool
1455
1499
  // arguments and recursively decoded strings keep their existing rules.
1456
1500
  fencedCodeLanguages:
@@ -1460,7 +1504,7 @@ function sanitizePayload(
1460
1504
  (path.length === 3 || (path.length === 5 && path[4] === "text"))
1461
1505
  ? ruleset.fencedCodeLanguages
1462
1506
  : null,
1463
- visit: (decoded, nextLayer) =>
1507
+ visit: (decoded, nextLayer, nextTextContext) =>
1464
1508
  visit(
1465
1509
  decoded,
1466
1510
  [...path, "$json"],
@@ -1470,6 +1514,7 @@ function sanitizePayload(
1470
1514
  ? 0
1471
1515
  : depth + 1,
1472
1516
  nextLayer,
1517
+ nextTextContext,
1473
1518
  ),
1474
1519
  plain,
1475
1520
  equal: (left, right) => canonicalJson(left) === canonicalJson(right),
@@ -1588,6 +1633,9 @@ function sanitizePayload(
1588
1633
  [...path, safeKey],
1589
1634
  depth + 1,
1590
1635
  layer,
1636
+ // The text scanner may wrap an f-string in its bare assignment key.
1637
+ // Carry its lexical context through that wrapper after key redaction.
1638
+ textContext,
1591
1639
  );
1592
1640
  }
1593
1641
  Object.defineProperty(output, safeKey, {
@@ -3316,6 +3364,8 @@ function validateBundleIntegrity(bundle) {
3316
3364
  }
3317
3365
  if (
3318
3366
  ruleset === AGENT_MODEL_RULESET ||
3367
+ ruleset === AGENT_MODEL_RULESET_V6 ||
3368
+ ruleset === AGENT_MODEL_RULESET_V5 ||
3319
3369
  ruleset === AGENT_MODEL_RULESET_V4 ||
3320
3370
  ruleset === AGENT_MODEL_RULESET_V3 ||
3321
3371
  ruleset === AGENT_MODEL_RULESET_V2 ||
@@ -3325,6 +3375,8 @@ function validateBundleIntegrity(bundle) {
3325
3375
  allowStructuredArgumentText: ruleset !== AGENT_MODEL_RULESET_V1,
3326
3376
  allowOpaqueTransportBlocks:
3327
3377
  ruleset === AGENT_MODEL_RULESET ||
3378
+ ruleset === AGENT_MODEL_RULESET_V6 ||
3379
+ ruleset === AGENT_MODEL_RULESET_V5 ||
3328
3380
  ruleset === AGENT_MODEL_RULESET_V4 ||
3329
3381
  ruleset === AGENT_MODEL_RULESET_V3,
3330
3382
  });
@@ -86,7 +86,7 @@ function defaultModelFor(provider) {
86
86
  // Conservative on purpose — only well-known prefixes — so a custom/unknown
87
87
  // model name never misfires into a swap.
88
88
  const FOREIGN_MODEL_FAMILY = {
89
- anthropic: /\b(claude|haiku|sonnet|opus)\b/i,
89
+ anthropic: /\b(claude|haiku|sonnet|opus|fable)\b/i,
90
90
  openai: /\b(gpt-?\d|o[134]-|chatgpt)\b/i,
91
91
  gemini: /\bgemini\b/i,
92
92
  };
@@ -1 +0,0 @@
1
- import{I as r,J as T,U as c,c as a,K as o,S as I,V as C,o as M,r as k,a as V,b as L,P as R,Q as d,R as m,F as H,Z as W}from"./vendor-Bn1JzzAn.js";import{_ as A,u as N,d as i}from"./index-CZ8azVgB.js";import{R as F}from"./icons-DG5UD-6K.js";function U(P){return["ask","agent"].map(t=>{const n=P?.readiness?.[t],e=n?.state==="admitted",f=n?.scope==="deployment-admission"&&n.runtimeVerification==="not_checked"&&Array.isArray(n.requiredCommands)&&n.requiredCommands.includes(t)&&(e?n.ready===!0&&n.taskReady===null:["not_configured","disabled","invalid","command_not_allowed"].includes(n.state)&&n.ready===!1&&n.taskReady===!1);return{command:t,state:f?n.state:"unknown",summary:f?e?"部署准入通过":"部署准入被阻断":"未提供准入诊断",detail:f&&typeof n.detail=="string"?n.detail:"当前 CLI 未提供可识别的部署准入诊断,请更新 CLI。",remediation:f&&typeof n.remediation=="string"?n.remediation:""}})}function B(P,t){for(const n of Object.keys(P))delete P[n];Object.assign(P,{source:"none",effectiveEnabled:!1,profileEnabled:!1,verified:!1,commands:[],readiness:null},t||{})}const J={__name:"EvolutionSettings",setup(P,{expose:t}){t();const n=N(),e=k(!1),f=k(!1),h=k(!1),p=k(!1),w=k(!1),g=k(""),_=k(""),E=k(""),v=V({source:"none",effectiveEnabled:!1,profileEnabled:!1,verified:!1,commands:[]}),x=L(()=>e.value||f.value||h.value||p.value||w.value),S=L(()=>U(v));function b(s){B(v,s),_.value=v.descriptorPath||"",E.value=v.trustRootPath||"",g.value=v.modulePath||g.value||""}async function u(s,z=3e4){return await n.waitConnected(8e3),(await n.sendRaw(s,z)).result}async function y(){e.value=!0;try{b(await u({type:"evolution.deployment.status"}))}catch(s){i.error("读取配置失败:"+s.message)}finally{e.value=!1}}async function O(){if(!_.value.trim()||!E.value.trim()){i.warning("请填写描述符和信任根公钥的绝对路径");return}f.value=!0;try{b(await u({type:"evolution.deployment.configure",descriptorPath:_.value.trim(),trustRootPath:E.value.trim()},6e4)),i.success("签名校验通过,配置已保存并启用;自动发布仍为 HOLD")}catch(s){i.error("配置失败:"+s.message)}finally{f.value=!1}}async function D(){if(!g.value.trim()){i.warning("请填写测试部署宿主模块的服务器绝对路径");return}p.value=!0;try{b(await u({type:"evolution.deployment.init-test",modulePath:g.value.trim()},6e4)),i.success("TEST 测试开发环境已生成并启用;禁止用于生产")}catch(s){i.error("生成测试环境失败:"+s.message)}finally{p.value=!1}}async function l(){if(!_.value.trim()||!E.value.trim()){i.warning("请填写正式描述符和正式信任根公钥的绝对路径");return}w.value=!0;try{b(await u({type:"evolution.deployment.replace-test",descriptorPath:_.value.trim(),trustRootPath:E.value.trim()},6e4)),i.success("测试根已安全轮换为正式受管证书;请重启 cc ui、IDE 或 Desktop 长驻进程后做正式验证")}catch(s){i.error("替换失败:"+s.message)}finally{w.value=!1}}async function q(){h.value=!0;try{b(await u({type:"evolution.deployment.set-enabled",enabled:!v.profileEnabled})),i.success(v.profileEnabled?"已启用":"已停用")}catch(s){i.error("更新失败:"+s.message)}finally{h.value=!1}}M(y);const j={ws:n,loading:e,saving:f,toggling:h,initializingTest:p,replacingTest:w,modulePath:g,descriptorPath:_,trustRootPath:E,status:v,busy:x,readinessRows:S,apply:b,request:u,loadStatus:y,save:O,initTest:D,replaceTest:l,toggle:q,computed:L,onMounted:M,reactive:V,ref:k,get ReloadOutlined(){return F},get message(){return i},get useWsStore(){return N},get deploymentReadinessRows(){return U},get replaceDeploymentStatus(){return B}};return Object.defineProperty(j,"__isScriptSetup",{enumerable:!1,value:!0}),j}},K={class:"page-head"},Q={class:"mono"},X={class:"mono"},Z={class:"admission-status","aria-live":"polite"},G=["data-admission-command"],Y={class:"mono"},$={key:0,class:"mono"};function ee(P,t,n,e,f,h){const p=r("a-button"),w=r("a-alert"),g=r("a-input"),_=r("a-form-item"),E=r("a-divider"),v=r("a-space"),x=r("a-form"),S=r("a-card"),b=r("a-col"),u=r("a-tag"),y=r("a-descriptions-item"),O=r("a-descriptions"),D=r("a-row");return R(),T("div",null,[c("div",K,[t[4]||(t[4]=c("div",null,[c("h2",{class:"page-title"},"Skill 自进化配置"),c("p",{class:"page-sub"},"统一配置受治理部署;CLI、IDE 插件与 cc ui 共享。")],-1)),a(p,{loading:e.loading,onClick:e.loadStatus},{icon:o(()=>[a(e.ReloadOutlined)]),default:o(()=>[t[3]||(t[3]=d("刷新 ",-1))]),_:1},8,["loading"])]),a(w,{message:"不会开启自动发布",description:"此开关只启用经过签名的 Skill 自进化运行时。候选项进入 active 前仍需人工审核,自动发布始终保持 HOLD。",type:"warning","show-icon":"",class:"notice"}),e.status.deploymentMode==="test"?(R(),I(w,{key:0,message:"当前为 TEST 测试开发环境",description:"本机自动生成的测试密钥不能用于生产。正式 descriptor 和 trust root 到位后,请使用下方“一键替换测试证书并转正式”。",type:"error","show-icon":"",class:"notice"})):C("v-if",!0),a(D,{gutter:16},{default:o(()=>[a(b,{xs:24,xl:15},{default:o(()=>[a(S,{title:"上线前测试与正式部署",class:"panel-card"},{default:o(()=>[a(x,{layout:"vertical"},{default:o(()=>[a(_,{label:"测试部署宿主模块"},{extra:o(()=>[...t[5]||(t[5]=[d("首次填写后点击一次即可生成 Ed25519 测试密钥、签名描述符并启用;宿主模块修改后再次点击可刷新。",-1)])]),default:o(()=>[a(g,{value:e.modulePath,"onUpdate:value":t[0]||(t[0]=l=>e.modulePath=l),disabled:e.busy,placeholder:"运行 cc ui 的机器上 deployment host .mjs/.js 的绝对路径"},null,8,["value","disabled"])]),_:1}),a(p,{type:"primary",loading:e.initializingTest,onClick:e.initTest},{default:o(()=>[...t[6]||(t[6]=[d("一键生成/刷新测试环境",-1)])]),_:1},8,["loading"]),a(E),a(_,{label:"签名部署描述符"},{extra:o(()=>[...t[7]||(t[7]=[d("Web 页面不能读取本机文件选择器,请填写运行 cc ui 的机器上的绝对路径。",-1)])]),default:o(()=>[a(g,{value:e.descriptorPath,"onUpdate:value":t[1]||(t[1]=l=>e.descriptorPath=l),disabled:e.busy,placeholder:"deployment descriptor JSON 的服务器绝对路径"},null,8,["value","disabled"])]),_:1}),a(_,{label:"Ed25519 信任根公钥"},{default:o(()=>[a(g,{value:e.trustRootPath,"onUpdate:value":t[2]||(t[2]=l=>e.trustRootPath=l),disabled:e.busy,placeholder:"信任根 public key 的服务器绝对路径"},null,8,["value","disabled"])]),_:1}),a(v,null,{default:o(()=>[a(p,{type:"primary",loading:e.saving,onClick:e.save},{default:o(()=>[...t[8]||(t[8]=[d("校验、保存并启用",-1)])]),_:1},8,["loading"]),a(p,{danger:e.status.profileEnabled,disabled:!e.status.descriptorPath,loading:e.toggling,onClick:e.toggle},{default:o(()=>[d(m(e.status.profileEnabled?"停用":"启用"),1)]),_:1},8,["danger","disabled","loading"]),e.status.deploymentMode==="test"?(R(),I(p,{key:0,loading:e.replacingTest,onClick:e.replaceTest},{default:o(()=>[...t[9]||(t[9]=[d("一键替换测试证书并转正式",-1)])]),_:1},8,["loading"])):C("v-if",!0)]),_:1})]),_:1})]),_:1})]),_:1}),a(b,{xs:24,xl:9},{default:o(()=>[a(S,{title:"治理状态",class:"panel-card status-card"},{default:o(()=>[a(O,{column:1,size:"small"},{default:o(()=>[a(y,{label:"部署模式"},{default:o(()=>[a(u,{color:e.status.deploymentMode==="test"?"red":"blue"},{default:o(()=>[d(m(e.status.deploymentMode==="test"?"TEST(仅限上线前联调)":e.status.deploymentMode||"none"),1)]),_:1},8,["color"])]),_:1}),a(y,{label:"生效状态"},{default:o(()=>[a(u,{color:e.status.effectiveEnabled?"green":"default"},{default:o(()=>[d(m(e.status.effectiveEnabled?"已启用":"未启用"),1)]),_:1},8,["color"])]),_:1}),a(y,{label:"生效来源"},{default:o(()=>[d(m(e.status.source||"none"),1)]),_:1}),a(y,{label:"签名校验"},{default:o(()=>[a(u,{color:e.status.verified?"green":"red"},{default:o(()=>[d(m(e.status.verified?"已通过":"未通过"),1)]),_:1},8,["color"])]),_:1}),a(y,{label:"自动发布"},{default:o(()=>[a(u,{color:"orange"},{default:o(()=>[...t[10]||(t[10]=[d("HOLD",-1)])]),_:1})]),_:1}),a(y,{label:"配置文件"},{default:o(()=>[c("span",Q,m(e.status.profilePath||"—"),1)]),_:1}),a(y,{label:"允许命令"},{default:o(()=>[c("span",X,m((e.status.commands||[]).join(", ")||"—"),1)]),_:1})]),_:1}),c("section",Z,[t[11]||(t[11]=c("h3",null,"模型命令部署准入",-1)),t[12]||(t[12]=c("p",null,"这里只检查部署准入,实际任务运行尚未验证。",-1)),(R(!0),T(H,null,W(e.readinessRows,l=>(R(),T("div",{key:l.command,"data-admission-command":l.command},[c("strong",null,m(l.command)+":"+m(l.summary),1),c("p",Y,m(l.detail),1),l.remediation?(R(),T("p",$,m(l.remediation),1)):C("v-if",!0)],8,G))),128))]),e.status.error?(R(),I(w,{key:0,message:e.status.error,type:"error","show-icon":"",class:"error"},null,8,["message"])):C("v-if",!0)]),_:1})]),_:1})]),_:1})])}const le=A(J,[["render",ee],["__scopeId","data-v-5a42105e"],["__file","/tmp/cc-web-panel-47hUXv/repo/packages/web-panel/src/views/EvolutionSettings.vue"]]);export{le as default};
@@ -1 +0,0 @@
1
- import{I as w,P as l,J as u,U as s,R as n,c as i,K as v,Q as _,V as g,b as a}from"./vendor-Bn1JzzAn.js";import{_ as S}from"./index-CZ8azVgB.js";import"./icons-DG5UD-6K.js";const k={__name:"OrderTableRenderer",props:{event:{type:Object,required:!0}},setup(p,{expose:r}){r();const o=p,e=a(()=>o.event.content||{}),d=a(()=>o.event.extra||{}),m=a(()=>d.value.merchant||e.value.merchant||e.value.counterparty||"—"),c=a(()=>e.value.title||e.value.name||e.value.itemName||e.value.text||"—"),y=a(()=>{const t=e.value.amount??e.value.price??e.value.total;return t==null?"—":`${e.value.currency||"¥"} ${typeof t=="number"?t.toFixed(2):t}`}),T=a(()=>d.value.orderNo||e.value.orderNo||e.value.orderId),f=a(()=>e.value.status||e.value.state),h=a(()=>{const t=(f.value||"").toLowerCase();return t.includes("成功")||t.includes("succe")||t.includes("paid")?"green":t.includes("退")||t.includes("refund")?"orange":t.includes("失败")||t.includes("fail")?"red":"default"}),b=a(()=>{if(!o.event.occurredAt)return"";const t=new Date(o.event.occurredAt);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}),x={props:o,c:e,e:d,merchantText:m,itemText:c,amountText:y,orderNo:T,statusText:f,statusColor:h,formattedTime:b,computed:a};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},V={class:"row"},R={class:"val"},B={class:"row"},D={class:"val"},I={class:"row amount-row"},j={class:"val amount"},A={key:0,class:"row"},F={class:"val mono"},M={key:1,class:"row"};function P(p,r,o,e,d,m){const c=w("a-tag");return l(),u("div",N,[s("div",C,[s("span",O,n(e.formattedTime),1),i(c,{color:"gold"},{default:v(()=>[_(n(o.event.source.adapter),1)]),_:1}),i(c,null,{default:v(()=>[_(n(o.event.subtype),1)]),_:1})]),s("div",V,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",R,n(e.merchantText),1)]),s("div",B,[r[1]||(r[1]=s("span",{class:"key"},"商品/项目",-1)),s("span",D,n(e.itemText),1)]),s("div",I,[r[2]||(r[2]=s("span",{class:"key"},"金额",-1)),s("span",j,n(e.amountText),1)]),e.orderNo?(l(),u("div",A,[r[3]||(r[3]=s("span",{class:"key"},"单号",-1)),s("span",F,n(e.orderNo),1)])):g("v-if",!0),e.statusText?(l(),u("div",M,[r[4]||(r[4]=s("span",{class:"key"},"状态",-1)),i(c,{color:e.statusColor},{default:v(()=>[_(n(e.statusText),1)]),_:1},8,["color"])])):g("v-if",!0)])}const J=S(k,[["render",P],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-47hUXv/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{J as default};
@@ -1 +0,0 @@
1
- import{I as i,J as h,U as A,R as s,Q as r,c as t,K as a,V as _,S as x,o as oe,b as ee,r as u,P as p,F as ne,a2 as ge}from"./vendor-Bn1JzzAn.js";import{_ as we,b as re,u as ie,d}from"./index-CZ8azVgB.js";import{u as de}from"./useShellMode-CgR0wCYM.js";import{aN as ke,aO as Fe,aP as be,f as je,a5 as Ce,a8 as xe,at as Oe,R as Se}from"./icons-DG5UD-6K.js";const Pe={__name:"Projects",setup(se,{expose:l}){l();const{t:te}=re(),e=ie(),{isEmbedded:W}=de();async function w(o,f,ye,ae=8e3){if(W){const Z=await e.sendRaw({...f,type:o},ae);if(!Z?.ok){const $=Z?.error;throw new Error(typeof $=="string"?$:$?.message||`${o} failed`)}return Z.result}return e.executeJson(ye,ae)}const B=u(!1),y=u([]),O=u(""),S=u(""),P=u(!1),v=u(null),I=u([]),k=u(!1),E=u(!1),L=u(!1),F=u({name:"",description:"",type:"document",rootPath:""}),z=[{title:"ID",key:"id",width:110},{title:"名称",key:"name"},{title:"类型",key:"project_type",width:120},{title:"状态",key:"status",width:100},{title:"同步",key:"sync_status",width:100},{title:"更新",key:"updated_at",width:160},{title:"操作",key:"actions",width:180,fixed:"right"}],V=ee(()=>{const o={active:0,draft:0,completed:0,archived:0};for(const f of y.value)o[f.status]!==void 0&&(o[f.status]+=1);return o}),J=ee(()=>y.value.filter(o=>!(O.value&&o.status!==O.value||S.value&&!o.name.toLowerCase().includes(S.value.toLowerCase()))));function g(o){switch(o){case"active":return"green";case"draft":return"default";case"completed":return"cyan";case"archived":return"gold";default:return"default"}}function K(o){switch(o){case"synced":return"green";case"pending":return"orange";case"conflict":return"red";case"error":return"red";default:return"default"}}function Q(o){return!o&&o!==0?"-":new Date(typeof o=="number"?o:parseInt(o,10)).toLocaleString("zh-CN",{hour12:!1})}async function C(){B.value=!0;try{const o=await w("project.list",{limit:500},"project list --limit 500 --json",1e4);y.value=Array.isArray(o?.projects)?o.projects:Array.isArray(o)?o:[]}catch(o){d.error("加载失败: "+(o.message||o)),y.value=[]}finally{B.value=!1}}function X(o){return{onClick:()=>M(o)}}async function M(o){v.value=o,P.value=!0,k.value=!0,I.value=[];try{const f=await w("project.listFiles",{projectId:o.id,limit:200},`project list-files ${o.id} --json`,8e3);I.value=Array.isArray(f?.files)?f.files:[]}catch{I.value=[]}finally{k.value=!1}}async function G(o){try{(await w("project.delete",{id:o.id},`project delete ${o.id} --json`,8e3))?.ok?(d.success(`已删除项目 '${o.name}'`),P.value=!1,await C()):d.error("删除失败")}catch(f){d.error(f.message||String(f))}}function H(){F.value={name:"",description:"",type:"document",rootPath:""},E.value=!0}async function T(){if(!F.value.name.trim()){d.warning("请输入项目名称");return}L.value=!0;try{const o=await w("project.init",{name:F.value.name.trim(),description:F.value.description||null,projectType:F.value.type,rootPath:F.value.rootPath||null},`project init "${F.value.name.trim()}" --type ${F.value.type} --json`,8e3);o?.id?(d.success(`已创建项目 '${o.name}'`),E.value=!1,await C()):d.error("创建失败")}catch(o){d.error(o.message||String(o))}finally{L.value=!1}}const b=u(!1),D=u(!1),j=u({path:"",content:""}),U=u(!1),m=u(!1),R=u({path:""}),n=u(!1),c=u(null),q=u(""),Y=u(!1);function ue(){j.value={path:"",content:""},b.value=!0}function ce(){R.value={path:""},U.value=!0}async function N(){if(v.value){k.value=!0;try{const o=await w("project.listFiles",{projectId:v.value.id,limit:200},`project list-files ${v.value.id} --json`,8e3);I.value=Array.isArray(o?.files)?o.files:[]}catch(o){d.error("刷新文件失败: "+(o.message||o))}finally{k.value=!1}}}async function fe(){if(!j.value.path.trim()){d.warning("请输入文件路径");return}if(v.value){D.value=!0;try{const o=await w("project.createFile",{projectId:v.value.id,filePath:j.value.path.trim(),content:j.value.content||""},`project create-file ${v.value.id} "${j.value.path.trim()}" --json`,8e3);o?.id?(d.success(`已创建文件 '${o.file_name}'`),b.value=!1,await N(),await C()):d.error("创建文件失败")}catch(o){d.error(o.message||String(o))}finally{D.value=!1}}}async function pe(){if(!R.value.path.trim()){d.warning("请输入文件夹路径");return}if(v.value){m.value=!0;try{const o=await w("project.createFolder",{projectId:v.value.id,folderPath:R.value.path.trim()},`project create-folder ${v.value.id} "${R.value.path.trim()}" --json`,8e3);o?.id?(d.success(`已创建文件夹 '${o.file_name}'`),U.value=!1,await N(),await C()):d.error("创建文件夹失败")}catch(o){d.error(o.message||String(o))}finally{m.value=!1}}}async function ve(o){try{(await w("project.deleteFile",{fileId:o.id},`project delete-file ${o.id} --json`,8e3))?.deleted?(d.success(`已删除 '${o.file_name}'`),await N(),await C()):d.error("删除失败")}catch(f){d.error(f.message||String(f))}}async function me(o){if(o.is_folder){d.info("文件夹无内容可编辑");return}try{const f=await w("project.getFile",{fileId:o.id},`project get-file ${o.id} --json`,8e3);c.value=o,q.value=f?.content||"",n.value=!0}catch(f){d.error("读取文件失败: "+(f.message||f))}}async function _e(){if(c.value){Y.value=!0;try{(await w("project.writeFile",{fileId:c.value.id,content:q.value},`project write-file ${c.value.id} --json`,8e3))?.id?(d.success("已保存"),n.value=!1,await N()):d.error("保存失败")}catch(o){d.error(o.message||String(o))}finally{Y.value=!1}}}oe(()=>{C()});const le={t:te,ws:e,isEmbedded:W,callProjectTopic:w,loading:B,projects:y,statusFilter:O,nameFilter:S,detailOpen:P,detail:v,files:I,filesLoading:k,createOpen:E,creating:L,newProject:F,columns:z,countByStatus:V,filteredProjects:J,statusColor:g,syncColor:K,formatTime:Q,loadAll:C,onRowClick:X,openDetail:M,onDelete:G,onShowCreate:H,onCreate:T,createFileOpen:b,creatingFile:D,newFile:j,createFolderOpen:U,creatingFolder:m,newFolder:R,editFileOpen:n,editingFile:c,editFileContent:q,savingFile:Y,openCreateFile:ue,openCreateFolder:ce,refreshFiles:N,onCreateFile:fe,onCreateFolder:pe,onDeleteFile:ve,openEditFile:me,onSaveFile:_e,ref:u,computed:ee,onMounted:oe,get ReloadOutlined(){return Se},get PlusOutlined(){return Oe},get FolderOutlined(){return xe},get FileTextOutlined(){return Ce},get CheckCircleOutlined(){return je},get CheckSquareOutlined(){return be},get FileAddOutlined(){return Fe},get FolderAddOutlined(){return ke},get message(){return d},get useI18n(){return re},get useWsStore(){return ie},get useShellMode(){return de}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},ze={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ue={class:"page-title"},he={class:"page-sub"},Ae={class:"filter-bar",style:{"margin-bottom":"12px",display:"flex",gap:"12px","align-items":"center"}},Ie={key:0,style:{"font-size":"12px",color:"#888"}},De={key:0,style:{color:"#888","font-size":"12px"}},Re={key:0},Te={key:1,style:{color:"#888"}},Be=["onClick"],Ee={key:0,style:{color:"#888","font-size":"12px"}};function Le(se,l,te,e,W,w){const B=i("router-link"),y=i("a-button"),O=i("a-space"),S=i("a-statistic"),P=i("a-card"),v=i("a-col"),I=i("a-row"),k=i("a-radio-button"),E=i("a-radio-group"),L=i("a-input-search"),F=i("a-alert"),z=i("a-tag"),V=i("a-popconfirm"),J=i("a-table"),g=i("a-descriptions-item"),K=i("a-descriptions"),Q=i("a-divider"),C=i("a-empty"),X=i("a-list-item"),M=i("a-list"),G=i("a-spin"),H=i("a-drawer"),T=i("a-input"),b=i("a-form-item"),D=i("a-textarea"),j=i("a-form"),U=i("a-modal"),m=i("a-select-option"),R=i("a-select");return p(),h("div",null,[A("div",ze,[A("div",null,[A("h2",Ue,s(e.t("projects.title")),1),A("p",he,[l[17]||(l[17]=r("桌面 / CLI / 手机 三端共享同一份项目数据,Phase 3d sync 自动同步 (",-1)),t(B,{to:"/project-init"},{default:a(()=>[...l[16]||(l[16]=[r("项目初始化 / 环境设置",-1)])]),_:1}),l[18]||(l[18]=r(")",-1))])]),t(O,null,{default:a(()=>[t(y,{loading:e.loading,onClick:e.loadAll},{icon:a(()=>[t(e.ReloadOutlined)]),default:a(()=>[l[19]||(l[19]=r(" 刷新 ",-1))]),_:1},8,["loading"]),t(y,{type:"primary",onClick:e.onShowCreate},{icon:a(()=>[t(e.PlusOutlined)]),default:a(()=>[l[20]||(l[20]=r(" 新建项目 ",-1))]),_:1})]),_:1})]),_(" Stats "),t(I,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[t(v,{xs:12,sm:8,lg:6},{default:a(()=>[t(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(S,{title:"总项目",value:e.projects.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[t(e.FolderOutlined)]),_:1},8,["value"])]),_:1})]),_:1}),t(v,{xs:12,sm:8,lg:6},{default:a(()=>[t(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(S,{title:"活跃",value:e.countByStatus.active,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:a(()=>[t(e.CheckCircleOutlined)]),_:1},8,["value"])]),_:1})]),_:1}),t(v,{xs:12,sm:8,lg:6},{default:a(()=>[t(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(S,{title:"草稿",value:e.countByStatus.draft,"value-style":{color:"#8c8c8c",fontSize:"20px"}},{prefix:a(()=>[t(e.FileTextOutlined)]),_:1},8,["value"])]),_:1})]),_:1}),t(v,{xs:12,sm:8,lg:6},{default:a(()=>[t(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(S,{title:"已完成",value:e.countByStatus.completed,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[t(e.CheckSquareOutlined)]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),_(" Filter "),A("div",Ae,[t(E,{value:e.statusFilter,"onUpdate:value":l[0]||(l[0]=n=>e.statusFilter=n),size:"small","button-style":"solid"},{default:a(()=>[t(k,{value:""},{default:a(()=>[...l[21]||(l[21]=[r("全部",-1)])]),_:1}),t(k,{value:"active"},{default:a(()=>[...l[22]||(l[22]=[r("活跃",-1)])]),_:1}),t(k,{value:"draft"},{default:a(()=>[...l[23]||(l[23]=[r("草稿",-1)])]),_:1}),t(k,{value:"completed"},{default:a(()=>[...l[24]||(l[24]=[r("已完成",-1)])]),_:1}),t(k,{value:"archived"},{default:a(()=>[...l[25]||(l[25]=[r("已归档",-1)])]),_:1})]),_:1},8,["value"]),t(L,{value:e.nameFilter,"onUpdate:value":l[1]||(l[1]=n=>e.nameFilter=n),placeholder:"按名称过滤",style:{"max-width":"260px"},"allow-clear":""},null,8,["value"])]),!e.projects.length&&!e.loading?(p(),x(F,{key:0,type:"info",message:"还没有项目",description:'运行 `cc project init <name>` 或点击右上角"新建项目"按钮创建。桌面 / CLI / 手机三端共享同一份数据。',"show-icon":"",style:{"margin-bottom":"16px"}})):_("v-if",!0),e.projects.length||e.loading?(p(),x(J,{key:1,columns:e.columns,"data-source":e.filteredProjects,loading:e.loading,pagination:{pageSize:20,showSizeChanger:!0},"row-key":"id","custom-row":e.onRowClick},{bodyCell:a(({column:n,record:c})=>[n.key==="id"?(p(),h("code",Ie,s(c.id.slice(0,8))+"…",1)):n.key==="name"?(p(),h(ne,{key:1},[A("strong",null,s(c.name),1),c.description?(p(),h("div",De,s(c.description),1)):_("v-if",!0)],64)):n.key==="project_type"?(p(),x(z,{key:2},{default:a(()=>[r(s(c.project_type),1)]),_:2},1024)):n.key==="status"?(p(),x(z,{key:3,color:e.statusColor(c.status)},{default:a(()=>[r(s(c.status),1)]),_:2},1032,["color"])):n.key==="sync_status"?(p(),x(z,{key:4,color:e.syncColor(c.sync_status)},{default:a(()=>[r(s(c.sync_status||"unknown"),1)]),_:2},1032,["color"])):n.key==="updated_at"?(p(),h(ne,{key:5},[r(s(e.formatTime(c.updated_at)),1)],64)):n.key==="actions"?(p(),x(O,{key:6,onClick:l[2]||(l[2]=ge(()=>{},["stop"]))},{default:a(()=>[t(y,{size:"small",onClick:q=>e.openDetail(c)},{default:a(()=>[...l[26]||(l[26]=[r("详情",-1)])]),_:1},8,["onClick"]),t(V,{title:`删除项目 '${c.name}' ?`,"ok-text":"删除","ok-type":"danger","cancel-text":"取消",onConfirm:q=>e.onDelete(c)},{default:a(()=>[t(y,{size:"small",danger:""},{default:a(()=>[...l[27]||(l[27]=[r("删除",-1)])]),_:1})]),_:1},8,["title","onConfirm"])]),_:2},1024)):_("v-if",!0)]),_:1},8,["data-source","loading"])):_("v-if",!0),_(" Detail drawer "),t(H,{open:e.detailOpen,"onUpdate:open":l[3]||(l[3]=n=>e.detailOpen=n),title:e.detail?.name||"项目详情",width:"640",placement:"right"},{default:a(()=>[e.detail?(p(),x(K,{key:0,column:1,bordered:"",size:"small"},{default:a(()=>[t(g,{label:"ID"},{default:a(()=>[A("code",null,s(e.detail.id),1)]),_:1}),t(g,{label:"名称"},{default:a(()=>[r(s(e.detail.name),1)]),_:1}),t(g,{label:"描述"},{default:a(()=>[r(s(e.detail.description||"-"),1)]),_:1}),t(g,{label:"类型"},{default:a(()=>[t(z,null,{default:a(()=>[r(s(e.detail.project_type),1)]),_:1})]),_:1}),t(g,{label:"状态"},{default:a(()=>[t(z,{color:e.statusColor(e.detail.status)},{default:a(()=>[r(s(e.detail.status),1)]),_:1},8,["color"])]),_:1}),t(g,{label:"同步状态"},{default:a(()=>[t(z,{color:e.syncColor(e.detail.sync_status)},{default:a(()=>[r(s(e.detail.sync_status||"unknown"),1)]),_:1},8,["color"])]),_:1}),t(g,{label:"用户"},{default:a(()=>[r(s(e.detail.user_id),1)]),_:1}),t(g,{label:"根路径"},{default:a(()=>[e.detail.root_path?(p(),h("code",Re,s(e.detail.root_path),1)):(p(),h("span",Te,"(无)"))]),_:1}),t(g,{label:"文件数"},{default:a(()=>[r(s(e.detail.file_count||0),1)]),_:1}),t(g,{label:"创建"},{default:a(()=>[r(s(e.formatTime(e.detail.created_at)),1)]),_:1}),t(g,{label:"更新"},{default:a(()=>[r(s(e.formatTime(e.detail.updated_at)),1)]),_:1})]),_:1})):_("v-if",!0),t(Q,null,{default:a(()=>[...l[28]||(l[28]=[r("文件",-1)])]),_:1}),_(" Sub-phase 7.3 (2026-05-17): 文件 CRUD toolbar "),t(O,{style:{"margin-bottom":"12px"}},{default:a(()=>[t(y,{size:"small",type:"primary",disabled:!e.detail,onClick:e.openCreateFile},{default:a(()=>[t(e.FileAddOutlined),l[29]||(l[29]=r(" 新建文件 ",-1))]),_:1},8,["disabled"]),t(y,{size:"small",disabled:!e.detail,onClick:e.openCreateFolder},{default:a(()=>[t(e.FolderAddOutlined),l[30]||(l[30]=r(" 新建文件夹 ",-1))]),_:1},8,["disabled"])]),_:1}),t(G,{spinning:e.filesLoading},{default:a(()=>[!e.files.length&&!e.filesLoading?(p(),x(C,{key:0,description:"无文件 (点上方按钮新建)"})):(p(),x(M,{key:1,size:"small","data-source":e.files},{renderItem:a(({item:n})=>[t(X,null,{extra:a(()=>[t(O,null,{default:a(()=>[n.file_size?(p(),h("span",Ee,s(n.file_size)+" B",1)):_("v-if",!0),t(V,{title:`删除 ${n.is_folder?"文件夹":"文件"} '${n.file_name}' ?`,"ok-text":"删除","ok-type":"danger","cancel-text":"取消",onConfirm:c=>e.onDeleteFile(n)},{default:a(()=>[t(y,{size:"small",danger:""},{default:a(()=>[...l[31]||(l[31]=[r("×",-1)])]),_:1})]),_:1},8,["title","onConfirm"])]),_:2},1024)]),default:a(()=>[A("span",{style:{cursor:"pointer"},onClick:c=>e.openEditFile(n)},s(n.is_folder?"📁":"📄")+" "+s(n.file_path),9,Be)]),_:2},1024)]),_:1},8,["data-source"]))]),_:1},8,["spinning"])]),_:1},8,["open","title"]),_(" Sub-phase 7.3: Create file modal "),t(U,{open:e.createFileOpen,"onUpdate:open":l[6]||(l[6]=n=>e.createFileOpen=n),title:"新建文件","confirm-loading":e.creatingFile,"ok-text":"创建","cancel-text":"取消",onOk:e.onCreateFile},{default:a(()=>[t(j,{layout:"vertical"},{default:a(()=>[t(b,{label:"文件路径(项目内)",required:""},{default:a(()=>[t(T,{value:e.newFile.path,"onUpdate:value":l[4]||(l[4]=n=>e.newFile.path=n),placeholder:"例如 README.md 或 src/main.kt"},null,8,["value"])]),_:1}),t(b,{label:"初始内容(可选)"},{default:a(()=>[t(D,{value:e.newFile.content,"onUpdate:value":l[5]||(l[5]=n=>e.newFile.content=n),rows:6,placeholder:"留空创建空文件"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),_(" Sub-phase 7.3: Create folder modal "),t(U,{open:e.createFolderOpen,"onUpdate:open":l[8]||(l[8]=n=>e.createFolderOpen=n),title:"新建文件夹","confirm-loading":e.creatingFolder,"ok-text":"创建","cancel-text":"取消",onOk:e.onCreateFolder},{default:a(()=>[t(j,{layout:"vertical"},{default:a(()=>[t(b,{label:"文件夹路径(项目内)",required:""},{default:a(()=>[t(T,{value:e.newFolder.path,"onUpdate:value":l[7]||(l[7]=n=>e.newFolder.path=n),placeholder:"例如 src/utils"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),_(" Sub-phase 7.3: Edit file content modal "),t(U,{open:e.editFileOpen,"onUpdate:open":l[10]||(l[10]=n=>e.editFileOpen=n),title:`编辑 ${e.editingFile?.file_name||""}`,"confirm-loading":e.savingFile,"ok-text":"保存","cancel-text":"取消",onOk:e.onSaveFile,width:"720"},{default:a(()=>[t(D,{value:e.editFileContent,"onUpdate:value":l[9]||(l[9]=n=>e.editFileContent=n),rows:18,"auto-size":{minRows:12,maxRows:24},style:{"font-family":"monospace"}},null,8,["value"])]),_:1},8,["open","title","confirm-loading"]),_(" Create modal "),t(U,{open:e.createOpen,"onUpdate:open":l[15]||(l[15]=n=>e.createOpen=n),title:"新建项目","confirm-loading":e.creating,"ok-text":"创建","cancel-text":"取消",onOk:e.onCreate},{default:a(()=>[t(j,{layout:"vertical"},{default:a(()=>[t(b,{label:"项目名称",required:""},{default:a(()=>[t(T,{value:e.newProject.name,"onUpdate:value":l[11]||(l[11]=n=>e.newProject.name=n),placeholder:"例如:旅行计划-上海"},null,8,["value"])]),_:1}),t(b,{label:"描述"},{default:a(()=>[t(D,{value:e.newProject.description,"onUpdate:value":l[12]||(l[12]=n=>e.newProject.description=n),rows:2},null,8,["value"])]),_:1}),t(b,{label:"类型"},{default:a(()=>[t(R,{value:e.newProject.type,"onUpdate:value":l[13]||(l[13]=n=>e.newProject.type=n)},{default:a(()=>[t(m,{value:"document"},{default:a(()=>[...l[32]||(l[32]=[r("文档 (document)",-1)])]),_:1}),t(m,{value:"data"},{default:a(()=>[...l[33]||(l[33]=[r("数据 (data)",-1)])]),_:1}),t(m,{value:"web"},{default:a(()=>[...l[34]||(l[34]=[r("Web",-1)])]),_:1}),t(m,{value:"app"},{default:a(()=>[...l[35]||(l[35]=[r("应用 (app)",-1)])]),_:1}),t(m,{value:"presentation"},{default:a(()=>[...l[36]||(l[36]=[r("演示文稿",-1)])]),_:1}),t(m,{value:"spreadsheet"},{default:a(()=>[...l[37]||(l[37]=[r("表格",-1)])]),_:1}),t(m,{value:"design"},{default:a(()=>[...l[38]||(l[38]=[r("设计",-1)])]),_:1}),t(m,{value:"code"},{default:a(()=>[...l[39]||(l[39]=[r("代码",-1)])]),_:1}),t(m,{value:"workflow"},{default:a(()=>[...l[40]||(l[40]=[r("工作流",-1)])]),_:1}),t(m,{value:"knowledge"},{default:a(()=>[...l[41]||(l[41]=[r("知识库",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(b,{label:"根路径 (可选)"},{default:a(()=>[t(T,{value:e.newProject.rootPath,"onUpdate:value":l[14]||(l[14]=n=>e.newProject.rootPath=n),placeholder:"留空则仅元数据"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}const We=we(Pe,[["render",Le],["__scopeId","data-v-019ac5aa"],["__file","/tmp/cc-web-panel-47hUXv/repo/packages/web-panel/src/views/Projects.vue"]]);export{We as default};
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-CZ8azVgB.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-6msR3T6I.js";import{a0 as t}from"./index-CZ8azVgB.js";import"./vendor-Bn1JzzAn.js";import"./index-CSClXoB3.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-C1wwtSMJ.js";import{a0 as t}from"./index-CZ8azVgB.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve--Naz7NgY.js";import"./useFlexGapSupport-sLES8nyD.js";import"./styleChecker-Zf2dQx1j.js";import"./index-CSClXoB3.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};