@bangdao-ai/acw-tools 1.13.18 → 1.13.21
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 +1 -1
- package/package.json +1 -1
- package/postinstall.js +1 -1
package/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ACW工具集",
|
|
3
3
|
"description": "ACW平台工具集:智能下载规则/技能到项目、上传技能到Skills广场、搜索技能、检查技能更新、上传/下载/检索个人知识库",
|
|
4
|
-
"version": "1.13.
|
|
4
|
+
"version": "1.13.21",
|
|
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
package/postinstall.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const _0x5bb6fb=_0x10b0;(function(_0x2dcf11,_0x16fc57){const _0x27fb4d=_0x10b0,_0x5b0638=_0x2dcf11();while(!![]){try{const _0x2d94d1=-parseInt(_0x27fb4d(0x1aa))/0x1+-parseInt(_0x27fb4d(0x1a0))/0x2+-parseInt(_0x27fb4d(0x133))/0x3*(-parseInt(_0x27fb4d(0x18a))/0x4)+parseInt(_0x27fb4d(0x13f))/0x5+parseInt(_0x27fb4d(0x18c))/0x6+parseInt(_0x27fb4d(0x1ab))/0x7*(-parseInt(_0x27fb4d(0x169))/0x8)+parseInt(_0x27fb4d(0x134))/0x9;if(_0x2d94d1===_0x16fc57)break;else _0x5b0638['push'](_0x5b0638['shift']());}catch(_0x4a4f3f){_0x5b0638['push'](_0x5b0638['shift']());}}}(_0xdb20,0x63109));import _0x7a9a8d from'fs';import _0x4e0c31 from'path';import{fileURLToPath as _0x24bd2e}from'url';import{execSync as _0x538eb8}from'child_process';import _0x37b9a4 from'https';import _0x26b24b from'http';function _0xdb20(){const _0x292ca1=['writeFileSync','我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:','split','5278408BkTMBi','(ABI\x20v','env','error','复制以下提示词发送给\x20Cursor,让\x20AI\x20帮你修复:',':memory:','concat','建议:将运行「npx\x20@bangdao-ai/acw-tools」的\x20Node\x20升级到\x2022.5\x20及以上,本包将改用内置\x20SQLite,一般不再需要编译。','[提示]\x20\x20\x20该版本起\x20Node\x20内置「node:sqlite」,安装时无需\x20better-sqlite3,Windows\x20上可避免出现「模块编译失败」。','未解析','[原因]\x20better-sqlite3\x20未安装到位(多为\x20optional\x20依赖下载或编译失败);在\x20Node\x20低于\x2022.5\x20且无内置\x20SQLite\x20时会导致本步失败。','length','[步骤]\x20OSS\x20预编译\x20+\x20子进程校验:\x20成功','\x20\x203)\x20再执行\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools。','better-sqlite3','──────────\x20给用户的说明(安装失败)──────────','versions','127','──────────\x20诊断摘要(请整段复制给支持人员或\x20Cursor)──────────','137','12.4.1','fromCharCode','trim','node_modules','cwd','message','────────────────────────────────────────────','forEach','\x20\x202)\x20若必须留在旧\x20Node:安装\x20C++\x20工具链后在包根目录执行\x20npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts;',',未检测到可用的内置\x20node:sqlite(或运行时被禁用),因此走可选依赖\x20better-sqlite3。','[提示]\x20【你当前的情况】当前为\x20','stderr','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','2166452jtgADA','package.json','798282BVLHVI','includes','HTTP\x20','[INFO]\x20预编译包已安装,重新测试...',',映射\x20ABI=','[步骤]\x20npm\x20rebuild:\x20成功','\x20满足「内置\x20SQLite」路径:对话抓取不依赖\x20better-sqlite3,Windows\x20上无需\x20VS\x20Build\x20Tools\x20即可避免「模块编译失败」。','location','https://bd-acw.oss-cn-beijing.aliyuncs.com/prebuilds/better-sqlite3','[提示]\x20\x20\x20·\x20任意系统:执行\x20npx\x20的\x20Node\x20版本与当初编译该模块的\x20Node\x20ABI\x20不一致(报\x20NODE_MODULE_VERSION\x20/\x20was\x20compiled\x20against);','\x20|\x20Node\x20','prebuilds','get','close','arch','[步骤]\x20ABI\x20','existsSync','where\x20cl.exe','[步骤]\x20OSS\x20预编译后子进程校验仍失败:\x20','replace','1279350YjdelH','[INFO]\x20下载成功\x20(','[WARN]\x20预编译包安装后测试失败:\x20','131','未知错误','...',',平台=','[提示]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','[步骤]\x20npm\x20rebuild:\x20失败(见上方日志,多为缺少\x20cl.exe\x20/\x20Xcode\x20Command\x20Line\x20Tools\x20/\x20build-essential)','[结论]\x20报错形态不像典型原生模块加载问题,未自动执行\x20OSS\x20/\x20rebuild,请根据完整堆栈排查。','281588yoFMqA','7pbruAe','slice','根因:它需要与本机\x20Node\x20版本匹配的\x20C++\x20二进制;Windows\x20上缺\x20VS\x20Build\x20Tools\x20时极易报错。','3FofMdY','10384263eNoAlK','Request\x20timeout','not\x20a\x20valid\x20win32','ceil','https','then','[OK]\x20安装完成','-node-v','statusCode','unshift','catch','791830YSVpzt','。优先将\x20Node\x20升到\x2022.5+。否则\x20xcode-select\x20--install\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。','toString','platform','mkdirSync','log','。优先请把运行\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重装。','[步骤]\x20OSS\x20下载或解压失败:\x20','modules','join','timeout','111','acwInstallNote','version','[INFO]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','exit','unknown','stdout','[INFO]\x20尝试从\x20OSS\x20下载预编译包:\x20','utf8','basename','[提示]\x20说明:检测通过但主版本号低于文档推荐的\x2022.5+,若日后升级\x20Node,请以实际是否仍含\x20node:sqlite\x20为准。','[原因]\x20当前\x20ABI\x20','Cannot\x20find\x20package','push','。优先请把运行\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]\x20npm\x20rebuild\x20未成功:\x20','[提示]\x20当前通过\x20better-sqlite3\x20完成检查。若希望免去原生依赖,可将\x20Node\x20升级到\x2022.5\x20及以上。',',process.versions.modules=','无法找到\x20better-sqlite3\x20模块路径','[提示]\x20\x20\x20·\x20Windows:未安装\x20Visual\x20Studio\x20Build\x20Tools(缺\x20cl.exe),node-gyp\x20无法编译;','.tar.gz','win32','dirname','],不会下载预编译包(避免错配二进制)。将尝试本机\x20npm\x20rebuild。','warn','[提示]\x20\x20\x20·\x20公司网络拦截导致预编译包下载失败,被迫本地编译但本机无工具链。','was\x20compiled\x20against','[环境]\x20Node='];_0xdb20=function(){return _0x292ca1;};return _0xdb20();}import _0x2634f1 from'zlib';var C=_0x5bb6fb(0x17d),L=_0x5bb6fb(0x194),F={0x12:'108',0x13:_0x5bb6fb(0x14a),0x14:'115',0x15:'120',0x16:'127',0x17:_0x5bb6fb(0x1a3),0x18:_0x5bb6fb(0x17c),0x19:'137'},$=['115',_0x5bb6fb(0x17a),'131',_0x5bb6fb(0x17c)],I=parseInt(process['version'][_0x5bb6fb(0x1ac)](0x1)[_0x5bb6fb(0x168)]('.')[0x0],0xa),T=((()=>{let _0x57d03a=process['version']['slice'](0x1)['split']('.');return parseInt(_0x57d03a[0x1]||'0',0xa);})());function x(){return I>0x16||I===0x16&&T>=0x5;}function P(){const _0x20d16c=_0x5bb6fb;console['log'](''),console[_0x20d16c(0x144)](_0x20d16c(0x1a7)),console['log']('[提示]\x20【本包为什么要动\x20SQLite】需要读取\x20Cursor\x20本地的\x20state.vscdb(对话与\x20composer\x20数据)。'),console[_0x20d16c(0x144)]('[提示]\x20【推荐环境】请使用\x20Node.js\x2022.5\x20及以上(LTS\x2022\x20的最新小版本即可)。'),console['log'](_0x20d16c(0x171)),console[_0x20d16c(0x144)](_0x20d16c(0x187)+process['version']+_0x20d16c(0x186)),console['log']('[提示]\x20【为什么会编译失败】better-sqlite3\x20含\x20C++\x20扩展(.node\x20文件)。常见原因:'),console['log'](_0x20d16c(0x15d)),console['log'](_0x20d16c(0x195)),console['log'](_0x20d16c(0x163)),console['log']('[提示]\x20【解决办法优先级】①\x20将运行\x20npx\x20的\x20Node\x20升级到\x2022.5+(最省事);②\x20安装对应系统的\x20C++\x20编译环境后再装本包;③\x20确保\x20Cursor\x20/\x20终端使用同一份\x20Node,避免\x20ABI\x20混用。'),console['log'](_0x20d16c(0x1a7)),console[_0x20d16c(0x144)]('');}function y(){const _0x4e5ece=_0x5bb6fb;console[_0x4e5ece(0x16c)](''),console[_0x4e5ece(0x16c)](_0x4e5ece(0x178)),console[_0x4e5ece(0x16c)]('本步骤失败,几乎总是「可选依赖\x20better-sqlite3」的原生模块无法在您当前环境加载或编译。'),console['error'](_0x4e5ece(0x132)),console[_0x4e5ece(0x16c)](_0x4e5ece(0x170)),console[_0x4e5ece(0x16c)]('package.json\x20中\x20engines\x20为\x20node>=20;要免编译、少踩坑,请以\x2022.5+\x20为准。'),console['error'](_0x4e5ece(0x183));}function b(){const _0x576b61=_0x5bb6fb;let _0x5e9dac=parseInt(process[_0x576b61(0x14c)][_0x576b61(0x1ac)](0x1)[_0x576b61(0x168)]('.')[0x0],0xa);return F[_0x5e9dac]||process[_0x576b61(0x179)][_0x576b61(0x147)];}function E(){const _0x1c3eda=_0x5bb6fb;let _0xb8acd=C,_0x5a65eb=b(),_0x1032b7=process[_0x1c3eda(0x142)],_0x31a833=process[_0x1c3eda(0x19a)];return'better-sqlite3-v'+_0xb8acd+_0x1c3eda(0x13b)+_0x5a65eb+'-'+_0x1032b7+'-'+_0x31a833+_0x1c3eda(0x15e);}function v(_0x3ebd78){return new Promise((_0x4e6dc2,_0x31049b)=>{const _0x1f3f47=_0x10b0;let _0x4ed1ce=(_0x3ebd78['startsWith'](_0x1f3f47(0x138))?_0x37b9a4:_0x26b24b)[_0x1f3f47(0x198)](_0x3ebd78,{'timeout':0x7530},_0x237828=>{const _0x568117=_0x1f3f47;if(_0x237828[_0x568117(0x13c)]===0x12d||_0x237828['statusCode']===0x12e){v(_0x237828['headers'][_0x568117(0x193)])[_0x568117(0x139)](_0x4e6dc2)[_0x568117(0x13e)](_0x31049b);return;}if(_0x237828[_0x568117(0x13c)]!==0xc8){_0x31049b(new Error(_0x568117(0x18e)+_0x237828[_0x568117(0x13c)]));return;}let _0x4f0e12=[];_0x237828['on']('data',_0x7776e8=>_0x4f0e12['push'](_0x7776e8)),_0x237828['on']('end',()=>_0x4e6dc2(Buffer[_0x568117(0x16f)](_0x4f0e12))),_0x237828['on'](_0x568117(0x16c),_0x31049b);});_0x4ed1ce['on'](_0x1f3f47(0x16c),_0x31049b),_0x4ed1ce['on'](_0x1f3f47(0x149),()=>{const _0x3ea736=_0x1f3f47;_0x4ed1ce['destroy'](),_0x31049b(new Error(_0x3ea736(0x135)));});});}async function D(_0x5d001f,_0x1b68a1){const _0x28654a=_0x5bb6fb;let _0x2135bd=_0x2634f1['gunzipSync'](_0x5d001f),_0x3a19be=0x200,_0x215c5f=0x0;for(;_0x215c5f<_0x2135bd['length']-_0x3a19be;){let _0x318963=_0x2135bd['slice'](_0x215c5f,_0x215c5f+_0x3a19be);if(_0x318963[0x0]===0x0)break;let _0x3e819a=_0x318963['slice'](0x0,0x64)[_0x28654a(0x141)]('utf8')['replace'](/\0/g,'')['trim'](),_0x2b34fc=_0x318963[_0x28654a(0x1ac)](0x7c,0x88)['toString'](_0x28654a(0x152))[_0x28654a(0x19f)](/\0/g,'')[_0x28654a(0x17f)](),_0x2c3c01=parseInt(_0x2b34fc,0x8)||0x0,_0xc2a05a=String[_0x28654a(0x17e)](_0x318963[0x9c]);if(_0x215c5f+=_0x3a19be,_0x3e819a&&_0xc2a05a==='0'||_0xc2a05a==='\x00'){let _0x44214b=_0x2135bd['slice'](_0x215c5f,_0x215c5f+_0x2c3c01),_0x5e5546=_0x4e0c31[_0x28654a(0x148)](_0x1b68a1,_0x4e0c31[_0x28654a(0x153)](_0x3e819a));_0x7a9a8d[_0x28654a(0x143)](_0x4e0c31[_0x28654a(0x160)](_0x5e5546),{'recursive':!0x0}),_0x7a9a8d[_0x28654a(0x166)](_0x5e5546,_0x44214b);}_0x215c5f+=Math[_0x28654a(0x137)](_0x2c3c01/_0x3a19be)*_0x3a19be;}}function h(){const _0x3ee571=_0x5bb6fb;let _0x5a0480=[_0x4e0c31['join'](process['cwd'](),'node_modules',_0x3ee571(0x177)),_0x4e0c31['join'](_0x24bd2e(import.meta.url),'..',_0x3ee571(0x180),_0x3ee571(0x177))];try{let _0x1c032b=import.meta.resolve('better-sqlite3');if(_0x1c032b){let _0x3b117d=_0x24bd2e(_0x1c032b);_0x5a0480[_0x3ee571(0x13d)](_0x4e0c31['dirname'](_0x4e0c31['dirname'](_0x3b117d)));}}catch{}for(let _0x4eab5b of _0x5a0480)if(_0x7a9a8d['existsSync'](_0x4e0c31['join'](_0x4eab5b,_0x3ee571(0x18b))))return _0x4eab5b;return null;}function N(_0x555bbd){const _0x93a781=_0x5bb6fb;if(!_0x555bbd)return null;let _0x54293f=_0x4e0c31['dirname'](_0x555bbd);return _0x4e0c31['basename'](_0x54293f)===_0x93a781(0x180)?_0x4e0c31[_0x93a781(0x160)](_0x54293f):null;}function B(_0x4daa16){const _0x6d669=_0x5bb6fb;_0x538eb8('node\x20-e\x20\x22require(\x27better-sqlite3\x27)(\x27:memory:\x27).close()\x22',{'cwd':_0x4daa16||process['cwd'](),'stdio':'pipe','env':{...process[_0x6d669(0x16b)]}});}function _0x10b0(_0x3a8438,_0x4c0f9a){_0x3a8438=_0x3a8438-0x132;const _0xdb207a=_0xdb20();let _0x10b011=_0xdb207a[_0x3a8438];return _0x10b011;}function k(_0x3e587a){const _0x28cdb5=_0x5bb6fb;let _0x1337eb=N(_0x3e587a);if(!_0x1337eb||!_0x7a9a8d['existsSync'](_0x4e0c31[_0x28cdb5(0x148)](_0x1337eb,_0x28cdb5(0x18b))))return console[_0x28cdb5(0x162)]('[WARN]\x20无法确定\x20npm\x20包根目录,跳过\x20npm\x20rebuild'),!0x1;console['log'](''),console[_0x28cdb5(0x144)](_0x28cdb5(0x14d)),console['log']('[INFO]\x20自动尝试本地编译:\x20在「'+_0x1337eb+'」执行\x20npm\x20rebuild\x20better-sqlite3'),console[_0x28cdb5(0x144)]('[INFO]\x20(需本机已有\x20C++\x20构建环境;Windows\x20为\x20VS\x20Build\x20Tools,macOS\x20为\x20Xcode\x20CLT,Linux\x20为\x20build-essential)'),console[_0x28cdb5(0x144)](_0x28cdb5(0x14d));try{return _0x538eb8('npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts',{'cwd':_0x1337eb,'stdio':'inherit','env':{...process[_0x28cdb5(0x16b)]}}),B(_0x1337eb),console[_0x28cdb5(0x144)]('[OK]\x20npm\x20rebuild\x20成功,better-sqlite3\x20已可加载'),!0x0;}catch(_0x12141c){let _0x46f800=_0x12141c&&typeof _0x12141c=='object'?_0x12141c:{},_0x5cd247=_0x46f800[_0x28cdb5(0x188)]?String(_0x46f800[_0x28cdb5(0x188)]):'',_0x221b28=_0x46f800[_0x28cdb5(0x150)]?String(_0x46f800['stdout']):'',_0x78ceae=_0x5cd247||_0x221b28||(_0x12141c&&_0x12141c['message']?String(_0x12141c['message']):String(_0x12141c));return console[_0x28cdb5(0x162)](_0x28cdb5(0x159)+_0x78ceae['slice'](0x0,0x4b0)+(_0x78ceae['length']>0x4b0?_0x28cdb5(0x1a5):'')),!0x1;}}async function M(){const _0x41a23e=_0x5bb6fb;let _0x3c3976=E(),_0x37daad=L+'/v'+C+'/'+_0x3c3976;console['log'](_0x41a23e(0x151)+_0x3c3976);let _0x5ece6a=await v(_0x37daad);console[_0x41a23e(0x144)](_0x41a23e(0x1a1)+(_0x5ece6a[_0x41a23e(0x174)]/0x400)['toFixed'](0x1)+'\x20KB)');let _0x43415b=h();if(!_0x43415b)throw new Error(_0x41a23e(0x15c));let _0x1a30ec=_0x4e0c31[_0x41a23e(0x148)](_0x43415b,_0x41a23e(0x197),process[_0x41a23e(0x142)]+'-'+process[_0x41a23e(0x19a)]);return _0x7a9a8d[_0x41a23e(0x143)](_0x1a30ec,{'recursive':!0x0}),await D(_0x5ece6a,_0x1a30ec),console['log']('[INFO]\x20预编译包已安装到:\x20'+_0x1a30ec),!0x0;}async function W(){let _0x826a95=(await import('better-sqlite3'))['default'];return new _0x826a95(':memory:')['close'](),!0x0;}async function V(){const _0x276b61=_0x5bb6fb;try{let {DatabaseSync:_0x54d908}=await import('node:sqlite');return new _0x54d908(_0x276b61(0x16e))[_0x276b61(0x199)](),!0x0;}catch{return!0x1;}}((async()=>{const _0x52d2c1=_0x5bb6fb;try{let _0x1c8d8e=_0x24bd2e(import.meta.url),_0x1cc5c0=_0x4e0c31['dirname'](_0x1c8d8e),_0xb370a9='unknown',_0x48141e='';try{let _0x2c0c00=_0x4e0c31['join'](_0x1cc5c0,'package.json');if(_0x7a9a8d[_0x52d2c1(0x19c)](_0x2c0c00)){let _0x4613c4=JSON['parse'](_0x7a9a8d['readFileSync'](_0x2c0c00,_0x52d2c1(0x152)));_0xb370a9=_0x4613c4['version']||_0x52d2c1(0x14f),_0x48141e=typeof _0x4613c4[_0x52d2c1(0x14b)]=='string'?_0x4613c4[_0x52d2c1(0x14b)]:'';}}catch{}console[_0x52d2c1(0x144)]('ACW\x20Tools\x20MCP\x20安装后检查...'),console[_0x52d2c1(0x144)]('v'+_0xb370a9+_0x52d2c1(0x196)+process[_0x52d2c1(0x14c)]+'\x20(ABI\x20'+b()+')\x20|\x20'+process['platform']+'/'+process[_0x52d2c1(0x19a)]),_0x48141e&&console[_0x52d2c1(0x144)]('[提示]\x20'+_0x48141e),await V()&&(console['log']('[OK]\x20已检测到\x20Node\x20内置\x20node:sqlite,安装检查通过。'),console[_0x52d2c1(0x144)]('[提示]\x20当前\x20'+process[_0x52d2c1(0x14c)]+_0x52d2c1(0x192)),x()||console['log'](_0x52d2c1(0x154)),console[_0x52d2c1(0x144)](_0x52d2c1(0x13a)),process[_0x52d2c1(0x14e)](0x0)),P();let _0x21a903=!0x1,_0x4f3cfd=null,_0x5c32e2=[];try{await W(),console['log']('[OK]\x20better-sqlite3\x20加载成功'),_0x21a903=!0x0;}catch(_0x6b1568){_0x4f3cfd=_0x6b1568;let _0x437f43=_0x6b1568&&_0x6b1568['message']?String(_0x6b1568['message']):'',_0x567e9f=_0x437f43['toLowerCase']();console['log']('[INFO]\x20better-sqlite3\x20原生加载失败:\x20'+_0x437f43),_0x5c32e2['push']('[原因]\x20首次加载失败(动态\x20import):\x20'+_0x437f43['slice'](0x0,0x1f4)+(_0x437f43['length']>0x1f4?_0x52d2c1(0x1a5):'')),(_0x437f43['includes'](_0x52d2c1(0x156))||_0x437f43[_0x52d2c1(0x18d)]('ERR_MODULE_NOT_FOUND')||_0x437f43[_0x52d2c1(0x18d)]('MODULE_NOT_FOUND'))&&_0x5c32e2['push'](_0x52d2c1(0x173));let _0x4a0148=_0x437f43['includes']('NODE_MODULE_VERSION')||_0x437f43[_0x52d2c1(0x18d)](_0x52d2c1(0x164))||/\.node\b/['test'](_0x437f43)||_0x567e9f['includes']('better_sqlite3')||_0x567e9f[_0x52d2c1(0x18d)]('better-sqlite3')||_0x567e9f['includes']('dlopen')||_0x567e9f['includes']('invalid\x20ELF')||_0x567e9f[_0x52d2c1(0x18d)](_0x52d2c1(0x136)),_0x52afa5=h(),_0x2cdd69=N(_0x52afa5);if(_0x5c32e2['push'](_0x52d2c1(0x165)+process[_0x52d2c1(0x14c)]+_0x52d2c1(0x15b)+process['versions'][_0x52d2c1(0x147)]+_0x52d2c1(0x190)+b()+_0x52d2c1(0x1a6)+process[_0x52d2c1(0x142)]+'/'+process[_0x52d2c1(0x19a)]),_0x5c32e2[_0x52d2c1(0x157)]('[环境]\x20better-sqlite3\x20路径='+(_0x52afa5||'未找到')+',npm\x20包根='+(_0x2cdd69||_0x52d2c1(0x172))),!_0x4a0148)_0x5c32e2[_0x52d2c1(0x157)](_0x52d2c1(0x1a9));else{let _0x53873b=b();if(!$['includes'](_0x53873b))_0x5c32e2[_0x52d2c1(0x157)](_0x52d2c1(0x155)+_0x53873b+'\x20不在\x20OSS\x20预编译列表\x20['+$[_0x52d2c1(0x148)](',\x20')+_0x52d2c1(0x161)),console['log']('[INFO]\x20当前\x20Node\x20'+process['version']+_0x52d2c1(0x16a)+_0x53873b+')无对应\x20OSS\x20预编译包,跳过\x20OSS,将尝试本机编译');else{_0x5c32e2[_0x52d2c1(0x157)](_0x52d2c1(0x19b)+_0x53873b+'\x20在预编译列表内,尝试\x20OSS:\x20'+E()),console['log']('[INFO]\x20检测到原生模块加载异常,尝试从\x20OSS\x20拉取匹配当前\x20ABI\x20的预编译包...');try{await M(),console[_0x52d2c1(0x144)](_0x52d2c1(0x18f));try{let _0x5b555f=N(h())||_0x2cdd69||process[_0x52d2c1(0x181)]();B(_0x5b555f),console[_0x52d2c1(0x144)]('[OK]\x20better-sqlite3\x20修复成功(OSS\x20预编译)'),_0x21a903=!0x0,_0x5c32e2[_0x52d2c1(0x157)](_0x52d2c1(0x175));}catch(_0x44af46){_0x5c32e2[_0x52d2c1(0x157)](_0x52d2c1(0x19e)+(_0x44af46['message']||_0x44af46)),console[_0x52d2c1(0x162)](_0x52d2c1(0x1a2)+_0x44af46[_0x52d2c1(0x182)]);}}catch(_0x479d10){_0x5c32e2[_0x52d2c1(0x157)](_0x52d2c1(0x146)+(_0x479d10[_0x52d2c1(0x182)]||_0x479d10)),console['warn']('[WARN]\x20OSS\x20预编译包下载或解压失败:\x20'+_0x479d10['message']);}}!_0x21a903&&_0x52afa5?(_0x5c32e2['push']('[步骤]\x20执行自动\x20npm\x20rebuild\x20better-sqlite3(本机源码编译)'),k(_0x52afa5)?(_0x21a903=!0x0,_0x5c32e2['push'](_0x52d2c1(0x191))):_0x5c32e2['push'](_0x52d2c1(0x1a8))):!_0x21a903&&!_0x52afa5&&_0x5c32e2['push']('[步骤]\x20未找到\x20better-sqlite3\x20目录,无法执行\x20npm\x20rebuild');}}if(!_0x21a903){let _0x313ce2=_0x4f3cfd?.[_0x52d2c1(0x182)]||_0x52d2c1(0x1a4);if(y(),console[_0x52d2c1(0x16c)](''),console['error'](_0x52d2c1(0x189)),console['error']('[ERROR]\x20better-sqlite3\x20模块加载失败,安装中止'),console['error'](_0x52d2c1(0x189)),console[_0x52d2c1(0x16c)](''),console['error'](_0x52d2c1(0x17b)),_0x5c32e2[_0x52d2c1(0x184)](_0x115ff9=>console[_0x52d2c1(0x16c)](_0x115ff9)),console[_0x52d2c1(0x16c)]('────────────────────────────────────────────────────────────'),console[_0x52d2c1(0x16c)](''),console[_0x52d2c1(0x16c)]('首错原文:\x20'+_0x313ce2),console['error'](''),console['error']('说明:\x20已尝试\x20OSS\x20预编译与\x20npm\x20rebuild。仍失败时:务必把运行\x20npx\x20的\x20Node\x20升到\x2022.5+(内置\x20SQLite,从根上避免本问题)。其余检查:'),console[_0x52d2c1(0x16c)]('\x20\x201)\x20终端执行\x20node\x20-v\x20与\x20Cursor\x20调起\x20MCP\x20用的是否为同一\x20Node;'),console['error'](_0x52d2c1(0x185)),console[_0x52d2c1(0x16c)](_0x52d2c1(0x176)),console['error'](''),console[_0x52d2c1(0x16c)](_0x52d2c1(0x16d)),console['error'](''),process['platform']===_0x52d2c1(0x15f)){let _0xc44311=!0x1;try{_0x538eb8(_0x52d2c1(0x19d),{'stdio':'pipe'}),_0xc44311=!0x0;}catch{}console[_0x52d2c1(0x16c)](_0xc44311?'我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x313ce2+_0x52d2c1(0x145):'我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x313ce2+_0x52d2c1(0x158));}else process['platform']==='darwin'?console['error'](_0x52d2c1(0x167)+_0x313ce2+_0x52d2c1(0x140)):console['error']('我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x313ce2+'。优先将\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['exit'](0x1);}console[_0x52d2c1(0x144)](_0x52d2c1(0x15a)),console[_0x52d2c1(0x144)]('[OK]\x20安装完成');}catch(_0x13375f){y(),console['error']('[ERROR]\x20postinstall\x20脚本执行出错:',_0x13375f[_0x52d2c1(0x182)]),process[_0x52d2c1(0x14e)](0x1);}})());
|
|
2
|
+
const _0x447759=_0x4790;(function(_0x310d5f,_0x3d112f){const _0x2241a9=_0x4790,_0x5cb490=_0x310d5f();while(!![]){try{const _0x57d7fb=parseInt(_0x2241a9(0x1f3))/0x1+-parseInt(_0x2241a9(0x21c))/0x2+parseInt(_0x2241a9(0x1e3))/0x3*(parseInt(_0x2241a9(0x20b))/0x4)+parseInt(_0x2241a9(0x213))/0x5+-parseInt(_0x2241a9(0x1d3))/0x6+parseInt(_0x2241a9(0x204))/0x7*(-parseInt(_0x2241a9(0x1b8))/0x8)+-parseInt(_0x2241a9(0x1e2))/0x9;if(_0x57d7fb===_0x3d112f)break;else _0x5cb490['push'](_0x5cb490['shift']());}catch(_0x574abb){_0x5cb490['push'](_0x5cb490['shift']());}}}(_0xab9d,0x4b49d));import _0x161e0f from'fs';import _0x1964fd from'path';import{fileURLToPath as _0x2034a9}from'url';import{execSync as _0x36b67d}from'child_process';import _0x307bb3 from'https';import _0x4497c4 from'http';function _0x4790(_0x39b0ff,_0x2deb74){_0x39b0ff=_0x39b0ff-0x1a4;const _0xab9dd6=_0xab9d();let _0x47909f=_0xab9dd6[_0x39b0ff];return _0x47909f;}import _0x45a603 from'zlib';var C=_0x447759(0x1c0),L=_0x447759(0x1cb),F={0x12:_0x447759(0x212),0x13:'111',0x14:_0x447759(0x1e9),0x15:_0x447759(0x1d1),0x16:_0x447759(0x1a7),0x17:_0x447759(0x1ea),0x18:_0x447759(0x1aa),0x19:_0x447759(0x1aa)},$=['115','127','131','137'],I=parseInt(process[_0x447759(0x1c9)][_0x447759(0x20e)](0x1)[_0x447759(0x21e)]('.')[0x0],0xa),T=((()=>{let _0x3f865f=process['version']['slice'](0x1)['split']('.');return parseInt(_0x3f865f[0x1]||'0',0xa);})());function x(){return I>0x16||I===0x16&&T>=0x5;}function P(){const _0x52793e=_0x447759;console[_0x52793e(0x1ad)](''),console[_0x52793e(0x1ad)](_0x52793e(0x1f9)),console['log'](_0x52793e(0x201)),console['log'](_0x52793e(0x1c6)),console['log'](_0x52793e(0x1ab)),console['log']('[提示]\x20【你当前的情况】当前为\x20'+process['version']+',未检测到可用的内置\x20node:sqlite(或运行时被禁用),因此走可选依赖\x20better-sqlite3。'),console[_0x52793e(0x1ad)](_0x52793e(0x21f)),console[_0x52793e(0x1ad)](_0x52793e(0x1bd)),console[_0x52793e(0x1ad)]('[提示]\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'](_0x52793e(0x1cd)),console['log'](_0x52793e(0x1f9)),console[_0x52793e(0x1ad)]('');}function y(){const _0x3ea3ca=_0x447759;console['error'](''),console[_0x3ea3ca(0x1bc)](_0x3ea3ca(0x1de)),console['error'](_0x3ea3ca(0x1f0)),console['error'](_0x3ea3ca(0x1fd)),console[_0x3ea3ca(0x1bc)](_0x3ea3ca(0x200)),console['error']('package.json\x20中\x20engines\x20为\x20node>=20;要免编译、少踩坑,请以\x2022.5+\x20为准。'),console[_0x3ea3ca(0x1bc)](_0x3ea3ca(0x1be));}function b(){const _0x4e0dde=_0x447759;let _0x3d543a=parseInt(process['version'][_0x4e0dde(0x20e)](0x1)[_0x4e0dde(0x21e)]('.')[0x0],0xa);return F[_0x3d543a]||process[_0x4e0dde(0x1dc)]['modules'];}function E(){const _0x3de970=_0x447759;let _0x296b80=C,_0x1ecca7=b(),_0x2194d2=process[_0x3de970(0x1ba)],_0x13173a=process['arch'];return _0x3de970(0x1b5)+_0x296b80+_0x3de970(0x1f1)+_0x1ecca7+'-'+_0x2194d2+'-'+_0x13173a+_0x3de970(0x1fc);}function v(_0x1eab2b){return new Promise((_0x1ad740,_0x28198c)=>{const _0x2db6d6=_0x4790;let _0x2679dc=(_0x1eab2b['startsWith'](_0x2db6d6(0x1f4))?_0x307bb3:_0x4497c4)[_0x2db6d6(0x1f7)](_0x1eab2b,{'timeout':0x7530},_0x1b6e90=>{const _0x2c4ca4=_0x2db6d6;if(_0x1b6e90[_0x2c4ca4(0x1e8)]===0x12d||_0x1b6e90['statusCode']===0x12e){v(_0x1b6e90['headers'][_0x2c4ca4(0x1b6)])['then'](_0x1ad740)[_0x2c4ca4(0x206)](_0x28198c);return;}if(_0x1b6e90[_0x2c4ca4(0x1e8)]!==0xc8){_0x28198c(new Error(_0x2c4ca4(0x1ec)+_0x1b6e90['statusCode']));return;}let _0x522dc8=[];_0x1b6e90['on']('data',_0x333899=>_0x522dc8['push'](_0x333899)),_0x1b6e90['on'](_0x2c4ca4(0x1ee),()=>_0x1ad740(Buffer['concat'](_0x522dc8))),_0x1b6e90['on']('error',_0x28198c);});_0x2679dc['on'](_0x2db6d6(0x1bc),_0x28198c),_0x2679dc['on'](_0x2db6d6(0x1c2),()=>{const _0x597415=_0x2db6d6;_0x2679dc['destroy'](),_0x28198c(new Error(_0x597415(0x1a5)));});});}async function D(_0x540959,_0x396e4f){const _0x38b2b5=_0x447759;let _0x576442=_0x45a603['gunzipSync'](_0x540959),_0x347308=0x200,_0x4e06bf=0x0;for(;_0x4e06bf<_0x576442['length']-_0x347308;){let _0x167cad=_0x576442['slice'](_0x4e06bf,_0x4e06bf+_0x347308);if(_0x167cad[0x0]===0x0)break;let _0x2010b2=_0x167cad['slice'](0x0,0x64)[_0x38b2b5(0x215)]('utf8')['replace'](/\0/g,'')[_0x38b2b5(0x203)](),_0x1b0706=_0x167cad[_0x38b2b5(0x20e)](0x7c,0x88)['toString']('utf8')[_0x38b2b5(0x1c7)](/\0/g,'')[_0x38b2b5(0x203)](),_0x2e5007=parseInt(_0x1b0706,0x8)||0x0,_0x486089=String['fromCharCode'](_0x167cad[0x9c]);if(_0x4e06bf+=_0x347308,_0x2010b2&&_0x486089==='0'||_0x486089==='\x00'){let _0x556531=_0x576442[_0x38b2b5(0x20e)](_0x4e06bf,_0x4e06bf+_0x2e5007),_0x6036=_0x1964fd[_0x38b2b5(0x1da)](_0x396e4f,_0x1964fd['basename'](_0x2010b2));_0x161e0f['mkdirSync'](_0x1964fd['dirname'](_0x6036),{'recursive':!0x0}),_0x161e0f['writeFileSync'](_0x6036,_0x556531);}_0x4e06bf+=Math[_0x38b2b5(0x1d9)](_0x2e5007/_0x347308)*_0x347308;}}function h(){const _0x1446c3=_0x447759;let _0xeb8d34=[_0x1964fd[_0x1446c3(0x1da)](process['cwd'](),'node_modules',_0x1446c3(0x1d6)),_0x1964fd[_0x1446c3(0x1da)](_0x2034a9(import.meta.url),'..',_0x1446c3(0x220),_0x1446c3(0x1d6))];try{let _0x42e285=import.meta.resolve('better-sqlite3');if(_0x42e285){let _0x3d855c=_0x2034a9(_0x42e285);_0xeb8d34[_0x1446c3(0x218)](_0x1964fd[_0x1446c3(0x1c4)](_0x1964fd[_0x1446c3(0x1c4)](_0x3d855c)));}}catch{}for(let _0x43ae28 of _0xeb8d34)if(_0x161e0f[_0x1446c3(0x209)](_0x1964fd['join'](_0x43ae28,_0x1446c3(0x1ca))))return _0x43ae28;return null;}function N(_0x19446d){if(!_0x19446d)return null;let _0x5afdb9=_0x1964fd['dirname'](_0x19446d);return _0x1964fd['basename'](_0x5afdb9)==='node_modules'?_0x1964fd['dirname'](_0x5afdb9):null;}function B(_0x2e06ac){const _0xe69e16=_0x447759;_0x36b67d(_0xe69e16(0x1d2),{'cwd':_0x2e06ac||process['cwd'](),'stdio':'pipe','env':{...process['env']}});}function k(_0x3a2250){const _0x1c1aa2=_0x447759;let _0x53dd00=N(_0x3a2250);if(!_0x53dd00||!_0x161e0f[_0x1c1aa2(0x209)](_0x1964fd[_0x1c1aa2(0x1da)](_0x53dd00,_0x1c1aa2(0x1ca))))return console['warn'](_0x1c1aa2(0x1b3)),!0x1;console[_0x1c1aa2(0x1ad)](''),console['log'](_0x1c1aa2(0x1d8)),console[_0x1c1aa2(0x1ad)]('[INFO]\x20自动尝试本地编译:\x20在「'+_0x53dd00+_0x1c1aa2(0x219)),console[_0x1c1aa2(0x1ad)]('[INFO]\x20(需本机已有\x20C++\x20构建环境;Windows\x20为\x20VS\x20Build\x20Tools,macOS\x20为\x20Xcode\x20CLT,Linux\x20为\x20build-essential)'),console['log'](_0x1c1aa2(0x1d8));try{return _0x36b67d('npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts',{'cwd':_0x53dd00,'stdio':_0x1c1aa2(0x1bf),'env':{...process['env']}}),B(_0x53dd00),console[_0x1c1aa2(0x1ad)](_0x1c1aa2(0x1c3)),!0x0;}catch(_0x3bc14c){let _0x30e5e5=_0x3bc14c&&typeof _0x3bc14c==_0x1c1aa2(0x1f6)?_0x3bc14c:{},_0x51d160=_0x30e5e5['stderr']?String(_0x30e5e5[_0x1c1aa2(0x210)]):'',_0x5bd3b8=_0x30e5e5[_0x1c1aa2(0x1b1)]?String(_0x30e5e5[_0x1c1aa2(0x1b1)]):'',_0x175a33=_0x51d160||_0x5bd3b8||(_0x3bc14c&&_0x3bc14c['message']?String(_0x3bc14c[_0x1c1aa2(0x1a4)]):String(_0x3bc14c));return console['warn'](_0x1c1aa2(0x20f)+_0x175a33[_0x1c1aa2(0x20e)](0x0,0x4b0)+(_0x175a33[_0x1c1aa2(0x1f2)]>0x4b0?'...':'')),!0x1;}}async function M(){const _0xb35f00=_0x447759;let _0x27ae26=E(),_0x2a0e33=L+'/v'+C+'/'+_0x27ae26;console['log']('[INFO]\x20尝试从\x20OSS\x20下载预编译包:\x20'+_0x27ae26);let _0x592ede=await v(_0x2a0e33);console[_0xb35f00(0x1ad)]('[INFO]\x20下载成功\x20('+(_0x592ede['length']/0x400)[_0xb35f00(0x1c5)](0x1)+_0xb35f00(0x1ce));let _0x42c417=h();if(!_0x42c417)throw new Error('无法找到\x20better-sqlite3\x20模块路径');let _0x9a30d6=_0x1964fd[_0xb35f00(0x1da)](_0x42c417,'prebuilds',process[_0xb35f00(0x1ba)]+'-'+process[_0xb35f00(0x217)]);return _0x161e0f[_0xb35f00(0x1a6)](_0x9a30d6,{'recursive':!0x0}),await D(_0x592ede,_0x9a30d6),console['log']('[INFO]\x20预编译包已安装到:\x20'+_0x9a30d6),!0x0;}async function W(){const _0x2cc53c=_0x447759;let _0x23e9a1=(await import(_0x2cc53c(0x1d6)))['default'];return new _0x23e9a1(':memory:')[_0x2cc53c(0x1d4)](),!0x0;}function _0xab9d(){const _0x28694e=['log','[OK]\x20已检测到\x20Node\x20内置\x20node:sqlite,安装检查通过。','MODULE_NOT_FOUND',',npm\x20包根=','stdout','exit','[WARN]\x20无法确定\x20npm\x20包根目录,跳过\x20npm\x20rebuild','[原因]\x20better-sqlite3\x20未安装到位(多为\x20optional\x20依赖下载或编译失败);在\x20Node\x20低于\x2022.5\x20且无内置\x20SQLite\x20时会导致本步失败。','better-sqlite3-v','location','[OK]\x20安装完成','14992HdWYFC','\x20不在\x20OSS\x20预编译列表\x20[','platform','push','error','[提示]\x20\x20\x20·\x20Windows:未安装\x20Visual\x20Studio\x20Build\x20Tools(缺\x20cl.exe),node-gyp\x20无法编译;','────────────────────────────────────────────','inherit','12.4.1',',process.versions.modules=','timeout','[OK]\x20npm\x20rebuild\x20成功,better-sqlite3\x20已可加载','dirname','toFixed','[提示]\x20【推荐环境】请使用\x20Node.js\x2022.5\x20及以上(LTS\x2022\x20的最新小版本即可)。','replace','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','version','package.json','https://bd-acw.oss-cn-beijing.aliyuncs.com/prebuilds/better-sqlite3','warn','[提示]\x20【解决办法优先级】①\x20将运行\x20npx\x20的\x20Node\x20升级到\x2022.5+(最省事);②\x20安装对应系统的\x20C++\x20编译环境后再装本包;③\x20确保\x20Cursor\x20/\x20终端使用同一份\x20Node,避免\x20ABI\x20混用。','\x20KB)','[步骤]\x20OSS\x20预编译后子进程校验仍失败:\x20','[INFO]\x20预编译包已安装,重新测试...','120','node\x20-e\x20\x22require(\x27better-sqlite3\x27)(\x27:memory:\x27).close()\x22','891174euOXZe','close','未找到','better-sqlite3','\x20在预编译列表内,尝试\x20OSS:\x20','[INFO]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','ceil','join','node:sqlite','versions','pipe','──────────\x20给用户的说明(安装失败)──────────','includes','acwInstallNote','[INFO]\x20better-sqlite3\x20原生加载失败:\x20','1559178wRqFEY','646347wFMHAc','forEach','[OK]\x20better-sqlite3\x20修复成功(OSS\x20预编译)','[提示]\x20说明:检测通过但主版本号低于文档推荐的\x2022.5+,若日后升级\x20Node,请以实际是否仍含\x20node:sqlite\x20为准。','NODE_MODULE_VERSION','statusCode','115','131','(ABI\x20v','HTTP\x20','ERR_MODULE_NOT_FOUND','end','modules','本步骤失败,几乎总是「可选依赖\x20better-sqlite3」的原生模块无法在您当前环境加载或编译。','-node-v','length','186173ydtbVY','https','better_sqlite3','object','get','[WARN]\x20OSS\x20预编译包下载或解压失败:\x20','[提示]\x20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','。优先请把运行\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重装。','unknown','.tar.gz','根因:它需要与本机\x20Node\x20版本匹配的\x20C++\x20二进制;Windows\x20上缺\x20VS\x20Build\x20Tools\x20时极易报错。','utf8','────────────────────────────────────────────────────────────','建议:将运行「npx\x20@bangdao-ai/acw-tools」的\x20Node\x20升级到\x2022.5\x20及以上,本包将改用内置\x20SQLite,一般不再需要编译。','[提示]\x20【本包为什么要动\x20SQLite】需要读取\x20Cursor\x20本地的\x20state.vscdb(对话与\x20composer\x20数据)。','[环境]\x20better-sqlite3\x20路径=','trim','749mdufax','[步骤]\x20OSS\x20下载或解压失败:\x20','catch','[步骤]\x20未找到\x20better-sqlite3\x20目录,无法执行\x20npm\x20rebuild','[步骤]\x20执行自动\x20npm\x20rebuild\x20better-sqlite3(本机源码编译)','existsSync','where\x20cl.exe','4FyTHaO','我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:','[原因]\x20首次加载失败(动态\x20import):\x20','slice','[WARN]\x20npm\x20rebuild\x20未成功:\x20','stderr','test','108','2528255uarRKd','复制以下提示词发送给\x20Cursor,让\x20AI\x20帮你修复:','toString',')\x20|\x20','arch','unshift','」执行\x20npm\x20rebuild\x20better-sqlite3',':memory:','──────────\x20诊断摘要(请整段复制给支持人员或\x20Cursor)──────────','153206YYJvjx','win32','split','[提示]\x20【为什么会编译失败】better-sqlite3\x20含\x20C++\x20扩展(.node\x20文件)。常见原因:','node_modules','message','Request\x20timeout','mkdirSync','127','[提示]\x20','[ERROR]\x20better-sqlite3\x20模块加载失败,安装中止','137','[提示]\x20\x20\x20该版本起\x20Node\x20内置「node:sqlite」,安装时无需\x20better-sqlite3,Windows\x20上可避免出现「模块编译失败」。','[步骤]\x20OSS\x20预编译\x20+\x20子进程校验:\x20成功'];_0xab9d=function(){return _0x28694e;};return _0xab9d();}async function V(){const _0x1cef5a=_0x447759;try{let {DatabaseSync:_0x43727a}=await import(_0x1cef5a(0x1db));return new _0x43727a(_0x1cef5a(0x21a))[_0x1cef5a(0x1d4)](),!0x0;}catch{return!0x1;}}((async()=>{const _0x4ba180=_0x447759;try{let _0x28fe80=_0x2034a9(import.meta.url),_0x54c107=_0x1964fd[_0x4ba180(0x1c4)](_0x28fe80),_0x2ab0ff='unknown',_0x472a3f='';try{let _0x293edc=_0x1964fd['join'](_0x54c107,_0x4ba180(0x1ca));if(_0x161e0f['existsSync'](_0x293edc)){let _0x17cc6b=JSON['parse'](_0x161e0f['readFileSync'](_0x293edc,_0x4ba180(0x1fe)));_0x2ab0ff=_0x17cc6b['version']||_0x4ba180(0x1fb),_0x472a3f=typeof _0x17cc6b[_0x4ba180(0x1e0)]=='string'?_0x17cc6b['acwInstallNote']:'';}}catch{}console['log']('ACW\x20Tools\x20MCP\x20安装后检查...'),console[_0x4ba180(0x1ad)]('v'+_0x2ab0ff+'\x20|\x20Node\x20'+process['version']+'\x20(ABI\x20'+b()+_0x4ba180(0x216)+process[_0x4ba180(0x1ba)]+'/'+process[_0x4ba180(0x217)]),_0x472a3f&&console[_0x4ba180(0x1ad)](_0x4ba180(0x1a8)+_0x472a3f),await V()&&(console['log'](_0x4ba180(0x1ae)),console['log']('[提示]\x20当前\x20'+process['version']+'\x20满足「内置\x20SQLite」路径:对话抓取不依赖\x20better-sqlite3,Windows\x20上无需\x20VS\x20Build\x20Tools\x20即可避免「模块编译失败」。'),x()||console[_0x4ba180(0x1ad)](_0x4ba180(0x1e6)),console['log'](_0x4ba180(0x1b7)),process[_0x4ba180(0x1b2)](0x0)),P();let _0x5d0776=!0x1,_0x28046f=null,_0x4e7119=[];try{await W(),console[_0x4ba180(0x1ad)]('[OK]\x20better-sqlite3\x20加载成功'),_0x5d0776=!0x0;}catch(_0x46d81b){_0x28046f=_0x46d81b;let _0x55cf50=_0x46d81b&&_0x46d81b[_0x4ba180(0x1a4)]?String(_0x46d81b['message']):'',_0x1b17a0=_0x55cf50['toLowerCase']();console[_0x4ba180(0x1ad)](_0x4ba180(0x1e1)+_0x55cf50),_0x4e7119['push'](_0x4ba180(0x20d)+_0x55cf50['slice'](0x0,0x1f4)+(_0x55cf50['length']>0x1f4?'...':'')),(_0x55cf50['includes']('Cannot\x20find\x20package')||_0x55cf50[_0x4ba180(0x1df)](_0x4ba180(0x1ed))||_0x55cf50[_0x4ba180(0x1df)](_0x4ba180(0x1af)))&&_0x4e7119[_0x4ba180(0x1bb)](_0x4ba180(0x1b4));let _0x54d364=_0x55cf50[_0x4ba180(0x1df)](_0x4ba180(0x1e7))||_0x55cf50['includes']('was\x20compiled\x20against')||/\.node\b/[_0x4ba180(0x211)](_0x55cf50)||_0x1b17a0[_0x4ba180(0x1df)](_0x4ba180(0x1f5))||_0x1b17a0[_0x4ba180(0x1df)](_0x4ba180(0x1d6))||_0x1b17a0['includes']('dlopen')||_0x1b17a0['includes']('invalid\x20ELF')||_0x1b17a0[_0x4ba180(0x1df)]('not\x20a\x20valid\x20win32'),_0x3cd40c=h(),_0x2172cb=N(_0x3cd40c);if(_0x4e7119['push']('[环境]\x20Node='+process[_0x4ba180(0x1c9)]+_0x4ba180(0x1c1)+process['versions'][_0x4ba180(0x1ef)]+',映射\x20ABI='+b()+',平台='+process['platform']+'/'+process['arch']),_0x4e7119[_0x4ba180(0x1bb)](_0x4ba180(0x202)+(_0x3cd40c||_0x4ba180(0x1d5))+_0x4ba180(0x1b0)+(_0x2172cb||'未解析')),!_0x54d364)_0x4e7119[_0x4ba180(0x1bb)]('[结论]\x20报错形态不像典型原生模块加载问题,未自动执行\x20OSS\x20/\x20rebuild,请根据完整堆栈排查。');else{let _0x8e1413=b();if(!$[_0x4ba180(0x1df)](_0x8e1413))_0x4e7119['push']('[原因]\x20当前\x20ABI\x20'+_0x8e1413+_0x4ba180(0x1b9)+$[_0x4ba180(0x1da)](',\x20')+'],不会下载预编译包(避免错配二进制)。将尝试本机\x20npm\x20rebuild。'),console[_0x4ba180(0x1ad)]('[INFO]\x20当前\x20Node\x20'+process['version']+_0x4ba180(0x1eb)+_0x8e1413+')无对应\x20OSS\x20预编译包,跳过\x20OSS,将尝试本机编译');else{_0x4e7119[_0x4ba180(0x1bb)]('[步骤]\x20ABI\x20'+_0x8e1413+_0x4ba180(0x1d7)+E()),console[_0x4ba180(0x1ad)]('[INFO]\x20检测到原生模块加载异常,尝试从\x20OSS\x20拉取匹配当前\x20ABI\x20的预编译包...');try{await M(),console[_0x4ba180(0x1ad)](_0x4ba180(0x1d0));try{let _0x2ce181=N(h())||_0x2172cb||process['cwd']();B(_0x2ce181),console['log'](_0x4ba180(0x1e5)),_0x5d0776=!0x0,_0x4e7119['push'](_0x4ba180(0x1ac));}catch(_0x2e411f){_0x4e7119[_0x4ba180(0x1bb)](_0x4ba180(0x1cf)+(_0x2e411f['message']||_0x2e411f)),console[_0x4ba180(0x1cc)]('[WARN]\x20预编译包安装后测试失败:\x20'+_0x2e411f['message']);}}catch(_0x3053a8){_0x4e7119[_0x4ba180(0x1bb)](_0x4ba180(0x205)+(_0x3053a8['message']||_0x3053a8)),console[_0x4ba180(0x1cc)](_0x4ba180(0x1f8)+_0x3053a8['message']);}}!_0x5d0776&&_0x3cd40c?(_0x4e7119['push'](_0x4ba180(0x208)),k(_0x3cd40c)?(_0x5d0776=!0x0,_0x4e7119['push']('[步骤]\x20npm\x20rebuild:\x20成功')):_0x4e7119['push']('[步骤]\x20npm\x20rebuild:\x20失败(见上方日志,多为缺少\x20cl.exe\x20/\x20Xcode\x20Command\x20Line\x20Tools\x20/\x20build-essential)')):!_0x5d0776&&!_0x3cd40c&&_0x4e7119[_0x4ba180(0x1bb)](_0x4ba180(0x207));}}if(!_0x5d0776){let _0x4bf7e4=_0x28046f?.['message']||'未知错误';if(y(),console[_0x4ba180(0x1bc)](''),console[_0x4ba180(0x1bc)](_0x4ba180(0x1c8)),console['error'](_0x4ba180(0x1a9)),console[_0x4ba180(0x1bc)]('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console[_0x4ba180(0x1bc)](''),console['error'](_0x4ba180(0x21b)),_0x4e7119[_0x4ba180(0x1e4)](_0x2e142e=>console[_0x4ba180(0x1bc)](_0x2e142e)),console[_0x4ba180(0x1bc)](_0x4ba180(0x1ff)),console[_0x4ba180(0x1bc)](''),console[_0x4ba180(0x1bc)]('首错原文:\x20'+_0x4bf7e4),console['error'](''),console[_0x4ba180(0x1bc)]('说明:\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']('\x20\x202)\x20若必须留在旧\x20Node:安装\x20C++\x20工具链后在包根目录执行\x20npm\x20rebuild\x20better-sqlite3\x20--foreground-scripts;'),console[_0x4ba180(0x1bc)]('\x20\x203)\x20再执行\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools。'),console[_0x4ba180(0x1bc)](''),console['error'](_0x4ba180(0x214)),console['error'](''),process[_0x4ba180(0x1ba)]===_0x4ba180(0x21d)){let _0x191244=!0x1;try{_0x36b67d(_0x4ba180(0x20a),{'stdio':_0x4ba180(0x1dd)}),_0x191244=!0x0;}catch{}console[_0x4ba180(0x1bc)](_0x191244?'我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x4bf7e4+_0x4ba180(0x1fa):_0x4ba180(0x20c)+_0x4bf7e4+'。优先请把运行\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[_0x4ba180(0x1ba)]==='darwin'?console['error'](_0x4ba180(0x20c)+_0x4bf7e4+'。优先将\x20Node\x20升到\x2022.5+。否则\x20xcode-select\x20--install\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。'):console[_0x4ba180(0x1bc)]('我的\x20ACW\x20MCP\x20安装失败(better-sqlite3\x20/\x20原生模块),错误:'+_0x4bf7e4+'。优先将\x20Node\x20升到\x2022.5+。否则\x20sudo\x20apt-get\x20install\x20build-essential\x20后\x20npm\x20install\x20-g\x20@bangdao-ai/acw-tools\x20重装。');console[_0x4ba180(0x1bc)](''),console['error'](_0x4ba180(0x1c8)),process[_0x4ba180(0x1b2)](0x1);}console[_0x4ba180(0x1ad)]('[提示]\x20当前通过\x20better-sqlite3\x20完成检查。若希望免去原生依赖,可将\x20Node\x20升级到\x2022.5\x20及以上。'),console[_0x4ba180(0x1ad)](_0x4ba180(0x1b7));}catch(_0x1d5ffa){y(),console['error']('[ERROR]\x20postinstall\x20脚本执行出错:',_0x1d5ffa['message']),process[_0x4ba180(0x1b2)](0x1);}})());
|