UNPKG

grafana-mcp-analyzer

Version:

让AI助手直接分析你的Grafana监控数据 - A Model Context Protocol server for Grafana data analysis

10 lines (8 loc) 1.95 kB
class a{constructor(t){this.context={sessionId:t,activeDataSources:new Map,currentFocus:"",conversationHistory:[]}}async handleUserInput(t){return this.context.conversationHistory.push({timestamp:new Date().toISOString(),userInput:t,dataSource:"auto-detected",analysisType:"auto-detected"}),{context:this.getContext(),conversationHistory:this.context.conversationHistory}}addDataSource(t,e,o){this.context.activeDataSources.set(t,{requestId:e,cacheId:o,lastAnalysis:new Date().toISOString(),analysisDepth:1}),this.context.currentFocus||(this.context.currentFocus=t)}setCurrentFocus(t){this.context.activeDataSources.has(t)&&(this.context.currentFocus=t)}getContext(){return{sessionId:this.context.sessionId,activeDataSources:Array.from(this.context.activeDataSources.keys()),currentFocus:this.context.currentFocus,conversationHistory:this.context.conversationHistory}}getContextSummary(){const t=Array.from(this.context.activeDataSources.keys()),e=this.context.currentFocus;return` \u5F53\u524D\u5BF9\u8BDD\u4E0A\u4E0B\u6587\uFF1A - \u6D3B\u8DC3\u6570\u636E\u6E90\uFF1A${t.join(", ")||"\u65E0"} - \u5F53\u524D\u805A\u7126\uFF1A${e||"\u65E0"} - \u5BF9\u8BDD\u5386\u53F2\uFF1A${this.context.conversationHistory.length} \u6761\u8BB0\u5F55 - \u6700\u65B0\u8F93\u5165\uFF1A${this.context.conversationHistory.length>0?this.context.conversationHistory[this.context.conversationHistory.length-1].userInput:"\u65E0"} \u6CE8\u610F\uFF1A\u6570\u636E\u6E90\u548C\u5206\u6790\u7C7B\u578B\u7531AI\u6A21\u578B\u81EA\u52A8\u68C0\u6D4B\uFF0C\u65E0\u9700\u786C\u7F16\u7801\u89C4\u5219\u3002 `}hasDataSource(t){return this.context.activeDataSources.has(t)}getDataSourceInfo(t){return this.context.activeDataSources.get(t)}cleanupExpiredDataSources(t=24*60*60*1e3){const e=Date.now();for(const[o,s]of this.context.activeDataSources.entries()){const n=new Date(s.lastAnalysis).getTime();e-n>t&&this.context.activeDataSources.delete(o)}}}export{a as ConversationManager};