{"_id":"@astralyn/sash","_rev":"28-e31cb528682d823fb96329f862d0bbc6","name":"@astralyn/sash","dist-tags":{"latest":"0.3.5"},"versions":{"0.1.0":{"name":"@astralyn/sash","version":"0.1.0","keywords":["cli","sash","network","toolbox","rules","dashboard","tun"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.1.0","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"2418c190aa8a060456fde1645670049ccbd9629b","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.1.0.tgz","fileCount":339,"integrity":"sha512-f66cZf7lxGh+78BpI1yBI0/MJi4ZkVP2kWgUzGJ/nui0WV89jRDFmTvnyUFe4CNTerBsfA2VFMrbJDAUt/4wHQ==","signatures":[{"sig":"MEUCIQDNA0NLPi4OMfi+Z83r22zwOz9cV1VpEKiFS1L3v7bQ5wIgDU33rGmymZQkwODctTb07FTvb99eKdEdxy/asjHin8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10070221},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"4dec08d38c0c0645767bc5145e45452a2edf499e","scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"npm run typecheck && node scripts/run-tests.mjs","build":"npm run clean:build && tsc -p tsconfig.build.json && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","typecheck":"npm run typecheck:server && npm run typecheck:web","audit:prod":"npm audit --omit=dev --audit-level=moderate","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"npm run audit:prod && npm run lint && npm test && npm run build && npm run smoke:package","typecheck:server":"tsc --noEmit"},"_npmUser":{"name":"astralyn","email":"mingkang.fang@gmail.com"},"repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A lightweight command-line companion for a rule-based network core and its web dashboard. For developers and advanced users.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"yaml":"^2.7.0","undici":"^7.29.0","adm-zip":"^0.6.0","commander":"^13.1.0","cross-spawn":"^7.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^6.4.3","vue-tsc":"^3.3.11","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","typescript":"^5.8.2","@types/node":"^24.0.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/adm-zip":"^0.5.7","@types/cross-spawn":"^6.0.6","@vitejs/plugin-vue":"^5.2.4","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.1.0_1788583746436_0.583393054371012","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@astralyn/sash","version":"0.1.1","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.1.1","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"af55d0ceeb23594a0cb9cd494124a0f2d08eb65f","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.1.1.tgz","fileCount":340,"integrity":"sha512-IhKN3zC1hPQdE1WIAeHTHRcSlq9CEJxdbf6YRofyKe6UDLaRVtqXw2MPW5Jv1XYilkwOh82BeyllpmxsO1ZeuA==","signatures":[{"sig":"MEQCIAdWdKGwbc+FYs2bilSZrsvb/jZGDsyz9OluitWQDARtAiB4bVAw3AYpzCP249b68I+i6t2j8/RDJccIYUoVqa8r/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCEEt8vzZE534uZcaJO/+tSlTRI+6zUFGniN56L4hU4NAIgawcLjkXXp2FLVmhL+HMAAAvaYru8ElLyp2JqKG9c99Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10083197},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.1.1.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"npm run typecheck && node scripts/run-tests.mjs","build":"npm run clean:build && tsc -p tsconfig.build.json && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","typecheck":"npm run typecheck:server && npm run typecheck:web","audit:prod":"npm audit --omit=dev --audit-level=moderate","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"npm run audit:prod && npm run lint && npm test && npm run build && npm run smoke:package","typecheck:server":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.1.1.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-IhKN3zC1hPQdE1WIAeHTHRcSlq9CEJxdbf6YRofyKe6UDLaRVtqXw2MPW5Jv1XYilkwOh82BeyllpmxsO1ZeuA==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"yaml":"^2.7.0","undici":"^7.29.0","adm-zip":"^0.6.0","commander":"^13.1.0","cross-spawn":"^7.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^6.4.3","vue-tsc":"^3.3.11","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","typescript":"^5.8.2","@types/node":"^24.0.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/adm-zip":"^0.5.7","@types/cross-spawn":"^6.0.6","@vitejs/plugin-vue":"^5.2.4","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.1.1_1788804441276_0.3681650225153832","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@astralyn/sash","version":"0.1.2","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.1.2","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"4e13daca17be81ff55650067d6322f22602c44be","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.1.2.tgz","fileCount":343,"integrity":"sha512-Jyc/knrnDfr5tk20p58NEK/33U7TECYnkhZQPXyTAeN0fkcQy4b6W29vPVl6gHcb0dioSQiNWaPO12ZOt9CQMg==","signatures":[{"sig":"MEUCIQCoCSPtU+J34aXsJpCS5doXSOoAZPQfU5xG82UZWpI+0QIgBu6kBEZneskqiY0EhvQFke36qTIvIQ9+HO/JX/vVSY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCQuAOU4wvtob7+F3Qqwc6X8DnIGIPz2MeFZerNtZFzKAIhAI+SagXYWlI+uy99kOjFqON8/KXMPjkkTw9AY0MsTHfG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9960034},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.1.2.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"npm run typecheck && node scripts/run-tests.mjs","build":"npm run clean:build && tsc -p tsconfig.build.json && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","typecheck":"npm run typecheck:server && npm run typecheck:web","audit:prod":"npm audit --omit=dev --audit-level=moderate","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"npm run audit:prod && npm run lint && npm test && npm run build && npm run smoke:package","typecheck:server":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.1.2.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-Jyc/knrnDfr5tk20p58NEK/33U7TECYnkhZQPXyTAeN0fkcQy4b6W29vPVl6gHcb0dioSQiNWaPO12ZOt9CQMg==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"yaml":"^2.7.0","undici":"^7.29.0","adm-zip":"^0.6.0","commander":"^13.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^6.4.3","vue-tsc":"^3.3.11","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/adm-zip":"^0.5.7","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^5.2.4","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.1.2_1788873762045_0.35029099082419735","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@astralyn/sash","version":"0.1.3","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.1.3","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"864eb9817038dd4770ff57be2aff8da3612bae75","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.1.3.tgz","fileCount":406,"integrity":"sha512-CJH6QXRAUagQU5W2P9tOjNyuRzJSvOCrPzOi18UvG9uFbMp4bexaL5fYn1unCHudl2DPPp4Gq2WDDTuKUA9jFA==","signatures":[{"sig":"MEUCIBzfXs1wj/4jtSvtMUH+TmBjJo4B/QR10Tbt2aB7gntmAiEAjfnYBms0A3tTvbRqUD354qBJW+qkaZnJzK3indGr6pQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAsdLrZRKUcIkFo3Bjd9sRDYmCq+8sr6cTjybsG4OKleAiA2ddsHiH7Hbil28PGmvpLUOEmoq5KaZiMuN1EevEphig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11836716},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.1.3.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"npm run typecheck && node scripts/run-tests.mjs","build":"npm run clean:build && tsc -p tsconfig.build.json && node scripts/build-upgrade-worker.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","audit:prod":"npm audit --omit=dev --audit-level=moderate","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"npm run audit:prod && npm run lint && npm test && npm run build && npm run smoke:package","typecheck:server":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.1.3.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-CJH6QXRAUagQU5W2P9tOjNyuRzJSvOCrPzOi18UvG9uFbMp4bexaL5fYn1unCHudl2DPPp4Gq2WDDTuKUA9jFA==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"yaml":"^2.7.0","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","commander":"^15.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","adm-zip":"^0.6.0","vue-tsc":"^3.3.11","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/adm-zip":"^0.5.7","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"sashUpgradeProtocol":1,"_npmOperationalInternal":{"tmp":"tmp/sash_0.1.3_1788976977755_0.4878399324182041","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@astralyn/sash","version":"0.1.4","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.1.4","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"9cae72b2b2d921d455d733ce2e7b8f265b585c34","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.1.4.tgz","fileCount":406,"integrity":"sha512-WupZvrCMDwJnV7w6NMgo6wxpbCkJwzfPhc2uq8qll/kk9hbM0kGPwX41d8IuJVN+Znt9PY5OHSFXHWjU7L9P4w==","signatures":[{"sig":"MEYCIQC+RxxmrE4Up++i/FSQh7Qr94lgb1FVwqdxtUpNAmgQbQIhAOZON84CjwrDtgEZRiqEFJpm9pYEzhMGBdS6T5010wVz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICYGveZhi8lvMBcuAIyFmpKgy3AH9/ve6SRlXhPbfG7yAiAIrdOGnAlmDd0XUqxoqY9syyVXxZHZTwa12sUSVPBwnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11815192},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.1.4.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && tsc -p tsconfig.build.json && node scripts/build-upgrade-worker.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","audit:prod":"npm audit --omit=dev --audit-level=moderate","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","typecheck:server":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.1.4.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-WupZvrCMDwJnV7w6NMgo6wxpbCkJwzfPhc2uq8qll/kk9hbM0kGPwX41d8IuJVN+Znt9PY5OHSFXHWjU7L9P4w==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"yaml":"^2.7.0","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","commander":"^15.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","adm-zip":"^0.6.0","vue-tsc":"^3.3.11","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/adm-zip":"^0.5.7","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"sashUpgradeProtocol":1,"_npmOperationalInternal":{"tmp":"tmp/sash_0.1.4_1789011769088_0.4284893594861645","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@astralyn/sash","version":"0.1.5","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.1.5","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"ef0b68a5941b9f4be4d93bcf18f1b4dccadf36ab","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.1.5.tgz","fileCount":405,"integrity":"sha512-nGOo4MRbegrbfcpnN+CwPxJEnFt+2mYMbIttUwXzTBHU+n6p3bd45qHFLK/2LMSt7/jAtPeqEmWa5w7xXZxqpQ==","signatures":[{"sig":"MEYCIQDXPtzBwQSh6kmMaXaQcRcWJhxIzV9Vycv9WVIYR8l7LQIhAL35xm/Twc8gifyH/MN8zJ5srAdAYgvrVv0J5eTKXzmn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCcPFz8qqbSoIM7rjmk7T42knDmGcmQWxkTg6oUz1hrSQIhAPK3cyo7F/fPWXDFmX/87DhCSjx3MSirmJ5AEeIXFi90","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11802476},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.1.5.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && tsc -p tsconfig.build.json && node scripts/build-upgrade-worker.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"npm audit --omit=dev --audit-level=moderate","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.1.5.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-nGOo4MRbegrbfcpnN+CwPxJEnFt+2mYMbIttUwXzTBHU+n6p3bd45qHFLK/2LMSt7/jAtPeqEmWa5w7xXZxqpQ==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"yaml":"^2.7.0","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","commander":"^15.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","adm-zip":"^0.6.0","vue-tsc":"^3.3.11","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/adm-zip":"^0.5.7","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"sashUpgradeProtocol":1,"_npmOperationalInternal":{"tmp":"tmp/sash_0.1.5_1789021559534_0.49894835051056563","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@astralyn/sash","version":"0.1.6","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.1.6","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"27b62016693da2a25edbceacc1a66fe43d19cf87","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.1.6.tgz","fileCount":282,"integrity":"sha512-jkH1LS7fsLoc2jjwRUPNBp4uHBZLJANal7gX2X1tgBy0Q5YIGSnIhdjbW7RoRbj2rubcfgKnFSeL/6VahpfRjQ==","signatures":[{"sig":"MEUCIEqc4nTBHLOVGARXVja/MMDPR42PJuGI4O8YxZlV+zxdAiEAv7CEL9xnTF2mRbPzlW3oSGbRxjaJArHwQ+7CVJ0YVDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC9815u4Yk59D1njFgImZps7rm2JS6dfVF5u9W66tXpZAIgF2MeFakcfgnC97GmPd6lwP5F8wZWPWrWjZ4rstixIPY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17132575},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.1.6.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && node scripts/build-upgrade-worker.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.1.6.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-jkH1LS7fsLoc2jjwRUPNBp4uHBZLJANal7gX2X1tgBy0Q5YIGSnIhdjbW7RoRbj2rubcfgKnFSeL/6VahpfRjQ==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"sashUpgradeProtocol":1,"_npmOperationalInternal":{"tmp":"tmp/sash_0.1.6_1789036053078_0.011358403587392818","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@astralyn/sash","version":"0.1.7","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.1.7","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"f515cff365d02a8d608d1d062304428e2d3c638d","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.1.7.tgz","fileCount":282,"integrity":"sha512-BS+uaDStMSyCr6aMzHOYfvORkLIfnJhgIlH/tv4bQWWh8t8WK5oi9HI1qjix5u0TQsz1vWWfTz1pn7RutyFueA==","signatures":[{"sig":"MEYCIQCUSoxuIuLGCsU0eGXADVzJVpIpCyYNyAETUm5kLYZmDQIhAPRRxsrnmmiZv31nIMMn2Vanl8UNwP1PDTjUsNOw2uo9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHLy6RG9Ykd0oLguQnUa1orCb3D95FI+VoG5k447rS+DAiEA6f8W2mMnC/rrPvz4fP18BVta28ZxWHBsqobGwgufR9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17135095},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.1.7.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && node scripts/build-upgrade-worker.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.1.7.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-BS+uaDStMSyCr6aMzHOYfvORkLIfnJhgIlH/tv4bQWWh8t8WK5oi9HI1qjix5u0TQsz1vWWfTz1pn7RutyFueA==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"sashUpgradeProtocol":1,"_npmOperationalInternal":{"tmp":"tmp/sash_0.1.7_1789036660440_0.608754879168611","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@astralyn/sash","version":"0.2.0","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.0","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"eb0abdf7db7a0d2cc33855040920dfc9c8221b9c","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.0.tgz","fileCount":275,"integrity":"sha512-yrRjHk1B0GLLqeG2+suTpyoPDC78OUYS4wDOSpC5xbpSgNf0ubkCQhx0rVqxaWoGe8qUyslU5wiGQMmmCONiNQ==","signatures":[{"sig":"MEUCIH7B551hJodLTFoTmj1Kfiby2MD/0u6GuOs0wkIiHir+AiEAsLrsQHzq2SROJrCjVZw7occakySkwSAfzmzM1rIgXbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCHVZfbXBjs2Zpz0SZuJl+Fb8lefXCG4ltLJKGMmjwLUAIgcxZOY07Erlv06l7/qHNEYUgWrVh54+wVFHD5rScYnx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14110756},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.0.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.0.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-yrRjHk1B0GLLqeG2+suTpyoPDC78OUYS4wDOSpC5xbpSgNf0ubkCQhx0rVqxaWoGe8qUyslU5wiGQMmmCONiNQ==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.0_1789054867012_0.46622017260937243","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@astralyn/sash","version":"0.2.1","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.1","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"84b16166d9c889084e7c00a4186fe840b154b719","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.1.tgz","fileCount":275,"integrity":"sha512-M17civYPWziLY/a72SXXyqsb8Ib3BKJ6mU4+nNtxi8ybnNACtLo0ek/xDGQnTEMydDN5Jt50/fxeFFQLHXmppg==","signatures":[{"sig":"MEYCIQDUZBP5XWk3kjvkWUVU/Ea6hk2W8xQmE3b10Lfs2+cd0AIhALXzPwUiJqoK8BplV37KBOIapUWdTFqTvD8RcK+oV8nI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDu/6D+ZAUZRxlNo/yB1yQ3xDef4QTEYjvLyT40sn4iCAIhAPmnFWGTpQrvJqWRvKmj5gsDFPA3IDh7L8SqzKnOUTTT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14115267},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.1.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.1.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-M17civYPWziLY/a72SXXyqsb8Ib3BKJ6mU4+nNtxi8ybnNACtLo0ek/xDGQnTEMydDN5Jt50/fxeFFQLHXmppg==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.1_1789056957793_0.18446494746973197","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@astralyn/sash","version":"0.2.2","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.2","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"e57dbf5639a75926634bec711a867206df775b60","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.2.tgz","fileCount":275,"integrity":"sha512-Tmf8XAv8+9PjHoCXZfSLLTzqXCPtH9B2gylrP1eF2fUW2x656eX1YimeDjRZd6xm6HArgMxHEdzx5mqT5ojZ4g==","signatures":[{"sig":"MEQCIEBZ4qaPDM9AeiSQ6v/yL66ROaurmvdehlSkm+285NDLAiBp11M6C9/71iXptuHpCHVhpG9ixD/vyafu6iKMoqtm/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCgWB0q7cp9H4me3kYIqhzOTTehmgO3wTuGX+7AtjLcuwIhAKEWqXl2wA6BZG9byVwnAsKdTNWBpU8Yli0z61DrFuL3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14098532},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.2.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.2.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-Tmf8XAv8+9PjHoCXZfSLLTzqXCPtH9B2gylrP1eF2fUW2x656eX1YimeDjRZd6xm6HArgMxHEdzx5mqT5ojZ4g==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.2_1789087630826_0.0400332154978611","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@astralyn/sash","version":"0.2.3","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.3","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"ad698a76ff4badf86f302210b028ea6820da6a50","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.3.tgz","fileCount":276,"integrity":"sha512-2E3dsJJ8kVte/CKaCeZp8wuEz1313W9yiDFztb5sMmI57ByWWN5uWsEuMD/nDhDl6O+XR8TqIkXaBNlblMnmrA==","signatures":[{"sig":"MEUCIETfbzXhqSc1KjLXVjUlAkM3DEpBua9SBztzJX9B8+a6AiEA4HmCje4UpNxQCVaIK6g5Eod8xpSpIpV4Af/SQo4Uq4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQClefRbDGudjBGdLI0tYpNTYP5jElND2g3C8tTIzcpNjQIgYpOE5Z4oGZ5gB5axSt0wV0ko0EQHGQO3WpREziNi5FI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14049269},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.3.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.3.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-2E3dsJJ8kVte/CKaCeZp8wuEz1313W9yiDFztb5sMmI57ByWWN5uWsEuMD/nDhDl6O+XR8TqIkXaBNlblMnmrA==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.3_1789113051338_0.9805812885901579","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@astralyn/sash","version":"0.2.4","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.4","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"97987c425975018f077df7ec8df6dbfcf32296d0","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.4.tgz","fileCount":276,"integrity":"sha512-yZjfg8MB3lcaIqDvvRacsG0DisCXqa2Pp/qY0WNmsSEVBL5lMHmsFEsnrA/IpNsj1EtMvehMhBghrYExoJup+Q==","signatures":[{"sig":"MEQCIBeEYGyFgUkTVzUjzRHNXjxcSn6bjDyZBtKMz0IlsGsKAiAvkEv3VErQ7Q1f8Ik9n1nP73fPbncVFUZKJXB+IU75pQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCBzCxQo0oHOpGlzAXjOffg5fzz/rSDP4KiujOc6f2jtQIgf3GsdMJH1O3t+rmUim0IrE7cm4yfafa3S3GsdP4URYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14056509},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.4.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.4.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-yZjfg8MB3lcaIqDvvRacsG0DisCXqa2Pp/qY0WNmsSEVBL5lMHmsFEsnrA/IpNsj1EtMvehMhBghrYExoJup+Q==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.4_1789115724000_0.17352087633698532","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@astralyn/sash","version":"0.2.5","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.5","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"6cd50c48afc663e0de1c10f8aabe6414d1bb3610","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.5.tgz","fileCount":276,"integrity":"sha512-8nngviU55DSFC05jjHgBuSXBVhJ8SW0YsVOhGOFkf3fyEeGW1xgRS5z7XMF4kI8A30wvyHPtEYulCEq5akgEWQ==","signatures":[{"sig":"MEQCIGLIninMMnCaL8Quanz2gIdrNpGaYjv1pGULFV9zPm26AiAK7NcSnUayaQj4L2Kpc4gCPF3ZK2lOyqVCgPHbJciGcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCifSXVZM5AFDUrOyidTI4adQC0CE/r5IzH8XYslFCgrgIhAKX2xhU4V6zdj0T2Q+2snHTLx+gcFgd63Nd0vhRzHOjX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14290206},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.5.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.5.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-8nngviU55DSFC05jjHgBuSXBVhJ8SW0YsVOhGOFkf3fyEeGW1xgRS5z7XMF4kI8A30wvyHPtEYulCEq5akgEWQ==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.5_1789202794871_0.9587604430811076","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@astralyn/sash","version":"0.2.6","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.6","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"526ef0485e3231bc691da583044f30172a7cadd4","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.6.tgz","fileCount":276,"integrity":"sha512-6OS8yYNP1PbECNc4Dz1w6sN2nekg4kurszrV0YscrFiwWONn+x2KjQwMElotuXWBXcuddoVYzTOU7PtaCaVwBg==","signatures":[{"sig":"MEUCIF4juuH3q9VM685Gg0iBmBJ5RopQEZ35unGnYG8jB68NAiEAgAiBQhxxwHUQVRzNlwTeT0DbhB/VS7Cy2crcmEeEBh0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBVvEjSwhfUhfg80wRto9TzsD1YctVQnkMxfUhm/A/JoAiEA/0Pfm5kHxlXfyUSDW6yNZtPy6bof03VdLAWzpu0I1lw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14360613},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.6.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.6.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-6OS8yYNP1PbECNc4Dz1w6sN2nekg4kurszrV0YscrFiwWONn+x2KjQwMElotuXWBXcuddoVYzTOU7PtaCaVwBg==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.6_1789216429238_0.527301769974166","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@astralyn/sash","version":"0.2.7","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.7","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"0a98998ea5e6c8cb0da7e51b1883781ed9e22eea","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.7.tgz","fileCount":276,"integrity":"sha512-F7t+XRJ0mB2dq0yswC4p1MvgZjUlrrQWbiR0iZefMawOved4Jq4F5jt9YpBenx24BYCOTGpIKx7mrbD6YT5Plw==","signatures":[{"sig":"MEUCIBtMmXf0KMTK7BDGXbdlnK+z4cioRih5GGb9oJkgBuShAiEAoP5GMwxzMKFCj3u1sa8syv36TkGocnGqNi+RVAH3aV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBNACFxZqM2OQtSTtHApwgxDvGLrlSR1FbIw8Es1GKc8AiEA3oKNdQlr2CtBSx9AZcdFghR1PTYC3bC31+fFUP3d3g0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14368957},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.7.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.7.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-F7t+XRJ0mB2dq0yswC4p1MvgZjUlrrQWbiR0iZefMawOved4Jq4F5jt9YpBenx24BYCOTGpIKx7mrbD6YT5Plw==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.7_1789254484867_0.10505858562428871","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@astralyn/sash","version":"0.2.8","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.8","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"ad4c36a2efd06ecbb6c443432ead24c82577f9c1","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.8.tgz","fileCount":279,"integrity":"sha512-XDQOAYRl16waEDDcI6THqkHP15oyODsdl8S4AA53qXJFD0+AEDi1fUQV9iObOicDQgkwmYHXOqk26fio0/B0ig==","signatures":[{"sig":"MEUCIBGvHsHwXu5HvsWUXgsLFJXM82Q8SqVj6trV3Czcs7CmAiEAukp7y/nC8l75fH/dlaJui4x8ednpYGZgBMzKUYiMyuM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDfoQP1sHwywb7c7MiXgjcC+K+XS4JyRNGpv9xK/aiASwIgFFR71s/zq7qofx87TnkO0f1LoEos+sVZjhM4/G4cXr4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14376288},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.8.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.8.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-XDQOAYRl16waEDDcI6THqkHP15oyODsdl8S4AA53qXJFD0+AEDi1fUQV9iObOicDQgkwmYHXOqk26fio0/B0ig==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.8_1789290124596_0.25174944216343764","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@astralyn/sash","version":"0.2.9","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.9","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"4e51772f0b05f73993e89c95560ab5a11f7e7b24","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.9.tgz","fileCount":280,"integrity":"sha512-xtFPWYDIM+7odV4fy7zxsOwvTtHyLO43GmPmvJLSl/UJNUk0odNzLeFvHZjDz6/IjBoM78UkwZhxUKLF2fhG7g==","signatures":[{"sig":"MEQCIAhrvYdPJw713fW/7XMZpm0/hac47P8LfNzgRsikz9olAiBtnH9ZOzXsTpORo9/BzuiOcrRBfSFO9h0HYcHXSrb81g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD70UeRjpk3heCi0ReqmzhagRfsuQB1ogYYPbcB/YPYbQIgIm0jhjjUj3BZ+f7BEPaV78FpQ1uio+gUmUu72fNkGzc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14393132},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.9.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.9.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-xtFPWYDIM+7odV4fy7zxsOwvTtHyLO43GmPmvJLSl/UJNUk0odNzLeFvHZjDz6/IjBoM78UkwZhxUKLF2fhG7g==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.9_1789294721492_0.9345453216294217","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"@astralyn/sash","version":"0.2.10","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.10","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"ce2a105b7a3102ed7b155833c5eb1fc9b86a5b47","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.10.tgz","fileCount":280,"integrity":"sha512-lMRW3TP20j8Gf+cDT4HhpS1ZUKoH6qecWUzZ+Ue+buak/ZpDpYvex0kqjhFv3IOGBvNHTlX/byo2BQXXLHst2Q==","signatures":[{"sig":"MEUCIQDd98NE3YNFFbutoXiuLMjrWg2GBQXX92foZy9CFwCJjwIgTHIw3exmESyDLk3MWBgJD/D9JVDfZF1WZ0nhvUfyO8w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHbZ3ogmUn184AmLbHZ3dbad/Y/LqEpl+/Bcxo4kQl06AiAP0VHyMU+1u7lXWrPh4mDbLPKd0QuEuzjCgb6NCFHcew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14391338},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.10.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.10.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-lMRW3TP20j8Gf+cDT4HhpS1ZUKoH6qecWUzZ+Ue+buak/ZpDpYvex0kqjhFv3IOGBvNHTlX/byo2BQXXLHst2Q==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.10_1789302152300_0.1802852688674308","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@astralyn/sash","version":"0.2.11","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.11","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"7eb3fd62a3be3e486fd5215779759790eb0d9642","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.11.tgz","fileCount":280,"integrity":"sha512-Nj7Jlga4hmyBInysvUs0BhjDE4IkoKAbvd7F5Uvi/HWpQzYOAweVyLAPTe295grHeZoj65sc29/jXO0SPkknuA==","signatures":[{"sig":"MEYCIQCZMuCidhIN/Cs0S2DWF2Lh+GGLo2L02cwV4ebWiY5VBQIhAJ4rlvR2pH1k5hPgXC3w+XHqy9jpWDARmWZkXtdNkVLg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDu20jFSOEuOPqqVX/XoURcOh2Zj0qpjVwLvZqaRWdAsAiEAvN0sdnSgpkfA/qEGLGHdGg6R4QSQ1oHn6bZj+yDfv+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14391721},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.11.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.11.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-Nj7Jlga4hmyBInysvUs0BhjDE4IkoKAbvd7F5Uvi/HWpQzYOAweVyLAPTe295grHeZoj65sc29/jXO0SPkknuA==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.11_1789304783575_0.9538232118877878","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@astralyn/sash","version":"0.2.12","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.12","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"d2e13bf87f165dfced97df94d6295b0604419929","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.12.tgz","fileCount":280,"integrity":"sha512-OkY6ONfoO6AfcB4UL2a435yhPEu9tuLzJlLRgXUoZeyJWNNBu4gRskLj7jmxO2ewxTG/GcaRE2Q4bGaBbUIlEQ==","signatures":[{"sig":"MEUCIQDF+wfCSkWg2pgyYjpioqtnyF/IGZgzSCARNcv/3F6tSwIgZRKF6j292z7yN+yZ2vmdfGqUMxHlYlzb7/o/0+XXfac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDuIpOFo8p18k9x+42Y7R19xaJENFvklo3PsjMrL6yFywIgUMqUBeHMT4srFS6VwvbY3sEiPrsIuLJlDq9t4JfKhXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14400951},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.12.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.12.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-OkY6ONfoO6AfcB4UL2a435yhPEu9tuLzJlLRgXUoZeyJWNNBu4gRskLj7jmxO2ewxTG/GcaRE2Q4bGaBbUIlEQ==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.12_1789353359881_0.7236145480836298","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"@astralyn/sash","version":"0.2.13","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.2.13","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"5974e55a0284bd464aa5147f1a70b4b752c985d6","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.2.13.tgz","fileCount":280,"integrity":"sha512-961ZY+5VAR0U1PKaNscmKSl6Z9cZp86qoVIHsYBh/bnpyPKjOazGFmxQSO/Fks431cxDRsobwt4wp5FeMA9Clw==","signatures":[{"sig":"MEYCIQCspV1ZwEO++m20N4rdWiGhyJ7mJ6vfuSAyBlLOcCUnZQIhAPSs9jEUnlppxY86qIAxk0WNW7mhZwmSU/l3Aw0Z5Qwo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDzAcMQPzu0EiWRUAIAduzFDAIBkdQnbYSPBD1kpn2ukgIgYNLwfvOe7h2qtXlg8RX14HltAuV/OAZgutoo2XlJAOc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.2.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14411248},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.2.13.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.2.13.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-961ZY+5VAR0U1PKaNscmKSl6Z9cZp86qoVIHsYBh/bnpyPKjOazGFmxQSO/Fks431cxDRsobwt4wp5FeMA9Clw==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.2.13_1790157275782_0.6135024351393039","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@astralyn/sash","version":"0.3.0","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.3.0","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"a73f9563631d8e7df3a101b07589d76b5858618e","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.3.0.tgz","fileCount":280,"integrity":"sha512-LfhRHibmib4R29uEwZ6P6c/UckmuypCyR9nIvFrMGw4VUvems8ZvI89Ik+55lUAL45YWhVSdMECNQiSqExRQYQ==","signatures":[{"sig":"MEUCIQDfTTNTKAyfbGahTIIdUwoHnzTEeLybHrjEb40PShLFKgIgJMElb7xOzxIGI2kd6e5jm+2Wl5iB6Tl5sXhc1RY3HtE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBIALFogVGEPP5k0kpey8Q1W/4JIXVEp19GF4T9xGD0sAiAGdwzwX1JdymmZUQX4YnNIrSD+qbNLnvxcO/nXtce4Fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14428717},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.3.0.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.3.0.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-LfhRHibmib4R29uEwZ6P6c/UckmuypCyR9nIvFrMGw4VUvems8ZvI89Ik+55lUAL45YWhVSdMECNQiSqExRQYQ==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.3.0_1790165159379_0.03069165430027887","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@astralyn/sash","version":"0.3.1","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.3.1","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"18174530166eee8f78a69e1c004195397435aca6","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.3.1.tgz","fileCount":280,"integrity":"sha512-oSYVY00Hndmmy3SYitgTYEvTHcgS1w1Z7KNFqGCMRYgsc8RJtjtBYa4agOUNdyFrrZNDzGz4a8t5yEE9uNvBZg==","signatures":[{"sig":"MEQCIH0xehIWeQ3/SRr2/XkUpPf0sZKlgEq760wV9ldOtqpFAiALz0V0IbK3vrpBeZnILoFtvWH7K649a77riWtW9Zekgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICIN5YXuD5Wdn0HnrFPjmr0cNb8IaMEkLmokj0FVdiEVAiAzZJJbs+sjXcU+SrtTDiQmy1W9bkUUaXqI3r0DCrVkzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14435845},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.3.1.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.3.1.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-oSYVY00Hndmmy3SYitgTYEvTHcgS1w1Z7KNFqGCMRYgsc8RJtjtBYa4agOUNdyFrrZNDzGz4a8t5yEE9uNvBZg==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.3.1_1790315681291_0.3731220901243708","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@astralyn/sash","version":"0.3.2","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.3.2","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"354856182f00c1e27c30e41a978a1c0b3d162218","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.3.2.tgz","fileCount":280,"integrity":"sha512-3ViQyQNxWgU7FFYMR40xDoW030bgvr6fwF8d3tIaeUWbcbnCfISO5ijE1ggyE6s4JOTy42NF7M7IXlOk6pZ55Q==","signatures":[{"sig":"MEUCIBUztxC9u+mAMQ3cUQkuUCz0PQpxI/LhIUaoSuIUq5ltAiEA8pKbBXNCexG79m8y3ZQRIYGXQy3VDiAOGiEXD4jq62w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCtEFfblW5vBfZcUoh8nc3IM2W+bKlIzueaZR6y024n5gIgUV9n3hZBYkuIISxNZDgs3NLxMtiVyePiFQ957elz6yU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14402227},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.3.2.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.3.2.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-3ViQyQNxWgU7FFYMR40xDoW030bgvr6fwF8d3tIaeUWbcbnCfISO5ijE1ggyE6s4JOTy42NF7M7IXlOk6pZ55Q==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.3.2_1790355254191_0.9680059350615771","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@astralyn/sash","version":"0.3.3","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.3.3","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"4af3eb7fa28c457706adf3c7bcd3074a6f9316f6","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.3.3.tgz","fileCount":280,"integrity":"sha512-9680RBGACtG7M/1UAdRx9wsNuSVzTud2PDwDKekmVf9RPwwKAhlsjYYUwQlZzrXINWonjBP/TnxHWv6TFdvr2A==","signatures":[{"sig":"MEUCIQDqrZjO5ajj9jC4eHdcDb95EbRbBvI/aV9lzlUS0lV4yQIgBjDdizplOzLvFvebFY4bPJXKjSjzaPelQwcd+ERJ2f0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIB2dt4M4dOvYNNZR5nxI1TLLhq3w0Ghh7+cF/XlYVHlOAiAKXJF1ZD4OO6puQElYPIu2h1+GHYw7zn5Z7pwI6sUUWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14404219},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.3.3.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts","verify:ui:core-update":"node --import tsx scripts/core-update-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.3.3.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-9680RBGACtG7M/1UAdRx9wsNuSVzTud2PDwDKekmVf9RPwwKAhlsjYYUwQlZzrXINWonjBP/TnxHWv6TFdvr2A==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.3.3_1790380630821_0.29701967743423885","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@astralyn/sash","version":"0.3.4","keywords":["cli","sash","network","toolbox","rules","dashboard"],"author":{"name":"ming-kang"},"license":"MIT","_id":"@astralyn/sash@0.3.4","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"homepage":"https://github.com/ming-kang/Sash#readme","bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"bin":{"sash":"dist/cli.js"},"dist":{"shasum":"62543af53a394c60b80fb8603415bc921ef55f80","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.3.4.tgz","fileCount":282,"integrity":"sha512-tp0MdN+B4H2Ch4MVepkYHcMBuwsCBgWbUfvCbXnJhhRnFwnwrLmju1qv3s6T7dYDR8IcBhSqjhuVIzK0uu0p4w==","signatures":[{"sig":"MEQCIH18KK2oy987NiCtw+W1LQ8NEv6MfjeyC96co0KIJ6gkAiARM4FgZO3ZM3OmAwpbgjPn+mOwWsN4ZwetXuxz5Cf3DQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFX99V281BmU7ifotjBFZ14F0WvpWCEmN5shvP6nKC8lAiAtyKY7e6aOI+cXUoNlXVt5KVwu8O2HRSANG+kBbMxUqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15662878},"type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.3.4.tgz","engines":{"node":">=24.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts","verify:ui:core-update":"node --import tsx scripts/core-update-ui-verify.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.3.4.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-tp0MdN+B4H2Ch4MVepkYHcMBuwsCBgWbUfvCbXnJhhRnFwnwrLmju1qv3s6T7dYDR8IcBhSqjhuVIzK0uu0p4w==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sash_0.3.4_1790685877240_0.25728453535330753","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"_id":"@astralyn/sash@0.3.5","bin":{"sash":"dist/cli.js"},"bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"dist":{"shasum":"fd7d1ce4bcffa31ce058eaf370b25719619a3d80","tarball":"https://registry.npmjs.org/@astralyn/sash/-/sash-0.3.5.tgz","fileCount":282,"integrity":"sha512-8ZMet5pqkqU3BGU9HEnfS4HpYlfcTr3jQNtR7JDRYHJzvCsVx0IXCin01QQ3d3YF0jUXyw0LQwNBBidTi5MRnA==","signatures":[{"sig":"MEUCIQC4k/Iym1NCnWAKdKEQxxlnavJNzbSKDuPHHdHUysEd3AIgal97XLyB8NemcET+hrFHynap9j536pumcaLfpwddMCQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCQmFF+ema+kUdumYCw1p07tbl4IBvExCHNy+QIyR3pUAIgUvuIxI6AmKIDB1RfYtH0ZD+cVuBw2Efh3P5FAmmwNXs="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astralyn%2fsash@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15676190},"name":"@astralyn/sash","type":"module","_from":"file:/home/runner/work/_temp/sash-package/astralyn-sash-0.3.5.tgz","author":{"name":"ming-kang"},"engines":{"node":">=24.0.0"},"license":"MIT","scripts":{"dev":"tsx src/cli.ts","lint":"biome check .","test":"node scripts/run-tests.mjs","build":"npm run clean:build && node scripts/build-dist.mjs && npm run build:ui","build:ui":"node scripts/build-ui.mjs","lint:fix":"biome check --write .","smoke:ui":"node --import tsx scripts/ui-smoke.mjs","typecheck":"npm run typecheck:server && npm run typecheck:web","verify:ui":"node --import tsx scripts/ui-verify.mts","audit:prod":"node scripts/audit-prod.mjs","clean:build":"node scripts/clean-build.mjs","smoke:package":"node scripts/package-smoke.mjs","typecheck:web":"vue-tsc -p web/tsconfig.json --noEmit","prepublishOnly":"node -e \"console.error('Publish with the Publish npm GitHub workflow; it uses the package already accepted by CI.'); process.exit(1)\"","verify:ui:auth":"node --import tsx scripts/web-auth-ui-verify.mts","typecheck:server":"tsc --noEmit","verify:ui:profiles":"node --import tsx scripts/profile-ui-verify.mts","verify:ui:autostart":"node --import tsx scripts/autostart-ui-verify.mts","verify:ui:core-update":"node --import tsx scripts/core-update-ui-verify.mts"},"version":"0.3.5","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"1bea982a-6f54-4b3a-bfdf-f84fafd4ab3c"}},"homepage":"https://github.com/ming-kang/Sash#readme","keywords":["cli","sash","network","toolbox","rules","dashboard"],"_resolved":"/home/runner/work/_temp/sash-package/astralyn-sash-0.3.5.tgz","overrides":{"cn-font-split":{"koffi":"2.16.3"}},"_integrity":"sha512-8ZMet5pqkqU3BGU9HEnfS4HpYlfcTr3jQNtR7JDRYHJzvCsVx0IXCin01QQ3d3YF0jUXyw0LQwNBBidTi5MRnA==","repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"_npmVersion":"11.15.0","description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","directories":{},"maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vue":"^3.5.42","vite":"^8.2.2","yaml":"^2.7.0","yazl":"^3.3.1","yauzl":"^3.4.0","semver":"^7.8.5","undici":"^8.10.2","vue-tsc":"^3.3.11","commander":"^15.0.0","happy-dom":"20.13.0","codemirror":"^6.0.2","playwright":"^1.62.1","sortablejs":"1.15.7","typescript":"^5.8.2","@types/node":"^24.0.0","@types/yazl":"^3.3.1","@types/yauzl":"^3.4.0","@types/semver":"^7.8.0","cn-font-split":"^7.4.3","@biomejs/biome":"^2.5.5","@remixicon/vue":"^4.9.0","@types/sortablejs":"1.15.9","@vitejs/plugin-vue":"^6.0.8","@codemirror/legacy-modes":"^6.5.4","@codemirror/theme-one-dark":"^6.1.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sash_0.3.5_1790691708772_0.17946416586429792"}}},"time":{"created":"2026-09-05T04:49:06.230Z","modified":"2026-09-29T14:21:49.698Z","0.1.0":"2026-09-05T04:49:07.120Z","0.1.1":"2026-09-07T18:07:21.500Z","0.1.2":"2026-09-08T13:22:42.253Z","0.1.3":"2026-09-09T18:02:58.038Z","0.1.4":"2026-09-10T03:42:49.341Z","0.1.5":"2026-09-10T06:25:59.776Z","0.1.6":"2026-09-10T10:27:33.318Z","0.1.7":"2026-09-10T10:37:40.678Z","0.2.0":"2026-09-10T15:41:07.261Z","0.2.1":"2026-09-10T16:15:58.474Z","0.2.2":"2026-09-11T00:47:11.099Z","0.2.3":"2026-09-11T07:50:51.607Z","0.2.4":"2026-09-11T08:35:24.329Z","0.2.5":"2026-09-12T08:46:35.112Z","0.2.6":"2026-09-12T12:33:49.537Z","0.2.7":"2026-09-12T23:08:05.116Z","0.2.8":"2026-09-13T09:02:04.829Z","0.2.9":"2026-09-13T10:18:41.773Z","0.2.10":"2026-09-13T12:22:32.574Z","0.2.11":"2026-09-13T13:06:23.817Z","0.2.12":"2026-09-14T02:36:00.121Z","0.2.13":"2026-09-23T09:54:35.994Z","0.3.0":"2026-09-23T12:05:59.614Z","0.3.1":"2026-09-25T05:54:41.523Z","0.3.2":"2026-09-25T16:54:14.437Z","0.3.3":"2026-09-25T23:57:11.056Z","0.3.4":"2026-09-29T12:44:37.631Z","0.3.5":"2026-09-29T14:21:48.987Z"},"bugs":{"url":"https://github.com/ming-kang/Sash/issues"},"author":{"name":"ming-kang"},"license":"MIT","homepage":"https://github.com/ming-kang/Sash#readme","keywords":["cli","sash","network","toolbox","rules","dashboard"],"repository":{"url":"git+https://github.com/ming-kang/Sash.git","type":"git"},"description":"A network toolbox for developers, learning, and research, with a command-line companion and built-in web dashboard.","maintainers":[{"name":"astralyn","email":"mingkang.fang@gmail.com"}],"readme":"# Sash\n\n> A lightweight command-line companion and web dashboard for a rule-based network core.\n\nSash is a **network toolbox for developers, learning, and research**. It installs, runs, and maintains a rule-based network core on your machine: local HTTP/SOCKS endpoints, rule-driven traffic routing, remote profile management, and live traffic inspection through a built-in web dashboard.\n\n## Features\n\n- **Background supervisor** — one Sash process per data folder on port `19090`, managing the Core lifecycle, recovery and reverse proxying\n- **Zero-download web dashboard** — built-in Vue 3 dashboard bundled with the package at `http://127.0.0.1:19090/ui/`\n- **Explicit save and apply** — import, edit and update profiles, then apply saved changes with one Core restart\n- **Windows desktop integration** — system proxy with snapshot and conditional restore, plus start at login (`sash auto`)\n- **Verified updates** — integrity-checked Core downloads with rollback (`sash update`); `sash upgrade` installs a new Sash through npm and restarts it\n- **Diagnostics** — `sash doctor [--json]` checks installation, state, ports and Windows integration, with repair advice\n- **Credential hygiene** — child processes run with scrubbed environments; loopback traffic never traverses proxy dispatchers\n\n## Requirements\n\n- Node.js **24 or newer**\n- Windows 10+ — x64 and arm64\n\nCore lifecycle and local endpoints are portable to macOS and Linux; system-proxy and login-startup integration are Windows-only.\n\n## Install\n\n```sh\nnpm install -g @astralyn/sash\nsash --help\n```\n\nFrom a source checkout instead:\n\n```sh\nnpm ci\nnpm run build\nnpm link\nsash --help\n```\n\n`npm link` installs the locally built checkout. Remove it with `npm unlink -g @astralyn/sash` when finished.\n\n## Quick Start\n\n```sh\nsash start                 # downloads Core if needed, launches Sash and Core\nsash web                   # open and authorize the web dashboard\nsash status                # runtime state, endpoints, and proxy status\nsash stop                  # restores prior proxy state, stops Core and Sash\n```\n\nThe dashboard also works while Core is stopped: edits are saved first, then **Apply configuration** (or `sash restart`) restarts Core with them. See the [User & Operations Guide](./docs/usage.md) for all commands, updates and troubleshooting, and [Automatic Startup](./docs/autostart.md) for `sash auto on`.\n\n## Documentation\n\n- [**User & Operations Guide**](./docs/usage.md) — CLI command reference, configuration, updates and troubleshooting.\n- [**Automatic Startup**](./docs/autostart.md) — login startup, registration state and diagnostics.\n- [**Backend Architecture**](./docs/backend.md) — background process, local API, lifecycle and safety invariants.\n- [**Frontend Architecture**](./docs/frontend.md) — Vue 3 dashboard, shared state, API contracts and streaming.\n- [**Third-Party Notices**](./THIRD_PARTY_NOTICES.md) — licenses for bundled dashboard assets and the runtime-downloaded Core.\n\n## Disclaimer\n\nSash is a network tool created for **learning, research, and development debugging**. It runs on servers and profiles that you source and configure yourself. You are responsible for how you use it and for complying with the laws and regulations of your jurisdiction.\n\n## Upstream Components\n\nSash is MIT-licensed open source and an independent project. It does not bundle the upstream Core in this repository or npm package; at runtime it downloads an unmodified release artifact from [`MetaCubeX/mihomo`](https://github.com/MetaCubeX/mihomo). The upstream working source branch is [`Meta`](https://github.com/MetaCubeX/mihomo/tree/Meta); licensing is determined by the selected release and its accompanying notices. Sash's currently tested Core contract is `v1.19.30`, whose source tag carries the [GNU General Public License v3.0](https://github.com/MetaCubeX/mihomo/blob/v1.19.30/LICENSE).\n\nThe downloaded component remains the work of its respective authors; all credit belongs upstream. See [Third-Party Notices](./THIRD_PARTY_NOTICES.md) for bundled dashboard notices and release-specific Core attribution.\n","readmeFilename":"README.md"}