monacopilot 0.11.7 → 0.11.8

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/build/index.mjs CHANGED
@@ -1,104 +1,46 @@
1
- var J=["groq","openai","anthropic"],de={"llama-3-70b":"llama3-70b-8192","gpt-4o":"gpt-4o-2024-08-06","gpt-4o-mini":"gpt-4o-mini","claude-3.5-sonnet":"claude-3.5-sonnet-20240620","claude-3-opus":"claude-3-opus-20240229","claude-3-sonnet":"claude-3-sonnet-20240229","claude-3-haiku":"claude-3-haiku-20240307","o1-preview":"o1-preview","o1-mini":"o1-mini"},z={groq:["llama-3-70b"],openai:["gpt-4o","gpt-4o-mini","o1-preview","o1-mini"],anthropic:["claude-3.5-sonnet","claude-3-opus","claude-3-haiku","claude-3-sonnet"]},le="llama-3-70b",ce="groq",pe={groq:"https://api.groq.com/openai/v1/chat/completions",openai:"https://api.openai.com/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages"},N=.1;var me="diff-added-line",ue="diff-deleted-line",Z={isWholeLine:!0,showIfCollapsed:!0};var Ce={"claude-3.5-sonnet":8192,"claude-3-opus":4096,"claude-3-haiku":4096,"claude-3-sonnet":4096};var Ze={createRequestBody:(t,e)=>{let n=t==="o1-preview"||t==="o1-mini"?[{role:"user",content:e.user}]:[{role:"system",content:e.system},{role:"user",content:e.user}];return{model:te(t),temperature:N,messages:n}},createHeaders:t=>({"Content-Type":"application/json",Authorization:`Bearer ${t}`}),parseCompletion:t=>t.choices?.length?t.choices[0].message.content:null},Qe={createRequestBody:(t,e)=>({model:te(t),temperature:N,messages:[{role:"system",content:e.system},{role:"user",content:e.user}]}),createHeaders:t=>({"Content-Type":"application/json",Authorization:`Bearer ${t}`}),parseCompletion:t=>t.choices?.length?t.choices[0].message.content:null},et={createRequestBody:(t,e)=>({model:te(t),temperature:N,system:e.system,messages:[{role:"user",content:e.user}],max_tokens:tt(t)}),createHeaders:t=>({"Content-Type":"application/json","x-api-key":t,"anthropic-version":"2023-06-01"}),parseCompletion:t=>!t.content||typeof t.content!="string"?null:t.content},Q={openai:Ze,groq:Qe,anthropic:et},fe=(t,e,o)=>Q[e].createRequestBody(t,o),ge=(t,e)=>Q[e].createHeaders(t),ee=(t,e)=>Q[e].parseCompletion(t),te=t=>de[t],he=t=>pe[t],tt=t=>Ce[t]||4096;var g=class g{constructor(){}static getInstance(){return g.instance}error(e){let o,n;e instanceof Error?(o=e.message,n=e.stack):typeof e=="string"?o=e:o="An unknown error occurred";let i=`${g.RED}${g.BOLD}[MONACOPILOT ERROR] ${o}${g.RESET}`;return console.error(i),n&&console.error(`${g.RED}[MONACOPILOT ERROR] Stack trace:${g.RESET}
2
- ${n}`),{message:o,stack:n}}warning(e){console.warn(`${g.YELLOW}${g.BOLD}[MONACOPILOT WARN] ${e}${g.RESET}`)}information(e){console.log(`${g.BOLD}[MONACOPILOT] ${e}${g.RESET}`)}};g.instance=new g,g.RED="\x1B[31m",g.YELLOW="\x1B[33m",g.RESET="\x1B[0m",g.BOLD="\x1B[1m";var oe=g,y=oe.getInstance();var w=(t,e,o={})=>{let n=null,i=null,r=(...s)=>new Promise((a,d)=>{n&&(clearTimeout(n),i&&i("Cancelled")),i=d,n=setTimeout(()=>{(!o.shouldExecute||o.shouldExecute())&&a(t(...s)),i=null},e)});return r.cancel=()=>{n&&(clearTimeout(n),i&&i("Cancelled"),n=null,i=null)},r},b=t=>!t||t.length===0?"":t.length===1?t[0]:`${t.slice(0,-1).join(", ")} and ${t.slice(-1)}`,B=()=>Math.random().toString(36).slice(2,11);var ne=(t,e)=>e.getLineContent(t.lineNumber)[t.column-1];var F=(t,e)=>e.getLineContent(t.lineNumber).slice(t.column-1),A=(t,e)=>e.getLineContent(t.lineNumber).slice(0,t.column-1),Ee=(t,e)=>e.getLineContent(t).trim()==="",R=(t,e)=>e.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:t.lineNumber,endColumn:t.column}),P=(t,e)=>e.getValueInRange({startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:e.getLineCount(),endColumn:e.getLineMaxColumn(e.getLineCount())}),M=(t,e,o={})=>{if(e<=0)return"";let n=t.split(`
3
- `),i=n.length;if(e>=i)return t;if(o.from==="end"){let s=n.slice(-e);return s.every(a=>a==="")?`
4
- `.repeat(e):s.join(`
5
- `)}let r=n.slice(0,e);return r.every(s=>s==="")?`
6
- `.repeat(e):r.join(`
7
- `)},x=(t,e,o,n)=>({startLineNumber:t,startColumn:e,endLineNumber:o,endColumn:n}),Te=(t,e,o)=>{if(!o)return x(t.lineNumber,t.column,t.lineNumber,t.column);let n=e.getOffsetAt(t),i=e.getValue().substring(n),r=0,s=0,a=0,d=o.length,l=i.length;if(n>=e.getValue().length||l===0)return x(t.lineNumber,t.column,t.lineNumber,t.column);let c=Math.min(d,l);for(let u=0;u<c&&o[u]===i[u];u++)r++;for(let u=1;u<=c;u++){let h=o.slice(-u),E=i.slice(0,u);h===E&&(s=u)}if(a=Math.max(r,s),a===0)for(let u=1;u<d;u++){let h=o.substring(u);if(i.startsWith(h)){a=d-u;break}}let m=n+a,C=e.getPositionAt(m);return x(t.lineNumber,t.column,C.lineNumber,C.column)},W=(t,e)=>{t.setSelection({startLineNumber:e.startLineNumber,startColumn:e.startColumn,endLineNumber:e.startLineNumber,endColumn:e.startColumn})};var Se=async(t,e,o={})=>{let n={"Content-Type":"application/json",...o.headers},i=e==="POST"&&o.body?JSON.stringify(o.body):void 0,r=await fetch(t,{method:e,headers:n,body:i,signal:o.signal});if(!r.ok)throw new Error(`${r.statusText||o.fallbackError||"Network error"}`);return r.json()},ot=(t,e)=>Se(t,"GET",e),nt=(t,e,o)=>Se(t,"POST",{...o,body:e}),D={GET:ot,POST:nt};var ye=(t,e)=>{let o=F(t,e).trim(),n=A(t,e).trim();return t.column<=3&&(o!==""||n!=="")};var it=(t,e)=>{let o=t.length,n=e.length,i=Array.from({length:o+1},()=>Array(n+1).fill(0));for(let d=1;d<=o;d++)for(let l=1;l<=n;l++)t[d-1]===e[l-1]?i[d][l]=i[d-1][l-1]+1:i[d][l]=Math.max(i[d-1][l],i[d][l-1]);let r=o,s=n,a=[];for(;r>0&&s>0;)t[r-1]===e[s-1]?(a.unshift({type:"equal",line:t[r-1]}),r--,s--):i[r][s]===i[r-1][s]?(a.unshift({type:"deleted",line:t[r-1]}),r--):(a.unshift({type:"added",line:e[s-1]}),s--);for(;r>0;)a.unshift({type:"deleted",line:t[r-1]}),r--;for(;s>0;)a.unshift({type:"added",line:e[s-1]}),s--;return a},rt=(t,e)=>{let o=t.split(`
8
- `),n=e.split(`
9
- `);return it(o,n)},xe=(t,e,o,n)=>{let i=rt(e,o),r=t.getModel();if(!r)return null;let s=[],a=[],d=n.startLineNumber;i.forEach((h,E)=>{let{type:T,line:S}=h,ze=S.length,K=1,X=ze+1;E===0&&(K=n.startColumn),E===i.length-1&&(X=n.endColumn),T==="equal"?(a.push(S),d++):T==="deleted"?(a.push(S),s.push({range:x(d,K,d,X),options:{...Z,className:ue}}),d++):T==="added"&&(a.push(S),s.push({range:x(d,K,d,X),options:{...Z,className:me}}),d++)});let l=a.join(`
10
- `),c=null,m=n.startLineNumber+a.length-1,C=a.length>1?a[a.length-1].length+1:n.endColumn,u=x(n.startLineNumber,n.startColumn,m,C);return r.pushEditOperations([],[{range:n,text:l}],()=>null),c=t.createDecorationsCollection(s),{clear:()=>{c&&c.clear(),r.pushEditOperations([],[{range:u,text:e}],()=>null)}}};var st=t=>{let{technologies:e,resolvedCurrentLanguage:o,currentFileName:n,relatedFiles:i}=t??{},r=o||b(e),s=`You are an expert ${r?`${r} `:""}developer assistant.`,a="Your task is to provide precise and contextually relevant code completions, modifications, or generations",d=n?`for the file '${n}'`:"",l=i&&i.length>0?"Consider the context of the current and related files provided.":"";return`${s}
11
- ${a} ${d}.
12
- Ensure that your responses integrate seamlessly with the existing code and maintain consistency with the project's style and conventions.
13
- ${l}
14
- Before providing the completion or modification, think through the problem step-by-step, considering best practices and any potential edge cases.`.trim()},at=t=>t?.length?t.map(({path:e,content:o})=>`
15
- <related_file>
16
- <path>${e}</path>
17
- <content>
18
- \`\`\`
19
- ${o}
20
- \`\`\`
21
- </content>
1
+ var k=["groq","openai","anthropic"],Y={"llama-3-70b":"llama3-70b-8192","gpt-4o":"gpt-4o-2024-08-06","gpt-4o-mini":"gpt-4o-mini","claude-3.5-sonnet":"claude-3.5-sonnet-20240620","claude-3-opus":"claude-3-opus-20240229","claude-3-sonnet":"claude-3-sonnet-20240229","claude-3-haiku":"claude-3-haiku-20240307","o1-preview":"o1-preview","o1-mini":"o1-mini"},q={groq:["llama-3-70b"],openai:["gpt-4o","gpt-4o-mini","o1-preview","o1-mini"],anthropic:["claude-3.5-sonnet","claude-3-opus","claude-3-haiku","claude-3-sonnet"]},G="llama-3-70b",X="groq",z={groq:"https://api.groq.com/openai/v1/chat/completions",openai:"https://api.openai.com/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages"},v=.1;var I=(e,t)=>{let o=null,r=null,n=(...i)=>new Promise((s,a)=>{o&&(clearTimeout(o),r&&r("Cancelled")),r=a,o=setTimeout(()=>{s(e(...i)),r=null},t)});return n.cancel=()=>{o&&(clearTimeout(o),r&&r("Cancelled"),o=null,r=null)},n},E=e=>!e||e.length===0?"":e.length===1?e[0]:`${e.slice(0,-1).join(", ")} and ${e.slice(-1)}`;var H=(e,t)=>t.getLineContent(e.lineNumber)[e.column-1];var L=(e,t)=>t.getLineContent(e.lineNumber).slice(e.column-1),P=(e,t)=>t.getLineContent(e.lineNumber).slice(0,e.column-1),J=(e,t)=>t.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:e.lineNumber,endColumn:e.column}),Z=(e,t)=>t.getValueInRange({startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:t.getLineCount(),endColumn:t.getLineMaxColumn(t.getLineCount())}),$=(e,t,o={})=>{if(t<=0)return"";let r=e.split(`
2
+ `),n=r.length;if(t>=n)return e;if(o.from==="end"){let s=r.slice(-t);return s.every(a=>a==="")?`
3
+ `.repeat(t):s.join(`
4
+ `)}let i=r.slice(0,t);return i.every(s=>s==="")?`
5
+ `.repeat(t):i.join(`
6
+ `)};var Q=async(e,t,o={})=>{let r={"Content-Type":"application/json",...o.headers},n=t==="POST"&&o.body?JSON.stringify(o.body):void 0,i=await fetch(e,{method:t,headers:r,body:n,signal:o.signal});if(!i.ok)throw new Error(`${i.statusText||o.fallbackError||"Network error"}`);return i.json()},me=(e,t)=>Q(e,"GET",t),ue=(e,t,o)=>Q(e,"POST",{...o,body:t}),A={GET:me,POST:ue};var ee=(e,t)=>{let o=L(e,t).trim(),r=P(e,t).trim();return e.column<=3&&(o!==""||r!=="")};var Ce="<user-current-cursor-position-is-here>",ge=e=>e==="javascript"?"JavaScript (ESNext)":e,he=e=>`You are an expert ${ge(e.language)||E(e.technologies)} developer assistant with extensive experience in code completion and adhering to best coding practices. Your role is to provide precise and contextually relevant code completions without any errors, including syntax, punctuation, spaces, tabs, and line breaks. Focus on integrating seamlessly with the existing code and follow the user's instructions carefully.`,fe=e=>{let{filename:t="/",textBeforeCursor:o="",textAfterCursor:r="",relatedFiles:n,editorState:i}=e,p=`
7
+ <guidelines>
8
+ <instruction>${{continue:"Continue writing the code from where the cursor is positioned.",insert:"Insert the appropriate code snippet at the cursor position.",complete:"Provide the necessary code to complete the current statement or block."}[i.completionMode]}</instruction>
9
+ <steps>
10
+ <step>Analyze the provided code and any related files thoroughly.</step>
11
+ <step>Ensure the generated code integrates seamlessly with the existing code.</step>
12
+ <step>Adhere to best practices and maintain consistent coding style.</step>
13
+ <step>Do <strong>not</strong> include the code before the cursor in your response.</step>
14
+ <step>Do <strong>not</strong> wrap your completion with markdown code syntax (\`\`\`) or inline code syntax (\`).</step>
15
+ <step>Focus on correct syntax and language-specific conventions.</step>
16
+ <step>Do <strong>not</strong> add explanations, comments, or placeholders.</step>
17
+ <step>Return <strong>only</strong> the code required at the cursor position.</step>
18
+ </steps>
19
+ </guidelines>
20
+ `,c=`
21
+ <context>
22
+ <current_file path="${t}">
23
+ <code>
24
+ ${o}${Ce}${r}
25
+ </code>
26
+ </current_file>
27
+ </context>
28
+ `,u=n?.map(({path:l,content:C})=>`
29
+ <related_file path="${l}">
30
+ <code>
31
+ ${C}
32
+ </code>
22
33
  </related_file>
23
- `.trim()).join(`
24
- `):"",dt=(t="",e)=>{let{relatedFiles:o}=e??{},n=o?at(o):"";return`
34
+ `).join(`
35
+ `)||"";return`
25
36
  <task>
26
- <instructions>
27
- ${t.trim()}
28
- </instructions>
29
- ${n}
37
+ ${p}
38
+ ${c}
39
+ ${u}
30
40
  </task>
31
- `.trim()},k=(t,e)=>({system:st(e),user:dt(t,e)});var Me="<cursor>",Oe=t=>{let{textBeforeCursor:e="",textAfterCursor:o="",context:n,editorState:{completionMode:i}}=t,r=`<code_file>
32
- ${e}${Me}${o}
33
- </code_file>`,a=`
34
- You are an AI coding assistant. Your task is to provide code completions based on the current cursor position in the code.
35
-
36
- Below is the code file with a special token '${Me}' indicating the current cursor position.
37
-
38
- ${r}
39
-
40
- Please provide the code that should be inserted at the cursor position, following these guidelines:
41
-
42
- - Carefully analyze the code context before and after the cursor to understand what code is needed.
43
- - Follow best practices and maintain a consistent coding style with the existing code.
44
- - Ensure the generated code integrates smoothly with the existing codebase.
45
- - Do **not** include any code that is before the cursor in your response.
46
- - Do **not** include any explanations, comments, or placeholders.
47
- - Avoid wrapping your completion with markdown code blocks (\`\`\` or \`).
48
- - Provide **only** the necessary code to be inserted at the cursor location.
49
-
50
- Depending on the completion mode, adjust your completion accordingly:
51
-
52
- - **Completion Mode**: ${i}
53
- ${{continue:"-- Continue writing the code from the current cursor location.",insert:"-- Insert the appropriate code snippet at the cursor point.",complete:"-- Supply the necessary code to finish the ongoing statement or block."}[i]||""}
54
-
55
- Remember to output **only** the code that should be inserted at the cursor, without any additional formatting or explanations.
56
- `.trim();return k(a,n)};var lt="<cursor>",Ae=t=>{let{textBeforeCursor:e="",textAfterCursor:o="",context:n,prompt:i,selectedText:r,selection:s,fullText:a}=t,d="";return r&&s?d=`
57
- You are a helpful assistant proficient in code editing.
58
-
59
- **Task:** ${i}
60
-
61
- **Instructions:**
62
- - Modify only the code between lines **${s.startLineNumber}** and **${s.endLineNumber}**.
63
- - Preserve all code outside the specified lines exactly as it is.
64
- - Ensure the modified code integrates seamlessly with the existing code.
65
- - Maintain the original formatting and indentation.
66
- - Do **not** include any additional text or explanations.
67
- - Return **only** the modified code between the specified lines.
68
-
69
- **Full Code Context:**
70
- \`\`\`
71
- ${a}
72
- \`\`\`
73
-
74
- **Code to Modify:**
75
- \`\`\`
76
- ${r}
77
- \`\`\`
78
- `:d=`
79
- You are a helpful assistant proficient in code editing.
80
-
81
- **Task:** ${i}
82
-
83
- **Instructions:**
84
- - Make the modifications at the cursor position indicated by **<cursor>**.
85
- - Preserve all code outside the cursor position exactly as it is.
86
- - Ensure the modified code integrates seamlessly with the existing code.
87
- - Maintain the original formatting and indentation.
88
- - Do **not** include any additional text or explanations.
89
- - Return **only** the modified code inserted at the cursor position.
90
-
91
- **Full Code Context:**
92
- \`\`\`
93
- ${a}
94
- \`\`\`
95
-
96
- **Code with Cursor Position:**
97
- \`\`\`
98
- ${e}${lt}${o}
99
- \`\`\`
100
- `,k(d.trim(),n)};var ie=class{constructor(e,o={}){if(!e)throw new Error("Please provide an API key.");this.apiKey=e,this.provider=o.provider??ce,this.model=o.model??le,this.validateInputs()}validateInputs(){if(!J.includes(this.provider))throw new Error(`Unsupported provider "${this.provider}". Please choose from: ${b(J)}. For custom models, provider specification is not needed.`);if(typeof this.model=="string"&&!z[this.provider].includes(this.model))throw new Error(`Model "${this.model}" is not supported by the "${this.provider}" provider. Supported models: ${b(z[this.provider])}`)}async complete(e){let{body:o,options:n}=e,{metadata:i}=o,{headers:r={},customPrompt:s}=n??{};return this.makeApiCall(i,s,Oe,this.processCompletionResponse.bind(this),r,this.handleCompletionError.bind(this))}async modify(e){let{body:o,options:n}=e,{metadata:i}=o,{headers:r={},customPrompt:s}=n??{};return this.makeApiCall(i,s,Ae,this.processModifyResponse.bind(this),r,this.handleModifyError.bind(this))}async makeApiCall(e,o,n,i,r={},s){let a=this.generatePrompt(e,o,n),{endpoint:d,requestBody:l,headers:c}=this.prepareRequestDetails(a);try{let m=await this.sendCompletionRequest(d,l,{...c,...r});return i(m)}catch(m){return s(m)}}generatePrompt(e,o,n){let i=n(e);return o?{...i,...o(e)}:i}prepareRequestDetails(e){let o=he(this.provider),n,i=ge(this.apiKey,this.provider);if(typeof this.model=="object"&&"config"in this.model){let r=this.model.config(this.apiKey,e);o=r.endpoint??o,n=r.body??{},i={...i,...r.headers}}else n=fe(this.model,this.provider,e);return{endpoint:o,requestBody:n,headers:i}}async sendCompletionRequest(e,o,n){return D.POST(e,o,{headers:n})}processCompletionResponse(e){return typeof this.model=="object"&&"transformResponse"in this.model?{completion:this.model.transformResponse(e).text}:{completion:ee(e,this.provider)}}processModifyResponse(e){return typeof this.model=="object"&&"transformResponse"in this.model?{modifiedText:this.model.transformResponse(e).text}:{modifiedText:ee(e,this.provider)}}handleCompletionError(e){return{error:y.error(e).message,completion:null}}handleModifyError(e){return{error:y.error(e).message,modifiedText:null}}};var re=class{constructor(){this.stateMap=new WeakMap}getOrCreateState(e){let o=this.stateMap.get(e);return o||(o={widgetState:{widgets:new Set},isSelectionActionsWidgetOpen:!1,disposables:[]},this.stateMap.set(e,o)),o}getWidgetState(e){return this.getOrCreateState(e).widgetState}setCleanup(e,o){this.getOrCreateState(e).cleanup=o}getCleanup(e){return this.getOrCreateState(e).cleanup}setDiffDecorationState(e,o){this.getOrCreateState(e).diffDecorationState=o}getDiffDecorationState(e){return this.getOrCreateState(e).diffDecorationState}disposeWidgets(e){let o=this.getWidgetState(e);o.widgets.size>0&&(o.widgets.forEach(n=>{e.removeContentWidget({getId:()=>n,getDomNode:()=>document.createElement("div"),getPosition:()=>null})}),o.widgets.clear()),this.setSelectionActionsWidgetOpen(e,!1)}disposeDiffDecorations(e){let o=this.getDiffDecorationState(e);o&&o.clear(),this.setDiffDecorationState(e,{clear:()=>{}})}setSelectionActionsWidgetOpen(e,o){o&&f.clearState(e),this.getOrCreateState(e).isSelectionActionsWidgetOpen=o}isSelectionActionsWidgetOpen(e){return this.getOrCreateState(e).isSelectionActionsWidgetOpen??!1}addDisposable(e,o){this.getOrCreateState(e).disposables.push(o)}clearState(e){this.disposeWidgets(e),this.disposeDiffDecorations(e),this.setSelectionActionsWidgetOpen(e,!1),this.getCleanup(e)?.();let o=this.getOrCreateState(e);o.disposables.forEach(n=>n.dispose()),o.disposables=[],this.stateMap.delete(e)}},p=new re;var se=class{constructor(){this.stateMap=new WeakMap}getState(e){return this.stateMap.has(e)||this.stateMap.set(e,this.getInitialState()),this.stateMap.get(e)||this.getInitialState()}setState(e,o){let n=this.getState(e);this.stateMap.set(e,{...n,...o})}clearState(e){this.getState(e).disposables.forEach(({dispose:n})=>n()),this.stateMap.delete(e)}getInitialState(){return{isAccepted:!1,isVisible:!1,isManualTrigger:!1,disposables:[]}}canShowCompletion(e){return!p.isSelectionActionsWidgetOpen(e)}addDisposable(e,o){this.getState(e).disposables.push(o)}},f=new se;var U=class U{constructor(){this.cache=[]}get(e,o){return this.cache.filter(n=>this.isValidCacheItem(n,e,o))}add(e){let o=[...this.cache.slice(-(U.MAX_CACHE_SIZE-1)),e];this.cache=o}clear(){this.cache=[]}isValidCacheItem(e,o,n){let i=n.getValueInRange(e.range);return A(o,n).startsWith(e.textBeforeCursorInLine)&&this.isPositionValid(e,o,i)}isPositionValid(e,o,n){let{range:i,completion:r}=e,{startLineNumber:s,startColumn:a,endColumn:d}=i,{lineNumber:l,column:c}=o,m=l===s&&c===a,C=r.startsWith(n)&&l===s&&c>=a-n.length&&c<=d+n.length;return m||C}};U.MAX_CACHE_SIZE=10;var $=U;var I=class t{constructor(e){this.formattedCode="";this.formattedCode=e}static create(e){return new t(e)}setCode(e){return this.formattedCode=e,this}removeInvalidLineBreaks(){return this.formattedCode=this.formattedCode.trimEnd(),this}removeMarkdownCodeSyntax(){return this.formattedCode=this.removeMarkdownCodeBlocks(this.formattedCode),this}removeMarkdownCodeBlocks(e){let o=/```[\s\S]*?```/g,n=e,i;for(;(i=o.exec(e))!==null;){let r=i[0],s=r.split(`
41
+ `};function _(e){return{system:he(e),user:fe(e)}}var te={"claude-3.5-sonnet":8192,"claude-3-opus":4096,"claude-3-haiku":4096,"claude-3-sonnet":4096};var Pe={createRequestBody:(e,t)=>{let r=e==="o1-preview"||e==="o1-mini"?[{role:"user",content:t.user}]:[{role:"system",content:t.system},{role:"user",content:t.user}];return{model:j(e),temperature:v,messages:r}},createHeaders:e=>({"Content-Type":"application/json",Authorization:`Bearer ${e}`}),parseCompletion:e=>e.choices?.length?e.choices[0].message.content:null},ye={createRequestBody:(e,t)=>({model:j(e),temperature:v,messages:[{role:"system",content:t.system},{role:"user",content:t.user}]}),createHeaders:e=>({"Content-Type":"application/json",Authorization:`Bearer ${e}`}),parseCompletion:e=>e.choices?.length?e.choices[0].message.content:null},Re={createRequestBody:(e,t)=>({model:j(e),temperature:v,system:t.system,messages:[{role:"user",content:t.user}],max_tokens:xe(e)}),createHeaders:e=>({"Content-Type":"application/json","x-api-key":e,"anthropic-version":"2023-06-01"}),parseCompletion:e=>!e.content||typeof e.content!="string"?null:e.content},V={openai:Pe,groq:ye,anthropic:Re},oe=(e,t,o)=>V[t].createRequestBody(e,o),re=(e,t)=>V[t].createHeaders(e),ne=(e,t)=>V[t].parseCompletion(e),j=e=>Y[e],ie=e=>z[e],xe=e=>te[e]||4096;var m=class m{constructor(){}static getInstance(){return m.instance}logError(t){let o,r;t instanceof Error?(o=t.message,r=t.stack):typeof t=="string"?o=t:o="An unknown error occurred";let n=`${m.RED}${m.BOLD}[MONACOPILOT ERROR] ${o}${m.RESET}`;return console.error(n),r&&console.error(`${m.RED}[MONACOPILOT ERROR] Stack trace:${m.RESET}
42
+ ${r}`),{message:o,stack:r}}warn(t){console.warn(`${m.YELLOW}${m.BOLD}[MONACOPILOT WARN] ${t}${m.RESET}`)}log(t){console.log(`${m.BOLD}[MONACOPILOT] ${t}${m.RESET}`)}};m.instance=new m,m.RED="\x1B[31m",m.YELLOW="\x1B[33m",m.RESET="\x1B[0m",m.BOLD="\x1B[1m";var U=m,g=U.getInstance();var W=class{constructor(t,o={}){if(!t)throw new Error("Please provide an API key.");this.apiKey=t,this.provider=o.provider??X,this.model=o.model??G,this.validateInputs()}validateInputs(){if(!k.includes(this.provider))throw new Error(`Unsupported provider "${this.provider}". Please choose from: ${E(k)}. For custom models, provider specification is not needed.`);if(typeof this.model=="string"&&!q[this.provider].includes(this.model))throw new Error(`Model "${this.model}" is not supported by the "${this.provider}" provider. Supported models: ${E(q[this.provider])}`)}async complete(t){let{body:o,options:r}=t,{completionMetadata:n}=o,{headers:i={},customPrompt:s}=r??{},a=this.generatePrompt(n,s),{endpoint:p,requestBody:c,headers:u}=this.prepareRequestDetails(a);try{let l=await this.sendCompletionRequest(p,c,{...u,...i});return this.processCompletionResponse(l)}catch(l){return this.handleCompletionError(l)}}generatePrompt(t,o){let r=_(t);return o?{...r,...o(t)}:r}prepareRequestDetails(t){let o=ie(this.provider),r,n=re(this.apiKey,this.provider);if(typeof this.model=="object"&&"config"in this.model){let i=this.model.config(this.apiKey,t);o=i.endpoint??o,r=i.body??{},n={...n,...i.headers}}else r=oe(this.model,this.provider,t);return{endpoint:o,requestBody:r,headers:n}}async sendCompletionRequest(t,o,r){return A.POST(t,o,{headers:r})}processCompletionResponse(t){if(typeof this.model=="object"&&"transformResponse"in this.model){let o=this.model.transformResponse(t);return"completion"in o&&g.warn("The `completion` property in `transformResponse` function is deprecated. Please use `text` instead."),{completion:o.text??o.completion}}else return{completion:ne(t,this.provider)}}handleCompletionError(t){return{error:g.logError(t).message,completion:null}}};var D=class e{constructor(t){this.formattedCompletion="";this.formattedCompletion=t}static create(t){return new e(t)}setCompletion(t){return this.formattedCompletion=t,this}removeInvalidLineBreaks(){return this.formattedCompletion=this.formattedCompletion.trimEnd(),this}removeMarkdownCodeSyntax(){return this.formattedCompletion=this.removeMarkdownCodeBlocks(this.formattedCompletion),this}removeMarkdownCodeBlocks(t){let o=/```[\s\S]*?```/g,r=t,n;for(;(n=o.exec(t))!==null;){let i=n[0],s=i.split(`
101
43
  `).slice(1,-1).join(`
102
- `);n=n.replace(r,s)}return n.trim()}removeExcessiveNewlines(){return this.formattedCode=this.formattedCode.replace(/\n{3,}/g,`
44
+ `);r=r.replace(i,s)}return r.trim()}removeExcessiveNewlines(){return this.formattedCompletion=this.formattedCompletion.replace(/\n{3,}/g,`
103
45
 
104
- `),this}build(){return this.formattedCode}};var q=class{constructor(e,o){this.cursorPos=e,this.mdl=o}shouldProvideCompletions(){return!ye(this.cursorPos,this.mdl)}};var ct="application/json",Re=async t=>{let{endpoint:e,body:o}=t,{completion:n,error:i}=await D.POST(e,o,{headers:{"Content-Type":ct},fallbackError:"Error while fetching completion item"});if(i)throw new Error(i);return{completion:n}},Pe=({pos:t,mdl:e,options:o})=>{let{context:n}=o,{maxContextLines:i}=n??{},r=pt(t,e),s=i?M(R(t,e),i,{from:"end"}):R(t,e),a=i?M(P(t,e),i):P(t,e);return{textBeforeCursor:s,textAfterCursor:a,cursorPosition:t,editorState:{completionMode:r},context:n}},pt=(t,e)=>{let o=ne(t,e),n=F(t,e);return o?"insert":n.trim()?"complete":"continue"};var De=t=>I.create(t).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),O=t=>({items:t,enableForwardStability:!0});var ae={onTyping:300,onIdle:600,onDemand:0},ut=(t,e)=>({onTyping:w(t,ae.onTyping,{shouldExecute:()=>f.canShowCompletion(e)}),onIdle:w(t,ae.onIdle,{shouldExecute:()=>f.canShowCompletion(e)}),onDemand:w(t,ae.onDemand,{shouldExecute:()=>f.canShowCompletion(e)})}),L=new $,Ct=async({mdl:t,editor:e,pos:o,token:n,isCompletionAccepted:i,onShowCompletion:r,options:s})=>{let{trigger:a="onIdle",endpoint:d,onError:l,requestHandler:c}=s;if(!new q(o,t).shouldProvideCompletions())return O([]);let m=L.get(o,t).map(C=>({insertText:C.completion,range:{...C.range,endColumn:o.column}}));if(m.length>0)return r(),O(m);if(n.isCancellationRequested||i)return O([]);try{let u=ut(c??Re,e)[a];n.onCancellationRequested(()=>{u.cancel()});let h=Pe({pos:o,mdl:t,options:s}),{completion:E}=await u({endpoint:d,body:{metadata:h}});if(E&&f.canShowCompletion(e)){let T=De(E),S=Te(o,t,E);return L.add({completion:T,range:S,textBeforeCursorInLine:A(o,t)}),r(),O([{insertText:T,range:S}])}}catch(C){if(ft(C))return O([]);l?l(C):y.error(C)}return O([])},ft=t=>typeof t=="string"?t==="Cancelled"||t==="AbortError":t instanceof Error?t.message==="Cancelled"||t.name==="AbortError":!1,Ie=Ct;var _=null,be=(t,e,o)=>{_&&_.deregister(),e.updateOptions({inlineSuggest:{enabled:!0,mode:"subwordSmart"}});try{let n=t.languages.registerInlineCompletionsProvider(o.context.currentLanguage,{provideInlineCompletions:(s,a,d,l)=>{let c=f.getState(e);if(!(!f.canShowCompletion(e)||o.trigger==="onDemand"&&!c.isManualTrigger))return Ie({mdl:s,editor:e,pos:a,token:l,isCompletionAccepted:c.isAccepted,onShowCompletion:()=>{f.setState(e,{isVisible:!0,isManualTrigger:!1})},options:o})},freeInlineCompletions:()=>{}});f.addDisposable(e,n);let i=e.onKeyDown(s=>{let a=f.getState(e),d=s.keyCode===t.KeyCode.Tab||s.keyCode===t.KeyCode.RightArrow&&s.metaKey;a.isVisible&&d?f.setState(e,{isAccepted:!0,isVisible:!1}):f.setState(e,{isAccepted:!1})});f.addDisposable(e,i);let r={deregister:()=>{L.clear(),f.clearState(e),_=null},trigger:()=>gt(e)};return _=r,r}catch(n){return o.onError?o.onError(n):y.error(n),{deregister:()=>{L.clear(),f.clearState(e),_=null},trigger:()=>{}}}},gt=t=>{f.canShowCompletion(t)&&(f.setState(t,{isManualTrigger:!0}),t.trigger("keyboard","editor.action.inlineSuggest.trigger",{}))},ht=(...t)=>(y.warning("The `registerCopilot` function is deprecated. Use `registerCompletion` instead."),be(...t));var Le="action-buttons-widget",_e="action-buttons-widget-button-key",ve="modify-widget",Y="modify-widget-close-button",H="modify-widget-prompt-container",Ne="modify-widget-prompt-textarea",v="modify-widget-prompt-submit-button",we="modify-widget-accept-button",Be="modify-widget-reject-button",Fe="modify-widget-loading-container",G="modify-widget-loading-dot",We="modify-widget-footer",ke="modify-button",$e="modify-button-key",Ue="modify-button-text",qe="Describe the modifications you want to make",Ye="modify-widget-cancel-button",He="modify-widget-cancel-button-text";var Et="application/json",Ge=async t=>{let{endpoint:e,body:o}=t,{modifiedText:n,error:i}=await D.POST(e,o,{headers:{"Content-Type":Et},fallbackError:"Error while fetching modified text"});if(i)throw new Error(i);return{modifiedText:n}},je=({pos:t,mdl:e,selection:o,prompt:n,options:i})=>{let{context:r}=i,{maxContextLines:s}=r??{},a=t?s?M(R(t,e),s,{from:"end"}):R(t,e):null,d=t?s?M(P(t,e),s):P(t,e):null;return{textBeforeCursor:a,textAfterCursor:d,cursorPosition:t,prompt:n,selectedText:o.isEmpty()?null:e.getValueInRange(o),fullText:e.getValue(),selection:o,context:r}};var Ve=t=>I.create(t).removeMarkdownCodeSyntax().removeInvalidLineBreaks().removeExcessiveNewlines().build();var Ke=async(t,e,o,n,i,r)=>{let s=t.getModel();if(!s)return;let a=s.getValueInRange(e);i.dataset.fetching="true";let d=document.createElement("button");d.className=Ye;let l=document.createElement("span");l.textContent="Cancel",l.className=He;let c=document.createElement("span");c.className=Fe;let m=document.createElement("span");m.className=G;let C=document.createElement("span");C.className=G;let u=document.createElement("span");u.className=G,c.appendChild(m),c.appendChild(C),c.appendChild(u),d.appendChild(l),d.appendChild(c),r.appendChild(d),r.insertBefore(d,r.firstChild),i.appendChild(r);let h=r.querySelector(`.${v}`);h instanceof HTMLButtonElement&&(h.disabled=!0);try{let{modifiedText:E}=await Ge({endpoint:n.endpoint,body:{metadata:je({mdl:s,pos:t.getPosition(),prompt:o,options:n,selection:e})}}),T=E?Ve(E):null;if(i.dataset.fetching="false",d.remove(),h instanceof HTMLButtonElement&&(h.disabled=!1),!T){p.disposeWidgets(t);return}let S=xe(t,a,T,e);if(!S)return;p.setDiffDecorationState(t,S),W(t,e),Tt(t,r,e,T,i)}catch(E){throw i.dataset.fetching="false",d.remove(),h instanceof HTMLButtonElement&&(h.disabled=!1),E}},Tt=(t,e,o,n,i)=>{i.querySelector(`.${H}`)?.remove(),e.querySelector(`.${v}`)?.remove(),i.querySelector(`.${Y}`)?.remove();let d=()=>{p.disposeDiffDecorations(t),p.setSelectionActionsWidgetOpen(t,!1)},l=document.createElement("button");l.className=we,l.textContent="Accept",l.onclick=()=>{d(),St(t,o,n),p.disposeWidgets(t)};let c=document.createElement("button");c.className=Be,c.textContent="Reject",c.onclick=()=>{d(),yt(t),p.disposeWidgets(t)};let m=document.createElement("div");m.className="modify-widget-controls",m.appendChild(l),m.appendChild(c),e.appendChild(m)},St=(t,e,o)=>{let n=t.getModel();n&&n.pushEditOperations([],[{range:e,text:o}],()=>null)},yt=t=>{p.disposeWidgets(t),p.disposeDiffDecorations(t)};var j=(t,e,o)=>{p.disposeWidgets(t),p.disposeDiffDecorations(t);let n=Mt(t,e,o);t.addContentWidget(n);let i=p.getWidgetState(t);i&&(i.widgets.add(n.getId()),p.setSelectionActionsWidgetOpen(t,!0));let r=p.getCleanup(t);r&&r();let s=setTimeout(()=>{let a=n.getDomNode().querySelector("textarea");a&&a.focus()},10);p.setCleanup(t,()=>clearTimeout(s))},Mt=(t,e,o)=>{let n=`modify-widget-${B()}`,i=document.createElement("div");i.className=ve;let r=document.createElement("button");r.textContent="\u2715",r.className=Y,r.onclick=()=>{p.disposeWidgets(t),p.disposeDiffDecorations(t),p.setSelectionActionsWidgetOpen(t,!1)},i.appendChild(r);let s=document.createElement("div");s.className=H;let a=document.createElement("textarea");a.className=Ne,a.placeholder=o.placeholder||qe,a.rows=2;let d=document.createElement("div");d.className=We;let l=document.createElement("button");l.textContent="Submit",l.className=v;let c=()=>{let m=a.value.trim();m&&Ke(t,e,m,o,i,d)};return l.onclick=c,s.appendChild(a),d.appendChild(l),i.appendChild(s),i.appendChild(d),a.addEventListener("keydown",m=>{m.key==="Enter"&&(m.preventDefault(),c())}),{getId:()=>n,getDomNode:()=>i,getPosition:()=>({position:e.isEmpty()?t.getPosition():e.getStartPosition(),preference:[1,2,0]})}};var Xe=(t,e,o,n)=>{let i=document.createElement("button");i.className=ke;let r=document.createElement("span");r.textContent="Modify",r.className=Ue;let s=document.createElement("span");s.textContent="\u2318K",s.className=`${$e} ${_e}`,s.setAttribute("aria-hidden","true"),i.appendChild(r),i.appendChild(s);let a=()=>{j(t,o,n)};i.addEventListener("click",a),i.setAttribute("title","Modify selected code"),i.setAttribute("aria-label","Modify selected code (Command + K)"),i.setAttribute("role","button"),e.appendChild(i)};var V=null,Ot=(t,e,o)=>{V&&V.deregister(),p.getWidgetState(e);let n=()=>{p.clearState(e),V=null};try{let i=e.onMouseUp(()=>{let a=e.getSelection();a&&!a.isEmpty()&&!p.isSelectionActionsWidgetOpen(e)&&(Je(e,a,o),p.setSelectionActionsWidgetOpen(e,!0))});p.addDisposable(e,i);let r=e.onDidChangeCursorSelection(a=>{a.source==="keyboard"&&!a.selection.isEmpty()&&!p.isSelectionActionsWidgetOpen(e)&&(Je(e,a.selection,o),p.setSelectionActionsWidgetOpen(e,!0))});p.addDisposable(e,r),e.addCommand(t.KeyMod.CtrlCmd|t.KeyCode.KeyK,()=>{let a=e.getSelection();if(a){let d=e.getModel();if(d&&!Ee(a.startLineNumber,d))return;p.setSelectionActionsWidgetOpen(e,!0),j(e,a,o.modify)}}),e.addCommand(t.KeyCode.Escape,()=>{p.disposeWidgets(e),p.disposeDiffDecorations(e),p.setSelectionActionsWidgetOpen(e,!1);let a=e.getSelection();a&&W(e,a)});let s={deregister:n};return V=s,s}catch(i){return o.onError?o.onError(i):y.error(i),{deregister:n}}},Je=(t,e,o)=>{let n=At(t,e,o);t.addContentWidget(n),p.getWidgetState(t).widgets.add(n.getId())},At=(t,e,o)=>{let n=`action-buttons-widget-${B()}`,i=document.createElement("div");return i.className=Le,o.actions.includes("modify")&&Xe(t,i,e,o.modify),{getId:()=>n,getDomNode:()=>i,getPosition:()=>({position:e.getStartPosition(),preference:[1,2,0]})}};var Rt=t=>{let{maxContextLines:e,relatedFiles:o,...n}=t,r=!!o?.length?3:2,s=e?Math.floor(e/r):void 0;return{relatedFiles:((l,c)=>!l||!c?l:l.map(({content:m,...C})=>({...C,content:M(m,c)})))(o,s),maxContextLines:s,resolvedCurrentLanguage:Pt(n.currentLanguage),...n}},Pt=t=>t==="javascript"?"Latest JavaScript (ES2024)":t;export{ie as Copilot,Rt as buildContext,be as registerCompletion,ht as registerCopilot,Ot as registerSelectionActions};
46
+ `),this}build(){return this.formattedCompletion}};var S=class{constructor(t,o){this.cursorPos=t,this.mdl=o}shouldProvideCompletions(){return!ee(this.cursorPos,this.mdl)}};var N=class N{constructor(){this.cache=[]}get(t,o){return this.cache.filter(r=>this.isValidCacheItem(r,t,o))}add(t){let o=[...this.cache.slice(-(N.MAX_CACHE_SIZE-1)),t];this.cache=o}clear(){this.cache=[]}isValidCacheItem(t,o,r){let n=r.getValueInRange(t.range);return P(o,r).startsWith(t.textBeforeCursorInLine)&&this.isPositionValid(t,o,n)}isPositionValid(t,o,r){let{range:n,completion:i}=t,{startLineNumber:s,startColumn:a,endColumn:p}=n,{lineNumber:c,column:u}=o,l=c===s&&u===a,C=i.startsWith(r)&&c===s&&u>=a-r.length&&u<=p+r.length;return l||C}};N.MAX_CACHE_SIZE=10;var w=N;var Te="application/json",se=async e=>{let{endpoint:t,body:o}=e,{completion:r,error:n}=await A.POST(t,o,{headers:{"Content-Type":Te},fallbackError:"Error while fetching completion item"});if(n)throw new Error(n);return{completion:r}},le=({pos:e,mdl:t,options:o})=>{let{filename:r,language:n,technologies:i,relatedFiles:s,maxContextLines:a}=o,p=Ee(e,t),u=!!s?.length?3:2,l=a?Math.floor(a/u):void 0,C=(x,T,F)=>{let b=x(e,t);return T?$(b,T,F):b},d=(x,T)=>!x||!T?x:x.map(({content:F,...b})=>({...b,content:$(F,T)})),h=C(J,l,{from:"end"}),f=C(Z,l),M=d(s,l);return{filename:r,language:n,technologies:i,relatedFiles:M,textBeforeCursor:h,textAfterCursor:f,cursorPosition:e,editorState:{completionMode:p}}},Ee=(e,t)=>{let o=H(e,t),r=L(e,t);return o?"insert":r.trim()?"complete":"continue"};var ae=(e,t,o)=>{if(!o)return{startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column};let r=t.getOffsetAt(e),n=t.getValue().substring(r),i=0,s=0,a=0,p=o.length,c=n.length;if(r>=t.getValue().length)return{startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column};if(c===0)return{startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column};let u=Math.min(p,c);for(let d=0;d<u&&o[d]===n[d];d++)i++;for(let d=1;d<=u;d++){let h=o.slice(-d),f=n.slice(0,d);h===f&&(s=d)}if(a=Math.max(i,s),a===0)for(let d=1;d<p;d++){let h=o.substring(d);if(n.startsWith(h)){a=p-d;break}}let l=r+a,C=t.getPositionAt(l);return{startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:C.lineNumber,endColumn:C.column}},pe=e=>D.create(e).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),y=e=>({items:e,enableForwardStability:!0});var K={onTyping:300,onIdle:600,onDemand:0},Me=e=>({onTyping:I(e,K.onTyping),onIdle:I(e,K.onIdle),onDemand:I(e,K.onDemand)}),B=new w,be=async({mdl:e,pos:t,token:o,isCompletionAccepted:r,onShowCompletion:n,options:i})=>{let{trigger:s="onIdle",endpoint:a,onError:p,requestHandler:c}=i;if(!new S(t,e).shouldProvideCompletions())return y([]);let u=B.get(t,e).map(l=>({insertText:l.completion,range:{...l.range,endColumn:t.column}}));if(u.length>0)return n(),y(u);if(o.isCancellationRequested||r)return y([]);try{let C=Me(c??se)[s];o.onCancellationRequested(()=>{C.cancel()});let d=le({pos:t,mdl:e,options:i}),{completion:h}=await C({endpoint:a,body:{completionMetadata:d}});if(h){let f=pe(h),M=ae(t,e,f);return B.add({completion:f,range:M,textBeforeCursorInLine:P(t,e)}),n(),y([{insertText:f,range:M}])}}catch(l){p?p(l):ve(l)||g.logError(l)}return y([])},ve=e=>typeof e=="string"?e==="Cancelled"||e==="AbortError":e instanceof Error?e.message==="Cancelled"||e.name==="AbortError":!1,ce=be;var R=new WeakMap,O=null,de=(e,t,o)=>{O&&O.deregister();let r=[],n={isCompletionAccepted:!1,isCompletionVisible:!1,isManualTrigger:!1};R.set(t,n),t.updateOptions({inlineSuggest:{enabled:!0,mode:"subwordSmart"}});try{let i=e.languages.registerInlineCompletionsProvider(o.language,{provideInlineCompletions:(p,c,u,l)=>{let C=R.get(t);if(!(!C||o.trigger==="onDemand"&&!C.isManualTrigger))return ce({mdl:p,pos:c,token:l,isCompletionAccepted:C.isCompletionAccepted,onShowCompletion:()=>{C.isCompletionVisible=!0,C.isManualTrigger=!1},options:o})},freeInlineCompletions:()=>{}});r.push(i);let s=t.onKeyDown(p=>{let c=R.get(t);if(!c)return;let u=p.keyCode===e.KeyCode.Tab||p.keyCode===e.KeyCode.RightArrow&&p.metaKey;c.isCompletionVisible&&u?(c.isCompletionAccepted=!0,c.isCompletionVisible=!1):c.isCompletionAccepted=!1});r.push(s);let a={deregister:()=>{r.forEach(p=>p.dispose()),B.clear(),R.delete(t),O=null},trigger:()=>Ie(t)};return O=a,a}catch(i){return o.onError?o.onError(i):g.logError(i),{deregister:()=>{r.forEach(s=>s.dispose()),R.delete(t),O=null},trigger:()=>{}}}},Ie=e=>{let t=R.get(e);if(!t){g.warn("Completion is not registered. Use `registerCompletion` to register completion first.");return}t.isManualTrigger=!0,e.trigger("keyboard","editor.action.inlineSuggest.trigger",{})},Le=(...e)=>(g.warn("The `registerCopilot` function is deprecated. Use `registerCompletion` instead."),de(...e));export{W as Copilot,de as registerCompletion,Le as registerCopilot};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "monacopilot",
3
- "version": "0.11.7",
3
+ "version": "0.11.8",
4
4
  "description": "AI auto-completion plugin for Monaco Editor",
5
5
  "main": "./build/index.js",
6
6
  "module": "./build/index.mjs",