cmtoken 1.0.4 → 1.0.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/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- var We=Object.create;var z=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var ze=Object.getOwnPropertyNames;var Ye=Object.getPrototypeOf,Xe=Object.prototype.hasOwnProperty;var Je=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Y=(e,t)=>{for(var r in t)z(e,r,{get:t[r],enumerable:!0})},qe=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ze(t))!Xe.call(e,n)&&n!==r&&z(e,n,{get:()=>t[n],enumerable:!(o=Fe(t,n))||o.enumerable});return e};var Ve=(e,t,r)=>(r=e!=null?We(Ye(e)):{},qe(t||!e||!e.__esModule?z(r,"default",{value:e,enumerable:!0}):r,e));var X=M((yt,ce)=>{ce.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var de=M((Et,fe)=>{var Ze=X();function le(e){this.mode=Ze.MODE_8BIT_BYTE,this.data=e}le.prototype={getLength:function(){return this.data.length},write:function(e){for(var t=0;t<this.data.length;t++)e.put(this.data.charCodeAt(t),8)}};fe.exports=le});var J=M((Ct,he)=>{var _={glog:function(e){if(e<1)throw new Error("glog("+e+")");return _.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return _.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(g=0;g<8;g++)_.EXP_TABLE[g]=1<<g;var g;for(g=8;g<256;g++)_.EXP_TABLE[g]=_.EXP_TABLE[g-4]^_.EXP_TABLE[g-5]^_.EXP_TABLE[g-6]^_.EXP_TABLE[g-8];var g;for(g=0;g<255;g++)_.LOG_TABLE[_.EXP_TABLE[g]]=g;var g;he.exports=_});var q=M((Pt,ge)=>{var L=J();function $(e,t){if(e.length===void 0)throw new Error(e.length+"/"+t);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+t);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}$.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var t=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)t[r+o]^=L.gexp(L.glog(this.get(r))+L.glog(e.get(o)));return new $(t,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var t=L.glog(this.get(0))-L.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var n=0;n<e.getLength();n++)r[n]^=L.gexp(L.glog(e.get(n))+t);return new $(r,0).mod(e)}};ge.exports=$});var me=M((Lt,pe)=>{pe.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Ae=M((bt,Te)=>{var w=X(),ve=q(),je=J(),C=me(),T={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var t=e<<10;T.getBCHDigit(t)-T.getBCHDigit(T.G15)>=0;)t^=T.G15<<T.getBCHDigit(t)-T.getBCHDigit(T.G15);return(e<<10|t)^T.G15_MASK},getBCHTypeNumber:function(e){for(var t=e<<12;T.getBCHDigit(t)-T.getBCHDigit(T.G18)>=0;)t^=T.G18<<T.getBCHDigit(t)-T.getBCHDigit(T.G18);return e<<12|t},getBCHDigit:function(e){for(var t=0;e!==0;)t++,e>>>=1;return t},getPatternPosition:function(e){return T.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,t,r){switch(e){case C.PATTERN000:return(t+r)%2===0;case C.PATTERN001:return t%2===0;case C.PATTERN010:return r%3===0;case C.PATTERN011:return(t+r)%3===0;case C.PATTERN100:return(Math.floor(t/2)+Math.floor(r/3))%2===0;case C.PATTERN101:return t*r%2+t*r%3===0;case C.PATTERN110:return(t*r%2+t*r%3)%2===0;case C.PATTERN111:return(t*r%3+(t+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var t=new ve([1],0),r=0;r<e;r++)t=t.multiply(new ve([1,je.gexp(r)],0));return t},getLengthInBits:function(e,t){if(1<=t&&t<10)switch(e){case w.MODE_NUMBER:return 10;case w.MODE_ALPHA_NUM:return 9;case w.MODE_8BIT_BYTE:return 8;case w.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(t<27)switch(e){case w.MODE_NUMBER:return 12;case w.MODE_ALPHA_NUM:return 11;case w.MODE_8BIT_BYTE:return 16;case w.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(t<41)switch(e){case w.MODE_NUMBER:return 14;case w.MODE_ALPHA_NUM:return 13;case w.MODE_8BIT_BYTE:return 16;case w.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+t)},getLostPoint:function(e){var t=e.getModuleCount(),r=0,o=0,n=0;for(o=0;o<t;o++)for(n=0;n<t;n++){for(var s=0,i=e.isDark(o,n),a=-1;a<=1;a++)if(!(o+a<0||t<=o+a))for(var u=-1;u<=1;u++)n+u<0||t<=n+u||a===0&&u===0||i===e.isDark(o+a,n+u)&&s++;s>5&&(r+=3+s-5)}for(o=0;o<t-1;o++)for(n=0;n<t-1;n++){var l=0;e.isDark(o,n)&&l++,e.isDark(o+1,n)&&l++,e.isDark(o,n+1)&&l++,e.isDark(o+1,n+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<t;o++)for(n=0;n<t-6;n++)e.isDark(o,n)&&!e.isDark(o,n+1)&&e.isDark(o,n+2)&&e.isDark(o,n+3)&&e.isDark(o,n+4)&&!e.isDark(o,n+5)&&e.isDark(o,n+6)&&(r+=40);for(n=0;n<t;n++)for(o=0;o<t-6;o++)e.isDark(o,n)&&!e.isDark(o+1,n)&&e.isDark(o+2,n)&&e.isDark(o+3,n)&&e.isDark(o+4,n)&&!e.isDark(o+5,n)&&e.isDark(o+6,n)&&(r+=40);var h=0;for(n=0;n<t;n++)for(o=0;o<t;o++)e.isDark(o,n)&&h++;var p=Math.abs(100*h/t/t-50)/5;return r+=p*10,r}};Te.exports=T});var V=M((Ot,we)=>{we.exports={L:1,M:0,Q:3,H:2}});var _e=M((It,Me)=>{var K=V();function y(e,t){this.totalCount=e,this.dataCount=t}y.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];y.getRSBlocks=function(e,t){var r=y.getRsBlockTable(e,t);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+t);for(var o=r.length/3,n=[],s=0;s<o;s++)for(var i=r[s*3+0],a=r[s*3+1],u=r[s*3+2],l=0;l<i;l++)n.push(new y(a,u));return n};y.getRsBlockTable=function(e,t){switch(t){case K.L:return y.RS_BLOCK_TABLE[(e-1)*4+0];case K.M:return y.RS_BLOCK_TABLE[(e-1)*4+1];case K.Q:return y.RS_BLOCK_TABLE[(e-1)*4+2];case K.H:return y.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};Me.exports=y});var Ee=M((Bt,ye)=>{function ke(){this.buffer=[],this.length=0}ke.prototype={get:function(e){var t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(var r=0;r<t;r++)this.putBit((e>>>t-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};ye.exports=ke});var be=M((Dt,Le)=>{var et=de(),P=Ae(),tt=q(),Ce=_e(),Pe=Ee();function E(e,t){this.typeNumber=e,this.errorCorrectLevel=t,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}E.prototype={addData:function(e){var t=new et(e);this.dataList.push(t),this.dataCache=null},isDark:function(e,t){if(e<0||this.moduleCount<=e||t<0||this.moduleCount<=t)throw new Error(e+","+t);return this.modules[e][t]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var t=Ce.getRSBlocks(e,this.errorCorrectLevel),r=new Pe,o=0,n=0;n<t.length;n++)o+=t[n].dataCount;for(var s=0;s<this.dataList.length;s++){var i=this.dataList[s];r.put(i.mode,4),r.put(i.getLength(),P.getLengthInBits(i.mode,e)),i.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,t){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,t),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=E.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,t)},setupPositionProbePattern:function(e,t){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)t+o<=-1||this.moduleCount<=t+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][t+o]=!0:this.modules[e+r][t+o]=!1)},getBestMaskPattern:function(){for(var e=0,t=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=P.getLostPoint(this);(r===0||e>o)&&(e=o,t=r)}return t},createMovieClip:function(e,t,r){var o=e.createEmptyMovieClip(t,r),n=1;this.make();for(var s=0;s<this.modules.length;s++)for(var i=s*n,a=0;a<this.modules[s].length;a++){var u=a*n,l=this.modules[s][a];l&&(o.beginFill(0,100),o.moveTo(u,i),o.lineTo(u+n,i),o.lineTo(u+n,i+n),o.lineTo(u,i+n),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var t=8;t<this.moduleCount-8;t++)this.modules[6][t]===null&&(this.modules[6][t]=t%2===0)},setupPositionAdjustPattern:function(){for(var e=P.getPatternPosition(this.typeNumber),t=0;t<e.length;t++)for(var r=0;r<e.length;r++){var o=e[t],n=e[r];if(this.modules[o][n]===null)for(var s=-2;s<=2;s++)for(var i=-2;i<=2;i++)Math.abs(s)===2||Math.abs(i)===2||s===0&&i===0?this.modules[o+s][n+i]=!0:this.modules[o+s][n+i]=!1}},setupTypeNumber:function(e){for(var t=P.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(t>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var n=0;n<18;n++)r=!e&&(t>>n&1)===1,this.modules[n%3+this.moduleCount-8-3][Math.floor(n/3)]=r},setupTypeInfo:function(e,t){for(var r=this.errorCorrectLevel<<3|t,o=P.getBCHTypeInfo(r),n,s=0;s<15;s++)n=!e&&(o>>s&1)===1,s<6?this.modules[s][8]=n:s<8?this.modules[s+1][8]=n:this.modules[this.moduleCount-15+s][8]=n;for(var i=0;i<15;i++)n=!e&&(o>>i&1)===1,i<8?this.modules[8][this.moduleCount-i-1]=n:i<9?this.modules[8][15-i-1+1]=n:this.modules[8][15-i-1]=n;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,t){for(var r=-1,o=this.moduleCount-1,n=7,s=0,i=this.moduleCount-1;i>0;i-=2)for(i===6&&i--;;){for(var a=0;a<2;a++)if(this.modules[o][i-a]===null){var u=!1;s<e.length&&(u=(e[s]>>>n&1)===1);var l=P.getMask(t,o,i-a);l&&(u=!u),this.modules[o][i-a]=u,n--,n===-1&&(s++,n=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};E.PAD0=236;E.PAD1=17;E.createData=function(e,t,r){for(var o=Ce.getRSBlocks(e,t),n=new Pe,s=0;s<r.length;s++){var i=r[s];n.put(i.mode,4),n.put(i.getLength(),P.getLengthInBits(i.mode,e)),i.write(n)}for(var a=0,u=0;u<o.length;u++)a+=o[u].dataCount;if(n.getLengthInBits()>a*8)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+a*8+")");for(n.getLengthInBits()+4<=a*8&&n.put(0,4);n.getLengthInBits()%8!==0;)n.putBit(!1);for(;!(n.getLengthInBits()>=a*8||(n.put(E.PAD0,8),n.getLengthInBits()>=a*8));)n.put(E.PAD1,8);return E.createBytes(n,o)};E.createBytes=function(e,t){for(var r=0,o=0,n=0,s=new Array(t.length),i=new Array(t.length),a=0;a<t.length;a++){var u=t[a].dataCount,l=t[a].totalCount-u;o=Math.max(o,u),n=Math.max(n,l),s[a]=new Array(u);for(var h=0;h<s[a].length;h++)s[a][h]=255&e.buffer[h+r];r+=u;var p=P.getErrorCorrectPolynomial(l),k=new tt(s[a],p.getLength()-1),c=k.mod(p);i[a]=new Array(p.getLength()-1);for(var m=0;m<i[a].length;m++){var f=m+c.getLength()-i[a].length;i[a][m]=f>=0?c.get(f):0}}for(var v=0,A=0;A<t.length;A++)v+=t[A].totalCount;for(var B=new Array(v),D=0,R=0;R<o;R++)for(var x=0;x<t.length;x++)R<s[x].length&&(B[D++]=s[x][R]);for(var U=0;U<n;U++)for(var N=0;N<t.length;N++)U<i[N].length&&(B[D++]=i[N][U]);return B};Le.exports=E});var Be=M((Rt,Ie)=>{var rt=be(),Oe=V(),nt="\x1B[40m \x1B[0m",H="\x1B[47m \x1B[0m",ot=function(e){return e?nt:H},Z=function(e){return{times:function(t){return new Array(t).join(e)}}},it=function(e,t){for(var r=new Array(e),o=0;o<e;o++)r[o]=t;return r};Ie.exports={error:Oe.L,generate:function(e,t,r){typeof t=="function"&&(r=t,t={});var o=new rt(-1,this.error);o.addData(e),o.make();var n="";if(t&&t.small){var s=!0,i=!1,a=o.getModuleCount(),u=o.modules.slice(),l=a%2===1;l&&u.push(it(a,i));var h={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},p=Z(h.BLACK_WHITE).times(a+3),k=Z(h.WHITE_BLACK).times(a+3);n+=p+`
2
- `;for(var c=0;c<a;c+=2){n+=h.WHITE_ALL;for(var m=0;m<a;m++)u[c][m]===i&&u[c+1][m]===i?n+=h.WHITE_ALL:u[c][m]===i&&u[c+1][m]===s?n+=h.WHITE_BLACK:u[c][m]===s&&u[c+1][m]===i?n+=h.BLACK_WHITE:n+=h.BLACK_ALL;n+=h.WHITE_ALL+`
1
+ var We=Object.create;var z=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var ze=Object.getOwnPropertyNames;var Ye=Object.getPrototypeOf,Xe=Object.prototype.hasOwnProperty;var Je=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var _=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Y=(e,t)=>{for(var r in t)z(e,r,{get:t[r],enumerable:!0})},Ve=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ze(t))!Xe.call(e,n)&&n!==r&&z(e,n,{get:()=>t[n],enumerable:!(o=Fe(t,n))||o.enumerable});return e};var qe=(e,t,r)=>(r=e!=null?We(Ye(e)):{},Ve(t||!e||!e.__esModule?z(r,"default",{value:e,enumerable:!0}):r,e));var X=_((yt,ce)=>{ce.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var de=_((Et,fe)=>{var Ze=X();function le(e){this.mode=Ze.MODE_8BIT_BYTE,this.data=e}le.prototype={getLength:function(){return this.data.length},write:function(e){for(var t=0;t<this.data.length;t++)e.put(this.data.charCodeAt(t),8)}};fe.exports=le});var J=_((Ct,he)=>{var w={glog:function(e){if(e<1)throw new Error("glog("+e+")");return w.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return w.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(h=0;h<8;h++)w.EXP_TABLE[h]=1<<h;var h;for(h=8;h<256;h++)w.EXP_TABLE[h]=w.EXP_TABLE[h-4]^w.EXP_TABLE[h-5]^w.EXP_TABLE[h-6]^w.EXP_TABLE[h-8];var h;for(h=0;h<255;h++)w.LOG_TABLE[w.EXP_TABLE[h]]=h;var h;he.exports=w});var V=_((Pt,ge)=>{var L=J();function K(e,t){if(e.length===void 0)throw new Error(e.length+"/"+t);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+t);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}K.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var t=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)t[r+o]^=L.gexp(L.glog(this.get(r))+L.glog(e.get(o)));return new K(t,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var t=L.glog(this.get(0))-L.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var n=0;n<e.getLength();n++)r[n]^=L.gexp(L.glog(e.get(n))+t);return new K(r,0).mod(e)}};ge.exports=K});var me=_((Lt,pe)=>{pe.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Ae=_((Ot,Te)=>{var M=X(),ve=V(),je=J(),C=me(),v={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var t=e<<10;v.getBCHDigit(t)-v.getBCHDigit(v.G15)>=0;)t^=v.G15<<v.getBCHDigit(t)-v.getBCHDigit(v.G15);return(e<<10|t)^v.G15_MASK},getBCHTypeNumber:function(e){for(var t=e<<12;v.getBCHDigit(t)-v.getBCHDigit(v.G18)>=0;)t^=v.G18<<v.getBCHDigit(t)-v.getBCHDigit(v.G18);return e<<12|t},getBCHDigit:function(e){for(var t=0;e!==0;)t++,e>>>=1;return t},getPatternPosition:function(e){return v.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,t,r){switch(e){case C.PATTERN000:return(t+r)%2===0;case C.PATTERN001:return t%2===0;case C.PATTERN010:return r%3===0;case C.PATTERN011:return(t+r)%3===0;case C.PATTERN100:return(Math.floor(t/2)+Math.floor(r/3))%2===0;case C.PATTERN101:return t*r%2+t*r%3===0;case C.PATTERN110:return(t*r%2+t*r%3)%2===0;case C.PATTERN111:return(t*r%3+(t+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var t=new ve([1],0),r=0;r<e;r++)t=t.multiply(new ve([1,je.gexp(r)],0));return t},getLengthInBits:function(e,t){if(1<=t&&t<10)switch(e){case M.MODE_NUMBER:return 10;case M.MODE_ALPHA_NUM:return 9;case M.MODE_8BIT_BYTE:return 8;case M.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(t<27)switch(e){case M.MODE_NUMBER:return 12;case M.MODE_ALPHA_NUM:return 11;case M.MODE_8BIT_BYTE:return 16;case M.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(t<41)switch(e){case M.MODE_NUMBER:return 14;case M.MODE_ALPHA_NUM:return 13;case M.MODE_8BIT_BYTE:return 16;case M.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+t)},getLostPoint:function(e){var t=e.getModuleCount(),r=0,o=0,n=0;for(o=0;o<t;o++)for(n=0;n<t;n++){for(var s=0,i=e.isDark(o,n),a=-1;a<=1;a++)if(!(o+a<0||t<=o+a))for(var u=-1;u<=1;u++)n+u<0||t<=n+u||a===0&&u===0||i===e.isDark(o+a,n+u)&&s++;s>5&&(r+=3+s-5)}for(o=0;o<t-1;o++)for(n=0;n<t-1;n++){var l=0;e.isDark(o,n)&&l++,e.isDark(o+1,n)&&l++,e.isDark(o,n+1)&&l++,e.isDark(o+1,n+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<t;o++)for(n=0;n<t-6;n++)e.isDark(o,n)&&!e.isDark(o,n+1)&&e.isDark(o,n+2)&&e.isDark(o,n+3)&&e.isDark(o,n+4)&&!e.isDark(o,n+5)&&e.isDark(o,n+6)&&(r+=40);for(n=0;n<t;n++)for(o=0;o<t-6;o++)e.isDark(o,n)&&!e.isDark(o+1,n)&&e.isDark(o+2,n)&&e.isDark(o+3,n)&&e.isDark(o+4,n)&&!e.isDark(o+5,n)&&e.isDark(o+6,n)&&(r+=40);var d=0;for(n=0;n<t;n++)for(o=0;o<t;o++)e.isDark(o,n)&&d++;var g=Math.abs(100*d/t/t-50)/5;return r+=g*10,r}};Te.exports=v});var q=_((bt,Me)=>{Me.exports={L:1,M:0,Q:3,H:2}});var we=_((It,_e)=>{var $=q();function y(e,t){this.totalCount=e,this.dataCount=t}y.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];y.getRSBlocks=function(e,t){var r=y.getRsBlockTable(e,t);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+t);for(var o=r.length/3,n=[],s=0;s<o;s++)for(var i=r[s*3+0],a=r[s*3+1],u=r[s*3+2],l=0;l<i;l++)n.push(new y(a,u));return n};y.getRsBlockTable=function(e,t){switch(t){case $.L:return y.RS_BLOCK_TABLE[(e-1)*4+0];case $.M:return y.RS_BLOCK_TABLE[(e-1)*4+1];case $.Q:return y.RS_BLOCK_TABLE[(e-1)*4+2];case $.H:return y.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};_e.exports=y});var Ee=_((Bt,ye)=>{function ke(){this.buffer=[],this.length=0}ke.prototype={get:function(e){var t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(var r=0;r<t;r++)this.putBit((e>>>t-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};ye.exports=ke});var Oe=_((Dt,Le)=>{var et=de(),P=Ae(),tt=V(),Ce=we(),Pe=Ee();function E(e,t){this.typeNumber=e,this.errorCorrectLevel=t,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}E.prototype={addData:function(e){var t=new et(e);this.dataList.push(t),this.dataCache=null},isDark:function(e,t){if(e<0||this.moduleCount<=e||t<0||this.moduleCount<=t)throw new Error(e+","+t);return this.modules[e][t]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var t=Ce.getRSBlocks(e,this.errorCorrectLevel),r=new Pe,o=0,n=0;n<t.length;n++)o+=t[n].dataCount;for(var s=0;s<this.dataList.length;s++){var i=this.dataList[s];r.put(i.mode,4),r.put(i.getLength(),P.getLengthInBits(i.mode,e)),i.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,t){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,t),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=E.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,t)},setupPositionProbePattern:function(e,t){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)t+o<=-1||this.moduleCount<=t+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][t+o]=!0:this.modules[e+r][t+o]=!1)},getBestMaskPattern:function(){for(var e=0,t=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=P.getLostPoint(this);(r===0||e>o)&&(e=o,t=r)}return t},createMovieClip:function(e,t,r){var o=e.createEmptyMovieClip(t,r),n=1;this.make();for(var s=0;s<this.modules.length;s++)for(var i=s*n,a=0;a<this.modules[s].length;a++){var u=a*n,l=this.modules[s][a];l&&(o.beginFill(0,100),o.moveTo(u,i),o.lineTo(u+n,i),o.lineTo(u+n,i+n),o.lineTo(u,i+n),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var t=8;t<this.moduleCount-8;t++)this.modules[6][t]===null&&(this.modules[6][t]=t%2===0)},setupPositionAdjustPattern:function(){for(var e=P.getPatternPosition(this.typeNumber),t=0;t<e.length;t++)for(var r=0;r<e.length;r++){var o=e[t],n=e[r];if(this.modules[o][n]===null)for(var s=-2;s<=2;s++)for(var i=-2;i<=2;i++)Math.abs(s)===2||Math.abs(i)===2||s===0&&i===0?this.modules[o+s][n+i]=!0:this.modules[o+s][n+i]=!1}},setupTypeNumber:function(e){for(var t=P.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(t>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var n=0;n<18;n++)r=!e&&(t>>n&1)===1,this.modules[n%3+this.moduleCount-8-3][Math.floor(n/3)]=r},setupTypeInfo:function(e,t){for(var r=this.errorCorrectLevel<<3|t,o=P.getBCHTypeInfo(r),n,s=0;s<15;s++)n=!e&&(o>>s&1)===1,s<6?this.modules[s][8]=n:s<8?this.modules[s+1][8]=n:this.modules[this.moduleCount-15+s][8]=n;for(var i=0;i<15;i++)n=!e&&(o>>i&1)===1,i<8?this.modules[8][this.moduleCount-i-1]=n:i<9?this.modules[8][15-i-1+1]=n:this.modules[8][15-i-1]=n;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,t){for(var r=-1,o=this.moduleCount-1,n=7,s=0,i=this.moduleCount-1;i>0;i-=2)for(i===6&&i--;;){for(var a=0;a<2;a++)if(this.modules[o][i-a]===null){var u=!1;s<e.length&&(u=(e[s]>>>n&1)===1);var l=P.getMask(t,o,i-a);l&&(u=!u),this.modules[o][i-a]=u,n--,n===-1&&(s++,n=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};E.PAD0=236;E.PAD1=17;E.createData=function(e,t,r){for(var o=Ce.getRSBlocks(e,t),n=new Pe,s=0;s<r.length;s++){var i=r[s];n.put(i.mode,4),n.put(i.getLength(),P.getLengthInBits(i.mode,e)),i.write(n)}for(var a=0,u=0;u<o.length;u++)a+=o[u].dataCount;if(n.getLengthInBits()>a*8)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+a*8+")");for(n.getLengthInBits()+4<=a*8&&n.put(0,4);n.getLengthInBits()%8!==0;)n.putBit(!1);for(;!(n.getLengthInBits()>=a*8||(n.put(E.PAD0,8),n.getLengthInBits()>=a*8));)n.put(E.PAD1,8);return E.createBytes(n,o)};E.createBytes=function(e,t){for(var r=0,o=0,n=0,s=new Array(t.length),i=new Array(t.length),a=0;a<t.length;a++){var u=t[a].dataCount,l=t[a].totalCount-u;o=Math.max(o,u),n=Math.max(n,l),s[a]=new Array(u);for(var d=0;d<s[a].length;d++)s[a][d]=255&e.buffer[d+r];r+=u;var g=P.getErrorCorrectPolynomial(l),k=new tt(s[a],g.getLength()-1),c=k.mod(g);i[a]=new Array(g.getLength()-1);for(var p=0;p<i[a].length;p++){var f=p+c.getLength()-i[a].length;i[a][p]=f>=0?c.get(f):0}}for(var m=0,A=0;A<t.length;A++)m+=t[A].totalCount;for(var B=new Array(m),D=0,R=0;R<o;R++)for(var x=0;x<t.length;x++)R<s[x].length&&(B[D++]=s[x][R]);for(var U=0;U<n;U++)for(var N=0;N<t.length;N++)U<i[N].length&&(B[D++]=i[N][U]);return B};Le.exports=E});var Be=_((Rt,Ie)=>{var rt=Oe(),be=q(),nt="\x1B[40m \x1B[0m",H="\x1B[47m \x1B[0m",ot=function(e){return e?nt:H},Z=function(e){return{times:function(t){return new Array(t).join(e)}}},it=function(e,t){for(var r=new Array(e),o=0;o<e;o++)r[o]=t;return r};Ie.exports={error:be.L,generate:function(e,t,r){typeof t=="function"&&(r=t,t={});var o=new rt(-1,this.error);o.addData(e),o.make();var n="";if(t&&t.small){var s=!0,i=!1,a=o.getModuleCount(),u=o.modules.slice(),l=a%2===1;l&&u.push(it(a,i));var d={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},g=Z(d.BLACK_WHITE).times(a+3),k=Z(d.WHITE_BLACK).times(a+3);n+=g+`
2
+ `;for(var c=0;c<a;c+=2){n+=d.WHITE_ALL;for(var p=0;p<a;p++)u[c][p]===i&&u[c+1][p]===i?n+=d.WHITE_ALL:u[c][p]===i&&u[c+1][p]===s?n+=d.WHITE_BLACK:u[c][p]===s&&u[c+1][p]===i?n+=d.BLACK_WHITE:n+=d.BLACK_ALL;n+=d.WHITE_ALL+`
3
3
  `}l||(n+=k)}else{var f=Z(H).times(o.getModuleCount()+3);n+=f+`
4
- `,o.modules.forEach(function(v){n+=H,n+=v.map(ot).join(""),n+=H+`
5
- `}),n+=f}r?r(n):console.log(n)},setErrorLevel:function(e){this.error=Oe[e]||this.error}}});var Ne={};Y(Ne,{fetchCMTokenOAuthModels:()=>re,loginCMTokenOAuth:()=>ee,refreshCMTokenToken:()=>te});import{randomBytes as De,randomUUID as st,createHash as at}from"node:crypto";import*as Q from"node:os";function j(){try{let{ensureGlobalUndiciEnvProxyDispatcher:e}=Je("openclaw/plugin-sdk/runtime-env");e()}catch{}}function W(e){let t=e?.oauthBaseUrl||Re.baseUrl,r=e?.clientId||Re.clientId;return{codeEndpoint:`${t}/oauth/device/code`,tokenEndpoint:`${t}/oauth/device/token`,authorizeEndpoint:`${t}/oauth/authorize`,clientId:r,baseUrl:t}}function ft(){let e=De(32).toString("base64url"),t=at("sha256").update(e).digest("base64url"),r=De(16).toString("base64url");return{verifier:e,challenge:t,state:r}}async function dt(e){let t=W(e.config);j();try{let r=await fetch(t.codeEndpoint,{method:"POST",signal:AbortSignal.timeout(G),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","x-request-id":st()},body:new URLSearchParams({response_type:"device_code",client_id:t.clientId,scope:ct,code_challenge:e.challenge,code_challenge_method:"S256",state:e.state})}),o=await r.text();if(!r.ok)throw new Error(`CMToken OAuth device code request failed: ${o||r.status}`);let n=JSON.parse(o);if(!n.device_code||!n.user_code||!n.verification_uri)throw new Error(n.error??"CMToken OAuth returned an incomplete payload (missing device_code, user_code or verification_uri).");return n}catch(r){throw new Error(`CMToken OAuth \u8BBE\u5907\u8BF7\u6C42\u8FDE\u63A5\u5931\u8D25 (${t.codeEndpoint}): ${r instanceof Error?r.message:String(r)}`)}}async function ht(e){let t=W(e.config);j();let r;try{r=await fetch(t.tokenEndpoint,{method:"POST",signal:AbortSignal.timeout(G),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:lt,client_id:t.clientId,device_code:e.deviceCode,code_verifier:e.verifier})})}catch(s){return{status:"pending",message:`\u7F51\u7EDC\u8BF7\u6C42\u4E0D\u7A33\u5B9A\uFF0C\u6B63\u5728\u91CD\u8BD5... (${s instanceof Error?s.message:String(s)})`}}let o=await r.text(),n;try{n=JSON.parse(o)}catch{n=void 0}return r.ok?n?!n.access_token||!n.refresh_token||!n.expires_in?{status:"error",message:"CMToken OAuth \u8FD4\u56DE\u7684\u4EE4\u724C\u8D1F\u8F7D\u4E0D\u5B8C\u6574\u3002"}:{status:"success",token:{access:n.access_token,refresh:n.refresh_token,expires:Date.now()+n.expires_in*1e3,resourceUrl:n.resource_url,notification_message:n.notification_message}}:{status:"error",message:"CMToken OAuth \u65E0\u6CD5\u89E3\u6790\u54CD\u5E94\u3002"}:n?.error==="authorization_pending"?{status:"pending",message:"\u6B63\u5728\u7B49\u5F85\u7528\u6237\u6388\u6743..."}:n?.error==="slow_down"?{status:"pending",message:"\u901F\u7387\u53D7\u9650\uFF0C\u6B63\u5728\u51CF\u6162\u8BF7\u6C42..."}:{status:"error",message:n?.error_description??n?.error??o??"OAuth \u4EE4\u724C\u8BF7\u6C42\u5931\u8D25"}}function xe(e,t=!0){return new Promise(r=>{Ue.default.generate(e,{small:t},o=>{r(o)})})}async function gt(){return process.stdout.isTTY?new Promise(e=>{let t=setTimeout(()=>{r(),e({isModern:!1,debugInfo:"timeout_no_response"})},300);function r(){clearTimeout(t),process.stdin.removeListener("data",o),process.stdin.isTTY&&process.stdin.setRawMode(!1),process.stdin.pause()}function o(n){r();let s=n.toString(),i=!1;process.platform==="win32"?i=s.includes("\x1B]11;"):i=s.includes("\x1B[?")||s.includes("\x1B[>")||s.includes("\x1B]11;"),e({isModern:i,debugInfo:JSON.stringify(s)})}try{process.stdin.resume(),process.stdin.isTTY&&process.stdin.setRawMode(!0),process.stdin.once("data",o),process.stdout.write("\x1B[c\x1B]11;?\x1B\\")}catch(n){r(),e({isModern:!1,debugInfo:`error_${String(n)}`})}}):{isModern:!1,debugInfo:"not_tty"}}async function ee(e){let t=W(e.config),r=e.runtime?.log??console.log,o=e.runtime?.error??console.error;e.progress.update("\u6B63\u5728\u521D\u59CB\u5316 CMToken OAuth...");let n,{verifier:s,challenge:i,state:a}=ft();try{e.progress.update("\u6B63\u5728\u4ECE\u670D\u52A1\u5668\u83B7\u53D6\u8EAB\u4EFD\u9A8C\u8BC1\u94FE\u63A5..."),n=await dt({challenge:i,state:a,config:e.config})}catch(f){let v=t.baseUrl,A=await xe(v),D=["\u{1F6A8} **\u8EAB\u4EFD\u9A8C\u8BC1\u8FDE\u63A5\u5931\u8D25**","",`\u9519\u8BEF\u8BE6\u60C5: ${f instanceof Error?f.message:String(f)}`,"","\u7531\u4E8E\u7F51\u7EDC\u6216\u5B89\u5168\u62E6\u622A\uFF0C\u65E0\u6CD5\u83B7\u53D6\u52A8\u6001\u4E8C\u7EF4\u7801\u3002\u8BF7\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5\u5E76\u5C1D\u8BD5\u5728\u7EC8\u7AEF\u67E5\u770B\u9A8C\u8BC1\u94FE\u63A5\u3002",`\u8BBF\u95EE\u5730\u5740: [${v}](${v})`];throw await e.note(D.join(`
6
- `),"CMToken \u8BA4\u8BC1\u5931\u8D25 (\u5907\u9009\u65B9\u6848)"),f}let u=n.verification_uri_complete??n.verification_uri,l=Q.platform()==="win32",h=!0;l&&(h=(await gt()).isModern);let p=await xe(u,h),k=[`\u9A8C\u8BC1\u5730\u5740: ${u}`,`\u7528\u6237\u4EE3\u7801: ${n.user_code}`,"\u8BF7\u626B\u63CF\u4E0A\u65B9\u4E8C\u7EF4\u7801\uFF0C\u6216\u590D\u5236\u94FE\u63A5\u5728\u6D4F\u89C8\u5668\u4E2D\u6388\u6743\u3002"];r(p),await e.note(k.join(`
7
- `),"CMToken OAuth \u767B\u5F55"),e.progress.stop("\u7B49\u5F85\u626B\u7801\u6388\u6743\u4E2D...\uFF08\u53EF\u81EA\u7531\u5411\u4E0A\u6EDA\u52A8\u67E5\u770B\u4E8C\u7EF4\u7801\uFF09");let c=n.interval?n.interval*1e3:2e3,m=Date.now()+n.expires_in*1e3;for(;Date.now()<m;){let f=await ht({deviceCode:n.device_code,verifier:s,config:e.config});if(f.status==="success")return f.token;if(f.status==="error")throw new Error(f.message);f.message?.includes("slow down")&&(c=Math.min(c+1e3,4e3)),await new Promise(v=>setTimeout(v,c))}throw new Error("CMToken OAuth \u5728\u6388\u6743\u5B8C\u6210\u524D\u8D85\u65F6\u3002")}async function te(e){let t=W(e.config);j();let r=await fetch(t.tokenEndpoint,{method:"POST",signal:AbortSignal.timeout(G),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",client_id:t.clientId,refresh_token:e.refreshToken})}),o=await r.text();if(!r.ok)throw new Error(`CMToken OAuth refresh failed: ${o||r.status}`);let n=JSON.parse(o);if(n.error)throw new Error(`CMToken OAuth refresh failed: ${n.error_description||n.error}`);if(!n.access_token||!n.refresh_token||!n.expires_in)throw new Error("CMToken OAuth refresh returned incomplete token payload.");return{access:n.access_token,refresh:n.refresh_token,expires:Date.now()+n.expires_in*1e3,resourceUrl:n.resource_url,notification_message:n.notification_message}}async function re(e){let t=e.baseUrl,r=await fetch(`${t}/models`,{signal:AbortSignal.timeout(G),headers:{Authorization:`Bearer ${e.accessToken}`,Accept:"application/json"}});if(!r.ok){let n=await r.text();throw new Error(`Failed to fetch models: ${n||r.statusText}`)}return((await r.json()).data??[]).map(n=>({id:n.id,name:n.name??n.id,context_window:n.context_window}))}var Ue,G,Re,ut,ct,lt,ne=S(()=>{"use strict";Ue=Ve(Be(),1),G=900*1e3;Re={baseUrl:"https://agentlink.idaas.cmpassport.com/oauth2-service",clientId:"00a60e3140284b408d51a436ecce121d"},ut=Q.hostname(),ct=`profile model.completion identity:device:${ut}`,lt="urn:ietf:params:oauth:grant-type:device_code"});var Se={};Y(Se,{fetchCMTokenOAuthModels:()=>re,loginCMTokenOAuth:()=>ee,refreshCMTokenToken:()=>te});var $e=S(()=>{"use strict";ne()});var pt,Nt,F,Ke=S(()=>{"use strict";pt="minimax-m25",Nt=`cmtoken/${pt}`,F=[{id:"minimax-m25",name:"minimax-m25",reasoning:!1,input:["text"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:192e3,maxTokens:8192}]});var oe={};Y(oe,{CMTokenDiscoveryError:()=>O,CMTokenSubscriptionError:()=>b,fetchCMTokenModels:()=>mt});async function mt(e,t=15e3,r){if(!r)return F;try{let o=new AbortController,n=setTimeout(()=>o.abort(),t),s={Accept:"application/json"};r&&(s.Authorization=`Bearer ${r}`);let i=await fetch(e,{signal:o.signal,headers:s});if(clearTimeout(n),!i.ok){let l=await i.text().catch(()=>"N/A");throw i.status===403&&(l.includes("\u8BA2\u9605\u5957\u9910")||l.includes("\u8BA2\u9605\u5DF2\u8FC7\u671F")||l.includes("\u4F59\u989D\u4E0D\u8DB3"))?(console.warn(`[CMToken] Subscription issue: ${l}`),new b(l)):(i.status!==401&&i.status!==400&&console.error(`[CMToken] Fetch models failed (${i.status}): ${l.slice(0,200)}`),new O(l,i.status))}let a=await i.json(),u=Array.isArray(a.models)?a.models:a.data&&Array.isArray(a.data)?a.data:null;if(u)return u;if(a&&a.code&&a.code!==100200){let l=a.msg||a.message||"Unknown error";if(a.code===403&&l.includes("\u8BA2\u9605\u5957\u9910"))throw new b(l);a.code!==100401&&a.code!==401&&console.error(`[CMToken] Models API returned error code ${a.code}: ${l}`)}return F}catch(o){if(o instanceof b)throw o;if(!(o instanceof O&&(o.status===401||o.status===400))&&!(o.message&&(o.message.includes("100401")||o.message.includes("\u7528\u6237\u672A\u767B\u5F55"))))throw new O(o.message||String(o),o.status||0);return F}}var b,O,ie=S(()=>{"use strict";Ke();b=class extends Error{constructor(t){super(t),this.name="CMTokenSubscriptionError"}},O=class extends Error{status;constructor(t,r){super(t),this.name="CMTokenDiscoveryError",this.status=r}}});import{definePluginEntry as _t}from"openclaw/plugin-sdk/plugin-entry";import{formatErrorMessage as vt}from"openclaw/plugin-sdk/error-runtime";var d="cmtoken",se="CMToken",He="https://maas.gd.chinamobile.com:36007/ai/uifm/open/v1/models",I="https://maas.gd.chinamobile.com:36007/ai/uifm/open/v1",ue=[],Tt={choiceId:"cmtoken-api-key",choiceLabel:"CMToken API Key",groupId:d,groupLabel:se,groupHint:"CMToken AI \u6A21\u578B",modelAllowlist:{allowedKeys:[`${d}/minimax-m25`,`${d}/qwen36-35b`,`${d}/deepseekv4-flash`,`${d}/deepseek-r1`,`${d}/deepseek-v3`,`${d}/qwen-max`,`${d}/qwen-turbo`]}};async function At(e){let t=e.config,r=t.models?.providers?.[d]?.models;return r&&Array.isArray(r)&&r.length>0?{provider:{baseUrl:t.baseUrl||I,api:"openai-completions",models:r}}:{provider:{baseUrl:t.baseUrl||I,api:"openai-completions",models:ue.map(o=>({...o}))}}}function wt(e){return ue.map(t=>({...t,provider:d}))}async function Qe(e,t){if(t.length>0){let r="\u65E0",o=e.config?.agents?.defaults?.model;typeof o=="string"?r=o:o&&typeof o=="object"&&o.primary?r=o.primary:o&&typeof o=="object"&&o.model&&(r=`${o.provider||"unknown"}/${o.model}`);let n=[];r!=="\u65E0"&&n.push({value:"skip",label:`\u4FDD\u6301\u539F\u6709\u9ED8\u8BA4\u6A21\u578B (Keep current default: ${r})`}),n.push(...t.map(i=>({value:`${d}/${i.id}`,label:i.name||i.id})));let s=await e.prompter.select({message:"\u8BF7\u9009\u62E9\u9ED8\u8BA4\u4F7F\u7528\u54EA\u4E2A\u6A21\u578B\uFF1F(Select Default Model)",options:n,initialValue:r!=="\u65E0"?"skip":n[0]?.value});if(s==="skip")return;if(typeof s=="string")return s}}async function Mt(e){let t=e.prompter.progress("\u6B63\u5728\u542F\u52A8 CMToken OAuth\u2026");try{let{loginCMTokenOAuth:r}=await Promise.resolve().then(()=>($e(),Se)),o=e.config,n=await r({openUrl:e.openUrl,note:e.prompter.note,progress:t,runtime:e.runtime,config:{oauthBaseUrl:o.oauthBaseUrl,clientId:o.clientId}});t.stop("CMToken OAuth \u5B8C\u6210");let s=o.discoveryUrl||He,{fetchCMTokenModels:i,CMTokenSubscriptionError:a,CMTokenDiscoveryError:u}=await Promise.resolve().then(()=>(ie(),oe)),l=[];try{l=await i(s,15e3,n.access)}catch(c){throw c instanceof a?c:c instanceof u?new Error(`\u6A21\u578B\u5217\u8868\u83B7\u53D6\u5931\u8D25 (\u72B6\u6001\u7801: ${c.status})\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u6CE2\u52A8\u6216\u670D\u52A1\u7AEF\u6682\u65F6\u4E0D\u53EF\u7528\u5F15\u8D77\u7684\uFF0C\u914D\u7F6E\u6D41\u7A0B\u5DF2\u4E2D\u65AD\u3002
4
+ `,o.modules.forEach(function(m){n+=H,n+=m.map(ot).join(""),n+=H+`
5
+ `}),n+=f}r?r(n):console.log(n)},setErrorLevel:function(e){this.error=be[e]||this.error}}});var Ne={};Y(Ne,{fetchCMTokenOAuthModels:()=>re,loginCMTokenOAuth:()=>ee,refreshCMTokenToken:()=>te});import{randomBytes as De,randomUUID as st,createHash as at}from"node:crypto";import*as Q from"node:os";function j(){try{let{ensureGlobalUndiciEnvProxyDispatcher:e}=Je("openclaw/plugin-sdk/runtime-env");e()}catch{}}function W(e){let t=e?.oauthBaseUrl||Re.baseUrl,r=e?.clientId||Re.clientId;return{codeEndpoint:`${t}/oauth/device/code`,tokenEndpoint:`${t}/oauth/device/token`,authorizeEndpoint:`${t}/oauth/authorize`,clientId:r,baseUrl:t}}function ft(){let e=De(32).toString("base64url"),t=at("sha256").update(e).digest("base64url"),r=De(16).toString("base64url");return{verifier:e,challenge:t,state:r}}async function dt(e){let t=W(e.config);j();try{let r=await fetch(t.codeEndpoint,{method:"POST",signal:AbortSignal.timeout(G),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","x-request-id":st()},body:new URLSearchParams({response_type:"device_code",client_id:t.clientId,scope:ct,code_challenge:e.challenge,code_challenge_method:"S256",state:e.state})}),o=await r.text();if(!r.ok)throw new Error(`CMToken OAuth device code request failed: ${o||r.status}`);let n=JSON.parse(o);if(!n.device_code||!n.user_code||!n.verification_uri)throw new Error(n.error??"CMToken OAuth returned an incomplete payload (missing device_code, user_code or verification_uri).");return n}catch(r){throw new Error(`CMToken OAuth \u8BBE\u5907\u8BF7\u6C42\u8FDE\u63A5\u5931\u8D25 (${t.codeEndpoint}): ${r instanceof Error?r.message:String(r)}`)}}async function ht(e){let t=W(e.config);j();let r;try{r=await fetch(t.tokenEndpoint,{method:"POST",signal:AbortSignal.timeout(G),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:lt,client_id:t.clientId,device_code:e.deviceCode,code_verifier:e.verifier})})}catch(s){return{status:"pending",message:`\u7F51\u7EDC\u8BF7\u6C42\u4E0D\u7A33\u5B9A\uFF0C\u6B63\u5728\u91CD\u8BD5... (${s instanceof Error?s.message:String(s)})`}}let o=await r.text(),n;try{n=JSON.parse(o)}catch{n=void 0}return r.ok?n?!n.access_token||!n.refresh_token||!n.expires_in?{status:"error",message:"CMToken OAuth \u8FD4\u56DE\u7684\u4EE4\u724C\u8D1F\u8F7D\u4E0D\u5B8C\u6574\u3002"}:{status:"success",token:{access:n.access_token,refresh:n.refresh_token,expires:Date.now()+n.expires_in*1e3,resourceUrl:n.resource_url,notification_message:n.notification_message}}:{status:"error",message:"CMToken OAuth \u65E0\u6CD5\u89E3\u6790\u54CD\u5E94\u3002"}:n?.error==="authorization_pending"?{status:"pending",message:"\u6B63\u5728\u7B49\u5F85\u7528\u6237\u6388\u6743..."}:n?.error==="slow_down"?{status:"pending",message:"\u901F\u7387\u53D7\u9650\uFF0C\u6B63\u5728\u51CF\u6162\u8BF7\u6C42..."}:{status:"error",message:n?.error_description??n?.error??o??"OAuth \u4EE4\u724C\u8BF7\u6C42\u5931\u8D25"}}function xe(e,t=!0){return new Promise(r=>{Ue.default.generate(e,{small:t},o=>{r(o)})})}async function gt(){return process.stdout.isTTY?new Promise(e=>{let t=setTimeout(()=>{r(),e({isModern:!1,debugInfo:"timeout_no_response"})},300);function r(){clearTimeout(t),process.stdin.removeListener("data",o),process.stdin.isTTY&&process.stdin.setRawMode(!1),process.stdin.pause()}function o(n){r();let s=n.toString(),i=!1;process.platform==="win32"?i=s.includes("\x1B]11;"):i=s.includes("\x1B[?")||s.includes("\x1B[>")||s.includes("\x1B]11;"),e({isModern:i,debugInfo:JSON.stringify(s)})}try{process.stdin.resume(),process.stdin.isTTY&&process.stdin.setRawMode(!0),process.stdin.once("data",o),process.stdout.write("\x1B[c\x1B]11;?\x1B\\")}catch(n){r(),e({isModern:!1,debugInfo:`error_${String(n)}`})}}):{isModern:!1,debugInfo:"not_tty"}}async function ee(e){let t=W(e.config),r=e.runtime?.log??console.log,o=e.runtime?.error??console.error;e.progress.update("\u6B63\u5728\u521D\u59CB\u5316 CMToken OAuth...");let n,{verifier:s,challenge:i,state:a}=ft();try{e.progress.update("\u6B63\u5728\u4ECE\u670D\u52A1\u5668\u83B7\u53D6\u8EAB\u4EFD\u9A8C\u8BC1\u94FE\u63A5..."),n=await dt({challenge:i,state:a,config:e.config})}catch(f){let m=t.baseUrl,A=await xe(m),D=["\u{1F6A8} **\u8EAB\u4EFD\u9A8C\u8BC1\u8FDE\u63A5\u5931\u8D25**","",`\u9519\u8BEF\u8BE6\u60C5: ${f instanceof Error?f.message:String(f)}`,"","\u7531\u4E8E\u7F51\u7EDC\u6216\u5B89\u5168\u62E6\u622A\uFF0C\u65E0\u6CD5\u83B7\u53D6\u52A8\u6001\u4E8C\u7EF4\u7801\u3002\u8BF7\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5\u5E76\u5C1D\u8BD5\u5728\u7EC8\u7AEF\u67E5\u770B\u9A8C\u8BC1\u94FE\u63A5\u3002",`\u8BBF\u95EE\u5730\u5740: [${m}](${m})`];throw await e.note(D.join(`
6
+ `),"CMToken \u8BA4\u8BC1\u5931\u8D25 (\u5907\u9009\u65B9\u6848)"),f}let u=n.verification_uri_complete??n.verification_uri,l=Q.platform()==="win32",d=!0;l&&(d=(await gt()).isModern);let g=await xe(u,d),k=[`\u9A8C\u8BC1\u5730\u5740: ${u}`,`\u7528\u6237\u4EE3\u7801: ${n.user_code}`,"\u8BF7\u626B\u63CF\u4E0A\u65B9\u4E8C\u7EF4\u7801\uFF0C\u6216\u590D\u5236\u94FE\u63A5\u5728\u6D4F\u89C8\u5668\u4E2D\u6388\u6743\u3002"];r(g),await e.note(k.join(`
7
+ `),"CMToken OAuth \u767B\u5F55"),e.progress.stop("\u7B49\u5F85\u626B\u7801\u6388\u6743\u4E2D...\uFF08\u53EF\u81EA\u7531\u5411\u4E0A\u6EDA\u52A8\u67E5\u770B\u4E8C\u7EF4\u7801\uFF09");let c=n.interval?n.interval*1e3:2e3,p=Date.now()+n.expires_in*1e3;for(;Date.now()<p;){let f=await ht({deviceCode:n.device_code,verifier:s,config:e.config});if(f.status==="success")return f.token;if(f.status==="error")throw new Error(f.message);f.message?.includes("slow down")&&(c=Math.min(c+1e3,4e3)),await new Promise(m=>setTimeout(m,c))}throw new Error("CMToken OAuth \u5728\u6388\u6743\u5B8C\u6210\u524D\u8D85\u65F6\u3002")}async function te(e){let t=W(e.config);j();let r=await fetch(t.tokenEndpoint,{method:"POST",signal:AbortSignal.timeout(G),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",client_id:t.clientId,refresh_token:e.refreshToken})}),o=await r.text();if(!r.ok)throw new Error(`CMToken OAuth refresh failed: ${o||r.status}`);let n=JSON.parse(o);if(n.error)throw new Error(`CMToken OAuth refresh failed: ${n.error_description||n.error}`);if(!n.access_token||!n.refresh_token||!n.expires_in)throw new Error("CMToken OAuth refresh returned incomplete token payload.");return{access:n.access_token,refresh:n.refresh_token,expires:Date.now()+n.expires_in*1e3,resourceUrl:n.resource_url,notification_message:n.notification_message}}async function re(e){let t=e.baseUrl,r=await fetch(`${t}/models`,{signal:AbortSignal.timeout(G),headers:{Authorization:`Bearer ${e.accessToken}`,Accept:"application/json"}});if(!r.ok){let n=await r.text();throw new Error(`Failed to fetch models: ${n||r.statusText}`)}return((await r.json()).data??[]).map(n=>({id:n.id,name:n.name??n.id,context_window:n.context_window}))}var Ue,G,Re,ut,ct,lt,ne=S(()=>{"use strict";Ue=qe(Be(),1),G=900*1e3;Re={baseUrl:"https://agentlink.idaas.cmpassport.com/oauth2-service",clientId:"00a60e3140284b408d51a436ecce121d"},ut=Q.hostname(),ct=`profile model.completion identity:device:${ut}`,lt="urn:ietf:params:oauth:grant-type:device_code"});var Se={};Y(Se,{fetchCMTokenOAuthModels:()=>re,loginCMTokenOAuth:()=>ee,refreshCMTokenToken:()=>te});var Ke=S(()=>{"use strict";ne()});var pt,Nt,F,$e=S(()=>{"use strict";pt="minimax-m25",Nt=`cmtoken/${pt}`,F=[{id:"minimax-m25",name:"minimax-m25",reasoning:!1,input:["text"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:192e3,maxTokens:8192}]});var oe={};Y(oe,{CMTokenDiscoveryError:()=>b,CMTokenSubscriptionError:()=>O,fetchCMTokenModels:()=>mt});async function mt(e,t=15e3,r){if(!r)return F;try{let o=new AbortController,n=setTimeout(()=>o.abort(),t),s={Accept:"application/json"};r&&(s.Authorization=`Bearer ${r}`);let i=await fetch(e,{signal:o.signal,headers:s});if(clearTimeout(n),!i.ok){let l=await i.text().catch(()=>"N/A");throw i.status===403&&(l.includes("\u8BA2\u9605\u5957\u9910")||l.includes("\u8BA2\u9605\u5DF2\u8FC7\u671F")||l.includes("\u4F59\u989D\u4E0D\u8DB3"))?(console.warn(`[CMToken] Subscription issue: ${l}`),new O(l)):(i.status!==401&&i.status!==400&&console.error(`[CMToken] Fetch models failed (${i.status}): ${l.slice(0,200)}`),new b(l,i.status))}let a=await i.json(),u=Array.isArray(a.models)?a.models:a.data&&Array.isArray(a.data)?a.data:null;if(u)return u;if(a&&a.code&&a.code!==100200){let l=a.msg||a.message||"Unknown error";if(a.code===403&&l.includes("\u8BA2\u9605\u5957\u9910"))throw new O(l);a.code!==100401&&a.code!==401&&console.error(`[CMToken] Models API returned error code ${a.code}: ${l}`)}return F}catch(o){if(o instanceof O)throw o;if(!(o instanceof b&&(o.status===401||o.status===400))&&!(o.message&&(o.message.includes("100401")||o.message.includes("\u7528\u6237\u672A\u767B\u5F55"))))throw new b(o.message||String(o),o.status||0);return F}}var O,b,ie=S(()=>{"use strict";$e();O=class extends Error{constructor(t){super(t),this.name="CMTokenSubscriptionError"}},b=class extends Error{status;constructor(t,r){super(t),this.name="CMTokenDiscoveryError",this.status=r}}});import{definePluginEntry as wt}from"openclaw/plugin-sdk/plugin-entry";import{formatErrorMessage as vt}from"openclaw/plugin-sdk/error-runtime";var T="cmtoken",se="CMToken",He="https://maas.gd.chinamobile.com:36007/ai/uifm/open/v1/models",I="https://maas.gd.chinamobile.com:36007/ai/uifm/open/v1",ue=[],Tt={choiceId:"cmtoken-api-key",choiceLabel:"CMToken API Key",groupId:T,groupLabel:se,groupHint:"CMToken AI \u6A21\u578B",modelAllowlist:{loadCatalog:!1}};async function At(e){let t=e.config,r=t.models?.providers?.[T]?.models;return r&&Array.isArray(r)&&r.length>0?{provider:{baseUrl:t.baseUrl||I,api:"openai-completions",models:r}}:{provider:{baseUrl:t.baseUrl||I,api:"openai-completions",models:ue.map(o=>({...o}))}}}function Mt(e){return ue.map(t=>({...t,provider:T}))}async function Qe(e,t){if(t.length>0){let r="\u65E0",o=e.config?.agents?.defaults?.model;typeof o=="string"?r=o:o&&typeof o=="object"&&o.primary?r=o.primary:o&&typeof o=="object"&&o.model&&(r=`${o.provider||"unknown"}/${o.model}`);let n=[];r!=="\u65E0"&&n.push({value:"skip",label:`\u4FDD\u6301\u539F\u6709\u9ED8\u8BA4\u6A21\u578B (Keep current default: ${r})`}),n.push(...t.map(i=>({value:`${T}/${i.id}`,label:i.name||i.id})));let s=await e.prompter.select({message:"\u8BF7\u9009\u62E9\u9ED8\u8BA4\u4F7F\u7528\u54EA\u4E2A\u6A21\u578B\uFF1F(Select Default Model)",options:n,initialValue:r!=="\u65E0"?"skip":n[0]?.value});if(s==="skip")return;if(typeof s=="string")return s}}async function _t(e){let t=e.prompter.progress("\u6B63\u5728\u542F\u52A8 CMToken OAuth\u2026");try{let{loginCMTokenOAuth:r}=await Promise.resolve().then(()=>(Ke(),Se)),o=e.config,n=await r({openUrl:e.openUrl,note:e.prompter.note,progress:t,runtime:e.runtime,config:{oauthBaseUrl:o.oauthBaseUrl,clientId:o.clientId}});t.stop("CMToken OAuth \u5B8C\u6210");let s=o.discoveryUrl||He,{fetchCMTokenModels:i,CMTokenSubscriptionError:a,CMTokenDiscoveryError:u}=await Promise.resolve().then(()=>(ie(),oe)),l=[];try{l=await i(s,15e3,n.access)}catch(c){throw c instanceof a?c:c instanceof u?new Error(`\u6A21\u578B\u5217\u8868\u83B7\u53D6\u5931\u8D25 (\u72B6\u6001\u7801: ${c.status})\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u6CE2\u52A8\u6216\u670D\u52A1\u7AEF\u6682\u65F6\u4E0D\u53EF\u7528\u5F15\u8D77\u7684\uFF0C\u914D\u7F6E\u6D41\u7A0B\u5DF2\u4E2D\u65AD\u3002
8
8
 
9
- \u8BE6\u60C5: ${c.message}`):c}let p=l.map(c=>({id:c.id,name:c.name||c.id,reasoning:!1,input:["text"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:c.contextWindow||192e3,maxTokens:c.maxTokens||8192}));p&&p.length>0&&(ae=p.map(c=>c.id.includes("/")?c.id:`${d}/${c.id}`));let k=await Qe(e,p);return{profiles:[{profileId:`${d}:default`,credential:{provider:d,type:"oauth",access:n.access,refresh:n.refresh,expires:n.expires}}],configPatch:{models:{providers:{[d]:{baseUrl:n.resourceUrl||o.baseUrl||I,api:"openai-completions",models:p}}},...k?{agents:{defaults:{model:{primary:k}}}}:{}}}}catch(r){let o=vt(r);throw t.stop(`CMToken OAuth \u5931\u8D25: ${o}`),r}}var ae;function Ge(e){let t=ae;e.registerProvider({id:d,label:se,docsPath:"/plugins/cmtoken",auth:[{id:"api-key",label:"CMToken API Key",hint:"\u4F7F\u7528 API Key \u8FDB\u884C\u8BA4\u8BC1",kind:"api_key",wizard:Tt,async run(r){let{ensureApiKeyFromOptionEnvOrPrompt:o,buildApiKeyCredential:n,normalizeApiKeyInput:s,validateApiKeyInput:i}=await import("openclaw/plugin-sdk/provider-auth"),a,u;await o({token:r.opts?.token,tokenProvider:r.opts?.tokenProvider,secretInputMode:r.allowSecretRefPrompt===!1?r.secretInputMode??"plaintext":r.secretInputMode,config:r.config,env:r.env,expectedProviders:[d],provider:d,promptMessage:"\u8BF7\u8F93\u5165 CMToken API Key",normalize:s,validate:i,prompter:r.prompter,setCredential:async(f,v)=>{a=f,u=v}});let l=`${d}:default`,h=n(d,a,{},{secretInputMode:u,config:r.config}),p=r.config,k=p.discoveryUrl||He,c=[];try{let{fetchCMTokenModels:f}=await Promise.resolve().then(()=>(ie(),oe)),v=await f(k,15e3,a);v&&Array.isArray(v)&&v.length>0&&(c=v.map(A=>({id:A.id,name:A.name||A.id,reasoning:!1,input:["text"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:A.contextWindow||192e3,maxTokens:A.maxTokens||8192})),c&&c.length>0&&(ae=c.map(A=>`${d}/${A.id}`)))}catch(f){throw f instanceof Error?f:new Error("\u6A21\u578B\u5217\u8868\u83B7\u53D6\u5931\u8D25\u3002\u914D\u7F6E\u6D41\u7A0B\u5DF2\u4E2D\u65AD\u3002")}let m=await Qe(r,c);return{configPatch:{models:{providers:{[d]:{baseUrl:p.baseUrl||I,api:"openai-completions",models:c}}},...m?{agents:{defaults:{model:{primary:m}}}}:{}},profiles:[{profileId:l,credential:h}]}}},{id:"oauth",label:"CMToken OAuth",hint:"\u901A\u8FC7\u79FB\u52A8\u8BA4\u8BC1\u6D4F\u89C8\u5668\u6D41\u767B\u5F55",kind:"device_code",run:Mt,applyConfig:r=>({...r,models:{...r.models,providers:{...r.models?.providers,[d]:{baseUrl:I,api:"openai-completions",models:ue}}}}),wizard:{choiceId:"cmtoken-oauth",choiceLabel:"CMToken OAuth",groupId:d,groupLabel:se,groupHint:"CMToken AI \u6A21\u578B"}}],wizard:{setup:{modelAllowlist:{allowedKeys:t,loadCatalog:!1}}},catalog:{order:"simple",run:async r=>At(r)},augmentModelCatalog:r=>wt(r),async refreshOAuth(r){let{refreshCMTokenToken:o}=await Promise.resolve().then(()=>(ne(),Ne));try{let n=await o({refreshToken:r.refresh});return{...r,access:n.access,refresh:n.refresh,expires:n.expires}}catch(n){throw console.error("[CMToken] refreshOAuth failed:",n),n}},classifyFailoverReason(r){let o=r.error?.message||String(r.error);if(o.includes("\u8BA2\u9605\u5957\u9910")||o.includes("\u8BA2\u9605\u5DF2\u8FC7\u671F")||o.includes("\u4F59\u989D\u4E0D\u8DB3"))return"billing"}})}var Wt=_t({id:"cmtoken",name:"CMToken",description:"CMToken provider plugin with OAuth support (browser and QR code)",register(e){Ge(e)}});export{Wt as default};
9
+ \u8BE6\u60C5: ${c.message}`):c}let g=l.map(c=>({id:c.id,name:c.name||c.id,reasoning:!1,input:["text"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:c.contextWindow||192e3,maxTokens:c.maxTokens||8192}));g&&g.length>0&&(ae=g.map(c=>c.id.includes("/")?c.id:`${T}/${c.id}`));let k=await Qe(e,g);return{profiles:[{profileId:`${T}:default`,credential:{provider:T,type:"oauth",access:n.access,refresh:n.refresh,expires:n.expires}}],configPatch:{models:{providers:{[T]:{baseUrl:n.resourceUrl||o.baseUrl||I,api:"openai-completions",models:g}}},...k?{agents:{defaults:{model:{primary:k}}}}:{}}}}catch(r){let o=vt(r);throw t.stop(`CMToken OAuth \u5931\u8D25: ${o}`),r}}var ae;function Ge(e){let t=ae;e.registerProvider({id:T,label:se,docsPath:"/plugins/cmtoken",auth:[{id:"api-key",label:"CMToken API Key",hint:"\u4F7F\u7528 API Key \u8FDB\u884C\u8BA4\u8BC1",kind:"api_key",wizard:Tt,async run(r){let{ensureApiKeyFromOptionEnvOrPrompt:o,buildApiKeyCredential:n,normalizeApiKeyInput:s,validateApiKeyInput:i}=await import("openclaw/plugin-sdk/provider-auth"),a,u;await o({token:r.opts?.token,tokenProvider:r.opts?.tokenProvider,secretInputMode:r.allowSecretRefPrompt===!1?r.secretInputMode??"plaintext":r.secretInputMode,config:r.config,env:r.env,expectedProviders:[T],provider:T,promptMessage:"\u8BF7\u8F93\u5165 CMToken API Key",normalize:s,validate:i,prompter:r.prompter,setCredential:async(f,m)=>{a=f,u=m}});let l=`${T}:default`,d=n(T,a,{},{secretInputMode:u,config:r.config}),g=r.config,k=g.discoveryUrl||He,c=[];try{let{fetchCMTokenModels:f}=await Promise.resolve().then(()=>(ie(),oe)),m=await f(k,15e3,a);m&&Array.isArray(m)&&m.length>0&&(c=m.map(A=>({id:A.id,name:A.name||A.id,reasoning:!1,input:["text"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:A.contextWindow||192e3,maxTokens:A.maxTokens||8192})),c&&c.length>0&&(ae=c.map(A=>`${T}/${A.id}`)))}catch(f){throw f instanceof Error?f:new Error("\u6A21\u578B\u5217\u8868\u83B7\u53D6\u5931\u8D25\u3002\u914D\u7F6E\u6D41\u7A0B\u5DF2\u4E2D\u65AD\u3002")}let p=await Qe(r,c);return{configPatch:{models:{providers:{[T]:{baseUrl:g.baseUrl||I,api:"openai-completions",models:c}}},...p?{agents:{defaults:{model:{primary:p}}}}:{}},profiles:[{profileId:l,credential:d}]}}},{id:"oauth",label:"CMToken OAuth",hint:"\u901A\u8FC7\u79FB\u52A8\u8BA4\u8BC1\u6D4F\u89C8\u5668\u6D41\u767B\u5F55",kind:"device_code",run:_t,applyConfig:r=>({...r,models:{...r.models,providers:{...r.models?.providers,[T]:{baseUrl:I,api:"openai-completions",models:ue}}}}),wizard:{choiceId:"cmtoken-oauth",choiceLabel:"CMToken OAuth",groupId:T,groupLabel:se,groupHint:"CMToken AI \u6A21\u578B"}}],wizard:{setup:{modelAllowlist:{allowedKeys:t,loadCatalog:!1}}},catalog:{order:"simple",run:async r=>At(r)},augmentModelCatalog:r=>Mt(r),async refreshOAuth(r){let{refreshCMTokenToken:o}=await Promise.resolve().then(()=>(ne(),Ne));try{let n=await o({refreshToken:r.refresh});return{...r,access:n.access,refresh:n.refresh,expires:n.expires}}catch(n){throw console.error("[CMToken] refreshOAuth failed:",n),n}},classifyFailoverReason(r){let o=r.error?.message||String(r.error);if(o.includes("\u8BA2\u9605\u5957\u9910")||o.includes("\u8BA2\u9605\u5DF2\u8FC7\u671F")||o.includes("\u4F59\u989D\u4E0D\u8DB3"))return"billing"}})}var Wt=wt({id:"cmtoken",name:"CMToken",description:"CMToken provider plugin with OAuth support (browser and QR code)",register(e){Ge(e)}});export{Wt as default};
10
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../node_modules/.pnpm/qrcode-terminal@0.12.0/node_modules/qrcode-terminal/vendor/QRCode/QRMode.js", "../node_modules/.pnpm/qrcode-terminal@0.12.0/node_modules/qrcode-terminal/vendor/QRCode/QR8bitByte.js", "../node_modules/.pnpm/qrcode-terminal@0.12.0/node_modules/qrcode-terminal/vendor/QRCode/QRMath.js", "../node_modules/.pnpm/qrcode-terminal@0.12.0/node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js", "../node_modules/.pnpm/qrcode-terminal@0.12.0/node_modules/qrcode-terminal/vendor/QRCode/QRMaskPattern.js", "../node_modules/.pnpm/qrcode-terminal@0.12.0/node_modules/qrcode-terminal/vendor/QRCode/QRUtil.js", "../node_modules/.pnpm/qrcode-terminal@0.12.0/node_modules/qrcode-terminal/vendor/QRCode/QRErrorCorrectLevel.js", "../node_modules/.pnpm/qrcode-terminal@0.12.0/node_modules/qrcode-terminal/vendor/QRCode/QRRSBlock.js", "../node_modules/.pnpm/qrcode-terminal@0.12.0/node_modules/qrcode-terminal/vendor/QRCode/QRBitBuffer.js", "../node_modules/.pnpm/qrcode-terminal@0.12.0/node_modules/qrcode-terminal/vendor/QRCode/index.js", "../node_modules/.pnpm/qrcode-terminal@0.12.0/node_modules/qrcode-terminal/lib/main.js", "../src/oauth.ts", "../src/oauth.runtime.ts", "../src/provider-models.ts", "../src/discovery.ts", "../src/index.ts", "../src/provider-registration.ts"],
4
- "sourcesContent": ["module.exports = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n};\n", "var QRMode = require('./QRMode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = QRMode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function() {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n", "var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n", "var QRMath = require('./QRMath');\n\nfunction QRPolynomial(num, shift) {\n\tif (num.length === undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] === 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i) ) + QRMath.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = QRMath.glog(this.get(0) ) - QRMath.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var x = 0; x < e.getLength(); x++) {\n\t\t\tnum[x] ^= QRMath.gexp(QRMath.glog(e.get(x) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n", "module.exports = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n", "var QRMode = require('./QRMode');\nvar QRPolynomial = require('./QRPolynomial');\nvar QRMath = require('./QRMath');\nvar QRMaskPattern = require('./QRMaskPattern');\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54], \n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n var d = data << 10;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \n }\n return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n var d = data << 12;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \n }\n return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n var digit = 0;\n\n while (data !== 0) {\n digit++;\n data >>>= 1;\n }\n\n return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n \n switch (maskPattern) {\n \n case QRMaskPattern.PATTERN000 : return (i + j) % 2 === 0;\n case QRMaskPattern.PATTERN001 : return i % 2 === 0;\n case QRMaskPattern.PATTERN010 : return j % 3 === 0;\n case QRMaskPattern.PATTERN011 : return (i + j) % 3 === 0;\n case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 === 0;\n case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 === 0;\n case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 === 0;\n case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 === 0;\n\n default :\n throw new Error(\"bad maskPattern:\" + maskPattern);\n }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n var a = new QRPolynomial([1], 0);\n\n for (var i = 0; i < errorCorrectLength; i++) {\n a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0) );\n }\n\n return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw new Error(\"mode:\" + mode);\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw new Error(\"mode:\" + mode);\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw new Error(\"mode:\" + mode);\n }\n\n } else {\n throw new Error(\"type:\" + type);\n }\n },\n\n getLostPoint : function(qrCode) {\n \n var moduleCount = qrCode.getModuleCount();\n var lostPoint = 0;\n var row = 0; \n var col = 0;\n\n \n // LEVEL1\n \n for (row = 0; row < moduleCount; row++) {\n\n for (col = 0; col < moduleCount; col++) {\n\n var sameCount = 0;\n var dark = qrCode.isDark(row, col);\n\n for (var r = -1; r <= 1; r++) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c++) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r === 0 && c === 0) {\n continue;\n }\n\n if (dark === qrCode.isDark(row + r, col + c) ) {\n sameCount++;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n }\n\n // LEVEL2\n\n for (row = 0; row < moduleCount - 1; row++) {\n for (col = 0; col < moduleCount - 1; col++) {\n var count = 0;\n if (qrCode.isDark(row, col ) ) count++;\n if (qrCode.isDark(row + 1, col ) ) count++;\n if (qrCode.isDark(row, col + 1) ) count++;\n if (qrCode.isDark(row + 1, col + 1) ) count++;\n if (count === 0 || count === 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (row = 0; row < moduleCount; row++) {\n for (col = 0; col < moduleCount - 6; col++) {\n if (qrCode.isDark(row, col) && \n !qrCode.isDark(row, col + 1) && \n qrCode.isDark(row, col + 2) && \n qrCode.isDark(row, col + 3) && \n qrCode.isDark(row, col + 4) && \n !qrCode.isDark(row, col + 5) && \n qrCode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (col = 0; col < moduleCount; col++) {\n for (row = 0; row < moduleCount - 6; row++) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row + 1, col) &&\n qrCode.isDark(row + 2, col) &&\n qrCode.isDark(row + 3, col) &&\n qrCode.isDark(row + 4, col) &&\n !qrCode.isDark(row + 5, col) &&\n qrCode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n \n var darkCount = 0;\n\n for (col = 0; col < moduleCount; col++) {\n for (row = 0; row < moduleCount; row++) {\n if (qrCode.isDark(row, col) ) {\n darkCount++;\n }\n }\n }\n \n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint; \n }\n\n};\n\nmodule.exports = QRUtil;\n", "module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n", "var QRErrorCorrectLevel = require('./QRErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock === undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = [];\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n};\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase QRErrorCorrectLevel.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase QRErrorCorrectLevel.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase QRErrorCorrectLevel.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase QRErrorCorrectLevel.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n};\n\nmodule.exports = QRRSBlock;\n", "function QRBitBuffer() {\n\tthis.buffer = [];\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n", "//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of \n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n// Modified to work in node for this project (and some refactoring)\n//---------------------------------------------------------------------\n\nvar QR8bitByte = require('./QR8bitByte');\nvar QRUtil = require('./QRUtil');\nvar QRPolynomial = require('./QRPolynomial');\nvar QRRSBlock = require('./QRRSBlock');\nvar QRBitBuffer = require('./QRBitBuffer');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\nQRCode.prototype = {\n\t\n\taddData : function(data) {\n\t\tvar newData = new QR8bitByte(data);\n\t\tthis.dataList.push(newData);\n\t\tthis.dataCache = null;\n\t},\n\t\n\tisDark : function(row, col) {\n\t\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\t\tthrow new Error(row + \",\" + col);\n\t\t}\n\t\treturn this.modules[row][col];\n\t},\n\n\tgetModuleCount : function() {\n\t\treturn this.moduleCount;\n\t},\n\t\n\tmake : function() {\n\t\t// Calculate automatically typeNumber if provided is < 1\n\t\tif (this.typeNumber < 1 ){\n\t\t\tvar typeNumber = 1;\n\t\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\t\tvar rsBlocks = QRRSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\t\tvar buffer = new QRBitBuffer();\n\t\t\t\tvar totalDataCount = 0;\n\t\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t\t}\n\n\t\t\t\tfor (var x = 0; x < this.dataList.length; x++) {\n\t\t\t\t\tvar data = this.dataList[x];\n\t\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\t\tbuffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\t\tdata.write(buffer);\n\t\t\t\t}\n\t\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.typeNumber = typeNumber;\n\t\t}\n\t\tthis.makeImpl(false, this.getBestMaskPattern() );\n\t},\n\t\n\tmakeImpl : function(test, maskPattern) {\n\t\t\n\t\tthis.moduleCount = this.typeNumber * 4 + 17;\n\t\tthis.modules = new Array(this.moduleCount);\n\t\t\n\t\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\t\n\t\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\t\n\t\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t\t}\n\t\t}\n\t\n\t\tthis.setupPositionProbePattern(0, 0);\n\t\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\t\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\t\tthis.setupPositionAdjustPattern();\n\t\tthis.setupTimingPattern();\n\t\tthis.setupTypeInfo(test, maskPattern);\n\t\t\n\t\tif (this.typeNumber >= 7) {\n\t\t\tthis.setupTypeNumber(test);\n\t\t}\n\t\n\t\tif (this.dataCache === null) {\n\t\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t\t}\n\t\n\t\tthis.mapData(this.dataCache, maskPattern);\n\t},\n\n\tsetupPositionProbePattern : function(row, col) {\n\t\t\n\t\tfor (var r = -1; r <= 7; r++) {\n\t\t\t\n\t\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\t\n\t\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\t\n\t\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\t\n\t\t\t\tif ( (0 <= r && r <= 6 && (c === 0 || c === 6) ) || \n (0 <= c && c <= 6 && (r === 0 || r === 6) ) || \n (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t} else {\n\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t}\n\t\t\t}\t\t\n\t\t}\t\t\n\t},\n\t\n\tgetBestMaskPattern : function() {\n\t\n\t\tvar minLostPoint = 0;\n\t\tvar pattern = 0;\n\t\n\t\tfor (var i = 0; i < 8; i++) {\n\t\t\t\n\t\t\tthis.makeImpl(true, i);\n\t\n\t\t\tvar lostPoint = QRUtil.getLostPoint(this);\n\t\n\t\t\tif (i === 0 || minLostPoint > lostPoint) {\n\t\t\t\tminLostPoint = lostPoint;\n\t\t\t\tpattern = i;\n\t\t\t}\n\t\t}\n\t\n\t\treturn pattern;\n\t},\n\t\n\tcreateMovieClip : function(target_mc, instance_name, depth) {\n\t\n\t\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\t\tvar cs = 1;\n\t\n\t\tthis.make();\n\n\t\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\t\n\t\t\tvar y = row * cs;\n\t\t\t\n\t\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\t\n\t\t\t\tvar x = col * cs;\n\t\t\t\tvar dark = this.modules[row][col];\n\t\t\t\n\t\t\t\tif (dark) {\n\t\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\t\tqr_mc.endFill();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn qr_mc;\n\t},\n\n\tsetupTimingPattern : function() {\n\t\t\n\t\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\t\tif (this.modules[r][6] !== null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.modules[r][6] = (r % 2 === 0);\n\t\t}\n\t\n\t\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\t\tif (this.modules[6][c] !== null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.modules[6][c] = (c % 2 === 0);\n\t\t}\n\t},\n\t\n\tsetupPositionAdjustPattern : function() {\n\t\n\t\tvar pos = QRUtil.getPatternPosition(this.typeNumber);\n\t\t\n\t\tfor (var i = 0; i < pos.length; i++) {\n\t\t\n\t\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\t\n\t\t\t\tvar row = pos[i];\n\t\t\t\tvar col = pos[j];\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col] !== null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\t\n\t\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\t\n\t\t\t\t\t\tif (Math.abs(r) === 2 || \n Math.abs(c) === 2 ||\n (r === 0 && c === 0) ) {\n\t\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\tsetupTypeNumber : function(test) {\n\t\n\t\tvar bits = QRUtil.getBCHTypeNumber(this.typeNumber);\n var mod;\n\t\n\t\tfor (var i = 0; i < 18; i++) {\n\t\t\tmod = (!test && ( (bits >> i) & 1) === 1);\n\t\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t\t}\n\t\n\t\tfor (var x = 0; x < 18; x++) {\n\t\t\tmod = (!test && ( (bits >> x) & 1) === 1);\n\t\t\tthis.modules[x % 3 + this.moduleCount - 8 - 3][Math.floor(x / 3)] = mod;\n\t\t}\n\t},\n\t\n\tsetupTypeInfo : function(test, maskPattern) {\n\t\n\t\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\t\tvar bits = QRUtil.getBCHTypeInfo(data);\n var mod;\n\t\n\t\t// vertical\t\t\n\t\tfor (var v = 0; v < 15; v++) {\n\t\n\t\t\tmod = (!test && ( (bits >> v) & 1) === 1);\n\t\n\t\t\tif (v < 6) {\n\t\t\t\tthis.modules[v][8] = mod;\n\t\t\t} else if (v < 8) {\n\t\t\t\tthis.modules[v + 1][8] = mod;\n\t\t\t} else {\n\t\t\t\tthis.modules[this.moduleCount - 15 + v][8] = mod;\n\t\t\t}\n\t\t}\n\t\n\t\t// horizontal\n\t\tfor (var h = 0; h < 15; h++) {\n\t\n\t\t\tmod = (!test && ( (bits >> h) & 1) === 1);\n\t\t\t\n\t\t\tif (h < 8) {\n\t\t\t\tthis.modules[8][this.moduleCount - h - 1] = mod;\n\t\t\t} else if (h < 9) {\n\t\t\t\tthis.modules[8][15 - h - 1 + 1] = mod;\n\t\t\t} else {\n\t\t\t\tthis.modules[8][15 - h - 1] = mod;\n\t\t\t}\n\t\t}\n\t\n\t\t// fixed module\n\t\tthis.modules[this.moduleCount - 8][8] = (!test);\n\t\n\t},\n\t\n\tmapData : function(data, maskPattern) {\n\t\t\n\t\tvar inc = -1;\n\t\tvar row = this.moduleCount - 1;\n\t\tvar bitIndex = 7;\n\t\tvar byteIndex = 0;\n\t\t\n\t\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\t\n\t\t\tif (col === 6) col--;\n\t\n\t\t\twhile (true) {\n\t\n\t\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\t\n\t\t\t\t\tif (this.modules[row][col - c] === null) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar dark = false;\n\t\n\t\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) === 1);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tvar mask = QRUtil.getMask(maskPattern, row, col - c);\n\t\n\t\t\t\t\t\tif (mask) {\n\t\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\t\tbitIndex--;\n\t\n\t\t\t\t\t\tif (bitIndex === -1) {\n\t\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\trow += inc;\n\t\n\t\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\t\trow -= inc;\n\t\t\t\t\tinc = -inc;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new QRBitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var x = 0; x < rsBlocks.length; x++) {\n\t\ttotalDataCount += rsBlocks[x].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\" + \n buffer.getLengthInBits() + \n \">\" + \n totalDataCount * 8 + \n \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 !== 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var x = 0; x < ecdata[r].length; x++) {\n var modIndex = x + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][x] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var y = 0; y < rsBlocks.length; y++) {\n\t\ttotalCodeCount += rsBlocks[y].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var z = 0; z < maxDcCount; z++) {\n\t\tfor (var s = 0; s < rsBlocks.length; s++) {\n\t\t\tif (z < dcdata[s].length) {\n\t\t\t\tdata[index++] = dcdata[s][z];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var xx = 0; xx < maxEcCount; xx++) {\n\t\tfor (var t = 0; t < rsBlocks.length; t++) {\n\t\t\tif (xx < ecdata[t].length) {\n\t\t\t\tdata[index++] = ecdata[t][xx];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n\n};\n\nmodule.exports = QRCode;\n", "var QRCode = require('./../vendor/QRCode'),\n QRErrorCorrectLevel = require('./../vendor/QRCode/QRErrorCorrectLevel'),\n black = \"\\033[40m \\033[0m\",\n white = \"\\033[47m \\033[0m\",\n toCell = function (isBlack) {\n return isBlack ? black : white;\n },\n repeat = function (color) {\n return {\n times: function (count) {\n return new Array(count).join(color);\n }\n };\n },\n fill = function(length, value) {\n var arr = new Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = value;\n }\n return arr;\n };\n\nmodule.exports = {\n\n error: QRErrorCorrectLevel.L,\n\n generate: function (input, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n\n var qrcode = new QRCode(-1, this.error);\n qrcode.addData(input);\n qrcode.make();\n\n var output = '';\n if (opts && opts.small) {\n var BLACK = true, WHITE = false;\n var moduleCount = qrcode.getModuleCount();\n var moduleData = qrcode.modules.slice();\n\n var oddRow = moduleCount % 2 === 1;\n if (oddRow) {\n moduleData.push(fill(moduleCount, WHITE));\n }\n\n var platte= {\n WHITE_ALL: '\\u2588',\n WHITE_BLACK: '\\u2580',\n BLACK_WHITE: '\\u2584',\n BLACK_ALL: ' ',\n };\n\n var borderTop = repeat(platte.BLACK_WHITE).times(moduleCount + 3);\n var borderBottom = repeat(platte.WHITE_BLACK).times(moduleCount + 3);\n output += borderTop + '\\n';\n\n for (var row = 0; row < moduleCount; row += 2) {\n output += platte.WHITE_ALL;\n\n for (var col = 0; col < moduleCount; col++) {\n if (moduleData[row][col] === WHITE && moduleData[row + 1][col] === WHITE) {\n output += platte.WHITE_ALL;\n } else if (moduleData[row][col] === WHITE && moduleData[row + 1][col] === BLACK) {\n output += platte.WHITE_BLACK;\n } else if (moduleData[row][col] === BLACK && moduleData[row + 1][col] === WHITE) {\n output += platte.BLACK_WHITE;\n } else {\n output += platte.BLACK_ALL;\n }\n }\n\n output += platte.WHITE_ALL + '\\n';\n }\n\n if (!oddRow) {\n output += borderBottom;\n }\n } else {\n var border = repeat(white).times(qrcode.getModuleCount() + 3);\n\n output += border + '\\n';\n qrcode.modules.forEach(function (row) {\n output += white;\n output += row.map(toCell).join(''); \n output += white + '\\n';\n });\n output += border;\n }\n\n if (cb) cb(output);\n else console.log(output);\n },\n\n setErrorLevel: function (error) {\n this.error = QRErrorCorrectLevel[error] || this.error;\n }\n\n};\n", "import { randomBytes, randomUUID, createHash } from \"node:crypto\";\r\nimport * as tty from \"node:tty\";\r\nimport * as os from \"node:os\";\r\nimport qrcode from \"qrcode-terminal\";\r\n\r\nconst OAUTH_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes for polling requests\r\n\r\nfunction ensureOAuthDispatcher() {\r\n try {\r\n const { ensureGlobalUndiciEnvProxyDispatcher } = require(\"openclaw/plugin-sdk/runtime-env\") as typeof import(\"openclaw/plugin-sdk/runtime-env\");\r\n ensureGlobalUndiciEnvProxyDispatcher();\r\n } catch {}\r\n}\r\n\r\nexport type CMTokenRegion = \"cn\" | \"global\";\r\n\r\nconst CMTOKEN_OAUTH_DEFAULT_CONFIG = {\r\n baseUrl: process.env.CMTOKEN_OAUTH_URL as string,\r\n clientId: process.env.CMTOKEN_CLIENT_ID as string,\r\n} as const;\r\n\r\nconst hostname = os.hostname();\r\nconst CMTOKEN_OAUTH_SCOPE = `profile model.completion identity:device:${hostname}`;\r\nconst CMTOKEN_OAUTH_GRANT_TYPE = \"urn:ietf:params:oauth:grant-type:device_code\";\r\n\r\nfunction getOAuthEndpoints(config?: { oauthBaseUrl?: string, clientId?: string }) {\r\n const baseUrl = config?.oauthBaseUrl || CMTOKEN_OAUTH_DEFAULT_CONFIG.baseUrl;\r\n const clientId = config?.clientId || CMTOKEN_OAUTH_DEFAULT_CONFIG.clientId;\r\n return {\r\n codeEndpoint: `${baseUrl}/oauth/device/code`,\r\n tokenEndpoint: `${baseUrl}/oauth/device/token`,\r\n authorizeEndpoint: `${baseUrl}/oauth/authorize`,\r\n clientId,\r\n baseUrl,\r\n };\r\n}\r\n\r\nexport type CMTokenOAuthAuthorization = {\r\n device_code: string;\r\n user_code: string;\r\n verification_uri: string;\r\n verification_uri_complete?: string;\r\n expires_in: number;\r\n interval?: number;\r\n};\r\n\r\nexport type CMTokenOAuthToken = {\r\n access: string;\r\n refresh: string;\r\n expires: number;\r\n resourceUrl?: string;\r\n notification_message?: string;\r\n};\r\n\r\ntype TokenPending = { status: \"pending\"; message?: string };\r\n\r\ntype TokenResult =\r\n | { status: \"success\"; token: CMTokenOAuthToken }\r\n | TokenPending\r\n | { status: \"error\"; message: string };\r\n\r\ninterface TokenResponsePayload {\r\n access_token?: string;\r\n refresh_token?: string;\r\n expires_in?: number;\r\n resource_url?: string;\r\n notification_message?: string;\r\n error?: string;\r\n error_description?: string;\r\n}\r\n\r\nfunction generatePkce(): { verifier: string; challenge: string; state: string } {\r\n const verifier = randomBytes(32).toString(\"base64url\");\r\n const challenge = createHash(\"sha256\").update(verifier).digest(\"base64url\");\r\n const state = randomBytes(16).toString(\"base64url\");\r\n return { verifier, challenge, state };\r\n}\r\n\r\n\r\n\r\nasync function requestDeviceCode(params: {\r\n challenge: string;\r\n state: string;\r\n config?: { oauthBaseUrl?: string, clientId?: string };\r\n}): Promise<CMTokenOAuthAuthorization> {\r\n const endpoints = getOAuthEndpoints(params.config);\r\n\r\n ensureOAuthDispatcher();\r\n\r\n try {\r\n const res = await fetch(endpoints.codeEndpoint, {\r\n method: \"POST\",\r\n signal: AbortSignal.timeout(OAUTH_TIMEOUT_MS),\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n Accept: \"application/json\",\r\n \"x-request-id\": randomUUID(),\r\n },\r\n body: new URLSearchParams({\r\n response_type: \"device_code\",\r\n client_id: endpoints.clientId,\r\n scope: CMTOKEN_OAUTH_SCOPE,\r\n code_challenge: params.challenge,\r\n code_challenge_method: \"S256\",\r\n state: params.state,\r\n }),\r\n });\r\n\r\n const text = await res.text();\r\n if (!res.ok) {\r\n throw new Error(`CMToken OAuth device code request failed: ${text || res.status}`);\r\n }\r\n\r\n const payload = JSON.parse(text) as CMTokenOAuthAuthorization & { error?: string };\r\n if (!payload.device_code || !payload.user_code || !payload.verification_uri) {\r\n throw new Error(\r\n payload.error ??\r\n \"CMToken OAuth returned an incomplete payload (missing device_code, user_code or verification_uri).\",\r\n );\r\n }\r\n return payload;\r\n } catch (err) {\r\n throw new Error(`CMToken OAuth \u8BBE\u5907\u8BF7\u6C42\u8FDE\u63A5\u5931\u8D25 (${endpoints.codeEndpoint}): ${err instanceof Error ? err.message : String(err)}`);\r\n }\r\n}\r\n\r\nasync function pollOAuthToken(params: {\r\n deviceCode: string;\r\n verifier: string;\r\n config?: { oauthBaseUrl?: string, clientId?: string };\r\n}): Promise<TokenResult> {\r\n const endpoints = getOAuthEndpoints(params.config);\r\n ensureOAuthDispatcher();\r\n\r\n let res: Response;\r\n try {\r\n res = await fetch(endpoints.tokenEndpoint, {\r\n method: \"POST\",\r\n signal: AbortSignal.timeout(OAUTH_TIMEOUT_MS),\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n Accept: \"application/json\",\r\n },\r\n body: new URLSearchParams({\r\n grant_type: CMTOKEN_OAUTH_GRANT_TYPE,\r\n client_id: endpoints.clientId,\r\n device_code: params.deviceCode,\r\n code_verifier: params.verifier,\r\n }),\r\n });\r\n } catch (err) {\r\n // Network error during polling, treat as pending to keep retrying\r\n return { status: \"pending\", message: `\u7F51\u7EDC\u8BF7\u6C42\u4E0D\u7A33\u5B9A\uFF0C\u6B63\u5728\u91CD\u8BD5... (${err instanceof Error ? err.message : String(err)})` };\r\n }\r\n\r\n const text = await res.text();\r\n\r\n let payload: TokenResponsePayload | undefined;\r\n try {\r\n payload = JSON.parse(text) as TokenResponsePayload;\r\n } catch {\r\n payload = undefined;\r\n }\r\n\r\n if (!res.ok) {\r\n if (payload?.error === \"authorization_pending\") {\r\n return { status: \"pending\", message: \"\u6B63\u5728\u7B49\u5F85\u7528\u6237\u6388\u6743...\" };\r\n }\r\n if (payload?.error === \"slow_down\") {\r\n return { status: \"pending\", message: \"\u901F\u7387\u53D7\u9650\uFF0C\u6B63\u5728\u51CF\u6162\u8BF7\u6C42...\" };\r\n }\r\n return {\r\n status: \"error\",\r\n message: payload?.error_description ?? payload?.error ?? text ?? \"OAuth \u4EE4\u724C\u8BF7\u6C42\u5931\u8D25\",\r\n };\r\n }\r\n\r\n if (!payload) {\r\n return { status: \"error\", message: \"CMToken OAuth \u65E0\u6CD5\u89E3\u6790\u54CD\u5E94\u3002\" };\r\n }\r\n\r\n if (!payload.access_token || !payload.refresh_token || !payload.expires_in) {\r\n return { status: \"error\", message: \"CMToken OAuth \u8FD4\u56DE\u7684\u4EE4\u724C\u8D1F\u8F7D\u4E0D\u5B8C\u6574\u3002\" };\r\n }\r\n\r\n return {\r\n status: \"success\",\r\n token: {\r\n access: payload.access_token,\r\n refresh: payload.refresh_token,\r\n expires: Date.now() + payload.expires_in * 1000,\r\n resourceUrl: payload.resource_url,\r\n notification_message: payload.notification_message,\r\n },\r\n };\r\n}\r\n\r\nfunction renderQrAscii(data: string, isSmall: boolean = true): Promise<string> {\r\n return new Promise((resolve) => {\r\n qrcode.generate(data, { small: isSmall }, (output: string) => {\r\n resolve(output);\r\n });\r\n });\r\n}\r\n\r\n\r\n\r\nasync function detectModernTerminal(): Promise<{ isModern: boolean; debugInfo: string }> {\r\n // \u4E0D\u5728 TTY \u73AF\u5883\u91CC\uFF08\u5982\u88AB\u7BA1\u9053\u91CD\u5B9A\u5411\uFF09\uFF0C\u76F4\u63A5\u8BA4\u4E3A\u4E0D\u652F\u6301\r\n if (!process.stdout.isTTY) return { isModern: false, debugInfo: \"not_tty\" };\r\n\r\n // \u7531\u4E8E OpenClaw \u6C99\u76D2\u9650\u5236\uFF0C\u6211\u4EEC\u65E0\u6CD5\u8BFB\u53D6 process.env\u3002\r\n // \u5728 Windows \u4E0A\uFF0C\u539F\u751F conhost \u4E5F\u4F1A\u54CD\u5E94 DA1 \u67E5\u8BE2 (\\x1b[c)\uFF0C\u5BFC\u81F4\u65E0\u6CD5\u901A\u8FC7 DA1 \u533A\u5206\u5B83\u548C Windows Terminal\u3002\r\n // \u4F46\u73B0\u4EE3\u7EC8\u7AEF\uFF08\u5982 Windows Terminal, VS Code, iTerm\uFF09\u652F\u6301 OSC 11 \u67E5\u8BE2\u80CC\u666F\u8272\uFF0C\u800C conhost \u4E0D\u652F\u6301\u4E14\u4E0D\u4F1A\u4E71\u7801\u3002\r\n // \u56E0\u6B64\u6211\u4EEC\u901A\u8FC7\u53D1\u9001 DA1 \u548C OSC 11 \u7EC4\u5408\u67E5\u8BE2\uFF0C\u5728 Windows \u4E0A\u5F3A\u4F9D\u8D56 OSC 11 \u54CD\u5E94\u6765\u6392\u9664 conhost\u3002\r\n\r\n return new Promise((resolve) => {\r\n const timeout = setTimeout(() => {\r\n cleanup();\r\n resolve({ isModern: false, debugInfo: \"timeout_no_response\" }); // \u8001\u5F0F\u7EC8\u7AEF\u4E0D\u4F1A\u54CD\u5E94\uFF0C\u8D85\u65F6\u5219\u8BA4\u4E3A\u4E0D\u652F\u6301\r\n }, 300);\r\n\r\n function cleanup() {\r\n clearTimeout(timeout);\r\n process.stdin.removeListener(\"data\", onData);\r\n if (process.stdin.isTTY) (process.stdin as tty.ReadStream).setRawMode(false);\r\n process.stdin.pause();\r\n }\r\n\r\n function onData(data: Buffer) {\r\n cleanup();\r\n const response = data.toString();\r\n let isModern = false;\r\n if (process.platform === \"win32\") {\r\n // \u5728 Windows \u4E0A\uFF0C\u8981\u6C42\u5FC5\u987B\u54CD\u5E94 OSC 11 \u624D\u662F\u73B0\u4EE3\u7EC8\u7AEF\r\n isModern = response.includes(\"\\x1b]11;\");\r\n } else {\r\n // Unix \u7CFB\u7EDF\u4E0B\u517C\u5BB9 DA1/DA2 \u6216 OSC 11 \u54CD\u5E94\r\n isModern = response.includes(\"\\x1b[?\") || response.includes(\"\\x1b[>\") || response.includes(\"\\x1b]11;\");\r\n }\r\n resolve({ isModern, debugInfo: JSON.stringify(response) });\r\n }\r\n\r\n try {\r\n process.stdin.resume();\r\n if (process.stdin.isTTY) (process.stdin as tty.ReadStream).setRawMode(true);\r\n process.stdin.once(\"data\", onData);\r\n\r\n // \u540C\u65F6\u53D1\u9001 DA1 (\\x1b[c) \u548C OSC 11 \u67E5\u8BE2\u80CC\u666F\u8272 (\\x1b]11;?\\x1b\\\\)\r\n process.stdout.write(\"\\x1b[c\\x1b]11;?\\x1b\\\\\");\r\n } catch (e) {\r\n cleanup();\r\n resolve({ isModern: false, debugInfo: `error_${String(e)}` });\r\n }\r\n });\r\n}\r\n\r\nexport async function loginCMTokenOAuth(params: {\r\n openUrl: (url: string) => Promise<void>;\r\n note: (message: string, title?: string) => Promise<void>;\r\n progress: { update: (message: string) => void; stop: (message?: string) => void };\r\n runtime?: { log: (message: string) => void; error: (message: string) => void };\r\n region?: CMTokenRegion;\r\n config?: { oauthBaseUrl?: string, clientId?: string };\r\n}): Promise<CMTokenOAuthToken> {\r\n const endpoints = getOAuthEndpoints(params.config);\r\n const log = params.runtime?.log ?? console.log;\r\n const error = params.runtime?.error ?? console.error;\r\n\r\n params.progress.update(\"\u6B63\u5728\u521D\u59CB\u5316 CMToken OAuth...\");\r\n\r\n let oauth: CMTokenOAuthAuthorization;\r\n const { verifier, challenge, state } = generatePkce();\r\n\r\n try {\r\n params.progress.update(\"\u6B63\u5728\u4ECE\u670D\u52A1\u5668\u83B7\u53D6\u8EAB\u4EFD\u9A8C\u8BC1\u94FE\u63A5...\");\r\n oauth = await requestDeviceCode({ challenge, state, config: params.config });\r\n } catch (err) {\r\n // Graceful Fallback: Show a generic QR even if the fetch fails\r\n const fallbackUrl = endpoints.baseUrl;\r\n const fallbackQr = await renderQrAscii(fallbackUrl);\r\n const errorMsg = err instanceof Error ? err.message : String(err);\r\n\r\n const fallbackLines = [\r\n `\uD83D\uDEA8 **\u8EAB\u4EFD\u9A8C\u8BC1\u8FDE\u63A5\u5931\u8D25**`,\r\n \"\",\r\n `\u9519\u8BEF\u8BE6\u60C5: ${errorMsg}`,\r\n \"\",\r\n \"\u7531\u4E8E\u7F51\u7EDC\u6216\u5B89\u5168\u62E6\u622A\uFF0C\u65E0\u6CD5\u83B7\u53D6\u52A8\u6001\u4E8C\u7EF4\u7801\u3002\u8BF7\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5\u5E76\u5C1D\u8BD5\u5728\u7EC8\u7AEF\u67E5\u770B\u9A8C\u8BC1\u94FE\u63A5\u3002\",\r\n `\u8BBF\u95EE\u5730\u5740: [${fallbackUrl}](${fallbackUrl})`,\r\n ];\r\n\r\n await params.note(fallbackLines.join(\"\\n\"), \"CMToken \u8BA4\u8BC1\u5931\u8D25 (\u5907\u9009\u65B9\u6848)\");\r\n throw err;\r\n }\r\n\r\n const verificationUrl = oauth.verification_uri_complete ?? oauth.verification_uri;\r\n const isWindows = os.platform() === \"win32\";\r\n\r\n // \u901A\u8FC7\u53D1\u9001 ANSI \u8BBE\u5907\u67E5\u8BE2\u7801\u63A2\u6D4B\u662F\u5426\u4E3A\u73B0\u4EE3\u7EC8\u7AEF\r\n let isModernTerminal = true;\r\n if (isWindows) {\r\n const detection = await detectModernTerminal();\r\n isModernTerminal = detection.isModern;\r\n }\r\n \r\n // \u5BF9\u4E8E\u8001\u5F0F\u7EC8\u7AEF\uFF0C\u5173\u95ED small \u6A21\u5F0F\uFF08\u4F7F\u7528\u5168\u65B9\u5757\u5B57\u7B26\uFF09\uFF0C\u867D\u7136\u56FE\u6848\u8F83\u5927\uFF0C\u4F46\u80FD\u5B8C\u7F8E\u517C\u5BB9\u65E7\u7248 conhost \u5B57\u4F53\r\n const qrAscii = await renderQrAscii(verificationUrl, isModernTerminal);\r\n\r\n const noteLines = [\r\n `\u9A8C\u8BC1\u5730\u5740: ${verificationUrl}`,\r\n `\u7528\u6237\u4EE3\u7801: ${oauth.user_code}`,\r\n `\u8BF7\u626B\u63CF\u4E0A\u65B9\u4E8C\u7EF4\u7801\uFF0C\u6216\u590D\u5236\u94FE\u63A5\u5728\u6D4F\u89C8\u5668\u4E2D\u6388\u6743\u3002`,\r\n ];\r\n\r\n log(qrAscii);\r\n await params.note(noteLines.join(\"\\n\"), \"CMToken OAuth \u767B\u5F55\");\r\n\r\n // \u6682\u505C\u52A0\u8F7D\u52A8\u753B\uFF0C\u9632\u6B62\u4E0D\u65AD\u5237\u65B0\u7684\u8F93\u51FA\u5BFC\u81F4\u7EC8\u7AEF\u4E00\u76F4\u81EA\u52A8\u6EDA\u52A8\u5230\u5E95\u90E8\r\n params.progress.stop(\"\u7B49\u5F85\u626B\u7801\u6388\u6743\u4E2D...\uFF08\u53EF\u81EA\u7531\u5411\u4E0A\u6EDA\u52A8\u67E5\u770B\u4E8C\u7EF4\u7801\uFF09\");\r\n\r\n let pollIntervalMs = oauth.interval ? oauth.interval * 1000 : 2000;\r\n const expireTimeMs = Date.now() + oauth.expires_in * 1000;\r\n\r\n while (Date.now() < expireTimeMs) {\r\n // \u4E0D\u518D\u8C03\u7528 update \u5237\u65B0\u52A8\u753B\uFF0C\u4FDD\u6301\u7EC8\u7AEF\u9759\u6B62\r\n const result = await pollOAuthToken({\r\n deviceCode: oauth.device_code,\r\n verifier,\r\n config: params.config,\r\n });\r\n\r\n if (result.status === \"success\") {\r\n return result.token;\r\n }\r\n\r\n if (result.status === \"error\") {\r\n throw new Error(result.message);\r\n }\r\n\r\n if (result.message?.includes(\"slow down\")) {\r\n pollIntervalMs = Math.min(pollIntervalMs + 1000, 4000);\r\n }\r\n\r\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\r\n }\r\n\r\n throw new Error(\"CMToken OAuth \u5728\u6388\u6743\u5B8C\u6210\u524D\u8D85\u65F6\u3002\");\r\n}\r\n\r\nexport async function refreshCMTokenToken(params: {\r\n refreshToken: string;\r\n config?: { oauthBaseUrl?: string, clientId?: string };\r\n}): Promise<CMTokenOAuthToken> {\r\n const endpoints = getOAuthEndpoints(params.config);\r\n\r\n ensureOAuthDispatcher();\r\n\r\n const res = await fetch(endpoints.tokenEndpoint, {\r\n method: \"POST\",\r\n signal: AbortSignal.timeout(OAUTH_TIMEOUT_MS),\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n Accept: \"application/json\",\r\n },\r\n body: new URLSearchParams({\r\n grant_type: \"refresh_token\",\r\n client_id: endpoints.clientId,\r\n refresh_token: params.refreshToken,\r\n }),\r\n });\r\n\r\n const text = await res.text();\r\n\r\n if (!res.ok) {\r\n throw new Error(`CMToken OAuth refresh failed: ${text || res.status}`);\r\n }\r\n\r\n const payload = JSON.parse(text) as TokenResponsePayload;\r\n\r\n if (payload.error) {\r\n throw new Error(`CMToken OAuth refresh failed: ${payload.error_description || payload.error}`);\r\n }\r\n\r\n if (!payload.access_token || !payload.refresh_token || !payload.expires_in) {\r\n throw new Error(\"CMToken OAuth refresh returned incomplete token payload.\");\r\n }\r\n\r\n return {\r\n access: payload.access_token,\r\n refresh: payload.refresh_token,\r\n expires: Date.now() + payload.expires_in * 1000,\r\n resourceUrl: payload.resource_url,\r\n notification_message: payload.notification_message,\r\n };\r\n}\r\n\r\n\r\nexport async function fetchCMTokenOAuthModels(params: {\r\n accessToken: string;\r\n baseUrl: string;\r\n}): Promise<Array<{ id: string; name: string; context_window?: number }>> {\r\n const apiBaseUrl = params.baseUrl;\r\n\r\n const response = await fetch(`${apiBaseUrl}/models`, {\r\n signal: AbortSignal.timeout(OAUTH_TIMEOUT_MS),\r\n headers: {\r\n Authorization: `Bearer ${params.accessToken}`,\r\n Accept: \"application/json\",\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`Failed to fetch models: ${text || response.statusText}`);\r\n }\r\n\r\n const data = (await response.json()) as {\r\n data?: Array<{ id: string; name?: string; context_window?: number }>;\r\n };\r\n\r\n return (data.data ?? []).map((model) => ({\r\n id: model.id,\r\n name: model.name ?? model.id,\r\n context_window: model.context_window,\r\n }));\r\n}\r\n", "export { loginCMTokenOAuth, fetchCMTokenOAuthModels, refreshCMTokenToken } from \"./oauth.js\";\r\n", "import { type ModelDefinitionConfig } from \"openclaw/plugin-sdk/provider-onboard\";\n\n// This is a last-resort fallback. Discovery-first policy ensures we always\n// prefer the first model returned by the API during setup.\nexport const CMTOKEN_DEFAULT_MODEL_ID = \"minimax-m25\";\nexport const CMTOKEN_DEFAULT_MODEL_REF = `cmtoken/${CMTOKEN_DEFAULT_MODEL_ID}`;\n\nexport const CMTOKEN_MODEL_ORDER = [\"minimax-m25\"] as const;\n\nexport const CMTOKEN_MODEL_CATALOG = {\n \"minimax-m25\": {\n name: \"minimax-m25\",\n reasoning: false,\n contextWindow: 192000,\n maxTokens: 8192,\n },\n} as const;\n\nexport const STATIC_MODELS: ModelDefinitionConfig[] = [\n {\n id: \"minimax-m25\",\n name: \"minimax-m25\",\n reasoning: false,\n input: [\"text\" as const],\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n contextWindow: 192000,\n maxTokens: 8192,\n }\n];\n\nexport function isCMTokenModernModelId(modelId: string): boolean {\n return !!modelId;\n}\n", "import type { ModelDefinitionConfig } from \"openclaw/plugin-sdk/provider-onboard\";\r\nimport { STATIC_MODELS } from \"./provider-models.js\";\r\n\r\nexport class CMTokenSubscriptionError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n this.name = \"CMTokenSubscriptionError\";\r\n }\r\n}\r\n\r\nexport class CMTokenDiscoveryError extends Error {\r\n public status: number;\r\n constructor(message: string, status: number) {\r\n super(message);\r\n this.name = \"CMTokenDiscoveryError\";\r\n this.status = status;\r\n }\r\n}\r\n\r\nexport async function fetchCMTokenModels(\r\n url: string,\r\n timeoutMs: number = 15000,\r\n token?: string\r\n): Promise<ModelDefinitionConfig[]> {\r\n if (!token) {\r\n return STATIC_MODELS;\r\n }\r\n\r\n try {\r\n const controller = new AbortController();\r\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\r\n\r\n const headers: Record<string, string> = { \"Accept\": \"application/json\" };\r\n if (token) {\r\n headers[\"Authorization\"] = `Bearer ${token}`;\r\n }\r\n\r\n const response = await fetch(url, {\r\n signal: controller.signal,\r\n headers\r\n });\r\n\r\n clearTimeout(timeout);\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text().catch(() => \"N/A\");\r\n\r\n // Handle subscription error specifically (not in plan or expired)\r\n const isSubscriptionError = response.status === 403 &&\r\n (errorText.includes(\"\u8BA2\u9605\u5957\u9910\") || errorText.includes(\"\u8BA2\u9605\u5DF2\u8FC7\u671F\") || errorText.includes(\"\u4F59\u989D\u4E0D\u8DB3\"));\r\n\r\n if (isSubscriptionError) {\r\n console.warn(`[CMToken] Subscription issue: ${errorText}`);\r\n throw new CMTokenSubscriptionError(errorText);\r\n }\r\n\r\n if (response.status !== 401 && response.status !== 400) {\r\n console.error(`[CMToken] Fetch models failed (${response.status}): ${errorText.slice(0, 200)}`);\r\n }\r\n throw new CMTokenDiscoveryError(errorText, response.status);\r\n }\r\n\r\n const data = await response.json();\r\n const modelsArray = Array.isArray(data.models) ? data.models : (data.data && Array.isArray(data.data) ? data.data : null);\r\n\r\n if (modelsArray) {\r\n return modelsArray;\r\n }\r\n\r\n if (data && data.code && data.code !== 100200) {\r\n const msg = data.msg || data.message || \"Unknown error\";\r\n if (data.code === 403 && msg.includes(\"\u8BA2\u9605\u5957\u9910\")) {\r\n throw new CMTokenSubscriptionError(msg);\r\n }\r\n if (data.code !== 100401 && data.code !== 401) {\r\n console.error(`[CMToken] Models API returned error code ${data.code}: ${msg}`);\r\n }\r\n }\r\n\r\n return STATIC_MODELS;\r\n } catch (err: any) {\r\n if (err instanceof CMTokenSubscriptionError) {\r\n throw err;\r\n }\r\n if (!(err instanceof CMTokenDiscoveryError && (err.status === 401 || err.status === 400)) && !(err.message && (err.message.includes(\"100401\") || err.message.includes(\"\u7528\u6237\u672A\u767B\u5F55\")))) {\r\n throw new CMTokenDiscoveryError(err.message || String(err), err.status || 0);\r\n }\r\n return STATIC_MODELS;\r\n }\r\n}\r\n", "import { definePluginEntry } from \"openclaw/plugin-sdk/plugin-entry\";\nimport { registerCMTokenProviders } from \"./provider-registration.js\";\n\nexport default definePluginEntry({\n id: \"cmtoken\",\n name: \"CMToken\",\n description: \"CMToken provider plugin with OAuth support (browser and QR code)\",\n register(api) {\n registerCMTokenProviders(api);\n },\n});\n", "import { formatErrorMessage } from \"openclaw/plugin-sdk/error-runtime\";\r\nimport type {\r\n OpenClawPluginApi,\r\n ProviderAuthContext,\r\n ProviderAuthResult,\r\n ProviderCatalogContext,\r\n} from \"openclaw/plugin-sdk/plugin-entry\";\r\nimport {\r\n buildOauthProviderAuthResult,\r\n} from \"openclaw/plugin-sdk/provider-auth\";\r\n\r\nimport { CMTOKEN_DEFAULT_MODEL_ID } from \"./provider-models.js\";\r\n\r\nconst PROVIDER_ID = \"cmtoken\";\r\nconst PROVIDER_LABEL = \"CMToken\";\r\n\r\nconst DEFAULT_DISCOVERY_URL = \"https://maas.gd.chinamobile.com:36007/ai/uifm/open/v1/models\";\r\nconst DEFAULT_BASE_URL = \"https://maas.gd.chinamobile.com:36007/ai/uifm/open/v1\";\r\n\r\nconst INLINED_STATIC_MODELS: any[] = [];\r\n\r\n// \u4FDD\u5B58 wizard \u914D\u7F6E\u7684\u5F15\u7528\uFF0C\u65B9\u4FBF\u6211\u4EEC\u5728\u8BF7\u6C42\u5230\u6A21\u578B\u540E\u52A8\u6001\u6CE8\u5165 modelAllowlist\uFF0C\u4EE5\u7ED5\u8FC7\u8017\u65F6\u7684\u5168\u5C40\u63D2\u4EF6\u52A0\u8F7D\r\nconst CMTOKEN_API_KEY_WIZARD_CONFIG: any = {\r\n choiceId: \"cmtoken-api-key\",\r\n choiceLabel: \"CMToken API Key\",\r\n groupId: PROVIDER_ID,\r\n groupLabel: PROVIDER_LABEL,\r\n groupHint: \"CMToken AI \u6A21\u578B\",\r\n modelAllowlist: {\r\n allowedKeys: [\r\n `${PROVIDER_ID}/minimax-m25`,\r\n `${PROVIDER_ID}/qwen36-35b`,\r\n `${PROVIDER_ID}/deepseekv4-flash`,\r\n `${PROVIDER_ID}/deepseek-r1`,\r\n `${PROVIDER_ID}/deepseek-v3`,\r\n `${PROVIDER_ID}/qwen-max`,\r\n `${PROVIDER_ID}/qwen-turbo`\r\n ]\r\n }\r\n};\r\n\r\nasync function resolveApiCatalog(ctx: ProviderCatalogContext) {\r\n const config = ctx.config as any;\r\n\r\n // FAST PATH: Use models already saved in config (from OAuth/API Key setup) to avoid slow duplicate fetch on startup\r\n const providerModels = config.models?.providers?.[PROVIDER_ID]?.models;\r\n if (providerModels && Array.isArray(providerModels) && providerModels.length > 0) {\r\n return { provider: { baseUrl: config.baseUrl || DEFAULT_BASE_URL, api: \"openai-completions\" as const, models: providerModels } };\r\n }\r\n\r\n // STATIC FALLBACK: Do not perform network requests during provider discovery to prevent blocking the OpenClaw CLI for up to 4 minutes on Windows.\r\n // The real models will be fetched and saved during the 'configure' setup flow.\r\n return { provider: { baseUrl: config.baseUrl || DEFAULT_BASE_URL, api: \"openai-completions\" as const, models: INLINED_STATIC_MODELS.map(m => ({ ...m })) } };\r\n}\r\n\r\nfunction augmentCMTokenCatalog(ctx: any): any[] {\r\n return INLINED_STATIC_MODELS.map(m => ({ ...m, provider: PROVIDER_ID }));\r\n}\r\n\r\nasync function selectCMTokenDefaultModel(ctx: ProviderAuthContext, models: any[]): Promise<string | undefined> {\r\n if (models.length > 0) {\r\n let currentDefault = \"\u65E0\";\r\n const cfgModel = (ctx.config as any)?.agents?.defaults?.model;\r\n if (typeof cfgModel === \"string\") {\r\n currentDefault = cfgModel;\r\n } else if (cfgModel && typeof cfgModel === \"object\" && cfgModel.primary) {\r\n currentDefault = cfgModel.primary;\r\n } else if (cfgModel && typeof cfgModel === \"object\" && cfgModel.model) {\r\n currentDefault = `${cfgModel.provider || \"unknown\"}/${cfgModel.model}`;\r\n }\r\n\r\n const options: any[] = [];\r\n if (currentDefault !== \"\u65E0\") {\r\n options.push({ value: \"skip\", label: `\u4FDD\u6301\u539F\u6709\u9ED8\u8BA4\u6A21\u578B (Keep current default: ${currentDefault})` });\r\n }\r\n options.push(...models.map(m => ({ value: `${PROVIDER_ID}/${m.id}`, label: m.name || m.id })));\r\n\r\n const selected = await ctx.prompter.select({\r\n message: \"\u8BF7\u9009\u62E9\u9ED8\u8BA4\u4F7F\u7528\u54EA\u4E2A\u6A21\u578B\uFF1F(Select Default Model)\",\r\n options,\r\n initialValue: currentDefault !== \"\u65E0\" ? \"skip\" : options[0]?.value,\r\n });\r\n if (selected === \"skip\") {\r\n return undefined;\r\n }\r\n if (typeof selected === \"string\") {\r\n return selected;\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nasync function runCMTokenOAuth(ctx: ProviderAuthContext): Promise<ProviderAuthResult> {\r\n const progress = ctx.prompter.progress(`\u6B63\u5728\u542F\u52A8 CMToken OAuth\u2026`);\r\n try {\r\n const { loginCMTokenOAuth } = await import(\"./oauth.runtime.js\");\r\n const config = ctx.config as any;\r\n const result = await loginCMTokenOAuth({\r\n openUrl: ctx.openUrl,\r\n note: ctx.prompter.note,\r\n progress,\r\n runtime: (ctx as any).runtime,\r\n config: {\r\n oauthBaseUrl: config.oauthBaseUrl,\r\n clientId: config.clientId,\r\n }\r\n });\r\n progress.stop(\"CMToken OAuth \u5B8C\u6210\");\r\n\r\n const discoveryUrl = config.discoveryUrl || DEFAULT_DISCOVERY_URL;\r\n const { fetchCMTokenModels, CMTokenSubscriptionError, CMTokenDiscoveryError } = await import(\"./discovery.js\");\r\n let rawModels: any[] = [];\r\n try {\r\n rawModels = await fetchCMTokenModels(discoveryUrl, 15000, result.access);\r\n } catch (err) {\r\n if (err instanceof CMTokenSubscriptionError) {\r\n throw err;\r\n } else if (err instanceof CMTokenDiscoveryError) {\r\n throw new Error(`\u6A21\u578B\u5217\u8868\u83B7\u53D6\u5931\u8D25 (\u72B6\u6001\u7801: ${err.status})\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u6CE2\u52A8\u6216\u670D\u52A1\u7AEF\u6682\u65F6\u4E0D\u53EF\u7528\u5F15\u8D77\u7684\uFF0C\u914D\u7F6E\u6D41\u7A0B\u5DF2\u4E2D\u65AD\u3002\\n\\n\u8BE6\u60C5: ${err.message}`);\r\n }\r\n throw err;\r\n }\r\n\r\n const models = rawModels.map((m: any) => ({\r\n id: m.id,\r\n name: m.name || m.id,\r\n reasoning: false,\r\n input: [\"text\" as const],\r\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\r\n contextWindow: m.contextWindow || 192000,\r\n maxTokens: m.maxTokens || 8192,\r\n }));\r\n\r\n let finalModels = models;\r\n\r\n if (finalModels && finalModels.length > 0) {\r\n dynamicModelAllowlist = finalModels.map((m: any) => m.id.includes('/') ? m.id : `${PROVIDER_ID}/${m.id}`);\r\n }\r\n\r\n const primaryModelId = await selectCMTokenDefaultModel(ctx, finalModels);\r\n\r\n return {\r\n profiles: [{\r\n profileId: `${PROVIDER_ID}:default`,\r\n credential: {\r\n provider: PROVIDER_ID,\r\n type: \"oauth\",\r\n access: result.access,\r\n refresh: result.refresh,\r\n expires: result.expires,\r\n } as any,\r\n }],\r\n configPatch: {\r\n models: {\r\n providers: {\r\n [PROVIDER_ID]: { baseUrl: result.resourceUrl || config.baseUrl || DEFAULT_BASE_URL, api: \"openai-completions\" as const, models: finalModels }\r\n }\r\n },\r\n ...(primaryModelId ? {\r\n agents: {\r\n defaults: {\r\n model: {\r\n primary: primaryModelId\r\n }\r\n }\r\n }\r\n } : {})\r\n } as any,\r\n };\r\n } catch (err: any) {\r\n const errorMsg = formatErrorMessage(err);\r\n progress.stop(`CMToken OAuth \u5931\u8D25: ${errorMsg}`);\r\n throw err;\r\n }\r\n}\r\n\r\n// Module-level cache to store dynamically fetched models during the run() phase.\r\n// OpenClaw evaluates the plugin registry again after run() completes, so this\r\n// will inject the precise dynamic models into the wizard bypass.\r\nlet dynamicModelAllowlist: string[] | undefined = undefined;\r\n\r\nexport function registerCMTokenProviders(api: OpenClawPluginApi) {\r\n const allowedKeys = dynamicModelAllowlist;\r\n\r\n api.registerProvider({\r\n id: PROVIDER_ID,\r\n label: PROVIDER_LABEL,\r\n docsPath: \"/plugins/cmtoken\",\r\n auth: [\r\n {\r\n id: \"api-key\",\r\n label: \"CMToken API Key\",\r\n hint: \"\u4F7F\u7528 API Key \u8FDB\u884C\u8BA4\u8BC1\",\r\n kind: \"api_key\",\r\n wizard: CMTOKEN_API_KEY_WIZARD_CONFIG,\r\n async run(ctx: any) {\r\n const {\r\n ensureApiKeyFromOptionEnvOrPrompt,\r\n buildApiKeyCredential,\r\n normalizeApiKeyInput,\r\n validateApiKeyInput\r\n } = await import(\"openclaw/plugin-sdk/provider-auth\");\r\n\r\n let capturedSecretInput: any;\r\n let capturedMode: any;\r\n\r\n await (ensureApiKeyFromOptionEnvOrPrompt as any)({\r\n token: ctx.opts?.token,\r\n tokenProvider: ctx.opts?.tokenProvider,\r\n secretInputMode: ctx.allowSecretRefPrompt === false ? (ctx.secretInputMode ?? \"plaintext\") : ctx.secretInputMode,\r\n config: ctx.config,\r\n env: ctx.env,\r\n expectedProviders: [PROVIDER_ID],\r\n provider: PROVIDER_ID,\r\n promptMessage: \"\u8BF7\u8F93\u5165 CMToken API Key\",\r\n normalize: normalizeApiKeyInput,\r\n validate: validateApiKeyInput,\r\n prompter: ctx.prompter,\r\n setCredential: async (apiKey: string, mode: any) => {\r\n capturedSecretInput = apiKey;\r\n capturedMode = mode;\r\n },\r\n });\r\n\r\n const profileId = `${PROVIDER_ID}:default`;\r\n const credential = buildApiKeyCredential(PROVIDER_ID, capturedSecretInput, {}, {\r\n secretInputMode: capturedMode,\r\n config: ctx.config\r\n });\r\n\r\n const config = ctx.config as any;\r\n const discoveryUrl = config.discoveryUrl || DEFAULT_DISCOVERY_URL;\r\n let models: any[] = [];\r\n try {\r\n const { fetchCMTokenModels } = await import(\"./discovery.js\");\r\n const rawModels = await fetchCMTokenModels(discoveryUrl, 15000, capturedSecretInput);\r\n if (rawModels && Array.isArray(rawModels) && rawModels.length > 0) {\r\n models = rawModels.map((m: any) => ({\r\n id: m.id,\r\n name: m.name || m.id,\r\n reasoning: false,\r\n input: [\"text\" as const],\r\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\r\n contextWindow: m.contextWindow || 192000,\r\n maxTokens: m.maxTokens || 8192,\r\n }));\r\n if (models && models.length > 0) {\r\n dynamicModelAllowlist = models.map((m: any) => `${PROVIDER_ID}/${m.id}`);\r\n }\r\n }\r\n } catch (discoveryErr: any) {\r\n if (discoveryErr instanceof Error) {\r\n throw discoveryErr;\r\n }\r\n throw new Error(`\u6A21\u578B\u5217\u8868\u83B7\u53D6\u5931\u8D25\u3002\u914D\u7F6E\u6D41\u7A0B\u5DF2\u4E2D\u65AD\u3002`);\r\n }\r\n\r\n const primaryModelId = await selectCMTokenDefaultModel(ctx, models);\r\n\r\n // No longer caching dynamically here.\r\n\r\n return {\r\n configPatch: {\r\n models: {\r\n providers: {\r\n [PROVIDER_ID]: { baseUrl: config.baseUrl || DEFAULT_BASE_URL, api: \"openai-completions\" as const, models }\r\n }\r\n },\r\n ...(primaryModelId ? {\r\n agents: {\r\n defaults: {\r\n model: {\r\n primary: primaryModelId\r\n }\r\n }\r\n }\r\n } : {})\r\n } as any,\r\n profiles: [\r\n { profileId, credential }\r\n ],\r\n };\r\n }\r\n } as any,\r\n {\r\n id: \"oauth\",\r\n label: \"CMToken OAuth\",\r\n hint: \"\u901A\u8FC7\u79FB\u52A8\u8BA4\u8BC1\u6D4F\u89C8\u5668\u6D41\u767B\u5F55\",\r\n kind: \"device_code\",\r\n run: runCMTokenOAuth,\r\n applyConfig: (cfg: any) => ({\r\n ...cfg,\r\n models: {\r\n ...cfg.models,\r\n providers: {\r\n ...cfg.models?.providers,\r\n [PROVIDER_ID]: { baseUrl: DEFAULT_BASE_URL, api: \"openai-completions\", models: INLINED_STATIC_MODELS }\r\n }\r\n },\r\n // We no longer manually touch cfg.agents.defaults.models here to prevent overwrites.\r\n }),\r\n wizard: {\r\n choiceId: \"cmtoken-oauth\",\r\n choiceLabel: \"CMToken OAuth\",\r\n groupId: PROVIDER_ID,\r\n groupLabel: PROVIDER_LABEL,\r\n groupHint: \"CMToken AI \u6A21\u578B\",\r\n },\r\n } as any,\r\n ],\r\n wizard: {\r\n setup: {\r\n modelAllowlist: { \r\n allowedKeys,\r\n loadCatalog: false\r\n }\r\n }\r\n },\r\n catalog: { order: \"simple\", run: async (ctx: any) => resolveApiCatalog(ctx) },\r\n augmentModelCatalog: (ctx: any) => augmentCMTokenCatalog(ctx),\r\n async refreshOAuth(cred: any) {\r\n const { refreshCMTokenToken } = await import(\"./oauth.js\");\r\n // Use defaults if config is not easily accessible here; \r\n // but usually the plugin can access its own config if needed.\r\n try {\r\n const result = await refreshCMTokenToken({ refreshToken: cred.refresh });\r\n // Invalidate discovery cache logic removed\r\n return {\r\n ...cred,\r\n access: result.access,\r\n refresh: result.refresh,\r\n expires: result.expires,\r\n };\r\n } catch (err) {\r\n console.error(`[CMToken] refreshOAuth failed:`, err);\r\n throw err;\r\n }\r\n },\r\n classifyFailoverReason(ctx: any) {\r\n const errorMsg = ctx.error?.message || String(ctx.error);\r\n if (errorMsg.includes(\"\u8BA2\u9605\u5957\u9910\") || errorMsg.includes(\"\u8BA2\u9605\u5DF2\u8FC7\u671F\") || errorMsg.includes(\"\u4F59\u989D\u4E0D\u8DB3\")) {\r\n return \"billing\";\r\n }\r\n return undefined;\r\n },\r\n });\r\n}\r\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["module.exports = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n};\n", "var QRMode = require('./QRMode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = QRMode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function() {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n", "var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n", "var QRMath = require('./QRMath');\n\nfunction QRPolynomial(num, shift) {\n\tif (num.length === undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] === 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i) ) + QRMath.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = QRMath.glog(this.get(0) ) - QRMath.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var x = 0; x < e.getLength(); x++) {\n\t\t\tnum[x] ^= QRMath.gexp(QRMath.glog(e.get(x) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n", "module.exports = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n", "var QRMode = require('./QRMode');\nvar QRPolynomial = require('./QRPolynomial');\nvar QRMath = require('./QRMath');\nvar QRMaskPattern = require('./QRMaskPattern');\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54], \n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n var d = data << 10;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \n }\n return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n var d = data << 12;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \n }\n return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n var digit = 0;\n\n while (data !== 0) {\n digit++;\n data >>>= 1;\n }\n\n return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n \n switch (maskPattern) {\n \n case QRMaskPattern.PATTERN000 : return (i + j) % 2 === 0;\n case QRMaskPattern.PATTERN001 : return i % 2 === 0;\n case QRMaskPattern.PATTERN010 : return j % 3 === 0;\n case QRMaskPattern.PATTERN011 : return (i + j) % 3 === 0;\n case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 === 0;\n case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 === 0;\n case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 === 0;\n case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 === 0;\n\n default :\n throw new Error(\"bad maskPattern:\" + maskPattern);\n }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n var a = new QRPolynomial([1], 0);\n\n for (var i = 0; i < errorCorrectLength; i++) {\n a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0) );\n }\n\n return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw new Error(\"mode:\" + mode);\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw new Error(\"mode:\" + mode);\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw new Error(\"mode:\" + mode);\n }\n\n } else {\n throw new Error(\"type:\" + type);\n }\n },\n\n getLostPoint : function(qrCode) {\n \n var moduleCount = qrCode.getModuleCount();\n var lostPoint = 0;\n var row = 0; \n var col = 0;\n\n \n // LEVEL1\n \n for (row = 0; row < moduleCount; row++) {\n\n for (col = 0; col < moduleCount; col++) {\n\n var sameCount = 0;\n var dark = qrCode.isDark(row, col);\n\n for (var r = -1; r <= 1; r++) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c++) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r === 0 && c === 0) {\n continue;\n }\n\n if (dark === qrCode.isDark(row + r, col + c) ) {\n sameCount++;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n }\n\n // LEVEL2\n\n for (row = 0; row < moduleCount - 1; row++) {\n for (col = 0; col < moduleCount - 1; col++) {\n var count = 0;\n if (qrCode.isDark(row, col ) ) count++;\n if (qrCode.isDark(row + 1, col ) ) count++;\n if (qrCode.isDark(row, col + 1) ) count++;\n if (qrCode.isDark(row + 1, col + 1) ) count++;\n if (count === 0 || count === 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (row = 0; row < moduleCount; row++) {\n for (col = 0; col < moduleCount - 6; col++) {\n if (qrCode.isDark(row, col) && \n !qrCode.isDark(row, col + 1) && \n qrCode.isDark(row, col + 2) && \n qrCode.isDark(row, col + 3) && \n qrCode.isDark(row, col + 4) && \n !qrCode.isDark(row, col + 5) && \n qrCode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (col = 0; col < moduleCount; col++) {\n for (row = 0; row < moduleCount - 6; row++) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row + 1, col) &&\n qrCode.isDark(row + 2, col) &&\n qrCode.isDark(row + 3, col) &&\n qrCode.isDark(row + 4, col) &&\n !qrCode.isDark(row + 5, col) &&\n qrCode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n \n var darkCount = 0;\n\n for (col = 0; col < moduleCount; col++) {\n for (row = 0; row < moduleCount; row++) {\n if (qrCode.isDark(row, col) ) {\n darkCount++;\n }\n }\n }\n \n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint; \n }\n\n};\n\nmodule.exports = QRUtil;\n", "module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n", "var QRErrorCorrectLevel = require('./QRErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock === undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = [];\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n};\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase QRErrorCorrectLevel.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase QRErrorCorrectLevel.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase QRErrorCorrectLevel.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase QRErrorCorrectLevel.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n};\n\nmodule.exports = QRRSBlock;\n", "function QRBitBuffer() {\n\tthis.buffer = [];\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n", "//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of \n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n// Modified to work in node for this project (and some refactoring)\n//---------------------------------------------------------------------\n\nvar QR8bitByte = require('./QR8bitByte');\nvar QRUtil = require('./QRUtil');\nvar QRPolynomial = require('./QRPolynomial');\nvar QRRSBlock = require('./QRRSBlock');\nvar QRBitBuffer = require('./QRBitBuffer');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\nQRCode.prototype = {\n\t\n\taddData : function(data) {\n\t\tvar newData = new QR8bitByte(data);\n\t\tthis.dataList.push(newData);\n\t\tthis.dataCache = null;\n\t},\n\t\n\tisDark : function(row, col) {\n\t\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\t\tthrow new Error(row + \",\" + col);\n\t\t}\n\t\treturn this.modules[row][col];\n\t},\n\n\tgetModuleCount : function() {\n\t\treturn this.moduleCount;\n\t},\n\t\n\tmake : function() {\n\t\t// Calculate automatically typeNumber if provided is < 1\n\t\tif (this.typeNumber < 1 ){\n\t\t\tvar typeNumber = 1;\n\t\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\t\tvar rsBlocks = QRRSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\t\tvar buffer = new QRBitBuffer();\n\t\t\t\tvar totalDataCount = 0;\n\t\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t\t}\n\n\t\t\t\tfor (var x = 0; x < this.dataList.length; x++) {\n\t\t\t\t\tvar data = this.dataList[x];\n\t\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\t\tbuffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\t\tdata.write(buffer);\n\t\t\t\t}\n\t\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.typeNumber = typeNumber;\n\t\t}\n\t\tthis.makeImpl(false, this.getBestMaskPattern() );\n\t},\n\t\n\tmakeImpl : function(test, maskPattern) {\n\t\t\n\t\tthis.moduleCount = this.typeNumber * 4 + 17;\n\t\tthis.modules = new Array(this.moduleCount);\n\t\t\n\t\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\t\n\t\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\t\n\t\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t\t}\n\t\t}\n\t\n\t\tthis.setupPositionProbePattern(0, 0);\n\t\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\t\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\t\tthis.setupPositionAdjustPattern();\n\t\tthis.setupTimingPattern();\n\t\tthis.setupTypeInfo(test, maskPattern);\n\t\t\n\t\tif (this.typeNumber >= 7) {\n\t\t\tthis.setupTypeNumber(test);\n\t\t}\n\t\n\t\tif (this.dataCache === null) {\n\t\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t\t}\n\t\n\t\tthis.mapData(this.dataCache, maskPattern);\n\t},\n\n\tsetupPositionProbePattern : function(row, col) {\n\t\t\n\t\tfor (var r = -1; r <= 7; r++) {\n\t\t\t\n\t\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\t\n\t\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\t\n\t\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\t\n\t\t\t\tif ( (0 <= r && r <= 6 && (c === 0 || c === 6) ) || \n (0 <= c && c <= 6 && (r === 0 || r === 6) ) || \n (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t} else {\n\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t}\n\t\t\t}\t\t\n\t\t}\t\t\n\t},\n\t\n\tgetBestMaskPattern : function() {\n\t\n\t\tvar minLostPoint = 0;\n\t\tvar pattern = 0;\n\t\n\t\tfor (var i = 0; i < 8; i++) {\n\t\t\t\n\t\t\tthis.makeImpl(true, i);\n\t\n\t\t\tvar lostPoint = QRUtil.getLostPoint(this);\n\t\n\t\t\tif (i === 0 || minLostPoint > lostPoint) {\n\t\t\t\tminLostPoint = lostPoint;\n\t\t\t\tpattern = i;\n\t\t\t}\n\t\t}\n\t\n\t\treturn pattern;\n\t},\n\t\n\tcreateMovieClip : function(target_mc, instance_name, depth) {\n\t\n\t\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\t\tvar cs = 1;\n\t\n\t\tthis.make();\n\n\t\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\t\n\t\t\tvar y = row * cs;\n\t\t\t\n\t\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\t\n\t\t\t\tvar x = col * cs;\n\t\t\t\tvar dark = this.modules[row][col];\n\t\t\t\n\t\t\t\tif (dark) {\n\t\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\t\tqr_mc.endFill();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn qr_mc;\n\t},\n\n\tsetupTimingPattern : function() {\n\t\t\n\t\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\t\tif (this.modules[r][6] !== null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.modules[r][6] = (r % 2 === 0);\n\t\t}\n\t\n\t\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\t\tif (this.modules[6][c] !== null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.modules[6][c] = (c % 2 === 0);\n\t\t}\n\t},\n\t\n\tsetupPositionAdjustPattern : function() {\n\t\n\t\tvar pos = QRUtil.getPatternPosition(this.typeNumber);\n\t\t\n\t\tfor (var i = 0; i < pos.length; i++) {\n\t\t\n\t\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\t\n\t\t\t\tvar row = pos[i];\n\t\t\t\tvar col = pos[j];\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col] !== null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\t\n\t\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\t\n\t\t\t\t\t\tif (Math.abs(r) === 2 || \n Math.abs(c) === 2 ||\n (r === 0 && c === 0) ) {\n\t\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\tsetupTypeNumber : function(test) {\n\t\n\t\tvar bits = QRUtil.getBCHTypeNumber(this.typeNumber);\n var mod;\n\t\n\t\tfor (var i = 0; i < 18; i++) {\n\t\t\tmod = (!test && ( (bits >> i) & 1) === 1);\n\t\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t\t}\n\t\n\t\tfor (var x = 0; x < 18; x++) {\n\t\t\tmod = (!test && ( (bits >> x) & 1) === 1);\n\t\t\tthis.modules[x % 3 + this.moduleCount - 8 - 3][Math.floor(x / 3)] = mod;\n\t\t}\n\t},\n\t\n\tsetupTypeInfo : function(test, maskPattern) {\n\t\n\t\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\t\tvar bits = QRUtil.getBCHTypeInfo(data);\n var mod;\n\t\n\t\t// vertical\t\t\n\t\tfor (var v = 0; v < 15; v++) {\n\t\n\t\t\tmod = (!test && ( (bits >> v) & 1) === 1);\n\t\n\t\t\tif (v < 6) {\n\t\t\t\tthis.modules[v][8] = mod;\n\t\t\t} else if (v < 8) {\n\t\t\t\tthis.modules[v + 1][8] = mod;\n\t\t\t} else {\n\t\t\t\tthis.modules[this.moduleCount - 15 + v][8] = mod;\n\t\t\t}\n\t\t}\n\t\n\t\t// horizontal\n\t\tfor (var h = 0; h < 15; h++) {\n\t\n\t\t\tmod = (!test && ( (bits >> h) & 1) === 1);\n\t\t\t\n\t\t\tif (h < 8) {\n\t\t\t\tthis.modules[8][this.moduleCount - h - 1] = mod;\n\t\t\t} else if (h < 9) {\n\t\t\t\tthis.modules[8][15 - h - 1 + 1] = mod;\n\t\t\t} else {\n\t\t\t\tthis.modules[8][15 - h - 1] = mod;\n\t\t\t}\n\t\t}\n\t\n\t\t// fixed module\n\t\tthis.modules[this.moduleCount - 8][8] = (!test);\n\t\n\t},\n\t\n\tmapData : function(data, maskPattern) {\n\t\t\n\t\tvar inc = -1;\n\t\tvar row = this.moduleCount - 1;\n\t\tvar bitIndex = 7;\n\t\tvar byteIndex = 0;\n\t\t\n\t\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\t\n\t\t\tif (col === 6) col--;\n\t\n\t\t\twhile (true) {\n\t\n\t\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\t\n\t\t\t\t\tif (this.modules[row][col - c] === null) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar dark = false;\n\t\n\t\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) === 1);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tvar mask = QRUtil.getMask(maskPattern, row, col - c);\n\t\n\t\t\t\t\t\tif (mask) {\n\t\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\t\tbitIndex--;\n\t\n\t\t\t\t\t\tif (bitIndex === -1) {\n\t\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\trow += inc;\n\t\n\t\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\t\trow -= inc;\n\t\t\t\t\tinc = -inc;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new QRBitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var x = 0; x < rsBlocks.length; x++) {\n\t\ttotalDataCount += rsBlocks[x].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\" + \n buffer.getLengthInBits() + \n \">\" + \n totalDataCount * 8 + \n \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 !== 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var x = 0; x < ecdata[r].length; x++) {\n var modIndex = x + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][x] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var y = 0; y < rsBlocks.length; y++) {\n\t\ttotalCodeCount += rsBlocks[y].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var z = 0; z < maxDcCount; z++) {\n\t\tfor (var s = 0; s < rsBlocks.length; s++) {\n\t\t\tif (z < dcdata[s].length) {\n\t\t\t\tdata[index++] = dcdata[s][z];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var xx = 0; xx < maxEcCount; xx++) {\n\t\tfor (var t = 0; t < rsBlocks.length; t++) {\n\t\t\tif (xx < ecdata[t].length) {\n\t\t\t\tdata[index++] = ecdata[t][xx];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n\n};\n\nmodule.exports = QRCode;\n", "var QRCode = require('./../vendor/QRCode'),\n QRErrorCorrectLevel = require('./../vendor/QRCode/QRErrorCorrectLevel'),\n black = \"\\033[40m \\033[0m\",\n white = \"\\033[47m \\033[0m\",\n toCell = function (isBlack) {\n return isBlack ? black : white;\n },\n repeat = function (color) {\n return {\n times: function (count) {\n return new Array(count).join(color);\n }\n };\n },\n fill = function(length, value) {\n var arr = new Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = value;\n }\n return arr;\n };\n\nmodule.exports = {\n\n error: QRErrorCorrectLevel.L,\n\n generate: function (input, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n\n var qrcode = new QRCode(-1, this.error);\n qrcode.addData(input);\n qrcode.make();\n\n var output = '';\n if (opts && opts.small) {\n var BLACK = true, WHITE = false;\n var moduleCount = qrcode.getModuleCount();\n var moduleData = qrcode.modules.slice();\n\n var oddRow = moduleCount % 2 === 1;\n if (oddRow) {\n moduleData.push(fill(moduleCount, WHITE));\n }\n\n var platte= {\n WHITE_ALL: '\\u2588',\n WHITE_BLACK: '\\u2580',\n BLACK_WHITE: '\\u2584',\n BLACK_ALL: ' ',\n };\n\n var borderTop = repeat(platte.BLACK_WHITE).times(moduleCount + 3);\n var borderBottom = repeat(platte.WHITE_BLACK).times(moduleCount + 3);\n output += borderTop + '\\n';\n\n for (var row = 0; row < moduleCount; row += 2) {\n output += platte.WHITE_ALL;\n\n for (var col = 0; col < moduleCount; col++) {\n if (moduleData[row][col] === WHITE && moduleData[row + 1][col] === WHITE) {\n output += platte.WHITE_ALL;\n } else if (moduleData[row][col] === WHITE && moduleData[row + 1][col] === BLACK) {\n output += platte.WHITE_BLACK;\n } else if (moduleData[row][col] === BLACK && moduleData[row + 1][col] === WHITE) {\n output += platte.BLACK_WHITE;\n } else {\n output += platte.BLACK_ALL;\n }\n }\n\n output += platte.WHITE_ALL + '\\n';\n }\n\n if (!oddRow) {\n output += borderBottom;\n }\n } else {\n var border = repeat(white).times(qrcode.getModuleCount() + 3);\n\n output += border + '\\n';\n qrcode.modules.forEach(function (row) {\n output += white;\n output += row.map(toCell).join(''); \n output += white + '\\n';\n });\n output += border;\n }\n\n if (cb) cb(output);\n else console.log(output);\n },\n\n setErrorLevel: function (error) {\n this.error = QRErrorCorrectLevel[error] || this.error;\n }\n\n};\n", "import { randomBytes, randomUUID, createHash } from \"node:crypto\";\r\nimport * as tty from \"node:tty\";\r\nimport * as os from \"node:os\";\r\nimport qrcode from \"qrcode-terminal\";\r\n\r\nconst OAUTH_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes for polling requests\r\n\r\nfunction ensureOAuthDispatcher() {\r\n try {\r\n const { ensureGlobalUndiciEnvProxyDispatcher } = require(\"openclaw/plugin-sdk/runtime-env\") as typeof import(\"openclaw/plugin-sdk/runtime-env\");\r\n ensureGlobalUndiciEnvProxyDispatcher();\r\n } catch {}\r\n}\r\n\r\nexport type CMTokenRegion = \"cn\" | \"global\";\r\n\r\nconst CMTOKEN_OAUTH_DEFAULT_CONFIG = {\r\n baseUrl: process.env.CMTOKEN_OAUTH_URL as string,\r\n clientId: process.env.CMTOKEN_CLIENT_ID as string,\r\n} as const;\r\n\r\nconst hostname = os.hostname();\r\nconst CMTOKEN_OAUTH_SCOPE = `profile model.completion identity:device:${hostname}`;\r\nconst CMTOKEN_OAUTH_GRANT_TYPE = \"urn:ietf:params:oauth:grant-type:device_code\";\r\n\r\nfunction getOAuthEndpoints(config?: { oauthBaseUrl?: string, clientId?: string }) {\r\n const baseUrl = config?.oauthBaseUrl || CMTOKEN_OAUTH_DEFAULT_CONFIG.baseUrl;\r\n const clientId = config?.clientId || CMTOKEN_OAUTH_DEFAULT_CONFIG.clientId;\r\n return {\r\n codeEndpoint: `${baseUrl}/oauth/device/code`,\r\n tokenEndpoint: `${baseUrl}/oauth/device/token`,\r\n authorizeEndpoint: `${baseUrl}/oauth/authorize`,\r\n clientId,\r\n baseUrl,\r\n };\r\n}\r\n\r\nexport type CMTokenOAuthAuthorization = {\r\n device_code: string;\r\n user_code: string;\r\n verification_uri: string;\r\n verification_uri_complete?: string;\r\n expires_in: number;\r\n interval?: number;\r\n};\r\n\r\nexport type CMTokenOAuthToken = {\r\n access: string;\r\n refresh: string;\r\n expires: number;\r\n resourceUrl?: string;\r\n notification_message?: string;\r\n};\r\n\r\ntype TokenPending = { status: \"pending\"; message?: string };\r\n\r\ntype TokenResult =\r\n | { status: \"success\"; token: CMTokenOAuthToken }\r\n | TokenPending\r\n | { status: \"error\"; message: string };\r\n\r\ninterface TokenResponsePayload {\r\n access_token?: string;\r\n refresh_token?: string;\r\n expires_in?: number;\r\n resource_url?: string;\r\n notification_message?: string;\r\n error?: string;\r\n error_description?: string;\r\n}\r\n\r\nfunction generatePkce(): { verifier: string; challenge: string; state: string } {\r\n const verifier = randomBytes(32).toString(\"base64url\");\r\n const challenge = createHash(\"sha256\").update(verifier).digest(\"base64url\");\r\n const state = randomBytes(16).toString(\"base64url\");\r\n return { verifier, challenge, state };\r\n}\r\n\r\n\r\n\r\nasync function requestDeviceCode(params: {\r\n challenge: string;\r\n state: string;\r\n config?: { oauthBaseUrl?: string, clientId?: string };\r\n}): Promise<CMTokenOAuthAuthorization> {\r\n const endpoints = getOAuthEndpoints(params.config);\r\n\r\n ensureOAuthDispatcher();\r\n\r\n try {\r\n const res = await fetch(endpoints.codeEndpoint, {\r\n method: \"POST\",\r\n signal: AbortSignal.timeout(OAUTH_TIMEOUT_MS),\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n Accept: \"application/json\",\r\n \"x-request-id\": randomUUID(),\r\n },\r\n body: new URLSearchParams({\r\n response_type: \"device_code\",\r\n client_id: endpoints.clientId,\r\n scope: CMTOKEN_OAUTH_SCOPE,\r\n code_challenge: params.challenge,\r\n code_challenge_method: \"S256\",\r\n state: params.state,\r\n }),\r\n });\r\n\r\n const text = await res.text();\r\n if (!res.ok) {\r\n throw new Error(`CMToken OAuth device code request failed: ${text || res.status}`);\r\n }\r\n\r\n const payload = JSON.parse(text) as CMTokenOAuthAuthorization & { error?: string };\r\n if (!payload.device_code || !payload.user_code || !payload.verification_uri) {\r\n throw new Error(\r\n payload.error ??\r\n \"CMToken OAuth returned an incomplete payload (missing device_code, user_code or verification_uri).\",\r\n );\r\n }\r\n return payload;\r\n } catch (err) {\r\n throw new Error(`CMToken OAuth \u8BBE\u5907\u8BF7\u6C42\u8FDE\u63A5\u5931\u8D25 (${endpoints.codeEndpoint}): ${err instanceof Error ? err.message : String(err)}`);\r\n }\r\n}\r\n\r\nasync function pollOAuthToken(params: {\r\n deviceCode: string;\r\n verifier: string;\r\n config?: { oauthBaseUrl?: string, clientId?: string };\r\n}): Promise<TokenResult> {\r\n const endpoints = getOAuthEndpoints(params.config);\r\n ensureOAuthDispatcher();\r\n\r\n let res: Response;\r\n try {\r\n res = await fetch(endpoints.tokenEndpoint, {\r\n method: \"POST\",\r\n signal: AbortSignal.timeout(OAUTH_TIMEOUT_MS),\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n Accept: \"application/json\",\r\n },\r\n body: new URLSearchParams({\r\n grant_type: CMTOKEN_OAUTH_GRANT_TYPE,\r\n client_id: endpoints.clientId,\r\n device_code: params.deviceCode,\r\n code_verifier: params.verifier,\r\n }),\r\n });\r\n } catch (err) {\r\n // Network error during polling, treat as pending to keep retrying\r\n return { status: \"pending\", message: `\u7F51\u7EDC\u8BF7\u6C42\u4E0D\u7A33\u5B9A\uFF0C\u6B63\u5728\u91CD\u8BD5... (${err instanceof Error ? err.message : String(err)})` };\r\n }\r\n\r\n const text = await res.text();\r\n\r\n let payload: TokenResponsePayload | undefined;\r\n try {\r\n payload = JSON.parse(text) as TokenResponsePayload;\r\n } catch {\r\n payload = undefined;\r\n }\r\n\r\n if (!res.ok) {\r\n if (payload?.error === \"authorization_pending\") {\r\n return { status: \"pending\", message: \"\u6B63\u5728\u7B49\u5F85\u7528\u6237\u6388\u6743...\" };\r\n }\r\n if (payload?.error === \"slow_down\") {\r\n return { status: \"pending\", message: \"\u901F\u7387\u53D7\u9650\uFF0C\u6B63\u5728\u51CF\u6162\u8BF7\u6C42...\" };\r\n }\r\n return {\r\n status: \"error\",\r\n message: payload?.error_description ?? payload?.error ?? text ?? \"OAuth \u4EE4\u724C\u8BF7\u6C42\u5931\u8D25\",\r\n };\r\n }\r\n\r\n if (!payload) {\r\n return { status: \"error\", message: \"CMToken OAuth \u65E0\u6CD5\u89E3\u6790\u54CD\u5E94\u3002\" };\r\n }\r\n\r\n if (!payload.access_token || !payload.refresh_token || !payload.expires_in) {\r\n return { status: \"error\", message: \"CMToken OAuth \u8FD4\u56DE\u7684\u4EE4\u724C\u8D1F\u8F7D\u4E0D\u5B8C\u6574\u3002\" };\r\n }\r\n\r\n return {\r\n status: \"success\",\r\n token: {\r\n access: payload.access_token,\r\n refresh: payload.refresh_token,\r\n expires: Date.now() + payload.expires_in * 1000,\r\n resourceUrl: payload.resource_url,\r\n notification_message: payload.notification_message,\r\n },\r\n };\r\n}\r\n\r\nfunction renderQrAscii(data: string, isSmall: boolean = true): Promise<string> {\r\n return new Promise((resolve) => {\r\n qrcode.generate(data, { small: isSmall }, (output: string) => {\r\n resolve(output);\r\n });\r\n });\r\n}\r\n\r\n\r\n\r\nasync function detectModernTerminal(): Promise<{ isModern: boolean; debugInfo: string }> {\r\n // \u4E0D\u5728 TTY \u73AF\u5883\u91CC\uFF08\u5982\u88AB\u7BA1\u9053\u91CD\u5B9A\u5411\uFF09\uFF0C\u76F4\u63A5\u8BA4\u4E3A\u4E0D\u652F\u6301\r\n if (!process.stdout.isTTY) return { isModern: false, debugInfo: \"not_tty\" };\r\n\r\n // \u7531\u4E8E OpenClaw \u6C99\u76D2\u9650\u5236\uFF0C\u6211\u4EEC\u65E0\u6CD5\u8BFB\u53D6 process.env\u3002\r\n // \u5728 Windows \u4E0A\uFF0C\u539F\u751F conhost \u4E5F\u4F1A\u54CD\u5E94 DA1 \u67E5\u8BE2 (\\x1b[c)\uFF0C\u5BFC\u81F4\u65E0\u6CD5\u901A\u8FC7 DA1 \u533A\u5206\u5B83\u548C Windows Terminal\u3002\r\n // \u4F46\u73B0\u4EE3\u7EC8\u7AEF\uFF08\u5982 Windows Terminal, VS Code, iTerm\uFF09\u652F\u6301 OSC 11 \u67E5\u8BE2\u80CC\u666F\u8272\uFF0C\u800C conhost \u4E0D\u652F\u6301\u4E14\u4E0D\u4F1A\u4E71\u7801\u3002\r\n // \u56E0\u6B64\u6211\u4EEC\u901A\u8FC7\u53D1\u9001 DA1 \u548C OSC 11 \u7EC4\u5408\u67E5\u8BE2\uFF0C\u5728 Windows \u4E0A\u5F3A\u4F9D\u8D56 OSC 11 \u54CD\u5E94\u6765\u6392\u9664 conhost\u3002\r\n\r\n return new Promise((resolve) => {\r\n const timeout = setTimeout(() => {\r\n cleanup();\r\n resolve({ isModern: false, debugInfo: \"timeout_no_response\" }); // \u8001\u5F0F\u7EC8\u7AEF\u4E0D\u4F1A\u54CD\u5E94\uFF0C\u8D85\u65F6\u5219\u8BA4\u4E3A\u4E0D\u652F\u6301\r\n }, 300);\r\n\r\n function cleanup() {\r\n clearTimeout(timeout);\r\n process.stdin.removeListener(\"data\", onData);\r\n if (process.stdin.isTTY) (process.stdin as tty.ReadStream).setRawMode(false);\r\n process.stdin.pause();\r\n }\r\n\r\n function onData(data: Buffer) {\r\n cleanup();\r\n const response = data.toString();\r\n let isModern = false;\r\n if (process.platform === \"win32\") {\r\n // \u5728 Windows \u4E0A\uFF0C\u8981\u6C42\u5FC5\u987B\u54CD\u5E94 OSC 11 \u624D\u662F\u73B0\u4EE3\u7EC8\u7AEF\r\n isModern = response.includes(\"\\x1b]11;\");\r\n } else {\r\n // Unix \u7CFB\u7EDF\u4E0B\u517C\u5BB9 DA1/DA2 \u6216 OSC 11 \u54CD\u5E94\r\n isModern = response.includes(\"\\x1b[?\") || response.includes(\"\\x1b[>\") || response.includes(\"\\x1b]11;\");\r\n }\r\n resolve({ isModern, debugInfo: JSON.stringify(response) });\r\n }\r\n\r\n try {\r\n process.stdin.resume();\r\n if (process.stdin.isTTY) (process.stdin as tty.ReadStream).setRawMode(true);\r\n process.stdin.once(\"data\", onData);\r\n\r\n // \u540C\u65F6\u53D1\u9001 DA1 (\\x1b[c) \u548C OSC 11 \u67E5\u8BE2\u80CC\u666F\u8272 (\\x1b]11;?\\x1b\\\\)\r\n process.stdout.write(\"\\x1b[c\\x1b]11;?\\x1b\\\\\");\r\n } catch (e) {\r\n cleanup();\r\n resolve({ isModern: false, debugInfo: `error_${String(e)}` });\r\n }\r\n });\r\n}\r\n\r\nexport async function loginCMTokenOAuth(params: {\r\n openUrl: (url: string) => Promise<void>;\r\n note: (message: string, title?: string) => Promise<void>;\r\n progress: { update: (message: string) => void; stop: (message?: string) => void };\r\n runtime?: { log: (message: string) => void; error: (message: string) => void };\r\n region?: CMTokenRegion;\r\n config?: { oauthBaseUrl?: string, clientId?: string };\r\n}): Promise<CMTokenOAuthToken> {\r\n const endpoints = getOAuthEndpoints(params.config);\r\n const log = params.runtime?.log ?? console.log;\r\n const error = params.runtime?.error ?? console.error;\r\n\r\n params.progress.update(\"\u6B63\u5728\u521D\u59CB\u5316 CMToken OAuth...\");\r\n\r\n let oauth: CMTokenOAuthAuthorization;\r\n const { verifier, challenge, state } = generatePkce();\r\n\r\n try {\r\n params.progress.update(\"\u6B63\u5728\u4ECE\u670D\u52A1\u5668\u83B7\u53D6\u8EAB\u4EFD\u9A8C\u8BC1\u94FE\u63A5...\");\r\n oauth = await requestDeviceCode({ challenge, state, config: params.config });\r\n } catch (err) {\r\n // Graceful Fallback: Show a generic QR even if the fetch fails\r\n const fallbackUrl = endpoints.baseUrl;\r\n const fallbackQr = await renderQrAscii(fallbackUrl);\r\n const errorMsg = err instanceof Error ? err.message : String(err);\r\n\r\n const fallbackLines = [\r\n `\uD83D\uDEA8 **\u8EAB\u4EFD\u9A8C\u8BC1\u8FDE\u63A5\u5931\u8D25**`,\r\n \"\",\r\n `\u9519\u8BEF\u8BE6\u60C5: ${errorMsg}`,\r\n \"\",\r\n \"\u7531\u4E8E\u7F51\u7EDC\u6216\u5B89\u5168\u62E6\u622A\uFF0C\u65E0\u6CD5\u83B7\u53D6\u52A8\u6001\u4E8C\u7EF4\u7801\u3002\u8BF7\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5\u5E76\u5C1D\u8BD5\u5728\u7EC8\u7AEF\u67E5\u770B\u9A8C\u8BC1\u94FE\u63A5\u3002\",\r\n `\u8BBF\u95EE\u5730\u5740: [${fallbackUrl}](${fallbackUrl})`,\r\n ];\r\n\r\n await params.note(fallbackLines.join(\"\\n\"), \"CMToken \u8BA4\u8BC1\u5931\u8D25 (\u5907\u9009\u65B9\u6848)\");\r\n throw err;\r\n }\r\n\r\n const verificationUrl = oauth.verification_uri_complete ?? oauth.verification_uri;\r\n const isWindows = os.platform() === \"win32\";\r\n\r\n // \u901A\u8FC7\u53D1\u9001 ANSI \u8BBE\u5907\u67E5\u8BE2\u7801\u63A2\u6D4B\u662F\u5426\u4E3A\u73B0\u4EE3\u7EC8\u7AEF\r\n let isModernTerminal = true;\r\n if (isWindows) {\r\n const detection = await detectModernTerminal();\r\n isModernTerminal = detection.isModern;\r\n }\r\n \r\n // \u5BF9\u4E8E\u8001\u5F0F\u7EC8\u7AEF\uFF0C\u5173\u95ED small \u6A21\u5F0F\uFF08\u4F7F\u7528\u5168\u65B9\u5757\u5B57\u7B26\uFF09\uFF0C\u867D\u7136\u56FE\u6848\u8F83\u5927\uFF0C\u4F46\u80FD\u5B8C\u7F8E\u517C\u5BB9\u65E7\u7248 conhost \u5B57\u4F53\r\n const qrAscii = await renderQrAscii(verificationUrl, isModernTerminal);\r\n\r\n const noteLines = [\r\n `\u9A8C\u8BC1\u5730\u5740: ${verificationUrl}`,\r\n `\u7528\u6237\u4EE3\u7801: ${oauth.user_code}`,\r\n `\u8BF7\u626B\u63CF\u4E0A\u65B9\u4E8C\u7EF4\u7801\uFF0C\u6216\u590D\u5236\u94FE\u63A5\u5728\u6D4F\u89C8\u5668\u4E2D\u6388\u6743\u3002`,\r\n ];\r\n\r\n log(qrAscii);\r\n await params.note(noteLines.join(\"\\n\"), \"CMToken OAuth \u767B\u5F55\");\r\n\r\n // \u6682\u505C\u52A0\u8F7D\u52A8\u753B\uFF0C\u9632\u6B62\u4E0D\u65AD\u5237\u65B0\u7684\u8F93\u51FA\u5BFC\u81F4\u7EC8\u7AEF\u4E00\u76F4\u81EA\u52A8\u6EDA\u52A8\u5230\u5E95\u90E8\r\n params.progress.stop(\"\u7B49\u5F85\u626B\u7801\u6388\u6743\u4E2D...\uFF08\u53EF\u81EA\u7531\u5411\u4E0A\u6EDA\u52A8\u67E5\u770B\u4E8C\u7EF4\u7801\uFF09\");\r\n\r\n let pollIntervalMs = oauth.interval ? oauth.interval * 1000 : 2000;\r\n const expireTimeMs = Date.now() + oauth.expires_in * 1000;\r\n\r\n while (Date.now() < expireTimeMs) {\r\n // \u4E0D\u518D\u8C03\u7528 update \u5237\u65B0\u52A8\u753B\uFF0C\u4FDD\u6301\u7EC8\u7AEF\u9759\u6B62\r\n const result = await pollOAuthToken({\r\n deviceCode: oauth.device_code,\r\n verifier,\r\n config: params.config,\r\n });\r\n\r\n if (result.status === \"success\") {\r\n return result.token;\r\n }\r\n\r\n if (result.status === \"error\") {\r\n throw new Error(result.message);\r\n }\r\n\r\n if (result.message?.includes(\"slow down\")) {\r\n pollIntervalMs = Math.min(pollIntervalMs + 1000, 4000);\r\n }\r\n\r\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\r\n }\r\n\r\n throw new Error(\"CMToken OAuth \u5728\u6388\u6743\u5B8C\u6210\u524D\u8D85\u65F6\u3002\");\r\n}\r\n\r\nexport async function refreshCMTokenToken(params: {\r\n refreshToken: string;\r\n config?: { oauthBaseUrl?: string, clientId?: string };\r\n}): Promise<CMTokenOAuthToken> {\r\n const endpoints = getOAuthEndpoints(params.config);\r\n\r\n ensureOAuthDispatcher();\r\n\r\n const res = await fetch(endpoints.tokenEndpoint, {\r\n method: \"POST\",\r\n signal: AbortSignal.timeout(OAUTH_TIMEOUT_MS),\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n Accept: \"application/json\",\r\n },\r\n body: new URLSearchParams({\r\n grant_type: \"refresh_token\",\r\n client_id: endpoints.clientId,\r\n refresh_token: params.refreshToken,\r\n }),\r\n });\r\n\r\n const text = await res.text();\r\n\r\n if (!res.ok) {\r\n throw new Error(`CMToken OAuth refresh failed: ${text || res.status}`);\r\n }\r\n\r\n const payload = JSON.parse(text) as TokenResponsePayload;\r\n\r\n if (payload.error) {\r\n throw new Error(`CMToken OAuth refresh failed: ${payload.error_description || payload.error}`);\r\n }\r\n\r\n if (!payload.access_token || !payload.refresh_token || !payload.expires_in) {\r\n throw new Error(\"CMToken OAuth refresh returned incomplete token payload.\");\r\n }\r\n\r\n return {\r\n access: payload.access_token,\r\n refresh: payload.refresh_token,\r\n expires: Date.now() + payload.expires_in * 1000,\r\n resourceUrl: payload.resource_url,\r\n notification_message: payload.notification_message,\r\n };\r\n}\r\n\r\n\r\nexport async function fetchCMTokenOAuthModels(params: {\r\n accessToken: string;\r\n baseUrl: string;\r\n}): Promise<Array<{ id: string; name: string; context_window?: number }>> {\r\n const apiBaseUrl = params.baseUrl;\r\n\r\n const response = await fetch(`${apiBaseUrl}/models`, {\r\n signal: AbortSignal.timeout(OAUTH_TIMEOUT_MS),\r\n headers: {\r\n Authorization: `Bearer ${params.accessToken}`,\r\n Accept: \"application/json\",\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`Failed to fetch models: ${text || response.statusText}`);\r\n }\r\n\r\n const data = (await response.json()) as {\r\n data?: Array<{ id: string; name?: string; context_window?: number }>;\r\n };\r\n\r\n return (data.data ?? []).map((model) => ({\r\n id: model.id,\r\n name: model.name ?? model.id,\r\n context_window: model.context_window,\r\n }));\r\n}\r\n", "export { loginCMTokenOAuth, fetchCMTokenOAuthModels, refreshCMTokenToken } from \"./oauth.js\";\r\n", "import { type ModelDefinitionConfig } from \"openclaw/plugin-sdk/provider-onboard\";\n\n// This is a last-resort fallback. Discovery-first policy ensures we always\n// prefer the first model returned by the API during setup.\nexport const CMTOKEN_DEFAULT_MODEL_ID = \"minimax-m25\";\nexport const CMTOKEN_DEFAULT_MODEL_REF = `cmtoken/${CMTOKEN_DEFAULT_MODEL_ID}`;\n\nexport const CMTOKEN_MODEL_ORDER = [\"minimax-m25\"] as const;\n\nexport const CMTOKEN_MODEL_CATALOG = {\n \"minimax-m25\": {\n name: \"minimax-m25\",\n reasoning: false,\n contextWindow: 192000,\n maxTokens: 8192,\n },\n} as const;\n\nexport const STATIC_MODELS: ModelDefinitionConfig[] = [\n {\n id: \"minimax-m25\",\n name: \"minimax-m25\",\n reasoning: false,\n input: [\"text\" as const],\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n contextWindow: 192000,\n maxTokens: 8192,\n }\n];\n\nexport function isCMTokenModernModelId(modelId: string): boolean {\n return !!modelId;\n}\n", "import type { ModelDefinitionConfig } from \"openclaw/plugin-sdk/provider-onboard\";\r\nimport { STATIC_MODELS } from \"./provider-models.js\";\r\n\r\nexport class CMTokenSubscriptionError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n this.name = \"CMTokenSubscriptionError\";\r\n }\r\n}\r\n\r\nexport class CMTokenDiscoveryError extends Error {\r\n public status: number;\r\n constructor(message: string, status: number) {\r\n super(message);\r\n this.name = \"CMTokenDiscoveryError\";\r\n this.status = status;\r\n }\r\n}\r\n\r\nexport async function fetchCMTokenModels(\r\n url: string,\r\n timeoutMs: number = 15000,\r\n token?: string\r\n): Promise<ModelDefinitionConfig[]> {\r\n if (!token) {\r\n return STATIC_MODELS;\r\n }\r\n\r\n try {\r\n const controller = new AbortController();\r\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\r\n\r\n const headers: Record<string, string> = { \"Accept\": \"application/json\" };\r\n if (token) {\r\n headers[\"Authorization\"] = `Bearer ${token}`;\r\n }\r\n\r\n const response = await fetch(url, {\r\n signal: controller.signal,\r\n headers\r\n });\r\n\r\n clearTimeout(timeout);\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text().catch(() => \"N/A\");\r\n\r\n // Handle subscription error specifically (not in plan or expired)\r\n const isSubscriptionError = response.status === 403 &&\r\n (errorText.includes(\"\u8BA2\u9605\u5957\u9910\") || errorText.includes(\"\u8BA2\u9605\u5DF2\u8FC7\u671F\") || errorText.includes(\"\u4F59\u989D\u4E0D\u8DB3\"));\r\n\r\n if (isSubscriptionError) {\r\n console.warn(`[CMToken] Subscription issue: ${errorText}`);\r\n throw new CMTokenSubscriptionError(errorText);\r\n }\r\n\r\n if (response.status !== 401 && response.status !== 400) {\r\n console.error(`[CMToken] Fetch models failed (${response.status}): ${errorText.slice(0, 200)}`);\r\n }\r\n throw new CMTokenDiscoveryError(errorText, response.status);\r\n }\r\n\r\n const data = await response.json();\r\n const modelsArray = Array.isArray(data.models) ? data.models : (data.data && Array.isArray(data.data) ? data.data : null);\r\n\r\n if (modelsArray) {\r\n return modelsArray;\r\n }\r\n\r\n if (data && data.code && data.code !== 100200) {\r\n const msg = data.msg || data.message || \"Unknown error\";\r\n if (data.code === 403 && msg.includes(\"\u8BA2\u9605\u5957\u9910\")) {\r\n throw new CMTokenSubscriptionError(msg);\r\n }\r\n if (data.code !== 100401 && data.code !== 401) {\r\n console.error(`[CMToken] Models API returned error code ${data.code}: ${msg}`);\r\n }\r\n }\r\n\r\n return STATIC_MODELS;\r\n } catch (err: any) {\r\n if (err instanceof CMTokenSubscriptionError) {\r\n throw err;\r\n }\r\n if (!(err instanceof CMTokenDiscoveryError && (err.status === 401 || err.status === 400)) && !(err.message && (err.message.includes(\"100401\") || err.message.includes(\"\u7528\u6237\u672A\u767B\u5F55\")))) {\r\n throw new CMTokenDiscoveryError(err.message || String(err), err.status || 0);\r\n }\r\n return STATIC_MODELS;\r\n }\r\n}\r\n", "import { definePluginEntry } from \"openclaw/plugin-sdk/plugin-entry\";\nimport { registerCMTokenProviders } from \"./provider-registration.js\";\n\nexport default definePluginEntry({\n id: \"cmtoken\",\n name: \"CMToken\",\n description: \"CMToken provider plugin with OAuth support (browser and QR code)\",\n register(api) {\n registerCMTokenProviders(api);\n },\n});\n", "import { formatErrorMessage } from \"openclaw/plugin-sdk/error-runtime\";\r\nimport type {\r\n OpenClawPluginApi,\r\n ProviderAuthContext,\r\n ProviderAuthResult,\r\n ProviderCatalogContext,\r\n} from \"openclaw/plugin-sdk/plugin-entry\";\r\nimport {\r\n buildOauthProviderAuthResult,\r\n} from \"openclaw/plugin-sdk/provider-auth\";\r\n\r\nimport { CMTOKEN_DEFAULT_MODEL_ID } from \"./provider-models.js\";\r\n\r\nconst PROVIDER_ID = \"cmtoken\";\r\nconst PROVIDER_LABEL = \"CMToken\";\r\n\r\nconst DEFAULT_DISCOVERY_URL = \"https://maas.gd.chinamobile.com:36007/ai/uifm/open/v1/models\";\r\nconst DEFAULT_BASE_URL = \"https://maas.gd.chinamobile.com:36007/ai/uifm/open/v1\";\r\n\r\nconst INLINED_STATIC_MODELS: any[] = [];\r\n\r\n// \u4FDD\u5B58 wizard \u914D\u7F6E\u7684\u5F15\u7528\uFF0C\u65B9\u4FBF\u6211\u4EEC\u5728\u8BF7\u6C42\u5230\u6A21\u578B\u540E\u52A8\u6001\u6CE8\u5165 modelAllowlist\uFF0C\u4EE5\u7ED5\u8FC7\u8017\u65F6\u7684\u5168\u5C40\u63D2\u4EF6\u52A0\u8F7D\r\nconst CMTOKEN_API_KEY_WIZARD_CONFIG: any = {\r\n choiceId: \"cmtoken-api-key\",\r\n choiceLabel: \"CMToken API Key\",\r\n groupId: PROVIDER_ID,\r\n groupLabel: PROVIDER_LABEL,\r\n groupHint: \"CMToken AI \u6A21\u578B\",\r\n modelAllowlist: {\r\n loadCatalog: false\r\n }\r\n};\r\n\r\nasync function resolveApiCatalog(ctx: ProviderCatalogContext) {\r\n const config = ctx.config as any;\r\n\r\n // FAST PATH: Use models already saved in config (from OAuth/API Key setup) to avoid slow duplicate fetch on startup\r\n const providerModels = config.models?.providers?.[PROVIDER_ID]?.models;\r\n if (providerModels && Array.isArray(providerModels) && providerModels.length > 0) {\r\n return { provider: { baseUrl: config.baseUrl || DEFAULT_BASE_URL, api: \"openai-completions\" as const, models: providerModels } };\r\n }\r\n\r\n // STATIC FALLBACK: Do not perform network requests during provider discovery to prevent blocking the OpenClaw CLI for up to 4 minutes on Windows.\r\n // The real models will be fetched and saved during the 'configure' setup flow.\r\n return { provider: { baseUrl: config.baseUrl || DEFAULT_BASE_URL, api: \"openai-completions\" as const, models: INLINED_STATIC_MODELS.map(m => ({ ...m })) } };\r\n}\r\n\r\nfunction augmentCMTokenCatalog(ctx: any): any[] {\r\n return INLINED_STATIC_MODELS.map(m => ({ ...m, provider: PROVIDER_ID }));\r\n}\r\n\r\nasync function selectCMTokenDefaultModel(ctx: ProviderAuthContext, models: any[]): Promise<string | undefined> {\r\n if (models.length > 0) {\r\n let currentDefault = \"\u65E0\";\r\n const cfgModel = (ctx.config as any)?.agents?.defaults?.model;\r\n if (typeof cfgModel === \"string\") {\r\n currentDefault = cfgModel;\r\n } else if (cfgModel && typeof cfgModel === \"object\" && cfgModel.primary) {\r\n currentDefault = cfgModel.primary;\r\n } else if (cfgModel && typeof cfgModel === \"object\" && cfgModel.model) {\r\n currentDefault = `${cfgModel.provider || \"unknown\"}/${cfgModel.model}`;\r\n }\r\n\r\n const options: any[] = [];\r\n if (currentDefault !== \"\u65E0\") {\r\n options.push({ value: \"skip\", label: `\u4FDD\u6301\u539F\u6709\u9ED8\u8BA4\u6A21\u578B (Keep current default: ${currentDefault})` });\r\n }\r\n options.push(...models.map(m => ({ value: `${PROVIDER_ID}/${m.id}`, label: m.name || m.id })));\r\n\r\n const selected = await ctx.prompter.select({\r\n message: \"\u8BF7\u9009\u62E9\u9ED8\u8BA4\u4F7F\u7528\u54EA\u4E2A\u6A21\u578B\uFF1F(Select Default Model)\",\r\n options,\r\n initialValue: currentDefault !== \"\u65E0\" ? \"skip\" : options[0]?.value,\r\n });\r\n if (selected === \"skip\") {\r\n return undefined;\r\n }\r\n if (typeof selected === \"string\") {\r\n return selected;\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nasync function runCMTokenOAuth(ctx: ProviderAuthContext): Promise<ProviderAuthResult> {\r\n const progress = ctx.prompter.progress(`\u6B63\u5728\u542F\u52A8 CMToken OAuth\u2026`);\r\n try {\r\n const { loginCMTokenOAuth } = await import(\"./oauth.runtime.js\");\r\n const config = ctx.config as any;\r\n const result = await loginCMTokenOAuth({\r\n openUrl: ctx.openUrl,\r\n note: ctx.prompter.note,\r\n progress,\r\n runtime: (ctx as any).runtime,\r\n config: {\r\n oauthBaseUrl: config.oauthBaseUrl,\r\n clientId: config.clientId,\r\n }\r\n });\r\n progress.stop(\"CMToken OAuth \u5B8C\u6210\");\r\n\r\n const discoveryUrl = config.discoveryUrl || DEFAULT_DISCOVERY_URL;\r\n const { fetchCMTokenModels, CMTokenSubscriptionError, CMTokenDiscoveryError } = await import(\"./discovery.js\");\r\n let rawModels: any[] = [];\r\n try {\r\n rawModels = await fetchCMTokenModels(discoveryUrl, 15000, result.access);\r\n } catch (err) {\r\n if (err instanceof CMTokenSubscriptionError) {\r\n throw err;\r\n } else if (err instanceof CMTokenDiscoveryError) {\r\n throw new Error(`\u6A21\u578B\u5217\u8868\u83B7\u53D6\u5931\u8D25 (\u72B6\u6001\u7801: ${err.status})\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u6CE2\u52A8\u6216\u670D\u52A1\u7AEF\u6682\u65F6\u4E0D\u53EF\u7528\u5F15\u8D77\u7684\uFF0C\u914D\u7F6E\u6D41\u7A0B\u5DF2\u4E2D\u65AD\u3002\\n\\n\u8BE6\u60C5: ${err.message}`);\r\n }\r\n throw err;\r\n }\r\n\r\n const models = rawModels.map((m: any) => ({\r\n id: m.id,\r\n name: m.name || m.id,\r\n reasoning: false,\r\n input: [\"text\" as const],\r\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\r\n contextWindow: m.contextWindow || 192000,\r\n maxTokens: m.maxTokens || 8192,\r\n }));\r\n\r\n let finalModels = models;\r\n\r\n if (finalModels && finalModels.length > 0) {\r\n dynamicModelAllowlist = finalModels.map((m: any) => m.id.includes('/') ? m.id : `${PROVIDER_ID}/${m.id}`);\r\n }\r\n\r\n const primaryModelId = await selectCMTokenDefaultModel(ctx, finalModels);\r\n\r\n return {\r\n profiles: [{\r\n profileId: `${PROVIDER_ID}:default`,\r\n credential: {\r\n provider: PROVIDER_ID,\r\n type: \"oauth\",\r\n access: result.access,\r\n refresh: result.refresh,\r\n expires: result.expires,\r\n } as any,\r\n }],\r\n configPatch: {\r\n models: {\r\n providers: {\r\n [PROVIDER_ID]: { baseUrl: result.resourceUrl || config.baseUrl || DEFAULT_BASE_URL, api: \"openai-completions\" as const, models: finalModels }\r\n }\r\n },\r\n ...(primaryModelId ? {\r\n agents: {\r\n defaults: {\r\n model: {\r\n primary: primaryModelId\r\n }\r\n }\r\n }\r\n } : {})\r\n } as any,\r\n };\r\n } catch (err: any) {\r\n const errorMsg = formatErrorMessage(err);\r\n progress.stop(`CMToken OAuth \u5931\u8D25: ${errorMsg}`);\r\n throw err;\r\n }\r\n}\r\n\r\n// Module-level cache to store dynamically fetched models during the run() phase.\r\n// OpenClaw evaluates the plugin registry again after run() completes, so this\r\n// will inject the precise dynamic models into the wizard bypass.\r\nlet dynamicModelAllowlist: string[] | undefined = undefined;\r\n\r\nexport function registerCMTokenProviders(api: OpenClawPluginApi) {\r\n const allowedKeys = dynamicModelAllowlist;\r\n\r\n api.registerProvider({\r\n id: PROVIDER_ID,\r\n label: PROVIDER_LABEL,\r\n docsPath: \"/plugins/cmtoken\",\r\n auth: [\r\n {\r\n id: \"api-key\",\r\n label: \"CMToken API Key\",\r\n hint: \"\u4F7F\u7528 API Key \u8FDB\u884C\u8BA4\u8BC1\",\r\n kind: \"api_key\",\r\n wizard: CMTOKEN_API_KEY_WIZARD_CONFIG,\r\n async run(ctx: any) {\r\n const {\r\n ensureApiKeyFromOptionEnvOrPrompt,\r\n buildApiKeyCredential,\r\n normalizeApiKeyInput,\r\n validateApiKeyInput\r\n } = await import(\"openclaw/plugin-sdk/provider-auth\");\r\n\r\n let capturedSecretInput: any;\r\n let capturedMode: any;\r\n\r\n await (ensureApiKeyFromOptionEnvOrPrompt as any)({\r\n token: ctx.opts?.token,\r\n tokenProvider: ctx.opts?.tokenProvider,\r\n secretInputMode: ctx.allowSecretRefPrompt === false ? (ctx.secretInputMode ?? \"plaintext\") : ctx.secretInputMode,\r\n config: ctx.config,\r\n env: ctx.env,\r\n expectedProviders: [PROVIDER_ID],\r\n provider: PROVIDER_ID,\r\n promptMessage: \"\u8BF7\u8F93\u5165 CMToken API Key\",\r\n normalize: normalizeApiKeyInput,\r\n validate: validateApiKeyInput,\r\n prompter: ctx.prompter,\r\n setCredential: async (apiKey: string, mode: any) => {\r\n capturedSecretInput = apiKey;\r\n capturedMode = mode;\r\n },\r\n });\r\n\r\n const profileId = `${PROVIDER_ID}:default`;\r\n const credential = buildApiKeyCredential(PROVIDER_ID, capturedSecretInput, {}, {\r\n secretInputMode: capturedMode,\r\n config: ctx.config\r\n });\r\n\r\n const config = ctx.config as any;\r\n const discoveryUrl = config.discoveryUrl || DEFAULT_DISCOVERY_URL;\r\n let models: any[] = [];\r\n try {\r\n const { fetchCMTokenModels } = await import(\"./discovery.js\");\r\n const rawModels = await fetchCMTokenModels(discoveryUrl, 15000, capturedSecretInput);\r\n if (rawModels && Array.isArray(rawModels) && rawModels.length > 0) {\r\n models = rawModels.map((m: any) => ({\r\n id: m.id,\r\n name: m.name || m.id,\r\n reasoning: false,\r\n input: [\"text\" as const],\r\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\r\n contextWindow: m.contextWindow || 192000,\r\n maxTokens: m.maxTokens || 8192,\r\n }));\r\n if (models && models.length > 0) {\r\n dynamicModelAllowlist = models.map((m: any) => `${PROVIDER_ID}/${m.id}`);\r\n }\r\n }\r\n } catch (discoveryErr: any) {\r\n if (discoveryErr instanceof Error) {\r\n throw discoveryErr;\r\n }\r\n throw new Error(`\u6A21\u578B\u5217\u8868\u83B7\u53D6\u5931\u8D25\u3002\u914D\u7F6E\u6D41\u7A0B\u5DF2\u4E2D\u65AD\u3002`);\r\n }\r\n\r\n const primaryModelId = await selectCMTokenDefaultModel(ctx, models);\r\n\r\n // No longer caching dynamically here.\r\n\r\n return {\r\n configPatch: {\r\n models: {\r\n providers: {\r\n [PROVIDER_ID]: { baseUrl: config.baseUrl || DEFAULT_BASE_URL, api: \"openai-completions\" as const, models }\r\n }\r\n },\r\n ...(primaryModelId ? {\r\n agents: {\r\n defaults: {\r\n model: {\r\n primary: primaryModelId\r\n }\r\n }\r\n }\r\n } : {})\r\n } as any,\r\n profiles: [\r\n { profileId, credential }\r\n ],\r\n };\r\n }\r\n } as any,\r\n {\r\n id: \"oauth\",\r\n label: \"CMToken OAuth\",\r\n hint: \"\u901A\u8FC7\u79FB\u52A8\u8BA4\u8BC1\u6D4F\u89C8\u5668\u6D41\u767B\u5F55\",\r\n kind: \"device_code\",\r\n run: runCMTokenOAuth,\r\n applyConfig: (cfg: any) => ({\r\n ...cfg,\r\n models: {\r\n ...cfg.models,\r\n providers: {\r\n ...cfg.models?.providers,\r\n [PROVIDER_ID]: { baseUrl: DEFAULT_BASE_URL, api: \"openai-completions\", models: INLINED_STATIC_MODELS }\r\n }\r\n },\r\n // We no longer manually touch cfg.agents.defaults.models here to prevent overwrites.\r\n }),\r\n wizard: {\r\n choiceId: \"cmtoken-oauth\",\r\n choiceLabel: \"CMToken OAuth\",\r\n groupId: PROVIDER_ID,\r\n groupLabel: PROVIDER_LABEL,\r\n groupHint: \"CMToken AI \u6A21\u578B\",\r\n },\r\n } as any,\r\n ],\r\n wizard: {\r\n setup: {\r\n modelAllowlist: { \r\n allowedKeys,\r\n loadCatalog: false\r\n }\r\n }\r\n },\r\n catalog: { order: \"simple\", run: async (ctx: any) => resolveApiCatalog(ctx) },\r\n augmentModelCatalog: (ctx: any) => augmentCMTokenCatalog(ctx),\r\n async refreshOAuth(cred: any) {\r\n const { refreshCMTokenToken } = await import(\"./oauth.js\");\r\n // Use defaults if config is not easily accessible here; \r\n // but usually the plugin can access its own config if needed.\r\n try {\r\n const result = await refreshCMTokenToken({ refreshToken: cred.refresh });\r\n // Invalidate discovery cache logic removed\r\n return {\r\n ...cred,\r\n access: result.access,\r\n refresh: result.refresh,\r\n expires: result.expires,\r\n };\r\n } catch (err) {\r\n console.error(`[CMToken] refreshOAuth failed:`, err);\r\n throw err;\r\n }\r\n },\r\n classifyFailoverReason(ctx: any) {\r\n const errorMsg = ctx.error?.message || String(ctx.error);\r\n if (errorMsg.includes(\"\u8BA2\u9605\u5957\u9910\") || errorMsg.includes(\"\u8BA2\u9605\u5DF2\u8FC7\u671F\") || errorMsg.includes(\"\u4F59\u989D\u4E0D\u8DB3\")) {\r\n return \"billing\";\r\n }\r\n return undefined;\r\n },\r\n });\r\n}\r\n"],
5
+ "mappings": "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",
6
6
  "names": ["require_QRMode", "__commonJSMin", "exports", "module", "require_QR8bitByte", "__commonJSMin", "exports", "module", "QRMode", "QR8bitByte", "data", "buffer", "i", "require_QRMath", "__commonJSMin", "exports", "module", "QRMath", "n", "i", "require_QRPolynomial", "__commonJSMin", "exports", "module", "QRMath", "QRPolynomial", "num", "shift", "offset", "i", "index", "j", "ratio", "x", "require_QRMaskPattern", "__commonJSMin", "exports", "module", "require_QRUtil", "__commonJSMin", "exports", "module", "QRMode", "QRPolynomial", "QRMath", "QRMaskPattern", "QRUtil", "data", "d", "digit", "typeNumber", "maskPattern", "i", "j", "errorCorrectLength", "a", "mode", "type", "qrCode", "moduleCount", "lostPoint", "row", "col", "sameCount", "dark", "r", "c", "count", "darkCount", "ratio", "require_QRErrorCorrectLevel", "__commonJSMin", "exports", "module", "require_QRRSBlock", "__commonJSMin", "exports", "module", "QRErrorCorrectLevel", "QRRSBlock", "totalCount", "dataCount", "typeNumber", "errorCorrectLevel", "rsBlock", "length", "list", "i", "count", "j", "require_QRBitBuffer", "__commonJSMin", "exports", "module", "QRBitBuffer", "index", "bufIndex", "num", "length", "i", "bit", "require_QRCode", "__commonJSMin", "exports", "module", "QR8bitByte", "QRUtil", "QRPolynomial", "QRRSBlock", "QRBitBuffer", "QRCode", "typeNumber", "errorCorrectLevel", "data", "newData", "row", "col", "rsBlocks", "buffer", "totalDataCount", "i", "x", "test", "maskPattern", "c", "minLostPoint", "pattern", "lostPoint", "target_mc", "instance_name", "depth", "qr_mc", "cs", "y", "dark", "r", "pos", "j", "bits", "mod", "v", "h", "inc", "bitIndex", "byteIndex", "mask", "dataList", "offset", "maxDcCount", "maxEcCount", "dcdata", "ecdata", "dcCount", "ecCount", "rsPoly", "rawPoly", "modPoly", "modIndex", "totalCodeCount", "index", "z", "s", "xx", "t", "require_main", "__commonJSMin", "exports", "module", "QRCode", "QRErrorCorrectLevel", "black", "white", "toCell", "isBlack", "repeat", "color", "count", "fill", "length", "value", "arr", "i", "input", "opts", "cb", "qrcode", "output", "BLACK", "WHITE", "moduleCount", "moduleData", "oddRow", "platte", "borderTop", "borderBottom", "row", "col", "border", "error", "oauth_exports", "__export", "fetchCMTokenOAuthModels", "loginCMTokenOAuth", "refreshCMTokenToken", "randomBytes", "randomUUID", "createHash", "os", "ensureOAuthDispatcher", "ensureGlobalUndiciEnvProxyDispatcher", "getOAuthEndpoints", "config", "baseUrl", "CMTOKEN_OAUTH_DEFAULT_CONFIG", "clientId", "generatePkce", "verifier", "challenge", "state", "requestDeviceCode", "params", "endpoints", "res", "OAUTH_TIMEOUT_MS", "CMTOKEN_OAUTH_SCOPE", "text", "payload", "err", "pollOAuthToken", "CMTOKEN_OAUTH_GRANT_TYPE", "renderQrAscii", "data", "isSmall", "resolve", "qrcode", "output", "detectModernTerminal", "timeout", "cleanup", "onData", "response", "isModern", "e", "log", "error", "oauth", "fallbackUrl", "fallbackQr", "fallbackLines", "verificationUrl", "isWindows", "isModernTerminal", "qrAscii", "noteLines", "pollIntervalMs", "expireTimeMs", "result", "apiBaseUrl", "model", "import_qrcode_terminal", "hostname", "init_oauth", "__esmMin", "oauth_runtime_exports", "__export", "fetchCMTokenOAuthModels", "loginCMTokenOAuth", "refreshCMTokenToken", "init_oauth_runtime", "__esmMin", "init_oauth", "CMTOKEN_DEFAULT_MODEL_ID", "CMTOKEN_DEFAULT_MODEL_REF", "STATIC_MODELS", "init_provider_models", "__esmMin", "discovery_exports", "__export", "CMTokenDiscoveryError", "CMTokenSubscriptionError", "fetchCMTokenModels", "url", "timeoutMs", "token", "STATIC_MODELS", "controller", "timeout", "headers", "response", "errorText", "data", "modelsArray", "msg", "err", "init_discovery", "__esmMin", "init_provider_models", "message", "status", "definePluginEntry", "formatErrorMessage", "PROVIDER_ID", "PROVIDER_LABEL", "DEFAULT_DISCOVERY_URL", "DEFAULT_BASE_URL", "INLINED_STATIC_MODELS", "CMTOKEN_API_KEY_WIZARD_CONFIG", "resolveApiCatalog", "ctx", "config", "providerModels", "m", "augmentCMTokenCatalog", "selectCMTokenDefaultModel", "models", "currentDefault", "cfgModel", "options", "selected", "runCMTokenOAuth", "progress", "loginCMTokenOAuth", "result", "discoveryUrl", "fetchCMTokenModels", "CMTokenSubscriptionError", "CMTokenDiscoveryError", "rawModels", "err", "finalModels", "dynamicModelAllowlist", "primaryModelId", "errorMsg", "registerCMTokenProviders", "api", "allowedKeys", "ensureApiKeyFromOptionEnvOrPrompt", "buildApiKeyCredential", "normalizeApiKeyInput", "validateApiKeyInput", "capturedSecretInput", "capturedMode", "apiKey", "mode", "profileId", "credential", "discoveryErr", "cfg", "cred", "refreshCMTokenToken", "index_default", "definePluginEntry", "api", "registerCMTokenProviders"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cmtoken",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "files": [
5
5
  "dist",
6
6
  "openclaw.plugin.json"