chainlesschain 0.162.112 → 0.162.113

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 (150) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/assets/{AIOps-D5-YJKoN.js → AIOps-C31IEALR.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-Dk_4drjU.js → ActionButton-CAoIkNY6.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-BsvD2oq2.js → Analytics-BofSQQzg.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-DN-McO3E.js → AppLayout-C2dIYNTH.js} +5 -5
  6. package/src/assets/web-panel/assets/{Audit-aefwgTP9.js → Audit-BXaDbU7P.js} +1 -1
  7. package/src/assets/web-panel/assets/{Backup-BHhJOdYB.js → Backup-BTfBqsmK.js} +1 -1
  8. package/src/assets/web-panel/assets/{BaseInput-Dwuvhn6L.js → BaseInput-B_ak0VMO.js} +1 -1
  9. package/src/assets/web-panel/assets/{Chat-AmCFCgt4.js → Chat-BhcN6up6.js} +6 -6
  10. package/src/assets/web-panel/assets/{ChatBubbleRenderer-Btfp4AhA.js → ChatBubbleRenderer-D0dZVHhx.js} +1 -1
  11. package/src/assets/web-panel/assets/{Checkbox-DiqdvF8g.js → Checkbox-CjT0jj8Z.js} +1 -1
  12. package/src/assets/web-panel/assets/{Codegen-Dii5apOL.js → Codegen-CzLTeJlc.js} +1 -1
  13. package/src/assets/web-panel/assets/{Col-BQEwtCpd.js → Col-CiOd4VCk.js} +1 -1
  14. package/src/assets/web-panel/assets/{Community-C1QIOwPY.js → Community-MDcN43_I.js} +1 -1
  15. package/src/assets/web-panel/assets/{Compact-DN6Alh_k.js → Compact-BlP5PKNl.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compliance-NeWI_3Mx.js → Compliance-DQYF00Cq.js} +1 -1
  17. package/src/assets/web-panel/assets/{Cowork-W7Ehca-3.js → Cowork-BOSrQFS0.js} +2 -2
  18. package/src/assets/web-panel/assets/{Cron-CaXC-e_q.js → Cron-C0Htgg3F.js} +2 -2
  19. package/src/assets/web-panel/assets/{Crosschain-BlzqApQU.js → Crosschain-BuLRkpY3.js} +1 -1
  20. package/src/assets/web-panel/assets/{DID-Dzb92lQA.js → DID-N3E4UBEh.js} +2 -2
  21. package/src/assets/web-panel/assets/{Dashboard-_72Ud513.js → Dashboard-BB8JTDyU.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dropdown-DRmDou35.js → Dropdown-Dua4QX4R.js} +1 -1
  23. package/src/assets/web-panel/assets/{EmailListRenderer-DVFkRLM_.js → EmailListRenderer-Cj26sbeq.js} +1 -1
  24. package/src/assets/web-panel/assets/{FamilyGuardDashboard-_lYBcnoY.js → FamilyGuardDashboard-TwiOlWAm.js} +1 -1
  25. package/src/assets/web-panel/assets/{Federation-CfJywi0p.js → Federation-CeGFlymx.js} +1 -1
  26. package/src/assets/web-panel/assets/{FormItemContext-nDkRTvQo.js → FormItemContext-lrtJ7VdL.js} +1 -1
  27. package/src/assets/web-panel/assets/{GenericCardRenderer-DbwQOgKc.js → GenericCardRenderer-CSPy6cv0.js} +1 -1
  28. package/src/assets/web-panel/assets/{Git-Dt1_K90g.js → Git-C9V804Um.js} +2 -2
  29. package/src/assets/web-panel/assets/{Governance-C9rKuC3B.js → Governance-BCRg6szw.js} +1 -1
  30. package/src/assets/web-panel/assets/{Inference-CIvFHSgW.js → Inference-0DjHobMq.js} +1 -1
  31. package/src/assets/web-panel/assets/{KnowledgeGraph-CEhLtSoG.js → KnowledgeGraph-CKzlkXzc.js} +1 -1
  32. package/src/assets/web-panel/assets/{Logs-EB-9QMre.js → Logs-BgzswcOA.js} +2 -2
  33. package/src/assets/web-panel/assets/{Marketplace-1o-qH1w6.js → Marketplace-DXBTxAMo.js} +1 -1
  34. package/src/assets/web-panel/assets/{McpTools-LA_KYh8b.js → McpTools-CvzNbZys.js} +3 -3
  35. package/src/assets/web-panel/assets/{Memory-CW7J6_1u.js → Memory-BbBmqtPo.js} +2 -2
  36. package/src/assets/web-panel/assets/{MobileBridge-S4tPG0Ba.js → MobileBridge-BpL2BNXG.js} +2 -2
  37. package/src/assets/web-panel/assets/MobileProjects-R_zFuemA.js +1 -0
  38. package/src/assets/web-panel/assets/{Mtc-B_z-P5eG.js → Mtc-DQu3Arm_.js} +5 -5
  39. package/src/assets/web-panel/assets/{MtcAudit-CqkMfPLz.js → MtcAudit-DbswMnGL.js} +2 -2
  40. package/src/assets/web-panel/assets/{Multisig-ByZ1RbjK.js → Multisig-BJWojM4Z.js} +3 -3
  41. package/src/assets/web-panel/assets/{NLProgramming-BJWczKc1.js → NLProgramming-Cb60ScpP.js} +1 -1
  42. package/src/assets/web-panel/assets/{Notes-Dgbn9eAU.js → Notes-CzoE6dCZ.js} +3 -3
  43. package/src/assets/web-panel/assets/{NotificationSettings-0hO1FTaS.js → NotificationSettings-BZXqrg-J.js} +1 -1
  44. package/src/assets/web-panel/assets/{OrderTableRenderer-DWbDOs7E.js → OrderTableRenderer-BxAKnbfD.js} +1 -1
  45. package/src/assets/web-panel/assets/{Organization-DBUZefzg.js → Organization-BoTaL8pl.js} +4 -4
  46. package/src/assets/web-panel/assets/{Overflow-Dedhgbfn.js → Overflow-CAzqg4k3.js} +1 -1
  47. package/src/assets/web-panel/assets/{P2P-DY5Uw2Ia.js → P2P-CgzJoBIr.js} +2 -2
  48. package/src/assets/web-panel/assets/{PdhVaultBrowser-ChtX-zv3.js → PdhVaultBrowser-Cfaa63CB.js} +5 -5
  49. package/src/assets/web-panel/assets/{Permissions-Dgb0A1Dg.js → Permissions-DxUeh680.js} +3 -3
  50. package/src/assets/web-panel/assets/{PersonalDataHub-Bk6BcgxL.js → PersonalDataHub-S-H5XNNn.js} +2 -2
  51. package/src/assets/web-panel/assets/{Pipeline-XTT0YUkh.js → Pipeline-BjrADxSK.js} +1 -1
  52. package/src/assets/web-panel/assets/{Privacy-7Z7g_lgV.js → Privacy-DYsdMxlQ.js} +1 -1
  53. package/src/assets/web-panel/assets/{ProjectInit-DiwZ2oHT.js → ProjectInit-CUzdaYx1.js} +2 -2
  54. package/src/assets/web-panel/assets/{ProjectSettings-DQP7mvM0.js → ProjectSettings-DFnmFlpD.js} +2 -2
  55. package/src/assets/web-panel/assets/{Projects-fN6yqMZg.js → Projects-GOQqdP4u.js} +1 -1
  56. package/src/assets/web-panel/assets/{Providers-BJYbpaJC.js → Providers-Cpm9BlNl.js} +1 -1
  57. package/src/assets/web-panel/assets/{QuickAsk-BdpeMXsV.js → QuickAsk-DjBFjSUh.js} +1 -1
  58. package/src/assets/web-panel/assets/{Recommend-BlhwuL7Q.js → Recommend-EVTMMe1P.js} +1 -1
  59. package/src/assets/web-panel/assets/{Reputation-DyIEa8eK.js → Reputation-Botbv7S3.js} +1 -1
  60. package/src/assets/web-panel/assets/{Row-CcEPZJXB.js → Row-C3Nz28W3.js} +1 -1
  61. package/src/assets/web-panel/assets/{RssFeed-B8rGohFx.js → RssFeed-CjiBjWeF.js} +3 -3
  62. package/src/assets/web-panel/assets/{Search-B2qNi_vM.js → Search-DlsyX5fR.js} +1 -1
  63. package/src/assets/web-panel/assets/{Security-DPeJ-uj5.js → Security-CZhHoMdL.js} +4 -4
  64. package/src/assets/web-panel/assets/{Services-oh3XLHP7.js → Services-D_Bnic0O.js} +2 -2
  65. package/src/assets/web-panel/assets/{Skeleton-BuBnG-FL.js → Skeleton-CiZvE330.js} +1 -1
  66. package/src/assets/web-panel/assets/{Skills-BDHB_StS.js → Skills-CKVqtO-U.js} +1 -1
  67. package/src/assets/web-panel/assets/{Sla-Dfj7IJ1M.js → Sla-BInnM5w6.js} +1 -1
  68. package/src/assets/web-panel/assets/{SpeechSettings-BrjNiNdy.js → SpeechSettings-QnJOhSa-.js} +1 -1
  69. package/src/assets/web-panel/assets/{SyncSettings-DPiXTu-c.js → SyncSettings-CVpEDGPv.js} +2 -2
  70. package/src/assets/web-panel/assets/{Tasks-CwHx1NQg.js → Tasks-DjpSdKoQ.js} +1 -1
  71. package/src/assets/web-panel/assets/{Templates-BPVQAUmL.js → Templates-DAs7hSZn.js} +1 -1
  72. package/src/assets/web-panel/assets/{Tenant-CbAtEvmi.js → Tenant-fbZFofRo.js} +1 -1
  73. package/src/assets/web-panel/assets/{Terminal-lzSxpDKJ.js → Terminal-7PpJ-714.js} +2 -2
  74. package/src/assets/web-panel/assets/{TimelineRenderer-DMgwpq2x.js → TimelineRenderer-KQuaMPPO.js} +1 -1
  75. package/src/assets/web-panel/assets/{Tokens-B1fJ_0FO.js → Tokens-co0lrUd8.js} +1 -1
  76. package/src/assets/web-panel/assets/{Trigger-CcH8MCn9.js → Trigger-DGu6KG0U.js} +1 -1
  77. package/src/assets/web-panel/assets/{Trust-cEy5Cv7s.js → Trust-DxcBRMa0.js} +1 -1
  78. package/src/assets/web-panel/assets/{UkeySign-93daBtXV.js → UkeySign-BmIm0kl6.js} +1 -1
  79. package/src/assets/web-panel/assets/{VideoEditing-BcqpfQCW.js → VideoEditing-D2_w5mGi.js} +1 -1
  80. package/src/assets/web-panel/assets/{Wallet-C3lPJuFG.js → Wallet-BHAaiE8X.js} +4 -4
  81. package/src/assets/web-panel/assets/{WebAuthn-CIncm_eO.js → WebAuthn-CRtrKFSh.js} +3 -3
  82. package/src/assets/web-panel/assets/{WorkflowEditor-C7QbGIC6.js → WorkflowEditor-DjrhTXw-.js} +1 -1
  83. package/src/assets/web-panel/assets/{chat-_BGiBidF.js → chat-DDCMxp1K.js} +1 -1
  84. package/src/assets/web-panel/assets/{colors-CqkIBVqp.js → colors--4_xSbq4.js} +1 -1
  85. package/src/assets/web-panel/assets/{compact-item-DDGiqXQp.js → compact-item-DUz7Nnrf.js} +1 -1
  86. package/src/assets/web-panel/assets/{createContext-C2sxnTAB.js → createContext-C6hgEA6P.js} +1 -1
  87. package/src/assets/web-panel/assets/devWarning-qzaZtWgD.js +1 -0
  88. package/src/assets/web-panel/assets/{hasIn-ADHC1pW8.js → hasIn-DLsr5ccI.js} +1 -1
  89. package/src/assets/web-panel/assets/{index-DD1ntIl_.js → index-5S59MN5w.js} +1 -1
  90. package/src/assets/web-panel/assets/{index-B9gFEsuM.js → index-B0qel7OZ.js} +1 -1
  91. package/src/assets/web-panel/assets/{index-CnLh1mEV.js → index-B98uRfVY.js} +1 -1
  92. package/src/assets/web-panel/assets/index-BFKz8uJQ.js +1 -0
  93. package/src/assets/web-panel/assets/{index-CW-8fA2E.js → index-BKs7IQEb.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-f_7tVfQN.js → index-BPVk2Aef.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-C6vR4EY-.js → index-B_HoZFWD.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-eF5qSZFy.js → index-Ba-1vjJD.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-BfPDAlO3.js → index-Bf2UWwla.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-B2X8QuZn.js → index-BgVCtv2i.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CSTrqDF5.js → index-BrAktVfD.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-B9TmuLEi.js → index-BvBVv_y6.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-BZwfbVI0.js → index-C0MclIlp.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-DRssBAk_.js → index-C0edasoI.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-CGLwuyVE.js → index-CCBU-dhE.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-DgXXKWeh.js → index-CORbX-su.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-9_or8rsE.js → index-CS0DcLLe.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-BfsOYXaR.js → index-CZRi_BiL.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DSDmPMlb.js → index-Cdx5wAKy.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-syq6WxjO.js → index-CfWjCIeD.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-B-batZVW.js → index-CrC3Z0wT.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-nWnefDZq.js → index-DO4JBw2m.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-2hSe8r-u.js → index-DQfBPPHG.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BKYSl45n.js → index-DTB3o-AG.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-CYS85njA.js → index-DVTlvsAd.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-DhkXH2-c.js → index-DWQ4A_ig.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-CNjShHol.js → index-DmMDr432.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CZpeHDG9.js → index-DtjUgB7B.js} +3 -3
  117. package/src/assets/web-panel/assets/{index-C_2cn75G.js → index-Dts1rdrh.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-Chof4NeM.js → index-DuMSr7qB.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-D9enldZH.js → index-Dzr4dwNg.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-PQ5M2zy0.js → index-UcbyVEUR.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-XliCDQFQ.js → index-VW4mGJ0g.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-Bn4gVM4t.js → index-ZzZ7sUbw.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-D9LBuvwe.js → index-kB6cCYAK.js} +1 -1
  124. package/src/assets/web-panel/assets/index-lhIs6Z78.js +1 -0
  125. package/src/assets/web-panel/assets/{index-CLMJ-Zwl.js → index-nhe7lwfU.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-BUqSQfe-.js → index-x59Oik1J.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-DwLTX_IW.js → index-zwI19UuK.js} +1 -1
  128. package/src/assets/web-panel/assets/{initDefaultProps-Df7mcMp7.js → initDefaultProps-CPyHDtDC.js} +1 -1
  129. package/src/assets/web-panel/assets/{motion-BT8UUoVr.js → motion-Blq36u4Y.js} +1 -1
  130. package/src/assets/web-panel/assets/{move-D4ti8GiP.js → move-HuAtMUkO.js} +1 -1
  131. package/src/assets/web-panel/assets/{omit-DhvwGkZD.js → omit-CVMoOx32.js} +1 -1
  132. package/src/assets/web-panel/assets/{pickAttrs-DAWblJD8.js → pickAttrs-BunNS-fj.js} +1 -1
  133. package/src/assets/web-panel/assets/{placementArrow-BIcwHC1D.js → placementArrow-Eg_eS8OF.js} +1 -1
  134. package/src/assets/web-panel/assets/{responsiveObserve-Cow45GkA.js → responsiveObserve-BiU0qt8R.js} +1 -1
  135. package/src/assets/web-panel/assets/{slide-DhNh5mZd.js → slide-BZfRWEJu.js} +1 -1
  136. package/src/assets/web-panel/assets/{statusUtils-CDmgb05N.js → statusUtils-j5payJ2P.js} +1 -1
  137. package/src/assets/web-panel/assets/{styleChecker-B8HoJol7.js → styleChecker--CNWRiiz.js} +1 -1
  138. package/src/assets/web-panel/assets/{useFlexGapSupport-CNESbv-e.js → useFlexGapSupport-BtY8OW_f.js} +1 -1
  139. package/src/assets/web-panel/assets/{useFs-BGkOBM9Y.js → useFs-CL-bgDIB.js} +1 -1
  140. package/src/assets/web-panel/assets/{usePersonalDataHub-B4h_mNgo.js → usePersonalDataHub-BEjDzvTR.js} +1 -1
  141. package/src/assets/web-panel/assets/{vnode-vfzdFP3R.js → vnode-B3IodNFs.js} +1 -1
  142. package/src/assets/web-panel/assets/{zoom-D-IzQshP.js → zoom-DvLt_owF.js} +1 -1
  143. package/src/assets/web-panel/index.html +1 -1
  144. package/src/commands/mcp.js +15 -2
  145. package/src/commands/note.js +53 -25
  146. package/src/lib/permission-rules.cjs +33 -0
  147. package/src/assets/web-panel/assets/MobileProjects-CKsCtJtE.js +0 -1
  148. package/src/assets/web-panel/assets/devWarning-DkTISuFY.js +0 -1
  149. package/src/assets/web-panel/assets/index-Bkf7pbci.js +0 -1
  150. package/src/assets/web-panel/assets/index-C4lFS6nf.js +0 -1
@@ -1 +1 @@
1
- import{u as f}from"./index-CZpeHDG9.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-DtjUgB7B.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-CZpeHDG9.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-DtjUgB7B.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-CZpeHDG9.js";import{i as f}from"./motion-BT8UUoVr.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-DtjUgB7B.js";import{i as f}from"./motion-Blq36u4Y.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-CZpeHDG9.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-DtjUgB7B.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">
@@ -33,6 +33,15 @@ import {
33
33
  getServer as registryGetServer,
34
34
  } from "../lib/mcp-registry.js";
35
35
 
36
+ /**
37
+ * Whether `mcp login` should NOT open a browser. True when either the canonical
38
+ * `--no-open` flag or the Claude-Code-parity `--no-browser` alias is passed.
39
+ * Commander maps each negatable flag to a boolean that is `false` when present.
40
+ */
41
+ export function loginWantsNoBrowser(options = {}) {
42
+ return options.open === false || options.browser === false;
43
+ }
44
+
36
45
  // Singleton MCP client for session reuse
37
46
  let mcpClient = null;
38
47
 
@@ -151,12 +160,16 @@ export function registerMcpCommand(program) {
151
160
  53682,
152
161
  )
153
162
  .option("--no-open", "Print the authorize URL instead of opening a browser")
163
+ .option(
164
+ "--no-browser",
165
+ "Alias for --no-open (do not open a browser; print the URL — handy over SSH)",
166
+ )
154
167
  .action(async (target, options) => {
155
168
  try {
156
169
  const url = await resolveAuthTargetUrl(program, target);
157
170
  const oauth = await import("../lib/mcp-oauth.js");
158
- if (options.open === false) {
159
- oauth._deps.openBrowser = () => false; // commander maps --no-open open:false
171
+ if (loginWantsNoBrowser(options)) {
172
+ oauth._deps.openBrowser = () => false; // --no-open / --no-browser
160
173
  }
161
174
  logger.log(chalk.gray(`Authorizing ${url} …`));
162
175
  const rec = await oauth.authorizeInteractive(url, {
@@ -64,6 +64,48 @@ function ensureNotesTable(db) {
64
64
  `);
65
65
  }
66
66
 
67
+ /**
68
+ * Select notes for `note list`. Tags are stored as a JSON array, so tag
69
+ * filtering happens in-memory — the row limit must therefore be applied AFTER
70
+ * that filter rather than via SQL `LIMIT`, otherwise `--tag X --limit N`
71
+ * returns "matches among the N most-recent notes" (often far fewer than N, or
72
+ * zero) instead of "up to N notes tagged X". Category is a real column, so it
73
+ * is SQL-filtered and composes with LIMIT directly.
74
+ *
75
+ * Exported for unit testing. `rawDb` only needs a better-sqlite3-style
76
+ * `prepare(sql).all(...params)`. `limit` is the already-resolved numeric cap.
77
+ */
78
+ export function selectNotesForList(rawDb, { category, tag, limit } = {}) {
79
+ let sql =
80
+ "SELECT id, title, tags, category, created_at FROM notes WHERE deleted_at IS NULL";
81
+ const params = [];
82
+ if (category) {
83
+ sql += " AND category = ?";
84
+ params.push(category);
85
+ }
86
+ sql += " ORDER BY created_at DESC";
87
+ // Only push LIMIT into SQL when no in-memory tag filter follows.
88
+ if (!tag) {
89
+ sql += " LIMIT ?";
90
+ params.push(limit);
91
+ }
92
+
93
+ let notes = rawDb.prepare(sql).all(...params);
94
+
95
+ if (tag) {
96
+ notes = notes
97
+ .filter((n) => {
98
+ try {
99
+ return JSON.parse(n.tags || "[]").includes(tag);
100
+ } catch {
101
+ return false;
102
+ }
103
+ })
104
+ .slice(0, limit);
105
+ }
106
+ return notes;
107
+ }
108
+
67
109
  export function registerNoteCommand(program) {
68
110
  const note = program
69
111
  .command("note")
@@ -142,31 +184,17 @@ export function registerNoteCommand(program) {
142
184
  const rawDb = ctx.db.getDatabase();
143
185
  ensureNotesTable(rawDb);
144
186
 
145
- let sql =
146
- "SELECT id, title, tags, category, created_at FROM notes WHERE deleted_at IS NULL";
147
- const params = [];
148
-
149
- if (options.category) {
150
- sql += " AND category = ?";
151
- params.push(options.category);
152
- }
153
-
154
- sql += " ORDER BY created_at DESC LIMIT ?";
155
- params.push(numericOption(options.limit, { name: "--limit", integer: true, min: 1, fallback: 20 }));
156
-
157
- let notes = rawDb.prepare(sql).all(...params);
158
-
159
- // Filter by tag in-memory (tags stored as JSON array)
160
- if (options.tag) {
161
- notes = notes.filter((n) => {
162
- try {
163
- const tags = JSON.parse(n.tags || "[]");
164
- return tags.includes(options.tag);
165
- } catch {
166
- return false;
167
- }
168
- });
169
- }
187
+ const limit = numericOption(options.limit, {
188
+ name: "--limit",
189
+ integer: true,
190
+ min: 1,
191
+ fallback: 20,
192
+ });
193
+ const notes = selectNotesForList(rawDb, {
194
+ category: options.category,
195
+ tag: options.tag,
196
+ limit,
197
+ });
170
198
 
171
199
  if (options.json) {
172
200
  console.log(JSON.stringify(notes, null, 2));
@@ -18,6 +18,11 @@
18
18
  * input parameter, incl. arbitrary MCP tool args;
19
19
  * `*` crosses `/` here, unlike path globs)
20
20
  * mcp__db__query(table:users) → that MCP tool whose `table` arg is "users"
21
+ * Agent(Explore) → spawn_sub_agent whose type (profile/agent/role) is
22
+ * "Explore" (CC 2.1.186 `Agent(type)`; case-insensitive
23
+ * identifiers, globs ok)
24
+ * Agent(Explore,Plan) → spawn_sub_agent whose type is Explore OR Plan
25
+ * (CC 2.1.186 `Agent(x,y)` allowed/denied-types list)
21
26
  * Bash → every run_shell call
22
27
  * * → every tool call (Claude-Code deny-all idiom)
23
28
  * Bash(*) → every run_shell call (lone-`*` pattern = match-all)
@@ -54,6 +59,7 @@ const TOOL_GROUPS = Object.freeze({
54
59
  webfetch: ["web_fetch"],
55
60
  websearch: ["web_search"],
56
61
  task: ["spawn_sub_agent"],
62
+ agent: ["spawn_sub_agent"],
57
63
  skill: ["run_skill", "list_skills"],
58
64
  runcode: ["run_code"],
59
65
  git: ["git"],
@@ -73,6 +79,8 @@ const PATH_TOOLS = new Set([
73
79
  ]);
74
80
  /** Tools whose match target is a URL. */
75
81
  const URL_TOOLS = new Set(["web_fetch"]);
82
+ /** Tools whose positional pattern is a sub-agent TYPE list (CC `Agent(type)`). */
83
+ const SUBAGENT_TOOLS = new Set(["spawn_sub_agent"]);
76
84
 
77
85
  /**
78
86
  * Does a rule's tool token apply to the concrete tool being evaluated?
@@ -254,6 +262,30 @@ function matchPattern(pattern, actualTool, args, cwd) {
254
262
  if (pv && Object.prototype.hasOwnProperty.call(args || {}, pv[1])) {
255
263
  return matchParamValue(pv[2].trim(), (args || {})[pv[1]]);
256
264
  }
265
+ // Claude-Code 2.1.186: `Agent(type)` / `Agent(typeA,typeB)` — restrict the
266
+ // spawn_sub_agent tool by sub-agent TYPE. A call's type identity is its
267
+ // `profile`, named `agent`, or `role` (whichever are present). The pattern is
268
+ // a comma-separated list; it matches when ANY listed type matches ANY of the
269
+ // call's identities (case-insensitive identifiers; `*`/`?` globs allowed).
270
+ // The `Tool(param:value)` branch above still handles `Task(profile:explorer)`;
271
+ // this adds the bare positional spelling Claude-Code settings.json uses.
272
+ if (SUBAGENT_TOOLS.has(actualTool)) {
273
+ const a = args || {};
274
+ const ids = [a.profile, a.agent, a.role].filter(
275
+ (x) => x != null && String(x) !== "",
276
+ );
277
+ if (!ids.length) return false;
278
+ const wanted = pattern
279
+ .split(",")
280
+ .map((s) => s.trim())
281
+ .filter(Boolean);
282
+ if (!wanted.length) return false;
283
+ return wanted.some((w) =>
284
+ ids.some((id) =>
285
+ matchParamValue(w.toLowerCase(), String(id).toLowerCase()),
286
+ ),
287
+ );
288
+ }
257
289
  const target = extractTarget(actualTool, args, cwd);
258
290
  if (target.kind === "command") {
259
291
  return target.value ? matchCommand(pattern, target.value) : false;
@@ -367,6 +399,7 @@ module.exports = {
367
399
  COMMAND_TOOLS,
368
400
  PATH_TOOLS,
369
401
  URL_TOOLS,
402
+ SUBAGENT_TOOLS,
370
403
  toolMatches,
371
404
  parseRule,
372
405
  globToRegExp,
@@ -1 +0,0 @@
1
- import{I as n,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as b}from"./vendor-BvqAck49.js";import{_ as v,b as m}from"./index-CZpeHDG9.js";import{a7 as y,M as B}from"./icons-DP3uiYxy.js";const M={__name:"MobileProjects",setup(p,{expose:i}){i();const c=u(),{t:e}=m();function a(){c.push("/projects")}function _(){c.push("/mobile-bridge")}const s={router:c,t:e,goToProjects:a,goToMobileBridge:_,get useRouter(){return u},get useI18n(){return m},get MobileOutlined(){return B},get FolderOutlined(){return y}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},x={class:"mobile-projects-placeholder"},O={class:"title"},w={class:"subtitle"},T={class:"explainer"};function k(p,i,c,e,a,_){const s=n("a-alert"),d=n("a-button"),f=n("a-space"),P=n("a-empty"),j=n("a-card");return h(),g("div",x,[l(j,null,{default:r(()=>[l(P,{description:!1},{image:r(()=>[l(e.MobileOutlined,{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:r(()=>[o("h2",O,t(e.t("mobileProjects.title")),1),o("p",w,t(e.t("mobileProjects.subtitle")),1),l(s,{message:e.t("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),o("div",T,[o("h3",null,t(e.t("mobileProjects.currentDirection")),1),o("p",null,t(e.t("mobileProjects.currentDirectionBody")),1),o("ul",null,[o("li",null,t(e.t("mobileProjects.stepPhone")),1),o("li",null,t(e.t("mobileProjects.stepTap")),1),o("li",null,t(e.t("mobileProjects.stepPull")),1)]),o("h3",null,t(e.t("mobileProjects.reverseDirection")),1),o("p",null,t(e.t("mobileProjects.reverseDirectionBody")),1)]),l(f,{class:"actions"},{default:r(()=>[l(d,{type:"primary",onClick:e.goToProjects},{default:r(()=>[l(e.FolderOutlined),b(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),b(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(M,[["render",k],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-wTPIBh/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N as default};
@@ -1 +0,0 @@
1
- import{O as r}from"./index-CZpeHDG9.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-CcEPZJXB.js";import{U as t}from"./index-CZpeHDG9.js";import"./vendor-BvqAck49.js";import"./responsiveObserve-Cow45GkA.js";import"./useFlexGapSupport-CNESbv-e.js";import"./styleChecker-B8HoJol7.js";import"./index-CnLh1mEV.js";import"./icons-DP3uiYxy.js";const l=t(o);export{l as default};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-BQEwtCpd.js";import{U as t}from"./index-CZpeHDG9.js";import"./vendor-BvqAck49.js";import"./index-CnLh1mEV.js";import"./icons-DP3uiYxy.js";const s=t(o);export{s as default};