@bangdao-ai/acw-tools 1.13.56 → 1.13.59

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/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ACW工具集",
3
3
  "description": "ACW平台工具集:智能下载规则/技能到项目、上传技能到Skills广场、搜索技能、检查技能更新、上传/下载/检索个人知识库",
4
- "version": "1.13.56",
4
+ "version": "1.13.59",
5
5
  "author": "邦道科技 - 产品技术中心",
6
6
  "homepage": "https://www.npmjs.com/package/@bangdao-ai/acw-tools",
7
7
  "repository": "https://www.npmjs.com/package/@bangdao-ai/acw-tools?activeTab=readme",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bangdao-ai/acw-tools",
3
- "version": "1.13.56",
3
+ "version": "1.13.59",
4
4
  "type": "module",
5
5
  "description": "MCP (Model Context Protocol) tools for ACW - download rules and initialize Common Admin projects",
6
6
  "main": "index.js",
package/postinstall.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- function _0x4020(_0x5548ba,_0x396760){_0x5548ba=_0x5548ba-0x1ea;const _0x264faa=_0x264f();let _0x402048=_0x264faa[_0x5548ba];return _0x402048;}const _0x456c6d=_0x4020;(function(_0x595234,_0x2fb3b9){const _0x381048=_0x4020,_0x4695b4=_0x595234();while(!![]){try{const _0x53200c=-parseInt(_0x381048(0x256))/0x1*(-parseInt(_0x381048(0x230))/0x2)+parseInt(_0x381048(0x204))/0x3*(-parseInt(_0x381048(0x24d))/0x4)+parseInt(_0x381048(0x1fe))/0x5+parseInt(_0x381048(0x217))/0x6+parseInt(_0x381048(0x239))/0x7*(parseInt(_0x381048(0x229))/0x8)+parseInt(_0x381048(0x237))/0x9*(parseInt(_0x381048(0x1f7))/0xa)+-parseInt(_0x381048(0x22a))/0xb*(parseInt(_0x381048(0x257))/0xc);if(_0x53200c===_0x2fb3b9)break;else _0x4695b4['push'](_0x4695b4['shift']());}catch(_0x1a499b){_0x4695b4['push'](_0x4695b4['shift']());}}}(_0x264f,0xbccc1));import _0x72d684 from'fs';import _0x3c49b4 from'path';import{fileURLToPath as _0x8f04a8}from'url';import{execSync as _0x4b2119}from'child_process';import _0x30e659 from'https';import _0x2365f0 from'http';import _0x55b239 from'zlib';var C='12.4.1',L=_0x456c6d(0x1f4),F={0x12:_0x456c6d(0x24c),0x13:_0x456c6d(0x1f3),0x14:_0x456c6d(0x21e),0x15:'120',0x16:'127',0x17:_0x456c6d(0x1ec),0x18:_0x456c6d(0x24a),0x19:'137'},$=['115',_0x456c6d(0x1eb),'131','137'],I=parseInt(process[_0x456c6d(0x20b)][_0x456c6d(0x205)](0x1)['split']('.')[0x0],0xa),T=((()=>{const _0x1487b1=_0x456c6d;let _0x50ef82=process['version'][_0x1487b1(0x205)](0x1)[_0x1487b1(0x218)]('.');return parseInt(_0x50ef82[0x1]||'0',0xa);})());function x(){return I>0x16||I===0x16&&T>=0x5;}function P(){const _0x29369d=_0x456c6d;console[_0x29369d(0x224)](''),console['log'](_0x29369d(0x1fa)),console['log']('[提示]\x20【本包为什么要动\x20SQLite】需要读取\x20Cursor\x20本地的\x20state.vscdb(对话与\x20composer\x20数据)。'),console[_0x29369d(0x224)](_0x29369d(0x244)),console['log']('[提示]\x20\x20\x20该版本起\x20Node\x20内置「node:sqlite」,安装时无需\x20better-sqlite3,Windows\x20上可避免出现「模块编译失败」。'),console['log']('[提示]\x20【你当前的情况】当前为\x20'+process['version']+_0x29369d(0x1f2)),console[_0x29369d(0x224)](_0x29369d(0x20d)),console[_0x29369d(0x224)](_0x29369d(0x23c)),console['log']('[提示]\x20\x20\x20·\x20任意系统:执行\x20npx\x20的\x20Node\x20版本与当初编译该模块的\x20Node\x20ABI\x20不一致(报\x20NODE_MODULE_VERSION\x20/\x20was\x20compiled\x20against);'),console['log']('[提示]\x20\x20\x20·\x20公司网络拦截导致预编译包下载失败,被迫本地编译但本机无工具链。'),console['log'](_0x29369d(0x235)),console[_0x29369d(0x224)](_0x29369d(0x1fa)),console[_0x29369d(0x224)]('');}function y(){const _0x5adc0d=_0x456c6d;console[_0x5adc0d(0x236)](''),console['error'](_0x5adc0d(0x226)),console['error'](_0x5adc0d(0x225)),console[_0x5adc0d(0x236)]('根因:它需要与本机\x20Node\x20版本匹配的\x20C++\x20二进制;Windows\x20上缺\x20VS\x20Build\x20Tools\x20时极易报错。'),console['error'](_0x5adc0d(0x221)),console[_0x5adc0d(0x236)]('package.json\x20中\x20engines\x20为\x20node>=20;要免编译、少踩坑,请以\x2022.5+\x20为准。'),console[_0x5adc0d(0x236)](_0x5adc0d(0x23e));}function b(){const _0x5745a5=_0x456c6d;let _0x412d35=parseInt(process[_0x5745a5(0x20b)][_0x5745a5(0x205)](0x1)['split']('.')[0x0],0xa);return F[_0x412d35]||process[_0x5745a5(0x24f)][_0x5745a5(0x243)];}function _0x264f(){const _0x32bf2d=['message','utf8','[INFO]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','includes','1105200qOMqpM','split','[步骤]\x20执行自动\x20npm\x20rebuild\x20better-sqlite3(本机源码编译)','stderr','basename','[结论]\x20报错形态不像典型原生模块加载问题,未自动执行\x20OSS\x20/\x20rebuild,请根据完整堆栈排查。','unknown','115','https','(ABI\x20v','建议:将运行「npx\x20@bangdao-ai/acw-tools」的\x20Node\x20升级到\x2022.5\x20及以上,本包将改用内置\x20SQLite,一般不再需要编译。','platform','[OK]\x20better-sqlite3\x20修复成功(OSS\x20预编译)','log','本步骤失败,几乎总是「可选依赖\x20better-sqlite3」的原生模块无法在您当前环境加载或编译。','──────────\x20给用户的说明(安装失败)──────────','test','unshift','8jHUXuu','13400167IDnwMs','readFileSync','warn','MODULE_NOT_FOUND','node_modules','dirname','35046tGoCQH','default','\x20\x202)\x20若必须留在旧\x20Node:安装\x20C++\x20工具链后在包根目录执行\x20npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts;','env','[INFO]\x20当前\x20Node\x20','[提示]\x20【解决办法优先级】①\x20将运行\x20npx\x20的\x20Node\x20升级到\x2022.5+(最省事);②\x20安装对应系统的\x20C++\x20编译环境后再装本包;③\x20确保\x20Cursor\x20/\x20终端使用同一份\x20Node,避免\x20ABI\x20混用。','error','9IYtIKT','\x20满足「内置\x20SQLite」路径:对话抓取不依赖\x20better-sqlite3,Windows\x20上无需\x20VS\x20Build\x20Tools\x20即可避免「模块编译失败」。','10293227opCrZq','length',')\x20|\x20','[提示]\x20\x20\x20·\x20Windows:未安装\x20Visual\x20Studio\x20Build\x20Tools(缺\x20cl.exe),node-gyp\x20无法编译;','push','────────────────────────────────────────────','startsWith','[原因]\x20首次加载失败(动态\x20import):\x20','[提示]\x20当前通过\x20better-sqlite3\x20完成检查。若希望免去原生依赖,可将\x20Node\x20升级到\x2022.5\x20及以上。','writeFileSync','modules','[提示]\x20【推荐环境】请使用\x20Node.js\x2022.5\x20及以上(LTS\x2022\x20的最新小版本即可)。','[INFO]\x20下载成功\x20(','headers','[OK]\x20npm\x20rebuild\x20成功,better-sqlite3\x20已可加载','better-sqlite3','──────────\x20诊断摘要(请整段复制给支持人员或\x20Cursor)──────────','137','join','108','8WoSBWZ','node:sqlite','versions',',平台=','statusCode','toLowerCase','arch','[OK]\x20已检测到\x20Node\x20内置\x20node:sqlite,安装检查通过。','[OK]\x20安装完成','3rPGeLz','12YHvNcP','[INFO]\x20(需本机已有\x20C++\x20构建环境;Windows\x20为\x20VS\x20Build\x20Tools,macOS\x20为\x20Xcode\x20CLT,Linux\x20为\x20build-essential)','127','131','trim','我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:','catch','timeout','concat',',未检测到可用的内置\x20node:sqlite(或运行时被禁用),因此走可选依赖\x20better-sqlite3。','111','https://bd-acw.oss-cn-beijing.aliyuncs.com/prebuilds/better-sqlite3','[步骤]\x20OSS\x20预编译后子进程校验仍失败:\x20','[ERROR]\x20postinstall\x20脚本执行出错:','3626710lRKdrP','。优先请把运行\x20npx\x20的\x20Node\x20升级到\x2022.5\x20以上(免装\x20VS\x20Build\x20Tools)。否则请安装\x20Visual\x20Studio\x20Build\x20Tools\x20后再\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools。','\x20\x203)\x20再执行\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools。','[提示]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','object','cwd','close','3295865BGUDmF','」执行\x20npm\x20rebuild\x20better-sqlite3','better_sqlite3','darwin','[INFO]\x20预编译包已安装,重新测试...','[原因]\x20当前\x20ABI\x20','1106346YnjRga','slice','...','pipe','.tar.gz','replace','[OK]\x20better-sqlite3\x20加载成功','version','existsSync','[提示]\x20【为什么会编译失败】better-sqlite3\x20含\x20C++\x20扩展(.node\x20文件)。常见原因:','[步骤]\x20npm\x20rebuild:\x20成功','未找到','dlopen','exit','then'];_0x264f=function(){return _0x32bf2d;};return _0x264f();}function E(){const _0xa1eff=_0x456c6d;let _0x554e6e=C,_0x570281=b(),_0x33aad2=process[_0xa1eff(0x222)],_0x26aa78=process['arch'];return'better-sqlite3-v'+_0x554e6e+'-node-v'+_0x570281+'-'+_0x33aad2+'-'+_0x26aa78+_0xa1eff(0x208);}function v(_0x279836){return new Promise((_0x4118af,_0x5dd21f)=>{const _0x2eb904=_0x4020;let _0x3264cd=(_0x279836[_0x2eb904(0x23f)](_0x2eb904(0x21f))?_0x30e659:_0x2365f0)['get'](_0x279836,{'timeout':0x7530},_0x302321=>{const _0x49975c=_0x2eb904;if(_0x302321[_0x49975c(0x251)]===0x12d||_0x302321['statusCode']===0x12e){v(_0x302321[_0x49975c(0x246)]['location'])[_0x49975c(0x212)](_0x4118af)[_0x49975c(0x1ef)](_0x5dd21f);return;}if(_0x302321[_0x49975c(0x251)]!==0xc8){_0x5dd21f(new Error('HTTP\x20'+_0x302321[_0x49975c(0x251)]));return;}let _0x5f51b3=[];_0x302321['on']('data',_0x4ad574=>_0x5f51b3['push'](_0x4ad574)),_0x302321['on']('end',()=>_0x4118af(Buffer[_0x49975c(0x1f1)](_0x5f51b3))),_0x302321['on']('error',_0x5dd21f);});_0x3264cd['on']('error',_0x5dd21f),_0x3264cd['on'](_0x2eb904(0x1f0),()=>{_0x3264cd['destroy'](),_0x5dd21f(new Error('Request\x20timeout'));});});}async function D(_0x2ef245,_0x3a6458){const _0x124bbd=_0x456c6d;let _0x5444d4=_0x55b239['gunzipSync'](_0x2ef245),_0x4971a1=0x200,_0x136d88=0x0;for(;_0x136d88<_0x5444d4['length']-_0x4971a1;){let _0x39c4bb=_0x5444d4['slice'](_0x136d88,_0x136d88+_0x4971a1);if(_0x39c4bb[0x0]===0x0)break;let _0x56cb70=_0x39c4bb['slice'](0x0,0x64)['toString'](_0x124bbd(0x214))[_0x124bbd(0x209)](/\0/g,'')[_0x124bbd(0x1ed)](),_0x50ea68=_0x39c4bb['slice'](0x7c,0x88)['toString']('utf8')[_0x124bbd(0x209)](/\0/g,'')[_0x124bbd(0x1ed)](),_0x1f3ae5=parseInt(_0x50ea68,0x8)||0x0,_0x106ada=String['fromCharCode'](_0x39c4bb[0x9c]);if(_0x136d88+=_0x4971a1,_0x56cb70&&_0x106ada==='0'||_0x106ada==='\x00'){let _0x80f651=_0x5444d4['slice'](_0x136d88,_0x136d88+_0x1f3ae5),_0x44f16f=_0x3c49b4[_0x124bbd(0x24b)](_0x3a6458,_0x3c49b4['basename'](_0x56cb70));_0x72d684['mkdirSync'](_0x3c49b4[_0x124bbd(0x22f)](_0x44f16f),{'recursive':!0x0}),_0x72d684[_0x124bbd(0x242)](_0x44f16f,_0x80f651);}_0x136d88+=Math['ceil'](_0x1f3ae5/_0x4971a1)*_0x4971a1;}}function h(){const _0x59a877=_0x456c6d;let _0x21bb6d=[_0x3c49b4['join'](process[_0x59a877(0x1fc)](),'node_modules',_0x59a877(0x248)),_0x3c49b4['join'](_0x8f04a8(import.meta.url),'..',_0x59a877(0x22e),'better-sqlite3')];try{let _0x28aaba=import.meta.resolve(_0x59a877(0x248));if(_0x28aaba){let _0x281589=_0x8f04a8(_0x28aaba);_0x21bb6d[_0x59a877(0x228)](_0x3c49b4['dirname'](_0x3c49b4['dirname'](_0x281589)));}}catch{}for(let _0x357c64 of _0x21bb6d)if(_0x72d684[_0x59a877(0x20c)](_0x3c49b4['join'](_0x357c64,'package.json')))return _0x357c64;return null;}function N(_0x623f7c){const _0x288a7f=_0x456c6d;if(!_0x623f7c)return null;let _0x1e3d2e=_0x3c49b4[_0x288a7f(0x22f)](_0x623f7c);return _0x3c49b4[_0x288a7f(0x21b)](_0x1e3d2e)==='node_modules'?_0x3c49b4['dirname'](_0x1e3d2e):null;}function B(_0x31ccdb){const _0x4e8e68=_0x456c6d;_0x4b2119('node\x20-e\x20\x22require(\x27better-sqlite3\x27)(\x27:memory:\x27).close()\x22',{'cwd':_0x31ccdb||process['cwd'](),'stdio':_0x4e8e68(0x207),'env':{...process[_0x4e8e68(0x233)]}});}function k(_0x5ce90b){const _0x5d1983=_0x456c6d;let _0x46d956=N(_0x5ce90b);if(!_0x46d956||!_0x72d684['existsSync'](_0x3c49b4['join'](_0x46d956,'package.json')))return console['warn']('[WARN]\x20无法确定\x20npm\x20包根目录,跳过\x20npm\x20rebuild'),!0x1;console['log'](''),console['log'](_0x5d1983(0x215)),console[_0x5d1983(0x224)]('[INFO]\x20自动尝试本地编译:\x20在「'+_0x46d956+_0x5d1983(0x1ff)),console[_0x5d1983(0x224)](_0x5d1983(0x1ea)),console['log'](_0x5d1983(0x215));try{return _0x4b2119('npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts',{'cwd':_0x46d956,'stdio':'inherit','env':{...process[_0x5d1983(0x233)]}}),B(_0x46d956),console[_0x5d1983(0x224)](_0x5d1983(0x247)),!0x0;}catch(_0x18eeff){let _0x5d91ee=_0x18eeff&&typeof _0x18eeff==_0x5d1983(0x1fb)?_0x18eeff:{},_0x576a45=_0x5d91ee[_0x5d1983(0x21a)]?String(_0x5d91ee[_0x5d1983(0x21a)]):'',_0x4b39d3=_0x5d91ee['stdout']?String(_0x5d91ee['stdout']):'',_0x1f8579=_0x576a45||_0x4b39d3||(_0x18eeff&&_0x18eeff['message']?String(_0x18eeff[_0x5d1983(0x213)]):String(_0x18eeff));return console['warn']('[WARN]\x20npm\x20rebuild\x20未成功:\x20'+_0x1f8579[_0x5d1983(0x205)](0x0,0x4b0)+(_0x1f8579[_0x5d1983(0x23a)]>0x4b0?'...':'')),!0x1;}}async function M(){const _0x43fc32=_0x456c6d;let _0x2dbb88=E(),_0x220c70=L+'/v'+C+'/'+_0x2dbb88;console[_0x43fc32(0x224)]('[INFO]\x20尝试从\x20OSS\x20下载预编译包:\x20'+_0x2dbb88);let _0x770fe1=await v(_0x220c70);console['log'](_0x43fc32(0x245)+(_0x770fe1[_0x43fc32(0x23a)]/0x400)['toFixed'](0x1)+'\x20KB)');let _0xec022=h();if(!_0xec022)throw new Error('无法找到\x20better-sqlite3\x20模块路径');let _0x1a9d41=_0x3c49b4['join'](_0xec022,'prebuilds',process['platform']+'-'+process['arch']);return _0x72d684['mkdirSync'](_0x1a9d41,{'recursive':!0x0}),await D(_0x770fe1,_0x1a9d41),console[_0x43fc32(0x224)]('[INFO]\x20预编译包已安装到:\x20'+_0x1a9d41),!0x0;}async function W(){const _0x174b2b=_0x456c6d;let _0x482575=(await import(_0x174b2b(0x248)))[_0x174b2b(0x231)];return new _0x482575(':memory:')[_0x174b2b(0x1fd)](),!0x0;}async function V(){const _0x34d5a5=_0x456c6d;try{let {DatabaseSync:_0x2fd64d}=await import(_0x34d5a5(0x24e));return new _0x2fd64d(':memory:')['close'](),!0x0;}catch{return!0x1;}}((async()=>{const _0x244057=_0x456c6d;try{let _0x2e97b8=_0x8f04a8(import.meta.url),_0x171c55=_0x3c49b4['dirname'](_0x2e97b8),_0x3edea5=_0x244057(0x21d),_0x149751='';try{let _0x466e70=_0x3c49b4['join'](_0x171c55,'package.json');if(_0x72d684[_0x244057(0x20c)](_0x466e70)){let _0x4a2b73=JSON['parse'](_0x72d684[_0x244057(0x22b)](_0x466e70,'utf8'));_0x3edea5=_0x4a2b73['version']||'unknown',_0x149751=typeof _0x4a2b73['acwInstallNote']=='string'?_0x4a2b73['acwInstallNote']:'';}}catch{}console[_0x244057(0x224)]('ACW\x20Tools\x20MCP\x20安装后检查...'),console[_0x244057(0x224)]('v'+_0x3edea5+'\x20|\x20Node\x20'+process[_0x244057(0x20b)]+'\x20(ABI\x20'+b()+_0x244057(0x23b)+process[_0x244057(0x222)]+'/'+process['arch']),_0x149751&&console['log']('[提示]\x20'+_0x149751),await V()&&(console[_0x244057(0x224)](_0x244057(0x254)),console['log']('[提示]\x20当前\x20'+process[_0x244057(0x20b)]+_0x244057(0x238)),x()||console[_0x244057(0x224)]('[提示]\x20说明:检测通过但主版本号低于文档推荐的\x2022.5+,若日后升级\x20Node,请以实际是否仍含\x20node:sqlite\x20为准。'),console['log']('[OK]\x20安装完成'),process['exit'](0x0)),P();let _0x2a7e50=!0x1,_0x4fbaa9=null,_0x4a04c8=[];try{await W(),console[_0x244057(0x224)](_0x244057(0x20a)),_0x2a7e50=!0x0;}catch(_0x1c0201){_0x4fbaa9=_0x1c0201;let _0x264b81=_0x1c0201&&_0x1c0201['message']?String(_0x1c0201['message']):'',_0x358750=_0x264b81[_0x244057(0x252)]();console[_0x244057(0x224)]('[INFO]\x20better-sqlite3\x20原生加载失败:\x20'+_0x264b81),_0x4a04c8[_0x244057(0x23d)](_0x244057(0x240)+_0x264b81[_0x244057(0x205)](0x0,0x1f4)+(_0x264b81[_0x244057(0x23a)]>0x1f4?_0x244057(0x206):'')),(_0x264b81[_0x244057(0x216)]('Cannot\x20find\x20package')||_0x264b81['includes']('ERR_MODULE_NOT_FOUND')||_0x264b81[_0x244057(0x216)](_0x244057(0x22d)))&&_0x4a04c8['push']('[原因]\x20better-sqlite3\x20未安装到位(多为\x20optional\x20依赖下载或编译失败);在\x20Node\x20低于\x2022.5\x20且无内置\x20SQLite\x20时会导致本步失败。');let _0x1de722=_0x264b81['includes']('NODE_MODULE_VERSION')||_0x264b81[_0x244057(0x216)]('was\x20compiled\x20against')||/\.node\b/[_0x244057(0x227)](_0x264b81)||_0x358750['includes'](_0x244057(0x200))||_0x358750[_0x244057(0x216)]('better-sqlite3')||_0x358750[_0x244057(0x216)](_0x244057(0x210))||_0x358750[_0x244057(0x216)]('invalid\x20ELF')||_0x358750['includes']('not\x20a\x20valid\x20win32'),_0x2dc8cf=h(),_0x5dfeeb=N(_0x2dc8cf);if(_0x4a04c8[_0x244057(0x23d)]('[环境]\x20Node='+process['version']+',process.versions.modules='+process['versions']['modules']+',映射\x20ABI='+b()+_0x244057(0x250)+process[_0x244057(0x222)]+'/'+process[_0x244057(0x253)]),_0x4a04c8[_0x244057(0x23d)]('[环境]\x20better-sqlite3\x20路径='+(_0x2dc8cf||_0x244057(0x20f))+',npm\x20包根='+(_0x5dfeeb||'未解析')),!_0x1de722)_0x4a04c8[_0x244057(0x23d)](_0x244057(0x21c));else{let _0x36cd96=b();if(!$[_0x244057(0x216)](_0x36cd96))_0x4a04c8['push'](_0x244057(0x203)+_0x36cd96+'\x20不在\x20OSS\x20预编译列表\x20['+$[_0x244057(0x24b)](',\x20')+'],不会下载预编译包(避免错配二进制)。将尝试本机\x20npm\x20rebuild。'),console[_0x244057(0x224)](_0x244057(0x234)+process[_0x244057(0x20b)]+_0x244057(0x220)+_0x36cd96+')无对应\x20OSS\x20预编译包,跳过\x20OSS,将尝试本机编译');else{_0x4a04c8['push']('[步骤]\x20ABI\x20'+_0x36cd96+'\x20在预编译列表内,尝试\x20OSS:\x20'+E()),console['log']('[INFO]\x20检测到原生模块加载异常,尝试从\x20OSS\x20拉取匹配当前\x20ABI\x20的预编译包...');try{await M(),console[_0x244057(0x224)](_0x244057(0x202));try{let _0x1911c2=N(h())||_0x5dfeeb||process['cwd']();B(_0x1911c2),console[_0x244057(0x224)](_0x244057(0x223)),_0x2a7e50=!0x0,_0x4a04c8[_0x244057(0x23d)]('[步骤]\x20OSS\x20预编译\x20+\x20子进程校验:\x20成功');}catch(_0x251be5){_0x4a04c8[_0x244057(0x23d)](_0x244057(0x1f5)+(_0x251be5['message']||_0x251be5)),console[_0x244057(0x22c)]('[WARN]\x20预编译包安装后测试失败:\x20'+_0x251be5['message']);}}catch(_0x6225){_0x4a04c8['push']('[步骤]\x20OSS\x20下载或解压失败:\x20'+(_0x6225[_0x244057(0x213)]||_0x6225)),console[_0x244057(0x22c)]('[WARN]\x20OSS\x20预编译包下载或解压失败:\x20'+_0x6225['message']);}}!_0x2a7e50&&_0x2dc8cf?(_0x4a04c8[_0x244057(0x23d)](_0x244057(0x219)),k(_0x2dc8cf)?(_0x2a7e50=!0x0,_0x4a04c8[_0x244057(0x23d)](_0x244057(0x20e))):_0x4a04c8[_0x244057(0x23d)]('[步骤]\x20npm\x20rebuild:\x20失败(见上方日志,多为缺少\x20cl.exe\x20/\x20Xcode\x20Command\x20Line\x20Tools\x20/\x20build-essential)')):!_0x2a7e50&&!_0x2dc8cf&&_0x4a04c8['push']('[步骤]\x20未找到\x20better-sqlite3\x20目录,无法执行\x20npm\x20rebuild');}}if(!_0x2a7e50){let _0x1d7ccc=_0x4fbaa9?.['message']||'未知错误';if(y(),console['error'](''),console['error']('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console[_0x244057(0x236)]('[ERROR]\x20better-sqlite3\x20模块加载失败,安装中止'),console['error']('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console['error'](''),console['error'](_0x244057(0x249)),_0x4a04c8['forEach'](_0x2d529a=>console['error'](_0x2d529a)),console['error']('────────────────────────────────────────────────────────────'),console[_0x244057(0x236)](''),console['error']('首错原文:\x20'+_0x1d7ccc),console['error'](''),console[_0x244057(0x236)]('说明:\x20已尝试\x20OSS\x20预编译与\x20npm\x20rebuild。仍失败时:务必把运行\x20npx\x20的\x20Node\x20升到\x2022.5+(内置\x20SQLite,从根上避免本问题)。其余检查:'),console['error']('\x20\x201)\x20终端执行\x20node\x20-v\x20与\x20Cursor\x20调起\x20MCP\x20用的是否为同一\x20Node;'),console['error'](_0x244057(0x232)),console['error'](_0x244057(0x1f9)),console['error'](''),console[_0x244057(0x236)]('复制以下提示词发送给\x20Cursor,让\x20AI\x20帮你修复:'),console['error'](''),process['platform']==='win32'){let _0x1c5232=!0x1;try{_0x4b2119('where\x20cl.exe',{'stdio':'pipe'}),_0x1c5232=!0x0;}catch{}console['error'](_0x1c5232?'我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x1d7ccc+'。优先请把运行\x20npx\x20的\x20Node\x20升级到\x2022.5\x20以上以使用内置\x20SQLite、避免编译。若暂不能升级:已装\x20VS\x20仍失败则执行\x20npm\x20cache\x20clean\x20--force\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。':_0x244057(0x1ee)+_0x1d7ccc+_0x244057(0x1f8));}else process['platform']===_0x244057(0x201)?console['error']('我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x1d7ccc+'。优先将\x20Node\x20升到\x2022.5+。否则\x20xcode-select\x20--install\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。'):console['error'](_0x244057(0x1ee)+_0x1d7ccc+'。优先将\x20Node\x20升到\x2022.5+。否则\x20sudo\x20apt-get\x20install\x20build-essential\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。');console['error'](''),console['error']('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),process[_0x244057(0x211)](0x1);}console['log'](_0x244057(0x241)),console[_0x244057(0x224)](_0x244057(0x255));}catch(_0x19d337){y(),console['error'](_0x244057(0x1f6),_0x19d337[_0x244057(0x213)]),process['exit'](0x1);}})());
2
+ const _0x48f2f3=_0x5948;(function(_0x524cc1,_0x4146d3){const _0x21abd7=_0x5948,_0x196867=_0x524cc1();while(!![]){try{const _0x3d8ff0=parseInt(_0x21abd7(0xa5))/0x1+parseInt(_0x21abd7(0xb8))/0x2+parseInt(_0x21abd7(0xe3))/0x3*(-parseInt(_0x21abd7(0xe6))/0x4)+parseInt(_0x21abd7(0x9b))/0x5+parseInt(_0x21abd7(0xcf))/0x6*(-parseInt(_0x21abd7(0x96))/0x7)+parseInt(_0x21abd7(0xe8))/0x8+-parseInt(_0x21abd7(0xf4))/0x9*(-parseInt(_0x21abd7(0xe0))/0xa);if(_0x3d8ff0===_0x4146d3)break;else _0x196867['push'](_0x196867['shift']());}catch(_0x397fbb){_0x196867['push'](_0x196867['shift']());}}}(_0x419c,0xeb872));import _0x11ecec from'fs';function _0x5948(_0x34c64b,_0x2a1b32){_0x34c64b=_0x34c64b-0x80;const _0x419cfd=_0x419c();let _0x5948e6=_0x419cfd[_0x34c64b];return _0x5948e6;}import _0x48299f from'path';function _0x419c(){const _0x4e8218=['Request\x20timeout','-node-v','arch','ACW\x20Tools\x20MCP\x20安装后检查...','push','statusCode','[WARN]\x20预编译包安装后测试失败:\x20','log','ERR_MODULE_NOT_FOUND','451938iBCFCf','[步骤]\x20OSS\x20预编译\x20+\x20子进程校验:\x20成功','version','basename','。优先请把运行\x20npx\x20的\x20Node\x20升级到\x2022.5\x20以上以使用内置\x20SQLite、避免编译。若暂不能升级:已装\x20VS\x20仍失败则执行\x20npm\x20cache\x20clean\x20--force\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。','[提示]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','message',',process.versions.modules=','[提示]\x20说明:检测通过但主版本号低于文档推荐的\x2022.5+,若日后升级\x20Node,请以实际是否仍含\x20node:sqlite\x20为准。','──────────\x20给用户的说明(安装失败)──────────','首错原文:\x20','\x20在预编译列表内,尝试\x20OSS:\x20',',npm\x20包根=','[OK]\x20npm\x20rebuild\x20成功,better-sqlite3\x20已可加载',')\x20|\x20','env',',映射\x20ABI=','acwInstallNote','data','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','[提示]\x20\x20\x20·\x20Windows:未安装\x20Visual\x20Studio\x20Build\x20Tools(缺\x20cl.exe),node-gyp\x20无法编译;','[INFO]\x20(需本机已有\x20C++\x20构建环境;Windows\x20为\x20VS\x20Build\x20Tools,macOS\x20为\x20Xcode\x20CLT,Linux\x20为\x20build-essential)','未知错误','2451234eHQMOZ','toString','package.json\x20中\x20engines\x20为\x20node>=20;要免编译、少踩坑,请以\x2022.5+\x20为准。','[提示]\x20\x20\x20·\x20公司网络拦截导致预编译包下载失败,被迫本地编译但本机无工具链。','includes','replace','package.json','unshift','prebuilds','close','[步骤]\x20npm\x20rebuild:\x20成功','\x20KB)','unknown','127','[INFO]\x20自动尝试本地编译:\x20在「','────────────────────────────────────────────','dirname','557020OfuBFd','[环境]\x20better-sqlite3\x20路径=','[步骤]\x20未找到\x20better-sqlite3\x20目录,无法执行\x20npm\x20rebuild','270009sKEjtZ','not\x20a\x20valid\x20win32','stdout','36QADBxA','\x20|\x20Node\x20','7213376LiuOTh',')无对应\x20OSS\x20预编译包,跳过\x20OSS,将尝试本机编译','...','inherit','concat','length','无法找到\x20better-sqlite3\x20模块路径','join','destroy','win32','本步骤失败,几乎总是「可选依赖\x20better-sqlite3」的原生模块无法在您当前环境加载或编译。','建议:将运行「npx\x20@bangdao-ai/acw-tools」的\x20Node\x20升级到\x2022.5\x20及以上,本包将改用内置\x20SQLite,一般不再需要编译。','45FwrxGp','[原因]\x20首次加载失败(动态\x20import):\x20','stderr','error','modules','trim','115',':memory:','darwin','node:sqlite','[WARN]\x20OSS\x20预编译包下载或解压失败:\x20','test','[INFO]\x20检测到原生模块加载异常,尝试从\x20OSS\x20拉取匹配当前\x20ABI\x20的预编译包...','mkdirSync','[ERROR]\x20better-sqlite3\x20模块加载失败,安装中止','was\x20compiled\x20against','forEach','versions','node_modules','npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts','[提示]\x20当前通过\x20better-sqlite3\x20完成检查。若希望免去原生依赖,可将\x20Node\x20升级到\x2022.5\x20及以上。','where\x20cl.exe','pipe','platform','[INFO]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','warn','MODULE_NOT_FOUND','7MYtWPk','[INFO]\x20当前\x20Node\x20','[INFO]\x20better-sqlite3\x20原生加载失败:\x20','string','better-sqlite3','2522710lGeNup','说明:\x20已尝试\x20OSS\x20预编译与\x20npm\x20rebuild。仍失败时:务必把运行\x20npx\x20的\x20Node\x20升到\x2022.5+(内置\x20SQLite,从根上避免本问题)。其余检查:','invalid\x20ELF','[提示]\x20【解决办法优先级】①\x20将运行\x20npx\x20的\x20Node\x20升级到\x2022.5+(最省事);②\x20安装对应系统的\x20C++\x20编译环境后再装本包;③\x20确保\x20Cursor\x20/\x20终端使用同一份\x20Node,避免\x20ABI\x20混用。','108','\x20\x201)\x20终端执行\x20node\x20-v\x20与\x20Cursor\x20调起\x20MCP\x20用的是否为同一\x20Node;','12.4.1','我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:','131','toLowerCase','272595elkLZt','[结论]\x20报错形态不像典型原生模块加载问题,未自动执行\x20OSS\x20/\x20rebuild,请根据完整堆栈排查。','[提示]\x20','slice','split','111','[WARN]\x20无法确定\x20npm\x20包根目录,跳过\x20npm\x20rebuild','137','toFixed','NODE_MODULE_VERSION'];_0x419c=function(){return _0x4e8218;};return _0x419c();}import{fileURLToPath as _0x7050ec}from'url';import{execSync as _0x5d9db1}from'child_process';import _0x197865 from'https';import _0x201e0e from'http';import _0x2c38f3 from'zlib';var C=_0x48f2f3(0xa1),L='https://bd-acw.oss-cn-beijing.aliyuncs.com/prebuilds/better-sqlite3',F={0x12:_0x48f2f3(0x9f),0x13:_0x48f2f3(0xaa),0x14:_0x48f2f3(0x81),0x15:'120',0x16:_0x48f2f3(0xdc),0x17:'131',0x18:'137',0x19:'137'},$=['115',_0x48f2f3(0xdc),_0x48f2f3(0xa3),_0x48f2f3(0xac)],I=parseInt(process['version']['slice'](0x1)['split']('.')[0x0],0xa),T=((()=>{const _0x54dd4c=_0x48f2f3;let _0x20e569=process['version']['slice'](0x1)[_0x54dd4c(0xa9)]('.');return parseInt(_0x20e569[0x1]||'0',0xa);})());function x(){return I>0x16||I===0x16&&T>=0x5;}function P(){const _0x256dcf=_0x48f2f3;console[_0x256dcf(0xb6)](''),console[_0x256dcf(0xb6)](_0x256dcf(0xbd)),console['log']('[提示]\x20【本包为什么要动\x20SQLite】需要读取\x20Cursor\x20本地的\x20state.vscdb(对话与\x20composer\x20数据)。'),console['log']('[提示]\x20【推荐环境】请使用\x20Node.js\x2022.5\x20及以上(LTS\x2022\x20的最新小版本即可)。'),console['log']('[提示]\x20\x20\x20该版本起\x20Node\x20内置「node:sqlite」,安装时无需\x20better-sqlite3,Windows\x20上可避免出现「模块编译失败」。'),console['log']('[提示]\x20【你当前的情况】当前为\x20'+process['version']+',未检测到可用的内置\x20node:sqlite(或运行时被禁用),因此走可选依赖\x20better-sqlite3。'),console['log']('[提示]\x20【为什么会编译失败】better-sqlite3\x20含\x20C++\x20扩展(.node\x20文件)。常见原因:'),console['log'](_0x256dcf(0xcc)),console[_0x256dcf(0xb6)]('[提示]\x20\x20\x20·\x20任意系统:执行\x20npx\x20的\x20Node\x20版本与当初编译该模块的\x20Node\x20ABI\x20不一致(报\x20NODE_MODULE_VERSION\x20/\x20was\x20compiled\x20against);'),console['log'](_0x256dcf(0xd2)),console['log'](_0x256dcf(0x9e)),console[_0x256dcf(0xb6)]('[提示]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console['log']('');}function y(){const _0x1d9e83=_0x48f2f3;console['error'](''),console[_0x1d9e83(0xf7)](_0x1d9e83(0xc1)),console[_0x1d9e83(0xf7)](_0x1d9e83(0xf2)),console['error']('根因:它需要与本机\x20Node\x20版本匹配的\x20C++\x20二进制;Windows\x20上缺\x20VS\x20Build\x20Tools\x20时极易报错。'),console[_0x1d9e83(0xf7)](_0x1d9e83(0xf3)),console[_0x1d9e83(0xf7)](_0x1d9e83(0xd1)),console[_0x1d9e83(0xf7)](_0x1d9e83(0xde));}function b(){const _0x39e030=_0x48f2f3;let _0x42f13b=parseInt(process['version'][_0x39e030(0xa8)](0x1)['split']('.')[0x0],0xa);return F[_0x42f13b]||process['versions'][_0x39e030(0xf8)];}function E(){const _0x350008=_0x48f2f3;let _0x4d662b=C,_0x3b6c80=b(),_0x2393a7=process[_0x350008(0x92)],_0x14b3cc=process[_0x350008(0xb1)];return'better-sqlite3-v'+_0x4d662b+_0x350008(0xb0)+_0x3b6c80+'-'+_0x2393a7+'-'+_0x14b3cc+'.tar.gz';}function v(_0x2ce16e){return new Promise((_0x24cf65,_0x45c8ba)=>{const _0x15ea1c=_0x5948;let _0x1e6c8d=(_0x2ce16e['startsWith']('https')?_0x197865:_0x201e0e)['get'](_0x2ce16e,{'timeout':0x7530},_0x41af8f=>{const _0x42151a=_0x5948;if(_0x41af8f[_0x42151a(0xb4)]===0x12d||_0x41af8f[_0x42151a(0xb4)]===0x12e){v(_0x41af8f['headers']['location'])['then'](_0x24cf65)['catch'](_0x45c8ba);return;}if(_0x41af8f[_0x42151a(0xb4)]!==0xc8){_0x45c8ba(new Error('HTTP\x20'+_0x41af8f[_0x42151a(0xb4)]));return;}let _0x7276ca=[];_0x41af8f['on'](_0x42151a(0xca),_0xc83f90=>_0x7276ca['push'](_0xc83f90)),_0x41af8f['on']('end',()=>_0x24cf65(Buffer[_0x42151a(0xec)](_0x7276ca))),_0x41af8f['on']('error',_0x45c8ba);});_0x1e6c8d['on'](_0x15ea1c(0xf7),_0x45c8ba),_0x1e6c8d['on']('timeout',()=>{const _0x14bc6d=_0x15ea1c;_0x1e6c8d[_0x14bc6d(0xf0)](),_0x45c8ba(new Error(_0x14bc6d(0xaf)));});});}async function D(_0xee3ebc,_0x31650d){const _0x46176d=_0x48f2f3;let _0x3872d6=_0x2c38f3['gunzipSync'](_0xee3ebc),_0x1692ec=0x200,_0x352e25=0x0;for(;_0x352e25<_0x3872d6['length']-_0x1692ec;){let _0x41f487=_0x3872d6['slice'](_0x352e25,_0x352e25+_0x1692ec);if(_0x41f487[0x0]===0x0)break;let _0x495f2e=_0x41f487[_0x46176d(0xa8)](0x0,0x64)['toString']('utf8')['replace'](/\0/g,'')[_0x46176d(0x80)](),_0x163a38=_0x41f487['slice'](0x7c,0x88)[_0x46176d(0xd0)]('utf8')[_0x46176d(0xd4)](/\0/g,'')['trim'](),_0x5c5cd6=parseInt(_0x163a38,0x8)||0x0,_0xa67fb=String['fromCharCode'](_0x41f487[0x9c]);if(_0x352e25+=_0x1692ec,_0x495f2e&&_0xa67fb==='0'||_0xa67fb==='\x00'){let _0x4f8f20=_0x3872d6[_0x46176d(0xa8)](_0x352e25,_0x352e25+_0x5c5cd6),_0x1c1525=_0x48299f['join'](_0x31650d,_0x48299f['basename'](_0x495f2e));_0x11ecec[_0x46176d(0x88)](_0x48299f[_0x46176d(0xdf)](_0x1c1525),{'recursive':!0x0}),_0x11ecec['writeFileSync'](_0x1c1525,_0x4f8f20);}_0x352e25+=Math['ceil'](_0x5c5cd6/_0x1692ec)*_0x1692ec;}}function h(){const _0x14351c=_0x48f2f3;let _0x10e3e4=[_0x48299f['join'](process['cwd'](),_0x14351c(0x8d),_0x14351c(0x9a)),_0x48299f[_0x14351c(0xef)](_0x7050ec(import.meta.url),'..','node_modules',_0x14351c(0x9a))];try{let _0x506840=import.meta.resolve(_0x14351c(0x9a));if(_0x506840){let _0x33a86e=_0x7050ec(_0x506840);_0x10e3e4[_0x14351c(0xd6)](_0x48299f['dirname'](_0x48299f['dirname'](_0x33a86e)));}}catch{}for(let _0x133952 of _0x10e3e4)if(_0x11ecec['existsSync'](_0x48299f[_0x14351c(0xef)](_0x133952,_0x14351c(0xd5))))return _0x133952;return null;}function N(_0x59f496){const _0x28fdc0=_0x48f2f3;if(!_0x59f496)return null;let _0x35feb5=_0x48299f['dirname'](_0x59f496);return _0x48299f[_0x28fdc0(0xbb)](_0x35feb5)===_0x28fdc0(0x8d)?_0x48299f['dirname'](_0x35feb5):null;}function B(_0x4bd010){const _0x38a7b0=_0x48f2f3;_0x5d9db1('node\x20-e\x20\x22require(\x27better-sqlite3\x27)(\x27:memory:\x27).close()\x22',{'cwd':_0x4bd010||process['cwd'](),'stdio':_0x38a7b0(0x91),'env':{...process[_0x38a7b0(0xc7)]}});}function k(_0x1c56d8){const _0x31c953=_0x48f2f3;let _0x2e12f0=N(_0x1c56d8);if(!_0x2e12f0||!_0x11ecec['existsSync'](_0x48299f[_0x31c953(0xef)](_0x2e12f0,_0x31c953(0xd5))))return console['warn'](_0x31c953(0xab)),!0x1;console[_0x31c953(0xb6)](''),console['log'](_0x31c953(0x93)),console[_0x31c953(0xb6)](_0x31c953(0xdd)+_0x2e12f0+'」执行\x20npm\x20rebuild\x20better-sqlite3'),console['log'](_0x31c953(0xcd)),console[_0x31c953(0xb6)]('[INFO]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');try{return _0x5d9db1(_0x31c953(0x8e),{'cwd':_0x2e12f0,'stdio':_0x31c953(0xeb),'env':{...process[_0x31c953(0xc7)]}}),B(_0x2e12f0),console[_0x31c953(0xb6)](_0x31c953(0xc5)),!0x0;}catch(_0x195139){let _0x2a836e=_0x195139&&typeof _0x195139=='object'?_0x195139:{},_0xcfe212=_0x2a836e['stderr']?String(_0x2a836e[_0x31c953(0xf6)]):'',_0x3bd03d=_0x2a836e['stdout']?String(_0x2a836e[_0x31c953(0xe5)]):'',_0x499952=_0xcfe212||_0x3bd03d||(_0x195139&&_0x195139[_0x31c953(0xbe)]?String(_0x195139['message']):String(_0x195139));return console['warn']('[WARN]\x20npm\x20rebuild\x20未成功:\x20'+_0x499952[_0x31c953(0xa8)](0x0,0x4b0)+(_0x499952[_0x31c953(0xed)]>0x4b0?_0x31c953(0xea):'')),!0x1;}}async function M(){const _0x3b31f4=_0x48f2f3;let _0x33673a=E(),_0x302134=L+'/v'+C+'/'+_0x33673a;console['log']('[INFO]\x20尝试从\x20OSS\x20下载预编译包:\x20'+_0x33673a);let _0x31c930=await v(_0x302134);console[_0x3b31f4(0xb6)]('[INFO]\x20下载成功\x20('+(_0x31c930['length']/0x400)[_0x3b31f4(0xad)](0x1)+_0x3b31f4(0xda));let _0x461056=h();if(!_0x461056)throw new Error(_0x3b31f4(0xee));let _0x4567bb=_0x48299f[_0x3b31f4(0xef)](_0x461056,_0x3b31f4(0xd7),process['platform']+'-'+process[_0x3b31f4(0xb1)]);return _0x11ecec[_0x3b31f4(0x88)](_0x4567bb,{'recursive':!0x0}),await D(_0x31c930,_0x4567bb),console[_0x3b31f4(0xb6)]('[INFO]\x20预编译包已安装到:\x20'+_0x4567bb),!0x0;}async function W(){const _0x581c82=_0x48f2f3;let _0x26b414=(await import('better-sqlite3'))['default'];return new _0x26b414(':memory:')[_0x581c82(0xd8)](),!0x0;}async function V(){const _0x25f6b3=_0x48f2f3;try{let {DatabaseSync:_0x570b65}=await import(_0x25f6b3(0x84));return new _0x570b65(_0x25f6b3(0x82))[_0x25f6b3(0xd8)](),!0x0;}catch{return!0x1;}}((async()=>{const _0x1ab333=_0x48f2f3;try{let _0x1452d2=_0x7050ec(import.meta.url),_0x662e81=_0x48299f[_0x1ab333(0xdf)](_0x1452d2),_0x427647=_0x1ab333(0xdb),_0xdfe98e='';try{let _0x349041=_0x48299f['join'](_0x662e81,'package.json');if(_0x11ecec['existsSync'](_0x349041)){let _0x513d03=JSON['parse'](_0x11ecec['readFileSync'](_0x349041,'utf8'));_0x427647=_0x513d03['version']||'unknown',_0xdfe98e=typeof _0x513d03[_0x1ab333(0xc9)]==_0x1ab333(0x99)?_0x513d03['acwInstallNote']:'';}}catch{}console[_0x1ab333(0xb6)](_0x1ab333(0xb2)),console[_0x1ab333(0xb6)]('v'+_0x427647+_0x1ab333(0xe7)+process[_0x1ab333(0xba)]+'\x20(ABI\x20'+b()+_0x1ab333(0xc6)+process['platform']+'/'+process['arch']),_0xdfe98e&&console['log'](_0x1ab333(0xa7)+_0xdfe98e),await V()&&(console['log']('[OK]\x20已检测到\x20Node\x20内置\x20node:sqlite,安装检查通过。'),console[_0x1ab333(0xb6)]('[提示]\x20当前\x20'+process[_0x1ab333(0xba)]+'\x20满足「内置\x20SQLite」路径:对话抓取不依赖\x20better-sqlite3,Windows\x20上无需\x20VS\x20Build\x20Tools\x20即可避免「模块编译失败」。'),x()||console['log'](_0x1ab333(0xc0)),console[_0x1ab333(0xb6)]('[OK]\x20安装完成'),process['exit'](0x0)),P();let _0x32a34d=!0x1,_0x54f357=null,_0x2e4626=[];try{await W(),console['log']('[OK]\x20better-sqlite3\x20加载成功'),_0x32a34d=!0x0;}catch(_0x46564d){_0x54f357=_0x46564d;let _0x36d4d1=_0x46564d&&_0x46564d[_0x1ab333(0xbe)]?String(_0x46564d[_0x1ab333(0xbe)]):'',_0x4a1280=_0x36d4d1[_0x1ab333(0xa4)]();console[_0x1ab333(0xb6)](_0x1ab333(0x98)+_0x36d4d1),_0x2e4626[_0x1ab333(0xb3)](_0x1ab333(0xf5)+_0x36d4d1['slice'](0x0,0x1f4)+(_0x36d4d1['length']>0x1f4?'...':'')),(_0x36d4d1[_0x1ab333(0xd3)]('Cannot\x20find\x20package')||_0x36d4d1[_0x1ab333(0xd3)](_0x1ab333(0xb7))||_0x36d4d1[_0x1ab333(0xd3)](_0x1ab333(0x95)))&&_0x2e4626['push']('[原因]\x20better-sqlite3\x20未安装到位(多为\x20optional\x20依赖下载或编译失败);在\x20Node\x20低于\x2022.5\x20且无内置\x20SQLite\x20时会导致本步失败。');let _0x347158=_0x36d4d1['includes'](_0x1ab333(0xae))||_0x36d4d1[_0x1ab333(0xd3)](_0x1ab333(0x8a))||/\.node\b/[_0x1ab333(0x86)](_0x36d4d1)||_0x4a1280[_0x1ab333(0xd3)]('better_sqlite3')||_0x4a1280[_0x1ab333(0xd3)]('better-sqlite3')||_0x4a1280['includes']('dlopen')||_0x4a1280['includes'](_0x1ab333(0x9d))||_0x4a1280[_0x1ab333(0xd3)](_0x1ab333(0xe4)),_0x4d0e0b=h(),_0x54de78=N(_0x4d0e0b);if(_0x2e4626[_0x1ab333(0xb3)]('[环境]\x20Node='+process['version']+_0x1ab333(0xbf)+process[_0x1ab333(0x8c)][_0x1ab333(0xf8)]+_0x1ab333(0xc8)+b()+',平台='+process['platform']+'/'+process[_0x1ab333(0xb1)]),_0x2e4626[_0x1ab333(0xb3)](_0x1ab333(0xe1)+(_0x4d0e0b||'未找到')+_0x1ab333(0xc4)+(_0x54de78||'未解析')),!_0x347158)_0x2e4626['push'](_0x1ab333(0xa6));else{let _0x449aab=b();if(!$[_0x1ab333(0xd3)](_0x449aab))_0x2e4626[_0x1ab333(0xb3)]('[原因]\x20当前\x20ABI\x20'+_0x449aab+'\x20不在\x20OSS\x20预编译列表\x20['+$['join'](',\x20')+'],不会下载预编译包(避免错配二进制)。将尝试本机\x20npm\x20rebuild。'),console[_0x1ab333(0xb6)](_0x1ab333(0x97)+process[_0x1ab333(0xba)]+'(ABI\x20v'+_0x449aab+_0x1ab333(0xe9));else{_0x2e4626['push']('[步骤]\x20ABI\x20'+_0x449aab+_0x1ab333(0xc3)+E()),console[_0x1ab333(0xb6)](_0x1ab333(0x87));try{await M(),console[_0x1ab333(0xb6)]('[INFO]\x20预编译包已安装,重新测试...');try{let _0x50a2d4=N(h())||_0x54de78||process['cwd']();B(_0x50a2d4),console[_0x1ab333(0xb6)]('[OK]\x20better-sqlite3\x20修复成功(OSS\x20预编译)'),_0x32a34d=!0x0,_0x2e4626['push'](_0x1ab333(0xb9));}catch(_0xdea312){_0x2e4626[_0x1ab333(0xb3)]('[步骤]\x20OSS\x20预编译后子进程校验仍失败:\x20'+(_0xdea312['message']||_0xdea312)),console[_0x1ab333(0x94)](_0x1ab333(0xb5)+_0xdea312[_0x1ab333(0xbe)]);}}catch(_0x56cbed){_0x2e4626[_0x1ab333(0xb3)]('[步骤]\x20OSS\x20下载或解压失败:\x20'+(_0x56cbed['message']||_0x56cbed)),console['warn'](_0x1ab333(0x85)+_0x56cbed[_0x1ab333(0xbe)]);}}!_0x32a34d&&_0x4d0e0b?(_0x2e4626['push']('[步骤]\x20执行自动\x20npm\x20rebuild\x20better-sqlite3(本机源码编译)'),k(_0x4d0e0b)?(_0x32a34d=!0x0,_0x2e4626['push'](_0x1ab333(0xd9))):_0x2e4626[_0x1ab333(0xb3)]('[步骤]\x20npm\x20rebuild:\x20失败(见上方日志,多为缺少\x20cl.exe\x20/\x20Xcode\x20Command\x20Line\x20Tools\x20/\x20build-essential)')):!_0x32a34d&&!_0x4d0e0b&&_0x2e4626[_0x1ab333(0xb3)](_0x1ab333(0xe2));}}if(!_0x32a34d){let _0xf0ba67=_0x54f357?.['message']||_0x1ab333(0xce);if(y(),console['error'](''),console['error'](_0x1ab333(0xcb)),console[_0x1ab333(0xf7)](_0x1ab333(0x89)),console['error'](_0x1ab333(0xcb)),console[_0x1ab333(0xf7)](''),console[_0x1ab333(0xf7)]('──────────\x20诊断摘要(请整段复制给支持人员或\x20Cursor)──────────'),_0x2e4626[_0x1ab333(0x8b)](_0x12294f=>console[_0x1ab333(0xf7)](_0x12294f)),console['error']('────────────────────────────────────────────────────────────'),console[_0x1ab333(0xf7)](''),console['error'](_0x1ab333(0xc2)+_0xf0ba67),console['error'](''),console[_0x1ab333(0xf7)](_0x1ab333(0x9c)),console[_0x1ab333(0xf7)](_0x1ab333(0xa0)),console[_0x1ab333(0xf7)]('\x20\x202)\x20若必须留在旧\x20Node:安装\x20C++\x20工具链后在包根目录执行\x20npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts;'),console['error']('\x20\x203)\x20再执行\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools。'),console[_0x1ab333(0xf7)](''),console['error']('复制以下提示词发送给\x20Cursor,让\x20AI\x20帮你修复:'),console['error'](''),process['platform']===_0x1ab333(0xf1)){let _0x36d5ca=!0x1;try{_0x5d9db1(_0x1ab333(0x90),{'stdio':'pipe'}),_0x36d5ca=!0x0;}catch{}console['error'](_0x36d5ca?'我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0xf0ba67+_0x1ab333(0xbc):_0x1ab333(0xa2)+_0xf0ba67+'。优先请把运行\x20npx\x20的\x20Node\x20升级到\x2022.5\x20以上(免装\x20VS\x20Build\x20Tools)。否则请安装\x20Visual\x20Studio\x20Build\x20Tools\x20后再\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools。');}else process['platform']===_0x1ab333(0x83)?console['error'](_0x1ab333(0xa2)+_0xf0ba67+'。优先将\x20Node\x20升到\x2022.5+。否则\x20xcode-select\x20--install\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。'):console['error'](_0x1ab333(0xa2)+_0xf0ba67+'。优先将\x20Node\x20升到\x2022.5+。否则\x20sudo\x20apt-get\x20install\x20build-essential\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。');console[_0x1ab333(0xf7)](''),console[_0x1ab333(0xf7)]('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),process['exit'](0x1);}console['log'](_0x1ab333(0x8f)),console[_0x1ab333(0xb6)]('[OK]\x20安装完成');}catch(_0x2f15c2){y(),console[_0x1ab333(0xf7)]('[ERROR]\x20postinstall\x20脚本执行出错:',_0x2f15c2['message']),process['exit'](0x1);}})());