monacopilot 0.15.9 → 0.15.10

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.js CHANGED
@@ -1,54 +1,63 @@
1
1
  'use strict';
2
2
 
3
- var V=["groq","openai","anthropic","google"],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-20241022","claude-3-haiku":"claude-3-haiku-20240307","claude-3-5-haiku":"claude-3-5-haiku-20241022","o1-mini":"o1-mini","gemini-1.5-flash-8b":"gemini-1.5-flash-8b","gemini-1.5-flash":"gemini-1.5-flash","gemini-1.5-pro":"gemini-1.5-pro"},j={groq:["llama-3-70b"],openai:["gpt-4o","gpt-4o-mini","o1-mini"],anthropic:["claude-3-5-sonnet","claude-3-haiku","claude-3-5-haiku"],google:["gemini-1.5-flash-8b","gemini-1.5-pro","gemini-1.5-flash"]},X="anthropic",J="claude-3-5-haiku",M={groq:"https://api.groq.com/openai/v1/chat/completions",openai:"https://api.openai.com/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",google:"https://generativelanguage.googleapis.com/v1beta/models"},A=.1;var v=t=>!t||t.length===0?"":t.length===1?t[0]:`${t.slice(0,-1).join(", ")} and ${t.slice(-1)}`,K=(t,e,o={})=>{if(e<=0)return "";let n=t.split(`
3
+ var V=["groq","openai","anthropic","google"],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-20241022","claude-3-haiku":"claude-3-haiku-20240307","claude-3-5-haiku":"claude-3-5-haiku-20241022","o1-mini":"o1-mini","gemini-1.5-flash-8b":"gemini-1.5-flash-8b","gemini-1.5-flash":"gemini-1.5-flash","gemini-1.5-pro":"gemini-1.5-pro"},j={groq:["llama-3-70b"],openai:["gpt-4o","gpt-4o-mini","o1-mini"],anthropic:["claude-3-5-sonnet","claude-3-haiku","claude-3-5-haiku"],google:["gemini-1.5-flash-8b","gemini-1.5-pro","gemini-1.5-flash"]},X="anthropic",J="claude-3-5-haiku",M={groq:"https://api.groq.com/openai/v1/chat/completions",openai:"https://api.openai.com/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",google:"https://generativelanguage.googleapis.com/v1beta/models"},A=.1;var v=t=>!t||t.length===0?"":t.length===1?t[0]:`${t.slice(0,-1).join(", ")} and ${t.slice(-1)}`,U=(t,e,o={})=>{if(e<=0)return "";let n=t.split(`
4
4
  `),r=n.length;if(e>=r)return t;if(o.from==="end"){let i=n.slice(-e);return i.every(l=>l==="")?`
5
5
  `.repeat(e):i.join(`
6
6
  `)}let s=n.slice(0,e);return s.every(i=>i==="")?`
7
7
  `.repeat(e):s.join(`
8
8
  `)};var Z=(t,e)=>e.getLineContent(t.lineNumber)[t.column-1],L=(t,e)=>e.getLineContent(t.lineNumber).slice(t.column-1),Q=(t,e)=>e.getLineContent(t.lineNumber).slice(0,t.column-1),T=(t,e)=>e.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:t.lineNumber,endColumn:t.column}),ee=(t,e)=>e.getValueInRange({startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:e.getLineCount(),endColumn:e.getLineMaxColumn(e.getLineCount())});var te=async(t,e,o={})=>{let n=o.timeout??3e4,r=AbortSignal.timeout(n),s=o.signal?AbortSignal.any([r,o.signal]):r,i={"Content-Type":"application/json",...o.headers},l=e==="POST"&&o.body?JSON.stringify(o.body):void 0,a=await fetch(t,{method:e,headers:i,body:l,signal:s});if(!a.ok){let d=await a.json().catch(()=>null),m=d?`
9
- ${JSON.stringify(d,null,2)}`:"",p=o.fallbackError||"Network request failed";throw new Error(`${p} (${a.status})${m}`)}return a.json()},he=(t,e)=>te(t,"GET",e),fe=(t,e,o)=>te(t,"POST",{...o,body:e}),w={GET:he,POST:fe};var oe=(t,e)=>{let o=L(t,e).trim(),n=Q(t,e).trim();return t.column<=3&&(o!==""||n!=="")};var D=(t,e)=>{let o=null,n=null,r=(...s)=>new Promise((i,l)=>{o&&(clearTimeout(o),n&&n("Cancelled")),n=l,o=setTimeout(()=>{i(t(...s)),n=null;},e);});return r.cancel=()=>{o&&(clearTimeout(o),n&&n("Cancelled"),o=null,n=null);},r};var ye=t=>t?.length?t.map(({path:e,content:o})=>`
9
+ ${JSON.stringify(d,null,2)}`:"",p=o.fallbackError||"Network request failed";throw new Error(`${p} (${a.status})${m}`)}return a.json()},he=(t,e)=>te(t,"GET",e),fe=(t,e,o)=>te(t,"POST",{...o,body:e}),D={GET:he,POST:fe};var oe=(t,e)=>{let o=L(t,e).trim(),n=Q(t,e).trim();return t.column<=3&&(o!==""||n!=="")};var w=(t,e)=>{let o=null,n=null,r=(...s)=>new Promise((i,l)=>{o&&(clearTimeout(o),n&&n("Cancelled")),n=l,o=setTimeout(()=>{i(t(...s)),n=null;},e);});return r.cancel=()=>{o&&(clearTimeout(o),n&&n("Cancelled"),o=null,n=null);},r};var ye=t=>!t||t.length===0?"":t.map(({path:e,content:o})=>`
10
10
  <related_file>
11
- <path>${e}</path>
12
- <content>
11
+ <filePath>${e}</filePath>
12
+ <fileContent>
13
13
  \`\`\`
14
14
  ${o}
15
15
  \`\`\`
16
- </content>
16
+ </fileContent>
17
17
  </related_file>`.trim()).join(`
18
18
 
19
- `):"",ne=t=>{let{technologies:e=[],filename:o,relatedFiles:n,language:r,textBeforeCursor:s="",textAfterCursor:i="",editorState:{completionMode:l}}=t,a=v([r,...e].filter(p=>typeof p=="string"&&!!p)),d=`You are an expert ${a?`${a} `:""}AI code completion assistant. Generate precise, contextually-aware code completions by:
20
-
21
- 1. Analyzing code context, patterns and conventions
22
- 2. Determining appropriate completions based on mode and context
23
- 3. Ensuring proper formatting and style consistency
24
- 4. Respect the monaco editor's inline suggest subwordSmart mode
25
-
26
- Context:
27
- - File: ${o||"current file"}
28
- - Language: ${r||"detected from context"}
29
- - Mode: ${l}
30
- - Technologies: ${a||"inferred from context"}
31
-
32
- Guidelines:
33
- - Maintain consistent style and patterns
34
- - Consider related files and context
35
- - Follow mode-specific behavior (${l}):
36
- ${l==="continue"?"- Continue code naturally from cursor":l==="insert"?"- Insert precisely between segments":"- Complete current code block"}`,m=`Context:
37
- 1. Related Files:
19
+ `),ne=t=>{let{technologies:e=[],filename:o,relatedFiles:n,language:r,textBeforeCursor:s="",textAfterCursor:i="",editorState:{completionMode:l}}=t,a=v([r,...e].filter(p=>typeof p=="string"&&!!p)),d=`
20
+ Take your time to reason as an exceptional${a?" "+a:""} code-generating assistant. You must produce solutions that are:
21
+
22
+ 1. Scrutinized carefully for syntax, semantics, and relevancy.
23
+ 2. Perfectly aligned with the prescribed completion mode and formatting norms.
24
+ 3. Free from logical or contextual slip-ups in the final result.
25
+
26
+ Contextual Data:
27
+ - Active File: ${o||"Untitled"}
28
+ - Main Language: ${r||"Undetermined"}
29
+ - Mode of Completion: ${l}
30
+ - Detected Technologies: ${a||"None"}
31
+
32
+ Execution Directives:
33
+ - Insert the code snippet exactly at the specified cursor mark, omitting any superfluous commentary.
34
+ - If other files are relevant, incorporate details from them cautiously.
35
+ - Respect the completion mode rules for ${l}:
36
+ ${l==="continue"?"- Expand from the cursor, upholding continuity in the surrounding code.":l==="insert"?`- Place the snippet precisely at the cursor location (marked by <cursor>).
37
+ - Only output the exact code to be inserted, without surrounding code.
38
+ - Example:
39
+ Input: const num = Math.random(); console.log(<cursor>);
40
+ Correct: num
41
+ Incorrect: \`num\` or console.log(num)`:"- Extend the existing code flow without deviating from its logic."}
42
+ `,m=`
43
+ Below is all the context you have:
44
+
45
+ 1. Related Files in Workspace:
38
46
  ${ye(n)}
39
47
 
40
- 2. Code State:
48
+ 2. Existing Source with Cursor:
41
49
  \`\`\`
42
50
  ${s}<cursor>${i}
43
51
  \`\`\`
44
52
 
45
- Generate appropriate code completion at <cursor> position (Output only code without any comments or explanations):`;return {system:d,user:m}};var re={"claude-3-5-sonnet":8192,"claude-3-5-haiku":8192,"claude-3-haiku":4096};var Pe={createEndpoint:()=>M.openai,createRequestBody:(t,e)=>{let o=t==="o1-mini";return {model:B(t),...!o&&{temperature:A},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},Re={createEndpoint:()=>M.groq,createRequestBody:(t,e)=>({model:B(t),temperature:A,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},xe={createEndpoint:()=>M.anthropic,createRequestBody:(t,e)=>({model:B(t),temperature:A,system:e.system,messages:[{role:"user",content:e.user}],max_tokens:re[t]}),createHeaders:t=>({"Content-Type":"application/json","x-api-key":t,"anthropic-version":"2023-06-01"}),parseCompletion:t=>{if(!t.content||!Array.isArray(t.content)||!t.content.length)return null;let e=t.content[0];return !e||typeof e!="object"?null:"text"in e&&typeof e.text=="string"?e.text:null}},Te={createEndpoint:(t,e)=>`${M.google}/${t}:generateContent?key=${e}`,createRequestBody:(t,e)=>({model:B(t),system_instruction:{parts:{text:e.system}},contents:[{parts:{text:e.user}}]}),createHeaders:()=>({"Content-Type":"application/json"}),parseCompletion:t=>{if(!t.candidates?.length||!t.candidates[0]?.content||!t.candidates[0].content?.parts?.length)return null;let e=t.candidates[0].content;return "text"in e.parts[0]&&typeof e.parts[0].text=="string"?e.parts[0].text:null}},S={openai:Pe,groq:Re,anthropic:xe,google:Te},ie=(t,e,o)=>S[o].createEndpoint(t,e),se=(t,e,o)=>S[e].createRequestBody(t,o),ae=(t,e)=>S[e].createHeaders(t),le=(t,e)=>S[e].parseCompletion(t),B=t=>Y[t];var Oe="\x1B[91m",pe="\x1B[93m",U="\x1B[0m",z="\x1B[1m",O=t=>{let e;t instanceof Error?e=t.message:typeof t=="string"?e=t:e="An unknown error occurred";let o=`${Oe}${z}[MONACOPILOT ERROR] ${e}${U}`;return console.error(o),{message:e}},ce=t=>{console.warn(`${pe}${z}[MONACOPILOT WARN] ${t}${U}`);};var F=(t,e,o)=>console.warn(`${pe}${z}[MONACOPILOT DEPRECATED] "${t}" is deprecated${o?` in ${o}`:""}. Please use "${e}" instead. It will be removed in a future version.${U}`);var W=class{constructor(e,o={}){if(!e)throw new Error("Please provide an API key.");this.apiKey=e,this.provider=o.provider??X,this.model=o.model??J,this.validateInputs();}validateInputs(){if(!V.includes(this.provider))throw new Error(`Unsupported provider "${this.provider}". Please choose from: ${v(V)}. For custom models, provider specification is not needed.`);if(typeof this.model=="string"&&!j[this.provider].includes(this.model))throw new Error(`Model "${this.model}" is not supported by the "${this.provider}" provider. Supported models: ${v(j[this.provider])}`)}async complete(e){let{body:o,options:n}=e,{completionMetadata:r}=o,{headers:s={},customPrompt:i}=n??{},l=this.generatePrompt(r,i),{endpoint:a,requestBody:d,headers:m}=this.prepareRequestDetails(l);try{let p=await this.sendCompletionRequest(a,d,{...m,...s});return this.processCompletionResponse(p)}catch(p){return this.handleCompletionError(p)}}generatePrompt(e,o){let n=ne(e);return o?{...n,...o(e)}:n}prepareRequestDetails(e){let o=ie(this.model,this.apiKey,this.provider),n,r=ae(this.apiKey,this.provider);if(typeof this.model=="object"&&"config"in this.model){let s=this.model.config(this.apiKey,e);o=s.endpoint??o,n=s.body??{},r={...r,...s.headers};}else n=se(this.model,this.provider,e);return {endpoint:o,requestBody:n,headers:r}}async sendCompletionRequest(e,o,n){return w.POST(e,o,{headers:n})}processCompletionResponse(e){if(typeof this.model=="object"&&"transformResponse"in this.model){let o=this.model.transformResponse(e);return "completion"in o&&F("completion","text","Copilot.options.model.transformResponse"),{completion:o.text??o.completion??null,raw:e}}else return {completion:le(e,this.provider),raw:e}}handleCompletionError(e){return {error:O(e).message,completion:null}}};var N=class t{constructor(e){this.formattedCompletion="";this.formattedCompletion=e;}static create(e){return new t(e)}setCompletion(e){return this.formattedCompletion=e,this}removeInvalidLineBreaks(){return this.formattedCompletion=this.formattedCompletion.trimEnd(),this}removeMarkdownCodeSyntax(){return this.formattedCompletion=this.removeMarkdownCodeBlocks(this.formattedCompletion),this}removeMarkdownCodeBlocks(e){let o=/```[\s\S]*?```/g,n=e,r;for(;(r=o.exec(e))!==null;){let s=r[0],i=s.split(`
53
+ Please craft a minimal yet complete snippet to fill in at <cursor>. Double-check correctness and ensure no syntactic or semantic flaws. Provide only the snippet as final output\u2014no added explanations.
54
+ `;return {system:d,user:m}};var re={"claude-3-5-sonnet":8192,"claude-3-5-haiku":8192,"claude-3-haiku":4096};var Pe={createEndpoint:()=>M.openai,createRequestBody:(t,e)=>{let o=t==="o1-mini";return {model:B(t),...!o&&{temperature:A},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},Re={createEndpoint:()=>M.groq,createRequestBody:(t,e)=>({model:B(t),temperature:A,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},xe={createEndpoint:()=>M.anthropic,createRequestBody:(t,e)=>({model:B(t),temperature:A,system:e.system,messages:[{role:"user",content:e.user}],max_tokens:re[t]}),createHeaders:t=>({"Content-Type":"application/json","x-api-key":t,"anthropic-version":"2023-06-01"}),parseCompletion:t=>{if(!t.content||!Array.isArray(t.content)||!t.content.length)return null;let e=t.content[0];return !e||typeof e!="object"?null:"text"in e&&typeof e.text=="string"?e.text:null}},Te={createEndpoint:(t,e)=>`${M.google}/${t}:generateContent?key=${e}`,createRequestBody:(t,e)=>({model:B(t),system_instruction:{parts:{text:e.system}},contents:[{parts:{text:e.user}}]}),createHeaders:()=>({"Content-Type":"application/json"}),parseCompletion:t=>{if(!t.candidates?.length||!t.candidates[0]?.content||!t.candidates[0].content?.parts?.length)return null;let e=t.candidates[0].content;return "text"in e.parts[0]&&typeof e.parts[0].text=="string"?e.parts[0].text:null}},S={openai:Pe,groq:Re,anthropic:xe,google:Te},ie=(t,e,o)=>S[o].createEndpoint(t,e),se=(t,e,o)=>S[e].createRequestBody(t,o),ae=(t,e)=>S[e].createHeaders(t),le=(t,e)=>S[e].parseCompletion(t),B=t=>Y[t];var Ee="\x1B[91m",pe="\x1B[93m",K="\x1B[0m",W="\x1B[1m",E=t=>{let e;t instanceof Error?e=t.message:typeof t=="string"?e=t:e="An unknown error occurred";let o=`${Ee}${W}[MONACOPILOT ERROR] ${e}${K}`;return console.error(o),{message:e}},ce=t=>{console.warn(`${pe}${W}[MONACOPILOT WARN] ${t}${K}`);};var F=(t,e,o)=>console.warn(`${pe}${W}[MONACOPILOT DEPRECATED] "${t}" is deprecated${o?` in ${o}`:""}. Please use "${e}" instead. It will be removed in a future version.${K}`);var z=class{constructor(e,o={}){if(!e)throw new Error("Please provide an API key.");this.apiKey=e,this.provider=o.provider??X,this.model=o.model??J,this.validateInputs();}validateInputs(){if(!V.includes(this.provider))throw new Error(`Unsupported provider "${this.provider}". Please choose from: ${v(V)}. For custom models, provider specification is not needed.`);if(typeof this.model=="string"&&!j[this.provider].includes(this.model))throw new Error(`Model "${this.model}" is not supported by the "${this.provider}" provider. Supported models: ${v(j[this.provider])}`)}async complete(e){let{body:o,options:n}=e,{completionMetadata:r}=o,{headers:s={},customPrompt:i}=n??{},l=this.generatePrompt(r,i),{endpoint:a,requestBody:d,headers:m}=this.prepareRequestDetails(l);try{let p=await this.sendCompletionRequest(a,d,{...m,...s});return this.processCompletionResponse(p)}catch(p){return this.handleCompletionError(p)}}generatePrompt(e,o){let n=ne(e);return o?{...n,...o(e)}:n}prepareRequestDetails(e){let o=ie(this.model,this.apiKey,this.provider),n,r=ae(this.apiKey,this.provider);if(typeof this.model=="object"&&"config"in this.model){let s=this.model.config(this.apiKey,e);o=s.endpoint??o,n=s.body??{},r={...r,...s.headers};}else n=se(this.model,this.provider,e);return {endpoint:o,requestBody:n,headers:r}}async sendCompletionRequest(e,o,n){return D.POST(e,o,{headers:n})}processCompletionResponse(e){if(typeof this.model=="object"&&"transformResponse"in this.model){let o=this.model.transformResponse(e);return "completion"in o&&F("completion","text","Copilot.options.model.transformResponse"),{completion:o.text??o.completion??null,raw:e}}else return {completion:le(e,this.provider),raw:e}}handleCompletionError(e){return {error:E(e).message,completion:null}}};var N=class t{constructor(e){this.formattedCompletion="";this.formattedCompletion=e;}static create(e){return new t(e)}setCompletion(e){return this.formattedCompletion=e,this}removeInvalidLineBreaks(){return this.formattedCompletion=this.formattedCompletion.trimEnd(),this}removeMarkdownCodeSyntax(){return this.formattedCompletion=this.removeMarkdownCodeBlocks(this.formattedCompletion),this}removeMarkdownCodeBlocks(e){let o=/```[\s\S]*?```/g,n=e,r;for(;(r=o.exec(e))!==null;){let s=r[0],i=s.split(`
46
55
  `).slice(1,-1).join(`
47
56
  `);n=n.replace(s,i);}return n.trim()}removeExcessiveNewlines(){return this.formattedCompletion=this.formattedCompletion.replace(/\n{3,}/g,`
48
57
 
49
- `),this}build(){return this.formattedCompletion}};var q=class{constructor(e,o){this.cursorPos=e,this.mdl=o;}shouldProvideCompletions(){return !oe(this.cursorPos,this.mdl)}};var k=class{constructor(e){this.capacity=e;this.head=0;this.tail=0;this.size=0;this.buffer=new Array(e);}enqueue(e){let o;return this.size===this.capacity&&(o=this.dequeue()),this.buffer[this.tail]=e,this.tail=(this.tail+1)%this.capacity,this.size++,o}dequeue(){if(this.size===0)return;let e=this.buffer[this.head];return this.buffer[this.head]=void 0,this.head=(this.head+1)%this.capacity,this.size--,e}getAll(){return this.buffer.filter(e=>e!==void 0)}clear(){this.buffer=new Array(this.capacity),this.head=0,this.tail=0,this.size=0;}getSize(){return this.size}isEmpty(){return this.size===0}isFull(){return this.size===this.capacity}};var y=class y{constructor(){this.cache=new k(y.MAX_CACHE_SIZE);}get(e,o){return this.cache.getAll().filter(n=>this.isValidCacheItem(n,e,o))}add(e){this.cache.enqueue(e);}clear(){this.cache.clear();}isValidCacheItem(e,o,n){let r=n.getValueInRange(e.range);return T(o,n).startsWith(e.textBeforeCursor)&&this.isPositionValid(e,o,r)}isPositionValid(e,o,n){let{range:r,completion:s}=e,{startLineNumber:i,startColumn:l,endLineNumber:a,endColumn:d}=r,{lineNumber:m,column:p}=o,u=m===i&&p===l;if(i===a)return u||s.startsWith(n)&&m===i&&p>=l-y.LOOK_AROUND&&p<=d+y.LOOK_AROUND;let C=s.startsWith(n)&&m>=i&&m<=a&&(m===i&&p>=l-y.LOOK_AROUND||m===a&&p<=d+y.LOOK_AROUND||m>i&&m<a);return u||C}};y.MAX_CACHE_SIZE=10,y.LOOK_AROUND=10;var _=y;var $=class{constructor(e){this.monaco=e;}computeInsertionRange(e,o,n){if(!o)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let r=n.getOffsetAt(e),s=n.getValue().substring(0,r),i=n.getValue().substring(r),l=0,a=0,d=0,m=0,p=o.length,u=s.length,C=i.length;if(r>=n.getValue().length)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);if(C===0)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let E=Math.min(p,u);for(let c=1;c<=E;c++){let x=o.substring(0,c),ge=s.slice(-c);x===ge&&(m=c);}let P=Math.min(p,C);for(let c=0;c<P&&o[c]===i[c];c++)l++;for(let c=1;c<=P;c++)o.slice(-c)===i.slice(0,c)&&(a=c);if(d=Math.max(l,a),d===0){for(let c=1;c<p;c++)if(i.startsWith(o.substring(c))){d=p-c;break}}let f=m>0?n.getPositionAt(r-m):e,g=r+d,h=n.getPositionAt(g);return new this.monaco.Range(f.lineNumber,f.column,h.lineNumber,h.column)}computeCacheRange(e,o){let n=e.lineNumber,r=e.column,s=o.split(`
50
- `),i=s.length-1,l=n+i,a=i===0?r+s[0].length:s[i].length+1;return new this.monaco.Range(n,r,l,a)}};var be="application/json",de=async t=>{let{endpoint:e,body:o}=t,{completion:n,error:r}=await w.POST(e,o,{headers:{"Content-Type":be},fallbackError:"Error while fetching completion item"});if(r)throw new Error(r);return {completion:n}},me=({pos:t,mdl:e,options:o})=>{let{filename:n,language:r,technologies:s,relatedFiles:i,maxContextLines:l}=o,a=Ee(t,e),m=!!i?.length?3:2,p=l?Math.floor(l/m):void 0,u=(g,h,c)=>{let x=g(t,e);return h?K(x,h,c):x},C=(g,h)=>!g||!h?g:g.map(({content:c,...x})=>({...x,content:K(c,h)})),E=u(T,p,{from:"end"}),P=u(ee,p),f=C(i,p);return {filename:n,language:r,technologies:s,relatedFiles:f,textBeforeCursor:E,textAfterCursor:P,cursorPosition:t,editorState:{completionMode:a}}},Ee=(t,e)=>{let o=Z(t,e),n=L(t,e);return o?"insert":n.trim()?"complete":"continue"};var R=t=>({items:t,enableForwardStability:!0,suppressSuggestions:!0});var G={onTyping:300,onIdle:600,onDemand:0},ve=t=>({onTyping:D(t,G.onTyping),onIdle:D(t,G.onIdle),onDemand:D(t,G.onDemand)}),H=new _,Ie=async({monaco:t,mdl:e,pos:o,token:n,isCompletionAccepted:r,onShowCompletion:s,options:i})=>{let{trigger:l="onIdle",endpoint:a,enableCaching:d=!0,onError:m,requestHandler:p}=i;if(!new q(o,e).shouldProvideCompletions())return R([]);if(d){let u=H.get(o,e).map(C=>({insertText:C.completion,range:C.range}));if(u.length>0)return s(),R(u)}if(n.isCancellationRequested||r)return R([]);try{let C=ve(p??de)[l];n.onCancellationRequested(()=>{C.cancel();});let E=me({pos:o,mdl:e,options:i}),{completion:P}=await C({endpoint:a,body:{completionMetadata:E}});if(P){let f=N.create(P).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),g=new $(t),h=g.computeInsertionRange(o,f,e),c=g.computeCacheRange(o,f);return d&&H.add({completion:f,range:c,textBeforeCursor:T(o,e)}),s(),R([{insertText:f,range:h}])}}catch(u){if(Ae(u))return R([]);m?m(u):O(u);}return R([])},Ae=t=>typeof t=="string"?t==="Cancelled"||t==="AbortError":t instanceof Error?t.message==="Cancelled"||t.name==="AbortError":!1,ue=Ie;var b=new WeakMap,I=null,Ce=(t,e,o)=>{I&&I.deregister();let n=[],r={isCompletionAccepted:!1,isCompletionVisible:!1,isManualTrigger:!1};b.set(e,r),e.updateOptions({inlineSuggest:{enabled:!0,mode:"subwordSmart"}});try{let s=t.languages.registerInlineCompletionsProvider(o.language,{provideInlineCompletions:(a,d,m,p)=>{let u=b.get(e);if(!(!u||o.trigger==="onDemand"&&!u.isManualTrigger))return ue({monaco:t,mdl:a,pos:d,token:p,isCompletionAccepted:u.isCompletionAccepted,onShowCompletion:()=>{u.isCompletionVisible=!0,u.isManualTrigger=!1;},options:o})},freeInlineCompletions:()=>{}});n.push(s);let i=e.onKeyDown(a=>{let d=b.get(e);if(!d)return;let m=a.keyCode===t.KeyCode.Tab||a.keyCode===t.KeyCode.RightArrow&&a.metaKey;d.isCompletionVisible&&m?(d.isCompletionAccepted=!0,d.isCompletionVisible=!1):d.isCompletionAccepted=!1;});n.push(i);let l={deregister:()=>{n.forEach(a=>a.dispose()),H.clear(),b.delete(e),I=null;},trigger:()=>Le(e)};return I=l,l}catch(s){return o.onError?o.onError(s):O(s),{deregister:()=>{n.forEach(i=>i.dispose()),b.delete(e),I=null;},trigger:()=>{}}}},Le=t=>{let e=b.get(t);if(!e){ce("Completion is not registered. Use `registerCompletion` to register completion first.");return}e.isManualTrigger=!0,t.trigger("keyboard","editor.action.inlineSuggest.trigger",{});},we=(...t)=>(F("registerCopilot","registerCompletion"),Ce(...t));
58
+ `),this}build(){return this.formattedCompletion}};var k=class{constructor(e,o){this.cursorPos=e,this.mdl=o;}shouldProvideCompletions(){return !oe(this.cursorPos,this.mdl)}};var q=class{constructor(e){this.capacity=e;this.head=0;this.tail=0;this.size=0;this.buffer=new Array(e);}enqueue(e){let o;return this.size===this.capacity&&(o=this.dequeue()),this.buffer[this.tail]=e,this.tail=(this.tail+1)%this.capacity,this.size++,o}dequeue(){if(this.size===0)return;let e=this.buffer[this.head];return this.buffer[this.head]=void 0,this.head=(this.head+1)%this.capacity,this.size--,e}getAll(){return this.buffer.filter(e=>e!==void 0)}clear(){this.buffer=new Array(this.capacity),this.head=0,this.tail=0,this.size=0;}getSize(){return this.size}isEmpty(){return this.size===0}isFull(){return this.size===this.capacity}};var y=class y{constructor(){this.cache=new q(y.MAX_CACHE_SIZE);}get(e,o){return this.cache.getAll().filter(n=>this.isValidCacheItem(n,e,o))}add(e){this.cache.enqueue(e);}clear(){this.cache.clear();}isValidCacheItem(e,o,n){let r=n.getValueInRange(e.range);return T(o,n).startsWith(e.textBeforeCursor)&&this.isPositionValid(e,o,r)}isPositionValid(e,o,n){let{range:r,completion:s}=e,{startLineNumber:i,startColumn:l,endLineNumber:a,endColumn:d}=r,{lineNumber:m,column:p}=o,u=m===i&&p===l;if(i===a)return u||s.startsWith(n)&&m===i&&p>=l-y.LOOK_AROUND&&p<=d+y.LOOK_AROUND;let C=s.startsWith(n)&&m>=i&&m<=a&&(m===i&&p>=l-y.LOOK_AROUND||m===a&&p<=d+y.LOOK_AROUND||m>i&&m<a);return u||C}};y.MAX_CACHE_SIZE=10,y.LOOK_AROUND=10;var _=y;var $=class{constructor(e){this.monaco=e;}computeInsertionRange(e,o,n){if(!o)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let r=n.getOffsetAt(e),s=n.getValue().substring(0,r),i=n.getValue().substring(r),l=0,a=0,d=0,m=0,p=o.length,u=s.length,C=i.length;if(r>=n.getValue().length)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);if(C===0)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let b=Math.min(p,u);for(let c=1;c<=b;c++){let x=o.substring(0,c),ge=s.slice(-c);x===ge&&(m=c);}let P=Math.min(p,C);for(let c=0;c<P&&o[c]===i[c];c++)l++;for(let c=1;c<=P;c++)o.slice(-c)===i.slice(0,c)&&(a=c);if(d=Math.max(l,a),d===0){for(let c=1;c<p;c++)if(i.startsWith(o.substring(c))){d=p-c;break}}let f=m>0?n.getPositionAt(r-m):e,g=r+d,h=n.getPositionAt(g);return new this.monaco.Range(f.lineNumber,f.column,h.lineNumber,h.column)}computeCacheRange(e,o){let n=e.lineNumber,r=e.column,s=o.split(`
59
+ `),i=s.length-1,l=n+i,a=i===0?r+s[0].length:s[i].length+1;return new this.monaco.Range(n,r,l,a)}};var Oe="application/json",de=async t=>{let{endpoint:e,body:o}=t,{completion:n,error:r}=await D.POST(e,o,{headers:{"Content-Type":Oe},fallbackError:"Error while fetching completion item"});if(r)throw new Error(r);return {completion:n}},me=({pos:t,mdl:e,options:o})=>{let{filename:n,language:r,technologies:s,relatedFiles:i,maxContextLines:l}=o,a=be(t,e),m=!!i?.length?3:2,p=l?Math.floor(l/m):void 0,u=(g,h,c)=>{let x=g(t,e);return h?U(x,h,c):x},C=(g,h)=>!g||!h?g:g.map(({content:c,...x})=>({...x,content:U(c,h)})),b=u(T,p,{from:"end"}),P=u(ee,p),f=C(i,p);return {filename:n,language:r,technologies:s,relatedFiles:f,textBeforeCursor:b,textAfterCursor:P,cursorPosition:t,editorState:{completionMode:a}}},be=(t,e)=>{let o=Z(t,e),n=L(t,e);return o?"insert":n.trim()?"complete":"continue"};var R=t=>({items:t,enableForwardStability:!0,suppressSuggestions:!0});var G={onTyping:300,onIdle:600,onDemand:0},ve=t=>({onTyping:w(t,G.onTyping),onIdle:w(t,G.onIdle),onDemand:w(t,G.onDemand)}),H=new _,Ie=async({monaco:t,mdl:e,pos:o,token:n,isCompletionAccepted:r,onShowCompletion:s,options:i})=>{let{trigger:l="onIdle",endpoint:a,enableCaching:d=!0,onError:m,requestHandler:p}=i;if(!new k(o,e).shouldProvideCompletions())return R([]);if(d){let u=H.get(o,e).map(C=>({insertText:C.completion,range:C.range}));if(u.length>0)return s(),R(u)}if(n.isCancellationRequested||r)return R([]);try{let C=ve(p??de)[l];n.onCancellationRequested(()=>{C.cancel();});let b=me({pos:o,mdl:e,options:i}),{completion:P}=await C({endpoint:a,body:{completionMetadata:b}});if(P){let f=N.create(P).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),g=new $(t),h=g.computeInsertionRange(o,f,e),c=g.computeCacheRange(o,f);return d&&H.add({completion:f,range:c,textBeforeCursor:T(o,e)}),s(),R([{insertText:f,range:h}])}}catch(u){if(Ae(u))return R([]);m?m(u):E(u);}return R([])},Ae=t=>typeof t=="string"?t==="Cancelled"||t==="AbortError":t instanceof Error?t.message==="Cancelled"||t.name==="AbortError":!1,ue=Ie;var O=new WeakMap,I=null,Ce=(t,e,o)=>{I&&I.deregister();let n=[],r={isCompletionAccepted:!1,isCompletionVisible:!1,isManualTrigger:!1};O.set(e,r),e.updateOptions({inlineSuggest:{enabled:!0,mode:"subwordSmart"}});try{let s=t.languages.registerInlineCompletionsProvider(o.language,{provideInlineCompletions:(a,d,m,p)=>{let u=O.get(e);if(!(!u||o.trigger==="onDemand"&&!u.isManualTrigger))return ue({monaco:t,mdl:a,pos:d,token:p,isCompletionAccepted:u.isCompletionAccepted,onShowCompletion:()=>{u.isCompletionVisible=!0,u.isManualTrigger=!1;},options:o})},freeInlineCompletions:()=>{}});n.push(s);let i=e.onKeyDown(a=>{let d=O.get(e);if(!d)return;let m=a.keyCode===t.KeyCode.Tab||a.keyCode===t.KeyCode.RightArrow&&a.metaKey;d.isCompletionVisible&&m?(d.isCompletionAccepted=!0,d.isCompletionVisible=!1):d.isCompletionAccepted=!1;});n.push(i);let l={deregister:()=>{n.forEach(a=>a.dispose()),H.clear(),O.delete(e),I=null;},trigger:()=>Le(e)};return I=l,l}catch(s){return o.onError?o.onError(s):E(s),{deregister:()=>{n.forEach(i=>i.dispose()),O.delete(e),I=null;},trigger:()=>{}}}},Le=t=>{let e=O.get(t);if(!e){ce("Completion is not registered. Use `registerCompletion` to register completion first.");return}e.isManualTrigger=!0,t.trigger("keyboard","editor.action.inlineSuggest.trigger",{});},De=(...t)=>(F("registerCopilot","registerCompletion"),Ce(...t));
51
60
 
52
- exports.Copilot = W;
61
+ exports.Copilot = z;
53
62
  exports.registerCompletion = Ce;
54
- exports.registerCopilot = we;
63
+ exports.registerCopilot = De;
package/build/index.mjs CHANGED
@@ -1,50 +1,59 @@
1
- var V=["groq","openai","anthropic","google"],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-20241022","claude-3-haiku":"claude-3-haiku-20240307","claude-3-5-haiku":"claude-3-5-haiku-20241022","o1-mini":"o1-mini","gemini-1.5-flash-8b":"gemini-1.5-flash-8b","gemini-1.5-flash":"gemini-1.5-flash","gemini-1.5-pro":"gemini-1.5-pro"},j={groq:["llama-3-70b"],openai:["gpt-4o","gpt-4o-mini","o1-mini"],anthropic:["claude-3-5-sonnet","claude-3-haiku","claude-3-5-haiku"],google:["gemini-1.5-flash-8b","gemini-1.5-pro","gemini-1.5-flash"]},X="anthropic",J="claude-3-5-haiku",M={groq:"https://api.groq.com/openai/v1/chat/completions",openai:"https://api.openai.com/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",google:"https://generativelanguage.googleapis.com/v1beta/models"},A=.1;var v=t=>!t||t.length===0?"":t.length===1?t[0]:`${t.slice(0,-1).join(", ")} and ${t.slice(-1)}`,K=(t,e,o={})=>{if(e<=0)return "";let n=t.split(`
1
+ var V=["groq","openai","anthropic","google"],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-20241022","claude-3-haiku":"claude-3-haiku-20240307","claude-3-5-haiku":"claude-3-5-haiku-20241022","o1-mini":"o1-mini","gemini-1.5-flash-8b":"gemini-1.5-flash-8b","gemini-1.5-flash":"gemini-1.5-flash","gemini-1.5-pro":"gemini-1.5-pro"},j={groq:["llama-3-70b"],openai:["gpt-4o","gpt-4o-mini","o1-mini"],anthropic:["claude-3-5-sonnet","claude-3-haiku","claude-3-5-haiku"],google:["gemini-1.5-flash-8b","gemini-1.5-pro","gemini-1.5-flash"]},X="anthropic",J="claude-3-5-haiku",M={groq:"https://api.groq.com/openai/v1/chat/completions",openai:"https://api.openai.com/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",google:"https://generativelanguage.googleapis.com/v1beta/models"},A=.1;var v=t=>!t||t.length===0?"":t.length===1?t[0]:`${t.slice(0,-1).join(", ")} and ${t.slice(-1)}`,U=(t,e,o={})=>{if(e<=0)return "";let n=t.split(`
2
2
  `),r=n.length;if(e>=r)return t;if(o.from==="end"){let i=n.slice(-e);return i.every(l=>l==="")?`
3
3
  `.repeat(e):i.join(`
4
4
  `)}let s=n.slice(0,e);return s.every(i=>i==="")?`
5
5
  `.repeat(e):s.join(`
6
6
  `)};var Z=(t,e)=>e.getLineContent(t.lineNumber)[t.column-1],L=(t,e)=>e.getLineContent(t.lineNumber).slice(t.column-1),Q=(t,e)=>e.getLineContent(t.lineNumber).slice(0,t.column-1),T=(t,e)=>e.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:t.lineNumber,endColumn:t.column}),ee=(t,e)=>e.getValueInRange({startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:e.getLineCount(),endColumn:e.getLineMaxColumn(e.getLineCount())});var te=async(t,e,o={})=>{let n=o.timeout??3e4,r=AbortSignal.timeout(n),s=o.signal?AbortSignal.any([r,o.signal]):r,i={"Content-Type":"application/json",...o.headers},l=e==="POST"&&o.body?JSON.stringify(o.body):void 0,a=await fetch(t,{method:e,headers:i,body:l,signal:s});if(!a.ok){let d=await a.json().catch(()=>null),m=d?`
7
- ${JSON.stringify(d,null,2)}`:"",p=o.fallbackError||"Network request failed";throw new Error(`${p} (${a.status})${m}`)}return a.json()},he=(t,e)=>te(t,"GET",e),fe=(t,e,o)=>te(t,"POST",{...o,body:e}),w={GET:he,POST:fe};var oe=(t,e)=>{let o=L(t,e).trim(),n=Q(t,e).trim();return t.column<=3&&(o!==""||n!=="")};var D=(t,e)=>{let o=null,n=null,r=(...s)=>new Promise((i,l)=>{o&&(clearTimeout(o),n&&n("Cancelled")),n=l,o=setTimeout(()=>{i(t(...s)),n=null;},e);});return r.cancel=()=>{o&&(clearTimeout(o),n&&n("Cancelled"),o=null,n=null);},r};var ye=t=>t?.length?t.map(({path:e,content:o})=>`
7
+ ${JSON.stringify(d,null,2)}`:"",p=o.fallbackError||"Network request failed";throw new Error(`${p} (${a.status})${m}`)}return a.json()},he=(t,e)=>te(t,"GET",e),fe=(t,e,o)=>te(t,"POST",{...o,body:e}),D={GET:he,POST:fe};var oe=(t,e)=>{let o=L(t,e).trim(),n=Q(t,e).trim();return t.column<=3&&(o!==""||n!=="")};var w=(t,e)=>{let o=null,n=null,r=(...s)=>new Promise((i,l)=>{o&&(clearTimeout(o),n&&n("Cancelled")),n=l,o=setTimeout(()=>{i(t(...s)),n=null;},e);});return r.cancel=()=>{o&&(clearTimeout(o),n&&n("Cancelled"),o=null,n=null);},r};var ye=t=>!t||t.length===0?"":t.map(({path:e,content:o})=>`
8
8
  <related_file>
9
- <path>${e}</path>
10
- <content>
9
+ <filePath>${e}</filePath>
10
+ <fileContent>
11
11
  \`\`\`
12
12
  ${o}
13
13
  \`\`\`
14
- </content>
14
+ </fileContent>
15
15
  </related_file>`.trim()).join(`
16
16
 
17
- `):"",ne=t=>{let{technologies:e=[],filename:o,relatedFiles:n,language:r,textBeforeCursor:s="",textAfterCursor:i="",editorState:{completionMode:l}}=t,a=v([r,...e].filter(p=>typeof p=="string"&&!!p)),d=`You are an expert ${a?`${a} `:""}AI code completion assistant. Generate precise, contextually-aware code completions by:
18
-
19
- 1. Analyzing code context, patterns and conventions
20
- 2. Determining appropriate completions based on mode and context
21
- 3. Ensuring proper formatting and style consistency
22
- 4. Respect the monaco editor's inline suggest subwordSmart mode
23
-
24
- Context:
25
- - File: ${o||"current file"}
26
- - Language: ${r||"detected from context"}
27
- - Mode: ${l}
28
- - Technologies: ${a||"inferred from context"}
29
-
30
- Guidelines:
31
- - Maintain consistent style and patterns
32
- - Consider related files and context
33
- - Follow mode-specific behavior (${l}):
34
- ${l==="continue"?"- Continue code naturally from cursor":l==="insert"?"- Insert precisely between segments":"- Complete current code block"}`,m=`Context:
35
- 1. Related Files:
17
+ `),ne=t=>{let{technologies:e=[],filename:o,relatedFiles:n,language:r,textBeforeCursor:s="",textAfterCursor:i="",editorState:{completionMode:l}}=t,a=v([r,...e].filter(p=>typeof p=="string"&&!!p)),d=`
18
+ Take your time to reason as an exceptional${a?" "+a:""} code-generating assistant. You must produce solutions that are:
19
+
20
+ 1. Scrutinized carefully for syntax, semantics, and relevancy.
21
+ 2. Perfectly aligned with the prescribed completion mode and formatting norms.
22
+ 3. Free from logical or contextual slip-ups in the final result.
23
+
24
+ Contextual Data:
25
+ - Active File: ${o||"Untitled"}
26
+ - Main Language: ${r||"Undetermined"}
27
+ - Mode of Completion: ${l}
28
+ - Detected Technologies: ${a||"None"}
29
+
30
+ Execution Directives:
31
+ - Insert the code snippet exactly at the specified cursor mark, omitting any superfluous commentary.
32
+ - If other files are relevant, incorporate details from them cautiously.
33
+ - Respect the completion mode rules for ${l}:
34
+ ${l==="continue"?"- Expand from the cursor, upholding continuity in the surrounding code.":l==="insert"?`- Place the snippet precisely at the cursor location (marked by <cursor>).
35
+ - Only output the exact code to be inserted, without surrounding code.
36
+ - Example:
37
+ Input: const num = Math.random(); console.log(<cursor>);
38
+ Correct: num
39
+ Incorrect: \`num\` or console.log(num)`:"- Extend the existing code flow without deviating from its logic."}
40
+ `,m=`
41
+ Below is all the context you have:
42
+
43
+ 1. Related Files in Workspace:
36
44
  ${ye(n)}
37
45
 
38
- 2. Code State:
46
+ 2. Existing Source with Cursor:
39
47
  \`\`\`
40
48
  ${s}<cursor>${i}
41
49
  \`\`\`
42
50
 
43
- Generate appropriate code completion at <cursor> position (Output only code without any comments or explanations):`;return {system:d,user:m}};var re={"claude-3-5-sonnet":8192,"claude-3-5-haiku":8192,"claude-3-haiku":4096};var Pe={createEndpoint:()=>M.openai,createRequestBody:(t,e)=>{let o=t==="o1-mini";return {model:B(t),...!o&&{temperature:A},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},Re={createEndpoint:()=>M.groq,createRequestBody:(t,e)=>({model:B(t),temperature:A,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},xe={createEndpoint:()=>M.anthropic,createRequestBody:(t,e)=>({model:B(t),temperature:A,system:e.system,messages:[{role:"user",content:e.user}],max_tokens:re[t]}),createHeaders:t=>({"Content-Type":"application/json","x-api-key":t,"anthropic-version":"2023-06-01"}),parseCompletion:t=>{if(!t.content||!Array.isArray(t.content)||!t.content.length)return null;let e=t.content[0];return !e||typeof e!="object"?null:"text"in e&&typeof e.text=="string"?e.text:null}},Te={createEndpoint:(t,e)=>`${M.google}/${t}:generateContent?key=${e}`,createRequestBody:(t,e)=>({model:B(t),system_instruction:{parts:{text:e.system}},contents:[{parts:{text:e.user}}]}),createHeaders:()=>({"Content-Type":"application/json"}),parseCompletion:t=>{if(!t.candidates?.length||!t.candidates[0]?.content||!t.candidates[0].content?.parts?.length)return null;let e=t.candidates[0].content;return "text"in e.parts[0]&&typeof e.parts[0].text=="string"?e.parts[0].text:null}},S={openai:Pe,groq:Re,anthropic:xe,google:Te},ie=(t,e,o)=>S[o].createEndpoint(t,e),se=(t,e,o)=>S[e].createRequestBody(t,o),ae=(t,e)=>S[e].createHeaders(t),le=(t,e)=>S[e].parseCompletion(t),B=t=>Y[t];var Oe="\x1B[91m",pe="\x1B[93m",U="\x1B[0m",z="\x1B[1m",O=t=>{let e;t instanceof Error?e=t.message:typeof t=="string"?e=t:e="An unknown error occurred";let o=`${Oe}${z}[MONACOPILOT ERROR] ${e}${U}`;return console.error(o),{message:e}},ce=t=>{console.warn(`${pe}${z}[MONACOPILOT WARN] ${t}${U}`);};var F=(t,e,o)=>console.warn(`${pe}${z}[MONACOPILOT DEPRECATED] "${t}" is deprecated${o?` in ${o}`:""}. Please use "${e}" instead. It will be removed in a future version.${U}`);var W=class{constructor(e,o={}){if(!e)throw new Error("Please provide an API key.");this.apiKey=e,this.provider=o.provider??X,this.model=o.model??J,this.validateInputs();}validateInputs(){if(!V.includes(this.provider))throw new Error(`Unsupported provider "${this.provider}". Please choose from: ${v(V)}. For custom models, provider specification is not needed.`);if(typeof this.model=="string"&&!j[this.provider].includes(this.model))throw new Error(`Model "${this.model}" is not supported by the "${this.provider}" provider. Supported models: ${v(j[this.provider])}`)}async complete(e){let{body:o,options:n}=e,{completionMetadata:r}=o,{headers:s={},customPrompt:i}=n??{},l=this.generatePrompt(r,i),{endpoint:a,requestBody:d,headers:m}=this.prepareRequestDetails(l);try{let p=await this.sendCompletionRequest(a,d,{...m,...s});return this.processCompletionResponse(p)}catch(p){return this.handleCompletionError(p)}}generatePrompt(e,o){let n=ne(e);return o?{...n,...o(e)}:n}prepareRequestDetails(e){let o=ie(this.model,this.apiKey,this.provider),n,r=ae(this.apiKey,this.provider);if(typeof this.model=="object"&&"config"in this.model){let s=this.model.config(this.apiKey,e);o=s.endpoint??o,n=s.body??{},r={...r,...s.headers};}else n=se(this.model,this.provider,e);return {endpoint:o,requestBody:n,headers:r}}async sendCompletionRequest(e,o,n){return w.POST(e,o,{headers:n})}processCompletionResponse(e){if(typeof this.model=="object"&&"transformResponse"in this.model){let o=this.model.transformResponse(e);return "completion"in o&&F("completion","text","Copilot.options.model.transformResponse"),{completion:o.text??o.completion??null,raw:e}}else return {completion:le(e,this.provider),raw:e}}handleCompletionError(e){return {error:O(e).message,completion:null}}};var N=class t{constructor(e){this.formattedCompletion="";this.formattedCompletion=e;}static create(e){return new t(e)}setCompletion(e){return this.formattedCompletion=e,this}removeInvalidLineBreaks(){return this.formattedCompletion=this.formattedCompletion.trimEnd(),this}removeMarkdownCodeSyntax(){return this.formattedCompletion=this.removeMarkdownCodeBlocks(this.formattedCompletion),this}removeMarkdownCodeBlocks(e){let o=/```[\s\S]*?```/g,n=e,r;for(;(r=o.exec(e))!==null;){let s=r[0],i=s.split(`
51
+ Please craft a minimal yet complete snippet to fill in at <cursor>. Double-check correctness and ensure no syntactic or semantic flaws. Provide only the snippet as final output\u2014no added explanations.
52
+ `;return {system:d,user:m}};var re={"claude-3-5-sonnet":8192,"claude-3-5-haiku":8192,"claude-3-haiku":4096};var Pe={createEndpoint:()=>M.openai,createRequestBody:(t,e)=>{let o=t==="o1-mini";return {model:B(t),...!o&&{temperature:A},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},Re={createEndpoint:()=>M.groq,createRequestBody:(t,e)=>({model:B(t),temperature:A,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},xe={createEndpoint:()=>M.anthropic,createRequestBody:(t,e)=>({model:B(t),temperature:A,system:e.system,messages:[{role:"user",content:e.user}],max_tokens:re[t]}),createHeaders:t=>({"Content-Type":"application/json","x-api-key":t,"anthropic-version":"2023-06-01"}),parseCompletion:t=>{if(!t.content||!Array.isArray(t.content)||!t.content.length)return null;let e=t.content[0];return !e||typeof e!="object"?null:"text"in e&&typeof e.text=="string"?e.text:null}},Te={createEndpoint:(t,e)=>`${M.google}/${t}:generateContent?key=${e}`,createRequestBody:(t,e)=>({model:B(t),system_instruction:{parts:{text:e.system}},contents:[{parts:{text:e.user}}]}),createHeaders:()=>({"Content-Type":"application/json"}),parseCompletion:t=>{if(!t.candidates?.length||!t.candidates[0]?.content||!t.candidates[0].content?.parts?.length)return null;let e=t.candidates[0].content;return "text"in e.parts[0]&&typeof e.parts[0].text=="string"?e.parts[0].text:null}},S={openai:Pe,groq:Re,anthropic:xe,google:Te},ie=(t,e,o)=>S[o].createEndpoint(t,e),se=(t,e,o)=>S[e].createRequestBody(t,o),ae=(t,e)=>S[e].createHeaders(t),le=(t,e)=>S[e].parseCompletion(t),B=t=>Y[t];var Ee="\x1B[91m",pe="\x1B[93m",K="\x1B[0m",W="\x1B[1m",E=t=>{let e;t instanceof Error?e=t.message:typeof t=="string"?e=t:e="An unknown error occurred";let o=`${Ee}${W}[MONACOPILOT ERROR] ${e}${K}`;return console.error(o),{message:e}},ce=t=>{console.warn(`${pe}${W}[MONACOPILOT WARN] ${t}${K}`);};var F=(t,e,o)=>console.warn(`${pe}${W}[MONACOPILOT DEPRECATED] "${t}" is deprecated${o?` in ${o}`:""}. Please use "${e}" instead. It will be removed in a future version.${K}`);var z=class{constructor(e,o={}){if(!e)throw new Error("Please provide an API key.");this.apiKey=e,this.provider=o.provider??X,this.model=o.model??J,this.validateInputs();}validateInputs(){if(!V.includes(this.provider))throw new Error(`Unsupported provider "${this.provider}". Please choose from: ${v(V)}. For custom models, provider specification is not needed.`);if(typeof this.model=="string"&&!j[this.provider].includes(this.model))throw new Error(`Model "${this.model}" is not supported by the "${this.provider}" provider. Supported models: ${v(j[this.provider])}`)}async complete(e){let{body:o,options:n}=e,{completionMetadata:r}=o,{headers:s={},customPrompt:i}=n??{},l=this.generatePrompt(r,i),{endpoint:a,requestBody:d,headers:m}=this.prepareRequestDetails(l);try{let p=await this.sendCompletionRequest(a,d,{...m,...s});return this.processCompletionResponse(p)}catch(p){return this.handleCompletionError(p)}}generatePrompt(e,o){let n=ne(e);return o?{...n,...o(e)}:n}prepareRequestDetails(e){let o=ie(this.model,this.apiKey,this.provider),n,r=ae(this.apiKey,this.provider);if(typeof this.model=="object"&&"config"in this.model){let s=this.model.config(this.apiKey,e);o=s.endpoint??o,n=s.body??{},r={...r,...s.headers};}else n=se(this.model,this.provider,e);return {endpoint:o,requestBody:n,headers:r}}async sendCompletionRequest(e,o,n){return D.POST(e,o,{headers:n})}processCompletionResponse(e){if(typeof this.model=="object"&&"transformResponse"in this.model){let o=this.model.transformResponse(e);return "completion"in o&&F("completion","text","Copilot.options.model.transformResponse"),{completion:o.text??o.completion??null,raw:e}}else return {completion:le(e,this.provider),raw:e}}handleCompletionError(e){return {error:E(e).message,completion:null}}};var N=class t{constructor(e){this.formattedCompletion="";this.formattedCompletion=e;}static create(e){return new t(e)}setCompletion(e){return this.formattedCompletion=e,this}removeInvalidLineBreaks(){return this.formattedCompletion=this.formattedCompletion.trimEnd(),this}removeMarkdownCodeSyntax(){return this.formattedCompletion=this.removeMarkdownCodeBlocks(this.formattedCompletion),this}removeMarkdownCodeBlocks(e){let o=/```[\s\S]*?```/g,n=e,r;for(;(r=o.exec(e))!==null;){let s=r[0],i=s.split(`
44
53
  `).slice(1,-1).join(`
45
54
  `);n=n.replace(s,i);}return n.trim()}removeExcessiveNewlines(){return this.formattedCompletion=this.formattedCompletion.replace(/\n{3,}/g,`
46
55
 
47
- `),this}build(){return this.formattedCompletion}};var q=class{constructor(e,o){this.cursorPos=e,this.mdl=o;}shouldProvideCompletions(){return !oe(this.cursorPos,this.mdl)}};var k=class{constructor(e){this.capacity=e;this.head=0;this.tail=0;this.size=0;this.buffer=new Array(e);}enqueue(e){let o;return this.size===this.capacity&&(o=this.dequeue()),this.buffer[this.tail]=e,this.tail=(this.tail+1)%this.capacity,this.size++,o}dequeue(){if(this.size===0)return;let e=this.buffer[this.head];return this.buffer[this.head]=void 0,this.head=(this.head+1)%this.capacity,this.size--,e}getAll(){return this.buffer.filter(e=>e!==void 0)}clear(){this.buffer=new Array(this.capacity),this.head=0,this.tail=0,this.size=0;}getSize(){return this.size}isEmpty(){return this.size===0}isFull(){return this.size===this.capacity}};var y=class y{constructor(){this.cache=new k(y.MAX_CACHE_SIZE);}get(e,o){return this.cache.getAll().filter(n=>this.isValidCacheItem(n,e,o))}add(e){this.cache.enqueue(e);}clear(){this.cache.clear();}isValidCacheItem(e,o,n){let r=n.getValueInRange(e.range);return T(o,n).startsWith(e.textBeforeCursor)&&this.isPositionValid(e,o,r)}isPositionValid(e,o,n){let{range:r,completion:s}=e,{startLineNumber:i,startColumn:l,endLineNumber:a,endColumn:d}=r,{lineNumber:m,column:p}=o,u=m===i&&p===l;if(i===a)return u||s.startsWith(n)&&m===i&&p>=l-y.LOOK_AROUND&&p<=d+y.LOOK_AROUND;let C=s.startsWith(n)&&m>=i&&m<=a&&(m===i&&p>=l-y.LOOK_AROUND||m===a&&p<=d+y.LOOK_AROUND||m>i&&m<a);return u||C}};y.MAX_CACHE_SIZE=10,y.LOOK_AROUND=10;var _=y;var $=class{constructor(e){this.monaco=e;}computeInsertionRange(e,o,n){if(!o)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let r=n.getOffsetAt(e),s=n.getValue().substring(0,r),i=n.getValue().substring(r),l=0,a=0,d=0,m=0,p=o.length,u=s.length,C=i.length;if(r>=n.getValue().length)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);if(C===0)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let E=Math.min(p,u);for(let c=1;c<=E;c++){let x=o.substring(0,c),ge=s.slice(-c);x===ge&&(m=c);}let P=Math.min(p,C);for(let c=0;c<P&&o[c]===i[c];c++)l++;for(let c=1;c<=P;c++)o.slice(-c)===i.slice(0,c)&&(a=c);if(d=Math.max(l,a),d===0){for(let c=1;c<p;c++)if(i.startsWith(o.substring(c))){d=p-c;break}}let f=m>0?n.getPositionAt(r-m):e,g=r+d,h=n.getPositionAt(g);return new this.monaco.Range(f.lineNumber,f.column,h.lineNumber,h.column)}computeCacheRange(e,o){let n=e.lineNumber,r=e.column,s=o.split(`
48
- `),i=s.length-1,l=n+i,a=i===0?r+s[0].length:s[i].length+1;return new this.monaco.Range(n,r,l,a)}};var be="application/json",de=async t=>{let{endpoint:e,body:o}=t,{completion:n,error:r}=await w.POST(e,o,{headers:{"Content-Type":be},fallbackError:"Error while fetching completion item"});if(r)throw new Error(r);return {completion:n}},me=({pos:t,mdl:e,options:o})=>{let{filename:n,language:r,technologies:s,relatedFiles:i,maxContextLines:l}=o,a=Ee(t,e),m=!!i?.length?3:2,p=l?Math.floor(l/m):void 0,u=(g,h,c)=>{let x=g(t,e);return h?K(x,h,c):x},C=(g,h)=>!g||!h?g:g.map(({content:c,...x})=>({...x,content:K(c,h)})),E=u(T,p,{from:"end"}),P=u(ee,p),f=C(i,p);return {filename:n,language:r,technologies:s,relatedFiles:f,textBeforeCursor:E,textAfterCursor:P,cursorPosition:t,editorState:{completionMode:a}}},Ee=(t,e)=>{let o=Z(t,e),n=L(t,e);return o?"insert":n.trim()?"complete":"continue"};var R=t=>({items:t,enableForwardStability:!0,suppressSuggestions:!0});var G={onTyping:300,onIdle:600,onDemand:0},ve=t=>({onTyping:D(t,G.onTyping),onIdle:D(t,G.onIdle),onDemand:D(t,G.onDemand)}),H=new _,Ie=async({monaco:t,mdl:e,pos:o,token:n,isCompletionAccepted:r,onShowCompletion:s,options:i})=>{let{trigger:l="onIdle",endpoint:a,enableCaching:d=!0,onError:m,requestHandler:p}=i;if(!new q(o,e).shouldProvideCompletions())return R([]);if(d){let u=H.get(o,e).map(C=>({insertText:C.completion,range:C.range}));if(u.length>0)return s(),R(u)}if(n.isCancellationRequested||r)return R([]);try{let C=ve(p??de)[l];n.onCancellationRequested(()=>{C.cancel();});let E=me({pos:o,mdl:e,options:i}),{completion:P}=await C({endpoint:a,body:{completionMetadata:E}});if(P){let f=N.create(P).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),g=new $(t),h=g.computeInsertionRange(o,f,e),c=g.computeCacheRange(o,f);return d&&H.add({completion:f,range:c,textBeforeCursor:T(o,e)}),s(),R([{insertText:f,range:h}])}}catch(u){if(Ae(u))return R([]);m?m(u):O(u);}return R([])},Ae=t=>typeof t=="string"?t==="Cancelled"||t==="AbortError":t instanceof Error?t.message==="Cancelled"||t.name==="AbortError":!1,ue=Ie;var b=new WeakMap,I=null,Ce=(t,e,o)=>{I&&I.deregister();let n=[],r={isCompletionAccepted:!1,isCompletionVisible:!1,isManualTrigger:!1};b.set(e,r),e.updateOptions({inlineSuggest:{enabled:!0,mode:"subwordSmart"}});try{let s=t.languages.registerInlineCompletionsProvider(o.language,{provideInlineCompletions:(a,d,m,p)=>{let u=b.get(e);if(!(!u||o.trigger==="onDemand"&&!u.isManualTrigger))return ue({monaco:t,mdl:a,pos:d,token:p,isCompletionAccepted:u.isCompletionAccepted,onShowCompletion:()=>{u.isCompletionVisible=!0,u.isManualTrigger=!1;},options:o})},freeInlineCompletions:()=>{}});n.push(s);let i=e.onKeyDown(a=>{let d=b.get(e);if(!d)return;let m=a.keyCode===t.KeyCode.Tab||a.keyCode===t.KeyCode.RightArrow&&a.metaKey;d.isCompletionVisible&&m?(d.isCompletionAccepted=!0,d.isCompletionVisible=!1):d.isCompletionAccepted=!1;});n.push(i);let l={deregister:()=>{n.forEach(a=>a.dispose()),H.clear(),b.delete(e),I=null;},trigger:()=>Le(e)};return I=l,l}catch(s){return o.onError?o.onError(s):O(s),{deregister:()=>{n.forEach(i=>i.dispose()),b.delete(e),I=null;},trigger:()=>{}}}},Le=t=>{let e=b.get(t);if(!e){ce("Completion is not registered. Use `registerCompletion` to register completion first.");return}e.isManualTrigger=!0,t.trigger("keyboard","editor.action.inlineSuggest.trigger",{});},we=(...t)=>(F("registerCopilot","registerCompletion"),Ce(...t));
56
+ `),this}build(){return this.formattedCompletion}};var k=class{constructor(e,o){this.cursorPos=e,this.mdl=o;}shouldProvideCompletions(){return !oe(this.cursorPos,this.mdl)}};var q=class{constructor(e){this.capacity=e;this.head=0;this.tail=0;this.size=0;this.buffer=new Array(e);}enqueue(e){let o;return this.size===this.capacity&&(o=this.dequeue()),this.buffer[this.tail]=e,this.tail=(this.tail+1)%this.capacity,this.size++,o}dequeue(){if(this.size===0)return;let e=this.buffer[this.head];return this.buffer[this.head]=void 0,this.head=(this.head+1)%this.capacity,this.size--,e}getAll(){return this.buffer.filter(e=>e!==void 0)}clear(){this.buffer=new Array(this.capacity),this.head=0,this.tail=0,this.size=0;}getSize(){return this.size}isEmpty(){return this.size===0}isFull(){return this.size===this.capacity}};var y=class y{constructor(){this.cache=new q(y.MAX_CACHE_SIZE);}get(e,o){return this.cache.getAll().filter(n=>this.isValidCacheItem(n,e,o))}add(e){this.cache.enqueue(e);}clear(){this.cache.clear();}isValidCacheItem(e,o,n){let r=n.getValueInRange(e.range);return T(o,n).startsWith(e.textBeforeCursor)&&this.isPositionValid(e,o,r)}isPositionValid(e,o,n){let{range:r,completion:s}=e,{startLineNumber:i,startColumn:l,endLineNumber:a,endColumn:d}=r,{lineNumber:m,column:p}=o,u=m===i&&p===l;if(i===a)return u||s.startsWith(n)&&m===i&&p>=l-y.LOOK_AROUND&&p<=d+y.LOOK_AROUND;let C=s.startsWith(n)&&m>=i&&m<=a&&(m===i&&p>=l-y.LOOK_AROUND||m===a&&p<=d+y.LOOK_AROUND||m>i&&m<a);return u||C}};y.MAX_CACHE_SIZE=10,y.LOOK_AROUND=10;var _=y;var $=class{constructor(e){this.monaco=e;}computeInsertionRange(e,o,n){if(!o)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let r=n.getOffsetAt(e),s=n.getValue().substring(0,r),i=n.getValue().substring(r),l=0,a=0,d=0,m=0,p=o.length,u=s.length,C=i.length;if(r>=n.getValue().length)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);if(C===0)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let b=Math.min(p,u);for(let c=1;c<=b;c++){let x=o.substring(0,c),ge=s.slice(-c);x===ge&&(m=c);}let P=Math.min(p,C);for(let c=0;c<P&&o[c]===i[c];c++)l++;for(let c=1;c<=P;c++)o.slice(-c)===i.slice(0,c)&&(a=c);if(d=Math.max(l,a),d===0){for(let c=1;c<p;c++)if(i.startsWith(o.substring(c))){d=p-c;break}}let f=m>0?n.getPositionAt(r-m):e,g=r+d,h=n.getPositionAt(g);return new this.monaco.Range(f.lineNumber,f.column,h.lineNumber,h.column)}computeCacheRange(e,o){let n=e.lineNumber,r=e.column,s=o.split(`
57
+ `),i=s.length-1,l=n+i,a=i===0?r+s[0].length:s[i].length+1;return new this.monaco.Range(n,r,l,a)}};var Oe="application/json",de=async t=>{let{endpoint:e,body:o}=t,{completion:n,error:r}=await D.POST(e,o,{headers:{"Content-Type":Oe},fallbackError:"Error while fetching completion item"});if(r)throw new Error(r);return {completion:n}},me=({pos:t,mdl:e,options:o})=>{let{filename:n,language:r,technologies:s,relatedFiles:i,maxContextLines:l}=o,a=be(t,e),m=!!i?.length?3:2,p=l?Math.floor(l/m):void 0,u=(g,h,c)=>{let x=g(t,e);return h?U(x,h,c):x},C=(g,h)=>!g||!h?g:g.map(({content:c,...x})=>({...x,content:U(c,h)})),b=u(T,p,{from:"end"}),P=u(ee,p),f=C(i,p);return {filename:n,language:r,technologies:s,relatedFiles:f,textBeforeCursor:b,textAfterCursor:P,cursorPosition:t,editorState:{completionMode:a}}},be=(t,e)=>{let o=Z(t,e),n=L(t,e);return o?"insert":n.trim()?"complete":"continue"};var R=t=>({items:t,enableForwardStability:!0,suppressSuggestions:!0});var G={onTyping:300,onIdle:600,onDemand:0},ve=t=>({onTyping:w(t,G.onTyping),onIdle:w(t,G.onIdle),onDemand:w(t,G.onDemand)}),H=new _,Ie=async({monaco:t,mdl:e,pos:o,token:n,isCompletionAccepted:r,onShowCompletion:s,options:i})=>{let{trigger:l="onIdle",endpoint:a,enableCaching:d=!0,onError:m,requestHandler:p}=i;if(!new k(o,e).shouldProvideCompletions())return R([]);if(d){let u=H.get(o,e).map(C=>({insertText:C.completion,range:C.range}));if(u.length>0)return s(),R(u)}if(n.isCancellationRequested||r)return R([]);try{let C=ve(p??de)[l];n.onCancellationRequested(()=>{C.cancel();});let b=me({pos:o,mdl:e,options:i}),{completion:P}=await C({endpoint:a,body:{completionMetadata:b}});if(P){let f=N.create(P).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),g=new $(t),h=g.computeInsertionRange(o,f,e),c=g.computeCacheRange(o,f);return d&&H.add({completion:f,range:c,textBeforeCursor:T(o,e)}),s(),R([{insertText:f,range:h}])}}catch(u){if(Ae(u))return R([]);m?m(u):E(u);}return R([])},Ae=t=>typeof t=="string"?t==="Cancelled"||t==="AbortError":t instanceof Error?t.message==="Cancelled"||t.name==="AbortError":!1,ue=Ie;var O=new WeakMap,I=null,Ce=(t,e,o)=>{I&&I.deregister();let n=[],r={isCompletionAccepted:!1,isCompletionVisible:!1,isManualTrigger:!1};O.set(e,r),e.updateOptions({inlineSuggest:{enabled:!0,mode:"subwordSmart"}});try{let s=t.languages.registerInlineCompletionsProvider(o.language,{provideInlineCompletions:(a,d,m,p)=>{let u=O.get(e);if(!(!u||o.trigger==="onDemand"&&!u.isManualTrigger))return ue({monaco:t,mdl:a,pos:d,token:p,isCompletionAccepted:u.isCompletionAccepted,onShowCompletion:()=>{u.isCompletionVisible=!0,u.isManualTrigger=!1;},options:o})},freeInlineCompletions:()=>{}});n.push(s);let i=e.onKeyDown(a=>{let d=O.get(e);if(!d)return;let m=a.keyCode===t.KeyCode.Tab||a.keyCode===t.KeyCode.RightArrow&&a.metaKey;d.isCompletionVisible&&m?(d.isCompletionAccepted=!0,d.isCompletionVisible=!1):d.isCompletionAccepted=!1;});n.push(i);let l={deregister:()=>{n.forEach(a=>a.dispose()),H.clear(),O.delete(e),I=null;},trigger:()=>Le(e)};return I=l,l}catch(s){return o.onError?o.onError(s):E(s),{deregister:()=>{n.forEach(i=>i.dispose()),O.delete(e),I=null;},trigger:()=>{}}}},Le=t=>{let e=O.get(t);if(!e){ce("Completion is not registered. Use `registerCompletion` to register completion first.");return}e.isManualTrigger=!0,t.trigger("keyboard","editor.action.inlineSuggest.trigger",{});},De=(...t)=>(F("registerCopilot","registerCompletion"),Ce(...t));
49
58
 
50
- export { W as Copilot, Ce as registerCompletion, we as registerCopilot };
59
+ export { z as Copilot, Ce as registerCompletion, De as registerCopilot };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "monacopilot",
3
- "version": "0.15.9",
3
+ "version": "0.15.10",
4
4
  "description": "AI auto-completion plugin for Monaco Editor",
5
5
  "main": "./build/index.js",
6
6
  "module": "./build/index.mjs",