@auto-ai/agent 2.1.194 → 2.1.196
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/dist/safe-a/404/index.html +1 -1
- package/dist/safe-a/404.html +1 -1
- package/dist/safe-a/_next/static/chunks/136b0e67059516ec.js +1 -0
- package/dist/safe-a/_next/static/chunks/13f563091bb5e693.js +1 -0
- package/dist/safe-a/_next/static/chunks/1c058f8cbbecf3b6.css +1 -0
- package/dist/safe-a/_next/static/chunks/2fcf41242e56194f.js +1 -0
- package/dist/safe-a/_next/static/chunks/30ff9a37b9c6f0c2.js +1 -0
- package/dist/safe-a/_next/static/chunks/{5f0286b194e88c68.js → 38e41a7446bfb002.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{eca5690d7fb3d712.js → 4cea3dc4bc693bae.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{96feacf5b8cde310.js → 6ede5e68b521425a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/7a86f14161d3d2d8.js +1 -0
- package/dist/safe-a/_next/static/chunks/7b2661b7ec3fa4f6.js +1 -0
- package/dist/safe-a/_next/static/chunks/89ac60ccbd69e7d0.js +1 -0
- package/dist/safe-a/_next/static/chunks/{e784a1fa0acaaaa0.css → 98bb493cc14b29b8.css} +1 -1
- package/dist/safe-a/_next/static/chunks/{518d4c901787979a.js → 9edfab69bc0e5607.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{760380631ca561e0.js → a7646d18f644b515.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{f1dde9052e8d1d3d.js → c987866e1b5e538e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9dcb662588dbf520.js → d36ccfb77a3b125c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{69aecc2a7893ba05.js → e300e51730b09886.js} +1 -1
- package/dist/safe-a/_next/static/chunks/e49f12b147341b78.js +1 -0
- package/dist/safe-a/_next/static/chunks/{1d5160bb440a1e1b.js → f31029be820cb46d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/f660a559fce684d3.js +1 -0
- package/dist/safe-a/_next/static/chunks/fddc8491e9085327.js +1 -0
- package/dist/safe-a/index.html +2 -2
- package/dist/safe-a/index.txt +10 -10
- package/dist/safe-a/manage/about/index.html +2 -2
- package/dist/safe-a/manage/about/index.txt +11 -11
- package/dist/safe-a/manage/env/index.html +2 -2
- package/dist/safe-a/manage/env/index.txt +13 -13
- package/dist/safe-a/manage/geelib/index.html +2 -2
- package/dist/safe-a/manage/geelib/index.txt +13 -13
- package/dist/safe-a/manage/general/index.html +2 -2
- package/dist/safe-a/manage/general/index.txt +11 -11
- package/dist/safe-a/manage/git/index.html +2 -2
- package/dist/safe-a/manage/git/index.txt +13 -13
- package/dist/safe-a/manage/im/index.html +2 -2
- package/dist/safe-a/manage/im/index.txt +13 -13
- package/dist/safe-a/manage/index.html +2 -2
- package/dist/safe-a/manage/index.txt +8 -8
- package/dist/safe-a/manage/library/index.html +2 -2
- package/dist/safe-a/manage/library/index.txt +12 -12
- package/dist/safe-a/manage/mcp/index.html +2 -2
- package/dist/safe-a/manage/mcp/index.txt +11 -11
- package/dist/safe-a/manage/permissions/index.html +2 -2
- package/dist/safe-a/manage/permissions/index.txt +11 -11
- package/dist/safe-a/manage/skills/index.html +2 -2
- package/dist/safe-a/manage/skills/index.txt +11 -11
- package/dist/safe-a/manage/system/index.html +2 -2
- package/dist/safe-a/manage/system/index.txt +13 -13
- package/dist/safe-a/manage/task/index.html +2 -2
- package/dist/safe-a/manage/task/index.txt +11 -11
- package/dist/safe-a/manage/teams/index.html +2 -2
- package/dist/safe-a/manage/teams/index.txt +11 -11
- package/dist/safe-a/manage/tools/index.html +2 -2
- package/dist/safe-a/manage/tools/index.txt +11 -11
- package/package.json +6 -6
- package/dist/safe-a/_next/static/chunks/074a7a892d554827.js +0 -1
- package/dist/safe-a/_next/static/chunks/2ba468c7afb852bd.js +0 -1
- package/dist/safe-a/_next/static/chunks/33678ff357855160.js +0 -1
- package/dist/safe-a/_next/static/chunks/65982c1925fca4ab.js +0 -1
- package/dist/safe-a/_next/static/chunks/6ddf95b168bfbc36.js +0 -1
- package/dist/safe-a/_next/static/chunks/743bc613bbda46b4.css +0 -1
- package/dist/safe-a/_next/static/chunks/811897ffb3636359.js +0 -1
- package/dist/safe-a/_next/static/chunks/a56ab101155b1427.js +0 -1
- package/dist/safe-a/_next/static/chunks/cb85ccd601c65174.js +0 -1
- package/dist/safe-a/_next/static/chunks/ceead8f438e931f7.js +0 -1
- /package/dist/safe-a/_next/static/{fnecaAU1IOv7M644xhyOD → nwO0QCBdBfGqbYMxcUsla}/_buildManifest.js +0 -0
- /package/dist/safe-a/_next/static/{fnecaAU1IOv7M644xhyOD → nwO0QCBdBfGqbYMxcUsla}/_clientMiddlewareManifest.json +0 -0
- /package/dist/safe-a/_next/static/{fnecaAU1IOv7M644xhyOD → nwO0QCBdBfGqbYMxcUsla}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,43084,e=>{"use strict";e.s(["clamp",()=>u,"createCoords",()=>a,"evaluate",()=>c,"floor",()=>i,"getAlignment",()=>p,"getAlignmentAxis",()=>v,"getAlignmentSides",()=>b,"getAxisLength",()=>f,"getExpandedPlacements",()=>h,"getOppositeAlignmentPlacement",()=>S,"getOppositeAxis",()=>g,"getOppositeAxisPlacements",()=>C,"getOppositePlacement",()=>T,"getPaddingObject",()=>P,"getSide",()=>d,"getSideAxis",()=>m,"max",()=>r,"min",()=>s,"placements",()=>n,"rectToClientRect",()=>j,"round",()=>o,"sides",()=>t]);let t=["top","right","bottom","left"],n=t.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]),s=Math.min,r=Math.max,o=Math.round,i=Math.floor,a=e=>({x:e,y:e}),l={left:"right",right:"left",bottom:"top",top:"bottom"};function u(e,t,n){return r(e,s(t,n))}function c(e,t){return"function"==typeof e?e(t):e}function d(e){return e.split("-")[0]}function p(e){return e.split("-")[1]}function g(e){return"x"===e?"y":"x"}function f(e){return"y"===e?"height":"width"}function m(e){let t=e[0];return"t"===t||"b"===t?"y":"x"}function v(e){return g(m(e))}function b(e,t,n){void 0===n&&(n=!1);let s=p(e),r=v(e),o=f(r),i="x"===r?s===(n?"end":"start")?"right":"left":"start"===s?"bottom":"top";return t.reference[o]>t.floating[o]&&(i=T(i)),[i,T(i)]}function h(e){let t=T(e);return[S(e),t,S(t)]}function S(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}let y=["left","right"],A=["right","left"],k=["top","bottom"],w=["bottom","top"];function C(e,t,n,s){let r=p(e),o=function(e,t,n){switch(e){case"top":case"bottom":if(n)return t?A:y;return t?y:A;case"left":case"right":return t?k:w;default:return[]}}(d(e),"start"===n,s);return r&&(o=o.map(e=>e+"-"+r),t&&(o=o.concat(o.map(S)))),o}function T(e){let t=d(e);return l[t]+e.slice(t.length)}function P(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function j(e){let{x:t,y:n,width:s,height:r}=e;return{width:s,height:r,top:n,left:t,right:t+s,bottom:n+r,x:t,y:n}}},87968,e=>{"use strict";e.s(["Spinner",()=>r]);var t=e.i(18050),n=e.i(72064),s=e.i(75157);function r(e){let{className:r}=e;return(0,t.jsx)(n.default,{name:"Loader2",size:16,className:(0,s.cn)("animate-spin text-muted-foreground",r)})}},55227,e=>{"use strict";e.s(["deleteSession",()=>r,"listSessions",()=>s,"listWorkspaceFiles",()=>l,"loadSessionOverrides",()=>o,"loadSessionReplay",()=>i,"saveSessionOverrides",()=>a]);var t=e.i(29250),n=e.i(36845);async function s(e,s,r){return(0,t.get)((0,n.buildSessionsListUrl)(e,s,r))}async function r(e,s,r,o){return(0,t.del)((0,n.buildSessionDeleteUrl)(e,s,r,o))}async function o(e,s,r,o){return(0,t.get)((0,n.buildSessionOverridesUrl)(e,s,r,o))}async function i(e,s,r,o){let i=await (0,t.get)((0,n.buildSessionReplayUrl)(e,s,r,o));return{envelopes:Array.isArray(i.envelopes)?i.envelopes:[],messageCount:"number"==typeof i.messageCount?i.messageCount:void 0}}async function a(e,s,r,o,i){await (0,t.patch)((0,n.buildSessionOverridesUrl)(e,s,r,o),i)}async function l(e,s,r,o){return(0,t.get)((0,n.buildWorkspaceFilesListUrl)(e,s,r,o))}},82136,e=>{"use strict";e.s(["loadAgentConfig",()=>l,"loadAgentPrompt",()=>c,"prepareAgentConfigForSave",()=>a,"saveAgentConfig",()=>u]);var t=e.i(29250),n=e.i(36845),s=e.i(75675);function r(e){return(Array.isArray(e)?e:[]).map(e=>{let t=e&&"object"==typeof e?e:{},n=Array.isArray(t.models)?t.models:[];return{id:"string"==typeof t.id?t.id.trim():"",name:"string"==typeof t.name?t.name.trim():"",baseUrl:"string"==typeof t.baseUrl?t.baseUrl.trim():"",apiKey:"string"==typeof t.apiKey?t.apiKey:"",authToken:"string"==typeof t.authToken?t.authToken:"",provider:"anthropic"===t.provider?"anthropic":"openai",models:n.map(e=>{let t=e&&"object"==typeof e?e:{};return{id:"string"==typeof t.id?t.id.trim():"",label:"string"==typeof t.label?t.label.trim():""}}),defaultModel:"string"==typeof t.defaultModel?t.defaultModel.trim():""}})}function o(e){var t;let n={},o=null==e?void 0:e.env;if(o&&"object"==typeof o&&!Array.isArray(o))for(let[e,t]of Object.entries(o))"string"==typeof e&&e.trim()&&(n[e]=null==t?"":String(t));return{tools:Array.isArray(null==e?void 0:e.tools)?e.tools.map(String):[...s.DEFAULT_AGENT_CONFIG.tools],disallowedTools:Array.isArray(null==e?void 0:e.disallowedTools)?e.disallowedTools.map(String):[...s.DEFAULT_AGENT_CONFIG.disallowedTools],mcpServers:Array.isArray(null==e?void 0:e.mcpServers)?e.mcpServers.map(String):[...s.DEFAULT_AGENT_CONFIG.mcpServers],skills:Array.isArray(null==e?void 0:e.skills)?e.skills.map(String):[...s.DEFAULT_AGENT_CONFIG.skills],model:"string"==typeof(null==e?void 0:e.model)?e.model:s.DEFAULT_AGENT_CONFIG.model,agentTeams:Array.isArray(null==e?void 0:e.agentTeams)?e.agentTeams.map(String):[...s.DEFAULT_AGENT_CONFIG.agentTeams],rules:Array.isArray(null==e?void 0:e.rules)?e.rules.map(String):[...s.DEFAULT_AGENT_CONFIG.rules],env:n,llmProviders:r(null==e?void 0:e.llmProviders),effort:"string"==typeof(t=null==e?void 0:e.effort)||"number"==typeof t||null==t?t:s.DEFAULT_AGENT_CONFIG.effort,background:(null==e?void 0:e.background)===!0||s.DEFAULT_AGENT_CONFIG.background,isolation:(null==e?void 0:e.isolation)==="worktree"||(null==e?void 0:e.isolation)==="remote"?e.isolation:"",whentouse:"string"==typeof(null==e?void 0:e.whentouse)?e.whentouse:s.DEFAULT_AGENT_CONFIG.whentouse}}function i(e){var t,n,s,o,i,a,l;return{...e,tools:(null!=(t=e.tools)?t:[]).slice(),disallowedTools:(null!=(n=e.disallowedTools)?n:[]).slice(),mcpServers:(null!=(s=e.mcpServers)?s:[]).slice(),skills:(null!=(o=e.skills)?o:[]).slice(),agentTeams:(null!=(i=e.agentTeams)?i:[]).slice(),rules:(null!=(a=e.rules)?a:[]).slice(),env:{...null!=(l=e.env)?l:{}},llmProviders:r(e.llmProviders)}}function a(e,t){return i({...o(e),...t})}async function l(e,s,r){var i,a,l;let u=await (0,t.get)((0,n.buildAgentApiUrl)(e,s,r));return{agentType:"string"==typeof(null==(i=u.agent)?void 0:i.agentType)&&u.agent.agentType.trim()?u.agent.agentType.trim():"string"==typeof(null==(a=u.agent)?void 0:a.name)?u.agent.name.trim():"",config:o(null==(l=u.agent)?void 0:l.config)}}async function u(e,s,r,o,a){await (0,t.patch)((0,n.buildAgentApiUrl)(e,s,r),function(e,t){let n={config:i(e)};return"string"==typeof(null==t?void 0:t.prompt)&&(n.prompt=t.prompt),n}(o,a))}async function c(e,s,r){let o=await (0,t.get)((0,n.buildAgentApiUrl)(e,s,r));return o.agent&&"string"==typeof o.agent.prompt?o.agent.prompt:""}},87243,e=>{"use strict";e.s(["useSession",()=>l]);var t=e.i(71645),n=e.i(29250),s=e.i(68499),r=e.i(13354),o=e.i(65934),i=e.i(82136),a=e.i(55227);function l(){let e=(0,o.useAppStore)(e=>e.wsUrl),l=(0,o.useAppStore)(e=>e.apiBase),u=(0,o.useAppStore)(e=>e.agentId),c=(0,t.useCallback)(async t=>{let n=o.useAppStore.getState(),s=n.agentId.trim()||"qihoo";n.setSessionsMeta("加载中…");try{let u=await (0,a.listSessions)(e,l,s),c=u.sessions||[],d=null!=u.agent?String(u.agent):s;if(n.setBrandAgent(d),n.setLastSessions(c,"".concat(c.length,"个会话 · agent: ").concat(d)),(null==t?void 0:t.activateFirstIfEmpty)&&!o.useAppStore.getState().sessionId.trim()&&c.length>0){var r,i;let e=null==(i=c[0])||null==(r=i.sessionId)?void 0:r.trim();e&&o.useAppStore.getState().selectSession(e,"history")}}catch(e){n.resetSessions("加载失败: ".concat(e)),n.appendLog("sessions",String(e))}},[e,l]),d=(0,t.useCallback)(async()=>{let t=o.useAppStore.getState(),s=t.agentId.trim()||"qihoo";try{let n=await (0,i.loadAgentConfig)(e,l,s);t.setAgentConfig(n.config)}catch(e){t.resetAgentConfig(),t.appendLog("agent-config","load failed ".concat(e instanceof n.ApiError?e.message:String(e)))}},[e,l]),p=(0,t.useCallback)(async t=>{if(!t||!await (0,s.confirmAlertDialog)({title:"确认删除会话?",description:"确认删除此会话,删除之后将不可恢复。",confirmText:"删除",cancelText:"取消"}))return!1;let i=o.useAppStore.getState().sessionId.trim()===t,d=u.trim()||"qihoo";try{let n=await (0,a.deleteSession)(e,l,d,t);if(o.useAppStore.getState().appendLog("sessions-delete",n),i){let e=o.useAppStore.getState();e.startDraftSession(),e.resetChat(),e.clearLog()}return await c(),i}catch(e){return e instanceof n.ApiError?(o.useAppStore.getState().appendLog("sessions-delete",{error:!0,status:e.status,body:e.body}),r.appToast.error("删除失败: ".concat(e.message))):(o.useAppStore.getState().appendLog("sessions-delete",String(e)),r.appToast.error("删除请求失败: ".concat(e))),!1}},[e,l,u,c]);return{loadSessions:c,loadAgentConfig:d,deleteSessionById:p,currentAgent:(0,t.useCallback)(()=>o.useAppStore.getState().agentId.trim()||"qihoo",[])}}},20090,e=>{"use strict";e.s(["clearActiveWebSocket",()=>r,"isWebSocketOpen",()=>n,"sendActiveWebSocketJson",()=>o,"setActiveWebSocket",()=>s]);let t=null;function n(e){return null!==e&&e.readyState===WebSocket.OPEN}function s(e){t=e}function r(e){t===e&&(t=null)}function o(e){let s=t;return!!n(s)&&(s.send(JSON.stringify(e)),!0)}},70074,e=>{"use strict";function t(e,t){return e?"ready":t?"pending":"idle"}e.s(["resolveInfoStatusClass",()=>t])},67327,e=>{"use strict";e.s(["useWebSocketSender",()=>r]);var t=e.i(71645),n=e.i(65934),s=e.i(20090);function r(){let e=(0,t.useCallback)(e=>{let t=(0,s.sendActiveWebSocketJson)(e);return t&&n.useAppStore.getState().appendLog("→",e),t},[]),r=(0,t.useCallback)(()=>e({type:"reloadAgentConfig"}),[e]),o=(0,t.useCallback)(t=>e({type:"restartSubprocess",reason:null!=t?t:"persist-session-overrides"}),[e]),i=(0,t.useCallback)(()=>e({type:"reloadAgentPrompt"}),[e]),a=(0,t.useCallback)((t,n)=>{let s=String(t||"").trim();return!!s&&e({type:"permission.response",requestId:s,behavior:n})},[e]);return{sendJson:e,sendReloadAgentConfig:r,sendRestartSubprocess:o,sendReloadAgentPrompt:i,sendPermissionResponse:a}}},46798,e=>{"use strict";e.s(["Tooltip",()=>u,"TooltipContent",()=>d,"TooltipProvider",()=>l,"TooltipTrigger",()=>c]);var t=e.i(18050),n=e.i(71645),s=e.i(74080),r=e.i(75157);let o=n.createContext(null),i=n.createContext({delayDuration:0,side:"bottom",align:"center"});function a(){let e=n.useContext(o);if(!e)throw Error("Tooltip components must be used inside <Tooltip>.");return e}function l(e){let{delayDuration:n=0,side:s="bottom",align:r="center",children:o}=e;return(0,t.jsx)(i.Provider,{value:{delayDuration:n,side:s,align:r},children:o})}function u(e){let{children:s}=e,{delayDuration:r}=n.useContext(i),[a,l]=n.useState(!1),u=n.useRef(null),c=n.useRef(null),d=n.useId(),p=n.useCallback(()=>{null!==u.current&&(window.clearTimeout(u.current),u.current=null),l(!1)},[]),g=n.useCallback(()=>{if(null!==u.current&&(window.clearTimeout(u.current),u.current=null),r<=0)return void l(!0);u.current=window.setTimeout(()=>{l(!0),u.current=null},r)},[r]);return n.useEffect(()=>()=>{null!==u.current&&window.clearTimeout(u.current)},[]),(0,t.jsx)(o.Provider,{value:{open:a,delayDuration:r,contentId:d,triggerRef:c,openWithDelay:g,close:p},children:(0,t.jsx)("span",{ref:c,"data-slot":"tooltip",className:"inline-flex",children:s})})}function c(e){let{asChild:s,children:r,...o}=e,{open:i,contentId:l,openWithDelay:u,close:c}=a(),d={"aria-describedby":i?l:void 0};if(s&&n.isValidElement(r)){let e=r.props;return n.cloneElement(r,{...o,...e,...d,onMouseEnter:t=>{var n,s;null==(n=e.onMouseEnter)||n.call(e,t),null==(s=o.onMouseEnter)||s.call(o,t),t.defaultPrevented||u()},onMouseLeave:t=>{var n,s;null==(n=e.onMouseLeave)||n.call(e,t),null==(s=o.onMouseLeave)||s.call(o,t),t.defaultPrevented||c()},onFocus:t=>{var n,s;null==(n=e.onFocus)||n.call(e,t),null==(s=o.onFocus)||s.call(o,t),t.defaultPrevented||u()},onBlur:t=>{var n,s;null==(n=e.onBlur)||n.call(e,t),null==(s=o.onBlur)||s.call(o,t),t.defaultPrevented||c()}})}return(0,t.jsx)("span",{"data-slot":"tooltip-trigger",...o,...d,onMouseEnter:e=>{var t;null==(t=o.onMouseEnter)||t.call(o,e),e.defaultPrevented||u()},onMouseLeave:e=>{var t;null==(t=o.onMouseLeave)||t.call(o,e),e.defaultPrevented||c()},onFocus:e=>{var t;null==(t=o.onFocus)||t.call(o,e),e.defaultPrevented||u()},onBlur:e=>{var t;null==(t=o.onBlur)||t.call(o,e),e.defaultPrevented||c()},children:r})}function d(e){let{className:o,side:l,align:u,sideOffset:c=8,...d}=e,{open:p,contentId:g,triggerRef:f}=a(),{side:m,align:v}=n.useContext(i),b=null!=l?l:m,h=null!=u?u:v,[S,y]=n.useState({});return(n.useLayoutEffect(()=>{let e=()=>{let e=f.current;if(!e)return;let t=e.getBoundingClientRect(),n=0,s=0,r="",o="";"top"===b||"bottom"===b?("start"===h&&(s=t.left),"center"===h&&(s=t.left+t.width/2,r="-50%"),"end"===h&&(s=t.right)):("start"===h&&(n=t.top),"center"===h&&(n=t.top+t.height/2,o="-50%"),"end"===h&&(n=t.bottom)),"bottom"===b&&(n=t.bottom+c),"top"===b&&(n=t.top-c,o="-100%"),"right"===b&&(s=t.right+c),"left"===b&&(s=t.left-c,r="-100%"),y({position:"fixed",top:n,left:s,transform:[r&&"translateX(".concat(r,")"),o&&"translateY(".concat(o,")")].filter(Boolean).join(" ")||void 0})};return e(),window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[p,b,h,c,f]),p&&"undefined"!=typeof document)?(0,s.createPortal)((0,t.jsx)("div",{id:g,role:"tooltip","data-slot":"tooltip-content",className:(0,r.cn)("pointer-events-none z-[10050]","w-max max-w-[300px] rounded-md bg-black/70 px-3 py-1.5 text-sm text-white shadow-md","animate-in fade-in-0 zoom-in-95",o),style:S,...d}),document.body):null}},71403,e=>{"use strict";e.s(["REASONS",()=>M],71403),e.s(["cancelOpen",()=>E,"chipRemovePress",()=>c,"clearPress",()=>u,"closePress",()=>a,"closeWatcher",()=>A,"decrementPress",()=>g,"disabled",()=>F,"drag",()=>T,"escapeKey",()=>y,"focusOut",()=>S,"imperativeAction",()=>O,"incrementPress",()=>p,"initial",()=>I,"inputBlur",()=>v,"inputChange",()=>f,"inputClear",()=>m,"inputPaste",()=>b,"inputPress",()=>h,"itemPress",()=>i,"keyboard",()=>w,"linkPress",()=>l,"listNavigation",()=>k,"missing",()=>L,"none",()=>t,"outsidePress",()=>o,"pointer",()=>C,"scrub",()=>j,"siblingOpen",()=>x,"swipe",()=>U,"trackPress",()=>d,"triggerFocus",()=>r,"triggerHover",()=>s,"triggerPress",()=>n,"wheel",()=>P,"windowResize",()=>N],65917);let t="none",n="trigger-press",s="trigger-hover",r="trigger-focus",o="outside-press",i="item-press",a="close-press",l="link-press",u="clear-press",c="chip-remove-press",d="track-press",p="increment-press",g="decrement-press",f="input-change",m="input-clear",v="input-blur",b="input-paste",h="input-press",S="focus-out",y="escape-key",A="close-watcher",k="list-navigation",w="keyboard",C="pointer",T="drag",P="wheel",j="scrub",E="cancel-open",x="sibling-open",F="disabled",L="missing",I="initial",O="imperative-action",U="swipe",N="window-resize";var M=e.i(65917)},94349,e=>{"use strict";e.s(["useControlled",()=>n]);var t=e.i(71645);function n(e){let{controlled:n,default:s,name:r,state:o="value"}=e,{current:i}=t.useRef(void 0!==n),[a,l]=t.useState(s),u=t.useCallback(e=>{i||l(e)},[]);return[i?n:a,u]}},83799,e=>{"use strict";e.s(["useId",()=>o]);var t=e.i(71645),n=e.i(93733);let s=0,r=n.SafeReact.useId;function o(e,n){if(void 0!==r){let t=r();return null!=e?e:n?"".concat(n,"-").concat(t):t}return function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mui",[r,o]=t.useState(e),i=e||r;return t.useEffect(()=>{null==r&&(s+=1,o("".concat(n,"-").concat(s)))},[r,n]),i}(e,n)}},86790,e=>{"use strict";e.s(["useBaseUiId",()=>n]);var t=e.i(83799);function n(e){return(0,t.useId)(e,"base-ui")}},31888,e=>{"use strict";e.s(["createChangeEventDetails",()=>n]);var t=e.i(17514);function n(e,n,s,r){let o=!1,i=!1,a=null!=r?r:t.EMPTY_OBJECT;return{reason:e,event:null!=n?n:new Event("base-ui"),cancel(){o=!0},allowPropagation(){i=!0},get isCanceled(){return o},get isPropagationAllowed(){return i},trigger:s,...a}}},33848,e=>{"use strict";e.s(["ownerWindow",()=>t.getWindow]);var t=e.i(29315)},62372,e=>{"use strict";e.s(["visuallyHidden",()=>n,"visuallyHiddenInput",()=>s]);let t={clipPath:"inset(50%)",overflow:"hidden",whiteSpace:"nowrap",border:0,padding:0,width:1,height:1,margin:-1},n={...t,position:"fixed",top:0,left:0},s={...t,position:"absolute"}},73577,e=>{"use strict";e.s(["useValueChanged",()=>r]);var t=e.i(71645),n=e.i(977),s=e.i(76477);function r(e,r){let o=t.useRef(e),i=(0,s.useStableCallback)(r);(0,n.useIsoLayoutEffect)(()=>{o.current!==e&&i(o.current)},[e,i]),(0,n.useIsoLayoutEffect)(()=>{o.current=e},[e])}},50711,e=>{"use strict";e.s(["usePersistAgentConfig",()=>a,"usePersistAgentConfigField",()=>l]);var t=e.i(71645),n=e.i(65934),s=e.i(67327),r=e.i(13354),o=e.i(82136),i=e.i(70074);function a(){let e=(0,n.useAppStore)(e=>e.wsUrl),a=(0,n.useAppStore)(e=>e.apiBase),{sendReloadAgentConfig:l}=(0,s.useWebSocketSender)(),u=(0,t.useCallback)(()=>n.useAppStore.getState().agentId.trim()||"qihoo",[]);return(0,t.useCallback)(async t=>{let s=!!(null==t?void 0:t.silent),c=n.useAppStore.getState();try{await (0,o.saveAgentConfig)(e,a,u(),(0,o.prepareAgentConfigForSave)(c.agentConfig));let t=n.useAppStore.getState();t.wsConnected&&l(),s?(t.appendLog("agent-config","已写入 agent.json"),t.setStatus("agent.json 已保存".concat(t.wsConnected?",已请求同步 worker":"(未连接 WS 则下次连上后 reload)"),(0,i.resolveInfoStatusClass)(t.bridgeReady,t.wsConnected))):r.appToast.success(t.wsConnected?"已保存并已请求 worker 重新加载 agent.md + agent.json。":"已保存。重连 WebSocket 后生效。")}catch(e){r.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}},[e,a,l,u])}function l(e){let a=(0,n.useAppStore)(e=>e.wsUrl),l=(0,n.useAppStore)(e=>e.apiBase),{sendReloadAgentConfig:u}=(0,s.useWebSocketSender)(),c=(0,t.useCallback)(()=>n.useAppStore.getState().agentId.trim()||"qihoo",[]);return(0,t.useCallback)(async(t,s)=>{let d=!!(null==s?void 0:s.silent),p=n.useAppStore.getState();try{await (0,o.saveAgentConfig)(a,l,c(),(0,o.prepareAgentConfigForSave)(p.agentConfig,{[e]:t}));let s=n.useAppStore.getState();s.wsConnected&&u(),d?(s.appendLog("agent-config","已写入 agent.json"),s.setStatus("agent.json 已保存".concat(s.wsConnected?",已请求同步 worker":"(未连接 WS 则下次连上后 reload)"),(0,i.resolveInfoStatusClass)(s.bridgeReady,s.wsConnected))):r.appToast.success(s.wsConnected?"已保存并已请求 worker 重新加载 agent.md + agent.json。":"已保存。重连 WebSocket 后生效。")}catch(e){r.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}},[a,l,u,c,e])}},92413,e=>{"use strict";function t(e){return(e.summary||e.firstPrompt||e.sessionId||"(无标题)").slice(0,120)}function n(e){let t=new Map;for(let n of e){let e=function(e){let t=new Date(e.lastModified||e.createdAt||0);if(!Number.isFinite(t.getTime()))return"未知日期";let n=t.getFullYear(),s=String(t.getMonth()+1).padStart(2,"0");return"".concat(n,"-").concat(s)}(n),s=t.get(e);s?s.push(n):t.set(e,[n])}return[...t.keys()].sort((e,t)=>t.localeCompare(e)).map(e=>{var n;return{key:e,items:null!=(n=t.get(e))?n:[]}})}function s(e){let t=e.split("-"),n=t[0]&&/^[0-9a-fA-F]{8}$/.test(t[0])?t[0]:e.slice(0,8);return"".concat(n,"...")}function r(e){return String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}e.s(["escapeHtml",()=>r,"groupSessionsByMonth",()=>n,"sessionTitle",()=>t,"shortUuidTitle",()=>s])},94065,e=>{e.v(t=>Promise.all(["static/chunks/ceead8f438e931f7.js","static/chunks/518d4c901787979a.js","static/chunks/0fde2a8866dd02fc.js","static/chunks/1d5160bb440a1e1b.js","static/chunks/cd4556cbed1f8957.js","static/chunks/6e61f670898cb297.css"].map(t=>e.l(t))).then(()=>t(20291)))},72234,e=>{e.v(t=>Promise.all(["static/chunks/518d4c901787979a.js","static/chunks/33678ff357855160.js"].map(t=>e.l(t))).then(()=>t(37991)))},58332,e=>{e.v(t=>Promise.all(["static/chunks/518d4c901787979a.js","static/chunks/811897ffb3636359.js"].map(t=>e.l(t))).then(()=>t(19573)))},48583,e=>{e.v(t=>Promise.all(["static/chunks/518d4c901787979a.js","static/chunks/f1dde9052e8d1d3d.js"].map(t=>e.l(t))).then(()=>t(39721)))},2578,e=>{e.v(t=>Promise.all(["static/chunks/a56ab101155b1427.js","static/chunks/cd4556cbed1f8957.js","static/chunks/6ddf95b168bfbc36.js"].map(t=>e.l(t))).then(()=>t(31862)))},14928,e=>{e.v(t=>Promise.all(["static/chunks/96feacf5b8cde310.js","static/chunks/eca5690d7fb3d712.js"].map(t=>e.l(t))).then(()=>t(89197)))},1861,e=>{e.v(t=>Promise.all(["static/chunks/5f0286b194e88c68.js","static/chunks/0fde2a8866dd02fc.js"].map(t=>e.l(t))).then(()=>t(62849)))},83330,e=>{e.v(t=>Promise.all(["static/chunks/291c07da1c127dc1.js","static/chunks/0fde2a8866dd02fc.js","static/chunks/2ba468c7afb852bd.js"].map(t=>e.l(t))).then(()=>t(20378)))},94540,e=>{e.v(t=>Promise.all(["static/chunks/4a426c156537f974.js","static/chunks/0fde2a8866dd02fc.js","static/chunks/2ba468c7afb852bd.js"].map(t=>e.l(t))).then(()=>t(42307)))},70287,e=>{e.v(t=>Promise.all(["static/chunks/abdf99ba76e0f571.js","static/chunks/0fde2a8866dd02fc.js","static/chunks/2ba468c7afb852bd.js"].map(t=>e.l(t))).then(()=>t(3862)))},21363,e=>{e.v(t=>Promise.all(["static/chunks/2b51efee1a2b8f27.js","static/chunks/0fde2a8866dd02fc.js","static/chunks/2ba468c7afb852bd.js"].map(t=>e.l(t))).then(()=>t(38962)))}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,43084,e=>{"use strict";e.s(["clamp",()=>u,"createCoords",()=>a,"evaluate",()=>c,"floor",()=>i,"getAlignment",()=>p,"getAlignmentAxis",()=>v,"getAlignmentSides",()=>b,"getAxisLength",()=>f,"getExpandedPlacements",()=>h,"getOppositeAlignmentPlacement",()=>S,"getOppositeAxis",()=>g,"getOppositeAxisPlacements",()=>C,"getOppositePlacement",()=>T,"getPaddingObject",()=>P,"getSide",()=>d,"getSideAxis",()=>m,"max",()=>r,"min",()=>s,"placements",()=>n,"rectToClientRect",()=>j,"round",()=>o,"sides",()=>t]);let t=["top","right","bottom","left"],n=t.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]),s=Math.min,r=Math.max,o=Math.round,i=Math.floor,a=e=>({x:e,y:e}),l={left:"right",right:"left",bottom:"top",top:"bottom"};function u(e,t,n){return r(e,s(t,n))}function c(e,t){return"function"==typeof e?e(t):e}function d(e){return e.split("-")[0]}function p(e){return e.split("-")[1]}function g(e){return"x"===e?"y":"x"}function f(e){return"y"===e?"height":"width"}function m(e){let t=e[0];return"t"===t||"b"===t?"y":"x"}function v(e){return g(m(e))}function b(e,t,n){void 0===n&&(n=!1);let s=p(e),r=v(e),o=f(r),i="x"===r?s===(n?"end":"start")?"right":"left":"start"===s?"bottom":"top";return t.reference[o]>t.floating[o]&&(i=T(i)),[i,T(i)]}function h(e){let t=T(e);return[S(e),t,S(t)]}function S(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}let y=["left","right"],A=["right","left"],k=["top","bottom"],w=["bottom","top"];function C(e,t,n,s){let r=p(e),o=function(e,t,n){switch(e){case"top":case"bottom":if(n)return t?A:y;return t?y:A;case"left":case"right":return t?k:w;default:return[]}}(d(e),"start"===n,s);return r&&(o=o.map(e=>e+"-"+r),t&&(o=o.concat(o.map(S)))),o}function T(e){let t=d(e);return l[t]+e.slice(t.length)}function P(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function j(e){let{x:t,y:n,width:s,height:r}=e;return{width:s,height:r,top:n,left:t,right:t+s,bottom:n+r,x:t,y:n}}},87968,e=>{"use strict";e.s(["Spinner",()=>r]);var t=e.i(18050),n=e.i(72064),s=e.i(75157);function r(e){let{className:r}=e;return(0,t.jsx)(n.default,{name:"Loader2",size:16,className:(0,s.cn)("animate-spin text-muted-foreground",r)})}},55227,e=>{"use strict";e.s(["deleteSession",()=>r,"listSessions",()=>s,"listWorkspaceFiles",()=>l,"loadSessionOverrides",()=>o,"loadSessionReplay",()=>i,"saveSessionOverrides",()=>a]);var t=e.i(29250),n=e.i(36845);async function s(e,s,r){return(0,t.get)((0,n.buildSessionsListUrl)(e,s,r))}async function r(e,s,r,o){return(0,t.del)((0,n.buildSessionDeleteUrl)(e,s,r,o))}async function o(e,s,r,o){return(0,t.get)((0,n.buildSessionOverridesUrl)(e,s,r,o))}async function i(e,s,r,o){let i=await (0,t.get)((0,n.buildSessionReplayUrl)(e,s,r,o));return{envelopes:Array.isArray(i.envelopes)?i.envelopes:[],messageCount:"number"==typeof i.messageCount?i.messageCount:void 0}}async function a(e,s,r,o,i){await (0,t.patch)((0,n.buildSessionOverridesUrl)(e,s,r,o),i)}async function l(e,s,r,o){return(0,t.get)((0,n.buildWorkspaceFilesListUrl)(e,s,r,o))}},82136,e=>{"use strict";e.s(["loadAgentConfig",()=>l,"loadAgentPrompt",()=>c,"prepareAgentConfigForSave",()=>a,"saveAgentConfig",()=>u]);var t=e.i(29250),n=e.i(36845),s=e.i(75675);function r(e){return(Array.isArray(e)?e:[]).map(e=>{let t=e&&"object"==typeof e?e:{},n=Array.isArray(t.models)?t.models:[];return{id:"string"==typeof t.id?t.id.trim():"",name:"string"==typeof t.name?t.name.trim():"",baseUrl:"string"==typeof t.baseUrl?t.baseUrl.trim():"",apiKey:"string"==typeof t.apiKey?t.apiKey:"",authToken:"string"==typeof t.authToken?t.authToken:"",provider:"anthropic"===t.provider?"anthropic":"openai",models:n.map(e=>{let t=e&&"object"==typeof e?e:{};return{id:"string"==typeof t.id?t.id.trim():"",label:"string"==typeof t.label?t.label.trim():""}}),defaultModel:"string"==typeof t.defaultModel?t.defaultModel.trim():""}})}function o(e){var t;let n={},o=null==e?void 0:e.env;if(o&&"object"==typeof o&&!Array.isArray(o))for(let[e,t]of Object.entries(o))"string"==typeof e&&e.trim()&&(n[e]=null==t?"":String(t));return{tools:Array.isArray(null==e?void 0:e.tools)?e.tools.map(String):[...s.DEFAULT_AGENT_CONFIG.tools],disallowedTools:Array.isArray(null==e?void 0:e.disallowedTools)?e.disallowedTools.map(String):[...s.DEFAULT_AGENT_CONFIG.disallowedTools],mcpServers:Array.isArray(null==e?void 0:e.mcpServers)?e.mcpServers.map(String):[...s.DEFAULT_AGENT_CONFIG.mcpServers],skills:Array.isArray(null==e?void 0:e.skills)?e.skills.map(String):[...s.DEFAULT_AGENT_CONFIG.skills],model:"string"==typeof(null==e?void 0:e.model)?e.model:s.DEFAULT_AGENT_CONFIG.model,agentTeams:Array.isArray(null==e?void 0:e.agentTeams)?e.agentTeams.map(String):[...s.DEFAULT_AGENT_CONFIG.agentTeams],rules:Array.isArray(null==e?void 0:e.rules)?e.rules.map(String):[...s.DEFAULT_AGENT_CONFIG.rules],env:n,llmProviders:r(null==e?void 0:e.llmProviders),effort:"string"==typeof(t=null==e?void 0:e.effort)||"number"==typeof t||null==t?t:s.DEFAULT_AGENT_CONFIG.effort,background:(null==e?void 0:e.background)===!0||s.DEFAULT_AGENT_CONFIG.background,isolation:(null==e?void 0:e.isolation)==="worktree"||(null==e?void 0:e.isolation)==="remote"?e.isolation:"",whentouse:"string"==typeof(null==e?void 0:e.whentouse)?e.whentouse:s.DEFAULT_AGENT_CONFIG.whentouse}}function i(e){var t,n,s,o,i,a,l;return{...e,tools:(null!=(t=e.tools)?t:[]).slice(),disallowedTools:(null!=(n=e.disallowedTools)?n:[]).slice(),mcpServers:(null!=(s=e.mcpServers)?s:[]).slice(),skills:(null!=(o=e.skills)?o:[]).slice(),agentTeams:(null!=(i=e.agentTeams)?i:[]).slice(),rules:(null!=(a=e.rules)?a:[]).slice(),env:{...null!=(l=e.env)?l:{}},llmProviders:r(e.llmProviders)}}function a(e,t){return i({...o(e),...t})}async function l(e,s,r){var i,a,l;let u=await (0,t.get)((0,n.buildAgentApiUrl)(e,s,r));return{agentType:"string"==typeof(null==(i=u.agent)?void 0:i.agentType)&&u.agent.agentType.trim()?u.agent.agentType.trim():"string"==typeof(null==(a=u.agent)?void 0:a.name)?u.agent.name.trim():"",config:o(null==(l=u.agent)?void 0:l.config)}}async function u(e,s,r,o,a){await (0,t.patch)((0,n.buildAgentApiUrl)(e,s,r),function(e,t){let n={config:i(e)};return"string"==typeof(null==t?void 0:t.prompt)&&(n.prompt=t.prompt),n}(o,a))}async function c(e,s,r){let o=await (0,t.get)((0,n.buildAgentApiUrl)(e,s,r));return o.agent&&"string"==typeof o.agent.prompt?o.agent.prompt:""}},87243,e=>{"use strict";e.s(["useSession",()=>l]);var t=e.i(71645),n=e.i(29250),s=e.i(68499),r=e.i(13354),o=e.i(65934),i=e.i(82136),a=e.i(55227);function l(){let e=(0,o.useAppStore)(e=>e.wsUrl),l=(0,o.useAppStore)(e=>e.apiBase),u=(0,o.useAppStore)(e=>e.agentId),c=(0,t.useCallback)(async t=>{let n=o.useAppStore.getState(),s=n.agentId.trim()||"qihoo";n.setSessionsMeta("加载中…");try{let u=await (0,a.listSessions)(e,l,s),c=u.sessions||[],d=null!=u.agent?String(u.agent):s;if(n.setBrandAgent(d),n.setLastSessions(c,"".concat(c.length,"个会话 · agent: ").concat(d)),(null==t?void 0:t.activateFirstIfEmpty)&&!o.useAppStore.getState().sessionId.trim()&&c.length>0){var r,i;let e=null==(i=c[0])||null==(r=i.sessionId)?void 0:r.trim();e&&o.useAppStore.getState().selectSession(e,"history")}}catch(e){n.resetSessions("加载失败: ".concat(e)),n.appendLog("sessions",String(e))}},[e,l]),d=(0,t.useCallback)(async()=>{let t=o.useAppStore.getState(),s=t.agentId.trim()||"qihoo";try{let n=await (0,i.loadAgentConfig)(e,l,s);t.setAgentConfig(n.config)}catch(e){t.resetAgentConfig(),t.appendLog("agent-config","load failed ".concat(e instanceof n.ApiError?e.message:String(e)))}},[e,l]),p=(0,t.useCallback)(async t=>{if(!t||!await (0,s.confirmAlertDialog)({title:"确认删除会话?",description:"确认删除此会话,删除之后将不可恢复。",confirmText:"删除",cancelText:"取消"}))return!1;let i=o.useAppStore.getState().sessionId.trim()===t,d=u.trim()||"qihoo";try{let n=await (0,a.deleteSession)(e,l,d,t);if(o.useAppStore.getState().appendLog("sessions-delete",n),i){let e=o.useAppStore.getState();e.startDraftSession(),e.resetChat(),e.clearLog()}return await c(),i}catch(e){return e instanceof n.ApiError?(o.useAppStore.getState().appendLog("sessions-delete",{error:!0,status:e.status,body:e.body}),r.appToast.error("删除失败: ".concat(e.message))):(o.useAppStore.getState().appendLog("sessions-delete",String(e)),r.appToast.error("删除请求失败: ".concat(e))),!1}},[e,l,u,c]);return{loadSessions:c,loadAgentConfig:d,deleteSessionById:p,currentAgent:(0,t.useCallback)(()=>o.useAppStore.getState().agentId.trim()||"qihoo",[])}}},20090,e=>{"use strict";e.s(["clearActiveWebSocket",()=>r,"isWebSocketOpen",()=>n,"sendActiveWebSocketJson",()=>o,"setActiveWebSocket",()=>s]);let t=null;function n(e){return null!==e&&e.readyState===WebSocket.OPEN}function s(e){t=e}function r(e){t===e&&(t=null)}function o(e){let s=t;return!!n(s)&&(s.send(JSON.stringify(e)),!0)}},70074,e=>{"use strict";function t(e,t){return e?"ready":t?"pending":"idle"}e.s(["resolveInfoStatusClass",()=>t])},67327,e=>{"use strict";e.s(["useWebSocketSender",()=>r]);var t=e.i(71645),n=e.i(65934),s=e.i(20090);function r(){let e=(0,t.useCallback)(e=>{let t=(0,s.sendActiveWebSocketJson)(e);return t&&n.useAppStore.getState().appendLog("→",e),t},[]),r=(0,t.useCallback)(()=>e({type:"reloadAgentConfig"}),[e]),o=(0,t.useCallback)(t=>e({type:"restartSubprocess",reason:null!=t?t:"persist-session-overrides"}),[e]),i=(0,t.useCallback)(()=>e({type:"reloadAgentPrompt"}),[e]),a=(0,t.useCallback)((t,n)=>{let s=String(t||"").trim();return!!s&&e({type:"permission.response",requestId:s,behavior:n})},[e]);return{sendJson:e,sendReloadAgentConfig:r,sendRestartSubprocess:o,sendReloadAgentPrompt:i,sendPermissionResponse:a}}},46798,e=>{"use strict";e.s(["Tooltip",()=>u,"TooltipContent",()=>d,"TooltipProvider",()=>l,"TooltipTrigger",()=>c]);var t=e.i(18050),n=e.i(71645),s=e.i(74080),r=e.i(75157);let o=n.createContext(null),i=n.createContext({delayDuration:0,side:"bottom",align:"center"});function a(){let e=n.useContext(o);if(!e)throw Error("Tooltip components must be used inside <Tooltip>.");return e}function l(e){let{delayDuration:n=0,side:s="bottom",align:r="center",children:o}=e;return(0,t.jsx)(i.Provider,{value:{delayDuration:n,side:s,align:r},children:o})}function u(e){let{children:s}=e,{delayDuration:r}=n.useContext(i),[a,l]=n.useState(!1),u=n.useRef(null),c=n.useRef(null),d=n.useId(),p=n.useCallback(()=>{null!==u.current&&(window.clearTimeout(u.current),u.current=null),l(!1)},[]),g=n.useCallback(()=>{if(null!==u.current&&(window.clearTimeout(u.current),u.current=null),r<=0)return void l(!0);u.current=window.setTimeout(()=>{l(!0),u.current=null},r)},[r]);return n.useEffect(()=>()=>{null!==u.current&&window.clearTimeout(u.current)},[]),(0,t.jsx)(o.Provider,{value:{open:a,delayDuration:r,contentId:d,triggerRef:c,openWithDelay:g,close:p},children:(0,t.jsx)("span",{ref:c,"data-slot":"tooltip",className:"inline-flex",children:s})})}function c(e){let{asChild:s,children:r,...o}=e,{open:i,contentId:l,openWithDelay:u,close:c}=a(),d={"aria-describedby":i?l:void 0};if(s&&n.isValidElement(r)){let e=r.props;return n.cloneElement(r,{...o,...e,...d,onMouseEnter:t=>{var n,s;null==(n=e.onMouseEnter)||n.call(e,t),null==(s=o.onMouseEnter)||s.call(o,t),t.defaultPrevented||u()},onMouseLeave:t=>{var n,s;null==(n=e.onMouseLeave)||n.call(e,t),null==(s=o.onMouseLeave)||s.call(o,t),t.defaultPrevented||c()},onFocus:t=>{var n,s;null==(n=e.onFocus)||n.call(e,t),null==(s=o.onFocus)||s.call(o,t),t.defaultPrevented||u()},onBlur:t=>{var n,s;null==(n=e.onBlur)||n.call(e,t),null==(s=o.onBlur)||s.call(o,t),t.defaultPrevented||c()}})}return(0,t.jsx)("span",{"data-slot":"tooltip-trigger",...o,...d,onMouseEnter:e=>{var t;null==(t=o.onMouseEnter)||t.call(o,e),e.defaultPrevented||u()},onMouseLeave:e=>{var t;null==(t=o.onMouseLeave)||t.call(o,e),e.defaultPrevented||c()},onFocus:e=>{var t;null==(t=o.onFocus)||t.call(o,e),e.defaultPrevented||u()},onBlur:e=>{var t;null==(t=o.onBlur)||t.call(o,e),e.defaultPrevented||c()},children:r})}function d(e){let{className:o,side:l,align:u,sideOffset:c=8,...d}=e,{open:p,contentId:g,triggerRef:f}=a(),{side:m,align:v}=n.useContext(i),b=null!=l?l:m,h=null!=u?u:v,[S,y]=n.useState({});return(n.useLayoutEffect(()=>{let e=()=>{let e=f.current;if(!e)return;let t=e.getBoundingClientRect(),n=0,s=0,r="",o="";"top"===b||"bottom"===b?("start"===h&&(s=t.left),"center"===h&&(s=t.left+t.width/2,r="-50%"),"end"===h&&(s=t.right)):("start"===h&&(n=t.top),"center"===h&&(n=t.top+t.height/2,o="-50%"),"end"===h&&(n=t.bottom)),"bottom"===b&&(n=t.bottom+c),"top"===b&&(n=t.top-c,o="-100%"),"right"===b&&(s=t.right+c),"left"===b&&(s=t.left-c,r="-100%"),y({position:"fixed",top:n,left:s,transform:[r&&"translateX(".concat(r,")"),o&&"translateY(".concat(o,")")].filter(Boolean).join(" ")||void 0})};return e(),window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[p,b,h,c,f]),p&&"undefined"!=typeof document)?(0,s.createPortal)((0,t.jsx)("div",{id:g,role:"tooltip","data-slot":"tooltip-content",className:(0,r.cn)("pointer-events-none z-[10050]","w-max max-w-[300px] rounded-md bg-black/70 px-3 py-1.5 text-sm text-white shadow-md","animate-in fade-in-0 zoom-in-95",o),style:S,...d}),document.body):null}},71403,e=>{"use strict";e.s(["REASONS",()=>M],71403),e.s(["cancelOpen",()=>E,"chipRemovePress",()=>c,"clearPress",()=>u,"closePress",()=>a,"closeWatcher",()=>A,"decrementPress",()=>g,"disabled",()=>F,"drag",()=>T,"escapeKey",()=>y,"focusOut",()=>S,"imperativeAction",()=>O,"incrementPress",()=>p,"initial",()=>I,"inputBlur",()=>v,"inputChange",()=>f,"inputClear",()=>m,"inputPaste",()=>b,"inputPress",()=>h,"itemPress",()=>i,"keyboard",()=>w,"linkPress",()=>l,"listNavigation",()=>k,"missing",()=>L,"none",()=>t,"outsidePress",()=>o,"pointer",()=>C,"scrub",()=>j,"siblingOpen",()=>x,"swipe",()=>U,"trackPress",()=>d,"triggerFocus",()=>r,"triggerHover",()=>s,"triggerPress",()=>n,"wheel",()=>P,"windowResize",()=>N],65917);let t="none",n="trigger-press",s="trigger-hover",r="trigger-focus",o="outside-press",i="item-press",a="close-press",l="link-press",u="clear-press",c="chip-remove-press",d="track-press",p="increment-press",g="decrement-press",f="input-change",m="input-clear",v="input-blur",b="input-paste",h="input-press",S="focus-out",y="escape-key",A="close-watcher",k="list-navigation",w="keyboard",C="pointer",T="drag",P="wheel",j="scrub",E="cancel-open",x="sibling-open",F="disabled",L="missing",I="initial",O="imperative-action",U="swipe",N="window-resize";var M=e.i(65917)},94349,e=>{"use strict";e.s(["useControlled",()=>n]);var t=e.i(71645);function n(e){let{controlled:n,default:s,name:r,state:o="value"}=e,{current:i}=t.useRef(void 0!==n),[a,l]=t.useState(s),u=t.useCallback(e=>{i||l(e)},[]);return[i?n:a,u]}},83799,e=>{"use strict";e.s(["useId",()=>o]);var t=e.i(71645),n=e.i(93733);let s=0,r=n.SafeReact.useId;function o(e,n){if(void 0!==r){let t=r();return null!=e?e:n?"".concat(n,"-").concat(t):t}return function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mui",[r,o]=t.useState(e),i=e||r;return t.useEffect(()=>{null==r&&(s+=1,o("".concat(n,"-").concat(s)))},[r,n]),i}(e,n)}},86790,e=>{"use strict";e.s(["useBaseUiId",()=>n]);var t=e.i(83799);function n(e){return(0,t.useId)(e,"base-ui")}},31888,e=>{"use strict";e.s(["createChangeEventDetails",()=>n]);var t=e.i(17514);function n(e,n,s,r){let o=!1,i=!1,a=null!=r?r:t.EMPTY_OBJECT;return{reason:e,event:null!=n?n:new Event("base-ui"),cancel(){o=!0},allowPropagation(){i=!0},get isCanceled(){return o},get isPropagationAllowed(){return i},trigger:s,...a}}},33848,e=>{"use strict";e.s(["ownerWindow",()=>t.getWindow]);var t=e.i(29315)},62372,e=>{"use strict";e.s(["visuallyHidden",()=>n,"visuallyHiddenInput",()=>s]);let t={clipPath:"inset(50%)",overflow:"hidden",whiteSpace:"nowrap",border:0,padding:0,width:1,height:1,margin:-1},n={...t,position:"fixed",top:0,left:0},s={...t,position:"absolute"}},73577,e=>{"use strict";e.s(["useValueChanged",()=>r]);var t=e.i(71645),n=e.i(977),s=e.i(76477);function r(e,r){let o=t.useRef(e),i=(0,s.useStableCallback)(r);(0,n.useIsoLayoutEffect)(()=>{o.current!==e&&i(o.current)},[e,i]),(0,n.useIsoLayoutEffect)(()=>{o.current=e},[e])}},50711,e=>{"use strict";e.s(["usePersistAgentConfig",()=>a,"usePersistAgentConfigField",()=>l]);var t=e.i(71645),n=e.i(65934),s=e.i(67327),r=e.i(13354),o=e.i(82136),i=e.i(70074);function a(){let e=(0,n.useAppStore)(e=>e.wsUrl),a=(0,n.useAppStore)(e=>e.apiBase),{sendReloadAgentConfig:l}=(0,s.useWebSocketSender)(),u=(0,t.useCallback)(()=>n.useAppStore.getState().agentId.trim()||"qihoo",[]);return(0,t.useCallback)(async t=>{let s=!!(null==t?void 0:t.silent),c=n.useAppStore.getState();try{await (0,o.saveAgentConfig)(e,a,u(),(0,o.prepareAgentConfigForSave)(c.agentConfig));let t=n.useAppStore.getState();t.wsConnected&&l(),s?(t.appendLog("agent-config","已写入 agent.json"),t.setStatus("agent.json 已保存".concat(t.wsConnected?",已请求同步 worker":"(未连接 WS 则下次连上后 reload)"),(0,i.resolveInfoStatusClass)(t.bridgeReady,t.wsConnected))):r.appToast.success(t.wsConnected?"已保存并已请求 worker 重新加载 agent.md + agent.json。":"已保存。重连 WebSocket 后生效。")}catch(e){r.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}},[e,a,l,u])}function l(e){let a=(0,n.useAppStore)(e=>e.wsUrl),l=(0,n.useAppStore)(e=>e.apiBase),{sendReloadAgentConfig:u}=(0,s.useWebSocketSender)(),c=(0,t.useCallback)(()=>n.useAppStore.getState().agentId.trim()||"qihoo",[]);return(0,t.useCallback)(async(t,s)=>{let d=!!(null==s?void 0:s.silent),p=n.useAppStore.getState();try{await (0,o.saveAgentConfig)(a,l,c(),(0,o.prepareAgentConfigForSave)(p.agentConfig,{[e]:t}));let s=n.useAppStore.getState();s.wsConnected&&u(),d?(s.appendLog("agent-config","已写入 agent.json"),s.setStatus("agent.json 已保存".concat(s.wsConnected?",已请求同步 worker":"(未连接 WS 则下次连上后 reload)"),(0,i.resolveInfoStatusClass)(s.bridgeReady,s.wsConnected))):r.appToast.success(s.wsConnected?"已保存并已请求 worker 重新加载 agent.md + agent.json。":"已保存。重连 WebSocket 后生效。")}catch(e){r.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}},[a,l,u,c,e])}},92413,e=>{"use strict";function t(e){return(e.summary||e.firstPrompt||e.sessionId||"(无标题)").slice(0,120)}function n(e){let t=new Map;for(let n of e){let e=function(e){let t=new Date(e.lastModified||e.createdAt||0);if(!Number.isFinite(t.getTime()))return"未知日期";let n=t.getFullYear(),s=String(t.getMonth()+1).padStart(2,"0");return"".concat(n,"-").concat(s)}(n),s=t.get(e);s?s.push(n):t.set(e,[n])}return[...t.keys()].sort((e,t)=>t.localeCompare(e)).map(e=>{var n;return{key:e,items:null!=(n=t.get(e))?n:[]}})}function s(e){let t=e.split("-"),n=t[0]&&/^[0-9a-fA-F]{8}$/.test(t[0])?t[0]:e.slice(0,8);return"".concat(n,"...")}function r(e){return String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}e.s(["escapeHtml",()=>r,"groupSessionsByMonth",()=>n,"sessionTitle",()=>t,"shortUuidTitle",()=>s])},94065,e=>{e.v(t=>Promise.all(["static/chunks/f660a559fce684d3.js","static/chunks/9edfab69bc0e5607.js","static/chunks/f31029be820cb46d.js","static/chunks/0fde2a8866dd02fc.js","static/chunks/cd4556cbed1f8957.js","static/chunks/6e61f670898cb297.css"].map(t=>e.l(t))).then(()=>t(20291)))},72234,e=>{e.v(t=>Promise.all(["static/chunks/7b2661b7ec3fa4f6.js","static/chunks/89ac60ccbd69e7d0.js"].map(t=>e.l(t))).then(()=>t(37991)))},58332,e=>{e.v(t=>Promise.all(["static/chunks/fddc8491e9085327.js","static/chunks/9edfab69bc0e5607.js"].map(t=>e.l(t))).then(()=>t(19573)))},48583,e=>{e.v(t=>Promise.all(["static/chunks/9edfab69bc0e5607.js","static/chunks/c987866e1b5e538e.js"].map(t=>e.l(t))).then(()=>t(39721)))},2578,e=>{e.v(t=>Promise.all(["static/chunks/30ff9a37b9c6f0c2.js","static/chunks/cd4556cbed1f8957.js","static/chunks/e49f12b147341b78.js"].map(t=>e.l(t))).then(()=>t(31862)))},14928,e=>{e.v(t=>Promise.all(["static/chunks/6ede5e68b521425a.js","static/chunks/4cea3dc4bc693bae.js"].map(t=>e.l(t))).then(()=>t(89197)))},1861,e=>{e.v(t=>Promise.all(["static/chunks/38e41a7446bfb002.js","static/chunks/0fde2a8866dd02fc.js"].map(t=>e.l(t))).then(()=>t(62849)))},83330,e=>{e.v(t=>Promise.all(["static/chunks/291c07da1c127dc1.js","static/chunks/0fde2a8866dd02fc.js","static/chunks/136b0e67059516ec.js"].map(t=>e.l(t))).then(()=>t(20378)))},94540,e=>{e.v(t=>Promise.all(["static/chunks/4a426c156537f974.js","static/chunks/0fde2a8866dd02fc.js","static/chunks/136b0e67059516ec.js"].map(t=>e.l(t))).then(()=>t(42307)))},70287,e=>{e.v(t=>Promise.all(["static/chunks/abdf99ba76e0f571.js","static/chunks/0fde2a8866dd02fc.js","static/chunks/136b0e67059516ec.js"].map(t=>e.l(t))).then(()=>t(3862)))},21363,e=>{e.v(t=>Promise.all(["static/chunks/2b51efee1a2b8f27.js","static/chunks/0fde2a8866dd02fc.js","static/chunks/136b0e67059516ec.js"].map(t=>e.l(t))).then(()=>t(38962)))}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,92715,e=>{"use strict";e.s(["AppTable",()=>u],92715);var t=e.i(18050),a=e.i(85413),l=e.i(71645),r=e.i(75157);let s=l.forwardRef((e,a)=>{let{className:l,...s}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:a,className:(0,r.cn)("w-full caption-bottom border-collapse",l),...s})})});s.displayName="Table";let n=l.forwardRef((e,a)=>{let{className:l,...s}=e;return(0,t.jsx)("thead",{ref:a,className:(0,r.cn)("[&_tr]:table [&_tr]:w-full [&_tr]:table-fixed [&_tr]:border-b",l),...s})});n.displayName="TableHeader";let i=l.forwardRef((e,a)=>{let{className:s,viewportFit:n=!0,viewportReserveBottom:i=16,viewportPaginationReserve:o=0,style:c,...d}=e,u=l.useRef(null),m=l.useCallback(e=>{u.current=e,"function"==typeof a?a(e):a&&(a.current=e)},[a]),[p,f]=l.useState(void 0);return l.useLayoutEffect(()=>{var e,t;if(!n)return void f(void 0);let a=()=>{var e,t;let a=u.current;if(!a)return;let l=a.getBoundingClientRect().top;f(Math.max(80,Math.floor((null!=(t=null==(e=window.visualViewport)?void 0:e.height)?t:window.innerHeight)-l-(i+o))))};a();let l=new ResizeObserver(()=>{a()});try{l.observe(document.body)}catch(e){}return window.addEventListener("resize",a),null==(e=window.visualViewport)||e.addEventListener("resize",a),null==(t=window.visualViewport)||t.addEventListener("scroll",a),window.addEventListener("scroll",a,!0),()=>{var e,t;l.disconnect(),window.removeEventListener("resize",a),null==(e=window.visualViewport)||e.removeEventListener("resize",a),null==(t=window.visualViewport)||t.removeEventListener("scroll",a),window.removeEventListener("scroll",a,!0)}},[n,i,o]),(0,t.jsx)("tbody",{ref:m,className:(0,r.cn)("block overflow-y-auto [&_tr:last-child]:border-b-0 [&_tr:last-child_td]:border-b-0 [&_tr]:table [&_tr]:w-full [&_tr]:table-fixed",s),style:n&&void 0!==p?{...c,maxHeight:p}:c,...d})});i.displayName="TableBody";let o=l.forwardRef((e,a)=>{let{className:l,hoverable:s=!0,...n}=e;return(0,t.jsx)("tr",{ref:a,className:(0,r.cn)("border-b transition-colors [&>td]:transition-colors data-[state=selected]:[&>td]:!bg-[var(--ds-item-active)]",s&&"group/table-row",l),...n})});o.displayName="TableRow";let c=l.forwardRef((e,a)=>{let{className:l,...s}=e;return(0,t.jsx)("th",{ref:a,className:(0,r.cn)("h-10 border-b border-[var(--border-subtle)] bg-[var(--surface-2)] px-3 text-left align-middle text-[14px] font-medium !text-[var(--ds-text)] text-muted-foreground",l),...s})});c.displayName="TableHead";let d=l.forwardRef((e,a)=>{let{className:l,...s}=e;return(0,t.jsx)("td",{ref:a,className:(0,r.cn)("border-x-0 border-b border-t-0 border-solid border-[var(--border-subtle)] p-3 align-middle transition-colors group-has-[td:hover]/table-row:!bg-[var(--ds-item-hover)]",l),...s})});function u(e){let{rows:l,columns:u,getRowKey:m,className:p,rowClassName:f,headerRowClassName:x,emptyText:b,emptyNode:h,bodyProps:g}=e;return(0,t.jsx)("div",{className:(0,r.cn)("overflow-hidden border border-[var(--ds-border)]",p),children:(0,t.jsxs)(s,{children:[(0,t.jsx)(n,{children:(0,t.jsx)(o,{className:(0,r.cn)("bg-[var(--ds-main-tint)] hover:bg-[var(--ds-main-tint)]",x),children:u.map(e=>(0,t.jsx)(c,{className:e.headerClassName,children:e.title},e.key))})}),(0,t.jsx)(i,{...g,children:l.length?l.map(e=>(0,t.jsx)(o,{className:"function"==typeof f?f(e):f,children:u.map(a=>(0,t.jsx)(d,{className:a.cellClassName,children:a.render(e)},a.key))},m(e))):(0,t.jsx)(o,{hoverable:!1,children:(0,t.jsx)(d,{colSpan:u.length,className:"py-6",children:null!=h?h:(0,t.jsx)(a.Empty,{text:b})})})})]})})}d.displayName="TableCell"},62427,e=>{"use strict";e.s(["clearRuntimeMcpItemConfig",()=>w,"deleteRuntimeMcp",()=>m,"deleteRuntimeSkill",()=>j,"deleteRuntimeTool",()=>u,"exportRuntimeMcpUrl",()=>f,"exportRuntimeSkillUrl",()=>k,"exportRuntimeToolUrl",()=>p,"importRuntimeMcp",()=>b,"importRuntimeTool",()=>x,"installCloudSkill",()=>N,"listBaseSkills",()=>s,"listCloudSkillCatalog",()=>C,"listInstalledSkills",()=>n,"listInstalledTools",()=>r,"listMcpServers",()=>l,"listRuntimeMcpPackages",()=>d,"listRuntimeTools",()=>c,"loadBaseSkillMd",()=>i,"loadRemoteMcpJson",()=>h,"loadRuntimeMcpItemConfig",()=>v,"saveBaseSkillMd",()=>o,"saveRemoteMcpJson",()=>g,"saveRuntimeMcpItemConfig",()=>y]);var t=e.i(29250),a=e.i(36845);async function l(e,l,r){let s=await (0,t.get)((0,a.buildMcpServersListUrl)(e,l,r));return{servers:Array.isArray(s.servers)?s.servers:[]}}async function r(e,l,r){let s=await (0,t.get)((0,a.buildToolInstalledListUrl)(e,l,r));return{tools:Array.isArray(s.tools)?s.tools:[]}}async function s(e,l,r){let s=await (0,t.get)((0,a.buildSkillBaseListUrl)(e,l,r));return{skills:Array.isArray(s.skills)?s.skills:[]}}async function n(e,l,r){let s=await (0,t.get)((0,a.buildSkillInstalledListUrl)(e,l,r));return{skills:Array.isArray(s.skills)?s.skills:[]}}async function i(e,l,r,s){return(0,t.get)((0,a.buildBaseSkillMdUrl)(e,l,r,s))}async function o(e,l,r,s,n){await (0,t.put)((0,a.buildBaseSkillMdUrl)(e,l,r,s),{content:n})}async function c(e,l,r){let s=await (0,t.get)((0,a.buildToolsRuntimeFilesUrl)(e,l,r));return{runtimeToolsDir:"string"==typeof s.runtimeToolsDir?s.runtimeToolsDir:"",items:Array.isArray(s.items)?s.items.filter(e=>!!(e&&e.id)):[]}}async function d(e,l,r){let s=await (0,t.get)((0,a.buildMcpRuntimeFilesUrl)(e,l,r));return{mcpRuntimeDir:"string"==typeof s.mcpRuntimeDir?s.mcpRuntimeDir:"",items:Array.isArray(s.items)?s.items.filter(e=>!!(e&&e.id)):[]}}async function u(e,l,r,s){return(0,t.del)((0,a.buildToolsRuntimeDeleteUrl)(e,l,r,s))}async function m(e,l,r,s){return(0,t.del)((0,a.buildMcpRuntimeDeleteUrl)(e,l,r,s))}function p(e,t,l,r){return(0,a.buildToolsRuntimeExportUrl)(e,t,l,r)}function f(e,t,l,r){return(0,a.buildMcpRuntimeExportUrl)(e,t,l,r)}async function x(e,l,r,s){let n=new FormData;return n.append("file",s),(0,t.post)((0,a.buildToolsRuntimeImportUrl)(e,l,r),n,{type:"file"})}async function b(e,l,r,s){let n=new FormData;return n.append("file",s),(0,t.post)((0,a.buildMcpRuntimeImportUrl)(e,l,r),n,{type:"file"})}async function h(e,l,r){return(0,t.get)((0,a.buildRemoteMcpJsonUrl)(e,l,r))}async function g(e,l,r,s){await (0,t.post)((0,a.buildRemoteMcpJsonUrl)(e,l,r),{content:s})}async function v(e,l,r,s,n){return(0,t.get)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,r,s,n))}async function y(e,l,r,s,n,i){await (0,t.put)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,r,s,n),{server:i})}async function w(e,l,r,s,n){await (0,t.del)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,r,s,n))}async function j(e,l,r,s){return(0,t.del)((0,a.buildSkillsRuntimeDeleteUrl)(e,l,r,s))}function k(e,t,l,r){return(0,a.buildSkillsRuntimeExportUrl)(e,t,l,r)}async function C(e,l,r,s,n,i){let o=await (0,t.get)((0,a.buildCloudSkillCatalogUrl)(e,l,r,s,n,i));return{items:Array.isArray(o.items)?o.items:[],totalPages:Number(o.totalPages||0)}}async function N(e,l,r,s){await (0,t.post)((0,a.buildCloudSkillInstallUrl)(e,l,r),{id:s})}},55242,e=>{"use strict";e.s(["AppDialog",()=>s]);var t=e.i(18050),a=e.i(71645),l=e.i(76639),r=e.i(75157);function s(e){let{open:s,onOpenChange:n,title:i,children:o,footer:c,width:d="max-w-3xl",minHeight:u}=e,m=(0,a.useId)();return(0,t.jsx)(l.Dialog,{open:s,onOpenChange:n,children:(0,t.jsxs)(l.DialogContent,{"aria-labelledby":m,className:(0,r.cn)(d,u?"!min-h-[--min-h]":""),style:u?{"--min-h":u}:void 0,children:[(0,t.jsxs)(l.DialogHeader,{children:[(0,t.jsx)(l.DialogTitle,{id:m,children:i}),(0,t.jsx)(l.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(l.DialogBody,{className:"!px-4 !py-3",children:o}),c?(0,t.jsx)("div",{className:"flex flex-shrink-0 justify-end gap-2 border-t border-[var(--ds-border)] bg-[var(--ds-sidebar)] px-4 py-3",children:c}):null]})})}},53925,e=>{"use strict";e.s(["ResourceImportDialog",()=>u],53925);var t=e.i(18050),a=e.i(71645),l=e.i(72064),r=e.i(75157),s=e.i(19455);function n(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(1)," KB"):"".concat((e/1048576).toFixed(1)," MB")}function i(e){let{uploadUrl:i,accept:o,disabled:c=!1,multiple:d=!1,maxFileSize:u=0x3200000,autoUpload:m=!1,method:p="POST",transport:f="xhr",fieldName:x="file",headers:b,extraFormData:h,autoRetryTimes:g=0,autoRetryDelayMs:v=800,selectionOnly:y=!1,className:w,emptyTitle:j="点击或拖拽文件到此处",emptyHint:k="支持上传文件",onFilesChange:C,onUploadSuccess:N,onUploadError:S,onValidationError:R}=e,T=a.useId(),U=a.useRef(null),M=a.useRef(new Map),A=a.useRef(new Map),B=a.useRef([]),[D,L]=a.useState(!1),[z,E]=a.useState([]),I=a.useMemo(()=>o?o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean):[],[o]);a.useEffect(()=>{B.current=z,null==C||C(z)},[z,C]),a.useEffect(()=>()=>{for(let e of M.current.values())e.abort();for(let e of A.current.values())e.abort();for(let e of B.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl)},[]);let O=a.useCallback((e,t)=>{E(a=>a.map(a=>a.id===e?{...a,...t}:a))},[]),_=a.useCallback(async(e,t)=>{let a=B.current.find(t=>t.id===e);if(!a||c)return;O(e,{status:t>0?"retrying":"uploading",progress:0,error:"",retryCount:t});let l=new FormData;if(h)for(let[e,t]of Object.entries(h))l.append(e,t);l.append(x,a.file);try{let t="";if("fetch"===f){let a=new AbortController;A.current.set(e,a);let r=await fetch(i,{method:p,headers:b,body:l,signal:a.signal}),s=await r.text();try{t=s?JSON.parse(s):""}catch(e){t=s}if(!r.ok)throw Error("上传失败:".concat(r.status," ").concat(r.statusText))}else t=await new Promise((t,a)=>{let r=new XMLHttpRequest;if(M.current.set(e,r),r.open(p,i,!0),b)for(let[e,t]of Object.entries(b))r.setRequestHeader(e,t);r.upload.onprogress=t=>{if(!t.lengthComputable)return;let a=Math.min(100,Math.round(t.loaded/t.total*100));O(e,{progress:a})},r.onerror=()=>a(Error("网络异常,上传失败")),r.onabort=()=>a(Error("__ABORTED__")),r.onload=()=>{r.status>=200&&r.status<300?t(function(e){let t=e.responseText||"";try{return JSON.parse(t)}catch(e){return t}}(r)):a(Error("上传失败:".concat(r.status," ").concat(r.statusText)))},r.send(l)});O(e,{status:"success",progress:100,error:""});let a=B.current.find(t=>t.id===e);a&&(null==N||N(a,t))}catch(r){let a=r instanceof Error?r.message:String(r);if("__ABORTED__"===a)return void O(e,{status:"selected",progress:0,error:""});if(t<g){O(e,{status:"retrying",error:"重试中(".concat(t+1,"/").concat(g,")")}),await new Promise(e=>window.setTimeout(e,v)),await _(e,t+1);return}O(e,{status:"error",error:a});let l=B.current.find(t=>t.id===e);l&&(null==S||S(l,a))}finally{M.current.delete(e),A.current.delete(e)}},[v,g,c,h,x,b,p,S,N,f,O,i]),P=a.useCallback(e=>{_(e,0)},[_]),F=a.useCallback(e=>{var t,a;null==(t=M.current.get(e))||t.abort(),null==(a=A.current.get(e))||a.abort()},[]),H=a.useCallback(()=>{for(let e of B.current)("selected"===e.status||"error"===e.status)&&P(e.id)},[P]),K=a.useCallback(e=>{if(c||!e.length)return;let t=new Set(B.current.map(e=>"".concat(e.file.name,"::").concat(e.file.size))),a=[];for(let l of e){let e="".concat(l.name,"::").concat(l.size);if(!t.has(e)){if(!function(e,t){if(!t.length)return!0;let a=e.name.toLowerCase(),l=(e.type||"").toLowerCase();return t.some(e=>e.startsWith(".")?a.endsWith(e):e.endsWith("/*")?l.startsWith("".concat(e.slice(0,-1))):l===e)}(l,I)){null==R||R("文件类型不支持:".concat(l.name));continue}if(l.size>u){null==R||R("文件过大(最大 ".concat(n(u),"):").concat(l.name));continue}t.add(e),a.push({id:"".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),file:l,status:"selected",progress:0,error:"",retryCount:0,previewUrl:l.type.startsWith("image/")?URL.createObjectURL(l):""})}}if(!a.length)return;let l=d?[...B.current,...a]:[a[a.length-1]];if(!d)for(let e of B.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);if(E(l),m&&!y)for(let e of a)P(e.id)},[I,m,c,u,d,R,y,P]),V=a.useCallback(e=>{let t=e.target.files;t&&(K(Array.from(t)),e.target.value="")},[K]),J=a.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation(),L(!1),c||K(Array.from(null!=(t=e.dataTransfer.files)?t:[]))},[K,c]);return(0,t.jsxs)("div",{className:(0,r.cn)("flex min-h-0 w-full flex-col gap-3",w),children:[(0,t.jsx)("input",{ref:U,id:T,type:"file",hidden:!0,accept:o,multiple:d,disabled:c,onChange:V}),(0,t.jsxs)("label",{htmlFor:T,onDragOver:e=>{e.preventDefault(),c||L(!0)},onDragLeave:e=>{e.preventDefault(),L(!1)},onDrop:J,className:(0,r.cn)("flex min-h-[124px] cursor-pointer flex-col items-center justify-center gap-1 rounded-lg border border-dashed border-[var(--ds-border)] px-4 py-6 text-center transition-colors hover:border-[var(--ds-border-hover)] hover:bg-[var(--ds-main-tint)]",D&&"bg-[var(--ds-accent)]/5 border-[var(--ds-accent)]",c&&"cursor-not-allowed opacity-60"),children:[(0,t.jsx)(l.default,{name:"Upload",size:20,className:"text-[var(--ds-muted)]"}),(0,t.jsx)("div",{className:"text-[var(--ds-text)]",children:j}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:k})]}),z.length?(0,t.jsx)("div",{className:"space-y-2",children:z.map(e=>(0,t.jsx)("div",{className:"rounded-md border border-[var(--ds-border)] p-2.5",children:(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[var(--ds-text)]",children:e.file.name}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:n(e.file.size)}),e.previewUrl?(0,t.jsx)("img",{src:e.previewUrl,alt:e.file.name,className:"mt-2 h-14 w-14 rounded object-cover"}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsx)("div",{className:"mt-2 h-1.5 w-full overflow-hidden rounded bg-[var(--ds-main-tint)]",children:(0,t.jsx)("div",{className:"h-full bg-[var(--ds-accent)] transition-all",style:{width:"".concat(e.progress,"%")}})}):null,"error"===e.status?(0,t.jsx)("div",{className:"mt-1 text-[var(--ds-danger)]",children:e.error||"上传失败"}):null]}),y?null:(0,t.jsxs)("div",{className:"flex items-center gap-1",children:["success"===e.status?(0,t.jsx)(l.default,{name:"CheckCircle2",size:16,className:"text-[var(--ds-accent)]"}):null,"selected"===e.status||"error"===e.status?(0,t.jsxs)(s.Button,{type:"button",size:"sm",variant:"outline",disabled:c,onClick:()=>P(e.id),children:["error"===e.status?(0,t.jsx)(l.default,{name:"RefreshCw",size:14,className:"mr-1"}):null,"error"===e.status?"重试":"上传"]}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsxs)(s.Button,{type:"button",size:"sm",variant:"outline",onClick:()=>F(e.id),children:[(0,t.jsx)(l.default,{name:"XCircle",size:14,className:"mr-1"}),"取消"]}):null]})]})},e.id))}):null,!y&&!m&&z.some(e=>"selected"===e.status||"error"===e.status)?(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(s.Button,{type:"button",size:"sm",onClick:H,disabled:c,children:"上传"})}):null]})}var o=e.i(76639),c=e.i(13354),d=e.i(29250);function u(e){let{open:l,onOpenChange:r,title:n,description:u,uploadUrl:m,resetKey:p}=e,[f,x]=(0,a.useState)(!1),[b,h]=(0,a.useState)(null),g=(0,a.useCallback)(()=>{r(!1),h(null)},[r]),v=(0,a.useCallback)(async()=>{if(!b)return void c.appToast.info("请先选择 zip 文件");let e=new FormData;e.append("file",b),x(!0);try{let t=await (0,d.bridgeFetch)(m,{method:"POST",body:e}),a=Number(t.imported||0),l=Number(t.overwritten||0),r=Array.isArray(t.rejected)?t.rejected.length:0;c.appToast.success("导入完成:导入 ".concat(a,",覆盖 ").concat(l)+(r>0?",拒绝 ".concat(r):"")),g()}catch(e){c.appToast.error("导入失败:".concat(e instanceof Error?e.message:String(e)))}finally{x(!1)}},[g,b,m]);return(0,t.jsx)(o.Dialog,{open:l,onOpenChange:e=>{r(e),e||h(null)},children:(0,t.jsxs)(o.DialogContent,{className:"flex min-h-[320px] max-w-[560px] flex-col",children:[(0,t.jsxs)(o.DialogHeader,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(o.DialogTitle,{children:n}),(0,t.jsx)(o.DialogDescription,{children:u})]}),(0,t.jsx)(o.DialogClose,{className:"sidebar-icon-btn","aria-label":"关闭",onClick:g,children:"✕"})]}),(0,t.jsxs)("div",{className:"m-3 flex flex-1 flex-col gap-3",children:[(0,t.jsx)(i,{uploadUrl:m,accept:".zip,application/zip",maxFileSize:0x3200000,multiple:!1,disabled:f,selectionOnly:!0,emptyTitle:"点击或拖拽 zip 文件到此处",emptyHint:"支持 .zip 格式,最大 50MB",onFilesChange:e=>{var t,a;h(null!=(a=null==(t=e[0])?void 0:t.file)?a:null)},onValidationError:e=>{c.appToast.info(e)}},"".concat(l?"open":"closed","-").concat(null!=p?p:m)),(0,t.jsxs)("div",{className:"mt-auto flex justify-end pt-2",children:[(0,t.jsx)(s.Button,{className:"mr-[12px]",type:"button",variant:"plain-outline",size:"lg",onClick:g,children:"取消"}),(0,t.jsx)(s.Button,{type:"button",size:"lg",variant:"default",disabled:f||null==b,onClick:()=>void v(),children:f?"导入中…":"确定"})]})]})]})})}},39721,e=>{"use strict";e.s(["SkillsManageView",()=>A],39721);var t=e.i(18050),a=e.i(71645),l=e.i(65934),r=e.i(87243),s=e.i(13354),n=e.i(50711),i=e.i(51419),o=e.i(19455),c=e.i(72064),d=e.i(92715),u=e.i(93479),m=e.i(75157);function p(e){let{className:a,...l}=e;return(0,t.jsx)("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:(0,m.cn)("flex w-full justify-end",a),...l})}let f=a.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("ul",{ref:a,"data-slot":"pagination-content",className:(0,m.cn)("flex flex-row flex-wrap items-center justify-end gap-1",l),...r})});f.displayName="PaginationContent";let x=a.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("li",{ref:a,"data-slot":"pagination-item",className:(0,m.cn)("",l),...r})});x.displayName="PaginationItem",a.forwardRef((e,a)=>{let{className:l,isActive:r,size:s="icon",...n}=e;return(0,t.jsx)("a",{ref:a,"aria-current":r?"page":void 0,"data-slot":"pagination-link","data-active":r?"true":void 0,className:(0,m.cn)((0,o.buttonVariants)({variant:r?"outline":"ghost",size:s}),l),...n})}).displayName="PaginationLink";var b=e.i(62427),h=e.i(2839);function g(e){let{active:l,wsUrl:r,apiBase:n,agent:i,onAfterInstall:m,className:g}=e,[v,y]=(0,a.useState)(""),[w,j]=(0,a.useState)(1),[k,C]=(0,a.useState)(0),[N,S]=(0,a.useState)([]),[R,T]=(0,a.useState)(!1),[U,M]=(0,a.useState)(""),[A,B]=(0,a.useState)({}),D=(0,a.useRef)(0),L=(0,a.useCallback)(async()=>{let e=++D.current;T(!0),M("");try{let t=await (0,b.listCloudSkillCatalog)(r,n,i,v,w,10);if(e!==D.current)return;let a=Array.isArray(t.items)?t.items:[],l=[];for(let e of a)e&&"object"==typeof e&&e.id&&l.push({id:String(e.id),title:String(e.title||""),skillName:String(e.skillName||""),description:"string"==typeof e.description?e.description:"",installed:!!e.installed});S(l),C(t.totalPages)}catch(t){if(e!==D.current)return;S([]),C(0),M(t instanceof Error?t.message:String(t))}finally{e===D.current&&T(!1)}},[r,n,i,v,w]);(0,a.useEffect)(()=>{if(!l){y(""),j(1),C(0),S([]),M(""),B({}),D.current+=1;return}L()},[l,L]),(0,a.useMemo)(()=>{if(R)return"加载中…";if(U)return"加载失败:".concat(U);let e=N.reduce((e,t)=>e+ +!!t.installed,0);return"已安装 ".concat(e," 项")},[R,U,N]);let z=(0,a.useCallback)(async(e,t)=>{B(t=>({...t,[e]:!0}));try{await (0,b.installCloudSkill)(r,n,i,e),s.appToast.success("云端技能已安装:".concat(t)),await L(),null==m||m()}catch(e){s.appToast.error("安装失败:".concat(e instanceof Error?e.message:String(e)))}finally{B(t=>{let a={...t};return delete a[e],a})}},[r,n,i,L,m]);if((0,a.useCallback)(e=>{j(1),y(e)},[]),!l)return null;let E=k>0?"第 ".concat(w,"/").concat(k," 页"):"第 0/0 页",I=R||w<=1,O=R||k<=0||w>=k,_=[{key:"name",title:"名称",headerClassName:"",cellClassName:" text-[var(--ds-text)]",render:e=>e.skillName?"".concat(e.skillName):e.id},{key:"description",title:"详情",headerClassName:"",cellClassName:" text-[var(--ds-text)]",render:e=>(0,t.jsxs)(t.Fragment,{children:[e.title,e.description?" — ".concat(e.description):""]})},{key:"status",title:"状态",headerClassName:"",cellClassName:"whitespace-nowrap text-[var(--ds-text)]",render:e=>e.installed?"已安装":"未安装"},{key:"actions",title:"操作",headerClassName:"w-[96px] text-right ",cellClassName:"w-[116px] text-right",render:e=>{let a=!!A[e.id],l=!!e.installed;return!a&&l?"-":(0,t.jsx)(o.Button,{type:"button",size:"sm",variant:"outline",disabled:a||l,onClick:()=>void z(e.id,e.title||e.skillName||e.id),children:a?"安装中…":l?"已安装":"安装"})}}];return(0,t.jsx)("div",{className:g,children:(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(u.Input,{type:"search",value:v,onChange:e=>y(e.target.value),placeholder:"搜索名称 / 详情",className:"h-8 pl-8","aria-label":"搜索已安装 Skill"}),(0,t.jsx)(c.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-[var(--ds-muted)]","aria-hidden":!0})]}),(0,t.jsx)(d.AppTable,{rows:N,columns:_,getRowKey:e=>e.id,className:"min-h-0 flex-1 rounded-md",bodyProps:{viewportPaginationReserve:64},emptyNode:R?(0,t.jsx)(h.Loading,{text:"加载中…",className:"min-h-[200px]"}):void 0}),(0,t.jsx)(p,{className:"mx-0 w-full",children:(0,t.jsxs)(f,{className:"w-full flex-wrap justify-end gap-2",children:[(0,t.jsx)(x,{children:(0,t.jsxs)(o.Button,{type:"button",variant:"outline",size:"sm",disabled:I,className:"gap-1",onClick:()=>j(e=>Math.max(1,e-1)),"aria-label":"上一页",children:[(0,t.jsx)(c.default,{name:"ChevronLeft",size:16,className:"shrink-0"}),"上一页"]})}),(0,t.jsx)(x,{children:(0,t.jsx)("span",{className:"flex h-9 min-w-[6.5rem] items-center justify-center text-[var(--ds-muted)]",children:E})}),(0,t.jsx)(x,{children:(0,t.jsxs)(o.Button,{type:"button",variant:"outline",size:"sm",disabled:O,className:"gap-1",onClick:()=>j(e=>e+1),"aria-label":"下一页",children:["下一页",(0,t.jsx)(c.default,{name:"ChevronRight",size:16,className:"shrink-0",strokeWidth:1})]})})]})})]})})}var v=e.i(36845),y=e.i(53925);function w(e){let{open:a,onOpenChange:l,wsUrl:r,apiBase:s,agent:n}=e;return(0,t.jsx)(y.ResourceImportDialog,{open:a,onOpenChange:l,title:"导入 Skill zip",description:"选择一个 zip 文件并导入到 skills-runtime。",uploadUrl:(0,v.buildSkillsRuntimeImportUrl)(r,s,n),resetKey:n})}var j=e.i(55242);function k(e){let{open:l,onOpenChange:r,skillName:n,wsUrl:i,apiBase:c,agent:d,onSaved:u}=e,[m,p]=(0,a.useState)(""),[f,x]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!l||!n.trim())return;let e=!1;return x(!0),p(""),(0,b.loadBaseSkillMd)(i,c,d,n).then(t=>{e||p("string"==typeof t.content?t.content:"")}).catch(t=>{e||(s.appToast.error("加载 SKILL.md 失败:".concat(t instanceof Error?t.message:String(t))),r(!1))}).finally(()=>{e||x(!1)}),()=>{e=!0}},[l,n,i,c,d,r]);let v=(0,a.useCallback)(async()=>{if(n.trim()){g(!0);try{await (0,b.saveBaseSkillMd)(i,c,d,n,m),s.appToast.success("SKILL.md 已保存"),r(!1),null==u||u()}catch(e){s.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}finally{g(!1)}}},[n,i,c,d,m,r,u]);return(0,t.jsx)(j.AppDialog,{open:l,onOpenChange:r,title:"编辑 SKILL.md · /".concat(n),width:"max-w-4xl",minHeight:"420px",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:f||h,onClick:()=>r(!1),children:"取消"}),(0,t.jsx)(o.Button,{type:"button",size:"lg",disabled:f||h,onClick:()=>void v(),children:"保存"})]}),children:f?(0,t.jsx)("p",{className:"py-6 text-center text-[var(--ds-muted)]",children:"加载中…"}):(0,t.jsx)("textarea",{className:"focus-visible:ring-[var(--ds-accent)]/30 min-h-[320px] w-full resize-y rounded-md border border-[var(--ds-border)] bg-[var(--ds-bg)] p-3 leading-6 text-[var(--ds-text)] outline-none focus-visible:ring-2",spellCheck:!1,value:m,placeholder:"Markdown 源码…",onChange:e=>p(e.target.value)})})}var C=e.i(94055),N=e.i(94197);function S(e){let{items:l,saveBusy:r,onToggleEnabled:s,onEditBase:n,onExport:i,onRemove:o,className:m}=e,[p,f]=(0,a.useState)(""),x=(0,a.useMemo)(()=>l.filter(e=>(function(e,t){var a;let l=t.trim().toLowerCase();return!l||"".concat(e.name," ").concat(null!=(a=e.description)?a:"").toLowerCase().includes(l)})(e,p)),[l,p]),b=[{key:"name",title:"名称",headerClassName:"",cellClassName:"",render:e=>"/".concat(e.name)},{key:"description",title:"详情",headerClassName:"",cellClassName:"",render:e=>e.description||"-"},{key:"status",title:"状态",headerClassName:"w-[160px] ",cellClassName:"w-[160px] text-[var(--ds-text)]",render:e=>"base"===e.source?"基础":"已安装"},{key:"enabled",title:"启用/未启用",headerClassName:"w-[160px] text-right ",cellClassName:"w-[160px] py-2 text-right align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex items-center justify-end gap-2",children:(0,t.jsx)(C.AccentSwitch,{checked:e.enabled,disabled:r,onCheckedChange:t=>s(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] ",cellClassName:"w-[128px]",render:e=>(0,t.jsx)("div",{className:"inline-flex items-center justify-end gap-1",children:"base"===e.source?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(N.IconTooltipButton,{icon:"Edit",label:"编辑",ariaLabel:"编辑 ".concat(e.name),disabled:r,onClick:()=>n(e.name)}),(0,t.jsx)(N.IconTooltipButton,{icon:"Trash2",label:"系统技能不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:!0})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(N.IconTooltipButton,{icon:"Download",label:"导出",ariaLabel:"导出 ".concat(e.name),disabled:r,onClick:()=>i(e.name)}),(0,t.jsx)(N.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:r,onClick:()=>{o(e.name)}})]})})}],h=p.trim();return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(u.Input,{type:"search",value:p,onChange:e=>f(e.target.value),placeholder:"搜索名称 / 详情",className:"h-8 pl-8","aria-label":"搜索已安装 Skill"}),(0,t.jsx)(c.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)(d.AppTable,{rows:x,columns:b,getRowKey:e=>"skills:".concat(e.name),className:m,emptyText:h?"无匹配的 Skill":void 0})]})}var R=e.i(68499),T=e.i(56708);function U(e,t){var a,l,r;let s=(r=null!=(l=null!=(a=e.description)?a:e.whenToUse)?l:"")?r.length>100?r.slice(0,100):r:"";return{...e,id:e.name,label:"/".concat(e.name),description:s,isRuntime:t,canManage:e.canManage}}let M=[{value:"installed",label:"已安装Skill"},{value:"cloud_catalog",label:"Skill商店"}];function A(){let e=(0,l.useAppStore)(e=>e.wsUrl),d=(0,l.useAppStore)(e=>e.apiBase),u=(0,l.useAppStore)(e=>e.agentConfig),m=(0,l.useAppStore)(e=>e.patchAgentConfig),{currentAgent:p,loadAgentConfig:f}=(0,r.useSession)(),x=(0,n.usePersistAgentConfigField)("skills"),v=u.skills,[y,j]=(0,a.useState)([]),[C,N]=(0,a.useState)([]),[A,B]=(0,a.useState)(!1),[D,L]=(0,a.useState)(!1),[z,E]=(0,a.useState)(!1),[I,O]=(0,a.useState)("installed"),[_,P]=(0,a.useState)(!1),[F,H]=(0,a.useState)(""),[K,V]=(0,a.useState)(!1);(0,a.useEffect)(()=>{f()},[f]);let J=(0,a.useCallback)(async(e,t)=>{E(!0);try{await x(e,{silent:t})}finally{E(!1)}},[x]),W=(0,a.useCallback)(async()=>{j([]),B(!0);try{var t;let a=await (0,b.listBaseSkills)(e,d,p());j((null!=(t=a.skills)?t:[]).map(e=>U(e,!1)))}catch(e){j([]),s.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{B(!1)}},[e,d,p]),q=(0,a.useCallback)(async()=>{N([]),L(!0);try{var t;let a=await (0,b.listInstalledSkills)(e,d,p());N((null!=(t=a.skills)?t:[]).map(e=>U(e,!0)))}catch(e){N([]),s.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{L(!1)}},[e,d,p]),X=(0,a.useCallback)(async()=>{await Promise.all([W(),q()])},[W,q]),G=(0,a.useCallback)(async t=>{if(await (0,R.confirmAlertDialog)({title:"确认删除 Skill 包?",description:"Skill:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,b.deleteRuntimeSkill)(e,d,p(),t);let a=v.filter(e=>e!==t);m({skills:a}),await J(a,!0),await X()}catch(e){s.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[e,d,p,v,m,J,X]);(0,a.useEffect)(()=>{"installed"===I&&X()},[I,X]);let Q=(0,a.useCallback)(()=>{X()},[X]),Y=(0,a.useMemo)(()=>{let e=y.map(e=>({name:e.id,source:"base",description:e.description||"",enabled:v.includes(e.id)})),t=new Set(e.map(e=>e.name)),a=C.filter(e=>!t.has(e.id)).slice().sort((e,t)=>e.label.localeCompare(t.label)).map(e=>({name:e.id,source:"runtime",description:e.description||"",enabled:v.includes(e.id)}));return[...e.sort((e,t)=>e.name.localeCompare(t.name)),...a]},[y,C,v]),Z=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...v,e])].sort():v.filter(t=>t!==e);m({skills:a}),J(a,!0)},[v,m,J]),$=(0,a.useCallback)(t=>{window.open((0,b.exportRuntimeSkillUrl)(e,d,p(),t),"_blank","noopener")},[e,d,p]),ee=(0,a.useCallback)(e=>{H(e),V(!0)},[]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(T.ManageChromeHeaderActions,{children:(0,t.jsxs)(o.Button,{id:"btnAgentImportSkill",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>P(!0),children:[(0,t.jsx)(c.default,{name:"Import",size:16,className:"align-middle"}),"导入Skill"]})}),(0,t.jsxs)(i.AppTabs,{tabs:M,value:I,listVariant:"line",onChange:e=>O(e),children:[(0,t.jsx)(i.AppTabsPanel,{value:"installed",children:A||D?(0,t.jsx)(h.Loading,{text:"加载中…",className:"min-h-[200px]"}):(0,t.jsx)(S,{items:Y,saveBusy:z,onToggleEnabled:Z,onEditBase:ee,onExport:$,onRemove:G})}),(0,t.jsx)(i.AppTabsPanel,{value:"cloud_catalog",className:"flex min-h-0 flex-1 flex-col",children:(0,t.jsx)(g,{active:"cloud_catalog"===I,wsUrl:e,apiBase:d,agent:p(),onAfterInstall:Q,className:"min-h-0 flex-1"})})]}),(0,t.jsx)(w,{open:_,onOpenChange:e=>{P(e),e||X()},wsUrl:e,apiBase:d,agent:p()}),(0,t.jsx)(k,{open:K,onOpenChange:V,skillName:F,wsUrl:e,apiBase:d,agent:p(),onSaved:()=>void X()})]})}}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,92715,e=>{"use strict";e.s(["AppTable",()=>u],92715);var t=e.i(18050),a=e.i(85413),l=e.i(71645),s=e.i(75157);let r=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:a,className:(0,s.cn)("w-full caption-bottom border-collapse",l),...r})})});r.displayName="Table";let n=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("thead",{ref:a,className:(0,s.cn)("[&_tr]:table [&_tr]:w-full [&_tr]:table-fixed [&_tr]:border-b",l),...r})});n.displayName="TableHeader";let i=l.forwardRef((e,a)=>{let{className:r,viewportFit:n=!0,viewportReserveBottom:i=16,viewportPaginationReserve:o=0,style:c,...d}=e,u=l.useRef(null),m=l.useCallback(e=>{u.current=e,"function"==typeof a?a(e):a&&(a.current=e)},[a]),[p,f]=l.useState(void 0);return l.useLayoutEffect(()=>{var e,t;if(!n)return void f(void 0);let a=()=>{var e,t;let a=u.current;if(!a)return;let l=a.getBoundingClientRect().top;f(Math.max(80,Math.floor((null!=(t=null==(e=window.visualViewport)?void 0:e.height)?t:window.innerHeight)-l-(i+o))))};a();let l=new ResizeObserver(()=>{a()});try{l.observe(document.body)}catch(e){}return window.addEventListener("resize",a),null==(e=window.visualViewport)||e.addEventListener("resize",a),null==(t=window.visualViewport)||t.addEventListener("scroll",a),window.addEventListener("scroll",a,!0),()=>{var e,t;l.disconnect(),window.removeEventListener("resize",a),null==(e=window.visualViewport)||e.removeEventListener("resize",a),null==(t=window.visualViewport)||t.removeEventListener("scroll",a),window.removeEventListener("scroll",a,!0)}},[n,i,o]),(0,t.jsx)("tbody",{ref:m,className:(0,s.cn)("block overflow-y-auto [&_tr:last-child]:border-b-0 [&_tr:last-child_td]:border-b-0 [&_tr]:table [&_tr]:w-full [&_tr]:table-fixed",r),style:n&&void 0!==p?{...c,maxHeight:p}:c,...d})});i.displayName="TableBody";let o=l.forwardRef((e,a)=>{let{className:l,hoverable:r=!0,...n}=e;return(0,t.jsx)("tr",{ref:a,className:(0,s.cn)("border-b transition-colors [&>td]:transition-colors data-[state=selected]:[&>td]:!bg-[var(--ds-item-active)]",r&&"group/table-row",l),...n})});o.displayName="TableRow";let c=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("th",{ref:a,className:(0,s.cn)("h-10 border-b border-[var(--border-subtle)] bg-[var(--surface-2)] px-3 text-left align-middle text-[14px] font-medium !text-[var(--ds-text)] text-muted-foreground",l),...r})});c.displayName="TableHead";let d=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("td",{ref:a,className:(0,s.cn)("border-x-0 border-b border-t-0 border-solid border-[var(--border-subtle)] p-3 align-middle transition-colors group-has-[td:hover]/table-row:!bg-[var(--ds-item-hover)]",l),...r})});function u(e){let{rows:l,columns:u,getRowKey:m,className:p,rowClassName:f,headerRowClassName:x,emptyText:b,emptyNode:h,bodyProps:g}=e;return(0,t.jsx)("div",{className:(0,s.cn)("overflow-hidden border border-[var(--ds-border)]",p),children:(0,t.jsxs)(r,{children:[(0,t.jsx)(n,{children:(0,t.jsx)(o,{className:(0,s.cn)("bg-[var(--ds-main-tint)] hover:bg-[var(--ds-main-tint)]",x),children:u.map(e=>(0,t.jsx)(c,{className:e.headerClassName,children:e.title},e.key))})}),(0,t.jsx)(i,{...g,children:l.length?l.map(e=>(0,t.jsx)(o,{className:"function"==typeof f?f(e):f,children:u.map(a=>(0,t.jsx)(d,{className:a.cellClassName,children:a.render(e)},a.key))},m(e))):(0,t.jsx)(o,{hoverable:!1,children:(0,t.jsx)(d,{colSpan:u.length,className:"py-6",children:null!=h?h:(0,t.jsx)(a.Empty,{text:b})})})})]})})}d.displayName="TableCell"},62427,e=>{"use strict";e.s(["clearRuntimeMcpItemConfig",()=>w,"deleteRuntimeMcp",()=>m,"deleteRuntimeSkill",()=>j,"deleteRuntimeTool",()=>u,"exportRuntimeMcpUrl",()=>f,"exportRuntimeSkillUrl",()=>k,"exportRuntimeToolUrl",()=>p,"importRuntimeMcp",()=>b,"importRuntimeTool",()=>x,"installCloudSkill",()=>N,"listBaseSkills",()=>r,"listCloudSkillCatalog",()=>C,"listInstalledSkills",()=>n,"listInstalledTools",()=>s,"listMcpServers",()=>l,"listRuntimeMcpPackages",()=>d,"listRuntimeTools",()=>c,"loadBaseSkillMd",()=>i,"loadRemoteMcpJson",()=>h,"loadRuntimeMcpItemConfig",()=>v,"saveBaseSkillMd",()=>o,"saveRemoteMcpJson",()=>g,"saveRuntimeMcpItemConfig",()=>y]);var t=e.i(29250),a=e.i(36845);async function l(e,l,s){let r=await (0,t.get)((0,a.buildMcpServersListUrl)(e,l,s));return{servers:Array.isArray(r.servers)?r.servers:[]}}async function s(e,l,s){let r=await (0,t.get)((0,a.buildToolInstalledListUrl)(e,l,s));return{tools:Array.isArray(r.tools)?r.tools:[]}}async function r(e,l,s){let r=await (0,t.get)((0,a.buildSkillBaseListUrl)(e,l,s));return{skills:Array.isArray(r.skills)?r.skills:[]}}async function n(e,l,s){let r=await (0,t.get)((0,a.buildSkillInstalledListUrl)(e,l,s));return{skills:Array.isArray(r.skills)?r.skills:[]}}async function i(e,l,s,r){return(0,t.get)((0,a.buildBaseSkillMdUrl)(e,l,s,r))}async function o(e,l,s,r,n){await (0,t.put)((0,a.buildBaseSkillMdUrl)(e,l,s,r),{content:n})}async function c(e,l,s){let r=await (0,t.get)((0,a.buildToolsRuntimeFilesUrl)(e,l,s));return{runtimeToolsDir:"string"==typeof r.runtimeToolsDir?r.runtimeToolsDir:"",items:Array.isArray(r.items)?r.items.filter(e=>!!(e&&e.id)):[]}}async function d(e,l,s){let r=await (0,t.get)((0,a.buildMcpRuntimeFilesUrl)(e,l,s));return{mcpRuntimeDir:"string"==typeof r.mcpRuntimeDir?r.mcpRuntimeDir:"",items:Array.isArray(r.items)?r.items.filter(e=>!!(e&&e.id)):[]}}async function u(e,l,s,r){return(0,t.del)((0,a.buildToolsRuntimeDeleteUrl)(e,l,s,r))}async function m(e,l,s,r){return(0,t.del)((0,a.buildMcpRuntimeDeleteUrl)(e,l,s,r))}function p(e,t,l,s){return(0,a.buildToolsRuntimeExportUrl)(e,t,l,s)}function f(e,t,l,s){return(0,a.buildMcpRuntimeExportUrl)(e,t,l,s)}async function x(e,l,s,r){let n=new FormData;return n.append("file",r),(0,t.post)((0,a.buildToolsRuntimeImportUrl)(e,l,s),n,{type:"file"})}async function b(e,l,s,r){let n=new FormData;return n.append("file",r),(0,t.post)((0,a.buildMcpRuntimeImportUrl)(e,l,s),n,{type:"file"})}async function h(e,l,s){return(0,t.get)((0,a.buildRemoteMcpJsonUrl)(e,l,s))}async function g(e,l,s,r){await (0,t.post)((0,a.buildRemoteMcpJsonUrl)(e,l,s),{content:r})}async function v(e,l,s,r,n){return(0,t.get)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,s,r,n))}async function y(e,l,s,r,n,i){await (0,t.put)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,s,r,n),{server:i})}async function w(e,l,s,r,n){await (0,t.del)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,s,r,n))}async function j(e,l,s,r){return(0,t.del)((0,a.buildSkillsRuntimeDeleteUrl)(e,l,s,r))}function k(e,t,l,s){return(0,a.buildSkillsRuntimeExportUrl)(e,t,l,s)}async function C(e,l,s,r,n,i){let o=await (0,t.get)((0,a.buildCloudSkillCatalogUrl)(e,l,s,r,n,i));return{items:Array.isArray(o.items)?o.items:[],totalPages:Number(o.totalPages||0)}}async function N(e,l,s,r){await (0,t.post)((0,a.buildCloudSkillInstallUrl)(e,l,s),{id:r})}},55242,e=>{"use strict";e.s(["AppDialog",()=>r]);var t=e.i(18050),a=e.i(71645),l=e.i(76639),s=e.i(75157);function r(e){let{open:r,onOpenChange:n,title:i,children:o,footer:c,width:d="max-w-3xl",minHeight:u}=e,m=(0,a.useId)();return(0,t.jsx)(l.Dialog,{open:r,onOpenChange:n,children:(0,t.jsxs)(l.DialogContent,{"aria-labelledby":m,className:(0,s.cn)(d,u?"!min-h-[--min-h]":""),style:u?{"--min-h":u}:void 0,children:[(0,t.jsxs)(l.DialogHeader,{children:[(0,t.jsx)(l.DialogTitle,{id:m,children:i}),(0,t.jsx)(l.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(l.DialogBody,{className:"!px-4 !py-3",children:o}),c?(0,t.jsx)("div",{className:"flex flex-shrink-0 justify-end gap-2 border-t border-[var(--ds-border)] bg-[var(--ds-sidebar)] px-4 py-3",children:c}):null]})})}},53925,e=>{"use strict";e.s(["ResourceImportDialog",()=>u],53925);var t=e.i(18050),a=e.i(71645),l=e.i(72064),s=e.i(75157),r=e.i(19455);function n(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(1)," KB"):"".concat((e/1048576).toFixed(1)," MB")}function i(e){let{uploadUrl:i,accept:o,disabled:c=!1,multiple:d=!1,maxFileSize:u=0x3200000,autoUpload:m=!1,method:p="POST",transport:f="xhr",fieldName:x="file",headers:b,extraFormData:h,autoRetryTimes:g=0,autoRetryDelayMs:v=800,selectionOnly:y=!1,className:w,emptyTitle:j="点击或拖拽文件到此处",emptyHint:k="支持上传文件",onFilesChange:C,onUploadSuccess:N,onUploadError:S,onValidationError:R}=e,T=a.useId(),U=a.useRef(null),M=a.useRef(new Map),A=a.useRef(new Map),B=a.useRef([]),[D,L]=a.useState(!1),[z,E]=a.useState([]),I=a.useMemo(()=>o?o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean):[],[o]);a.useEffect(()=>{B.current=z,null==C||C(z)},[z,C]),a.useEffect(()=>()=>{for(let e of M.current.values())e.abort();for(let e of A.current.values())e.abort();for(let e of B.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl)},[]);let O=a.useCallback((e,t)=>{E(a=>a.map(a=>a.id===e?{...a,...t}:a))},[]),_=a.useCallback(async(e,t)=>{let a=B.current.find(t=>t.id===e);if(!a||c)return;O(e,{status:t>0?"retrying":"uploading",progress:0,error:"",retryCount:t});let l=new FormData;if(h)for(let[e,t]of Object.entries(h))l.append(e,t);l.append(x,a.file);try{let t="";if("fetch"===f){let a=new AbortController;A.current.set(e,a);let s=await fetch(i,{method:p,headers:b,body:l,signal:a.signal}),r=await s.text();try{t=r?JSON.parse(r):""}catch(e){t=r}if(!s.ok)throw Error("上传失败:".concat(s.status," ").concat(s.statusText))}else t=await new Promise((t,a)=>{let s=new XMLHttpRequest;if(M.current.set(e,s),s.open(p,i,!0),b)for(let[e,t]of Object.entries(b))s.setRequestHeader(e,t);s.upload.onprogress=t=>{if(!t.lengthComputable)return;let a=Math.min(100,Math.round(t.loaded/t.total*100));O(e,{progress:a})},s.onerror=()=>a(Error("网络异常,上传失败")),s.onabort=()=>a(Error("__ABORTED__")),s.onload=()=>{s.status>=200&&s.status<300?t(function(e){let t=e.responseText||"";try{return JSON.parse(t)}catch(e){return t}}(s)):a(Error("上传失败:".concat(s.status," ").concat(s.statusText)))},s.send(l)});O(e,{status:"success",progress:100,error:""});let a=B.current.find(t=>t.id===e);a&&(null==N||N(a,t))}catch(s){let a=s instanceof Error?s.message:String(s);if("__ABORTED__"===a)return void O(e,{status:"selected",progress:0,error:""});if(t<g){O(e,{status:"retrying",error:"重试中(".concat(t+1,"/").concat(g,")")}),await new Promise(e=>window.setTimeout(e,v)),await _(e,t+1);return}O(e,{status:"error",error:a});let l=B.current.find(t=>t.id===e);l&&(null==S||S(l,a))}finally{M.current.delete(e),A.current.delete(e)}},[v,g,c,h,x,b,p,S,N,f,O,i]),P=a.useCallback(e=>{_(e,0)},[_]),F=a.useCallback(e=>{var t,a;null==(t=M.current.get(e))||t.abort(),null==(a=A.current.get(e))||a.abort()},[]),H=a.useCallback(()=>{for(let e of B.current)("selected"===e.status||"error"===e.status)&&P(e.id)},[P]),K=a.useCallback(e=>{if(c||!e.length)return;let t=new Set(B.current.map(e=>"".concat(e.file.name,"::").concat(e.file.size))),a=[];for(let l of e){let e="".concat(l.name,"::").concat(l.size);if(!t.has(e)){if(!function(e,t){if(!t.length)return!0;let a=e.name.toLowerCase(),l=(e.type||"").toLowerCase();return t.some(e=>e.startsWith(".")?a.endsWith(e):e.endsWith("/*")?l.startsWith("".concat(e.slice(0,-1))):l===e)}(l,I)){null==R||R("文件类型不支持:".concat(l.name));continue}if(l.size>u){null==R||R("文件过大(最大 ".concat(n(u),"):").concat(l.name));continue}t.add(e),a.push({id:"".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),file:l,status:"selected",progress:0,error:"",retryCount:0,previewUrl:l.type.startsWith("image/")?URL.createObjectURL(l):""})}}if(!a.length)return;let l=d?[...B.current,...a]:[a[a.length-1]];if(!d)for(let e of B.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);if(E(l),m&&!y)for(let e of a)P(e.id)},[I,m,c,u,d,R,y,P]),V=a.useCallback(e=>{let t=e.target.files;t&&(K(Array.from(t)),e.target.value="")},[K]),J=a.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation(),L(!1),c||K(Array.from(null!=(t=e.dataTransfer.files)?t:[]))},[K,c]);return(0,t.jsxs)("div",{className:(0,s.cn)("flex min-h-0 w-full flex-col gap-3",w),children:[(0,t.jsx)("input",{ref:U,id:T,type:"file",hidden:!0,accept:o,multiple:d,disabled:c,onChange:V}),(0,t.jsxs)("label",{htmlFor:T,onDragOver:e=>{e.preventDefault(),c||L(!0)},onDragLeave:e=>{e.preventDefault(),L(!1)},onDrop:J,className:(0,s.cn)("flex min-h-[124px] cursor-pointer flex-col items-center justify-center gap-1 rounded-lg border border-dashed border-[var(--ds-border)] px-4 py-6 text-center transition-colors hover:border-[var(--ds-border-hover)] hover:bg-[var(--ds-main-tint)]",D&&"bg-[var(--ds-accent)]/5 border-[var(--ds-accent)]",c&&"cursor-not-allowed opacity-60"),children:[(0,t.jsx)(l.default,{name:"Upload",size:20,className:"text-[var(--ds-muted)]"}),(0,t.jsx)("div",{className:"text-[var(--ds-text)]",children:j}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:k})]}),z.length?(0,t.jsx)("div",{className:"space-y-2",children:z.map(e=>(0,t.jsx)("div",{className:"rounded-md border border-[var(--ds-border)] p-2.5",children:(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[var(--ds-text)]",children:e.file.name}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:n(e.file.size)}),e.previewUrl?(0,t.jsx)("img",{src:e.previewUrl,alt:e.file.name,className:"mt-2 h-14 w-14 rounded object-cover"}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsx)("div",{className:"mt-2 h-1.5 w-full overflow-hidden rounded bg-[var(--ds-main-tint)]",children:(0,t.jsx)("div",{className:"h-full bg-[var(--ds-accent)] transition-all",style:{width:"".concat(e.progress,"%")}})}):null,"error"===e.status?(0,t.jsx)("div",{className:"mt-1 text-[var(--ds-danger)]",children:e.error||"上传失败"}):null]}),y?null:(0,t.jsxs)("div",{className:"flex items-center gap-1",children:["success"===e.status?(0,t.jsx)(l.default,{name:"CheckCircle2",size:16,className:"text-[var(--ds-accent)]"}):null,"selected"===e.status||"error"===e.status?(0,t.jsxs)(r.Button,{type:"button",size:"sm",variant:"outline",disabled:c,onClick:()=>P(e.id),children:["error"===e.status?(0,t.jsx)(l.default,{name:"RefreshCw",size:14,className:"mr-1"}):null,"error"===e.status?"重试":"上传"]}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsxs)(r.Button,{type:"button",size:"sm",variant:"outline",onClick:()=>F(e.id),children:[(0,t.jsx)(l.default,{name:"XCircle",size:14,className:"mr-1"}),"取消"]}):null]})]})},e.id))}):null,!y&&!m&&z.some(e=>"selected"===e.status||"error"===e.status)?(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(r.Button,{type:"button",size:"sm",onClick:H,disabled:c,children:"上传"})}):null]})}var o=e.i(76639),c=e.i(13354),d=e.i(29250);function u(e){let{open:l,onOpenChange:s,title:n,description:u,uploadUrl:m,resetKey:p}=e,[f,x]=(0,a.useState)(!1),[b,h]=(0,a.useState)(null),g=(0,a.useCallback)(()=>{s(!1),h(null)},[s]),v=(0,a.useCallback)(async()=>{if(!b)return void c.appToast.info("请先选择 zip 文件");let e=new FormData;e.append("file",b),x(!0);try{let t=await (0,d.bridgeFetch)(m,{method:"POST",body:e}),a=Number(t.imported||0),l=Number(t.overwritten||0),s=Array.isArray(t.rejected)?t.rejected.length:0;c.appToast.success("导入完成:导入 ".concat(a,",覆盖 ").concat(l)+(s>0?",拒绝 ".concat(s):"")),g()}catch(e){c.appToast.error("导入失败:".concat(e instanceof Error?e.message:String(e)))}finally{x(!1)}},[g,b,m]);return(0,t.jsx)(o.Dialog,{open:l,onOpenChange:e=>{s(e),e||h(null)},children:(0,t.jsxs)(o.DialogContent,{className:"flex min-h-[320px] max-w-[560px] flex-col",children:[(0,t.jsxs)(o.DialogHeader,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(o.DialogTitle,{children:n}),(0,t.jsx)(o.DialogDescription,{children:u})]}),(0,t.jsx)(o.DialogClose,{className:"sidebar-icon-btn","aria-label":"关闭",onClick:g,children:"✕"})]}),(0,t.jsxs)("div",{className:"m-3 flex flex-1 flex-col gap-3",children:[(0,t.jsx)(i,{uploadUrl:m,accept:".zip,application/zip",maxFileSize:0x3200000,multiple:!1,disabled:f,selectionOnly:!0,emptyTitle:"点击或拖拽 zip 文件到此处",emptyHint:"支持 .zip 格式,最大 50MB",onFilesChange:e=>{var t,a;h(null!=(a=null==(t=e[0])?void 0:t.file)?a:null)},onValidationError:e=>{c.appToast.info(e)}},"".concat(l?"open":"closed","-").concat(null!=p?p:m)),(0,t.jsxs)("div",{className:"mt-auto flex justify-end pt-2",children:[(0,t.jsx)(r.Button,{className:"mr-[12px]",type:"button",variant:"plain-outline",size:"lg",onClick:g,children:"取消"}),(0,t.jsx)(r.Button,{type:"button",size:"lg",variant:"default",disabled:f||null==b,onClick:()=>void v(),children:f?"导入中…":"确定"})]})]})]})})}},39721,e=>{"use strict";e.s(["SkillsManageView",()=>B],39721);var t=e.i(18050),a=e.i(71645),l=e.i(65934),s=e.i(87243),r=e.i(13354),n=e.i(50711),i=e.i(51419),o=e.i(19455),c=e.i(72064),d=e.i(92715),u=e.i(93479),m=e.i(75157);function p(e){let{className:a,...l}=e;return(0,t.jsx)("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:(0,m.cn)("flex w-full justify-end",a),...l})}let f=a.forwardRef((e,a)=>{let{className:l,...s}=e;return(0,t.jsx)("ul",{ref:a,"data-slot":"pagination-content",className:(0,m.cn)("flex flex-row flex-wrap items-center justify-end gap-1",l),...s})});f.displayName="PaginationContent";let x=a.forwardRef((e,a)=>{let{className:l,...s}=e;return(0,t.jsx)("li",{ref:a,"data-slot":"pagination-item",className:(0,m.cn)("",l),...s})});x.displayName="PaginationItem",a.forwardRef((e,a)=>{let{className:l,isActive:s,size:r="icon",...n}=e;return(0,t.jsx)("a",{ref:a,"aria-current":s?"page":void 0,"data-slot":"pagination-link","data-active":s?"true":void 0,className:(0,m.cn)((0,o.buttonVariants)({variant:s?"outline":"ghost",size:r}),l),...n})}).displayName="PaginationLink";var b=e.i(62427),h=e.i(2839);function g(e){let{active:l,wsUrl:s,apiBase:n,agent:i,onAfterInstall:m,className:g}=e,[v,y]=(0,a.useState)(""),[w,j]=(0,a.useState)(1),[k,C]=(0,a.useState)(0),[N,S]=(0,a.useState)([]),[R,T]=(0,a.useState)(!1),[U,M]=(0,a.useState)({}),A=(0,a.useRef)(0),B=(0,a.useCallback)(async()=>{let e=++A.current;T(!0);try{let t=await (0,b.listCloudSkillCatalog)(s,n,i,v,w,10);if(e!==A.current)return;let a=Array.isArray(t.items)?t.items:[],l=[];for(let e of a)e&&"object"==typeof e&&e.id&&l.push({id:String(e.id),title:String(e.title||""),skillName:String(e.skillName||""),description:"string"==typeof e.description?e.description:"",installed:!!e.installed});S(l),C(t.totalPages)}catch(t){if(e!==A.current)return;S([]),C(0)}finally{e===A.current&&T(!1)}},[s,n,i,v,w]);(0,a.useEffect)(()=>{if(!l){y(""),j(1),C(0),S([]),M({}),A.current+=1;return}B()},[l,B]);let D=(0,a.useCallback)(async(e,t)=>{M(t=>({...t,[e]:!0}));try{await (0,b.installCloudSkill)(s,n,i,e),r.appToast.success("云端技能已安装:".concat(t)),await B(),null==m||m()}catch(e){r.appToast.error("安装失败:".concat(e instanceof Error?e.message:String(e)))}finally{M(t=>{let a={...t};return delete a[e],a})}},[s,n,i,B,m]),L=(0,a.useCallback)(e=>{j(1),y(e)},[]);if(!l)return null;let z=k>0?"第 ".concat(w,"/").concat(k," 页"):"第 0/0 页",E=R||w<=1,I=R||k<=0||w>=k,O=[{key:"name",title:"名称",headerClassName:"",cellClassName:" text-[var(--ds-text)]",render:e=>{let a=e.skillName||e.id;return(0,t.jsx)("span",{className:"inline-flex items-center gap-2",children:(0,t.jsx)("span",{children:a})})}},{key:"description",title:"详情",headerClassName:"",cellClassName:" text-[var(--ds-text)]",render:e=>(0,t.jsxs)(t.Fragment,{children:[e.title,e.description?" — ".concat(e.description):""]})},{key:"status",title:"状态",headerClassName:"",cellClassName:"whitespace-nowrap text-[var(--ds-text)]",render:e=>e.installed?"已安装":"未安装"},{key:"actions",title:"操作",headerClassName:"w-[96px] text-right ",cellClassName:"w-[116px] text-right",render:e=>{let a=!!U[e.id],l=!!e.installed;return!a&&l?"-":(0,t.jsx)(o.Button,{type:"button",size:"sm",variant:"outline",disabled:a||l,onClick:()=>void D(e.id,e.title||e.skillName||e.id),children:a?"安装中…":l?"已安装":"安装"})}}];return(0,t.jsx)("div",{className:g,children:(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(u.Input,{type:"search",value:v,onChange:e=>L(e.target.value),placeholder:"搜索名称 / 详情",className:"h-8 pl-8","aria-label":"搜索已安装 Skill"}),(0,t.jsx)(c.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-[var(--ds-muted)]","aria-hidden":!0})]}),(0,t.jsx)(d.AppTable,{rows:N,columns:O,getRowKey:e=>e.id,className:"min-h-0 flex-1 rounded-md",bodyProps:{viewportPaginationReserve:64},emptyNode:R?(0,t.jsx)(h.Loading,{text:"加载中…",className:"min-h-[200px]"}):void 0}),(0,t.jsx)(p,{className:"mx-0 w-full",children:(0,t.jsxs)(f,{className:"w-full flex-wrap justify-end gap-2",children:[(0,t.jsx)(x,{children:(0,t.jsxs)(o.Button,{type:"button",variant:"outline",size:"sm",disabled:E,className:"gap-1",onClick:()=>j(e=>Math.max(1,e-1)),"aria-label":"上一页",children:[(0,t.jsx)(c.default,{name:"ChevronLeft",size:16,className:"shrink-0"}),"上一页"]})}),(0,t.jsx)(x,{children:(0,t.jsx)("span",{className:"flex h-9 min-w-[6.5rem] items-center justify-center text-[var(--ds-muted)]",children:z})}),(0,t.jsx)(x,{children:(0,t.jsxs)(o.Button,{type:"button",variant:"outline",size:"sm",disabled:I,className:"gap-1",onClick:()=>j(e=>e+1),"aria-label":"下一页",children:["下一页",(0,t.jsx)(c.default,{name:"ChevronRight",size:16,className:"shrink-0",strokeWidth:1})]})})]})})]})})}var v=e.i(36845),y=e.i(53925);function w(e){let{open:a,onOpenChange:l,wsUrl:s,apiBase:r,agent:n}=e;return(0,t.jsx)(y.ResourceImportDialog,{open:a,onOpenChange:l,title:"导入 Skill zip",description:"选择一个 zip 文件并导入到 skills-runtime。",uploadUrl:(0,v.buildSkillsRuntimeImportUrl)(s,r,n),resetKey:n})}var j=e.i(55242);function k(e){let{open:l,onOpenChange:s,skillName:n,wsUrl:i,apiBase:c,agent:d,onSaved:u}=e,[m,p]=(0,a.useState)(""),[f,x]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!l||!n.trim())return;let e=!1;return x(!0),p(""),(0,b.loadBaseSkillMd)(i,c,d,n).then(t=>{e||p("string"==typeof t.content?t.content:"")}).catch(t=>{e||(r.appToast.error("加载 SKILL.md 失败:".concat(t instanceof Error?t.message:String(t))),s(!1))}).finally(()=>{e||x(!1)}),()=>{e=!0}},[l,n,i,c,d,s]);let v=(0,a.useCallback)(async()=>{if(n.trim()){g(!0);try{await (0,b.saveBaseSkillMd)(i,c,d,n,m),r.appToast.success("SKILL.md 已保存"),s(!1),null==u||u()}catch(e){r.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}finally{g(!1)}}},[n,i,c,d,m,s,u]);return(0,t.jsx)(j.AppDialog,{open:l,onOpenChange:s,title:"编辑 SKILL.md · /".concat(n),width:"max-w-4xl",minHeight:"420px",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:f||h,onClick:()=>s(!1),children:"取消"}),(0,t.jsx)(o.Button,{type:"button",size:"lg",disabled:f||h,onClick:()=>void v(),children:"保存"})]}),children:f?(0,t.jsx)("p",{className:"py-6 text-center text-[var(--ds-muted)]",children:"加载中…"}):(0,t.jsx)("textarea",{className:"focus-visible:ring-[var(--ds-accent)]/30 min-h-[320px] w-full resize-y rounded-md border border-[var(--ds-border)] bg-[var(--ds-bg)] p-3 leading-6 text-[var(--ds-text)] outline-none focus-visible:ring-2",spellCheck:!1,value:m,placeholder:"Markdown 源码…",onChange:e=>p(e.target.value)})})}var C=e.i(94055),N=e.i(94197),S=e.i(36413);function R(e){let{items:l,saveBusy:s,onToggleEnabled:r,onEditBase:n,onExport:i,onRemove:o,className:m}=e,[p,f]=(0,a.useState)(""),x=(0,a.useMemo)(()=>l.filter(e=>(function(e,t){var a;let l=t.trim().toLowerCase();return!l||"".concat(e.name," ").concat(null!=(a=e.description)?a:"").toLowerCase().includes(l)})(e,p)),[l,p]),b=[{key:"name",title:"名称",headerClassName:"",cellClassName:"",render:e=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{children:"/".concat(e.name)}),(0,t.jsx)(S.StatusBadge,{tone:e.enabled?"success":"default",children:e.enabled?"启用":"未启用"})]})},{key:"description",title:"详情",headerClassName:"",cellClassName:"",render:e=>e.description||"-"},{key:"status",title:"状态",headerClassName:"w-[160px] ",cellClassName:"w-[160px] text-[var(--ds-text)]",render:e=>"base"===e.source?"基础":"已安装"},{key:"enabled",title:"启用/未启用",headerClassName:"w-[160px] text-right ",cellClassName:"w-[160px] py-2 text-right align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex items-center justify-end gap-2",children:(0,t.jsx)(C.AccentSwitch,{checked:e.enabled,disabled:s,onCheckedChange:t=>r(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] ",cellClassName:"w-[128px]",render:e=>(0,t.jsx)("div",{className:"inline-flex items-center justify-end gap-1",children:"base"===e.source?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(N.IconTooltipButton,{icon:"Edit",label:"编辑",ariaLabel:"编辑 ".concat(e.name),disabled:s,onClick:()=>n(e.name)}),(0,t.jsx)(N.IconTooltipButton,{icon:"Trash2",label:"系统技能不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:!0})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(N.IconTooltipButton,{icon:"Download",label:"导出",ariaLabel:"导出 ".concat(e.name),disabled:s,onClick:()=>i(e.name)}),(0,t.jsx)(N.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:s,onClick:()=>{o(e.name)}})]})})}],h=p.trim();return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(u.Input,{type:"search",value:p,onChange:e=>f(e.target.value),placeholder:"搜索名称 / 详情",className:"h-8 pl-8","aria-label":"搜索已安装 Skill"}),(0,t.jsx)(c.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)(d.AppTable,{rows:x,columns:b,getRowKey:e=>"skills:".concat(e.name),className:m,emptyText:h?"无匹配的 Skill":void 0})]})}var T=e.i(68499),U=e.i(56708);function M(e,t){var a,l,s;let r=(s=null!=(l=null!=(a=e.description)?a:e.whenToUse)?l:"")?s.length>100?s.slice(0,100):s:"";return{...e,id:e.name,label:"/".concat(e.name),description:r,isRuntime:t,canManage:e.canManage}}let A=[{value:"installed",label:"已安装Skill"},{value:"cloud_catalog",label:"Skill商店"}];function B(){let e=(0,l.useAppStore)(e=>e.wsUrl),d=(0,l.useAppStore)(e=>e.apiBase),u=(0,l.useAppStore)(e=>e.agentConfig),m=(0,l.useAppStore)(e=>e.patchAgentConfig),{currentAgent:p,loadAgentConfig:f}=(0,s.useSession)(),x=(0,n.usePersistAgentConfigField)("skills"),v=u.skills,[y,j]=(0,a.useState)([]),[C,N]=(0,a.useState)([]),[S,B]=(0,a.useState)(!1),[D,L]=(0,a.useState)(!1),[z,E]=(0,a.useState)(!1),[I,O]=(0,a.useState)("installed"),[_,P]=(0,a.useState)(!1),[F,H]=(0,a.useState)(""),[K,V]=(0,a.useState)(!1);(0,a.useEffect)(()=>{f()},[f]);let J=(0,a.useCallback)(async(e,t)=>{E(!0);try{await x(e,{silent:t})}finally{E(!1)}},[x]),W=(0,a.useCallback)(async()=>{j([]),B(!0);try{var t;let a=await (0,b.listBaseSkills)(e,d,p());j((null!=(t=a.skills)?t:[]).map(e=>M(e,!1)))}catch(e){j([]),r.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{B(!1)}},[e,d,p]),q=(0,a.useCallback)(async()=>{N([]),L(!0);try{var t;let a=await (0,b.listInstalledSkills)(e,d,p());N((null!=(t=a.skills)?t:[]).map(e=>M(e,!0)))}catch(e){N([]),r.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{L(!1)}},[e,d,p]),X=(0,a.useCallback)(async()=>{await Promise.all([W(),q()])},[W,q]),G=(0,a.useCallback)(async t=>{if(await (0,T.confirmAlertDialog)({title:"确认删除 Skill 包?",description:"Skill:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,b.deleteRuntimeSkill)(e,d,p(),t);let a=v.filter(e=>e!==t);m({skills:a}),await J(a,!0),await X()}catch(e){r.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[e,d,p,v,m,J,X]);(0,a.useEffect)(()=>{"installed"===I&&X()},[I,X]);let Q=(0,a.useCallback)(()=>{X()},[X]),Y=(0,a.useMemo)(()=>{let e=y.map(e=>({name:e.id,source:"base",description:e.description||"",enabled:v.includes(e.id)})),t=new Set(e.map(e=>e.name)),a=C.filter(e=>!t.has(e.id)).slice().sort((e,t)=>e.label.localeCompare(t.label)).map(e=>({name:e.id,source:"runtime",description:e.description||"",enabled:v.includes(e.id)}));return[...e.sort((e,t)=>e.name.localeCompare(t.name)),...a]},[y,C,v]),Z=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...v,e])].sort():v.filter(t=>t!==e);m({skills:a}),J(a,!0)},[v,m,J]),$=(0,a.useCallback)(t=>{window.open((0,b.exportRuntimeSkillUrl)(e,d,p(),t),"_blank","noopener")},[e,d,p]),ee=(0,a.useCallback)(e=>{H(e),V(!0)},[]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(U.ManageChromeHeaderActions,{children:(0,t.jsxs)(o.Button,{id:"btnAgentImportSkill",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>P(!0),children:[(0,t.jsx)(c.default,{name:"Import",size:16,className:"align-middle"}),"导入Skill"]})}),(0,t.jsxs)(i.AppTabs,{tabs:A,value:I,listVariant:"line",onChange:e=>O(e),children:[(0,t.jsx)(i.AppTabsPanel,{value:"installed",children:S||D?(0,t.jsx)(h.Loading,{text:"加载中…",className:"min-h-[200px]"}):(0,t.jsx)(R,{items:Y,saveBusy:z,onToggleEnabled:Z,onEditBase:ee,onExport:$,onRemove:G})}),(0,t.jsx)(i.AppTabsPanel,{value:"cloud_catalog",className:"flex min-h-0 flex-1 flex-col",children:(0,t.jsx)(g,{active:"cloud_catalog"===I,wsUrl:e,apiBase:d,agent:p(),enabledSkillNames:v,onAfterInstall:Q,className:"min-h-0 flex-1"})})]}),(0,t.jsx)(w,{open:_,onOpenChange:e=>{P(e),e||X()},wsUrl:e,apiBase:d,agent:p()}),(0,t.jsx)(k,{open:K,onOpenChange:V,skillName:F,wsUrl:e,apiBase:d,agent:p(),onSaved:()=>void X()})]})}}]);
|