monacopilot 1.1.16 → 1.1.17
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.d.mts +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.global.js +5 -5
- package/build/index.js +3 -3
- package/build/index.mjs +3 -3
- package/package.json +2 -2
package/build/index.d.mts
CHANGED
|
@@ -135,7 +135,7 @@ interface RegisterCompletionOptions {
|
|
|
135
135
|
triggerType: Trigger;
|
|
136
136
|
}) => boolean;
|
|
137
137
|
}
|
|
138
|
-
type Trigger =
|
|
138
|
+
type Trigger = "onTyping" | "onIdle" | "onDemand";
|
|
139
139
|
interface CompletionRegistration {
|
|
140
140
|
/**
|
|
141
141
|
* Triggers the completion.
|
package/build/index.d.ts
CHANGED
|
@@ -135,7 +135,7 @@ interface RegisterCompletionOptions {
|
|
|
135
135
|
triggerType: Trigger;
|
|
136
136
|
}) => boolean;
|
|
137
137
|
}
|
|
138
|
-
type Trigger =
|
|
138
|
+
type Trigger = "onTyping" | "onIdle" | "onDemand";
|
|
139
139
|
interface CompletionRegistration {
|
|
140
140
|
/**
|
|
141
141
|
* Triggers the completion.
|
package/build/index.global.js
CHANGED
|
@@ -2,8 +2,8 @@ var monacopilot=(function(exports){'use strict';var ue=`
|
|
|
2
2
|
|
|
3
3
|
`;var U=["mistral"],Ce={codestral:"codestral-latest"},j={mistral:["codestral"]},ge={mistral:"https://api.mistral.ai/v1/fim/completions"},fe=class{},he=class extends fe{createEndpoint(){return ge.mistral}createRequestBody(t,e,o){return {model:Ce[t],prompt:`${e.context}
|
|
4
4
|
${e.instruction}
|
|
5
|
-
${o.textBeforeCursor}`,suffix:o.textAfterCursor,stream:false,top_p:.1,temperature:.1,max_tokens:256,stop:ue}}createHeaders(t){return {"Content-Type":"application/json",Authorization:`Bearer ${t}`}}parseCompletion(t){let e=t.choices?.[0]?.message.content;return e?Array.isArray(e)?e.filter(o=>"text"in o).map(o=>o.text).join(""):e:null}},
|
|
6
|
-
${H(e)}`:""}${N}`);},
|
|
5
|
+
${o.textBeforeCursor}`,suffix:o.textAfterCursor,stream:false,top_p:.1,temperature:.1,max_tokens:256,stop:ue}}createHeaders(t){return {"Content-Type":"application/json",Authorization:`Bearer ${t}`}}parseCompletion(t){let e=t.choices?.[0]?.message.content;return e?Array.isArray(e)?e.filter(o=>"text"in o).map(o=>o.text).join(""):e:null}},P={mistral:new he},Ee=(t,e,o)=>P[o].createEndpoint(t,e),ye=(t,e,o,r)=>P[e].createRequestBody(t,o,r),Re=(t,e)=>P[e].createHeaders(t),xe=(t,e)=>P[e].parseCompletion(t),N="\x1B[0m",F="\x1B[1m",H=t=>t instanceof Error?t.message:typeof t=="string"?t:"An unknown error occurred",ve=t=>{let e=H(t),o=`${F}[MONACOPILOT ERROR] ${e}${N}`;return console.error(o),{message:e}},Te=(t,e)=>{console.warn(`${F}[MONACOPILOT WARN] ${t}${e?`
|
|
6
|
+
${H(e)}`:""}${N}`);},Pe=(t,e,o)=>console.warn(`${F}[MONACOPILOT DEPRECATED] "${t}" is deprecated${o?` in ${o}`:""}. Please use "${e}" instead. It will be removed in a future version.${N}`),f={report:ve,warn:Te,warnDeprecated:Pe},be=async(t,e={},o=2e4)=>{let r=new AbortController,{signal:n}=r,i=setTimeout(()=>{r.abort();},o);try{return await fetch(t,{...e,signal:n})}catch(s){throw s instanceof DOMException&&s.name==="AbortError"?new Error(`Request timed out after ${o}ms`):s}finally{clearTimeout(i);}},K=t=>!t||t.length===0?"":t.length===1?t[0]:`${t.slice(0,-1).join(", ")} and ${t.slice(-1)}`,Oe=(t,e)=>{if(!t&&typeof e.model!="function")throw new Error(e.provider?`Please provide the ${e.provider} API key.`:"Please provide an API key.");if(!e||typeof e=="object"&&Object.keys(e).length===0)throw new Error('Please provide required Copilot options, such as "model" and "provider".')},Le=(t,e)=>{if(typeof t=="function"&&e!==void 0)throw new Error("Provider should not be specified when using a custom model.");if(typeof t!="function"&&(!e||!U.includes(e)))throw new Error(`Provider must be specified and supported when using built-in models. Please choose from: ${K(U)}`);if(typeof t=="string"&&e!==void 0&&!j[e].includes(t))throw new Error(`Model "${t}" is not supported by the "${e}" provider. Supported models: ${K(j[e])}`)},V={params:Oe,inputs:Le},W=class{constructor(t,e){V.params(t,e),this.apiKey=t??"",this.provider=e.provider,this.model=e.model,V.inputs(this.model,this.provider);}generatePrompt(t,e){let o=this.getDefaultPrompt(t);return e?{...o,...e(t)}:o}async makeAIRequest(t,e={}){try{let o=this.generatePrompt(t,e.customPrompt);if(this.isCustomModel())return this.model(o);{let{customHeaders:r={}}=e,n=await this.prepareRequest(o,t),i=await this.sendRequest(n.endpoint,n.requestBody,{...n.headers,...r});return this.processResponse(i)}}catch(o){return this.handleError(o)}}async prepareRequest(t,e){if(!this.provider)throw new Error("Provider is required for non-custom models");return {endpoint:Ee(this.model,this.apiKey,this.provider),headers:Re(this.apiKey,this.provider),requestBody:ye(this.model,this.provider,t,e)}}processResponse(t){if(!this.provider)throw new Error("Provider is required for non-custom models");return {text:xe(t,this.provider),raw:t}}isCustomModel(){return typeof this.model=="function"}async sendRequest(t,e,o){let r=await be(t,{method:"POST",headers:{"Content-Type":"application/json",...o},body:JSON.stringify(e)});if(!r.ok)throw new Error(await r.text());return r.json()}handleError(t){return {text:null,error:f.report(t).message}}};var z=t=>!t||t.length===0?"":t.length===1?t[0]:`${t.slice(0,-1).join(", ")} and ${t.slice(-1)}`;var B=(t,e,o={})=>{if(e<=0)return "";let r=t.split(`
|
|
7
7
|
`),n=r.length;if(e>=n)return t;if(o.truncateDirection==="keepEnd"){let s=r.slice(-e);return s.every(a=>a==="")?`
|
|
8
8
|
`.repeat(e):s.join(`
|
|
9
9
|
`)}let i=r.slice(0,e);return i.every(s=>s==="")?`
|
|
@@ -17,10 +17,10 @@ ${c}`).join(`
|
|
|
17
17
|
`:""}${a}`},we=t=>{let{textBeforeCursor:e,textAfterCursor:o}=t;return `**Current code:**
|
|
18
18
|
\`\`\`
|
|
19
19
|
${e}${Me}${o}
|
|
20
|
-
\`\`\``};var
|
|
21
|
-
|
|
20
|
+
\`\`\``};var b=class extends W{async complete(e){let{body:o,options:r}=e,{customPrompt:n,headers:i}=r??{},{completionMetadata:s}=o,{text:a,raw:l,error:c}=await this.makeAIRequest(s,{customPrompt:n,customHeaders:i});return {completion:a,raw:l,error:c}}getDefaultPrompt(e){return G(e)}};var Y=100,J=true,O="onIdle",Q=true,Z=120,ee=400,te=0;var E=(t,e)=>e.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:t.lineNumber,endColumn:t.column}),oe=(t,e)=>e.getValueInRange({startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:e.getLineCount(),endColumn:e.getLineMaxColumn(e.getLineCount())}),re=t=>t.getValue();var L=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 A=class A{constructor(){this.cache=new L(A.MAX_CACHE_SIZE);}get(e,o){return this.cache.getAll().filter(r=>this.isValidCacheItem(r,e,o))}add(e){e.completion.trim()&&this.cache.enqueue(e);}clear(){this.cache.clear();}isValidCacheItem(e,o,r){let n=e.textBeforeCursor.trim(),i=E(o,r),s=i,a=r.getLineContent(o.lineNumber);if(o.column===a.length+1&&o.lineNumber<r.getLineCount()){let c=r.getLineContent(o.lineNumber+1);s=`${i}
|
|
21
|
+
${c}`;}if(!(s.trim().includes(n)||n.includes(s.trim())))return false;let l=r.getValueInRange(e.range);return this.isPartialMatch(l,e.completion)?this.isPositionValid(e,o):false}isPartialMatch(e,o){let r=e.trim(),n=o.trim();return n.startsWith(r)||r.startsWith(n)}isPositionValid(e,o){let{range:r}=e,{startLineNumber:n,startColumn:i,endLineNumber:s,endColumn:a}=r,{lineNumber:l,column:c}=o;return l<n||l>s?false:n===s?c>=i-1&&c<=a+1:l===n?c>=i-1:l===s?c<=a+1:true}};A.MAX_CACHE_SIZE=20;var M=A;var I=class{constructor(e){this.formattedCompletion="";this.formattedCompletion=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=e.split(`
|
|
22
22
|
`),r=[],n=false;for(let i=0;i<o.length;i++){let s=o[i],a=s.trim().startsWith("```");if(a&&!n){n=true;continue}if(a&&n){n=false;continue}r.push(s);}return r.join(`
|
|
23
23
|
`)}removeExcessiveNewlines(){return this.formattedCompletion=this.formattedCompletion.replace(/\n{3,}/g,`
|
|
24
24
|
|
|
25
25
|
`),this}build(){return this.formattedCompletion}};var w=class{findOverlaps(e,o,r){if(!e)return {startOverlapLength:0,maxOverlapLength:0};let n=e.length,i=o.length,s=r.length,a=0,l=0,c=0,m=Math.min(n,i);for(let p=1;p<=m;p++){let h=e.substring(0,p),u=o.slice(-p);h===u&&(c=p);}let C=Math.min(n,s);for(let p=0;p<C&&e[p]===r[p];p++)a++;for(let p=1;p<=C;p++)e.slice(-p)===r.slice(0,p)&&(l=p);let d=Math.max(a,l);if(d===0){for(let p=1;p<n;p++)if(r.startsWith(e.substring(p))){d=n-p;break}}return {startOverlapLength:c,maxOverlapLength:d}}};var D=class{constructor(e){this.monaco=e;this.textOverlapCalculator=new w;}computeInsertionRange(e,o,r){if(!o)return this.createEmptyRange(e);let n=r.getOffsetAt(e),i=r.getValue().substring(0,n),s=r.getValue().substring(n);if(n>=r.getValue().length)return this.createEmptyRange(e);if(s.length===0)return this.createEmptyRange(e);let{startOverlapLength:a,maxOverlapLength:l}=this.textOverlapCalculator.findOverlaps(o,i,s),c=a>0?r.getPositionAt(n-a):e,m=n+l,C=r.getPositionAt(m);return new this.monaco.Range(c.lineNumber,c.column,C.lineNumber,C.column)}computeCacheRange(e,o){let r=e.lineNumber,n=e.column,i=o.split(`
|
|
26
|
-
`),s=i.length-1,a=r+s,l=s===0?n+i[0].length:i[s].length+1;return new this.monaco.Range(r,n,a,l)}createEmptyRange(e){return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column)}};var ne=async t=>{let{endpoint:e,body:o}=t,r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok)throw new Error(`Error while fetching completion item: ${r.statusText}`);let{completion:n,error:i}=await r.json();if(i)throw new Error(i);return {completion:n}},ie=({pos:t,mdl:e,options:o})=>{let{filename:r,language:n,technologies:i,relatedFiles:s,maxContextLines:a=Y}=o,c=s&&s.length>0?3:2,m=a?Math.floor(a/c):void 0,C=(g,R,S)=>{let T=g(t,e);return R?
|
|
26
|
+
`),s=i.length-1,a=r+s,l=s===0?n+i[0].length:i[s].length+1;return new this.monaco.Range(r,n,a,l)}createEmptyRange(e){return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column)}};var ne=async t=>{let{endpoint:e,body:o}=t,r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok)throw new Error(`Error while fetching completion item: ${r.statusText}`);let{completion:n,error:i}=await r.json();if(i)throw new Error(i);return {completion:n}},ie=({pos:t,mdl:e,options:o})=>{let{filename:r,language:n,technologies:i,relatedFiles:s,maxContextLines:a=Y}=o,c=s&&s.length>0?3:2,m=a?Math.floor(a/c):void 0,C=(g,R,S)=>{let T=g(t,e);return R?B(T,R,S):T},d=(g,R)=>!g||!R?g:g.map(({content:S,...T})=>({...T,content:B(S,R)})),p=C(E,m,{truncateDirection:"keepEnd"}),h=C(oe,m,{truncateDirection:"keepStart"}),u=d(s,m);return {filename:r,language:n,technologies:i,relatedFiles:u,textBeforeCursor:p,textAfterCursor:h,cursorPosition:t}};var se=(t,e=300)=>{let o=null,r=null,n=(...i)=>{if(r)return r.args=i,r.promise;let s,a,l=new Promise((c,m)=>{s=c,a=m;});return r={args:i,promise:l,resolve:s,reject:a},o&&(clearTimeout(o),o=null),o=setTimeout(async()=>{let c=r;if(c){r=null,o=null;try{let m=await t(...c.args);c.resolve(m);}catch(m){c.reject(m);}}},e),l};return n.cancel=()=>{o&&(clearTimeout(o),o=null),r&&(r.reject(new Error("Cancelled")),r=null);},n};var ae=t=>typeof t=="string"?t==="Cancelled"||t==="AbortError":t instanceof Error?t.message==="Cancelled"||t.name==="AbortError":false;var y=t=>({items:t,enableForwardStability:true});var _=new M,le=async({monaco:t,mdl:e,pos:o,token:r,isCompletionAccepted:n,options:i})=>{let{trigger:s=O,endpoint:a,enableCaching:l=J,allowFollowUpCompletions:c=Q,onError:m,requestHandler:C}=i;if(l&&!n){let d=_.get(o,e).map(p=>({insertText:p.completion,range:p.range}));if(d.length>0)return y(d)}if(r.isCancellationRequested||!c&&n)return y([]);try{let d=se(u=>(i.onCompletionRequested?.(u),C?.(u)??ne(u)),{onTyping:Z,onIdle:ee,onDemand:te}[s]);r.onCancellationRequested(()=>{d.cancel();});let p=ie({pos:o,mdl:e,options:i}),{completion:h}=await d({endpoint:a,body:{completionMetadata:p}});if(h){let u=new I(h).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),g=new D(t);return l&&_.add({completion:u,range:g.computeCacheRange(o,u),textBeforeCursor:E(o,e)}),y([{insertText:u,range:g.computeInsertionRange(o,u,e)}])}}catch(d){if(ae(d))return y([]);m?m(d):f.warn("Cannot provide completion",d);}return y([])};var k=new WeakMap,x=t=>k.get(t),pe=(t,e)=>{k.set(t,e);},$=t=>{k.delete(t);},ce=()=>({isCompletionAccepted:false,isCompletionVisible:false,isExplicitlyTriggered:false,hasRejectedCurrentCompletion:false});var me=(t,e,o)=>{let r=x(e);return r?t.languages.registerInlineCompletionsProvider(o.language,{provideInlineCompletions:(n,i,s,a)=>{if(!(o.trigger==="onDemand"&&!r.isExplicitlyTriggered||o.triggerIf&&!o.triggerIf({text:re(e),position:i,triggerType:o.trigger??O})))return le({monaco:t,mdl:n,pos:i,token:a,isCompletionAccepted:r.isCompletionAccepted,options:o})},handleItemDidShow:(n,i,s)=>{r.isExplicitlyTriggered=false,r.hasRejectedCurrentCompletion=false,!r.isCompletionAccepted&&(r.isCompletionVisible=true,o.onCompletionShown?.(s,i.range));},freeInlineCompletions:()=>{}}):null};var De={TAB:(t,e)=>e.keyCode===t.KeyCode.Tab,CMD_RIGHT_ARROW:(t,e)=>e.keyCode===t.KeyCode.RightArrow&&e.metaKey},q=class{constructor(e,o,r){this.monaco=e;this.state=o;this.options=r;}handleKeyEvent(e){let o={monaco:this.monaco,event:e,state:this.state,options:this.options};this.handleCompletionAcceptance(o),this.handleCompletionRejection(o);}handleCompletionAcceptance(e){return e.state.isCompletionVisible&&this.isAcceptanceKey(e.event)?(e.options.onCompletionAccepted?.(),e.state.isCompletionAccepted=true,e.state.isCompletionVisible=false,true):(e.state.isCompletionAccepted=false,false)}handleCompletionRejection(e){return this.shouldRejectCompletion(e)?(e.options.onCompletionRejected?.(),e.state.hasRejectedCurrentCompletion=true,true):false}shouldRejectCompletion(e){return e.state.isCompletionVisible&&!e.state.hasRejectedCurrentCompletion&&!e.state.isCompletionAccepted&&!this.isAcceptanceKey(e.event)}isAcceptanceKey(e){return Object.values(De).some(o=>o(this.monaco,e))}},de=(t,e,o,r)=>{let n=new q(t,o,r);return e.onKeyDown(i=>n.handleKeyEvent(i))};var v=null,_e=(t,e,o)=>{v&&v.deregister();let r=[];pe(e,ce()),e.updateOptions({inlineSuggest:{enabled:true}});try{let n=x(e);if(!n)return f.warn("Completion is not registered properly. State not found."),Ne();let i=me(t,e,o);i&&r.push(i);let s=de(t,e,n,o);r.push(s);let a={deregister:()=>{for(let l of r)l.dispose();_.clear(),$(e),v=null;},trigger:()=>Se(e)};return v=a,a}catch(n){return o.onError?o.onError(n):f.report(n),{deregister:()=>{for(let i of r)i.dispose();$(e),v=null;},trigger:()=>{}}}},Se=t=>{let e=x(t);if(!e){f.warn("Completion is not registered. Use `registerCompletion` to register completion first.");return}e.isExplicitlyTriggered=true,t.trigger("keyboard","editor.action.inlineSuggest.trigger",{});},Ne=()=>({deregister:()=>{},trigger:()=>{}});var $t=b;exports.CompletionCopilot=b;exports.Copilot=$t;exports.registerCompletion=_e;return exports;})({});
|
package/build/index.js
CHANGED
|
@@ -12,10 +12,10 @@ ${c}`).join(`
|
|
|
12
12
|
`:""}${a}`},ae=n=>{let{textBeforeCursor:e,textAfterCursor:t}=n;return `**Current code:**
|
|
13
13
|
\`\`\`
|
|
14
14
|
${e}${re}${t}
|
|
15
|
-
\`\`\``};var T=class extends core.Copilot{async complete(e){let{body:t,options:o}=e,{customPrompt:r,headers:i}=o??{},{completionMetadata:s}=t,{text:a,raw:l,error:c}=await this.makeAIRequest(s,{customPrompt:r,customHeaders:i});return {completion:a,raw:l,error:c}}getDefaultPrompt(e){return U(e)}};var q=100,K=true,v="onIdle",V=true,H=120,$=400,W=0;var h=(n,e)=>e.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:n.lineNumber,endColumn:n.column}),z=(n,e)=>e.getValueInRange({startLineNumber:n.lineNumber,startColumn:n.column,endLineNumber:e.getLineCount(),endColumn:e.getLineMaxColumn(e.getLineCount())}),G=n=>n.getValue();var P=class{constructor(e){this.capacity=e;this.head=0;this.tail=0;this.size=0;this.buffer=new Array(e);}enqueue(e){let t;return this.size===this.capacity&&(t=this.dequeue()),this.buffer[this.tail]=e,this.tail=(this.tail+1)%this.capacity,this.size++,t}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 L=class L{constructor(){this.cache=new P(L.MAX_CACHE_SIZE);}get(e,t){return this.cache.getAll().filter(o=>this.isValidCacheItem(o,e,t))}add(e){e.completion.trim()&&this.cache.enqueue(e);}clear(){this.cache.clear();}isValidCacheItem(e,t,o){let r=e.textBeforeCursor.trim(),i=h(t,o),s=i,a=o.getLineContent(t.lineNumber);if(t.column===a.length+1&&t.lineNumber<o.getLineCount()){let c=o.getLineContent(t.lineNumber+1);s
|
|
16
|
-
|
|
15
|
+
\`\`\``};var T=class extends core.Copilot{async complete(e){let{body:t,options:o}=e,{customPrompt:r,headers:i}=o??{},{completionMetadata:s}=t,{text:a,raw:l,error:c}=await this.makeAIRequest(s,{customPrompt:r,customHeaders:i});return {completion:a,raw:l,error:c}}getDefaultPrompt(e){return U(e)}};var q=100,K=true,v="onIdle",V=true,H=120,$=400,W=0;var h=(n,e)=>e.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:n.lineNumber,endColumn:n.column}),z=(n,e)=>e.getValueInRange({startLineNumber:n.lineNumber,startColumn:n.column,endLineNumber:e.getLineCount(),endColumn:e.getLineMaxColumn(e.getLineCount())}),G=n=>n.getValue();var P=class{constructor(e){this.capacity=e;this.head=0;this.tail=0;this.size=0;this.buffer=new Array(e);}enqueue(e){let t;return this.size===this.capacity&&(t=this.dequeue()),this.buffer[this.tail]=e,this.tail=(this.tail+1)%this.capacity,this.size++,t}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 L=class L{constructor(){this.cache=new P(L.MAX_CACHE_SIZE);}get(e,t){return this.cache.getAll().filter(o=>this.isValidCacheItem(o,e,t))}add(e){e.completion.trim()&&this.cache.enqueue(e);}clear(){this.cache.clear();}isValidCacheItem(e,t,o){let r=e.textBeforeCursor.trim(),i=h(t,o),s=i,a=o.getLineContent(t.lineNumber);if(t.column===a.length+1&&t.lineNumber<o.getLineCount()){let c=o.getLineContent(t.lineNumber+1);s=`${i}
|
|
16
|
+
${c}`;}if(!(s.trim().includes(r)||r.includes(s.trim())))return false;let l=o.getValueInRange(e.range);return this.isPartialMatch(l,e.completion)?this.isPositionValid(e,t):false}isPartialMatch(e,t){let o=e.trim(),r=t.trim();return r.startsWith(o)||o.startsWith(r)}isPositionValid(e,t){let{range:o}=e,{startLineNumber:r,startColumn:i,endLineNumber:s,endColumn:a}=o,{lineNumber:l,column:c}=t;return l<r||l>s?false:r===s?c>=i-1&&c<=a+1:l===r?c>=i-1:l===s?c<=a+1:true}};L.MAX_CACHE_SIZE=20;var M=L;var O=class{constructor(e){this.formattedCompletion="";this.formattedCompletion=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 t=e.split(`
|
|
17
17
|
`),o=[],r=false;for(let i=0;i<t.length;i++){let s=t[i],a=s.trim().startsWith("```");if(a&&!r){r=true;continue}if(a&&r){r=false;continue}o.push(s);}return o.join(`
|
|
18
18
|
`)}removeExcessiveNewlines(){return this.formattedCompletion=this.formattedCompletion.replace(/\n{3,}/g,`
|
|
19
19
|
|
|
20
20
|
`),this}build(){return this.formattedCompletion}};var I=class{findOverlaps(e,t,o){if(!e)return {startOverlapLength:0,maxOverlapLength:0};let r=e.length,i=t.length,s=o.length,a=0,l=0,c=0,m=Math.min(r,i);for(let p=1;p<=m;p++){let f=e.substring(0,p),u=t.slice(-p);f===u&&(c=p);}let C=Math.min(r,s);for(let p=0;p<C&&e[p]===o[p];p++)a++;for(let p=1;p<=C;p++)e.slice(-p)===o.slice(0,p)&&(l=p);let d=Math.max(a,l);if(d===0){for(let p=1;p<r;p++)if(o.startsWith(e.substring(p))){d=r-p;break}}return {startOverlapLength:c,maxOverlapLength:d}}};var A=class{constructor(e){this.monaco=e;this.textOverlapCalculator=new I;}computeInsertionRange(e,t,o){if(!t)return this.createEmptyRange(e);let r=o.getOffsetAt(e),i=o.getValue().substring(0,r),s=o.getValue().substring(r);if(r>=o.getValue().length)return this.createEmptyRange(e);if(s.length===0)return this.createEmptyRange(e);let{startOverlapLength:a,maxOverlapLength:l}=this.textOverlapCalculator.findOverlaps(t,i,s),c=a>0?o.getPositionAt(r-a):e,m=r+l,C=o.getPositionAt(m);return new this.monaco.Range(c.lineNumber,c.column,C.lineNumber,C.column)}computeCacheRange(e,t){let o=e.lineNumber,r=e.column,i=t.split(`
|
|
21
|
-
`),s=i.length-1,a=o+s,l=s===0?r+i[0].length:i[s].length+1;return new this.monaco.Range(o,r,a,l)}createEmptyRange(e){return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column)}};var X=async n=>{let{endpoint:e,body:t}=n,o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok)throw new Error(`Error while fetching completion item: ${o.statusText}`);let{completion:r,error:i}=await o.json();if(i)throw new Error(i);return {completion:r}},Y=({pos:n,mdl:e,options:t})=>{let{filename:o,language:r,technologies:i,relatedFiles:s,maxContextLines:a=q}=t,c=s&&s.length>0?3:2,m=a?Math.floor(a/c):void 0,C=(g,y,w)=>{let b=g(n,e);return y?D(b,y,w):b},d=(g,y)=>!g||!y?g:g.map(({content:w,...b})=>({...b,content:D(w,y)})),p=C(h,m,{truncateDirection:"keepEnd"}),f=C(z,m,{truncateDirection:"keepStart"}),u=d(s,m);return {filename:o,language:r,technologies:i,relatedFiles:u,textBeforeCursor:p,textAfterCursor:f,cursorPosition:n}};var Z=(n,e=300)=>{let t=null,o=null,r=(...i)=>{if(o)return o.args=i,o.promise;let s,a,l=new Promise((c,m)=>{s=c,a=m;});return o={args:i,promise:l,resolve:s,reject:a},t&&(clearTimeout(t),t=null),t=setTimeout(async()=>{let c=o;if(c){o=null,t=null;try{let m=await n(...c.args);c.resolve(m);}catch(m){c.reject(m);}}},e),l};return r.cancel=()=>{t&&(clearTimeout(t),t=null),o&&(o.reject(new Error("Cancelled")),o=null);},r};var J=n=>typeof n=="string"?n==="Cancelled"||n==="AbortError":n instanceof Error?n.message==="Cancelled"||n.name==="AbortError":false;var E=n=>({items:n,enableForwardStability:true});var S=new M,Q=async({monaco:n,mdl:e,pos:t,token:o,isCompletionAccepted:r,options:i})=>{let{trigger:s=v,endpoint:a,enableCaching:l=K,allowFollowUpCompletions:c=V,onError:m,requestHandler:C}=i;if(l&&!r){let d=S.get(t,e).map(p=>({insertText:p.completion,range:p.range}));if(d.length>0)return E(d)}if(o.isCancellationRequested||!c&&r)return E([]);try{let d=Z(u=>(i.onCompletionRequested?.(u),C?.(u)??X(u)),{onTyping:H,onIdle:$,onDemand:W}[s]);o.onCancellationRequested(()=>{d.cancel();});let p=Y({pos:t,mdl:e,options:i}),{completion:f}=await d({endpoint:a,body:{completionMetadata:p}});if(f){let u=new O(f).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),g=new A(n);return l&&S.add({completion:u,range:g.computeCacheRange(t,u),textBeforeCursor:h(t,e)}),E([{insertText:u,range:g.computeInsertionRange(t,u,e)}])}}catch(d){if(J(d))return E([]);m?m(d):core.logger.warn("Cannot provide completion",d);}return E([])};var F=new WeakMap,x=n=>F.get(n),ee=(n,e)=>{F.set(n,e);},N=n=>{F.delete(n);},te=()=>({isCompletionAccepted:false,isCompletionVisible:false,isExplicitlyTriggered:false,hasRejectedCurrentCompletion:false});var oe=(n,e,t)=>{let o=x(e);return o?n.languages.registerInlineCompletionsProvider(t.language,{provideInlineCompletions:(r,i,s,a)=>{if(!(t.trigger==="onDemand"&&!o.isExplicitlyTriggered||t.triggerIf&&!t.triggerIf({text:G(e),position:i,triggerType:t.trigger??v})))return Q({monaco:n,mdl:r,pos:i,token:a,isCompletionAccepted:o.isCompletionAccepted,options:t})},handleItemDidShow:(r,i,s)=>{o.isExplicitlyTriggered=false,o.hasRejectedCurrentCompletion=false,!o.isCompletionAccepted&&(o.isCompletionVisible=true,t.onCompletionShown?.(s,i.range));},freeInlineCompletions:()=>{}}):null};var ce={TAB:(n,e)=>e.keyCode===n.KeyCode.Tab,CMD_RIGHT_ARROW:(n,e)=>e.keyCode===n.KeyCode.RightArrow&&e.metaKey},_=class{constructor(e,t,o){this.monaco=e;this.state=t;this.options=o;}handleKeyEvent(e){let t={monaco:this.monaco,event:e,state:this.state,options:this.options};this.handleCompletionAcceptance(t),this.handleCompletionRejection(t);}handleCompletionAcceptance(e){return e.state.isCompletionVisible&&this.isAcceptanceKey(e.event)?(e.options.onCompletionAccepted?.(),e.state.isCompletionAccepted=true,e.state.isCompletionVisible=false,true):(e.state.isCompletionAccepted=false,false)}handleCompletionRejection(e){return this.shouldRejectCompletion(e)?(e.options.onCompletionRejected?.(),e.state.hasRejectedCurrentCompletion=true,true):false}shouldRejectCompletion(e){return e.state.isCompletionVisible&&!e.state.hasRejectedCurrentCompletion&&!e.state.isCompletionAccepted&&!this.isAcceptanceKey(e.event)}isAcceptanceKey(e){return Object.values(ce).some(t=>t(this.monaco,e))}},ne=(n,e,t,o)=>{let r=new _(n,t,o);return e.onKeyDown(i=>r.handleKeyEvent(i))};var R=null,me=(n,e,t)=>{R&&R.deregister();let o=[];ee(e,te()),e.updateOptions({inlineSuggest:{enabled:true}});try{let r=x(e);if(!r)return core.logger.warn("Completion is not registered properly. State not found."),ue();let i=oe(n,e,t);i&&o.push(i);let s=ne(n,e,r,t);o.push(s);let a={deregister:()=>{
|
|
21
|
+
`),s=i.length-1,a=o+s,l=s===0?r+i[0].length:i[s].length+1;return new this.monaco.Range(o,r,a,l)}createEmptyRange(e){return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column)}};var X=async n=>{let{endpoint:e,body:t}=n,o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok)throw new Error(`Error while fetching completion item: ${o.statusText}`);let{completion:r,error:i}=await o.json();if(i)throw new Error(i);return {completion:r}},Y=({pos:n,mdl:e,options:t})=>{let{filename:o,language:r,technologies:i,relatedFiles:s,maxContextLines:a=q}=t,c=s&&s.length>0?3:2,m=a?Math.floor(a/c):void 0,C=(g,y,w)=>{let b=g(n,e);return y?D(b,y,w):b},d=(g,y)=>!g||!y?g:g.map(({content:w,...b})=>({...b,content:D(w,y)})),p=C(h,m,{truncateDirection:"keepEnd"}),f=C(z,m,{truncateDirection:"keepStart"}),u=d(s,m);return {filename:o,language:r,technologies:i,relatedFiles:u,textBeforeCursor:p,textAfterCursor:f,cursorPosition:n}};var Z=(n,e=300)=>{let t=null,o=null,r=(...i)=>{if(o)return o.args=i,o.promise;let s,a,l=new Promise((c,m)=>{s=c,a=m;});return o={args:i,promise:l,resolve:s,reject:a},t&&(clearTimeout(t),t=null),t=setTimeout(async()=>{let c=o;if(c){o=null,t=null;try{let m=await n(...c.args);c.resolve(m);}catch(m){c.reject(m);}}},e),l};return r.cancel=()=>{t&&(clearTimeout(t),t=null),o&&(o.reject(new Error("Cancelled")),o=null);},r};var J=n=>typeof n=="string"?n==="Cancelled"||n==="AbortError":n instanceof Error?n.message==="Cancelled"||n.name==="AbortError":false;var E=n=>({items:n,enableForwardStability:true});var S=new M,Q=async({monaco:n,mdl:e,pos:t,token:o,isCompletionAccepted:r,options:i})=>{let{trigger:s=v,endpoint:a,enableCaching:l=K,allowFollowUpCompletions:c=V,onError:m,requestHandler:C}=i;if(l&&!r){let d=S.get(t,e).map(p=>({insertText:p.completion,range:p.range}));if(d.length>0)return E(d)}if(o.isCancellationRequested||!c&&r)return E([]);try{let d=Z(u=>(i.onCompletionRequested?.(u),C?.(u)??X(u)),{onTyping:H,onIdle:$,onDemand:W}[s]);o.onCancellationRequested(()=>{d.cancel();});let p=Y({pos:t,mdl:e,options:i}),{completion:f}=await d({endpoint:a,body:{completionMetadata:p}});if(f){let u=new O(f).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),g=new A(n);return l&&S.add({completion:u,range:g.computeCacheRange(t,u),textBeforeCursor:h(t,e)}),E([{insertText:u,range:g.computeInsertionRange(t,u,e)}])}}catch(d){if(J(d))return E([]);m?m(d):core.logger.warn("Cannot provide completion",d);}return E([])};var F=new WeakMap,x=n=>F.get(n),ee=(n,e)=>{F.set(n,e);},N=n=>{F.delete(n);},te=()=>({isCompletionAccepted:false,isCompletionVisible:false,isExplicitlyTriggered:false,hasRejectedCurrentCompletion:false});var oe=(n,e,t)=>{let o=x(e);return o?n.languages.registerInlineCompletionsProvider(t.language,{provideInlineCompletions:(r,i,s,a)=>{if(!(t.trigger==="onDemand"&&!o.isExplicitlyTriggered||t.triggerIf&&!t.triggerIf({text:G(e),position:i,triggerType:t.trigger??v})))return Q({monaco:n,mdl:r,pos:i,token:a,isCompletionAccepted:o.isCompletionAccepted,options:t})},handleItemDidShow:(r,i,s)=>{o.isExplicitlyTriggered=false,o.hasRejectedCurrentCompletion=false,!o.isCompletionAccepted&&(o.isCompletionVisible=true,t.onCompletionShown?.(s,i.range));},freeInlineCompletions:()=>{}}):null};var ce={TAB:(n,e)=>e.keyCode===n.KeyCode.Tab,CMD_RIGHT_ARROW:(n,e)=>e.keyCode===n.KeyCode.RightArrow&&e.metaKey},_=class{constructor(e,t,o){this.monaco=e;this.state=t;this.options=o;}handleKeyEvent(e){let t={monaco:this.monaco,event:e,state:this.state,options:this.options};this.handleCompletionAcceptance(t),this.handleCompletionRejection(t);}handleCompletionAcceptance(e){return e.state.isCompletionVisible&&this.isAcceptanceKey(e.event)?(e.options.onCompletionAccepted?.(),e.state.isCompletionAccepted=true,e.state.isCompletionVisible=false,true):(e.state.isCompletionAccepted=false,false)}handleCompletionRejection(e){return this.shouldRejectCompletion(e)?(e.options.onCompletionRejected?.(),e.state.hasRejectedCurrentCompletion=true,true):false}shouldRejectCompletion(e){return e.state.isCompletionVisible&&!e.state.hasRejectedCurrentCompletion&&!e.state.isCompletionAccepted&&!this.isAcceptanceKey(e.event)}isAcceptanceKey(e){return Object.values(ce).some(t=>t(this.monaco,e))}},ne=(n,e,t,o)=>{let r=new _(n,t,o);return e.onKeyDown(i=>r.handleKeyEvent(i))};var R=null,me=(n,e,t)=>{R&&R.deregister();let o=[];ee(e,te()),e.updateOptions({inlineSuggest:{enabled:true}});try{let r=x(e);if(!r)return core.logger.warn("Completion is not registered properly. State not found."),ue();let i=oe(n,e,t);i&&o.push(i);let s=ne(n,e,r,t);o.push(s);let a={deregister:()=>{for(let l of o)l.dispose();S.clear(),N(e),R=null;},trigger:()=>de(e)};return R=a,a}catch(r){return t.onError?t.onError(r):core.logger.report(r),{deregister:()=>{for(let i of o)i.dispose();N(e),R=null;},trigger:()=>{}}}},de=n=>{let e=x(n);if(!e){core.logger.warn("Completion is not registered. Use `registerCompletion` to register completion first.");return}e.isExplicitlyTriggered=true,n.trigger("keyboard","editor.action.inlineSuggest.trigger",{});},ue=()=>({deregister:()=>{},trigger:()=>{}});var ut=T;exports.CompletionCopilot=T;exports.Copilot=ut;exports.registerCompletion=me;
|
package/build/index.mjs
CHANGED
|
@@ -12,10 +12,10 @@ ${c}`).join(`
|
|
|
12
12
|
`:""}${a}`},ae=n=>{let{textBeforeCursor:e,textAfterCursor:t}=n;return `**Current code:**
|
|
13
13
|
\`\`\`
|
|
14
14
|
${e}${re}${t}
|
|
15
|
-
\`\`\``};var T=class extends Copilot{async complete(e){let{body:t,options:o}=e,{customPrompt:r,headers:i}=o??{},{completionMetadata:s}=t,{text:a,raw:l,error:c}=await this.makeAIRequest(s,{customPrompt:r,customHeaders:i});return {completion:a,raw:l,error:c}}getDefaultPrompt(e){return U(e)}};var q=100,K=true,v="onIdle",V=true,H=120,$=400,W=0;var h=(n,e)=>e.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:n.lineNumber,endColumn:n.column}),z=(n,e)=>e.getValueInRange({startLineNumber:n.lineNumber,startColumn:n.column,endLineNumber:e.getLineCount(),endColumn:e.getLineMaxColumn(e.getLineCount())}),G=n=>n.getValue();var P=class{constructor(e){this.capacity=e;this.head=0;this.tail=0;this.size=0;this.buffer=new Array(e);}enqueue(e){let t;return this.size===this.capacity&&(t=this.dequeue()),this.buffer[this.tail]=e,this.tail=(this.tail+1)%this.capacity,this.size++,t}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 L=class L{constructor(){this.cache=new P(L.MAX_CACHE_SIZE);}get(e,t){return this.cache.getAll().filter(o=>this.isValidCacheItem(o,e,t))}add(e){e.completion.trim()&&this.cache.enqueue(e);}clear(){this.cache.clear();}isValidCacheItem(e,t,o){let r=e.textBeforeCursor.trim(),i=h(t,o),s=i,a=o.getLineContent(t.lineNumber);if(t.column===a.length+1&&t.lineNumber<o.getLineCount()){let c=o.getLineContent(t.lineNumber+1);s
|
|
16
|
-
|
|
15
|
+
\`\`\``};var T=class extends Copilot{async complete(e){let{body:t,options:o}=e,{customPrompt:r,headers:i}=o??{},{completionMetadata:s}=t,{text:a,raw:l,error:c}=await this.makeAIRequest(s,{customPrompt:r,customHeaders:i});return {completion:a,raw:l,error:c}}getDefaultPrompt(e){return U(e)}};var q=100,K=true,v="onIdle",V=true,H=120,$=400,W=0;var h=(n,e)=>e.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:n.lineNumber,endColumn:n.column}),z=(n,e)=>e.getValueInRange({startLineNumber:n.lineNumber,startColumn:n.column,endLineNumber:e.getLineCount(),endColumn:e.getLineMaxColumn(e.getLineCount())}),G=n=>n.getValue();var P=class{constructor(e){this.capacity=e;this.head=0;this.tail=0;this.size=0;this.buffer=new Array(e);}enqueue(e){let t;return this.size===this.capacity&&(t=this.dequeue()),this.buffer[this.tail]=e,this.tail=(this.tail+1)%this.capacity,this.size++,t}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 L=class L{constructor(){this.cache=new P(L.MAX_CACHE_SIZE);}get(e,t){return this.cache.getAll().filter(o=>this.isValidCacheItem(o,e,t))}add(e){e.completion.trim()&&this.cache.enqueue(e);}clear(){this.cache.clear();}isValidCacheItem(e,t,o){let r=e.textBeforeCursor.trim(),i=h(t,o),s=i,a=o.getLineContent(t.lineNumber);if(t.column===a.length+1&&t.lineNumber<o.getLineCount()){let c=o.getLineContent(t.lineNumber+1);s=`${i}
|
|
16
|
+
${c}`;}if(!(s.trim().includes(r)||r.includes(s.trim())))return false;let l=o.getValueInRange(e.range);return this.isPartialMatch(l,e.completion)?this.isPositionValid(e,t):false}isPartialMatch(e,t){let o=e.trim(),r=t.trim();return r.startsWith(o)||o.startsWith(r)}isPositionValid(e,t){let{range:o}=e,{startLineNumber:r,startColumn:i,endLineNumber:s,endColumn:a}=o,{lineNumber:l,column:c}=t;return l<r||l>s?false:r===s?c>=i-1&&c<=a+1:l===r?c>=i-1:l===s?c<=a+1:true}};L.MAX_CACHE_SIZE=20;var M=L;var O=class{constructor(e){this.formattedCompletion="";this.formattedCompletion=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 t=e.split(`
|
|
17
17
|
`),o=[],r=false;for(let i=0;i<t.length;i++){let s=t[i],a=s.trim().startsWith("```");if(a&&!r){r=true;continue}if(a&&r){r=false;continue}o.push(s);}return o.join(`
|
|
18
18
|
`)}removeExcessiveNewlines(){return this.formattedCompletion=this.formattedCompletion.replace(/\n{3,}/g,`
|
|
19
19
|
|
|
20
20
|
`),this}build(){return this.formattedCompletion}};var I=class{findOverlaps(e,t,o){if(!e)return {startOverlapLength:0,maxOverlapLength:0};let r=e.length,i=t.length,s=o.length,a=0,l=0,c=0,m=Math.min(r,i);for(let p=1;p<=m;p++){let f=e.substring(0,p),u=t.slice(-p);f===u&&(c=p);}let C=Math.min(r,s);for(let p=0;p<C&&e[p]===o[p];p++)a++;for(let p=1;p<=C;p++)e.slice(-p)===o.slice(0,p)&&(l=p);let d=Math.max(a,l);if(d===0){for(let p=1;p<r;p++)if(o.startsWith(e.substring(p))){d=r-p;break}}return {startOverlapLength:c,maxOverlapLength:d}}};var A=class{constructor(e){this.monaco=e;this.textOverlapCalculator=new I;}computeInsertionRange(e,t,o){if(!t)return this.createEmptyRange(e);let r=o.getOffsetAt(e),i=o.getValue().substring(0,r),s=o.getValue().substring(r);if(r>=o.getValue().length)return this.createEmptyRange(e);if(s.length===0)return this.createEmptyRange(e);let{startOverlapLength:a,maxOverlapLength:l}=this.textOverlapCalculator.findOverlaps(t,i,s),c=a>0?o.getPositionAt(r-a):e,m=r+l,C=o.getPositionAt(m);return new this.monaco.Range(c.lineNumber,c.column,C.lineNumber,C.column)}computeCacheRange(e,t){let o=e.lineNumber,r=e.column,i=t.split(`
|
|
21
|
-
`),s=i.length-1,a=o+s,l=s===0?r+i[0].length:i[s].length+1;return new this.monaco.Range(o,r,a,l)}createEmptyRange(e){return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column)}};var X=async n=>{let{endpoint:e,body:t}=n,o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok)throw new Error(`Error while fetching completion item: ${o.statusText}`);let{completion:r,error:i}=await o.json();if(i)throw new Error(i);return {completion:r}},Y=({pos:n,mdl:e,options:t})=>{let{filename:o,language:r,technologies:i,relatedFiles:s,maxContextLines:a=q}=t,c=s&&s.length>0?3:2,m=a?Math.floor(a/c):void 0,C=(g,y,w)=>{let b=g(n,e);return y?D(b,y,w):b},d=(g,y)=>!g||!y?g:g.map(({content:w,...b})=>({...b,content:D(w,y)})),p=C(h,m,{truncateDirection:"keepEnd"}),f=C(z,m,{truncateDirection:"keepStart"}),u=d(s,m);return {filename:o,language:r,technologies:i,relatedFiles:u,textBeforeCursor:p,textAfterCursor:f,cursorPosition:n}};var Z=(n,e=300)=>{let t=null,o=null,r=(...i)=>{if(o)return o.args=i,o.promise;let s,a,l=new Promise((c,m)=>{s=c,a=m;});return o={args:i,promise:l,resolve:s,reject:a},t&&(clearTimeout(t),t=null),t=setTimeout(async()=>{let c=o;if(c){o=null,t=null;try{let m=await n(...c.args);c.resolve(m);}catch(m){c.reject(m);}}},e),l};return r.cancel=()=>{t&&(clearTimeout(t),t=null),o&&(o.reject(new Error("Cancelled")),o=null);},r};var J=n=>typeof n=="string"?n==="Cancelled"||n==="AbortError":n instanceof Error?n.message==="Cancelled"||n.name==="AbortError":false;var E=n=>({items:n,enableForwardStability:true});var S=new M,Q=async({monaco:n,mdl:e,pos:t,token:o,isCompletionAccepted:r,options:i})=>{let{trigger:s=v,endpoint:a,enableCaching:l=K,allowFollowUpCompletions:c=V,onError:m,requestHandler:C}=i;if(l&&!r){let d=S.get(t,e).map(p=>({insertText:p.completion,range:p.range}));if(d.length>0)return E(d)}if(o.isCancellationRequested||!c&&r)return E([]);try{let d=Z(u=>(i.onCompletionRequested?.(u),C?.(u)??X(u)),{onTyping:H,onIdle:$,onDemand:W}[s]);o.onCancellationRequested(()=>{d.cancel();});let p=Y({pos:t,mdl:e,options:i}),{completion:f}=await d({endpoint:a,body:{completionMetadata:p}});if(f){let u=new O(f).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),g=new A(n);return l&&S.add({completion:u,range:g.computeCacheRange(t,u),textBeforeCursor:h(t,e)}),E([{insertText:u,range:g.computeInsertionRange(t,u,e)}])}}catch(d){if(J(d))return E([]);m?m(d):logger.warn("Cannot provide completion",d);}return E([])};var F=new WeakMap,x=n=>F.get(n),ee=(n,e)=>{F.set(n,e);},N=n=>{F.delete(n);},te=()=>({isCompletionAccepted:false,isCompletionVisible:false,isExplicitlyTriggered:false,hasRejectedCurrentCompletion:false});var oe=(n,e,t)=>{let o=x(e);return o?n.languages.registerInlineCompletionsProvider(t.language,{provideInlineCompletions:(r,i,s,a)=>{if(!(t.trigger==="onDemand"&&!o.isExplicitlyTriggered||t.triggerIf&&!t.triggerIf({text:G(e),position:i,triggerType:t.trigger??v})))return Q({monaco:n,mdl:r,pos:i,token:a,isCompletionAccepted:o.isCompletionAccepted,options:t})},handleItemDidShow:(r,i,s)=>{o.isExplicitlyTriggered=false,o.hasRejectedCurrentCompletion=false,!o.isCompletionAccepted&&(o.isCompletionVisible=true,t.onCompletionShown?.(s,i.range));},freeInlineCompletions:()=>{}}):null};var ce={TAB:(n,e)=>e.keyCode===n.KeyCode.Tab,CMD_RIGHT_ARROW:(n,e)=>e.keyCode===n.KeyCode.RightArrow&&e.metaKey},_=class{constructor(e,t,o){this.monaco=e;this.state=t;this.options=o;}handleKeyEvent(e){let t={monaco:this.monaco,event:e,state:this.state,options:this.options};this.handleCompletionAcceptance(t),this.handleCompletionRejection(t);}handleCompletionAcceptance(e){return e.state.isCompletionVisible&&this.isAcceptanceKey(e.event)?(e.options.onCompletionAccepted?.(),e.state.isCompletionAccepted=true,e.state.isCompletionVisible=false,true):(e.state.isCompletionAccepted=false,false)}handleCompletionRejection(e){return this.shouldRejectCompletion(e)?(e.options.onCompletionRejected?.(),e.state.hasRejectedCurrentCompletion=true,true):false}shouldRejectCompletion(e){return e.state.isCompletionVisible&&!e.state.hasRejectedCurrentCompletion&&!e.state.isCompletionAccepted&&!this.isAcceptanceKey(e.event)}isAcceptanceKey(e){return Object.values(ce).some(t=>t(this.monaco,e))}},ne=(n,e,t,o)=>{let r=new _(n,t,o);return e.onKeyDown(i=>r.handleKeyEvent(i))};var R=null,me=(n,e,t)=>{R&&R.deregister();let o=[];ee(e,te()),e.updateOptions({inlineSuggest:{enabled:true}});try{let r=x(e);if(!r)return logger.warn("Completion is not registered properly. State not found."),ue();let i=oe(n,e,t);i&&o.push(i);let s=ne(n,e,r,t);o.push(s);let a={deregister:()=>{
|
|
21
|
+
`),s=i.length-1,a=o+s,l=s===0?r+i[0].length:i[s].length+1;return new this.monaco.Range(o,r,a,l)}createEmptyRange(e){return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column)}};var X=async n=>{let{endpoint:e,body:t}=n,o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok)throw new Error(`Error while fetching completion item: ${o.statusText}`);let{completion:r,error:i}=await o.json();if(i)throw new Error(i);return {completion:r}},Y=({pos:n,mdl:e,options:t})=>{let{filename:o,language:r,technologies:i,relatedFiles:s,maxContextLines:a=q}=t,c=s&&s.length>0?3:2,m=a?Math.floor(a/c):void 0,C=(g,y,w)=>{let b=g(n,e);return y?D(b,y,w):b},d=(g,y)=>!g||!y?g:g.map(({content:w,...b})=>({...b,content:D(w,y)})),p=C(h,m,{truncateDirection:"keepEnd"}),f=C(z,m,{truncateDirection:"keepStart"}),u=d(s,m);return {filename:o,language:r,technologies:i,relatedFiles:u,textBeforeCursor:p,textAfterCursor:f,cursorPosition:n}};var Z=(n,e=300)=>{let t=null,o=null,r=(...i)=>{if(o)return o.args=i,o.promise;let s,a,l=new Promise((c,m)=>{s=c,a=m;});return o={args:i,promise:l,resolve:s,reject:a},t&&(clearTimeout(t),t=null),t=setTimeout(async()=>{let c=o;if(c){o=null,t=null;try{let m=await n(...c.args);c.resolve(m);}catch(m){c.reject(m);}}},e),l};return r.cancel=()=>{t&&(clearTimeout(t),t=null),o&&(o.reject(new Error("Cancelled")),o=null);},r};var J=n=>typeof n=="string"?n==="Cancelled"||n==="AbortError":n instanceof Error?n.message==="Cancelled"||n.name==="AbortError":false;var E=n=>({items:n,enableForwardStability:true});var S=new M,Q=async({monaco:n,mdl:e,pos:t,token:o,isCompletionAccepted:r,options:i})=>{let{trigger:s=v,endpoint:a,enableCaching:l=K,allowFollowUpCompletions:c=V,onError:m,requestHandler:C}=i;if(l&&!r){let d=S.get(t,e).map(p=>({insertText:p.completion,range:p.range}));if(d.length>0)return E(d)}if(o.isCancellationRequested||!c&&r)return E([]);try{let d=Z(u=>(i.onCompletionRequested?.(u),C?.(u)??X(u)),{onTyping:H,onIdle:$,onDemand:W}[s]);o.onCancellationRequested(()=>{d.cancel();});let p=Y({pos:t,mdl:e,options:i}),{completion:f}=await d({endpoint:a,body:{completionMetadata:p}});if(f){let u=new O(f).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().build(),g=new A(n);return l&&S.add({completion:u,range:g.computeCacheRange(t,u),textBeforeCursor:h(t,e)}),E([{insertText:u,range:g.computeInsertionRange(t,u,e)}])}}catch(d){if(J(d))return E([]);m?m(d):logger.warn("Cannot provide completion",d);}return E([])};var F=new WeakMap,x=n=>F.get(n),ee=(n,e)=>{F.set(n,e);},N=n=>{F.delete(n);},te=()=>({isCompletionAccepted:false,isCompletionVisible:false,isExplicitlyTriggered:false,hasRejectedCurrentCompletion:false});var oe=(n,e,t)=>{let o=x(e);return o?n.languages.registerInlineCompletionsProvider(t.language,{provideInlineCompletions:(r,i,s,a)=>{if(!(t.trigger==="onDemand"&&!o.isExplicitlyTriggered||t.triggerIf&&!t.triggerIf({text:G(e),position:i,triggerType:t.trigger??v})))return Q({monaco:n,mdl:r,pos:i,token:a,isCompletionAccepted:o.isCompletionAccepted,options:t})},handleItemDidShow:(r,i,s)=>{o.isExplicitlyTriggered=false,o.hasRejectedCurrentCompletion=false,!o.isCompletionAccepted&&(o.isCompletionVisible=true,t.onCompletionShown?.(s,i.range));},freeInlineCompletions:()=>{}}):null};var ce={TAB:(n,e)=>e.keyCode===n.KeyCode.Tab,CMD_RIGHT_ARROW:(n,e)=>e.keyCode===n.KeyCode.RightArrow&&e.metaKey},_=class{constructor(e,t,o){this.monaco=e;this.state=t;this.options=o;}handleKeyEvent(e){let t={monaco:this.monaco,event:e,state:this.state,options:this.options};this.handleCompletionAcceptance(t),this.handleCompletionRejection(t);}handleCompletionAcceptance(e){return e.state.isCompletionVisible&&this.isAcceptanceKey(e.event)?(e.options.onCompletionAccepted?.(),e.state.isCompletionAccepted=true,e.state.isCompletionVisible=false,true):(e.state.isCompletionAccepted=false,false)}handleCompletionRejection(e){return this.shouldRejectCompletion(e)?(e.options.onCompletionRejected?.(),e.state.hasRejectedCurrentCompletion=true,true):false}shouldRejectCompletion(e){return e.state.isCompletionVisible&&!e.state.hasRejectedCurrentCompletion&&!e.state.isCompletionAccepted&&!this.isAcceptanceKey(e.event)}isAcceptanceKey(e){return Object.values(ce).some(t=>t(this.monaco,e))}},ne=(n,e,t,o)=>{let r=new _(n,t,o);return e.onKeyDown(i=>r.handleKeyEvent(i))};var R=null,me=(n,e,t)=>{R&&R.deregister();let o=[];ee(e,te()),e.updateOptions({inlineSuggest:{enabled:true}});try{let r=x(e);if(!r)return logger.warn("Completion is not registered properly. State not found."),ue();let i=oe(n,e,t);i&&o.push(i);let s=ne(n,e,r,t);o.push(s);let a={deregister:()=>{for(let l of o)l.dispose();S.clear(),N(e),R=null;},trigger:()=>de(e)};return R=a,a}catch(r){return t.onError?t.onError(r):logger.report(r),{deregister:()=>{for(let i of o)i.dispose();N(e),R=null;},trigger:()=>{}}}},de=n=>{let e=x(n);if(!e){logger.warn("Completion is not registered. Use `registerCompletion` to register completion first.");return}e.isExplicitlyTriggered=true,n.trigger("keyboard","editor.action.inlineSuggest.trigger",{});},ue=()=>({deregister:()=>{},trigger:()=>{}});var ut=T;export{T as CompletionCopilot,ut as Copilot,me as registerCompletion};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monacopilot",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.17",
|
|
4
4
|
"description": "AI auto-completion plugin for Monaco Editor",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"module": "./build/index.mjs",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"license": "MIT",
|
|
38
38
|
"author": "Arshad Yaseen <m@arshadyaseen.com> (https://arshadyaseen.com)",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@monacopilot/core": "1.1.
|
|
40
|
+
"@monacopilot/core": "1.1.17"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
43
|
"monaco-editor": ">=0.41.0"
|