@opensumi/cli-engine 3.8.3-next-1746617857.0 → 3.8.3-next-1746625865.0

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.
@@ -2340,7 +2340,7 @@ WARNING: This link could potentially be dangerous`)){const l=window.open();if(l)
2340
2340
  right: 0;
2341
2341
  bottom: 0;
2342
2342
  left: 0;
2343
- z-index: 1000;
2343
+ z-index: 10000;
2344
2344
  height: 100%;
2345
2345
  background-color: rgba(0, 0, 0, 0.45);
2346
2346
  }
@@ -3374,7 +3374,7 @@ WARNING: This link could potentially be dangerous`)){const l=window.open();if(l)
3374
3374
  right: 0;
3375
3375
  bottom: 0;
3376
3376
  left: 0;
3377
- z-index: 1000;
3377
+ z-index: 10000;
3378
3378
  overflow: auto;
3379
3379
  outline: 0;
3380
3380
  -webkit-overflow-scrolling: touch;
@@ -3467,7 +3467,7 @@ WARNING: This link could potentially be dangerous`)){const l=window.open();if(l)
3467
3467
  right: 0;
3468
3468
  bottom: 0;
3469
3469
  left: 0;
3470
- z-index: 1000;
3470
+ z-index: 10000;
3471
3471
  height: 100%;
3472
3472
  background-color: rgba(0, 0, 0, 0.45);
3473
3473
  filter: alpha(opacity=50);
@@ -31546,7 +31546,7 @@ ${f.slice(1).join(`
31546
31546
  `).map(w=>{if(w.startsWith("@@")){const[,,,T,D]=w.match(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/);return new p.Range(parseInt(T,10),0,parseInt(T,10)+parseInt(D,10)-1,0)}return null}).filter(w=>w!==null);return{diff:A,rangesFromDiffHunk:S}}getDiagnosticInfos(l,y){return this.markerService.getManager().getMarkers({resource:l}).filter(A=>A.severity>=c.MarkerSeverity.Warning&&y.some(S=>S.containsPosition(new p.Position(A.startLineNumber,A.startColumn))))}}t.BaseApplyService=E,n.__decorate([(0,o.Autowired)(a.IChatInternalService),n.__metadata("design:type",h.ChatInternalService)],E.prototype,"chatInternalService",void 0),n.__decorate([(0,o.Autowired)(c.AppConfig),n.__metadata("design:type",Object)],E.prototype,"appConfig",void 0),n.__decorate([(0,o.Autowired)(_.WorkbenchEditorService),n.__metadata("design:type",_.WorkbenchEditorService)],E.prototype,"editorService",void 0),n.__decorate([(0,o.Autowired)(a.InlineDiffServiceToken),n.__metadata("design:type",Object)],E.prototype,"inlineDiffService",void 0),n.__decorate([(0,o.Autowired)(m.IMarkerService),n.__metadata("design:type",Object)],E.prototype,"markerService",void 0),n.__decorate([(0,o.Autowired)(v.IEditorDocumentModelService),n.__metadata("design:type",Object)],E.prototype,"editorDocumentModelService",void 0),n.__decorate([(0,o.Autowired)(c.IAIReporter),n.__metadata("design:type",Object)],E.prototype,"aiReporter",void 0),n.__decorate([(0,c.OnEvent)(v.EditorGroupCloseEvent),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[v.EditorGroupCloseEvent]),n.__metadata("design:returntype",void 0)],E.prototype,"onEditorGroupClose",null),n.__decorate([(0,c.OnEvent)(v.EditorGroupOpenEvent),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[v.EditorGroupOpenEvent]),n.__metadata("design:returntype",Promise)],E.prototype,"onEditorGroupOpen",null)},75279:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPConfigView=void 0;const n=e(85608),r=n.__importDefault(e(53373)),o=n.__importStar(e(14041)),c=e(97267),_=e(41869),v=e(43718),m=e(19413),p=n.__importDefault(e(76599)),s=e(51750),g=()=>{const a=(0,_.useInjectable)(v.MCPConfigServiceToken),[h,u]=o.default.useState([]),[d,E]=o.default.useState(!1),[f,l]=o.default.useState(),[y,b]=o.default.useState(),[A,S]=o.default.useState(a.isInitialized),w=(0,o.useCallback)(async()=>{const P=await a.getServers();u(P)},[a]);o.default.useEffect(()=>{w();const P=a.onMCPServersChange(k=>{k&&S(!0),w()});return()=>{P.dispose()}},[w]);const T=(0,o.useCallback)(async(P,k)=>{try{b(P),await a.controlServer(P,k),await w(),b(void 0)}catch{b(void 0)}},[a,w]),D=(0,o.useCallback)(()=>{l(void 0),E(!0)},[]),I=(0,o.useCallback)(async P=>{const k=await a.getServerConfigByName(P.name);k&&(l(k),E(!0))},[a]),O=(0,o.useCallback)(async P=>{await a.deleteServer(P),await w()},[a,w]),M=(0,o.useCallback)(async(P,k)=>{E(!1),await a.saveServer(P,k),P?.enabled&&(b(k.name),await a.controlServer(k.name,!0),b(void 0)),await w()},[a,w]),R=(0,o.useCallback)(async P=>{b(P.name),await a.syncServer(P.name),await w(),b(void 0)},[a,w]);return o.default.createElement("div",{className:p.default.container},o.default.createElement("div",{className:p.default.header},o.default.createElement("div",null,o.default.createElement("h2",{className:p.default.title},"MCP Servers"),o.default.createElement("p",{className:p.default.description},(0,v.localize)("ai.native.mcp.manage.connections"))),o.default.createElement("button",{className:p.default.actionButton,onClick:D},o.default.createElement(c.Icon,{icon:"plus",className:p.default.actionButtonIcon}),(0,v.localize)("ai.native.mcp.addMCPServer.title"))),o.default.createElement("div",{className:p.default.serversList},h.map(P=>o.default.createElement("div",{key:P.name,className:p.default.serverItem},o.default.createElement("div",{className:p.default.serverHeader},o.default.createElement("div",{className:p.default.serverTitleRow},o.default.createElement("h3",{className:p.default.serverName},P.name,o.default.createElement("span",{className:(0,r.default)(p.default.serverStatusIcon,P.isStarted?p.default.active:p.default.inactive)}))),o.default.createElement("div",{className:p.default.serverActions},o.default.createElement(c.Popover,{id:"mcp-server-action-popover",trigger:c.PopoverTriggerType.hover,content:P.isStarted?(0,v.localize)("ai.native.mcp.disable.title"):(0,v.localize)("ai.native.mcp.enable.title")},o.default.createElement(c.Button,{type:"default",className:(0,r.default)(p.default.serverActionButton,P.isStarted&&p.default.active),onClick:()=>T(P.name,!P.isStarted)},o.default.createElement("i",{className:`codicon ${y===P.name||!A&&P.name!==m.BUILTIN_MCP_SERVER_NAME&&!P.isStarted?"codicon-loading kt-icon-loading":P.isStarted?"codicon-check":"codicon-circle"}`}),o.default.createElement("span",null,(0,v.localize)(P.isStarted?"ai.native.mcp.enabled":"ai.native.mcp.disabled")))),P.name!==m.BUILTIN_MCP_SERVER_NAME&&o.default.createElement(c.Button,{type:"icon",iconClass:"codicon codicon-edit",className:p.default.iconButton,title:(0,v.localize)("ai.native.mcp.tool.action.edit"),onClick:()=>I(P)}),P.name!==m.BUILTIN_MCP_SERVER_NAME&&o.default.createElement(c.Button,{type:"icon",iconClass:"codicon codicon-sync",className:p.default.iconButton,title:(0,v.localize)("ai.native.mcp.tool.action.sync"),onClick:()=>R(P)}),P.name!==m.BUILTIN_MCP_SERVER_NAME&&o.default.createElement(c.Button,{type:"icon",iconClass:"codicon codicon-trash",className:p.default.iconButton,title:(0,v.localize)("ai.native.mcp.tool.action.delete"),onClick:()=>O(P.name)}))),o.default.createElement("div",{className:p.default.serverDetail},P.type&&o.default.createElement("div",{className:p.default.detailRow},o.default.createElement("span",{className:p.default.detailLabel},"Type:"),o.default.createElement(c.Badge,{className:(0,r.default)(p.default.serverType,p.default.typeTag)},a.getReadableServerType(P.type)))),P.tools&&P.tools.length>0&&o.default.createElement("div",{className:p.default.serverDetail},o.default.createElement("div",{className:p.default.detailRow},o.default.createElement("span",{className:p.default.detailLabel},"Tools:"),o.default.createElement("span",{className:p.default.detailContent},P.tools.map((k,F)=>o.default.createElement(c.Badge,{key:F,className:p.default.toolTag,title:k.description},k.name))))),P.command&&o.default.createElement("div",{className:p.default.serverDetail},o.default.createElement("div",{className:p.default.detailRow},o.default.createElement("span",{className:p.default.detailLabel},"Command:"),o.default.createElement("span",{className:p.default.detailContent},P.command))),P.url&&o.default.createElement("div",{className:p.default.serverDetail},o.default.createElement("div",{className:p.default.detailRow},o.default.createElement("span",{className:p.default.detailLabel},"Server Link:"),o.default.createElement("span",{className:(0,r.default)(p.default.detailContent,p.default.link)},P.url)))))),o.default.createElement(s.MCPServerForm,{visible:d,initialData:f,servers:h,onSave:P=>M(f,P),onCancel:()=>E(!1)}))};t.MCPConfigView=g},51750:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPServerForm=void 0;const n=e(85608),r=n.__importDefault(e(53373)),o=n.__importStar(e(14041)),c=e(97267),_=e(48412),v=e(53017),m=e(41869),p=e(43718),s=e(72665),g=e(69820),a=n.__importDefault(e(83761)),h=({visible:u,initialData:d,onSave:E,onCancel:f,servers:l})=>{const[y,b]=(0,o.useState)(()=>({name:"",command:"",args:[],env:{},type:g.MCP_SERVER_TYPE.STDIO,...d})),A=(0,m.useInjectable)(s.IMessageService),[S,w]=(0,o.useState)(()=>{var B;return((B=d?.args)===null||B===void 0?void 0:B.join(" "))||""}),[T,D]=(0,o.useState)(()=>d?.env?Object.entries(d.env).map(([B,j])=>`${B}=${j}`).join(`
31547
31547
  `):"");(0,o.useEffect)(()=>{var B;b({name:"",command:"",args:[],env:{},type:g.MCP_SERVER_TYPE.STDIO,...d}),w(((B=d?.args)===null||B===void 0?void 0:B.join(" "))||""),D(d?.env?Object.entries(d.env).map(([j,W])=>`${j}=${W}`).join(`
31548
31548
  `):"")},[d]);const I=(0,o.useCallback)(B=>{var j,W;if(B.name.trim()==="")return A.error((0,p.localize)("ai.native.mcp.name.isRequired")),!1;if(!d&&l.some(Q=>Q.name.toLocaleLowerCase()===B.name.toLocaleLowerCase()))return A.error((0,p.formatLocalize)("ai.native.mcp.serverNameExists",B.name)),!1;if(B.type===g.MCP_SERVER_TYPE.SSE){const Q=((j=B.url)===null||j===void 0?void 0:j.trim())!=="";return Q||A.error((0,p.localize)("ai.native.mcp.url.isRequired")),Q}const U=((W=B.command)===null||W===void 0?void 0:W.trim())!=="";return U||A.error((0,p.localize)("ai.native.mcp.command.isRequired")),U},[l,d]),O=(0,o.useCallback)(B=>{var j;if(B.preventDefault(),!I(y))return;const U={...y};if(y.type===g.MCP_SERVER_TYPE.SSE)U.url=(j=U.url)===null||j===void 0?void 0:j.trim();else{const Q=S.split(" ").filter(Boolean),V=T.split(`
31549
- `).filter(Boolean).reduce((G,Y)=>{const[H,$]=Y.split("=");return H&&$&&(G[H.trim()]=$.trim()),G},{});U.args=Q,U.env=V}b({...y,name:"",command:"",url:"",args:[],env:{}}),E(U)},[y,S,T,E,I]),M=(0,o.useCallback)(B=>{b({...y,command:B.target.value})},[y,S]),R=(0,o.useCallback)(B=>{w(B.target.value)},[S]),P=(0,o.useCallback)(B=>{D(B.target.value)},[T]),k=(0,o.useCallback)(B=>{b({...y,url:B.target.value})},[y]),F=(0,o.useCallback)(B=>{b({...y,type:B,command:"",args:[],env:{},url:""})},[y]),L=(0,o.useCallback)(()=>y?.type===g.MCP_SERVER_TYPE.STDIO?o.default.createElement(o.default.Fragment,null,o.default.createElement("div",{className:a.default.formItem},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.command")),o.default.createElement("input",{type:"text",value:y.command,onChange:M,placeholder:(0,p.localize)("ai.native.mcp.command.placeHolder"),required:!0})),o.default.createElement("div",{className:a.default.formItem},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.args")),o.default.createElement("textarea",{value:S,onChange:R,placeholder:(0,p.localize)("ai.native.mcp.args.placeHolder"),rows:3})),o.default.createElement("div",{className:a.default.formItem},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.env")),o.default.createElement("textarea",{value:T,onChange:P,placeholder:(0,p.localize)("ai.native.mcp.env.placeHolder"),rows:3}))):o.default.createElement(o.default.Fragment,null,o.default.createElement("div",{className:a.default.formItem},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.url")),o.default.createElement("textarea",{value:y.url,onChange:k,placeholder:(0,p.localize)("ai.native.mcp.url.placeHolder"),rows:3}))),[y,S,T]);return o.default.createElement(v.Modal,{title:d?(0,p.localize)("ai.native.mcp.editMCPServer.title"):(0,p.localize)("ai.native.mcp.addMCPServer.title"),visible:u,onCancel:f,centered:!0,width:600,footer:null,style:{background:"var(--editor-background)"}},o.default.createElement("form",{className:a.default.form,onSubmit:B=>B.preventDefault()},o.default.createElement("div",{className:a.default.formRow},o.default.createElement("div",{className:(0,r.default)(a.default.formItem,a.default.formItemName)},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.name")),o.default.createElement("input",{type:"text",value:y.name,onChange:B=>b({...y,name:B.target.value}),placeholder:(0,p.localize)("ai.native.mcp.name.placeHolder"),required:!0})),o.default.createElement("div",{className:(0,r.default)(a.default.formItem,a.default.formItemType)},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.type")),o.default.createElement(c.Select,{size:"large",value:y.type,options:[{label:(0,p.localize)("ai.native.mcp.stdio"),value:g.MCP_SERVER_TYPE.STDIO},{label:(0,p.localize)("ai.native.mcp.sse"),value:g.MCP_SERVER_TYPE.SSE}],className:a.default.formItemSelect,onChange:F}))),L(),o.default.createElement("div",{className:a.default.formActions},o.default.createElement(_.Button,{onClick:f,type:"primary",className:a.default.secondaryButton},(0,p.localize)("ai.native.mcp.buttonCancel")),o.default.createElement(_.Button,{onClick:O,type:"primary"},d?(0,p.localize)("ai.native.mcp.buttonUpdate"):(0,p.localize)("ai.native.mcp.buttonSave")))))};t.MCPServerForm=h},27397:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPConfigCommandContribution=t.MCPConfigCommands=void 0;const n=e(85608),r=e(76003),o=e(41869),c=e(43718),_=e(54414),v=e(5297),m=e(33108);var p;(function(g){g.OPEN_MCP_CONFIG={id:"mcp.openConfig",label:"Open MCP Configuration"},g.OPEN_MCP_CONFIG_FILE={id:"mcp.openConfigFile",label:"Open MCP Configuration (JSON)"}})(p||(t.MCPConfigCommands=p={}));let s=class{registerCommands(a){a.registerCommand(p.OPEN_MCP_CONFIG,{execute:()=>{const h=new o.URI().withScheme(v.MCP_CONFIG_COMPONENTS_SCHEME_ID);this.editorService.open(h,{preview:!1,focus:!0})}}),a.registerCommand(p.OPEN_MCP_CONFIG_FILE,{execute:()=>{this.mcpConfigService.openConfigFile()}})}};t.MCPConfigCommandContribution=s,n.__decorate([(0,r.Autowired)(_.WorkbenchEditorService),n.__metadata("design:type",_.WorkbenchEditorService)],s.prototype,"editorService",void 0),n.__decorate([(0,r.Autowired)(c.MCPConfigServiceToken),n.__metadata("design:type",m.MCPConfigService)],s.prototype,"mcpConfigService",void 0),t.MCPConfigCommandContribution=s=n.__decorate([(0,c.Domain)(o.CommandContribution)],s)},5297:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPConfigContribution=t.MCP_CONFIG_COMPONENTS_SCHEME_ID=void 0;const n=e(85608),r=e(76003),o=e(97267),c=e(93899),_=e(39496),v=e(26542),m=e(43718),p=e(82196),s=e(7443),g=e(10560),a=e(75279),h=e(27397),u="opensumi-mcp-config-viewer";t.MCP_CONFIG_COMPONENTS_SCHEME_ID="mcp-config";let d=class{registerEditorComponent(f){f.registerEditorComponent({uid:u,scheme:t.MCP_CONFIG_COMPONENTS_SCHEME_ID,component:a.MCPConfigView,renderMode:p.EditorComponentRenderMode.ONE_PER_WORKBENCH}),f.registerEditorComponentResolver(t.MCP_CONFIG_COMPONENTS_SCHEME_ID,(l,y)=>{y.push({type:"component",componentId:u})})}registerResource(f){f.registerResourceProvider({scheme:t.MCP_CONFIG_COMPONENTS_SCHEME_ID,provideResource:async l=>{const{configType:y}=l.getParsedQuery();return{uri:l,name:(0,m.localize)("ai.native.mcp.config.title"),icon:(0,o.getIcon)("mcp"),metadata:{configType:y}}}})}registerMenus(f){f.registerMenuItem(_.MenuId.EditorTitle,{command:h.MCPConfigCommands.OPEN_MCP_CONFIG_FILE.id,iconClass:(0,o.getIcon)("open"),group:"navigation",order:4,when:`resourceScheme == ${t.MCP_CONFIG_COMPONENTS_SCHEME_ID}`}),f.registerMenuItem(_.MenuId.EditorTitle,{command:h.MCPConfigCommands.OPEN_MCP_CONFIG.id,iconClass:(0,o.getIcon)("open"),group:"navigation",order:4,when:"resourceFilename =~ /mcp.json/"})}};t.MCPConfigContribution=d,n.__decorate([(0,r.Autowired)(g.IWorkspaceService),n.__metadata("design:type",Object)],d.prototype,"workspaceService",void 0),n.__decorate([(0,r.Autowired)(s.IconService),n.__metadata("design:type",s.IconService)],d.prototype,"iconService",void 0),n.__decorate([(0,r.Autowired)(),n.__metadata("design:type",v.LabelService)],d.prototype,"labelService",void 0),t.MCPConfigContribution=d=n.__decorate([(0,m.Domain)(p.BrowserEditorContribution,c.MenuContribution)],d)},33108:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPConfigService=void 0;const n=e(85608),r=e(76003),o=e(41869),c=e(78132),_=e(43718),v=e(54414),m=e(72665),p=e(19413),s=e(64811),g=e(69820),a=e(45331);let h=class extends _.Disposable{constructor(){super(),this.whenReadyDeferred=new _.Deferred,this._isInitialized=!1,this.mcpServersChangeEventEmitter=new _.Emitter,this.init(),this.disposables.push(this.mcpServerProxyService.onChangeMCPServers(()=>{this.fireMCPServersChange()})),this.disposables.push(this.preferenceService.onSpecificPreferenceChange("mcp",()=>{this.fireMCPServersChange()}))}async init(){this.chatStorage=await this.storageProvider(_.STORAGE_NAMESPACE.CHAT),this.whenReadyDeferred.resolve()}get whenReady(){return this.whenReadyDeferred.promise}get isInitialized(){return this._isInitialized}get onMCPServersChange(){return this.mcpServersChangeEventEmitter.event}fireMCPServersChange(d=!1){d&&(this._isInitialized=!0),this.mcpServersChangeEventEmitter.fire(d)}async getServers(){const{value:d,scope:E}=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0);if(E===_.PreferenceScope.Default){const S=(await this.mcpServerProxyService.$getServers()).find(w=>w.name===p.BUILTIN_MCP_SERVER_NAME);return S?[S]:[]}const f=Object.keys(d.mcpServers).map(A=>{const S=d.mcpServers[A];return S.url?{name:A,type:g.MCP_SERVER_TYPE.SSE,url:S.url}:{name:A,type:g.MCP_SERVER_TYPE.STDIO,command:S.command,args:S.args,env:S.env}}),l=await this.mcpServerProxyService.$getServers(),y=l.find(A=>A.name===p.BUILTIN_MCP_SERVER_NAME),b=f?.map(A=>{const S=l.find(w=>w.name===A.name);return S||this.sumiMCPServerBackendProxy.$addOrUpdateServer(A),{...A,isStarted:S?.isStarted||!1,tools:S?.tools||[]}});return y&&b.unshift(y),b}async controlServer(d,E){try{E?await this.mcpServerProxyService.$startServer(d):await this.mcpServerProxyService.$stopServer(d);const f=this.chatStorage.get(s.MCPServersEnabledKey,[p.BUILTIN_MCP_SERVER_NAME]),l=new Set(f);E?l.add(d):l.delete(d),this.chatStorage.set(s.MCPServersEnabledKey,Array.from(l))}catch(f){const l=f.message||f;throw this.logger.error(`Failed to ${E?"start":"stop"} server ${d}:`,l),this.messageService.error(l),f}}async saveServer(d,E){await this.whenReady;const{value:f}=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0),l=f.mcpServers;let y;E.type===g.MCP_SERVER_TYPE.SSE?y={url:E.url}:y={command:E.command,args:E.args,env:E.env},d?.name&&delete l[d.name],l[E.name]=y,await this.sumiMCPServerBackendProxy.$addOrUpdateServer(E),d?.enabled&&await this.sumiMCPServerBackendProxy.$removeServer(d.name),await this.preferenceService.set("mcp",{mcpServers:l})}async deleteServer(d){const{value:E}=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0),f=E.mcpServers;f[d]&&(delete f[d],await this.sumiMCPServerBackendProxy.$removeServer(d),await this.preferenceService.set("mcp",{mcpServers:f}))}async syncServer(d){try{await this.sumiMCPServerBackendProxy.$syncServer(d)}catch(E){this.logger.error(`Failed to sync server ${d}:`,E),this.messageService.error(E.message||E)}}async getServerConfigByName(d){const{value:E}=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0);await this.whenReady;const f=this.chatStorage.get(s.MCPServersEnabledKey,[p.BUILTIN_MCP_SERVER_NAME]),l=E.mcpServers[d];if(l)return l.url?{name:d,type:g.MCP_SERVER_TYPE.SSE,url:l.url,enabled:f.includes(d)}:{name:d,type:g.MCP_SERVER_TYPE.STDIO,command:l.command,args:l.args,env:l.env,enabled:f.includes(d)}}getReadableServerType(d){switch(d){case g.MCP_SERVER_TYPE.STDIO:return(0,_.localize)("ai.native.mcp.type.stdio");case g.MCP_SERVER_TYPE.SSE:return(0,_.localize)("ai.native.mcp.type.sse");case g.MCP_SERVER_TYPE.BUILTIN:return(0,_.localize)("ai.native.mcp.type.builtin");default:return d}}async openConfigFile(){let d=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0);d.scope===_.PreferenceScope.Default&&(await this.preferenceService.set("mcp",{mcpServers:{}},_.PreferenceScope.Workspace),d=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0));const E=d.configUri;E&&this.workbenchEditorService.open(E,{preview:!1})}};t.MCPConfigService=h,n.__decorate([(0,r.Autowired)(p.SumiMCPServerProxyServicePath),n.__metadata("design:type",Object)],h.prototype,"sumiMCPServerBackendProxy",void 0),n.__decorate([(0,r.Autowired)(a.MCPServerProxyService),n.__metadata("design:type",a.MCPServerProxyService)],h.prototype,"mcpServerProxyService",void 0),n.__decorate([(0,r.Autowired)(c.PreferenceService),n.__metadata("design:type",Object)],h.prototype,"preferenceService",void 0),n.__decorate([(0,r.Autowired)(m.IMessageService),n.__metadata("design:type",Object)],h.prototype,"messageService",void 0),n.__decorate([(0,r.Autowired)(_.StorageProvider),n.__metadata("design:type",Function)],h.prototype,"storageProvider",void 0),n.__decorate([(0,r.Autowired)(v.WorkbenchEditorService),n.__metadata("design:type",v.WorkbenchEditorService)],h.prototype,"workbenchEditorService",void 0),n.__decorate([(0,r.Autowired)(o.ILogger),n.__metadata("design:type",Object)],h.prototype,"logger",void 0),t.MCPConfigService=h=n.__decorate([(0,r.Injectable)(),n.__metadata("design:paramtypes",[])],h)},33368:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPFolderPreferenceProvider=void 0;const n=e(85608),r=e(76003),o=e(91825);let c=class extends o.FolderFilePreferenceProvider{parse(v){const m=super.parse(v);if(m!==void 0)return{mcp:{...m}}}getPath(v){if(v==="mcp")return[];if(v.startsWith("mcp."))return[v.substr(4)]}};t.MCPFolderPreferenceProvider=c,t.MCPFolderPreferenceProvider=c=n.__decorate([(0,r.Injectable)()],c)},55003:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPPreferencesContribution=t.MCPResourceProvider=void 0;const n=e(85608),r=e(76003),o=e(41869),c=e(57517),_=e(924);let v=class{provideResource(s){return{supportsRevive:!0,name:(0,o.localize)("menu-bar.title.debug"),icon:(0,o.getIcon)("debug"),uri:s}}provideResourceSubname(){return null}async shouldCloseResource(){return!0}};t.MCPResourceProvider=v,t.MCPResourceProvider=v=n.__decorate([(0,r.Injectable)()],v);let m=class{constructor(){this.schema=_.MCPPreferencesSchema,this.name="mcp"}registerResource(s){s.registerResourceProvider(this.prefResourceProvider)}registerSchema(s){s.registerSchema(_.MCPSchemaUri,_.MCPSchema,["mcp.json"])}};t.MCPPreferencesContribution=m,n.__decorate([(0,r.Autowired)(v),n.__metadata("design:type",v)],m.prototype,"prefResourceProvider",void 0),t.MCPPreferencesContribution=m=n.__decorate([(0,o.Domain)(o.PreferenceContribution,o.PreferenceConfiguration,c.BrowserEditorContribution,o.JsonSchemaContribution)],m)},924:(x,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPSchema=t.MCPPreferencesSchema=t.MCPSchemaUri=void 0,t.MCPSchemaUri="vscode://schemas/mcp/user",t.MCPPreferencesSchema={type:"object",scope:"resource",properties:{mcp:{$ref:t.MCPSchemaUri,description:"MCP configuration for Workspace.",defaultValue:{mcpServers:{}}}}},t.MCPSchema={$id:t.MCPSchemaUri,type:"object",title:"MCP",required:[],default:{mcpServers:{}},properties:{mcpServers:{type:"object",description:"List of MCP Servers. Add new servers or edit existing ones by using IntelliSense.",additionalProperties:{type:"object",properties:{command:{type:"string",description:"The command to start the MCP server."},args:{type:"array",description:"The arguments for the command to start the MCP server.",items:{type:"string"}},env:{type:"object",description:"The environment variables for the command to start the MCP server.",additionalProperties:{type:"string"}},url:{type:"string",description:"The SSE URL for the MCP server."}},oneOf:[{required:["command"]},{required:["url"]}]}}}}},45331:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPServerProxyService=void 0;const n=e(85608),r=e(48085),o=e(76003),c=e(41869),_=e(43718),v=e(19413),m=e(77633);let p=class{constructor(){this._onChangeMCPServers=new _.Emitter,this.onChangeMCPServers=this._onChangeMCPServers.event}$callMCPTool(g,a){return this.mcpServerRegistry.callMCPTool(g,a)}async $getBuiltinMCPTools(){const g=await this.mcpServerRegistry.getMCPTools().map(a=>({name:a.name,description:a.description,inputSchema:(0,r.zodToJsonSchema)(a.inputSchema),providerName:v.BUILTIN_MCP_SERVER_NAME}));return this.logger.log("SUMI MCP tools",g),g}async $updateMCPServers(){this._onChangeMCPServers.fire("update")}async getAllMCPTools(){return this.sumiMCPServerProxyService.$getAllMCPTools()}async $getServers(){return this.sumiMCPServerProxyService.$getServers()}async $startServer(g){await this.sumiMCPServerProxyService.$startServer(g)}async $stopServer(g){await this.sumiMCPServerProxyService.$stopServer(g)}};t.MCPServerProxyService=p,n.__decorate([(0,o.Autowired)(m.TokenMCPServerRegistry),n.__metadata("design:type",Object)],p.prototype,"mcpServerRegistry",void 0),n.__decorate([(0,o.Autowired)(c.ILogger),n.__metadata("design:type",Object)],p.prototype,"logger",void 0),n.__decorate([(0,o.Autowired)(v.SumiMCPServerProxyServicePath),n.__metadata("design:type",Object)],p.prototype,"sumiMCPServerProxyService",void 0),t.MCPServerProxyService=p=n.__decorate([(0,o.Injectable)()],p)},79502:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPServerRegistry=void 0;const n=e(85608),r=e(76003),o=e(43718),c=e(19413),_=e(98864);class v{constructor(s){this.logger=s}appendLine(s){this.logger.log(s)}}let m=class{constructor(){this.tools=[],this.toolComponents={}}get logger(){return new v(this.baseLogger)}set activeMessageInfo(s){this._activeMessageInfo=s}getMCPTool(s,g=c.BUILTIN_MCP_SERVER_NAME){return this.tools.find(a=>(0,_.getToolName)(a.name,g)===s)}registerMCPTool(s){this.tools.push(s)}registerToolComponent(s,g,a=c.BUILTIN_MCP_SERVER_NAME){this.toolComponents[(0,_.getToolName)(s,a)]=g}getToolComponent(s){return this.toolComponents[s]}getMCPTools(){return this.tools.sort((s,g)=>{var a,h;return((a=s.order)!==null&&a!==void 0?a:1/0)-((h=g.order)!==null&&h!==void 0?h:1/0)})}async callMCPTool(s,g){try{const a=this.tools.find(d=>d.name===s);if(!a)throw new Error(`MCP tool ${s} not found`);const h=g.toolCallId;g=a.inputSchema.parse(g);const u=await a.handler({...g,toolCallId:h},this.logger);return this.reportToolCall(s,g,u,h),u}catch(a){return console.error("callMCPTool error:",a),this.reportToolCall(s,g,a,g.toolCallId),{content:[{type:"text",text:`The tool ${s} failed to execute. Error: ${a}`}],isError:!0}}}reportToolCall(s,g,a,h){if(!this.tools.find(d=>d.name===s))throw new Error(`MCP tool ${s} not found`);this.aiReporter.send({msgType:o.AIServiceType.ToolCall,message:JSON.stringify({args:g,name:s,result:a}),messageId:this._activeMessageInfo.messageId,sessionId:this._activeMessageInfo.sessionId,relationId:h})}};t.MCPServerRegistry=m,n.__decorate([(0,r.Autowired)(o.ILogger),n.__metadata("design:type",Object)],m.prototype,"baseLogger",void 0),n.__decorate([(0,r.Autowired)(o.IAIReporter),n.__metadata("design:type",Object)],m.prototype,"aiReporter",void 0),t.MCPServerRegistry=m=n.__decorate([(0,r.Injectable)()],m)},30703:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPToolsDialog=void 0;const n=e(85608),r=n.__importStar(e(14041)),o=n.__importDefault(e(49783)),c=({tools:_})=>r.createElement("div",{className:o.default.mcp_tools_dialog},r.createElement("div",{className:o.default.dialog_title},"MCP Tools"),r.createElement("div",{className:o.default.tools_list},_.map(v=>r.createElement("div",{key:v.name,className:o.default.tool_item},r.createElement("div",{className:o.default.tool_name},v.name),r.createElement("div",{className:o.default.tool_description},v.description),v.providerName&&r.createElement("div",{className:o.default.tool_provider},"Provider: ",v.providerName)))));t.MCPToolsDialog=c},58260:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EditFileToolComponent=void 0;const n=e(85608),r=n.__importDefault(e(53373)),o=n.__importStar(e(14041)),c=e(97267),_=e(41869),v=e(54414),m=e(14162),p=e(87822),s=e(16781),g=e(21967),a=e(56474),h=e(73974),u=n.__importDefault(e(51601)),d=E=>{var f,l,y;const{args:b,messageId:A,toolCallId:S}=E,[w,T]=(0,o.useState)("code"),D=(0,_.useInjectable)(_.LabelService),I=(0,_.useInjectable)(_.AppConfig),O=(0,_.useInjectable)(h.BaseApplyService),M=(0,_.useInjectable)(v.WorkbenchEditorService),{target_file:R="",code_edit:P,instructions:k}=b||{},F=_.path.join(I.workspaceDir,R),[L,B]=(0,o.useState)(O.getCodeBlock(S,A)),j=(0,o.useMemo)(()=>R?`file-icon ${D.getIcon(_.URI.file(F))}`:void 0,[R,F]),W=(0,o.useMemo)(()=>{if(!R)return;const Q=s.StandaloneServices.get(p.IModelService),V=s.StandaloneServices.get(m.ILanguageService);return(0,_.detectModeId)(Q,V,_.Uri.file(F))},[R,F]);(0,o.useEffect)(()=>{const Q=O.onCodeBlockUpdate(V=>{V.toolCallId===S&&B({...V})});return()=>{Q.dispose()}},[]);const U=Q=>{Q.stopPropagation(),T(w==="code"?"diff":"code")};return!b||!L?null:[k&&o.default.createElement("p",{key:"edit-file-tool-instructions"},k),o.default.createElement("div",{className:u.default["edit-file-tool"],key:"edit-file-tool"},o.default.createElement("div",{className:(0,r.default)(u.default["edit-file-tool-header"],{clickable:L.status==="pending"||L.status==="success"}),onClick:()=>{L.status==="pending"?M.open(_.URI.file(F)):L.status==="success"&&O.revealApplyPosition(L)}},o.default.createElement("div",{className:u.default.left},j&&o.default.createElement("span",{className:j}),o.default.createElement("span",{className:u.default["edit-file-tool-file-name"]},R),L.iterationCount>1&&o.default.createElement("span",{className:u.default["edit-file-tool-iteration-count"]},L.iterationCount,"/3"),o.default.createElement(g.ApplyStatus,{status:L.status,error:E.result})),o.default.createElement("div",{className:u.default.right},o.default.createElement(c.Popover,{title:"Show Code",id:"edit-file-tool-show-code"},o.default.createElement(c.Icon,{iconClass:"codicon codicon-file-code",onClick:U})),((f=L.applyResult)===null||f===void 0?void 0:f.diff)&&o.default.createElement(c.Popover,{title:"Show Diff",id:"edit-file-tool-show-diff"},o.default.createElement(c.Icon,{iconClass:"codicon codicon-diff-multiple",onClick:U})))),o.default.createElement(a.ChatMarkdown,{markdown:w==="code"?`\`\`\`${W||""}
31549
+ `).filter(Boolean).reduce((G,Y)=>{const[H,$]=Y.split("=");return H&&$&&(G[H.trim()]=$.trim()),G},{});U.args=Q,U.env=V}b({...y,name:"",command:"",url:"",args:[],env:{}}),E(U)},[y,S,T,E,I]),M=(0,o.useCallback)(B=>{b({...y,command:B.target.value})},[y,S]),R=(0,o.useCallback)(B=>{w(B.target.value)},[S]),P=(0,o.useCallback)(B=>{D(B.target.value)},[T]),k=(0,o.useCallback)(B=>{b({...y,url:B.target.value})},[y]),F=(0,o.useCallback)(B=>{b({...y,type:B,command:"",args:[],env:{},url:""})},[y]),L=(0,o.useCallback)(()=>y?.type===g.MCP_SERVER_TYPE.STDIO?o.default.createElement(o.default.Fragment,null,o.default.createElement("div",{className:a.default.formItem},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.command")),o.default.createElement("input",{type:"text",value:y.command,onChange:M,placeholder:(0,p.localize)("ai.native.mcp.command.placeHolder"),required:!0})),o.default.createElement("div",{className:a.default.formItem},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.args")),o.default.createElement("textarea",{value:S,onChange:R,placeholder:(0,p.localize)("ai.native.mcp.args.placeHolder"),rows:3})),o.default.createElement("div",{className:a.default.formItem},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.env")),o.default.createElement("textarea",{value:T,onChange:P,placeholder:(0,p.localize)("ai.native.mcp.env.placeHolder"),rows:3}))):o.default.createElement(o.default.Fragment,null,o.default.createElement("div",{className:a.default.formItem},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.url")),o.default.createElement("textarea",{value:y.url,onChange:k,placeholder:(0,p.localize)("ai.native.mcp.url.placeHolder"),rows:3}))),[y,S,T]);return o.default.createElement(v.Modal,{title:d?(0,p.localize)("ai.native.mcp.editMCPServer.title"):(0,p.localize)("ai.native.mcp.addMCPServer.title"),visible:u,onCancel:f,centered:!0,width:600,footer:null,style:{background:"var(--editor-background)"}},o.default.createElement("form",{className:a.default.form,onSubmit:B=>B.preventDefault()},o.default.createElement("div",{className:a.default.formRow},o.default.createElement("div",{className:(0,r.default)(a.default.formItem,a.default.formItemName)},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.name")),o.default.createElement("input",{type:"text",value:y.name,onChange:B=>b({...y,name:B.target.value}),placeholder:(0,p.localize)("ai.native.mcp.name.placeHolder"),required:!0})),o.default.createElement("div",{className:(0,r.default)(a.default.formItem,a.default.formItemType)},o.default.createElement("label",null,(0,p.localize)("ai.native.mcp.type")),o.default.createElement(c.Select,{size:"large",value:y.type,options:[{label:(0,p.localize)("ai.native.mcp.stdio"),value:g.MCP_SERVER_TYPE.STDIO},{label:(0,p.localize)("ai.native.mcp.sse"),value:g.MCP_SERVER_TYPE.SSE}],className:a.default.formItemSelect,onChange:F}))),L(),o.default.createElement("div",{className:a.default.formActions},o.default.createElement(_.Button,{onClick:f,type:"primary",className:a.default.secondaryButton},(0,p.localize)("ai.native.mcp.buttonCancel")),o.default.createElement(_.Button,{onClick:O,type:"primary"},d?(0,p.localize)("ai.native.mcp.buttonUpdate"):(0,p.localize)("ai.native.mcp.buttonSave")))))};t.MCPServerForm=h},27397:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPConfigCommandContribution=t.MCPConfigCommands=void 0;const n=e(85608),r=e(76003),o=e(41869),c=e(43718),_=e(54414),v=e(5297),m=e(33108);var p;(function(g){g.OPEN_MCP_CONFIG={id:"mcp.openConfig",label:"Open MCP Configuration"},g.OPEN_MCP_CONFIG_FILE={id:"mcp.openConfigFile",label:"Open MCP Configuration (JSON)"}})(p||(t.MCPConfigCommands=p={}));let s=class{registerCommands(a){a.registerCommand(p.OPEN_MCP_CONFIG,{execute:()=>{const h=new o.URI().withScheme(v.MCP_CONFIG_COMPONENTS_SCHEME_ID);this.editorService.open(h,{preview:!1,focus:!0})}}),a.registerCommand(p.OPEN_MCP_CONFIG_FILE,{execute:()=>{this.mcpConfigService.openConfigFile()}})}};t.MCPConfigCommandContribution=s,n.__decorate([(0,r.Autowired)(_.WorkbenchEditorService),n.__metadata("design:type",_.WorkbenchEditorService)],s.prototype,"editorService",void 0),n.__decorate([(0,r.Autowired)(c.MCPConfigServiceToken),n.__metadata("design:type",m.MCPConfigService)],s.prototype,"mcpConfigService",void 0),t.MCPConfigCommandContribution=s=n.__decorate([(0,c.Domain)(o.CommandContribution)],s)},5297:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPConfigContribution=t.MCP_CONFIG_COMPONENTS_SCHEME_ID=void 0;const n=e(85608),r=e(76003),o=e(97267),c=e(93899),_=e(39496),v=e(26542),m=e(43718),p=e(82196),s=e(7443),g=e(10560),a=e(75279),h=e(27397),u="opensumi-mcp-config-viewer";t.MCP_CONFIG_COMPONENTS_SCHEME_ID="mcp-config";let d=class{registerEditorComponent(f){f.registerEditorComponent({uid:u,scheme:t.MCP_CONFIG_COMPONENTS_SCHEME_ID,component:a.MCPConfigView,renderMode:p.EditorComponentRenderMode.ONE_PER_WORKBENCH}),f.registerEditorComponentResolver(t.MCP_CONFIG_COMPONENTS_SCHEME_ID,(l,y)=>{y.push({type:"component",componentId:u})})}registerResource(f){f.registerResourceProvider({scheme:t.MCP_CONFIG_COMPONENTS_SCHEME_ID,provideResource:async l=>{const{configType:y}=l.getParsedQuery();return{uri:l,name:(0,m.localize)("ai.native.mcp.config.title"),icon:(0,o.getIcon)("mcp"),metadata:{configType:y}}}})}registerMenus(f){f.registerMenuItem(_.MenuId.EditorTitle,{command:h.MCPConfigCommands.OPEN_MCP_CONFIG_FILE.id,iconClass:(0,o.getIcon)("open"),group:"navigation",order:4,when:`resourceScheme == ${t.MCP_CONFIG_COMPONENTS_SCHEME_ID}`}),f.registerMenuItem(_.MenuId.EditorTitle,{command:h.MCPConfigCommands.OPEN_MCP_CONFIG.id,iconClass:(0,o.getIcon)("open"),group:"navigation",order:4,when:"resourceFilename =~ /mcp.json/"})}};t.MCPConfigContribution=d,n.__decorate([(0,r.Autowired)(g.IWorkspaceService),n.__metadata("design:type",Object)],d.prototype,"workspaceService",void 0),n.__decorate([(0,r.Autowired)(s.IconService),n.__metadata("design:type",s.IconService)],d.prototype,"iconService",void 0),n.__decorate([(0,r.Autowired)(),n.__metadata("design:type",v.LabelService)],d.prototype,"labelService",void 0),t.MCPConfigContribution=d=n.__decorate([(0,m.Domain)(p.BrowserEditorContribution,c.MenuContribution)],d)},33108:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPConfigService=void 0;const n=e(85608),r=e(76003),o=e(41869),c=e(78132),_=e(43718),v=e(54414),m=e(72665),p=e(19413),s=e(64811),g=e(69820),a=e(45331);let h=class extends _.Disposable{constructor(){super(),this.whenReadyDeferred=new _.Deferred,this._isInitialized=!1,this.mcpServersChangeEventEmitter=new _.Emitter,this.init(),this.disposables.push(this.mcpServerProxyService.onChangeMCPServers(()=>{this.fireMCPServersChange()})),this.disposables.push(this.preferenceService.onSpecificPreferenceChange("mcp",()=>{this.fireMCPServersChange()}))}async init(){this.chatStorage=await this.storageProvider(_.STORAGE_NAMESPACE.CHAT),this.whenReadyDeferred.resolve()}get whenReady(){return this.whenReadyDeferred.promise}get isInitialized(){return this._isInitialized}get onMCPServersChange(){return this.mcpServersChangeEventEmitter.event}fireMCPServersChange(d=!1){d&&(this._isInitialized=!0),this.mcpServersChangeEventEmitter.fire(d)}async getServers(){const{value:d,scope:E}=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0);if(E===_.PreferenceScope.Default){const S=(await this.mcpServerProxyService.$getServers()).find(w=>w.name===p.BUILTIN_MCP_SERVER_NAME);return S?[S]:[]}const f=Object.keys(d.mcpServers).map(A=>{const S=d.mcpServers[A];return S.url?{name:A,type:g.MCP_SERVER_TYPE.SSE,url:S.url}:{name:A,type:g.MCP_SERVER_TYPE.STDIO,command:S.command,args:S.args,env:S.env}}),l=await this.mcpServerProxyService.$getServers(),y=l.find(A=>A.name===p.BUILTIN_MCP_SERVER_NAME),b=f?.map(A=>{const S=l.find(w=>w.name===A.name);return S||this.sumiMCPServerBackendProxy.$addOrUpdateServer(A),{...A,isStarted:S?.isStarted||!1,tools:S?.tools||[]}});return y&&b.unshift(y),b}async controlServer(d,E){try{E?await this.mcpServerProxyService.$startServer(d):await this.mcpServerProxyService.$stopServer(d);const f=this.chatStorage.get(s.MCPServersEnabledKey,[p.BUILTIN_MCP_SERVER_NAME]),l=new Set(f);E?l.add(d):l.delete(d),this.chatStorage.set(s.MCPServersEnabledKey,Array.from(l))}catch(f){const l=f.message||f;throw this.logger.error(`Failed to ${E?"start":"stop"} server ${d}:`,l),this.messageService.error(l),f}}async saveServer(d,E){await this.whenReady;const{value:f}=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0),l=f.mcpServers;let y;E.type===g.MCP_SERVER_TYPE.SSE?y={url:E.url}:y={command:E.command,args:E.args,env:E.env},d?.name&&delete l[d.name],l[E.name]=y,await this.preferenceService.set("mcp",{mcpServers:l}),d?.enabled&&this.sumiMCPServerBackendProxy.$removeServer(d.name),this.sumiMCPServerBackendProxy.$addOrUpdateServer(E)}async deleteServer(d){const{value:E}=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0),f=E.mcpServers;f[d]&&(delete f[d],await this.sumiMCPServerBackendProxy.$removeServer(d),await this.preferenceService.set("mcp",{mcpServers:f}))}async syncServer(d){try{await this.sumiMCPServerBackendProxy.$syncServer(d)}catch(E){this.logger.error(`Failed to sync server ${d}:`,E),this.messageService.error(E.message||E)}}async getServerConfigByName(d){const{value:E}=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0);await this.whenReady;const f=this.chatStorage.get(s.MCPServersEnabledKey,[p.BUILTIN_MCP_SERVER_NAME]),l=E.mcpServers[d];if(l)return l.url?{name:d,type:g.MCP_SERVER_TYPE.SSE,url:l.url,enabled:f.includes(d)}:{name:d,type:g.MCP_SERVER_TYPE.STDIO,command:l.command,args:l.args,env:l.env,enabled:f.includes(d)}}getReadableServerType(d){switch(d){case g.MCP_SERVER_TYPE.STDIO:return(0,_.localize)("ai.native.mcp.type.stdio");case g.MCP_SERVER_TYPE.SSE:return(0,_.localize)("ai.native.mcp.type.sse");case g.MCP_SERVER_TYPE.BUILTIN:return(0,_.localize)("ai.native.mcp.type.builtin");default:return d}}async openConfigFile(){let d=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0);d.scope===_.PreferenceScope.Default&&(await this.preferenceService.set("mcp",{mcpServers:{}},_.PreferenceScope.Workspace),d=this.preferenceService.resolve("mcp",{mcpServers:{}},void 0));const E=d.configUri;E&&this.workbenchEditorService.open(E,{preview:!1})}};t.MCPConfigService=h,n.__decorate([(0,r.Autowired)(p.SumiMCPServerProxyServicePath),n.__metadata("design:type",Object)],h.prototype,"sumiMCPServerBackendProxy",void 0),n.__decorate([(0,r.Autowired)(a.MCPServerProxyService),n.__metadata("design:type",a.MCPServerProxyService)],h.prototype,"mcpServerProxyService",void 0),n.__decorate([(0,r.Autowired)(c.PreferenceService),n.__metadata("design:type",Object)],h.prototype,"preferenceService",void 0),n.__decorate([(0,r.Autowired)(m.IMessageService),n.__metadata("design:type",Object)],h.prototype,"messageService",void 0),n.__decorate([(0,r.Autowired)(_.StorageProvider),n.__metadata("design:type",Function)],h.prototype,"storageProvider",void 0),n.__decorate([(0,r.Autowired)(v.WorkbenchEditorService),n.__metadata("design:type",v.WorkbenchEditorService)],h.prototype,"workbenchEditorService",void 0),n.__decorate([(0,r.Autowired)(o.ILogger),n.__metadata("design:type",Object)],h.prototype,"logger",void 0),t.MCPConfigService=h=n.__decorate([(0,r.Injectable)(),n.__metadata("design:paramtypes",[])],h)},33368:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPFolderPreferenceProvider=void 0;const n=e(85608),r=e(76003),o=e(91825);let c=class extends o.FolderFilePreferenceProvider{parse(v){const m=super.parse(v);if(m!==void 0)return{mcp:{...m}}}getPath(v){if(v==="mcp")return[];if(v.startsWith("mcp."))return[v.substr(4)]}};t.MCPFolderPreferenceProvider=c,t.MCPFolderPreferenceProvider=c=n.__decorate([(0,r.Injectable)()],c)},55003:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPPreferencesContribution=t.MCPResourceProvider=void 0;const n=e(85608),r=e(76003),o=e(41869),c=e(57517),_=e(924);let v=class{provideResource(s){return{supportsRevive:!0,name:(0,o.localize)("menu-bar.title.debug"),icon:(0,o.getIcon)("debug"),uri:s}}provideResourceSubname(){return null}async shouldCloseResource(){return!0}};t.MCPResourceProvider=v,t.MCPResourceProvider=v=n.__decorate([(0,r.Injectable)()],v);let m=class{constructor(){this.schema=_.MCPPreferencesSchema,this.name="mcp"}registerResource(s){s.registerResourceProvider(this.prefResourceProvider)}registerSchema(s){s.registerSchema(_.MCPSchemaUri,_.MCPSchema,["mcp.json"])}};t.MCPPreferencesContribution=m,n.__decorate([(0,r.Autowired)(v),n.__metadata("design:type",v)],m.prototype,"prefResourceProvider",void 0),t.MCPPreferencesContribution=m=n.__decorate([(0,o.Domain)(o.PreferenceContribution,o.PreferenceConfiguration,c.BrowserEditorContribution,o.JsonSchemaContribution)],m)},924:(x,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPSchema=t.MCPPreferencesSchema=t.MCPSchemaUri=void 0,t.MCPSchemaUri="vscode://schemas/mcp/user",t.MCPPreferencesSchema={type:"object",scope:"resource",properties:{mcp:{$ref:t.MCPSchemaUri,description:"MCP configuration for Workspace.",defaultValue:{mcpServers:{}}}}},t.MCPSchema={$id:t.MCPSchemaUri,type:"object",title:"MCP",required:[],default:{mcpServers:{}},properties:{mcpServers:{type:"object",description:"List of MCP Servers. Add new servers or edit existing ones by using IntelliSense.",additionalProperties:{type:"object",properties:{command:{type:"string",description:"The command to start the MCP server."},args:{type:"array",description:"The arguments for the command to start the MCP server.",items:{type:"string"}},env:{type:"object",description:"The environment variables for the command to start the MCP server.",additionalProperties:{type:"string"}},url:{type:"string",description:"The SSE URL for the MCP server."}},oneOf:[{required:["command"]},{required:["url"]}]}}}}},45331:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPServerProxyService=void 0;const n=e(85608),r=e(48085),o=e(76003),c=e(41869),_=e(43718),v=e(19413),m=e(77633);let p=class{constructor(){this._onChangeMCPServers=new _.Emitter,this.onChangeMCPServers=this._onChangeMCPServers.event}$callMCPTool(g,a){return this.mcpServerRegistry.callMCPTool(g,a)}async $getBuiltinMCPTools(){const g=await this.mcpServerRegistry.getMCPTools().map(a=>({name:a.name,description:a.description,inputSchema:(0,r.zodToJsonSchema)(a.inputSchema),providerName:v.BUILTIN_MCP_SERVER_NAME}));return this.logger.log("SUMI MCP tools",g),g}async $updateMCPServers(){this._onChangeMCPServers.fire("update")}async getAllMCPTools(){return this.sumiMCPServerProxyService.$getAllMCPTools()}async $getServers(){return this.sumiMCPServerProxyService.$getServers()}async $startServer(g){await this.sumiMCPServerProxyService.$startServer(g)}async $stopServer(g){await this.sumiMCPServerProxyService.$stopServer(g)}};t.MCPServerProxyService=p,n.__decorate([(0,o.Autowired)(m.TokenMCPServerRegistry),n.__metadata("design:type",Object)],p.prototype,"mcpServerRegistry",void 0),n.__decorate([(0,o.Autowired)(c.ILogger),n.__metadata("design:type",Object)],p.prototype,"logger",void 0),n.__decorate([(0,o.Autowired)(v.SumiMCPServerProxyServicePath),n.__metadata("design:type",Object)],p.prototype,"sumiMCPServerProxyService",void 0),t.MCPServerProxyService=p=n.__decorate([(0,o.Injectable)()],p)},79502:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPServerRegistry=void 0;const n=e(85608),r=e(76003),o=e(43718),c=e(19413),_=e(98864);class v{constructor(s){this.logger=s}appendLine(s){this.logger.log(s)}}let m=class{constructor(){this.tools=[],this.toolComponents={}}get logger(){return new v(this.baseLogger)}set activeMessageInfo(s){this._activeMessageInfo=s}getMCPTool(s,g=c.BUILTIN_MCP_SERVER_NAME){return this.tools.find(a=>(0,_.getToolName)(a.name,g)===s)}registerMCPTool(s){this.tools.push(s)}registerToolComponent(s,g,a=c.BUILTIN_MCP_SERVER_NAME){this.toolComponents[(0,_.getToolName)(s,a)]=g}getToolComponent(s){return this.toolComponents[s]}getMCPTools(){return this.tools.sort((s,g)=>{var a,h;return((a=s.order)!==null&&a!==void 0?a:1/0)-((h=g.order)!==null&&h!==void 0?h:1/0)})}async callMCPTool(s,g){try{const a=this.tools.find(d=>d.name===s);if(!a)throw new Error(`MCP tool ${s} not found`);const h=g.toolCallId;g=a.inputSchema.parse(g);const u=await a.handler({...g,toolCallId:h},this.logger);return this.reportToolCall(s,g,u,h),u}catch(a){return console.error("callMCPTool error:",a),this.reportToolCall(s,g,a,g.toolCallId),{content:[{type:"text",text:`The tool ${s} failed to execute. Error: ${a}`}],isError:!0}}}reportToolCall(s,g,a,h){if(!this.tools.find(d=>d.name===s))throw new Error(`MCP tool ${s} not found`);this.aiReporter.send({msgType:o.AIServiceType.ToolCall,message:JSON.stringify({args:g,name:s,result:a}),messageId:this._activeMessageInfo.messageId,sessionId:this._activeMessageInfo.sessionId,relationId:h})}};t.MCPServerRegistry=m,n.__decorate([(0,r.Autowired)(o.ILogger),n.__metadata("design:type",Object)],m.prototype,"baseLogger",void 0),n.__decorate([(0,r.Autowired)(o.IAIReporter),n.__metadata("design:type",Object)],m.prototype,"aiReporter",void 0),t.MCPServerRegistry=m=n.__decorate([(0,r.Injectable)()],m)},30703:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MCPToolsDialog=void 0;const n=e(85608),r=n.__importStar(e(14041)),o=n.__importDefault(e(49783)),c=({tools:_})=>r.createElement("div",{className:o.default.mcp_tools_dialog},r.createElement("div",{className:o.default.dialog_title},"MCP Tools"),r.createElement("div",{className:o.default.tools_list},_.map(v=>r.createElement("div",{key:v.name,className:o.default.tool_item},r.createElement("div",{className:o.default.tool_name},v.name),r.createElement("div",{className:o.default.tool_description},v.description),v.providerName&&r.createElement("div",{className:o.default.tool_provider},"Provider: ",v.providerName)))));t.MCPToolsDialog=c},58260:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EditFileToolComponent=void 0;const n=e(85608),r=n.__importDefault(e(53373)),o=n.__importStar(e(14041)),c=e(97267),_=e(41869),v=e(54414),m=e(14162),p=e(87822),s=e(16781),g=e(21967),a=e(56474),h=e(73974),u=n.__importDefault(e(51601)),d=E=>{var f,l,y;const{args:b,messageId:A,toolCallId:S}=E,[w,T]=(0,o.useState)("code"),D=(0,_.useInjectable)(_.LabelService),I=(0,_.useInjectable)(_.AppConfig),O=(0,_.useInjectable)(h.BaseApplyService),M=(0,_.useInjectable)(v.WorkbenchEditorService),{target_file:R="",code_edit:P,instructions:k}=b||{},F=_.path.join(I.workspaceDir,R),[L,B]=(0,o.useState)(O.getCodeBlock(S,A)),j=(0,o.useMemo)(()=>R?`file-icon ${D.getIcon(_.URI.file(F))}`:void 0,[R,F]),W=(0,o.useMemo)(()=>{if(!R)return;const Q=s.StandaloneServices.get(p.IModelService),V=s.StandaloneServices.get(m.ILanguageService);return(0,_.detectModeId)(Q,V,_.Uri.file(F))},[R,F]);(0,o.useEffect)(()=>{const Q=O.onCodeBlockUpdate(V=>{V.toolCallId===S&&B({...V})});return()=>{Q.dispose()}},[]);const U=Q=>{Q.stopPropagation(),T(w==="code"?"diff":"code")};return!b||!L?null:[k&&o.default.createElement("p",{key:"edit-file-tool-instructions"},k),o.default.createElement("div",{className:u.default["edit-file-tool"],key:"edit-file-tool"},o.default.createElement("div",{className:(0,r.default)(u.default["edit-file-tool-header"],{clickable:L.status==="pending"||L.status==="success"}),onClick:()=>{L.status==="pending"?M.open(_.URI.file(F)):L.status==="success"&&O.revealApplyPosition(L)}},o.default.createElement("div",{className:u.default.left},j&&o.default.createElement("span",{className:j}),o.default.createElement("span",{className:u.default["edit-file-tool-file-name"]},R),L.iterationCount>1&&o.default.createElement("span",{className:u.default["edit-file-tool-iteration-count"]},L.iterationCount,"/3"),o.default.createElement(g.ApplyStatus,{status:L.status,error:E.result})),o.default.createElement("div",{className:u.default.right},o.default.createElement(c.Popover,{title:"Show Code",id:"edit-file-tool-show-code"},o.default.createElement(c.Icon,{iconClass:"codicon codicon-file-code",onClick:U})),((f=L.applyResult)===null||f===void 0?void 0:f.diff)&&o.default.createElement(c.Popover,{title:"Show Diff",id:"edit-file-tool-show-diff"},o.default.createElement(c.Icon,{iconClass:"codicon codicon-diff-multiple",onClick:U})))),o.default.createElement(a.ChatMarkdown,{markdown:w==="code"?`\`\`\`${W||""}
31550
31550
  ${P}
31551
31551
  \`\`\``:`\`\`\`diff
31552
31552
  ${(l=L.applyResult)===null||l===void 0?void 0:l.diff}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/cli-engine",
3
- "version": "3.8.3-next-1746617857.0",
3
+ "version": "3.8.3-next-1746625865.0",
4
4
  "description": "Integration engine runtime for opensumi-cli and opensumi extension",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -26,14 +26,14 @@
26
26
  "dependencies": {
27
27
  "@koa/cors": "^5.0.0",
28
28
  "@opensumi/di": "^1.8.0",
29
- "@opensumi/ide-core-browser": "3.8.3-next-1746617857.0",
30
- "@opensumi/ide-core-common": "3.8.3-next-1746617857.0",
31
- "@opensumi/ide-core-node": "3.8.3-next-1746617857.0",
32
- "@opensumi/ide-express-file-server": "3.8.3-next-1746617857.0",
33
- "@opensumi/ide-extension": "3.8.3-next-1746617857.0",
34
- "@opensumi/ide-i18n": "3.8.3-next-1746617857.0",
35
- "@opensumi/ide-main-layout": "3.8.3-next-1746617857.0",
36
- "@opensumi/ide-startup": "3.8.3-next-1746617857.0",
29
+ "@opensumi/ide-core-browser": "3.8.3-next-1746625865.0",
30
+ "@opensumi/ide-core-common": "3.8.3-next-1746625865.0",
31
+ "@opensumi/ide-core-node": "3.8.3-next-1746625865.0",
32
+ "@opensumi/ide-express-file-server": "3.8.3-next-1746625865.0",
33
+ "@opensumi/ide-extension": "3.8.3-next-1746625865.0",
34
+ "@opensumi/ide-i18n": "3.8.3-next-1746625865.0",
35
+ "@opensumi/ide-main-layout": "3.8.3-next-1746625865.0",
36
+ "@opensumi/ide-startup": "3.8.3-next-1746625865.0",
37
37
  "chalk": "^4.1.2",
38
38
  "ejs": "^3.1.7",
39
39
  "ip": "^1.1.8",
@@ -72,5 +72,5 @@
72
72
  "webpack": "^5.90.0",
73
73
  "webpack-cli": "^5.1.4"
74
74
  },
75
- "gitHead": "a3edb9188255e600c112a12a48ff7a498a05ba2f"
75
+ "gitHead": "b6cc5cb3d48bbdeaddae3d84cfbfa8d3da5c232d"
76
76
  }