@bangdao-ai/acw-tools 1.13.11 → 1.13.13
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/claudeCodeParser.js +1 -1
- package/cursorConversationParser.js +1 -1
- package/index.js +1 -1
- package/manifest.json +2 -1
- package/package.json +2 -1
- package/postinstall.js +1 -1
package/manifest.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ACW工具集",
|
|
3
3
|
"description": "ACW平台工具集:智能下载规则/技能到项目、上传技能到Skills广场、搜索技能、检查技能更新、上传/下载/检索个人知识库",
|
|
4
|
-
"version": "1.13.
|
|
4
|
+
"version": "1.13.13",
|
|
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",
|
|
8
8
|
"capabilities": [
|
|
9
9
|
"check_acw_connection",
|
|
10
|
+
"acw_mcp_status",
|
|
10
11
|
"download_rule",
|
|
11
12
|
"download_skill",
|
|
12
13
|
"upload_skill",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bangdao-ai/acw-tools",
|
|
3
|
-
"version": "1.13.
|
|
3
|
+
"version": "1.13.13",
|
|
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",
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"acw-tools": "index.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
|
+
"test": "node --test ./*.test.js",
|
|
11
12
|
"start:stdio": "node index.js",
|
|
12
13
|
"postinstall": "node postinstall.js"
|
|
13
14
|
},
|
package/postinstall.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const _0x193926=_0xc49a;(function(_0x4bb5e3,_0x7d63a5){const _0x12def3=_0xc49a,_0x493fc4=_0x4bb5e3();while(!![]){try{const _0x462880=parseInt(_0x12def3(0x11b))/0x1+-parseInt(_0x12def3(0xfa))/0x2+-parseInt(_0x12def3(0xd8))/0x3+parseInt(_0x12def3(0xec))/0x4*(parseInt(_0x12def3(0xc4))/0x5)+parseInt(_0x12def3(0xe1))/0x6*(-parseInt(_0x12def3(0x11c))/0x7)+parseInt(_0x12def3(0x114))/0x8+-parseInt(_0x12def3(0xf2))/0x9*(-parseInt(_0x12def3(0x106))/0xa);if(_0x462880===_0x7d63a5)break;else _0x493fc4['push'](_0x493fc4['shift']());}catch(_0x5611e1){_0x493fc4['push'](_0x493fc4['shift']());}}}(_0x3b0c,0x32e78));import _0x54b362 from'fs';import _0x2274d7 from'path';import{fileURLToPath as _0x11234c}from'url';import{execSync as _0x5e7bb7}from'child_process';function _0xc49a(_0x37625e,_0x1cb33d){_0x37625e=_0x37625e-0xb4;const _0x3b0cd3=_0x3b0c();let _0xc49a73=_0x3b0cd3[_0x37625e];return _0xc49a73;}import _0x34f0aa from'https';import _0x1414a6 from'http';import _0x480877 from'zlib';var C=_0x193926(0xd5),L='https://bd-acw.oss-cn-beijing.aliyuncs.com/prebuilds/better-sqlite3',F={0x12:'108',0x13:_0x193926(0xcd),0x14:'115',0x15:_0x193926(0x10f),0x16:_0x193926(0xb4),0x17:_0x193926(0xc0),0x18:'137',0x19:_0x193926(0x10a)},$=[_0x193926(0xdb),'127','131',_0x193926(0x10a)],I=parseInt(process[_0x193926(0xde)][_0x193926(0xe7)](0x1)['split']('.')[0x0],0xa),T=((()=>{const _0x1edc26=_0x193926;let _0xd91bc=process['version']['slice'](0x1)[_0x1edc26(0xf9)]('.');return parseInt(_0xd91bc[0x1]||'0',0xa);})());function x(){return I>0x16||I===0x16&&T>=0x5;}function P(){const _0x4b5e3f=_0x193926;console['log'](''),console[_0x4b5e3f(0xc3)](_0x4b5e3f(0xda)),console['log']('[提示]\x20【本包为什么要动\x20SQLite】需要读取\x20Cursor\x20本地的\x20state.vscdb(对话与\x20composer\x20数据)。'),console[_0x4b5e3f(0xc3)](_0x4b5e3f(0x108)),console['log'](_0x4b5e3f(0xc9)),console[_0x4b5e3f(0xc3)]('[提示]\x20【你当前的情况】当前为\x20'+process['version']+_0x4b5e3f(0xe2)),console['log']('[提示]\x20【为什么会编译失败】better-sqlite3\x20含\x20C++\x20扩展(.node\x20文件)。常见原因:'),console['log'](_0x4b5e3f(0xdc)),console['log'](_0x4b5e3f(0xd4)),console['log'](_0x4b5e3f(0xf6)),console['log']('[提示]\x20【解决办法优先级】①\x20将运行\x20npx\x20的\x20Node\x20升级到\x2022.5+(最省事);②\x20安装对应系统的\x20C++\x20编译环境后再装本包;③\x20确保\x20Cursor\x20/\x20终端使用同一份\x20Node,避免\x20ABI\x20混用。'),console['log'](_0x4b5e3f(0xda)),console[_0x4b5e3f(0xc3)]('');}function y(){const _0x59c352=_0x193926;console['error'](''),console[_0x59c352(0xfc)]('──────────\x20给用户的说明(安装失败)──────────'),console['error']('本步骤失败,几乎总是「可选依赖\x20better-sqlite3」的原生模块无法在您当前环境加载或编译。'),console['error'](_0x59c352(0xb6)),console[_0x59c352(0xfc)]('建议:将运行「npx\x20@bangdao-ai/acw-tools」的\x20Node\x20升级到\x2022.5\x20及以上,本包将改用内置\x20SQLite,一般不再需要编译。'),console['error'](_0x59c352(0xed)),console['error']('────────────────────────────────────────────');}function _0x3b0c(){const _0x49765a=['writeFileSync','1054168RfMuDh','package.json\x20中\x20engines\x20为\x20node>=20;要免编译、少踩坑,请以\x2022.5+\x20为准。','[OK]\x20better-sqlite3\x20修复成功(OSS\x20预编译)','」执行\x20npm\x20rebuild\x20better-sqlite3',',process.versions.modules=','[INFO]\x20自动尝试本地编译:\x20在「','27bARtfd','MODULE_NOT_FOUND','where\x20cl.exe','invalid\x20ELF','[提示]\x20\x20\x20·\x20公司网络拦截导致预编译包下载失败,被迫本地编译但本机无工具链。','[ERROR]\x20postinstall\x20脚本执行出错:','[INFO]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','split','319728PxRLNx','-node-v','error',')无对应\x20OSS\x20预编译包,跳过\x20OSS,将尝试本机编译','close','node\x20-e\x20\x22require(\x27better-sqlite3\x27)(\x27:memory:\x27).close()\x22','toFixed','[原因]\x20首次加载失败(动态\x20import):\x20','...','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','toString','concat','739610aDPxvD','[原因]\x20better-sqlite3\x20未安装到位(多为\x20optional\x20依赖下载或编译失败);在\x20Node\x20低于\x2022.5\x20且无内置\x20SQLite\x20时会导致本步失败。','[提示]\x20【推荐环境】请使用\x20Node.js\x2022.5\x20及以上(LTS\x2022\x20的最新小版本即可)。','\x20\x202)\x20若必须留在旧\x20Node:安装\x20C++\x20工具链后在包根目录执行\x20npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts;','137','dirname','exit','better-sqlite3','inherit','120','ERR_MODULE_NOT_FOUND','replace','string','statusCode','1379160gsDDEp','utf8','[结论]\x20报错形态不像典型原生模块加载问题,未自动执行\x20OSS\x20/\x20rebuild,请根据完整堆栈排查。','package.json','未知错误','platform','[OK]\x20安装完成','324796TQvJAJ','1776341FJSgmm','headers','[WARN]\x20OSS\x20预编译包下载或解压失败:\x20','127','modules','根因:它需要与本机\x20Node\x20版本匹配的\x20C++\x20二进制;Windows\x20上缺\x20VS\x20Build\x20Tools\x20时极易报错。','end','better-sqlite3-v','timeout','forEach','unshift','说明:\x20已尝试\x20OSS\x20预编译与\x20npm\x20rebuild。仍失败时:务必把运行\x20npx\x20的\x20Node\x20升到\x2022.5+(内置\x20SQLite,从根上避免本问题)。其余检查:','startsWith','stdout','unknown','131','[步骤]\x20未找到\x20better-sqlite3\x20目录,无法执行\x20npm\x20rebuild','join','log','5JlXfGs',':memory:','首错原文:\x20','object','win32','[提示]\x20\x20\x20该版本起\x20Node\x20内置「node:sqlite」,安装时无需\x20better-sqlite3,Windows\x20上可避免出现「模块编译失败」。','cwd','[提示]\x20当前\x20','includes','111','\x20不在\x20OSS\x20预编译列表\x20[','────────────────────────────────────────────────────────────','Request\x20timeout','location','[INFO]\x20检测到原生模块加载异常,尝试从\x20OSS\x20拉取匹配当前\x20ABI\x20的预编译包...','\x20\x201)\x20终端执行\x20node\x20-v\x20与\x20Cursor\x20调起\x20MCP\x20用的是否为同一\x20Node;','[提示]\x20\x20\x20·\x20任意系统:执行\x20npx\x20的\x20Node\x20版本与当初编译该模块的\x20Node\x20ABI\x20不一致(报\x20NODE_MODULE_VERSION\x20/\x20was\x20compiled\x20against);','12.4.1','[OK]\x20better-sqlite3\x20加载成功','push','1081455vlKjVH','arch','[提示]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','115','[提示]\x20\x20\x20·\x20Windows:未安装\x20Visual\x20Studio\x20Build\x20Tools(缺\x20cl.exe),node-gyp\x20无法编译;','[WARN]\x20预编译包安装后测试失败:\x20','version','我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:','warn','6HJGbes',',未检测到可用的内置\x20node:sqlite(或运行时被禁用),因此走可选依赖\x20better-sqlite3。','\x20(ABI\x20','[OK]\x20npm\x20rebuild\x20成功,better-sqlite3\x20已可加载','[原因]\x20当前\x20ABI\x20','message','slice','env','[步骤]\x20OSS\x20预编译\x20+\x20子进程校验:\x20成功','mkdirSync'];_0x3b0c=function(){return _0x49765a;};return _0x3b0c();}function b(){const _0x5a2312=_0x193926;let _0x338f04=parseInt(process[_0x5a2312(0xde)][_0x5a2312(0xe7)](0x1)['split']('.')[0x0],0xa);return F[_0x338f04]||process['versions'][_0x5a2312(0xb5)];}function E(){const _0x2f06c5=_0x193926;let _0x1da176=C,_0x8b50c3=b(),_0xbd68bd=process[_0x2f06c5(0x119)],_0x39e345=process[_0x2f06c5(0xd9)];return _0x2f06c5(0xb8)+_0x1da176+_0x2f06c5(0xfb)+_0x8b50c3+'-'+_0xbd68bd+'-'+_0x39e345+'.tar.gz';}function v(_0x37a613){return new Promise((_0x2c5ef7,_0x5194e6)=>{const _0x17dbe8=_0xc49a;let _0x41a38b=(_0x37a613[_0x17dbe8(0xbd)]('https')?_0x34f0aa:_0x1414a6)['get'](_0x37a613,{'timeout':0x7530},_0x1a2e7d=>{const _0x9acb2b=_0x17dbe8;if(_0x1a2e7d['statusCode']===0x12d||_0x1a2e7d[_0x9acb2b(0x113)]===0x12e){v(_0x1a2e7d[_0x9acb2b(0x11d)][_0x9acb2b(0xd1)])['then'](_0x2c5ef7)['catch'](_0x5194e6);return;}if(_0x1a2e7d['statusCode']!==0xc8){_0x5194e6(new Error('HTTP\x20'+_0x1a2e7d[_0x9acb2b(0x113)]));return;}let _0x303bca=[];_0x1a2e7d['on']('data',_0x3ef079=>_0x303bca[_0x9acb2b(0xd7)](_0x3ef079)),_0x1a2e7d['on'](_0x9acb2b(0xb7),()=>_0x2c5ef7(Buffer[_0x9acb2b(0x105)](_0x303bca))),_0x1a2e7d['on']('error',_0x5194e6);});_0x41a38b['on'](_0x17dbe8(0xfc),_0x5194e6),_0x41a38b['on'](_0x17dbe8(0xb9),()=>{const _0x51cffa=_0x17dbe8;_0x41a38b['destroy'](),_0x5194e6(new Error(_0x51cffa(0xd0)));});});}async function D(_0x39a6db,_0x39afa5){const _0xa91f76=_0x193926;let _0x25dba6=_0x480877['gunzipSync'](_0x39a6db),_0x3679ee=0x200,_0x58ba83=0x0;for(;_0x58ba83<_0x25dba6['length']-_0x3679ee;){let _0x252b99=_0x25dba6[_0xa91f76(0xe7)](_0x58ba83,_0x58ba83+_0x3679ee);if(_0x252b99[0x0]===0x0)break;let _0x2b6f30=_0x252b99[_0xa91f76(0xe7)](0x0,0x64)['toString']('utf8')[_0xa91f76(0x111)](/\0/g,'')['trim'](),_0x33ec3e=_0x252b99['slice'](0x7c,0x88)[_0xa91f76(0x104)]('utf8')[_0xa91f76(0x111)](/\0/g,'')['trim'](),_0x447e09=parseInt(_0x33ec3e,0x8)||0x0,_0x5364b9=String['fromCharCode'](_0x252b99[0x9c]);if(_0x58ba83+=_0x3679ee,_0x2b6f30&&_0x5364b9==='0'||_0x5364b9==='\x00'){let _0x5ceacc=_0x25dba6[_0xa91f76(0xe7)](_0x58ba83,_0x58ba83+_0x447e09),_0x1bfc8b=_0x2274d7['join'](_0x39afa5,_0x2274d7['basename'](_0x2b6f30));_0x54b362[_0xa91f76(0xea)](_0x2274d7[_0xa91f76(0x10b)](_0x1bfc8b),{'recursive':!0x0}),_0x54b362[_0xa91f76(0xeb)](_0x1bfc8b,_0x5ceacc);}_0x58ba83+=Math['ceil'](_0x447e09/_0x3679ee)*_0x3679ee;}}function h(){const _0x5482c4=_0x193926;let _0x31923f=[_0x2274d7['join'](process[_0x5482c4(0xca)](),'node_modules',_0x5482c4(0x10d)),_0x2274d7['join'](_0x11234c(import.meta.url),'..','node_modules',_0x5482c4(0x10d))];try{let _0x1f8f56=import.meta.resolve('better-sqlite3');if(_0x1f8f56){let _0xf0465c=_0x11234c(_0x1f8f56);_0x31923f[_0x5482c4(0xbb)](_0x2274d7['dirname'](_0x2274d7[_0x5482c4(0x10b)](_0xf0465c)));}}catch{}for(let _0x4b2294 of _0x31923f)if(_0x54b362['existsSync'](_0x2274d7[_0x5482c4(0xc2)](_0x4b2294,_0x5482c4(0x117))))return _0x4b2294;return null;}function N(_0x1fd22b){if(!_0x1fd22b)return null;let _0x10389a=_0x2274d7['dirname'](_0x1fd22b);return _0x2274d7['basename'](_0x10389a)==='node_modules'?_0x2274d7['dirname'](_0x10389a):null;}function B(_0x2ba9f3){const _0xebe55=_0x193926;_0x5e7bb7(_0xebe55(0xff),{'cwd':_0x2ba9f3||process['cwd'](),'stdio':'pipe','env':{...process[_0xebe55(0xe8)]}});}function k(_0x46853a){const _0x21991a=_0x193926;let _0x530a46=N(_0x46853a);if(!_0x530a46||!_0x54b362['existsSync'](_0x2274d7[_0x21991a(0xc2)](_0x530a46,_0x21991a(0x117))))return console[_0x21991a(0xe0)]('[WARN]\x20无法确定\x20npm\x20包根目录,跳过\x20npm\x20rebuild'),!0x1;console['log'](''),console['log'](_0x21991a(0xf8)),console[_0x21991a(0xc3)](_0x21991a(0xf1)+_0x530a46+_0x21991a(0xef)),console[_0x21991a(0xc3)]('[INFO]\x20(需本机已有\x20C++\x20构建环境;Windows\x20为\x20VS\x20Build\x20Tools,macOS\x20为\x20Xcode\x20CLT,Linux\x20为\x20build-essential)'),console[_0x21991a(0xc3)]('[INFO]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');try{return _0x5e7bb7('npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts',{'cwd':_0x530a46,'stdio':_0x21991a(0x10e),'env':{...process[_0x21991a(0xe8)]}}),B(_0x530a46),console[_0x21991a(0xc3)](_0x21991a(0xe4)),!0x0;}catch(_0x3eebb7){let _0x559b63=_0x3eebb7&&typeof _0x3eebb7==_0x21991a(0xc7)?_0x3eebb7:{},_0x7e7e83=_0x559b63['stderr']?String(_0x559b63['stderr']):'',_0x43e5d0=_0x559b63['stdout']?String(_0x559b63[_0x21991a(0xbe)]):'',_0x4264b0=_0x7e7e83||_0x43e5d0||(_0x3eebb7&&_0x3eebb7[_0x21991a(0xe6)]?String(_0x3eebb7[_0x21991a(0xe6)]):String(_0x3eebb7));return console['warn']('[WARN]\x20npm\x20rebuild\x20未成功:\x20'+_0x4264b0['slice'](0x0,0x4b0)+(_0x4264b0['length']>0x4b0?_0x21991a(0x102):'')),!0x1;}}async function M(){const _0x41ee5f=_0x193926;let _0x12f13f=E(),_0x53e783=L+'/v'+C+'/'+_0x12f13f;console[_0x41ee5f(0xc3)]('[INFO]\x20尝试从\x20OSS\x20下载预编译包:\x20'+_0x12f13f);let _0xbd4ee=await v(_0x53e783);console[_0x41ee5f(0xc3)]('[INFO]\x20下载成功\x20('+(_0xbd4ee['length']/0x400)[_0x41ee5f(0x100)](0x1)+'\x20KB)');let _0x5d5777=h();if(!_0x5d5777)throw new Error('无法找到\x20better-sqlite3\x20模块路径');let _0x4ba705=_0x2274d7['join'](_0x5d5777,'prebuilds',process['platform']+'-'+process[_0x41ee5f(0xd9)]);return _0x54b362['mkdirSync'](_0x4ba705,{'recursive':!0x0}),await D(_0xbd4ee,_0x4ba705),console['log']('[INFO]\x20预编译包已安装到:\x20'+_0x4ba705),!0x0;}async function W(){const _0x35e1ac=_0x193926;let _0x16a1ab=(await import(_0x35e1ac(0x10d)))['default'];return new _0x16a1ab(':memory:')['close'](),!0x0;}async function V(){const _0x609d57=_0x193926;try{let {DatabaseSync:_0xd39ff4}=await import('node:sqlite');return new _0xd39ff4(_0x609d57(0xc5))[_0x609d57(0xfe)](),!0x0;}catch{return!0x1;}}((async()=>{const _0x59260a=_0x193926;try{let _0x3d73e1=_0x11234c(import.meta.url),_0x7d3349=_0x2274d7['dirname'](_0x3d73e1),_0x1e51e5='unknown',_0x8f3769='';try{let _0x37aa08=_0x2274d7['join'](_0x7d3349,'package.json');if(_0x54b362['existsSync'](_0x37aa08)){let _0x440844=JSON['parse'](_0x54b362['readFileSync'](_0x37aa08,_0x59260a(0x115)));_0x1e51e5=_0x440844[_0x59260a(0xde)]||_0x59260a(0xbf),_0x8f3769=typeof _0x440844['acwInstallNote']==_0x59260a(0x112)?_0x440844['acwInstallNote']:'';}}catch{}console[_0x59260a(0xc3)]('ACW\x20Tools\x20MCP\x20安装后检查...'),console['log']('v'+_0x1e51e5+'\x20|\x20Node\x20'+process['version']+_0x59260a(0xe3)+b()+')\x20|\x20'+process[_0x59260a(0x119)]+'/'+process[_0x59260a(0xd9)]),_0x8f3769&&console[_0x59260a(0xc3)]('[提示]\x20'+_0x8f3769),await V()&&(console[_0x59260a(0xc3)]('[OK]\x20已检测到\x20Node\x20内置\x20node:sqlite,安装检查通过。'),console['log'](_0x59260a(0xcb)+process[_0x59260a(0xde)]+'\x20满足「内置\x20SQLite」路径:对话抓取不依赖\x20better-sqlite3,Windows\x20上无需\x20VS\x20Build\x20Tools\x20即可避免「模块编译失败」。'),x()||console[_0x59260a(0xc3)]('[提示]\x20说明:检测通过但主版本号低于文档推荐的\x2022.5+,若日后升级\x20Node,请以实际是否仍含\x20node:sqlite\x20为准。'),console['log'](_0x59260a(0x11a)),process[_0x59260a(0x10c)](0x0)),P();let _0x219287=!0x1,_0x6c3c90=null,_0x8fd201=[];try{await W(),console[_0x59260a(0xc3)](_0x59260a(0xd6)),_0x219287=!0x0;}catch(_0x38a53c){_0x6c3c90=_0x38a53c;let _0x663a78=_0x38a53c&&_0x38a53c['message']?String(_0x38a53c[_0x59260a(0xe6)]):'',_0x23a85d=_0x663a78['toLowerCase']();console[_0x59260a(0xc3)]('[INFO]\x20better-sqlite3\x20原生加载失败:\x20'+_0x663a78),_0x8fd201['push'](_0x59260a(0x101)+_0x663a78[_0x59260a(0xe7)](0x0,0x1f4)+(_0x663a78['length']>0x1f4?_0x59260a(0x102):'')),(_0x663a78['includes']('Cannot\x20find\x20package')||_0x663a78['includes'](_0x59260a(0x110))||_0x663a78[_0x59260a(0xcc)](_0x59260a(0xf3)))&&_0x8fd201['push'](_0x59260a(0x107));let _0x755164=_0x663a78['includes']('NODE_MODULE_VERSION')||_0x663a78[_0x59260a(0xcc)]('was\x20compiled\x20against')||/\.node\b/['test'](_0x663a78)||_0x23a85d[_0x59260a(0xcc)]('better_sqlite3')||_0x23a85d[_0x59260a(0xcc)]('better-sqlite3')||_0x23a85d[_0x59260a(0xcc)]('dlopen')||_0x23a85d[_0x59260a(0xcc)](_0x59260a(0xf5))||_0x23a85d[_0x59260a(0xcc)]('not\x20a\x20valid\x20win32'),_0x2a1226=h(),_0x437bae=N(_0x2a1226);if(_0x8fd201['push']('[环境]\x20Node='+process[_0x59260a(0xde)]+_0x59260a(0xf0)+process['versions'][_0x59260a(0xb5)]+',映射\x20ABI='+b()+',平台='+process[_0x59260a(0x119)]+'/'+process['arch']),_0x8fd201[_0x59260a(0xd7)]('[环境]\x20better-sqlite3\x20路径='+(_0x2a1226||'未找到')+',npm\x20包根='+(_0x437bae||'未解析')),!_0x755164)_0x8fd201[_0x59260a(0xd7)](_0x59260a(0x116));else{let _0x115164=b();if(!$['includes'](_0x115164))_0x8fd201[_0x59260a(0xd7)](_0x59260a(0xe5)+_0x115164+_0x59260a(0xce)+$[_0x59260a(0xc2)](',\x20')+'],不会下载预编译包(避免错配二进制)。将尝试本机\x20npm\x20rebuild。'),console['log']('[INFO]\x20当前\x20Node\x20'+process['version']+'(ABI\x20v'+_0x115164+_0x59260a(0xfd));else{_0x8fd201[_0x59260a(0xd7)]('[步骤]\x20ABI\x20'+_0x115164+'\x20在预编译列表内,尝试\x20OSS:\x20'+E()),console['log'](_0x59260a(0xd2));try{await M(),console[_0x59260a(0xc3)]('[INFO]\x20预编译包已安装,重新测试...');try{let _0x20d1b5=N(h())||_0x437bae||process[_0x59260a(0xca)]();B(_0x20d1b5),console['log'](_0x59260a(0xee)),_0x219287=!0x0,_0x8fd201[_0x59260a(0xd7)](_0x59260a(0xe9));}catch(_0x11ea6a){_0x8fd201['push']('[步骤]\x20OSS\x20预编译后子进程校验仍失败:\x20'+(_0x11ea6a['message']||_0x11ea6a)),console['warn'](_0x59260a(0xdd)+_0x11ea6a['message']);}}catch(_0x58a166){_0x8fd201['push']('[步骤]\x20OSS\x20下载或解压失败:\x20'+(_0x58a166[_0x59260a(0xe6)]||_0x58a166)),console['warn'](_0x59260a(0x11e)+_0x58a166['message']);}}!_0x219287&&_0x2a1226?(_0x8fd201['push']('[步骤]\x20执行自动\x20npm\x20rebuild\x20better-sqlite3(本机源码编译)'),k(_0x2a1226)?(_0x219287=!0x0,_0x8fd201[_0x59260a(0xd7)]('[步骤]\x20npm\x20rebuild:\x20成功')):_0x8fd201[_0x59260a(0xd7)]('[步骤]\x20npm\x20rebuild:\x20失败(见上方日志,多为缺少\x20cl.exe\x20/\x20Xcode\x20Command\x20Line\x20Tools\x20/\x20build-essential)')):!_0x219287&&!_0x2a1226&&_0x8fd201['push'](_0x59260a(0xc1));}}if(!_0x219287){let _0x5338b3=_0x6c3c90?.['message']||_0x59260a(0x118);if(y(),console['error'](''),console[_0x59260a(0xfc)](_0x59260a(0x103)),console[_0x59260a(0xfc)]('[ERROR]\x20better-sqlite3\x20模块加载失败,安装中止'),console['error'](_0x59260a(0x103)),console['error'](''),console[_0x59260a(0xfc)]('──────────\x20诊断摘要(请整段复制给支持人员或\x20Cursor)──────────'),_0x8fd201[_0x59260a(0xba)](_0x2c61d7=>console[_0x59260a(0xfc)](_0x2c61d7)),console[_0x59260a(0xfc)](_0x59260a(0xcf)),console[_0x59260a(0xfc)](''),console[_0x59260a(0xfc)](_0x59260a(0xc6)+_0x5338b3),console['error'](''),console[_0x59260a(0xfc)](_0x59260a(0xbc)),console['error'](_0x59260a(0xd3)),console[_0x59260a(0xfc)](_0x59260a(0x109)),console[_0x59260a(0xfc)]('\x20\x203)\x20再执行\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools。'),console['error'](''),console[_0x59260a(0xfc)]('复制以下提示词发送给\x20Cursor,让\x20AI\x20帮你修复:'),console[_0x59260a(0xfc)](''),process[_0x59260a(0x119)]===_0x59260a(0xc8)){let _0x4f63c6=!0x1;try{_0x5e7bb7(_0x59260a(0xf4),{'stdio':'pipe'}),_0x4f63c6=!0x0;}catch{}console['error'](_0x4f63c6?_0x59260a(0xdf)+_0x5338b3+'。优先请把运行\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重装。':'我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x5338b3+'。优先请把运行\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[_0x59260a(0x119)]==='darwin'?console[_0x59260a(0xfc)](_0x59260a(0xdf)+_0x5338b3+'。优先将\x20Node\x20升到\x2022.5+。否则\x20xcode-select\x20--install\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。'):console[_0x59260a(0xfc)](_0x59260a(0xdf)+_0x5338b3+'。优先将\x20Node\x20升到\x2022.5+。否则\x20sudo\x20apt-get\x20install\x20build-essential\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。');console[_0x59260a(0xfc)](''),console[_0x59260a(0xfc)](_0x59260a(0x103)),process[_0x59260a(0x10c)](0x1);}console['log']('[提示]\x20当前通过\x20better-sqlite3\x20完成检查。若希望免去原生依赖,可将\x20Node\x20升级到\x2022.5\x20及以上。'),console[_0x59260a(0xc3)]('[OK]\x20安装完成');}catch(_0x22bc34){y(),console[_0x59260a(0xfc)](_0x59260a(0xf7),_0x22bc34[_0x59260a(0xe6)]),process[_0x59260a(0x10c)](0x1);}})());
|
|
2
|
+
const _0x5a1853=_0x1832;(function(_0x41a837,_0x274bcf){const _0x5e2d31=_0x1832,_0x4b0da8=_0x41a837();while(!![]){try{const _0x4ba223=-parseInt(_0x5e2d31(0xc3))/0x1*(-parseInt(_0x5e2d31(0xe9))/0x2)+parseInt(_0x5e2d31(0xf3))/0x3+parseInt(_0x5e2d31(0xc0))/0x4+parseInt(_0x5e2d31(0xab))/0x5*(-parseInt(_0x5e2d31(0xfe))/0x6)+-parseInt(_0x5e2d31(0x9c))/0x7*(-parseInt(_0x5e2d31(0xb1))/0x8)+-parseInt(_0x5e2d31(0xaf))/0x9+-parseInt(_0x5e2d31(0xa4))/0xa;if(_0x4ba223===_0x274bcf)break;else _0x4b0da8['push'](_0x4b0da8['shift']());}catch(_0x1bd057){_0x4b0da8['push'](_0x4b0da8['shift']());}}}(_0x23e4,0x4abb0));import _0xf1518d from'fs';import _0x2a2608 from'path';function _0x1832(_0x3a8b2b,_0x51ad30){_0x3a8b2b=_0x3a8b2b-0x95;const _0x23e49f=_0x23e4();let _0x1832b1=_0x23e49f[_0x3a8b2b];return _0x1832b1;}import{fileURLToPath as _0x59e2ac}from'url';import{execSync as _0x5bf7c2}from'child_process';import _0x204467 from'https';import _0x107028 from'http';import _0x5969e4 from'zlib';var C=_0x5a1853(0xdd),L='https://bd-acw.oss-cn-beijing.aliyuncs.com/prebuilds/better-sqlite3',F={0x12:_0x5a1853(0xc9),0x13:'111',0x14:_0x5a1853(0xda),0x15:_0x5a1853(0xe8),0x16:'127',0x17:'131',0x18:_0x5a1853(0xd9),0x19:'137'},$=['115','127','131','137'],I=parseInt(process[_0x5a1853(0xce)]['slice'](0x1)[_0x5a1853(0xf2)]('.')[0x0],0xa),T=((()=>{const _0x432b29=_0x5a1853;let _0x3188ce=process[_0x432b29(0xce)][_0x432b29(0x9e)](0x1)[_0x432b29(0xf2)]('.');return parseInt(_0x3188ce[0x1]||'0',0xa);})());function x(){return I>0x16||I===0x16&&T>=0x5;}function P(){const _0x75a0f2=_0x5a1853;console[_0x75a0f2(0xf4)](''),console['log']('[提示]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console['log'](_0x75a0f2(0xbe)),console[_0x75a0f2(0xf4)](_0x75a0f2(0xac)),console[_0x75a0f2(0xf4)]('[提示]\x20\x20\x20该版本起\x20Node\x20内置「node:sqlite」,安装时无需\x20better-sqlite3,Windows\x20上可避免出现「模块编译失败」。'),console['log']('[提示]\x20【你当前的情况】当前为\x20'+process[_0x75a0f2(0xce)]+_0x75a0f2(0xf0)),console[_0x75a0f2(0xf4)]('[提示]\x20【为什么会编译失败】better-sqlite3\x20含\x20C++\x20扩展(.node\x20文件)。常见原因:'),console[_0x75a0f2(0xf4)](_0x75a0f2(0x9f)),console['log'](_0x75a0f2(0xe6)),console[_0x75a0f2(0xf4)](_0x75a0f2(0xf1)),console['log']('[提示]\x20【解决办法优先级】①\x20将运行\x20npx\x20的\x20Node\x20升级到\x2022.5+(最省事);②\x20安装对应系统的\x20C++\x20编译环境后再装本包;③\x20确保\x20Cursor\x20/\x20终端使用同一份\x20Node,避免\x20ABI\x20混用。'),console['log'](_0x75a0f2(0xd6)),console[_0x75a0f2(0xf4)]('');}function y(){const _0x2cbcc2=_0x5a1853;console['error'](''),console[_0x2cbcc2(0xa3)](_0x2cbcc2(0x102)),console[_0x2cbcc2(0xa3)](_0x2cbcc2(0xba)),console['error']('根因:它需要与本机\x20Node\x20版本匹配的\x20C++\x20二进制;Windows\x20上缺\x20VS\x20Build\x20Tools\x20时极易报错。'),console['error']('建议:将运行「npx\x20@bangdao-ai/acw-tools」的\x20Node\x20升级到\x2022.5\x20及以上,本包将改用内置\x20SQLite,一般不再需要编译。'),console[_0x2cbcc2(0xa3)]('package.json\x20中\x20engines\x20为\x20node>=20;要免编译、少踩坑,请以\x2022.5+\x20为准。'),console['error'](_0x2cbcc2(0x99));}function b(){const _0x35119c=_0x5a1853;let _0x3cf35d=parseInt(process[_0x35119c(0xce)]['slice'](0x1)['split']('.')[0x0],0xa);return F[_0x3cf35d]||process[_0x35119c(0xc6)]['modules'];}function E(){const _0xd78545=_0x5a1853;let _0x3b2f4d=C,_0x4c72d=b(),_0x38c13e=process[_0xd78545(0xcf)],_0x38a6ec=process[_0xd78545(0xa2)];return'better-sqlite3-v'+_0x3b2f4d+_0xd78545(0xc5)+_0x4c72d+'-'+_0x38c13e+'-'+_0x38a6ec+_0xd78545(0xfc);}function _0x23e4(){const _0x43abfb=['includes',',未检测到可用的内置\x20node:sqlite(或运行时被禁用),因此走可选依赖\x20better-sqlite3。','[提示]\x20\x20\x20·\x20公司网络拦截导致预编译包下载失败,被迫本地编译但本机无工具链。','split','421302nYoMsq','log','[提示]\x20当前通过\x20better-sqlite3\x20完成检查。若希望免去原生依赖,可将\x20Node\x20升级到\x2022.5\x20及以上。','────────────────────────────────────────────────────────────','not\x20a\x20valid\x20win32','catch','dlopen','unshift','[步骤]\x20OSS\x20下载或解压失败:\x20','.tar.gz','join','7884DBEgUw',',process.versions.modules=','MODULE_NOT_FOUND','\x20KB)','──────────\x20给用户的说明(安装失败)──────────','inherit','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','[INFO]\x20下载成功\x20(','warn','Request\x20timeout','close','invalid\x20ELF','\x20\x202)\x20若必须留在旧\x20Node:安装\x20C++\x20工具链后在包根目录执行\x20npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts;','────────────────────────────────────────────','说明:\x20已尝试\x20OSS\x20预编译与\x20npm\x20rebuild。仍失败时:务必把运行\x20npx\x20的\x20Node\x20升到\x2022.5+(内置\x20SQLite,从根上避免本问题)。其余检查:','...','959flusTU','stdout','slice','[提示]\x20\x20\x20·\x20Windows:未安装\x20Visual\x20Studio\x20Build\x20Tools(缺\x20cl.exe),node-gyp\x20无法编译;','push','],不会下载预编译包(避免错配二进制)。将尝试本机\x20npm\x20rebuild。','arch','error','3959240peHwIN','ERR_MODULE_NOT_FOUND','better-sqlite3','无法找到\x20better-sqlite3\x20模块路径','首错原文:\x20','pipe','[INFO]\x20预编译包已安装,重新测试...','2315eKdlyh','[提示]\x20【推荐环境】请使用\x20Node.js\x2022.5\x20及以上(LTS\x2022\x20的最新小版本即可)。',':memory:','[WARN]\x20OSS\x20预编译包下载或解压失败:\x20','2921751fjIkuK','[OK]\x20better-sqlite3\x20修复成功(OSS\x20预编译)','20104KlQKpL','string','[WARN]\x20npm\x20rebuild\x20未成功:\x20','acwInstallNote','[INFO]\x20预编译包已安装到:\x20','get','utf8','[步骤]\x20执行自动\x20npm\x20rebuild\x20better-sqlite3(本机源码编译)','stderr','本步骤失败,几乎总是「可选依赖\x20better-sqlite3」的原生模块无法在您当前环境加载或编译。','toString','[OK]\x20npm\x20rebuild\x20成功,better-sqlite3\x20已可加载','end','[提示]\x20【本包为什么要动\x20SQLite】需要读取\x20Cursor\x20本地的\x20state.vscdb(对话与\x20composer\x20数据)。','\x20\x203)\x20再执行\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools。','2400388pMdQAI','node_modules','[步骤]\x20未找到\x20better-sqlite3\x20目录,无法执行\x20npm\x20rebuild','47fEFtAG','package.json','-node-v','versions','env','length','108','dirname','[步骤]\x20OSS\x20预编译\x20+\x20子进程校验:\x20成功','[提示]\x20说明:检测通过但主版本号低于文档推荐的\x2022.5+,若日后升级\x20Node,请以实际是否仍含\x20node:sqlite\x20为准。','statusCode','version','platform','[INFO]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','message',',平台=','复制以下提示词发送给\x20Cursor,让\x20AI\x20帮你修复:','NODE_MODULE_VERSION','未知错误','[提示]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','test','\x20满足「内置\x20SQLite」路径:对话抓取不依赖\x20better-sqlite3,Windows\x20上无需\x20VS\x20Build\x20Tools\x20即可避免「模块编译失败」。','137','115','unknown','\x20在预编译列表内,尝试\x20OSS:\x20','12.4.1','ACW\x20Tools\x20MCP\x20安装后检查...','[OK]\x20安装完成','cwd','。优先请把运行\x20npx\x20的\x20Node\x20升级到\x2022.5\x20以上(免装\x20VS\x20Build\x20Tools)。否则请安装\x20Visual\x20Studio\x20Build\x20Tools\x20后再\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools。','[WARN]\x20无法确定\x20npm\x20包根目录,跳过\x20npm\x20rebuild','[OK]\x20已检测到\x20Node\x20内置\x20node:sqlite,安装检查通过。','object','node\x20-e\x20\x22require(\x27better-sqlite3\x27)(\x27:memory:\x27).close()\x22','[提示]\x20\x20\x20·\x20任意系统:执行\x20npx\x20的\x20Node\x20版本与当初编译该模块的\x20Node\x20ABI\x20不一致(报\x20NODE_MODULE_VERSION\x20/\x20was\x20compiled\x20against);','existsSync','120','23414GDOMpW','trim','where\x20cl.exe','replace','better_sqlite3','\x20\x201)\x20终端执行\x20node\x20-v\x20与\x20Cursor\x20调起\x20MCP\x20用的是否为同一\x20Node;'];_0x23e4=function(){return _0x43abfb;};return _0x23e4();}function v(_0x3b99e2){return new Promise((_0x42340e,_0x396337)=>{const _0x5df938=_0x1832;let _0x101e5=(_0x3b99e2['startsWith']('https')?_0x204467:_0x107028)[_0x5df938(0xb6)](_0x3b99e2,{'timeout':0x7530},_0x3a3017=>{const _0x3a4180=_0x5df938;if(_0x3a3017['statusCode']===0x12d||_0x3a3017['statusCode']===0x12e){v(_0x3a3017['headers']['location'])['then'](_0x42340e)[_0x3a4180(0xf8)](_0x396337);return;}if(_0x3a3017[_0x3a4180(0xcd)]!==0xc8){_0x396337(new Error('HTTP\x20'+_0x3a3017[_0x3a4180(0xcd)]));return;}let _0x503686=[];_0x3a3017['on']('data',_0x35f452=>_0x503686['push'](_0x35f452)),_0x3a3017['on'](_0x3a4180(0xbd),()=>_0x42340e(Buffer['concat'](_0x503686))),_0x3a3017['on'](_0x3a4180(0xa3),_0x396337);});_0x101e5['on'](_0x5df938(0xa3),_0x396337),_0x101e5['on']('timeout',()=>{const _0x1cc780=_0x5df938;_0x101e5['destroy'](),_0x396337(new Error(_0x1cc780(0x95)));});});}async function D(_0x2acff5,_0x47d661){const _0x3e85cd=_0x5a1853;let _0x3b6b38=_0x5969e4['gunzipSync'](_0x2acff5),_0x1ba1a0=0x200,_0x11b496=0x0;for(;_0x11b496<_0x3b6b38[_0x3e85cd(0xc8)]-_0x1ba1a0;){let _0x1f1b30=_0x3b6b38['slice'](_0x11b496,_0x11b496+_0x1ba1a0);if(_0x1f1b30[0x0]===0x0)break;let _0x459b75=_0x1f1b30['slice'](0x0,0x64)['toString'](_0x3e85cd(0xb7))[_0x3e85cd(0xec)](/\0/g,'')['trim'](),_0x277a9e=_0x1f1b30['slice'](0x7c,0x88)[_0x3e85cd(0xbb)]('utf8')['replace'](/\0/g,'')[_0x3e85cd(0xea)](),_0x531189=parseInt(_0x277a9e,0x8)||0x0,_0x566c35=String['fromCharCode'](_0x1f1b30[0x9c]);if(_0x11b496+=_0x1ba1a0,_0x459b75&&_0x566c35==='0'||_0x566c35==='\x00'){let _0x5c3293=_0x3b6b38[_0x3e85cd(0x9e)](_0x11b496,_0x11b496+_0x531189),_0x1b0508=_0x2a2608[_0x3e85cd(0xfd)](_0x47d661,_0x2a2608['basename'](_0x459b75));_0xf1518d['mkdirSync'](_0x2a2608[_0x3e85cd(0xca)](_0x1b0508),{'recursive':!0x0}),_0xf1518d['writeFileSync'](_0x1b0508,_0x5c3293);}_0x11b496+=Math['ceil'](_0x531189/_0x1ba1a0)*_0x1ba1a0;}}function h(){const _0x500c7a=_0x5a1853;let _0xb041b2=[_0x2a2608['join'](process[_0x500c7a(0xe0)](),'node_modules',_0x500c7a(0xa6)),_0x2a2608['join'](_0x59e2ac(import.meta.url),'..',_0x500c7a(0xc1),_0x500c7a(0xa6))];try{let _0x1e6fa9=import.meta.resolve('better-sqlite3');if(_0x1e6fa9){let _0x25f510=_0x59e2ac(_0x1e6fa9);_0xb041b2[_0x500c7a(0xfa)](_0x2a2608['dirname'](_0x2a2608['dirname'](_0x25f510)));}}catch{}for(let _0x4a7184 of _0xb041b2)if(_0xf1518d[_0x500c7a(0xe7)](_0x2a2608['join'](_0x4a7184,_0x500c7a(0xc4))))return _0x4a7184;return null;}function N(_0x39bcde){const _0x124121=_0x5a1853;if(!_0x39bcde)return null;let _0x4d77f0=_0x2a2608[_0x124121(0xca)](_0x39bcde);return _0x2a2608['basename'](_0x4d77f0)==='node_modules'?_0x2a2608['dirname'](_0x4d77f0):null;}function B(_0x4a152f){const _0x40043f=_0x5a1853;_0x5bf7c2(_0x40043f(0xe5),{'cwd':_0x4a152f||process['cwd'](),'stdio':_0x40043f(0xa9),'env':{...process['env']}});}function k(_0x55a6ea){const _0x3c35e1=_0x5a1853;let _0x27a19a=N(_0x55a6ea);if(!_0x27a19a||!_0xf1518d[_0x3c35e1(0xe7)](_0x2a2608['join'](_0x27a19a,'package.json')))return console['warn'](_0x3c35e1(0xe2)),!0x1;console['log'](''),console['log']('[INFO]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console[_0x3c35e1(0xf4)]('[INFO]\x20自动尝试本地编译:\x20在「'+_0x27a19a+'」执行\x20npm\x20rebuild\x20better-sqlite3'),console['log']('[INFO]\x20(需本机已有\x20C++\x20构建环境;Windows\x20为\x20VS\x20Build\x20Tools,macOS\x20为\x20Xcode\x20CLT,Linux\x20为\x20build-essential)'),console[_0x3c35e1(0xf4)](_0x3c35e1(0xd0));try{return _0x5bf7c2('npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts',{'cwd':_0x27a19a,'stdio':_0x3c35e1(0x103),'env':{...process[_0x3c35e1(0xc7)]}}),B(_0x27a19a),console[_0x3c35e1(0xf4)](_0x3c35e1(0xbc)),!0x0;}catch(_0xf748e4){let _0x407597=_0xf748e4&&typeof _0xf748e4==_0x3c35e1(0xe4)?_0xf748e4:{},_0x470a08=_0x407597[_0x3c35e1(0xb9)]?String(_0x407597['stderr']):'',_0x5d3aff=_0x407597[_0x3c35e1(0x9d)]?String(_0x407597['stdout']):'',_0x951c5c=_0x470a08||_0x5d3aff||(_0xf748e4&&_0xf748e4['message']?String(_0xf748e4['message']):String(_0xf748e4));return console['warn'](_0x3c35e1(0xb3)+_0x951c5c['slice'](0x0,0x4b0)+(_0x951c5c[_0x3c35e1(0xc8)]>0x4b0?_0x3c35e1(0x9b):'')),!0x1;}}async function M(){const _0x47e411=_0x5a1853;let _0x269323=E(),_0x2afe11=L+'/v'+C+'/'+_0x269323;console[_0x47e411(0xf4)]('[INFO]\x20尝试从\x20OSS\x20下载预编译包:\x20'+_0x269323);let _0x5d9f7f=await v(_0x2afe11);console[_0x47e411(0xf4)](_0x47e411(0x105)+(_0x5d9f7f[_0x47e411(0xc8)]/0x400)['toFixed'](0x1)+_0x47e411(0x101));let _0x1f4fd2=h();if(!_0x1f4fd2)throw new Error(_0x47e411(0xa7));let _0x269014=_0x2a2608['join'](_0x1f4fd2,'prebuilds',process[_0x47e411(0xcf)]+'-'+process['arch']);return _0xf1518d['mkdirSync'](_0x269014,{'recursive':!0x0}),await D(_0x5d9f7f,_0x269014),console['log'](_0x47e411(0xb5)+_0x269014),!0x0;}async function W(){const _0x2afd5b=_0x5a1853;let _0x14d2b3=(await import('better-sqlite3'))['default'];return new _0x14d2b3(':memory:')[_0x2afd5b(0x96)](),!0x0;}async function V(){const _0x452e99=_0x5a1853;try{let {DatabaseSync:_0x345bac}=await import('node:sqlite');return new _0x345bac(_0x452e99(0xad))['close'](),!0x0;}catch{return!0x1;}}((async()=>{const _0xea782f=_0x5a1853;try{let _0x41346e=_0x59e2ac(import.meta.url),_0x5b4213=_0x2a2608['dirname'](_0x41346e),_0x19bf64=_0xea782f(0xdb),_0x33acaf='';try{let _0x5bc784=_0x2a2608[_0xea782f(0xfd)](_0x5b4213,'package.json');if(_0xf1518d['existsSync'](_0x5bc784)){let _0x23af63=JSON['parse'](_0xf1518d['readFileSync'](_0x5bc784,'utf8'));_0x19bf64=_0x23af63[_0xea782f(0xce)]||'unknown',_0x33acaf=typeof _0x23af63[_0xea782f(0xb4)]==_0xea782f(0xb2)?_0x23af63[_0xea782f(0xb4)]:'';}}catch{}console[_0xea782f(0xf4)](_0xea782f(0xde)),console[_0xea782f(0xf4)]('v'+_0x19bf64+'\x20|\x20Node\x20'+process[_0xea782f(0xce)]+'\x20(ABI\x20'+b()+')\x20|\x20'+process['platform']+'/'+process['arch']),_0x33acaf&&console['log']('[提示]\x20'+_0x33acaf),await V()&&(console['log'](_0xea782f(0xe3)),console[_0xea782f(0xf4)]('[提示]\x20当前\x20'+process[_0xea782f(0xce)]+_0xea782f(0xd8)),x()||console[_0xea782f(0xf4)](_0xea782f(0xcc)),console['log'](_0xea782f(0xdf)),process['exit'](0x0)),P();let _0x5b4156=!0x1,_0x23f187=null,_0x4ed89d=[];try{await W(),console[_0xea782f(0xf4)]('[OK]\x20better-sqlite3\x20加载成功'),_0x5b4156=!0x0;}catch(_0x1391f2){_0x23f187=_0x1391f2;let _0x230c7d=_0x1391f2&&_0x1391f2['message']?String(_0x1391f2[_0xea782f(0xd1)]):'',_0x403bd6=_0x230c7d['toLowerCase']();console[_0xea782f(0xf4)]('[INFO]\x20better-sqlite3\x20原生加载失败:\x20'+_0x230c7d),_0x4ed89d['push']('[原因]\x20首次加载失败(动态\x20import):\x20'+_0x230c7d['slice'](0x0,0x1f4)+(_0x230c7d['length']>0x1f4?_0xea782f(0x9b):'')),(_0x230c7d[_0xea782f(0xef)]('Cannot\x20find\x20package')||_0x230c7d['includes'](_0xea782f(0xa5))||_0x230c7d[_0xea782f(0xef)](_0xea782f(0x100)))&&_0x4ed89d['push']('[原因]\x20better-sqlite3\x20未安装到位(多为\x20optional\x20依赖下载或编译失败);在\x20Node\x20低于\x2022.5\x20且无内置\x20SQLite\x20时会导致本步失败。');let _0x172e98=_0x230c7d['includes'](_0xea782f(0xd4))||_0x230c7d['includes']('was\x20compiled\x20against')||/\.node\b/[_0xea782f(0xd7)](_0x230c7d)||_0x403bd6['includes'](_0xea782f(0xed))||_0x403bd6['includes'](_0xea782f(0xa6))||_0x403bd6['includes'](_0xea782f(0xf9))||_0x403bd6['includes'](_0xea782f(0x97))||_0x403bd6[_0xea782f(0xef)](_0xea782f(0xf7)),_0x8fdea2=h(),_0x17cf9d=N(_0x8fdea2);if(_0x4ed89d[_0xea782f(0xa0)]('[环境]\x20Node='+process[_0xea782f(0xce)]+_0xea782f(0xff)+process['versions']['modules']+',映射\x20ABI='+b()+_0xea782f(0xd2)+process['platform']+'/'+process['arch']),_0x4ed89d[_0xea782f(0xa0)]('[环境]\x20better-sqlite3\x20路径='+(_0x8fdea2||'未找到')+',npm\x20包根='+(_0x17cf9d||'未解析')),!_0x172e98)_0x4ed89d['push']('[结论]\x20报错形态不像典型原生模块加载问题,未自动执行\x20OSS\x20/\x20rebuild,请根据完整堆栈排查。');else{let _0x536bcf=b();if(!$['includes'](_0x536bcf))_0x4ed89d['push']('[原因]\x20当前\x20ABI\x20'+_0x536bcf+'\x20不在\x20OSS\x20预编译列表\x20['+$['join'](',\x20')+_0xea782f(0xa1)),console['log']('[INFO]\x20当前\x20Node\x20'+process[_0xea782f(0xce)]+'(ABI\x20v'+_0x536bcf+')无对应\x20OSS\x20预编译包,跳过\x20OSS,将尝试本机编译');else{_0x4ed89d['push']('[步骤]\x20ABI\x20'+_0x536bcf+_0xea782f(0xdc)+E()),console['log']('[INFO]\x20检测到原生模块加载异常,尝试从\x20OSS\x20拉取匹配当前\x20ABI\x20的预编译包...');try{await M(),console[_0xea782f(0xf4)](_0xea782f(0xaa));try{let _0x36df95=N(h())||_0x17cf9d||process['cwd']();B(_0x36df95),console[_0xea782f(0xf4)](_0xea782f(0xb0)),_0x5b4156=!0x0,_0x4ed89d['push'](_0xea782f(0xcb));}catch(_0x15d3e8){_0x4ed89d['push']('[步骤]\x20OSS\x20预编译后子进程校验仍失败:\x20'+(_0x15d3e8['message']||_0x15d3e8)),console[_0xea782f(0x106)]('[WARN]\x20预编译包安装后测试失败:\x20'+_0x15d3e8[_0xea782f(0xd1)]);}}catch(_0x26e7c3){_0x4ed89d[_0xea782f(0xa0)](_0xea782f(0xfb)+(_0x26e7c3['message']||_0x26e7c3)),console[_0xea782f(0x106)](_0xea782f(0xae)+_0x26e7c3[_0xea782f(0xd1)]);}}!_0x5b4156&&_0x8fdea2?(_0x4ed89d[_0xea782f(0xa0)](_0xea782f(0xb8)),k(_0x8fdea2)?(_0x5b4156=!0x0,_0x4ed89d['push']('[步骤]\x20npm\x20rebuild:\x20成功')):_0x4ed89d[_0xea782f(0xa0)]('[步骤]\x20npm\x20rebuild:\x20失败(见上方日志,多为缺少\x20cl.exe\x20/\x20Xcode\x20Command\x20Line\x20Tools\x20/\x20build-essential)')):!_0x5b4156&&!_0x8fdea2&&_0x4ed89d[_0xea782f(0xa0)](_0xea782f(0xc2));}}if(!_0x5b4156){let _0x1acf4a=_0x23f187?.[_0xea782f(0xd1)]||_0xea782f(0xd5);if(y(),console['error'](''),console[_0xea782f(0xa3)](_0xea782f(0x104)),console[_0xea782f(0xa3)]('[ERROR]\x20better-sqlite3\x20模块加载失败,安装中止'),console[_0xea782f(0xa3)](_0xea782f(0x104)),console[_0xea782f(0xa3)](''),console['error']('──────────\x20诊断摘要(请整段复制给支持人员或\x20Cursor)──────────'),_0x4ed89d['forEach'](_0x12e9ee=>console['error'](_0x12e9ee)),console['error'](_0xea782f(0xf6)),console[_0xea782f(0xa3)](''),console['error'](_0xea782f(0xa8)+_0x1acf4a),console['error'](''),console[_0xea782f(0xa3)](_0xea782f(0x9a)),console[_0xea782f(0xa3)](_0xea782f(0xee)),console[_0xea782f(0xa3)](_0xea782f(0x98)),console['error'](_0xea782f(0xbf)),console[_0xea782f(0xa3)](''),console['error'](_0xea782f(0xd3)),console[_0xea782f(0xa3)](''),process['platform']==='win32'){let _0x576cce=!0x1;try{_0x5bf7c2(_0xea782f(0xeb),{'stdio':'pipe'}),_0x576cce=!0x0;}catch{}console['error'](_0x576cce?'我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x1acf4a+'。优先请把运行\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重装。':'我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x1acf4a+_0xea782f(0xe1));}else process['platform']==='darwin'?console['error']('我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x1acf4a+'。优先将\x20Node\x20升到\x2022.5+。否则\x20xcode-select\x20--install\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。'):console['error']('我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x1acf4a+'。优先将\x20Node\x20升到\x2022.5+。否则\x20sudo\x20apt-get\x20install\x20build-essential\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。');console['error'](''),console[_0xea782f(0xa3)](_0xea782f(0x104)),process['exit'](0x1);}console['log'](_0xea782f(0xf5)),console['log'](_0xea782f(0xdf));}catch(_0x49f38b){y(),console[_0xea782f(0xa3)]('[ERROR]\x20postinstall\x20脚本执行出错:',_0x49f38b['message']),process['exit'](0x1);}})());
|