{"_id":"@bin.zhou/aegis","_rev":"26-ba030c1e85fd5e24d1d1a0d55a630696","name":"@bin.zhou/aegis","dist-tags":{"latest":"0.3.6"},"versions":{"0.2.0":{"name":"@bin.zhou/aegis","version":"0.2.0","_id":"@bin.zhou/aegis@0.2.0","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"4ceca89423f9f02734156c6439fc7dc29509351c","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.0.tgz","fileCount":280,"integrity":"sha512-CLnBK8W3+nP2TEgob33+REvjK8rnkaZ7cK4y5MjgGu4Bjev2EmnRhJ35aG9zbPDPQwXoeqfG1kWSRLIrw1NCSA==","signatures":[{"sig":"MEQCICoQZVzKpCqoUSFgdMIvwY410zCmQs0yJbltaMVYmAWfAiBoD0TkOmmhDmKxy8W5NVulADbYt/pZ3EPNNOQ4cmbo5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":840880},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.0_1784175337797_0.7240496564933798","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@bin.zhou/aegis","version":"0.2.1","_id":"@bin.zhou/aegis@0.2.1","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"2f7ab8d44ab6461ed74a942d421fd6d9a6c0bbf0","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.1.tgz","fileCount":280,"integrity":"sha512-14diR2l+jvTgMzS4+ZYmO2gZjJ5RaqIvteyTWenJx9M4QVC5jB7b+OR9+O/CdicV3mMA/LyFT/+rPdSVEfFtYQ==","signatures":[{"sig":"MEQCIH1/usdXk1yk5ixqaBMBLms6zK5GKgBGuBDXtNAwh8MAAiAZuk5YtyPjXnVUNMUZTlWaZGUnMFo54AD1luZD9oQP9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":840880},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.1_1784175590309_0.6716272829838883","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@bin.zhou/aegis","version":"0.2.2","_id":"@bin.zhou/aegis@0.2.2","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"3b3747677a164ab7b13fd1d73bf42da4b514eafc","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.2.tgz","fileCount":280,"integrity":"sha512-4y8aimquamAWKamt8WWMXleFNJQgHzuFfZa9e6EFtI4ay/KC2+4jYPCqAhR6EVqeNXio6Mp+yYckcz3alPHv0A==","signatures":[{"sig":"MEUCIQDe/0REuWI4+zOzxv6dKuWJ8Di1/8JI4OvlYkk6OM/7egIgNz0JefcrU+EDObnFTttkqpYjkAWUy28lT51z71WP2cM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":843922},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.2_1784182412132_0.5102763462951205","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@bin.zhou/aegis","version":"0.2.3","_id":"@bin.zhou/aegis@0.2.3","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"b133bd19b39e41868e6a52b5f08081cc46eb31b0","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.3.tgz","fileCount":280,"integrity":"sha512-Qprg2VGfcpryQA7GeotPfuXqHVsMcwVGtL+qBGF7M4BUedQQYdtIiIQ2BqexjzFoJLJXQIC7hvakkc/IWOoXdg==","signatures":[{"sig":"MEYCIQCxqkEA+ih96SLcrw36N3btu/V6W5I2nn0G1DDHFWhchQIhAJIcAtuPbZYLSb2jGgW6tCTO8J9q3XTQMfVaA8hIEspD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":844372},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.3_1784183034699_0.31569861347226347","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@bin.zhou/aegis","version":"0.2.4","_id":"@bin.zhou/aegis@0.2.4","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"d2e8761e3a741b5839a9ab1303bb67f0eb255019","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.4.tgz","fileCount":280,"integrity":"sha512-KM1vwNy9R9BhvFr8zz99RIlrz6lisvUcBGPDTxO11lUoVgU1sJ8TtiWOsv7/BcZTFgDSPZXNGrI9sOIPqBJlsg==","signatures":[{"sig":"MEYCIQCLu0asNZN/518C7YMj1gSWIKpkqeA5098ubjut6/zCnAIhAMi09OAHCSF4Vw2jGsU7sfCduJhBqNMEz0WesZKjQmDU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":848788},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.4_1784183982208_0.18879552034084868","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@bin.zhou/aegis","version":"0.2.5","_id":"@bin.zhou/aegis@0.2.5","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"8a66df92d37d18e6b53df731b2abb49da145179c","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.5.tgz","fileCount":280,"integrity":"sha512-J860TnXBQk4ywkJHZ2NJDdiDSro6o8ifNR2GhzlcaRnVm1b+aT2ZBEy+65vW4lIpt7WzfNl50Ae6lX5RoVuAww==","signatures":[{"sig":"MEUCIAEP73if6oZdVPgfaNr9zMnu+rBrhPHe+3EhEEjSLb5pAiEA7A3sSgiucttPJK0I2jZfLYpboQiKltJpmA5hQoc0hUU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":845114},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.5_1784184647395_0.9037847547450462","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@bin.zhou/aegis","version":"0.2.6","_id":"@bin.zhou/aegis@0.2.6","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"934cbf9356ec8b41070c228faf114eacc8f46f1b","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.6.tgz","fileCount":280,"integrity":"sha512-zJ32GfQ5We7CTK8z54jXBBgdH41/pE8wlV8+WdtNAtmB1c6kynSFgn3K7pb9gxdDxLSuZgRGzYJHcpzLWTwXDA==","signatures":[{"sig":"MEYCIQChM1JoZfdDoElsPTdkn8H0LIGfLchst0UmDMvEmSiPFgIhAKPKqZJwJFbufijsp2akcL+fGRoBr2bAAB0bSC7zI1ja","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":845129},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.6_1784188006907_0.10305725050561909","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@bin.zhou/aegis","version":"0.2.7","_id":"@bin.zhou/aegis@0.2.7","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"89e3f1ef08cf8f621d5fa374ca65788b76d27657","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.7.tgz","fileCount":284,"integrity":"sha512-p6eP45ovsDT+d4MfhxkVoyKI0g+avjVl95OvegTutnMskKBsKLn7bZ/D3YWPcAnZh5IhDZssCztNvROV0ARIoQ==","signatures":[{"sig":"MEUCIB/S9PVZetKuzmfykNy60fmYcoZWmtNLPGcMHqhlDEUDAiEAyuSUQ8OVQdjPgMs7lq03VqJGyK7lHsbVQMbcWDXq87U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":856881},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.7_1784190444456_0.08885266099684053","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@bin.zhou/aegis","version":"0.2.8","_id":"@bin.zhou/aegis@0.2.8","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"4f6c2bc541e913b94ff6850ab1f14628bb7504c4","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.8.tgz","fileCount":284,"integrity":"sha512-bTqbofOkOHweTekNzswkm4HVj0fwr3BkVLTnFBrVmRpDSdyZvvcQXZkUp4NTlMHNYoQLhAuMlonAB14IvHRzPQ==","signatures":[{"sig":"MEYCIQCsLYl2SShL9+Dr1gVhOLY8dfmvGf4TKeoQd3g2vcOfTgIhAL2OxYTY9JIqA5o3iyDuID4DsyFfXq0o+cR4G3FqmJbY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":857625},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.8_1784193219364_0.6195694981893247","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@bin.zhou/aegis","version":"0.2.9","_id":"@bin.zhou/aegis@0.2.9","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"15778ec0ae2a412b3e6290a3ba7fda7f5011218a","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.9.tgz","fileCount":284,"integrity":"sha512-0gHpH675Q9WVxx3bl/M1shLlzrSknLzIU+M509CDGLmaRWQmdIri17A0dWASx7Fq0TkhjRVaUhQ/1gOggDc9YQ==","signatures":[{"sig":"MEQCIBNbg9MGzSGECUjWg/yoBmyLT2/fPjBKNS/+U4ehZujvAiBvsc+GyJDaZZxCFA3Rk0gMeX/WX5yVfc6wxea9/y0JkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":865176},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.9_1784193759853_0.13486591442571028","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"@bin.zhou/aegis","version":"0.2.10","_id":"@bin.zhou/aegis@0.2.10","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"5f0d1f162a5fbed73d8f78fab8c1753230928c8f","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.10.tgz","fileCount":284,"integrity":"sha512-VtANyi2ugqr82e34PoXLfDsWFNDyYtxfjouEnCUFnkDb9u44OjN8mT3/RlLAVvHrJYKXqyHtWJ1a70mY/Ik1ng==","signatures":[{"sig":"MEQCIEHeWB3ylb/4VTQMfCr96Wnt+HKJbIOldSyLfsznEKriAiAj9iuZAiG0AP7Q1NWDB4c55qTd2vt0Q83eBwfos6m4tw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":863278},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.10_1784194573767_0.0629593580115233","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@bin.zhou/aegis","version":"0.2.11","_id":"@bin.zhou/aegis@0.2.11","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"f6c599510583a52b7e080f65e717a1d551096b68","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.11.tgz","fileCount":284,"integrity":"sha512-Y9/CZruMfiDadyqtdkm+Pssx1eSH3ZiO2+vVVTnp5Wv9Pg0Z+pAt2iJxva5uI6PRJQoIJzxzmOma+JaWcTQn7w==","signatures":[{"sig":"MEUCIQDcdAyzRL+OC8ICYG/tB7iHubX/5EDkeo7JzXbdnnjQcwIgHMYjgeyZmZ+ZJEfM+idWNNUm3sT506hx8yEcTrOUiJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":867672},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.11_1784194994902_0.6128964096205414","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@bin.zhou/aegis","version":"0.2.12","_id":"@bin.zhou/aegis@0.2.12","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"fb70593153291d0fdc1e406a27e3d2fbfdaddf0c","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.12.tgz","fileCount":284,"integrity":"sha512-Dj9XiQW/X2mF3wRjp3Mx0DE55WBtI1tlR4n1xB9Y6HVTkP0W8SdYQzWYpoMkn5G5N+SCQKEKOvrwgtjALbVCvQ==","signatures":[{"sig":"MEYCIQCCIoES5yujrXm9dRvW3dGWXvWh/BOtsQnozgUfPFe5qQIhAJiD73Zt1fhsRxEKDvCV7GPToCLxqhvLh1GO/+i7aG9K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":870033},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.12_1784195272391_0.5947398542413249","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"@bin.zhou/aegis","version":"0.2.13","_id":"@bin.zhou/aegis@0.2.13","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"f84d67a455949cbe13152d36efcb2a2abcc499ad","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.13.tgz","fileCount":284,"integrity":"sha512-lLMIiX5tO0luoS98FgZXeI8pE2+q0AlYAUTDkuhByhi5oXfZUv/NScLZcqfqXU9uZHAhKnuVZoic5DlCMfN2aA==","signatures":[{"sig":"MEUCIHoUPjClj+wKss/xMmC8fe6lcXsoknTbGhbMvIckYdD3AiEAo1KebPnU3U/lUoWlnrztuGqpLFVV6GBR35gXBbA6ILg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":869781},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.13_1784195794661_0.6096749931492422","host":"s3://npm-registry-packages-npm-production"}},"0.2.15":{"name":"@bin.zhou/aegis","version":"0.2.15","_id":"@bin.zhou/aegis@0.2.15","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"8d11db339cc9ef638b1c701a933d378b4d99f826","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.15.tgz","fileCount":284,"integrity":"sha512-WQfBreT26TfgZabLh8eQ/TEObbPM4NEFNjlPT0fQn68ryWr9geVp+OQn//HazvIw3OzjRtRrGsOis2cHbnMPUg==","signatures":[{"sig":"MEYCIQCjUFHt0PbO/N5oasFuOUnphSnAedS4V0ZvoASjSN/OTQIhAP+IvOXydt2ARkYWqgIHJwOzzxOifKGW6CdAWiW+hYzb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":869992},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.15_1784200233251_0.74881759263561","host":"s3://npm-registry-packages-npm-production"}},"0.2.16":{"name":"@bin.zhou/aegis","version":"0.2.16","_id":"@bin.zhou/aegis@0.2.16","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"60d16db4ef3a41f773c2a384269b5c1ac5c42f0b","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.16.tgz","fileCount":284,"integrity":"sha512-tc7z9EhFjk35HOormQzzM2Yhz+R0LUEf5KRlSGsGz5MQx5IAbAFg3dw0hFH9ma2oXKaaeTHsnve05QDZ7kW68w==","signatures":[{"sig":"MEYCIQChrvPK4U2II/knP7lrqdweI+7pihG+n/BQAuu4h7UmQQIhALcxZveyVKjvpZoNS7QUweUtrHes0DaeMp+74Cy4BudB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":878200},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.16_1784201153736_0.7563499025748299","host":"s3://npm-registry-packages-npm-production"}},"0.2.17":{"name":"@bin.zhou/aegis","version":"0.2.17","_id":"@bin.zhou/aegis@0.2.17","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"b5efb204fa849326181646623c6cf3c194ff783f","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.17.tgz","fileCount":284,"integrity":"sha512-bxRE9iWAKKcXCn++imwU+yciT+sfGVZSecv7m7tdDDsFCjsBm1GKzGLkifY7/hfBbkHKErcHM3Wy+wdijyOoeQ==","signatures":[{"sig":"MEUCIHxuVryu+OGeS1CEnpbwHqb1T+Y9fdzmOiC9FT9vCE7PAiEAvflsfZO6GSWUY7l8V8Y1D5H7snbgfkFqpySzr7/6g8w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":880678},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.17_1784201601475_0.4095595119238984","host":"s3://npm-registry-packages-npm-production"}},"0.2.18":{"name":"@bin.zhou/aegis","version":"0.2.18","_id":"@bin.zhou/aegis@0.2.18","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"fc57c4537b52e5883e561d4807b5e02ad4b2b0b7","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.18.tgz","fileCount":284,"integrity":"sha512-kGCNPyNj8BPILqPLg/afShYUE2L1WOAPEFiJ0NRkVxD0UjItjup7dNqyB102VcU5BM4AZGy0t4P2gziR2/4iPA==","signatures":[{"sig":"MEYCIQCqqwJ+XyXnRR4kseU2q8gisLbVL7nGtF7/OFDpAJJR9AIhAIyaXTMpe8HHuNKapEM5P9VeXBayqcrMKlSsDj/ro27m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":882732},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.18_1784202825317_0.5950601853393545","host":"s3://npm-registry-packages-npm-production"}},"0.2.19":{"name":"@bin.zhou/aegis","version":"0.2.19","_id":"@bin.zhou/aegis@0.2.19","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"86a792b5321059537f9e5a025f12ebe8a4082148","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.2.19.tgz","fileCount":284,"integrity":"sha512-L5CZUUfnE74ZNXMS+56+ZVNegRlB6npqlSEFOdz9DK+Mu6i0TKxXr1doBVTgJtfg7x1H4V27mXDPek9WRt3asA==","signatures":[{"sig":"MEQCIGPYsVmPIyrifAn0QKse2girJJoI1Zicav6d/TuUoEsLAiBkJWlDKFE2h13HB/uN4WetIpRi1kJ7HbPxdZ1fMNmkVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":884384},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","prepublishOnly":"npm run build && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.7.2","@types/node":"^22.10.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.2.19_1784203267584_0.4629414872609201","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bin.zhou/aegis","version":"0.3.0","_id":"@bin.zhou/aegis@0.3.0","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"1fe132c6c8071666d7b127f2714b86fc151fc665","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.3.0.tgz","fileCount":367,"integrity":"sha512-MV3Z0NeIdSGnRNCxYSlAKECiqLjhKLXOfH9zg1P062pPDzv4H9ywpI33HLPbpRbNgJSmZbSzHIclLdJCKAuM5g==","signatures":[{"sig":"MEQCICkxiKAhSuijWGkf8SQAnIoVfG7mRIWxnxATChkvTUxJAiAq7WemZPZT21wIeB8rk4zZf7auAwNBwUKs8WiwPzkDFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1385738},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","link":"npm run build && npm run build:web && npm link","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","dev:web":"vite","prepack":"npm run build && npm run build:web","test:ci":"vitest run --coverage","test:e2e":"npm run build && npm run build:web && playwright test","build:web":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","typecheck:web":"tsc -p web/tsconfig.json --noEmit","prepublishOnly":"npm run prepack && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.1","zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.21","preact":"^10.29.7","vitest":"^4.1.5","@types/ws":"^8.18.1","typescript":"^5.7.2","@types/node":"^22.10.0","@playwright/test":"^1.61.1","@preact/preset-vite":"^2.10.6","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.3.0_1784778049247_0.281962668218916","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@bin.zhou/aegis","version":"0.3.1","_id":"@bin.zhou/aegis@0.3.1","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"4100ac0e1b3c535286c4abb6bb8937ca34e9b520","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.3.1.tgz","fileCount":367,"integrity":"sha512-eQbGphsnNMqEHfCd8N0ydlJqn/TcRO+EAxi0f7pVYl5yioAFPMT3tp/8fY2vfAG8fzy9ZMv5bo7ZEW8CzLStrg==","signatures":[{"sig":"MEUCIGZfJM5fZ3MQpqGQ33y3uMvuRmFKHkA77noslqzn6tJNAiEAvcbOG786HVPutFzOuxI7xixxzmeM1hYc4Gez+3FLs7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1385657},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","link":"npm run build && npm run build:web && npm link","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","dev:web":"vite","prepack":"npm run build && npm run build:web","test:ci":"vitest run --coverage","test:e2e":"npm run build && npm run build:web && playwright test","build:web":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","typecheck:web":"tsc -p web/tsconfig.json --noEmit","prepublishOnly":"npm run prepack && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.1","zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.21","preact":"^10.29.7","vitest":"^4.1.5","@types/ws":"^8.18.1","typescript":"^5.7.2","@types/node":"^22.10.0","@playwright/test":"^1.61.1","@preact/preset-vite":"^2.10.6","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.3.1_1784779907865_0.6014652385782617","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@bin.zhou/aegis","version":"0.3.2","_id":"@bin.zhou/aegis@0.3.2","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"78c044dabaf1e044788cec4e833d31411c85fd54","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.3.2.tgz","fileCount":367,"integrity":"sha512-XIfB4gBG3gX89QJXFiE66vpp0+DTUPCFKJmxGWtbs2GqWJTyFArNE9FX6hmph/OofyNjoi+WMKVWTaigyh+O1w==","signatures":[{"sig":"MEYCIQCHt2yIqPUMfi7wec9QP1scfkjr+ZhfRNQiHiFU3ASaNQIhAN/yanVpZgFJGJdf9cYtO0fs0j/ExpcXa7HfKLR3KWJk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1385735},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","link":"npm run build && npm run build:web && npm link","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","dev:web":"vite","prepack":"npm run build && npm run build:web","test:ci":"vitest run --coverage","test:e2e":"npm run build && npm run build:web && playwright test","build:web":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","typecheck:web":"tsc -p web/tsconfig.json --noEmit","prepublishOnly":"npm run prepack && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.1","zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.21","preact":"^10.29.7","vitest":"^4.1.5","@types/ws":"^8.18.1","typescript":"^5.7.2","@types/node":"^22.10.0","@playwright/test":"^1.61.1","@preact/preset-vite":"^2.10.6","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.3.2_1784780693635_0.9963528677111508","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@bin.zhou/aegis","version":"0.3.3","_id":"@bin.zhou/aegis@0.3.3","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"034b22989fac4bf00d67f0f308bd1d0321e63f1b","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.3.3.tgz","fileCount":367,"integrity":"sha512-n+T9aglQOo4GBSRqDBtuTbtmhGKBf8UBjBM3SnjYbWScA/6A5oBWXz4+9QY6P18bTRUMB1cwA9hUfFPA75Uvsw==","signatures":[{"sig":"MEUCIQCG6qFJRWBDPneUcDk51g682DAhYj6jdskc7ipLs1szHgIgOToNw6UFfm+CzQzVahPIN37D1h9Hc6j4AkhgCJo6Iq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1385970},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","link":"npm run build && npm run build:web && npm link","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","dev:web":"vite","prepack":"npm run build && npm run build:web","test:ci":"vitest run --coverage","test:e2e":"npm run build && npm run build:web && playwright test","build:web":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","typecheck:web":"tsc -p web/tsconfig.json --noEmit","prepublishOnly":"npm run prepack && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.1","zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.21","preact":"^10.29.7","vitest":"^4.1.5","@types/ws":"^8.18.1","typescript":"^5.7.2","@types/node":"^22.10.0","@playwright/test":"^1.61.1","@preact/preset-vite":"^2.10.6","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.3.3_1784787189852_0.35362600195967","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@bin.zhou/aegis","version":"0.3.4","_id":"@bin.zhou/aegis@0.3.4","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"9302070673c3eef415d642c9b0a2888afb6c806f","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.3.4.tgz","fileCount":368,"integrity":"sha512-tkhR7G7nHu1Wn0h1WXXun1Lg9ARj+uqkhiyR+0S+giS0U0Iqyleqqs6z5yGKcY30zdn0vq9XDWrJSmxonoowYA==","signatures":[{"sig":"MEUCIQCvKQ/sbCRy726CQQSAM3yxN2jX11iLlag0MTsbVe2XlwIgcSGU45zRGwLKk2yJPy+yjf//BAYPDcbExkBD32y0Fmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1488530},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","link":"npm run build && npm run build:web && npm link","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","dev:web":"vite","prepack":"npm run build && npm run build:web","test:ci":"vitest run --coverage","test:e2e":"npm run build && npm run build:web && playwright test","build:web":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","typecheck:web":"tsc -p web/tsconfig.json --noEmit","prepublishOnly":"npm run prepack && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.1","zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.21","preact":"^10.29.7","vitest":"^4.1.5","@types/ws":"^8.18.1","typescript":"^5.7.2","@types/node":"^22.10.0","@playwright/test":"^1.61.1","@preact/preset-vite":"^2.10.6","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.3.4_1784788497473_0.6137739758676544","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@bin.zhou/aegis","version":"0.3.5","_id":"@bin.zhou/aegis@0.3.5","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"bin":{"aegis":"dist/cli/main.js"},"dist":{"shasum":"f6942d94234877efbf9297ab9025372e111e8edb","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.3.5.tgz","fileCount":368,"integrity":"sha512-CwokGwRQeTPyWouuckwfhljHkCoe6M6nxzaZCBMlSANp7yl0ZJiNKCCilY7pGzAke5I6W6z6pUiZs/QyVSm0Iw==","signatures":[{"sig":"MEYCIQCDEWbUrZ1/D/88XAxgOYCZVGMz4JTTHEvfoaOVskfB8wIhANnlEJpdqhlmIuhCCDUGwlae99NVrumWwJCFLmcduKBn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1489508},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","link":"npm run build && npm run build:web && npm link","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","test":"vitest run","audit":"node scripts/audit-gate.mjs","build":"tsc -p tsconfig.json","dev:web":"vite","prepack":"npm run build && npm run build:web","test:ci":"vitest run --coverage","test:e2e":"npm run build && npm run build:web && playwright test","build:web":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","test:security":"vitest run test/security","typecheck:web":"tsc -p web/tsconfig.json --noEmit","prepublishOnly":"npm run prepack && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"_npmVersion":"11.16.0","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.1","zod":"^3.23.8","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.21","preact":"^10.29.7","vitest":"^4.1.5","@types/ws":"^8.18.1","typescript":"^5.7.2","@types/node":"^22.10.0","@playwright/test":"^1.61.1","@preact/preset-vite":"^2.10.6","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/aegis_0.3.5_1784790013445_0.667615590037894","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@bin.zhou/aegis","version":"0.3.6","description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","type":"module","engines":{"node":">=20"},"bin":{"aegis":"dist/cli/main.js"},"scripts":{"build":"tsc -p tsconfig.json","build:web":"vite build","link":"npm run build && npm run build:web && npm link","dev":"node --experimental-strip-types --enable-source-maps src/cli/main.ts","dev:web":"vite","typecheck":"tsc --noEmit","typecheck:web":"tsc -p web/tsconfig.json --noEmit","test":"vitest run","test:watch":"vitest","test:ci":"vitest run --coverage","test:security":"vitest run test/security","test:e2e":"npm run build && npm run build:web && playwright test","secret-scan":"vitest run test/security/canary-sweep.test.ts test/security/negative.test.ts","audit":"node scripts/audit-gate.mjs","lint":"tsc --noEmit","sbom":"npm sbom --sbom-format cyclonedx --sbom-type application","prepack":"npm run build && npm run build:web","prepublishOnly":"npm run prepack && npm run typecheck && npm run test:ci && npm run test:security && npm run audit"},"dependencies":{"commander":"^12.1.0","ws":"^8.21.1","zod":"^3.23.8"},"devDependencies":{"@playwright/test":"^1.61.1","@preact/preset-vite":"^2.10.6","@types/node":"^22.10.0","@types/ws":"^8.18.1","@vitest/coverage-v8":"^4.1.5","preact":"^10.29.7","typescript":"^5.7.2","vite":"^5.4.21","vitest":"^4.1.5"},"_id":"@bin.zhou/aegis@0.3.6","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-5e606Sh2KxO1A7mlx5ScOxV/Uk1c2LXPLC7uSGAUYtL3aPK2bJsvUC5KFgXXD1Uh5Ytq2GAVP71yGtKRqiNZUw==","shasum":"dfeccecd445bccf6e9f41acbc3f4faf06e9765d6","tarball":"https://registry.npmjs.org/@bin.zhou/aegis/-/aegis-0.3.6.tgz","fileCount":368,"unpackedSize":1493866,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCz9WCDy0ZujnLYcaj6da8jKTXiEIclOvnZS52+uzMycAIgcnoNp71eOb+AsSowRByfTp/TeozXsEnKhxTnRtJyhKw="}]},"_npmUser":{"name":"bin.zhou","email":"743028972@qq.com"},"directories":{},"maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aegis_0.3.6_1784792796854_0.18562879704161284"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-16T04:15:37.605Z","modified":"2026-07-23T07:46:37.149Z","0.2.0":"2026-07-16T04:15:37.953Z","0.2.1":"2026-07-16T04:19:50.492Z","0.2.2":"2026-07-16T06:13:32.387Z","0.2.3":"2026-07-16T06:23:54.864Z","0.2.4":"2026-07-16T06:39:42.353Z","0.2.5":"2026-07-16T06:50:47.570Z","0.2.6":"2026-07-16T07:46:47.081Z","0.2.7":"2026-07-16T08:27:24.638Z","0.2.8":"2026-07-16T09:13:39.610Z","0.2.9":"2026-07-16T09:22:40.071Z","0.2.10":"2026-07-16T09:36:13.923Z","0.2.11":"2026-07-16T09:43:15.028Z","0.2.12":"2026-07-16T09:47:52.531Z","0.2.13":"2026-07-16T09:56:34.803Z","0.2.15":"2026-07-16T11:10:33.424Z","0.2.16":"2026-07-16T11:25:53.902Z","0.2.17":"2026-07-16T11:33:21.645Z","0.2.18":"2026-07-16T11:53:45.535Z","0.2.19":"2026-07-16T12:01:07.780Z","0.3.0":"2026-07-23T03:40:49.419Z","0.3.1":"2026-07-23T04:11:48.033Z","0.3.2":"2026-07-23T04:24:53.831Z","0.3.3":"2026-07-23T06:13:10.061Z","0.3.4":"2026-07-23T06:34:57.678Z","0.3.5":"2026-07-23T07:00:13.593Z","0.3.6":"2026-07-23T07:46:37.002Z"},"description":"Aegis - local-first, policy-gated CLI agent. All effects go through a Policy Gateway; changes happen in an isolated worktree; every action is auditable.","maintainers":[{"name":"bin.zhou","email":"743028972@qq.com"}],"readme":"# Personal CLI Agent\n\n> **使用文档 / Usage guide → [USAGE.md](USAGE.md)** — install, config, the two\n> execution flows, memory, diagnostics, troubleshooting, exit codes, safety model.\n\nLocal-first, policy-governed personal CLI aegis control layer. The model provider\nis a replaceable, user-authorized reasoning backend — not the owner of the\nworkflow. The user owns local project memory, controlled execution, verification\nevidence, and cost/routing policy.\n\n> Status: P0 complete (M1–M7) + P1 started. Planning + Policy + Execution +\n> + Routing + Memory + Verification are implemented and unit/contract/integration\n> + security-tested; M7 dogfood ran 35 live tasks across 3 private repos (0\n> unauthorized side effects / 0 unredacted secrets / 0 broken audit chains).\n> P1 done: keychain creds, Gemini adapter, local model endpoints, debug summary.\n> High-risk P1 (MCP, auto-push, multi-agent, remote sync) gated behind their own ADRs.\n\n## P0 boundaries (enforced)\n\n- macOS/Linux only; single Git repo; **forced Git worktree** for writes (no `--in-place`).\n- Only compliant user-supplied API keys (OpenAI + Anthropic + Gemini official APIs);\n  a `fake` provider ships for offline/dry-run. No OAuth, cookies, or quota\n  circumvention. Self-hosted OpenAI-compatible / local model endpoints\n  (ollama, vLLM) are opt-in via `allow_local_endpoints` (P1-006).\n- **Policy Gateway is the single entry point for every side effect.** Provider\n  adapters, the planner, memory, and the verifier cannot bypass it; the executor\n  only accepts grants signed by the gateway.\n- **Credentials**: `env:NAME` (process env) and `keychain:NAME` (macOS Keychain\n  via `security` / Linux Secret Service via `secret-tool`; P1, spec 03 §12.2).\n  Resolved values are short-lived, never persisted/printed/audited; absence\n  fails soft (provider excluded with `no_credential`).\n- **Debug summary** (opt-in, `PERSONAL_AGENT_DEBUG_SUMMARY=1`): stores a redacted\n  request/response summary (metadata + token counts + 160-char secret-scrubbed\n  snippets) as an owner-only TTL artifact — never the full prompt/response or key.\n- No MCP, no IDE, no auto-commit/push, no cloud sync in P0 (P1 items needing\n  their own ADR + threat review: see `06-P1-ADR与路线.md`).\n\n## Architecture\n\n```text\ncli/                  commander commands, JSON envelope, exit-code mapping\napplication/          orchestrator (state machine + grant issuance), executor, memory\ndomain/               Task/Plan/EffectProposal/PolicyDecision/Grant/Evidence + state machine\nports/                Provider, Executor, Store, Memory, Audit, Credential, Hash/Clock/Id\npolicy/               risk classifier, path guard, argv guard, redactor, Policy Gateway, grant signer\nrouting/              capability matrix, budget, pre-authorized-only fallback\nplanning/             Plan JSON schema (zod), prompt assembly with provenance, planner\nverification/         evidence assembly + report rendering (text/json/md)\ninfrastructure/\n  persistence/        node:sqlite (WAL) + migrations + SqliteStore\n  audit/              append-only hash-chain audit sink + JSONL export\n  execution/          Git/File/Process/Network adapters (shell:false, realpath containment)\n  providers/          fake + OpenAI + Anthropic + Gemini adapters (fake HTTP transport in tests)\n  secrets/            env: + keychain: (macOS/Linux) credential ports, composite dispatch\nconfig/               minimal TOML parser + layered merge (repo may only tighten)\n```\n\nDependency direction is outward→inward: `cli`/`infrastructure` depend on\n`application`/`domain`/`ports`; `domain` imports no Node SDK, DB, or shell.\n\n## CLI\n\n```bash\naegis                                    # interactive REPL session (like claude/codex): natural-language -> plan -> approve -> execute -> report, multi-turn\naegis init [path]                       # validate git repo, init .aegis/, migrate DB\naegis doctor [--json] [--check-provider]   # read-only checks: git, config, schema, providers. --check-provider: declared, policy-gated reachability probe (default OFF; never sends prompts/business data)\naegis run <goal> [--provider] [--budget] [--dry-run] [--yes] [--allow-dirty] [--json]\n                                        # --dry-run: route only. default: plan + stop at approval.\n                                        # --yes: approve all displayed effects, execute+verify+report.\n                                        # dirty working tree is refused unless --allow-dirty (ADR-003).\naegis approve <task-id> <approval-id>  # approve a pending effect (the approval-id is shown by `run`)\naegis execute <task-id>                  # staged: create worktree, execute approved effects, verify, report\naegis resume <task-id>                  # recover a resumable task\naegis status [task-id] [--json]        # task state, budget, last audit seq\naegis report <task-id> [--format text|json|md]   # render the report from stored evidence\naegis audit verify|export [task-id]    # verify the tamper-evident hash chain / export JSONL\naegis cleanup [task-id] [--force]      # remove isolated worktrees for terminal tasks\naegis memory list|add|forget ...\naegis config validate|show\n```\n\nTwo execution flows: `run --yes` (one-shot, in-process) or the staged\n`run` → `approve` (per decision) → `execute`. file.write payloads are persisted\nto an owner-only artifact store keyed by content hash, so `execute` (a separate\nprocess) reconstructs approved content without re-calling the provider.\n\nJSON result envelope: `{ apiVersion:\"v1\", ok, data?, error?, requestId }`. Exit codes\nfollow the spec (0 ok, 2 usage/config, 3 user-action, 4 policy, 5 provider/route,\n6 execution, 7 data/migration, 130 interrupt).\n\n## Install\n\n**Published package (one line, once on npm):**\n```bash\nnpm install -g @bin.zhou/aegis\n# or a curl installer:\ncurl -fsSL https://raw.githubusercontent.com/<org>/<repo>/main/packages/personal-cli-agent/scripts/install.sh | sh\n```\n\n**From source (dev / pre-publish):**\n```bash\ncd packages/personal-cli-agent\nnpm install && npm run build && npm link   # puts `aegis` on PATH\n```\n\nThen run the interactive first-time setup (picks a provider, stores your key in\nthe OS keychain, writes the config - no hand-editing TOML):\n```bash\naegis setup\n```\n\n`npm publish` is gated by `prepublishOnly` (build + typecheck + coverage-gated\ntests + security regression + `npm audit`), and `prepack` rebuilds `dist/` so the\ntarball always ships a fresh binary. Ship set: `dist/` + `README.md` +\n`USAGE.md` + `UNINSTALL.md` (see `files` in `package.json`).\n\n## Develop\n\n```bash\nnpm install        # workspace install\nnpm run build      # tsc -> dist/\nnpm test           # vitest run (268 tests; E2E gated on MINIMAX_KEY)\nnpm run test:security\n```\n\n**Live E2E** (`test/e2e/cli-flow.e2e.test.ts`, gated on `MINIMAX_KEY`): runs the\nBUILT `dist/cli/main.js` against a disposable git repo with a real provider,\ncovering the full staged flow (`init` → `run`(plan) → `approve` → `execute` →\n`report` → `status` → `audit verify/export` → `cleanup`) plus `--yes`,\n`--dry-run`, `--budget` rejection, `memory add/list/forget`, `resume`, `doctor`,\nand `config`. Asserts worktree isolation, no key leak, audit-chain integrity.\nSkipped without a key (CI runs the 268 deterministic tests).\n\nNode ≥20 (developed on Node 24, using the built-in `node:sqlite` — no native deps).\nConfig dirs: `PERSONAL_AGENT_HOME` (default `~/.personal-cli-agent`) and\n`PERSONAL_AGENT_PROJECT_DIR` (default `<repo>/.aegis`).\n\n**Provider fallback (M5):** on a retryable provider failure (rate-limit /\nunavailable / malformed), the orchestrator switches to another pre-authorized,\ncapability-matching candidate within the same budget, auditing the switch reason.\nIt never falls back on non-retryable errors (auth/terms) and never reaches a\nprovider outside the route's surviving candidates.\n\n**Schema safety (10.2):** migrations are forward-only with a pre-migration\nbackup (state.db + WAL/SHM sidecars, restored on failure); `doctor` reports the\nrecent backup. If the DB schema is newer than this app supports, write commands\nfail with `SCHEMA_VERSION_NEWER_THAN_APP` while read-only commands\n(status/report/doctor/audit) still work.\n\nFull product, architecture, interface, and security planning:\n[规划包](../../docs/技术方案/personal-cli-agent/README.md).\n\n## Release artifacts\n\nPer the release gate (04 §6.1), the release package includes an SBOM, the\ndependency lockfile, versioned default policy, and uninstall/data-cleanup\ninstructions:\n\n- **CI gate** — `.github/workflows/ci.yml` runs, on every push/PR: typecheck,\n  build, coverage-gated unit/contract/integration tests, the negative +\n  canary-sweep security regression, a dependency-vulnerability audit, and SBOM\n  generation. (This package is currently a workspace member without its own\n  git remote; the workflow file is ready-to-deploy when it becomes its own\n  repo. Run the same gate locally with:)\n  ```bash\n  npm run typecheck && npm run test:ci && npm run test:security && npm run audit && npm run sbom --silent > sbom.cdx.json\n  ```\n  - `npm run test:ci` — `vitest run --coverage`; enforces the coverage\n    thresholds (statements/lines ≥80, branches ≥75, functions ≥80).\n  - `npm run secret-scan` — the canary-sweep + negative security suite (no\n    secret survives any output surface).\n  - `npm run audit` — `npm audit --omit=dev --audit-level=high` against the\n    official registry (0 high/critical vulnerabilities expected).\n- **SBOM** — `npm run sbom` emits a CycloneDX 1.5 SBOM of type `application`\n  to stdout (108 components in a clean install). Pipe to a file in the release\n  job:\n  ```bash\n  npm run sbom --silent > sbom.cdx.json   # in a clean release install\n  ```\n  The SBOM is generated from the installed dependency tree, so it must be\n  produced in a **clean, isolated install** of this package (`npm ci` of just\n  `@bin.zhou/aegis`). A shared monorepo dev install can\n  contain unrelated sibling-package dependency inconsistencies that make\n  `npm sbom` refuse; the release environment is isolated, so this does not\n  apply there.\n- **Lockfile** — ship `package-lock.json`.\n- **Default policy** — `DEFAULT_REPO_CONFIG_TOML` (written by `agent init`).\n- **Uninstall / data cleanup** —\n  [UNINSTALL.md](./UNINSTALL.md).\n","readmeFilename":"README.md"}