@opensumi/cli-engine 3.8.3-next-1747208236.0 → 3.8.3-next-1747210131.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.
- package/lib/browser/browser.js +1 -1
- package/package.json +10 -10
package/lib/browser/browser.js
CHANGED
|
@@ -31564,7 +31564,7 @@ Use the appropriate tools to fulfill the USER\u2019s request, ensuring all requi
|
|
|
31564
31564
|
<user_info>
|
|
31565
31565
|
The user's OS is ${(0,p.getOperatingSystemName)()}. The absolute path of the user's workspace is ${this.appConfig.workspaceDir}.
|
|
31566
31566
|
</user_info>`},invoke:async(f,c,y,b)=>{this.chatDeferred=new p.Deferred;const{message:A,command:S}=f;let D=A;if(S){const w=this.chatFeatureRegistry.getSlashCommandHandler(S);if(w&&w.providerPrompt){const I=this.monacoCommandRegistry.getActiveCodeEditor();D=await w.providerPrompt(A,I)}}const T=await this.aiBackService.requestStream(D,{requestId:f.requestId,sessionId:f.sessionId,history:y,images:f.images,...this.getRequestOptions()},b);return(0,s.listenReadable)(T,{onData:w=>{c(w)},onEnd:()=>{this.chatDeferred.resolve()},onError:w=>{this.messageService.error(w.message),this.aiReporter.end(f.sessionId+"_"+f.requestId,{message:w.message,success:!1,command:S})}}),await this.chatDeferred.promise,{}},provideSlashCommands:async f=>this.chatFeatureRegistry.getAllSlashCommand().map(c=>({...c,name:c.name,description:c.description||""})),provideChatWelcomeMessage:async f=>{}})),queueMicrotask(()=>{this.chatAgentService.updateAgent(n.AGENT_ID,{})})}};t.ChatProxyService=d,d.AGENT_ID="Default_Chat_Agent",r.__decorate([(0,o.Autowired)(g.IChatAgentService),r.__metadata("design:type",Object)],d.prototype,"chatAgentService",void 0),r.__decorate([(0,o.Autowired)(p.AIBackSerivcePath),r.__metadata("design:type",Object)],d.prototype,"aiBackService",void 0),r.__decorate([(0,o.Autowired)(p.ChatFeatureRegistryToken),r.__metadata("design:type",u.ChatFeatureRegistry)],d.prototype,"chatFeatureRegistry",void 0),r.__decorate([(0,o.Autowired)(m.MonacoCommandRegistry),r.__metadata("design:type",m.MonacoCommandRegistry)],d.prototype,"monacoCommandRegistry",void 0),r.__decorate([(0,o.Autowired)(p.ChatServiceToken),r.__metadata("design:type",h.ChatService)],d.prototype,"aiChatService",void 0),r.__decorate([(0,o.Autowired)(p.IAIReporter),r.__metadata("design:type",Object)],d.prototype,"aiReporter",void 0),r.__decorate([(0,o.Autowired)(p.ChatAgentViewServiceToken),r.__metadata("design:type",Object)],d.prototype,"chatAgentViewService",void 0),r.__decorate([(0,o.Autowired)(a.PreferenceService),r.__metadata("design:type",Object)],d.prototype,"preferenceService",void 0),r.__decorate([(0,o.Autowired)(p.IApplicationService),r.__metadata("design:type",Object)],d.prototype,"applicationService",void 0),r.__decorate([(0,o.Autowired)(_.IMessageService),r.__metadata("design:type",Object)],d.prototype,"messageService",void 0),r.__decorate([(0,o.Autowired)(a.AppConfig),r.__metadata("design:type",Object)],d.prototype,"appConfig",void 0),t.ChatProxyService=d=n=r.__decorate([(0,o.Injectable)()],d)},29770:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatService=void 0;const n=e(85608),r=e(76003),o=e(43718),a=e(63067),p=e(19413),v=e(59347);let m=class extends o.Disposable{constructor(){super(),this._onChatMessageLaunch=new o.Emitter,this.onChatMessageLaunch=this._onChatMessageLaunch.event,this._onChatReplyMessageLaunch=new o.Emitter,this.onChatReplyMessageLaunch=this._onChatReplyMessageLaunch.event,this._onChatMessageListLaunch=new o.Emitter,this.onChatMessageListLaunch=this._onChatMessageListLaunch.event,this._onScrollToBottom=new o.Emitter,this.onScrollToBottom=this._onScrollToBottom.event}showChatView(){this.mainLayoutService.toggleSlot(p.AI_CHAT_VIEW_ID,!0)}sendMessage(s){this.showChatView(),this._onChatMessageLaunch.fire(s)}clearHistoryMessages(){var s;(s=this.chatInternalService.sessionModel)===null||s===void 0||s.history.clearMessages()}sendReplyMessage(s){typeof s=="string"?this._onChatReplyMessageLaunch.fire({kind:"content",content:s}):this._onChatReplyMessageLaunch.fire(s)}sendMessageList(s){this._onChatMessageListLaunch.fire(s)}scrollToBottom(){this._onScrollToBottom.fire()}};t.ChatService=m,n.__decorate([(0,r.Autowired)(p.IChatInternalService),n.__metadata("design:type",v.ChatInternalService)],m.prototype,"chatInternalService",void 0),n.__decorate([(0,r.Autowired)(a.IMainLayoutService),n.__metadata("design:type",Object)],m.prototype,"mainLayoutService",void 0),t.ChatService=m=n.__decorate([(0,r.Injectable)(),n.__metadata("design:paramtypes",[])],m)},11735:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatFeatureRegistry=void 0;const n=e(85608),r=e(76003),o=e(43718),a=e(19413),p=e(42033),v=e(51081);let m=class extends o.Disposable{constructor(){super(...arguments),this.logger=(0,o.getDebugLogger)(),this.slashCommandsMap=new Map,this.slashCommandsHandlerMap=new Map,this._onDidWelcomeMessageChange=new o.Emitter,this.onDidWelcomeMessageChange=this._onDidWelcomeMessageChange.event}registerImageUploadProvider(s){this.imageUploadProvider=s}getImageUploadProvider(){return this.imageUploadProvider}dispose(){super.dispose(),this.slashCommandsMap.clear(),this.slashCommandsHandlerMap.clear()}registerWelcome(s,g){this.chatWelcomeMessageModel=new p.ChatWelcomeMessageModel(s,g),this._onDidWelcomeMessageChange.fire()}registerSlashCommand(s,g){const{name:l}=s;if(this.slashCommandsMap.has(l)){this.logger.warn(`ChatFeatureRegistry: commands name ${l} already exists`);return}this.slashCommandsMap.set(l,new p.ChatSlashCommandItemModel(s,l,v.ChatProxyService.AGENT_ID)),this.slashCommandsHandlerMap.set(l,g)}getSlashCommandHandler(s){return this.slashCommandsHandlerMap.get(s)}getSlashCommand(s){return this.slashCommandsMap.get(s)}getSlashCommandHandlerBySlashName(s){const g=this.getAllSlashCommand().find(l=>l.nameWithSlash===s);if(g)return this.getSlashCommandHandler(g.name)}getSlashCommandBySlashName(s){const g=this.getAllSlashCommand().find(l=>l.nameWithSlash===s);if(g)return this.getSlashCommand(g.name)}getAllSlashCommand(){return Array.from(this.slashCommandsMap.values())}getAllShortcutSlashCommand(){return this.getAllSlashCommand().filter(s=>s.isShortcut===!0)}parseSlashCommand(s){if(s.startsWith(a.SLASH_SYMBOL)){const g=this.getAllSlashCommand();for(const l of g){const{nameWithSlash:h}=l;if(s.startsWith(h))return{value:s.slice(h.length),nameWithSlash:h}}}return{value:s,nameWithSlash:""}}};t.ChatFeatureRegistry=m,t.ChatFeatureRegistry=m=n.__decorate([(0,r.Injectable)()],m)},59347:(x,t,e)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ChatInternalService=void 0;const r=e(85608),o=e(76003),a=e(41869),p=e(43718),v=e(19413),m=e(61282);let _=class extends p.Disposable{constructor(){super(...arguments),this._onChangeRequestId=new p.Emitter,this.onChangeRequestId=this._onChangeRequestId.event,this._onChangeSession=new p.Emitter,this.onChangeSession=this._onChangeSession.event,this._onCancelRequest=new p.Emitter,this.onCancelRequest=this._onCancelRequest.event,this._onWillClearSession=new p.Emitter,this.onWillClearSession=this._onWillClearSession.event,this._onRegenerateRequest=new p.Emitter,this.onRegenerateRequest=this._onRegenerateRequest.event,n.set(this,void 0)}get latestRequestId(){return this._latestRequestId}get sessionModel(){return r.__classPrivateFieldGet(this,n,"f")}init(){this.chatManagerService.onStorageInit(()=>{const g=this.chatManagerService.getSessions();g.length>0?this.activateSession(g[g.length-1].sessionId):this.createSessionModel()})}setLatestRequestId(g){this._latestRequestId=g,this._onChangeRequestId.fire(g)}createRequest(g,l,h,u){return this.chatManagerService.createRequest(r.__classPrivateFieldGet(this,n,"f").sessionId,g,l,u,h)}sendRequest(g,l=!1){const h=this.chatManagerService.sendRequest(r.__classPrivateFieldGet(this,n,"f").sessionId,g,l);return l&&this._onRegenerateRequest.fire(),h}cancelRequest(){this.chatManagerService.cancelRequest(r.__classPrivateFieldGet(this,n,"f").sessionId),this._onCancelRequest.fire()}createSessionModel(){r.__classPrivateFieldSet(this,n,this.chatManagerService.startSession(),"f"),this._onChangeSession.fire(r.__classPrivateFieldGet(this,n,"f").sessionId)}clearSessionModel(g){g=g||r.__classPrivateFieldGet(this,n,"f").sessionId,this._onWillClearSession.fire(g),this.chatManagerService.clearSession(g),g===r.__classPrivateFieldGet(this,n,"f").sessionId&&r.__classPrivateFieldSet(this,n,this.chatManagerService.startSession(),"f"),this._onChangeSession.fire(r.__classPrivateFieldGet(this,n,"f").sessionId)}getSessions(){return this.chatManagerService.getSessions()}getSession(g){return this.chatManagerService.getSession(g)}activateSession(g){const l=this.chatManagerService.getSession(g);if(!l)throw new Error(`There is no session with session id ${g}`);r.__classPrivateFieldSet(this,n,l,"f"),this._onChangeSession.fire(r.__classPrivateFieldGet(this,n,"f").sessionId)}dispose(){var g;(g=r.__classPrivateFieldGet(this,n,"f"))===null||g===void 0||g.dispose(),super.dispose()}};t.ChatInternalService=_,n=new WeakMap,r.__decorate([(0,o.Autowired)(p.AIBackSerivcePath),r.__metadata("design:type",Object)],_.prototype,"aiBackService",void 0),r.__decorate([(0,o.Autowired)(a.PreferenceService),r.__metadata("design:type",Object)],_.prototype,"preferenceService",void 0),r.__decorate([(0,o.Autowired)(v.IChatManagerService),r.__metadata("design:type",m.ChatManagerService)],_.prototype,"chatManagerService",void 0),t.ChatInternalService=_=r.__decorate([(0,o.Injectable)()],_)},70394:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatRenderRegistry=void 0;const n=e(85608),r=e(76003),o=e(43718);let a=class extends o.Disposable{registerWelcomeRender(v){this.chatWelcomeRender=v}registerAIRoleRender(v){this.chatAIRoleRender=v}registerUserRoleRender(v){this.chatUserRoleRender=v}registerThinkingRender(v){this.chatThinkingRender=v}registerInputRender(v){this.chatInputRender=v}registerThinkingResultRender(v){this.chatThinkingResultRender=v}registerChatViewHeaderRender(v){this.chatViewHeaderRender=v}};t.ChatRenderRegistry=a,t.ChatRenderRegistry=a=n.__decorate([(0,r.Injectable)()],a)},76154:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AIChatView=void 0,t.DefaultChatViewHeader=U;const n=e(85608),r=n.__importStar(e(14041)),o=e(68392),a=e(41869),p=e(81878),v=e(89195),m=e(43718),_=e(54414),s=e(63067),g=e(72665);e(41937);const l=e(51500),h=e(19413),u=e(46044),d=e(98864),E=e(87785),f=e(25834),c=n.__importDefault(e(90103)),y=e(57987),b=e(56474),A=e(49601),S=e(15016),D=e(29039),T=e(78048),w=e(86556),I=e(73974),R=e(77633),P=e(42033),O=e(51081),M=n.__importDefault(e(77256)),k="chat_scroll",F=100,L=W=>W.map(j=>{var Q;const G=((Q=j.applyResult)===null||Q===void 0?void 0:Q.diff.split(`
|
|
31567
|
-
`).reduce(([Z,$],V)=>(V.startsWith("-")?Z+=1:V.startsWith("+")&&($+=1),[Z,$]),[0,0]))||[0,0];return{path:j.relativePath,additions:G[1],deletions:G[0],status:j.status}}).reduce((j,Q)=>{const G=j.find(Z=>Z.path===Q.path);return G?(G.additions+=Q.additions,G.deletions+=Q.deletions,G.status=Q.status):j.push(Q),j},[]),B=()=>{const W=(0,a.useInjectable)(h.IChatInternalService),j=(0,a.useInjectable)(m.ChatServiceToken),Q=(0,a.useInjectable)(m.IAIReporter),G=(0,a.useInjectable)(h.IChatAgentService),Z=(0,a.useInjectable)(m.ChatFeatureRegistryToken),$=(0,a.useInjectable)(m.ChatRenderRegistryToken),V=(0,a.useInjectable)(R.TokenMCPServerRegistry),H=(0,a.useInjectable)(a.AINativeConfigService),K=(0,a.useInjectable)(u.LLMContextServiceToken),Y=(0,a.useInjectable)(s.IMainLayoutService),X=W.sessionModel.history,oe=r.useRef(null),ie=r.useRef(!0),he=r.useRef(null),me=(0,a.useInjectable)(_.WorkbenchEditorService),q=(0,a.useInjectable)(a.AppConfig),Ee=(0,a.useInjectable)(I.BaseApplyService),ue=(0,a.useInjectable)(a.LabelService),te=(0,a.useInjectable)(l.IWorkspaceService),fe=(0,a.useInjectable)(m.CommandService),[Ie,Me]=r.useState([]),[Be,Pe]=r.useState(W.sessionModel.modelId),[we,_e]=r.useState(L(Ee.getSessionCodeBlocks())),[Ne,Te]=r.useReducer((Oe,Le)=>{switch(Le.type){case"add":return[...Oe,...Le.payload||[]];case"clear":return[];case"init":return Array.isArray(Le.payload)?Le.payload:[];default:return Oe}},[]),[We,pe]=r.useState(!1),[re,ge]=r.useState(""),[De,Ae]=r.useState(""),[Ue,Ye]=r.useState(""),[Ke,mt]=r.useState(null);r.useEffect(()=>{Pe(W.sessionModel.modelId)},[We,W.sessionModel]),r.useEffect(()=>{const Oe=new m.Disposable,Le=()=>{const ze=L(Ee.getSessionCodeBlocks());_e(ze)};return Oe.addDispose(W.onChangeSession(Le)),Oe.addDispose(Ee.onCodeBlockUpdate(Le)),()=>Oe.dispose()},[]),r.useEffect(()=>{const Oe=Z.getAllShortcutSlashCommand(),Le=G.onDidChangeAgents(()=>{const ze=G.getCommands().filter(St=>St.isShortcut).map(St=>new P.ChatSlashCommandItemModel({icon:"",name:`${St.name} `,description:St.description,isShortcut:St.isShortcut},St.name,St.agentId));Me(Oe.concat(ze))});return Me(Oe),()=>Le.dispose()},[Z,G]),(0,a.useUpdateOnEvent)(W.onChangeSession);const _t=r.useMemo(()=>$.chatInputRender?$.chatInputRender:H.capabilities.supportsMCP?A.ChatMentionInput:y.ChatInput,[$.chatInputRender]),Mt=r.useMemo(()=>(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:"",text:r.createElement(w.WelcomeMessage,null)}),[]),ct=r.useCallback(Oe=>{Oe.deltaY<0?ie.current=!1:ie.current=!0},[ie]);r.useEffect(()=>{if(oe.current)return oe.current.addEventListener("wheel",ct),()=>{var Oe;(Oe=oe.current)===null||Oe===void 0||Oe.removeEventListener("wheel",ct)}},[ie]);const wt=r.useCallback(()=>{if(oe&&oe.current&&ie.current){const Oe=oe.current.lastElementChild;Oe&&Oe.scrollIntoView({behavior:"smooth",block:"end"}),oe.current.scrollHeight>oe.current.clientHeight&&oe.current.classList.add(k)}},[oe,ie]),st=r.useCallback(Oe=>{Te(Oe),requestAnimationFrame(()=>{wt()})},[Te,wt]);r.useEffect(()=>{st({type:"init",payload:[Mt]})},[]),r.useEffect(()=>{const Oe=new m.Disposable;return Oe.addDispose(j.onScrollToBottom(()=>{requestAnimationFrame(()=>{})})),Oe.addDispose(j.onChatMessageLaunch(async Le=>{var ze;if(Le.immediate!==!1){if(We)return;await ci(Le.message,Le.images,Le.agentId,Le.command)}else Le.agentId&&ge(Le.agentId),Le.command&&Ye(Le.command),(ze=he?.current)===null||ze===void 0||ze.setInputValue(Le.message)})),Oe.addDispose(j.onChatReplyMessageLaunch(Le=>{if(Le.kind==="content"){const ze=Q.start(m.AIServiceType.CustomReply,{message:Le.content,sessionId:W.sessionModel.sessionId});X.addAssistantMessage({content:Le.content,relationId:ze}),jt({chunk:Le.content,relationId:ze})}else{const ze=Q.start(m.AIServiceType.CustomReply,{message:"component#"+Le.component,sessionId:W.sessionModel.sessionId});X.addAssistantMessage({componentId:Le.component,componentValue:Le.value,content:"",relationId:ze}),_n({chunk:Le,relationId:ze})}})),Oe.addDispose(j.onChatMessageListLaunch(Le=>{const ze=[];Le.forEach(St=>{const{role:$t}=St,On=Q.start(m.AIServiceType.Chat,{message:"",sessionId:W.sessionModel.sessionId});if($t==="assistant"){const Bn=St;ze.push((0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:On,text:r.createElement(S.ChatNotify,{requestId:On,chunk:Bn})},M.default.chat_notify))}if($t==="user"){const{message:Bn}=St,ui=O.ChatProxyService.AGENT_ID,li=$.chatUserRoleRender,Ni=ui===O.ChatProxyService.AGENT_ID?"":ui;ze.push((0,T.createMessageByUser)({id:(0,m.uuid)(6),relationId:On,text:li?r.createElement(li,{content:Bn,agentId:Ni}):r.createElement(f.CodeBlockWrapperInput,{relationId:On,text:Bn,agentId:Ni,command:Ue,labelService:ue,workspaceService:te,commandService:fe})},M.default.chat_message_code))}}),st({type:"add",payload:ze}),setTimeout(wt,0)})),()=>Oe.dispose()},[j,$.chatAIRoleRender,X]),r.useEffect(()=>{const Oe=new m.Disposable;return Oe.addDispose(G.onDidSendMessage(Le=>{const ze=Le,St=Q.start(m.AIServiceType.Agent,{message:""}),$t=(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:St,text:r.createElement(S.ChatNotify,{requestId:W.latestRequestId,chunk:ze})},M.default.chat_notify);st({type:"add",payload:[$t]})})),Oe.addDispose(G.onDidChangeAgents(async()=>{const Le=G.getDefaultAgentId();Ae(Le??"")})),()=>Oe.dispose()},[G,X,W]);const rt=r.useCallback(async Oe=>{const{userMessage:Le,relationId:ze,requestId:St,render:$t,startTime:On,command:Bn,agentId:ui}=Oe;X.addAssistantMessage({type:"component",content:""});const li=(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:ze,className:M.default.chat_with_more_actions,text:r.createElement(D.SlashCustomRender,{userMessage:Le,startTime:On,relationId:ze,requestId:St,renderContent:$t,command:Bn,agentId:ui})});st({type:"add",payload:[li]})},[oe,X]),lt=r.useCallback(async Oe=>{const Le=$.chatUserRoleRender,{message:ze,images:St,agentId:$t,relationId:On,command:Bn}=Oe,ui=$t===O.ChatProxyService.AGENT_ID?"":$t,li=(0,T.createMessageByUser)({id:(0,m.uuid)(6),relationId:On,text:Le?r.createElement(Le,{content:ze,images:St,agentId:ui,command:Bn}):r.createElement(f.CodeBlockWrapperInput,{labelService:ue,relationId:On,text:ze,images:St,agentId:ui,command:Bn,workspaceService:te,commandService:fe})},M.default.chat_message_code);st({type:"add",payload:[li]})},[$,$.chatUserRoleRender,X,wt]),At=r.useCallback(async Oe=>{const{message:Le,agentId:ze,request:St,relationId:$t,command:On,startTime:Bn,msgId:ui}=Oe,li=ze===O.ChatProxyService.AGENT_ID?"":ze;if(ze===O.ChatProxyService.AGENT_ID&&On){const Rn=Z.getSlashCommandHandler(On);if(Rn&&Rn.providerRender)return pe(!1),rt({userMessage:Le,render:Rn.providerRender,relationId:$t,requestId:St.requestId,startTime:Bn,agentId:ze,command:On})}const Ni=(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:$t,className:M.default.chat_with_more_actions,text:r.createElement(S.ChatReply,{relationId:$t,request:St,startTime:Bn,agentId:li,command:On,onDidChange:()=>{wt()},history:X,onDone:()=>{pe(!1)},onRegenerate:()=>{St&&W.sendRequest(St,!0)},msgId:ui})});st({type:"add",payload:[Ni]})},[$,X,wt]),jt=r.useCallback(Oe=>{const{chunk:Le,relationId:ze}=Oe;let St=r.createElement(b.ChatMarkdown,{markdown:Le,fillInIncompleteTokens:!0,agentId:re,command:Ue});if($.chatAIRoleRender){const On=$.chatAIRoleRender;St=r.createElement(On,{content:Le})}const $t=(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:ze,text:St,className:M.default.chat_with_more_actions});st({type:"add",payload:[$t]})},[$,X,wt]),_n=r.useCallback(Oe=>{const{chunk:Le,relationId:ze}=Oe,St=(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:ze,text:r.createElement(S.ChatNotify,{requestId:ze,chunk:Le})},M.default.chat_notify);st({type:"add",payload:[St]})},[$,X,wt]),In=r.useCallback(async Oe=>{const{message:Le,images:ze,agentId:St,command:$t,reportExtra:On}=Oe,{actionType:Bn,actionSource:ui}=On||{},li=W.createRequest(Le,St,ze,$t);if(!li)return;pe(!0),W.setLatestRequestId(li.requestId);const Ni=Date.now(),Rn=O.ChatProxyService.AGENT_ID===St?m.AIServiceType.Chat:m.AIServiceType.Agent,Cn=Q.start($t||Rn,{agentId:St,userMessage:Le,actionType:Bn,actionSource:ui,sessionId:W.sessionModel.sessionId},600*1e3);X.addUserMessage({content:Le.replaceAll(u.LLM_CONTEXT_KEY_REGEX,""),images:ze||[],agentId:St,agentCommand:$t,relationId:Cn}),await lt({relationId:Cn,message:Le,images:ze,command:$t,agentId:St}),W.sendRequest(li);const $n=X.addAssistantMessage({content:"",relationId:Cn,requestId:li.requestId,replyStartTime:Ni});V.activeMessageInfo={messageId:$n,sessionId:W.sessionModel.sessionId},await At({startTime:Ni,relationId:Cn,message:Le,agentId:St,command:$t,request:li,msgId:$n})},[$,$.chatUserRoleRender,X,wt,We]),ci=r.useCallback(async(Oe,Le,ze,St)=>{var $t,On,Bn;const ui={actionSource:m.ActionSourceEnum.Chat,actionType:m.ActionTypeEnum.Send};ze=ze||O.ChatProxyService.AGENT_ID;let li=Oe;const Ni=/\{\{@file:(.*?)\}\}/g,Rn=Oe.match(Ni);let Cn=!1;if(Rn)for(const un of Rn){const Vn=un.replace(/\{\{@file:(.*?)\}\}/,"$1");Vn&&!Cn&&(Cn=!0,K.cleanFileContext());const Xt=new m.URI(Vn),Qe=(($t=await te.asRelativePath(Xt))===null||$t===void 0?void 0:$t.path)||Xt.displayName;li=li.replace(un,`\`${u.LLM_CONTEXT_KEY.AttachedFile}${Qe}\``)}const $n=/\{\{@folder:(.*?)\}\}/g,Si=li.match($n);if(Si)for(const un of Si){const Vn=un.replace(/\{\{@folder:(.*?)\}\}/,"$1"),Xt=new m.URI(Vn),Qe=((On=await te.asRelativePath(Xt))===null||On===void 0?void 0:On.path)||Xt.displayName;li=li.replace(un,`\`${u.LLM_CONTEXT_KEY.AttachedFolder}${Qe}\``)}const Ui=/\{\{@code:(.*?)\}\}/g,bi=li.match(Ui);if(bi)for(const un of bi){const Vn=un.replace(/\{\{@code:(.*?)\}\}/,"$1"),[Xt,Qe]=Vn.split(":");let vt=[0,0];if(Qe){const[nn,Gt]=Qe.slice(1).split("-");vt=[parseInt(nn,10),parseInt(Gt,10)]}const pt=new m.URI(Xt),gt=((Bn=await te.asRelativePath(pt))===null||Bn===void 0?void 0:Bn.path)||pt.displayName;li=li.replace(un,`\`${u.LLM_CONTEXT_KEY.AttachedFile}${gt}:L${vt[0]}-${vt[1]}\``)}return In({message:li,images:Le,agentId:ze,command:St,reportExtra:ui})},[In]),xn=r.useCallback(()=>{W.clearSessionModel(),j.clearHistoryMessages(),dn()},[Ne]),dn=r.useCallback(()=>{var Oe;(Oe=oe?.current)===null||Oe===void 0||Oe.classList.remove(k),st({type:"init",payload:[Mt]})},[Ne]),jn=Oe=>{We||(mt(Oe.nameWithSlash),ge(Oe.agentId),Ye(Oe.command))},sn=r.useCallback(()=>{Y.toggleSlot(h.AI_CHAT_VIEW_ID)},[Y]),at=$.chatViewHeaderRender||U,$e=r.useCallback(async Oe=>{for(const Le of X.getMessages()){if(Oe.isCancellationRequested)return;if(Le.role===1)await lt({relationId:Le.relationId,message:Le.content,agentId:Le.agentId,command:Le.agentCommand,images:Le.images});else if(Le.role===2&&Le.requestId){const ze=W.sessionModel.getRequest(Le.requestId);ze&&!ze.response.isComplete&&pe(!0),await At({msgId:Le.id,relationId:Le.relationId,message:Le.content,agentId:Le.agentId,command:Le.agentCommand,startTime:Le.replyStartTime,request:ze})}else Le.role===2&&Le.content?await jt({relationId:Le.relationId,chunk:Le.content}):Le.role===2&&Le.componentId&&await _n({relationId:Le.relationId,chunk:{kind:"component",component:Le.componentId,value:Le.componentValue}})}},[At]);return r.useEffect(()=>{dn();const Oe=new m.CancellationTokenSource;return pe(!1),$e(Oe.token),()=>{Oe.cancel()}},[W.sessionModel]),r.createElement("div",{id:M.default.ai_chat_view},r.createElement("div",{className:M.default.header_container},r.createElement(at,{handleClear:xn,handleCloseChatView:sn})),r.createElement("div",{className:M.default.body_container},r.createElement("div",{className:M.default.left_bar,id:"ai_chat_left_container"},r.createElement("div",{className:M.default.chat_container,ref:oe},r.createElement(o.MessageList,{className:M.default.message_list,lockable:!0,toBottomHeight:"100%",dataSource:Ne})),W.sessionModel.slicedMessageCount?r.createElement("div",{className:M.default.chat_tips_text},r.createElement("div",{className:M.default.chat_tips_container},(0,m.formatLocalize)("aiNative.chat.ai.assistant.limit.message",W.sessionModel.slicedMessageCount))):null,r.createElement("div",{className:M.default.chat_input_wrap},r.createElement("div",{className:M.default.header_operate},r.createElement("div",{className:M.default.header_operate_left},Ie.map(Oe=>r.createElement(p.Popover,{id:`ai-chat-shortcut-${Oe.name}`,key:`ai-chat-shortcut-${Oe.name}`,title:Oe.tooltip||Oe.name},r.createElement("div",{className:M.default.tag,onClick:()=>jn(Oe)},Oe.name))))),we.length>0&&r.createElement(E.FileListDisplay,{files:we,hideActions:We,onFileClick:Oe=>{me.open(m.URI.file(m.path.join(q.workspaceDir,Oe)))},onRejectAll:()=>{Ee.processAll("reject")},onAcceptAll:()=>{Ee.processAll("accept")}}),r.createElement(_t,{onSend:ci,disabled:We,enableOptions:!0,theme:Ke,setTheme:mt,agentId:re,setAgentId:ge,defaultAgentId:De,command:Ue,setCommand:Ye,contextService:K,ref:he,disableModelSelector:Be!==void 0||We,sessionModelId:Be})))))};t.AIChatView=B;function U({handleClear:W,handleCloseChatView:j}){const Q=(0,a.useInjectable)(h.IChatInternalService),G=(0,a.useInjectable)(g.IMessageService),[Z,$]=r.useState([]),[V,H]=r.useState(""),K=r.useCallback(()=>{if(Q.sessionModel.history.getMessages().length>0)try{Q.createSessionModel()}catch(oe){G.error(oe.message)}},[Q]),Y=r.useCallback(oe=>{Q.activateSession(oe.id)},[Q]),X=r.useCallback(oe=>{Q.clearSessionModel(oe.id)},[Q]);return r.useEffect(()=>{const oe=()=>{const q=Q.sessionModel.history.getMessages().findLast(Ee=>Ee.role===1);H(q?(0,d.cleanAttachedTextWrapper)(q.content).slice(0,F):""),$(Q.getSessions().map(Ee=>{const te=Ee.history.getMessages(),fe=te.length>0?(0,d.cleanAttachedTextWrapper)(te[0].content).slice(0,F):"",Ie=te.length>0&&te[te.length-1].replyStartTime||0;return{id:Ee.sessionId,title:fe,updatedAt:Ie,loading:!1}}))};oe();const ie=new m.DisposableCollection,he=new Set;return ie.push(Q.onChangeSession(me=>{oe(),!he.has(me)&&(he.add(me),ie.push(Q.sessionModel.history.onMessageChange(()=>{oe()})))})),ie.push(Q.sessionModel.history.onMessageChange(()=>{oe()})),()=>{ie.dispose()}},[Q]),r.createElement("div",{className:M.default.header},r.createElement(c.default,{className:M.default.chat_history,currentId:Q.sessionModel.sessionId,title:V||(0,m.localize)("aiNative.chat.ai.assistant.name"),historyList:Z,onNewChat:K,onHistoryItemSelect:Y,onHistoryItemDelete:X,onHistoryItemChange:()=>{}}),r.createElement(p.Popover,{overlayClassName:M.default.popover_icon,id:"ai-chat-header-clear",title:(0,m.localize)("aiNative.operate.clear.title")},r.createElement(v.EnhanceIcon,{wrapperClassName:M.default.action_btn,className:(0,a.getIcon)("clear"),onClick:W,tabIndex:0,role:"button",ariaLabel:(0,m.localize)("aiNative.operate.clear.title")})),r.createElement(p.Popover,{overlayClassName:M.default.popover_icon,id:"ai-chat-header-close",position:p.PopoverPosition.left,title:(0,m.localize)("aiNative.operate.close.title")},r.createElement(v.EnhanceIcon,{wrapperClassName:M.default.action_btn,className:(0,a.getIcon)("window-close"),onClick:j,tabIndex:0,role:"button",ariaLabel:(0,m.localize)("aiNative.operate.close.title")})))}},21967:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApplyStatus=void 0;const n=e(85608),r=n.__importDefault(e(14041)),o=e(97267),a=n.__importDefault(e(6960)),p=({status:v,error:m})=>{const _=()=>{switch(v){case"generating":return r.default.createElement(o.Loading,null);case"pending":return r.default.createElement(o.Popover,{title:"Pending",id:"edit-file-tool-status-pending"},r.default.createElement(o.Icon,{iconClass:"codicon codicon-circle-large"}));case"success":return r.default.createElement(o.Popover,{title:"Success",id:"edit-file-tool-status-success"},r.default.createElement(o.Icon,{iconClass:"codicon codicon-pass"}));case"failed":return r.default.createElement(o.Popover,{title:`Failed (${m||"Unknown error"})`,id:"edit-file-tool-status-failed"},r.default.createElement(o.Icon,{iconClass:"codicon codicon-error"}));case"cancelled":return r.default.createElement(o.Popover,{title:"Cancelled",id:"edit-file-tool-status-cancelled"},r.default.createElement(o.Icon,{iconClass:"codicon codicon-circle-slash",style:{color:"var(--input-placeholderForeground)"}}));default:return null}};return r.default.createElement("span",{className:a.default.status},_())};t.ApplyStatus=p},87785:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FileListDisplay=void 0;const n=e(85608),r=n.__importStar(e(14041)),o=e(97267),a=e(41869),p=e(54414),v=e(42995),m=e(21967),_=n.__importDefault(e(80919)),s=g=>{const{files:l,onFileClick:h,onRejectAll:u,onAcceptAll:d,hideActions:E}=g,[f,c]=(0,r.useState)(!0),y=(0,a.useInjectable)(p.WorkbenchEditorService),b=(0,a.useInjectable)(a.LabelService),A=(0,r.useMemo)(()=>l.map(R=>{const P=a.URI.parse(R.path),O=b.getIcon(P);return r.default.createElement("span",{className:O})}),[l]),S=l.length,D=l.reduce((R,P)=>({additions:R.additions+P.additions,deletions:R.deletions+P.deletions}),{additions:0,deletions:0}),T=()=>{c(!f)},w=R=>R?r.default.createElement("span",{className:_.default.viewChanges,onClick:P=>{P.stopPropagation(),y.open(a.URI.from({scheme:v.ChatMultiDiffResolver.CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME,path:"chat-editing-multi-diff-source"}),{label:(0,a.localize)("aiNative.chat.view-changes")})}},r.default.createElement(o.Icon,{icon:"unorderedlist",size:"small"}),(0,a.localize)("aiNative.chat.view-changes")):null,I=(R,P)=>{const O=[];return R>0&&O.push(r.default.createElement("span",{key:"add",className:_.default.additions},"+",R)),P>0&&(O.length>0&&O.push(" "),O.push(r.default.createElement("span",{key:"del",className:_.default.deletions},"-",P))),O.length===0&&O.push(r.default.createElement("span",{key:"no-change",className:_.default.noChange},"No changes")),O};return r.default.createElement("div",{className:_.default.container},r.default.createElement("div",{className:_.default.header},r.default.createElement("span",{className:_.default.title},r.default.createElement("button",{className:_.default.toggleButton,onClick:T},f?r.default.createElement(o.Icon,{icon:"down"}):r.default.createElement(o.Icon,{icon:"right"})," Changed Files(",S,")"),I(D.additions,D.deletions),!E&&w(l.length)),!E&&l.some(R=>R.status==="pending")&&r.default.createElement("div",{className:_.default.actions},r.default.createElement(o.Button,{type:"link",size:"small",onClick:R=>{R.stopPropagation(),u()}},"Reject"),r.default.createElement(o.Button,{size:"small",onClick:R=>{R.stopPropagation(),d()}},"Accept"))),r.default.createElement("ul",{className:`${_.default.fileList} ${f?"":_.default.collapsed}`},l.map((R,P)=>r.default.createElement("li",{key:P,className:_.default.fileItem,onClick:()=>h(R.path)},r.default.createElement("span",{className:_.default.fileIcon},A[P]||"\u{1F4C4}"),r.default.createElement("div",{className:_.default.fileInfo},r.default.createElement("div",{className:_.default.filePath},R.path),r.default.createElement("div",{className:_.default.fileStats},I(R.additions,R.deletions)),r.default.createElement(m.ApplyStatus,{status:R.status}))))))};t.FileListDisplay=s},25834:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeBlockWrapperInput=t.CodeBlockWrapper=t.CodeEditorWithHighlight=void 0;const n=e(85608),r=n.__importDefault(e(56005)),o=n.__importDefault(e(97331)),a=n.__importStar(e(14041)),p=n.__importDefault(e(10580)),v=e(46541),m=e(41869),_=e(81878),s=e(89195),g=e(43718),l=e(71624),h=e(9447),u=e(52416),d=n.__importDefault(e(6960)),E=e(83933),f=e(44692);e(38191);const c=S=>{const{input:D,language:T,relationId:w,agentId:I,command:R,hideInsert:P}=S,O=a.default.useRef(null),M=(0,m.useInjectable)(h.MonacoCommandRegistry),k=(0,m.useInjectable)(m.IClipboardService),F=(0,m.useInjectable)(u.IThemeService),L=(0,m.useInjectable)(g.IAIReporter),[B,U]=(0,a.useState)(!1),W=(0,a.useMemo)(()=>(0,m.uuid)(12),[O,O.current]);(0,a.useEffect)(()=>{const Z=H=>{H.type==="dark"||H.type==="hcDark"?e.e(622).then(e.bind(e,51622)):(H.type==="light"||H.type==="hcLight")&&e.e(412).then(e.bind(e,50412))},$=F.onThemeChange(H=>{Z(H)}),V=F.getCurrentThemeSync();return Z(V),()=>$.dispose()},[]);const j=(0,a.useRef)((0,o.default)(()=>{if(O.current){const Z=O.current,$=Z?.querySelector("code"),V=$?.children;if(V){const H=V[V.length-1];H&&(H.scrollIntoViewIfNeeded?H.scrollIntoViewIfNeeded():H.scrollIntoView(!1))}}},150,{leading:!0,trailing:!0})).current;(0,a.useEffect)(()=>(j(),()=>{j.cancel()}),[D,j]);const Q=(0,a.useCallback)(async()=>{U(!0),await k.writeText(D),L.end(w,{copy:!0,code:D,language:T,agentId:I,command:R,actionSource:g.ActionSourceEnum.Chat,actionType:g.ActionTypeEnum.ChatCopyCode}),(0,g.runWhenIdle)(()=>{U(!1)},1e3)},[k,D,w]),G=(0,a.useCallback)(()=>{const Z=M.getActiveCodeEditor();if(Z){const $=Z.getSelection();$&&((0,l.insertSnippetWithMonacoEditor)(Z,D,[$],{undoStopBefore:!1,undoStopAfter:!1}),L.end(w,{insert:!0,code:D,language:T,agentId:I,command:R,actionSource:g.ActionSourceEnum.Chat,actionType:g.ActionTypeEnum.ChatInsertCode}))}},[M]);return a.default.createElement("div",{className:d.default.monaco_wrapper},a.default.createElement("div",{className:d.default.action_toolbar},!P&&a.default.createElement(_.Popover,{id:`ai-chat-inser-${W}`,title:(0,g.localize)("aiNative.chat.code.insert")},a.default.createElement(s.EnhanceIcon,{className:(0,m.getIcon)("insert"),onClick:()=>G(),tabIndex:0,role:"button",ariaLabel:(0,g.localize)("aiNative.chat.code.insert")})),a.default.createElement(_.Popover,{id:`ai-chat-copy-${W}`,title:(0,g.localize)(B?"aiNative.chat.code.copy.success":"aiNative.chat.code.copy")},a.default.createElement(s.EnhanceIcon,{className:(0,m.getIcon)("copy"),onClick:()=>Q(),tabIndex:0,role:"button",ariaLabel:(0,g.localize)("aiNative.chat.code.copy")}))),a.default.createElement(p.default,{language:T,ref:O,className:d.default.highlight_editor},D))};t.CodeEditorWithHighlight=c;const y=({content:S="",relationId:D,renderText:T,agentId:w="",command:I="",labelService:R,commandService:P,workspaceService:O})=>{const M=/`([^`]+)`/g,k=/```([^]+?)```/g,F=/```([^]+)?/g,L=/<attached_file>(.*)/g,B=/<attached_folder>(.*)/g,U=(0,a.useCallback)(async(G,Z)=>{const $=await O?.roots;let V;if($)for(const H of $){V=new g.URI(H.uri).resolve(G);try{await P?.executeCommand(m.FILE_COMMANDS.REVEAL_IN_EXPLORER.id,V),Z===f.MentionType.FILE&&await P?.executeCommand(m.EDITOR_COMMANDS.OPEN_RESOURCE.id,V);break}catch{continue}}},[P,O]),W=(G,Z=!1,$)=>a.default.createElement("span",{className:d.default.attachment,key:$,onClick:()=>U(G,Z?f.MentionType.FOLDER:f.MentionType.FILE)},a.default.createElement(_.Icon,{iconClass:Z?(0,m.getIcon)("folder"):R?.getIcon(new g.URI(G||"file"))}),a.default.createElement("span",{className:d.default.attachment_text},G)),j=G=>{const Z=G.split(`
|
|
31567
|
+
`).reduce(([Z,$],V)=>(V.startsWith("-")?Z+=1:V.startsWith("+")&&($+=1),[Z,$]),[0,0]))||[0,0];return{path:j.relativePath,additions:G[1],deletions:G[0],status:j.status}}).reduce((j,Q)=>{const G=j.find(Z=>Z.path===Q.path);return G?(G.additions+=Q.additions,G.deletions+=Q.deletions,G.status=Q.status):j.push(Q),j},[]),B=()=>{const W=(0,a.useInjectable)(h.IChatInternalService),j=(0,a.useInjectable)(m.ChatServiceToken),Q=(0,a.useInjectable)(m.IAIReporter),G=(0,a.useInjectable)(h.IChatAgentService),Z=(0,a.useInjectable)(m.ChatFeatureRegistryToken),$=(0,a.useInjectable)(m.ChatRenderRegistryToken),V=(0,a.useInjectable)(R.TokenMCPServerRegistry),H=(0,a.useInjectable)(a.AINativeConfigService),K=(0,a.useInjectable)(u.LLMContextServiceToken),Y=(0,a.useInjectable)(s.IMainLayoutService),X=W.sessionModel.history,oe=r.useRef(null),ie=r.useRef(!0),he=r.useRef(null),me=(0,a.useInjectable)(_.WorkbenchEditorService),q=(0,a.useInjectable)(a.AppConfig),Ee=(0,a.useInjectable)(I.BaseApplyService),ue=(0,a.useInjectable)(a.LabelService),te=(0,a.useInjectable)(l.IWorkspaceService),fe=(0,a.useInjectable)(m.CommandService),[Ie,Me]=r.useState([]),[Be,Pe]=r.useState(W.sessionModel.modelId),[we,_e]=r.useState(L(Ee.getSessionCodeBlocks())),[Ne,Te]=r.useReducer((Oe,Le)=>{switch(Le.type){case"add":return[...Oe,...Le.payload||[]];case"clear":return[];case"init":return Array.isArray(Le.payload)?Le.payload:[];default:return Oe}},[]),[We,pe]=r.useState(!1),[re,ge]=r.useState(""),[De,Ae]=r.useState(""),[Ue,Ye]=r.useState(""),[Ke,mt]=r.useState(null);r.useEffect(()=>{Pe(W.sessionModel.modelId)},[We,W.sessionModel]),r.useEffect(()=>{const Oe=new m.Disposable,Le=()=>{const ze=L(Ee.getSessionCodeBlocks());_e(ze)};return Oe.addDispose(W.onChangeSession(Le)),Oe.addDispose(Ee.onCodeBlockUpdate(Le)),()=>Oe.dispose()},[]),r.useEffect(()=>{const Oe=Z.getAllShortcutSlashCommand(),Le=G.onDidChangeAgents(()=>{const ze=G.getCommands().filter(St=>St.isShortcut).map(St=>new P.ChatSlashCommandItemModel({icon:"",name:`${St.name} `,description:St.description,isShortcut:St.isShortcut},St.name,St.agentId));Me(Oe.concat(ze))});return Me(Oe),()=>Le.dispose()},[Z,G]),(0,a.useUpdateOnEvent)(W.onChangeSession);const _t=r.useMemo(()=>$.chatInputRender?$.chatInputRender:H.capabilities.supportsMCP?A.ChatMentionInput:y.ChatInput,[$.chatInputRender]),Mt=r.useMemo(()=>(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:"",text:r.createElement(w.WelcomeMessage,null)}),[]),ct=r.useCallback(Oe=>{Oe.deltaY<0?ie.current=!1:ie.current=!0},[ie]);r.useEffect(()=>{if(oe.current)return oe.current.addEventListener("wheel",ct),()=>{var Oe;(Oe=oe.current)===null||Oe===void 0||Oe.removeEventListener("wheel",ct)}},[ie]);const wt=r.useCallback(()=>{if(oe&&oe.current&&ie.current){const Oe=oe.current.lastElementChild;Oe&&Oe.scrollIntoView({behavior:"smooth",block:"end"}),oe.current.scrollHeight>oe.current.clientHeight&&oe.current.classList.add(k)}},[oe,ie]),st=r.useCallback(Oe=>{Te(Oe),requestAnimationFrame(()=>{wt()})},[Te,wt]);r.useEffect(()=>{st({type:"init",payload:[Mt]})},[]),r.useEffect(()=>{const Oe=new m.Disposable;return Oe.addDispose(j.onScrollToBottom(()=>{requestAnimationFrame(()=>{})})),Oe.addDispose(j.onChatMessageLaunch(async Le=>{var ze;if(Le.immediate!==!1){if(We)return;await ci(Le.message,Le.images,Le.agentId,Le.command)}else Le.agentId&&ge(Le.agentId),Le.command&&Ye(Le.command),(ze=he?.current)===null||ze===void 0||ze.setInputValue(Le.message)})),Oe.addDispose(j.onChatReplyMessageLaunch(Le=>{if(Le.kind==="content"){const ze=Q.start(m.AIServiceType.CustomReply,{message:Le.content,sessionId:W.sessionModel.sessionId});X.addAssistantMessage({content:Le.content,relationId:ze}),jt({chunk:Le.content,relationId:ze})}else{const ze=Q.start(m.AIServiceType.CustomReply,{message:"component#"+Le.component,sessionId:W.sessionModel.sessionId});X.addAssistantMessage({componentId:Le.component,componentValue:Le.value,content:"",relationId:ze}),_n({chunk:Le,relationId:ze})}})),Oe.addDispose(j.onChatMessageListLaunch(Le=>{const ze=[];Le.forEach(St=>{const{role:$t}=St,On=Q.start(m.AIServiceType.Chat,{message:"",sessionId:W.sessionModel.sessionId});if($t==="assistant"){const Bn=St;ze.push((0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:On,text:r.createElement(S.ChatNotify,{requestId:On,chunk:Bn})},M.default.chat_notify))}if($t==="user"){const{message:Bn}=St,ui=O.ChatProxyService.AGENT_ID,li=$.chatUserRoleRender,Ni=ui===O.ChatProxyService.AGENT_ID?"":ui;ze.push((0,T.createMessageByUser)({id:(0,m.uuid)(6),relationId:On,text:li?r.createElement(li,{content:Bn,agentId:Ni}):r.createElement(f.CodeBlockWrapperInput,{relationId:On,text:Bn,agentId:Ni,command:Ue,labelService:ue,workspaceService:te,commandService:fe})},M.default.chat_message_code))}}),st({type:"add",payload:ze}),setTimeout(wt,0)})),()=>Oe.dispose()},[j,$.chatAIRoleRender,X]),r.useEffect(()=>{const Oe=new m.Disposable;return Oe.addDispose(G.onDidSendMessage(Le=>{const ze=Le,St=Q.start(m.AIServiceType.Agent,{message:""}),$t=(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:St,text:r.createElement(S.ChatNotify,{requestId:W.latestRequestId,chunk:ze})},M.default.chat_notify);st({type:"add",payload:[$t]})})),Oe.addDispose(G.onDidChangeAgents(async()=>{const Le=G.getDefaultAgentId();Ae(Le??"")})),()=>Oe.dispose()},[G,X,W]);const rt=r.useCallback(async Oe=>{const{userMessage:Le,relationId:ze,requestId:St,render:$t,startTime:On,command:Bn,agentId:ui}=Oe;X.addAssistantMessage({type:"component",content:""});const li=(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:ze,className:M.default.chat_with_more_actions,text:r.createElement(D.SlashCustomRender,{userMessage:Le,startTime:On,relationId:ze,requestId:St,renderContent:$t,command:Bn,agentId:ui})});st({type:"add",payload:[li]})},[oe,X]),lt=r.useCallback(async Oe=>{const Le=$.chatUserRoleRender,{message:ze,images:St,agentId:$t,relationId:On,command:Bn}=Oe,ui=$t===O.ChatProxyService.AGENT_ID?"":$t,li=(0,T.createMessageByUser)({id:(0,m.uuid)(6),relationId:On,text:Le?r.createElement(Le,{content:ze,images:St,agentId:ui,command:Bn}):r.createElement(f.CodeBlockWrapperInput,{labelService:ue,relationId:On,text:ze,images:St,agentId:ui,command:Bn,workspaceService:te,commandService:fe})},M.default.chat_message_code);st({type:"add",payload:[li]})},[$,$.chatUserRoleRender,X,wt]),At=r.useCallback(async Oe=>{const{message:Le,agentId:ze,request:St,relationId:$t,command:On,startTime:Bn,msgId:ui}=Oe,li=ze===O.ChatProxyService.AGENT_ID?"":ze;if(ze===O.ChatProxyService.AGENT_ID&&On){const Rn=Z.getSlashCommandHandler(On);if(Rn&&Rn.providerRender)return pe(!1),rt({userMessage:Le,render:Rn.providerRender,relationId:$t,requestId:St.requestId,startTime:Bn,agentId:ze,command:On})}const Ni=(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:$t,className:M.default.chat_with_more_actions,text:r.createElement(S.ChatReply,{relationId:$t,request:St,startTime:Bn,agentId:li,command:On,onDidChange:()=>{wt()},history:X,onDone:()=>{pe(!1)},onRegenerate:()=>{St&&W.sendRequest(St,!0)},msgId:ui})});st({type:"add",payload:[Ni]})},[$,X,wt]),jt=r.useCallback(Oe=>{const{chunk:Le,relationId:ze}=Oe;let St=r.createElement(b.ChatMarkdown,{markdown:Le,fillInIncompleteTokens:!0,agentId:re,command:Ue});if($.chatAIRoleRender){const On=$.chatAIRoleRender;St=r.createElement(On,{content:Le})}const $t=(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:ze,text:St,className:M.default.chat_with_more_actions});st({type:"add",payload:[$t]})},[$,X,wt]),_n=r.useCallback(Oe=>{const{chunk:Le,relationId:ze}=Oe,St=(0,T.createMessageByAI)({id:(0,m.uuid)(6),relationId:ze,text:r.createElement(S.ChatNotify,{requestId:ze,chunk:Le})},M.default.chat_notify);st({type:"add",payload:[St]})},[$,X,wt]),In=r.useCallback(async Oe=>{const{message:Le,images:ze,agentId:St,command:$t,reportExtra:On}=Oe,{actionType:Bn,actionSource:ui}=On||{},li=W.createRequest(Le,St,ze,$t);if(!li)return;pe(!0),W.setLatestRequestId(li.requestId);const Ni=Date.now(),Rn=O.ChatProxyService.AGENT_ID===St?m.AIServiceType.Chat:m.AIServiceType.Agent,Cn=Q.start($t||Rn,{agentId:St,userMessage:Le,actionType:Bn,actionSource:ui,sessionId:W.sessionModel.sessionId},600*1e3);X.addUserMessage({content:Le.replaceAll(u.LLM_CONTEXT_KEY_REGEX,""),images:ze||[],agentId:St,agentCommand:$t,relationId:Cn}),await lt({relationId:Cn,message:Le,images:ze,command:$t,agentId:St}),W.sendRequest(li);const $n=X.addAssistantMessage({content:"",relationId:Cn,requestId:li.requestId,replyStartTime:Ni});V.activeMessageInfo={messageId:$n,sessionId:W.sessionModel.sessionId},await At({startTime:Ni,relationId:Cn,message:Le,agentId:St,command:$t,request:li,msgId:$n})},[$,$.chatUserRoleRender,X,wt,We]),ci=r.useCallback(async(Oe,Le,ze,St)=>{var $t,On,Bn;const ui={actionSource:m.ActionSourceEnum.Chat,actionType:m.ActionTypeEnum.Send};ze=ze||O.ChatProxyService.AGENT_ID;let li=Oe;const Ni=/\{\{@file:(.*?)\}\}/g,Rn=Oe.match(Ni);let Cn=!1;if(Rn)for(const un of Rn){const Vn=un.replace(/\{\{@file:(.*?)\}\}/,"$1");Vn&&!Cn&&(Cn=!0,K.cleanFileContext());const Xt=new m.URI(Vn),Qe=(($t=await te.asRelativePath(Xt))===null||$t===void 0?void 0:$t.path)||Xt.displayName;li=li.replace(un,`\`${u.LLM_CONTEXT_KEY.AttachedFile}${Qe}\``)}const $n=/\{\{@folder:(.*?)\}\}/g,Si=li.match($n);if(Si)for(const un of Si){const Vn=un.replace(/\{\{@folder:(.*?)\}\}/,"$1"),Xt=new m.URI(Vn),Qe=((On=await te.asRelativePath(Xt))===null||On===void 0?void 0:On.path)||Xt.displayName;li=li.replace(un,`\`${u.LLM_CONTEXT_KEY.AttachedFolder}${Qe}\``)}const Ui=/\{\{@code:(.*?)\}\}/g,bi=li.match(Ui);if(bi)for(const un of bi){const Vn=un.replace(/\{\{@code:(.*?)\}\}/,"$1"),[Xt,Qe]=Vn.split(":");let vt=[0,0];if(Qe){const[nn,Gt]=Qe.slice(1).split("-");vt=[parseInt(nn,10),parseInt(Gt,10)]}const pt=new m.URI(Xt),gt=((Bn=await te.asRelativePath(pt))===null||Bn===void 0?void 0:Bn.path)||pt.displayName;li=li.replace(un,`\`${u.LLM_CONTEXT_KEY.AttachedFile}${gt}:L${vt[0]}-${vt[1]}\``)}return In({message:li,images:Le,agentId:ze,command:St,reportExtra:ui})},[In]),xn=r.useCallback(()=>{W.clearSessionModel(),j.clearHistoryMessages(),dn()},[Ne]),dn=r.useCallback(()=>{var Oe;(Oe=oe?.current)===null||Oe===void 0||Oe.classList.remove(k),st({type:"init",payload:[Mt]})},[Ne]),jn=Oe=>{We||(mt(Oe.nameWithSlash),ge(Oe.agentId),Ye(Oe.command))},sn=r.useCallback(()=>{Y.toggleSlot(h.AI_CHAT_VIEW_ID)},[Y]),at=$.chatViewHeaderRender||U,$e=r.useCallback(async Oe=>{for(const Le of X.getMessages()){if(Oe.isCancellationRequested)return;if(Le.role===1)await lt({relationId:Le.relationId,message:Le.content,agentId:Le.agentId,command:Le.agentCommand,images:Le.images});else if(Le.role===2&&Le.requestId){const ze=W.sessionModel.getRequest(Le.requestId);ze&&!ze.response.isComplete&&pe(!0),await At({msgId:Le.id,relationId:Le.relationId,message:Le.content,agentId:Le.agentId,command:Le.agentCommand,startTime:Le.replyStartTime,request:ze})}else Le.role===2&&Le.content?await jt({relationId:Le.relationId,chunk:Le.content}):Le.role===2&&Le.componentId&&await _n({relationId:Le.relationId,chunk:{kind:"component",component:Le.componentId,value:Le.componentValue}})}},[At]);return r.useEffect(()=>{dn();const Oe=new m.CancellationTokenSource;return pe(!1),$e(Oe.token),()=>{Oe.cancel()}},[W.sessionModel]),r.createElement("div",{id:M.default.ai_chat_view},r.createElement("div",{className:M.default.header_container},r.createElement(at,{handleClear:xn,handleCloseChatView:sn})),r.createElement("div",{className:M.default.body_container},r.createElement("div",{className:M.default.left_bar,id:"ai_chat_left_container"},r.createElement("div",{className:M.default.chat_container,ref:oe},r.createElement(o.MessageList,{className:M.default.message_list,lockable:!0,toBottomHeight:"100%",dataSource:Ne})),W.sessionModel.slicedMessageCount?r.createElement("div",{className:M.default.chat_tips_text},r.createElement("div",{className:M.default.chat_tips_container},(0,m.formatLocalize)("aiNative.chat.ai.assistant.limit.message",W.sessionModel.slicedMessageCount))):null,r.createElement("div",{className:M.default.chat_input_wrap},r.createElement("div",{className:M.default.header_operate},r.createElement("div",{className:M.default.header_operate_left},Ie.map(Oe=>r.createElement(p.Popover,{id:`ai-chat-shortcut-${Oe.name}`,key:`ai-chat-shortcut-${Oe.name}`,title:Oe.tooltip||Oe.name},r.createElement("div",{className:M.default.tag,onClick:()=>jn(Oe)},Oe.name))))),we.length>0&&r.createElement(E.FileListDisplay,{files:we,hideActions:We,onFileClick:Oe=>{me.open(m.URI.file(m.path.join(q.workspaceDir,Oe)))},onRejectAll:()=>{Ee.processAll("reject")},onAcceptAll:()=>{Ee.processAll("accept")}}),r.createElement(_t,{onSend:ci,disabled:We,enableOptions:!0,theme:Ke,setTheme:mt,agentId:re,setAgentId:ge,defaultAgentId:De,command:Ue,setCommand:Ye,contextService:K,ref:he,disableModelSelector:Be!==void 0||We,sessionModelId:Be})))))};t.AIChatView=B;function U({handleClear:W,handleCloseChatView:j}){const Q=(0,a.useInjectable)(h.IChatInternalService),G=(0,a.useInjectable)(g.IMessageService),[Z,$]=r.useState([]),[V,H]=r.useState(""),K=r.useCallback(()=>{if(Q.sessionModel.history.getMessages().length>0)try{Q.createSessionModel()}catch(oe){G.error(oe.message)}},[Q]),Y=r.useCallback(oe=>{Q.activateSession(oe.id)},[Q]),X=r.useCallback(oe=>{Q.clearSessionModel(oe.id)},[Q]);return r.useEffect(()=>{const oe=()=>{const q=Q.sessionModel.history.getMessages().findLast(Ee=>Ee.role===1);H(q?(0,d.cleanAttachedTextWrapper)(q.content).slice(0,F):""),$(Q.getSessions().map(Ee=>{const te=Ee.history.getMessages(),fe=te.length>0?(0,d.cleanAttachedTextWrapper)(te[0].content).slice(0,F):"",Ie=te.length>0&&te[te.length-1].replyStartTime||0;return{id:Ee.sessionId,title:fe,updatedAt:Ie,loading:!1}}))};oe();const ie=new m.DisposableCollection,he=new Set;return ie.push(Q.onChangeSession(me=>{oe(),!he.has(me)&&(he.add(me),ie.push(Q.sessionModel.history.onMessageChange(()=>{oe()})))})),ie.push(Q.sessionModel.history.onMessageChange(()=>{oe()})),()=>{ie.dispose()}},[Q]),r.createElement("div",{className:M.default.header},r.createElement(c.default,{className:M.default.chat_history,currentId:Q.sessionModel.sessionId,title:V||(0,m.localize)("aiNative.chat.ai.assistant.name"),historyList:Z,onNewChat:K,onHistoryItemSelect:Y,onHistoryItemDelete:X,onHistoryItemChange:()=>{}}),r.createElement(p.Popover,{overlayClassName:M.default.popover_icon,id:"ai-chat-header-clear",title:(0,m.localize)("aiNative.operate.clear.title")},r.createElement(v.EnhanceIcon,{wrapperClassName:M.default.action_btn,className:(0,a.getIcon)("clear"),onClick:W,tabIndex:0,role:"button",ariaLabel:(0,m.localize)("aiNative.operate.clear.title")})),r.createElement(p.Popover,{overlayClassName:M.default.popover_icon,id:"ai-chat-header-close",position:p.PopoverPosition.left,title:(0,m.localize)("aiNative.operate.close.title")},r.createElement(v.EnhanceIcon,{wrapperClassName:M.default.action_btn,className:(0,a.getIcon)("window-close"),onClick:j,tabIndex:0,role:"button",ariaLabel:(0,m.localize)("aiNative.operate.close.title")})))}},21967:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApplyStatus=void 0;const n=e(85608),r=n.__importDefault(e(14041)),o=e(97267),a=n.__importDefault(e(6960)),p=({status:v,error:m})=>{const _=()=>{switch(v){case"generating":return r.default.createElement(o.Loading,null);case"pending":return r.default.createElement(o.Popover,{title:"Pending",id:"edit-file-tool-status-pending"},r.default.createElement(o.Icon,{iconClass:"codicon codicon-circle-large"}));case"success":return r.default.createElement(o.Popover,{title:"Success",id:"edit-file-tool-status-success"},r.default.createElement(o.Icon,{iconClass:"codicon codicon-pass"}));case"failed":return r.default.createElement(o.Popover,{title:`Failed (${m||"Unknown error"})`,id:"edit-file-tool-status-failed"},r.default.createElement(o.Icon,{iconClass:"codicon codicon-error"}));case"cancelled":return r.default.createElement(o.Popover,{title:"Cancelled",id:"edit-file-tool-status-cancelled"},r.default.createElement(o.Icon,{iconClass:"codicon codicon-circle-slash",style:{color:"var(--input-placeholderForeground)"}}));default:return null}};return r.default.createElement("span",{className:a.default.status},_())};t.ApplyStatus=p},87785:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FileListDisplay=void 0;const n=e(85608),r=n.__importStar(e(14041)),o=e(97267),a=e(41869),p=e(54414),v=e(42995),m=e(21967),_=n.__importDefault(e(80919)),s=g=>{const{files:l,onFileClick:h,onRejectAll:u,onAcceptAll:d,hideActions:E}=g,[f,c]=(0,r.useState)(!0),y=(0,a.useInjectable)(p.WorkbenchEditorService),b=(0,a.useInjectable)(a.LabelService),A=(0,r.useMemo)(()=>l.map(R=>{const P=a.URI.parse(R.path),O=b.getIcon(P);return r.default.createElement("span",{className:O})}),[l]),S=l.length,D=l.reduce((R,P)=>({additions:R.additions+P.additions,deletions:R.deletions+P.deletions}),{additions:0,deletions:0}),T=()=>{c(!f)},w=R=>R?r.default.createElement("span",{className:_.default.viewChanges,onClick:P=>{P.stopPropagation(),y.open(a.URI.from({scheme:v.ChatMultiDiffResolver.CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME,path:"chat-editing-multi-diff-source"}),{label:(0,a.localize)("aiNative.chat.view-changes")})}},r.default.createElement(o.Icon,{icon:"unorderedlist",size:"small"}),(0,a.localize)("aiNative.chat.view-changes")):null,I=(R,P)=>{const O=[];return R>0&&O.push(r.default.createElement("span",{key:"add",className:_.default.additions},"+",R)),P>0&&(O.length>0&&O.push(" "),O.push(r.default.createElement("span",{key:"del",className:_.default.deletions},"-",P))),O.length===0&&O.push(r.default.createElement("span",{key:"no-change",className:_.default.noChange},"No changes")),O};return r.default.createElement("div",{className:_.default.container},r.default.createElement("div",{className:_.default.header},r.default.createElement("span",{className:_.default.title},r.default.createElement("button",{className:_.default.toggleButton,onClick:T},f?r.default.createElement(o.Icon,{icon:"down"}):r.default.createElement(o.Icon,{icon:"right"})," Changed Files(",S,")"),I(D.additions,D.deletions),!E&&w(l.length)),!E&&l.some(R=>R.status==="pending")&&r.default.createElement("div",{className:_.default.actions},r.default.createElement(o.Button,{type:"link",size:"small",onClick:R=>{R.stopPropagation(),u()}},"Reject"),r.default.createElement(o.Button,{size:"small",onClick:R=>{R.stopPropagation(),d()}},"Accept"))),r.default.createElement("ul",{className:`${_.default.fileList} ${f?"":_.default.collapsed}`},l.map((R,P)=>r.default.createElement("li",{key:P,className:_.default.fileItem,onClick:()=>h(R.path)},r.default.createElement("span",{className:_.default.fileIcon},A[P]||"\u{1F4C4}"),r.default.createElement("div",{className:_.default.fileInfo},r.default.createElement("div",{className:_.default.filePath},R.path),r.default.createElement("div",{className:_.default.fileStats},I(R.additions,R.deletions)),r.default.createElement(m.ApplyStatus,{status:R.status}))))))};t.FileListDisplay=s},25834:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeBlockWrapperInput=t.CodeBlockWrapper=t.CodeEditorWithHighlight=void 0;const n=e(85608),r=n.__importDefault(e(56005)),o=n.__importDefault(e(97331)),a=n.__importStar(e(14041)),p=n.__importDefault(e(10580)),v=e(46541),m=e(41869),_=e(81878),s=e(89195),g=e(43718),l=e(71624),h=e(9447),u=e(52416),d=n.__importDefault(e(6960)),E=e(83933),f=e(44692);e(38191);const c=S=>{const{input:D,language:T,relationId:w,agentId:I,command:R,hideInsert:P}=S,O=a.default.useRef(null),M=(0,m.useInjectable)(h.MonacoCommandRegistry),k=(0,m.useInjectable)(m.IClipboardService),F=(0,m.useInjectable)(u.IThemeService),L=(0,m.useInjectable)(g.IAIReporter),[B,U]=(0,a.useState)(!1),W=(0,a.useMemo)(()=>(0,m.uuid)(12),[O,O.current]);(0,a.useEffect)(()=>{const Z=H=>{H.type==="dark"||H.type==="hcDark"?e.e(622).then(e.bind(e,51622)):(H.type==="light"||H.type==="hcLight")&&e.e(412).then(e.bind(e,50412))},$=F.onThemeChange(H=>{Z(H)}),V=F.getCurrentThemeSync();return Z(V),()=>$.dispose()},[]);const j=(0,a.useRef)((0,o.default)(()=>{var Z;if(O.current){const $=O.current,V=(Z=$?.el)===null||Z===void 0?void 0:Z.querySelector("code"),H=V?.children;if(H){const K=H[H.length-1];K&&(K.scrollIntoViewIfNeeded?K.scrollIntoViewIfNeeded():K.scrollIntoView(!1))}}},150,{leading:!0,trailing:!0})).current;(0,a.useEffect)(()=>(j(),()=>{j.cancel()}),[D,j]);const Q=(0,a.useCallback)(async()=>{U(!0),await k.writeText(D),L.end(w,{copy:!0,code:D,language:T,agentId:I,command:R,actionSource:g.ActionSourceEnum.Chat,actionType:g.ActionTypeEnum.ChatCopyCode}),(0,g.runWhenIdle)(()=>{U(!1)},1e3)},[k,D,w]),G=(0,a.useCallback)(()=>{const Z=M.getActiveCodeEditor();if(Z){const $=Z.getSelection();$&&((0,l.insertSnippetWithMonacoEditor)(Z,D,[$],{undoStopBefore:!1,undoStopAfter:!1}),L.end(w,{insert:!0,code:D,language:T,agentId:I,command:R,actionSource:g.ActionSourceEnum.Chat,actionType:g.ActionTypeEnum.ChatInsertCode}))}},[M]);return a.default.createElement("div",{className:d.default.monaco_wrapper},a.default.createElement("div",{className:d.default.action_toolbar},!P&&a.default.createElement(_.Popover,{id:`ai-chat-inser-${W}`,title:(0,g.localize)("aiNative.chat.code.insert")},a.default.createElement(s.EnhanceIcon,{className:(0,m.getIcon)("insert"),onClick:()=>G(),tabIndex:0,role:"button",ariaLabel:(0,g.localize)("aiNative.chat.code.insert")})),a.default.createElement(_.Popover,{id:`ai-chat-copy-${W}`,title:(0,g.localize)(B?"aiNative.chat.code.copy.success":"aiNative.chat.code.copy")},a.default.createElement(s.EnhanceIcon,{className:(0,m.getIcon)("copy"),onClick:()=>Q(),tabIndex:0,role:"button",ariaLabel:(0,g.localize)("aiNative.chat.code.copy")}))),a.default.createElement(p.default,{language:T,ref:O,className:d.default.highlight_editor},D))};t.CodeEditorWithHighlight=c;const y=({content:S="",relationId:D,renderText:T,agentId:w="",command:I="",labelService:R,commandService:P,workspaceService:O})=>{const M=/`([^`]+)`/g,k=/```([^]+?)```/g,F=/```([^]+)?/g,L=/<attached_file>(.*)/g,B=/<attached_folder>(.*)/g,U=(0,a.useCallback)(async(G,Z)=>{const $=await O?.roots;let V;if($)for(const H of $){V=new g.URI(H.uri).resolve(G);try{await P?.executeCommand(m.FILE_COMMANDS.REVEAL_IN_EXPLORER.id,V),Z===f.MentionType.FILE&&await P?.executeCommand(m.EDITOR_COMMANDS.OPEN_RESOURCE.id,V);break}catch{continue}}},[P,O]),W=(G,Z=!1,$)=>a.default.createElement("span",{className:d.default.attachment,key:$,onClick:()=>U(G,Z?f.MentionType.FOLDER:f.MentionType.FILE)},a.default.createElement(_.Icon,{iconClass:Z?(0,m.getIcon)("folder"):R?.getIcon(new g.URI(G||"file"))}),a.default.createElement("span",{className:d.default.attachment_text},G)),j=G=>{const Z=G.split(`
|
|
31568
31568
|
`)[0].trim().toLowerCase(),$=E.highLightLanguageSupport.find(V=>V===Z)||"plaintext";return G=G.replace(/.*?\n/,""),G=G.trim(),a.default.createElement("div",{className:d.default.code_block},a.default.createElement("div",{className:d.default.code_language},(0,r.default)($)),a.default.createElement(t.CodeEditorWithHighlight,{input:G,language:Z,relationId:D,agentId:w,command:I}))},Q=(0,a.useMemo)(()=>{const G=S.split(k),Z=[];return G.map(($,V)=>{V%2===0?$.split(M).map((H,K)=>{if(K%2===0){if(H.includes("```")){const Y=H.split(F).filter(Boolean);if(Y.length===2){Z.push(Y[0]),Z.push(j(Y[1]));return}}T?Z.push(T(H)):Z.push(H)}else{const Y=H,X=[...H.matchAll(L)],oe=[...H.matchAll(B)];if(X.length||oe.length){let ie=0;const he=[],me=(q,Ee)=>{q.forEach((ue,te)=>{if(ue.index!==void 0){const fe=Y.slice(ie,ue.index);fe&&he.push(a.default.createElement("span",{key:`${K}-${te}-${Ee?"folder":"file"}`},fe)),he.push(W(ue[1],Ee,`${K}-tag-${te}-${Ee?"folder":"file"}`)),ie=ue.index+ue[0].length}})};me(X,!1),me(oe,!0),he.push(Y.slice(ie)),Z.push(...he)}else Z.push(a.default.createElement("span",{className:d.default.code_inline,key:K},H))}}):Z.push(j($))}),Z},[S,T]);return a.default.createElement(a.default.Fragment,null,Q)},b=({text:S,renderText:D,relationId:T,agentId:w,labelService:I,commandService:R,workspaceService:P})=>a.default.createElement("div",{className:d.default.ai_chat_code_wrapper},a.default.createElement("div",{className:d.default.render_text},a.default.createElement(y,{content:S,labelService:I,renderText:D,relationId:T,agentId:w,commandService:R,workspaceService:P})));t.CodeBlockWrapper=b;const A=({text:S,images:D,relationId:T,agentId:w,command:I,labelService:R,workspaceService:P,commandService:O})=>{const M=(0,m.useInjectable)(g.ChatFeatureRegistryToken),[k,F]=(0,a.useState)(""),[L,B]=(0,a.useState)(S);return a.default.useEffect(()=>{const{value:U,nameWithSlash:W}=M.parseSlashCommand(S);if(W){F(W),B(U);return}else B(S)},[S,M]),a.default.createElement("div",{className:d.default.ai_chat_code_wrapper},D?.map(U=>a.default.createElement("div",{className:d.default.image_wrapper},a.default.createElement(v.Image,{src:U}))),a.default.createElement("div",{className:d.default.render_text},k&&a.default.createElement("div",{className:d.default.tag_wrapper},a.default.createElement("span",{className:d.default.tag},k)),w&&a.default.createElement("div",{className:d.default.tag,style:{marginRight:4}},"@",w),I&&a.default.createElement("div",{className:d.default.tag},"/ ",I),a.default.createElement(y,{content:L,labelService:R,relationId:T,agentId:w,command:I,workspaceService:P,commandService:O})))};t.CodeBlockWrapperInput=A},90103:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=e(85608),r=n.__importDefault(e(53373)),o=n.__importStar(e(14041)),a=e(97267),p=e(41869),v=e(89195),m=n.__importDefault(e(35553)),_=100,s=(0,o.memo)(({title:g,historyList:l,currentId:h,onNewChat:u,onHistoryItemSelect:d,onHistoryItemChange:E,onHistoryItemDelete:f,className:c})=>{const[y,b]=(0,o.useState)(null),[A,S]=(0,o.useState)(""),D=(0,o.useRef)(null),T=(0,o.useCallback)(W=>{S(W.target.value)},[A]),w=(0,o.useCallback)(W=>{d(W),S("")},[d,A]),I=(0,o.useCallback)(W=>{b({[W.id]:!0})},[y]),R=(0,o.useCallback)((W,j)=>{b({[W.id]:!1}),E(W,j)},[E,y]),P=(0,o.useCallback)(W=>{b({[W.id]:!1})},[y]),O=(0,o.useCallback)(()=>{u()},[u]);(0,o.useEffect)(()=>{var W;y&&((W=D.current)===null||W===void 0||W.focus({cursor:"end"}))},[y]);const M=(0,o.useCallback)(W=>{f(W)},[f]),k=(0,o.useCallback)(W=>{if(W<60*60*1e3){const Q=Math.floor(W/6e4);return Q===0?"Just now":`${Q}m ago`}else{if(W<24*60*60*1e3)return`${Math.floor(W/36e5)}h ago`;if(W<7*24*60*60*1e3)return`${Math.floor(W/864e5)}d ago`;if(W<30*24*60*60*1e3)return`${Math.floor(W/6048e5)}w ago`;if(W<365*24*60*60*1e3)return`${Math.floor(W/2592e6)}mo ago`}return`${Math.floor(W/(365*24*60*60*1e3))}y ago`},[]),F=(0,o.useCallback)(W=>{const j=new Date,Q=[];return W.forEach(G=>{const Z=new Date(G.updatedAt),$=j.getTime()-Z.getTime(),V=k($),H=Q.find(K=>K.key===V);H?H.items.push(G):Q.push({key:V,items:[G]})}),Q},[k]),L=(0,o.useCallback)(W=>o.default.createElement("div",{key:W.id,className:(0,r.default)(m.default.chat_history_item,W.id===h?m.default.chat_history_item_selected:""),onClick:()=>w(W)},o.default.createElement("div",{className:m.default.chat_history_item_content},W.loading?o.default.createElement(a.Loading,null):o.default.createElement(a.Icon,{icon:"message",style:{width:"16px",height:"16px",marginRight:4}}),y?.[W.id]?o.default.createElement(a.Input,{className:m.default.chat_history_item_title,defaultValue:W.title,ref:D,onPressEnter:j=>{R(W,j.target.value)},onBlur:()=>P(W)}):o.default.createElement("span",{id:`chat-history-item-title-${W.id}`,className:m.default.chat_history_item_title},W.title)),o.default.createElement("div",{className:m.default.chat_history_item_actions},o.default.createElement(v.EnhanceIcon,{className:(0,r.default)(m.default.chat_history_item_actions_delete,(0,a.getIcon)("delete")),onClick:j=>{j.preventDefault(),j.stopPropagation(),M(W)},ariaLabel:(0,p.localize)("aiNative.operate.chatHistory.delete")}))),[y,w,R,P,I,M,h,D]),B=(0,o.useCallback)(()=>{const W=l.slice(0,_).filter(Q=>Q.title&&Q.title.includes(A)),j=F(W);return o.default.createElement("div",null,o.default.createElement(a.Input,{placeholder:(0,p.localize)("aiNative.operate.chatHistory.searchPlaceholder"),className:m.default.chat_history_search,value:A,onChange:T}),o.default.createElement("div",{className:m.default.chat_history_list},j.map(Q=>o.default.createElement("div",{key:Q.key,style:{padding:"4px"}},o.default.createElement("div",{className:m.default.chat_history_time},Q.key),Q.items.map(L)))))},[l,A,F,T,L]),U=(0,o.useCallback)(W=>W.parentElement,[]);return o.default.createElement("div",{className:(0,r.default)(m.default.chat_history_header,c)},o.default.createElement("div",{className:m.default.chat_history_header_title},o.default.createElement("span",null,g)),o.default.createElement("div",{className:m.default.chat_history_header_actions},o.default.createElement(a.Popover,{id:"chat-history-header-actions-history",content:B(),trigger:a.PopoverTriggerType.click,position:a.PopoverPosition.bottomRight,title:(0,p.localize)("aiNative.operate.chatHistory.title"),getPopupContainer:U},o.default.createElement("div",{className:m.default.chat_history_header_actions_history,title:(0,p.localize)("aiNative.operate.chatHistory.title")},o.default.createElement(v.EnhanceIcon,{className:(0,r.default)(m.default.chat_history_header_actions_history,"codicon codicon-history")}))),o.default.createElement(a.Popover,{id:"ai-chat-header-new",position:a.PopoverPosition.top,title:(0,p.localize)("aiNative.operate.newChat.title")},o.default.createElement(v.EnhanceIcon,{className:(0,r.default)(m.default.chat_history_header_actions_new,(0,a.getIcon)("plus")),onClick:O}))))});t.default=s},57987:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatInput=void 0;const n=e(85608),r=n.__importDefault(e(53373)),o=n.__importStar(e(14041)),a=e(41869),p=e(81878),v=e(89195),m=e(83913),_=e(43718),s=e(92323),g=e(9447),l=e(72665),h=e(19413),u=e(42033),d=e(51081),E=e(27397),f=e(30703),c=n.__importDefault(e(6960)),y=8,b=68,A=({icon:w,name:I,description:R,agentId:P,command:O,selectedAgentId:M})=>{const k=(0,o.useMemo)(()=>!M&&P&&P!==d.ChatProxyService.AGENT_ID&&O?o.default.createElement("span",{className:c.default.agent_label},"@",P):null,[]);return o.default.createElement("div",{className:c.default.block},w&&o.default.createElement(v.EnhanceIcon,{className:w}),I&&o.default.createElement("span",{className:c.default.name},I),R&&o.default.createElement("span",{className:c.default.text},R),k)},S=({onClick:w,bottom:I,trigger:R,agentId:P})=>{const O=(0,a.useInjectable)(h.IChatAgentService),M=(0,a.useInjectable)(_.ChatAgentViewServiceToken),k=(0,o.useMemo)(()=>R===h.AT_SIGN_SYMBOL?M.getRenderAgents().map(L=>new u.ChatSlashCommandItemModel({icon:"",name:`${h.AT_SIGN_SYMBOL}${L.id} `,description:L.metadata.description},"",L.id)):O.getCommands().map(L=>new u.ChatSlashCommandItemModel({icon:"",name:`${h.SLASH_SYMBOL} ${L.name} `,description:L.description},L.name,L.agentId)).filter(L=>!P||L.agentId===P),[R,O]),F=(0,o.useCallback)((L,B,U)=>{w&&w(L||"",B,U)},[w]);return k.length===0?null:o.default.createElement("div",{className:c.default.instruction_options_container,style:{bottom:I+"px"}},o.default.createElement("div",{className:c.default.options},o.default.createElement("ul",null,k.map(({icon:L,name:B,nameWithSlash:U,description:W,agentId:j,command:Q})=>o.default.createElement("li",{key:`${j||""}-${B}`,onMouseDown:()=>F(U,j,Q)},o.default.createElement(A,{icon:L,name:B,description:W,agentId:j,command:Q,selectedAgentId:P}))))))},D=({themeBlock:w})=>o.default.createElement("div",{className:c.default.theme_container},o.default.createElement("div",{className:c.default.theme_block},w)),T=({agentId:w,command:I})=>o.default.createElement("div",{className:c.default.theme_container},w!==d.ChatProxyService.AGENT_ID&&o.default.createElement("div",{className:c.default.theme_block,style:{marginRight:4}},"@",w),I&&o.default.createElement("div",{className:c.default.theme_block},h.SLASH_SYMBOL," ",I));t.ChatInput=o.default.forwardRef((w,I)=>{const{onSend:R,onValueChange:P,enableOptions:O=!1,disabled:M=!1,defaultHeight:k=32,autoFocus:F,setTheme:L,theme:B,setAgentId:U,agentId:W,defaultAgentId:j,setCommand:Q,command:G,sendBtnClassName:Z}=w,$=W||j,V=(0,o.useRef)(null),H=(0,o.useRef)(null),[K,Y]=(0,o.useState)(w.value||""),[X,oe]=(0,o.useState)(!1),[ie,he]=(0,o.useState)(k),[me,q]=(0,o.useState)(!1),[Ee,ue]=(0,o.useState)(!1),[te,fe]=(0,o.useState)(!1),[Ie,Me]=(0,o.useState)((0,_.localize)("aiNative.chat.input.placeholder.default")),Be=(0,a.useInjectable)(h.IChatInternalService),Pe=(0,a.useInjectable)(l.IDialogService),we=(0,a.useInjectable)(a.AINativeConfigService),_e=(0,a.useInjectable)(h.TokenMCPServerProxyService),Ne=(0,a.useInjectable)(g.MonacoCommandRegistry),Te=(0,a.useInjectable)(h.IChatAgentService),We=(0,a.useInjectable)(_.ChatFeatureRegistryToken),pe=(0,a.useInjectable)(s.CommandService),re=(0,a.useLatest)($),ge=o.default.useCallback(()=>{pe.executeCommand(E.MCPConfigCommands.OPEN_MCP_CONFIG.id)},[pe]),De=o.default.useCallback(async()=>{const rt=await _e.getAllMCPTools();Pe.open({message:o.default.createElement(f.MCPToolsDialog,{tools:rt}),type:_.MessageType.Empty,buttons:[(0,_.localize)("dialog.file.close")]})},[_e,Pe]);(0,o.useImperativeHandle)(I,()=>({setInputValue:rt=>{Y(rt),(0,_.runWhenIdle)(()=>{var lt;(lt=V.current)===null||lt===void 0||lt.focus()},120)}})),(0,o.useEffect)(()=>{w.value!==K&&Y(w.value||"")},[w.value]),(0,o.useEffect)(()=>{var rt;(rt=V.current)===null||rt===void 0||rt.focus();const lt=(0,_.localize)("aiNative.chat.input.placeholder.default"),At=We.getSlashCommandHandler(G);if(At&&At.providerInputPlaceholder){const jt=Ne.getActiveCodeEditor(),_n=At.providerInputPlaceholder(K,jt);Me(_n||lt)}else Me(lt)},[We,G]),(0,o.useEffect)(()=>{Ke(B||"",$,G)},[B,$,G]),(0,o.useEffect)(()=>{var rt;V&&F&&((rt=V.current)===null||rt===void 0||rt.focus())},[V,F,w.value]),(0,o.useEffect)(()=>{if(O&&((K===h.SLASH_SYMBOL||K===h.AT_SIGN_SYMBOL&&Te.getAgents().length>0)&&!te?oe(!0):oe(!1)),K.startsWith(h.SLASH_SYMBOL)){const{value:rt,nameWithSlash:lt}=We.parseSlashCommand(K);if(lt){const At=We.getSlashCommandBySlashName(lt);Y(rt),L(lt),At&&(U(At.agentId),Q(At.command));return}}if(Te.getAgents().length){const rt=Te.parseMessage(K,re.current);(rt.agentId||rt.command)&&(L(""),Y(rt.message),rt.agentId&&U(rt.agentId),rt.command&&Q(rt.command))}},[V,K,O,We]),(0,o.useEffect)(()=>{K||(he(k),ue(!1),fe(!1))},[K]);const Ae=(0,o.useCallback)(rt=>{Y(rt),P&&P(rt)},[]),Ue=(0,o.useCallback)(()=>{Be.cancelRequest()},[]),Ye=(0,o.useCallback)(async()=>{if(M)return;const rt=(lt=K)=>{R(lt,[],$,G),Y(""),L(""),U(""),Q("")};if(G){const lt=We.getSlashCommandHandler(G);if(lt&<.execute){const At=Ne.getActiveCodeEditor();await lt.execute(K,jt=>rt(jt),At);return}}rt()},[R,K,$,G,We]),Ke=(0,o.useCallback)((rt,lt,At)=>{if(lt){if(oe(!1),L(""),U(lt),Q(At||""),V?.current){const jt=V.current.value;(jt===h.AT_SIGN_SYMBOL||At&&jt===h.SLASH_SYMBOL)&&Y(""),(0,_.runWhenIdle)(()=>V.current.focus())}}else if(rt){oe(!1),U(""),Q("");const jt=We.getSlashCommandBySlashName(rt);if(L(jt?jt.nameWithSlash:""),V&&V.current){const _n=V.current.value;_n.length===1&&_n.startsWith(h.SLASH_SYMBOL)&&Y(""),(0,_.runWhenIdle)(()=>V.current.focus())}}},[V,We]),mt=(0,o.useMemo)(()=>{const rt=y+ie;return te&&oe(!1),rt},[ie]),_t=rt=>{var lt,At;if(rt.key==="Backspace"&&((lt=V.current)===null||lt===void 0?void 0:lt.selectionEnd)===0&&((At=V.current)===null||At===void 0?void 0:At.selectionStart)===0){if(L(""),$===d.ChatProxyService.AGENT_ID){Q(""),U("");return}$&&(G?Q(""):U(""))}},Mt=(0,o.useCallback)(rt=>{he(rt),rt>b?ue(!0):ue(!1)},[]),ct=(0,o.useCallback)(()=>{q(!1),oe(!1)},[V]),wt=(0,o.useCallback)(()=>{q(!0)},[V]),st=(0,o.useCallback)(()=>{const rt=te;if(fe(!rt),rt)he(k),ue(!1);else{const At=document.querySelector("#ai_chat_left_container").clientHeight-68-(B?32:0)-16;he(At)}},[te]);return o.default.createElement("div",{className:(0,r.default)(c.default.chat_input_container,me?c.default.active:null)},X&&o.default.createElement("div",{ref:H},o.default.createElement(S,{onClick:Ke,bottom:mt,trigger:K,agentId:$})),B&&o.default.createElement(D,{themeBlock:B}),$&&o.default.createElement(T,{agentId:$,command:G}),Ee&&o.default.createElement("div",{className:c.default.expand_icon,onClick:()=>st()},o.default.createElement(p.Popover,{id:"ai_chat_input_expand",title:(0,_.localize)(te?"aiNative.chat.expand.unfullscreen":"aiNative.chat.expand.fullescreen")},o.default.createElement(p.Icon,{className:(0,r.default)(te?(0,p.getIcon)("unfullscreen"):(0,p.getIcon)("fullescreen"))}))),o.default.createElement(m.InteractiveInput,{ref:V,placeholder:Ie,value:K,onKeyDown:_t,onBlur:ct,onFocus:wt,onValueChange:Ae,disabled:M,className:c.default.input_wrapper,onSend:Ye,onStop:Ue,sendBtnClassName:Z,onHeightChange:Mt,height:ie,popoverPosition:p.PopoverPosition.left}),o.default.createElement("div",{className:c.default.chat_input_footer},we.capabilities.supportsMCP&&o.default.createElement("div",{className:c.default.mcp_desc},o.default.createElement(p.Popover,{overlayClassName:c.default.popover_icon,id:"ai-chat-header-mcp-server",position:p.PopoverPosition.left,title:"MCP Server"},o.default.createElement(v.EnhanceIcon,{wrapperClassName:c.default.action_btn,className:"codicon codicon-radio-tower",onClick:ge,tabIndex:0,role:"button",ariaLabel:"MCP Server"})),o.default.createElement(p.Popover,{overlayClassName:c.default.popover_icon,id:"ai-chat-header-tools",position:p.PopoverPosition.left,title:(0,_.localize)("aiNative.operate.tools.title")},o.default.createElement(v.EnhanceIcon,{wrapperClassName:c.default.action_btn,className:(0,p.getIcon)("menubar-tool"),onClick:De,tabIndex:0,role:"button",ariaLabel:(0,_.localize)("aiNative.operate.tools.title")})))))})},56474:(x,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatMarkdown=void 0,t.postProcessCodeBlockLanguageId=l,t.fillInIncompleteTokens=h;const n=e(85608),r=n.__importDefault(e(53373)),o=n.__importStar(e(14041)),a=e(13719),p=e(84605),v=e(41869),m=e(90684),_=e(25834),s=n.__importDefault(e(6960)),g=I=>{const R=(0,o.useRef)(null),P=(0,v.useInjectable)(v.AppConfig),[O,M]=(0,o.useState)(),[k,F]=(0,o.useState)();return(0,o.useEffect)(()=>{var L;if(!R.current)return;const U=typeof I.markdown=="string"?new m.MarkdownString(I.markdown):I.markdown,W=new a.MarkdownReactRenderer;W.code=(V,H)=>{const K=l(H);return o.default.createElement("div",{className:s.default.code},o.default.createElement(v.ConfigProvider,{value:P},o.default.createElement("div",{className:s.default.code_block},o.default.createElement("div",{className:(0,r.default)(s.default.code_language,"language-badge")},K),o.default.createElement(_.CodeEditorWithHighlight,{input:V,language:K,relationId:I.relationId||"",agentId:I.agentId,command:I.command,hideInsert:I.hideInsert}))))},W.codespan=V=>o.default.createElement("code",{className:s.default.code_inline},V);const j=new a.MarkdownReactParser({renderer:W}),Q={...p.marked.defaults,...I.markedOptions,renderer:j,smartypants:!1};let G=(L=U.value)!==null&&L!==void 0?L:"";G.length>1e5&&(G=`${G.slice(0,1e5)}\u2026`);let Z,$;if(I.fillInIncompleteTokens){const V=p.marked.lexer(G,Q),H=h(V);Z=p.marked.parser(H,Q),$=H}else{const V=p.marked.lexer(G,Q);Z=p.marked.parser(V,Q),$=V}F($),M(j)},[I.markdown]),o.default.createElement("div",{className:(0,r.default)(s.default.markdown_container,I.className),ref:R,tabIndex:0},k&&O&&O.parse(k))};t.ChatMarkdown=g;function l(I){if(!I)return"";const R=I.split(/[\s+|:|,|\{|\?]/,1);return R.length?R[0]:I}function h(I){let R,P;for(R=0;R<I.length;R++){const O=I[R];if(O.type==="paragraph"&&O.raw.match(/(\n|^)```/)){P=u(I.slice(R));break}if(O.type==="paragraph"&&O.raw.match(/(\n|^)\|/)){P=D(I.slice(R));break}if(O.type==="paragraph"&&R===I.length-1){const M=w(O);if(M){P=[M];break}}}if(P){const O=[...I.slice(0,R),...P];return O.links=I.links,O}return I}function u(I){const R=T(I);return p.marked.lexer(R+"\n```")}function d(I){return S(I,"`")}function E(I){return S(I,"*")}function f(I){return S(I,"_")}function c(I){return S(I,")")}function y(I){return S(I,"](about:blank)")}function b(I){return S(I,"**")}function A(I){return S(I,"__")}function S(I,R){const P=T(Array.isArray(I)?I:[I]);return p.marked.lexer(P+R)[0]}function D(I){const R=T(I),P=R.split(`
|
|
31569
31569
|
`);let O=0,M=!1;for(let k=0;k<P.length;k++){const F=P[k].trim();if(typeof O>"u"&&F.match(/^\s*\|/)){const L=F.match(/(\|[^\|]+)(?=\||$)/g);L&&(O=L.length)}else if(typeof O=="number")if(F.match(/^\s*\|/)&&k===P.length-1)M=!0;else return}if(O>0){const k=M?P.slice(0,-1).join(`
|
|
31570
31570
|
`):R,F=!!k.match(/\|\s*$/),L=k+(F?"":"|")+`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/cli-engine",
|
|
3
|
-
"version": "3.8.3-next-
|
|
3
|
+
"version": "3.8.3-next-1747210131.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-
|
|
30
|
-
"@opensumi/ide-core-common": "3.8.3-next-
|
|
31
|
-
"@opensumi/ide-core-node": "3.8.3-next-
|
|
32
|
-
"@opensumi/ide-express-file-server": "3.8.3-next-
|
|
33
|
-
"@opensumi/ide-extension": "3.8.3-next-
|
|
34
|
-
"@opensumi/ide-i18n": "3.8.3-next-
|
|
35
|
-
"@opensumi/ide-main-layout": "3.8.3-next-
|
|
36
|
-
"@opensumi/ide-startup": "3.8.3-next-
|
|
29
|
+
"@opensumi/ide-core-browser": "3.8.3-next-1747210131.0",
|
|
30
|
+
"@opensumi/ide-core-common": "3.8.3-next-1747210131.0",
|
|
31
|
+
"@opensumi/ide-core-node": "3.8.3-next-1747210131.0",
|
|
32
|
+
"@opensumi/ide-express-file-server": "3.8.3-next-1747210131.0",
|
|
33
|
+
"@opensumi/ide-extension": "3.8.3-next-1747210131.0",
|
|
34
|
+
"@opensumi/ide-i18n": "3.8.3-next-1747210131.0",
|
|
35
|
+
"@opensumi/ide-main-layout": "3.8.3-next-1747210131.0",
|
|
36
|
+
"@opensumi/ide-startup": "3.8.3-next-1747210131.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": "
|
|
75
|
+
"gitHead": "45887cd2ac43a549560070e5125430833be57c98"
|
|
76
76
|
}
|