chainlesschain 0.162.90 → 0.162.91
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.
- package/package.json +2 -2
- package/src/assets/web-panel/assets/{AIOps-CUU1CN5v.js → AIOps-CfH0LGIR.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-D7obDp1D.js → ActionButton-DqsVIkac.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DoHxIThS.js → Analytics-BlcTi3do.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-DoGNh61D.js → AppLayout-BiatHFU5.js} +5 -5
- package/src/assets/web-panel/assets/{Audit-Blsu-XVl.js → Audit-Bh9STjuo.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-De-K8Mf6.js → Backup-BZlP_7YW.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-0DBGC-Qy.js → BaseInput-CzPK9LFe.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-IEJXGp4A.js → Chat-VsLOk_iF.js} +6 -6
- package/src/assets/web-panel/assets/ChatBubbleRenderer-J1cMbhFV.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-Dgly7Wb4.js → Checkbox-Cg3Sa3N3.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BADA7pRy.js → Codegen-BCrBxWj5.js} +1 -1
- package/src/assets/web-panel/assets/{Col-DEOhJE0I.js → Col-nfNjH8M1.js} +1 -1
- package/src/assets/web-panel/assets/{Community-0RdnMWlk.js → Community-CNbhMMyd.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-i9eT8LcF.js → Compact-ns5YyIda.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CSRNgXGk.js → Compliance-BCXvQORj.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-P7z8tygk.js → Cowork-BXZ9XwAb.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-C49W98ih.js → Cron-BZeZhcFi.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-yMAal2Ah.js → Crosschain-BYpsEYtX.js} +1 -1
- package/src/assets/web-panel/assets/{DID-Dl2Ad_VR.js → DID-DYg88KQS.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CYjuGfVa.js → Dashboard-D1m5i7Oo.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-CleQMach.js → Dropdown-D79SohQ_.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-BDDIGtuF.js → EmailListRenderer-CM5PhWFk.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-B1ebvoEU.js → FamilyGuardDashboard-CwCgR96n.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BqzJlYyH.js → Federation-B1pC4pj_.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DaZ2IcKx.js → FormItemContext-B2Byh8nJ.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-D1QgXKYz.js → GenericCardRenderer-BDolpio8.js} +1 -1
- package/src/assets/web-panel/assets/{Git-C_hcF3Us.js → Git-ZM6GR4gB.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-D9dA-d8s.js → Governance-A0vulILs.js} +1 -1
- package/src/assets/web-panel/assets/{Inference--RrBmPXD.js → Inference-DQksRDY-.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DL8pYycV.js → KnowledgeGraph-BR8xlpsB.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-BaNV0yhO.js → Logs-DhbN3bQR.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-DFwjpKpf.js → Marketplace-Ba3_M_rf.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CBB749Ot.js → McpTools-DjQedcqj.js} +5 -5
- package/src/assets/web-panel/assets/{Memory--ByzjhfO.js → Memory-C4BOiBQA.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-D95LlJsv.js → MobileBridge-Eb9_2EZc.js} +2 -2
- package/src/assets/web-panel/assets/{MobileProjects-DMj3obZF.js → MobileProjects-CEltmoDC.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-B9KxzUdp.js → Mtc-Coz7hypp.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-BnsYAJtX.js → MtcAudit-jitGZ4zV.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-xXiUo7j4.js → Multisig-B1k0Vjbd.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-ZwP9uTMW.js → NLProgramming-B3h14Hp1.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-Ds9c8DsR.js → Notes-D4drvd8Q.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-hmVl6u3C.js → NotificationSettings-XRqZkqMC.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-0zwbhl09.js → OrderTableRenderer-BJTCSW9U.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DxAlPoAj.js → Organization-D0O_--Xf.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-B8ZTSn_q.js → Overflow-DA-fhxgi.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DAtgVM3K.js → P2P-Du4iu0EH.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-UIVFUBGx.js → PdhVaultBrowser-CdmbiCvC.js} +4 -4
- package/src/assets/web-panel/assets/{Permissions-pnyWeMrU.js → Permissions-fq4t5Q-v.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BjugBPb1.js → PersonalDataHub-CXNhFPbJ.js} +2 -2
- package/src/assets/web-panel/assets/{Pipeline-CwouGOua.js → Pipeline-DL1S-WvG.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-dzqF0gQv.js → Privacy-BmZVvroI.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-6ccqykoJ.js → ProjectInit-C7uUB8yN.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-umC-Vug3.js → ProjectSettings-DOJSilM6.js} +2 -2
- package/src/assets/web-panel/assets/Projects-77H6ySce.js +1 -0
- package/src/assets/web-panel/assets/{Providers-D8ccNwmj.js → Providers-BDuUxy_S.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-C2xYcNtw.js → QuickAsk-DuXr1HBs.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-tfWUU-s_.js → Recommend-s0ys49Y6.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-rFXftu7T.js → Reputation-T7cBxPZB.js} +1 -1
- package/src/assets/web-panel/assets/{Row-GSEmzZbO.js → Row-DY7QkE40.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-DRc1SVBF.js → RssFeed-CXwSL_20.js} +2 -2
- package/src/assets/web-panel/assets/{Search-zM4n0qTF.js → Search-DM1cGL48.js} +1 -1
- package/src/assets/web-panel/assets/{Security-CAS0P5mv.js → Security-B7CjhAUF.js} +3 -3
- package/src/assets/web-panel/assets/{Services-m6T91kxF.js → Services-51scqOOO.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DeJP7jXC.js → Skeleton-zdnH2Wt8.js} +1 -1
- package/src/assets/web-panel/assets/Skills-BEI9oU2G.js +1 -0
- package/src/assets/web-panel/assets/{Sla-CY8SyFjq.js → Sla-BMM1gak6.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-BU2wVhiT.js → SpeechSettings-gXKT0Pht.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-UC8A4ZOp.js → SyncSettings-CLIdurCQ.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-D_wUVzBB.js → Tasks-BW_u9uZ_.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-C1Rryvmd.js → Templates-W57F4fUO.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-C7i1YsZR.js → Tenant-CNxcG2Dt.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CNJPa6QX.js → Terminal--5xxkr4v.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-CEMTBMX-.js → TimelineRenderer-ffvNH5q_.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-CL2ZxjR6.js → Tokens-IyF4oj79.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CBmecSgf.js → Trigger-D2apOyZS.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DVEEJI8Q.js → Trust-x9vuoy3q.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Bumw9-l-.js → UkeySign-CwizDIXZ.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CxAn3OnO.js → VideoEditing-C2Ln7Kq7.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-DiaIIXpX.js → Wallet-Cws26atX.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-Cu77ilyR.js → WebAuthn-v7IxUUBB.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-CEVtkNGh.js → WorkflowEditor-Br74GhIi.js} +1 -1
- package/src/assets/web-panel/assets/{chat-DCIbNcWp.js → chat-KrcMgac3.js} +1 -1
- package/src/assets/web-panel/assets/{colors-CFAsOWWc.js → colors-B9NlHBKX.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BtcWzkn9.js → compact-item-ucoM5PoZ.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-DM02coVP.js → createContext-C2MKujpr.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-f1CKFh1R.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-BDZ9Ekx9.js → hasIn-CgAlgUtK.js} +1 -1
- package/src/assets/web-panel/assets/{index-g529Tmyi.js → index-2LGuNKv8.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cwl7qqJX.js → index-3-4wqvMG.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cw6H_GmX.js → index-8oFY-TpQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-uM8aQYlG.js → index-AYDQcvSw.js} +1 -1
- package/src/assets/web-panel/assets/{index-N0f9HUpv.js → index-B77stIfa.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7Eci2-q.js → index-BCbW-OWZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DDQ1bvfV.js → index-BJQnXH_2.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bx6loBFk.js → index-BLoNpl9O.js} +1 -1
- package/src/assets/web-panel/assets/{index-HuAwgOyl.js → index-BVYXIBZd.js} +1 -1
- package/src/assets/web-panel/assets/{index-CsaFqGsp.js → index-BXShSAgo.js} +1 -1
- package/src/assets/web-panel/assets/{index-CEEhhH_D.js → index-B_3o4wRd.js} +1 -1
- package/src/assets/web-panel/assets/{index-_b9l_C4D.js → index-BjhTlhJg.js} +1 -1
- package/src/assets/web-panel/assets/{index-B7k4idtg.js → index-BjsALrKU.js} +1 -1
- package/src/assets/web-panel/assets/{index-BMoQKqYy.js → index-BpKxcc3K.js} +1 -1
- package/src/assets/web-panel/assets/index-BsLyo4jI.js +1 -0
- package/src/assets/web-panel/assets/{index-BcghAQsx.js → index-BtK0EB-8.js} +1 -1
- package/src/assets/web-panel/assets/{index-CM_qO-Wi.js → index-C0ZXotqB.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cph9nP-9.js → index-C4L_s9ey.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7zC4EVL.js → index-C8c_c2QL.js} +1 -1
- package/src/assets/web-panel/assets/{index-CBmXtXp6.js → index-C9h1BvUA.js} +1 -1
- package/src/assets/web-panel/assets/{index-B2RA_MJb.js → index-CJ1PJbpz.js} +3 -3
- package/src/assets/web-panel/assets/{index--uVAPmGR.js → index-Cdb2CCHI.js} +1 -1
- package/src/assets/web-panel/assets/{index-DN5pX0pj.js → index-CfKoVYU6.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJTn1VjP.js → index-CkHvyWQe.js} +1 -1
- package/src/assets/web-panel/assets/{index-BXo_QE0d.js → index-CqyuV-ZC.js} +1 -1
- package/src/assets/web-panel/assets/{index-HCl7zhMl.js → index-DH-Vlfx0.js} +1 -1
- package/src/assets/web-panel/assets/{index-BLqJHRDI.js → index-DLTT1aIE.js} +1 -1
- package/src/assets/web-panel/assets/{index-uUDj49aJ.js → index-DV6hwj9h.js} +1 -1
- package/src/assets/web-panel/assets/{index-D4X_P7fC.js → index-D_hBH7Lk.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7lzFVWX.js → index-DaKVgq2H.js} +1 -1
- package/src/assets/web-panel/assets/{index-DkWVA1-9.js → index-DiQi1Nn0.js} +1 -1
- package/src/assets/web-panel/assets/{index-B-sCou25.js → index-DlPh6tSG.js} +1 -1
- package/src/assets/web-panel/assets/{index-3bP_3pQF.js → index-Dw0KiPhF.js} +1 -1
- package/src/assets/web-panel/assets/{index-BtxcSBXC.js → index-KJqFp_4t.js} +1 -1
- package/src/assets/web-panel/assets/index-PdGtWBnw.js +1 -0
- package/src/assets/web-panel/assets/{index-1rncs92o.js → index-WUmjOm7q.js} +1 -1
- package/src/assets/web-panel/assets/{index-BKoKIDcM.js → index-XAlOyfmF.js} +1 -1
- package/src/assets/web-panel/assets/{index-7wFrzA4Z.js → index-aZLVVtNg.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dh1wBDli.js → index-xfUbOROm.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BUUm7blZ.js → initDefaultProps-DumEAuVm.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CInc71Ft.js → motion-Da6ILriX.js} +1 -1
- package/src/assets/web-panel/assets/{move-Cx55hmPo.js → move-BNsBzDI4.js} +1 -1
- package/src/assets/web-panel/assets/{omit-JARbRj1V.js → omit-C0l_i8Oc.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-BYLAq9Na.js → pickAttrs-YBBtSkFq.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-HMMFCRqE.js → placementArrow-DUmBg5Dm.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-oWVLeE2s.js → responsiveObserve-QykXmzwI.js} +1 -1
- package/src/assets/web-panel/assets/{slide-FQzTsWDz.js → slide-DAVP7giq.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CjP_iGFp.js → statusUtils-CKHm-5Up.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-BRMI8mF3.js → styleChecker-x3IaGY0i.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-xcJuPJdm.js → useFlexGapSupport-DVedU9WT.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BAiSiSMd.js → useFs-BlTWAw3i.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BeD-UCwh.js → usePersonalDataHub-CsUbX17F.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-Ld46zJcQ.js → vnode-BtcayMRR.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-C9VRfvTW.js → zoom-Cn-Bj81P.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/lib/sensitive-file-guard.js +12 -2
- package/src/repl/agent-repl.js +3 -0
- package/src/runtime/agent-core.js +39 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-BrdUSKJs.js +0 -1
- package/src/assets/web-panel/assets/Projects-BeOnWXDB.js +0 -1
- package/src/assets/web-panel/assets/Skills-aoIPXqbU.js +0 -1
- package/src/assets/web-panel/assets/devWarning-lHwojmXr.js +0 -1
- package/src/assets/web-panel/assets/index-BwswivuZ.js +0 -1
- package/src/assets/web-panel/assets/index-DT2mCN-q.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./index-
|
|
1
|
+
import{i as e}from"./index-CJ1PJbpz.js";function r(a,s,t){return e({[`${a}-status-success`]:s==="success",[`${a}-status-warning`]:s==="warning",[`${a}-status-error`]:s==="error",[`${a}-status-validating`]:s==="validating",[`${a}-has-feedback`]:t})}const c=(a,s)=>s||a;export{c as a,r as g};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as d}from"./index-
|
|
1
|
+
import{A as d}from"./index-CJ1PJbpz.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};
|
package/src/assets/web-panel/assets/{useFlexGapSupport-xcJuPJdm.js → useFlexGapSupport-DVedU9WT.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o,s as t}from"./vendor-BvqAck49.js";import{d as s}from"./styleChecker-
|
|
1
|
+
import{o,s as t}from"./vendor-BvqAck49.js";import{d as s}from"./styleChecker-x3IaGY0i.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-
|
|
1
|
+
import{u as d}from"./index-CJ1PJbpz.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-
|
|
1
|
+
import{u as f}from"./index-CJ1PJbpz.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-
|
|
1
|
+
import{M as i,h as a,w as l}from"./index-CJ1PJbpz.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-
|
|
1
|
+
import{K as o}from"./index-CJ1PJbpz.js";import{i as f}from"./motion-Da6ILriX.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-
|
|
11
|
+
<script type="module" crossorigin src="./assets/index-CJ1PJbpz.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">
|
|
@@ -15,6 +15,7 @@ const SHELL_STARTUP_NAMES = new Set([
|
|
|
15
15
|
".bash_profile",
|
|
16
16
|
".bash_login",
|
|
17
17
|
".bash_logout",
|
|
18
|
+
".bash_aliases", // auto-sourced by the default .bashrc on Debian/Ubuntu
|
|
18
19
|
".profile",
|
|
19
20
|
".zshrc",
|
|
20
21
|
".zshenv",
|
|
@@ -26,8 +27,14 @@ const SHELL_STARTUP_NAMES = new Set([
|
|
|
26
27
|
".kshrc",
|
|
27
28
|
]);
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
// PowerShell profiles are per-host: Microsoft.PowerShell_profile.ps1 (console),
|
|
31
|
+
// Microsoft.VSCode_profile.ps1, Microsoft.PowerShellISE_profile.ps1, … plus the
|
|
32
|
+
// all-hosts profile.ps1. `microsoft.<host>_profile.ps1` covers them all.
|
|
33
|
+
const POWERSHELL_PROFILE_RE =
|
|
34
|
+
/(^|[\\/])(microsoft\.\w+_profile\.ps1|profile\.ps1)$/i;
|
|
35
|
+
// fish: config.fish AND auto-sourced conf.d/*.fish snippets.
|
|
36
|
+
const FISH_CONFIG_RE =
|
|
37
|
+
/[\\/]fish[\\/](config\.fish|conf\.d[\\/][^\\/]+\.fish)$/i;
|
|
31
38
|
const GIT_HOOK_RE = /[\\/]\.git[\\/]hooks[\\/][^\\/]+$/i;
|
|
32
39
|
const HUSKY_HOOK_RE = /[\\/]\.husky[\\/](?!_)[^\\/]+$/i;
|
|
33
40
|
|
|
@@ -42,6 +49,9 @@ export function sensitiveFileReason(targetPath) {
|
|
|
42
49
|
if (SHELL_STARTUP_NAMES.has(base)) {
|
|
43
50
|
return `shell startup file (${base}) — runs on the user's next shell`;
|
|
44
51
|
}
|
|
52
|
+
if (base === ".envrc") {
|
|
53
|
+
return "direnv .envrc — executes when the user enters this directory";
|
|
54
|
+
}
|
|
45
55
|
if (POWERSHELL_PROFILE_RE.test(p)) {
|
|
46
56
|
return "PowerShell profile — runs on the user's next PowerShell session";
|
|
47
57
|
}
|
package/src/repl/agent-repl.js
CHANGED
|
@@ -3264,6 +3264,9 @@ export async function startAgentRepl(options = {}) {
|
|
|
3264
3264
|
permissionRules: _permissionRules,
|
|
3265
3265
|
permissionConfirm: _permissionConfirm,
|
|
3266
3266
|
settingsHooks: _settingsHooks,
|
|
3267
|
+
// Interactive session: gate run_code through the ApprovalGate (like
|
|
3268
|
+
// run_shell) so a strict tier prompts before arbitrary code runs.
|
|
3269
|
+
interactiveApproval: true,
|
|
3267
3270
|
// MCP: --mcp-config (ad-hoc) wins; bundle MCP is the fallback. The 3
|
|
3268
3271
|
// tool channels expose --mcp-config servers' tools to the LLM directly.
|
|
3269
3272
|
mcpClient: _adhocMcp?.mcpClient || _bundleMcpClient || undefined,
|
|
@@ -1091,6 +1091,7 @@ export async function executeTool(name, args, context = {}) {
|
|
|
1091
1091
|
additionalDirectories: context.additionalDirectories || null,
|
|
1092
1092
|
ruleAllowed,
|
|
1093
1093
|
subAgentDepth: context.subAgentDepth || 0,
|
|
1094
|
+
interactiveApproval: context.interactiveApproval || false,
|
|
1094
1095
|
});
|
|
1095
1096
|
} catch (err) {
|
|
1096
1097
|
if (hookDb) {
|
|
@@ -1293,6 +1294,7 @@ async function executeToolInner(
|
|
|
1293
1294
|
additionalDirectories,
|
|
1294
1295
|
ruleAllowed = false,
|
|
1295
1296
|
subAgentDepth = 0,
|
|
1297
|
+
interactiveApproval = false,
|
|
1296
1298
|
},
|
|
1297
1299
|
) {
|
|
1298
1300
|
const localToolDescriptor =
|
|
@@ -1694,6 +1696,39 @@ async function executeToolInner(
|
|
|
1694
1696
|
}
|
|
1695
1697
|
|
|
1696
1698
|
case "run_code": {
|
|
1699
|
+
// run_code executes arbitrary python/node/bash — strictly more powerful
|
|
1700
|
+
// than run_shell — yet historically ran ungated. In an INTERACTIVE
|
|
1701
|
+
// session (interactiveApproval) it now honors the same ApprovalGate tier
|
|
1702
|
+
// as run_shell so a strict-tier session prompts before arbitrary code
|
|
1703
|
+
// runs (closing the bypass where `run_code` could `rm -rf` / rmtree past
|
|
1704
|
+
// the run_shell gate). A settings `allow` rule (ruleAllowed) pre-
|
|
1705
|
+
// authorizes; headless leaves interactiveApproval false so its existing
|
|
1706
|
+
// per-permission-mode behavior is unchanged.
|
|
1707
|
+
if (
|
|
1708
|
+
interactiveApproval &&
|
|
1709
|
+
approvalGate &&
|
|
1710
|
+
!ruleAllowed &&
|
|
1711
|
+
typeof approvalGate.decide === "function"
|
|
1712
|
+
) {
|
|
1713
|
+
const { APPROVAL_RISK, APPROVAL_DECISION } =
|
|
1714
|
+
await import("@chainlesschain/session-core");
|
|
1715
|
+
const gate = await approvalGate.decide({
|
|
1716
|
+
sessionId,
|
|
1717
|
+
riskLevel: APPROVAL_RISK.HIGH,
|
|
1718
|
+
tool: "run_code",
|
|
1719
|
+
args: { language: args.language },
|
|
1720
|
+
});
|
|
1721
|
+
if (gate.decision !== APPROVAL_DECISION.ALLOW) {
|
|
1722
|
+
return attachDescriptor({
|
|
1723
|
+
error: `[ApprovalGate] run_code denied (${gate.via})`,
|
|
1724
|
+
approval: {
|
|
1725
|
+
decision: gate.decision,
|
|
1726
|
+
via: gate.via,
|
|
1727
|
+
riskLevel: "high",
|
|
1728
|
+
},
|
|
1729
|
+
});
|
|
1730
|
+
}
|
|
1731
|
+
}
|
|
1697
1732
|
return attachDescriptor(await _executeRunCode(args, cwd));
|
|
1698
1733
|
}
|
|
1699
1734
|
|
|
@@ -3696,6 +3731,10 @@ export async function* agentLoop(messages, options) {
|
|
|
3696
3731
|
shellPolicyOverrides: options.shellPolicyOverrides || null,
|
|
3697
3732
|
approvalGate: options.approvalGate || null,
|
|
3698
3733
|
shellConfirm: options.shellConfirm || null,
|
|
3734
|
+
// Interactive sessions (the REPL) set this so run_code is gated through the
|
|
3735
|
+
// ApprovalGate like run_shell — a human can approve. Headless leaves it
|
|
3736
|
+
// false so run_code keeps its existing per-permission-mode behavior.
|
|
3737
|
+
interactiveApproval: options.interactiveApproval || false,
|
|
3699
3738
|
additionalDirectories: options.additionalDirectories || null,
|
|
3700
3739
|
permissionRules: options.permissionRules || null,
|
|
3701
3740
|
permissionConfirm: options.permissionConfirm || null,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as v,P as u,J as S,U as s,R as n,S as y,K as C,Q as x,V as w,_ as B,b as a}from"./vendor-BvqAck49.js";import{_ as k}from"./index-B2RA_MJb.js";import"./icons-DP3uiYxy.js";const N={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:d}){d();const t=c,r=a(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=a(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=a(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=a(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=a(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:m,computed:a};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},T={class:"bubble"},L={class:"meta"},M={class:"actor"},R={class:"time"},V={class:"body"};function q(c,d,t,r,i,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[s("div",T,[s("div",L,[s("span",M,n(r.actorLabel),1),s("span",R,n(r.formattedTime),1)]),s("div",V,n(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(n(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const A=k(N,[["render",q],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-ac3apL/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{A as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as i,J as I,U,R as s,Q as r,c as t,K as a,V as _,S as x,o as oe,b as ee,r as u,P as p,F as ne,a2 as ge}from"./vendor-BvqAck49.js";import{_ as we,b as re,u as ie,d}from"./index-B2RA_MJb.js";import{u as de}from"./useShellMode-CgR0wCYM.js";import{aM as ke,aN as Fe,aO as be,f as je,a4 as Ce,a7 as xe,as as Oe,R as Se}from"./icons-DP3uiYxy.js";const Pe={__name:"Projects",setup(se,{expose:l}){l();const{t:te}=re(),e=ie(),{isEmbedded:W}=de();async function w(o,f,ye,ae=8e3){if(W){const Z=await e.sendRaw({...f,type:o},ae);if(!Z?.ok){const $=Z?.error;throw new Error(typeof $=="string"?$:$?.message||`${o} failed`)}return Z.result}return e.executeJson(ye,ae)}const B=u(!1),y=u([]),O=u(""),S=u(""),P=u(!1),v=u(null),h=u([]),k=u(!1),L=u(!1),E=u(!1),F=u({name:"",description:"",type:"document",rootPath:""}),z=[{title:"ID",key:"id",width:110},{title:"名称",key:"name"},{title:"类型",key:"project_type",width:120},{title:"状态",key:"status",width:100},{title:"同步",key:"sync_status",width:100},{title:"更新",key:"updated_at",width:160},{title:"操作",key:"actions",width:180,fixed:"right"}],M=ee(()=>{const o={active:0,draft:0,completed:0,archived:0};for(const f of y.value)o[f.status]!==void 0&&(o[f.status]+=1);return o}),J=ee(()=>y.value.filter(o=>!(O.value&&o.status!==O.value||S.value&&!o.name.toLowerCase().includes(S.value.toLowerCase()))));function g(o){switch(o){case"active":return"green";case"draft":return"default";case"completed":return"cyan";case"archived":return"gold";default:return"default"}}function K(o){switch(o){case"synced":return"green";case"pending":return"orange";case"conflict":return"red";case"error":return"red";default:return"default"}}function Q(o){return!o&&o!==0?"-":new Date(typeof o=="number"?o:parseInt(o,10)).toLocaleString("zh-CN",{hour12:!1})}async function C(){B.value=!0;try{const o=await w("project.list",{limit:500},"project list --limit 500 --json",1e4);y.value=Array.isArray(o?.projects)?o.projects:Array.isArray(o)?o:[]}catch(o){d.error("加载失败: "+(o.message||o)),y.value=[]}finally{B.value=!1}}function G(o){return{onClick:()=>V(o)}}async function V(o){v.value=o,P.value=!0,k.value=!0,h.value=[];try{const f=await w("project.listFiles",{projectId:o.id,limit:200},`project list-files ${o.id} --json`,8e3);h.value=Array.isArray(f?.files)?f.files:[]}catch{h.value=[]}finally{k.value=!1}}async function H(o){try{(await w("project.delete",{id:o.id},`project delete ${o.id} --json`,8e3))?.ok?(d.success(`已删除项目 '${o.name}'`),P.value=!1,await C()):d.error("删除失败")}catch(f){d.error(f.message||String(f))}}function X(){F.value={name:"",description:"",type:"document",rootPath:""},L.value=!0}async function T(){if(!F.value.name.trim()){d.warning("请输入项目名称");return}E.value=!0;try{const o=await w("project.init",{name:F.value.name.trim(),description:F.value.description||null,projectType:F.value.type,rootPath:F.value.rootPath||null},`project init "${F.value.name.trim()}" --type ${F.value.type} --json`,8e3);o?.id?(d.success(`已创建项目 '${o.name}'`),L.value=!1,await C()):d.error("创建失败")}catch(o){d.error(o.message||String(o))}finally{E.value=!1}}const b=u(!1),D=u(!1),j=u({path:"",content:""}),A=u(!1),m=u(!1),R=u({path:""}),n=u(!1),c=u(null),q=u(""),Y=u(!1);function ue(){j.value={path:"",content:""},b.value=!0}function ce(){R.value={path:""},A.value=!0}async function N(){if(v.value){k.value=!0;try{const o=await w("project.listFiles",{projectId:v.value.id,limit:200},`project list-files ${v.value.id} --json`,8e3);h.value=Array.isArray(o?.files)?o.files:[]}catch(o){d.error("刷新文件失败: "+(o.message||o))}finally{k.value=!1}}}async function fe(){if(!j.value.path.trim()){d.warning("请输入文件路径");return}if(v.value){D.value=!0;try{const o=await w("project.createFile",{projectId:v.value.id,filePath:j.value.path.trim(),content:j.value.content||""},`project create-file ${v.value.id} "${j.value.path.trim()}" --json`,8e3);o?.id?(d.success(`已创建文件 '${o.file_name}'`),b.value=!1,await N(),await C()):d.error("创建文件失败")}catch(o){d.error(o.message||String(o))}finally{D.value=!1}}}async function pe(){if(!R.value.path.trim()){d.warning("请输入文件夹路径");return}if(v.value){m.value=!0;try{const o=await w("project.createFolder",{projectId:v.value.id,folderPath:R.value.path.trim()},`project create-folder ${v.value.id} "${R.value.path.trim()}" --json`,8e3);o?.id?(d.success(`已创建文件夹 '${o.file_name}'`),A.value=!1,await N(),await C()):d.error("创建文件夹失败")}catch(o){d.error(o.message||String(o))}finally{m.value=!1}}}async function ve(o){try{(await w("project.deleteFile",{fileId:o.id},`project delete-file ${o.id} --json`,8e3))?.deleted?(d.success(`已删除 '${o.file_name}'`),await N(),await C()):d.error("删除失败")}catch(f){d.error(f.message||String(f))}}async function me(o){if(o.is_folder){d.info("文件夹无内容可编辑");return}try{const f=await w("project.getFile",{fileId:o.id},`project get-file ${o.id} --json`,8e3);c.value=o,q.value=f?.content||"",n.value=!0}catch(f){d.error("读取文件失败: "+(f.message||f))}}async function _e(){if(c.value){Y.value=!0;try{(await w("project.writeFile",{fileId:c.value.id,content:q.value},`project write-file ${c.value.id} --json`,8e3))?.id?(d.success("已保存"),n.value=!1,await N()):d.error("保存失败")}catch(o){d.error(o.message||String(o))}finally{Y.value=!1}}}oe(()=>{C()});const le={t:te,ws:e,isEmbedded:W,callProjectTopic:w,loading:B,projects:y,statusFilter:O,nameFilter:S,detailOpen:P,detail:v,files:h,filesLoading:k,createOpen:L,creating:E,newProject:F,columns:z,countByStatus:M,filteredProjects:J,statusColor:g,syncColor:K,formatTime:Q,loadAll:C,onRowClick:G,openDetail:V,onDelete:H,onShowCreate:X,onCreate:T,createFileOpen:b,creatingFile:D,newFile:j,createFolderOpen:A,creatingFolder:m,newFolder:R,editFileOpen:n,editingFile:c,editFileContent:q,savingFile:Y,openCreateFile:ue,openCreateFolder:ce,refreshFiles:N,onCreateFile:fe,onCreateFolder:pe,onDeleteFile:ve,openEditFile:me,onSaveFile:_e,ref:u,computed:ee,onMounted:oe,get ReloadOutlined(){return Se},get PlusOutlined(){return Oe},get FolderOutlined(){return xe},get FileTextOutlined(){return Ce},get CheckCircleOutlined(){return je},get CheckSquareOutlined(){return be},get FileAddOutlined(){return Fe},get FolderAddOutlined(){return ke},get message(){return d},get useI18n(){return re},get useWsStore(){return ie},get useShellMode(){return de}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},ze={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ae={class:"page-title"},Ie={class:"page-sub"},Ue={class:"filter-bar",style:{"margin-bottom":"12px",display:"flex",gap:"12px","align-items":"center"}},he={key:0,style:{"font-size":"12px",color:"#888"}},De={key:0,style:{color:"#888","font-size":"12px"}},Re={key:0},Te={key:1,style:{color:"#888"}},Be=["onClick"],Le={key:0,style:{color:"#888","font-size":"12px"}};function Ee(se,l,te,e,W,w){const B=i("router-link"),y=i("a-button"),O=i("a-space"),S=i("a-statistic"),P=i("a-card"),v=i("a-col"),h=i("a-row"),k=i("a-radio-button"),L=i("a-radio-group"),E=i("a-input-search"),F=i("a-alert"),z=i("a-tag"),M=i("a-popconfirm"),J=i("a-table"),g=i("a-descriptions-item"),K=i("a-descriptions"),Q=i("a-divider"),C=i("a-empty"),G=i("a-list-item"),V=i("a-list"),H=i("a-spin"),X=i("a-drawer"),T=i("a-input"),b=i("a-form-item"),D=i("a-textarea"),j=i("a-form"),A=i("a-modal"),m=i("a-select-option"),R=i("a-select");return p(),I("div",null,[U("div",ze,[U("div",null,[U("h2",Ae,s(e.t("projects.title")),1),U("p",Ie,[l[17]||(l[17]=r("桌面 / CLI / 手机 三端共享同一份项目数据,Phase 3d sync 自动同步 (",-1)),t(B,{to:"/project-init"},{default:a(()=>[...l[16]||(l[16]=[r("项目初始化 / 环境设置",-1)])]),_:1}),l[18]||(l[18]=r(")",-1))])]),t(O,null,{default:a(()=>[t(y,{loading:e.loading,onClick:e.loadAll},{icon:a(()=>[t(e.ReloadOutlined)]),default:a(()=>[l[19]||(l[19]=r(" 刷新 ",-1))]),_:1},8,["loading"]),t(y,{type:"primary",onClick:e.onShowCreate},{icon:a(()=>[t(e.PlusOutlined)]),default:a(()=>[l[20]||(l[20]=r(" 新建项目 ",-1))]),_:1})]),_:1})]),_(" Stats "),t(h,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[t(v,{xs:12,sm:8,lg:6},{default:a(()=>[t(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(S,{title:"总项目",value:e.projects.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[t(e.FolderOutlined)]),_:1},8,["value"])]),_:1})]),_:1}),t(v,{xs:12,sm:8,lg:6},{default:a(()=>[t(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(S,{title:"活跃",value:e.countByStatus.active,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:a(()=>[t(e.CheckCircleOutlined)]),_:1},8,["value"])]),_:1})]),_:1}),t(v,{xs:12,sm:8,lg:6},{default:a(()=>[t(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(S,{title:"草稿",value:e.countByStatus.draft,"value-style":{color:"#8c8c8c",fontSize:"20px"}},{prefix:a(()=>[t(e.FileTextOutlined)]),_:1},8,["value"])]),_:1})]),_:1}),t(v,{xs:12,sm:8,lg:6},{default:a(()=>[t(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(S,{title:"已完成",value:e.countByStatus.completed,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[t(e.CheckSquareOutlined)]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),_(" Filter "),U("div",Ue,[t(L,{value:e.statusFilter,"onUpdate:value":l[0]||(l[0]=n=>e.statusFilter=n),size:"small","button-style":"solid"},{default:a(()=>[t(k,{value:""},{default:a(()=>[...l[21]||(l[21]=[r("全部",-1)])]),_:1}),t(k,{value:"active"},{default:a(()=>[...l[22]||(l[22]=[r("活跃",-1)])]),_:1}),t(k,{value:"draft"},{default:a(()=>[...l[23]||(l[23]=[r("草稿",-1)])]),_:1}),t(k,{value:"completed"},{default:a(()=>[...l[24]||(l[24]=[r("已完成",-1)])]),_:1}),t(k,{value:"archived"},{default:a(()=>[...l[25]||(l[25]=[r("已归档",-1)])]),_:1})]),_:1},8,["value"]),t(E,{value:e.nameFilter,"onUpdate:value":l[1]||(l[1]=n=>e.nameFilter=n),placeholder:"按名称过滤",style:{"max-width":"260px"},"allow-clear":""},null,8,["value"])]),!e.projects.length&&!e.loading?(p(),x(F,{key:0,type:"info",message:"还没有项目",description:'运行 `cc project init <name>` 或点击右上角"新建项目"按钮创建。桌面 / CLI / 手机三端共享同一份数据。',"show-icon":"",style:{"margin-bottom":"16px"}})):_("v-if",!0),e.projects.length||e.loading?(p(),x(J,{key:1,columns:e.columns,"data-source":e.filteredProjects,loading:e.loading,pagination:{pageSize:20,showSizeChanger:!0},"row-key":"id","custom-row":e.onRowClick},{bodyCell:a(({column:n,record:c})=>[n.key==="id"?(p(),I("code",he,s(c.id.slice(0,8))+"…",1)):n.key==="name"?(p(),I(ne,{key:1},[U("strong",null,s(c.name),1),c.description?(p(),I("div",De,s(c.description),1)):_("v-if",!0)],64)):n.key==="project_type"?(p(),x(z,{key:2},{default:a(()=>[r(s(c.project_type),1)]),_:2},1024)):n.key==="status"?(p(),x(z,{key:3,color:e.statusColor(c.status)},{default:a(()=>[r(s(c.status),1)]),_:2},1032,["color"])):n.key==="sync_status"?(p(),x(z,{key:4,color:e.syncColor(c.sync_status)},{default:a(()=>[r(s(c.sync_status||"unknown"),1)]),_:2},1032,["color"])):n.key==="updated_at"?(p(),I(ne,{key:5},[r(s(e.formatTime(c.updated_at)),1)],64)):n.key==="actions"?(p(),x(O,{key:6,onClick:l[2]||(l[2]=ge(()=>{},["stop"]))},{default:a(()=>[t(y,{size:"small",onClick:q=>e.openDetail(c)},{default:a(()=>[...l[26]||(l[26]=[r("详情",-1)])]),_:1},8,["onClick"]),t(M,{title:`删除项目 '${c.name}' ?`,"ok-text":"删除","ok-type":"danger","cancel-text":"取消",onConfirm:q=>e.onDelete(c)},{default:a(()=>[t(y,{size:"small",danger:""},{default:a(()=>[...l[27]||(l[27]=[r("删除",-1)])]),_:1})]),_:1},8,["title","onConfirm"])]),_:2},1024)):_("v-if",!0)]),_:1},8,["data-source","loading"])):_("v-if",!0),_(" Detail drawer "),t(X,{open:e.detailOpen,"onUpdate:open":l[3]||(l[3]=n=>e.detailOpen=n),title:e.detail?.name||"项目详情",width:"640",placement:"right"},{default:a(()=>[e.detail?(p(),x(K,{key:0,column:1,bordered:"",size:"small"},{default:a(()=>[t(g,{label:"ID"},{default:a(()=>[U("code",null,s(e.detail.id),1)]),_:1}),t(g,{label:"名称"},{default:a(()=>[r(s(e.detail.name),1)]),_:1}),t(g,{label:"描述"},{default:a(()=>[r(s(e.detail.description||"-"),1)]),_:1}),t(g,{label:"类型"},{default:a(()=>[t(z,null,{default:a(()=>[r(s(e.detail.project_type),1)]),_:1})]),_:1}),t(g,{label:"状态"},{default:a(()=>[t(z,{color:e.statusColor(e.detail.status)},{default:a(()=>[r(s(e.detail.status),1)]),_:1},8,["color"])]),_:1}),t(g,{label:"同步状态"},{default:a(()=>[t(z,{color:e.syncColor(e.detail.sync_status)},{default:a(()=>[r(s(e.detail.sync_status||"unknown"),1)]),_:1},8,["color"])]),_:1}),t(g,{label:"用户"},{default:a(()=>[r(s(e.detail.user_id),1)]),_:1}),t(g,{label:"根路径"},{default:a(()=>[e.detail.root_path?(p(),I("code",Re,s(e.detail.root_path),1)):(p(),I("span",Te,"(无)"))]),_:1}),t(g,{label:"文件数"},{default:a(()=>[r(s(e.detail.file_count||0),1)]),_:1}),t(g,{label:"创建"},{default:a(()=>[r(s(e.formatTime(e.detail.created_at)),1)]),_:1}),t(g,{label:"更新"},{default:a(()=>[r(s(e.formatTime(e.detail.updated_at)),1)]),_:1})]),_:1})):_("v-if",!0),t(Q,null,{default:a(()=>[...l[28]||(l[28]=[r("文件",-1)])]),_:1}),_(" Sub-phase 7.3 (2026-05-17): 文件 CRUD toolbar "),t(O,{style:{"margin-bottom":"12px"}},{default:a(()=>[t(y,{size:"small",type:"primary",disabled:!e.detail,onClick:e.openCreateFile},{default:a(()=>[t(e.FileAddOutlined),l[29]||(l[29]=r(" 新建文件 ",-1))]),_:1},8,["disabled"]),t(y,{size:"small",disabled:!e.detail,onClick:e.openCreateFolder},{default:a(()=>[t(e.FolderAddOutlined),l[30]||(l[30]=r(" 新建文件夹 ",-1))]),_:1},8,["disabled"])]),_:1}),t(H,{spinning:e.filesLoading},{default:a(()=>[!e.files.length&&!e.filesLoading?(p(),x(C,{key:0,description:"无文件 (点上方按钮新建)"})):(p(),x(V,{key:1,size:"small","data-source":e.files},{renderItem:a(({item:n})=>[t(G,null,{extra:a(()=>[t(O,null,{default:a(()=>[n.file_size?(p(),I("span",Le,s(n.file_size)+" B",1)):_("v-if",!0),t(M,{title:`删除 ${n.is_folder?"文件夹":"文件"} '${n.file_name}' ?`,"ok-text":"删除","ok-type":"danger","cancel-text":"取消",onConfirm:c=>e.onDeleteFile(n)},{default:a(()=>[t(y,{size:"small",danger:""},{default:a(()=>[...l[31]||(l[31]=[r("×",-1)])]),_:1})]),_:1},8,["title","onConfirm"])]),_:2},1024)]),default:a(()=>[U("span",{style:{cursor:"pointer"},onClick:c=>e.openEditFile(n)},s(n.is_folder?"📁":"📄")+" "+s(n.file_path),9,Be)]),_:2},1024)]),_:1},8,["data-source"]))]),_:1},8,["spinning"])]),_:1},8,["open","title"]),_(" Sub-phase 7.3: Create file modal "),t(A,{open:e.createFileOpen,"onUpdate:open":l[6]||(l[6]=n=>e.createFileOpen=n),title:"新建文件","confirm-loading":e.creatingFile,"ok-text":"创建","cancel-text":"取消",onOk:e.onCreateFile},{default:a(()=>[t(j,{layout:"vertical"},{default:a(()=>[t(b,{label:"文件路径(项目内)",required:""},{default:a(()=>[t(T,{value:e.newFile.path,"onUpdate:value":l[4]||(l[4]=n=>e.newFile.path=n),placeholder:"例如 README.md 或 src/main.kt"},null,8,["value"])]),_:1}),t(b,{label:"初始内容(可选)"},{default:a(()=>[t(D,{value:e.newFile.content,"onUpdate:value":l[5]||(l[5]=n=>e.newFile.content=n),rows:6,placeholder:"留空创建空文件"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),_(" Sub-phase 7.3: Create folder modal "),t(A,{open:e.createFolderOpen,"onUpdate:open":l[8]||(l[8]=n=>e.createFolderOpen=n),title:"新建文件夹","confirm-loading":e.creatingFolder,"ok-text":"创建","cancel-text":"取消",onOk:e.onCreateFolder},{default:a(()=>[t(j,{layout:"vertical"},{default:a(()=>[t(b,{label:"文件夹路径(项目内)",required:""},{default:a(()=>[t(T,{value:e.newFolder.path,"onUpdate:value":l[7]||(l[7]=n=>e.newFolder.path=n),placeholder:"例如 src/utils"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),_(" Sub-phase 7.3: Edit file content modal "),t(A,{open:e.editFileOpen,"onUpdate:open":l[10]||(l[10]=n=>e.editFileOpen=n),title:`编辑 ${e.editingFile?.file_name||""}`,"confirm-loading":e.savingFile,"ok-text":"保存","cancel-text":"取消",onOk:e.onSaveFile,width:"720"},{default:a(()=>[t(D,{value:e.editFileContent,"onUpdate:value":l[9]||(l[9]=n=>e.editFileContent=n),rows:18,"auto-size":{minRows:12,maxRows:24},style:{"font-family":"monospace"}},null,8,["value"])]),_:1},8,["open","title","confirm-loading"]),_(" Create modal "),t(A,{open:e.createOpen,"onUpdate:open":l[15]||(l[15]=n=>e.createOpen=n),title:"新建项目","confirm-loading":e.creating,"ok-text":"创建","cancel-text":"取消",onOk:e.onCreate},{default:a(()=>[t(j,{layout:"vertical"},{default:a(()=>[t(b,{label:"项目名称",required:""},{default:a(()=>[t(T,{value:e.newProject.name,"onUpdate:value":l[11]||(l[11]=n=>e.newProject.name=n),placeholder:"例如:旅行计划-上海"},null,8,["value"])]),_:1}),t(b,{label:"描述"},{default:a(()=>[t(D,{value:e.newProject.description,"onUpdate:value":l[12]||(l[12]=n=>e.newProject.description=n),rows:2},null,8,["value"])]),_:1}),t(b,{label:"类型"},{default:a(()=>[t(R,{value:e.newProject.type,"onUpdate:value":l[13]||(l[13]=n=>e.newProject.type=n)},{default:a(()=>[t(m,{value:"document"},{default:a(()=>[...l[32]||(l[32]=[r("文档 (document)",-1)])]),_:1}),t(m,{value:"data"},{default:a(()=>[...l[33]||(l[33]=[r("数据 (data)",-1)])]),_:1}),t(m,{value:"web"},{default:a(()=>[...l[34]||(l[34]=[r("Web",-1)])]),_:1}),t(m,{value:"app"},{default:a(()=>[...l[35]||(l[35]=[r("应用 (app)",-1)])]),_:1}),t(m,{value:"presentation"},{default:a(()=>[...l[36]||(l[36]=[r("演示文稿",-1)])]),_:1}),t(m,{value:"spreadsheet"},{default:a(()=>[...l[37]||(l[37]=[r("表格",-1)])]),_:1}),t(m,{value:"design"},{default:a(()=>[...l[38]||(l[38]=[r("设计",-1)])]),_:1}),t(m,{value:"code"},{default:a(()=>[...l[39]||(l[39]=[r("代码",-1)])]),_:1}),t(m,{value:"workflow"},{default:a(()=>[...l[40]||(l[40]=[r("工作流",-1)])]),_:1}),t(m,{value:"knowledge"},{default:a(()=>[...l[41]||(l[41]=[r("知识库",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(b,{label:"根路径 (可选)"},{default:a(()=>[t(T,{value:e.newProject.rootPath,"onUpdate:value":l[14]||(l[14]=n=>e.newProject.rootPath=n),placeholder:"留空则仅元数据"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}const We=we(Pe,[["render",Ee],["__scopeId","data-v-019ac5aa"],["__file","/tmp/cc-web-panel-ac3apL/repo/packages/web-panel/src/views/Projects.vue"]]);export{We as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{E as I,b as w,r as b,I as m,J as y,U as a,R as g,c as i,K as u,V as h,F as C,Z as L,N as O,o as M,P as p,Q as S,S as R}from"./vendor-BvqAck49.js";import{u as E,_ as N}from"./index-B2RA_MJb.js";import{u as P}from"./useShellMode-CgR0wCYM.js";import{p as V}from"./parsers-UEvh_ShA.js";import{u as z}from"./chat-DCIbNcWp.js";import{a9 as j,ap as q,R as B}from"./icons-DP3uiYxy.js";const A=I("skills",()=>{const _=b(!1),t=b([]),n=b(""),e=b("all"),k=w(()=>{const o=new Set(["all"]);return t.value.forEach(l=>{l.category&&o.add(l.category),l.executionMode&&o.add(l.executionMode)}),[...o]}),v=w(()=>{let o=t.value;if(e.value!=="all"&&(o=o.filter(l=>l.category===e.value||l.executionMode===e.value)),n.value){const l=n.value.toLowerCase();o=o.filter(d=>d.name?.toLowerCase().includes(l)||d.description?.toLowerCase().includes(l)||d.title?.toLowerCase().includes(l))}return o});async function f(){const o=E();_.value=!0;try{if(P().isEmbedded){const c=await o.sendRaw({type:"skill.list"},2e4);c?.ok&&Array.isArray(c.result?.skills)?t.value=c.result.skills:(console.error("skill.list custom topic failed:",c?.error),t.value=[]);return}const{output:l}=await o.execute("skill list",2e4),d=V(l);t.value=d}catch(l){console.error("Failed to load skills:",l)}finally{_.value=!1}}return{loading:_,allSkills:t,searchQuery:n,selectedCategory:e,categories:k,filteredSkills:v,loadSkills:f}}),F={__name:"Skills",setup(_,{expose:t}){t();const n=A(),e=z(),k=O(),v=w(()=>n.categories.filter(r=>r!=="all").slice(0,6));function f(r){return{"built-in":"内置","cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合",workspace:"工作区",marketplace:"市场"}[r]||r}function o(r){return{"cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合","built-in":"内置"}[r]||r||"未知"}function l(r){return{"cli-direct":"cyan",agent:"purple","llm-query":"blue",hybrid:"orange","built-in":"green"}[r]||"default"}async function d(r){await e.createSession("agent"),k.push("/chat"),setTimeout(()=>{e.currentSessionId&&e.sendMessage(e.currentSessionId,`/skill run ${r}`)},300)}M(()=>{n.allSkills.length||n.loadSkills()});const c={skillsStore:n,chatStore:e,router:k,displayCategories:v,catLabel:f,modeLabel:o,modeColor:l,runSkill:d,computed:w,onMounted:M,get useRouter(){return O},get ReloadOutlined(){return B},get PlayCircleOutlined(){return q},get AppstoreOutlined(){return j},get useSkillsStore(){return A},get useChatStore(){return z}};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}},Q={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},U={class:"page-sub"},T={style:{display:"flex",gap:"12px","margin-bottom":"20px","flex-wrap":"wrap"}},D={key:0,style:{"text-align":"center",padding:"60px"}},G={class:"skills-grid"},J={style:{display:"flex","justify-content":"space-between","align-items":"flex-start"}},K={style:{flex:"1","min-width":"0"}},W={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px","font-family":"monospace"}},Z={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},H={style:{"margin-left":"12px","flex-shrink":"0"}},X={style:{"margin-top":"10px",display:"flex","justify-content":"flex-end"}},Y={style:{"text-align":"center",padding:"60px",color:"var(--text-muted)"}};function $(_,t,n,e,k,v){const f=m("a-button"),o=m("a-input-search"),l=m("a-radio-button"),d=m("a-radio-group"),c=m("a-spin"),r=m("a-tag"),x=m("a-card");return p(),y("div",null,[a("div",Q,[a("div",null,[t[3]||(t[3]=a("h2",{class:"page-title"},"技能管理",-1)),a("p",U,g(e.skillsStore.allSkills.length)+" 个可用技能",1)]),i(f,{type:"primary",ghost:"",loading:e.skillsStore.loading,onClick:t[0]||(t[0]=s=>e.skillsStore.loadSkills())},{icon:u(()=>[i(e.ReloadOutlined)]),default:u(()=>[t[4]||(t[4]=S(" 刷新 ",-1))]),_:1},8,["loading"])]),h(" Search & Filter "),a("div",T,[i(o,{value:e.skillsStore.searchQuery,"onUpdate:value":t[1]||(t[1]=s=>e.skillsStore.searchQuery=s),placeholder:"搜索技能名称或描述...",style:{width:"300px"},"allow-clear":""},null,8,["value"]),i(d,{value:e.skillsStore.selectedCategory,"onUpdate:value":t[2]||(t[2]=s=>e.skillsStore.selectedCategory=s),"button-style":"solid"},{default:u(()=>[i(l,{value:"all"},{default:u(()=>[...t[5]||(t[5]=[S("全部",-1)])]),_:1}),(p(!0),y(C,null,L(e.displayCategories,s=>(p(),R(l,{key:s,value:s},{default:u(()=>[S(g(e.catLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),h(" Loading State "),e.skillsStore.loading?(p(),y("div",D,[i(c,{size:"large"}),t[6]||(t[6]=a("div",{style:{color:"var(--text-muted)","margin-top":"12px"}},"加载技能中...",-1))])):e.skillsStore.filteredSkills.length?(p(),y(C,{key:1},[h(" Skills Grid "),a("div",G,[(p(!0),y(C,null,L(e.skillsStore.filteredSkills,s=>(p(),R(x,{key:s.name,class:"skill-card",size:"small",hoverable:"",style:{background:"var(--bg-card)","border-color":"var(--border-color)",cursor:"default"}},{default:u(()=>[a("div",J,[a("div",K,[a("div",W,g(s.name),1),a("div",Z,g(s.description||"暂无描述"),1)]),a("div",H,[i(r,{color:e.modeColor(s.executionMode),style:{"font-size":"10px"}},{default:u(()=>[S(g(e.modeLabel(s.executionMode)),1)]),_:2},1032,["color"])])]),a("div",X,[i(f,{size:"small",type:"primary",ghost:"",onClick:ee=>e.runSkill(s.name)},{icon:u(()=>[i(e.PlayCircleOutlined)]),default:u(()=>[t[7]||(t[7]=S(" 运行 ",-1))]),_:1},8,["onClick"])])]),_:2},1024))),128))])],2112)):(p(),y(C,{key:2},[h(" Empty State "),a("div",Y,[i(e.AppstoreOutlined,{style:{"font-size":"48px","margin-bottom":"16px",display:"block"}}),a("div",null,g(e.skillsStore.allSkills.length?"没有匹配的技能":"点击刷新加载技能列表"),1)])],2112))])}const ie=N(F,[["render",$],["__scopeId","data-v-d64d43f5"],["__file","/tmp/cc-web-panel-ac3apL/repo/packages/web-panel/src/views/Skills.vue"]]);export{ie as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{O as r}from"./index-B2RA_MJb.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-DEOhJE0I.js";import{U as t}from"./index-B2RA_MJb.js";import"./vendor-BvqAck49.js";import"./index-Dh1wBDli.js";import"./icons-DP3uiYxy.js";const s=t(o);export{s as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-GSEmzZbO.js";import{U as t}from"./index-B2RA_MJb.js";import"./vendor-BvqAck49.js";import"./responsiveObserve-oWVLeE2s.js";import"./useFlexGapSupport-xcJuPJdm.js";import"./styleChecker-BRMI8mF3.js";import"./index-Dh1wBDli.js";import"./icons-DP3uiYxy.js";const l=t(o);export{l as default};
|