@microi.net/cli 5.7.3 → 5.7.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.
Files changed (48) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.mcp.json +1 -1
  5. package/.workbuddy-plugin/marketplace.json +2 -2
  6. package/.workbuddy-plugin/plugin.json +1 -1
  7. package/README.md +71 -71
  8. package/assets/build-meta.json +7 -7
  9. package/cordis.patch.yml +2 -2
  10. package/package.json +1 -1
  11. package/scripts/mcp-server.js +101 -101
  12. package/scripts/microi-cli.js +2 -2
  13. package/scripts/microi-codex-broker.js +450 -447
  14. package/scripts/microi-codex-router.js +2 -2
  15. package/scripts/microi-skills.meta.json +231 -222
  16. package/skills/.microi-skills-version.json +6 -6
  17. package/skills/.progressive-disclosure-manifest.json +3566 -3566
  18. package/skills/ai-engine/SKILL.md +31 -11
  19. package/skills/ai-engine/references/ai-employees.md +44 -0
  20. package/skills/ai-engine/references/self-hosted-digital-human.md +45 -0
  21. package/skills/app-store/SKILL.md +249 -208
  22. package/skills/job-engine/SKILL.md +21 -20
  23. package/skills/message-notification/SKILL.md +156 -155
  24. package/skills/microi-ai-application/SKILL.md +7 -3
  25. package/skills/microi-client-frontend/SKILL.md +34 -32
  26. package/skills/microi-codex/SKILL.md +8 -8
  27. package/skills/microi-codex-installer/SKILL.md +5 -5
  28. package/skills/microi-datasource-mapping/SKILL.md +9 -1
  29. package/skills/microi-docs-coverage/references/capability-map.md +4 -0
  30. package/skills/microi-form-engine/SKILL.md +7 -1
  31. package/skills/microi-frontend-sdk/SKILL.md +4 -2
  32. package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +1 -1
  33. package/skills/microi-microservice/SKILL.md +41 -30
  34. package/skills/module-engine/SKILL.md +58 -42
  35. package/skills/playwright-e2e/SKILL.md +3 -3
  36. package/skills/print-engine/SKILL.md +50 -48
  37. package/skills/v8-explorer-tree/SKILL.md +228 -228
  38. package/skills/v8-file-upload/SKILL.md +189 -182
  39. package/skills/v8-file-upload/references/progressive-02-office-/346/226/207/344/273/266/345/234/250/347/272/277/347/274/226/350/276/221/347/211/210/346/234/254/345/217/267/350/247/204/345/210/231.md +13 -3
  40. package/skills/v8-mq-mqtt/SKILL.md +2 -1
  41. package/skills/v8-saas-multi-tenant/SKILL.md +7 -1
  42. package/skills/v8-table-event/SKILL.md +4 -2
  43. package/skills/v8-tcp-integration/SKILL.md +2 -2
  44. package/skills/v8-workflow/SKILL.md +93 -66
  45. package/skills/v8-workflow/references/workflow-configuration.md +49 -0
  46. package/skills/workspace-conventions/SKILL.md +261 -261
  47. package/skills/workspace-conventions/references/progressive-01-/347/211/210/346/234/254/346/233/264/346/226/260/346/227/245/345/277/227/344/277/235/346/212/244/350/247/204/345/210/231-/345/274/272/345/210/266.md +208 -208
  48. package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +7 -7
@@ -1985,8 +1985,8 @@ ${ct}
1985
1985
  `)}ensureJsConfig(e,t){let n=_.join(e,"jsconfig.json"),r=e,i=e,o;if(D.existsSync(n))try{o=JSON.parse(D.readFileSync(n,"utf-8"))}catch{o={}}else o={};let a=o.compilerOptions||{};a.target=a.target||"ES2020",a.module=a.module||"CommonJS",a.checkJs=!0;let c=_.relative(e,t),l=a.typeRoots||[];l.includes(`./${c}`)||l.push(`./${c}`),a.typeRoots=l,o.compilerOptions=a;let g=o.include||[],d=_.relative(e,r),u=_.relative(e,i),p=`${c}/**/*`;for(let f of[`${d}/**/*`,`${u}/**/*`,p])g.includes(f)||g.push(f);o.include=g;let m=o.exclude||[];m.includes("node_modules")||m.push("node_modules"),o.exclude=m,D.writeFileSync(n,JSON.stringify(o,null,2),"utf-8")}cleanup(){let e=I.getInstance(),t=e.getWorkspaceRoot();if(!t)return;let n=e.getSyncRootDir(),r=_.join(n,wt),i=_.join(r,Gt);D.existsSync(i)&&D.unlinkSync(i);let o=_.join(t,wt),a=_.join(o,Gt);if(D.existsSync(a)&&D.unlinkSync(a),_.resolve(n)!==_.resolve(t)){let c=_.join(t,Rn,In),l=_.join(t,_n),g=_.join(t,Mn),d=_.join(t,An),u=_.join(t,Nn,Fn),p=Xr.map(f=>_.join(t,f)),m=_.join(t,Zr);if(this.canRemoveGeneratedAiDoc(t,c))try{D.unlinkSync(c)}catch{}if(this.canRemoveGeneratedAiDoc(t,l))try{D.unlinkSync(l)}catch{}if(this.canRemoveGeneratedAiDoc(t,g))try{D.unlinkSync(g)}catch{}if(this.canRemoveGeneratedAiDoc(t,d))try{D.unlinkSync(d)}catch{}if(this.canRemoveGeneratedAiDoc(t,u))try{D.unlinkSync(u)}catch{}for(let f of p)if(this.canRemoveGeneratedAiDoc(t,f))try{D.unlinkSync(f)}catch{}if(this.canRemoveGeneratedAiDoc(t,m))try{D.unlinkSync(m)}catch{}}this.cleanupSchemaDocs(n)}cleanupSchemaDocs(e){try{for(let t of D.readdirSync(e)){if(t.startsWith(".")&&t!==Ke)continue;let n=_.join(e,t);if(t===Ke)try{D.unlinkSync(n)}catch{}else try{D.statSync(n).isDirectory()&&this.cleanupSchemaDocs(n)}catch{}}}catch{}}};function Nt(s,e){let t=i=>{if(!(!i||!/^\d+(?:\.\d+){2}$/.test(i)))return i.split(".").map(o=>Number(o))},n=t(s),r=t(e);if(!n||!r)return 0;for(let i=0;i<3;i+=1)if(n[i]!==r[i])return n[i]>r[i]?1:-1;return 0}function At(s){let e=s.env,t=String(e?.MICROI_TOOL_VERSION||"").trim();return/^\d+(?:\.\d+){2}$/.test(t)?t:""}function an(s){let e=s.env||{},t=s.headers||{},r=(o=>o.trim().replace(/\/+$/,"").toLowerCase())(String(e.MICROI_API_URL||s.url||"")),i=String(e.MICROI_OS_CLIENT||t["X-Microi-OsClient"]||"").trim().toLowerCase();return`${r}|${i}`}function ns(s,e,t){let n={...s},r={},i=new Set,o=[];for(let[c,l]of Object.entries(e)){let g=an(l),d=At(l),u=Object.entries(n).filter(([m,f])=>{if(!t.isManaged(m,f))return!1;let y=an(f);return m===c||g!=="|"&&y===g}),p=u.find(([,m])=>Nt(At(m),d)>0);if(p){let m=At(p[1]);for(let[f]of u)i.add(f);o.push({name:p[0],version:m});continue}r[c]=l}let a=new Set(Object.values(r).map(an).filter(c=>c!=="|"));for(let[c,l]of Object.entries(n)){if(!t.isManaged(c,l)||i.has(c))continue;if(Object.prototype.hasOwnProperty.call(r,c)){delete n[c];continue}let g=an(l);if(a.has(g)){delete n[c];continue}(t.removeManagedNotInNext||t.isStableName&&!t.isStableName(c))&&delete n[c]}return Object.assign(n,r),{servers:n,skippedNewerProviders:o}}var Zn=B(require("child_process")),K=B(require("fs")),rs=B(require("os")),G=B(require("path")),$e="microi-net",Ie="microi",Ae=`${Ie}@${$e}`,dn="@microi.net/cli",ss="@microi.net/codex-plugin",Ft="microi-official",cn=`${Ie}@${Ft}`;function Yn(s){return[s.stderr,s.stdout].filter(Boolean).join(`
1986
1986
  `).trim()}function is(s,e,t=3e4){let n=Zn.spawnSync(s.command,[...s.prefixArgs,...e],{encoding:"utf8",windowsHide:!0,timeout:t,maxBuffer:16777216});return{status:typeof n.status=="number"?n.status:1,stdout:String(n.stdout||""),stderr:[n.error?.message,n.stderr].filter(Boolean).join(`
1987
1987
  `)}}function Mi(s){let e=G.extname(s).toLowerCase();return e===".js"||e===".cjs"||e===".mjs"?{command:process.execPath,prefixArgs:[s],displayPath:s}:process.platform==="win32"&&(e===".cmd"||e===".bat")?{command:process.env.ComSpec||"cmd.exe",prefixArgs:["/d","/s","/c",s],displayPath:s}:{command:s,prefixArgs:[],displayPath:s}}function Ai(){let s=String(process.env.MICROI_CODEX_PATH||"").trim();if(s){let r=G.resolve(s);if(!K.existsSync(r))throw new Error(`MICROI_CODEX_PATH \u6307\u5411\u7684\u6587\u4EF6\u4E0D\u5B58\u5728\uFF1A${r}`);return[r]}let e=process.platform==="win32"?[["where.exe",["codex.exe"]],["where.exe",["codex"]]]:[["which",["codex"]]],t=[];for(let[r,i]of e){let o=Zn.spawnSync(r,i,{encoding:"utf8",windowsHide:!0,timeout:3e3});o.status===0&&t.push(...String(o.stdout||"").split(/\r?\n/).map(a=>a.trim()).filter(Boolean))}return process.platform!=="win32"&&t.push("codex"),[...new Map(t.map(r=>[process.platform==="win32"?r.toLowerCase():r,r])).values()].sort((r,i)=>{let o=G.extname(r).toLowerCase()===".exe"?0:1,a=G.extname(i).toLowerCase()===".exe"?0:1;return o-a})}function os(){for(let s of Ai()){if(G.isAbsolute(s)&&!K.existsSync(s))continue;let e=Mi(s),t=is(e,["--version"],5e3);if(t.status!==0)continue;let n=t.stdout.trim()||t.stderr.trim();if(/codex/i.test(n))return{...e,version:n}}}function Re(s,e,t=!1){let n=is(s,["-c",'model_reasoning_effort="high"',...e]);if(!t&&n.status!==0)throw new Error(`Codex CLI \u6267\u884C\u5931\u8D25\uFF1Acodex ${e.join(" ")}
1988
- ${Yn(n)}`.trim());return n}function Ni(s){let e=[];for(let t of s.split(/\r?\n/)){let n=t.trim().split(/\s{2,}/);n.length<2||n[0]==="MARKETPLACE"||e.push({name:n[0],root:n.slice(1).join(" ")})}return e}function Fi(s){let e=[];for(let t of s.split(/\r?\n/)){let n=t.trim().split(/\s{2,}/);if(n.length<2||n[0]==="PLUGIN"||!n[0].includes("@"))continue;let r=/^not installed$/i.test(n[1]||"");e.push({selector:n[0],status:n[1]||"",version:r?"":n[2]||"",pluginPath:r?n.slice(2).join(" "):n.slice(3).join(" ")})}return e}function Vi(){let e=[G.join(__dirname,"codex-marketplace.json"),G.resolve(__dirname,"..","..","codex","marketplace.npm.json")].find(t=>K.existsSync(t));if(!e)throw new Error("CLI \u7F3A\u5C11 codex-marketplace.json\uFF0C\u8BF7\u91CD\u65B0\u5B89\u88C5\u6700\u65B0\u7248 @microi.net/cli");return e}function Xn(s,e){let t=G.join(s,".codex-plugin","plugin.json"),n=G.join(s,"package.json"),r,i;try{r=JSON.parse(K.readFileSync(t,"utf8")),i=JSON.parse(K.readFileSync(n,"utf8"))}catch(o){throw new Error(`${e}\u8EAB\u4EFD\u6587\u4EF6\u65E0\u6CD5\u89E3\u6790\uFF1A${o instanceof Error?o.message:String(o)}`)}return{name:String(r.name||""),version:String(r.version||""),packageName:String(i.name||"")}}function xi(){let s=[G.resolve(__dirname,".."),G.resolve(__dirname,"..","..","plugins",Ie)];for(let e of s){if(!K.existsSync(G.join(e,".codex-plugin","plugin.json"))||!K.existsSync(G.join(e,"package.json")))continue;let t=Xn(e,"\u5185\u7F6E Microi Codex \u63D2\u4EF6");if(t.name===Ie&&t.packageName===dn&&t.version)return{root:e,version:t.version}}throw new Error("CLI \u7F3A\u5C11\u5B8C\u6574\u7684 Microi Codex \u63D2\u4EF6\u6587\u4EF6\uFF0C\u8BF7\u91CD\u65B0\u5B89\u88C5\u6700\u65B0\u7248 @microi.net/cli")}function Oi(s){if(!s||s.name!==Ie)return!1;if(s.source?.source==="local")return String(s.source.path||"").replace(/\\/g,"/").replace(/^\.\//,"")==="plugins/microi";let e=[dn,ss];return s.source?.source==="npm"&&e.includes(s.source.package||"")}function as(){let s=K.readFileSync(Vi(),"utf8"),e;try{e=JSON.parse(s)}catch(r){throw new Error(`Codex marketplace \u6A21\u677F\u65E0\u6CD5\u89E3\u6790\uFF1A${r instanceof Error?r.message:String(r)}`)}let t=e.plugins?.find(r=>r.name===Ie);if(e.name!==$e||t?.source?.source!=="local"||String(t.source.path||"").replace(/\\/g,"/").replace(/^\.\//,"")!=="plugins/microi")throw new Error("Codex marketplace \u6A21\u677F\u8EAB\u4EFD\u4E0D\u5408\u6CD5\uFF0C\u62D2\u7EDD\u5199\u5165\u5168\u5C40\u914D\u7F6E");let n=xi();return{manifest:e,content:`${JSON.stringify(e,null,2)}
1989
- `,expectedVersion:n.version,pluginRoot:n.root}}function $i(s,e){let t=`${s}.${process.pid}.${Date.now()}.tmp`;try{K.writeFileSync(t,e,"utf8"),K.renameSync(t,s)}finally{try{K.existsSync(t)&&K.unlinkSync(t)}catch{}}}function cs(){return G.resolve(process.env.CODEX_HOME||G.join(rs.homedir(),".codex"))}function Li(s,e,t){let n=G.resolve(s),r=G.resolve(e),i=G.relative(n,r);if(!i||!i.startsWith("..")&&!G.isAbsolute(i))throw new Error(`Codex \u63D2\u4EF6\u76EE\u6807\u76EE\u5F55\u4E0D\u80FD\u4F4D\u4E8E npm \u5305\u5185\u90E8\uFF1A${r}`);if(K.existsSync(r)){let d=Xn(r,"\u73B0\u6709 Microi Codex \u63D2\u4EF6"),u=[dn,ss];if(d.name!==Ie||!u.includes(d.packageName))throw new Error(`\u76EE\u6807\u76EE\u5F55\u5305\u542B\u975E Microi \u7BA1\u7406\u7684\u63D2\u4EF6\uFF0C\u62D2\u7EDD\u8986\u76D6\uFF1A${r}`)}let o=G.dirname(r);K.mkdirSync(o,{recursive:!0});let a=`${process.pid}-${Date.now()}`,c=G.join(o,`.microi-staging-${a}`),l=G.join(o,`.microi-backup-${a}`),g=!1;try{K.cpSync(n,c,{recursive:!0,errorOnExist:!0});let d=Xn(c,"\u5F85\u5B89\u88C5 Microi Codex \u63D2\u4EF6");if(d.name!==Ie||d.packageName!==dn||d.version!==t)throw new Error("\u5F85\u5B89\u88C5\u7684 Microi Codex \u63D2\u4EF6\u8EAB\u4EFD\u6216\u7248\u672C\u4E0D\u4E00\u81F4");K.existsSync(r)&&(K.renameSync(r,l),g=!0),K.renameSync(c,r)}catch(d){if(!K.existsSync(r)&&g&&K.existsSync(l))try{K.renameSync(l,r)}catch{}throw d}finally{try{K.existsSync(c)&&K.rmSync(c,{recursive:!0,force:!0})}catch{}}try{K.existsSync(l)&&K.rmSync(l,{recursive:!0,force:!0})}catch{}}function Bi(s,e,t){let n=cs(),r=G.join(n,"microi-net-marketplace"),i=G.join(r,".agents","plugins","marketplace.json"),o=G.join(r,"plugins",Ie);if(K.mkdirSync(G.dirname(i),{recursive:!0}),K.existsSync(i)){let a;try{a=JSON.parse(K.readFileSync(i,"utf8"))}catch(l){throw new Error(`\u5DF2\u5B58\u5728\u7684 Microi marketplace \u65E0\u6CD5\u89E3\u6790\uFF0C\u5DF2\u4FDD\u7559\u539F\u6587\u4EF6\uFF1A${i}\uFF08${l instanceof Error?l.message:String(l)}\uFF09`)}let c=a.plugins?.find(l=>l.name===Ie);if(a.name!==$e||!Oi(c))throw new Error(`\u76EE\u6807\u76EE\u5F55\u5305\u542B\u975E Microi \u7BA1\u7406\u7684 marketplace\uFF0C\u62D2\u7EDD\u8986\u76D6\uFF1A${i}`)}return Li(e,o,t),(!K.existsSync(i)||K.readFileSync(i,"utf8")!==s)&&$i(i,s),r}function Ui(s){let e=s.trim();if(!e||/[\r\n]/.test(e))throw new Error("Codex marketplace source \u65E0\u6548");let t=G.resolve(e);if(K.existsSync(t))return t;if(G.isAbsolute(e)||e.startsWith("."))throw new Error(`Codex marketplace \u672C\u5730\u8DEF\u5F84\u4E0D\u5B58\u5728\uFF1A${t}`);return e}function ln(s,e){let t=Ni(Re(s,["plugin","marketplace","list"]).stdout),n=Fi(Re(s,["plugin","list"]).stdout),r=t.find(u=>u.name===$e),i=n.find(u=>u.selector===Ae),o=t.some(u=>u.name===Ft),a=n.some(u=>u.selector===cn&&/^installed\b/i.test(u.status)),c=!!(i&&/^installed\b/i.test(i.status)),l=!!(i&&/enabled/i.test(i.status)),g=!e||i?.version===e,d=c?l?g?"none":"update":"enable":"install";return{ok:c&&l&&g,codex:{found:!0,command:s.displayPath,version:s.version},marketplace:{name:$e,configured:!!r,root:r?.root||""},plugin:{selector:Ae,installed:c,enabled:l,version:i?.version||"",expectedVersion:e},legacy:{marketplaceConfigured:o,pluginInstalled:a},action:d}}function ls(){let{expectedVersion:s}=as(),e=os();return e?ln(e,s):{ok:!1,codex:{found:!1,command:"",version:""},marketplace:{name:$e,configured:!1,root:""},plugin:{selector:Ae,installed:!1,enabled:!1,version:"",expectedVersion:s},legacy:{marketplaceConfigured:!1,pluginInstalled:!1},action:"install-codex"}}function ds(s={}){let{content:e,expectedVersion:t,pluginRoot:n}=as(),r=os();if(!r)throw new Error("\u672A\u627E\u5230\u53EF\u6267\u884C\u7684 Codex CLI\u3002\u8BF7\u5148\u5B89\u88C5\u6216\u66F4\u65B0 Codex\uFF0C\u518D\u6267\u884C microi codex install --yes");K.mkdirSync(cs(),{recursive:!0});let i=ln(r,t);if(i.ok&&!s.force){i.legacy.pluginInstalled&&Re(r,["plugin","remove",cn]),i.legacy.marketplaceConfigured&&Re(r,["plugin","marketplace","remove",Ft]);let d=i.legacy.pluginInstalled||i.legacy.marketplaceConfigured;return{installed:!0,changed:d,selector:Ae,version:i.plugin.version,migratedFrom:d?Ft:void 0,restartRequired:d}}let o=s.marketplaceSource?Ui(s.marketplaceSource):Bi(e,n,t);i.marketplace.configured||Re(r,["plugin","marketplace","add",o]);let a=ln(r,t);if(!a.marketplace.configured)throw new Error(`Codex \u672A\u80FD\u6CE8\u518C marketplace ${$e}`);let c;s.force&&a.plugin.installed?(Re(r,["plugin","remove",Ae]),c=Re(r,["plugin","add",Ae],!0)):c=Re(r,["plugin","add",Ae],!0);let l=ln(r,t);if(!l.plugin.installed||!l.plugin.enabled){let d=s.force?"--force \u5DF2\u6267\u884C\u663E\u5F0F\u91CD\u88C5\uFF0C\u8BF7\u68C0\u67E5\u4E0A\u65B9\u9519\u8BEF\u540E\u91CD\u8BD5\u3002":"\u539F\u6709\u63D2\u4EF6\u672A\u88AB\u5220\u9664\u3002";throw new Error(`\u5B89\u88C5 ${Ae} \u5931\u8D25\uFF0C${d}${Yn(c)?`
1988
+ ${Yn(n)}`.trim());return n}function Ni(s){let e=[];for(let t of s.split(/\r?\n/)){let n=t.trim().split(/\s{2,}/);n.length<2||n[0]==="MARKETPLACE"||e.push({name:n[0],root:n.slice(1).join(" ")})}return e}function Fi(s){let e=[];for(let t of s.split(/\r?\n/)){let n=t.trim().split(/\s{2,}/);if(n.length<2||n[0]==="PLUGIN"||!n[0].includes("@"))continue;let r=/^not installed$/i.test(n[1]||"");e.push({selector:n[0],status:n[1]||"",version:r?"":n[2]||"",pluginPath:r?n.slice(2).join(" "):n.slice(3).join(" ")})}return e}function Vi(){let e=[G.join(__dirname,"codex-marketplace.json"),G.resolve(__dirname,"..","..","codex","marketplace.npm.json")].find(t=>K.existsSync(t));if(!e)throw new Error("CLI \u7F3A\u5C11 codex-marketplace.json\uFF0C\u8BF7\u91CD\u65B0\u5B89\u88C5\u6700\u65B0\u7248 @microi.net/cli");return e}function Xn(s,e){let t=G.join(s,".codex-plugin","plugin.json"),n=G.join(s,"package.json"),r,i;try{r=JSON.parse(K.readFileSync(t,"utf8")),i=JSON.parse(K.readFileSync(n,"utf8"))}catch(o){throw new Error(`${e}\u8EAB\u4EFD\u6587\u4EF6\u65E0\u6CD5\u89E3\u6790\uFF1A${o instanceof Error?o.message:String(o)}`)}return{name:String(r.name||""),version:String(r.version||""),packageName:String(i.name||"")}}function xi(){let s=[G.resolve(__dirname,".."),G.resolve(__dirname,"..","..","plugins",Ie)];for(let e of s){if(!K.existsSync(G.join(e,".codex-plugin","plugin.json"))||!K.existsSync(G.join(e,"package.json")))continue;let t=Xn(e,"\u5185\u7F6E Microi Agentx \u63D2\u4EF6");if(t.name===Ie&&t.packageName===dn&&t.version)return{root:e,version:t.version}}throw new Error("CLI \u7F3A\u5C11\u5B8C\u6574\u7684 Microi Agentx \u63D2\u4EF6\u6587\u4EF6\uFF0C\u8BF7\u91CD\u65B0\u5B89\u88C5\u6700\u65B0\u7248 @microi.net/cli")}function Oi(s){if(!s||s.name!==Ie)return!1;if(s.source?.source==="local")return String(s.source.path||"").replace(/\\/g,"/").replace(/^\.\//,"")==="plugins/microi";let e=[dn,ss];return s.source?.source==="npm"&&e.includes(s.source.package||"")}function as(){let s=K.readFileSync(Vi(),"utf8"),e;try{e=JSON.parse(s)}catch(r){throw new Error(`Codex marketplace \u6A21\u677F\u65E0\u6CD5\u89E3\u6790\uFF1A${r instanceof Error?r.message:String(r)}`)}let t=e.plugins?.find(r=>r.name===Ie);if(e.name!==$e||t?.source?.source!=="local"||String(t.source.path||"").replace(/\\/g,"/").replace(/^\.\//,"")!=="plugins/microi")throw new Error("Codex marketplace \u6A21\u677F\u8EAB\u4EFD\u4E0D\u5408\u6CD5\uFF0C\u62D2\u7EDD\u5199\u5165\u5168\u5C40\u914D\u7F6E");let n=xi();return{manifest:e,content:`${JSON.stringify(e,null,2)}
1989
+ `,expectedVersion:n.version,pluginRoot:n.root}}function $i(s,e){let t=`${s}.${process.pid}.${Date.now()}.tmp`;try{K.writeFileSync(t,e,"utf8"),K.renameSync(t,s)}finally{try{K.existsSync(t)&&K.unlinkSync(t)}catch{}}}function cs(){return G.resolve(process.env.CODEX_HOME||G.join(rs.homedir(),".codex"))}function Li(s,e,t){let n=G.resolve(s),r=G.resolve(e),i=G.relative(n,r);if(!i||!i.startsWith("..")&&!G.isAbsolute(i))throw new Error(`Codex \u63D2\u4EF6\u76EE\u6807\u76EE\u5F55\u4E0D\u80FD\u4F4D\u4E8E npm \u5305\u5185\u90E8\uFF1A${r}`);if(K.existsSync(r)){let d=Xn(r,"\u73B0\u6709 Microi Agentx \u63D2\u4EF6"),u=[dn,ss];if(d.name!==Ie||!u.includes(d.packageName))throw new Error(`\u76EE\u6807\u76EE\u5F55\u5305\u542B\u975E Microi \u7BA1\u7406\u7684\u63D2\u4EF6\uFF0C\u62D2\u7EDD\u8986\u76D6\uFF1A${r}`)}let o=G.dirname(r);K.mkdirSync(o,{recursive:!0});let a=`${process.pid}-${Date.now()}`,c=G.join(o,`.microi-staging-${a}`),l=G.join(o,`.microi-backup-${a}`),g=!1;try{K.cpSync(n,c,{recursive:!0,errorOnExist:!0});let d=Xn(c,"\u5F85\u5B89\u88C5 Microi Agentx \u63D2\u4EF6");if(d.name!==Ie||d.packageName!==dn||d.version!==t)throw new Error("\u5F85\u5B89\u88C5\u7684 Microi Agentx \u63D2\u4EF6\u8EAB\u4EFD\u6216\u7248\u672C\u4E0D\u4E00\u81F4");K.existsSync(r)&&(K.renameSync(r,l),g=!0),K.renameSync(c,r)}catch(d){if(!K.existsSync(r)&&g&&K.existsSync(l))try{K.renameSync(l,r)}catch{}throw d}finally{try{K.existsSync(c)&&K.rmSync(c,{recursive:!0,force:!0})}catch{}}try{K.existsSync(l)&&K.rmSync(l,{recursive:!0,force:!0})}catch{}}function Bi(s,e,t){let n=cs(),r=G.join(n,"microi-net-marketplace"),i=G.join(r,".agents","plugins","marketplace.json"),o=G.join(r,"plugins",Ie);if(K.mkdirSync(G.dirname(i),{recursive:!0}),K.existsSync(i)){let a;try{a=JSON.parse(K.readFileSync(i,"utf8"))}catch(l){throw new Error(`\u5DF2\u5B58\u5728\u7684 Microi marketplace \u65E0\u6CD5\u89E3\u6790\uFF0C\u5DF2\u4FDD\u7559\u539F\u6587\u4EF6\uFF1A${i}\uFF08${l instanceof Error?l.message:String(l)}\uFF09`)}let c=a.plugins?.find(l=>l.name===Ie);if(a.name!==$e||!Oi(c))throw new Error(`\u76EE\u6807\u76EE\u5F55\u5305\u542B\u975E Microi \u7BA1\u7406\u7684 marketplace\uFF0C\u62D2\u7EDD\u8986\u76D6\uFF1A${i}`)}return Li(e,o,t),(!K.existsSync(i)||K.readFileSync(i,"utf8")!==s)&&$i(i,s),r}function Ui(s){let e=s.trim();if(!e||/[\r\n]/.test(e))throw new Error("Codex marketplace source \u65E0\u6548");let t=G.resolve(e);if(K.existsSync(t))return t;if(G.isAbsolute(e)||e.startsWith("."))throw new Error(`Codex marketplace \u672C\u5730\u8DEF\u5F84\u4E0D\u5B58\u5728\uFF1A${t}`);return e}function ln(s,e){let t=Ni(Re(s,["plugin","marketplace","list"]).stdout),n=Fi(Re(s,["plugin","list"]).stdout),r=t.find(u=>u.name===$e),i=n.find(u=>u.selector===Ae),o=t.some(u=>u.name===Ft),a=n.some(u=>u.selector===cn&&/^installed\b/i.test(u.status)),c=!!(i&&/^installed\b/i.test(i.status)),l=!!(i&&/enabled/i.test(i.status)),g=!e||i?.version===e,d=c?l?g?"none":"update":"enable":"install";return{ok:c&&l&&g,codex:{found:!0,command:s.displayPath,version:s.version},marketplace:{name:$e,configured:!!r,root:r?.root||""},plugin:{selector:Ae,installed:c,enabled:l,version:i?.version||"",expectedVersion:e},legacy:{marketplaceConfigured:o,pluginInstalled:a},action:d}}function ls(){let{expectedVersion:s}=as(),e=os();return e?ln(e,s):{ok:!1,codex:{found:!1,command:"",version:""},marketplace:{name:$e,configured:!1,root:""},plugin:{selector:Ae,installed:!1,enabled:!1,version:"",expectedVersion:s},legacy:{marketplaceConfigured:!1,pluginInstalled:!1},action:"install-codex"}}function ds(s={}){let{content:e,expectedVersion:t,pluginRoot:n}=as(),r=os();if(!r)throw new Error("\u672A\u627E\u5230\u53EF\u6267\u884C\u7684 Codex CLI\u3002\u8BF7\u5148\u5B89\u88C5\u6216\u66F4\u65B0 Codex\uFF0C\u518D\u6267\u884C microi codex install --yes");K.mkdirSync(cs(),{recursive:!0});let i=ln(r,t);if(i.ok&&!s.force){i.legacy.pluginInstalled&&Re(r,["plugin","remove",cn]),i.legacy.marketplaceConfigured&&Re(r,["plugin","marketplace","remove",Ft]);let d=i.legacy.pluginInstalled||i.legacy.marketplaceConfigured;return{installed:!0,changed:d,selector:Ae,version:i.plugin.version,migratedFrom:d?Ft:void 0,restartRequired:d}}let o=s.marketplaceSource?Ui(s.marketplaceSource):Bi(e,n,t);i.marketplace.configured||Re(r,["plugin","marketplace","add",o]);let a=ln(r,t);if(!a.marketplace.configured)throw new Error(`Codex \u672A\u80FD\u6CE8\u518C marketplace ${$e}`);let c;s.force&&a.plugin.installed?(Re(r,["plugin","remove",Ae]),c=Re(r,["plugin","add",Ae],!0)):c=Re(r,["plugin","add",Ae],!0);let l=ln(r,t);if(!l.plugin.installed||!l.plugin.enabled){let d=s.force?"--force \u5DF2\u6267\u884C\u663E\u5F0F\u91CD\u88C5\uFF0C\u8BF7\u68C0\u67E5\u4E0A\u65B9\u9519\u8BEF\u540E\u91CD\u8BD5\u3002":"\u539F\u6709\u63D2\u4EF6\u672A\u88AB\u5220\u9664\u3002";throw new Error(`\u5B89\u88C5 ${Ae} \u5931\u8D25\uFF0C${d}${Yn(c)?`
1990
1990
  ${Yn(c)}`:""}`.trim())}if(l.plugin.version!==t)throw new Error(`\u5F53\u524D\u5DF2\u5B89\u88C5 ${l.plugin.version||"\u672A\u77E5\u7248\u672C"}\uFF0C\u76EE\u6807\u63D2\u4EF6\u5FEB\u7167\u4E3A ${t}\u3002\u8BF7\u4F7F\u7528 --force \u663E\u5F0F\u91CD\u88C5\u3002`);let g=i.legacy.pluginInstalled?cn:"";return i.legacy.pluginInstalled&&Re(r,["plugin","remove",cn]),i.legacy.marketplaceConfigured&&Re(r,["plugin","marketplace","remove",Ft]),{installed:!0,changed:!0,selector:Ae,version:l.plugin.version,marketplace:$e,marketplaceSource:o,migratedFrom:g||void 0,restartRequired:!0,next:"\u65B0\u5EFA Codex \u4EFB\u52A1\u6216\u91CD\u8F7D Codex\uFF0C\u4F7F\u63D2\u4EF6 Skills \u4E0E MCP \u751F\u6548\u3002"}}var nr=B(require("child_process")),ke=B(require("fs")),un=B(require("os")),Z=B(require("path")),Fe="@microi.net/cli",ji=["web","headless"],Ki="https://registry.npmjs.org/";function gn(s){try{let e=JSON.parse(ke.readFileSync(s,"utf8"));return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}catch{return}}function Ne(s){return s&&typeof s=="object"&&!Array.isArray(s)?s:void 0}function us(){let s=[Z.resolve(__dirname,".."),Z.resolve(__dirname,"..","..","plugins","microi")];for(let e of s){let t=gn(Z.join(e,"package.json")),n=Ne(t?.dsh),r=Ne(n?.bundle),i=String(r?.patch||""),o=String(t?.version||"");if(!(t?.name!==Fe||!o||i!=="./cordis.patch.yml")&&ke.existsSync(Z.join(e,"cordis.patch.yml")))return{root:e,version:o,patch:i}}throw new Error("CLI \u7F3A\u5C11\u5B8C\u6574\u7684 Microi DeepSeek Harness bundle\uFF0C\u8BF7\u91CD\u65B0\u5B89\u88C5\u6700\u65B0\u7248 @microi.net/cli")}function Hi(s){let e=Z.extname(s).toLowerCase();return e===".js"||e===".cjs"||e===".mjs"?{command:process.execPath,prefixArgs:[s],displayPath:s}:process.platform==="win32"&&(e===".cmd"||e===".bat")?{command:process.env.ComSpec||"cmd.exe",prefixArgs:["/d","/s","/c",s],displayPath:s}:{command:s,prefixArgs:[],displayPath:s}}function gs(s,e,t=3e4){let n=nr.spawnSync(s.command,[...s.prefixArgs,...e],{cwd:process.cwd(),encoding:"utf8",windowsHide:!0,timeout:t,maxBuffer:33554432,env:{...process.env}});return{status:typeof n.status=="number"?n.status:1,stdout:String(n.stdout||""),stderr:[n.error?.message,n.stderr].filter(Boolean).join(`
1991
1991
  `)}}function Wi(){let s=String(process.env.MICROI_DSH_PATH||"").trim();if(s){let n=Z.resolve(s);if(!ke.existsSync(n))throw new Error(`MICROI_DSH_PATH \u6307\u5411\u7684\u6587\u4EF6\u4E0D\u5B58\u5728\uFF1A${n}`);return[n]}let e=process.platform==="win32"?[["where.exe",["dsh.exe"]],["where.exe",["dsh.cmd"]],["where.exe",["dsh"]]]:[["which",["dsh"]]],t=[];for(let[n,r]of e){let i=nr.spawnSync(n,r,{encoding:"utf8",windowsHide:!0,timeout:3e3});i.status===0&&t.push(...String(i.stdout||"").split(/\r?\n/).map(o=>o.trim()).filter(Boolean))}return process.platform!=="win32"&&t.push("dsh"),[...new Map(t.map(n=>[process.platform==="win32"?n.toLowerCase():n,n])).values()]}function ps(){for(let s of Wi()){if(Z.isAbsolute(s)&&!ke.existsSync(s))continue;let e=Hi(s),t=gs(e,["--version"],5e3);if(t.status!==0)continue;let n=t.stdout.trim()||t.stderr.trim();if(n)return{...e,version:n}}}function Gi(s){return s==="~"?un.homedir():s.startsWith("~/")||s.startsWith("~\\")?Z.join(un.homedir(),s.slice(2)):s}function er(){let s=String(process.env.DSH_HOME||"").trim();return Z.resolve(Gi(s||Z.join(un.homedir(),".dsh")))}function zi(s){let e=s.trim();if(!e||e==="."||e===".."||e==="node_modules"||/[/\\]/.test(e))throw new Error(`DeepSeek Harness profile \u540D\u79F0\u65E0\u6548\uFF1A${JSON.stringify(s)}`);return e}function ms(s){return s?[zi(s)]:[...ji]}function Ji(s,e){if(!e)return;let t=Z.resolve(s,e),n=Z.relative(s,t);if(!(!n||n.startsWith("..")||Z.isAbsolute(n)))return t}function tr(s,e,t){let n=Z.join(s,"profiles",e),r=gn(Z.join(n,"package.json")),i=Ne(r?.dependencies),o=Ne(r?.dsh),a=Ne(o?.profile),c=Array.isArray(a?.bundles)?a?.bundles.map(String):[],l=Z.join(n,"node_modules","@microi.net","cli"),g=gn(Z.join(l,"package.json")),d=Ne(g?.dsh),u=Ne(d?.bundle),p=String(u?.patch||""),m=Ji(l,p),f=!!r,y=typeof i?.[Fe]=="string",S=g?.name===Fe,h=S?String(g?.version||""):"",C=c.includes(Fe),T=p==="./cordis.patch.yml"&&!!(m&&ke.existsSync(m)),b=h===t;return{profile:e,profileDir:n,initialized:f,dependencyDeclared:y,installed:S,active:C,installedVersion:h,expectedVersion:t,bundlePatch:p,bundlePatchExists:T,ok:f&&y&&S&&C&&T&&b,action:!S||!y?"install":!b||!T?"update":C?"none":"activate"}}function qi(s,e){let t=us(),n=er(),r=e.map(o=>tr(n,o,t.version)),i=s?r.some(o=>o.action==="install")?"install":r.some(o=>o.action==="update")?"update":r.some(o=>o.action==="activate")?"activate":"none":"install-dsh";return{ok:!!s&&r.every(o=>o.ok),dsh:{found:!!s,command:s?.displayPath||"",version:s?.version||"",home:n},package:{name:Fe,expectedVersion:t.version,bundlePatch:t.patch},profiles:r,action:i,requiresNewSession:i!=="none"&&i!=="install-dsh"}}function fs(s){return qi(ps(),ms(s))}function Qi(s){let e=Z.resolve(s);if(!ke.existsSync(e))throw new Error(`DeepSeek Harness bundle \u672C\u5730\u6765\u6E90\u4E0D\u5B58\u5728\uFF1A${e}`);if(!ke.statSync(e).isDirectory()){if(!/\.(?:tgz|tar\.gz)$/i.test(e))throw new Error("DeepSeek Harness bundle --source \u53EA\u63A5\u53D7\u672C\u5730\u76EE\u5F55\u6216 .tgz/.tar.gz");return e}let t=[e,Z.join(e,"plugins","microi")];for(let n of t){let r=gn(Z.join(n,"package.json")),i=Ne(r?.dsh),o=Ne(i?.bundle);if(r?.name===Fe&&o?.patch==="./cordis.patch.yml"&&ke.existsSync(Z.join(n,"cordis.patch.yml")))return n}throw new Error(`\u672C\u5730\u6765\u6E90\u4E0D\u662F\u5B8C\u6574\u7684 ${Fe} DeepSeek Harness bundle\uFF1A${e}`)}function Yi(s){return[s.stderr,s.stdout].filter(Boolean).join(`
1992
1992
  `).trim().slice(0,5e3)}function hs(s={}){let e=ps();if(!e)throw new Error("\u672A\u68C0\u6D4B\u5230 DeepSeek Harness dsh CLI\uFF1B\u8BF7\u5148\u6267\u884C npm install -g @deepseek-ai/dsh\uFF0C\u518D\u91CD\u8BD5 microi dsh install");let t=us(),n=ms(s.profile),r=s.source?Qi(s.source):"",i=r||`${Fe}@${t.version}`,o=[];for(let c of n){let l=tr(er(),c,t.version);if(l.ok&&!s.force){o.push({...l,changed:!1});continue}let g=["plugin","--profile",c,"add",i,"--save-exact",...r?[]:[`--registry=${Ki}`]],d=gs(e,g,5*6e4);if(d.status!==0)throw new Error(`DeepSeek Harness profile ${c} \u5B89\u88C5 Microi bundle \u5931\u8D25\uFF1A${Yi(d)||`exit ${d.status}`}`);let u=tr(er(),c,t.version);if(!u.ok)throw new Error(`DeepSeek Harness profile ${c} \u5B89\u88C5\u540E\u6821\u9A8C\u5931\u8D25\uFF08action=${u.action}\uFF0Cversion=${u.installedVersion||"missing"}\uFF09`);o.push({...u,changed:!0})}let a=o.some(c=>c.changed);return{ok:!0,package:`${Fe}@${t.version}`,source:i,profiles:o,requiresNewSession:a,message:a?"Microi\u543E\u7801\u5DF2\u5B89\u88C5\u4E3A DeepSeek Harness profile bundle\uFF1B\u8BF7\u65B0\u5EFA DSH \u4F1A\u8BDD\u52A0\u8F7D\u65B0\u589E MCP \u5DE5\u5177\uFF0C\u5F53\u524D\u4F1A\u8BDD\u4E0D\u4F1A\u88AB\u7EC8\u6B62\u3002":"DeepSeek Harness \u4E2D\u7684 Microi\u543E\u7801 bundle \u5DF2\u662F\u5F53\u524D\u7248\u672C\uFF0C\u65E0\u9700\u6539\u52A8\u3002"}}var pn=B(require("crypto")),$=B(require("fs")),Ot=B(require("os")),U=B(require("path"));function rr(s){return s.normalize("NFKD").replace(/[^\x00-\x7F]/g,"").replace(/[^A-Za-z0-9_]+/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"").toLowerCase().slice(0,48)}function Ss(s){try{return rr(new URL(s.apiBaseUrl.trim().replace(/\/+$/,"")).host)}catch{return rr(s.apiBaseUrl)}}function ys(s){return rr(s.osClient||s.sysShortTitle||s.sysTitle||s.label||"")||Ss(s)||"default"}function lt(s){let e=new Map;for(let r of s){let i=ys(r);e.set(i,(e.get(i)||0)+1)}let t=new Set(Array.from(e).filter(([,r])=>r>1).map(([r])=>r)),n=new Set;return s.map(r=>{let i=Ss(r),o=ys(r),a=`microi_${o}`,c=t.has(o)&&i&&i!==o?`${a}_${i}`:a;n.has(c)&&i&&(c=`${a}_${i}`);let l=2;for(;n.has(c);)c=`${a}_${l++}`;return n.add(c),{profile:r,mcpName:c}})}var Vt="";function Le(){if(Vt)return Vt;try{let s=JSON.parse($.readFileSync(U.join(__dirname,"..","package.json"),"utf8"));Vt=/^\d+(?:\.\d+){2}$/.test(String(s.version||""))?String(s.version):"0.0.0"}catch{Vt="0.0.0"}return Vt}function Xi(s){return s.trim().replace(/\/+$/,"")}function Zi(){let s=`MCP:${Ot.hostname()||"Unknown"}`;return/^[\x20-\x7E]{1,128}$/.test(s)?s:`MCP-${pn.createHash("sha256").update(s).digest("hex").slice(0,16)}`}function ws(s){let e=U.basename(s).toLowerCase();return!!process.versions.electron||["code.exe","code - insiders.exe","cursor.exe","windsurf.exe","trae.exe","electron.exe"].includes(e)}function eo(){return{command:process.execPath,isElectron:ws(process.execPath)}}function to(s,e){let t=e.env;return/^microi(?:_|-|$)/i.test(s)||typeof t?.MICROI_API_URL=="string"}function Ts(s,e){let t=`${s}.${process.pid}.${Date.now()}.tmp`;try{$.writeFileSync(t,e,"utf8"),$.renameSync(t,s)}finally{try{$.existsSync(t)&&$.unlinkSync(t)}catch{}}}function _e(s,e){if($.existsSync(s)&&$.readFileSync(s).equals(e))return;$.mkdirSync(U.dirname(s),{recursive:!0});let t=`${process.pid}.${Date.now()}.${pn.randomBytes(4).toString("hex")}`,n=`${s}.${t}.stage`,r=`${s}.${t}.backup`,i=!1;try{$.writeFileSync(n,e),$.existsSync(s)&&($.renameSync(s,r),i=!0),$.renameSync(n,s),i&&$.rmSync(r,{force:!0})}catch(o){if(!$.existsSync(s)&&i&&$.existsSync(r))try{$.renameSync(r,s)}catch{}throw o}finally{try{$.existsSync(n)&&$.rmSync(n,{force:!0})}catch{}}}function no(){let s=Le();if(!/^\d+(?:\.\d+){2}$/.test(s))throw new Error(`CLI \u7248\u672C\u4E0D\u5408\u6CD5\uFF0C\u65E0\u6CD5\u521B\u5EFA MCP \u8FD0\u884C\u65F6\uFF1A${s}`);let e={launcher:U.join(__dirname,"microi-cli-mcp.js"),server:U.join(__dirname,"mcp-server.js"),adapter:U.join(__dirname,"mcp-codex-stdio-adapter.js"),router:U.join(__dirname,"microi-codex-router.js"),broker:U.join(__dirname,"microi-codex-broker.js"),cli:U.join(__dirname,"microi-cli.js"),trae:U.join(__dirname,"mcp-trae-windows-launcher.cmd")},t=Object.values(e).filter(u=>!$.existsSync(u));if(t.length>0)throw new Error(`CLI \u5B89\u88C5\u5305\u7F3A\u5C11\u5185\u7F6E MCP \u8FD0\u884C\u6587\u4EF6\uFF1A${t.join(", ")}`);let n=U.resolve(process.env.MICROI_RUNTIME_HOME||U.join(Ot.homedir(),".microi","runtime")),r=U.join(n,"versions"),i=U.join(r,s);$.mkdirSync(i,{recursive:!0}),_e(U.join(i,"microi-cli-mcp.js"),$.readFileSync(e.launcher)),_e(U.join(i,"mcp-server.js"),$.readFileSync(e.server)),_e(U.join(i,"microi-codex-router.js"),$.readFileSync(e.router)),_e(U.join(i,"microi-codex-broker.js"),$.readFileSync(e.broker)),_e(U.join(i,"microi-cli.js"),$.readFileSync(e.cli));let o=`#!/usr/bin/env node