@deepseekcode/cli 1.0.0 → 1.0.1
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/cli.js +941 -757
- package/package.json +1 -1
- package/web/dist/assets/AgentFlowView-Co1aujcZ.js +1 -0
- package/web/dist/assets/{AgentsView-DvSlePx6.js → AgentsView-CHvg1cY0.js} +1 -1
- package/web/dist/assets/{AskQuestionModal-bOMD8fv0.js → AskQuestionModal-nAvPzz0y.js} +1 -1
- package/web/dist/assets/ChannelConfigView-DPg31Ui7.js +8 -0
- package/web/dist/assets/{FileTreeView-DtYvBKee.js → FileTreeView-DA87bArS.js} +3 -3
- package/web/dist/assets/HookApprovalModal-qN4gBTAu.js +1 -0
- package/web/dist/assets/HookConfigView-CBzuNojA.js +3 -0
- package/web/dist/assets/ModelsView-D4X70i7U.js +1 -0
- package/web/dist/assets/SessionGrid-CG6wC-sh.js +20 -0
- package/web/dist/assets/{SettingsPanel-N5qcaI8b.js → SettingsPanel-UUAdnvtB.js} +3 -3
- package/web/dist/assets/SkillsView-C1s0EA-r.js +1 -0
- package/web/dist/assets/{TerminalView-BFjl4bGT.js → TerminalView-DJitpAf8.js} +2 -2
- package/web/dist/assets/Toast-DJAVHqFo.js +1 -0
- package/web/dist/assets/ToolsView-DvbfsrpK.js +1 -0
- package/web/dist/assets/{hookRisk-DECuVQpA.js → hookRisk-CbXD9F3U.js} +1 -1
- package/web/dist/assets/{icons-B_rAQLge.js → icons-CjYP2PII.js} +146 -86
- package/web/dist/assets/index-B-DFEdP3.js +21 -0
- package/web/dist/assets/index-D2PsJB4J.css +1 -0
- package/web/dist/assets/{markdown-BAhUvdx-.js → markdown-CIsUyqRd.js} +1 -1
- package/web/dist/assets/panels-DP49kN7A.js +1 -0
- package/web/dist/assets/{react-vendor-meeTdQCf.js → react-vendor-DuqM3ddv.js} +1 -1
- package/web/dist/assets/{state-Cke1lss7.js → state-BCeK45RP.js} +1 -1
- package/web/dist/index.html +6 -6
- package/web/dist/assets/AgentFlowView-Cq5rwwHO.js +0 -1
- package/web/dist/assets/ChannelConfigView-ByhL7_5W.js +0 -8
- package/web/dist/assets/HookApprovalModal-BOSEvhFh.js +0 -1
- package/web/dist/assets/HookConfigView-DIytJ_Pb.js +0 -3
- package/web/dist/assets/ModelsView-DOUNg5rX.js +0 -1
- package/web/dist/assets/SessionGrid-DS1RanMd.js +0 -17
- package/web/dist/assets/SkillsView-H0sCdR5e.js +0 -1
- package/web/dist/assets/Toast-DowV4l0w.js +0 -1
- package/web/dist/assets/ToolsView-DSl95dvA.js +0 -1
- package/web/dist/assets/index-BhVUD1px.css +0 -1
- package/web/dist/assets/index-BtIzCXfW.js +0 -20
- package/web/dist/assets/panels-p9MZH4aX.js +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{j as r}from"./markdown-
|
|
1
|
+
import{j as r}from"./markdown-CIsUyqRd.js";import{r as s,an as $,ao as J,p as V,ap as _,D as K,$ as Q,aq as X,ar as Z}from"./icons-CjYP2PII.js";import{x as ee,a as te}from"./terminal-Ck_l6svU.js";import{f as U,g as re,h as C,t as se}from"./index-B-DFEdP3.js";import"./react-vendor-DuqM3ddv.js";import"./state-BCeK45RP.js";const ne={background:"#1e1e1e",foreground:"#d4d4d4",cursor:"#d4d4d4",cursorAccent:"#1e1e1e",black:"#1e1e1e",red:"#f44747",green:"#608b4e",yellow:"#dcdcaa",blue:"#569cd6",magenta:"#c586c0",cyan:"#4ec9b0",white:"#d4d4d4",brightBlack:"#808080",brightRed:"#f44747",brightGreen:"#608b4e",brightYellow:"#dcdcaa",brightBlue:"#569cd6",brightMagenta:"#c586c0",brightCyan:"#4ec9b0",brightWhite:"#ffffff"};function de(){const f=s.useRef(null),a=s.useRef(null),w=s.useRef(null),o=s.useRef(null),[j,M]=s.useState(!1),[g,v]=s.useState(null),[B,R]=s.useState(!0),d=s.useRef(!1),S=s.useRef({isAtBottom:!0}),I=s.useCallback(t=>{const e=a.current;if(!e)return;const n=e.buffer.active;S.current.isAtBottom=n.baseY+e.rows>=n.length,e.write(t,()=>{S.current.isAtBottom&&!d.current&&e.scrollToBottom();const l=e.buffer.active;l.baseY+e.rows>=l.length&&(d.current=!1)})},[]),[k,y]=s.useState(""),p=s.useCallback(()=>{const t=a.current,e=o.current;!t||!e||e.readyState!==WebSocket.OPEN||e.send(JSON.stringify({type:"resize",cols:t.cols,rows:t.rows}))},[]),{status:T,errorMessage:N,port:z}=U(),{setStarting:E,setRunning:A,setStopping:D,setIdle:L,setError:m}=U(),{workspaceDir:x}=re(),b=s.useCallback(()=>{o.current&&(o.current.onclose=null,o.current.onmessage=null,o.current.onerror=null,o.current.onopen=null,o.current.close(),o.current=null)},[]),h=s.useCallback(async t=>{E(),t.writeln("\x1B[90mStarting local terminal...\x1B[0m");try{const e=await C.post("/api/terminal/start",{workspaceDir:x});if(!e.success||!e.data){const c=e.error||"Failed to start terminal";m(c),t.writeln(`\x1B[31m${c}\x1B[0m`);return}const n=e.data.port??e.data.ttydPort,l=e.data.wsUrl;if(!n||!l){const c="Invalid terminal start response";m(c),t.writeln(`\x1B[31m${c}\x1B[0m`);return}A(n,l),y(e.data.workspaceDir||x);const u=new WebSocket(l);o.current=u,u.onopen=()=>{t.clear(),t.focus(),t.writeln("\x1B[32mConnected to local shell\x1B[0m"),setTimeout(()=>{var c,i;(c=w.current)==null||c.fit(),p(),d.current||(i=a.current)==null||i.scrollToBottom()},50)},u.onmessage=c=>{typeof c.data=="string"&&I(c.data)},u.onerror=()=>{m("Terminal connection error")},u.onclose=()=>{o.current===u&&(o.current=null,m("Terminal disconnected"),t.writeln("\x1B[33mTerminal disconnected\x1B[0m"))}}catch(e){const n=e instanceof Error?e.message:"Unknown error";m(n),t.writeln(`\x1B[31m${n}\x1B[0m`)}},[x,E,A,m,p]),F=s.useCallback(async()=>{b(),D();try{await C.post("/api/terminal/stop")}catch{}L()},[b,D,L]);s.useEffect(()=>{f.current&&C.get("/api/terminal/status").then(t=>{const e=t.success&&t.data?t.data:null;v((e==null?void 0:e.terminalAvailable)!==!1),e!=null&&e.workspaceDir&&y(e.workspaceDir)}).catch(()=>v(!1))},[]),s.useEffect(()=>{if(g!==!0||!f.current)return;const t=new ee.Terminal({theme:ne,fontFamily:'"Cascadia Code", "Fira Code", Consolas, "Courier New", monospace',fontSize:14,lineHeight:1.2,cursorBlink:!0,cursorStyle:"block",scrollback:1e4,convertEol:!0}),e=new te.FitAddon;t.loadAddon(e),t.open(f.current),t.focus(),e.fit(),a.current=t,w.current=e,t.writeln("\x1B[36mDeepSeekCode Local Terminal\x1B[0m"),t.writeln("\x1B[90mRun commands directly on this machine.\x1B[0m");const n=t.onData(i=>{var W;((W=o.current)==null?void 0:W.readyState)===WebSocket.OPEN&&o.current.send(i)}),l=t.onScroll(()=>{const i=t.buffer.active;i.baseY+t.rows<i.length&&(d.current=!0,R(!1))}),u=()=>{var i;(i=w.current)==null||i.fit(),p(),d.current||t.scrollToBottom()};window.addEventListener("resize",u);const c=window.setTimeout(()=>h(t),50);return()=>{clearTimeout(c),window.removeEventListener("resize",u),n.dispose(),l.dispose(),F(),t.dispose(),a.current=null}},[g,h,F,p]);const O=s.useCallback(()=>{var e;const t=(e=a.current)==null?void 0:e.getSelection();t&&(navigator.clipboard.writeText(t),se.success("Copied selection"))},[]),P=s.useCallback(()=>{var t,e;(t=a.current)==null||t.clear(),d.current||(e=a.current)==null||e.scrollToBottom()},[]),Y=s.useCallback(()=>{b(),a.current&&(a.current.clear(),h(a.current))},[b,h]),H=s.useCallback(()=>{R(t=>{var n;const e=!t;return d.current=!e,e&&((n=a.current)==null||n.scrollToBottom()),e})},[]),q=s.useCallback(()=>{const t=`Workspace: ${k||x}
|
|
2
2
|
Terminal session: ${z??""}
|
|
3
|
-
`,e=new Blob([t],{type:"text/plain"}),n=URL.createObjectURL(e),l=document.createElement("a");l.href=n,l.download=`terminal-${Date.now()}.log`,l.click(),URL.revokeObjectURL(n)},[x,k,z]),
|
|
3
|
+
`,e=new Blob([t],{type:"text/plain"}),n=URL.createObjectURL(e),l=document.createElement("a");l.href=n,l.download=`terminal-${Date.now()}.log`,l.click(),URL.revokeObjectURL(n)},[x,k,z]),G=s.useMemo(()=>({idle:"Idle",starting:"Connecting",running:"Connected",stopping:"Stopping",error:"Error"})[T],[T]);return g===!1?r.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center bg-[#1e1e1e] gap-3 p-8",children:[r.jsx($,{size:44,className:"text-dark-muted opacity-40"}),r.jsx("div",{className:"text-sm text-dark-muted",children:"Local terminal unavailable"})]}):r.jsxs("div",{className:`flex flex-col bg-[#1e1e1e] border-t border-dark-border ${j?"fixed inset-0 z-50":"flex-1 min-h-0"}`,children:[r.jsxs("div",{className:"flex items-center justify-between gap-3 px-3 py-2 bg-[#252526] border-b border-[#3c3c3c]",children:[r.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[r.jsx($,{size:14,className:"text-dark-muted shrink-0"}),r.jsx("span",{className:"text-xs text-dark-muted shrink-0",children:"Terminal"}),r.jsx("span",{className:"text-xs text-dark-muted truncate",children:k||x}),r.jsxs("span",{className:"text-xs text-dark-muted",children:["[",G,"]"]}),N&&r.jsx("span",{className:"text-xs text-accent-red truncate max-w-[240px]",children:N})]}),r.jsxs("div",{className:"flex items-center gap-1 flex-wrap justify-end",children:[r.jsx("button",{onClick:H,className:`p-1 rounded hover:bg-[#3c3c3c] ${B?"text-accent-blue":"text-dark-muted"} hover:text-dark-text`,title:B?"璺熼殢杈撳嚭锛氬紑":"璺熼殢杈撳嚭锛氬叧",children:r.jsx(J,{size:12})}),r.jsx("button",{onClick:Y,className:"p-1 rounded hover:bg-[#3c3c3c] text-dark-muted hover:text-dark-text",title:"Restart",children:r.jsx(V,{size:12})}),r.jsx("button",{onClick:O,className:"p-1 rounded hover:bg-[#3c3c3c] text-dark-muted hover:text-dark-text",title:"Copy",children:r.jsx(_,{size:12})}),r.jsx("button",{onClick:q,className:"p-1 rounded hover:bg-[#3c3c3c] text-dark-muted hover:text-dark-text",title:"Download log",children:r.jsx(K,{size:12})}),r.jsx("button",{onClick:P,className:"p-1 rounded hover:bg-[#3c3c3c] text-dark-muted hover:text-dark-text",title:"Clear",children:r.jsx(Q,{size:12})}),r.jsx("button",{onClick:()=>M(t=>!t),className:"p-1 rounded hover:bg-[#3c3c3c] text-dark-muted hover:text-dark-text",title:"Fullscreen",children:j?r.jsx(X,{size:12}):r.jsx(Z,{size:12})})]})]}),r.jsx("div",{ref:f,className:"flex-1 overflow-hidden"})]})}export{de as TerminalView,de as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./markdown-CIsUyqRd.js";import{r}from"./icons-CjYP2PII.js";r.createContext(null);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as s}from"./markdown-CIsUyqRd.js";import{r as a,p as y,o as A,O as k,y as $,a as R,i as F,a6 as v,a7 as M,a8 as O}from"./icons-CjYP2PII.js";import{u as D,a as w,b as P}from"./index-B-DFEdP3.js";import"./react-vendor-DuqM3ddv.js";import"./state-BCeK45RP.js";function G(){const m=D(e=>e.mode),u=m==="normal"?"act":P(m),[d,p]=a.useState([]),[l,b]=a.useState([]),[C,g]=a.useState(!0),[h,i]=a.useState(null),[r,z]=a.useState(""),[c,f]=a.useState(null),[n,j]=a.useState(null),o=async()=>{g(!0),i(null);const e=await w.tools.list();e.success&&Array.isArray(e.data)?(p(e.data),b(e.data)):e.success&&e.data&&!Array.isArray(e.data)?i("服务端返回的工具数据格式异常"):i(e.error||"加载工具失败"),g(!1)};a.useEffect(()=>{o()},[]),a.useEffect(()=>{let e=d;r&&(e=e.filter(t=>t.name.toLowerCase().includes(r.toLowerCase())||t.description.toLowerCase().includes(r.toLowerCase()))),c&&(e=e.filter(t=>t.category===c)),b(e)},[r,c,d]);const S=async(e,t)=>{(await w.tools.toggle(e,!t)).success&&p(L=>L.map(x=>x.id===e?{...x,enabled:!t}:x))},T=[...new Set(d.map(e=>e.category))],E=e=>({file:"bg-accent-blue/20 text-accent-blue",search:"bg-accent-green/20 text-accent-green",git:"bg-accent-yellow/20 text-accent-yellow",web:"bg-accent-purple/20 text-accent-purple",system:"bg-accent-red/20 text-accent-red"})[e]||"bg-dark-hover text-dark-muted";return C?s.jsx("div",{className:"flex-1 flex items-center justify-center",children:s.jsxs("div",{className:"text-center",children:[s.jsx(y,{size:32,className:"animate-spin mx-auto mb-2 text-accent-blue"}),s.jsx("p",{className:"text-dark-muted",children:"加载中..."})]})}):h?s.jsx("div",{className:"flex-1 flex items-center justify-center",children:s.jsxs("div",{className:"text-center",children:[s.jsx(A,{size:32,className:"mx-auto mb-2 text-accent-red"}),s.jsx("p",{className:"text-accent-red mb-4",children:h}),s.jsx("button",{onClick:o,className:"px-4 py-2 bg-accent-blue text-white rounded-lg",children:"重试"})]})}):s.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden p-4",children:[s.jsxs("div",{className:"flex items-center justify-between mb-4",children:[s.jsxs("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[s.jsx(k,{size:20}),"工具列表",s.jsxs("span",{className:"text-sm font-normal text-dark-muted",children:["(",l.length,")"]})]}),s.jsxs("button",{onClick:o,className:"flex items-center gap-2 px-3 py-1.5 bg-dark-surface border border-dark-border rounded hover:bg-dark-hover transition-colors",children:[s.jsx(y,{size:14}),"刷新"]})]}),s.jsxs("div",{className:"flex gap-3 mb-4",children:[s.jsxs("div",{className:"flex-1 relative",children:[s.jsx($,{size:16,className:"absolute left-3 top-1/2 -translate-y-1/2 text-dark-muted"}),s.jsx("input",{type:"text",value:r,onChange:e=>z(e.target.value),placeholder:"搜索工具...",className:"w-full pl-10 pr-4 py-2 bg-dark-surface border border-dark-border rounded-lg text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none"})]}),s.jsxs("div",{className:"flex gap-1",children:[s.jsx("button",{onClick:()=>f(null),className:`px-3 py-2 rounded-lg text-sm transition-colors ${c?"bg-dark-surface border border-dark-border hover:bg-dark-hover":"bg-accent-blue text-white"}`,children:"全部"}),T.slice(0,4).map(e=>s.jsx("button",{onClick:()=>f(e),className:`px-3 py-2 rounded-lg text-sm transition-colors ${c===e?"bg-accent-blue text-white":"bg-dark-surface border border-dark-border hover:bg-dark-hover"}`,children:e},e))]})]}),s.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto custom-scrollbar",children:s.jsxs("div",{className:"space-y-2",children:[l.map(e=>s.jsxs("div",{className:`bg-dark-surface border rounded-lg transition-colors ${e.enabled?"border-dark-border":"border-dark-border opacity-60"}`,children:[s.jsxs("div",{className:"flex items-center justify-between p-4 cursor-pointer",onClick:()=>j(n===e.id?null:e.id),children:[s.jsxs("div",{className:"flex items-center gap-3 flex-1",children:[s.jsx("button",{onClick:t=>{t.stopPropagation(),j(n===e.id?null:e.id)},className:"text-dark-muted",children:n===e.id?s.jsx(R,{size:16}):s.jsx(F,{size:16})}),s.jsx("span",{className:`px-2 py-0.5 rounded text-xs ${E(e.category)}`,children:e.category}),s.jsx("span",{className:"font-medium",children:e.name}),u==="plan"&&(e.category==="File Operation"||e.category==="Execution")&&s.jsx(v,{size:14,className:"text-accent-red ml-1.5"}),u==="plan"&&(e.category==="File Operation"||e.category==="Execution")&&s.jsx(v,{size:14,className:"text-accent-red ml-1.5"})]}),s.jsx("div",{className:"flex items-center gap-3",children:s.jsx("button",{onClick:t=>{t.stopPropagation(),S(e.id,e.enabled)},className:`p-1.5 rounded transition-colors ${e.enabled?"text-accent-green hover:bg-accent-green/10":"text-dark-muted hover:bg-dark-hover"}`,title:e.enabled?"禁用":"启用",children:e.enabled?s.jsx(M,{size:24}):s.jsx(O,{size:24})})})]}),n===e.id&&s.jsxs("div",{className:"px-4 pb-4 border-t border-dark-border",children:[s.jsx("p",{className:"text-sm text-dark-muted mt-3 mb-3",children:e.description}),e.params&&e.params.length>0&&s.jsxs("div",{children:[s.jsx("div",{className:"text-xs text-dark-muted mb-2",children:"参数"}),s.jsx("div",{className:"space-y-1",children:e.params.map((t,N)=>s.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[s.jsxs("code",{className:"px-1.5 py-0.5 bg-dark-bg rounded text-accent-blue",children:[t.name,t.required&&s.jsx("span",{className:"text-accent-red",children:"*"})]}),s.jsxs("span",{className:"text-dark-muted text-xs",children:["(",t.type,")"]}),s.jsx("span",{className:"text-dark-muted text-xs",children:t.description})]},N))})]})]})]},e.id)),l.length===0&&s.jsxs("div",{className:"text-center text-dark-muted py-8",children:[s.jsx(k,{size:48,className:"mx-auto mb-2 opacity-50"}),s.jsx("p",{children:"暂无工具"})]})]})})]})}export{G as ToolsView,G as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{q as t,r as s}from"./index-
|
|
1
|
+
import{q as t,r as s}from"./index-B-DFEdP3.js";function o(e,r){switch(t(e,r)){case"critical":return{level:"CRITICAL",reasonKey:"risk_critical"};case"high":return{level:"HIGH",reasonKey:/rm\s+-rf|sudo|chmod\s+777|curl.*\|\s*(ba)?sh|wget.*-O|>\/dev\/|mkfs/i.test(r)?"risk_critical_cmd":/write|edit|save|upload|deploy|publish/i.test(e)?"risk_high_file":/install|uninstall|npm|pip|cargo|gem|apt|brew|choco|yum|dnf/i.test(e)?"risk_high_pkg":"risk_high_shell"};case"low":return{level:"LOW",reasonKey:"risk_low"};default:return{level:"MEDIUM",reasonKey:/git|commit|push|merge|rebase/i.test(e)?"risk_git":"risk_network"}}}const b={CRITICAL:{bg:"bg-red-900/20",border:"border-red-500/40",text:"text-red-400",badge:"bg-red-500/20 text-red-400 border-red-500/30",icon:"🚨"},HIGH:{bg:"bg-orange-900/15",border:"border-orange-500/30",text:"text-orange-400",badge:"bg-orange-500/20 text-orange-400 border-orange-500/30",icon:"⚠️"},MEDIUM:{bg:"bg-yellow-900/10",border:"border-yellow-500/25",text:"text-yellow-400",badge:"bg-yellow-500/15 text-yellow-400 border-yellow-500/25",icon:"📋"},LOW:{bg:"bg-blue-900/10",border:"border-blue-500/25",text:"text-blue-400",badge:"bg-blue-500/15 text-blue-400 border-blue-500/25",icon:"✅"}};function a(e,r){return s(e,r)}export{b as R,o as c,a as e};
|