monacopilot 0.10.4 → 0.10.5
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 +17 -17
- package/build/index.mjs +17 -17
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`),r=n.length;if(
|
|
3
|
-
`.repeat(
|
|
4
|
-
`)}let i=n.slice(0,
|
|
5
|
-
`.repeat(
|
|
6
|
-
`)};var
|
|
1
|
+
"use strict";var B=Object.defineProperty;var me=Object.getOwnPropertyDescriptor;var ue=Object.getOwnPropertyNames;var Ce=Object.prototype.hasOwnProperty;var ge=(e,t)=>{for(var o in t)B(e,o,{get:t[o],enumerable:!0})},he=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ue(t))!Ce.call(e,r)&&r!==o&&B(e,r,{get:()=>t[r],enumerable:!(n=me(t,r))||n.enumerable});return e};var fe=e=>he(B({},"__esModule",{value:!0}),e);var Be={};ge(Be,{Copilot:()=>v,registerCompletion:()=>Y,registerCopilot:()=>de});module.exports=fe(Be);var k=["groq","openai","anthropic"],X={"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"},H={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"]},J="llama-3-70b",z="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"},M=.1;var P=class P{constructor(){}static getInstance(){return P.instance}handleError(t,o){let n=this.getErrorDetails(t),r=`\x1B[31m[${o}]\x1B[0m \x1B[1m${n.message}\x1B[0m`;return console.error(r),n}getErrorDetails(t){return t instanceof Error?{message:t.message,name:t.name,stack:t.stack,context:t.context}:{message:String(t),name:"UnknownError"}}};P.instance=new P;var q=P;var g=(e,t)=>q.getInstance().handleError(e,t);var F=(e,t)=>{let o=null,n=null,r=(...i)=>new Promise((l,s)=>{o&&(clearTimeout(o),n&&n("Cancelled")),n=s,o=setTimeout(()=>{l(e(...i)),n=null},t)});return r.cancel=()=>{o&&(clearTimeout(o),n&&n("Cancelled"),o=null,n=null)},r},T=e=>!e||e.length===0?"":e.length===1?e[0]:`${e.slice(0,-1).join(", ")} and ${e.slice(-1)}`;var $=(e,t)=>t.getLineContent(e.lineNumber)[e.column-1];var I=(e,t)=>t.getLineContent(e.lineNumber).slice(e.column-1),f=(e,t)=>t.getLineContent(e.lineNumber).slice(0,e.column-1),Q=(e,t)=>t.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:e.lineNumber,endColumn:e.column}),ee=(e,t)=>t.getValueInRange({startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:t.getLineCount(),endColumn:t.getLineMaxColumn(t.getLineCount())}),V=(e,t,o={})=>{if(t<=0)return"";let n=e.split(`
|
|
2
|
+
`),r=n.length;if(t>=r)return e;if(o.from==="end"){let l=n.slice(-t);return l.every(s=>s==="")?`
|
|
3
|
+
`.repeat(t):l.join(`
|
|
4
|
+
`)}let i=n.slice(0,t);return i.every(l=>l==="")?`
|
|
5
|
+
`.repeat(t):i.join(`
|
|
6
|
+
`)};var te=async(e,t,o={})=>{let n={"Content-Type":"application/json",...o.headers},r=t==="POST"&&o.body?JSON.stringify(o.body):void 0,i=await fetch(e,{method:t,headers:n,body:r,signal:o.signal});if(!i.ok)throw new Error(`${o.error||"Network error"}: ${i.statusText}`);return i.json()},xe=(e,t)=>te(e,"GET",t),Ee=(e,t,o)=>te(e,"POST",{...o,body:t}),b={GET:xe,POST:Ee};var oe=(e,t)=>{let o=I(e,t).trim(),n=f(e,t).trim();return e.column<=3&&(o!==""||n!=="")};var Pe="<user-current-cursor-position-is-here>",Te=e=>e==="javascript"?"JavaScript (ESNext)":e,ye=e=>`You are an expert ${Te(e.language)||T(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.`,Oe=e=>{let{filename:t="/",textBeforeCursor:o="",textAfterCursor:n="",externalContext:r,editorState:i}=e,a=`
|
|
7
7
|
<guidelines>
|
|
8
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
9
|
<steps>
|
|
@@ -17,29 +17,29 @@
|
|
|
17
17
|
<step>Return <strong>only</strong> the code required at the cursor position.</step>
|
|
18
18
|
</steps>
|
|
19
19
|
</guidelines>
|
|
20
|
-
`,
|
|
20
|
+
`,c=`
|
|
21
21
|
<context>
|
|
22
|
-
<current_file path="${
|
|
22
|
+
<current_file path="${t}">
|
|
23
23
|
<code>
|
|
24
|
-
${o}
|
|
24
|
+
${o}${Pe}${n}
|
|
25
25
|
</code>
|
|
26
26
|
</current_file>
|
|
27
27
|
</context>
|
|
28
|
-
`,
|
|
29
|
-
<external_file path="${
|
|
28
|
+
`,d=r?.map(({path:m,content:u})=>`
|
|
29
|
+
<external_file path="${m}">
|
|
30
30
|
<code>
|
|
31
|
-
${
|
|
31
|
+
${u}
|
|
32
32
|
</code>
|
|
33
33
|
</external_file>
|
|
34
34
|
`).join(`
|
|
35
35
|
`)||"";return`
|
|
36
36
|
<task>
|
|
37
37
|
${a}
|
|
38
|
-
${
|
|
39
|
-
${
|
|
38
|
+
${c}
|
|
39
|
+
${d}
|
|
40
40
|
</task>
|
|
41
|
-
`};function
|
|
41
|
+
`};function U(e){return{system:ye(e),user:Oe(e)}}var ne={"claude-3.5-sonnet":8192,"claude-3-opus":4096,"claude-3-haiku":4096,"claude-3-sonnet":4096};var Re={createRequestBody:(e,t)=>{let n=e==="o1-preview"||e==="o1-mini"?[{role:"user",content:t.user}]:[{role:"system",content:t.system},{role:"user",content:t.user}];return{model:K(e),temperature:M,messages:n}},createHeaders:e=>({"Content-Type":"application/json",Authorization:`Bearer ${e}`}),parseCompletion:e=>e.choices?.length?e.choices[0].message.content:null},Me={createRequestBody:(e,t)=>({model:K(e),temperature:M,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},Ie={createRequestBody:(e,t)=>({model:K(e),temperature:M,system:t.system,messages:[{role:"user",content:t.user}],max_tokens:be(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},j={openai:Re,groq:Me,anthropic:Ie},re=(e,t,o)=>j[t].createRequestBody(e,o),ie=(e,t)=>j[t].createHeaders(e),se=(e,t)=>j[t].parseCompletion(e),K=e=>X[e],le=e=>Z[e],be=e=>ne[e]||4096;var v=class{constructor(t,o={}){if(!t)throw new Error("Please provide an API key.");this.apiKey=t,this.provider=o.provider??z,this.model=o.model??J,this.validateInputs()}validateInputs(){if(!k.includes(this.provider))throw new Error(`The provider "${this.provider}" is not supported. Please choose a supported provider: ${T(k)}. If you're using a custom model, you don't need to specify a provider.`);if(typeof this.model=="string"&&!H[this.provider].includes(this.model)){let t=T(H[this.provider]);throw new Error(`Model "${this.model}" is not supported by the "${this.provider}" provider. Supported models: ${t}`)}}async complete(t){let{body:o,options:n}=t,{completionMetadata:r}=o,{headers:i={},customPrompt:l}=n??{},s=U(r),a=l?{...s,...l(r)}:s,c=le(this.provider),d,m=ie(this.apiKey,this.provider);if(typeof this.model=="object"&&"config"in this.model){let u=this.model.config(this.apiKey,a);c=u.endpoint??c,d=u.body??{},m={...m,...u.headers}}else d=re(this.model,this.provider,a);m={...m,...i};try{let u=await b.POST(c,d,{headers:m}),p;if(typeof this.model=="object"&&"transformResponse"in this.model){let C=this.model.transformResponse(u);p={completion:C.text??C.completion}}else p={completion:se(u,this.provider)};return p}catch(u){return{error:g(u,"COPILOT_COMPLETION_FETCH_ERROR").message,completion:null}}}};var L=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,n=t,r;for(;(r=o.exec(t))!==null;){let i=r[0],l=i.split(`
|
|
42
42
|
`).slice(1,-1).join(`
|
|
43
|
-
`);n=n.replace(i,
|
|
43
|
+
`);n=n.replace(i,l)}return n.trim()}removeExcessiveNewlines(){return this.formattedCompletion=this.formattedCompletion.replace(/\n{3,}/g,`
|
|
44
44
|
|
|
45
|
-
`),this}build(){return this.formattedCompletion}};var A=class{constructor(
|
|
45
|
+
`),this}build(){return this.formattedCompletion}};var A=class{constructor(t,o){this.cursorPos=t,this.mdl=o}shouldProvideCompletions(){return!oe(this.cursorPos,this.mdl)}};var N=class N{constructor(){this.cache=[]}get(t,o){return this.cache.filter(n=>this.isValidCacheItem(n,t,o))}add(t){let o=[...this.cache.slice(-(N.MAX_CACHE_SIZE-1)),t];this.cache=o}clear(){this.cache=[]}isValidCacheItem(t,o,n){let r=n.getValueInRange(t.range);return f(o,n).startsWith(t.textBeforeCursorInLine)&&this.isPositionValid(t,o,r)}isPositionValid(t,o,n){let{range:r,completion:i}=t,{startLineNumber:l,startColumn:s,endColumn:a}=r,{lineNumber:c,column:d}=o,m=c===l&&d===s,u=i.startsWith(n)&&c===l&&d>=s-n.length&&d<=a+n.length;return m||u}};N.MAX_CACHE_SIZE=10;var _=N;var ve="application/json",G=async({filename:e,endpoint:t,language:o,technologies:n,externalContext:r,mdl:i,pos:l,maxContextLines:s})=>{try{let{completion:a}=await b.POST(t,{completionMetadata:Le({filename:e,pos:l,mdl:i,language:o,technologies:n,externalContext:r,maxContextLines:s})},{headers:{"Content-Type":ve},error:"Error while fetching completion item"});return a}catch(a){return g(a,"FETCH_COMPLETION_ITEM_ERROR"),null}},Le=({filename:e,pos:t,mdl:o,language:n,technologies:r,externalContext:i,maxContextLines:l})=>{let s=Ae(t,o),c=!!i?.length?3:2,d=l?Math.floor(l/c):void 0,m=(x,E,D)=>{let R=x(t,o);return E?V(R,E,D):R},u=(x,E)=>!x||!E?x:x.map(({content:D,...R})=>({...R,content:V(D,E)})),p=m(Q,d,{from:"end"}),C=m(ee,d),w=u(i,d);return{filename:e,language:n,technologies:r,externalContext:w,textBeforeCursor:p,textAfterCursor:C,cursorPosition:t,editorState:{completionMode:s}}},Ae=(e,t)=>{let o=$(e,t),n=I(e,t);return o?"insert":n.trim()?"complete":"continue"};var ae=(e,t,o)=>{if(!o)return{startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column};let n=t.getOffsetAt(e),r=t.getValue().substring(n),i=0,l=0,s=0,a=o.length,c=r.length;if(n>=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 d=Math.min(a,c);for(let p=0;p<d&&o[p]===r[p];p++)i++;for(let p=1;p<=d;p++){let C=o.slice(-p),w=r.slice(0,p);C===w&&(l=p)}if(s=Math.max(i,l),s===0)for(let p=1;p<a;p++){let C=o.substring(p);if(r.startsWith(C)){s=a-p;break}}let m=n+s,u=t.getPositionAt(m);return{startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:u.lineNumber,endColumn:u.column}},pe=e=>L.create(e).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),h=e=>({items:e,enableForwardStability:!0});var _e=300,Ne=600,Se={onTyping:F(G,_e),onIdle:F(G,Ne)},S=new _,we=async({mdl:e,pos:t,token:o,isCompletionAccepted:n,onShowCompletion:r,options:i})=>{let{trigger:l="onIdle",...s}=i;if(!new A(t,e).shouldProvideCompletions())return h([]);let a=S.get(t,e).map(c=>({insertText:c.completion,range:{...c.range,endColumn:t.column}}));if(a.length>0)return r(),h(a);if(o.isCancellationRequested||n)return h([]);try{let c=l==="onTyping"?"onTyping":"onIdle",d=Se[c];o.onCancellationRequested(()=>{d.cancel()});let m=await d({...s,text:e.getValue(),mdl:e,pos:t});if(m){let u=pe(m),p=ae(t,e,u);return S.add({completion:u,range:p,textBeforeCursorInLine:f(t,e)}),r(),h([{insertText:u,range:p}])}}catch(c){if(De(c))return h([]);g(c,"FETCH_COMPLETION_ITEM_ERROR")}return h([])},De=e=>typeof e=="string"&&(e==="Cancelled"||e==="AbortError")||e instanceof Error&&(e.message==="Cancelled"||e.name==="AbortError"),ce=we;var y=new WeakMap,O=null,Y=(e,t,o)=>{O&&O.deregister();let n=[];y.set(t,{isCompletionAccepted:!1,isCompletionVisible:!1}),t.updateOptions({inlineSuggest:{enabled:!0,mode:"subwordSmart"}});try{let r=e.languages.registerInlineCompletionsProvider(o.language,{provideInlineCompletions:(s,a,c,d)=>{let m=y.get(t);if(m)return ce({mdl:s,pos:a,token:d,isCompletionAccepted:m.isCompletionAccepted,onShowCompletion:()=>{m.isCompletionVisible=!0},options:o})},freeInlineCompletions:()=>{}});n.push(r);let i=t.onKeyDown(s=>{let a=y.get(t);if(!a)return;let c=s.keyCode===e.KeyCode.Tab||s.keyCode===e.KeyCode.RightArrow&&s.metaKey;a.isCompletionVisible&&c?(a.isCompletionAccepted=!0,a.isCompletionVisible=!1):a.isCompletionAccepted=!1});n.push(i);let l={deregister:()=>{n.forEach(s=>s.dispose()),S.clear(),y.delete(t),O=null}};return O=l,l}catch(r){return g(r,"REGISTER_COMPLETION_ERROR"),{deregister:()=>{n.forEach(i=>i.dispose()),y.delete(t),O=null}}}},de=Y;0&&(module.exports={Copilot,registerCompletion,registerCopilot});
|
package/build/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
var D=["groq","openai","anthropic"],G={"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"},
|
|
2
|
-
`),r=n.length;if(
|
|
3
|
-
`.repeat(
|
|
4
|
-
`)}let i=n.slice(0,
|
|
5
|
-
`.repeat(
|
|
6
|
-
`)};var
|
|
1
|
+
var D=["groq","openai","anthropic"],G={"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"},B={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"]},Y="llama-3-70b",X="groq",J={groq:"https://api.groq.com/openai/v1/chat/completions",openai:"https://api.openai.com/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages"},M=.1;var P=class P{constructor(){}static getInstance(){return P.instance}handleError(t,o){let n=this.getErrorDetails(t),r=`\x1B[31m[${o}]\x1B[0m \x1B[1m${n.message}\x1B[0m`;return console.error(r),n}getErrorDetails(t){return t instanceof Error?{message:t.message,name:t.name,stack:t.stack,context:t.context}:{message:String(t),name:"UnknownError"}}};P.instance=new P;var k=P;var g=(e,t)=>k.getInstance().handleError(e,t);var H=(e,t)=>{let o=null,n=null,r=(...i)=>new Promise((l,s)=>{o&&(clearTimeout(o),n&&n("Cancelled")),n=s,o=setTimeout(()=>{l(e(...i)),n=null},t)});return r.cancel=()=>{o&&(clearTimeout(o),n&&n("Cancelled"),o=null,n=null)},r},T=e=>!e||e.length===0?"":e.length===1?e[0]:`${e.slice(0,-1).join(", ")} and ${e.slice(-1)}`;var q=(e,t)=>t.getLineContent(e.lineNumber)[e.column-1];var I=(e,t)=>t.getLineContent(e.lineNumber).slice(e.column-1),f=(e,t)=>t.getLineContent(e.lineNumber).slice(0,e.column-1),z=(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())}),F=(e,t,o={})=>{if(t<=0)return"";let n=e.split(`
|
|
2
|
+
`),r=n.length;if(t>=r)return e;if(o.from==="end"){let l=n.slice(-t);return l.every(s=>s==="")?`
|
|
3
|
+
`.repeat(t):l.join(`
|
|
4
|
+
`)}let i=n.slice(0,t);return i.every(l=>l==="")?`
|
|
5
|
+
`.repeat(t):i.join(`
|
|
6
|
+
`)};var Q=async(e,t,o={})=>{let n={"Content-Type":"application/json",...o.headers},r=t==="POST"&&o.body?JSON.stringify(o.body):void 0,i=await fetch(e,{method:t,headers:n,body:r,signal:o.signal});if(!i.ok)throw new Error(`${o.error||"Network error"}: ${i.statusText}`);return i.json()},ce=(e,t)=>Q(e,"GET",t),de=(e,t,o)=>Q(e,"POST",{...o,body:t}),b={GET:ce,POST:de};var ee=(e,t)=>{let o=I(e,t).trim(),n=f(e,t).trim();return e.column<=3&&(o!==""||n!=="")};var me="<user-current-cursor-position-is-here>",ue=e=>e==="javascript"?"JavaScript (ESNext)":e,Ce=e=>`You are an expert ${ue(e.language)||T(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.`,ge=e=>{let{filename:t="/",textBeforeCursor:o="",textAfterCursor:n="",externalContext:r,editorState:i}=e,a=`
|
|
7
7
|
<guidelines>
|
|
8
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
9
|
<steps>
|
|
@@ -17,29 +17,29 @@ var D=["groq","openai","anthropic"],G={"llama-3-70b":"llama3-70b-8192","gpt-4o":
|
|
|
17
17
|
<step>Return <strong>only</strong> the code required at the cursor position.</step>
|
|
18
18
|
</steps>
|
|
19
19
|
</guidelines>
|
|
20
|
-
`,
|
|
20
|
+
`,c=`
|
|
21
21
|
<context>
|
|
22
|
-
<current_file path="${
|
|
22
|
+
<current_file path="${t}">
|
|
23
23
|
<code>
|
|
24
|
-
${o}
|
|
24
|
+
${o}${me}${n}
|
|
25
25
|
</code>
|
|
26
26
|
</current_file>
|
|
27
27
|
</context>
|
|
28
|
-
`,
|
|
29
|
-
<external_file path="${
|
|
28
|
+
`,d=r?.map(({path:m,content:u})=>`
|
|
29
|
+
<external_file path="${m}">
|
|
30
30
|
<code>
|
|
31
|
-
${
|
|
31
|
+
${u}
|
|
32
32
|
</code>
|
|
33
33
|
</external_file>
|
|
34
34
|
`).join(`
|
|
35
35
|
`)||"";return`
|
|
36
36
|
<task>
|
|
37
37
|
${a}
|
|
38
|
-
${
|
|
39
|
-
${
|
|
38
|
+
${c}
|
|
39
|
+
${d}
|
|
40
40
|
</task>
|
|
41
|
-
`};function
|
|
41
|
+
`};function $(e){return{system:Ce(e),user:ge(e)}}var te={"claude-3.5-sonnet":8192,"claude-3-opus":4096,"claude-3-haiku":4096,"claude-3-sonnet":4096};var he={createRequestBody:(e,t)=>{let n=e==="o1-preview"||e==="o1-mini"?[{role:"user",content:t.user}]:[{role:"system",content:t.system},{role:"user",content:t.user}];return{model:U(e),temperature:M,messages:n}},createHeaders:e=>({"Content-Type":"application/json",Authorization:`Bearer ${e}`}),parseCompletion:e=>e.choices?.length?e.choices[0].message.content:null},fe={createRequestBody:(e,t)=>({model:U(e),temperature:M,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},xe={createRequestBody:(e,t)=>({model:U(e),temperature:M,system:t.system,messages:[{role:"user",content:t.user}],max_tokens:Ee(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:he,groq:fe,anthropic:xe},oe=(e,t,o)=>V[t].createRequestBody(e,o),ne=(e,t)=>V[t].createHeaders(e),re=(e,t)=>V[t].parseCompletion(e),U=e=>G[e],ie=e=>J[e],Ee=e=>te[e]||4096;var j=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??Y,this.validateInputs()}validateInputs(){if(!D.includes(this.provider))throw new Error(`The provider "${this.provider}" is not supported. Please choose a supported provider: ${T(D)}. If you're using a custom model, you don't need to specify a provider.`);if(typeof this.model=="string"&&!B[this.provider].includes(this.model)){let t=T(B[this.provider]);throw new Error(`Model "${this.model}" is not supported by the "${this.provider}" provider. Supported models: ${t}`)}}async complete(t){let{body:o,options:n}=t,{completionMetadata:r}=o,{headers:i={},customPrompt:l}=n??{},s=$(r),a=l?{...s,...l(r)}:s,c=ie(this.provider),d,m=ne(this.apiKey,this.provider);if(typeof this.model=="object"&&"config"in this.model){let u=this.model.config(this.apiKey,a);c=u.endpoint??c,d=u.body??{},m={...m,...u.headers}}else d=oe(this.model,this.provider,a);m={...m,...i};try{let u=await b.POST(c,d,{headers:m}),p;if(typeof this.model=="object"&&"transformResponse"in this.model){let C=this.model.transformResponse(u);p={completion:C.text??C.completion}}else p={completion:re(u,this.provider)};return p}catch(u){return{error:g(u,"COPILOT_COMPLETION_FETCH_ERROR").message,completion:null}}}};var v=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,n=t,r;for(;(r=o.exec(t))!==null;){let i=r[0],l=i.split(`
|
|
42
42
|
`).slice(1,-1).join(`
|
|
43
|
-
`);n=n.replace(i,
|
|
43
|
+
`);n=n.replace(i,l)}return n.trim()}removeExcessiveNewlines(){return this.formattedCompletion=this.formattedCompletion.replace(/\n{3,}/g,`
|
|
44
44
|
|
|
45
|
-
`),this}build(){return this.formattedCompletion}};var L=class{constructor(
|
|
45
|
+
`),this}build(){return this.formattedCompletion}};var L=class{constructor(t,o){this.cursorPos=t,this.mdl=o}shouldProvideCompletions(){return!ee(this.cursorPos,this.mdl)}};var _=class _{constructor(){this.cache=[]}get(t,o){return this.cache.filter(n=>this.isValidCacheItem(n,t,o))}add(t){let o=[...this.cache.slice(-(_.MAX_CACHE_SIZE-1)),t];this.cache=o}clear(){this.cache=[]}isValidCacheItem(t,o,n){let r=n.getValueInRange(t.range);return f(o,n).startsWith(t.textBeforeCursorInLine)&&this.isPositionValid(t,o,r)}isPositionValid(t,o,n){let{range:r,completion:i}=t,{startLineNumber:l,startColumn:s,endColumn:a}=r,{lineNumber:c,column:d}=o,m=c===l&&d===s,u=i.startsWith(n)&&c===l&&d>=s-n.length&&d<=a+n.length;return m||u}};_.MAX_CACHE_SIZE=10;var A=_;var Pe="application/json",W=async({filename:e,endpoint:t,language:o,technologies:n,externalContext:r,mdl:i,pos:l,maxContextLines:s})=>{try{let{completion:a}=await b.POST(t,{completionMetadata:Te({filename:e,pos:l,mdl:i,language:o,technologies:n,externalContext:r,maxContextLines:s})},{headers:{"Content-Type":Pe},error:"Error while fetching completion item"});return a}catch(a){return g(a,"FETCH_COMPLETION_ITEM_ERROR"),null}},Te=({filename:e,pos:t,mdl:o,language:n,technologies:r,externalContext:i,maxContextLines:l})=>{let s=ye(t,o),c=!!i?.length?3:2,d=l?Math.floor(l/c):void 0,m=(x,E,w)=>{let R=x(t,o);return E?F(R,E,w):R},u=(x,E)=>!x||!E?x:x.map(({content:w,...R})=>({...R,content:F(w,E)})),p=m(z,d,{from:"end"}),C=m(Z,d),S=u(i,d);return{filename:e,language:n,technologies:r,externalContext:S,textBeforeCursor:p,textAfterCursor:C,cursorPosition:t,editorState:{completionMode:s}}},ye=(e,t)=>{let o=q(e,t),n=I(e,t);return o?"insert":n.trim()?"complete":"continue"};var se=(e,t,o)=>{if(!o)return{startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column};let n=t.getOffsetAt(e),r=t.getValue().substring(n),i=0,l=0,s=0,a=o.length,c=r.length;if(n>=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 d=Math.min(a,c);for(let p=0;p<d&&o[p]===r[p];p++)i++;for(let p=1;p<=d;p++){let C=o.slice(-p),S=r.slice(0,p);C===S&&(l=p)}if(s=Math.max(i,l),s===0)for(let p=1;p<a;p++){let C=o.substring(p);if(r.startsWith(C)){s=a-p;break}}let m=n+s,u=t.getPositionAt(m);return{startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:u.lineNumber,endColumn:u.column}},le=e=>v.create(e).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),h=e=>({items:e,enableForwardStability:!0});var Oe=300,Re=600,Me={onTyping:H(W,Oe),onIdle:H(W,Re)},N=new A,Ie=async({mdl:e,pos:t,token:o,isCompletionAccepted:n,onShowCompletion:r,options:i})=>{let{trigger:l="onIdle",...s}=i;if(!new L(t,e).shouldProvideCompletions())return h([]);let a=N.get(t,e).map(c=>({insertText:c.completion,range:{...c.range,endColumn:t.column}}));if(a.length>0)return r(),h(a);if(o.isCancellationRequested||n)return h([]);try{let c=l==="onTyping"?"onTyping":"onIdle",d=Me[c];o.onCancellationRequested(()=>{d.cancel()});let m=await d({...s,text:e.getValue(),mdl:e,pos:t});if(m){let u=le(m),p=se(t,e,u);return N.add({completion:u,range:p,textBeforeCursorInLine:f(t,e)}),r(),h([{insertText:u,range:p}])}}catch(c){if(be(c))return h([]);g(c,"FETCH_COMPLETION_ITEM_ERROR")}return h([])},be=e=>typeof e=="string"&&(e==="Cancelled"||e==="AbortError")||e instanceof Error&&(e.message==="Cancelled"||e.name==="AbortError"),ae=Ie;var y=new WeakMap,O=null,pe=(e,t,o)=>{O&&O.deregister();let n=[];y.set(t,{isCompletionAccepted:!1,isCompletionVisible:!1}),t.updateOptions({inlineSuggest:{enabled:!0,mode:"subwordSmart"}});try{let r=e.languages.registerInlineCompletionsProvider(o.language,{provideInlineCompletions:(s,a,c,d)=>{let m=y.get(t);if(m)return ae({mdl:s,pos:a,token:d,isCompletionAccepted:m.isCompletionAccepted,onShowCompletion:()=>{m.isCompletionVisible=!0},options:o})},freeInlineCompletions:()=>{}});n.push(r);let i=t.onKeyDown(s=>{let a=y.get(t);if(!a)return;let c=s.keyCode===e.KeyCode.Tab||s.keyCode===e.KeyCode.RightArrow&&s.metaKey;a.isCompletionVisible&&c?(a.isCompletionAccepted=!0,a.isCompletionVisible=!1):a.isCompletionAccepted=!1});n.push(i);let l={deregister:()=>{n.forEach(s=>s.dispose()),N.clear(),y.delete(t),O=null}};return O=l,l}catch(r){return g(r,"REGISTER_COMPLETION_ERROR"),{deregister:()=>{n.forEach(i=>i.dispose()),y.delete(t),O=null}}}},ve=pe;export{j as Copilot,pe as registerCompletion,ve as registerCopilot};
|