zen-gitsync 2.12.7 → 2.12.9
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/README.md +58 -2
- package/package.json +1 -1
- package/scripts/README_COLOR_CONVERTER.md +196 -196
- package/scripts/README_FONTSIZE_CONVERTER.md +278 -278
- package/scripts/README_SPACING_CONVERTER.md +126 -126
- package/scripts/README_STYLE_VARS.md +180 -180
- package/src/ui/public/assets/EditorView-C4DezJRA.js +0 -0
- package/src/ui/public/assets/{EditorView-DK-Xgt7r.css → EditorView-DEd8QuPp.css} +1 -1
- package/src/ui/public/assets/SourceMapView-B521sL_k.js +3 -0
- package/src/ui/public/assets/SourceMapView-P9hbpXgz.css +1 -0
- package/src/ui/public/assets/WorkbenchView-75x9qygA.js +1 -0
- package/src/ui/public/assets/WorkbenchView-Dc9vThI8.css +1 -0
- package/src/ui/public/assets/_plugin-vue_export-helper-DMUTnP0C.js +9 -0
- package/src/ui/public/assets/{css.worker-CvXBzhp8.js → css.worker-Wv5dxAWO.js} +1 -1
- package/src/ui/public/assets/{html.worker-BO6WuOEO.js → html.worker-CQP8QQsS.js} +1 -1
- package/src/ui/public/assets/index-BCIFnj7e.css +1 -0
- package/src/ui/public/assets/index-cS1g7H--.js +65 -0
- package/src/ui/public/assets/{json.worker-BkJRGcCJ.js → json.worker-DzV-CpCQ.js} +1 -1
- package/src/ui/public/assets/{ts.worker-B0J26iPs.js → ts.worker-Dth06zuC.js} +15 -15
- package/src/ui/public/assets/vendor-B2yudN8R.css +1 -0
- package/src/ui/public/assets/{vendor-BMFU1ekz.js → vendor-C1sPhIEb.js} +242 -249
- package/src/ui/public/favicon.svg +75 -75
- package/src/ui/public/index.html +23 -22
- package/src/ui/public/logo.svg +74 -74
- package/src/ui/server/index.js +9 -0
- package/src/ui/server/routes/workbench.js +1068 -0
- package/src/ui/public/assets/EditorView-DDyMmxPI.js +0 -0
- package/src/ui/public/assets/SourceMapView-DakscAmd.js +0 -3
- package/src/ui/public/assets/SourceMapView-DyMK80hS.css +0 -1
- package/src/ui/public/assets/index-CPUqt5Ue.js +0 -73
- package/src/ui/public/assets/index-a-r8YYZJ.css +0 -1
- package/src/ui/public/assets/vendor-BPPhhD0O.css +0 -1
- /package/src/ui/public/assets/{editor.worker-Cn2oRESe.js → editor.worker-Bd9IXS8d.js} +0 -0
- /package/src/ui/public/assets/{rolldown-runtime-CMxvf4Kt.js → rolldown-runtime-BM3Ffeng.js} +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{$r as t,Ai as n,Ci as r,Fi as i,Gt as a,Ht as o,Ii as s,Jt as c,Kn as ee,Kt as l,Li as u,Pi as d,Ri as f,Ti as p,Ut as te,Wt as ne,Xt as re,Yt as ie,bi as ae,ei as m,fi as oe,gi as se,ji as h,ki as ce,li as g,mi as _,oi as v,pi as y,qt as le,ri as b,si as x,t as ue,ti as de,ui as S,un as fe,xi as pe,xt as C,yi as me,zi as w}from"./vendor-C1sPhIEb.js";import{n as T,t as E}from"./_plugin-vue_export-helper-DMUTnP0C.js";import{a as he,r as ge}from"./index-cS1g7H--.js";var _e=e(o(),1),ve={class:`source-map-view`},ye={class:`sm-toolbar`},be={class:`sm-toolbar-left`},xe={class:`sm-title`},Se={class:`sm-toolbar-center`},Ce=[`placeholder`,`disabled`],we=[`disabled`],Te={class:`sm-toolbar-right`},Ee={class:`sm-body`},De={class:`sm-panel-header sm-panel-header--tabs`},Oe={key:0,class:`sm-badge`},ke={class:`sm-panel-body sm-file-tree`},Ae=[`onClick`],je={key:1,class:`sm-tree-arrow-spacer`},Me={key:2,class:`sm-tree-icon mit-icon`,"aria-hidden":`true`},Ne=[`xlink:href`],Pe={key:3,class:`sm-tree-icon mit-icon`,"aria-hidden":`true`},Fe=[`xlink:href`],Ie=[`title`],Le={key:1,class:`sm-tree-empty`},Re={class:`sm-panel-body sm-outline-body`},ze={class:`sm-badge`,style:{"margin-left":`auto`}},Be=[`onClick`],Ve=[`title`],He={key:0,class:`sm-outline-desc`},Ue={key:1,class:`sm-tree-empty`},We={class:`sm-panel sm-panel-graph`},Ge={key:0,class:`sm-project-info`},Ke={class:`sm-lang-badge`},qe={class:`sm-summary-text`},Je={class:`sm-graph-container`},Ye={class:`sm-layout-btn-wrap`},Xe=[`disabled`],Ze=[`title`],Qe={class:`sm-fn-label`},$e={key:0,class:`sm-fn-desc`},et={key:0,class:`sm-graph-empty`},tt={viewBox:`0 0 24 24`,width:`48`,height:`48`,fill:`none`,stroke:`currentColor`,"stroke-width":`1`,style:{opacity:`0.3`}},nt={key:1,class:`sm-graph-loading`},rt={class:`sm-log-header`},it={key:0,class:`sm-log-indicator`},at={class:`sm-log-body`,ref:`logBodyRef`},ot={key:0,class:`sm-empty`},st={class:`sm-panel-header`},ct={key:0,class:`sm-badge sm-badge-amber`},lt={key:0,class:`sm-node-detail`},ut={class:`sm-node-name`},dt={class:`sm-node-file`},ft={key:0},pt={key:0,class:`sm-node-desc`},mt={class:`sm-panel-body sm-source-body`},ht={key:0,class:`sm-source-overlay`},gt={key:1,class:`sm-source-overlay sm-source-placeholder`},D=E(se({__name:`SourceMapView`,setup(e){let o=d(document.documentElement.getAttribute(`data-theme`)===`dark`?`dark`:`light`);function se(){o.value=document.documentElement.getAttribute(`data-theme`)===`dark`?`dark`:`light`}let E=null,D=he(),O=d(D.currentDirectory||``),k=d(`idle`),A=d([]),_t=0,j=d(null),M=d(null),N=d(`files`),P=d(``),F=d(``),I=d(!1),L=d([]),R=d(new Set),z=d({files:!0,graph:!0,source:!0}),B=d(!1),V=d(220),H=d(360),U=d(140),W=null,G=0,vt=0,K=0;function q(e,t){W=e,G=t.clientX,vt=t.clientY,K=e===`files`?V.value:e===`source`?H.value:U.value,document.addEventListener(`mousemove`,yt),document.addEventListener(`mouseup`,J),t.preventDefault()}function yt(e){W&&(W===`files`?V.value=Math.max(120,Math.min(480,K+e.clientX-G)):W===`source`?H.value=Math.max(200,Math.min(700,K+G-e.clientX)):U.value=Math.max(60,Math.min(500,K+vt-e.clientY)))}function J(){W=null,document.removeEventListener(`mousemove`,yt),document.removeEventListener(`mouseup`,J)}let Y=d(null),X=i(null),{fitView:bt,setNodes:xt,setEdges:St,getNodes:Ct,getEdges:wt,updateNodeInternals:Tt}=re(),Z=v(()=>k.value===`scanning`||k.value===`analyzing`),Et=v(()=>o.value===`dark`?`#334155`:`#cbd5e1`),Q=v(()=>j.value?.nodes.find(e=>e.id===M.value)??null),Dt=v(()=>{if(!j.value)return[];let e=new Map;for(let t of j.value.nodes){let n=t.subsystem??`__default__`;if(!e.has(n)){let r=j.value.subsystems?.find(e=>e.name===n);e.set(n,{displayName:r?.displayName||t.subsystem||T(`@SRCMAP:默认`),color:t.subsystemColor||kt[0],nodes:[]})}e.get(n).nodes.push(t)}return[...e.entries()].map(([,e])=>e)});function $(e,t=`info`){A.value.push({id:++_t,message:e,type:t,timestamp:Date.now()}),A.value.length>200&&A.value.splice(0,A.value.length-200)}function Ot(e){let t={name:``,path:``,kind:`dir`,children:[],childMap:new Map};for(let n of e){let e=n.trim().split(`/`).filter(Boolean),r=t,i=``;for(let t=0;t<e.length;t++){let n=e[t];i=i?`${i}/${n}`:n;let a=t===e.length-1,o=r.childMap.get(n);o||(o={name:n,path:i,kind:a?`file`:`dir`,children:[],childMap:new Map},r.childMap.set(n,o),r.children.push(o)),r=o}}let n=e=>{e.sort((e,t)=>e.kind===t.kind?e.name.localeCompare(t.name):e.kind===`dir`?-1:1),e.forEach(e=>{e.kind===`dir`&&n(e.children)})};return n(t.children),t.children}let kt=[`#f59e0b`,`#3b82f6`,`#10b981`,`#8b5cf6`];function At(e){return e.subsystemColor?e.subsystemColor:e.subsystemIndex===void 0?e.importance===`high`?`#f59e0b`:e.importance===`low`?`#94a3b8`:`#3b82f6`:kt[e.subsystemIndex%kt.length]}function jt(e){return{ts:`typescript`,tsx:`typescript`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,jsx:`javascript`,vue:`html`,svelte:`html`,html:`html`,py:`python`,java:`java`,go:`go`,rs:`rust`,cpp:`cpp`,cc:`cpp`,cxx:`cpp`,c:`c`,h:`c`,hpp:`cpp`,cs:`csharp`,rb:`ruby`,php:`php`,swift:`swift`,kt:`kotlin`,sh:`shell`,bash:`shell`,json:`json`,yaml:`yaml`,yml:`yaml`,md:`markdown`,css:`css`,scss:`scss`,less:`less`,sql:`sql`}[e.split(`.`).pop()?.toLowerCase()||``]||`plaintext`}function Mt(){!Y.value||X.value||(X.value=C.create(Y.value,{value:``,language:`plaintext`,theme:o.value===`dark`?`vs-dark`:`vs`,readOnly:!0,fontSize:12,lineHeight:19,fontFamily:`'JetBrains Mono', 'Fira Code', Consolas, monospace`,minimap:{enabled:!1},scrollBeyondLastLine:!1,automaticLayout:!0,wordWrap:`off`,padding:{top:8,bottom:8},scrollbar:{verticalScrollbarSize:6,horizontalScrollbarSize:6}}))}ce(o,e=>{X.value&&C.setTheme(e===`dark`?`vs-dark`:`vs`)});function Nt(e,t){let n={};t.forEach(e=>{n[e.source]||(n[e.source]=[]),n[e.source].push(e.target)});let r=new Map;e.forEach(e=>{let t=e.subsystem??`__default`;r.has(t)||r.set(t,[]),r.get(t).push(e)});let i=[],a=0;for(let[,e]of r){let t=new Set(e.map(e=>e.id)),r={},o=e.length?[e[0].id]:[];for(o[0]&&(r[o[0]]=0);o.length;){let e=o.shift();(n[e]||[]).filter(e=>t.has(e)).forEach(t=>{r[t]===void 0&&(r[t]=(r[e]??0)+1,o.push(t))})}let s={};e.forEach(e=>{let t=r[e.id]??0;s[t]=(s[t]||0)+1});let c={};e.forEach(e=>{let t=r[e.id]??0;c[t]=(c[t]??-1)+1;let n=c[t],o=s[t]??1,ee=a*600+n*220-(o-1)*220/2,l=t*110,u=At(e);i.push({id:e.id,type:`default`,position:{x:ee,y:l},label:e.label,class:`sm-fn-node`,data:{...e,_accentColor:u},style:{"--node-accent":u}})}),a++}return{flowNodes:i,flowEdges:t.map((e,t)=>({id:`e_${t}_${e.source}_${e.target}`,source:e.source,target:e.target,type:`smoothstep`,animated:!1,class:`sm-fn-edge`,markerEnd:{type:l.ArrowClosed}}))}}async function Pt(){let e=Ct.value,t=wt.value;if(e.length!==0){B.value=!0;try{await me(),await new Promise(e=>requestAnimationFrame(()=>e())),Tt(e.map(e=>e.id)),await new Promise(e=>requestAnimationFrame(()=>e()));let n=new Map;e.forEach(e=>{let t=e.data?.subsystem??`__default__`;n.has(t)||n.set(t,[]),n.get(t).push(e)});let r=new Map,i=0;for(let[,e]of n){let n=new _e.default.graphlib.Graph;n.setDefaultEdgeLabel(()=>({})),n.setGraph({rankdir:`TB`,nodesep:55,ranksep:75,marginx:40,marginy:40});let a=new Set(e.map(e=>e.id));e.forEach(e=>{let t=190,r=e.data?.description?68:48,i=document.querySelector(`.vue-flow__node[data-id="${e.id}"]`);i&&i.offsetWidth>0&&(t=i.offsetWidth,r=i.offsetHeight),n.setNode(e.id,{width:t,height:r})}),t.forEach(e=>{a.has(e.source)&&a.has(e.target)&&n.setEdge(e.source,e.target)}),_e.default.layout(n);let o=0;e.forEach(e=>{let t=n.node(e.id);t&&(r.set(e.id,{x:i+t.x-t.width/2,y:t.y-t.height/2}),o=Math.max(o,t.x+t.width/2))}),i+=o+120}xt(e.map(e=>({...e,position:r.get(e.id)??e.position}))),await me(),bt({padding:.18})}finally{B.value=!1}}}async function Ft(){if(!O.value.trim()){fe.warning(T(`@SRCMAP:请先输入项目路径`));return}if(!Z.value){A.value=[],j.value=null,M.value=null,P.value=``,F.value=``,xt([]),St([]),k.value=`scanning`,$(T(`@SRCMAP:开始分析项目...`),`info`);try{let e=await fetch(`/api/code-analysis/analyze`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:O.value})});if(!e.ok){let t=await e.json().catch(()=>({error:`请求失败`}));throw Error(t.error||`HTTP ${e.status}`)}let t=e.body.getReader(),n=new TextDecoder,r=``;k.value=`analyzing`;let i=``,a=[];for(;;){let{done:e,value:o}=await t.read();if(e)break;r+=n.decode(o,{stream:!0});let s=r.split(`
|
|
2
|
+
`);r=s.pop()??``;for(let e of s)if(e.startsWith(`event:`))i=e.slice(6).trim(),a=[];else if(e.startsWith(`data:`))a.push(e.slice(5).trim());else if(e===``){if(i&&a.length){let e=a.join(``);try{let t=JSON.parse(e);It(i,t)}catch{}}i=``,a=[]}}}catch(e){$(`${T(`@SRCMAP:分析失败`)}: ${e.message}`,`error`),k.value=`error`}}}function It(e,t){if(e===`log`)$(t.message,t.type||`info`);else if(e===`files`)L.value=Ot(t.files||[]),L.value.forEach(e=>{e.kind===`dir`&&R.value.add(e.path)});else if(e===`result`){j.value={language:t.language||``,entryFile:t.entryFile||``,entryFunction:t.entryFunction||``,nodes:Array.isArray(t.nodes)?t.nodes:[],edges:Array.isArray(t.edges)?t.edges:[],techStack:Array.isArray(t.techStack)?t.techStack:[],summary:t.summary||``,allFiles:Array.isArray(t.allFiles)?t.allFiles:[],codeFiles:Array.isArray(t.codeFiles)?t.codeFiles:[],subsystems:Array.isArray(t.subsystems)?t.subsystems:void 0};let{flowNodes:e,flowEdges:n}=Nt(j.value.nodes,j.value.edges);xt(e),St(n),me(()=>Pt())}else e===`done`&&(t.error?($(`${T(`@SRCMAP:分析失败`)}: ${t.error}`,`error`),k.value=`error`):k.value=`done`)}async function Lt(e){if(!(!e||I.value)&&F.value!==e){I.value=!0,F.value=e,P.value=``;try{let t=await(await fetch(`/api/code-analysis/file-content?path=${encodeURIComponent(O.value)}&file=${encodeURIComponent(e)}`)).json();if(t.error)throw Error(t.error);P.value=t.content||``}catch(e){P.value=`// ${T(`@SRCMAP:加载失败`)}: ${e.message}`}finally{I.value=!1}}}function Rt(e){let t=e.node.data;M.value=t.id,t.file&&Lt(t.file)}function zt(e){R.value.has(e)?R.value.delete(e):R.value.add(e)}let Bt=v(()=>{let e=[];function t(n,r){for(let i of n){let n=R.value.has(i.path);e.push({name:i.name,path:i.path,kind:i.kind,depth:r,expanded:n}),i.kind===`dir`&&n&&t(i.children,r+1)}}return t(L.value,0),e});return ce(()=>D.currentDirectory,e=>{e&&!O.value&&(O.value=e)}),ce([P,F],([e,t])=>{let n=X.value;if(!n)return;let r=jt(t||``),i=n.getModel(),a=C.createModel(e||``,r);n.setModel(a),i?.dispose(),n.setScrollPosition({scrollTop:0,scrollLeft:0})}),pe(()=>{Mt(),!O.value&&D.currentDirectory&&(O.value=D.currentDirectory),E=new MutationObserver(()=>se()),E.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-theme`]})}),ae(()=>{X.value?.getModel()?.dispose(),X.value?.dispose(),J(),E?.disconnect(),E=null}),(e,i)=>{let l=ee;return r(),S(`div`,ve,[x(`div`,ye,[x(`div`,be,[i[9]||=x(`svg`,{viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,class:`sm-icon-map`},[x(`polygon`,{points:`3 6 9 3 15 6 21 3 21 18 15 21 9 18 3 21`}),x(`line`,{x1:`9`,y1:`3`,x2:`9`,y2:`18`}),x(`line`,{x1:`15`,y1:`6`,x2:`15`,y2:`21`})],-1),x(`span`,xe,w(s(T)(`@SRCMAP:源码地图`)),1)]),x(`div`,Se,[h(x(`input`,{"onUpdate:modelValue":i[0]||=e=>O.value=e,class:`sm-path-input`,placeholder:s(T)(`@SRCMAP:输入项目目录路径`),disabled:Z.value,onKeydown:de(Ft,[`enter`])},null,40,Ce),[[t,O.value]]),x(`button`,{class:`sm-btn sm-btn-primary`,disabled:Z.value,onClick:Ft},[Z.value?(r(),S(b,{key:0},[i[10]||=x(`span`,{class:`sm-spinner`},null,-1),y(` `+w(s(T)(`@SRCMAP:分析中...`)),1)],64)):(r(),S(b,{key:1},[y(w(k.value===`done`?s(T)(`@SRCMAP:重新分析`):s(T)(`@SRCMAP:开始分析`)),1)],64))],8,we)]),x(`div`,Te,[_(l,{content:s(T)(`@SRCMAP:文件列表`),placement:`bottom`},{default:n(()=>[x(`button`,{class:u([`sm-panel-btn`,{active:z.value.files}]),onClick:i[1]||=e=>z.value.files=!z.value.files},i[11]||=[x(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[x(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`})],-1)],2)]),_:1},8,[`content`]),_(l,{content:s(T)(`@SRCMAP:调用图`),placement:`bottom`},{default:n(()=>[x(`button`,{class:u([`sm-panel-btn`,{active:z.value.graph}]),onClick:i[2]||=e=>z.value.graph=!z.value.graph},i[12]||=[x(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[x(`circle`,{cx:`12`,cy:`12`,r:`3`}),x(`circle`,{cx:`3`,cy:`6`,r:`2`}),x(`circle`,{cx:`21`,cy:`6`,r:`2`}),x(`circle`,{cx:`3`,cy:`18`,r:`2`}),x(`circle`,{cx:`21`,cy:`18`,r:`2`}),x(`line`,{x1:`5`,y1:`6`,x2:`9`,y2:`11`}),x(`line`,{x1:`19`,y1:`6`,x2:`15`,y2:`11`}),x(`line`,{x1:`5`,y1:`18`,x2:`9`,y2:`13`}),x(`line`,{x1:`19`,y1:`18`,x2:`15`,y2:`13`})],-1)],2)]),_:1},8,[`content`]),_(l,{content:s(T)(`@SRCMAP:源码面板`),placement:`bottom`},{default:n(()=>[x(`button`,{class:u([`sm-panel-btn`,{active:z.value.source}]),onClick:i[3]||=e=>z.value.source=!z.value.source},i[13]||=[x(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[x(`polyline`,{points:`16 18 22 12 16 6`}),x(`polyline`,{points:`8 6 2 12 8 18`})],-1)],2)]),_:1},8,[`content`])])]),x(`div`,Ee,[h(x(`div`,{class:`sm-panel sm-panel-files`,style:f({width:V.value+`px`})},[x(`div`,De,[x(`button`,{class:u([`sm-tab-btn`,{active:N.value===`files`}]),onClick:i[4]||=e=>N.value=`files`},[i[14]||=x(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[x(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`})],-1),y(` `+w(s(T)(`@SRCMAP:文件列表`))+` `,1),j.value?(r(),S(`span`,Oe,w(j.value.allFiles.length),1)):g(``,!0)],2),x(`button`,{class:u([`sm-tab-btn`,{active:N.value===`outline`}]),onClick:i[5]||=e=>N.value=`outline`},[i[15]||=oe(`<svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.8" data-v-71d3569e><line x1="8" y1="6" x2="21" y2="6" data-v-71d3569e></line><line x1="8" y1="12" x2="21" y2="12" data-v-71d3569e></line><line x1="8" y1="18" x2="21" y2="18" data-v-71d3569e></line><line x1="3" y1="6" x2="3.01" y2="6" data-v-71d3569e></line><line x1="3" y1="12" x2="3.01" y2="12" data-v-71d3569e></line><line x1="3" y1="18" x2="3.01" y2="18" data-v-71d3569e></line></svg>`,1),y(` `+w(s(T)(`@SRCMAP:大纲`)),1)],2)]),h(x(`div`,ke,[Bt.value.length>0?(r(!0),S(b,{key:0},p(Bt.value,e=>(r(),S(`div`,{key:e.path,class:u([`sm-tree-node`,{"sm-tree-node--dir":e.kind===`dir`,"sm-tree-node--active":e.kind===`file`&&F.value===e.path}]),style:f({paddingLeft:10+e.depth*14+`px`}),onClick:t=>e.kind===`dir`?zt(e.path):Lt(e.path)},[e.kind===`dir`?(r(),S(`span`,{key:0,class:u([`sm-tree-arrow`,{expanded:e.expanded}])},i[16]||=[x(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[x(`polyline`,{points:`9 18 15 12 9 6`})],-1)],2)):(r(),S(`span`,je)),e.kind===`dir`?(r(),S(`svg`,Me,[x(`use`,{"xlink:href":`#${s(ge)(e.name)||`icon-folder`}`},null,8,Ne)])):(r(),S(`svg`,Pe,[x(`use`,{"xlink:href":`#${s(ge)(e.name)}`},null,8,Fe)])),x(`span`,{class:`sm-tree-name`,title:e.path},w(e.name),9,Ie)],14,Ae))),128)):(r(),S(`div`,Le,w(s(T)(`@SRCMAP:暂无文件,请先开始分析`)),1))],512),[[m,N.value===`files`]]),h(x(`div`,Re,[Dt.value.length>0?(r(!0),S(b,{key:0},p(Dt.value,e=>(r(),S(`div`,{key:e.displayName,class:`sm-outline-group`},[x(`div`,{class:`sm-outline-group-header`,style:f({color:e.color})},[i[17]||=x(`svg`,{viewBox:`0 0 24 24`,width:`8`,height:`8`,fill:`currentColor`},[x(`circle`,{cx:`12`,cy:`12`,r:`6`})],-1),y(` `+w(e.displayName)+` `,1),x(`span`,ze,w(e.nodes.length),1)],4),(r(!0),S(b,null,p(e.nodes,t=>(r(),S(`div`,{key:t.id,class:u([`sm-outline-node`,{"sm-outline-node--active":M.value===t.id}]),onClick:e=>{M.value=t.id,t.file&&Lt(t.file)}},[x(`span`,{class:`sm-outline-dot`,style:f({background:e.color})},null,4),x(`span`,{class:`sm-outline-label`,title:t.file||t.label},w(t.label),9,Ve),t.description?(r(),S(`span`,He,w(t.description.length>18?t.description.slice(0,18)+`…`:t.description),1)):g(``,!0)],10,Be))),128))]))),128)):(r(),S(`div`,Ue,w(s(T)(`@SRCMAP:暂无分析结果`)),1))],512),[[m,N.value===`outline`]])],4),[[m,z.value.files]]),h(x(`div`,{class:`sm-resizer sm-resizer-v`,onMousedown:i[6]||=e=>q(`files`,e)},null,544),[[m,z.value.files&&z.value.graph]]),h(x(`div`,We,[j.value?(r(),S(`div`,Ge,[x(`span`,Ke,w(j.value.language),1),j.value.subsystems&&j.value.subsystems.length>1?(r(!0),S(b,{key:0},p(j.value.subsystems,e=>(r(),S(`span`,{key:e.name,class:`sm-subsystem-tag`,style:f({borderColor:e.color,color:e.color})},`● `+w(e.displayName||e.name),5))),128)):(r(!0),S(b,{key:1},p(j.value.techStack.slice(0,4),e=>(r(),S(`span`,{key:e,class:`sm-tech-tag`},w(e),1))),128)),x(`span`,qe,w(j.value.summary),1)])):g(``,!0),x(`div`,Je,[x(`div`,Ye,[x(`button`,{class:`sm-layout-btn`,disabled:B.value||!j.value,onClick:Pt},[i[18]||=oe(`<svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.8" data-v-71d3569e><rect x="3" y="3" width="7" height="7" rx="1" data-v-71d3569e></rect><rect x="14" y="3" width="7" height="7" rx="1" data-v-71d3569e></rect><rect x="3" y="14" width="7" height="7" rx="1" data-v-71d3569e></rect><rect x="14" y="14" width="7" height="7" rx="1" data-v-71d3569e></rect></svg>`,1),y(` `+w(B.value?s(T)(`@SRCMAP:布局中...`):s(T)(`@SRCMAP:优化布局`)),1)],8,Xe)]),_(s(c),{class:`sm-vue-flow`,"default-viewport":{zoom:1},"min-zoom":.2,"max-zoom":4,"fit-view-on-init":``,onNodeClick:Rt},{"node-default":n(({data:e,label:t})=>[_(s(ie),{type:`target`,position:s(le).Top},null,8,[`position`]),x(`div`,{class:`sm-fn-inner`,title:`${t}${e?.description?`
|
|
3
|
+
`+e.description:``}`},[x(`div`,Qe,w(t),1),e?.description?(r(),S(`div`,$e,w(e.description.length>22?e.description.slice(0,22)+`…`:e.description),1)):g(``,!0)],8,Ze),_(s(ie),{type:`source`,position:s(le).Bottom},null,8,[`position`])]),default:n(()=>[_(s(a),{variant:s(ne).Dots,gap:20,size:1,"pattern-color":Et.value},null,8,[`variant`,`pattern-color`]),_(s(te)),_(s(ue),{"node-color":`#3b82f6`,"mask-color":o.value===`dark`?`rgba(0,0,0,0.55)`:`rgba(15,23,42,0.06)`},null,8,[`mask-color`])]),_:1}),!j.value&&!Z.value?(r(),S(`div`,et,[(r(),S(`svg`,tt,i[19]||=[x(`polygon`,{points:`3 6 9 3 15 6 21 3 21 18 15 21 9 18 3 21`},null,-1),x(`line`,{x1:`9`,y1:`3`,x2:`9`,y2:`18`},null,-1),x(`line`,{x1:`15`,y1:`6`,x2:`15`,y2:`21`},null,-1)])),x(`p`,null,w(s(T)(`@SRCMAP:输入项目路径后点击开始分析`)),1)])):g(``,!0),Z.value&&!j.value?(r(),S(`div`,nt,[i[20]||=x(`span`,{class:`sm-spinner sm-spinner-lg`},null,-1),x(`p`,null,w(s(T)(`@SRCMAP:AI 正在分析项目结构...`)),1)])):g(``,!0)]),x(`div`,{class:`sm-resizer sm-resizer-h`,onMousedown:i[7]||=e=>q(`log`,e)},null,32),x(`div`,{class:`sm-log-panel`,style:f({height:U.value+`px`})},[x(`div`,rt,[i[21]||=x(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[x(`polyline`,{points:`4 17 10 11 4 5`}),x(`line`,{x1:`12`,y1:`19`,x2:`20`,y2:`19`})],-1),y(` `+w(s(T)(`@SRCMAP:Agent 日志`))+` `,1),Z.value?(r(),S(`span`,it)):g(``,!0)]),x(`div`,at,[(r(!0),S(b,null,p(A.value.slice(-50),e=>(r(),S(`div`,{key:e.id,class:u([`sm-log-entry`,`sm-log-entry--${e.type}`])},w(e.message),3))),128)),A.value.length===0?(r(),S(`div`,ot,w(s(T)(`@SRCMAP:等待开始分析`)),1)):g(``,!0)],512)],4)],512),[[m,z.value.graph]]),h(x(`div`,{class:`sm-resizer sm-resizer-v`,onMousedown:i[8]||=e=>q(`source`,e)},null,544),[[m,z.value.graph&&z.value.source]]),h(x(`div`,{class:`sm-panel sm-panel-source`,style:f({width:H.value+`px`})},[x(`div`,st,[i[22]||=x(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[x(`polyline`,{points:`16 18 22 12 16 6`}),x(`polyline`,{points:`8 6 2 12 8 18`})],-1),y(` `+w(F.value||s(T)(`@SRCMAP:源码面板`))+` `,1),Q.value?(r(),S(`span`,ct,w(Q.value.label),1)):g(``,!0)]),Q.value?(r(),S(`div`,lt,[x(`div`,ut,w(Q.value.label),1),x(`div`,dt,[y(w(Q.value.file),1),Q.value.line?(r(),S(`span`,ft,` :`+w(Q.value.line),1)):g(``,!0)]),Q.value.description?(r(),S(`div`,pt,w(Q.value.description),1)):g(``,!0)])):g(``,!0),x(`div`,mt,[I.value?(r(),S(`div`,ht,i[23]||=[x(`span`,{class:`sm-spinner`},null,-1)])):g(``,!0),!I.value&&!P.value?(r(),S(`div`,gt,w(s(T)(`@SRCMAP:点击调用图中的节点查看源码`)),1)):g(``,!0),x(`div`,{ref_key:`monacoContainerRef`,ref:Y,class:`sm-monaco-container`},null,512)])],4),[[m,z.value.source]])])])}}}),[[`__scopeId`,`data-v-71d3569e`]]);export{D as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.source-map-view[data-v-71d3569e]{background:var(--sm-graph-bg);width:100%;height:100%;color:var(--text-primary);flex-direction:column;font-size:13px;display:flex;overflow:hidden}.sm-toolbar[data-v-71d3569e]{background:var(--sm-canvas-bg);border-bottom:1px solid var(--border-color);flex-shrink:0;align-items:center;gap:12px;padding:8px 16px;display:flex}.sm-toolbar-left[data-v-71d3569e]{flex-shrink:0;align-items:center;gap:8px;display:flex}.sm-toolbar-center[data-v-71d3569e]{flex:1;align-items:center;gap:8px;display:flex}.sm-toolbar-right[data-v-71d3569e]{flex-shrink:0;align-items:center;gap:4px;display:flex}.sm-icon-map[data-v-71d3569e]{color:#f59e0b}.sm-title[data-v-71d3569e]{color:var(--text-primary);font-size:13px;font-weight:600}.sm-path-input[data-v-71d3569e]{background:var(--bg-input);border:1px solid var(--border-input);height:30px;color:var(--text-primary);border-radius:6px;outline:none;flex:1;padding:0 10px;font-family:Consolas,Monaco,monospace;font-size:12px;transition:border-color .15s}.sm-path-input[data-v-71d3569e]:focus{border-color:#f59e0b}.sm-path-input[data-v-71d3569e]:disabled{opacity:.6;cursor:not-allowed}.sm-btn[data-v-71d3569e]{cursor:pointer;white-space:nowrap;border:none;border-radius:6px;align-items:center;gap:6px;height:30px;padding:0 14px;font-size:12px;font-weight:500;transition:all .15s;display:inline-flex}.sm-btn-primary[data-v-71d3569e]{color:#fff;background:linear-gradient(135deg,#f59e0b,#d97706)}.sm-btn-primary[data-v-71d3569e]:hover:not(:disabled){background:linear-gradient(135deg,#fbbf24,#f59e0b)}.sm-btn-primary[data-v-71d3569e]:disabled{opacity:.6;cursor:not-allowed}.sm-panel-btn[data-v-71d3569e]{cursor:pointer;width:28px;height:28px;color:var(--text-tertiary);background:0 0;border:1px solid #0000;border-radius:5px;justify-content:center;align-items:center;transition:all .15s;display:flex}.sm-panel-btn[data-v-71d3569e]:hover,.sm-panel-btn.active[data-v-71d3569e]{background:var(--bg-component-hover);border-color:var(--border-color);color:var(--text-primary)}.sm-panel-btn.active[data-v-71d3569e]{color:#f59e0b;border-color:#f59e0b40}.sm-body[data-v-71d3569e]{flex:1;min-height:0;display:flex;overflow:hidden}.sm-resizer[data-v-71d3569e]{z-index:2;background:0 0;flex-shrink:0;transition:background .15s;position:relative}.sm-resizer-v[data-v-71d3569e]{cursor:col-resize;width:6px}.sm-resizer-h[data-v-71d3569e]{cursor:row-resize;height:6px}.sm-resizer[data-v-71d3569e]:after{content:"";background:var(--border-color);border-radius:2px;transition:background .15s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.sm-resizer-v[data-v-71d3569e]:after{width:2px;height:32px}.sm-resizer-h[data-v-71d3569e]:after{width:32px;height:2px}.sm-resizer[data-v-71d3569e]:hover{background:#3b82f60f}.sm-resizer[data-v-71d3569e]:hover:after{background:var(--color-primary,#3b82f6);box-shadow:0 0 8px #3b82f666}.sm-resizer-v[data-v-71d3569e]:hover:after{height:48px}.sm-resizer-h[data-v-71d3569e]:hover:after{width:48px}.sm-panel[data-v-71d3569e]{flex-direction:column;min-width:0;display:flex;overflow:hidden}.sm-panel-files[data-v-71d3569e]{background:var(--sm-canvas-bg);border-right:1px solid var(--border-color);flex-shrink:0;min-width:0;overflow:hidden}.sm-panel-graph[data-v-71d3569e]{background:var(--sm-graph-bg);flex:1;min-width:300px}.sm-panel-source[data-v-71d3569e]{background:var(--sm-canvas-bg);border-left:1px solid var(--border-color);flex-shrink:0}.sm-panel-header[data-v-71d3569e]{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-color);background:var(--sm-canvas-bg);flex-shrink:0;align-items:center;gap:6px;padding:6px 10px;font-size:11px;font-weight:600;display:flex}.sm-panel-body[data-v-71d3569e]{flex:1;min-height:0;overflow:auto}.sm-project-info[data-v-71d3569e]{background:var(--sm-canvas-bg);border-bottom:1px solid var(--border-color);flex-shrink:0;align-items:center;gap:6px;padding:6px 12px;display:flex;overflow:hidden}.sm-lang-badge[data-v-71d3569e]{color:#f59e0b;background:#f59e0b22;border:1px solid #f59e0b44;border-radius:4px;flex-shrink:0;align-items:center;padding:1px 7px;font-size:10px;font-weight:600;display:inline-flex}.sm-tech-tag[data-v-71d3569e]{color:#93c5fd;background:#3b82f611;border:1px solid #3b82f630;border-radius:4px;flex-shrink:0;align-items:center;padding:1px 6px;font-size:10px;display:inline-flex}.sm-subsystem-tag[data-v-71d3569e]{opacity:.85;background:0 0;border:1px solid;border-radius:4px;flex-shrink:0;align-items:center;gap:3px;padding:1px 7px;font-size:10px;font-weight:600;display:inline-flex}.sm-summary-text[data-v-71d3569e]{color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:11px;overflow:hidden}.sm-graph-container[data-v-71d3569e]{flex:1;min-height:0;position:relative;overflow:hidden}.sm-vue-flow[data-v-71d3569e]{width:100%;height:100%}.sm-graph-empty[data-v-71d3569e],.sm-graph-loading[data-v-71d3569e]{color:var(--text-tertiary);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:13px;display:flex;position:absolute;inset:0}.sm-log-panel[data-v-71d3569e]{border-top:1px solid var(--border-color);background:var(--sm-canvas-bg);flex-direction:column;flex-shrink:0;min-height:60px;display:flex}.sm-log-header[data-v-71d3569e]{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-color);flex-shrink:0;align-items:center;gap:6px;padding:4px 10px;font-size:10px;font-weight:600;display:flex}.sm-log-indicator[data-v-71d3569e]{background:#f59e0b;border-radius:50%;width:6px;height:6px;margin-left:auto;animation:1s infinite pulse-71d3569e}@keyframes pulse-71d3569e{0%,to{opacity:1}50%{opacity:.3}}.sm-log-body[data-v-71d3569e]{flex:1;padding:4px 0;font-family:Consolas,Monaco,monospace;font-size:11px;overflow-y:auto}.sm-log-entry[data-v-71d3569e]{padding:2px 10px;line-height:1.5}.sm-log-entry--info[data-v-71d3569e]{color:var(--text-tertiary)}.sm-log-entry--success[data-v-71d3569e]{color:var(--text-success,#16a34a)}.sm-log-entry--error[data-v-71d3569e]{color:var(--text-danger,#dc2626)}.sm-log-entry--thinking[data-v-71d3569e]{color:#f59e0b}.sm-file-tree[data-v-71d3569e]{flex:1;padding:4px 0;overflow:hidden auto}.sm-tree-node[data-v-71d3569e]{cursor:pointer;-webkit-user-select:none;user-select:none;height:24px;color:var(--text-primary);white-space:nowrap;box-sizing:border-box;border-radius:4px;align-items:center;gap:4px;padding-right:8px;font-size:13px;transition:background .1s;display:flex;overflow:hidden}.sm-tree-node[data-v-71d3569e]:hover{background:var(--bg-component-hover)}.sm-tree-node--active[data-v-71d3569e]{color:var(--color-primary);background:#3b82f61f}.sm-tree-arrow[data-v-71d3569e]{color:var(--text-tertiary);flex-shrink:0;align-items:center;width:12px;transition:transform .15s;display:flex}.sm-tree-arrow.expanded[data-v-71d3569e]{transform:rotate(90deg)}.sm-tree-arrow-spacer[data-v-71d3569e]{flex-shrink:0;width:12px;display:inline-block}.sm-tree-icon[data-v-71d3569e]{flex-shrink:0;align-items:center;font-size:14px;line-height:1;display:flex}.sm-tree-icon.mit-icon[data-v-71d3569e]{fill:currentColor;vertical-align:middle;width:14px;height:14px;display:inline-block}.sm-tree-name[data-v-71d3569e]{text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;overflow:hidden}.sm-tree-empty[data-v-71d3569e]{color:var(--text-tertiary);text-align:center;padding:24px 12px;font-size:12px}.sm-node-detail[data-v-71d3569e]{background:#f59e0b0f;border-bottom:1px solid #f59e0b38;flex-shrink:0;padding:8px 12px}.sm-node-name[data-v-71d3569e]{color:#f59e0b;font-family:Consolas,monospace;font-size:13px;font-weight:600}.sm-node-file[data-v-71d3569e]{color:var(--text-tertiary);margin-top:2px;font-family:Consolas,monospace;font-size:10px}.sm-node-desc[data-v-71d3569e]{color:var(--text-secondary);margin-top:4px;font-size:11px;line-height:1.4}.sm-source-body[data-v-71d3569e]{background:var(--sm-source-bg);position:relative;overflow:hidden}.sm-monaco-container[data-v-71d3569e]{width:100%;height:100%}.sm-source-overlay[data-v-71d3569e]{background:var(--sm-source-overlay-bg);z-index:10;color:var(--text-tertiary);pointer-events:none;justify-content:center;align-items:center;font-size:12px;display:flex;position:absolute;inset:0}.sm-source-placeholder[data-v-71d3569e]{background:var(--sm-source-bg);pointer-events:none}.sm-empty[data-v-71d3569e]{height:100%;min-height:60px;color:var(--text-tertiary);text-align:center;justify-content:center;align-items:center;padding:12px;font-size:12px;display:flex}.sm-badge[data-v-71d3569e]{background:var(--bg-page);border:1px solid var(--border-color);color:var(--text-secondary);border-radius:4px;align-items:center;margin-left:4px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-flex}.sm-badge-amber[data-v-71d3569e]{color:#f59e0b;background:#f59e0b15;border-color:#f59e0b40}.sm-spinner[data-v-71d3569e]{border:2px solid #ffffff40;border-top-color:#fff;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin-71d3569e;display:inline-block}.sm-spinner-lg[data-v-71d3569e]{border-width:3px;border-color:#f59e0b #f59e0b20 #f59e0b20;width:32px;height:32px}@keyframes spin-71d3569e{to{transform:rotate(360deg)}}[data-v-71d3569e] .vue-flow__background{background:var(--sm-graph-bg)}[data-v-71d3569e] .vue-flow__controls{background:var(--sm-controls-bg);border:1px solid var(--sm-controls-border);box-shadow:none;border-radius:8px}[data-v-71d3569e] .vue-flow__controls-button{color:var(--sm-controls-color);background:0 0;border:none}[data-v-71d3569e] .vue-flow__controls-button:hover{background:var(--sm-controls-hover-bg);color:var(--sm-controls-hover-color)}[data-v-71d3569e] .vue-flow__minimap{background:var(--sm-minimap-bg);border:1px solid var(--sm-controls-border);border-radius:6px}[data-v-71d3569e] .vue-flow__minimap-mask{fill:var(--sm-minimap-mask);stroke:var(--sm-minimap-mask-stroke)}[data-v-71d3569e] .vue-flow__edge-path,[data-v-71d3569e] .vue-flow__connection-path{stroke:var(--sm-edge-color)}[data-v-71d3569e] .vue-flow__arrowhead polyline,[data-v-71d3569e] .vue-flow__arrowhead path,[data-v-71d3569e] .vue-flow__marker polyline,[data-v-71d3569e] .vue-flow__marker path{stroke:var(--sm-edge-color);fill:var(--sm-edge-color)}[data-v-71d3569e] .vue-flow__edge{stroke:var(--sm-edge-color)}[data-v-71d3569e] .vue-flow__node{transition:box-shadow .15s}[data-v-71d3569e] .vue-flow__node:hover{box-shadow:0 0 0 2px #f59e0b8c}[data-v-71d3569e] .vue-flow__node.selected{box-shadow:0 0 0 2px #f59e0b}[data-v-71d3569e] .sm-fn-node{background:var(--sm-node-bg);color:var(--sm-node-text);border:2px solid var(--node-accent,#3b82f6);cursor:pointer;border-radius:8px;min-width:140px;max-width:200px;padding:8px 12px;font-size:12px;transition:transform .15s,box-shadow .15s;box-shadow:0 1px 2px #0f172a14,0 4px 12px #0f172a0f}[data-theme=dark][data-v-71d3569e] .sm-fn-node{box-shadow:0 1px 2px #00000052,0 6px 14px #00000047}[data-v-71d3569e] .sm-fn-node:hover{transform:translateY(-1px)}[data-v-71d3569e] .sm-fn-edge .vue-flow__edge-path{stroke-width:1.5px}.sm-layout-btn-wrap[data-v-71d3569e]{z-index:10;position:absolute;top:10px;right:10px}.sm-layout-btn[data-v-71d3569e]{background:var(--sm-controls-bg);border:1px solid var(--sm-controls-border);height:28px;color:var(--text-secondary);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:5px;padding:0 10px;font-size:11px;font-weight:500;transition:all .15s;display:flex}.sm-layout-btn[data-v-71d3569e]:hover:not(:disabled){color:#f59e0b;background:#f59e0b08;border-color:#f59e0b50}.sm-layout-btn[data-v-71d3569e]:disabled{opacity:.45;cursor:not-allowed}.sm-fn-inner[data-v-71d3569e]{text-align:center;flex-direction:column;gap:3px;width:100%;min-width:0;display:flex;overflow:hidden}.sm-fn-label[data-v-71d3569e]{color:var(--sm-node-text);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:12px;font-weight:600;overflow:hidden}.sm-fn-desc[data-v-71d3569e]{color:var(--sm-node-desc);white-space:nowrap;text-overflow:ellipsis;max-width:180px;font-size:10px;overflow:hidden}.sm-panel-header--tabs[data-v-71d3569e]{gap:0;height:32px;min-height:32px;padding:0}.sm-tab-btn[data-v-71d3569e]{cursor:pointer;height:100%;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;align-items:center;gap:4px;padding:0 8px;font-size:10px;font-weight:600;transition:all .15s;display:flex}.sm-tab-btn[data-v-71d3569e]:hover{color:var(--text-secondary);background:var(--bg-component-hover)}.sm-tab-btn.active[data-v-71d3569e]{color:#f59e0b;border-bottom-color:#f59e0b}.sm-outline-body[data-v-71d3569e]{flex:1;padding:4px 0;overflow:hidden auto}.sm-outline-group[data-v-71d3569e]{margin-bottom:2px}.sm-outline-group-header[data-v-71d3569e]{text-transform:uppercase;letter-spacing:.06em;background:var(--sm-canvas-bg);z-index:1;align-items:center;gap:5px;padding:5px 10px 3px;font-size:10px;font-weight:700;display:flex;position:sticky;top:0}.sm-outline-node[data-v-71d3569e]{cursor:pointer;align-items:center;gap:6px;height:26px;padding:0 8px 0 16px;transition:background .1s;display:flex;overflow:hidden}.sm-outline-node[data-v-71d3569e]:hover{background:var(--bg-component-hover)}.sm-outline-node--active[data-v-71d3569e]{background:#3b82f61f}.sm-outline-dot[data-v-71d3569e]{border-radius:50%;flex-shrink:0;width:6px;height:6px}.sm-outline-label[data-v-71d3569e]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;max-width:80px;font-family:Consolas,monospace;font-size:12px;font-weight:500;overflow:hidden}.sm-outline-desc[data-v-71d3569e]{color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:10px;overflow:hidden}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./rolldown-runtime-BM3Ffeng.js";import{$r as e,Ai as t,Ci as n,En as r,Fn as ee,Ii as i,Jn as te,Li as a,Ni as o,On as ne,Pi as s,Qr as re,Ri as ie,Ti as c,Tn as ae,Wn as oe,bi as l,ci as se,gi as u,ji as d,ki as f,kn as ce,li as p,ln as m,mi as h,ni as g,oi as _,pi as v,ri as y,si as b,ui as x,un as S,xi as C,yi as le,zi as w}from"./vendor-C1sPhIEb.js";import{n as T,t as E}from"./_plugin-vue_export-helper-DMUTnP0C.js";import{t as ue}from"./index-cS1g7H--.js";var de={class:`workbench`},fe={class:`wb-sidebar`},pe={class:`wb-sidebar__header`},me={class:`wb-task-list`},he=[`onClick`],ge={class:`wb-task-item__title`},_e={class:`wb-task-item__meta`},ve=[`onClick`,`title`],ye={key:0,class:`wb-empty`},be={class:`wb-sidebar__header`},xe={class:`wb-prompt-list`},Se=[`onClick`,`title`],Ce=[`onClick`],we={key:0,class:`wb-empty`},D={class:`wb-split`},O={key:0,class:`wb-placeholder`},k={class:`wb-split__header`},Te=[`placeholder`],Ee={value:null},De=[`value`],Oe=[`placeholder`],ke={class:`wb-split__sub-header`},Ae={class:`wb-sub-list`},je={class:`wb-sub-item__row`},Me=[`onUpdate:modelValue`,`placeholder`,`onPaste`],Ne=[`title`],Pe=[`onClick`],Fe=[`onUpdate:modelValue`,`placeholder`,`onPaste`],Ie=[`open`],Le={class:`wb-log-summary`},Re={key:0},ze={key:1},Be={key:2},Ve={class:`wb-log-summary__meta`},He=[`onPaste`,`onDragover`,`onDragenter`,`onDragleave`,`onDrop`],Ue={class:`wb-attachments__head`},We={class:`wb-attachments__label`},Ge={class:`wb-attachments__count`},Ke=[`disabled`,`onClick`],qe={key:0,class:`wb-attachments__paste-hint`},Je={key:1,class:`wb-attachments__list`},Ye=[`src`,`alt`],Xe={key:1},Ze={class:`wb-attachment__meta`},Qe=[`title`],$e={class:`wb-attachment__sub`},et=[`onClick`,`title`],tt={key:0,class:`wb-empty`},nt={style:{display:`flex`,gap:`8px`,"align-items":`center`}},A=64*1024,rt=`.png,.jpg,.jpeg,.gif,.webp,.bmp,.svg,.pdf,.txt,.md,.csv,.json,.log`,it=5*1024*1024,j=E(u({__name:`WorkbenchView`,setup(u){let E=s([]),j=s([]),M=s([]),N=s(null),P=_(()=>j.value.find(e=>e.id===N.value)||null),F=o({visible:!1,editing:null,name:``,content:``,aiLoading:!1}),I=o({visible:!1,text:``,loading:!1,saving:!1}),L=o({visible:!1,editing:null,title:``,desc:``,promptId:null}),R=null,at=ue();function z(){at.setRunning(M.value.filter(e=>e.status===`running`).length)}function B(e){return M.value.find(t=>t.subId===e)||null}function ot(e,t){if(e===`hello`){M.value=t.jobs||[],z();return}if(e===`job:update`){let e=t,n=M.value.findIndex(t=>t.id===e.id);n>=0?M.value[n]=e:M.value.push(e),z()}if(e===`sub:update`){let e=j.value.find(e=>e.id===t.taskId);if(e){let n=e.subtasks.findIndex(e=>e.id===t.sub.id);n>=0&&(e.subtasks[n]=t.sub)}}if(e===`task:update`){let e=j.value.findIndex(e=>e.id===t.id);e>=0&&(j.value[e]=t)}e===`task:error`&&S.error(t.error||T(`@WORKBENCH:执行出错`))}async function V(){E.value=(await fetch(`/api/workbench/prompts`).then(e=>e.json()).catch(()=>({prompts:[]}))).prompts||[]}async function H(){j.value=(await fetch(`/api/workbench/tasks`).then(e=>e.json()).catch(()=>({tasks:[]}))).tasks||[],!N.value&&j.value.length>0&&(N.value=j.value[0].id)}async function st(){M.value=(await fetch(`/api/workbench/jobs`).then(e=>e.json()).catch(()=>({jobs:[]}))).jobs||[],z()}function U(){R&&=(R.close(),null),R=new EventSource(`/api/workbench/events`),R.onmessage=e=>{try{let t=JSON.parse(e.data);ot(t.event,t.payload)}catch{}},R.onerror=()=>{R&&=(R.close(),null),setTimeout(U,3e3)}}function ct(){F.editing=null,F.name=``,F.content=``,F.aiLoading=!1,F.visible=!0}function lt(e){F.editing=e,F.name=e.name,F.content=e.content,F.aiLoading=!1,F.visible=!0}async function ut(){if(!F.aiLoading){F.aiLoading=!0;try{let e=await fetch(`/api/workbench/prompts/ai-generate`,{method:`POST`}).then(e=>e.json());e.success?(F.name=e.name||F.name,F.content=e.result||``,S.success(T(`@WORKBENCH:已生成,可继续编辑`))):S.error(e.error||T(`@WORKBENCH:生成失败`))}catch(e){S.error(T(`@WORKBENCH:网络错误: `)+(e&&e.message||e))}finally{F.aiLoading=!1}}}async function dt(){I.visible=!0,I.loading=!0;try{let e=await fetch(`/api/workbench/prompts/ai-instruction`).then(e=>e.json());e.success?I.text=e.instruction||``:S.error(e.error||T(`@WORKBENCH:读取指令失败`))}catch(e){S.error(T(`@WORKBENCH:读取指令失败`)+`: `+(e&&e.message||e))}finally{I.loading=!1}}async function ft(){if(!I.text.trim()){S.warning(T(`@WORKBENCH:指令内容不能为空`));return}I.saving=!0;try{let e=await fetch(`/api/workbench/prompts/ai-instruction`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({instruction:I.text})}).then(e=>e.json());e.success?(S.success(T(`@WORKBENCH:已保存指令`)),I.visible=!1):S.error(e.error||T(`@WORKBENCH:保存失败`))}catch(e){S.error(T(`@WORKBENCH:网络错误: `)+(e&&e.message||e))}finally{I.saving=!1}}async function pt(){if(!F.name.trim()||!F.content.trim()){S.warning(T(`@WORKBENCH:名称和内容不能为空`));return}let e={id:F.editing?.id,name:F.name.trim(),content:F.content},t=await fetch(`/api/workbench/prompts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>e.json());t.success?(S.success(T(`@WORKBENCH:已保存`)),F.visible=!1,V()):S.error(t.error||T(`@WORKBENCH:保存失败`))}async function mt(e){await m.confirm(T(`@WORKBENCH:删除提示词「{name}」?`,{name:e.name}),T(`@WORKBENCH:确认`),{type:`warning`}),await fetch(`/api/workbench/prompts/${e.id}`,{method:`DELETE`}),V();for(let t of j.value)t.promptId===e.id&&(t.promptId=null,await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}));H()}function ht(){L.editing=null,L.title=``,L.desc=``,L.promptId=null,L.visible=!0}async function gt(){if(!L.title.trim()){S.warning(T(`@WORKBENCH:标题必填`));return}let e={id:L.editing?.id,title:L.title.trim(),desc:L.desc,promptId:L.promptId,subtasks:L.editing?.subtasks||[]},t=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>e.json());t.success?(S.success(T(`@WORKBENCH:已保存`)),L.visible=!1,H(),N.value||=t.task.id):S.error(t.error||T(`@WORKBENCH:保存失败`))}async function _t(e){await m.confirm(T(`@WORKBENCH:删除任务「{title}」及其所有子任务?`,{title:e.title}),T(`@WORKBENCH:确认`),{type:`warning`}),await fetch(`/api/workbench/tasks/${e.id}`,{method:`DELETE`}),N.value===e.id&&(N.value=null),H()}function vt(e){N.value=e.id}function yt(){if(!P.value)return;let e={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`,title:T(`@WORKBENCH:新子任务`),desc:``,status:`todo`,promptOverride:``};P.value.subtasks.push(e),W(!1)}function bt(e){P.value&&(P.value.subtasks=P.value.subtasks.filter(t=>t.id!==e.id),W(!1))}async function W(e){if(!P.value)return!1;let t=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(P.value)}).then(e=>e.json());return t.success?(e&&S.success(T(`@WORKBENCH:已保存拆分`)),await H(),!0):(S.error(t.error||T(`@WORKBENCH:保存失败`)),!1)}async function xt(){await W(!0)}async function St(e){if(!e.subtasks||e.subtasks.length===0){S.warning(T(`@WORKBENCH:请先拆分任务`));return}if(P.value&&P.value.id===e.id){let t=j.value.find(t=>t.id===e.id);if((!t||t.title!==P.value.title||t.desc!==P.value.desc||JSON.stringify(t.subtasks)!==JSON.stringify(P.value.subtasks)||t.promptId!==P.value.promptId)&&!await W(!1))return}let t=await fetch(`/api/workbench/tasks/${e.id}/run`,{method:`POST`}).then(e=>e.json());t.success?S.success(t.message||T(`@WORKBENCH:已加入执行队列`)):S.error(t.error||T(`@WORKBENCH:执行失败`))}function Ct(e){switch(e){case`todo`:return T(`@WORKBENCH:待执行`);case`running`:return T(`@WORKBENCH:执行中`);case`done`:return T(`@WORKBENCH:已完成`);case`error`:return T(`@WORKBENCH:出错`);case`pending`:return T(`@WORKBENCH:排队中`);default:return e}}function wt(e){switch(e){case`running`:return`var(--color-primary)`;case`done`:return`#22c55e`;case`error`:return`#ef4444`;case`pending`:return`#f59e0b`;default:return`var(--text-tertiary)`}}C(async()=>{await Promise.all([V(),H(),st()]),U()}),l(()=>{R&&=(R.close(),null)});let G=s({});function Tt(e){return t=>{G.value[e]=t}}f(()=>M.value.map(e=>({id:e.id,len:(e.output||``).length})),e=>{e.forEach(({id:e})=>{let t=M.value.find(t=>t.id===e);if(!t||t.status!==`running`)return;let n=G.value[t.subId];n&&le(()=>{n.scrollTop=n.scrollHeight})})},{deep:!0,flush:`post`});function Et(e){return e?e.length<=A?e:`${T(`@WORKBENCH:…(前文已截断)`)}\n${e.slice(-A)}`:``}let Dt=new Set([`image/png`,`image/jpeg`,`image/jpg`,`image/gif`,`image/webp`,`image/bmp`,`image/svg+xml`,`application/pdf`,`text/plain`,`text/markdown`,`text/x-markdown`,`text/csv`,`application/json`,`text/json`,`text/x-log`]),K=s({}),q=s(null);function J(e){return!!K.value[e]}function Y(e,t){if(e instanceof File)return e;let n=e.type||`application/octet-stream`;return new File([e],t,{type:n})}function X(e,t){if(!e.clipboardData)return;let n=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&e.type.startsWith(`image/`));if(n.length>0){e.preventDefault();for(let e of n){let n=e.getAsFile();if(!n)continue;let r=(n.type.split(`/`)[1]||`png`).replace(`jpeg`,`jpg`);Q(t,Y(n,`paste-${new Date().toISOString().replace(/[:.]/g,`-`)}.${r}`))}return}let r=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&!e.type.startsWith(`image/`));if(r.length>0){e.preventDefault();for(let e of r){let n=e.getAsFile();n&&Q(t,Y(n,n.name||`pasted-file`))}}}function Z(e,t){q.value=null,Array.from(e.dataTransfer?.files||[]).forEach(e=>Q(t,e))}async function Q(e,t){if(t.size>it){S.error(`「${t.name}」${T(`@WORKBENCH:超过 5MB 限制`)}`);return}if(!Dt.has(t.type)&&!t.name.match(/\.(png|jpg|jpeg|gif|webp|bmp|svg|pdf|txt|md|markdown|csv|json|log)$/i)){S.error(`${T(`@WORKBENCH:不支持的文件类型`)}(${t.name})`);return}if((e.attachments||[]).length>=9){S.error(T(`@WORKBENCH:单个子任务最多 9 个附件`));return}K.value[e.id]=!0;try{let n=await fetch(`/api/workbench/subtasks/${e.id}/attachments`,{method:`POST`,headers:{"Content-Type":`application/octet-stream`,"X-Original-Name":t.name,"X-Mime-Type":t.type||`application/octet-stream`},body:t}).then(e=>e.json());n.success?(Array.isArray(e.attachments)||(e.attachments=[]),e.attachments.push(n.attachment),S.success(`${T(`@WORKBENCH:已添加:`)}${t.name}`)):S.error(n.error||T(`@WORKBENCH:上传失败`))}catch(e){S.error(T(`@WORKBENCH:上传失败`)+`:`+(e&&e.message||e))}finally{K.value[e.id]=!1}}async function Ot(e,t){try{await m.confirm(T(`@WORKBENCH:删除附件「{name}」?`,{name:t.originalName}),T(`@WORKBENCH:确认`),{type:`warning`})}catch{return}let n=await fetch(`/api/workbench/subtasks/${e.id}/attachments/${t.id}`,{method:`DELETE`}).then(e=>e.json());n.success?(e.attachments=(e.attachments||[]).filter(e=>e.id!==t.id),S.success(T(`@WORKBENCH:已删除`))):S.error(n.error||T(`@WORKBENCH:删除失败`))}function kt(e){let t=document.createElement(`input`);t.type=`file`,t.accept=rt,t.multiple=!0,t.onchange=()=>{Array.from(t.files||[]).forEach(t=>Q(e,t))},t.click()}let At=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`svg`]);function $(e){return At.has(String(e.ext||``).toLowerCase())}function jt(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`}return(o,s)=>{let l=oe,u=te,f=ce,m=ne,_=ee,S=ae,C=r;return n(),x(`div`,de,[b(`aside`,fe,[b(`div`,pe,[b(`h3`,null,w(i(T)(`@WORKBENCH:任务列表`)),1),h(l,{size:`small`,type:`primary`,onClick:ht},{default:t(()=>[v(w(i(T)(`@WORKBENCH:新建任务`)),1)]),_:1})]),b(`ul`,me,[(n(!0),x(y,null,c(j.value,e=>(n(),x(`li`,{key:e.id,class:a([`wb-task-item`,{active:e.id===N.value}]),onClick:t=>vt(e)},[b(`div`,ge,w(e.title),1),b(`div`,_e,[b(`span`,null,w(e.subtasks?.length||0)+` `+w(i(T)(`@WORKBENCH:个子任务`)),1),b(`button`,{class:`wb-task-item__del`,onClick:g(t=>_t(e),[`stop`]),title:i(T)(`@WORKBENCH:删除`)},`×`,8,ve)])],10,he))),128)),j.value.length===0?(n(),x(`li`,ye,w(i(T)(`@WORKBENCH:暂无任务,点击右上角新建`)),1)):p(``,!0)]),s[16]||=b(`div`,{class:`wb-sidebar__divider`},null,-1),b(`div`,be,[b(`h3`,null,w(i(T)(`@WORKBENCH:预置提示词`)),1),h(l,{size:`small`,onClick:ct},{default:t(()=>[v(w(i(T)(`@WORKBENCH:新建`)),1)]),_:1})]),b(`ul`,xe,[(n(!0),x(y,null,c(E.value,e=>(n(),x(`li`,{key:e.id,class:`wb-prompt-item`},[b(`span`,{class:`wb-prompt-item__name`,onClick:t=>lt(e),title:e.content},w(e.name),9,Se),b(`button`,{class:`wb-prompt-item__del`,onClick:t=>mt(e)},`×`,8,Ce)]))),128)),E.value.length===0?(n(),x(`li`,we,w(i(T)(`@WORKBENCH:暂无提示词`)),1)):p(``,!0)])]),b(`section`,D,[P.value?(n(),x(y,{key:1},[b(`div`,k,[d(b(`input`,{class:`wb-input wb-input--title`,"onUpdate:modelValue":s[0]||=e=>P.value.title=e,placeholder:i(T)(`@WORKBENCH:任务标题`)},null,8,Te),[[e,P.value.title]]),d(b(`select`,{class:`wb-select`,"onUpdate:modelValue":s[1]||=e=>P.value.promptId=e},[b(`option`,Ee,w(i(T)(`@WORKBENCH:不绑定预置提示词`)),1),(n(!0),x(y,null,c(E.value,e=>(n(),x(`option`,{key:e.id,value:e.id},w(e.name),9,De))),128))],512),[[re,P.value.promptId]]),h(l,{type:`primary`,loading:!1,onClick:s[2]||=e=>St(P.value)},{default:t(()=>[v(w(i(T)(`@WORKBENCH:执行任务`)),1)]),_:1})]),d(b(`textarea`,{class:`wb-textarea`,"onUpdate:modelValue":s[3]||=e=>P.value.desc=e,placeholder:i(T)(`@WORKBENCH:任务描述(可选)`),rows:`3`},null,8,Oe),[[e,P.value.desc]]),b(`div`,ke,[b(`h4`,null,w(i(T)(`@WORKBENCH:子任务拆分`)),1),b(`div`,null,[h(l,{size:`small`,onClick:yt},{default:t(()=>[v(`+ `+w(i(T)(`@WORKBENCH:添加子任务`)),1)]),_:1}),h(l,{size:`small`,type:`primary`,onClick:xt},{default:t(()=>[v(w(i(T)(`@WORKBENCH:保存拆分`)),1)]),_:1})])]),b(`ul`,Ae,[(n(!0),x(y,null,c(P.value.subtasks,t=>(n(),x(`li`,{key:t.id,class:`wb-sub-item`},[b(`div`,je,[b(`span`,{class:`wb-sub-item__status`,style:ie({background:wt(t.status)})},w(Ct(t.status)),5),d(b(`input`,{class:`wb-input`,"onUpdate:modelValue":e=>t.title=e,placeholder:i(T)(`@WORKBENCH:子任务标题`),onPaste:e=>X(e,t)},null,40,Me),[[e,t.title]]),B(t.id)?(n(),x(`span`,{key:0,class:`wb-sub-item__pid`,title:i(T)(`@WORKBENCH:进程ID`)},` PID: `+w(B(t.id)?.pid),9,Ne)):p(``,!0),b(`button`,{class:`wb-sub-item__del`,onClick:e=>bt(t)},`×`,8,Pe)]),d(b(`textarea`,{class:`wb-textarea wb-textarea--sm`,"onUpdate:modelValue":e=>t.desc=e,placeholder:i(T)(`@WORKBENCH:子任务描述 / 独立提示词覆盖`),rows:`2`,onPaste:e=>X(e,t)},null,40,Fe),[[e,t.desc]]),B(t.id)?(n(),x(`details`,{key:0,class:`wb-log-details`,open:B(t.id)?.status===`running`||B(t.id)?.status===`pending`},[b(`summary`,Le,[B(t.id)?.status===`running`?(n(),x(`span`,Re,`● `+w(i(T)(`@WORKBENCH:正在执行…`)),1)):B(t.id)?.status===`pending`?(n(),x(`span`,ze,w(i(T)(`@WORKBENCH:排队中…`)),1)):(n(),x(`span`,Be,w(i(T)(`@WORKBENCH:查看执行日志`)),1)),b(`span`,Ve,w((B(t.id)?.output||``).length)+` `+w(i(T)(`@WORKBENCH:字符`)),1)]),b(`pre`,{ref_for:!0,ref:Tt(t.id),class:`wb-log-pre`},w(Et(B(t.id)?.output)||i(T)(`@WORKBENCH:(暂无输出)`)),513)],8,Ie)):p(``,!0),b(`div`,{class:a([`wb-attachments`,{"is-paste-hover":q.value===t.id}]),onPaste:e=>X(e,t),onDragover:g(e=>q.value=t.id,[`prevent`]),onDragenter:g(e=>q.value=t.id,[`prevent`]),onDragleave:e=>q.value=q.value===t.id?null:q.value,onDrop:g(e=>Z(e,t),[`prevent`])},[b(`div`,Ue,[b(`span`,We,[v(w(i(T)(`@WORKBENCH:附件`))+` `,1),b(`span`,Ge,w((t.attachments||[]).length)+` / 9`,1)]),b(`button`,{class:`wb-attachments__add`,disabled:J(t.id)||(t.attachments||[]).length>=9,onClick:e=>kt(t)},w(J(t.id)?i(T)(`@WORKBENCH:上传中…`):i(T)(`@WORKBENCH:添加附件`)),9,Ke)]),q.value===t.id?(n(),x(`div`,qe,w(i(T)(`@WORKBENCH:粘贴图片以快速添加`)),1)):p(``,!0),(t.attachments||[]).length>0?(n(),x(`ul`,Je,[(n(!0),x(y,null,c(t.attachments,e=>(n(),x(`li`,{key:e.id,class:`wb-attachment`},[b(`div`,{class:a([`wb-attachment__icon`,{"wb-attachment__icon--img":$(e)}])},[$(e)?(n(),x(`img`,{key:0,src:`/api/workbench/attachments/${e.id}/raw`,alt:e.originalName,loading:`lazy`},null,8,Ye)):(n(),x(`span`,Xe,w(e.ext.toUpperCase()),1))],2),b(`div`,Ze,[b(`div`,{class:`wb-attachment__name`,title:e.originalName},w(e.originalName),9,Qe),b(`div`,$e,w(jt(e.size))+` · `+w(e.mimeType),1)]),b(`button`,{class:`wb-attachment__del`,onClick:n=>Ot(t,e),title:i(T)(`@WORKBENCH:删除`)},`×`,8,et)]))),128))])):p(``,!0)],42,He)]))),128)),P.value.subtasks.length===0?(n(),x(`li`,tt,w(i(T)(`@WORKBENCH:暂无子任务,点击上方按钮添加`)),1)):p(``,!0)])],64)):(n(),x(`div`,O,[b(`p`,null,w(i(T)(`@WORKBENCH:左侧选择任务,或新建一个任务开始`)),1)]))]),h(_,{modelValue:F.visible,"onUpdate:modelValue":s[7]||=e=>F.visible=e,title:F.editing?i(T)(`@WORKBENCH:编辑提示词`):i(T)(`@WORKBENCH:新建提示词`),width:`640px`},{footer:t(()=>[h(l,{onClick:s[6]||=e=>F.visible=!1},{default:t(()=>[v(w(i(T)(`@WORKBENCH:取消`)),1)]),_:1}),h(l,{type:`primary`,onClick:pt},{default:t(()=>[v(w(i(T)(`@WORKBENCH:保存`)),1)]),_:1})]),default:t(()=>[h(m,{"label-position":`top`},{default:t(()=>[h(f,{label:i(T)(`@WORKBENCH:名称`)},{default:t(()=>[h(u,{modelValue:F.name,"onUpdate:modelValue":s[4]||=e=>F.name=e,placeholder:i(T)(`@WORKBENCH:如:代码审查 / 写测试`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(f,null,{default:t(()=>[b(`div`,nt,[h(l,{type:`primary`,plain:``,loading:F.aiLoading,onClick:ut},{default:t(()=>[v(w(i(T)(`@WORKBENCH:AI 生成项目架构说明`)),1)]),_:1},8,[`loading`]),h(l,{onClick:dt},{default:t(()=>[v(w(i(T)(`@WORKBENCH:编辑指令`)),1)]),_:1})])]),_:1}),h(f,{label:i(T)(`@WORKBENCH:内容`)},{default:t(()=>[h(u,{modelValue:F.content,"onUpdate:modelValue":s[5]||=e=>F.content=e,type:`textarea`,rows:10,placeholder:i(T)(`@WORKBENCH:可用变量:`)+`{{task.title}} {{task.desc}} {{sub.title}} {{sub.desc}} {{repo.path}} {{branch}}`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`modelValue`,`title`]),h(_,{modelValue:I.visible,"onUpdate:modelValue":s[10]||=e=>I.visible=e,title:i(T)(`@WORKBENCH:编辑生成指令`),width:`720px`,"append-to-body":``},{footer:t(()=>[h(l,{onClick:s[9]||=e=>I.visible=!1},{default:t(()=>[v(w(i(T)(`@WORKBENCH:取消`)),1)]),_:1}),h(l,{type:`primary`,loading:I.saving,onClick:ft},{default:t(()=>[v(w(i(T)(`@WORKBENCH:保存`)),1)]),_:1},8,[`loading`])]),default:t(()=>[h(m,{"label-position":`top`},{default:t(()=>[h(f,{label:i(T)(`@WORKBENCH:指令内容`)},{default:t(()=>[h(u,{modelValue:I.text,"onUpdate:modelValue":s[8]||=e=>I.text=e,type:`textarea`,rows:18,placeholder:i(T)(`@WORKBENCH:指令内容`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`modelValue`,`title`]),h(_,{modelValue:L.visible,"onUpdate:modelValue":s[15]||=e=>L.visible=e,title:L.editing?i(T)(`@WORKBENCH:编辑任务`):i(T)(`@WORKBENCH:新建任务`),width:`560px`},{footer:t(()=>[h(l,{onClick:s[14]||=e=>L.visible=!1},{default:t(()=>[v(w(i(T)(`@WORKBENCH:取消`)),1)]),_:1}),h(l,{type:`primary`,onClick:gt},{default:t(()=>[v(w(i(T)(`@WORKBENCH:保存`)),1)]),_:1})]),default:t(()=>[h(m,{"label-position":`top`},{default:t(()=>[h(f,{label:i(T)(`@WORKBENCH:标题`)},{default:t(()=>[h(u,{modelValue:L.title,"onUpdate:modelValue":s[11]||=e=>L.title=e},null,8,[`modelValue`])]),_:1},8,[`label`]),h(f,{label:i(T)(`@WORKBENCH:描述`)},{default:t(()=>[h(u,{modelValue:L.desc,"onUpdate:modelValue":s[12]||=e=>L.desc=e,type:`textarea`,rows:3},null,8,[`modelValue`])]),_:1},8,[`label`]),h(f,{label:i(T)(`@WORKBENCH:预置提示词`)},{default:t(()=>[h(C,{modelValue:L.promptId,"onUpdate:modelValue":s[13]||=e=>L.promptId=e,clearable:``,placeholder:i(T)(`@WORKBENCH:不绑定`),style:{width:`100%`}},{default:t(()=>[(n(!0),x(y,null,c(E.value,e=>(n(),se(S,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`modelValue`,`title`])])}}}),[[`__scopeId`,`data-v-8cc26a1f`]]);export{j as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.workbench[data-v-8cc26a1f]{background:var(--bg-container);height:100%;color:var(--text-primary);display:flex}.wb-sidebar[data-v-8cc26a1f]{border-right:1px solid var(--border-color);background:var(--bg-surface);flex-shrink:0;width:260px;padding:12px;overflow-y:auto}.wb-sidebar__header[data-v-8cc26a1f]{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.wb-sidebar__header h3[data-v-8cc26a1f]{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin:0;font-size:13px;font-weight:600}.wb-sidebar__divider[data-v-8cc26a1f]{background:var(--border-color);height:1px;margin:16px 0}.wb-task-list[data-v-8cc26a1f],.wb-prompt-list[data-v-8cc26a1f]{margin:0;padding:0;list-style:none}.wb-task-item[data-v-8cc26a1f]{border-radius:var(--radius-md);cursor:pointer;border:1px solid #0000;margin-bottom:4px;padding:10px 12px;transition:background .15s,border-color .15s}.wb-task-item[data-v-8cc26a1f]:hover{background:var(--bg-hover)}.wb-task-item.active[data-v-8cc26a1f]{border-color:var(--color-primary);background:#3b82f61a}.wb-task-item__title[data-v-8cc26a1f]{margin-bottom:2px;font-size:13px;font-weight:500}.wb-task-item__meta[data-v-8cc26a1f]{color:var(--text-tertiary);justify-content:space-between;align-items:center;font-size:11px;display:flex}.wb-task-item__del[data-v-8cc26a1f],.wb-prompt-item__del[data-v-8cc26a1f],.wb-sub-item__del[data-v-8cc26a1f]{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:16px;line-height:1}.wb-task-item__del[data-v-8cc26a1f]:hover,.wb-prompt-item__del[data-v-8cc26a1f]:hover,.wb-sub-item__del[data-v-8cc26a1f]:hover{color:#ef4444}.wb-prompt-item[data-v-8cc26a1f]{border-radius:var(--radius-sm);justify-content:space-between;align-items:center;padding:6px 8px;font-size:12px;display:flex}.wb-prompt-item[data-v-8cc26a1f]:hover{background:var(--bg-hover)}.wb-prompt-item__name[data-v-8cc26a1f]{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.wb-empty[data-v-8cc26a1f]{text-align:center;color:var(--text-tertiary);padding:16px 8px;font-size:12px}.wb-split[data-v-8cc26a1f]{flex-direction:column;flex:1;gap:12px;padding:16px 20px;display:flex;overflow-y:auto}.wb-placeholder[data-v-8cc26a1f]{color:var(--text-tertiary);flex:1;justify-content:center;align-items:center;font-size:13px;display:flex}.wb-split__header[data-v-8cc26a1f]{align-items:center;gap:8px;display:flex}.wb-input[data-v-8cc26a1f]{background:var(--bg-base);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--radius-md);outline:none;padding:6px 10px;font-size:13px}.wb-input[data-v-8cc26a1f]:focus{border-color:var(--color-primary)}.wb-input--title[data-v-8cc26a1f]{flex:1;font-size:16px;font-weight:600}.wb-select[data-v-8cc26a1f]{background:var(--bg-base);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--radius-md);padding:6px 8px;font-size:13px}.wb-textarea[data-v-8cc26a1f]{background:var(--bg-base);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--radius-md);resize:vertical;box-sizing:border-box;outline:none;width:100%;padding:8px 10px;font-family:inherit;font-size:13px}.wb-textarea[data-v-8cc26a1f]:focus{border-color:var(--color-primary)}.wb-textarea--sm[data-v-8cc26a1f]{min-height:40px}.wb-split__sub-header[data-v-8cc26a1f]{justify-content:space-between;align-items:center;margin-top:8px;display:flex}.wb-split__sub-header h4[data-v-8cc26a1f]{color:var(--text-secondary);margin:0;font-size:13px;font-weight:600}.wb-sub-list[data-v-8cc26a1f]{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.wb-sub-item[data-v-8cc26a1f]{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:10px}.wb-sub-item__row[data-v-8cc26a1f]{align-items:center;gap:8px;margin-bottom:6px;display:flex}.wb-sub-item__status[data-v-8cc26a1f]{color:#fff;border-radius:10px;flex-shrink:0;padding:2px 8px;font-size:11px}.wb-sub-item__pid[data-v-8cc26a1f]{color:var(--text-tertiary);flex-shrink:0;font-family:ui-monospace,monospace;font-size:11px}.wb-sub-item__row .wb-input[data-v-8cc26a1f]{flex:1}.wb-log-details[data-v-8cc26a1f]{border:1px solid var(--border-color);border-radius:var(--radius-sm,4px);background:var(--bg-code);margin-top:6px;overflow:hidden}.wb-log-summary[data-v-8cc26a1f]{cursor:pointer;color:var(--text-secondary);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;font-size:12px;list-style:none;display:flex}.wb-log-summary[data-v-8cc26a1f]::-webkit-details-marker{display:none}.wb-log-summary[data-v-8cc26a1f]:hover{background:#3b82f60f}.wb-log-summary__meta[data-v-8cc26a1f]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.wb-log-pre[data-v-8cc26a1f]{max-height:240px;font-family:var(--font-mono,ui-monospace, monospace);color:var(--text-primary);background:var(--bg-code);white-space:pre-wrap;word-break:break-word;border-top:1px solid var(--border-color);margin:0;padding:8px 10px;font-size:12px;line-height:1.55;overflow:auto}.wb-attachments[data-v-8cc26a1f]{border:1px solid var(--border-color);border-radius:var(--radius-sm,4px);background:var(--bg-subtle,var(--bg-container));margin-top:6px;transition:border-color .15s,background .15s;overflow:hidden}.wb-attachments.is-paste-hover[data-v-8cc26a1f]{border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary);background:#3b82f60f}.wb-attachments__paste-hint[data-v-8cc26a1f]{background:var(--color-primary);color:#fff;text-align:center;border-top:1px solid var(--border-color);padding:4px 10px;font-size:12px}.wb-attachments__head[data-v-8cc26a1f]{color:var(--text-secondary);border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:6px 10px;font-size:12px;display:flex}.wb-attachments__label[data-v-8cc26a1f]{align-items:center;gap:6px;display:inline-flex}.wb-attachments__count[data-v-8cc26a1f]{font-variant-numeric:tabular-nums;color:var(--text-tertiary);font-size:11px}.wb-attachments__add[data-v-8cc26a1f]{border:1px solid var(--border-color);background:var(--bg-container);color:var(--text-primary);border-radius:var(--radius-sm,4px);cursor:pointer;padding:3px 10px;font-size:12px;transition:background .15s}.wb-attachments__add[data-v-8cc26a1f]:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary);background:#3b82f614}.wb-attachments__add[data-v-8cc26a1f]:disabled{opacity:.5;cursor:not-allowed}.wb-attachments__list[data-v-8cc26a1f]{flex-wrap:wrap;gap:4px;margin:0;padding:4px;list-style:none;display:flex}.wb-attachment[data-v-8cc26a1f]{border:1px solid var(--border-color);border-radius:var(--radius-sm,4px);background:var(--bg-container);align-items:center;gap:6px;min-width:0;max-width:240px;padding:4px 6px 4px 4px;display:flex}.wb-attachment__icon[data-v-8cc26a1f]{background:var(--bg-code);width:32px;height:32px;color:var(--text-tertiary);letter-spacing:.5px;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;font-weight:600;display:flex;overflow:hidden}.wb-attachment__icon--img[data-v-8cc26a1f]{background:var(--bg-code)}.wb-attachment__icon img[data-v-8cc26a1f]{object-fit:cover;width:100%;height:100%}.wb-attachment__meta[data-v-8cc26a1f]{flex:1;min-width:0}.wb-attachment__name[data-v-8cc26a1f]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.wb-attachment__sub[data-v-8cc26a1f]{color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.wb-attachment__del[data-v-8cc26a1f]{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:3px;flex-shrink:0;width:20px;height:20px;font-size:16px;line-height:1}.wb-attachment__del[data-v-8cc26a1f]:hover{color:#ef4444;background:#ef444414}
|