@opensumi/cli-engine 3.9.1-next-1781010409.0 → 3.9.1-next-1781059368.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.
@@ -36934,7 +36934,7 @@ User's intention: ${f.instructions}
36934
36934
  Provide the complete updated code.
36935
36935
  `,{...await this.chatProxyService.getRequestOptions(),trimTexts:["<updated-code>","</updated-code>"],system:"You are a coding assistant that helps merge code updates, ensuring every modification is fully integrated."})}}};t.ApplyService=l,n.__decorate([(0,s.Autowired)(c.CommandService),n.__metadata("design:type",Object)],l.prototype,"commandService",void 0),n.__decorate([(0,s.Autowired)(_.IEditorDocumentModelService),n.__metadata("design:type",Object)],l.prototype,"modelService",void 0),n.__decorate([(0,s.Autowired)(o.AIBackSerivcePath),n.__metadata("design:type",Object)],l.prototype,"aiBackService",void 0),n.__decorate([(0,s.Autowired)(g.ChatProxyServiceToken),n.__metadata("design:type",u.ChatProxyService)],l.prototype,"chatProxyService",void 0),t.ApplyService=l=n.__decorate([(0,s.Injectable)()],l)},74055:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatAgentService=void 0;const n=e(85608),s=n.__importDefault(e(66652)),o=e(76003),c=e(43718),_=e(46044),v=e(73307),m=e(29770);let g=class extends c.Disposable{constructor(){super(),this.agents=new Map,this.initialUserMessageMap=new Map,this.shouldUpdateContext=!1,this._onDidChangeAgents=new c.Emitter,this.onDidChangeAgents=this._onDidChangeAgents.event,this._onDidSendMessage=new c.Emitter,this.onDidSendMessage=this._onDidSendMessage.event,this.addDispose(this._onDidChangeAgents),this.addDispose(this.llmContextService.onDidContextFilesChangeEvent(u=>{u.version!==this.contextVersion&&(this.contextVersion=u.version,this.shouldUpdateContext=!0)}))}registerAgent(u){if(this.agents.has(u.id))throw new Error(`Already registered an agent with id ${u.id}`);return this.agents.set(u.id,{agent:u,commands:[]}),this._onDidChangeAgents.fire(),(0,c.toDisposable)(()=>{this.agents.delete(u.id)&&this._onDidChangeAgents.fire()})}async updateAgent(u,r){const l=this.agents.get(u);if(!l)throw new Error(`No agent with id ${u} registered`);l.agent.metadata={...l.agent.metadata,...r},l.commands=await l.agent.provideSlashCommands(c.CancellationToken.None),r.isDefault&&(this.defaultAgentId=u);const d=await l.agent.provideChatWelcomeMessage(c.CancellationToken.None);if(d){const{content:f,sampleQuestions:E}=d;this.chatFeatureRegistry.registerWelcome(f,E)}this._onDidChangeAgents.fire()}getAgents(){return Array.from(this.agents.values(),u=>u.agent)}hasAgent(u){return this.agents.has(u)}getDefaultAgentId(){return this.defaultAgentId}getAgent(u){const r=this.agents.get(u);return r?.agent}async invokeAgent(u,r,l,d,f){const E=Date.now();this.logger.log(`[ChatAgentService] invokeAgent start \u2014 agentId=${u}, sessionId=${r.sessionId}, requestId=${r.requestId}, messageChars=${r.message.length}, historyMessages=${d.length}, regenerate=${!!r.regenerate}`);const p=this.agents.get(u);if(!p)throw this.logger.error(`[ChatAgentService] invokeAgent missing agent \u2014 agentId=${u}, sessionId=${r.sessionId}, requestId=${r.requestId}, registeredAgents=${Array.from(this.agents.keys()).join(",")||"(empty)"}`),new Error(`No agent with id ${u},this.agents ${this.agents}`);if(this.initialUserMessageMap.has(r.sessionId))this.shouldUpdateContext||r.regenerate||d.length===0?(this.logger.log(`[ChatAgentService] invokeAgent context enhance refresh \u2014 agentId=${u}, sessionId=${r.sessionId}, requestId=${r.requestId}, shouldUpdateContext=${this.shouldUpdateContext}, regenerate=${!!r.regenerate}, historyMessages=${d.length}`),r.message=await this.provideContextMessage(r.message,r.sessionId),this.shouldUpdateContext=!1):this.logger.log(`[ChatAgentService] invokeAgent context enhance skipped \u2014 agentId=${u}, sessionId=${r.sessionId}, requestId=${r.requestId}`);else{this.logger.log(`[ChatAgentService] invokeAgent context enhance initial \u2014 agentId=${u}, sessionId=${r.sessionId}, requestId=${r.requestId}`),this.initialUserMessageMap.set(r.sessionId,r.message);const y=r.message;r.message=await this.provideContextMessage(y,r.sessionId)}this.logger.log(`[ChatAgentService] invokeAgent calling agent \u2014 agentId=${u}, sessionId=${r.sessionId}, requestId=${r.requestId}, enhancedMessageChars=${r.message.length}`);const h=await p.agent.invoke(r,l,d,f);return this.logger.log(`[ChatAgentService] invokeAgent done \u2014 agentId=${u}, sessionId=${r.sessionId}, requestId=${r.requestId}, elapsedMs=${Date.now()-E}`),h}async provideContextMessage(u,r){const l=Date.now();this.logger.log(`[ChatAgentService] provideContextMessage serialize start \u2014 sessionId=${r}, messageChars=${u.length}`);const d=await this.llmContextService.serialize();this.logger.log(`[ChatAgentService] provideContextMessage serialize done \u2014 sessionId=${r}, elapsedMs=${Date.now()-l}, contextChars=${JSON.stringify(d).length}`);const f=await this.promptProvider.provideContextPrompt(d,u);return this.logger.log(`[ChatAgentService] provideContextMessage prompt done \u2014 sessionId=${r}, elapsedMs=${Date.now()-l}, fullMessageChars=${f.length}`),this.aiReporter.send({msgType:c.AIServiceType.Chat,actionType:c.ActionTypeEnum.ContextEnhance,actionSource:c.ActionSourceEnum.Chat,sessionId:r,message:f}),this.logger.log(`[ChatAgentService] provideContextMessage reporter sent \u2014 sessionId=${r}, elapsedMs=${Date.now()-l}`),f}populateChatInput(u,r){this.aiChatService.sendMessage({...r,agentId:u,immediate:!1})}getCommands(){return(0,s.default)(Array.from(this.agents.values(),({agent:u,commands:r})=>r.map(l=>({...l,agentId:u.id}))))}async getFollowups(u,r,l){const d=this.agents.get(u);if(!d)throw new Error(`No agent with id ${u}`);return d.agent.provideFollowups?d.agent.provideFollowups(r,l):[]}async getSampleQuestions(u,r){const l=this.agents.get(u);if(!l)throw new Error(`No agent with id ${u}`);return l.agent.provideSampleQuestions?l.agent.provideSampleQuestions(r):[]}async getAllSampleQuestions(){const u=await Promise.all(Array.from(this.agents.values()).map(async({agent:r})=>{try{return await this.getSampleQuestions(r.id,c.CancellationToken.None)}catch(l){return this.logger.error(l),[]}}));return(0,s.default)(u)}sendMessage(u){this._onDidSendMessage.fire(u)}parseMessage(u,r){var l;const d={agentId:"",command:"",message:u};let f=r;const E=this.getAgents(),p=new RegExp(`^@(${E.map(y=>y.id).join("|")})(?:\\s+|$)`,"i"),h=d.message.match(p);if(h){const y=E.find(b=>b.id.toLowerCase()===h[1].toLowerCase());if(!y)return d;f=y.id,d.agentId=f,d.message=d.message.replace(h[0],"")}if(f){const y=(l=this.agents.get(f))===null||l===void 0?void 0:l.commands;if(y?.length){const b=new RegExp(`^/\\s?(${y.map(S=>S.name).join("|")})(?:\\s+|$)`,"i"),A=d.message.match(b);if(A){const S=y.find(w=>w.name.toLowerCase()===A[1].toLowerCase());if(!S)return d;d.command=S.name,d.message=d.message.replace(A[0],"")}}}return d}};t.ChatAgentService=g,n.__decorate([(0,o.Autowired)(c.ILogger),n.__metadata("design:type",Object)],g.prototype,"logger",void 0),n.__decorate([(0,o.Autowired)(c.IAIReporter),n.__metadata("design:type",Object)],g.prototype,"aiReporter",void 0),n.__decorate([(0,o.Autowired)(_.LLMContextServiceToken),n.__metadata("design:type",Object)],g.prototype,"llmContextService",void 0),n.__decorate([(0,o.Autowired)(v.ChatAgentPromptProvider),n.__metadata("design:type",Object)],g.prototype,"promptProvider",void 0),n.__decorate([(0,o.Autowired)(c.ChatServiceToken),n.__metadata("design:type",m.ChatService)],g.prototype,"aiChatService",void 0),n.__decorate([(0,o.Autowired)(c.ChatFeatureRegistryToken),n.__metadata("design:type",Object)],g.prototype,"chatFeatureRegistry",void 0),t.ChatAgentService=g=n.__decorate([(0,o.Injectable)(),n.__metadata("design:paramtypes",[])],g)},84543:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatAgentViewService=void 0;const n=e(85608),s=e(76003),o=e(43718),c=e(19413),_=e(51081);let v=class{constructor(){this.componentsMap=new Map,this.componentsDeferredMap=new Map}registerChatComponent(g){return this.componentsMap.set(g.id,g),this.componentsDeferredMap.has(g.id)&&(this.componentsDeferredMap.get(g.id).resolve(g),this.componentsDeferredMap.delete(g.id)),{dispose:()=>{this.componentsMap.get(g.id)===g&&(this.componentsMap.delete(g.id),this.componentsDeferredMap.delete(g.id))}}}getChatComponent(g){return this.componentsMap.has(g)?this.componentsMap.get(g):(this.componentsDeferredMap.has(g)||this.componentsDeferredMap.set(g,new o.Deferred),null)}getChatComponentDeferred(g){return this.componentsDeferredMap.get(g)||null}getRenderAgents(){return this.chatAgentService.getAgents().filter(g=>g.id!==_.ChatProxyService.AGENT_ID)}};t.ChatAgentViewService=v,n.__decorate([(0,s.Autowired)(c.IChatAgentService),n.__metadata("design:type",Object)],v.prototype,"chatAgentService",void 0),t.ChatAgentViewService=v=n.__decorate([(0,s.Injectable)()],v)},98987:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatEditSchemeDocumentProvider=void 0;const n=e(85608),s=e(76003),o=e(41869),c=e(54414),_=e(96689),v=e(73974);let m=class{constructor(){this._onDidChangeContent=new o.Emitter,this.onDidChangeContent=this._onDidChangeContent.event}handlesScheme(a){return a===v.BaseApplyService.CHAT_EDITING_SOURCE_RESOLVER_SCHEME}async provideEditorDocumentModelContent(a,u){const{id:r,side:l}=a.getParsedQuery(),d=this.baseApplyService.getSessionCodeBlocks(),f=d?.find(p=>p.toolCallId===r);return(l==="left"?f?.originalCode:f?.updatedCode)||""}isReadonly(a){return!0}onDidDisposeModel(){}};t.ChatEditSchemeDocumentProvider=m,n.__decorate([(0,s.Autowired)(_.IEditorDocumentModelService),n.__metadata("design:type",Object)],m.prototype,"editorDocumentModelService",void 0),n.__decorate([(0,s.Autowired)(c.WorkbenchEditorService),n.__metadata("design:type",c.WorkbenchEditorService)],m.prototype,"workbenchEditorService",void 0),n.__decorate([(0,s.Autowired)(o.AppConfig),n.__metadata("design:type",Object)],m.prototype,"appConfig",void 0),n.__decorate([(0,s.Autowired)(o.IApplicationService),n.__metadata("design:type",Object)],m.prototype,"applicationService",void 0),n.__decorate([(0,s.Autowired)(v.BaseApplyService),n.__metadata("design:type",v.BaseApplyService)],m.prototype,"baseApplyService",void 0),n.__decorate([(0,s.Autowired)(o.PreferenceService),n.__metadata("design:type",Object)],m.prototype,"preferenceService",void 0),t.ChatEditSchemeDocumentProvider=m=n.__decorate([(0,s.Injectable)()],m)},75641:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatInputFooterRegistry=t.FooterButtonPosition=t.ChatInputFooterRegistryToken=void 0;const n=e(85608),s=e(76003),o=e(43718);Object.defineProperty(t,"ChatInputFooterRegistryToken",{enumerable:!0,get:function(){return o.ChatInputFooterRegistryToken}}),Object.defineProperty(t,"FooterButtonPosition",{enumerable:!0,get:function(){return o.FooterButtonPosition}});let c=class extends o.Disposable{constructor(){super(...arguments),this.contributions=[],this.onDidChangeEmitter=new o.Emitter,this.onDidChange=this.onDidChangeEmitter.event}registerFooterItem(v,m){var g,a;const u=this.contributions.findIndex(d=>d.id===v);u!==-1&&this.contributions.splice(u,1);const r={id:v,...m,order:(g=m.order)!==null&&g!==void 0?g:100,position:(a=m.position)!==null&&a!==void 0?a:o.FooterButtonPosition.LEFT};this.contributions.push(r),this.contributions.sort((d,f)=>{var E,p;return((E=d.order)!==null&&E!==void 0?E:0)-((p=f.order)!==null&&p!==void 0?p:0)});const l=o.Disposable.create(()=>{const d=this.contributions.indexOf(r);d!==-1&&(this.contributions.splice(d,1),this.onDidChangeEmitter.fire())});return this.addDispose(l),this.onDidChangeEmitter.fire(),l}getItems(){return this.contributions.filter(v=>!v.visible||v.visible())}};t.ChatInputFooterRegistry=c,t.ChatInputFooterRegistry=c=n.__decorate([(0,s.Injectable)()],c)},36940:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AcpChatManagerService=void 0;const n=e(85608),s=e(76003),o=e(41869),c=e(43718),_=e(98864),v=e(44260),m=e(61282),g=e(42033),a=e(79329),u=20,r=100,l="New Session",d="acpSessionDisplayTitleOverrides",f=["OpenSumi exposes IDE capabilities","The user's OS version","The rules section has","For requests to create an OpenSumi IDE"];let E=class extends m.ChatManagerService{constructor(){super(),this.mainProvider=null,this.availableCommands=[],this.acpSessionDisplayTitleOverrides={},this.onDidApplySessionStateEmitter=this.registerDispose(new c.Emitter),this.onDidApplySessionState=this.onDidApplySessionStateEmitter.event;const h=this.aiNativeConfig.capabilities.supportsAgentMode?"acp":"local",b=this.sessionProviderRegistry.getAllProviders().filter(A=>A.canHandle(h))[0];this.mainProvider=b}async init(){await this.initDisplayTitleOverrides(),await this.loadSessionList()}async initDisplayTitleOverrides(){try{this.acpTitleStorage=await this.acpStorageProvider(c.STORAGE_NAMESPACE.CHAT),this.acpSessionDisplayTitleOverrides=this.acpTitleStorage.get(d,{})||{}}catch{this.acpTitleStorage=void 0,this.acpSessionDisplayTitleOverrides={}}}persistDisplayTitleOverrides(){var h;(h=this.acpTitleStorage)===null||h===void 0||h.set(d,this.acpSessionDisplayTitleOverrides)}getDisplayTitleOverride(h){return this.acpSessionDisplayTitleOverrides[h]}peekSession(h){const y=this.sessionModels;return y.peek?y.peek(h):y.get(h)}getSession(h){return this.aiNativeConfig.capabilities.supportsAgentMode?this.peekSession(h):super.getSession(h)}setSessionPreservingOrder(h,y){const b=this.sessionModels,A=b.has(h)&&b.keys?Array.from(b.keys()):void 0;if(this.sessionModels.set(h,y),!A)return;const S=A.map(w=>[w,w===h?y:this.peekSession(w)]).filter(w=>!!w[1]);this.sessionModels.clear(),S.forEach(([w,T])=>{this.sessionModels.set(w,T)})}setDisplayTitleOverride(h,y){var b;const A=this.createDisplayTitle(y);A&&(this.acpSessionDisplayTitleOverrides={...this.acpSessionDisplayTitleOverrides,[h]:A},(b=this.peekSession(h))===null||b===void 0||b.setTitle(A),this.persistDisplayTitleOverrides())}removeDisplayTitleOverride(h){if(!this.acpSessionDisplayTitleOverrides[h])return;const y={...this.acpSessionDisplayTitleOverrides};delete y[h],this.acpSessionDisplayTitleOverrides=y,this.persistDisplayTitleOverrides()}extractUserMessageFromAcpPrompt(h){var y;const b=h.match(/(?:^|\n)\s*---\s*(?:\n+|\s+)([\s\S]*)$/);return((y=b?.[1])===null||y===void 0?void 0:y.trim())||void 0}createDisplayTitle(h){if(!h)return"";const y=this.extractUserMessageFromAcpPrompt(h)||h;return(0,_.cleanAttachedTextWrapper)(y).trim().slice(0,r)}isLikelyAcpContextTitle(h){return h?f.some(y=>h.trim().startsWith(y)):!1}createFallbackSessionTitle(h){return`Session ${(h.startsWith("acp:")?h.slice(4):h).slice(0,8)}`}resolveTitleFromMessages(h){const y=h.history.messages.find(b=>b.role===1)||h.history.messages[0];return this.createDisplayTitle(y?.content)}resolveAcpSessionTitle(h){const y=this.getDisplayTitleOverride(h.sessionId);if(y)return y;const b=this.extractUserMessageFromAcpPrompt(h.title||"");if(b)return this.createDisplayTitle(b);const A=this.createDisplayTitle(h.title);if(A&&!this.isLikelyAcpContextTitle(h.title))return A;const S=this.resolveTitleFromMessages(h);return S||(h.title&&this.isLikelyAcpContextTitle(h.title)?this.createFallbackSessionTitle(h.sessionId):l)}getExistingTitleForLoadedSession(h,y){const b=this.getDisplayTitleOverride(h);if(b)return b;const A=y?.title;if(A&&!this.isLikelyAcpContextTitle(A))return A}isEmptyDefaultSession(h){return h.title===l&&h.history.getMessages().length===0&&h.requests.length===0}moveEmptyDefaultSessionsToEnd(h){h.forEach(y=>{const b=this.peekSession(y);!b||!this.isEmptyDefaultSession(b)||(this.sessionModels.delete(y),this.sessionModels.set(y,b))})}async loadSessionList(){if(!this.mainProvider){await this.storageInitEmitter.fireAndAwait();return}try{const y=(await this.mainProvider.loadSessions()).slice(-u),b=new Set(this.sessionModels.keys()),A=y.filter(w=>!b.has(w.sessionId)),S=u-b.size;S>0&&this.fromAcpJSON(A.slice(-S)).forEach(T=>{this.sessionModels.set(T.sessionId,T)}),this.moveEmptyDefaultSessionsToEnd(b)}catch{this.sessionModels.clear()}await this.storageInitEmitter.fireAndAwait()}getSessions(){return Array.from(this.sessionModels.values())}getAvailableCommands(){return this.availableCommands}async startSession(){var h,y;if(this.aiNativeConfig.capabilities.supportsAgentMode&&(!((h=this.mainProvider)===null||h===void 0)&&h.createSession)){const A=await this.mainProvider.createSession();!((y=A.extension)===null||y===void 0)&&y.availableCommands&&(this.availableCommands=A.extension.availableCommands);const S=this.fromAcpJSON([A]);if(S.length>0){const w=S[0];return this.sessionModels.set(w.sessionId,w),this.listenSession(w),w}}const b=new g.ChatModel(this.chatFeatureRegistry);return this.sessionModels.set(b.sessionId,b),this.listenSession(b),b}async loadSession(h){var y,b,A;if(this.aiNativeConfig.capabilities.supportsAgentMode){const S=this.peekSession(h);if(!((b=(y=S?.history)===null||y===void 0?void 0:y.getMessages())===null||b===void 0)&&b.length)return;if(!((A=this.mainProvider)===null||A===void 0)&&A.loadSession&&h)return this.mainProvider.loadSession(h).then(w=>{if(w){const T=this.getExistingTitleForLoadedSession(h,S),I=T&&(!w.title||this.isLikelyAcpContextTitle(w.title))?{...w,title:T}:w,D=this.fromAcpJSON([I]);if(D.length>0){const O=D[0];this.setSessionPreservingOrder(h,O),this.listenSession(O),!S&&O.title&&O.title!==l&&!this.isLikelyAcpContextTitle(O.title)&&this.setDisplayTitleOverride(h,O.title)}}})}}createRequest(h,y,b,A,S){var w,T,I,D;const O=this.getSession(h),M=this.aiNativeConfig.capabilities.supportsAgentMode&&!this.getDisplayTitleOverride(h)&&O&&(O.history.getMessages().length===0&&O.requests.length===0||this.isLikelyAcpContextTitle(O.title));this.logger.log(`[ACP Chat][Manager] createRequest start \u2014 sessionId=${h}, agentId=${b||"(empty)"}, command=${A||"(empty)"}, messageChars=${y.length}, images=${(w=S?.length)!==null&&w!==void 0?w:0}, existingRequests=${(T=O?.requests.length)!==null&&T!==void 0?T:0}, historyMessages=${(I=O?.history.getMessages().length)!==null&&I!==void 0?I:0}`);const R=super.createRequest(h,y,b,A,S);return this.logger.log(`[ACP Chat][Manager] createRequest ${R?"done":"skipped"} \u2014 sessionId=${h}, requestId=${(D=R?.requestId)!==null&&D!==void 0?D:"(empty)"}`),R&&M&&this.setDisplayTitleOverride(h,y),R}async sendRequest(h,y,b){var A,S;this.logger.log(`[ACP Chat][Manager] sendRequest start \u2014 sessionId=${h}, requestId=${y.requestId}, regenerate=${b}, agentId=${y.message.agentId}, command=${y.message.command||"(empty)"}, messageChars=${y.message.prompt.length}, images=${(S=(A=y.message.images)===null||A===void 0?void 0:A.length)!==null&&S!==void 0?S:0}`);try{await super.sendRequest(h,y,b),this.logger.log(`[ACP Chat][Manager] sendRequest done \u2014 sessionId=${h}, requestId=${y.requestId}`)}catch(w){const T=w instanceof Error?w.message:String(w);throw this.logger.error(`[ACP Chat][Manager] sendRequest error \u2014 sessionId=${h}, requestId=${y.requestId}, error=${T}`),w}}shouldValidateModelChange(h){return!h.startsWith("acp:")}clearSession(h){super.clearSession(h),this.removeDisplayTitleOverride(h)}applySessionStateUpdate(h,y){const b=h.startsWith("acp:")?h:`acp:${h}`,A=this.getSession(b);if(!A)return;const S=A.currentModeId;let w=!1;y.currentModeId!==void 0&&A.currentModeId!==y.currentModeId&&(A.currentModeId=y.currentModeId,w=!0),y.currentModelId!==void 0&&A.modelId!==y.currentModelId&&(A.modelId=y.currentModelId,w=!0),y.configOptions!==void 0&&(A.configOptions=y.configOptions,w=!0),w&&this.onDidApplySessionStateEmitter.fire({sessionId:b,model:A,previousModeId:S,currentModeId:A.currentModeId})}fallbackToLocal(){const h=this.sessionProviderRegistry.getProvider("local");h&&(this.mainProvider=h,this.sessionModels.clear(),this.loadSessionList())}toSessionData(h){return{sessionId:h.sessionId,createdAt:h.createdAt,modelId:h.modelId,history:h.history.toJSON(),title:h.title,requests:h.getRequests().map(y=>({requestId:y.requestId,message:y.message,response:{isCanceled:y.response.isCanceled,responseText:y.response.responseText,responseContents:y.response.responseContents,responseParts:y.response.responseParts,errorDetails:y.response.errorDetails,followups:y.response.followups}}))}}fromAcpJSON(h){return h.filter(y=>y.history.messages.length>0||y.sessionId.startsWith("acp:")).map(y=>{const b=new g.ChatModel(this.chatFeatureRegistry,{sessionId:y.sessionId,createdAt:y.createdAt,history:new v.MsgHistoryManager(this.chatFeatureRegistry,y.history),modelId:y.modelId,title:this.resolveAcpSessionTitle(y),agentModes:y.agentModes,currentModeId:y.currentModeId,agentModels:y.agentModels,configOptions:y.configOptions}),A=y.requests.map(S=>new g.ChatRequestModel(S.requestId,b,S.message,new g.ChatResponseModel(S.requestId,b,S.message.agentId,{responseContents:S.response.responseContents,isComplete:!0,responseText:S.response.responseText,responseParts:S.response.responseParts,errorDetails:S.response.errorDetails,followups:S.response.followups,isCanceled:S.response.isCanceled})));return b.restoreRequests(A),b})}async saveSessions(){var h;if(!(!((h=this.mainProvider)===null||h===void 0)&&h.saveSessions))return;const y=this.getSessions().map(b=>this.toSessionData(b));await this.mainProvider.saveSessions(y)}};t.AcpChatManagerService=E,n.__decorate([(0,s.Autowired)(o.AINativeConfigService),n.__metadata("design:type",o.AINativeConfigService)],E.prototype,"aiNativeConfig",void 0),n.__decorate([(0,s.Autowired)(o.ILogger),n.__metadata("design:type",Object)],E.prototype,"logger",void 0),n.__decorate([(0,s.Autowired)(a.ISessionProviderRegistry),n.__metadata("design:type",Object)],E.prototype,"sessionProviderRegistry",void 0),n.__decorate([(0,s.Autowired)(c.StorageProvider),n.__metadata("design:type",Function)],E.prototype,"acpStorageProvider",void 0),n.__decorate([(0,c.debounce)(1e3),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[]),n.__metadata("design:returntype",Promise)],E.prototype,"saveSessions",null),t.AcpChatManagerService=E=n.__decorate([(0,s.Injectable)(),n.__metadata("design:paramtypes",[])],E)},61282:(P,t,e)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ChatManagerService=void 0;const s=e(85608),o=e(76003),c=e(41869),_=e(43718),v=e(65677),m=e(19413),g=e(44260),a=e(42033),u=e(11735),r=20;function l(E){return E instanceof Error?E.message:String(E)}class d extends _.LRUCache{disposeKey(p){const h=this.get(p);h&&h.dispose(),this.delete(p)}dispose(){this.forEach(p=>{p.dispose()}),this.clear()}}let f=class extends _.Disposable{fromJSON(p){return p.filter(h=>h.history.messages.length>0).map(h=>{const y=new a.ChatModel(this.chatFeatureRegistry,{sessionId:h.sessionId,createdAt:h.createdAt,history:new g.MsgHistoryManager(this.chatFeatureRegistry,h.history),modelId:h.modelId}),b=h.requests.map(A=>new a.ChatRequestModel(A.requestId,y,A.message,new a.ChatResponseModel(A.requestId,y,A.message.agentId,{responseContents:A.response.responseContents,isComplete:!0,responseText:A.response.responseText,responseParts:A.response.responseParts,errorDetails:A.response.errorDetails,followups:A.response.followups,isCanceled:A.response.isCanceled})));return y.restoreRequests(b),y})}constructor(){super(),this.sessionModels=this.registerDispose(new d(r)),n.set(this,this.registerDispose(new _.DisposableMap)),this.storageInitEmitter=new _.Emitter,this.onStorageInit=this.storageInitEmitter.event}async init(){this._chatStorage=await this.storageProvider(_.STORAGE_NAMESPACE.CHAT);const p=this._chatStorage.get("sessionModels",[]);this.fromJSON(p).forEach(y=>{this.sessionModels.set(y.sessionId,y),this.listenSession(y)}),await this.storageInitEmitter.fireAndAwait()}getSessions(){return Array.from(this.sessionModels.values())}async startSession(){const p=new a.ChatModel(this.chatFeatureRegistry);return this.sessionModels.set(p.sessionId,p),this.listenSession(p),p}getSession(p){return this.sessionModels.get(p)}clearSession(p){var h;if(!this.sessionModels.get(p))throw new Error(`Unknown session: ${p}`);this.sessionModels.disposeKey(p),(h=s.__classPrivateFieldGet(this,n,"f").get(p))===null||h===void 0||h.cancel(),s.__classPrivateFieldGet(this,n,"f").disposeKey(p),this.saveSessions()}createRequest(p,h,y,b,A){const S=this.getSession(p);if(!S)throw new Error(`Unknown session: ${p}`);if(!s.__classPrivateFieldGet(this,n,"f").has(p))return S.addRequest({prompt:h,agentId:y,command:b,images:A})}async sendRequest(p,h,y){var b,A;const S=Date.now();this.logger.log(`[ChatManagerService] sendRequest enter \u2014 sessionId=${p}, requestId=${h.requestId}, agentId=${h.message.agentId}, command=${h.message.command||"(empty)"}, regenerate=${!!y}`);const w=this.getSession(p);if(!w)throw this.logger.error(`[ChatManagerService] sendRequest missing model \u2014 sessionId=${p}, requestId=${h.requestId}`),new Error(`Unknown session: ${p}`);this.logger.log(`[ChatManagerService] sendRequest model resolved \u2014 sessionId=${p}, requestId=${h.requestId}, requests=${w.requests.length}, historyMessages=${w.history.getMessages().length}`);const T=w.modelId,I=this.preferenceService.get(_.AINativeSettingSectionsId.ModelID);if(this.logger.log(`[ChatManagerService] sendRequest model preference \u2014 sessionId=${p}, requestId=${h.requestId}, savedModelId=${T||"(empty)"}, currentModelId=${I||"(empty)"}`),!T)w.modelId=I;else{if(T!==I&&this.shouldValidateModelChange(p,w))throw this.logger.error(`[ChatManagerService] sendRequest model changed \u2014 sessionId=${p}, requestId=${h.requestId}, savedModelId=${T||"(empty)"}, currentModelId=${I||"(empty)"}`),new Error("Model changed unexpectedly");T!==I&&this.logger.log(`[ChatManagerService] sendRequest model change allowed \u2014 sessionId=${p}, requestId=${h.requestId}, savedModelId=${T||"(empty)"}, currentModelId=${I||"(empty)"}`)}const D=new _.CancellationTokenSource,O=D.token;s.__classPrivateFieldGet(this,n,"f").set(w.sessionId,D),this.logger.log(`[ChatManagerService] sendRequest pending registered \u2014 sessionId=${p}, requestId=${h.requestId}`);const M=O.onCancellationRequested(()=>{this.logger.log(`[ChatManagerService] sendRequest cancellation requested \u2014 sessionId=${p}, requestId=${h.requestId}`),h.response.cancel()}),R=this.preferenceService.get(_.AINativeSettingSectionsId.ContextWindow);this.logger.log(`[ChatManagerService] sendRequest history start \u2014 sessionId=${p}, requestId=${h.requestId}, contextWindow=${R}`);const x=w.getMessageHistory(R);this.logger.log(`[ChatManagerService] sendRequest history done \u2014 sessionId=${p}, requestId=${h.requestId}, historyMessages=${x.length}`);try{const k=N=>{O.isCancellationRequested||w.acceptResponseProgress(h,N)};this.logger.log(`[ChatManagerService] sendRequest progress callback ready \u2014 sessionId=${p}, requestId=${h.requestId}`);const B={sessionId:p,requestId:h.requestId,message:h.message.prompt,command:h.message.command,images:h.message.images,regenerate:y};this.logger.log(`[ChatManagerService] sendRequest invokeAgent before \u2014 sessionId=${p}, requestId=${h.requestId}, agentId=${h.message.agentId}, messageChars=${B.message.length}, historyMessages=${x.length}, chatAgentService=${((A=(b=this.chatAgentService)===null||b===void 0?void 0:b.constructor)===null||A===void 0?void 0:A.name)||"(unknown)"}`);const L=await this.chatAgentService.invokeAgent(h.message.agentId,B,k,x,O);if(this.logger.log(`[ChatManagerService] sendRequest invokeAgent after \u2014 sessionId=${p}, requestId=${h.requestId}, elapsedMs=${Date.now()-S}, hasErrorDetails=${!!L.errorDetails}`),!O.isCancellationRequested){if(L.errorDetails){h.response.setErrorDetails(L.errorDetails),h.response.complete();return}this.chatAgentService.getFollowups(h.message.agentId,p,_.CancellationToken.None).then(K=>{h.response.setFollowups(K),h.response.complete()})}}catch(k){const B=l(k);this.logger.error(`[ChatManagerService] sendRequest error \u2014 sessionId=${p}, requestId=${h.requestId}, error=${B}`),O.isCancellationRequested||(h.response.setErrorDetails({message:B}),h.response.complete())}finally{this.logger.log(`[ChatManagerService] sendRequest cleanup \u2014 sessionId=${p}, requestId=${h.requestId}, elapsedMs=${Date.now()-S}, canceled=${O.isCancellationRequested}`),M.dispose(),s.__classPrivateFieldGet(this,n,"f").disposeKey(w.sessionId),this.saveSessions()}}shouldValidateModelChange(p,h){return!0}listenSession(p){this.addDispose(p.history.onMessageAdditionalChange(()=>{this.saveSessions()}))}saveSessions(){this._chatStorage.set("sessionModels",this.getSessions())}cancelRequest(p){var h;(h=s.__classPrivateFieldGet(this,n,"f").get(p))===null||h===void 0||h.cancel(),s.__classPrivateFieldGet(this,n,"f").disposeKey(p),this.saveSessions()}};t.ChatManagerService=f,n=new WeakMap,s.__decorate([(0,o.Autowired)(o.INJECTOR_TOKEN),s.__metadata("design:type",o.Injector)],f.prototype,"injector",void 0),s.__decorate([(0,o.Autowired)(m.IChatAgentService),s.__metadata("design:type",Object)],f.prototype,"chatAgentService",void 0),s.__decorate([(0,o.Autowired)(_.ILogger),s.__metadata("design:type",Object)],f.prototype,"logger",void 0),s.__decorate([(0,o.Autowired)(_.StorageProvider),s.__metadata("design:type",Function)],f.prototype,"storageProvider",void 0),s.__decorate([(0,o.Autowired)(c.PreferenceService),s.__metadata("design:type",Object)],f.prototype,"preferenceService",void 0),s.__decorate([(0,o.Autowired)(v.ChatFeatureRegistryToken),s.__metadata("design:type",u.ChatFeatureRegistry)],f.prototype,"chatFeatureRegistry",void 0),s.__decorate([(0,_.debounce)(1e3),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[]),s.__metadata("design:returntype",void 0)],f.prototype,"saveSessions",null),t.ChatManagerService=f=s.__decorate([(0,o.Injectable)(),s.__metadata("design:paramtypes",[])],f)},42033:(P,t,e)=>{"use strict";var n,s,o,c,_,v,m,g,a,u,r,l,d,f,E,p,h,y,b,A,S,w,T,I;Object.defineProperty(t,"__esModule",{value:!0}),t.ChatSlashCommandItemModel=t.ChatWelcomeMessageModel=t.ChatModel=t.ChatRequestModel=t.ChatResponseModel=void 0;const D=e(85608),O=e(76003),M=e(43718),R=e(90684),x=e(19413),k=e(44260);class B extends M.Disposable{get responseParts(){return D.__classPrivateFieldGet(this,s,"f")}get responseContents(){return D.__classPrivateFieldGet(this,o,"f")}get isComplete(){return D.__classPrivateFieldGet(this,c,"f")}get isCanceled(){return D.__classPrivateFieldGet(this,_,"f")}get requestId(){return D.__classPrivateFieldGet(this,v,"f")}get responseText(){return D.__classPrivateFieldGet(this,m,"f")}get errorDetails(){return D.__classPrivateFieldGet(this,g,"f")}get followups(){return D.__classPrivateFieldGet(this,a,"f")}get onDidChange(){return D.__classPrivateFieldGet(this,u,"f").event}constructor(j,V,Q,G){super(),n.add(this),this.session=V,this.agentId=Q,s.set(this,[]),o.set(this,[]),c.set(this,!1),_.set(this,!1),v.set(this,void 0),m.set(this,""),g.set(this,void 0),a.set(this,void 0),u.set(this,this.registerDispose(new M.Emitter)),D.__classPrivateFieldSet(this,v,j,"f"),G&&(D.__classPrivateFieldSet(this,o,G.responseContents,"f"),D.__classPrivateFieldSet(this,s,G.responseParts||[],"f"),D.__classPrivateFieldSet(this,m,G.responseText,"f"),D.__classPrivateFieldSet(this,c,G.isComplete,"f"),D.__classPrivateFieldSet(this,_,G.isCanceled,"f"),D.__classPrivateFieldSet(this,g,G.errorDetails,"f"),D.__classPrivateFieldSet(this,a,G.followups,"f"))}updateContent(j,V){var Q;const G=D.__classPrivateFieldGet(this,s,"f").length-1;if(j.kind==="content"||j.kind==="markdownContent"){const H=D.__classPrivateFieldGet(this,s,"f")[G];!H||H.kind!=="markdownContent"?j.kind==="content"?D.__classPrivateFieldGet(this,s,"f").push({content:new R.MarkdownString(j.content),kind:"markdownContent"}):D.__classPrivateFieldGet(this,s,"f").push(j):j.kind==="markdownContent"?D.__classPrivateFieldGet(this,s,"f")[G]={content:new R.MarkdownString(H.content.value+j.content.value),kind:"markdownContent"}:D.__classPrivateFieldGet(this,s,"f")[G]={content:new R.MarkdownString(H.content.value+j.content,H.content),kind:"markdownContent"},D.__classPrivateFieldGet(this,n,"m",r).call(this)}else if(j.kind==="reasoning"){const H=D.__classPrivateFieldGet(this,s,"f")[G];!H||H.kind!=="reasoning"?D.__classPrivateFieldGet(this,s,"f").push({content:j.content.replace(/^<think>/,""),kind:"reasoning"}):D.__classPrivateFieldGet(this,s,"f")[G]={content:H.content+j.content,kind:"reasoning"},D.__classPrivateFieldGet(this,n,"m",r).call(this)}else if(j.kind==="asyncContent"){const H=D.__classPrivateFieldGet(this,s,"f").push(j)-1;D.__classPrivateFieldGet(this,n,"m",r).call(this),(Q=j.resolvedContent)===null||Q===void 0||Q.then($=>{typeof $=="string"?D.__classPrivateFieldGet(this,s,"f")[H]={content:new R.MarkdownString($),kind:"markdownContent"}:(0,R.isMarkdownString)($)?D.__classPrivateFieldGet(this,s,"f")[H]={content:$,kind:"markdownContent"}:D.__classPrivateFieldGet(this,s,"f")[H]=$,D.__classPrivateFieldGet(this,n,"m",r).call(this,V)})}else if(j.kind==="treeData"||j.kind==="component")D.__classPrivateFieldGet(this,s,"f").push(j),D.__classPrivateFieldGet(this,n,"m",r).call(this,V);else if(j.kind==="toolCall"){const H=D.__classPrivateFieldGet(this,s,"f").findIndex($=>$.kind==="toolCall"&&$.content.id===j.content.id);H!==-1?D.__classPrivateFieldGet(this,s,"f")[H]={kind:"toolCall",content:{...j.content}}:D.__classPrivateFieldGet(this,s,"f").push(j),D.__classPrivateFieldGet(this,n,"m",r).call(this,V)}}complete(){D.__classPrivateFieldSet(this,c,!0,"f"),D.__classPrivateFieldGet(this,u,"f").fire()}cancel(){D.__classPrivateFieldSet(this,c,!0,"f"),D.__classPrivateFieldSet(this,_,!0,"f"),D.__classPrivateFieldGet(this,u,"f").fire()}reset(){D.__classPrivateFieldSet(this,o,[],"f"),D.__classPrivateFieldSet(this,s,[],"f"),D.__classPrivateFieldSet(this,m,"","f"),D.__classPrivateFieldSet(this,_,!1,"f"),D.__classPrivateFieldSet(this,c,!1,"f"),D.__classPrivateFieldSet(this,g,void 0,"f"),D.__classPrivateFieldSet(this,a,void 0,"f"),D.__classPrivateFieldGet(this,u,"f").fire()}setErrorDetails(j){D.__classPrivateFieldSet(this,g,j,"f"),D.__classPrivateFieldGet(this,u,"f").fire()}setFollowups(j){D.__classPrivateFieldSet(this,a,j,"f"),D.__classPrivateFieldGet(this,u,"f").fire()}toJSON(){return{isCanceled:this.isCanceled,responseContents:this.responseContents,responseText:this.responseText,responseParts:this.responseParts,errorDetails:this.errorDetails,followups:this.followups}}}t.ChatResponseModel=B,s=new WeakMap,o=new WeakMap,c=new WeakMap,_=new WeakMap,v=new WeakMap,m=new WeakMap,g=new WeakMap,a=new WeakMap,u=new WeakMap,n=new WeakSet,r=function(j){D.__classPrivateFieldSet(this,m,D.__classPrivateFieldGet(this,s,"f").map(Q=>Q.kind==="asyncContent"?Q.content:Q.kind==="treeData"||Q.kind==="component"?"":Q.kind==="toolCall"?Q.content.function.name:Q.kind==="reasoning"?"":Q.content.value).join(`
36936
36936
 
36937
- `),"f");const V=[];for(const Q of D.__classPrivateFieldGet(this,s,"f")){const G=V[V.length-1];Q.kind==="markdownContent"&&G?.kind==="markdownContent"?V[V.length-1]={content:new R.MarkdownString(G.content.value+Q.content.value,{isTrusted:G.content.isTrusted}),kind:"markdownContent"}:V.push(Q)}D.__classPrivateFieldSet(this,o,V,"f"),j||D.__classPrivateFieldGet(this,u,"f").fire()};class L{get requestId(){return D.__classPrivateFieldGet(this,l,"f")}constructor(j,V,Q,G){this.session=V,this.message=Q,this.response=G,l.set(this,void 0),D.__classPrivateFieldSet(this,l,j,"f")}toJSON(){return{requestId:this.requestId,message:this.message,response:this.response}}}t.ChatRequestModel=L,l=new WeakMap;class N extends M.Disposable{constructor(j,V){var Q,G,H,$,z,Y,Z;super(),this.chatFeatureRegistry=j,this.requestIdPool=0,d.set(this,void 0),f.set(this,void 0),E.set(this,void 0),p.set(this,new Map),h.set(this,0),y.set(this,void 0),b.set(this,[]),A.set(this,void 0),S.set(this,[]),w.set(this,[]),T.set(this,"idle"),this._onThreadStatusChange=new M.Emitter,this.onThreadStatusChange=this._onThreadStatusChange.event,D.__classPrivateFieldSet(this,f,(Q=V?.sessionId)!==null&&Q!==void 0?Q:(0,M.uuid)(),"f"),D.__classPrivateFieldSet(this,E,(G=V?.createdAt)!==null&&G!==void 0?G:Date.now(),"f"),this.history=(H=V?.history)!==null&&H!==void 0?H:new k.MsgHistoryManager(this.chatFeatureRegistry),D.__classPrivateFieldSet(this,y,V?.modelId,"f"),D.__classPrivateFieldSet(this,d,($=V?.title)!==null&&$!==void 0?$:"","f"),D.__classPrivateFieldSet(this,b,(z=V?.agentModes)!==null&&z!==void 0?z:[],"f"),D.__classPrivateFieldSet(this,A,V?.currentModeId,"f"),D.__classPrivateFieldSet(this,S,(Y=V?.agentModels)!==null&&Y!==void 0?Y:[],"f"),D.__classPrivateFieldSet(this,w,(Z=V?.configOptions)!==null&&Z!==void 0?Z:[],"f")}get title(){return D.__classPrivateFieldGet(this,d,"f")}setTitle(j){D.__classPrivateFieldSet(this,d,j,"f")}get sessionId(){return D.__classPrivateFieldGet(this,f,"f")}get createdAt(){return D.__classPrivateFieldGet(this,E,"f")}get requests(){return Array.from(D.__classPrivateFieldGet(this,p,"f").values())}restoreRequests(j){D.__classPrivateFieldSet(this,p,new Map(j.map(V=>[V.requestId,V])),"f"),this.requestIdPool=j.length}get slicedMessageCount(){return D.__classPrivateFieldGet(this,h,"f")}get modelId(){return D.__classPrivateFieldGet(this,y,"f")}set modelId(j){D.__classPrivateFieldSet(this,y,j,"f")}get agentModes(){return D.__classPrivateFieldGet(this,b,"f")}set agentModes(j){D.__classPrivateFieldSet(this,b,j??[],"f")}get currentModeId(){return D.__classPrivateFieldGet(this,A,"f")}set currentModeId(j){D.__classPrivateFieldSet(this,A,j,"f")}get agentModels(){return D.__classPrivateFieldGet(this,S,"f")}set agentModels(j){D.__classPrivateFieldSet(this,S,j??[],"f")}get configOptions(){return D.__classPrivateFieldGet(this,w,"f")}set configOptions(j){D.__classPrivateFieldSet(this,w,j??[],"f")}get threadStatus(){return D.__classPrivateFieldGet(this,T,"f")}setThreadStatus(j){if(D.__classPrivateFieldGet(this,T,"f")===j){console.log("[ACP ThreadStatus RPC] setThreadStatus: skipped (same status)",{sessionId:this.sessionId,status:j});return}console.log("[ACP ThreadStatus RPC] setThreadStatus:",{sessionId:this.sessionId,from:D.__classPrivateFieldGet(this,T,"f"),to:j}),D.__classPrivateFieldSet(this,T,j,"f"),this._onThreadStatusChange.fire(j)}processMemorySummaries(){const j=this.history.getMemorySummaries();if(j.length===0)return[];const V=j.map(Q=>{try{const G=JSON.parse(Q.content);return G.memory||G.content||Q.content}catch{return Q.content}}).filter(Q=>Q&&Q!=="no_memory_needed").filter((Q,G,H)=>H.indexOf(Q)===G);return V.length>0?[{role:"system",content:`\u4EE5\u4E0B\u662F\u4E4B\u524D\u5BF9\u8BDD\u7684\u603B\u7ED3\uFF1A
36937
+ `),"f");const V=[];for(const Q of D.__classPrivateFieldGet(this,s,"f")){const G=V[V.length-1];Q.kind==="markdownContent"&&G?.kind==="markdownContent"?V[V.length-1]={content:new R.MarkdownString(G.content.value+Q.content.value,{isTrusted:G.content.isTrusted}),kind:"markdownContent"}:V.push(Q)}D.__classPrivateFieldSet(this,o,V,"f"),j||D.__classPrivateFieldGet(this,u,"f").fire()};class L{get requestId(){return D.__classPrivateFieldGet(this,l,"f")}constructor(j,V,Q,G){this.session=V,this.message=Q,this.response=G,l.set(this,void 0),D.__classPrivateFieldSet(this,l,j,"f")}toJSON(){return{requestId:this.requestId,message:this.message,response:this.response}}}t.ChatRequestModel=L,l=new WeakMap;class N extends M.Disposable{constructor(j,V){var Q,G,H,$,z,Y,Z;super(),this.chatFeatureRegistry=j,this.requestIdPool=0,d.set(this,void 0),f.set(this,void 0),E.set(this,void 0),p.set(this,new Map),h.set(this,0),y.set(this,void 0),b.set(this,[]),A.set(this,void 0),S.set(this,[]),w.set(this,[]),T.set(this,"idle"),this._onThreadStatusChange=new M.Emitter,this.onThreadStatusChange=this._onThreadStatusChange.event,D.__classPrivateFieldSet(this,f,(Q=V?.sessionId)!==null&&Q!==void 0?Q:(0,M.uuid)(),"f"),D.__classPrivateFieldSet(this,E,(G=V?.createdAt)!==null&&G!==void 0?G:Date.now(),"f"),this.history=(H=V?.history)!==null&&H!==void 0?H:new k.MsgHistoryManager(this.chatFeatureRegistry),D.__classPrivateFieldSet(this,y,V?.modelId,"f"),D.__classPrivateFieldSet(this,d,($=V?.title)!==null&&$!==void 0?$:"","f"),D.__classPrivateFieldSet(this,b,(z=V?.agentModes)!==null&&z!==void 0?z:[],"f"),D.__classPrivateFieldSet(this,A,V?.currentModeId,"f"),D.__classPrivateFieldSet(this,S,(Y=V?.agentModels)!==null&&Y!==void 0?Y:[],"f"),D.__classPrivateFieldSet(this,w,(Z=V?.configOptions)!==null&&Z!==void 0?Z:[],"f")}get title(){return D.__classPrivateFieldGet(this,d,"f")}setTitle(j){D.__classPrivateFieldSet(this,d,j,"f")}get sessionId(){return D.__classPrivateFieldGet(this,f,"f")}get createdAt(){return D.__classPrivateFieldGet(this,E,"f")}get requests(){return Array.from(D.__classPrivateFieldGet(this,p,"f").values())}restoreRequests(j){D.__classPrivateFieldSet(this,p,new Map(j.map(V=>[V.requestId,V])),"f"),this.requestIdPool=j.length}get slicedMessageCount(){return D.__classPrivateFieldGet(this,h,"f")}get modelId(){return D.__classPrivateFieldGet(this,y,"f")}set modelId(j){D.__classPrivateFieldSet(this,y,j,"f")}get agentModes(){return D.__classPrivateFieldGet(this,b,"f")}set agentModes(j){D.__classPrivateFieldSet(this,b,j??[],"f")}get currentModeId(){return D.__classPrivateFieldGet(this,A,"f")}set currentModeId(j){D.__classPrivateFieldSet(this,A,j,"f")}get agentModels(){return D.__classPrivateFieldGet(this,S,"f")}set agentModels(j){D.__classPrivateFieldSet(this,S,j??[],"f")}get configOptions(){return D.__classPrivateFieldGet(this,w,"f")}set configOptions(j){D.__classPrivateFieldSet(this,w,j??[],"f")}get threadStatus(){return D.__classPrivateFieldGet(this,T,"f")}setThreadStatus(j){D.__classPrivateFieldGet(this,T,"f")!==j&&(D.__classPrivateFieldSet(this,T,j,"f"),this._onThreadStatusChange.fire(j))}processMemorySummaries(){const j=this.history.getMemorySummaries();if(j.length===0)return[];const V=j.map(Q=>{try{const G=JSON.parse(Q.content);return G.memory||G.content||Q.content}catch{return Q.content}}).filter(Q=>Q&&Q!=="no_memory_needed").filter((Q,G,H)=>H.indexOf(Q)===G);return V.length>0?[{role:"system",content:`\u4EE5\u4E0B\u662F\u4E4B\u524D\u5BF9\u8BDD\u7684\u603B\u7ED3\uFF1A
36938
36938
  `+V.join(`
36939
36939
 
36940
36940
  `)}]:[]}processToolCall(j,V){V[V.length-1].role!=="assistant"&&V.push({role:"assistant",content:[]});const Q=j.content.id,G={id:Q,name:j.content.function.name,args:this.parseJsonSafely(j.content.function.arguments||"{}","tool call arguments"),result:this.parseJsonSafely(j.content.result||"{}","tool result")};this.history.addToolCall(G),this.history.setMessageAdditional(j.content.id,{toolCallId:Q});const H=V[V.length-1];H.content=[{type:"tool-call",toolCallId:j.content.id,toolName:j.content.function.name,args:G.args}],V.push({role:"tool",content:[{type:"tool-result",toolCallId:j.content.id,toolName:j.content.function.name,result:G.result}]})}parseJsonSafely(j,V){try{return JSON.parse(j)}catch{return{}}}processRecentMessages(){const j=[],V=this.history.getMessages().filter(Q=>!Q.isSummarized).slice(-this.history.memoryConfig.shortTermSize);for(const Q of V){j.push({role:"user",content:Q.content});const G=this.history.getMessageAdditional(Q.id);if(G?.response){const H=G.response;H.kind==="toolCall"?this.processToolCall(H,j):j.push({role:"assistant",content:H.kind==="markdownContent"?H.content.value:H.content})}}return j}limitTokens(j,V){if(!V)return j;let Q=j,G=JSON.stringify(Q).length/3;for(;G>V&&Q.length>1;)Q[0].role==="system"&&Q.length>2?Q=[Q[0],...Q.slice(2)]:Q=Q.slice(1),G=JSON.stringify(Q).length/3;return Q}getMessageHistory(j){const V=this.processMemorySummaries(),Q=this.processRecentMessages(),G=[...V,...Q];return this.limitTokens(G,j)}addRequest(j){const V=j,Q=`${this.sessionId}_request_${this.requestIdPool++}`,G=new B(Q,this,V.agentId),H=new L(Q,this,V,G);return D.__classPrivateFieldGet(this,p,"f").set(Q,H),H}acceptResponseProgress(j,V,Q){if(j.response.isComplete)throw new Error("acceptResponseProgress: Adding progress to a completed response");const{kind:G}=V;["content","markdownContent","asyncContent","treeData","component","toolCall","reasoning"].includes(G)&&j.response.updateContent(V,Q)}getRequest(j){return D.__classPrivateFieldGet(this,p,"f").get(j)}getRequests(){return Array.from(D.__classPrivateFieldGet(this,p,"f").values())}dispose(){super.dispose(),this._onThreadStatusChange.dispose(),D.__classPrivateFieldGet(this,p,"f").forEach(j=>j.response.dispose())}toJSON(){return{sessionId:this.sessionId,createdAt:this.createdAt,modelId:this.modelId,agentModes:this.agentModes,currentModeId:this.currentModeId,agentModels:this.agentModels,configOptions:this.configOptions,history:this.history,requests:this.requests}}}t.ChatModel=N,d=new WeakMap,f=new WeakMap,E=new WeakMap,p=new WeakMap,h=new WeakMap,y=new WeakMap,b=new WeakMap,A=new WeakMap,S=new WeakMap,w=new WeakMap,T=new WeakMap;let K=I=class extends M.Disposable{get id(){return this._id}constructor(j,V){super(),this.content=j,this.sampleQuestions=V,this._id="welcome_"+I.nextId++}};t.ChatWelcomeMessageModel=K,K.nextId=0,t.ChatWelcomeMessageModel=K=I=D.__decorate([(0,O.Injectable)({multiple:!0}),D.__metadata("design:paramtypes",[Object,Array])],K);let W=class extends M.Disposable{constructor(j,V,Q){super(),this.chatCommand=j,this.command=V,this.agentId=Q}get name(){return this.chatCommand.name}get isShortcut(){return!!this.chatCommand.isShortcut}get icon(){return this.chatCommand.icon}get description(){return this.chatCommand.description}get tooltip(){return this.chatCommand.tooltip}get nameWithSlash(){return this.name.startsWith(x.SLASH_SYMBOL)?this.name:`${x.SLASH_SYMBOL}${this.name}`}};t.ChatSlashCommandItemModel=W,t.ChatSlashCommandItemModel=W=D.__decorate([(0,O.Injectable)({multiple:!0}),D.__metadata("design:paramtypes",[Object,String,String])],W)},42995:(P,t,e)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ChatMultiDiffSource=t.ChatMultiDiffResolver=void 0;const s=e(85608),o=e(76003),c=e(41869),_=e(64335),v=e(73974);let m=n=class{canHandleUri(r){return r.scheme===n.CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME}resolveDiffSource(r){return Promise.resolve(new a(this.baseApplyService,this.appConfig))}};t.ChatMultiDiffResolver=m,m.CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME="chat-editing-multi-diff-source",s.__decorate([(0,o.Autowired)(v.BaseApplyService),s.__metadata("design:type",v.BaseApplyService)],m.prototype,"baseApplyService",void 0),s.__decorate([(0,o.Autowired)(c.AppConfig),s.__metadata("design:type",Object)],m.prototype,"appConfig",void 0),t.ChatMultiDiffResolver=m=n=s.__decorate([(0,o.Injectable)()],m);const g=(u,r,l)=>c.URI.from({scheme:v.BaseApplyService.CHAT_EDITING_SOURCE_RESOLVER_SCHEME,path:u,query:c.URI.stringifyQuery({id:r,side:l})});class a{constructor(r,l){this.baseApplyService=r,this.appConfig=l,this.resources=(()=>{const d=this.baseApplyService,f=this.appConfig;return{get value(){return(d.getSessionCodeBlocks()||[]).filter(E=>E.status==="success"||E.status==="pending").reduce((E,p)=>{const h=E.find(y=>y.relativePath===p.relativePath);return h?(p.version<h.oldVersion&&(h.oldVersion=p.version,h.oldBlockId=p.toolCallId),p.version>h.newVersion&&(h.newVersion=p.version,h.newBlockId=p.toolCallId)):E.push({relativePath:p.relativePath,oldBlockId:p.toolCallId,newBlockId:p.toolCallId,oldVersion:p.version,newVersion:p.version}),E},[]).map(E=>{const p=c.path.join(f.workspaceDir,E.relativePath);return new _.MultiDiffEditorItem(g(p,E.oldBlockId,"left"),g(p,E.newBlockId,"right"),c.URI.file(p))})},onDidChange:this.baseApplyService.onCodeBlockUpdate}})()}}t.ChatMultiDiffSource=a},49191:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AcpChatProxyService=void 0;const n=e(85608),s=e(76003),o=e(41869),c=e(19413),_=e(34817),v=e(41046),m=e(51081),g=e(14733);let a=class extends m.ChatProxyService{constructor(){super(...arguments),this.agentDisposable=null}registerDefaultAgent(){this.chatAgentViewService.registerChatComponent({id:"toolCall",component:_.ChatToolRender,initialProps:{}}),this.applicationService.getBackendOS().then(()=>{const r=this.aiNativeConfigService.capabilities.supportsAgentMode?this.acpChatAgent:this.defaultChatAgent,l=this.chatAgentService.registerAgent(r);this.agentDisposable=l,this.addDispose(l),queueMicrotask(()=>{this.chatAgentService.updateAgent(m.ChatProxyService.AGENT_ID,{})})})}registerFallbackAgent(){var r;(r=this.agentDisposable)===null||r===void 0||r.dispose(),this.addDispose(this.chatAgentService.registerAgent(this.defaultChatAgent)),queueMicrotask(()=>{this.chatAgentService.updateAgent(m.ChatProxyService.AGENT_ID,{})})}};t.AcpChatProxyService=a,n.__decorate([(0,s.Autowired)(o.AINativeConfigService),n.__metadata("design:type",o.AINativeConfigService)],a.prototype,"aiNativeConfigService",void 0),n.__decorate([(0,s.Autowired)(c.DefaultChatAgentToken),n.__metadata("design:type",g.DefaultChatAgent)],a.prototype,"defaultChatAgent",void 0),n.__decorate([(0,s.Autowired)(v.AcpChatAgent),n.__metadata("design:type",v.AcpChatAgent)],a.prototype,"acpChatAgent",void 0),t.AcpChatProxyService=a=n.__decorate([(0,s.Injectable)()],a)},51081:(P,t,e)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ChatProxyService=void 0;const s=e(85608),o=e(76003),c=e(41869),_=e(43718),v=e(27284),m=e(9447),g=e(72665),a=e(93062),u=e(19413),r=e(85907),l=e(34817),d=e(33108),f=e(11735);let E=n=class extends _.Disposable{constructor(){super(...arguments),this.chatDeferred=new _.Deferred}async getRequestOptions(){const h=this.preferenceService.get(v.AINativeSettingSectionsId.LLMModelSelection),y=this.preferenceService.get(v.AINativeSettingSectionsId.ModelID);let b="",A="";h==="deepseek"?b=this.preferenceService.get(v.AINativeSettingSectionsId.DeepseekApiKey,""):h==="openai"?b=this.preferenceService.get(v.AINativeSettingSectionsId.OpenaiApiKey,""):h==="anthropic"?b=this.preferenceService.get(v.AINativeSettingSectionsId.AnthropicApiKey,""):(b=this.preferenceService.get(v.AINativeSettingSectionsId.OpenaiApiKey,""),A=this.preferenceService.get(v.AINativeSettingSectionsId.OpenaiBaseURL,""));const S=this.preferenceService.get(v.AINativeSettingSectionsId.MaxTokens),w=this.chatAgentService.getAgent(n.AGENT_ID),T=await this.mcpConfigService.getDisabledTools();return{clientId:this.applicationService.clientId,model:h,modelId:y,apiKey:b,baseURL:A,maxTokens:S,system:w?.metadata.systemPrompt,disabledTools:T}}registerDefaultAgent(){this.chatAgentViewService.registerChatComponent({id:"toolCall",component:l.ChatToolRender,initialProps:{}}),this.applicationService.getBackendOS().then(()=>{this.addDispose(this.chatAgentService.registerAgent({id:n.AGENT_ID,metadata:{systemPrompt:this.preferenceService.get(v.AINativeSettingSectionsId.SystemPrompt,r.DEFAULT_SYSTEM_PROMPT)},invoke:async(h,y,b,A)=>{this.chatDeferred=new _.Deferred;const{message:S,command:w}=h;let T=S;if(w){const D=this.chatFeatureRegistry.getSlashCommandHandler(w);if(D&&D.providerPrompt){const O=this.monacoCommandRegistry.getActiveCodeEditor();T=await D.providerPrompt(S,O)}}const I=await this.aiBackService.requestStream(T,{requestId:h.requestId,sessionId:h.sessionId,history:b,images:h.images,...await this.getRequestOptions()},A);return(0,a.listenReadable)(I,{onData:D=>{y(D)},onEnd:()=>{this.chatDeferred.resolve()},onError:D=>{this.messageService.error(D.message),this.aiReporter.end(h.sessionId+"_"+h.requestId,{message:D.message,success:!1,command:w})}}),await this.chatDeferred.promise,{}},provideSlashCommands:async()=>this.chatFeatureRegistry.getAllSlashCommand().map(h=>({...h,name:h.name,description:h.description||""})),provideChatWelcomeMessage:async()=>{}}))}),queueMicrotask(()=>{this.chatAgentService.updateAgent(n.AGENT_ID,{})})}};t.ChatProxyService=E,E.AGENT_ID="Default_Chat_Agent",s.__decorate([(0,o.Autowired)(u.IChatAgentService),s.__metadata("design:type",Object)],E.prototype,"chatAgentService",void 0),s.__decorate([(0,o.Autowired)(_.AIBackSerivcePath),s.__metadata("design:type",Object)],E.prototype,"aiBackService",void 0),s.__decorate([(0,o.Autowired)(_.ChatFeatureRegistryToken),s.__metadata("design:type",f.ChatFeatureRegistry)],E.prototype,"chatFeatureRegistry",void 0),s.__decorate([(0,o.Autowired)(m.MonacoCommandRegistry),s.__metadata("design:type",m.MonacoCommandRegistry)],E.prototype,"monacoCommandRegistry",void 0),s.__decorate([(0,o.Autowired)(_.IAIReporter),s.__metadata("design:type",Object)],E.prototype,"aiReporter",void 0),s.__decorate([(0,o.Autowired)(_.ChatAgentViewServiceToken),s.__metadata("design:type",Object)],E.prototype,"chatAgentViewService",void 0),s.__decorate([(0,o.Autowired)(c.PreferenceService),s.__metadata("design:type",Object)],E.prototype,"preferenceService",void 0),s.__decorate([(0,o.Autowired)(_.IApplicationService),s.__metadata("design:type",Object)],E.prototype,"applicationService",void 0),s.__decorate([(0,o.Autowired)(g.IMessageService),s.__metadata("design:type",Object)],E.prototype,"messageService",void 0),s.__decorate([(0,o.Autowired)(_.MCPConfigServiceToken),s.__metadata("design:type",d.MCPConfigService)],E.prototype,"mcpConfigService",void 0),t.ChatProxyService=E=n=s.__decorate([(0,o.Injectable)()],E)},29770:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatService=void 0;const n=e(85608),s=e(76003),o=e(43718),c=e(19413),_=e(79169),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.panelLayoutService.showAIChatView()}sendMessage(a){this.showChatView(),this._onChatMessageLaunch.fire(a)}clearHistoryMessages(){var a;(a=this.chatInternalService.sessionModel)===null||a===void 0||a.history.clearMessages()}sendReplyMessage(a){typeof a=="string"?this._onChatReplyMessageLaunch.fire({kind:"content",content:a}):this._onChatReplyMessageLaunch.fire(a)}sendMessageList(a){this._onChatMessageListLaunch.fire(a)}scrollToBottom(){this._onScrollToBottom.fire()}};t.ChatService=m,n.__decorate([(0,s.Autowired)(c.IChatInternalService),n.__metadata("design:type",v.ChatInternalService)],m.prototype,"chatInternalService",void 0),n.__decorate([(0,s.Autowired)(_.AIPanelLayoutService),n.__metadata("design:type",_.AIPanelLayoutService)],m.prototype,"panelLayoutService",void 0),t.ChatService=m=n.__decorate([(0,s.Injectable)(),n.__metadata("design:paramtypes",[])],m)},11735:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatFeatureRegistry=void 0;const n=e(85608),s=e(76003),o=e(43718),c=e(19413),_=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(a){this.imageUploadProvider=a}getImageUploadProvider(){return this.imageUploadProvider}registerMessageSummaryProvider(a){this.messageSummaryProvider=a}getMessageSummaryProvider(){return this.messageSummaryProvider}dispose(){super.dispose(),this.slashCommandsMap.clear(),this.slashCommandsHandlerMap.clear()}registerWelcome(a,u){this.chatWelcomeMessageModel=new _.ChatWelcomeMessageModel(a,u),this._onDidWelcomeMessageChange.fire()}registerSlashCommand(a,u){const{name:r}=a;if(this.slashCommandsMap.has(r)){this.logger.warn(`ChatFeatureRegistry: commands name ${r} already exists`);return}this.slashCommandsMap.set(r,new _.ChatSlashCommandItemModel(a,r,v.ChatProxyService.AGENT_ID)),this.slashCommandsHandlerMap.set(r,u)}getSlashCommandHandler(a){return this.slashCommandsHandlerMap.get(a)}getSlashCommand(a){return this.slashCommandsMap.get(a)}getSlashCommandHandlerBySlashName(a){const u=this.getAllSlashCommand().find(r=>r.nameWithSlash===a);if(u)return this.getSlashCommandHandler(u.name)}getSlashCommandBySlashName(a){const u=this.getAllSlashCommand().find(r=>r.nameWithSlash===a);if(u)return this.getSlashCommand(u.name)}getAllSlashCommand(){return Array.from(this.slashCommandsMap.values())}getAllShortcutSlashCommand(){return this.getAllSlashCommand().filter(a=>a.isShortcut===!0)}parseSlashCommand(a){if(a.startsWith(c.SLASH_SYMBOL)){const u=this.getAllSlashCommand();for(const r of u){const{nameWithSlash:l}=r;if(a.startsWith(l))return{value:a.slice(l.length),nameWithSlash:l}}}return{value:a,nameWithSlash:""}}};t.ChatFeatureRegistry=m,t.ChatFeatureRegistry=m=n.__decorate([(0,s.Injectable)()],m)},47546:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatHistoryRegistry=void 0;const n=e(85608),s=e(76003),o=e(43718);let c=class extends o.Disposable{constructor(){super(...arguments),this.contributions=[]}registerChatHistory(v){var m;const g={...v,priority:(m=v.priority)!==null&&m!==void 0?m:0};this.contributions.push(g),this.contributions.sort((u,r)=>{var l,d;return((l=r.priority)!==null&&l!==void 0?l:0)-((d=u.priority)!==null&&d!==void 0?d:0)});const a=o.Disposable.create(()=>{const u=this.contributions.indexOf(g);u!==-1&&this.contributions.splice(u,1)});return this.addDispose(a),a}getChatHistoryContributions(){return[...this.contributions]}getActiveChatHistory(){for(const v of this.contributions)if(!v.when||v.when())return v;return null}};t.ChatHistoryRegistry=c,t.ChatHistoryRegistry=c=n.__decorate([(0,s.Injectable)()],c)},50558:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatInputRegistry=void 0;const n=e(85608),s=e(76003),o=e(43718);let c=class extends o.Disposable{constructor(){super(...arguments),this.contributions=[]}registerChatInput(v){var m;const g={...v,priority:(m=v.priority)!==null&&m!==void 0?m:0};this.contributions.push(g),this.contributions.sort((u,r)=>{var l,d;return((l=r.priority)!==null&&l!==void 0?l:0)-((d=u.priority)!==null&&d!==void 0?d:0)});const a=o.Disposable.create(()=>{const u=this.contributions.indexOf(g);u!==-1&&this.contributions.splice(u,1)});return this.addDispose(a),a}getChatInputContributions(){return[...this.contributions]}getActiveChatInput(){for(const v of this.contributions)if(!v.when||v.when())return v;return null}};t.ChatInputRegistry=c,t.ChatInputRegistry=c=n.__decorate([(0,s.Injectable)()],c)},4457:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AcpChatInternalService=void 0,t.formatAcpLoadSessionFallbackMessage=r;const n=e(85608),s=e(76003),o=e(41869),c=e(43718),_=e(72665),v=e(95909),m=e(59347),g="Unable to open this chat history. A new chat draft is ready, and a session will be created when you send a message.",a="This chat history is no longer available. A new chat draft is ready, and a session will be created when you send a message.";function u(h){if(h instanceof Error)return h.message;if(typeof h=="string")return h;if(h&&typeof h=="object"){const y=h,b=y.message;if(typeof b=="string"&&b.trim())return b;const A=y.error;if(A&&typeof A=="object"){const S=A.message;if(typeof S=="string"&&S.trim())return S}}return""}function r(h){const y=u(h);return/session .*not found|not found|does not exist|no session/i.test(y)?a:g}function l(h,y){const b={...h};return b.kind&&typeof b.kind=="object"&&(b.kind={...b.kind},"currentValue"in b.kind&&(b.kind.currentValue=y)),"currentValue"in b&&(b.currentValue=y),"value"in b&&(b.value=y),"current_value"in b&&(b.current_value=y),b}function d(h){const y=h.id||h.configId;if(typeof y=="string")return y;if(y&&typeof y=="object"&&typeof y.id=="string")return y.id}function f(h){var y,b,A;const S=h.kind&&typeof h.kind=="object"?h.kind:void 0,w=(A=(b=(y=S?.currentValue)!==null&&y!==void 0?y:h.currentValue)!==null&&b!==void 0?b:h.current_value)!==null&&A!==void 0?A:h.value;return typeof w=="boolean"||typeof w=="string"?w:void 0}function E(h){return h?.map(y=>({...y}))}let p=class extends m.ChatInternalService{constructor(){super(...arguments),this._onModeChange=new c.Emitter,this.onModeChange=this._onModeChange.event,this._onSessionLoadingChange=new c.Emitter,this.onSessionLoadingChange=this._onSessionLoadingChange.event,this._onSessionModelChange=new c.Emitter,this.onSessionModelChange=this._onSessionModelChange.event,this._onAvailableCommandsChange=new c.Emitter,this.onAvailableCommandsChange=this._onAvailableCommandsChange.event,this.availableCommands=[],this.draftSessionState={},this.bootstrapSessionAttempted=!1}stripAcpPrefix(y){return y.startsWith("acp:")?y.slice(4):y}hasDraftSessionState(){var y,b,A;return!!(this.draftSessionState.currentModeId||this.draftSessionState.modelId||!((y=this.draftSessionState.agentModes)===null||y===void 0)&&y.length||!((b=this.draftSessionState.agentModels)===null||b===void 0)&&b.length||!((A=this.draftSessionState.configOptions)===null||A===void 0)&&A.length)}isUnusedBootstrapSession(y){return!!(y&&this.bootstrapSessionId&&y.sessionId===this.bootstrapSessionId&&y.history.getMessages().length===0&&y.requests.length===0)}getAvailableCommands(){return this.availableCommands}setAvailableCommands(y){this.availableCommands=y,this._onAvailableCommandsChange.fire(y)}getDraftSessionState(){return this.draftSessionState}getVisibleSessions(){return this.chatManagerService.getSessions().filter(y=>!this.isUnusedBootstrapSession(y))}get onStorageInit(){return this.chatManagerService.onStorageInit}createRequest(y,b,A,S){var w,T,I;const D=(w=this._sessionModel)===null||w===void 0?void 0:w.sessionId;this.logger.log(`[ACP Chat][Frontend] createRequest start \u2014 sessionId=${D??"(empty)"}, agentId=${b||"(empty)"}, command=${S||"(empty)"}, messageChars=${y.length}, images=${(T=A?.length)!==null&&T!==void 0?T:0}`);const O=super.createRequest(y,b,A,S);return this.logger.log(`[ACP Chat][Frontend] createRequest ${O?"done":"skipped"} \u2014 sessionId=${D??"(empty)"}, requestId=${(I=O?.requestId)!==null&&I!==void 0?I:"(empty)"}`),O}sendRequest(y,b=!1){var A,S,w;const T=(A=this._sessionModel)===null||A===void 0?void 0:A.sessionId;this.logger.log(`[ACP Chat][Frontend] sendRequest start \u2014 sessionId=${T??"(empty)"}, requestId=${y.requestId}, regenerate=${b}, agentId=${y.message.agentId}, command=${y.message.command||"(empty)"}, messageChars=${y.message.prompt.length}, images=${(w=(S=y.message.images)===null||S===void 0?void 0:S.length)!==null&&w!==void 0?w:0}`);const I=super.sendRequest(y,b);return Promise.resolve(I).then(()=>{this.logger.log(`[ACP Chat][Frontend] sendRequest done \u2014 sessionId=${T??"(empty)"}, requestId=${y.requestId}`)},D=>{const O=D instanceof Error?D.message:String(D);this.logger.error(`[ACP Chat][Frontend] sendRequest error \u2014 sessionId=${T??"(empty)"}, requestId=${y.requestId}, error=${O}`)}),I}init(){this.storageInitDisposable||(this.ensureSessionStateListener(),this.storageInitDisposable=this.chatManagerService.onStorageInit(async()=>{if(this.aiNativeConfigService.capabilities.supportsAgentMode)return;const y=this.chatManagerService.getSessions();y.length>0?await this.activateSession(y[y.length-1].sessionId):await this.createSessionModel()}),this.addDispose(this.storageInitDisposable))}ensureSessionStateListener(){if(this.sessionStateDisposable)return;const y=this.chatManagerService;y.onDidApplySessionState&&(this.sessionStateDisposable=y.onDidApplySessionState(b=>{!this._sessionModel||b.sessionId!==this._sessionModel.sessionId||(this._onSessionModelChange.fire(this._sessionModel),b.currentModeId!==void 0&&b.currentModeId!==b.previousModeId&&this._onModeChange.fire(b.currentModeId))}),this.addDispose(this.sessionStateDisposable))}async doStartSessionModel(){const y=this.draftSessionState;this._sessionModel=await this.chatManagerService.startSession(),await this.applyDraftSessionState(this._sessionModel,y);const b=this.chatManagerService;this.setAvailableCommands(b.getAvailableCommands()),this.draftSessionState=this.createDraftStateFromModel(this._sessionModel)||{},this._onSessionModelChange.fire(this._sessionModel);const A=this.stripAcpPrefix(this._sessionModel.sessionId);return this.permissionBridgeService.setActiveSession(A),this._onChangeSession.fire(this._sessionModel.sessionId),this._sessionModel}async startSessionModel(){if(this.sessionCreationPromise)return this.sessionCreationPromise;this._onSessionLoadingChange.fire(!0),this.sessionCreationPromise=this.doStartSessionModel();try{return await this.sessionCreationPromise}finally{this.sessionCreationPromise=void 0,this._onSessionLoadingChange.fire(!1)}}async ensureSessionModel(){return this._sessionModel?this._sessionModel:this.startSessionModel()}async ensureBootstrapSessionModel(){var y,b;if(!this.aiNativeConfigService.capabilities.supportsAgentMode||this._sessionModel)return this._sessionModel;if(!(this.bootstrapSessionAttempted||this.hasDraftSessionState())){this.bootstrapSessionAttempted=!0;try{const A=await this.startSessionModel();return this.bootstrapSessionId=A.sessionId,A}catch(A){(b=(y=this.logger).warn)===null||b===void 0||b.call(y,"[ACP Chat][Frontend] Failed to create bootstrap session",A);return}}}enterDraftSession(y){!y?.force&&this.isUnusedBootstrapSession(this._sessionModel)||(this.draftSessionState=this.createDraftStateFromModel(this._sessionModel)||this.draftSessionState,this._sessionModel=void 0,this.permissionBridgeService.setActiveSession(void 0),this._onSessionModelChange.fire(void 0),this._onModeChange.fire(""),this._onChangeSession.fire(""))}createDraftStateFromModel(y){if(y)return{agentModes:y.agentModes?[...y.agentModes]:void 0,currentModeId:y.currentModeId,agentModels:y.agentModels?[...y.agentModels]:void 0,modelId:y.modelId,configOptions:E(y.configOptions)}}fireDraftSessionStateChange(){this._onSessionModelChange.fire(void 0)}updateDraftConfigOption(y,b){this.draftSessionState={...this.draftSessionState,configOptions:(this.draftSessionState.configOptions||[]).map(A=>d(A)===y?l(A,b):A)},this.fireDraftSessionStateChange()}async applyDraftSessionState(y,b){var A,S,w,T,I,D,O,M,R,x,k,B,L,N;const K=this.stripAcpPrefix(y.sessionId);if(b.currentModeId&&b.currentModeId!==y.currentModeId&&(!((A=y.agentModes)===null||A===void 0)&&A.some(j=>j.id===b.currentModeId)))try{await((w=(S=this.aiBackService).setSessionMode)===null||w===void 0?void 0:w.call(S,K,b.currentModeId)),y.currentModeId=b.currentModeId,this._onModeChange.fire(b.currentModeId)}catch(j){(I=(T=this.logger).warn)===null||I===void 0||I.call(T,`[ACP Chat][Frontend] Failed to apply draft mode "${b.currentModeId}"`,j)}if(b.modelId&&b.modelId!==y.modelId&&(!((D=y.agentModels)===null||D===void 0)&&D.some(j=>j.modelId===b.modelId)))try{await((M=(O=this.aiBackService).setSessionModel)===null||M===void 0?void 0:M.call(O,K,b.modelId)),y.modelId=b.modelId}catch(j){(x=(R=this.logger).warn)===null||x===void 0||x.call(R,`[ACP Chat][Frontend] Failed to apply draft model "${b.modelId}"`,j)}const W=new Map;if((b.configOptions||[]).forEach(j=>{const V=d(j),Q=f(j);V&&Q!==void 0&&W.set(V,Q)}),W.size===0)return;const U=[];for(const j of y.configOptions||[]){const V=d(j),Q=V?W.get(V):void 0;if(!V||Q===void 0||f(j)===Q){U.push(j);continue}try{await((B=(k=this.aiBackService).setSessionConfigOption)===null||B===void 0?void 0:B.call(k,K,V,Q)),U.push(l(j,Q))}catch(G){(N=(L=this.logger).warn)===null||N===void 0||N.call(L,`[ACP Chat][Frontend] Failed to apply draft config option "${V}"`,G),U.push(j)}}y.configOptions=U}async setSessionMode(y){var b,A;const S=this._sessionModel?this.stripAcpPrefix(this._sessionModel.sessionId):void 0;if(!S){this.draftSessionState={...this.draftSessionState,currentModeId:y},this._onModeChange.fire(y),this.fireDraftSessionStateChange();return}try{await((A=(b=this.aiBackService).setSessionMode)===null||A===void 0?void 0:A.call(b,S,y)),this._sessionModel&&(this._sessionModel.currentModeId=y,this._onSessionModelChange.fire(this._sessionModel)),this._onModeChange.fire(y)}catch(w){this.messageService.error(w.message)}}async setSessionModel(y){var b,A;const S=this._sessionModel?this.stripAcpPrefix(this._sessionModel.sessionId):void 0;if(!S){this.draftSessionState={...this.draftSessionState,modelId:y},this.fireDraftSessionStateChange();return}try{await((A=(b=this.aiBackService).setSessionModel)===null||A===void 0?void 0:A.call(b,S,y)),this._sessionModel&&(this._sessionModel.modelId=y,this._onSessionModelChange.fire(this._sessionModel))}catch(w){this.messageService.error(w.message)}}async setSessionConfigOption(y,b){var A,S;const w=this._sessionModel?this.stripAcpPrefix(this._sessionModel.sessionId):void 0;if(!w){this.updateDraftConfigOption(y,b);return}try{await((S=(A=this.aiBackService).setSessionConfigOption)===null||S===void 0?void 0:S.call(A,w,y,b)),this._sessionModel&&(this._sessionModel.configOptions=this._sessionModel.configOptions.map(T=>(T.id||T.configId)===y?l(T,b):T),this._onSessionModelChange.fire(this._sessionModel))}catch(T){this.messageService.error(T.message)}}async createSessionModel(){try{await this.startSessionModel()}catch(y){const b=y instanceof Error?y.message:String(y);this.messageService.error(`Failed to create session. (${b})`)}}async clearSessionModel(y){var b;if(y=y||((b=this._sessionModel)===null||b===void 0?void 0:b.sessionId),!y){this.enterDraftSession({force:!0});return}this._onWillClearSession.fire(y);const A=this._sessionModel&&y===this._sessionModel.sessionId?this.stripAcpPrefix(y):void 0;this.chatManagerService.clearSession(y),A&&this.permissionBridgeService.clearSessionDialogs(A),this._sessionModel&&y===this._sessionModel.sessionId?this.enterDraftSession({force:!0}):this._sessionModel&&this._onChangeSession.fire(this._sessionModel.sessionId)}getSessions(){return this.chatManagerService.getSessions()}async loadSessionModel(y){return await this.chatManagerService.loadSession(y),this.chatManagerService.getSession(y)}async getSessionsByAcp(){const y=this.chatManagerService;return await y.loadSessionList(),y.getSessions().length===0&&(await new Promise(b=>setTimeout(b,1e3*3)),await y.loadSessionList()),this.chatManagerService.getSessions()}async activateSession(y){this._onSessionLoadingChange.fire(!0);try{const b=this.chatManagerService;await b.loadSession(y);const A=this.chatManagerService.getSession(y);if(!A){this.messageService.info(`Session ${y} not found. A new chat draft is ready, and a session will be created when you send a message.`),this.enterDraftSession({force:!0});return}this._sessionModel=A;const S=this.stripAcpPrefix(y);this.permissionBridgeService.setActiveSession(S),this.setAvailableCommands(b.getAvailableCommands()),this._onSessionModelChange.fire(this._sessionModel),this._onChangeSession.fire(this._sessionModel.sessionId)}catch(b){this.messageService.info(r(b)),this.enterDraftSession({force:!0})}finally{this._onSessionLoadingChange.fire(!1)}}dispose(){this.permissionBridgeService.setActiveSession(void 0),this._onModeChange.dispose(),this._onSessionLoadingChange.dispose(),this._onSessionModelChange.dispose(),super.dispose()}};t.AcpChatInternalService=p,n.__decorate([(0,s.Autowired)(o.AINativeConfigService),n.__metadata("design:type",o.AINativeConfigService)],p.prototype,"aiNativeConfigService",void 0),n.__decorate([(0,s.Autowired)(_.IMessageService),n.__metadata("design:type",Object)],p.prototype,"messageService",void 0),n.__decorate([(0,s.Autowired)(v.AcpPermissionBridgeService),n.__metadata("design:type",v.AcpPermissionBridgeService)],p.prototype,"permissionBridgeService",void 0),n.__decorate([(0,s.Autowired)(o.ILogger),n.__metadata("design:type",Object)],p.prototype,"logger",void 0),t.AcpChatInternalService=p=n.__decorate([(0,s.Injectable)()],p)},59347:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatInternalService=void 0;const n=e(85608),s=e(76003),o=e(41869),c=e(43718),_=e(19413),v=e(61282);let m=class extends c.Disposable{constructor(){super(...arguments),this._onChangeRequestId=new c.Emitter,this.onChangeRequestId=this._onChangeRequestId.event,this._onChangeSession=new c.Emitter,this.onChangeSession=this._onChangeSession.event,this._onCancelRequest=new c.Emitter,this.onCancelRequest=this._onCancelRequest.event,this._onWillClearSession=new c.Emitter,this.onWillClearSession=this._onWillClearSession.event,this._onRegenerateRequest=new c.Emitter,this.onRegenerateRequest=this._onRegenerateRequest.event}get latestRequestId(){return this._latestRequestId}get sessionModel(){return this._sessionModel}init(){this.chatManagerService.onStorageInit(async()=>{const a=this.chatManagerService.getSessions();a.length>0?await this.activateSession(a[a.length-1].sessionId):await this.createSessionModel()})}setLatestRequestId(a){this._latestRequestId=a,this._onChangeRequestId.fire(a)}createRequest(a,u,r,l){return this.chatManagerService.createRequest(this._sessionModel.sessionId,a,u,l,r)}sendRequest(a,u=!1){const r=this.chatManagerService.sendRequest(this._sessionModel.sessionId,a,u);return u&&this._onRegenerateRequest.fire(),r}cancelRequest(){this.chatManagerService.cancelRequest(this._sessionModel.sessionId),this._onCancelRequest.fire()}async createSessionModel(){this._sessionModel=await this.chatManagerService.startSession(),this._onChangeSession.fire(this._sessionModel.sessionId)}async clearSessionModel(a){a=a||this._sessionModel.sessionId,this._onWillClearSession.fire(a),this.chatManagerService.clearSession(a),a===this._sessionModel.sessionId&&(this._sessionModel=await this.chatManagerService.startSession()),this._onChangeSession.fire(this._sessionModel.sessionId)}getSessions(){return this.chatManagerService.getSessions()}getSession(a){return this.chatManagerService.getSession(a)}activateSession(a){const u=this.chatManagerService.getSession(a);if(!u)throw new Error(`There is no session with session id ${a}`);this._sessionModel=u,this._onChangeSession.fire(this._sessionModel.sessionId)}dispose(){var a;(a=this._sessionModel)===null||a===void 0||a.dispose(),super.dispose()}};t.ChatInternalService=m,n.__decorate([(0,s.Autowired)(c.AIBackSerivcePath),n.__metadata("design:type",Object)],m.prototype,"aiBackService",void 0),n.__decorate([(0,s.Autowired)(o.PreferenceService),n.__metadata("design:type",Object)],m.prototype,"preferenceService",void 0),n.__decorate([(0,s.Autowired)(_.IChatManagerService),n.__metadata("design:type",v.ChatManagerService)],m.prototype,"chatManagerService",void 0),t.ChatInternalService=m=n.__decorate([(0,s.Injectable)()],m)},70394:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChatRenderRegistry=void 0;const n=e(85608),s=e(76003),o=e(43718);let c=class extends o.Disposable{constructor(){super(...arguments),this.messageProcessors=[],this._onDidChangeProcessors=new o.Emitter,this.onDidChangeProcessors=this._onDidChangeProcessors.event}registerMessageProcessor(v){const m={priority:100,...v};this.messageProcessors.push(m),this.messageProcessors.sort((a,u)=>a.priority-u.priority),this._onDidChangeProcessors.fire();const g=o.Disposable.create(()=>{const a=this.messageProcessors.indexOf(m);a!==-1&&(this.messageProcessors.splice(a,1),this._onDidChangeProcessors.fire())});return this.addDispose(g),g}getMessageProcessors(){return[...this.messageProcessors]}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}registerEnabledMentionTypes(v){this.enabledMentionTypes=v}registerThinkingResultRender(v){this.chatThinkingResultRender=v}registerChatViewHeaderRender(v){this.chatViewHeaderRender=v}registerChatHistoryRender(v){this.chatHistoryRender=v}registerChatWelcomePageRender(v){this.chatWelcomePageRender=v}};t.ChatRenderRegistry=c,t.ChatRenderRegistry=c=n.__decorate([(0,s.Injectable)()],c)},15764:(P,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AIChatViewACPContent=t.AIChatViewACP=void 0,t.DefaultChatViewHeaderACP=G;const n=e(85608),s=n.__importStar(e(14041)),o=e(68392),c=e(41869),_=e(81878),v=e(89195),m=e(43718),g=e(54414),a=e(63067),u=e(72665);e(41937);const r=e(51500),l=e(19413),d=e(46044),f=e(98864),E=n.__importDefault(e(90376)),p=e(69124),h=e(95909),y=e(4835),b=e(87785),A=e(25834),S=e(57987),w=e(56474),T=e(15016),I=e(29039),D=e(78048),O=e(86556),M=e(73974),R=e(77633),x=e(42033),k=e(51081),B=n.__importDefault(e(77256)),L="chat_scroll",N=100;function K(H){return H instanceof Error?H.message:String(H)}function W(H){const $=H.history.getMessages()[0];return H.createdAt||$?.timestamp||$?.replyStartTime||0}function U(H){return typeof H.getVisibleSessions=="function"?H.getVisibleSessions():H.getSessions()}const j=H=>H.map($=>{var z;const Y=((z=$.applyResult)===null||z===void 0?void 0:z.diff.split(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/cli-engine",
3
- "version": "3.9.1-next-1781010409.0",
3
+ "version": "3.9.1-next-1781059368.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.9.1-next-1781010409.0",
30
- "@opensumi/ide-core-common": "3.9.1-next-1781010409.0",
31
- "@opensumi/ide-core-node": "3.9.1-next-1781010409.0",
32
- "@opensumi/ide-express-file-server": "3.9.1-next-1781010409.0",
33
- "@opensumi/ide-extension": "3.9.1-next-1781010409.0",
34
- "@opensumi/ide-i18n": "3.9.1-next-1781010409.0",
35
- "@opensumi/ide-main-layout": "3.9.1-next-1781010409.0",
36
- "@opensumi/ide-startup": "3.9.1-next-1781010409.0",
29
+ "@opensumi/ide-core-browser": "3.9.1-next-1781059368.0",
30
+ "@opensumi/ide-core-common": "3.9.1-next-1781059368.0",
31
+ "@opensumi/ide-core-node": "3.9.1-next-1781059368.0",
32
+ "@opensumi/ide-express-file-server": "3.9.1-next-1781059368.0",
33
+ "@opensumi/ide-extension": "3.9.1-next-1781059368.0",
34
+ "@opensumi/ide-i18n": "3.9.1-next-1781059368.0",
35
+ "@opensumi/ide-main-layout": "3.9.1-next-1781059368.0",
36
+ "@opensumi/ide-startup": "3.9.1-next-1781059368.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": "3ce8cc6748a62a685086a3766dfc0e03fe9aa7f5"
75
+ "gitHead": "fad7db8e674425dd2b01bec12fddcd11cf7f8f00"
76
76
  }