{"_id":"snapshot-checker","_rev":"54-6b3a87f43dd661a46725012796783781","name":"snapshot-checker","dist-tags":{"latest":"0.9.17"},"versions":{"0.1.1":{"name":"snapshot-checker","version":"0.1.1","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.1.1","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"607098c01fa6e58d62cfcdb01c52d9087f30e30f","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.1.1.tgz","fileCount":70,"integrity":"sha512-EPT7+sVsuhYzFueArbwoFbPuVXfq1C0L/tkb0wL8/H9aMSr35DpZY5cy+GBVAUuTWnLZR1TR6EsHeYMbY6r3SQ==","signatures":[{"sig":"MEQCIF9IwHoeZMgzN99QueMlUnJfHacZz233YW//oDEzimUeAiAVlvHn81Dcyja+GyWKxyFzk+NcR+lIxxMt5bz2Z/9slw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139834},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"afa665a202da147346f27702fd98ba448f5787dd","scripts":{"dev":"tsx src/cli.ts","build":"tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.11.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"25.8.1","dependencies":{"commander":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.1.1_1774407561520_0.4591353710563919","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"snapshot-checker","version":"0.1.2","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.1.2","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"8e09d2bd8096c30ff1de191b18b64a115318c504","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.1.2.tgz","fileCount":78,"integrity":"sha512-MxDisEOgpeIxtrd1Z4M1v3EWlFmt7087jyRuX7C+UDV9Hn8GFeQR5M62n46WCS0nfHxZTq3GX8ECwTFtb+ik+g==","signatures":[{"sig":"MEYCIQCBLpk2FeSdspbX4MvPJ2qpE83imdafYzDjGF1CPqxfrgIhAJFxoDjShoYJ/zySzbFd3yxc1Xf40T1zVRhJrSA/589t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163093},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"c46160ed7a4c17357cb8cfa867adbae454a9ecf9","scripts":{"dev":"tsx src/cli.ts","build":"tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.11.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"25.8.1","dependencies":{"commander":"^12.0.0","hiperf_txt_parser":"^1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.1.2_1774430474476_0.9036980155144649","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"snapshot-checker","version":"0.1.3","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.1.3","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"6a911262ceab9e3ab3efa83dd4f15c1ccc1e8f04","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.1.3.tgz","fileCount":78,"integrity":"sha512-1rh1wczW12VSznfqIY24NuvchqeZ1KaB21GTfQMwUzZGWxjkmcFuq4rZVInoDTIiuYJru7/jFz6GOds0iZbN8g==","signatures":[{"sig":"MEYCIQCY+SmYRXJ4zgvkS9bC/kp9mMVj7sRKHvmFCeriafswCwIhAIskdEFJzxD0AdFKjMkWnC4e6JavaphsxK2R/ytmtBWa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163203},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"332a5bc7695ac76c6c007df44c8c2969bf7000a8","scripts":{"dev":"tsx src/cli.ts","build":"tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.11.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"25.8.1","dependencies":{"commander":"^12.0.0","hiperf_txt_parser":"^1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.1.3_1774519700023_0.24794497127163306","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"snapshot-checker","version":"0.1.4","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.1.4","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"f21dcc9ed88edfbe9730224ac1a046bd8fbeae4a","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.1.4.tgz","fileCount":86,"integrity":"sha512-K9JrxELdatdPloYScXE46syBnLYoXVjem7SLIDJgQunKfAs8dJpVbvB22BBERex8h3ALL4QEcnXZV+NdqExxpQ==","signatures":[{"sig":"MEQCICd6bJwOt3Rg5kbz5FFnww5Wc8qsPlp1bVE1ZtCptdPHAiAoCMcGFlmSys4inEtC373qDnhUJYTUdIjVO7uIOs5eSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191514},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"e770f6d92c3466a3a3c8d88880bb34f68e42d053","scripts":{"dev":"tsx src/cli.ts","build":"tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.11.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"25.8.1","dependencies":{"commander":"^12.0.0","hiperf_txt_parser":"^1.0.23"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.1.4_1775562275705_0.33914258454058355","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"snapshot-checker","version":"0.1.5","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.1.5","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"b5aa772fc3917e03d6d7468c511654d2aab03e94","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.1.5.tgz","fileCount":86,"integrity":"sha512-nXIkJ0NRVH7RxVA9mBun0vy2Bx2dbjLDG9aFM4HgyoPR7D3cXFZ4xVH3KboR1LvZWiZsqb2wiw5W3ee5bs0rtg==","signatures":[{"sig":"MEQCIEZ23DNu/f8ynb0QYvO19U1KXVAy+yVfH3+3KLp0jINAAiB16D3marooMfLXmDEg8pMDiQ7GZirNW14+ywC2+CcxJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194191},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"a2241b48dbd2b9b45037a58a46746a210029e872","scripts":{"dev":"tsx src/cli.ts","build":"tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.11.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"25.8.1","dependencies":{"commander":"^12.0.0","hiperf_txt_parser":"^1.0.23"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.1.5_1775630173467_0.5670190213431396","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"snapshot-checker","version":"0.1.6","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.1.6","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"9e3ce0efc3cf71162fc649cfa05eb3e1d253fd60","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.1.6.tgz","fileCount":86,"integrity":"sha512-ygKZgFEgqG0qqzD0Z9KgAT46xAsMxztb+6O9+W8xu6664unNEqfDPJnMvvH5O4nIHlvnGHIEcq0NGzaq8rBvug==","signatures":[{"sig":"MEQCICMrjNBsof1xpo6fsY/JwbhLyeUZKYO+OWHtSGf7ATPOAiAPTSu4WA3ZpVkDe3opLSMspAOoUF0ZJ9IHC/w1Rtve5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194414},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"9d398533b7db17583e13a67c2618bd45a2d39936","scripts":{"dev":"tsx src/cli.ts","build":"tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.11.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"25.8.1","dependencies":{"commander":"^12.0.0","hiperf_txt_parser":"^1.0.23"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.1.6_1775741847949_0.6624710369300395","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"snapshot-checker","version":"0.1.7","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.1.7","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"dcb2ddaf4ef71ec35789b30368afadc45e505a6a","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.1.7.tgz","fileCount":86,"integrity":"sha512-xjWzEcgWYYjDVskJboCFUBQ27vTXV5iyztktivDf88au7NmxgyECJmLghv0jooF/0MAzXuFWhwdfvybZqtjPpQ==","signatures":[{"sig":"MEQCIAV57w/s7LQ29saZlUMm9bm/GIGsWebs1f2klnN0Ua2LAiBjJo5eGEUEA+Zk0UtqChGo1Vsr6WmKNyBu3gXPx49I4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194829},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"98d6d6e779d576b4306a8e32df54956fd5040ddd","scripts":{"dev":"tsx src/cli.ts","build":"tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.11.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"25.8.1","dependencies":{"commander":"^12.0.0","hiperf_txt_parser":"^1.0.23"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.1.7_1775785981034_0.2066342112000794","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"snapshot-checker","version":"0.2.1","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.2.1","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"de94733e5e2c688bfbb99dbe6e1ac06f1a3fcf94","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.2.1.tgz","fileCount":86,"integrity":"sha512-ae0nBf8PuE9SytZ4exmZ8WO1otGidZJu1IKmSyrkCCoOKkWgvP7K+OiyY5aXLZVgyXXbj0LXBGmh6dBuLkH/uA==","signatures":[{"sig":"MEUCIQCshAVjtzOajaT8VF13q9p5uVXEB7usTZgifXeOSPndBQIgbNt8XC8dqJFpUg4BRaDRU8SkbcGQx6KS4/JtQLGRehI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199303},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"db8faa0f235cb544f8e808839cdf49d742208500","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.11.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"25.8.1","dependencies":{"commander":"^12.0.0","hiperf_txt_parser":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.2.1_1776148814258_0.030599706199958998","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"snapshot-checker","version":"0.2.2","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.2.2","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"b85d97b8b1aefa8ffa0cce0f9026d184054e0da9","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.2.2.tgz","fileCount":86,"integrity":"sha512-2Xna3fCIvFGxJh6bGi4trqY0AyI/8sSShcNcu50XhMINeiw25idcp4laI2HjV6AGuDJe1oFLi0qgwq/rAlb3OA==","signatures":[{"sig":"MEQCIBObexdIPa4HQVoxxtvyWoKswdmwf883SNv2uL2OCsdtAiB8EMHCHfGatF/E/fOSDrjDcQHOmnLI/Mo2yK1L5niSUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199303},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"ea97b886dbae17876fd7fe26484fc3ced993d607","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.11.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"25.8.1","dependencies":{"commander":"^12.0.0","hiperf_txt_parser":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.2.2_1776149965010_0.22946579485566554","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"snapshot-checker","version":"0.3.1","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.3.1","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"250ff6e0405401fc80c1434fe82204c57db0890a","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.3.1.tgz","fileCount":82,"integrity":"sha512-OEBSld4UWwjSYAJjfi+emuD5XTm6xS1voVwZQ9Eiwd2FJ9DPVjQhNfXfe92e703Jv/dthhdAWaRFLBDovLQl6A==","signatures":[{"sig":"MEQCIFepSTEcBYGGVjlIv+g3IOokwmLWOwKSrCen+O5TqWMKAiB/AgrHWOMHoby6jNy/niHUzv+URIjlMb9oObo/GESUVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216776},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"e755ee22fa7dcc46e6d5d5133716b40779cbe718","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"25.9.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.2.4","hiperf_txt_parser":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.3.1_1778313930423_0.6191238870254181","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"snapshot-checker","version":"0.4.0","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.4.0","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"ec8702f33314496eb34a804748dc279dcb931f65","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.4.0.tgz","fileCount":82,"integrity":"sha512-1TsfVokOAtjhFbeAR/h4A4Eg/XTDxQciRUaz9RUWAGGQ3mO+KlZbMpyyhnxZGQCEbmrf51K3WmUAwQGVp36OKw==","signatures":[{"sig":"MEQCIGH7PndIbdoPVk7mXOlRnyegReok15qJWnNYLDP8tmEuAiAmhNHOa0wLEhUfBZo/Q3QRJw7zRfLmqbYaTjSOnCJz6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219732},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"fecbb4eb347a25faf969a1d5aad48ccc43be9b8c","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"25.9.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.0","hiperf_txt_parser":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.4.0_1778468647584_0.12841841881421434","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"snapshot-checker","version":"0.4.1","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.4.1","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"b50877f6b139df5b04d651bf69858c80e12adfcb","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.4.1.tgz","fileCount":82,"integrity":"sha512-M+tj6Iuc7P9yBCdeV/rLcgoJ3C7IEN/DQkv5pzY3gpOIcJiY2wPPxer0NqoXH+LqzGe/rXV3S9DmVelJJE6ftw==","signatures":[{"sig":"MEYCIQDzeQL+NILWjTZNdXqeqbL2GltNaqIdhoejVe0uHb1VyQIhAMLidOLOB0M98/IFTw5TJGrZnh8MhvJyau1gyILpKjeQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221032},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"ba2e8b6d6b63023b1e1573172a36356aeafc1867","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.1","hiperf_txt_parser":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.4.1_1778504342357_0.7878169757228348","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"snapshot-checker","version":"0.4.2","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.4.2","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"edcf12dd3a8410d3b2f70b552f33115b7ea7f32f","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.4.2.tgz","fileCount":82,"integrity":"sha512-xeg6Qcf0YGDOiA5wl8ibHQv0gyuHUS9URkDvyID08/NhNEgV89rjhttAKJAMNg2YJP1f+cAz0oavPwmyEor/mQ==","signatures":[{"sig":"MEQCIGK4w1l2mNUUO0RD/Ja9dEe7aJfDeUpODNMR2IFodf9rAiBiZ7AL1xPN0IVkfKfek5OeVkjhzywHdev1jgKT/xZbEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230768},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"3e0d4f0cb9a445bed9e9779b064b2701edeae2d6","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.1","hiperf_txt_parser":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.4.2_1778552486455_0.13249953368731182","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"snapshot-checker","version":"0.4.3","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.4.3","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"5344cf55f27fc913426f122efa336c0a7c23a1a5","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.4.3.tgz","fileCount":82,"integrity":"sha512-godIOuOVtePUKYroQFOvG2YyMksw6TzZqvhnSq/efWrzTvSrT8ImnB8QpoPNsBge3IuDOJoLZJq3OYt5wlNFCQ==","signatures":[{"sig":"MEUCIQCCVlgFsE61/oRckTBgMq1ylpUaX3IkpavLHrEQiIT+TwIgO5w7WCEl6bpg8TpOVd99XI98bd2mLnW9HQ79g7QLp4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242292},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"0e2b522f2ccd0b16cff054712edcd7dba020706d","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.1","hiperf_txt_parser":"^1.2.6"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.4.3_1778556457805_0.9810868838214566","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"snapshot-checker","version":"0.4.4","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.4.4","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"50a84c3c3acc8b73f5f9cf570096e3ab4af4f9cc","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.4.4.tgz","fileCount":82,"integrity":"sha512-0u2PilAGxbTV7TCk/MYU/j2tntS1vCrB8wSj4AJZMzJOWpO5YO/tX4DtchpzyKg7hHx08tb3ngWqUeM1dDoung==","signatures":[{"sig":"MEYCIQDwibmrOjIesj6AESGlbu+fCr2SxiZ2gEB9vyhe6+UCcQIhANmOjnTgX3/1u07l9nisHZwTxSQ2+iKgbon7fPs3w+pL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244132},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"70f6b0bca947a9e4cd8f0f253ff397bf27c36276","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.2","hiperf_txt_parser":"^1.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.4.4_1778572272687_0.09690714125230926","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"snapshot-checker","version":"0.4.5","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.4.5","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"b89537689f39e2cff3875c3d43710826fab193d0","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.4.5.tgz","fileCount":82,"integrity":"sha512-OadYR9JAXiYWqx644aD6M1MW5AP/AMxbcLjiTAwPhegUOppcJfgNS3nlDn5fn00ikWjK+evEiFXQyyKmtZYrAQ==","signatures":[{"sig":"MEQCIGhBO5snSACFnbxBvYQF79WkLJ3rzTGHZw6CRNEEXZ/cAiBFlawGfuySL1DRQacpM4P7uMJsKnTtEYCRWYzwZuk1dw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":254594},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"0d1d3061c8cb714226c3504c2f562e1653434b8e","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.5","hiperf_txt_parser":"^1.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.4.5_1778687191452_0.6743334176044722","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"snapshot-checker","version":"0.4.6","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.4.6","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"fe82493a6279bd3469be53ff899e261e9718668e","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.4.6.tgz","fileCount":82,"integrity":"sha512-JR1FxPnJsN0Iia8I5yCrPw+f7zWgGsUG6QgYINgNeYdEBKBexN/eKnnTDRPTWm1o26/wjdOQMqchVgY2FU+vBg==","signatures":[{"sig":"MEUCIEVXbkHcp2x93RTveRtEGU4W3lqBUTbh3rEDhnNwzkJIAiEA+/xhSKThJvaJgxR/zsgFeSoiYKLc8EbVW8o1hBdNSBA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256200},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"41555e02fd0e94bc88077053ef1217017624c191","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.5","hiperf_txt_parser":"^1.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.4.6_1778724626007_0.7472674165007056","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"snapshot-checker","version":"0.4.7","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.4.7","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"7d9c29fa4460fc6b5f7a58da31cc14ee2afec7e7","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.4.7.tgz","fileCount":82,"integrity":"sha512-+vWdF69cZ5TCFwM3bGJpY6QIYOHfCvHuwpAC6sL7T3XrlEcZ64qrbXO7nV9qH8OrRTHySg5vefAuW2ZcPMVFJw==","signatures":[{"sig":"MEUCIQCzS28DosIUSMN/zvS0fByBoIIjC7Dqn7E5Pw8UdezxAQIgVJf5V5yVnGasv09HrOiz8LeEmGOg5VKHrEwr2YJxjmM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":257047},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"c77baa6eab98f5c2cc2eb59156ee2c6736675865","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.5","hiperf_txt_parser":"^1.2.8"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.4.7_1778742871039_0.7507405329512775","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"snapshot-checker","version":"0.4.8","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.4.8","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"f784a3d7ca837c0a7e0f3ec80ba6fba049b281d6","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.4.8.tgz","fileCount":82,"integrity":"sha512-5NZqB3cbsj4OPUqPWXWVOhpmj5hDjCVdcvrsh2ceyi2ir669qJ8dG8uzNcPvPmCjUQ7zOSwclGCPjz6dahVVBg==","signatures":[{"sig":"MEYCIQDpvCdYYwOBKmbvkjGOjbyZJiMjZO5bFc0eibi2hgcjgAIhAIJZtafbsJ0Kw/fCWoVHsdAphDCfKWd1P+EoAyTlyi2i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":255226},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"bb6c249b4ff8dd129cce457be29e05516a309261","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.5","hiperf_txt_parser":"^1.2.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.4.8_1778748144224_0.29100299525741113","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"snapshot-checker","version":"0.5.0","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.5.0","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"447eac2632cfafac61cffd9c3065574000fe2081","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.5.0.tgz","fileCount":86,"integrity":"sha512-Lwydo+x2NKwmQpailCNPpEIUwmru0NjDWeXcaAmgHTCgh2p46QybkK2NAyQR0pzY4Os/1ngX5Fe+F8CfJuCRmw==","signatures":[{"sig":"MEUCIGYDgOHvIEH1sErOVl9jkPOzbfDQazYv3Wn4Cntv6gMHAiEA2sDg1sS4IVo6hcv9+HdON8ubWmfK86GnCSHcMQ0Tk8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265536},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"ffa5e2ba1aec95e69e024f9b37dc5b52a46336e2","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.8","hiperf_txt_parser":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.5.0_1779097920787_0.8180435278476617","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"snapshot-checker","version":"0.5.1","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.5.1","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"b02f6e668d5d3b13ba6a15772689f86b3f23982f","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.5.1.tgz","fileCount":90,"integrity":"sha512-dZFdxfQjek8NmLRaxiauMQ2Pa1ZmnFORPykj1GTtCSTELRoXLWbPmqkhjZkAh1AWrF8VHDDoj0YLV0sy3592aA==","signatures":[{"sig":"MEUCIBHyETzn0GXqWX9x+ftoIT4BSM+6jzPwMHmFxdGJNHsBAiEAuLJQQEP+sa5XFQivUoEWTxqcReBUODg7AYpUngoodsU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280972},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"a053e642d1448d848804451948b1b00009f9fcd5","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.8","hiperf_txt_parser":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.5.1_1779258784298_0.33506291864573634","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"snapshot-checker","version":"0.5.2","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.5.2","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"b0ff424f7787ffc5ab24f77e08cbd3cd7d2afba0","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.5.2.tgz","fileCount":102,"integrity":"sha512-1qBpxx/N6xWeVc9E1v6akI3qPTLYp5Nj2Lw/1rUT0QpAkSJ6lR3gH9q4tzbZX97hKHTe5yaOfctM9dUDoOhmRQ==","signatures":[{"sig":"MEUCICYiTZscWSAO3NdyC08ZADj9Nn7FEAgoZvFLDM57boScAiEAnv7R04aL64i91eQgtVO5IjOtqgw1nXJwBWClIOKyIjQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306767},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"03f462cac451d15f0bbf915e6c2af61b8c413867","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.8","hiperf_txt_parser":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.5.2_1779266617765_0.017907073321931977","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"snapshot-checker","version":"0.5.3","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.5.3","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"7d690be17486400f8da9e56a076d08d0d6a16b3a","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.5.3.tgz","fileCount":102,"integrity":"sha512-JiEtEPiCi6mPDfURqD7XIr8CfuKHyxVVLFzKsGKZNJorNAknokglf6JORZbcUiwpXRT4TyOF+C6tszCYrip0sw==","signatures":[{"sig":"MEQCIDhchJA49+t11RnkrzPU25pRU7En/M0u9z2iyIJ18XOBAiAVaI1vWlh4ItT/wCAMtlOVTs0fCcvoQ+dQoQek1K9JVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306767},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"ae615271dc76ba5f1bcc096d9a09676931b7bc36","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.3.9","hiperf_txt_parser":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.5.3_1779690155638_0.46595878723125295","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"snapshot-checker","version":"0.6.0","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.6.0","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"60a3d02204380fb25a56515164e7fecdea1b7561","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.6.0.tgz","fileCount":102,"integrity":"sha512-CFooiW3qbrfk0T0tBBX41NEfRoGc4oleyG/I/0efyeuQX/VkqnlZRa1iMxjCRcpJzzfAg5PhI2D28jQwWet9lQ==","signatures":[{"sig":"MEUCIQCBOXsQzQDeTTIvGZDxhTFbrm/tmDbkVG3J5R6C9IowEwIgUjrDajbCET0by8WoB+M8RuHVQj9i32DM66ZLnRsnY54=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":316981},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"6bfa0311e4705572c14cea30c1c30e923a2e4ad6","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.4.1","hiperf_txt_parser":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.6.0_1779876317087_0.8736641554743678","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"snapshot-checker","version":"0.6.1","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.6.1","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"125c54dca783ccafb52ad429ab1abb3ed07a0138","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.6.1.tgz","fileCount":102,"integrity":"sha512-TxU1bEpbBd7dnsI7Qb6t9y4opSYm6VaJMdfhFAZPYOJI1z9+YnvqClEBry3mkaUeZVHoID9dX+ImBvsQs8Fthg==","signatures":[{"sig":"MEUCIHgxEi/ZLr09Gc22wt6lxb/EHTXbvtDOh4eRp1svTxFDAiEAovKmNChQTfBdJCHQ7I+y7YBURZcGfFxWxj0PgJC6VFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":314033},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"c2eca1b64d606510ceeb0edbb91f48b5269c8c90","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.4.1","hiperf_txt_parser":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.6.1_1780300375766_0.4036544936161137","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"snapshot-checker","version":"0.6.2","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.6.2","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"f963b3d6830f44421c68e5a7aac283ccd8dc1b28","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.6.2.tgz","fileCount":102,"integrity":"sha512-98wqBcviSta0uImmibDLFE72zNF2+Cx+PmIj8DhoDtfNqM91A5foINkXLN/QqebHjGgOBvtU4ICD5FI4UHd37Q==","signatures":[{"sig":"MEYCIQDeugAbFlQcxgNWeubWLhd2IrH/iURj6G57Y+Nq+zpFogIhANHD3F7DLywRG6IogYMf8VYtUSh5FnjDfeCEGxIOY9Fs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":313585},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"07067ec3b1720b8e3f4f6ca21838c10a82adf2c9","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.4.1","hiperf_txt_parser":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.6.2_1780304865810_0.3120047359697944","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"snapshot-checker","version":"0.6.3","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.6.3","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"abb6206494a1471546d47591acf0d67e9ceaf669","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.6.3.tgz","fileCount":102,"integrity":"sha512-3Ki5JliptBoOYKwUwBvsjDGI98YdTVPQEIlu8rWKY0McY+T6oJSB53NHvmM6e4d/qIGXcktarDQ9xcd2W5eFWg==","signatures":[{"sig":"MEYCIQD0FVejTnusiHAgmjxykJ9PkP0pnEyzrkGBvFLX6kHJugIhAO1YPkUlXqHFXeVBfVZHQjfRWvLd/a7GY/T6KW5hP8pv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":313417},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"fde37f74c8691680b328d85fc85ae9fd8ab7ac9b","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.4.1","hiperf_txt_parser":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.6.3_1780306028369_0.42312395657278556","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"snapshot-checker","version":"0.6.4","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.6.4","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"2da2fc4eb064088bb2041507c0beec35b3d7c70b","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.6.4.tgz","fileCount":102,"integrity":"sha512-RgYWq4VVIw6YbAqsIyn7+PAqyaNAdokEw/15mfFbF6XbOZn+qmoD/7turqIByV1cIVZ0XJR7AIFYleMFtZr19Q==","signatures":[{"sig":"MEUCIFlG/8FekFaYGSpqrHf46XHZZbBQN2ZS/HrlBxNnHebVAiEA8NgJSous4mhO4V9DJ1DTYq0WHKthxJbH0HzJxxA5nhY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":316095},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"4bd2245539ab5bd74879d30ac043a3cfdedbbbd8","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","test:all":"npm run test && npm run test:perf","test:perf":"tsx --test tests/perf/**/*.perf.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.4.1","hiperf_txt_parser":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","rimraf":"^6.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.6.4_1780307804775_0.7777315733238135","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"snapshot-checker","version":"0.7.3","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.7.3","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"98a9789d031896b9da23929320b3709a060be199","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.7.3.tgz","fileCount":138,"integrity":"sha512-aJokjSsXFm+742nRxl27A+yCCHjyvCqz4SuPBW5kso1mbais88kAwdw+VlErrnvn222OFhlEVYfdC3AjsCtkRw==","signatures":[{"sig":"MEUCIGMSHCoetamHkKveXiEGy8jkzGfW+VUklNoaFvdYxYHsAiEApwnQlfkjntg5nlrvwHMC5z4o0TL/CxTHADE6z5YIcYY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":414277},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"528b24a906b575e7e17c86abf58b6dbfcd2a783a","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.7.0","hiperf_txt_parser":"^1.4.7"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.7.3_1780623610794_0.05252194714762748","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"snapshot-checker","version":"0.7.4","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.7.4","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"bfbdec3eb00e8814d0e406d7853a159b8a375724","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.7.4.tgz","fileCount":138,"integrity":"sha512-I1U1ZWXX3NL7quBaxOW2dW25pUVdEUzx6M0pi4/9vzgQ+PLXxg6vlFF7qYGZ+WB8/lvfqpC3CC9CEtoh8mFGlQ==","signatures":[{"sig":"MEQCIATfCdAwqQT63zUKxEPMfat6bGWZ0hqb2xY6bvc5zwbuAiBcJEDwXQ9f5PKLOayzNnlLsNg46g08/xBbA394nQhExA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":417701},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"630e2044d810f980a8b3448f525b8fd3c0d5f6ae","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.7.0","hiperf_txt_parser":"^1.4.7"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.7.4_1780629080031_0.21900042313997004","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"snapshot-checker","version":"0.7.5","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.7.5","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"21e109d3d150f14bd2c5fba9e91b9e03f4655b67","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.7.5.tgz","fileCount":138,"integrity":"sha512-szvp/P2pY8A4W1Fu2z+gnnXQ4oi/ahN3lTy/ELaQNlOn25KazgXOcy4s8l0hD6xU9YwlgFPSBrspXqDi1BNrFw==","signatures":[{"sig":"MEQCIG67P0R3nxFNqlEb8fC4E8mvXL28L4tSE8EGM8mc32K3AiBOI8vo+uFD7lA413cOJ0nqMeB5a86iQHj0mIr8OdRtsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421450},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"1d31c8e3b52e8286ca782b9c14de3df685507209","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.7.0","hiperf_txt_parser":"^1.4.7"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.7.5_1780904131579_0.9797155150845509","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"snapshot-checker","version":"0.8.0","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.8.0","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"917c8633b96a99b4cfecedc2dcf1d65c4bd314c9","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.8.0.tgz","fileCount":142,"integrity":"sha512-aleQboICqiaQzOx44ncELhWxsNluzm4vzoxcA7nwMwvdRERgWCHoklMyoXD/Iv75+2A6t7ualSojzpApBNb0ZA==","signatures":[{"sig":"MEYCIQDZOTmXBuJn6UBdl7H8TSLKTSj+be199w6M7/FuMMzfIgIhAKmypE4X3tZFZCuP4ElOJ1XhcvioFNQf1lkfj+0/di+Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430544},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"388213cca3de43694fc63e7c0f84453f8253fc5b","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.12.1","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.0.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.7.0","hiperf_txt_parser":"^1.4.7"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.8.0_1780987799732_0.5706225318121876","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"snapshot-checker","version":"0.8.1","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.8.1","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"87dd471c89dc9652e9cafd88dde166c039ff7f30","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.8.1.tgz","fileCount":142,"integrity":"sha512-Uly0BfzC8xwxLL1pmxfD3IUoYXbTM3S9+pLJBfPlRmLE96pSsri/pLIFlghiVp4cTW6wyp/yuAKmh03U4HkK+A==","signatures":[{"sig":"MEUCIQCEUwXU5moDYXIvgGbozI/qpnNvsFhh9HlMMn7HUAvAOAIgTRynzLAlUbD6faxP6gEmVlh2bsqSdElhUs0e/BNMmz4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":434442},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"ac262d76394766044fc73f28c4385bef7ea5acfd","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.16.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.3.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hmtrace-parser":"^0.7.1","hiperf_txt_parser":"^1.4.7"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.8.1_1781517481520_0.9497597459698581","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"snapshot-checker","version":"0.8.3","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.8.3","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"29ef82dfa7e5b5800fe24b2980a36695c39100f7","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.8.3.tgz","fileCount":118,"integrity":"sha512-nygEoJtm2egu1xauIwoXEGR3q5E2VELSntIVft4RNudxFeURwSY6RBUpxKrtiqlXLutTzKxBP6m+0LOA/2ZnvA==","signatures":[{"sig":"MEUCIQCdqAGK4IuOj5ozzBLDaY8Emdjwisj7zTxIaerIXHFQiAIgJTcIulo1GWLIx7ooPZqkvVbdO1bNDgtB1+jKtGK9tPU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276017},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./demos/*":{"types":"./dist/demos/*.d.ts","import":"./dist/demos/*.js","default":"./dist/demos/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js","default":"./dist/commands/*.js"}},"gitHead":"20b606f17900ca88da85b3f18581b3fbcdb05fe1","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"commands/**/*.ts\" \"tests/**/*.ts\" \"demos/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.16.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.3.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^1.0.0","hmtrace-parser":"^0.8.0","hmcommand-runner":"1.0.0","hiperf_txt_parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.8.3_1781615192011_0.541764985182581","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"snapshot-checker","version":"0.8.5","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.8.5","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"0631d516daca108352e986223f651dad921b60fa","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.8.5.tgz","fileCount":153,"integrity":"sha512-gNpRmfnUHNvoMD0nr8dEXLAXq2x6Z6Cl3iZGwlY9TWhkhPnPFlCrvtMDj+lf+lWbC41Ew52+LK+xRwo7Ba6K3A==","signatures":[{"sig":"MEYCIQC/2UvraLU2EDelGLVl4eg0+Jlm8z+mErquQ2hYcxUyZAIhAKHln2l89q66xIjhkk7sGLe6jEUcLP5741EUMVwIQWpb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433555},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"40f2f0d052b8d93cf7c0c7ab1043727cc98ed21b","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.16.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.3.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^1.0.0","hmtrace-parser":"^0.8.0","hmcommand-runner":"^1.3.0","hiperf_txt_parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.8.5_1782200557791_0.9590975247971525","host":"s3://npm-registry-packages-npm-production"}},"0.8.7":{"name":"snapshot-checker","version":"0.8.7","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.8.7","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"a7021733935422e7d9d9fe3e1ea5060e6b7d76bf","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.8.7.tgz","fileCount":165,"integrity":"sha512-PMHfB8jZiH+BlsdW3wk47KwYSqkwGRdzGDXMpQLg/mrT+8fphZMf7Y7VMzT9J0AXGx6vehY34JQ1QzWr77+4BQ==","signatures":[{"sig":"MEYCIQCmG2WKmUA3PHmqo0FxmdKyJnJsgeBbn+2oNyNFf6p35QIhAMS1whLEShrkaIfEClfDsvMUpmqNfrfu6tmnHatbmDMg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":465446},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"feaeec17202bb0af1ac33c2ba4e8da4813737b5a","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.16.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.3.1","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.0.0","hmtrace-parser":"^0.9.0","hmcommand-runner":"^1.3.3","hiperf_txt_parser":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.8.7_1782522081276_0.46128603294672876","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"snapshot-checker","version":"0.9.0","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.0","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"89ceaf6ea1bb76c3157c7f7d5236f96706eddb95","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.0.tgz","fileCount":302,"integrity":"sha512-2b4vAM0cwGk1NiCAFHd5AANNJ1UdspfHJY1LCS2IZmBq9jKb92zn9iDjUhZXf17YfwoPXRW4C5+skABf9A/+iA==","signatures":[{"sig":"MEUCIQC3nBzsWtJOrZ5ih3kIxUMcdDoCFRSByB6cHywAb84wgQIgTt32gxm/HTnV7XDlw9kcVgZFeb62cavImBo8hQAaQzs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":865706},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"95f81042f290004220f6a4897e7c585ab3e99d9b","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc && node scripts/bundle-trace-html-client.mjs","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.17.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.4.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.0.2","hmtrace-parser":"^0.9.4","hmcommand-runner":"^1.3.3","hiperf_txt_parser":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.0_1783915269007_0.030937391931959768","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"snapshot-checker","version":"0.9.1","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.1","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"e0c38690ec23ebac9b738f8b4cbe3623b78f533a","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.1.tgz","fileCount":302,"integrity":"sha512-W9v3Z8rokslUxMj+pmXJeqGX9lnYlpXbjcm69T7I11Mr2yHCTVtxc13+cdYmstWN1jHJjpaxY7deEHYCHsj1Tg==","signatures":[{"sig":"MEUCIQDIST2cH/o4u09SUMaShui8sBTLssCwr50JmVMq6y8VggIgRdWYyyCbi+FSG4y7ay0sYKGzz3lKHXEf227ORRnyUvo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":867689},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"34279bd72b000bf10664a1c7cfb9975d1636294f","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc && node scripts/bundle-trace-html-client.mjs","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.17.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.5.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.0.2","hmtrace-parser":"^0.9.4","hmcommand-runner":"^1.3.3","hiperf_txt_parser":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.1_1783931827812_0.41488422321357943","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"snapshot-checker","version":"0.9.3","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.3","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"0ca345d4b01091b6bcf4ab8ee64ecffa8290323e","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.3.tgz","fileCount":314,"integrity":"sha512-n+4v6LgxosiwFYAzw19UMuf1SgB0zqW9OhaZh3sHj0VWt6br8XXYCVsWHFSXnCUfi1CPg5Nz+VMpSfAN3oL8Aw==","signatures":[{"sig":"MEYCIQDP1aO+LIfIoR6hGC81LuWttyoeicQB+Lx2BfgQbDreTwIhAPrx+65VglIPXLcmLO+oLrFf5qAjkU3RFUdypuU0Gfz7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":961679},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"645534381be1cf44f68684ae2cb4aea6bc2eb37b","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc && node scripts/bundle-trace-html-client.mjs","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.17.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.5.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.3","hmcommand-runner":"^1.3.3","hiperf_txt_parser":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.3_1784172448770_0.7732913239786265","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"snapshot-checker","version":"0.9.4","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.4","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"7168246f8572a022f467fb237429830a50c84893","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.4.tgz","fileCount":314,"integrity":"sha512-BbYDYTKK2eP+BGdX/MBFW6StbSv4F00siR6XHcqkXUAnji5JUQabfXY7lCZitvruMDAvIwjlZZDKCD4sH5jrIQ==","signatures":[{"sig":"MEQCIH6YzxPW9siQVFXTknfHsP1WUftuIAYpPB82b5CLWyY1AiBdTxEyaLlaQmI55kE96AYaXd5XAFVuTVlF71kfXVzrxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":961841},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"e63f0868b6dd0488080a30b92116e0a6f8f16ceb","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc && node scripts/bundle-trace-html-client.mjs","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.17.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.5.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.3","hmcommand-runner":"^1.3.3","hiperf_txt_parser":"^2.3.1"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.4_1784173784246_0.782624389821273","host":"s3://npm-registry-packages-npm-production"}},"0.9.5":{"name":"snapshot-checker","version":"0.9.5","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.5","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"eaeebe868dacc1317976e82abaa3a7a594974b62","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.5.tgz","fileCount":314,"integrity":"sha512-uOPqgBFPh+XbcJO3gzsd/Qs0QmuO0RdUEIgE9gMckRB5GugzBZHEMLZN7HajKQDdn9wLCjDYe8oENViXCOy8KQ==","signatures":[{"sig":"MEYCIQCqoUO7COHsV3xvuRtf3jFZnie8mj5mtUW/Yoj1OMVcGAIhAMon1TUD+/U9h5nKObxJa22AtlUtknwjbLoyS+nTaH+V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":965613},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"1ccb754f0b59e19b081fb8f240cac92b115e443c","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc && node scripts/bundle-trace-html-client.mjs","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.17.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.5.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.4","hmcommand-runner":"^1.3.3","hiperf_txt_parser":"^2.3.1"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.5_1784195686480_0.36532802766144745","host":"s3://npm-registry-packages-npm-production"}},"0.9.6":{"name":"snapshot-checker","version":"0.9.6","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.6","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"9af4e6a93193e57ca5b6d2b2e4eb087f87ed60db","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.6.tgz","fileCount":314,"integrity":"sha512-NlIfOc5oyz47cO9Iv9mcAT9FZQ3IqQ/2sulTjvgeJmTPxO+rdSzct0E0yzTJ354YBJ99DCxzxalTwblLckWSFg==","signatures":[{"sig":"MEUCIQD+18NHRmzkyt1fpclZqxhN5Z4DdP0OlVi5s7wQgppEZAIgAv3YA3tAquDj2/3lheyxtDDoky3Iwikkp74gtGhWHSM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":980540},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"e8ca95dc49315f65ff4c74f4f0752682f955ffe1","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc && node scripts/bundle-trace-html-client.mjs","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.17.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.5.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.4","hmcommand-runner":"^1.3.3","hiperf_txt_parser":"^2.3.1"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.6_1784259845430_0.9495613417675204","host":"s3://npm-registry-packages-npm-production"}},"0.9.7":{"name":"snapshot-checker","version":"0.9.7","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.7","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"527e7c6b186db4469a3b3f5602a5b1a623c97dea","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.7.tgz","fileCount":314,"integrity":"sha512-WF0MX3hZEuGFRhgqtZBufYO/eZrIU3FCMkDReidQV5wojnhJ7ooAo1N0NXw+j8vZbrQxMQPO04onWvHvOEiDTw==","signatures":[{"sig":"MEYCIQDP+b622oBS5N/L+E2xzKV9rKEFsRFrjBLzbLJw8fB55gIhAPVlVMng3wSVWOokE3AsCtd+Fs9qWZDNi137zQ+hYCzA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":989583},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"9f84142491f4c0b84ce4cfc221118ec1a42e61fe","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc && node scripts/bundle-trace-html-client.mjs","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.17.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.5.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.4","hmcommand-runner":"^1.3.3","hiperf_txt_parser":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.7_1784603403398_0.11637106393419283","host":"s3://npm-registry-packages-npm-production"}},"0.9.8":{"name":"snapshot-checker","version":"0.9.8","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.8","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"c3300e3e7e9337baa835de8391cd791651b71ad0","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.8.tgz","fileCount":318,"integrity":"sha512-ChauJ3es9087nuyXUMhH0JJi4hZsHqzc1t5nknjyooZdORGN4V20qwODBLVZR8iBisulppK2QHfdS8+fnEpTtA==","signatures":[{"sig":"MEUCIHPb8wGJATSnNhH5LfZ2vx+xXmBKhuM3LyF3l1NbdPVKAiEAsF2JmJ69srlV+BQaRAkBDpg/mi/sYsF60jv38Jp1I0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1033711},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"b600342ce30d326175bfde34d7622750016afb96","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc && node scripts/bundle-trace-html-client.mjs","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.17.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.5.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.4","hmcommand-runner":"^1.3.3","hiperf_txt_parser":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.8_1785381565873_0.43683836558982825","host":"s3://npm-registry-packages-npm-production"}},"0.9.9":{"name":"snapshot-checker","version":"0.9.9","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.9","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"88ba2e649f40a39bdce7828b0a1726712d026998","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.9.tgz","fileCount":342,"integrity":"sha512-vfFJMnzbCE4xaPQtDw8FIyc3nnZ5DHFwVEzqa7E35oTRDbOiKlGQyjIDEXD5W4lNQElCZ7gO5HwEF1HjZ34g6w==","signatures":[{"sig":"MEUCIHJqwMLAgRyJcNbE95mD3LGQqdv1GSSUPMPaPJzOsI/BAiEApTpuLy20quA1veaz3OZGDyZ8xCLEyo5qSZqqy+sAy10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1146458},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"2db3a6b9b80fd752ec9d74c2b0aed7daa1717c39","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc && node scripts/bundle-trace-html-client.mjs","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.17.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.5.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.4","hmcommand-runner":"^1.3.3","hiperf_txt_parser":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.9_1785414458800_0.9934241499817056","host":"s3://npm-registry-packages-npm-production"}},"0.9.10":{"name":"snapshot-checker","version":"0.9.10","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.10","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"e268e0b7eaa333f687ef2a86809d07dd6074c8fa","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.10.tgz","fileCount":209,"integrity":"sha512-EeKqL6Ocuwc/3mmpXrSkIGzWWSq7OBehQ7gAV7xPG1uqTFyVyPCdDsWlalqWp1fotAsjB5qndjTTmJJbTfhRxQ==","signatures":[{"sig":"MEUCIE6ScFfMi4ob455cq1IKC5L2CLsHsW7bVy+HyxdPaXELAiEAhej5nIcQ0p3o6nLFM8aXpBc4nCTynOqPzQ5A6/4l7E8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":762979},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"dd2f07377cb0431b8a83bd46477c2d821574c4b1","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.18.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.6.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.4","hm-trace-report":"^0.1.0","hmcommand-runner":"^1.3.3","hiperf_txt_parser":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.10_1786005885318_0.29398306431768906","host":"s3://npm-registry-packages-npm-production"}},"0.9.11":{"name":"snapshot-checker","version":"0.9.11","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.11","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"48a81d91b2ee2a74a510e7d18437e9a12fb49a2b","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.11.tgz","fileCount":217,"integrity":"sha512-ucaJILVjqRqBTBaEDjzSD9hZnPRyhE6L24+CsTgWXmJWk7CNo1rVJBkFYAQtV00+j2Kal7k0kjRdvVTCQ5t3sQ==","signatures":[{"sig":"MEQCIH98MjXV632oRaqgb6M0ZwRjGYovNPZKfnY6LR25QIR3AiByH5CAiSWMFyqdtVDXEiKZZF9GNEzueZMr1idaMEXNdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":797336},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"a471d54fbee60ff1eb001a62952f779110e24300","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.18.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.6.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.4","hm-trace-report":"0.2.3","hmcommand-runner":"^1.4.0","hiperf_txt_parser":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.11_1786091519857_0.42537249159388923","host":"s3://npm-registry-packages-npm-production"}},"0.9.12":{"name":"snapshot-checker","version":"0.9.12","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.12","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"2ac33d63bccf69536850c69c6cfb083881d07be0","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.12.tgz","fileCount":218,"integrity":"sha512-XaVIrcyCFJqGcQ+WAd3q4AaeA819nDQ2q4TDSimQF2gtAU3E4HyuGjYs4VqnN6JOPWxDm35NSXqCI71almVTAA==","signatures":[{"sig":"MEQCIGpVuAGa1LNFgGM4OKlMriCZrEpozCFuomKfIQXZDimBAiA8WacmNe/CQe5MP0tj7zwS7VjYVBhcjI7jVUATohOBww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":833779},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"a6c7d9f35074701828856a85de329d235ac8a049","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.18.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.6.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.4","hm-trace-report":"0.4.1","hmcommand-runner":"^1.4.1","hiperf_txt_parser":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.12_1786526389924_0.315368038168087","host":"s3://npm-registry-packages-npm-production"}},"0.9.13":{"name":"snapshot-checker","version":"0.9.13","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.13","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"65796a5011abc88b93eda18a7b4d6e98fd0a4249","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.13.tgz","fileCount":218,"integrity":"sha512-p/qbwbO//AIJG2wsvsGa5fKz4IQ4bNZuXfXL5OuwOn3INX5bE7JtmPZhacZLiI9I1jxRVJWum1ZY91GoxbbJTQ==","signatures":[{"sig":"MEQCIGGo1tA+eYbukz4emPOaMrO2HeelbabuEFKArG2gsvohAiAI/CEw1j//In64z0cpbTtH0c6i5Dfk5ZwA6AlioRi/3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":837302},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"cb7fb33d3544dd6f41669f77b47d1249e99d5f15","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.18.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.6.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.4","hm-trace-report":"0.4.1","hmcommand-runner":"^1.4.1","hiperf_txt_parser":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.13_1786620067727_0.4340468088755862","host":"s3://npm-registry-packages-npm-production"}},"0.9.14":{"name":"snapshot-checker","version":"0.9.14","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.14","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"0622ab1cc169696af53610d2537b1a7edff03b84","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.14.tgz","fileCount":218,"integrity":"sha512-6gNRp+gW9pt/Qlsz8zR8BxIFmPwJY7lE5TRA4T/hro7L/ejbv8Y1Cw2j8bcbCL7OHEW5pQymc/WABJWpEyaD6A==","signatures":[{"sig":"MEQCIG15Cj4JSEZ7CMh+SDTGQl2XfKal5e9O7BHvLIPOm3IFAiBB/Fmo31vqvx/nPwZESwa6uIBL0gSygo3u/QI+ZJ1G2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":837806},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"0f4da2ae0960b0019ddebd729f30ce583e3115a6","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.19.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.7.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.11.4","hm-trace-report":"0.4.2","hmcommand-runner":"^1.4.1","hiperf_txt_parser":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.14_1787036011950_0.9739861695155063","host":"s3://npm-registry-packages-npm-production"}},"0.9.15":{"name":"snapshot-checker","version":"0.9.15","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.15","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"030353a21d56a815f6a37bd05e8440e8ec631392","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.15.tgz","fileCount":218,"integrity":"sha512-07OLI9Sx+LlQiYsPTPG2rAxB9vhtBrH1+QHwPcKKYonANTNyDs4FQQLVYvwcROCoA3d+UqtVFkeZksB4g3lL9w==","signatures":[{"sig":"MEYCIQC2nXlYgl+f0FKLzQG5bmJ/VCmiwkFhNfkBbP/AN87+YwIhANel8aeaLb3kjMsYTSXqMpef91aDHaL7JZaJtnaN1+me","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":867037},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"cc1f122525d0fed3af36abc533049dceda214f63","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.19.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.7.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.12.1","hm-trace-report":"0.4.2","hmcommand-runner":"^1.5.1","hiperf_txt_parser":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.15_1787986637830_0.90890191970928","host":"s3://npm-registry-packages-npm-production"}},"0.9.16":{"name":"snapshot-checker","version":"0.9.16","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.16","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"c92ea3d3c47147350332d970b82b6d85e032ce68","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.16.tgz","fileCount":218,"integrity":"sha512-Wdcf6Lwo6+IzuExyRUYkpHazpxSTatpxL6wsP0XizDFyclknF0XYDqXF+1XmIlwetVtu0bGR5wyc4FddqVoCqw==","signatures":[{"sig":"MEQCIHxDRIuz7ETgQuOLIBcTFidX0PPjZzWUyjzMKYEN3aR9AiAzmHQYQhYlfjFcRdJ490vLzsb7IsByo8Aq0TneIgRKfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":868457},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"1acb98c6b1729d938273039c38cfa683e0b7407f","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.19.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.7.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.12.1","hm-trace-report":"0.4.2","hmcommand-runner":"^1.5.1","hiperf_txt_parser":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.16_1788247735632_0.6574883931042979","host":"s3://npm-registry-packages-npm-production"}},"0.9.17":{"name":"snapshot-checker","version":"0.9.17","keywords":["cli","batch","shell","commands"],"author":"","license":"MIT","_id":"snapshot-checker@0.9.17","maintainers":[{"name":"faione","email":"funknow14@gmail.com"}],"bin":{"snapshot-checker":"dist/src/cli.js"},"dist":{"shasum":"41727d58e77220022907122fba2110ede6debfc5","tarball":"https://registry.npmjs.org/snapshot-checker/-/snapshot-checker-0.9.17.tgz","fileCount":218,"integrity":"sha512-77xWn79CwTLGY863A87UkHdKjZs6mW3oDtzWSvBqfWva68vJCE0bWtLJmelFj16yHIBzwH9qqM6gRq1g/cHgDA==","signatures":[{"sig":"MEUCIDRmKgOlVi64XAYpPWpA5iADnKF2RhxACA5VClFiIZXuAiEA26SPStrvaEhZLiiUg2rS58vLm6X9RwHkgwkW6A/nEKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":868783},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","default":"./dist/src/index.js"},"./commands/*":{"types":"./dist/src/commands/*.d.ts","import":"./dist/src/commands/*.js","default":"./dist/src/commands/*.js"}},"gitHead":"e84464900013daf2e10b96544542527abb726223","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test tests/**/*.test.ts","build":"rimraf dist && tsc","clean":"rimraf dist","start":"node dist/src/cli.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:all":"npm run test && npm run test:perf","build:bin":"node scripts/build-bin.mjs","smoke:bin":"node scripts/smoke-bin.mjs","test:perf":"tsx --test tests/perf/**/*.perf.ts","audit:prod":"npm audit --omit=dev","prewarm:pkg":"node scripts/prewarm-pkg-cache.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","build:bin:all":"node scripts/build-bin.mjs --all","prepublishOnly":"npm run build"},"_npmUser":{"name":"faione","email":"funknow14@gmail.com"},"_npmVersion":"11.19.0","description":"CLI 工具：按顺序执行 bat / mac / shell 命令","directories":{},"_nodeVersion":"26.7.0","dependencies":{"consola":"^3.4.2","commander":"^12.0.0","hm-pt-core":"^2.1.0","hmtrace-parser":"^0.12.1","hm-trace-report":"0.4.2","hmcommand-runner":"^1.5.1","hiperf_txt_parser":"^2.3.3"},"_hasShrinkwrap":false,"devDependencies":{"pkg":"^5.8.1","tsx":"^4.7.0","rimraf":"^6.0.1","esbuild":"^0.25.12","prettier":"^3.5.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/snapshot-checker_0.9.17_1788837143947_0.25969080662621025","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-03-25T02:59:21.446Z","modified":"2026-09-29T07:17:52.045Z","0.1.1":"2026-03-25T02:59:21.649Z","0.1.2":"2026-03-25T09:21:14.616Z","0.1.3":"2026-03-26T10:08:20.175Z","0.1.4":"2026-04-07T11:44:35.886Z","0.1.5":"2026-04-08T06:36:13.610Z","0.1.6":"2026-04-09T13:37:28.089Z","0.1.7":"2026-04-10T01:53:01.183Z","0.2.1":"2026-04-14T06:40:14.388Z","0.2.2":"2026-04-14T06:59:25.141Z","0.3.1":"2026-05-09T08:05:30.571Z","0.4.0":"2026-05-11T03:04:07.726Z","0.4.1":"2026-05-11T12:59:02.526Z","0.4.2":"2026-05-12T02:21:26.626Z","0.4.3":"2026-05-12T03:27:37.956Z","0.4.4":"2026-05-12T07:51:12.843Z","0.4.5":"2026-05-13T15:46:31.650Z","0.4.6":"2026-05-14T02:10:26.209Z","0.4.7":"2026-05-14T07:14:31.194Z","0.4.8":"2026-05-14T08:42:24.376Z","0.5.0":"2026-05-18T09:52:00.955Z","0.5.1":"2026-05-20T06:33:04.452Z","0.5.2":"2026-05-20T08:43:37.903Z","0.5.3":"2026-05-25T06:22:35.790Z","0.6.0":"2026-05-27T10:05:17.285Z","0.6.1":"2026-06-01T07:52:55.902Z","0.6.2":"2026-06-01T09:07:46.091Z","0.6.3":"2026-06-01T09:27:08.500Z","0.6.4":"2026-06-01T09:56:44.956Z","0.7.3":"2026-06-05T01:40:10.943Z","0.7.4":"2026-06-05T03:11:20.195Z","0.7.5":"2026-06-08T07:35:31.725Z","0.8.0":"2026-06-09T06:49:59.865Z","0.8.1":"2026-06-15T09:58:01.645Z","0.8.3":"2026-06-16T13:06:32.168Z","0.8.5":"2026-06-23T07:42:37.923Z","0.8.7":"2026-06-27T01:01:21.418Z","0.9.0":"2026-07-13T04:01:09.157Z","0.9.1":"2026-07-13T08:37:07.979Z","0.9.3":"2026-07-16T03:27:28.959Z","0.9.4":"2026-07-16T03:49:44.409Z","0.9.5":"2026-07-16T09:54:46.618Z","0.9.6":"2026-07-17T03:44:05.676Z","0.9.7":"2026-07-21T03:10:03.648Z","0.9.8":"2026-07-30T03:19:26.062Z","0.9.9":"2026-07-30T12:27:38.960Z","0.9.10":"2026-08-06T08:44:45.496Z","0.9.11":"2026-08-07T08:32:00.005Z","0.9.12":"2026-08-12T09:19:50.107Z","0.9.13":"2026-08-13T11:21:07.885Z","0.9.14":"2026-08-18T06:53:32.080Z","0.9.15":"2026-08-29T06:57:17.982Z","0.9.16":"2026-09-01T07:28:55.774Z","0.9.17":"2026-09-08T03:12:24.101Z"},"license":"MIT","keywords":["cli","batch","shell","commands"],"description":"CLI 工具：按顺序执行 bat / mac / shell 命令","maintainers":[{"email":"funknow14@gmail.com","name":"faione"},{"email":"desmond_xiao@outlook.com","name":"desmond_xiao"}],"readme":"# snapshot-checker\n\n`snapshot-checker` 是用于 **Harmony/OpenHarmony 设备调试**的数据采集与分析 CLI。该工具通过 `hdc` 清理设备环境、拉取日志、并行执行 `hitrace` 和 `hiperf` 采样，并在本地完成 perf 解码、数据去重和调用栈导出。\n\n常用命令套件 **`report-user`** 与 **`report`** 面向同一检查目标，按设备权限与启动方式选择入口；二者输出目录结构一致，均支持可选的 hstack / sourcemap 与 `dump_stack.*` 导出。详见下文 [快启风险场景扫描](#快启风险场景扫描)。\n\n---\n\n## F&Q\n\n**Q: 采集结束后出现 filter tgid 失败错误，该如何处理？**\n\nA: 该错误通常表示快启镜像制作可能失败。应优先排查并修复快启镜像问题，确认镜像正常后再重新用本工具采集。`monitor` 与 `verify-snapshot` 阶段都会主动校验：先 `pgrep` 模板/同名进程，再按差分判定镜像是否存在；任一缺失会直接报错「在屏蔽 checkpoint_revoked 约束下快启镜像制作失败」并中止。`analysis` 还会扫描采集数据中是否存在 `checkpoint_revoked`：有则提示发现风险并写出完整 `dump_stack`；无则判定镜像制作完毕并写出合法空 `dump_stack.json`（`[]`）。注意：工具运行时会屏蔽 `checkpoint_revoked` 失效路径，进程校验通过仅说明**在此约束下**镜像能够制作成功，并不等价于无工具干预时的完整镜像可靠性。\n\n**Q: `report-user` 提示应用为 release / 非 debug，该如何处理？**\n\nA: `report-user` 要求安装被测应用的 **debug 签名包**；缺少 debug / 签名字段或检测到 release 会直接失败（`report` 对非 debug 仅 warning，但缺字段同样失败）。校验日志与 `preflight` 的 `app_debug` 会显式输出 `debug=…, appProvisionType=…`（缺字段显示 `<missing>`）。请安装 debug 包后重试。\n\n**Q: `report-user` 报 `error: failed to start ability`，该如何处理？**\n\nA: init 阶段会执行 `aa start`；若 hdc 输出含 `error: failed to start ability`，工具会错误中止（常见于 `--app` / `--ability` 填错，或 Ability 未导出）。请核对 bundleName 与入口 Ability 名称后重试。\n\n**Q: `--backtrack-delay` 与 `--duration` 如何设置？**\n\nA: 两者默认均为 `70` 秒，且必须满足 **`--backtrack-delay` ≤ `--duration`**。操作时间不够时增大 `duration`；需要更晚检查快启状态时增大 `backtrack-delay`。\n\n**Q: `report` 为何可能漏检目标？filter 阶段能跳过吗？**\n\nA: `report` 以 apppool 作为检测目标，存在丢失可能。工具会在 **filter** 阶段校验采集数据的一致性，该阶段务必开启，不要用 `-g` 跳过。若 filter 报错，可尝试重复抓取。\n\n**Q: 已经采集到的数据如何再做分析？**\n\nA: 可对已有输出目录使用 `-g analysis` 仅执行分析阶段，例如：\n\n```bash\nsnapshot-checker report-user --app com.example.app --ability EntryAbility --output-dir ./output -g analysis\n# 或 report：\nsnapshot-checker report --app com.example.app --output-dir ./output -g analysis\n```\n\n**Q: `/dev` 驱动导致的镜像失效，工具能否抓栈？**\n\nA: 因缺少相关 DFX 机制，本工具无法对此类问题做抓栈处理。请集中反馈给对应接口人跟进。\n\n**Q: 抓栈时出现栈为空或丢失 TS 栈，该如何处理？**\n\nA: 可尝试使用 `--hiperf-stack-mode dwarf` 重新采集：\n\n```bash\nsnapshot-checker report-user --app com.example.app --ability EntryAbility --hiperf-stack-mode dwarf\n```\n\n**Q: `trace_report` 与 `dump_stack` 应如何解读？**\n\nA: `trace_report`（`trace_report.html`）包含采集到的全部数据，不区分快启制作阶段；其中 **风险** Tab（始终保留，默认打开）**仅呈现 `checkpoint_revoked`（直接失效）**：有条目时可跳转 Hitrace / FFRT；无直接失效时为空列表（「发现快启不友好操作0条」），并提示当前场景未发现快启失效风险、可重复测试或新增更多场景。`print`（即 `tracing_mark_write`）与失效回溯等非直接失效事件不进入风险页。Hitrace / FFRT Tab 仍为全量探索视图。\n\n**Q: `result.json` 里的 `passed` / `error_codes` 如何解读？**\n\nA: `report` / `report-user` 结束时（含 fail-fast 后补跑的 `finalize`）会在 `--output-dir` 写出 `result.json`。`passed: true` 且 `error_codes` 为空表示检查通过；否则按码排查：`err_snapshot_not_created` 未找到模板进程，`err_snapshot_create_failed` 有模板但无镜像，`err_snapshot_invalidated` 采集后镜像失效，`err_checkpoint_revoked_present` 存在直接失效事件，`err_execution_failed` 为其它执行失败兜底。\n\n**Q: analysis 报 `BUDGET_EXCEEDED: 输入文件 … 超过上限 536870912`（或其它字节数）该如何处理？**\n\nA: 这是 AnalysisBudget 对输入文件大小的保护性拦截（默认上限 **1GiB**；旧版本曾为 512MiB，即报错中的 `536870912`）。可通过环境变量上调，绝对上限为 **2GiB**：\n\n```bash\nexport ANALYSIS_MAX_INPUT_BYTES=$((1536 * 1024 * 1024))  # 例：1.5GiB\n```\n\n**Q: analysis 报 `BUDGET_EXCEEDED: records=…` / `samples=…`（堆栈常指向 `analysis_budget.js` 的 `assertCountWithinBudget`）该如何处理？**\n\nA: 这是记录条数或 hiperf 样本数超限（默认上限均为 **100 万**；旧版本曾为 50 万）。按报错字段上调对应环境变量，绝对上限 **500 万**：\n\n```bash\nexport ANALYSIS_MAX_RECORDS=2000000\nexport ANALYSIS_MAX_SAMPLES=2000000\n```\n\n序列化输出超限同理，可调 `ANALYSIS_MAX_SERIALIZED_BYTES`（或 `TRACE_HTML_MAX_BYTES`）。详见下文「环境变量」。\n\n---\n\n## 安装\n\n### 前置条件\n\n- **Node.js** ≥ 18。\n- PATH 中可用 **`hdc`**，并已连接目标设备。\n- 本地分析依赖 **`hiperf_txt_parser` ^2.3.3**、**`hm-pt-core` ^2.1**、**`hmtrace-parser` ^0.12** 和 **`hm-trace-report` ^0.4**，这些依赖会随 `npm install` 安装。hitrace 预处理与索引由 hmtrace 构建，公共类型与 trace 机制由 hm-pt-core 提供，样本级并行解码与 hitrace 合并由 hiperf 完成，`trace_report.html` 由 hm-trace-report 生成。\n\n### 直接安装（推荐）\n\n```bash\nnpm install -g snapshot-checker          # 全局安装 CLI\nsnapshot-checker --help                  # 查看顶层子命令与全局选项\nsnapshot-checker report-user --help      # 查看无系统权限场景入口的参数说明\nsnapshot-checker report --help           # 查看具备系统权限场景入口的参数说明\n```\n\n安装后可通过全局命令 **`snapshot-checker`** 调用 CLI。\n\n---\n\n## 快启风险场景扫描\n\n快启风险场景扫描用于在真机上采集快启失效相关数据，并在本机完成解码与报告生成：\n\n- 通过 `hdc` 连接设备，采集 hitrace / hiperf（及日志）数据；\n- 按所选风险目标识别失效回溯与直接失效等问题；\n- 在分析阶段导出 `dump_stack.*`，并在满足条件时生成 `trace_report.html`\n\n| 命令 | 适用场景 | 必填参数 | `--app` 取值 | 应用启动 | debug 校验 | 采集目标识别 |\n| ---- | -------- | -------- | ------------ | -------- | ---------- | ------------ |\n| `report-user` | 非 root 权限用户的推荐入口 | `--app`、`--ability` | 仅 `bundleName` | 通过 Ability 启动并重置应用；`aa start` 失败（如输出含 `failed to start ability`）时中止 | 非 debug 或缺少 debug / 签名字段时直接失败；日志输出 `debug` / `appProvisionType` 状态 | 按应用包名过滤 |\n| `report` | root 用户的完整采集入口 | `--app` | 支持 `bundleName` 或 `bundleName:pickerName` | 通过系统能力创建 / 管理快启镜像与检测目标 | 缺少 debug / 签名字段时失败；非 debug 仅 warning；同样输出两项字段状态 | 以 apppool 为检测目标，filter 阶段校验目标一致性 |\n\n非 root 权限用户使用 `report-user`；root 用户使用 `report`。\n\n### 快速上手\n\n非 root 权限用户可直接使用：\n\n```bash\nsnapshot-checker report-user \\\n  --app com.example.app \\\n  --ability EntryAbility \\\n  --output-dir ./output \\\n  --trace-format-profile auto \\\n  --filter-hitrace \\\n  --log-file\n```\n\n| 参数 | 对工具的影响 |\n| ---- | ------------ |\n| `--app` | 指定被测应用 |\n| `--ability` | 指定入口 Ability，用于启动并重置被测应用；缺少该参数时命令失败 |\n| `--output-dir` | 将日志、原始数据与报告写入该目录 |\n| `--trace-format-profile auto` | 从设备识别事件格式（默认 `default`） |\n| `--filter-hitrace` | 额外导出仅与被测应用相关的 hitrace |\n| `--log-file` | 将运行日志写入 `workspace/checker.log` |\n\n与默认值相同的选项（如 `--duration`、`--backtrack-delay`、`--risk-targets`、`--trace-from`、`--app-start-wait`、`--parse-concurrency`）已省略。\n\nroot 用户使用 `report`（无需 `--ability` / `--app-start-wait`；执行阶段含 `restore`）：\n\n```bash\nsnapshot-checker report \\\n  --app com.example.app \\\n  --output-dir ./output \\\n  --trace-format-profile auto \\\n  --filter-hitrace \\\n  --log-file\n```\n\n运行成功后，在 `--output-dir`（示例为 `./output`）中查看主要产物：\n\n| 产物 | 说明 |\n| ---- | ---- |\n| `result.json` | 运行结束写出的检查结果（`passed` / `error_codes`）；fail-fast 中止后仍会补跑 `finalize` 生成 |\n| `dump_stack.txt` / `.json` / `.xlsx` | 失效问题调用栈报告；有 `checkpoint_revoked` 时为完整结果，无直接失效时 json/txt 为合法空数组 `[]`（`sample_count=0`），xlsx 跳过 |\n| `trace_report.html` | 交互式网页报告；**风险** Tab 仅含 `checkpoint_revoked`（含空列表），Hitrace / FFRT 为全量数据 |\n| `workspace/checker.log` | 运行日志（示例命令含 `--log-file`） |\n| `workspace/hitrace/*.sys` | hitrace `--trace_begin --record` 拉取的 raw trace（解析唯一数据源） |\n| `workspace/hyperstart_hitrace.filtered.txt` | 仅与被测应用相关的 hitrace（示例命令含 `--filter-hitrace`） |\n\n完整目录结构见下文 [输出目录](#输出目录)。\n\n### 执行阶段\n\n| 阶段 | 说明 |\n| ---- | ---- |\n| `init` | 检查设备与应用，清理残留，并按场景启动或配置采集环境 |\n| `monitor` | 等待真机操作并采集数据；按 `--backtrack-delay` 检查应用与快启镜像是否就绪 |\n| `collect` | 将设备上的采集结果传到本机输出目录 |\n| `verify-snapshot` | 采集完成后再次「校验快启镜像」（进程差分）；失败则短路中止 |\n| `restore` | 恢复采集前的系统开关（仅 `report`） |\n| `filter` | 筛选属于被测应用的数据（`report` 另校验采集目标一致性） |\n| `analysis` | 还原调用栈并生成报告；若存在 `checkpoint_revoked` 则写出完整 `dump_stack` 并提示整改，否则写出合法空 `dump_stack.json`（`[]`）并保留 `trace_report` |\n| `finalize` | 兜底停止 hitrace 录制并写出 `result.json`；fail-fast 中止后仍会补跑 |\n\n建议先以 `--list` 查看阶段组成，再以 `--dry-run` 核对参数与执行顺序；二者均不执行正式采集。局部重跑可使用 `-g` / `--group`；首次检查应运行全部阶段。\n\n### 工具选项配置\n\n首次使用通常只需填写 `--app`（`report-user` 另需 `--ability`）与 `--output-dir`。其余参数可在遇到具体问题时再调整。`--backtrack-delay` 须 ≤ `--duration`，二者默认均为 `70`。\n\n| 参数 | 说明 | 默认值或建议 |\n| ---- | ---- | ------------ |\n| `--app <app>` | 被测应用标识；预览与正式执行均须填写 | 无 |\n| `--risk-targets <targets>` | `all` 检查全部问题，`backtrack` 检查组合失效，`direct` 检查直接失效 | `all` |\n| `--trace-from <source>` | 报告使用的数据来源；`hiperf` 以采样结果为主并合成 hitrace；`mix` 自动组合两种来源 | `hiperf` |\n| `--hstack-tool-path <path>` | hstack 工具路径，用于补充 ArkTS/JS 源码调用位置 | 不执行 hstack |\n| `--sourcemap-dir <path>` | 与被测应用版本匹配的 sourcemap 目录 | 无 |\n| `--log-key <key>` | 识别被测应用所用的日志字段；通常无需修改 | `pid` |\n| `--duration <seconds>` | 为真机操作与问题采集预留的时间 | `70` |\n| `--backtrack-delay <seconds>` | 启动应用后等待多久再检查快启状态；须 ≤ `--duration` | 与 `duration` 相同 |\n| `--risk-collect-wait <seconds>` | 延迟开始问题采集；需先完成准备操作时使用 | `0` |\n| `--buffer-size <kb>` | hitrace `-b` 缓冲区大小（KB）；采集内容较多且日志提示数据不足时增大 | `512000` |\n| `--hitrace-tag <tags>` | 额外采集的 hitrace 类别，逗号分隔；含 `ffrt` 时启用异步解栈相关采集 | 无 |\n| `--enable-perf-tracing-mark` | 与 `--hitrace-tag ffrt` 联用，采集异步解栈所需的关联标记 | 关闭 |\n| `--hiperf-stack-mode <mode>` | 调用栈采集方式；优先 `fp`，仅在调用栈缺失时尝试 `dwarf` | `fp` |\n| `--output-dir <path>` | 保存日志、原始数据与报告的目录 | `./output` |\n| `--trace-format-profile <name>` | 选择与设备匹配的事件格式；不确定时使用 `auto` | `default` |\n| `--event-match-mode <mode>` | 事件格式无法识别时可用 `nearest` 尝试兼容；正常情况使用 `strict` | `strict` |\n| `--skip-perf-dedupe` | 保留重复出现的问题记录，便于查看发生次数；网页报告不受影响 | 关闭 |\n| `--filter-hitrace` | 额外导出仅与被测应用有关的 hitrace，不覆盖原文件 | 关闭 |\n| `--keep-decoded-perf` | 保留便于进一步排查的中间分析文件 | 关闭 |\n| `--skip-non-backtrack` | 只保留能够关联到文件访问的组合失效项 | 关闭 |\n| `--drop-failed-samples` | 不在报告中保留无法完整解析的数据 | 关闭 |\n\n**全局选项**（对各子命令均生效；完整说明参见「Agent 执行流程」）\n\n| 参数 | 说明 | 默认值或建议 |\n| ---- | ---- | ------------ |\n| `--hdc-target <sn>` | 目标设备序列号；连接多台设备时必须填写 | 无 |\n| `--parse-concurrency <n>` | 解析并发数量；数据量大时可适当增大 | `1` |\n| `--output-format <text\\|json>` | 普通使用选择 `text`；脚本或 Agent 调用选择 `json` | `text` |\n| `--log-level <level>` | 控制日志详细程度；排查工具问题时可改为 `debug` | `info` |\n| `--log-file [path]` | 保存运行日志；省略路径时写入 `workspace/checker.log` | 关闭 |\n| `--continue-on-error` | 忽略失败并继续后续阶段；默认遇错即停 | 关闭 |\n\n#### `--trace-from` 适用场景\n\n| `--trace-from` | 适用场景 | 结果处理 |\n| -------------- | -------- | -------- |\n| `hiperf`（默认） | 日常检查，推荐使用 | 以 hiperf 为主生成报告，并额外保留便于排查的合成 hitrace；设备不支持所需 hiperf 能力时自动改用 hitrace |\n| `mix` | 需要综合两种来源时使用 | 综合 hiperf 与 hitrace；设备不支持所需 hiperf 能力时自动改用 hitrace |\n| `hitrace` | 设备不支持 hiperf 采集，或只需 hitrace 结果 | 使用 hitrace 生成报告 |\n\n选择 `mix` 或 `hiperf` 时，工具会先检查设备是否满足采集条件；不满足时本轮自动改用 `hitrace`，日志记录最终数据来源。\n\n#### 风险目标 `--risk-targets`\n\n| 取值 | 含义 |\n| ---- | ---- |\n| `backtrack` | 失效回溯（文件访问相关的组合失效） |\n| `direct` | 直接失效 |\n| `all` | 以上全部（默认） |\n\n含 `backtrack` 时，分析阶段会对组合失效做文件访问关联；仅 `direct` 时不执行该关联。\n\n### `report-user` 差异选项\n\n| 参数 | 说明 | 默认值或建议 |\n| ---- | ---- | ------------ |\n| `--ability <ability>` | 被测入口 Ability；`report-user` 必须填写 | 无 |\n| `--app-start-wait <seconds>` | 启动应用后等待进入稳定状态的时长；启动较慢时增大；`0` 表示不等待 | `20` |\n\n缺少 `--ability` 时退出码为 `2`（`ERROR_MISSING_ABILITY`）。init 阶段 `aa start` 若失败（输出含 `error: failed to start ability`）会错误中止。\n\n### `report` 差异选项\n\n`report` 无额外必填采集选项。与 `report-user` 的差异体现在场景行为：\n\n- `--app` 可使用 `bundleName:pickerName`；\n- 执行阶段包含 `restore`；\n- 非 debug 包不中止采集（仍建议使用 debug 签名包以保证栈完整性）。\n\n### 控制台输出\n\n**运行前摘要**（`--dry-run` 与正式运行均会打印，`--list` 时不打印）：\n\n```text\nℹ [trace-from] hiperf\nℹ [风险目标] 失效回溯、直接失效\nℹ [backtrack] 保留非 FS revoked\n```\n\n含义：当前数据来源、已选风险目标，以及组合失效结果是否做文件访问关联。\n\n**`--list` 输出格式**（节选）：\n\n```text\n[report] 命令套件（按 group 展示）:\n\nGroup: init\n    [mac] hdc shell remount — hdc shell remount\n    ...\nGroup: monitor\n    [mac] [background] hdc shell \"hilog -t kmsg | grep pid\" >> ./output/workspace/hyperstart_log.txt — 收集日志到本地\n    ...\n```\n\n**`--dry-run` 输出格式**（节选）：\n\n```text\n(dry-run) [report] 将要执行的命令:\n\n  1. [mac] hdc shell remount — hdc shell remount\n  ...\n  13. [mac] hdc shell \"hitrace --trace_begin --record ...\" — 启动 hitrace 抓取\n  ...\n  14. [mac] hdc shell \"hiperf record -e checkpoint:... & ... hiperf dump ...\" — 收集风险事件数据\n  ...\n  22. [builtin] [func:func] — 风险栈解码\n```\n\n正式执行时，每条命令还会输出进度行，例如 `▶ (13/22) [mac] 收集风险事件数据`，结束后打印退出码与耗时。\n\n### 输出目录\n\n使用默认的 `--output-dir ./output` 成功执行后，输出目录的典型结构如下：\n\n```text\noutput/\n├── plan.json               # plan 命令生成（执行前）\n├── run_manifest.json       # apply 写入（执行状态）\n├── result.json             # 运行结束写出的检查结果（passed / error_codes）\n├── dump_stack.txt          # 最终调用栈（文本）\n├── dump_stack.json         # 同上（JSON）；validate 必需\n├── dump_stack.xlsx         # 同上（Excel）；无直接失效时不生成\n├── trace_report.html       # Hitrace 交互报告（含 hiperf 反向查询；启用 ffrt 时含 FFRT Tab）\n├── perf_txt/\n│   └── hyperstart_perf.data.txt    # 设备 hiperf dump 文本\n└── workspace/              # 中间产物\n    ├── checker.log           # --log-file 默认路径\n    ├── hyperstart_log.txt    # hilog 采集\n    ├── hitrace/              # --trace_begin --record 拉取的 raw .sys\n    ├── hyperstart_hitrace.filtered.txt   # --filter-hitrace 时导出\n    ├── perf.data\n    └── _hyperstart_perf.data.txt   # hstack 解析后 perf（若配置了 hstack）\n```\n\n未配置 `--hstack-tool-path` 时，分析阶段跳过 hstack，使用 `perf_txt/hyperstart_perf.data.txt` 进行解码。\n\n### `trace_report.html` 交互报告\n\n当 **`--trace-from` 为 `mix`、`hitrace` 或 `hiperf`**，或 **`--hitrace-tag` 包含 `ffrt`** 时，分析阶段将在 `<output-dir>/trace_report.html` 生成自包含 HTML 报告。报告内嵌 hiperf 样本与 callchain，可通过 `file://` 协议打开。无直接失效时仍保留 **风险** Tab（空列表 / 绿色态），并提示当前场景未发现快启失效风险，可重复测试或新增更多场景。\n\n| Tab | 说明 |\n| --- | ---- |\n| **Hitrace** | 虚拟滚动主表；统一查询栏按 **label 芯片**筛选（tid / 任务 / 事件 / 栈）；表头 ▾ 快捷筛选；**内容**检索仅用于 ↑↓ 跳转（支持区分大小写、完整匹配；匹配行居中、关键词高亮）；有符号栈的行可点击，从右侧滑出 **调用栈信息** 侧栏 |\n| **风险** | 首位 Tab（默认打开）；仅列出 `checkpoint_revoked`（含空列表）；`print`（`tracing_mark_write`）不进入该 Tab；有条目时可跳转 Hitrace / FFRT；空列表时提示当前场景未发现快启失效风险，建议重复测试或新增场景 |\n| **FFRT** | `--hitrace-tag` 含 `ffrt` 时出现；左侧按 gid 列表展示，含子任务标签（**文件访问** / **失效触发**）；统一查询栏支持 **gid** label 与内容检索、↑↓ 跳转；详情见下表 |\n\nHitrace / FFRT 事件表共用**栈**列（导出时按匹配的 hiperf callchain 预计算），列表用短标签，查询/筛选仍用完整语义名：\n\n| 列表短标签 | 完整名（查询 label） | 含义 |\n| --- | ---- | ---- |\n| **无符号** | 无符号栈 | 有 hiperf 匹配但无符号栈帧；行呈灰色且**不可点击** |\n| **有符号** | 有符号栈 | 有符号栈，但不含 `.ts` / `.ets` / `.js` 源码帧 |\n| **应用栈** | 有应用栈 | 符号栈含 `.ts` / `.ets` / `.js`（必含符号栈，故不再叠「有符号栈」） |\n\n无 hiperf 匹配时栈列显示 `—`。侧栏标题为 **调用栈信息**：样本属性以双列 KV 展示事件信息；若 callchain 含 `.ts` / `.ets` / `.js` 帧，**默认仅展示应用源码帧**（可点「显示完整栈」展开原生帧）；整条无应用源码帧时摘要旁标注「无应用栈」。\n\n**FFRT 详情页**（选中左侧 gid 后）：\n\n| 区块 | 说明 |\n| ---- | ---- |\n| 标题栏 | gid / label / tgid；生命周期**完整 / 缺失**状态徽章（有缺失时列出说明）；**Exec 片段**以时间范围摘要展示（不单独成表） |\n| **任务发起** | 生命周期中的提交 / 发起类事件（`submit_begin` 等，不含 `exec_begin`）；表含**栈**列 |\n| **子任务** | 与 gid 关联的 checkpoint 事件，仅 `vfs_snapshot_dump_monitor`（文件访问）与 `checkpoint_revoked`（失效触发）；表含**栈**列 |\n| **FFRT生命周期** | 完整生命周期事件表，**默认折叠**，置于页底 |\n\n### FFRT 事件分析指南\n\n当前仅分析带有伴生事件的 gid，并检查其「任务发起」中由主线程发起的行为。报告用于聚合和展示证据；gid 存在伴生事件不构成业务异常的判定依据。\n\n**1. 生成并打开报告**\n\n采集时至少启用 `--hitrace-tag ffrt`；如需通过 hiperf 调用栈继续定位主线程行为，应同时启用 `--enable-perf-tracing-mark`：\n\n```bash\nsnapshot-checker report --app com.example.app \\\n  --hitrace-tag ffrt \\\n  --enable-perf-tracing-mark\n```\n\n采集完成后，在浏览器中打开 `<output-dir>/trace_report.html` 并进入 **FFRT** Tab。若列表显示“无 FFRT gid 聚合结果”，应检查目标场景是否触发，并核对采集参数、目标进程和 trace 数据。该结果不足以判定场景正常。\n\n**2. 筛选需要检查的 gid**\n\n- 左侧每一项代表一个 gid。带绿色伴生事件标签的 gid 会优先排列，是当前识别模式的检查对象。\n- `文件访问 ×N` 表示该 gid 关联了 `vfs_snapshot_dump_monitor`，`失效触发 ×N` 表示关联了 `checkpoint_revoked`；`N` 是对应事件次数。\n- 可在查询栏用 **gid** label 筛选，或输入文件路径、事件内容等关键词，使用 ↑↓ 在命中项间跳转（内容检索支持区分大小写与完整匹配）。\n- 没有伴生事件标签的 gid 不属于当前识别范围，不需要按本模式继续分析。\n\n**3. 读取 gid 详情**\n\n选中目标 gid 后，按以下顺序读取：\n\n1. **子任务**：先确认伴生事件的类型、时间和内容，明确该 gid 关联的是文件访问还是失效触发，以及涉及的具体对象。\n2. **任务发起**：查找 `tid` 与详情标题中的 `tgid` 相同的记录；在 Linux 线程模型中 `tid = tgid` 表示主线程。重点查看该行的事件、内容和发生时间。\n3. **调用栈信息**：优先点击主线程任务发起行中标记为 **有符号** / **应用栈** 的记录（**无符号**行不可点）；右侧侧栏中若含应用源码帧则默认仅展示应用栈（可展开完整栈），确认发起任务的业务调用路径。\n4. **FFRT生命周期**：需要核对提交、唤醒、依赖阻塞和执行过程时再展开。标题中的 Exec 摘要可用于确认实际执行线程及时间区间。\n\n**4. 识别异常**\n\n当前应按“伴生事件 → 主线程发起行为”的证据链判断：\n\n- gid 存在 `文件访问` 或 `失效触发` 伴生事件；\n- 该 gid 的「任务发起」中存在 `tid = tgid` 的主线程记录；\n- 主线程记录的内容、时间及 Hiperf callchain 指向非预期的业务行为。\n\n同时满足以上条件时，可将该主线程调用路径作为异常定位线索。伴生事件本身只表示该 gid 需要关注，不能单独等同于异常；是否“非预期”仍需结合具体业务场景判断。\n\n若「任务发起」中找不到 `tid = tgid` 的记录，或点击后没有匹配的 Hiperf 样本，表示当前证据不足，不应直接判定正常或异常。应检查 FFRT / `tracing_mark_write` 是否完整采集、目标 tgid 是否正确，并在必要时重新采集。\n\n左侧及标题栏的 **完整 / 缺失**仅描述 FFRT 生命周期事件是否齐全：`缺失`可能来自采集窗口、缓冲区或事件不完整，不代表业务异常；`完整`也不代表主线程行为一定正常。\n\n### 异步解栈 / FFRT\n\n当目标场景需要异步解栈（例如 FFRT 任务在 worker 线程执行，默认同步调用栈无法覆盖完整路径）时，须同时使能：\n\n| 参数 | 说明 | 默认值或建议 |\n| ---- | ---- | ------------ |\n| `--hitrace-tag ffrt` | 采集 FFRT 相关 hitrace，并在网页报告中展示 FFRT 结果 | 无 |\n| `--enable-perf-tracing-mark` | 与 `ffrt` 联用，采集异步解栈所需的关联标记 | 关闭 |\n\n两项须同时启用；仅启用其中一项时，异步解栈证据不完整。\n\n```bash\nsnapshot-checker report --app com.example.app \\\n  --hitrace-tag ffrt \\\n  --enable-perf-tracing-mark\n```\n\n网页报告在生成调用栈文本报告前导出；`--skip-perf-dedupe` 仅影响 `dump_stack.*` 是否去重，不影响网页报告。\n\n`validate` 在计划包含分析阶段且满足上述报告条件时，将 `trace_report.html` 列为必需产物。\n\n\n---\n\n## Agent 执行流程\n\n除命令套件子命令 `report-user` 和 `report` 外，`snapshot-checker --help` 还列出以下**顶层命令**。`report-user` 与 `report` 使用相同的输出目录结构；这些流程命令不嵌套在命令套件中。\n\n| 命令 | 说明 |\n| ---- | ---- |\n| `schema` | 输出 CLI 参数协议（required、default、enum、side_effect 等）；Agent 应优先读取，避免与 Skill 文档漂移 |\n| `preflight` | 运行前环境检查（Node、hdc、设备、应用、输出目录、命令套件权限等） |\n| `plan` | 生成可保存的执行计划 `plan.json`（不连设备、不执行）；默认 `--command-suite report` |\n| `apply` | 按 `plan.json` 执行采集与分析，写入 `run_manifest.json`；采用 plan 中 `execution_options` 与 `global_options`，不可覆盖（不一致时退出码 `2` / `PLAN_OPTION_OVERRIDE`） |\n| `status` | 读取 `run_manifest.json` 执行状态 |\n| `validate` | 按 `plan.json` 推导预期产物并验收（默认读 `<output-dir>/plan.json`；`--no-plan` 为 legacy，仅验 `dump_stack.json`） |\n\n**建议的 Agent 执行顺序**：`schema` → `preflight` → `plan` → `apply` → `status` → `validate`。执行失败时，应优先处理 JSON 中的 `error.next_actions` 或 `checks[].next_actions`；当 `user_input_required: true` 时，必须向用户确认。详细契约参见 [`skills/snapshot-checker/SKILL.md`](skills/snapshot-checker/SKILL.md)。\n\n```bash\nsnapshot-checker schema --output-format json\nsnapshot-checker schema plan --output-format json    # 仅 plan 子命令 schema\nsnapshot-checker preflight --app com.example.app --output-dir ./output --output-format json\nsnapshot-checker plan --command-suite report-user --app com.example.app --ability EntryAbility --output-dir ./output --output-format json\nsnapshot-checker plan --command-suite report --app com.example.app --output-dir ./output --output-format json\nsnapshot-checker apply --plan ./output/plan.json --output-format json\nsnapshot-checker status --output-dir ./output --output-format json\nsnapshot-checker validate --output-dir ./output --output-format json\n```\n\n### 全局选项\n\n对各子命令均生效（含顶层命令与 `report-user` / `report`）：\n\n| 参数 | 说明 | 默认值或建议 |\n| ---- | ---- | ------------ |\n| `--output-format <text\\|json>` | 普通使用选择 `text`；脚本或 Agent 调用选择 `json`；与 `--output-dir`（采集产物目录）无关 | `text` |\n| `--log-level <level>` | 控制日志详细程度；排查工具问题时可改为 `debug` | `info` |\n| `--log-file [path]` | 保存运行日志；不填写路径时保存到 `workspace/checker.log` | 关闭 |\n| `--hdc-target <sn>` | 目标设备的序列号；连接多台设备时必须填写 | 无 |\n| `--parse-concurrency <n>` | 解析并发数量；数据量大时可适当增大 | `1` |\n\n### `--output-format json`\n\n- **stdout**：仅一行 JSON（`schema_version: \"1\"`）。\n- **stderr**：结构化日志与进度；自动设置 `NO_COLOR=1`。\n- 适用于 `--list`、`--dry-run`、正式执行，以及 `schema` / `preflight` / `plan` / `apply` / `status` / `validate`。\n\n**统一信封字段**（各命令 JSON 均尽量包含，旧字段保留不删）：\n\n| 字段 | 说明 |\n| ---- | ---- |\n| `ok` | 当前命令是否成功 |\n| `command` | 子命令名 |\n| `status` | 协议状态：`READY` / `RUNNING` / `SUCCEEDED` / `FAILED` / `PARTIAL_SUCCESS` / `VERIFY_FAILED` 等 |\n| `tool.name` / `tool.version` | 工具名与版本 |\n| `warnings` / `errors` | 非阻断与阻断摘要 |\n| `next_actions` | 建议 Agent 执行的下一步（如 `rerun_plan`、`validate`） |\n| `error` | 失败时的结构化错误（含 `category`、`recoverable`、`retryable`、`user_input_required`） |\n\n**validate** 额外提供 `checks[]`：每项含 `id`、`status`、`required` 及可选 `next_actions`（如缺 `dump_stack.json` 时建议重跑 `analysis`；缺 `trace_report.html` 时检查 `--trace-from` / `--hitrace-tag` 是否满足导出条件）。\n\n**run_manifest.json** 在 `apply` 后还可含 `phase`、`failed_group`、`allowed_actions`、`recommended_actions`；`--continue-on-error` 且部分失败时 `status` 为 `partial_success`。\n\n### 退出码\n\n| 退出码 | 含义 |\n| ------ | ---- |\n| `0` | 成功 |\n| `1` | 执行失败、验收失败、preflight 有 `fail` 检查项 |\n| `2` | 参数/契约错误（如缺 `--app`、未知 `--group`、Shell 参数非法、plan 文件无效或摘要不匹配） |\n\n常见 `error.code`：`ERROR_MISSING_APP`、`ERROR_MISSING_ABILITY`、`UNKNOWN_GROUP`、`INVALID_IDENTIFIER`、`INVALID_NUMERIC`、`INVALID_PATH`、`PLAN_CHANGED`、`PLAN_VERSION_MISMATCH`、`PLAN_OPTION_OVERRIDE`、`PLAN_NOT_FOUND`、`MANIFEST_NOT_FOUND`、`HIPERF_RAW_DATA_UNSUPPORTED`、`BUDGET_EXCEEDED` 等。json 模式下多数错误附带 `next_actions`（如 `HIPERF_RAW_DATA_UNSUPPORTED` 建议 `--trace-from hitrace` 后重新 `plan`）。完整列表见 [`skills/snapshot-checker/references/error_codes.md`](skills/snapshot-checker/references/error_codes.md)。\n\n### 环境变量\n\n| 变量 | 说明 |\n| ---- | ---- |\n| `HYPER_STARTUP_CHECKER_LOG_LEVEL` | 默认日志级别（优先于 `LOG_LEVEL`） |\n| `HYPER_STARTUP_CHECKER_BUNDLED_VERSION` | pkg 二进制嵌入版本（构建注入） |\n| `NO_COLOR` / `FORCE_COLOR` | 控制台颜色 |\n| `ANALYSIS_MAX_INPUT_BYTES` | analysis 输入文件大小上限（字节）；默认 **1GiB**，绝对上限 **2GiB**。超限抛 `BUDGET_EXCEEDED` |\n| `ANALYSIS_MAX_RECORDS` | analysis / trace HTML 记录条数上限；默认 **1000000**，绝对上限 **5000000**（可用 `TRACE_HTML_MAX_RECORDS` 作为回退）。超限抛 `BUDGET_EXCEEDED` |\n| `ANALYSIS_MAX_SAMPLES` | analysis hiperf 样本数上限；默认 **1000000**，绝对上限 **5000000**。超限抛 `BUDGET_EXCEEDED` |\n| `ANALYSIS_MAX_SERIALIZED_BYTES` | 序列化输出大小上限（字节）；默认 **1GiB**，绝对上限 **2GiB**（可用 `TRACE_HTML_MAX_BYTES` 作为回退） |\n| `ANALYSIS_MAX_*` 其它项 | callchain 帧数、关联边等其余 AnalysisBudget 上限，详见源码 `analysis_budget_limits.ts` |\n\n旧名 `SNAPSHOT_CHECKER_LOG_LEVEL`、`SNAPSHOT_CHECKER_BUNDLED_VERSION` 仍可读，建议迁移至上表新名。\n\nanalysis 阶段会在读取 hiperf / hitrace 等输入前按 `ANALYSIS_MAX_INPUT_BYTES` 校验文件大小；大型 trace 若触发 `BUDGET_EXCEEDED: 输入文件 … 超过上限`，可先上调该环境变量（不超过 2GiB），例如：\n\n```bash\nexport ANALYSIS_MAX_INPUT_BYTES=$((1536 * 1024 * 1024))  # 1.5GiB\n```\n\n记录 / 样本条数超限（如 `BUDGET_EXCEEDED: records=… 超过上限`）时可上调对应环境变量，例如：\n\n```bash\nexport ANALYSIS_MAX_RECORDS=2000000\nexport ANALYSIS_MAX_SAMPLES=2000000\n```\n\n### Agent 调用与评测\n\nAgent 相关能力已集成到 CLI 和测试中，契约细节以 Skill 文档为准。\n\n- 技能文档：[`skills/snapshot-checker/SKILL.md`](skills/snapshot-checker/SKILL.md)\n- 集成说明：[`skills/INTEGRATION.md`](skills/INTEGRATION.md)\n- 端到端评测：`tests/agent_e2e.test.ts`（仅解析 JSON 与退出码，无需真实设备）\n- 协议 schema：`tests/schema.test.ts`、`tests/error_recovery.test.ts`\n- 安全与 Plan 完整性：`tests/shell_identifiers.test.ts`、`tests/shell_params.test.ts`、`tests/plan_integrity.test.ts`、`tests/secure_output.test.ts`、`tests/analysis_budget.test.ts`\n\n**示例 Prompt**（自然语言场景短语由 Skill 展开为 plan 参数，见 [`capture_profile.md`](skills/snapshot-checker/references/capture_profile.md)）：\n\n```text\n使用 snapshot-checker 采集 com.app.example/MainAbility：使用全部 risk、启用 FFRT 栈与 hiperf trace、过滤 hitrace，并将解析并发数量设为 4。按建议的执行流程处理，按“目标+时间”创建输出目录，完成后返回目录路径。\n```\n\n```bash\nnpm run test -- tests/agent_e2e.test.ts tests/schema.test.ts\n```\n\n离线预览计划（无需设备）：\n\n```bash\nsnapshot-checker plan --command-suite report-user --app com.example.app --ability EntryAbility --output-dir ./output --output-format json\n# 等价：snapshot-checker report-user --dry-run --app com.example.app --ability EntryAbility --output-format json\n```\n\n---\n\n## 架构与 hmcommand-runner\n\n自 **0.8.x** 起，命令调度与执行引擎已提取为独立 npm 包 **[`hmcommand-runner`](https://www.npmjs.com/package/hmcommand-runner)**（当前依赖 `^1.4.0`）：\n\n| 层级 | 包 / 目录 | 职责 |\n|------|-----------|------|\n| 执行框架 | `hmcommand-runner` | `CommandDef` 类型、组调度（`group:N`）、Shell/Builtin/Embed Runner、`registerCommandSuites` |\n| 领域命令套件 | `src/commands/`、`src/lib/report/` 等 | report-user/report 命令套件、hdc/hiperf/hitrace 命令拼装与解码 |\n\n`snapshot-checker` 的公开 API（`resolveCommandSuite`、`runCommandSuiteGroups`、`executeAll` 等）从主包 re-export（底层委托 `hmcommand-runner`）。npm 仍可通过 `snapshot-checker/commands/report` 引用命令套件模块。若只需通用命令编排框架，可直接依赖 `hmcommand-runner`。\n\n---\n\n## 本地打包安装\n\n用于验证发布内容（`package.json` 的 `files` 字段）或在本机以安装包方式试用未发布版本：\n\n```bash\nnpm run build          # 生成 dist（pack 前建议执行；发布时 prepublishOnly 也会构建）\nnpm pack               # 在仓库根目录生成 snapshot-checker-<version>.tgz\nnpm install -g ./snapshot-checker-*.tgz\nsnapshot-checker --help\n```\n\n也可不经 tarball，直接从当前目录链接到全局：\n\n```bash\nnpm run build\nnpm link               # 全局命令指向本仓库；取消：npm unlink -g snapshot-checker\n```\n\n## 本地构建\n\n用于开发本仓库或联调未发布改动：\n\n```bash\ngit clone <仓库地址>\ncd snapshot-checker\nnpm install\nnpm run build\nnpm start -- report-user --help      # 或: node dist/src/cli.js report-user --help\n```\n\n开发过程中可跳过构建步骤，通过源码运行：\n\n```bash\nnpm run dev -- report-user --help\n```\n\n独立二进制（`npm run build:bin`）与 npm 全局安装共用同一套命令注册；版本号均来自 `package.json`（pkg 构建时注入 `HYPER_STARTUP_CHECKER_BUNDLED_VERSION`）。\n\n---\n\n## 作为库使用\n\n```ts\nimport { resolveCommandSuite, runCommandSuiteGroups } from \"snapshot-checker\";\nimport * as report from \"snapshot-checker/commands/report\";\n\n// dryRun: true 与 CLI --dry-run 相同，applyOptions 不会创建 outputDir\nconst { groups, defaultGroupOrder } = resolveCommandSuite(\n  report,\n  { app: \"com.example.app\", riskTargets: \"all\", dryRun: true },\n  { hdcTarget: \"DEVICE01\" },\n);\n\nawait runCommandSuiteGroups({ groups, defaultGroupOrder });\n```\n\n默认遇错即停；需忽略失败继续时传 `stopOnError: false`。\n\n---\n\n## CLI 命令套件框架\n\n本工具将 `src/commands/*.ts` 静态注册为子命令，并通过顶层命令提供 Agent 执行流程（参见「Agent 执行流程」）。每个命令套件导出 **`groups`** 和 **`defaultGroupOrder`**，并可选导出 **`options`** 与 **`applyOptions(opts)`**。\n\n- **`src/commands/`**：设备联调命令套件，**`report-user`**（无 hidumper/revoke_switch 权限）、**`report`**（完整系统权限场景）。\n- **`src/lib/`**：领域实现（如 `lib/report/decode.ts`、`lib/report/pipeline.ts`、`lib/report/command_suite.ts`）；调度类型与执行器来自 **`hmcommand-runner`**。\n\n`plan.json` 主要字段：`command_suite`、`command_suite_options`、`commands`、`commands_digest`、`execution_options`（如 `ignorePlatform`）、`tool_version`；配置了 `--hstack-tool-path` 时另含 `hstack_tool_digest`（文件内容摘要，替换工具后 `apply` 报 `PLAN_CHANGED`）。`plan --output-format json` 的 stdout 含 `ok: true`、`command: \"plan\"`、`status: \"READY\"` 与 `next_actions`（建议 `apply`）。`run_manifest.json` 与 preflight JSON 中套件标识同为 `command_suite`。\n\n命令套件子命令通用开关：`--list`、`--dry-run`、`-g,--group`、`--wait`、`--silent`、`--continue-on-error` 等。完整列表见 `snapshot-checker <command> --help`。\n\n---\n\n## 测试\n\n```bash\nnpm test              # 单元与集成\nnpm run test:perf     # 性能回归\nnpm run test:all      # 全部\nnpm run format        # Prettier 格式化 src / tests\nnpm run format:check  # 仅检查格式（CI 可用）\n```\n\nAgent 相关测试参见上文「Agent 执行流程 → Agent 调用与评测」。\n\n---\n\n## 更新说明\n\n### 0.9.17 升级 hiperf_txt_parser\n\n- 依赖：`hiperf_txt_parser` ^2.3.3。TXT 解析在返回前关闭并等待底层 `ReadStream`，随后可立即覆盖或 rename 源文件。\n\n### 0.9.16 风险页仅展示 checkpoint_revoked\n\n- **风险 Tab**：只呈现 `checkpoint_revoked`（直接失效）；`print`（hiperf 侧即 `tracing_mark_write`）、失效回溯等不再列入风险页。\n- **dump_stack**：`print` 按 `tracing_mark_write` 过滤，其 callchain 不进入后续 backtrack / 去重 / 写出。\n\n### 0.9.15 hitrace raw 全程录制与运行结果\n\n- **hitrace 采集**：改为 `hitrace --trace_begin --record` 全程录制；结束后 `--trace_finish --record`，将 `.sys` 拉到 `workspace/hitrace/`。解析统一走 raw `.sys` 内嵌 format，不再使用文本 `hyperstart_hitrace.txt`。\n- **`--buffer-size`**：单位明确为 **KB**（默认 `512000`），对应 hitrace `-b`。\n- **`result.json`**：`report` / `report-user` 结束后写出检查结果（`passed` / `error_codes`）；fail-fast 中止后仍补跑 `finalize` 生成。\n- **`finalize` 阶段**：analysis 之后兜底 `hitrace --trace_finish_nodump` 并写 `result.json`；设备命令支持 `timeoutMs`（`hmcommand-runner` ^1.5.1）。\n- **`target_tgid`**：去掉 monitor 开始后 30s 的重复 pgrep；只在 `--backtrack-delay` 用 `pgrep -fx -o` 写模板 PID，并 `cat` 打印便于调试。\n- **依赖**：`hmtrace-parser` ^0.12.1、`hmcommand-runner` ^1.5.1。\n\n### 0.9.14 升级 hm-trace-report 0.4.2\n\n- **依赖**：`hm-trace-report` **0.4.2**。\n- **栈列**：短标签「应用栈」，源码帧判定含 `.js`；侧栏无源码帧时标注「无应用栈」。\n- **风险**：直接失效按 `checkpoint_revoked.type` 分类（0=文件访问，1=IPC）并优先写入摘要。\n\n### 0.9.13 continue-on-error 可放行重置，空 dump_stack 跳过 xlsx\n\n- **`--continue-on-error`**：debug 校验失败（非 debug、缺字段、bm dump 无输出）与 monitor 非法 apppool PID 改为普通失败，不再短路；默认 fail-fast 仍拦截，配置后可继续重置 / 采集。\n- **init 重置拆分**：force-stop / aa start 等重置步骤从 debug 校验拆出，使 `--continue-on-error` 真正放行后续准备。\n- **合法空 dump_stack**：无 `checkpoint_revoked` 时仍写空 json/txt（`[]`，`sample_count=0`）；xlsx 因库不支持空样本而跳过，不再告警 `recordSample is empty`。\n\n### 0.9.12 空风险 Tab、预算上调与输入法服务支持\n\n- **空风险 Tab 常驻**：无 `checkpoint_revoked` 时仍保留风险 Tab（空列表 / 绿色态），与合法空 `dump_stack` 对齐，并提示可重复测试或新增场景。\n- **AnalysisBudget 默认上限**：输入文件默认 **1GiB**（原 512MiB），records / samples 默认 **100 万**（原 50 万）；`BUDGET_EXCEEDED` 报错补充环境变量上调提示，README F&Q / 环境变量表同步。\n- **trace 报告写出**：enrich（FFRT / 风险）后统一导出，末段与 `dump_stack` 并行写盘；enrich / 后续失败时兜底落盘。\n- **输入法服务应用**：识别 `InputService` picker；stop/start 改用内存回收启停（不可 force-stop）；目标进程匹配改由 `processName` 提供。\n- **Agent 日志闭环**：`plan` 的 `--log-file` 写入 `global_options`，`apply` 自动落到 `plan.output_dir`；`hmcommand-runner` ^1.4.1 修复 macOS 后台残留。\n- **Skill**：增强 `checker.log` 与失效事件（`checkpoint_revoked` / `vfs_snapshot_dump_monitor`）解读。\n- **依赖**：`hm-trace-report` 0.4.1、`hmcommand-runner` ^1.4.1。\n\n### 0.9.11 快启镜像风险判定与 trace 报告逐步 enrich\n\n- **快启镜像风险判定**：`analysis` 扫描 `checkpoint_revoked`；有直接失效时写出完整 `dump_stack` 并提示整改，无则写出合法空 `dump_stack.json`（`[]`，`sample_count=0`）并判定镜像制作完毕。\n- **`verify-snapshot`**：`collect` 后新增校验组，再次按进程差分确认快启镜像；`monitor` 内原有校验仍保留。\n- **`trace_report` 逐步 enrich**：解码流水线先附加 FFRT / 风险到 payload，再与 dump_stack 并行写出；若 enrich 或后续阶段失败，仍会兜底写出当前已有 HTML。风险条目与 `dump_stack` 同源。\n- **`--trace-from` 默认**：由 `mix` 改为 **`hiperf`**（设备不支持 raw-data 时仍自动回退 `hitrace`）。\n- **依赖**：`hm-trace-report` 0.4.1、`hmcommand-runner` ^1.4.0；`validate` 接受数组根 `dump_stack.json`（含空数组）。\n\n### 0.9.10 aa start 失败检测与 debug 字段状态输出\n\n- **`aa start` 失败检测**：`report-user` init 捕获 hdc 执行 `aa start` 的输出；若含 `error: failed to start ability` 则错误短路，避免错误的 `--app` / `--ability` 导致后续流程静默继续。\n- **debug 字段状态**：init / preflight 校验时显式输出 `debug=…, appProvisionType=…`（缺字段为 `<missing>`），便于定位非 debug 或 bm dump 字段不完整的原因。\n\n### 0.9.9 trace 报告查询体验、调用栈面板与安全加固\n\n- **统一查询栏**：Hitrace / FFRT 共用基于 label 的筛选（Hitrace：tid / 任务 / 事件 / 栈；FFRT：gid）；内容检索仅跳转，支持区分大小写与完整匹配；表头 ▾ 快捷筛选。\n- **栈列短标签**：列表显示 `无符号` / `有符号` / `TS符号`（查询仍用完整名）；callchain 含 TS 帧时默认仅展示 TS 栈，可展开完整栈。\n- **调用栈信息侧栏**：标题改为「调用栈信息」；精简样本摘要，事件属性以双列 KV 呈现。\n- **安全加固**：统一安全原子写（拒绝 symlink 覆盖）；plan 增加 `hstack_tool_digest`；引入 AnalysisBudget（输入/样本/callchain/序列化等上限，可用 `ANALYSIS_MAX_*` 环境变量调整）；收紧 HDC/PID 目标绑定与 pgrep 转义。\n- **`hm-trace-report`**：原内置 `trace_html` 抽为独立依赖；现用 `hm-trace-report` ^0.2.1（风险 Tab 置顶默认打开、逐步附加 FFRT）；构建不再打包客户端 bundle。\n- **快启镜像校验文案**：明确工具会屏蔽 `checkpoint_revoked` 失效路径，校验通过仅说明在此约束下镜像能够制作成功。\n\n### 0.9.8 trace 报告 callchain 与栈状态\n\n- **callchain**：Hiperf 侧栏默认全展开全部栈帧；整条 callchain 无 `.ts` / `.ets` 时摘要标注「无 TS 栈」。\n- **栈列**：Hitrace / FFRT 事件表新增「栈」列，三态互斥——`无符号栈` / `有符号栈` / `有TS符号栈`；无符号栈行灰色不可点击。\n- **快启镜像校验**（近期合入）：monitor 在 `--backtrack-delay` 后校验应用 tgid 与 `[bundleName]` 镜像进程；`/proc/comm` 截断改为保留包名尾部 15 字符（文案约束见 0.9.9）。\n\n### 0.9.7 升级 hiperf_txt_parser\n\n- 依赖：`hiperf_txt_parser` ^2.3.2。字段解码失败（如 `nearest` 错配 format 导致 `__data_loc` 越界）时降级为 `decode_failed` 并 warn，不再中断整批解码；默认保留未解码样本，`--drop-failed-samples` 时丢弃。\n\n### hmtrace-parser 0.11.4\n\n- 新增 report-user/report 共用的 `--event-match-mode strict|nearest`，默认 `strict`；nearest 模式在 event ID 未精确命中时选择数值距离最近的 format（距离相同取较小 ID），并输出 warning。\n- nearest 匹配暂不进入并行 Worker，避免 Worker 从 format 文本重建 strict registry 后产生不同解码结果。\n\n### 0.9.4 升级 hiperf_txt_parser\n\n- 依赖：`hiperf_txt_parser` ^2.3.1（raw 段仅识别 `0x` 开头二进制行，丢弃 user regs 等非预期内容）。\n\n### 0.9.3 hiperf 合成 hitrace、FFRT 检索与 Skill Profile\n\n- **`--trace-from hiperf`**：analysis **不读**真实 hitrace 事件文件，由 decoded perf 经 `buildHitraceDataFromPerf` 合成 hitrace，驱动 HTML/FFRT；采集侧 `hyperstart_hitrace.txt` 仅用于 `pid→task` 映射（无映射则回退 tid）；合成要求 `traceFieldDict` / `traceEventName` / `tracePrintContent` 齐全，`print` 映射为 `tracing_mark_write`。\n- **FFRT 内容检索**：左侧支持按生命周期与**子任务** content 子串检索、↑↓ 跳转与「仅匹配」。\n- **FFRT 状态**：标题栏与 gid 列表以**完整 / 缺失**标注生命周期聚合是否齐全（避免与子任务“异常”语义混淆）。\n- **Skill**：自然语言场景短语与命名 Profile `full-ffrt-hiperf` 展开为 plan 参数；`app`+`ability` 默认 `report-user`；README 补充示例 Prompt。\n- 依赖：`hmtrace-parser` ^0.11.3、`hm-pt-core` ^2.1、`hiperf_txt_parser` ^2.3。\n\n### 0.9.2 auto profile 展开 tracing_mark_write\n\n- **`--trace-format-profile auto`**：启用 `--enable-perf-tracing-mark`（且含 ffrt）时，拉取的 `tracing_mark_write` format 使用 `expandTracingMarkWriteFieldDict` 展开 buffer 字段。\n- 依赖：`hmtrace-parser` ^0.9.6（`tracing_mark_write` fieldDict 字段由 `buf` 更名为 `buffer`）。\n\n### 0.9.0 trace 交互报告与 FFRT\n\n- **`trace_report.html`**：analysis 导出自包含 Hitrace / Hiperf / FFRT 交互报告（内嵌 perf 与 callchain，支持 `file://`）；Hitrace 虚拟滚动、列筛选、内容检索跳转、Hiperf 侧栏反向查询。\n- **FFRT Tab**：按 gid 聚合；左侧内容检索（生命周期 + 子任务）；详情含**任务发起**、**子任务**、标题栏 **完整 / 缺失** 与 Exec 摘要、默认折叠的 **FFRT生命周期**。\n- **FFRT / 异步解栈**：需异步解栈时须使能 `--hitrace-tag ffrt` 与 `--enable-perf-tracing-mark`。\n- **`--enable-perf-tracing-mark`**：与 `ffrt` tag 联用时 hiperf 采集 `tracing_mark_write`，与 hitrace ffrt 标记对齐。\n- **`--hiperf-stack-mode`**：默认 `fp`；`dwarf` 自动附加 `--delay-unwind` 并 warn 调用栈丢失风险。\n- **`target_tgid`**：与 `--backtrack-delay` 同时机用 `pgrep -fx`（仅模板进程，不含空 cmdline 的镜像）写入设备临时文件，collect 首条读取；filter 不再 pgrep。\n- **`--filter-hitrace`**：按 `target_tgid` 导出过滤后的 hitrace 至 `workspace/hyperstart_hitrace.filtered.txt`。\n- **`validate`**：plan 含 analysis 且需 trace 报告时验收 `trace_report_html`。\n- 依赖：`hmtrace-parser` ^0.9.6；`trace_report.html` 由独立库 `hm-trace-report` 生成。\n\n### 0.8.8 Agent 协议化 CLI\n\n- **`schema` 命令**：`snapshot-checker schema [--output-format json]` 输出各子命令参数 schema（required、default、enum、side_effect、`allow_in_apply`），Agent 无需硬编码参数表。\n- **统一 JSON 信封**：`preflight` / `plan` / `apply` / `status` / `validate` 及失败路径补齐 `status`、`tool`、`warnings`、`errors`、`next_actions`。\n- **错误恢复字段**：`error` 含 `category`、`recoverable`、`retryable`、`user_input_required` 与 `next_actions`（覆盖 `ERROR_MISSING_APP`、`UNKNOWN_GROUP`、`PLAN_OPTION_OVERRIDE`、`HIPERF_RAW_DATA_UNSUPPORTED` 等）。\n- **validate `checks[]`**：按 plan 推导必需产物，失败项附带可执行的 `next_actions`；默认读 `plan.json`，`--no-plan` 为 legacy。\n- **manifest 状态扩展**：支持 `partial_success`（`--continue-on-error`）；新增 `phase`、`failed_group`、`allowed_actions`、`recommended_actions`。\n\n### 0.8.6 依赖升级\n\n- **`hmtrace-parser` ^0.9.0**：内置 profile 统一为 `rls`（`default` 为其别名）；`checkpoint_revoked` 字段改为 `checkpoint_monitor_id` / `revoke_reason`，FS 类型自动展开 `revoke_reason`；`vfs_snapshot_dump_monitor` 支持 `op_flag` 可读化。CLI 行为不变，仍通过 `--trace-format-profile rls` 选用该 profile。\n\n### 0.8.5 依赖升级\n\n- **`hm-pt-core` ^2.0**：`RecordSample.id` / `time` / `stream_id` / `period` 统一为 `bigint`，与 hiperf 2.1+ 对齐；hiperf / hmtrace 均复用该类型，pipeline 不再需要类型断言。\n- **`hiperf_txt_parser` ^2.2**：依赖 hm-pt-core 2.0；fieldDict 解码后 raw 行改为键值展示，测试侧用保留 hex raw 的 fixture 模拟「perf 已解码」场景。\n- **`hmtrace-parser` ^0.8.3**、**`hmcommand-runner` ^1.3.2**：小版本对齐，无 CLI 行为变更。\n\n### 0.7.0 相对 0.6.x 的破坏性变更\n\n- `report` 默认 `--trace-from` 由 `hitrace` 改为 **`mix`**（采集默认带 `--raw-data`，analysis 默认预处理 hitrace 并使用 **perfFirst** sidecar）。\n- 日志格式统一为行首 `[ISO8601] {级别} {正文}`（无 consola 颜色）。\n- 依赖升级：`hiperf_txt_parser` 2.0、`hm-pt-core` 1.0、`hmtrace-parser` 0.8；analysis trace 解码改由 pipeline 编排；公共类型与 trace 机制自 `hm-pt-core` 导入。\n- 若需与 0.6.x 相同默认行为，显式传入 `--trace-from hitrace`。\n\n### 0.8.x Agent-friendly 变更（相对早期 0.8）\n\n- **统一 CLI 入口**：npm 与 pkg 独立二进制共用 `src/cli.ts`，功能一致（包括 `report-user`、`report`、`--list`、`--dry-run` 和顶层流程命令）。\n- **默认 fail-fast**：命令套件执行遇错即停；需继续时使用 `--continue-on-error`（`--stop-on-error` 为同义显式写法）。`report` 失败时仍会补跑 `restore` 组（`report-user` 无该组）。\n- **参数校验**：`report-user` / `report` / `plan` 要求非空 `--app`；`report-user` 另需 `--ability`；未知 `--group` 返回退出码 `2` 与稳定错误码（如 `ERROR_MISSING_APP`、`ERROR_MISSING_ABILITY`、`UNKNOWN_GROUP`）。\n- **Shell 安全边界**：进入 Shell 或重定向的参数经统一校验——标识符白名单（`--app`、`--ability`、`--log-key`、`--hitrace-tag`、`--hdc-target` 等 → `INVALID_IDENTIFIER`）；数值纯整数解析（`--duration`、`--backtrack-delay`、`--buffer-size` → `INVALID_NUMERIC`；且 `backtrack-delay` ≤ `duration`）；路径拒绝 Shell 元字符（`--output-dir`、`--hstack-tool-path`、`--sourcemap-dir` → `INVALID_PATH`）。\n- **Plan 完整性**：`plan.json` 含 `commands_digest` 与 `execution_options`（如 `ignorePlatform`）；`apply` 校验存储 commands 与重新生成 commands 的双摘要，并**始终**采用 plan 保存的执行选项与全局选项（与 plan 不一致的 `apply --ignore-platform`、`--hdc-target`、`--parse-concurrency` 返回 `PLAN_OPTION_OVERRIDE`，需重新 `plan`）；`0.x` 版本兼容比较 major+minor。\n- **机器可读输出**：全局 `--output-format json`（与采集目录 `--output-dir` 无关）；json 模式下 **stdout 仅 JSON**，日志写 **stderr**。\n- **顶层流程命令**：`preflight`、`plan`、`apply`、`status`、`validate`（详见「Agent 执行流程」）。\n- **环境变量**：`HYPER_STARTUP_CHECKER_LOG_LEVEL`、`HYPER_STARTUP_CHECKER_BUNDLED_VERSION`（旧名 `SNAPSHOT_CHECKER_*` 仍可读）。\n- **CommandSuite 命名**（依赖 `hmcommand-runner@^1.3.0`）：原 `Scenario*` API 与 JSON 字段 `scenario` / `scenario_options` 分别改为 `CommandSuite*`、`command_suite` / `command_suite_options`；`plan` / `preflight` 使用 `--command-suite`。\n- **命令套件源码位置**：`report-user` / `report` 定义迁至 `src/commands/`，CLI 静态注册（不再扫描目录动态加载）。\n\n### License\n\nMIT\n","readmeFilename":"README.md"}