chainlesschain 0.162.185 → 0.162.186

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/bin/chainlesschain.js +21 -5
  2. package/package.json +1 -1
  3. package/src/assets/web-panel/assets/{AIOps-Co4ipAKx.js → AIOps-DTXiO-TB.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-BpsoDrDq.js → ActionButton-BbmDW-Pz.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-DMUqeBik.js → Analytics-CSfgXJuD.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-C6fD_dXr.js → AppLayout-BS0FFLb7.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-DW0YlQlV.js → Artifacts-B19WFPK2.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-DXtHiiFK.js → Audit-CQhZBi7n.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-BgmF62U-.js → BackgroundAgents-BOLZCpGH.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-D8vhVLQC.js → Backup-Dz3R_ePD.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-D7nCtY2X.js → BaseInput-CYfgMpax.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-CBZLEV2G.js → Chat-5CymMr1j.js} +4 -4
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-B2A_TJtl.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-DJLkeD4M.js → Checkbox-CDXHVYcu.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-Cs6xO8Fd.js → Codegen-uq9Z9oiS.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-Dtx9wxfT.js → Col-BuW1K_65.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-DiigJg4n.js → Community-Bbg-PvRY.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-B67oMDDL.js → Compact-co0pPPTw.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-BBDl-Jos.js → Compliance-B-pFAv7z.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-Ba98hSsa.js → Cowork-54ZQS4gC.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-DBWQZIz7.js → Cron-B1BF2Seq.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-OcrKzxAt.js → Crosschain-Dey6qQTj.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-mW2eSbjM.js → DID-ltERvfAj.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-BmsDPmKJ.js → Dashboard-DuWxOcqN.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-CVzmCyRx.js → Dropdown-CrZ8ekTo.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-vVgqKzhh.js → EmailListRenderer-fIyHXhUS.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-CWY5t_ZJ.js → FamilyGuardDashboard-BtRyrRPm.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-ZGomhjxr.js → Federation-EUC6Wydj.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-DyaknbLr.js → FormItemContext-BOpka2G-.js} +1 -1
  30. package/src/assets/web-panel/assets/{GenericCardRenderer-CmIvN1qr.js → GenericCardRenderer-BXtrrYHn.js} +1 -1
  31. package/src/assets/web-panel/assets/{Git-DQOJIYkG.js → Git-8WMb7PiR.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-CMiY-EEp.js → Governance-DNWOeDTV.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-D6IXuucf.js → Inference-Bne9b_Lb.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-6jkTL0hV.js → KnowledgeGraph-Cp-6Us9b.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-N0jD-349.js → Logs-Ck-uSPAx.js} +2 -2
  36. package/src/assets/web-panel/assets/MarkdownRenderer-DxjsdAXw.js +1 -0
  37. package/src/assets/web-panel/assets/{Marketplace-WhYuhBxm.js → Marketplace-Vdq7brrJ.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-DTeO28xy.js → McpTools-ggLnw4hY.js} +5 -5
  39. package/src/assets/web-panel/assets/{Memory-MSHzPSE-.js → Memory-BKIjNVCU.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-Cyqs3J3W.js → MobileBridge-BElCY25a.js} +1 -1
  41. package/src/assets/web-panel/assets/{MobileProjects-7IN2hWHg.js → MobileProjects-DpLgovdH.js} +1 -1
  42. package/src/assets/web-panel/assets/{Mtc-MWBnezNM.js → Mtc-bNdrF_Zh.js} +5 -5
  43. package/src/assets/web-panel/assets/{MtcAudit-DQu35Nu-.js → MtcAudit-Dw8w1Cqk.js} +2 -2
  44. package/src/assets/web-panel/assets/{Multisig-CQS_M-DP.js → Multisig-CfGKvlqc.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-WD16vQvY.js → NLProgramming-D6OJf7YN.js} +1 -1
  46. package/src/assets/web-panel/assets/{Notes-DqsiSwOq.js → Notes-B3n_LzIS.js} +3 -3
  47. package/src/assets/web-panel/assets/{NotificationSettings-D3LoxO-P.js → NotificationSettings-Uu1V_ICM.js} +1 -1
  48. package/src/assets/web-panel/assets/{OrderTableRenderer-C5jPoTd6.js → OrderTableRenderer-aGyWwWcp.js} +1 -1
  49. package/src/assets/web-panel/assets/{Organization-48aMBJso.js → Organization-qjFFmuwK.js} +4 -4
  50. package/src/assets/web-panel/assets/{Overflow-j-a2XkhR.js → Overflow-J4ZgnwZz.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-BYpBNYnh.js → P2P-YEZF-uVH.js} +2 -2
  52. package/src/assets/web-panel/assets/{PdhVaultBrowser-CYCsrrLg.js → PdhVaultBrowser-yqx7fwqk.js} +3 -3
  53. package/src/assets/web-panel/assets/{Permissions-ZRXGXDFb.js → Permissions-DdEjlZ02.js} +4 -4
  54. package/src/assets/web-panel/assets/{PersonalDataHub-6OWUPHyL.js → PersonalDataHub-DbAPYvns.js} +5 -5
  55. package/src/assets/web-panel/assets/{Pipeline-FcjlDK9E.js → Pipeline-Bxlk_ZJU.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-vD_6Tldp.js → Privacy-CpE-05tz.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-B_CHOLXp.js → ProjectInit-DWlhcGHT.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-rEiqQ2da.js → ProjectSettings-BnH6BiTQ.js} +2 -2
  59. package/src/assets/web-panel/assets/Projects-CHw2fXDB.js +1 -0
  60. package/src/assets/web-panel/assets/{Providers-Dgtt97B4.js → Providers-Bdz_sTyb.js} +1 -1
  61. package/src/assets/web-panel/assets/{QrScannerModal-DaGVylZO.js → QrScannerModal-BHh2b3pH.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-DP2_2x3u.js → QuickAsk-D84M09pe.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-D29yj4ki.js → Recommend-Czc30K6M.js} +1 -1
  64. package/src/assets/web-panel/assets/{RemoteSession-Ue2wnBLp.js → RemoteSession-q_TU5qxt.js} +2 -2
  65. package/src/assets/web-panel/assets/{Reputation-CrxIHqeC.js → Reputation-CnTce4WM.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-BgSzJPCn.js → Row-C60UFLay.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-AwhYOrP9.js → RssFeed-BOUFEu9_.js} +3 -3
  68. package/src/assets/web-panel/assets/{Search-D2shpEcm.js → Search-D4__blE-.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-BtKzhTbT.js → Security-BoOm7_JK.js} +3 -3
  70. package/src/assets/web-panel/assets/{Services-BY0DsUSm.js → Services-AvzrW6HA.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-B3Sb0UI9.js → Skeleton-BZlrHozi.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-Ne5w0bDs.js → Skills-CKaMLuk0.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-C8VkaP4T.js → Sla-DYCNJF8h.js} +1 -1
  74. package/src/assets/web-panel/assets/SpeechSettings-BvCSU6d2.js +1 -0
  75. package/src/assets/web-panel/assets/{SyncSettings-CwFafrUg.js → SyncSettings-B6tW8dVO.js} +2 -2
  76. package/src/assets/web-panel/assets/{Tasks-yJuKoDlR.js → Tasks-oNC_2NVz.js} +1 -1
  77. package/src/assets/web-panel/assets/{Templates-DYn9qCmx.js → Templates-DvLPvvjL.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-DkKReHvn.js → Tenant-BDt9UBn_.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-r6bd-owt.js → Terminal-ddCUnH-X.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-Mq2juUC3.js → TimelineRenderer-CA4sDL47.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-BnMw7MRi.js → Tokens-By03hnVs.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-CTzKp4o9.js → Trigger-Dz2mH-ZU.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-BBrSZm9U.js → Trust-DShSWHeJ.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-D9fDvEMq.js → UkeySign-JN8lP3gt.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-DUi5ve-0.js → VideoEditing-BgPy4gV3.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-C8Fi1P8_.js → Wallet-CQGEsXw_.js} +4 -4
  87. package/src/assets/web-panel/assets/{WebAuthn-s1LppYi2.js → WebAuthn-D8xR-ds_.js} +5 -5
  88. package/src/assets/web-panel/assets/{WorkflowEditor-DJL2C4lj.js → WorkflowEditor-Df61_p1p.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-D3F2ndOB.js → chat-fdPby427.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-B7739-e3.js → colors-Dimqhufo.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-CcJbFTF4.js → compact-item-DHayKcqZ.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-CuP_DEFS.js → createContext-hZUhypRH.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-ePxoBp92.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-6YEXfIik.js → hasIn-Dw7zC_dV.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-LfRlSmqe.js → index--DVpUpz3.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-D_75jYWk.js → index-BHJUptSx.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-fWgUQZ9d.js → index-BIxxvaGN.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-C3pctdCb.js → index-BM5BNqp9.js} +1 -1
  99. package/src/assets/web-panel/assets/index-BTBDdCoo.js +1 -0
  100. package/src/assets/web-panel/assets/{index-CxradkS6.js → index-BVHdkz8F.js} +22 -22
  101. package/src/assets/web-panel/assets/{index-CRuoRapN.js → index-BYdNwhkv.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-D0K_rFC1.js → index-Bhmpp3cm.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-Bru_kpZl.js → index-BuMSdwno.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-b9cuvFEv.js → index-BwnUluxu.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-D6Ij_2uw.js → index-C1yMYKi-.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-Gxw09e9R.js → index-C8XXPz2n.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DXdnfDVK.js → index-CBQK-LEF.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-Nz-MUHD1.js → index-CIOE8tt6.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-BIID4XcP.js → index-CPZ3U5iH.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-BxSqVMGh.js → index-CTiVrnpR.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-eR6H6NR7.js → index-CcpDboUd.js} +1 -1
  112. package/src/assets/web-panel/assets/index-CfOGx8Ns.js +1 -0
  113. package/src/assets/web-panel/assets/{index-CY0zd_jc.js → index-CsCo_A0I.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-DGsE7MQz.js → index-CuaVa8tX.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DV11jpeO.js → index-CvKHpaao.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-Bh4hcNWW.js → index-D7jQEwB6.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-DDRlBaDt.js → index-DAjvkQ4K.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BhIKnQAW.js → index-DC2R4zvM.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-4h3lpWJ3.js → index-DJP7TjWm.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-DHvxXXNA.js → index-DSlda4-6.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-DlSvpNMf.js → index-DVM_KgzF.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-Dox44j29.js → index-DX1DwDFI.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-yOZYSNmG.js → index-DnwDYBnG.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-Dsy7_x4s.js → index-DxoPzPHy.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-BsdSnHQE.js → index-DyEhrvpm.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DjI9MkId.js → index-DzJXkoZs.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-BYYSLEjn.js → index-JE6Udz2r.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-D3haorUt.js → index-Urt2R5aE.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-D0zdPyTD.js → index-cEnkyHtX.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-C3ZA_h1j.js → index-j0pxzOu7.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-mfWQRSLn.js → index-lPjBQJCy.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-DpEKmjoa.js → index-ulvBurtw.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-BOHUo3aM.js → index-y5LHQ5Ck.js} +1 -1
  134. package/src/assets/web-panel/assets/{initDefaultProps-CJ1Bq2L3.js → initDefaultProps-B4pR3px5.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-rYJN_vzf.js → motion-CE7dWPPs.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-DnDK2gTP.js → move-Hw8cUObc.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-CKnXy7ES.js → mtc-parser-CvRjE4Fa.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-3nRc3hWT.js → omit-CkFeLVre.js} +1 -1
  139. package/src/assets/web-panel/assets/{pickAttrs-Ddjj3sLu.js → pickAttrs-5ZMqmbbb.js} +1 -1
  140. package/src/assets/web-panel/assets/{placementArrow-CbsbphQY.js → placementArrow-BZ4oeZ0q.js} +1 -1
  141. package/src/assets/web-panel/assets/{responsiveObserve-D9aZ4VDJ.js → responsiveObserve-lwoiX_Us.js} +1 -1
  142. package/src/assets/web-panel/assets/{slide-D4pvdFj0.js → slide-D_as37l8.js} +1 -1
  143. package/src/assets/web-panel/assets/{statusUtils-C2W-vY-S.js → statusUtils-BsA-4Bs7.js} +1 -1
  144. package/src/assets/web-panel/assets/{styleChecker-Cbq5150d.js → styleChecker-BVar4sLQ.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFlexGapSupport-BA2B7R82.js → useFlexGapSupport-j1IwVpGd.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFs-CLrwg3xg.js → useFs-7Q9bEnUp.js} +1 -1
  147. package/src/assets/web-panel/assets/{usePersonalDataHub-DQeAI5qs.js → usePersonalDataHub-BBwTIRMd.js} +1 -1
  148. package/src/assets/web-panel/assets/{vnode-8BDGy-YU.js → vnode-C7Dk-M8w.js} +1 -1
  149. package/src/assets/web-panel/assets/{zoom-B2SzFprl.js → zoom-D3UHaTFB.js} +1 -1
  150. package/src/assets/web-panel/index.html +1 -1
  151. package/src/commands/eval.js +7 -0
  152. package/src/commands/status.js +55 -0
  153. package/src/commands/team.js +31 -6
  154. package/src/data/changelog.json +13 -0
  155. package/src/lazy-dispatch.js +12 -1
  156. package/src/lib/observability/index.js +191 -19
  157. package/src/lib/observability/otlp-exporter.js +1209 -207
  158. package/src/lib/otlp-exporter.js +8 -36
  159. package/src/program-base.js +9 -2
  160. package/src/runtime/headless-runner.js +45 -21
  161. package/src/assets/web-panel/assets/ChatBubbleRenderer-CtDb-2Qu.js +0 -1
  162. package/src/assets/web-panel/assets/MarkdownRenderer-BL1IVXm-.js +0 -1
  163. package/src/assets/web-panel/assets/Projects-Bg8obRAM.js +0 -1
  164. package/src/assets/web-panel/assets/SpeechSettings-BQdIEYP9.js +0 -1
  165. package/src/assets/web-panel/assets/devWarning-Cj_36GHq.js +0 -1
  166. package/src/assets/web-panel/assets/index-CezFrAmD.js +0 -1
  167. package/src/assets/web-panel/assets/index-Cxgguez6.js +0 -1
@@ -1 +1 @@
1
- import{u as d}from"./index-CxradkS6.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-BVHdkz8F.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-CxradkS6.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-BVHdkz8F.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-CxradkS6.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-BVHdkz8F.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-CxradkS6.js";import{i as f}from"./motion-rYJN_vzf.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-BVHdkz8F.js";import{i as f}from"./motion-CE7dWPPs.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-CxradkS6.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-BVHdkz8F.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">
@@ -284,6 +284,13 @@ export function registerEvalCommand(program, { logger } = {}) {
284
284
  (log.error || console.error)(` otlp write failed: ${e.message}`);
285
285
  }
286
286
  }
287
+ try {
288
+ const { exportTelemetryRecorder } =
289
+ await import("../lib/observability/index.js");
290
+ exportTelemetryRecorder(recorder);
291
+ } catch {
292
+ // Collector export is best-effort and never changes evaluation gates.
293
+ }
287
294
 
288
295
  // Append to the trend history (a compact record — pass counts + per-task
289
296
  // pass/fail + a timestamp/label — so `cc eval --trend` can chart it).
@@ -1,6 +1,30 @@
1
1
  import chalk from "chalk";
2
2
  import logger from "../lib/logger.js";
3
3
  import { collectStatusReport } from "../runtime/diagnostics.js";
4
+ import { getObservabilityRuntime } from "../lib/observability/index.js";
5
+
6
+ export function collectOtlpStatus(runtime = getObservabilityRuntime()) {
7
+ return (
8
+ runtime?.getStats?.() || {
9
+ enabled: false,
10
+ protocol: "http/json",
11
+ tracesEndpoint: null,
12
+ metricsEndpoint: null,
13
+ queued: 0,
14
+ queueCapacity: 0,
15
+ queuePressure: "normal",
16
+ enqueued: 0,
17
+ exported: 0,
18
+ retried: 0,
19
+ dropped: 0,
20
+ permanentFailures: 0,
21
+ recovered: 0,
22
+ spoolErrors: 0,
23
+ configurationErrors: [],
24
+ lastError: null,
25
+ }
26
+ );
27
+ }
4
28
 
5
29
  export function registerStatusCommand(program) {
6
30
  program
@@ -10,6 +34,9 @@ export function registerStatusCommand(program) {
10
34
  .action(async (options) => {
11
35
  try {
12
36
  const report = await collectStatusReport();
37
+ report.observability = {
38
+ otlp: collectOtlpStatus(),
39
+ };
13
40
 
14
41
  if (options.json) {
15
42
  console.log(JSON.stringify(report, null, 2));
@@ -66,6 +93,34 @@ export function registerStatusCommand(program) {
66
93
  logger.log(` ${icon} ${p.name}: ${p.port}`);
67
94
  }
68
95
 
96
+ const otlp = report.observability.otlp;
97
+ logger.log(chalk.bold("\n OpenTelemetry Collector\n"));
98
+ if (!otlp.enabled) {
99
+ logger.log(` ${chalk.gray("○")} OTLP export disabled`);
100
+ if (otlp.configurationErrors?.length) {
101
+ logger.log(
102
+ ` configuration: ${otlp.configurationErrors.join("; ")}`,
103
+ );
104
+ }
105
+ } else {
106
+ logger.log(
107
+ ` ${chalk.green("●")} ${otlp.protocol} · queue ${otlp.queued}/${otlp.queueCapacity} (${otlp.queuePressure})`,
108
+ );
109
+ logger.log(` traces: ${otlp.tracesEndpoint || "disabled"}`);
110
+ logger.log(` metrics: ${otlp.metricsEndpoint || "disabled"}`);
111
+ if (otlp.retried || otlp.dropped || otlp.permanentFailures) {
112
+ logger.log(
113
+ ` retries ${otlp.retried}, dropped ${otlp.dropped}, permanent failures ${otlp.permanentFailures}`,
114
+ );
115
+ }
116
+ if (otlp.configurationErrors?.length) {
117
+ logger.log(
118
+ ` configuration: ${otlp.configurationErrors.join("; ")}`,
119
+ );
120
+ }
121
+ if (otlp.lastError) logger.log(` last error: ${otlp.lastError}`);
122
+ }
123
+
69
124
  logger.newline();
70
125
  } catch (err) {
71
126
  logger.error(`Status check failed: ${err.message}`);
@@ -573,17 +573,26 @@ export function registerTeamCommand(program, { logger } = {}) {
573
573
  });
574
574
  else runTask = async () => ({ dryRun: true });
575
575
 
576
- // Optional workflow tracing (Claude-Code 2.1.202 parity): every task
577
- // execution becomes a `team.task` span tagged with workflow.run_id +
578
- // workflow.name so a collector can reassemble the run as one workflow.
576
+ // Workflow tracing (Claude-Code 2.1.202 parity): every task execution can
577
+ // be written to a local OTLP file, exported to a Collector, or both.
579
578
  let recorder = null;
580
- if (options.otlp) {
579
+ let collectorEnabled = false;
580
+ try {
581
+ const { isOtlpCollectorEnabled } =
582
+ await import("../lib/observability/index.js");
583
+ collectorEnabled = isOtlpCollectorEnabled();
584
+ } catch {
585
+ collectorEnabled = false;
586
+ }
587
+ const workflowRunId = `team-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
588
+ const workflowName = path.basename(options.tasks);
589
+ if (options.otlp || collectorEnabled) {
581
590
  const { TelemetryRecorder } =
582
591
  await import("../lib/telemetry/span-recorder.js");
583
592
  recorder = new TelemetryRecorder({
584
593
  defaultAttributes: {
585
- "workflow.run_id": `team-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
586
- "workflow.name": path.basename(options.tasks),
594
+ "workflow.run_id": workflowRunId,
595
+ "workflow.name": workflowName,
587
596
  },
588
597
  });
589
598
  }
@@ -682,6 +691,22 @@ export function registerTeamCommand(program, { logger } = {}) {
682
691
  }
683
692
  }
684
693
 
694
+ if (collectorEnabled) {
695
+ try {
696
+ const { exportTelemetryRecorder, exportTeamTelemetry } =
697
+ await import("../lib/observability/index.js");
698
+ if (recorder) exportTelemetryRecorder(recorder);
699
+ exportTeamTelemetry({
700
+ workflowRunId,
701
+ workflowName,
702
+ summary,
703
+ budget,
704
+ });
705
+ } catch {
706
+ // Collector export is best-effort and never changes team settlement.
707
+ }
708
+ }
709
+
685
710
  // Worktree integration: sequentially preview (and optionally merge) each
686
711
  // committed branch back to base, then remove the worktrees. Conflicts are
687
712
  // reported, never force-merged.
@@ -1,6 +1,19 @@
1
1
  {
2
2
  "source": "CHANGELOG.md",
3
3
  "releases": [
4
+ {
5
+ "productVersion": null,
6
+ "cliVersion": "0.162.186",
7
+ "cliVersions": ["0.162.185", "0.162.186"],
8
+ "date": "2026-07-29",
9
+ "title": "",
10
+ "sections": [
11
+ {
12
+ "heading": "Added — cc CLI 0.162.186: standard OpenTelemetry Collector export",
13
+ "body": "> `chainlesschain` **0.162.185 → 0.162.186** (2026-07-29).\n> CLI-only release; `@chainlesschain/personal-data-hub` remains **0.4.57**\n> and `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Standard Collector protocols**: traces and metrics export over OTLP/HTTP\n JSON, OTLP/HTTP protobuf, or OTLP/gRPC, with standard global and per-signal\n endpoint, protocol, header, timeout, compression, service, and resource\n environment variables.\n- **Enterprise transport**: HTTPS and HTTP/2 gRPC support custom CA trust plus\n client certificate/key mTLS without allowing custom headers to override\n protocol framing.\n- **Bounded delivery**: batching, queue-pressure reporting, `Retry-After` and\n exponential retries, permanent-failure/drop counters, and atomic per-process\n crash spools provide bounded recovery without stealing a live process queue.\n- **Real runtime wiring**: agent, eval, and team recorders feed the Collector;\n team runs add task, token, USD cost, failure, and completion aggregates with\n workflow dimensions. Normal and gated exits perform a final flush.\n- **Private by default**: prompt, response, and tool-argument content stays\n local unless explicitly enabled; all exported string attributes and events\n continue through secret redaction.\n- **Release validation gate**: publication requires this exact release commit\n to pass `CLI CI` and `CLI Strict Sandbox` on their configured Ubuntu,\n Windows, and macOS runners; local tests remain supplementary."
14
+ }
15
+ ]
16
+ },
4
17
  {
5
18
  "productVersion": null,
6
19
  "cliVersion": "0.162.185",
@@ -24,9 +24,20 @@ const manifest = JSON.parse(
24
24
  /** Return the first top-level command token in a process argv array. */
25
25
  export function resolveCommandToken(argv = []) {
26
26
  const args = Array.isArray(argv) ? argv.slice(2) : [];
27
- for (const token of args) {
27
+ for (let index = 0; index < args.length; index++) {
28
+ const token = args[index];
28
29
  if (token === "--") return null;
29
30
  if (token === "--verbose" || token === "--quiet") continue;
31
+ if (token === "--otlp-endpoint" || token === "--jsii-runtime") {
32
+ index++;
33
+ continue;
34
+ }
35
+ if (
36
+ token.startsWith("--otlp-endpoint=") ||
37
+ token.startsWith("--jsii-runtime=")
38
+ ) {
39
+ continue;
40
+ }
30
41
  if (["--help", "-h", "--version", "-v", "-V"].includes(token)) return null;
31
42
  if (!token.startsWith("-")) return token;
32
43
  }
@@ -1,6 +1,10 @@
1
1
  /**
2
- * Observability - 可观测性模块统一导出
3
- * M3 阶段模块:包含分布式追踪 + 性能指标收集
2
+ * Process-level observability runtime.
3
+ *
4
+ * It bridges the existing W3C TraceContext / MetricsCollector and the
5
+ * TelemetryRecorder used by agent, eval and team runs into one standard OTLP
6
+ * Collector exporter. Collector export is opt-in and content remains absent
7
+ * unless the caller explicitly enabled the existing `--otlp-content` switch.
4
8
  */
5
9
 
6
10
  import {
@@ -11,25 +15,193 @@ import {
11
15
  metricsCollector,
12
16
  MetricsCollector,
13
17
  } from "../execution-trace/metrics-collector.js";
18
+ import { OtlpExporter, resolveOtlpConfig } from "./otlp-exporter.js";
14
19
 
15
- export { traceContext, TraceContext, metricsCollector, MetricsCollector };
20
+ export {
21
+ traceContext,
22
+ TraceContext,
23
+ metricsCollector,
24
+ MetricsCollector,
25
+ OtlpExporter,
26
+ resolveOtlpConfig,
27
+ };
16
28
 
17
- /**
18
- * 初始化可观测性模块
19
- * @param {Object} [options={}]
20
- * @param {boolean} [options.tracingEnabled=true] - 是否启用追踪
21
- * @param {boolean} [options.metricsEnabled=true] - 是否启用指标收集
22
- */
23
- export function initObservability(options = {}) {
24
- const { tracingEnabled = true, metricsEnabled = true } = options;
25
-
26
- // 可观测性模块初始化逻辑
27
- return {
28
- tracingEnabled,
29
- metricsEnabled,
30
- traceContext,
31
- metricsCollector,
32
- };
29
+ function collectedMetrics(collector) {
30
+ const raw = collector?.collect?.();
31
+ const source = raw?.resourceMetrics?.[0]?.scopeMetrics?.[0]?.metrics || [];
32
+ return source.map((metric) => {
33
+ if (metric.type === "counter") {
34
+ return {
35
+ name: metric.name,
36
+ type: "sum",
37
+ value: metric.value,
38
+ attributes: metric.labels,
39
+ };
40
+ }
41
+ if (metric.type === "histogram") {
42
+ return {
43
+ name: metric.name,
44
+ type: "histogram",
45
+ count: metric.count,
46
+ sum: metric.sum,
47
+ attributes: metric.labels,
48
+ };
49
+ }
50
+ return {
51
+ name: metric.name,
52
+ type: "gauge",
53
+ value: metric.value,
54
+ attributes: metric.labels,
55
+ };
56
+ });
57
+ }
58
+
59
+ export class ObservabilityRuntime {
60
+ constructor(options = {}, deps = {}) {
61
+ this.traceContext = deps.traceContext || traceContext;
62
+ this.metricsCollector = deps.metricsCollector || metricsCollector;
63
+ this.exporter =
64
+ deps.exporter ||
65
+ new OtlpExporter(
66
+ {
67
+ ...options,
68
+ config:
69
+ options.config ||
70
+ resolveOtlpConfig(options, deps.env || process.env, deps),
71
+ },
72
+ deps,
73
+ );
74
+ this._closed = false;
75
+ this._onSpanEnd = (span) => this.exporter.exportSpans([span]);
76
+ if (this.exporter.enabled) {
77
+ this.traceContext.on("span:end", this._onSpanEnd);
78
+ }
79
+ }
80
+
81
+ get enabled() {
82
+ return this.exporter.enabled && !this._closed;
83
+ }
84
+
85
+ exportRecorder(recorder, { redact = true } = {}) {
86
+ if (!this.enabled || !recorder?.toOtlp) return false;
87
+ return this.exporter.exportTracePayload(recorder.toOtlp({ redact }), {
88
+ redact,
89
+ });
90
+ }
91
+
92
+ exportTeamSummary({ workflowRunId, workflowName, summary, budget } = {}) {
93
+ if (!this.enabled) return false;
94
+ const attributes = {
95
+ "workflow.run_id": workflowRunId || "unknown",
96
+ "workflow.name": workflowName || "team",
97
+ };
98
+ const stats = summary?.stats || {};
99
+ const budgetStatus = budget?.status?.() || budget || {};
100
+ return this.exporter.exportMetrics([
101
+ {
102
+ name: "chainlesschain.team.tasks",
103
+ type: "gauge",
104
+ unit: "{task}",
105
+ value: Number(budgetStatus.tasks ?? summary?.executions) || 0,
106
+ attributes,
107
+ },
108
+ {
109
+ name: "chainlesschain.team.tokens",
110
+ type: "gauge",
111
+ unit: "{token}",
112
+ value: Number(budgetStatus.tokens) || 0,
113
+ attributes,
114
+ },
115
+ {
116
+ name: "chainlesschain.team.cost",
117
+ type: "gauge",
118
+ unit: "USD",
119
+ value: Number(budgetStatus.spentUsd) || 0,
120
+ attributes,
121
+ },
122
+ {
123
+ name: "chainlesschain.team.failures",
124
+ type: "gauge",
125
+ unit: "{failure}",
126
+ value: Number(stats.failed) || 0,
127
+ attributes,
128
+ },
129
+ {
130
+ name: "chainlesschain.team.completed",
131
+ type: "gauge",
132
+ unit: "{task}",
133
+ value: Number(stats.completed) || 0,
134
+ attributes,
135
+ },
136
+ ]);
137
+ }
138
+
139
+ captureMetrics() {
140
+ if (!this.enabled) return false;
141
+ const metrics = collectedMetrics(this.metricsCollector);
142
+ return metrics.length > 0 ? this.exporter.exportMetrics(metrics) : false;
143
+ }
144
+
145
+ async shutdown(options = {}) {
146
+ if (this._closed) return this.exporter.getStats();
147
+ this.traceContext.off("span:end", this._onSpanEnd);
148
+ this.captureMetrics();
149
+ const stats = await this.exporter.shutdown(options);
150
+ this._closed = true;
151
+ return stats;
152
+ }
153
+
154
+ getStats() {
155
+ return this.exporter.getStats();
156
+ }
157
+ }
158
+
159
+ let defaultRuntime = null;
160
+
161
+ export function resolveOtlpEndpointFromArgv(argv = process.argv) {
162
+ const args = Array.isArray(argv) ? argv.slice(2) : [];
163
+ for (let index = 0; index < args.length; index++) {
164
+ const token = args[index];
165
+ if (token === "--otlp-endpoint") return args[index + 1] || null;
166
+ if (token.startsWith("--otlp-endpoint=")) {
167
+ return token.slice("--otlp-endpoint=".length) || null;
168
+ }
169
+ }
170
+ return null;
171
+ }
172
+
173
+ export function initObservability(options = {}, deps = {}) {
174
+ if (defaultRuntime && !defaultRuntime._closed) return defaultRuntime;
175
+ defaultRuntime = new ObservabilityRuntime(options, deps);
176
+ return defaultRuntime;
177
+ }
178
+
179
+ export function getObservabilityRuntime() {
180
+ return defaultRuntime;
181
+ }
182
+
183
+ export function isOtlpCollectorEnabled() {
184
+ return defaultRuntime?.enabled === true;
185
+ }
186
+
187
+ export function exportTelemetryRecorder(recorder, options) {
188
+ return defaultRuntime?.exportRecorder(recorder, options) || false;
189
+ }
190
+
191
+ export function exportTeamTelemetry(summary) {
192
+ return defaultRuntime?.exportTeamSummary(summary) || false;
193
+ }
194
+
195
+ export async function shutdownObservability(options) {
196
+ return defaultRuntime?.shutdown(options);
197
+ }
198
+
199
+ /** Test-only lifecycle seam; avoids state leaking across module-level tests. */
200
+ export async function resetObservabilityForTests() {
201
+ if (defaultRuntime && !defaultRuntime._closed) {
202
+ await defaultRuntime.shutdown({ timeoutMs: 0 });
203
+ }
204
+ defaultRuntime = null;
33
205
  }
34
206
 
35
207
  export * from "../execution-trace/index.js";