ms-vite-plugin 1.5.0 → 1.5.2

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.addVararg=c;function s(r){r.vararg=!0,t(r.body.body)}function a(r){switch(r.type){case"FuncExpr":s(r);break;case"UnaryExpr":a(r.arg);break;case"BinaryExpr":a(r.left),a(r.right);break;case"TableExpr":for(const e of r.fields)e.kind==="index"&&a(e.key),a(e.value);break;case"IndexExpr":a(r.object),a(r.index);break;case"MemberExpr":a(r.object);break;case"CallExpr":a(r.callee);for(const e of r.args)a(e);break;case"MethodCallExpr":a(r.object);for(const e of r.args)a(e);break;case"ParenExpr":a(r.exp);break;default:break}}function t(r){for(const e of r)switch(e.type){case"DoStat":case"WhileStat":case"RepeatStat":case"ForNumStat":case"ForInStat":if(e.type==="WhileStat"&&a(e.cond),e.type==="RepeatStat"&&a(e.cond),e.type==="ForNumStat"&&(a(e.start),a(e.end),e.step&&a(e.step)),e.type==="ForInStat")for(const o of e.exps)a(o);t(e.body.body);break;case"IfStat":for(const o of e.clauses)a(o.cond),t(o.body.body);e.elseBody&&t(e.elseBody.body);break;case"FuncStat":case"LocalFuncStat":s(e.func);break;case"LocalStat":if(e.exps)for(const o of e.exps)a(o);break;case"AssignStat":for(const o of e.vars)a(o);for(const o of e.exps)a(o);break;case"CallStat":a(e.exp);break;case"ReturnStat":for(const o of e.exps)a(o);break;default:break}}function c(r){t(r.body)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.addVararg=c;function s(o){o.vararg=!0,t(o.body.body)}function a(o){switch(o.type){case"FuncExpr":s(o);break;case"UnaryExpr":a(o.arg);break;case"BinaryExpr":a(o.left),a(o.right);break;case"TableExpr":for(const e of o.fields)e.kind==="index"&&a(e.key),a(e.value);break;case"IndexExpr":a(o.object),a(o.index);break;case"MemberExpr":a(o.object);break;case"CallExpr":a(o.callee);for(const e of o.args)a(e);break;case"MethodCallExpr":a(o.object);for(const e of o.args)a(e);break;case"ParenExpr":a(o.exp);break;default:break}}function t(o){for(const e of o)switch(e.type){case"DoStat":case"WhileStat":case"RepeatStat":case"ForNumStat":case"ForInStat":if(e.type==="WhileStat"&&a(e.cond),e.type==="RepeatStat"&&a(e.cond),e.type==="ForNumStat"&&(a(e.start),a(e.end),e.step&&a(e.step)),e.type==="ForInStat")for(const r of e.exps)a(r);t(e.body.body);break;case"IfStat":for(const r of e.clauses)a(r.cond),t(r.body.body);e.elseBody&&t(e.elseBody.body);break;case"FuncStat":case"LocalFuncStat":s(e.func);break;case"LocalStat":if(e.exps)for(const r of e.exps)a(r);break;case"AssignStat":for(const r of e.vars)a(r);for(const r of e.exps)a(r);break;case"CallStat":a(e.exp);break;case"ReturnStat":for(const r of e.exps)a(r);break;default:break}}function c(o){t(o.body)}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.flattenControlFlow=C;function m(t){return{type:"NumberLiteral",raw:String(t),value:t}}function p(t){return{type:"NameExpr",name:t}}function f(t,n){return{type:"AssignStat",vars:t.map(e=>p(e)),exps:n}}function u(t,n){return f([t.stateName],[typeof n=="number"?m(n):n])}function k(t,n,e){return{type:"BinaryExpr",op:"or",left:{type:"BinaryExpr",op:"and",left:p(t),right:m(n)},right:m(e)}}function E(t,n,e){return{type:"BinaryExpr",op:t,left:n,right:e}}function S(t){const n=`__t${t.nextTemp}`;return t.nextTemp+=1,t.temps.push(n),n}function x(t){const n=t.nextState;return t.nextState+=1,t.states.set(n,[]),n}function o(t,n,e){t.states.get(n).push(e)}function F(t,n){for(const e of t)if(e.type==="LocalStat")for(const a of e.names)n.push(a.name);else if(e.type==="LocalFuncStat")n.push(e.name);else if(e.type==="ForNumStat")n.push(e.name),F(e.body.body,n);else if(e.type==="ForInStat")n.push(...e.names),F(e.body.body,n);else if(e.type==="DoStat"||e.type==="WhileStat"||e.type==="RepeatStat")F(e.body.body,n);else if(e.type==="IfStat"){for(const a of e.clauses)F(a.body.body,n);e.elseBody&&F(e.elseBody.body,n)}}function h(t,n,e,a){if(t.length===0)return n;const y=t.map(()=>x(e));for(let s=0;s<t.length;s+=1){const r=t[s];r.type==="LabelStat"&&e.userLabels.set(r.name,y[s])}for(let s=0;s<t.length;s+=1){const r=s+1<t.length?y[s+1]:n;I(e,y[s],t[s],r,a)}return y[0]}function I(t,n,e,a,y){switch(e.type){case"EmptyStat":case"LabelStat":o(t,n,u(t,a));return;case"AssignStat":case"CallStat":case"FuncStat":o(t,n,e),o(t,n,u(t,a));return;case"LocalStat":e.exps&&e.exps.length>0&&o(t,n,f(e.names.map(s=>s.name),e.exps)),o(t,n,u(t,a));return;case"LocalFuncStat":o(t,n,f([e.name],[e.func])),o(t,n,u(t,a));return;case"ReturnStat":o(t,n,e);return;case"BreakStat":o(t,n,u(t,y));return;case"GotoStat":{const s=t.userLabels.get(e.name);if(s===void 0)throw new Error(`goto \u672A\u5B9A\u4E49\u6807\u7B7E ::${e.name}::`);o(t,n,u(t,s));return}case"DoStat":o(t,n,u(t,h(e.body.body,a,t,y)));return;case"IfStat":{const s=S(t);let r=n;for(let l=0;l<e.clauses.length;l+=1){const b=l===e.clauses.length-1,d=h(e.clauses[l].body.body,a,t,y);let i=a;b?e.elseBody&&(i=h(e.elseBody.body,a,t,y)):i=x(t),o(t,r,f([s],[e.clauses[l].cond])),o(t,r,u(t,k(s,d,i))),b||(r=i)}e.clauses.length===0&&o(t,n,u(t,a));return}case"WhileStat":{const s=S(t),r=h(e.body.body,n,t,a);o(t,n,f([s],[e.cond])),o(t,n,u(t,k(s,r,a)));return}case"RepeatStat":{const s=S(t),r=x(t),l=h(e.body.body,r,t,a);o(t,n,u(t,l)),o(t,r,f([s],[e.cond])),o(t,r,u(t,k(s,a,l)));return}case"ForNumStat":{const s=e.name,r=S(t),l=S(t),b=S(t),d=x(t),i=x(t),L=x(t),g=x(t),N=h(e.body.body,g,t,a);o(t,n,f([s],[e.start])),o(t,n,f([r],[e.end])),o(t,n,f([l],[e.step??m(1)])),o(t,n,u(t,d)),o(t,d,f([b],[E(">=",p(l),m(0))])),o(t,d,u(t,k(b,i,L))),o(t,i,f([b],[E("<=",p(s),p(r))])),o(t,i,u(t,k(b,N,a))),o(t,L,f([b],[E(">=",p(s),p(r))])),o(t,L,u(t,k(b,N,a))),o(t,g,f([s],[E("+",p(s),p(l))])),o(t,g,u(t,d));return}case"ForInStat":{const s=S(t),r=S(t),l=S(t),b=S(t),d=x(t),i=[f([l],[p(e.names[0])]),...e.body.body],L=h(i,d,t,a),g=e.exps.slice();for(;g.length<3;)g.push({type:"NilLiteral"});o(t,n,f([s,r,l],g.slice(0,3))),o(t,n,u(t,d)),o(t,d,{type:"AssignStat",vars:e.names.map(N=>p(N)),exps:[{type:"CallExpr",callee:p(s),args:[p(r),p(l)]}]}),o(t,d,f([b],[E("~=",p(e.names[0]),{type:"NilLiteral"})])),o(t,d,u(t,k(b,L,a)));return}default:o(t,n,u(t,a))}}function v(t,n){const e=t.slice();let a=n>>>0||1;for(let y=e.length-1;y>0;y-=1){a=Math.imul(a,1664525)+1013904223>>>0;const s=a%(y+1),r=e[y];e[y]=e[s],e[s]=r}return e}function w(t,n){if(t.length===0)return t;const e={states:new Map,temps:[],nextState:1,nextTemp:1,stateName:"__s",userLabels:new Map},a=[];F(t,a);const y=h(t,0,e,0),s=[...new Set([...a,...e.temps,e.stateName])],r=v([...e.states.keys()],n).map(l=>({cond:E("==",p(e.stateName),m(l)),body:{type:"Block",body:e.states.get(l)}}));return[{type:"LocalStat",names:s.map(l=>({name:l}))},f([e.stateName],[m(y)]),{type:"WhileStat",cond:E("~=",p(e.stateName),m(0)),body:{type:"Block",body:[{type:"IfStat",clauses:r}]}}]}function c(t,n){switch(t.type){case"FuncExpr":B(t.body.body,n),t.body.body=w(t.body.body,n);break;case"UnaryExpr":c(t.arg,n);break;case"BinaryExpr":c(t.left,n),c(t.right,n);break;case"TableExpr":for(const e of t.fields)e.kind==="index"&&c(e.key,n),c(e.value,n);break;case"IndexExpr":c(t.object,n),c(t.index,n);break;case"MemberExpr":c(t.object,n);break;case"CallExpr":c(t.callee,n);for(const e of t.args)c(e,n);break;case"MethodCallExpr":c(t.object,n);for(const e of t.args)c(e,n);break;case"ParenExpr":c(t.exp,n);break;default:break}}function B(t,n){for(const e of t)switch(e.type){case"DoStat":case"WhileStat":case"RepeatStat":case"ForNumStat":case"ForInStat":if((e.type==="WhileStat"||e.type==="RepeatStat")&&c(e.cond,n),e.type==="ForNumStat"&&(c(e.start,n),c(e.end,n),e.step&&c(e.step,n)),e.type==="ForInStat")for(const a of e.exps)c(a,n);B(e.body.body,n);break;case"IfStat":for(const a of e.clauses)c(a.cond,n),B(a.body.body,n);e.elseBody&&B(e.elseBody.body,n);break;case"FuncStat":case"LocalFuncStat":B(e.func.body.body,n),e.func.body.body=w(e.func.body.body,n);break;case"LocalStat":if(e.exps)for(const a of e.exps)c(a,n);break;case"AssignStat":for(const a of e.vars)c(a,n);for(const a of e.exps)c(a,n);break;case"CallStat":c(e.exp,n);break;case"ReturnStat":for(const a of e.exps)c(a,n);break;default:break}}function C(t,n){B(t.body,n),t.body=w(t.body,n)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.flattenControlFlow=C;function m(t){return{type:"NumberLiteral",raw:String(t),value:t}}function p(t){return{type:"NameExpr",name:t}}function f(t,s){return{type:"AssignStat",vars:t.map(e=>p(e)),exps:s}}function u(t,s){return f([t.stateName],[typeof s=="number"?m(s):s])}function k(t,s,e){return{type:"BinaryExpr",op:"or",left:{type:"BinaryExpr",op:"and",left:p(t),right:m(s)},right:m(e)}}function E(t,s,e){return{type:"BinaryExpr",op:t,left:s,right:e}}function S(t){const s=`__t${t.nextTemp}`;return t.nextTemp+=1,t.temps.push(s),s}function x(t){const s=t.nextState;return t.nextState+=1,t.states.set(s,[]),s}function n(t,s,e){t.states.get(s).push(e)}function F(t,s){for(const e of t)if(e.type==="LocalStat")for(const a of e.names)s.push(a.name);else if(e.type==="LocalFuncStat")s.push(e.name);else if(e.type==="ForNumStat")s.push(e.name),F(e.body.body,s);else if(e.type==="ForInStat")s.push(...e.names),F(e.body.body,s);else if(e.type==="DoStat"||e.type==="WhileStat"||e.type==="RepeatStat")F(e.body.body,s);else if(e.type==="IfStat"){for(const a of e.clauses)F(a.body.body,s);e.elseBody&&F(e.elseBody.body,s)}}function h(t,s,e,a){if(t.length===0)return s;const y=t.map(()=>x(e));for(let o=0;o<t.length;o+=1){const r=t[o];r.type==="LabelStat"&&e.userLabels.set(r.name,y[o])}for(let o=0;o<t.length;o+=1){const r=o+1<t.length?y[o+1]:s;I(e,y[o],t[o],r,a)}return y[0]}function I(t,s,e,a,y){switch(e.type){case"EmptyStat":case"LabelStat":n(t,s,u(t,a));return;case"AssignStat":case"CallStat":case"FuncStat":n(t,s,e),n(t,s,u(t,a));return;case"LocalStat":e.exps&&e.exps.length>0&&n(t,s,f(e.names.map(o=>o.name),e.exps)),n(t,s,u(t,a));return;case"LocalFuncStat":n(t,s,f([e.name],[e.func])),n(t,s,u(t,a));return;case"ReturnStat":n(t,s,e);return;case"BreakStat":n(t,s,u(t,y));return;case"GotoStat":{const o=t.userLabels.get(e.name);if(o===void 0)throw new Error(`goto \u672A\u5B9A\u4E49\u6807\u7B7E ::${e.name}::`);n(t,s,u(t,o));return}case"DoStat":n(t,s,u(t,h(e.body.body,a,t,y)));return;case"IfStat":{const o=S(t);let r=s;for(let l=0;l<e.clauses.length;l+=1){const b=l===e.clauses.length-1,d=h(e.clauses[l].body.body,a,t,y);let i=a;b?e.elseBody&&(i=h(e.elseBody.body,a,t,y)):i=x(t),n(t,r,f([o],[e.clauses[l].cond])),n(t,r,u(t,k(o,d,i))),b||(r=i)}e.clauses.length===0&&n(t,s,u(t,a));return}case"WhileStat":{const o=S(t),r=h(e.body.body,s,t,a);n(t,s,f([o],[e.cond])),n(t,s,u(t,k(o,r,a)));return}case"RepeatStat":{const o=S(t),r=x(t),l=h(e.body.body,r,t,a);n(t,s,u(t,l)),n(t,r,f([o],[e.cond])),n(t,r,u(t,k(o,a,l)));return}case"ForNumStat":{const o=e.name,r=S(t),l=S(t),b=S(t),d=x(t),i=x(t),L=x(t),g=x(t),N=h(e.body.body,g,t,a);n(t,s,f([o],[e.start])),n(t,s,f([r],[e.end])),n(t,s,f([l],[e.step??m(1)])),n(t,s,u(t,d)),n(t,d,f([b],[E(">=",p(l),m(0))])),n(t,d,u(t,k(b,i,L))),n(t,i,f([b],[E("<=",p(o),p(r))])),n(t,i,u(t,k(b,N,a))),n(t,L,f([b],[E(">=",p(o),p(r))])),n(t,L,u(t,k(b,N,a))),n(t,g,f([o],[E("+",p(o),p(l))])),n(t,g,u(t,d));return}case"ForInStat":{const o=S(t),r=S(t),l=S(t),b=S(t),d=x(t),i=[f([l],[p(e.names[0])]),...e.body.body],L=h(i,d,t,a),g=e.exps.slice();for(;g.length<3;)g.push({type:"NilLiteral"});n(t,s,f([o,r,l],g.slice(0,3))),n(t,s,u(t,d)),n(t,d,{type:"AssignStat",vars:e.names.map(N=>p(N)),exps:[{type:"CallExpr",callee:p(o),args:[p(r),p(l)]}]}),n(t,d,f([b],[E("~=",p(e.names[0]),{type:"NilLiteral"})])),n(t,d,u(t,k(b,L,a)));return}default:n(t,s,u(t,a))}}function v(t,s){const e=t.slice();let a=s>>>0||1;for(let y=e.length-1;y>0;y-=1){a=Math.imul(a,1664525)+1013904223>>>0;const o=a%(y+1),r=e[y];e[y]=e[o],e[o]=r}return e}function w(t,s){if(t.length===0)return t;const e={states:new Map,temps:[],nextState:1,nextTemp:1,stateName:"__s",userLabels:new Map},a=[];F(t,a);const y=h(t,0,e,0),o=[...new Set([...a,...e.temps,e.stateName])],r=v([...e.states.keys()],s).map(l=>({cond:E("==",p(e.stateName),m(l)),body:{type:"Block",body:e.states.get(l)}}));return[{type:"LocalStat",names:o.map(l=>({name:l}))},f([e.stateName],[m(y)]),{type:"WhileStat",cond:E("~=",p(e.stateName),m(0)),body:{type:"Block",body:[{type:"IfStat",clauses:r}]}}]}function c(t,s){switch(t.type){case"FuncExpr":B(t.body.body,s),t.body.body=w(t.body.body,s);break;case"UnaryExpr":c(t.arg,s);break;case"BinaryExpr":c(t.left,s),c(t.right,s);break;case"TableExpr":for(const e of t.fields)e.kind==="index"&&c(e.key,s),c(e.value,s);break;case"IndexExpr":c(t.object,s),c(t.index,s);break;case"MemberExpr":c(t.object,s);break;case"CallExpr":c(t.callee,s);for(const e of t.args)c(e,s);break;case"MethodCallExpr":c(t.object,s);for(const e of t.args)c(e,s);break;case"ParenExpr":c(t.exp,s);break;default:break}}function B(t,s){for(const e of t)switch(e.type){case"DoStat":case"WhileStat":case"RepeatStat":case"ForNumStat":case"ForInStat":if((e.type==="WhileStat"||e.type==="RepeatStat")&&c(e.cond,s),e.type==="ForNumStat"&&(c(e.start,s),c(e.end,s),e.step&&c(e.step,s)),e.type==="ForInStat")for(const a of e.exps)c(a,s);B(e.body.body,s);break;case"IfStat":for(const a of e.clauses)c(a.cond,s),B(a.body.body,s);e.elseBody&&B(e.elseBody.body,s);break;case"FuncStat":case"LocalFuncStat":B(e.func.body.body,s),e.func.body.body=w(e.func.body.body,s);break;case"LocalStat":if(e.exps)for(const a of e.exps)c(a,s);break;case"AssignStat":for(const a of e.vars)c(a,s);for(const a of e.exps)c(a,s);break;case"CallStat":c(e.exp,s);break;case"ReturnStat":for(const a of e.exps)c(a,s);break;default:break}}function C(t,s){B(t.body,s),t.body=w(t.body,s)}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.shortName=a,exports.renameLocals=c;const u=require("./reserved"),d=require("./scope"),l="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function a(r){let e=r,t="";do t=l[e%l.length]+t,e=Math.floor(e/l.length)-1;while(e>=0);return u.luaKeywords.has(t)?`_${t}`:t}function c(r){let e=0;const t=new Set;(0,d.collectAndRename)(r,(o,s)=>{if(o.newName!==o.original)return;let n=a(e);for(e+=1;s.has(n)||t.has(n)||u.luaKeywords.has(n);)n=a(e),e+=1;o.newName=n,t.add(n),s.add(n)})}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.shortName=r,exports.renameLocals=c;const u=require("./reserved"),d=require("./scope"),l="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function r(a){let e=a,t="";do t=l[e%l.length]+t,e=Math.floor(e/l.length)-1;while(e>=0);return u.luaKeywords.has(t)?`_${t}`:t}function c(a){let e=0;const t=new Set;(0,d.collectAndRename)(a,(o,s)=>{if(o.newName!==o.original)return;let n=r(e);for(e+=1;s.has(n)||t.has(n)||u.luaKeywords.has(n);)n=r(e),e+=1;o.newName=n,t.add(n),s.add(n)})}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveLocal=i,exports.collectAndRename=x;function i(t,c){let r=t;for(;r;){const e=r.locals.get(c);if(e)return e;r=r.parent}}function o(t){return{parent:t,locals:new Map}}function f(t,c){const r=t.locals.get(c);if(r)return r;const e={original:c,newName:c};return t.locals.set(c,e),e}function x(t,c){const r=new Set,e={locals:new Map};d(t.body,e,r,c)}function l(t,c,r,e){d(t.body,c,r,e)}function d(t,c,r,e){for(const s of t)b(s,c,r,e)}function m(t,c,r,e){const s=o(c),a=t.params.slice();for(let u=0;u<a.length;u+=1){const p=f(s,a[u]);e(p,r),t.params[u]=p.newName}l(t.body,s,r,e)}function b(t,c,r,e){switch(t.type){case"EmptyStat":case"BreakStat":case"GotoStat":case"LabelStat":return;case"DoStat":l(t.body,o(c),r,e);return;case"WhileStat":n(t.cond,c,r,e),l(t.body,o(c),r,e);return;case"RepeatStat":{const s=o(c);l(t.body,s,r,e),n(t.cond,s,r,e);return}case"IfStat":for(const s of t.clauses)n(s.cond,c,r,e),l(s.body,o(c),r,e);t.elseBody&&l(t.elseBody,o(c),r,e);return;case"ForNumStat":{n(t.start,c,r,e),n(t.end,c,r,e),t.step&&n(t.step,c,r,e);const s=o(c),a=f(s,t.name);e(a,r),t.name=a.newName,l(t.body,s,r,e);return}case"ForInStat":{for(const a of t.exps)n(a,c,r,e);const s=o(c);for(let a=0;a<t.names.length;a+=1){const u=f(s,t.names[a]);e(u,r),t.names[a]=u.newName}l(t.body,s,r,e);return}case"FuncStat":{const s=i(c,t.name.base);s&&(t.name.base=s.newName),m(t.func,c,r,e);return}case"LocalFuncStat":{const s=f(c,t.name);e(s,r),t.name=s.newName,m(t.func,c,r,e);return}case"LocalStat":if(t.exps)for(const s of t.exps)n(s,c,r,e);for(let s=0;s<t.names.length;s+=1){const a=f(c,t.names[s].name);e(a,r),t.names[s].name=a.newName}return;case"AssignStat":for(const s of t.vars)n(s,c,r,e);for(const s of t.exps)n(s,c,r,e);return;case"CallStat":n(t.exp,c,r,e);return;case"ReturnStat":for(const s of t.exps)n(s,c,r,e);return}}function n(t,c,r,e){switch(t.type){case"NilLiteral":case"BoolLiteral":case"NumberLiteral":case"StringLiteral":case"VarargExpr":return;case"NameExpr":{const s=i(c,t.name);s&&(t.name=s.newName);return}case"UnaryExpr":n(t.arg,c,r,e);return;case"BinaryExpr":n(t.left,c,r,e),n(t.right,c,r,e);return;case"FuncExpr":m(t,c,r,e);return;case"TableExpr":for(const s of t.fields)s.kind==="index"&&n(s.key,c,r,e),n(s.value,c,r,e);return;case"IndexExpr":n(t.object,c,r,e),n(t.index,c,r,e);return;case"MemberExpr":n(t.object,c,r,e);return;case"CallExpr":n(t.callee,c,r,e);for(const s of t.args)n(s,c,r,e);return;case"MethodCallExpr":n(t.object,c,r,e);for(const s of t.args)n(s,c,r,e);return;case"ParenExpr":n(t.exp,c,r,e);return}}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveLocal=i,exports.collectAndRename=x;function i(t,s){let r=t;for(;r;){const e=r.locals.get(s);if(e)return e;r=r.parent}}function c(t){return{parent:t,locals:new Map}}function f(t,s){const r=t.locals.get(s);if(r)return r;const e={original:s,newName:s};return t.locals.set(s,e),e}function x(t,s){const r=new Set,e={locals:new Map};d(t.body,e,r,s)}function l(t,s,r,e){d(t.body,s,r,e)}function d(t,s,r,e){for(const o of t)b(o,s,r,e)}function m(t,s,r,e){const o=c(s),a=t.params.slice();for(let u=0;u<a.length;u+=1){const p=f(o,a[u]);e(p,r),t.params[u]=p.newName}l(t.body,o,r,e)}function b(t,s,r,e){switch(t.type){case"EmptyStat":case"BreakStat":case"GotoStat":case"LabelStat":return;case"DoStat":l(t.body,c(s),r,e);return;case"WhileStat":n(t.cond,s,r,e),l(t.body,c(s),r,e);return;case"RepeatStat":{const o=c(s);l(t.body,o,r,e),n(t.cond,o,r,e);return}case"IfStat":for(const o of t.clauses)n(o.cond,s,r,e),l(o.body,c(s),r,e);t.elseBody&&l(t.elseBody,c(s),r,e);return;case"ForNumStat":{n(t.start,s,r,e),n(t.end,s,r,e),t.step&&n(t.step,s,r,e);const o=c(s),a=f(o,t.name);e(a,r),t.name=a.newName,l(t.body,o,r,e);return}case"ForInStat":{for(const a of t.exps)n(a,s,r,e);const o=c(s);for(let a=0;a<t.names.length;a+=1){const u=f(o,t.names[a]);e(u,r),t.names[a]=u.newName}l(t.body,o,r,e);return}case"FuncStat":{const o=i(s,t.name.base);o&&(t.name.base=o.newName),m(t.func,s,r,e);return}case"LocalFuncStat":{const o=f(s,t.name);e(o,r),t.name=o.newName,m(t.func,s,r,e);return}case"LocalStat":if(t.exps)for(const o of t.exps)n(o,s,r,e);for(let o=0;o<t.names.length;o+=1){const a=f(s,t.names[o].name);e(a,r),t.names[o].name=a.newName}return;case"AssignStat":for(const o of t.vars)n(o,s,r,e);for(const o of t.exps)n(o,s,r,e);return;case"CallStat":n(t.exp,s,r,e);return;case"ReturnStat":for(const o of t.exps)n(o,s,r,e);return}}function n(t,s,r,e){switch(t.type){case"NilLiteral":case"BoolLiteral":case"NumberLiteral":case"StringLiteral":case"VarargExpr":return;case"NameExpr":{const o=i(s,t.name);o&&(t.name=o.newName);return}case"UnaryExpr":n(t.arg,s,r,e);return;case"BinaryExpr":n(t.left,s,r,e),n(t.right,s,r,e);return;case"FuncExpr":m(t,s,r,e);return;case"TableExpr":for(const o of t.fields)o.kind==="index"&&n(o.key,s,r,e),n(o.value,s,r,e);return;case"IndexExpr":n(t.object,s,r,e),n(t.index,s,r,e);return;case"MemberExpr":n(t.object,s,r,e);return;case"CallExpr":n(t.callee,s,r,e);for(const o of t.args)n(o,s,r,e);return;case"MethodCallExpr":n(t.object,s,r,e);for(const o of t.args)n(o,s,r,e);return;case"ParenExpr":n(t.exp,s,r,e);return}}
@@ -1,11 +1,14 @@
1
- "use strict";var _=exports&&exports.__createBinding||(Object.create?(function(r,t,o,n){n===void 0&&(n=o);var e=Object.getOwnPropertyDescriptor(t,o);(!e||("get"in e?!t.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(r,n,e)}):(function(r,t,o,n){n===void 0&&(n=o),r[n]=t[o]})),R=exports&&exports.__setModuleDefault||(Object.create?(function(r,t){Object.defineProperty(r,"default",{enumerable:!0,value:t})}):function(r,t){r.default=t}),d=exports&&exports.__importStar||(function(){var r=function(t){return r=Object.getOwnPropertyNames||function(o){var n=[];for(var e in o)Object.prototype.hasOwnProperty.call(o,e)&&(n[n.length]=e);return n},r(t)};return function(t){if(t&&t.__esModule)return t;var o={};if(t!=null)for(var n=r(t),e=0;e<n.length;e++)n[e]!=="default"&&_(o,t,n[e]);return R(o,t),o}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.registerRuntimeTools=$;const T=d(require("fs-extra")),P=d(require("os")),g=d(require("path")),s=d(require("zod/v4")),v=require("../packager"),u=require("../project"),b=require("./device-config"),O=require("./device-log"),S=require("./project"),i=require("./tool-utils");function h(r,t,o){return r&&r.trim()?g.resolve(r.trim()):g.join(P.tmpdir(),`${t}-${Date.now()}-${Math.random().toString(36).slice(2,8)}.${o}`)}function $(r){let t;function o(e){if(e&&e.trim())return t=g.resolve(e.trim()),t;if(t)return t;throw new Error("\u672A\u8BBE\u7F6E\u5DE5\u4F5C\u76EE\u5F55\uFF1A\u8BF7\u5148\u8C03\u7528 set_workspace\uFF0C\u6216\u5728\u672C\u6B21\u5DE5\u5177\u8C03\u7528\u65F6\u4F20 workspacePath\u3002")}async function n(e){const a=o(e);return await(0,S.ensureValidKuaiJSProject)(a),a}r.registerTool("set_workspace",{title:"Set Workspace",description:"\u8BBE\u7F6E\u5F53\u524D MCP \u8FDB\u7A0B\u5185\u7684\u9ED8\u8BA4\u5DE5\u4F5C\u76EE\u5F55\u3002\u540E\u7EED build/run/package \u4F18\u5148\u4F7F\u7528\u8BE5\u76EE\u5F55\u3002",inputSchema:{workspacePath:s.string().min(1).describe("\u5FEB\u70B9JS \u9879\u76EE\u76EE\u5F55\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u9700\u5305\u542B package.json \u4E0E scripts\uFF09")}},async({workspacePath:e})=>{const a=await n(e);return(0,i.createTextToolResult)(`\u9ED8\u8BA4\u5DE5\u4F5C\u76EE\u5F55\u5DF2\u8BBE\u7F6E\u4E3A: ${a}`)}),r.registerTool("get_workspace",{title:"Get Workspace",description:"\u67E5\u770B\u5F53\u524D MCP \u8FDB\u7A0B\u5185\u8BB0\u5FC6\u7684\u5DE5\u4F5C\u76EE\u5F55\u3002",inputSchema:{}},async()=>t?(0,i.createTextToolResult)(`\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55: ${t}`):(0,i.createTextToolResult)("\u5F53\u524D\u672A\u8BBE\u7F6E\u5DE5\u4F5C\u76EE\u5F55\uFF0C\u8BF7\u5148\u8C03\u7528 set_workspace\u3002")),r.registerTool("set_device",{title:"Set Device",description:"\u8BBE\u7F6E\u5F53\u524D\u552F\u4E00\u8BBE\u5907\u8FDE\u63A5\u4FE1\u606F\u3002\u8BBE\u7F6E\u540E\u5176\u4F59\u8BBE\u5907\u5DE5\u5177\u5747\u590D\u7528\u8BE5\u8BBE\u5907\u3002",inputSchema:{ip:s.string().min(1).describe("\u8BBE\u5907 IP \u5730\u5740\uFF0C\u4F8B\u5982 192.168.1.100"),port:s.number().int().min(1).max(65535).optional().describe("\u8BBE\u5907\u7AEF\u53E3\uFF0C\u9ED8\u8BA4 9800")}},async({ip:e,port:a})=>{const c=await(0,b.setDeviceConfig)(e,a);return(0,i.createTextToolResult)(`\u9ED8\u8BA4\u8BBE\u5907\u5DF2\u8BBE\u7F6E\u4E3A ${c.ip}:${c.port}`)}),r.registerTool("get_device",{title:"Get Device",description:"\u67E5\u770B\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u914D\u7F6E\u3002",inputSchema:{}},async()=>{const e=await(0,b.readDeviceConfig)();return e?(0,i.createTextToolResult)(`\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907: ${e.ip}:${e.port}`):(0,i.createTextToolResult)("\u5F53\u524D\u672A\u8BBE\u7F6E\u9ED8\u8BA4\u8BBE\u5907\uFF0C\u8BF7\u5148\u8C03\u7528 set_device\u3002")}),r.registerTool("take_screenshot",{title:"Take Screenshot",description:"\u83B7\u53D6\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u622A\u56FE\u3002\u53EF\u8FD4\u56DE base64\uFF0C\u6216\u843D\u5730\u5230\u6587\u4EF6\u540E\u8FD4\u56DE\u6587\u4EF6\u8DEF\u5F84\uFF08\u9ED8\u8BA4\u5199\u5165\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\uFF09\u3002",inputSchema:{format:s.enum(["file","base64"]).optional().default("file").describe("\u622A\u56FE\u8FD4\u56DE\u683C\u5F0F\uFF1Afile=\u6587\u4EF6\u8DEF\u5F84\uFF0Cbase64=\u56FE\u7247 base64"),outputPath:s.string().min(1).optional().describe("\u5F53 format=file \u65F6\u53EF\u6307\u5B9A\u8F93\u51FA\u8DEF\u5F84\uFF0C\u4E0D\u4F20\u5219\u5199\u5165\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55")}},async({format:e,outputPath:a})=>{const c=await(0,i.resolveRuntimeHttpTarget)(),m=(0,i.createRuntimeHttpRequestOptions)(c);if(e==="base64"){const f=await(0,u.getScreenshotBase64OnDevice)(m);return(0,i.createTextToolResult)(`\u622A\u56FE\u6210\u529F: ${c.label}
1
+ "use strict";var $=exports&&exports.__createBinding||(Object.create?(function(t,r,s,o){o===void 0&&(o=s);var c=Object.getOwnPropertyDescriptor(r,s);(!c||("get"in c?!r.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return r[s]}}),Object.defineProperty(t,o,c)}):(function(t,r,s,o){o===void 0&&(o=s),t[o]=r[s]})),R=exports&&exports.__setModuleDefault||(Object.create?(function(t,r){Object.defineProperty(t,"default",{enumerable:!0,value:r})}):function(t,r){t.default=r}),w=exports&&exports.__importStar||(function(){var t=function(r){return t=Object.getOwnPropertyNames||function(s){var o=[];for(var c in s)Object.prototype.hasOwnProperty.call(s,c)&&(o[o.length]=c);return o},t(r)};return function(r){if(r&&r.__esModule)return r;var s={};if(r!=null)for(var o=t(r),c=0;c<o.length;c++)o[c]!=="default"&&$(s,r,o[c]);return R(s,r),s}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.registerRuntimeTools=O;const b=w(require("fs-extra")),v=w(require("os")),T=w(require("path")),u=w(require("zod/v4")),P=require("../packager"),m=require("../project"),h=require("./device-config"),D=require("./device-log"),y=require("./project"),i=require("./tool-utils"),_=require("../usb-forward");function S(t,r,s){return t&&t.trim()?T.resolve(t.trim()):T.join(v.tmpdir(),`${r}-${Date.now()}-${Math.random().toString(36).slice(2,8)}.${s}`)}function O(t){let r;function s(e){if(e&&e.trim())return r=T.resolve(e.trim()),r;if(r)return r;throw new Error("\u672A\u8BBE\u7F6E\u5DE5\u4F5C\u76EE\u5F55\uFF1A\u8BF7\u5148\u8C03\u7528 set_workspace\uFF0C\u6216\u5728\u672C\u6B21\u5DE5\u5177\u8C03\u7528\u65F6\u4F20 workspacePath\u3002")}async function o(e){const n=s(e);return await(0,y.ensureValidKuaiJSProject)(n),n}t.registerTool("set_workspace",{title:"Set Workspace",description:"\u8BBE\u7F6E\u5F53\u524D MCP \u8FDB\u7A0B\u5185\u7684\u9ED8\u8BA4\u5DE5\u4F5C\u76EE\u5F55\u3002\u540E\u7EED build/run/package \u4F18\u5148\u4F7F\u7528\u8BE5\u76EE\u5F55\u3002",inputSchema:{workspacePath:u.string().min(1).describe("\u5FEB\u70B9JS \u9879\u76EE\u76EE\u5F55\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u9700\u5305\u542B package.json \u4E0E scripts\uFF09")}},async({workspacePath:e})=>{const n=await o(e);return(0,i.createTextToolResult)(`\u9ED8\u8BA4\u5DE5\u4F5C\u76EE\u5F55\u5DF2\u8BBE\u7F6E\u4E3A: ${n}`)}),t.registerTool("get_workspace",{title:"Get Workspace",description:"\u67E5\u770B\u5F53\u524D MCP \u8FDB\u7A0B\u5185\u8BB0\u5FC6\u7684\u5DE5\u4F5C\u76EE\u5F55\u3002",inputSchema:{}},async()=>r?(0,i.createTextToolResult)(`\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55: ${r}`):(0,i.createTextToolResult)("\u5F53\u524D\u672A\u8BBE\u7F6E\u5DE5\u4F5C\u76EE\u5F55\uFF0C\u8BF7\u5148\u8C03\u7528 set_workspace\u3002"));function c(e){return e.length===0?"\u5F53\u524D\u65E0 USB \u8BBE\u5907":e.map((n,a)=>`[${a+1}] ${n.name} udid=${n.udid} ${n.ip}:${n.port}`).join(`
2
+ `)}t.registerTool("list_usb_devices",{title:"List USB Devices",description:"\u5217\u51FA\u5F53\u524D USB \u8F6C\u53D1\u8BBE\u5907\u3002",inputSchema:{}},async()=>{const e=(0,_.getSharedUsbDevices)();return(0,i.createTextToolResult)(`USB \u8BBE\u5907 (${e.length}):
3
+ ${c(e)}`)}),t.registerTool("set_device",{title:"Set Device",description:"\u8BBE\u7F6E\u9ED8\u8BA4\u8BBE\u5907\u3002\u7F51\u7EDC\u8BBE\u5907\u4F20 ip/port\uFF0CUSB \u8BBE\u5907\u4F20 udid\u3002",inputSchema:{ip:u.string().min(1).optional().describe("\u8BBE\u5907 IP\uFF0C\u4F8B\u5982 192.168.1.100"),port:u.number().int().min(1).max(65535).optional().describe("\u8BBE\u5907\u7AEF\u53E3\uFF0C\u9ED8\u8BA4 9800"),udid:u.string().min(1).optional().describe("USB \u8BBE\u5907 UDID")}},async({ip:e,port:n,udid:a})=>{if(a?.trim()){const p=a.trim(),l=(0,_.getSharedUsbDevices)().find(f=>f.udid===p);if(!l)throw new Error(`\u672A\u627E\u5230 USB \u8BBE\u5907 udid=${p}
4
+ ${c((0,_.getSharedUsbDevices)())}`);const d=await(0,h.setDeviceConfig)(l.ip,l.port);return(0,i.createTextToolResult)(`\u9ED8\u8BA4\u8BBE\u5907\u5DF2\u8BBE\u7F6E\u4E3A USB ${l.name} (${d.ip}:${d.port})`)}if(!e?.trim())throw new Error("\u8BF7\u63D0\u4F9B ip\uFF0C\u6216\u63D0\u4F9B USB udid\u3002");const g=await(0,h.setDeviceConfig)(e,n);return(0,i.createTextToolResult)(`\u9ED8\u8BA4\u8BBE\u5907\u5DF2\u8BBE\u7F6E\u4E3A ${g.ip}:${g.port}`)}),t.registerTool("get_device",{title:"Get Device",description:"\u67E5\u770B\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u914D\u7F6E\u3002",inputSchema:{}},async()=>{const e=await(0,h.readDeviceConfig)();return e?(0,i.createTextToolResult)(`\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907: ${e.ip}:${e.port}`):(0,i.createTextToolResult)("\u5F53\u524D\u672A\u8BBE\u7F6E\u9ED8\u8BA4\u8BBE\u5907\uFF0C\u8BF7\u5148\u8C03\u7528 set_device\u3002")}),t.registerTool("take_screenshot",{title:"Take Screenshot",description:"\u83B7\u53D6\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u622A\u56FE\u3002\u53EF\u8FD4\u56DE base64\uFF0C\u6216\u843D\u5730\u5230\u6587\u4EF6\u540E\u8FD4\u56DE\u6587\u4EF6\u8DEF\u5F84\uFF08\u9ED8\u8BA4\u5199\u5165\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\uFF09\u3002",inputSchema:{format:u.enum(["file","base64"]).optional().default("file").describe("\u622A\u56FE\u8FD4\u56DE\u683C\u5F0F\uFF1Afile=\u6587\u4EF6\u8DEF\u5F84\uFF0Cbase64=\u56FE\u7247 base64"),outputPath:u.string().min(1).optional().describe("\u5F53 format=file \u65F6\u53EF\u6307\u5B9A\u8F93\u51FA\u8DEF\u5F84\uFF0C\u4E0D\u4F20\u5219\u5199\u5165\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55")}},async({format:e,outputPath:n})=>{const a=await(0,i.resolveRuntimeHttpTarget)(),g=(0,i.createRuntimeHttpRequestOptions)(a);if(e==="base64"){const d=await(0,m.getScreenshotBase64OnDevice)(g);return(0,i.createTextToolResult)(`\u622A\u56FE\u6210\u529F: ${a.label}
2
5
  format: base64
3
- ${f}`)}const l=await(0,u.getScreenshotOnDevice)(m),p=h(a,"ms-mcp-screenshot","jpg");return await T.ensureDir(g.dirname(p)),await T.writeFile(p,l),(0,i.createTextToolResult)(`\u622A\u56FE\u6210\u529F: ${c.label}
6
+ ${d}`)}const p=await(0,m.getScreenshotOnDevice)(g),l=S(n,"ms-mcp-screenshot","jpg");return await b.ensureDir(T.dirname(l)),await b.writeFile(l,p),(0,i.createTextToolResult)(`\u622A\u56FE\u6210\u529F: ${a.label}
4
7
  format: file
5
- path: ${p}
6
- size: ${l.length} bytes`)}),r.registerTool("get_node_source",{title:"Get Node Source",description:"\u83B7\u53D6\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u9875\u9762\u8282\u70B9 XML\uFF0C\u5199\u5165\u6587\u4EF6\u540E\u8FD4\u56DE\u8DEF\u5F84\uFF0C\u907F\u514D\u957F\u6587\u672C\u54CD\u5E94\u88AB\u622A\u65AD\u3002",inputSchema:{maxDepth:s.number().int().min(1).max(200).optional().default(50).describe("\u8282\u70B9\u6811\u6700\u5927\u6DF1\u5EA6\uFF0C\u9ED8\u8BA4 50"),timeout:s.number().int().min(1).max(600).optional().default(120).describe("\u8BBE\u5907\u7AEF\u8282\u70B9\u6293\u53D6\u8D85\u65F6\u79D2\u6570\uFF0C\u9ED8\u8BA4 120"),mode:s.number().int().min(1).max(3).optional().default(1).describe("\u8282\u70B9\u6293\u53D6\u6A21\u5F0F\uFF1A1\u30012\u30013\uFF0C\u9ED8\u8BA4 1"),outputPath:s.string().min(1).optional().describe("\u53EF\u9009\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84\uFF0C\u4E0D\u4F20\u5219\u5199\u5165\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55")}},async({maxDepth:e,timeout:a,mode:c,outputPath:m})=>{const l=await(0,i.resolveRuntimeHttpTarget)(),p=(0,i.createRuntimeHttpRequestOptions)(l),f=await(0,u.getSourceOnDevice)(p,e,a,c),w=h(m,"ms-mcp-node-source","xml");return await T.ensureDir(g.dirname(w)),await T.writeFile(w,f,"utf8"),(0,i.createTextToolResult)(`\u8282\u70B9\u83B7\u53D6\u6210\u529F: ${l.label}
8
+ path: ${l}
9
+ size: ${p.length} bytes`)}),t.registerTool("get_node_source",{title:"Get Node Source",description:"\u83B7\u53D6\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u9875\u9762\u8282\u70B9 XML\uFF0C\u5199\u5165\u6587\u4EF6\u540E\u8FD4\u56DE\u8DEF\u5F84\uFF0C\u907F\u514D\u957F\u6587\u672C\u54CD\u5E94\u88AB\u622A\u65AD\u3002",inputSchema:{maxDepth:u.number().int().min(1).max(200).optional().default(50).describe("\u8282\u70B9\u6811\u6700\u5927\u6DF1\u5EA6\uFF0C\u9ED8\u8BA4 50"),timeout:u.number().int().min(1).max(600).optional().default(120).describe("\u8BBE\u5907\u7AEF\u8282\u70B9\u6293\u53D6\u8D85\u65F6\u79D2\u6570\uFF0C\u9ED8\u8BA4 120"),mode:u.number().int().min(1).max(3).optional().default(1).describe("\u8282\u70B9\u6293\u53D6\u6A21\u5F0F\uFF1A1\u30012\u30013\uFF0C\u9ED8\u8BA4 1"),outputPath:u.string().min(1).optional().describe("\u53EF\u9009\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84\uFF0C\u4E0D\u4F20\u5219\u5199\u5165\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55")}},async({maxDepth:e,timeout:n,mode:a,outputPath:g})=>{const p=await(0,i.resolveRuntimeHttpTarget)(),l=(0,i.createRuntimeHttpRequestOptions)(p),d=await(0,m.getSourceOnDevice)(l,e,n,a),f=S(g,"ms-mcp-node-source","xml");return await b.ensureDir(T.dirname(f)),await b.writeFile(f,d,"utf8"),(0,i.createTextToolResult)(`\u8282\u70B9\u83B7\u53D6\u6210\u529F: ${p.label}
7
10
  maxDepth: ${e}
8
- timeout: ${a}
9
- mode: ${c}
10
- path: ${w}
11
- size: ${Buffer.byteLength(f,"utf8")} bytes`)}),r.registerTool("get_logs",{title:"Get Device Logs",description:"\u83B7\u53D6\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u7684\u6700\u65B0\u65E5\u5FD7\u884C\u3002",inputSchema:{limit:s.number().int().min(1).max(5e3).optional().default(200).describe("\u8FD4\u56DE\u6700\u8FD1\u65E5\u5FD7\u6761\u6570\uFF0C\u9ED8\u8BA4 200\uFF0C\u6700\u5927 5000")}},async({limit:e})=>{const a=await(0,i.resolveRuntimeHttpTarget)();return(0,i.createTextToolResult)(await(0,O.buildDeviceLogSnapshotText)(a,e))}),r.registerTool("package_project",{title:"Package Project",description:"\u6267\u884C\u751F\u4EA7\u6784\u5EFA\u5E76\u52A0\u5BC6\uFF0C\u8FD4\u56DE enc.msbundle \u8DEF\u5F84\u3002",inputSchema:{workspacePath:s.string().min(1).optional().describe("\u53EF\u9009\u5DE5\u4F5C\u76EE\u5F55\uFF1B\u4E0D\u4F20\u65F6\u4F7F\u7528 set_workspace \u8BB0\u5FC6\u503C")}},async({workspacePath:e})=>{const a=await n(e),c=await(0,v.packageProject)(a);return(0,i.createTextToolResult)(`\u6253\u5305\u5B8C\u6210: ${c}`)}),r.registerTool("run_project",{title:"Run Project",description:"\u6784\u5EFA\u5E76\u540C\u6B65\u5230\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u540E\u8FD0\u884C\u9879\u76EE\uFF0C\u4EC5\u4F7F\u7528 HTTP \u8BBE\u5907\u8FDE\u63A5\u3002",inputSchema:{workspacePath:s.string().min(1).optional().describe("\u53EF\u9009\u5DE5\u4F5C\u76EE\u5F55\uFF1B\u4E0D\u4F20\u65F6\u4F7F\u7528 set_workspace \u8BB0\u5FC6\u503C")}},async({workspacePath:e})=>{const a=await n(e),c=await(0,i.resolveRuntimeHttpTarget)();return await(0,u.runOnDevice)({...(0,i.createRuntimeHttpRequestOptions)(c),workspacePath:a}),(0,i.createTextToolResult)(`\u8FD0\u884C\u8BF7\u6C42\u5DF2\u53D1\u9001\u5230 ${c.label}`)}),r.registerTool("run_ui_project",{title:"Run UI Project",description:"\u6784\u5EFA\u5E76\u540C\u6B65\u5230\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u540E\u9884\u89C8 UI\uFF0C\u4EC5\u4F7F\u7528 HTTP \u8BBE\u5907\u8FDE\u63A5\u3002",inputSchema:{workspacePath:s.string().min(1).optional().describe("\u53EF\u9009\u5DE5\u4F5C\u76EE\u5F55\uFF1B\u4E0D\u4F20\u65F6\u4F7F\u7528 set_workspace \u8BB0\u5FC6\u503C")}},async({workspacePath:e})=>{const a=await n(e),c=await(0,i.resolveRuntimeHttpTarget)();return await(0,u.runUIOnDevice)({...(0,i.createRuntimeHttpRequestOptions)(c),workspacePath:a}),(0,i.createTextToolResult)(`UI \u9884\u89C8\u8BF7\u6C42\u5DF2\u53D1\u9001\u5230 ${c.label}`)}),r.registerTool("stop_project",{title:"Stop Project",description:"\u505C\u6B62\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u4E0A\u7684\u9879\u76EE\uFF0C\u4EC5\u4F7F\u7528 HTTP \u8BBE\u5907\u8FDE\u63A5\u3002",inputSchema:{}},async()=>{const e=await(0,i.resolveRuntimeHttpTarget)();return await(0,u.stopOnDevice)((0,i.createRuntimeHttpRequestOptions)(e)),(0,i.createTextToolResult)(`\u505C\u6B62\u8BF7\u6C42\u5DF2\u53D1\u9001\u5230 ${e.label}`)})}
11
+ timeout: ${n}
12
+ mode: ${a}
13
+ path: ${f}
14
+ size: ${Buffer.byteLength(d,"utf8")} bytes`)}),t.registerTool("get_logs",{title:"Get Device Logs",description:"\u83B7\u53D6\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u7684\u6700\u65B0\u65E5\u5FD7\u884C\u3002",inputSchema:{limit:u.number().int().min(1).max(5e3).optional().default(200).describe("\u8FD4\u56DE\u6700\u8FD1\u65E5\u5FD7\u6761\u6570\uFF0C\u9ED8\u8BA4 200\uFF0C\u6700\u5927 5000")}},async({limit:e})=>{const n=await(0,i.resolveRuntimeHttpTarget)();return(0,i.createTextToolResult)(await(0,D.buildDeviceLogSnapshotText)(n,e))}),t.registerTool("package_project",{title:"Package Project",description:"\u6267\u884C\u751F\u4EA7\u6784\u5EFA\u5E76\u52A0\u5BC6\uFF0C\u8FD4\u56DE enc.msbundle \u8DEF\u5F84\u3002",inputSchema:{workspacePath:u.string().min(1).optional().describe("\u53EF\u9009\u5DE5\u4F5C\u76EE\u5F55\uFF1B\u4E0D\u4F20\u65F6\u4F7F\u7528 set_workspace \u8BB0\u5FC6\u503C")}},async({workspacePath:e})=>{const n=await o(e),a=await(0,P.packageProject)(n);return(0,i.createTextToolResult)(`\u6253\u5305\u5B8C\u6210: ${a}`)}),t.registerTool("run_project",{title:"Run Project",description:"\u6784\u5EFA\u5E76\u540C\u6B65\u5230\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u540E\u8FD0\u884C\u9879\u76EE\uFF0C\u4EC5\u4F7F\u7528 HTTP \u8BBE\u5907\u8FDE\u63A5\u3002",inputSchema:{workspacePath:u.string().min(1).optional().describe("\u53EF\u9009\u5DE5\u4F5C\u76EE\u5F55\uFF1B\u4E0D\u4F20\u65F6\u4F7F\u7528 set_workspace \u8BB0\u5FC6\u503C")}},async({workspacePath:e})=>{const n=await o(e),a=await(0,i.resolveRuntimeHttpTarget)();return await(0,m.runOnDevice)({...(0,i.createRuntimeHttpRequestOptions)(a),workspacePath:n}),(0,i.createTextToolResult)(`\u8FD0\u884C\u8BF7\u6C42\u5DF2\u53D1\u9001\u5230 ${a.label}`)}),t.registerTool("run_ui_project",{title:"Run UI Project",description:"\u6784\u5EFA\u5E76\u540C\u6B65\u5230\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u540E\u9884\u89C8 UI\uFF0C\u4EC5\u4F7F\u7528 HTTP \u8BBE\u5907\u8FDE\u63A5\u3002",inputSchema:{workspacePath:u.string().min(1).optional().describe("\u53EF\u9009\u5DE5\u4F5C\u76EE\u5F55\uFF1B\u4E0D\u4F20\u65F6\u4F7F\u7528 set_workspace \u8BB0\u5FC6\u503C")}},async({workspacePath:e})=>{const n=await o(e),a=await(0,i.resolveRuntimeHttpTarget)();return await(0,m.runUIOnDevice)({...(0,i.createRuntimeHttpRequestOptions)(a),workspacePath:n}),(0,i.createTextToolResult)(`UI \u9884\u89C8\u8BF7\u6C42\u5DF2\u53D1\u9001\u5230 ${a.label}`)}),t.registerTool("stop_project",{title:"Stop Project",description:"\u505C\u6B62\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u4E0A\u7684\u9879\u76EE\uFF0C\u4EC5\u4F7F\u7528 HTTP \u8BBE\u5907\u8FDE\u63A5\u3002",inputSchema:{}},async()=>{const e=await(0,i.resolveRuntimeHttpTarget)();return await(0,m.stopOnDevice)((0,i.createRuntimeHttpRequestOptions)(e)),(0,i.createTextToolResult)(`\u505C\u6B62\u8BF7\u6C42\u5DF2\u53D1\u9001\u5230 ${e.label}`)})}
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var o=exports&&exports.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var c=Object.getOwnPropertyDescriptor(e,n);(!c||("get"in c?!e.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,c)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),s=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),u=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var c in n)Object.prototype.hasOwnProperty.call(n,c)&&(r[r.length]=c);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),c=0;c<r.length;c++)r[c]!=="default"&&o(n,e,r[c]);return s(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0});const i=u(require("fs-extra")),f=require("@modelcontextprotocol/sdk/server/stdio.js"),l=require("./mcp/tools"),a=require("./mcp/device-config");async function _(){const t=(0,l.createMcpServer)(),e=new f.StdioServerTransport,n=async()=>{try{await i.remove(a.DEVICE_CONFIG_FILE)}catch{}};process.once("SIGINT",()=>{n().catch(()=>{}).finally(()=>process.exit(0))}),process.once("SIGTERM",()=>{n().catch(()=>{}).finally(()=>process.exit(0))}),process.once("exit",()=>{try{i.removeSync(a.DEVICE_CONFIG_FILE)}catch{}}),await t.connect(e)}_().catch(t=>{const e=t instanceof Error?t.message:String(t);console.error(`MCP \u670D\u52A1\u542F\u52A8\u5931\u8D25: ${e}`),process.exit(1)});
2
+ "use strict";var o=exports&&exports.__createBinding||(Object.create?(function(r,e,n,t){t===void 0&&(t=n);var c=Object.getOwnPropertyDescriptor(e,n);(!c||("get"in c?!e.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(r,t,c)}):(function(r,e,n,t){t===void 0&&(t=n),r[t]=e[n]})),s=exports&&exports.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),u=exports&&exports.__importStar||(function(){var r=function(e){return r=Object.getOwnPropertyNames||function(n){var t=[];for(var c in n)Object.prototype.hasOwnProperty.call(n,c)&&(t[t.length]=c);return t},r(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t=r(e),c=0;c<t.length;c++)t[c]!=="default"&&o(n,e,t[c]);return s(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0});const i=u(require("fs-extra")),f=require("@modelcontextprotocol/sdk/server/stdio.js"),l=require("./mcp/tools"),a=require("./mcp/device-config"),_=require("./usb-forward");async function d(){const r=(0,l.createMcpServer)(),e=new f.StdioServerTransport,n=async()=>{try{await i.remove(a.DEVICE_CONFIG_FILE)}catch{}};process.once("SIGINT",()=>{n().catch(()=>{}).finally(()=>process.exit(0))}),process.once("SIGTERM",()=>{n().catch(()=>{}).finally(()=>process.exit(0))}),process.once("exit",()=>{try{i.removeSync(a.DEVICE_CONFIG_FILE)}catch{}});try{await(0,_.attachUsbForward)()}catch(t){const c=t instanceof Error?t.message:String(t);console.error(`USB \u8F6C\u53D1\u63A5\u5165\u5931\u8D25: ${c}`)}await r.connect(e)}d().catch(r=>{const e=r instanceof Error?r.message:String(r);console.error(`MCP \u670D\u52A1\u542F\u52A8\u5931\u8D25: ${e}`),process.exit(1)});
@@ -0,0 +1,4 @@
1
+ import { type UsbForwardDevice } from "kuaijs-forward-service/daemon.js";
2
+ export type UsbDevice = UsbForwardDevice;
3
+ export declare function attachUsbForward(onChange?: (devices: UsbDevice[]) => void): Promise<void>;
4
+ export declare function getSharedUsbDevices(): UsbDevice[];
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.attachUsbForward=a,exports.getSharedUsbDevices=n;const s=require("kuaijs-forward-service/daemon.js");let r=[];function a(t){return(0,s.openClient)(e=>{r=e,t?.(e)},{name:"ms"}).ready}function n(){return r}
@@ -117,25 +117,6 @@ if (maxRetries !== null) {
117
117
  }
118
118
  ```
119
119
 
120
- ### getKuiConfig - 获取 KUI 的配置。
121
-
122
- ```typescript
123
- function getKuiConfig(): Record<string, any>;
124
- ```
125
-
126
- **返回值:**
127
-
128
- | 类型 | 描述 |
129
- | --------------------- | -------------------------------------------------------- |
130
- | `Record<string, any>` | `KUI_CONFIG` 对应的对象,配置不存在或无法转换时返回空对象 |
131
-
132
- **示例:**
133
-
134
- ```javascript
135
- const kuiConfig = config.getKuiConfig();
136
- logi(`KUI 配置: ${JSON.stringify(kuiConfig, null, 2)}`);
137
- ```
138
-
139
120
  ### remove - 删除指定的配置项。
140
121
 
141
122
  ```typescript
@@ -115,25 +115,6 @@ const maxRetries = $配置.获取("maxRetries");
115
115
  $打印信息日志(`最大重试次数: ${maxRetries}`);
116
116
  ```
117
117
 
118
- ### 获取KUI配置 - 获取 KUI 的配置。
119
-
120
- ```typescript
121
- function 获取KUI配置(): 字典<任意类型>;
122
- ```
123
-
124
- **返回值:**
125
-
126
- | 类型 | 描述 |
127
- | ---------------- | -------------------------------------------------------- |
128
- | `字典<任意类型>` | `KUI_CONFIG` 对应的对象,配置不存在或无法转换时返回空对象 |
129
-
130
- **示例:**
131
-
132
- ```javascript
133
- const kuiConfig = $配置.获取KUI配置();
134
- $打印信息日志(`KUI 配置: ${JSON.stringify(kuiConfig, null, 2)}`);
135
- ```
136
-
137
118
  ### 删除
138
119
 
139
120
  ```typescript
@@ -18,8 +18,6 @@
18
18
 
19
19
  ### 运行模式
20
20
 
21
- ### 运行模式
22
-
23
21
  #### **$运行模式**
24
22
 
25
23
  用户设置选择的运行模式,"agent" 或 "hid"。
@@ -127,26 +127,6 @@ if maxRetries ~= nil then
127
127
  end
128
128
  ```
129
129
 
130
- ### getKuiConfig - 获取 KUI 的配置。
131
-
132
- ```lua
133
- ---@return table
134
- function getKuiConfig() end
135
- ```
136
-
137
- **返回值:**
138
-
139
- | 类型 | 描述 |
140
- | --------------------- | -------------------------------------------------------- |
141
- | `table` | `KUI_CONFIG` 对应的对象,配置不存在或无法转换时返回空对象 |
142
-
143
- **示例:**
144
-
145
- ```lua
146
- local kuiConfig = config.getKuiConfig()
147
- print("KUI 配置: " .. tostring(ToJsonString(kuiConfig, nil, 2)))
148
- ```
149
-
150
130
  ### remove - 删除指定的配置项。
151
131
 
152
132
  ```lua
@@ -121,26 +121,6 @@ if maxRetries:
121
121
  print(f"最大重试次数: {maxRetries}")
122
122
  ```
123
123
 
124
- ### getKuiConfig - 获取 KUI 的配置。
125
-
126
- ```python
127
- def getKuiConfig() -> Dict[str, Any]:
128
- ```
129
-
130
- **返回值:**
131
-
132
- | 类型 | 描述 |
133
- | ---------------- | -------------------------------------------------------- |
134
- | `Dict[str, Any]` | `KUI_CONFIG` 对应的字典,配置不存在或无法转换时返回空字典 |
135
-
136
- **示例:**
137
-
138
- ```python
139
- from kuaijs import config
140
- kui_config = config.getKuiConfig()
141
- print(f"KUI 配置: {kui_config}")
142
- ```
143
-
144
124
  ### remove - 删除指定的配置项。
145
125
 
146
126
  ```python
@@ -49,12 +49,6 @@
49
49
 
50
50
  <img src="/img/Project/项目类型.jpg" width="800" alt="创建项目">
51
51
 
52
- ## 安装依赖
53
-
54
- - 项目第一次创建打开时,可能会提示环境不满足,跟随提示自动配置环境,点击一键安装即可
55
-
56
- <img src="/img/Project/installDeps.jpg" width="800" alt="安装依赖">
57
-
58
52
  ## 运行项目
59
53
 
60
54
  **使用说明**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ms-vite-plugin",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "type": "commonjs",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -29,6 +29,7 @@
29
29
  "crc": "^4.3.2",
30
30
  "fs-extra": "^11.3.5",
31
31
  "jpeg-js": "^0.4.4",
32
+ "kuaijs-forward-service": "^0.1.1",
32
33
  "magic-string": "^0.30.21",
33
34
  "pngjs": "^7.0.0",
34
35
  "uuid": "^14.0.0",