chainlesschain 0.162.40 → 0.162.41

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 (162) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/assets/{AIOps-CPmKv82o.js → AIOps-Ut7EevnG.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-BNDYY7Qd.js → ActionButton-Dv6BlfJg.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-BgCMCOsk.js → Analytics-TQVQuJ7u.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-Dv4oJcqS.js → AppLayout-MSqLm2WK.js} +5 -5
  6. package/src/assets/web-panel/assets/{Audit-5iV3yrGa.js → Audit-mw81HwVy.js} +1 -1
  7. package/src/assets/web-panel/assets/{Backup-CHDhnbzF.js → Backup-BQcPWDb1.js} +1 -1
  8. package/src/assets/web-panel/assets/{BaseInput-B6reFkra.js → BaseInput-BYo_pwBH.js} +1 -1
  9. package/src/assets/web-panel/assets/{Chat-DwS5YyE2.js → Chat-zi3YUKx2.js} +6 -6
  10. package/src/assets/web-panel/assets/{ChatBubbleRenderer-CqXa87Hw.js → ChatBubbleRenderer-DWSm1XJJ.js} +1 -1
  11. package/src/assets/web-panel/assets/{Checkbox-yiW0M4RE.js → Checkbox-BvC8Erjt.js} +1 -1
  12. package/src/assets/web-panel/assets/{Codegen-DoiVuD_g.js → Codegen-C32vx0OP.js} +1 -1
  13. package/src/assets/web-panel/assets/{Col-BVASLexk.js → Col-DMBwmqyZ.js} +1 -1
  14. package/src/assets/web-panel/assets/{Community-D6KQ7JoU.js → Community-nDWncmKV.js} +1 -1
  15. package/src/assets/web-panel/assets/{Compact-Bl9Uhb6v.js → Compact-lIc1HFn8.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compliance-MM31-dba.js → Compliance-D14I_gd2.js} +1 -1
  17. package/src/assets/web-panel/assets/{Cowork-PjU_1ieD.js → Cowork-BiNI-_ZL.js} +3 -3
  18. package/src/assets/web-panel/assets/{Cron-DorNtPZL.js → Cron-N13sFzHb.js} +2 -2
  19. package/src/assets/web-panel/assets/{Crosschain-Bm5ts2Kw.js → Crosschain-Dlnl0-v6.js} +1 -1
  20. package/src/assets/web-panel/assets/{DID-7Y3jlFdY.js → DID-CxtYS31I.js} +2 -2
  21. package/src/assets/web-panel/assets/{Dashboard-1oE532bG.js → Dashboard-G4UnHlTR.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dropdown-hJlOPs0s.js → Dropdown-BazlxFGY.js} +1 -1
  23. package/src/assets/web-panel/assets/{EmailListRenderer-BEqJxKaO.js → EmailListRenderer-BrpNdihm.js} +1 -1
  24. package/src/assets/web-panel/assets/{FamilyGuardDashboard-BvCGwB6X.js → FamilyGuardDashboard-HD7jbOOR.js} +1 -1
  25. package/src/assets/web-panel/assets/{Federation-CsXI72e5.js → Federation-Bz8lzAGI.js} +1 -1
  26. package/src/assets/web-panel/assets/{FormItemContext-Dh9SMul-.js → FormItemContext-CcyzGS00.js} +1 -1
  27. package/src/assets/web-panel/assets/{GenericCardRenderer-9edWzrtG.js → GenericCardRenderer-DRo9cwmp.js} +1 -1
  28. package/src/assets/web-panel/assets/{Git-ZYhNL8Xk.js → Git-B7bn333J.js} +2 -2
  29. package/src/assets/web-panel/assets/{Governance-BwAdp8QA.js → Governance-DZX9CWAM.js} +1 -1
  30. package/src/assets/web-panel/assets/{Inference-5C-M1XsH.js → Inference-B3XhsL6W.js} +1 -1
  31. package/src/assets/web-panel/assets/{KnowledgeGraph-zFAi-zCi.js → KnowledgeGraph-CxFRTlQe.js} +1 -1
  32. package/src/assets/web-panel/assets/{Logs-BZsEdbgE.js → Logs-xuys6mKH.js} +2 -2
  33. package/src/assets/web-panel/assets/{Marketplace-BP6gErRK.js → Marketplace-CXyxv4WU.js} +1 -1
  34. package/src/assets/web-panel/assets/{McpTools-CXVzoLrd.js → McpTools-BzZLQVI3.js} +5 -5
  35. package/src/assets/web-panel/assets/{Memory-BIpChb4-.js → Memory-BANtaBa7.js} +2 -2
  36. package/src/assets/web-panel/assets/{MobileBridge-B4O7wDT8.js → MobileBridge-BJIwjmxr.js} +2 -2
  37. package/src/assets/web-panel/assets/MobileProjects-B857uSAZ.js +1 -0
  38. package/src/assets/web-panel/assets/{Mtc-BTmEyTM5.js → Mtc-Cn7ceFEz.js} +6 -6
  39. package/src/assets/web-panel/assets/{MtcAudit-CsbG9LlV.js → MtcAudit-B0zE978G.js} +2 -2
  40. package/src/assets/web-panel/assets/{Multisig-CL8yoGon.js → Multisig-CQFT0wXW.js} +3 -3
  41. package/src/assets/web-panel/assets/{NLProgramming-C2cIlIp_.js → NLProgramming-DSxKdVY-.js} +1 -1
  42. package/src/assets/web-panel/assets/{Notes-7aBk_n_M.js → Notes-DtlTfam8.js} +3 -3
  43. package/src/assets/web-panel/assets/{NotificationSettings-BuhQk4rJ.js → NotificationSettings-CHQwayAg.js} +1 -1
  44. package/src/assets/web-panel/assets/{OrderTableRenderer-mqMFZu0x.js → OrderTableRenderer-Brpmzh9n.js} +1 -1
  45. package/src/assets/web-panel/assets/{Organization-CAdq-170.js → Organization-nF_tzZDT.js} +4 -4
  46. package/src/assets/web-panel/assets/{Overflow--Xn0E787.js → Overflow-CgCSf_PH.js} +1 -1
  47. package/src/assets/web-panel/assets/{P2P-DYt3YAXI.js → P2P-Bvn46bLY.js} +2 -2
  48. package/src/assets/web-panel/assets/{PdhVaultBrowser-Bgb_v8WN.js → PdhVaultBrowser-Bzl9k7Gj.js} +5 -5
  49. package/src/assets/web-panel/assets/{Permissions-DoFlmoaW.js → Permissions-Dmezbuo8.js} +4 -4
  50. package/src/assets/web-panel/assets/{PersonalDataHub-C-FJB3a0.js → PersonalDataHub-lCKRxwZr.js} +2 -2
  51. package/src/assets/web-panel/assets/{Pipeline-3bL2RzzL.js → Pipeline-DDCGm9PA.js} +1 -1
  52. package/src/assets/web-panel/assets/{Privacy-c4igYUCF.js → Privacy-Cgu18Kjl.js} +1 -1
  53. package/src/assets/web-panel/assets/{ProjectInit-C0QS1UPR.js → ProjectInit-CkF1AeRY.js} +2 -2
  54. package/src/assets/web-panel/assets/{ProjectSettings-CkYC0xkE.js → ProjectSettings-D0Q-orz1.js} +2 -2
  55. package/src/assets/web-panel/assets/Projects-KfGELrSY.js +1 -0
  56. package/src/assets/web-panel/assets/{Providers-41NySsLt.js → Providers-BACLV0z8.js} +1 -1
  57. package/src/assets/web-panel/assets/{QuickAsk-DHq9pD7z.js → QuickAsk-CPsZUqDl.js} +1 -1
  58. package/src/assets/web-panel/assets/{Recommend-CLjgFPLv.js → Recommend-5jX0OI1-.js} +1 -1
  59. package/src/assets/web-panel/assets/{Reputation-EIrgErm3.js → Reputation-5JKv54z0.js} +1 -1
  60. package/src/assets/web-panel/assets/{Row-GAvKzKH7.js → Row-DLiTF5LY.js} +1 -1
  61. package/src/assets/web-panel/assets/{RssFeed-CYCNsVmD.js → RssFeed-CFdGmCKW.js} +3 -3
  62. package/src/assets/web-panel/assets/{Search-DWOE32k8.js → Search-BjIOnmA7.js} +1 -1
  63. package/src/assets/web-panel/assets/{Security-Dgh8Jevn.js → Security-BujPqQSo.js} +4 -4
  64. package/src/assets/web-panel/assets/{Services-BxdgP67N.js → Services-ChciPnMu.js} +2 -2
  65. package/src/assets/web-panel/assets/{Skeleton-D-xT4ZkA.js → Skeleton-Cwswp1Jv.js} +1 -1
  66. package/src/assets/web-panel/assets/{Skills-BKN4lfSa.js → Skills-CtwR4vJV.js} +1 -1
  67. package/src/assets/web-panel/assets/{Sla--N1TudpS.js → Sla-pRIevich.js} +1 -1
  68. package/src/assets/web-panel/assets/{SpeechSettings-B0vfJpEh.js → SpeechSettings-BRqB28Ai.js} +1 -1
  69. package/src/assets/web-panel/assets/{SyncSettings-BuBAbPAh.js → SyncSettings-BYyj58_h.js} +2 -2
  70. package/src/assets/web-panel/assets/Tasks-DTLpT48U.js +1 -0
  71. package/src/assets/web-panel/assets/{Templates-DI2giLgc.js → Templates-Bbz_h7oW.js} +1 -1
  72. package/src/assets/web-panel/assets/{Tenant-BiTWvm0g.js → Tenant-D-H4E3cu.js} +1 -1
  73. package/src/assets/web-panel/assets/{Terminal-vV6AWGDi.js → Terminal-CLLi0-lV.js} +2 -2
  74. package/src/assets/web-panel/assets/{TimelineRenderer-BmgzKdAp.js → TimelineRenderer-BKI6eG0k.js} +1 -1
  75. package/src/assets/web-panel/assets/{Tokens-Nvupdm6p.js → Tokens-rsE_yDjM.js} +1 -1
  76. package/src/assets/web-panel/assets/{Trigger-DRfR77WJ.js → Trigger-8TpwuTGk.js} +1 -1
  77. package/src/assets/web-panel/assets/{Trust-De0Jal_6.js → Trust-sMtZkHPs.js} +1 -1
  78. package/src/assets/web-panel/assets/{UkeySign-Dzo4-VAM.js → UkeySign-BAy2bAdG.js} +1 -1
  79. package/src/assets/web-panel/assets/{VideoEditing-hg2ytiJB.js → VideoEditing-CBeR_DYK.js} +1 -1
  80. package/src/assets/web-panel/assets/{Wallet--bU5-gRh.js → Wallet-BymDnBcq.js} +4 -4
  81. package/src/assets/web-panel/assets/{WebAuthn-DZptt-PV.js → WebAuthn-DQIjmqNz.js} +5 -5
  82. package/src/assets/web-panel/assets/{WorkflowEditor-Dy9223bY.js → WorkflowEditor-Cj7PB73f.js} +1 -1
  83. package/src/assets/web-panel/assets/{chat-DaxGeI9w.js → chat-DYnGj4vi.js} +1 -1
  84. package/src/assets/web-panel/assets/{colors-Cu2VEci3.js → colors-qOLKZNvN.js} +1 -1
  85. package/src/assets/web-panel/assets/{compact-item-CGolhyJq.js → compact-item-BpjCLPcW.js} +1 -1
  86. package/src/assets/web-panel/assets/{createContext-DY7EFhkD.js → createContext-CfakUZVQ.js} +1 -1
  87. package/src/assets/web-panel/assets/devWarning-DgtRXlrj.js +1 -0
  88. package/src/assets/web-panel/assets/{hasIn-Bpc-NoFN.js → hasIn-C9RW1s7t.js} +1 -1
  89. package/src/assets/web-panel/assets/{index-DxXkr-NS.js → index-8Ia91vNV.js} +1 -1
  90. package/src/assets/web-panel/assets/{index-DldaToUA.js → index-B4kS312z.js} +1 -1
  91. package/src/assets/web-panel/assets/{index-CBSk_VrT.js → index-BE67I0SW.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-Bz83ngs0.js → index-BFOSDeeo.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-1D4sfByw.js → index-BIz-pX0k.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-DNX81oSR.js → index-BJoWi1aR.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-D63ObMdQ.js → index-B_K0YtG2.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-DpRSzAFl.js → index-BdR8XRyF.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-eF9RV_4c.js → index-BfyRXPyV.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-CJFYF8F9.js → index-Bl5LBZJM.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CFAnEzRW.js → index-BlxRICmz.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BTvwiqJE.js → index-BxiHBsfU.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-Ciw5-X1B.js → index-C2S1hUWG.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-C0_zeYnx.js → index-CEHyZ77C.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-DfKmAEtE.js → index-CJZ2noI2.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-lfP8sdzB.js → index-COYEuArt.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C-Hkl_2G.js → index-CVZTLSL1.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DAov-rJR.js → index-CbnJ6FsO.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CaKXhpEu.js → index-CvWFTG56.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-rkm7dHwG.js → index-D-RzTqlR.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CGqeHu_F.js → index-DA80prWe.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-BjfxHEmX.js → index-DAjszh8P.js} +1 -1
  111. package/src/assets/web-panel/assets/index-DIGTMmnW.js +1 -0
  112. package/src/assets/web-panel/assets/{index-BRAgl2J_.js → index-DQvVYNoJ.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-D0GN5tdM.js → index-DSWdpR3c.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-DexYD87j.js → index-DadPmrxI.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BP9P6chP.js → index-DgMJagCq.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-Bn5gM9Oy.js → index-DkmLJFE_.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-C2RpsAiO.js → index-DzXYG5YJ.js} +1 -1
  118. package/src/assets/web-panel/assets/index-Ef5jERRW.js +1 -0
  119. package/src/assets/web-panel/assets/{index-DElatOQ0.js → index-JkOMWGMX.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-oJQgRCrR.js → index-T3bIqK_p.js} +3 -3
  121. package/src/assets/web-panel/assets/{index-RumxOD0S.js → index-UiiqS5k2.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-BQ2z6Ky5.js → index-VYIJmPvJ.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-DZ4Vm8dQ.js → index-ZCtDWP2C.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-BlHq81Ow.js → index-f9yoj84i.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-8h9y5S6X.js → index-lPc7EzUi.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-VBRPxZeE.js → index-m9JeDv6B.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CLNqZF55.js → index-qf0fAus7.js} +1 -1
  128. package/src/assets/web-panel/assets/{initDefaultProps-CkJZfCo8.js → initDefaultProps-DgsgQr1H.js} +1 -1
  129. package/src/assets/web-panel/assets/{motion-BerbusV1.js → motion-TeUH7wzx.js} +1 -1
  130. package/src/assets/web-panel/assets/{move-DyRzKPD4.js → move-DdkIeWQx.js} +1 -1
  131. package/src/assets/web-panel/assets/{omit-CCdrTUAs.js → omit-BH_PH6HT.js} +1 -1
  132. package/src/assets/web-panel/assets/{pickAttrs-mVDeZx2m.js → pickAttrs-CllCh-Nl.js} +1 -1
  133. package/src/assets/web-panel/assets/{placementArrow-Bb_-Fs_o.js → placementArrow-BCjE2AzM.js} +1 -1
  134. package/src/assets/web-panel/assets/{responsiveObserve-C6TMj1R_.js → responsiveObserve-BAVGAvRQ.js} +1 -1
  135. package/src/assets/web-panel/assets/{slide-CdCNsy1J.js → slide-D4ZW-Inn.js} +1 -1
  136. package/src/assets/web-panel/assets/{statusUtils-Ccxd1rFd.js → statusUtils-j4pxhmKV.js} +1 -1
  137. package/src/assets/web-panel/assets/{styleChecker-3IL-yw1V.js → styleChecker-DH2SLtPg.js} +1 -1
  138. package/src/assets/web-panel/assets/{useFlexGapSupport-CH8DjUHl.js → useFlexGapSupport-CYMMs-_Q.js} +1 -1
  139. package/src/assets/web-panel/assets/{useFs-Cn9nE2sp.js → useFs-BOX2ddKh.js} +1 -1
  140. package/src/assets/web-panel/assets/{usePersonalDataHub-BPyT0HO7.js → usePersonalDataHub-BwcnN5z_.js} +1 -1
  141. package/src/assets/web-panel/assets/{vnode-Mfm7vy07.js → vnode-Cwalh7Hj.js} +1 -1
  142. package/src/assets/web-panel/assets/{zoom-CTpAiAE9.js → zoom-B2_q_nbu.js} +1 -1
  143. package/src/assets/web-panel/index.html +1 -1
  144. package/src/commands/agent.js +38 -4
  145. package/src/commands/init.js +31 -0
  146. package/src/commands/mcp.js +57 -0
  147. package/src/commands/memory.js +62 -0
  148. package/src/commands/session.js +70 -0
  149. package/src/lib/agent-core.js +1 -0
  150. package/src/lib/init-ai-refine.js +66 -0
  151. package/src/lib/json-schema-output.js +181 -0
  152. package/src/lib/mcp-serve.js +259 -0
  153. package/src/lib/project-instructions.js +89 -0
  154. package/src/lib/repl-completer.js +9 -3
  155. package/src/lib/repl-rewind.js +107 -0
  156. package/src/repl/agent-repl.js +145 -1
  157. package/src/assets/web-panel/assets/MobileProjects-7VPMoHus.js +0 -1
  158. package/src/assets/web-panel/assets/Projects-Di17SYft.js +0 -1
  159. package/src/assets/web-panel/assets/Tasks-4XugjJ87.js +0 -1
  160. package/src/assets/web-panel/assets/devWarning-DV2BNd59.js +0 -1
  161. package/src/assets/web-panel/assets/index-BZqtTmyG.js +0 -1
  162. package/src/assets/web-panel/assets/index-DUpwdJt9.js +0 -1
@@ -1 +1 @@
1
- import{A as d}from"./index-oJQgRCrR.js";const i=()=>d()&&window.document.documentElement,c=e=>{if(d()&&window.document.documentElement){const t=Array.isArray(e)?e:[e],{documentElement:n}=window.document;return t.some(r=>r in n.style)}return!1},u=(e,t)=>{if(!c(e))return!1;const n=document.createElement("div"),r=n.style[e];return n.style[e]=t,n.style[e]!==r};function s(e,t){return!Array.isArray(e)&&t!==void 0?u(e,t):c(e)}let o;const p=()=>{if(!i())return!1;if(o!==void 0)return o;const e=document.createElement("div");return e.style.display="flex",e.style.flexDirection="column",e.style.rowGap="1px",e.appendChild(document.createElement("div")),e.appendChild(document.createElement("div")),document.body.appendChild(e),o=e.scrollHeight===1,document.body.removeChild(e),o};export{i as c,p as d,s as i};
1
+ import{A as d}from"./index-T3bIqK_p.js";const i=()=>d()&&window.document.documentElement,c=e=>{if(d()&&window.document.documentElement){const t=Array.isArray(e)?e:[e],{documentElement:n}=window.document;return t.some(r=>r in n.style)}return!1},u=(e,t)=>{if(!c(e))return!1;const n=document.createElement("div"),r=n.style[e];return n.style[e]=t,n.style[e]!==r};function s(e,t){return!Array.isArray(e)&&t!==void 0?u(e,t):c(e)}let o;const p=()=>{if(!i())return!1;if(o!==void 0)return o;const e=document.createElement("div");return e.style.display="flex",e.style.flexDirection="column",e.style.rowGap="1px",e.appendChild(document.createElement("div")),e.appendChild(document.createElement("div")),document.body.appendChild(e),o=e.scrollHeight===1,document.body.removeChild(e),o};export{i as c,p as d,s as i};
@@ -1 +1 @@
1
- import{o,s as t}from"./vendor-BvqAck49.js";import{d as s}from"./styleChecker-3IL-yw1V.js";const r=(()=>{const e=t(!1);return o(()=>{e.value=s()}),e});export{r as u};
1
+ import{o,s as t}from"./vendor-BvqAck49.js";import{d as s}from"./styleChecker-DH2SLtPg.js";const r=(()=>{const e=t(!1);return o(()=>{e.value=s()}),e});export{r as u};
@@ -1 +1 @@
1
- import{u as d}from"./index-oJQgRCrR.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-T3bIqK_p.js";import{u as c}from"./useShellMode-CgR0wCYM.js";function u({accept:l=""}={}){return new Promise(a=>{if(typeof document>"u"){a({canceled:!0,path:null,content:null});return}const n=document.createElement("input");n.type="file",l&&(n.accept=l),n.style.display="none",document.body.appendChild(n);let o=!1;const i=()=>{n.parentNode&&n.parentNode.removeChild(n)},r=()=>{if(o)return;o=!0;const e=n.files&&n.files[0];if(!e){i(),a({canceled:!0,path:null,content:null});return}const t=new FileReader;t.onload=()=>{i(),a({canceled:!1,path:e.name,size:e.size,content:typeof t.result=="string"?t.result:""})},t.onerror=()=>{i(),a({canceled:!1,path:e.name,size:e.size,content:null,reason:"read_failed"})},t.readAsText(e)};n.addEventListener("change",r),n.click()})}function f(l,{defaultPath:a="download.txt"}={}){if(typeof document>"u")return{canceled:!0,path:null};const n=new Blob([l],{type:"text/plain"}),o=URL.createObjectURL(n),i=document.createElement("a");return i.href=o,i.download=a,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(o),{canceled:!1,path:a}}function p(l){if(!Array.isArray(l))return"";const a=[];for(const n of l)if(Array.isArray(n.extensions))for(const o of n.extensions)a.push(`.${o.replace(/^\./,"")}`);return a.join(",")}function m(){const l=d();async function a(r={}){if(c().isEmbedded){const e=await l.sendRaw({type:"fs.openDialog",title:r.title,filters:r.filters},6e4);if(e&&e.ok===!1)throw new Error(e.error||"fs.openDialog failed");const t=e?.result??e;return{canceled:!!t.canceled,path:t.path??null,content:t.content??null,size:t.size,reason:t.reason}}return u({accept:p(r.filters)})}async function n(r,e={}){if(typeof r!="string")throw new Error("content must be a string");if(c().isEmbedded){const t=await l.sendRaw({type:"fs.saveDialog",title:e.title,defaultPath:e.defaultPath,filters:e.filters,content:r},6e4);if(t&&t.ok===!1)throw new Error(t.error||"fs.saveDialog failed");const s=t?.result??t;return{canceled:!!s.canceled,path:s.path??null}}return f(r,{defaultPath:e.defaultPath})}async function o(r,e={}){const t=JSON.stringify(r,null,2),s={...e,defaultPath:e.defaultPath||"data.json",filters:e.filters||[{name:"JSON",extensions:["json"]}]};return n(t,s)}async function i(r={}){if(!c().isEmbedded)return{canceled:!0,path:null,initialized:!1,unsupported:!0};const e=await l.sendRaw({type:"fs.openDirectory",title:r.title},6e4);if(e&&e.ok===!1)throw new Error(e.error||"fs.openDirectory failed");const t=e?.result??e;return{canceled:!!t.canceled,path:t.path??null,initialized:!!t.initialized}}return{pickFileText:a,saveText:n,saveJson:o,pickDirectory:i}}export{m as u};
@@ -1 +1 @@
1
- import{u as f}from"./index-oJQgRCrR.js";function d(n){if(!n)return n;if(n.error)throw new Error(n.error);return n.result!==void 0?n.result:n}function p(n,t,a,e,r){return typeof n.onMessage!="function"||typeof n.sendRaw!="function"?n.sendRaw({type:t,...a},r).then(d):new Promise((u,s)=>{const l=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,w=`${t}.event`,g=`${t}.end`;let c=!1,y=()=>{};const o=(i,b)=>{if(!c){c=!0,clearTimeout(m);try{y()}catch{}i(b)}},m=setTimeout(()=>{o(s,new Error(`stream timeout (${r}ms): ${t}`))},r),h=n.onMessage(i=>{if(!(c||!i)&&!(i.id!==l&&i.requestId!==l)){if(i.type===w){if(typeof e=="function")try{e(i.event||i)}catch{}return}if(i.type===g){o(u,d(i));return}i.type==="error"&&o(s,new Error(i.message||"stream error"))}});y=typeof h=="function"?h:()=>{},Promise.resolve(n.sendRaw({id:l,type:t,...a},r)).catch(()=>{})})}function D(){const n=f(),t=(a,e={},r=3e4)=>n.sendRaw({type:a,...e},r).then(d);return{async health(){return await t("personal-data-hub.health",{},8e3)},async stats(){return await t("personal-data-hub.stats",{},8e3)},async listAdapters(){return await t("personal-data-hub.list-adapters",{},5e3)},async pickFile(a={}){try{const e=await n.sendRaw({type:"fs.openDialog",title:a.title,filters:a.filters},6e4),r=e&&e.result!==void 0?e.result:e;return r&&r.ok&&typeof r.filePath=="string"?r.filePath:null}catch{return null}},async adapterReadiness(a){return await t("personal-data-hub.adapter-readiness",Number.isInteger(a)?{timeoutMs:a}:{},15e3)},async syncAdapter(a,e={}){return await t("personal-data-hub.sync-adapter",{name:a,options:e},12e4)},async syncAll(a={}){return await t("personal-data-hub.sync-all",{options:a},6e5)},async registerMock({name:a="mock",count:e=20,seed:r=1}={}){return await t("personal-data-hub.register-mock",{name:a,count:e,seed:r})},async unregister(a){return await t("personal-data-hub.unregister",{name:a})},async ask(a,e={}){return await t("personal-data-hub.ask",{question:a,options:e},18e4)},async queryEvents(a={}){return await t("personal-data-hub.query-events",a,1e4)},async recentAudit(a={}){return await t("personal-data-hub.recent-audit",a,1e4)},async searchEvents(a={}){return await t("personal-data-hub.search-events",a,15e3)},async facetCounts(a={}){return await t("personal-data-hub.facet-counts",a,1e4)},async testEmailAuth(a){return await t("personal-data-hub.test-email-auth",{account:a},3e4)},async registerEmail(a,e={}){return await t("personal-data-hub.register-email",{account:a,opts:e},15e3)},async unregisterEmail(a){return await t("personal-data-hub.unregister-email",{email:a},5e3)},async listEmailAccounts(){return await t("personal-data-hub.list-email-accounts",{},5e3)},async eventDetail(a){return await t("personal-data-hub.event-detail",{eventId:a},5e3)},async syncAdapterStream(a,e={},r){return await p(n,"personal-data-hub.sync-adapter-stream",{name:a,options:e},r,6e5)},async syncAllStream(a={},e){return await p(n,"personal-data-hub.sync-all-stream",{options:a},e,9e5)},async registerAlipay(a,e={}){return await t("personal-data-hub.register-alipay",{account:a,opts:e},15e3)},async unregisterAlipay(a){return await t("personal-data-hub.unregister-alipay",{email:a},5e3)},async listAlipayAccounts(){return await t("personal-data-hub.list-alipay-accounts",{},5e3)},async importAlipayBill({zipPath:a,csvPath:e,zipPassword:r}={}){return await t("personal-data-hub.import-alipay-bill",{zipPath:a,csvPath:e,zipPassword:r},3e5)},async reviewQueueList(a=50){return await t("personal-data-hub.review-queue-list",{limit:a},5e3)},async reviewDecision(a,e){return await t("personal-data-hub.review-decision",{reviewId:a,decision:e},5e3)},async manualMerge(a,e){return await t("personal-data-hub.manual-merge",{aId:a,bId:e},5e3)},async manualUnmerge(a){return await t("personal-data-hub.manual-unmerge",{personId:a},5e3)},async resolverDrain(a=50){return await t("personal-data-hub.resolver-drain",{limit:a},18e4)},async resolverStats(){return await t("personal-data-hub.resolver-stats",{},5e3)},async skillsList(){return await t("personal-data-hub.skills-list",{},5e3)},async runSkill(a,e={}){return await t("personal-data-hub.run-skill",{name:a,options:e},12e4)},async openAichatLogin(a,e={}){return await t("personal-data-hub.aichat-open-login",{vendor:a,opts:e},1e4)},async probeAichatCookies(a,e){return await t("personal-data-hub.aichat-probe-cookies",{vendor:a,cookieHeader:e},1e4)},async registerAichatVendor(a,e,r={}){return await t("personal-data-hub.aichat-register-vendor",{vendor:a,cookies:e,opts:r},3e4)},async rotateAichatLogin(a){return await t("personal-data-hub.aichat-rotate-login",{vendor:a},1e4)},async listAichatAccounts(){return await t("personal-data-hub.list-aichat-accounts",{},5e3)},async unregisterAichat(a){return await t("personal-data-hub.unregister-aichat",{vendor:a},5e3)},async aichatHealthCheckOnce(){return await t("personal-data-hub.aichat-health-check-once",{},3e4)},async probeWechatEnv(){return await t("personal-data-hub.wechat-env-probe",{},15e3)},async registerWechat({account:a,dbPath:e,wechatDataPath:r,fridaOpts:u,keyProviderOverride:s}={}){return await t("personal-data-hub.register-wechat",{account:a,dbPath:e,wechatDataPath:r,fridaOpts:u,keyProviderOverride:s},45e3)},async listWechatAccounts(){return await t("personal-data-hub.list-wechat-accounts",{},5e3)},async unregisterWechat(a){return await t("personal-data-hub.unregister-wechat",{uin:a},5e3)},async bilibiliAdbSync(a={}){return await t("personal-data-hub.bilibili-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bilibiliAdbDoctor(){return await t("personal-data-hub.bilibili-adb-doctor",{},15e3)},async weiboAdbSync(a={}){return await t("personal-data-hub.weibo-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async xhsAdbSync(a={}){return await t("personal-data-hub.xhs-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async toutiaoAdbSync(a={}){return await t("personal-data-hub.toutiao-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},9e4)},async kuaishouAdbSync(a={}){return await t("personal-data-hub.kuaishou-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bridgeDoctor(){return await t("personal-data-hub.bridge-doctor",{},6e4)},async douyinAdbSync(a={}){return await t("personal-data-hub.douyin-adb-sync",{uid:a.uid,limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)}}}export{D as u};
1
+ import{u as f}from"./index-T3bIqK_p.js";function d(n){if(!n)return n;if(n.error)throw new Error(n.error);return n.result!==void 0?n.result:n}function p(n,t,a,e,r){return typeof n.onMessage!="function"||typeof n.sendRaw!="function"?n.sendRaw({type:t,...a},r).then(d):new Promise((u,s)=>{const l=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,w=`${t}.event`,g=`${t}.end`;let c=!1,y=()=>{};const o=(i,b)=>{if(!c){c=!0,clearTimeout(m);try{y()}catch{}i(b)}},m=setTimeout(()=>{o(s,new Error(`stream timeout (${r}ms): ${t}`))},r),h=n.onMessage(i=>{if(!(c||!i)&&!(i.id!==l&&i.requestId!==l)){if(i.type===w){if(typeof e=="function")try{e(i.event||i)}catch{}return}if(i.type===g){o(u,d(i));return}i.type==="error"&&o(s,new Error(i.message||"stream error"))}});y=typeof h=="function"?h:()=>{},Promise.resolve(n.sendRaw({id:l,type:t,...a},r)).catch(()=>{})})}function D(){const n=f(),t=(a,e={},r=3e4)=>n.sendRaw({type:a,...e},r).then(d);return{async health(){return await t("personal-data-hub.health",{},8e3)},async stats(){return await t("personal-data-hub.stats",{},8e3)},async listAdapters(){return await t("personal-data-hub.list-adapters",{},5e3)},async pickFile(a={}){try{const e=await n.sendRaw({type:"fs.openDialog",title:a.title,filters:a.filters},6e4),r=e&&e.result!==void 0?e.result:e;return r&&r.ok&&typeof r.filePath=="string"?r.filePath:null}catch{return null}},async adapterReadiness(a){return await t("personal-data-hub.adapter-readiness",Number.isInteger(a)?{timeoutMs:a}:{},15e3)},async syncAdapter(a,e={}){return await t("personal-data-hub.sync-adapter",{name:a,options:e},12e4)},async syncAll(a={}){return await t("personal-data-hub.sync-all",{options:a},6e5)},async registerMock({name:a="mock",count:e=20,seed:r=1}={}){return await t("personal-data-hub.register-mock",{name:a,count:e,seed:r})},async unregister(a){return await t("personal-data-hub.unregister",{name:a})},async ask(a,e={}){return await t("personal-data-hub.ask",{question:a,options:e},18e4)},async queryEvents(a={}){return await t("personal-data-hub.query-events",a,1e4)},async recentAudit(a={}){return await t("personal-data-hub.recent-audit",a,1e4)},async searchEvents(a={}){return await t("personal-data-hub.search-events",a,15e3)},async facetCounts(a={}){return await t("personal-data-hub.facet-counts",a,1e4)},async testEmailAuth(a){return await t("personal-data-hub.test-email-auth",{account:a},3e4)},async registerEmail(a,e={}){return await t("personal-data-hub.register-email",{account:a,opts:e},15e3)},async unregisterEmail(a){return await t("personal-data-hub.unregister-email",{email:a},5e3)},async listEmailAccounts(){return await t("personal-data-hub.list-email-accounts",{},5e3)},async eventDetail(a){return await t("personal-data-hub.event-detail",{eventId:a},5e3)},async syncAdapterStream(a,e={},r){return await p(n,"personal-data-hub.sync-adapter-stream",{name:a,options:e},r,6e5)},async syncAllStream(a={},e){return await p(n,"personal-data-hub.sync-all-stream",{options:a},e,9e5)},async registerAlipay(a,e={}){return await t("personal-data-hub.register-alipay",{account:a,opts:e},15e3)},async unregisterAlipay(a){return await t("personal-data-hub.unregister-alipay",{email:a},5e3)},async listAlipayAccounts(){return await t("personal-data-hub.list-alipay-accounts",{},5e3)},async importAlipayBill({zipPath:a,csvPath:e,zipPassword:r}={}){return await t("personal-data-hub.import-alipay-bill",{zipPath:a,csvPath:e,zipPassword:r},3e5)},async reviewQueueList(a=50){return await t("personal-data-hub.review-queue-list",{limit:a},5e3)},async reviewDecision(a,e){return await t("personal-data-hub.review-decision",{reviewId:a,decision:e},5e3)},async manualMerge(a,e){return await t("personal-data-hub.manual-merge",{aId:a,bId:e},5e3)},async manualUnmerge(a){return await t("personal-data-hub.manual-unmerge",{personId:a},5e3)},async resolverDrain(a=50){return await t("personal-data-hub.resolver-drain",{limit:a},18e4)},async resolverStats(){return await t("personal-data-hub.resolver-stats",{},5e3)},async skillsList(){return await t("personal-data-hub.skills-list",{},5e3)},async runSkill(a,e={}){return await t("personal-data-hub.run-skill",{name:a,options:e},12e4)},async openAichatLogin(a,e={}){return await t("personal-data-hub.aichat-open-login",{vendor:a,opts:e},1e4)},async probeAichatCookies(a,e){return await t("personal-data-hub.aichat-probe-cookies",{vendor:a,cookieHeader:e},1e4)},async registerAichatVendor(a,e,r={}){return await t("personal-data-hub.aichat-register-vendor",{vendor:a,cookies:e,opts:r},3e4)},async rotateAichatLogin(a){return await t("personal-data-hub.aichat-rotate-login",{vendor:a},1e4)},async listAichatAccounts(){return await t("personal-data-hub.list-aichat-accounts",{},5e3)},async unregisterAichat(a){return await t("personal-data-hub.unregister-aichat",{vendor:a},5e3)},async aichatHealthCheckOnce(){return await t("personal-data-hub.aichat-health-check-once",{},3e4)},async probeWechatEnv(){return await t("personal-data-hub.wechat-env-probe",{},15e3)},async registerWechat({account:a,dbPath:e,wechatDataPath:r,fridaOpts:u,keyProviderOverride:s}={}){return await t("personal-data-hub.register-wechat",{account:a,dbPath:e,wechatDataPath:r,fridaOpts:u,keyProviderOverride:s},45e3)},async listWechatAccounts(){return await t("personal-data-hub.list-wechat-accounts",{},5e3)},async unregisterWechat(a){return await t("personal-data-hub.unregister-wechat",{uin:a},5e3)},async bilibiliAdbSync(a={}){return await t("personal-data-hub.bilibili-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bilibiliAdbDoctor(){return await t("personal-data-hub.bilibili-adb-doctor",{},15e3)},async weiboAdbSync(a={}){return await t("personal-data-hub.weibo-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async xhsAdbSync(a={}){return await t("personal-data-hub.xhs-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async toutiaoAdbSync(a={}){return await t("personal-data-hub.toutiao-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},9e4)},async kuaishouAdbSync(a={}){return await t("personal-data-hub.kuaishou-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bridgeDoctor(){return await t("personal-data-hub.bridge-doctor",{},6e4)},async douyinAdbSync(a={}){return await t("personal-data-hub.douyin-adb-sync",{uid:a.uid,limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)}}}export{D as u};
@@ -1 +1 @@
1
- import{M as i,h as a,w as l}from"./index-oJQgRCrR.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-BvqAck49.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 N(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,N as t};
1
+ import{M as i,h as a,w as l}from"./index-T3bIqK_p.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-BvqAck49.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 N(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,N as t};
@@ -1,4 +1,4 @@
1
- import{K as o}from"./index-oJQgRCrR.js";import{i as f}from"./motion-BerbusV1.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-T3bIqK_p.js";import{i as f}from"./motion-TeUH7wzx.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-oJQgRCrR.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-T3bIqK_p.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="./assets/vendor-BvqAck49.js">
13
13
  <link rel="modulepreload" crossorigin href="./assets/icons-DP3uiYxy.js">
14
14
  <link rel="stylesheet" crossorigin href="./assets/index-Cq93VfoF.css">
@@ -161,6 +161,10 @@ export function registerAgentCommand(program) {
161
161
  "text",
162
162
  )
163
163
  .option("--max-turns <n>", "Cap agent loop iterations (headless)")
164
+ .option(
165
+ "--json-schema <file>",
166
+ "Headless structured output: final reply must be JSON validating against this schema (invalid replies retried)",
167
+ )
164
168
  .option(
165
169
  "--allowed-tools <list>",
166
170
  "Comma/space-separated tool allow-list (headless)",
@@ -505,9 +509,7 @@ export function registerAgentCommand(program) {
505
509
  const maxTurns = options.maxTurns
506
510
  ? parseInt(options.maxTurns, 10)
507
511
  : undefined;
508
- let outcome;
509
- try {
510
- outcome = await runAgentHeadless({
512
+ const headlessOptions = {
511
513
  prompt,
512
514
  images,
513
515
  model: visionLlm.model || options.model,
@@ -557,7 +559,39 @@ export function registerAgentCommand(program) {
557
559
  outputStyle: options.outputStyle || null,
558
560
  // --fallback-model: retry once on a backup model on transient errors
559
561
  chatFn: fallbackChatFn,
560
- });
562
+ };
563
+
564
+ // --json-schema: structured output — wrap the runner with capture +
565
+ // validate + retry (json-schema-output.js); prints only the
566
+ // validated JSON. Incompatible with stream-json (event stream and a
567
+ // single JSON contract don't mix).
568
+ if (options.jsonSchema) {
569
+ if (options.outputFormat === "stream-json") {
570
+ process.stderr.write(
571
+ "--json-schema is incompatible with --output-format stream-json.\n",
572
+ );
573
+ process.exit(1);
574
+ }
575
+ try {
576
+ const { runJsonSchemaConstrained } = await import(
577
+ "../lib/json-schema-output.js"
578
+ );
579
+ const code = await runJsonSchemaConstrained({
580
+ schemaFile: options.jsonSchema,
581
+ baseOptions: headlessOptions,
582
+ runHeadless: runAgentHeadless,
583
+ });
584
+ process.exit(code);
585
+ } catch (err) {
586
+ process.stderr.write(`Error: ${err.message}\n`);
587
+ process.exit(1);
588
+ }
589
+ return;
590
+ }
591
+
592
+ let outcome;
593
+ try {
594
+ outcome = await runAgentHeadless(headlessOptions);
561
595
  } catch (err) {
562
596
  process.stderr.write(`Error: ${err.message}\n`);
563
597
  process.exit(1);
@@ -2415,6 +2415,12 @@ export function registerInitCommand(program) {
2415
2415
  "Force inventory mode even when a template flag is present (inventory is already the default without -t/--bare)",
2416
2416
  )
2417
2417
  .option("--force", "Overwrite an existing cc.md (inventory mode)")
2418
+ .option(
2419
+ "--ai",
2420
+ "After the offline census, run a bounded headless agent to fill cc.md's Conventions with observed facts (needs a reachable LLM; --provider/--model to override)",
2421
+ )
2422
+ .option("--provider <name>", "LLM provider for --ai")
2423
+ .option("--model <name>", "LLM model for --ai")
2418
2424
  .action(async (options, command) => {
2419
2425
  let cwd;
2420
2426
  if (options.cwd) {
@@ -2502,6 +2508,31 @@ export function registerInitCommand(program) {
2502
2508
  " Heads-up: `cc init` now inventories by default — use `--bare` or `-t <template>` for the old scaffold flow.",
2503
2509
  );
2504
2510
  }
2511
+ // --ai: agent-enhanced pass over the freshly written cc.md.
2512
+ if (options.ai) {
2513
+ logger.info(" Running AI refine pass (bounded headless agent)…");
2514
+ try {
2515
+ const { aiRefineMemoryFile } = await import(
2516
+ "../lib/init-ai-refine.js"
2517
+ );
2518
+ const res = await aiRefineMemoryFile({
2519
+ cwd,
2520
+ provider: options.provider,
2521
+ model: options.model,
2522
+ });
2523
+ if (res.isError) {
2524
+ logger.error(
2525
+ ` AI refine failed (cc.md keeps the offline census): ${String(res.result).slice(0, 200)}`,
2526
+ );
2527
+ } else {
2528
+ logger.success(" cc.md refined by agent — review the diff.");
2529
+ }
2530
+ } catch (err) {
2531
+ logger.error(
2532
+ ` AI refine failed (cc.md keeps the offline census): ${err.message}`,
2533
+ );
2534
+ }
2535
+ }
2505
2536
  return;
2506
2537
  }
2507
2538
 
@@ -214,6 +214,63 @@ export function registerMcpCommand(program) {
214
214
  }
215
215
  });
216
216
 
217
+ // mcp serve — expose THIS machine's files as an MCP server
218
+ mcp
219
+ .command("serve")
220
+ .description(
221
+ "Expose local file tools (read/list/search/write, root-confined) as a Streamable-HTTP MCP server for other clients",
222
+ )
223
+ .option("--port <n>", "Port to listen on (default: random free port)", "0")
224
+ .option("--root <dir>", "Serve root directory (default: cwd)")
225
+ .option("--read-only", "Disable the write_file tool")
226
+ .option("--token <token>", "Fixed Bearer token (default: random)")
227
+ .option("--no-auth", "Disable Bearer auth (server binds 127.0.0.1 only)")
228
+ .action(async (options) => {
229
+ try {
230
+ const { startMcpServe } = await import("../lib/mcp-serve.js");
231
+ const handle = await startMcpServe({
232
+ root: options.root,
233
+ port: Number(options.port) || 0,
234
+ readOnly: Boolean(options.readOnly),
235
+ token: options.auth === false ? false : options.token || null,
236
+ });
237
+ logger.log(chalk.bold("MCP server ready (Streamable-HTTP)"));
238
+ logger.log(` URL: ${chalk.cyan(handle.url)}`);
239
+ logger.log(` Root: ${handle.root}${handle.readOnly ? " (read-only)" : ""}`);
240
+ if (handle.token) {
241
+ logger.log(` Auth: Bearer ${handle.token}`);
242
+ } else {
243
+ logger.log(chalk.yellow(" Auth: disabled (--no-auth)"));
244
+ }
245
+ logger.log(chalk.gray("\nConnect from another cc via --mcp-config:"));
246
+ logger.log(
247
+ chalk.gray(
248
+ JSON.stringify(
249
+ {
250
+ mcpServers: {
251
+ ccfiles: {
252
+ transport: "http",
253
+ url: handle.url,
254
+ ...(handle.token
255
+ ? { headers: { Authorization: `Bearer ${handle.token}` } }
256
+ : {}),
257
+ },
258
+ },
259
+ },
260
+ null,
261
+ 2,
262
+ ),
263
+ ),
264
+ );
265
+ logger.log(chalk.gray("\nCtrl+C to stop."));
266
+ // keep the process alive until killed
267
+ await new Promise(() => {});
268
+ } catch (err) {
269
+ logger.error(chalk.red(`mcp serve failed: ${err.message}`));
270
+ process.exitCode = 1;
271
+ }
272
+ });
273
+
217
274
  // mcp servers — list configured servers
218
275
  mcp
219
276
  .command("servers")
@@ -53,6 +53,68 @@ export function registerMemoryCommand(program) {
53
53
  .command("memory")
54
54
  .description("Persistent memory and daily notes");
55
55
 
56
+ // memory files — observability for the cc.md project-memory loader
57
+ memory
58
+ .command("files")
59
+ .description(
60
+ "List the project-memory files cc agent auto-loads here (cc.md hierarchy + imports + path-scoped rules)",
61
+ )
62
+ .option("--cwd <dir>", "Inspect from this directory instead of cwd")
63
+ .option("--json", "Output as JSON")
64
+ .action(async (options) => {
65
+ try {
66
+ const { loadProjectInstructions } = await import(
67
+ "../lib/project-instructions.js"
68
+ );
69
+ const cwd = options.cwd || process.cwd();
70
+ const loaded = loadProjectInstructions({ cwd });
71
+ if (options.json) {
72
+ console.log(
73
+ JSON.stringify(
74
+ {
75
+ cwd,
76
+ files: loaded.files.map((f) => ({
77
+ path: f.path,
78
+ scope: f.scope,
79
+ bytes: f.bytes,
80
+ truncated: f.truncated,
81
+ })),
82
+ warnings: loaded.warnings,
83
+ },
84
+ null,
85
+ 2,
86
+ ),
87
+ );
88
+ return;
89
+ }
90
+ if (!loaded.files.length) {
91
+ logger.log(
92
+ "No project-memory files found — run `cc init` to generate a cc.md.",
93
+ );
94
+ return;
95
+ }
96
+ logger.log(chalk.bold("Project memory loaded by cc agent:"));
97
+ for (const f of loaded.files) {
98
+ logger.log(
99
+ ` [${f.scope.padEnd(7)}] ${f.path} ${chalk.gray(
100
+ `${f.bytes} bytes${f.truncated ? " (truncated)" : ""}`,
101
+ )}`,
102
+ );
103
+ }
104
+ for (const w of loaded.warnings) {
105
+ logger.log(chalk.yellow(` ⚠ ${w}`));
106
+ }
107
+ logger.log(
108
+ chalk.gray(
109
+ "Disable with CC_PROJECT_MEMORY=0 · file precedence: cc.md > CLAUDE.md > AGENTS.md",
110
+ ),
111
+ );
112
+ } catch (err) {
113
+ logger.error(`memory files failed: ${err.message}`);
114
+ process.exitCode = 1;
115
+ }
116
+ });
117
+
56
118
  // memory show
57
119
  memory
58
120
  .command("show", { isDefault: true })
@@ -343,6 +343,76 @@ export function registerSessionCommand(program) {
343
343
  }
344
344
  });
345
345
 
346
+ // session search — full-text search across agent transcripts (JSONL store)
347
+ session
348
+ .command("search")
349
+ .description(
350
+ "Full-text search across agent session transcripts (JSONL --resume store)",
351
+ )
352
+ .argument("<query>", "Text to find (case-insensitive)")
353
+ .option("-n, --limit <n>", "Max matches", "20")
354
+ .option("--sessions <n>", "Max recent sessions to scan", "200")
355
+ .option("--json", "Output as JSON")
356
+ .action(async (query, options) => {
357
+ try {
358
+ const store = await import("../harness/jsonl-session-store.js");
359
+ const q = String(query).toLowerCase();
360
+ const limit = Number(options.limit) || 20;
361
+ const sessions = store.listJsonlSessions({
362
+ limit: Number(options.sessions) || 200,
363
+ });
364
+ const matches = [];
365
+ for (const s of sessions) {
366
+ if (matches.length >= limit) break;
367
+ for (const ev of store.readEvents(s.id)) {
368
+ if (matches.length >= limit) break;
369
+ if (ev.type !== "user_message" && ev.type !== "assistant_message")
370
+ continue;
371
+ const text =
372
+ typeof ev.data?.content === "string"
373
+ ? ev.data.content
374
+ : JSON.stringify(ev.data?.content || "");
375
+ const idx = text.toLowerCase().indexOf(q);
376
+ if (idx === -1) continue;
377
+ const from = Math.max(0, idx - 30);
378
+ matches.push({
379
+ session: s.id,
380
+ title: s.title,
381
+ role: ev.type === "user_message" ? "user" : "assistant",
382
+ when: ev.timestamp ? new Date(ev.timestamp).toISOString() : "",
383
+ preview: text
384
+ .slice(from, idx + q.length + 50)
385
+ .replace(/\s+/g, " ")
386
+ .trim(),
387
+ });
388
+ }
389
+ }
390
+ if (options.json) {
391
+ console.log(JSON.stringify({ query, matches }, null, 2));
392
+ return;
393
+ }
394
+ if (!matches.length) {
395
+ logger.log(`No matches for "${query}".`);
396
+ return;
397
+ }
398
+ logger.log(chalk.bold(`Matches for "${query}":`));
399
+ for (const m of matches) {
400
+ logger.log(
401
+ ` ${chalk.cyan(m.session)} ${chalk.gray(`[${m.role}${m.when ? ` ${m.when.slice(0, 16)}` : ""}]`)}`,
402
+ );
403
+ logger.log(` …${m.preview}…`);
404
+ }
405
+ logger.log(
406
+ chalk.gray(
407
+ `\n${matches.length} match(es) · resume one with: cc agent --resume <session>`,
408
+ ),
409
+ );
410
+ } catch (err) {
411
+ logger.error(`session search failed: ${err.message}`);
412
+ process.exitCode = 1;
413
+ }
414
+ });
415
+
346
416
  // session delete
347
417
  session
348
418
  .command("delete")
@@ -18,6 +18,7 @@ export {
18
18
  getBaseSystemPrompt,
19
19
  buildSystemPrompt,
20
20
  executeTool,
21
+ computeProposedEdit,
21
22
  classifyError,
22
23
  isValidPackageName,
23
24
  chatWithTools,
@@ -0,0 +1,66 @@
1
+ /**
2
+ * `cc init --ai` — agent-enhanced inventory (claude /init parity, module 99
3
+ * §5.2). Runs AFTER the offline census wrote the starter cc.md: a bounded
4
+ * headless agent reads the repo (README, entry files) and rewrites cc.md so
5
+ * the Conventions section holds real, observed conventions instead of the
6
+ * "(add project rules here)" placeholder.
7
+ *
8
+ * Self-reference guard: the child run executes with CC_PROJECT_MEMORY=0 so
9
+ * the half-baked cc.md being refined is NOT injected into the very agent
10
+ * refining it. Restored in finally.
11
+ *
12
+ * Offline inventory stays the `cc init` default — this is strictly opt-in
13
+ * (needs a reachable LLM).
14
+ */
15
+
16
+ export const AI_REFINE_MAX_TURNS = 12;
17
+ export const AI_REFINE_TOOLS = [
18
+ "read_file",
19
+ "list_dir",
20
+ "search_files",
21
+ "write_file",
22
+ ];
23
+
24
+ export function buildRefinePrompt() {
25
+ return [
26
+ "You are refining this project's memory file `cc.md` (it was just generated from an offline folder census).",
27
+ "Steps:",
28
+ "1. read_file cc.md to see the current draft.",
29
+ "2. Read the README and one or two key entry/config files to learn the project's real conventions (code style, commit format, how to run tests, architecture notes worth remembering).",
30
+ "3. write_file cc.md with the refined version: KEEP the existing sections and data, but replace the placeholder under `## Conventions` with concrete, observed conventions (5-10 short bullets max). Do not invent facts you did not see.",
31
+ "Keep the file concise — it is loaded into every agent run.",
32
+ ].join("\n");
33
+ }
34
+
35
+ /**
36
+ * Run the refine pass.
37
+ * @param {object} opts { cwd, provider?, model?, baseUrl?, apiKey?,
38
+ * maxTurns?, runHeadless? (test seam) }
39
+ * @returns {Promise<{exitCode:number, result:string, isError:boolean}>}
40
+ */
41
+ export async function aiRefineMemoryFile(opts = {}) {
42
+ const run =
43
+ opts.runHeadless ||
44
+ (await import("../runtime/headless-runner.js")).runAgentHeadless;
45
+
46
+ const prev = process.env.CC_PROJECT_MEMORY;
47
+ process.env.CC_PROJECT_MEMORY = "0"; // self-reference guard
48
+ try {
49
+ return await run({
50
+ prompt: buildRefinePrompt(),
51
+ cwd: opts.cwd || process.cwd(),
52
+ provider: opts.provider || undefined,
53
+ model: opts.model || undefined,
54
+ baseUrl: opts.baseUrl || undefined,
55
+ apiKey: opts.apiKey || undefined,
56
+ permissionMode: "acceptEdits", // write_file must work headless
57
+ allowedTools: AI_REFINE_TOOLS,
58
+ maxTurns: opts.maxTurns || AI_REFINE_MAX_TURNS,
59
+ expandFileRefs: false,
60
+ outputFormat: "text",
61
+ });
62
+ } finally {
63
+ if (prev === undefined) delete process.env.CC_PROJECT_MEMORY;
64
+ else process.env.CC_PROJECT_MEMORY = prev;
65
+ }
66
+ }