{"_id":"@albsugy/aos","_rev":"22-3d6d798c1c7b9dbc1c4ce0685b5ceec6","name":"@albsugy/aos","dist-tags":{"latest":"0.14.0"},"versions":{"0.8.1":{"name":"@albsugy/aos","version":"0.8.1","keywords":["ai-agents","claude-code","agent-ops","guardrails","audit"],"author":{"name":"Medhat Albsugy"},"license":"MIT","_id":"@albsugy/aos@0.8.1","maintainers":[{"name":"albsugy","email":"albsugy@gmail.com"}],"homepage":"https://github.com/albsugy/aos#readme","bugs":{"url":"https://github.com/albsugy/aos/issues"},"os":["darwin","linux"],"bin":{"aos":"dist/aos.mjs"},"dist":{"shasum":"bcc81d4a4bf376f0cece7d640113a92738f48132","tarball":"https://registry.npmjs.org/@albsugy/aos/-/aos-0.8.1.tgz","fileCount":16,"integrity":"sha512-403yiN279R862X884uWZdcYleNXdubS4vqM5D1sc+d/GUkaANQyMitGWBcNInuL+VxKc0T4DPKr9hxnvF+vAdQ==","signatures":[{"sig":"MEUCIQCnk4jsVwn3nOFEjNgjtq9qgvuDVLTd578PlhVFE6oUIwIgIH05v4bJerql2wdG76JTErLn+0G0mDScLoSAYFYybE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albsugy%2faos@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":244905},"main":"dist/aos.mjs","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/aos.mjs","./package.json":"./package.json"},"gitHead":"49cceb23c7e002950686aa145c0650d673228b77","scripts":{"test":"npm run test:source && npm run test:bundle","build":"node scripts/build.mjs","release":"bash scripts/release.sh","test:bundle":"AOS_BIN=\"node $PWD/dist/aos.mjs\" bash test/smoke.sh","test:source":"bash test/smoke.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b600ef69-00ff-4618-b3ee-cbe5debb856e"}},"repository":{"url":"git+https://github.com/albsugy/aos.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent Operations Stack — portable spec, guardrails, audit, verification, and console for operating AI coding agents","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","esbuild":"^0.28.1"},"_npmOperationalInternal":{"tmp":"tmp/aos_0.8.1_1783251310508_0.8034494596820432","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@albsugy/aos","version":"0.9.0","keywords":["ai-agents","claude-code","agent-ops","guardrails","audit"],"author":{"name":"Medhat Albsugy"},"license":"MIT","_id":"@albsugy/aos@0.9.0","maintainers":[{"name":"albsugy","email":"albsugy@gmail.com"}],"homepage":"https://github.com/albsugy/aos#readme","bugs":{"url":"https://github.com/albsugy/aos/issues"},"os":["darwin","linux"],"bin":{"aos":"dist/aos.mjs"},"dist":{"shasum":"3c822e71c31e0411ae0e73a78db9281e84f5085b","tarball":"https://registry.npmjs.org/@albsugy/aos/-/aos-0.9.0.tgz","fileCount":16,"integrity":"sha512-RSEaV4ktBwGAq2JB3mbx3Z9/YST2iMMDfxk8+N1d4XpXPTg8h6ebbCIhBXsap9OLm2Fn9PitLllLoMnYlC2SlQ==","signatures":[{"sig":"MEQCIAJIHdun++2n6U2uAhNTtQCFVusVwP42Fp3w996gWhWuAiATOkNgLjVFbaB9MUbk4x5Mcud3W7qCNnsrZMiRF0JHuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albsugy%2faos@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":267729},"main":"dist/aos.mjs","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/aos.mjs","./package.json":"./package.json"},"gitHead":"ed6877ee64bd2e9218618dd4969c09a711fd18d9","scripts":{"test":"npm run test:source && npm run test:bundle","build":"node scripts/build.mjs","release":"bash scripts/release.sh","test:bundle":"AOS_BIN=\"node $PWD/dist/aos.mjs\" bash test/smoke.sh","test:source":"bash test/smoke.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b600ef69-00ff-4618-b3ee-cbe5debb856e"}},"repository":{"url":"git+https://github.com/albsugy/aos.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent Operations Stack — portable spec, guardrails, audit, verification, and console for operating AI coding agents","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","esbuild":"^0.28.1"},"_npmOperationalInternal":{"tmp":"tmp/aos_0.9.0_1784406837384_0.006237596624675712","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@albsugy/aos","version":"0.9.1","keywords":["ai-agents","claude-code","agent-ops","guardrails","audit"],"author":{"name":"Medhat Albsugy"},"license":"MIT","_id":"@albsugy/aos@0.9.1","maintainers":[{"name":"albsugy","email":"albsugy@gmail.com"}],"homepage":"https://github.com/albsugy/aos#readme","bugs":{"url":"https://github.com/albsugy/aos/issues"},"os":["darwin","linux"],"bin":{"aos":"dist/aos.mjs"},"dist":{"shasum":"933bb3221a2dc6673db8e3b556dfe3207728f370","tarball":"https://registry.npmjs.org/@albsugy/aos/-/aos-0.9.1.tgz","fileCount":17,"integrity":"sha512-7Ite5hODmy5KLN5dxWX4Iat7trbUTgUtIoiPgkIDys5AAc8IYg94QxxRIZ/6gtcdiQ7yBhkRWAzkCxO3FXsviw==","signatures":[{"sig":"MEUCIQD62XNot7PF/vBn/wsqvg4XjKBwNGZtxzKlXYN71wxrRgIgUR6wrAP2cWG8/jweuSJgXTE2fDY5jwH0yBEOONm1hjo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albsugy%2faos@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":277424},"main":"dist/aos.mjs","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/aos.mjs","./package.json":"./package.json"},"gitHead":"6d8edef770609bba1aebc0c3778c22fde1a113db","scripts":{"test":"npm run test:source && npm run test:bundle","build":"node scripts/build.mjs","release":"bash scripts/release.sh","test:bundle":"AOS_BIN=\"node $PWD/dist/aos.mjs\" bash test/smoke.sh","test:source":"bash test/smoke.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b600ef69-00ff-4618-b3ee-cbe5debb856e"}},"repository":{"url":"git+https://github.com/albsugy/aos.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent Operations Stack — portable spec, guardrails, audit, verification, and console for operating AI coding agents","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","esbuild":"^0.28.1"},"_npmOperationalInternal":{"tmp":"tmp/aos_0.9.1_1784456793498_0.9949876525508621","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@albsugy/aos","version":"0.9.2","keywords":["ai-agents","claude-code","agent-ops","guardrails","audit"],"author":{"name":"Medhat Albsugy"},"license":"MIT","_id":"@albsugy/aos@0.9.2","maintainers":[{"name":"albsugy","email":"albsugy@gmail.com"}],"homepage":"https://github.com/albsugy/aos#readme","bugs":{"url":"https://github.com/albsugy/aos/issues"},"os":["darwin","linux"],"bin":{"aos":"dist/aos.mjs"},"dist":{"shasum":"cbeaf805d414969bed4313441feae715bc2692f9","tarball":"https://registry.npmjs.org/@albsugy/aos/-/aos-0.9.2.tgz","fileCount":18,"integrity":"sha512-IQe9LIqlb1NGM+6OA/pgSQF4eUeAInJBnyjRKS62vDYGUw6u6BqrnmBWhZ7x7ROy+nkg0k8ggMx4ly5grsTTTQ==","signatures":[{"sig":"MEUCICqqlWjw0kFErhuyuSE2/KlGxwWzD+oV+vMytAdfFUQFAiEAvKutrajxvFe0qQlwlmJqgVwuAyuhdA0SL1bEwPr0Zec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albsugy%2faos@0.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":287931},"main":"dist/aos.mjs","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/aos.mjs","./package.json":"./package.json"},"gitHead":"3358b5d3b6cd2074c07086feb96516f462c516d9","scripts":{"test":"npm run test:source && npm run test:bundle","build":"node scripts/build.mjs","release":"bash scripts/release.sh","test:bundle":"AOS_BIN=\"node $PWD/dist/aos.mjs\" bash test/smoke.sh","test:source":"bash test/smoke.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b600ef69-00ff-4618-b3ee-cbe5debb856e"}},"repository":{"url":"git+https://github.com/albsugy/aos.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent Operations Stack — portable spec, guardrails, audit, verification, and console for operating AI coding agents","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","esbuild":"^0.28.1"},"_npmOperationalInternal":{"tmp":"tmp/aos_0.9.2_1784461062077_0.9933002289205928","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@albsugy/aos","version":"0.10.0","keywords":["ai-agents","claude-code","agent-ops","guardrails","audit"],"author":{"name":"Medhat Albsugy"},"license":"MIT","_id":"@albsugy/aos@0.10.0","maintainers":[{"name":"albsugy","email":"albsugy@gmail.com"}],"homepage":"https://github.com/albsugy/aos#readme","bugs":{"url":"https://github.com/albsugy/aos/issues"},"os":["darwin","linux"],"bin":{"aos":"dist/aos.mjs"},"dist":{"shasum":"8e116b1e7cc91c41008b644b52086dca8c2548c0","tarball":"https://registry.npmjs.org/@albsugy/aos/-/aos-0.10.0.tgz","fileCount":19,"integrity":"sha512-DI4tNagxELSnAUHab99DARRo2UBmgwKaSd/fkMnli8NfzoxJ2x7gBMXzDMvm0Ot3jJXFA8mBw/1jMhdlfrc9aw==","signatures":[{"sig":"MEUCICnDnLD9UHySouASj6WJKe8LY6BnR8KvCt5K/H48uZPiAiEAvne4C0fs7dkuTKYWt93s+DBp4zcFu/hZOtXZz2jg9fE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albsugy%2faos@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":300953},"main":"dist/aos.mjs","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/aos.mjs","./package.json":"./package.json"},"gitHead":"e8d3da42c45d0ce1bcb5555c7b34926b3636ba2b","scripts":{"test":"npm run test:source && npm run test:bundle","build":"node scripts/build.mjs","release":"bash scripts/release.sh","test:bundle":"AOS_BIN=\"node $PWD/dist/aos.mjs\" bash test/smoke.sh","test:source":"bash test/smoke.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b600ef69-00ff-4618-b3ee-cbe5debb856e"}},"repository":{"url":"git+https://github.com/albsugy/aos.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent Operations Stack — portable spec, guardrails, audit, verification, and console for operating AI coding agents","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","esbuild":"^0.28.1"},"_npmOperationalInternal":{"tmp":"tmp/aos_0.10.0_1784475207749_0.08771295662679468","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@albsugy/aos","version":"0.11.0","keywords":["ai-agents","claude-code","agent-ops","guardrails","audit"],"author":{"name":"Medhat Albsugy"},"license":"MIT","_id":"@albsugy/aos@0.11.0","maintainers":[{"name":"albsugy","email":"albsugy@gmail.com"}],"homepage":"https://github.com/albsugy/aos#readme","bugs":{"url":"https://github.com/albsugy/aos/issues"},"os":["darwin","linux"],"bin":{"aos":"dist/aos.mjs"},"dist":{"shasum":"cc40d6ade1d1a84cff7dcb04d5defa1fae187993","tarball":"https://registry.npmjs.org/@albsugy/aos/-/aos-0.11.0.tgz","fileCount":19,"integrity":"sha512-EFhXBcXynPoLt5dUZlrs5okvLVYaJmmfgzsEtjNl8XcpiclsFcpT5My7+7l7Cy74pXXVXB6JW8Oo2uvdSPiEUQ==","signatures":[{"sig":"MEQCIGEls3h88KY0OTko04xoh5E5mSEzld9Ql5TUhMRUdN3EAiAgskz8RyRw61YjjW33JtOQBlpC+sa1AuLhac+kTCgRlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albsugy%2faos@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":348752},"main":"dist/aos.mjs","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/aos.mjs","./package.json":"./package.json"},"gitHead":"c612826f7fbeffc8d7b6ba0663c0174497830dea","scripts":{"test":"npm run test:source && npm run test:bundle","build":"node scripts/build.mjs","release":"bash scripts/release.sh","test:bundle":"AOS_BIN=\"node $PWD/dist/aos.mjs\" bash test/smoke.sh","test:source":"bash test/smoke.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b600ef69-00ff-4618-b3ee-cbe5debb856e"}},"repository":{"url":"git+https://github.com/albsugy/aos.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent Operations Stack — portable spec, guardrails, audit, verification, and console for operating AI coding agents","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","esbuild":"^0.28.1"},"_npmOperationalInternal":{"tmp":"tmp/aos_0.11.0_1785083787470_0.5959634029202934","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@albsugy/aos","version":"0.11.1","keywords":["ai-agents","claude-code","agent-ops","guardrails","audit"],"author":{"name":"Medhat Albsugy"},"license":"MIT","_id":"@albsugy/aos@0.11.1","maintainers":[{"name":"albsugy","email":"albsugy@gmail.com"}],"homepage":"https://github.com/albsugy/aos#readme","bugs":{"url":"https://github.com/albsugy/aos/issues"},"os":["darwin","linux"],"bin":{"aos":"dist/aos.mjs"},"dist":{"shasum":"b8761dbd5d2606b67a3dae06479ed0a9413f6aff","tarball":"https://registry.npmjs.org/@albsugy/aos/-/aos-0.11.1.tgz","fileCount":19,"integrity":"sha512-IK6Ont/quxExGpuFR5Ncg54oEn8WMt4Q4PG2TmjRfZnxpukWjCDvfxljy+g8BbOQQpPpH5WUeRYDZcEtKR1g3Q==","signatures":[{"sig":"MEUCIQD9r/KETyiEenibSz6+7vjBQprcArvC8HO88eRTJhBfaQIgNta6PCxjHx11gSXIIquS3T9PYIfXniytbwFoYfXa1Zc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albsugy%2faos@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":380864},"main":"dist/aos.mjs","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/aos.mjs","./package.json":"./package.json"},"gitHead":"00dffd42bbdfbea75292701b4b0b03546e9d6a85","scripts":{"test":"npm run test:source && npm run test:bundle","build":"node scripts/build.mjs","release":"bash scripts/release.sh","test:bundle":"AOS_BIN=\"node $PWD/dist/aos.mjs\" bash test/smoke.sh","test:source":"bash test/smoke.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b600ef69-00ff-4618-b3ee-cbe5debb856e"}},"repository":{"url":"git+https://github.com/albsugy/aos.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent Operations Stack — portable spec, guardrails, audit, verification, and console for operating AI coding agents","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","esbuild":"^0.28.1"},"_npmOperationalInternal":{"tmp":"tmp/aos_0.11.1_1785170098326_0.4384328377621991","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@albsugy/aos","version":"0.14.0","description":"Agent Operations Stack — portable spec, guardrails, audit, verification, and console for operating AI coding agents","type":"module","bin":{"aos":"dist/aos.mjs"},"main":"dist/aos.mjs","exports":{".":"./dist/aos.mjs","./package.json":"./package.json"},"engines":{"node":">=22"},"scripts":{"test":"npm run test:unit && npm run test:source && npm run test:bundle","test:unit":"node --test test/unit/*.test.js","test:source":"bash test/smoke.sh","test:bundle":"AOS_BIN=\"node $PWD/dist/aos.mjs\" bash test/smoke.sh","build":"node scripts/build.mjs","prepublishOnly":"npm run build && npm test","release":"bash scripts/release.sh"},"os":["darwin","linux"],"publishConfig":{"access":"public","provenance":true},"repository":{"type":"git","url":"git+https://github.com/albsugy/aos.git"},"homepage":"https://github.com/albsugy/aos#readme","bugs":{"url":"https://github.com/albsugy/aos/issues"},"keywords":["ai-agents","claude-code","codex","cursor","agent-ops","guardrails","audit"],"author":{"name":"Medhat Albsugy"},"license":"MIT","devDependencies":{"esbuild":"^0.28.1","yaml":"^2.9.0"},"gitHead":"81078da8794fd225efc66acf0671dbf8024d7bb6","_id":"@albsugy/aos@0.14.0","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-9m3VffMa+/2TpezO34XmVIHlSpm8r2dUgB7s0b/IHuLS39dtKT3fp8UXPfXE7b6cxMNc2p3ql99Kp7x/gYsVLg==","shasum":"454045fdfc4a54e5dbc9ac5c72dba6a3bdbea9a5","tarball":"https://registry.npmjs.org/@albsugy/aos/-/aos-0.14.0.tgz","fileCount":22,"unpackedSize":609271,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albsugy%2faos@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDD5CHjsj77HAv3H3bO0mmcH0Kx9mb7GoNSCjAN/bonwQIhAPnn/6qkrYUlx6Y12jIrNgl7x4IaZctHg75gaMVY8VhG"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b600ef69-00ff-4618-b3ee-cbe5debb856e"}},"directories":{},"maintainers":[{"name":"albsugy","email":"albsugy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aos_0.14.0_1788523762755_0.8624399255583173"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-04T13:25:06.363Z","modified":"2026-09-04T12:09:23.276Z","0.5.0":"2026-07-04T13:25:06.726Z","0.5.1":"2026-07-04T13:55:42.890Z","0.6.0":"2026-07-04T18:05:23.728Z","0.7.0":"2026-07-04T22:09:20.473Z","0.7.1":"2026-07-04T22:23:57.598Z","0.7.2":"2026-07-04T22:37:18.221Z","0.8.0":"2026-07-05T10:50:29.187Z","0.8.1":"2026-07-05T11:35:10.639Z","0.9.0":"2026-07-18T20:33:57.579Z","0.9.1":"2026-07-19T10:26:33.642Z","0.9.2":"2026-07-19T11:37:42.268Z","0.10.0":"2026-07-19T15:33:27.934Z","0.11.0":"2026-07-26T16:36:27.640Z","0.11.1":"2026-07-27T16:34:58.479Z","0.14.0":"2026-09-04T12:09:22.900Z"},"bugs":{"url":"https://github.com/albsugy/aos/issues"},"author":{"name":"Medhat Albsugy"},"license":"MIT","homepage":"https://github.com/albsugy/aos#readme","keywords":["ai-agents","claude-code","codex","cursor","agent-ops","guardrails","audit"],"repository":{"type":"git","url":"git+https://github.com/albsugy/aos.git"},"description":"Agent Operations Stack — portable spec, guardrails, audit, verification, and console for operating AI coding agents","maintainers":[{"name":"albsugy","email":"albsugy@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"assets/logo.png\" alt=\"AOS\" width=\"160\" height=\"160\">\n</p>\n\n<h1 align=\"center\">AOS — Agent Operations Stack</h1>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@albsugy/aos\"><img src=\"https://img.shields.io/npm/v/@albsugy/aos?color=cb3837&logo=npm\" alt=\"npm\"></a>\n  <a href=\"https://github.com/albsugy/aos/actions/workflows/ci.yml\"><img src=\"https://github.com/albsugy/aos/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/License-MIT-blue.svg\" alt=\"License: MIT\"></a>\n  <a href=\"package.json\"><img src=\"https://img.shields.io/badge/node-%E2%89%A522-brightgreen\" alt=\"Node ≥ 22\"></a>\n</p>\n\nGovernance and continuity for every coding agent you use. One policy, one\nproject memory, one audit trail — installed as hooks so they work without\nanybody invoking anything.\n\n**Spec Kit tells the agent what to build; AOS proves it followed the rules.**\n\nMarkdown, YAML, and JSONL under your home directory. Open source (MIT). No\nnetwork calls. No account.\n\n```bash\nnpm i -g @albsugy/aos\ncd your-repo && aos init --hooks-only          # Claude Code\naos init --agent all                           # Claude Code + Codex + Cursor + pi + opencode (+ context for Devin/Gemini)\naos init --agent auto                          # whichever agents are installed here\n```\n\nThat's a complete install. From the next session on, in this repo: context is\ninjected at session start. Agents with a hook surface (Claude Code, Codex,\nCursor, pi, opencode) also gate risky commands and writes, and audit every\ntool call. Devin and Gemini get the generated context files — not tool-call\nenforcement.\n\n- **[Install](#install)**\n- **[Quickstart](#quickstart)**\n- **[Features](#features)**\n- **[Agents](#agents)**\n- **[What's enforced](#whats-enforced-and-whats-convention)**\n- **[Documentation](#documentation)**\n- **[Contributing](#contributing)**\n\n---\n\n## Features\n\n| | |\n|---|---|\n| **Gates** | Forbidden commands denied, gated ones asked. Shell paths (`tee`, `>`, `sed -i`) are parsed, not grepped. Evasive forms (`git -C . push`, `rm -Rf /*`) are caught structurally. |\n| **Self-protection** | An agent cannot edit hook wiring, `.git/hooks/`, AOS policy/audit files, or the pending-approval ledger without you. |\n| **Plan & scope** | Implementation writes stay blocked until a human approves the plan. A `## Files` list in `plan.md` gates writes outside it. |\n| **Review gate** | `aos run finish` refuses while the adversarial review is missing, malformed, or still open. |\n| **Human sign-off** | Closing a run is recorded: gate prompt, terminal, `aos approve` (Codex/Cursor), or the CI env var. |\n| **Audit** | Every tool call and verdict lands in a hash-chained `audit.jsonl`. `aos audit verify` is CI-gateable. |\n| **Evidence** | Replay real traffic against a candidate policy. Ingest Claude Code history. Opt-in executable findings. |\n| **Local-only** | Console binds `127.0.0.1`. The CLI makes zero network calls. |\n\nThe gates are hooks, so they hold whether or not the agent cooperates. The\nticket pipeline is markdown, so it holds only as well as the model follows it.\nThis README is explicit about which is which.\n\nAOS sits next to spec and task tools, not against them. Spec Kit, Taskmaster,\nBMAD and the like decide what the work is; AOS proves it followed the rules\nwhile the work is done.\n\n## Install\n\nRequires **Node ≥ 22**.\n\n**npm**\n\n```bash\nnpm i -g @albsugy/aos\n```\n\n**curl** (verifies the registry sha-512, unpacks to `~/.local/share/aos`, links\n`~/.local/bin/aos`)\n\n```bash\ncurl -fsSL https://cdn.jsdelivr.net/npm/@albsugy/aos/install.sh | bash\n```\n\nPin with `AOS_VERSION=0.13.0`. Update with `aos update`. Diagnose with\n`aos doctor`.\n\n**From source**\n\n```bash\ngit clone https://github.com/albsugy/aos.git && cd aos\nnpm ci && npm run build\nln -sf \"$PWD/dist/aos.mjs\" ~/.local/bin/aos\n```\n\nReleases carry npm\n[provenance attestations](https://docs.npmjs.com/generating-provenance-statements).\n\nUninstall: `rm -rf ~/.local/share/aos ~/.local/bin/aos` — data in `~/.aos` stays.\n\n## Quickstart\n\n```bash\ncd your-repo\naos init                 # Claude Code: hooks + skills + project memory\naos init --agent all     # every supported agent\naos doctor --capabilities\n```\n\nFill in the two files that matter:\n\n- `~/.aos/projects/<id>/context/pack.md` — what every agent must know\n- `~/.aos/projects/<id>/policy.yaml` — gates + verification contracts\n\nThen, in a session with any wired agent, run the **aos-ticket** skill. The\nsix-stage pipeline ends `awaiting-review`.\n\n```bash\naos status               # runs, states, leverage, tokens, estimated cost\naos context sync         # regenerate AGENTS.md / GEMINI.md after editing memory\naos console              # http://127.0.0.1:4560\n```\n\n`aos doctor` is worth running after any move or update: hook commands end in\n`|| true` so a missing `aos` can never break a session — which also means it\nwould otherwise turn every gate off silently. Doctor resolves them and says so.\n\nIf you only want the hooks (no pipeline skills): `aos init --hooks-only`.\n\n## Agents\n\nSupport is stated honestly per agent — `aos doctor --capabilities` prints this\nfrom the same code that enforces it:\n\n| Agent | Gates | Audit | Approvals | Writes | Level |\n|---|---|---|---|---|---|\n| Claude Code | ✓ | ✓ | native prompt | ✓ | full enforcement |\n| Codex | ✓ | ✓ | via `aos approve` | ✓ (`apply_patch`) | full enforcement — trust hooks once (`/hooks` in Codex) |\n| Cursor | ✓ | ✓ | via `aos approve` | ✓ | full enforcement |\n| pi | ✓ | ✓ | via `aos approve` | ✓ | full enforcement — gate extension at `.pi/extensions/` (loads once pi trusts the project) |\n| opencode | ✓ | ✓ | via `aos approve` | ✓ | full enforcement — gate plugin at `.opencode/plugins/` (auto-loads) |\n| Devin CLI | — | — | — | — | workflow compatibility (AGENTS.md + skills in `.agents/skills/`) |\n| Gemini CLI | — | — | — | — | workflow compatibility (context file + Git/CI gates) |\n\nNeither Codex, Cursor, pi, nor opencode can surface a native *ask* prompt from their\ninterception surfaces today.\nA gated operation is **denied pending a human approval**: the denial carries\n`aos approve <id>`, a human grants it outside the agent, and the same operation\nis allowed through exactly once. Never silently allowed, never permanently\ndenied. Agents cannot approve their own unlocks.\n\nStart a task in Claude Code, continue it in Codex, finish it in Cursor: plan\napproval, scope, contracts, review, sign-offs, audit, and project memory are\nthe same objects. Each audit line records which agent produced it (`provider`).\n\n## How it works\n\nThe same events are wired into each agent's control surface — command hooks\n(`.claude/settings.json`, `.codex/hooks.json`, `.cursor/hooks.json`), a pi\nextension (`.pi/extensions/pi-aos.ts`), or an opencode plugin\n(`.opencode/plugins/opencode-aos.ts`). Either way the enforcement is the same AOS core:\nadapters translate, the policy engine decides.\n\n| Hook | Effect |\n|---|---|\n| **SessionStart** | Injects the project's context pack, recent decisions, learnings, and open runs |\n| **PreToolUse** | Gates Bash **and file writes** against `policy.yaml`. Plan gate and scope gate apply here. |\n| **PostToolUse** | Appends every action to the run's `audit.jsonl` |\n| **SessionEnd** | Records token usage (Claude Code transcripts today) and flags missing learnings |\n| **Stop** | Drains `awaiting-review` and extracts learnings while the model still has the work in context |\n\nPer-agent differences and the external-approval flow:\n[DOCS.md — hooks per agent](DOCS.md#hooks-per-agent).\n\n**Threat model, honestly:** these gates are accident-protection for well-meaning\nagents — the failure mode that actually happens. A deliberately adversarial\nagent needs OS-level isolation. Hooks also fail **open** by design: a broken\ngate allows rather than blocks, logs to `~/.aos/hook-errors.log`, and\n`aos doctor` surfaces it.\n\n## What's enforced, and what's convention\n\nBoth matter. Only one of them survives an agent that doesn't feel like\ncooperating.\n\n| Enforced by hooks and the CLI | Convention (markdown the model follows) |\n|---|---|\n| Command + file-write gates | Quality of a plan, ticket, or `outcome.md` |\n| Self-protection of hook wiring and AOS state | Whether intake captured the real acceptance criteria |\n| Plan approval (`plan_gate: ask`) | Whether the skeptic hunted hard or glanced |\n| Review gate on `aos run finish` | Whether a recorded learning is worth reading |\n| Human sign-off to close a run | Whether a playbook gets proposed |\n| Working-tree guard (`reset --hard`, `clean -f`, …) | |\n| Scope gate from `plan.md`'s Files list | Whether the declared list was honest |\n| Forbidden holds even when prompts are skipped | |\n| Hash-chained audit; `aos audit verify` | |\n| Opt-in executable findings | |\n| State machine (`in-progress` cannot skip to `shipped`) | |\n| Token accounting (Claude Code transcripts today) | |\n\n## Verification\n\n`aos verify` runs the `contracts` from `policy.yaml` — real commands in a real\nsubprocess. No contracts configured → it says so and refuses to record a pass.\n\nThe adversarial review is the quality claim AOS enforces. A skeptic records\nstructured findings in `review.json`; finish refuses while any are `open`.\nOpt in to **executable findings** (`verification.executable_findings: true`)\nand high-severity `open`/`fixed` claims must be demonstrated by a command\n`aos run review` actually runs. Results live in `executions.json`, not in\nagent-authored `review.json`.\n\nEscape hatches are loud: `--force` stamps `adversarial_review: forced`.\n\n## Evidence commands\n\n| Command | What it does |\n|---|---|\n| `aos approve <id>` / `--list` | Grant (or list) operations a Codex/Cursor gate denied pending approval |\n| `aos policy test --file candidate.yaml` | Replay recorded traffic against a policy before you install it |\n| `aos audit verify` | Walk every ledger; exit 1 on tamper evidence |\n| `aos ingest` | Backfill audit + tokens from Claude Code transcripts |\n| `aos context sync` / `check` / `diff` | Keep `AGENTS.md` / `GEMINI.md` in sync with project memory |\n\n## The spec\n\n```\n~/.aos/\n├── registry.yaml\n├── removals.jsonl                 # receipt for every aos remove — survives purge\n├── fleet/                         # optional hub for cross-project sessions\n└── projects/<id>/\n    ├── context/pack.md            # the brief every agent loads\n    ├── context/decisions.md\n    ├── policy.yaml\n    ├── learnings.md\n    ├── playbooks/\n    ├── decisions/                 # pending/ + approved/ external approvals\n    ├── ingest.json\n    └── runs/<date>-<ticket>/\n        ├── ticket.md  plan.md  verification.md  review.json  outcome.md\n        ├── executions.json\n        ├── audit.jsonl            # hash-chained; records provider\n        └── meta.json\n```\n\nIn each registered **repo**, `aos init` writes per-agent wiring and skills, and\n— for file-reading agents — generated `AGENTS.md` / `GEMINI.md`.\n\nMemory is curated markdown: human-readable, diffable, `git init ~/.aos` if you\nwant history. `SessionStart` injects a tail of decisions and learnings inside a\nhard character budget. `aos find` is a substring search. No embeddings.\n\n## Skills\n\nInstalled into each wired agent's skills directory (`.claude/skills/`,\n`.cursor/skills/`, and the cross-agent `.agents/skills/` that Codex, pi,\nopencode, and Devin all read natively). Instructions to the model — the hooks\nare what hold when the model deviates.\n\n| Skill | Role |\n|---|---|\n| **aos-onboard** | Fill the pack from the code, mine git history, author contracts |\n| **aos-ticket** | Intake → plan → implement → verify → package → learn |\n| **aos-verify** | Contracts + skeptic, writing `review.json` |\n| **aos-approve** | Agent-assisted review of an `awaiting-review` run; you sign off |\n| **aos-learn** | Distil the session into project memory |\n| **aos-ask** | Answer from run history with file:line citations |\n\n## CLI\n\n```\naos init [--hooks-only] [--agent claude|codex|cursor|pi|opencode|devin|gemini|auto|all]\naos status | cost | console | projects | doctor [--capabilities]\naos context [sync|check|diff] | find | fleet | export\naos run start|approve|review|finish|state|link|list|session\naos approve [<id>|--list]\naos verify | policy test | audit verify | ingest\naos remove <id> [--purge] [--force]\n```\n\n`aos fleet` scaffolds `~/.aos/fleet/` — files and a `cd`, not a scheduler. Open\na session there and it starts with every registered project in context.\n\n## Principles\n\n- **Files over platforms** — markdown/YAML/JSONL in your home dir.\n- **Enforced beats remembered** — guardrails live in hooks, not prompts.\n- **Don't self-certify** — contracts run real commands; the review has to resolve.\n- **Say which is which** — a convention documented as a guarantee is worse than none.\n- **Every layer works standalone** — hooks alone are worth installing.\n- **Local-only** — console on loopback; CLI makes zero network calls.\n\n## Documentation\n\n- **[DOCS.md](DOCS.md)** — full manual\n- **[CHANGELOG.md](CHANGELOG.md)** — release history\n- **[CONTRIBUTING.md](CONTRIBUTING.md)** — dev setup and the dist-freshness rule\n- **[SECURITY.md](SECURITY.md)** — how to report a vulnerability\n- **[npm](https://www.npmjs.com/package/@albsugy/aos)** — published package\n\n## Contributing\n\nIssues and PRs welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) (`npm ci && npm test`).\nSecurity reports: [SECURITY.md](SECURITY.md), not a public issue. By\nparticipating you agree to the [Code of Conduct](CODE_OF_CONDUCT.md).\n\nPublished on npm and actively maintained. A smoke suite runs against both the\nsource and the compiled bundle across macOS/Linux and Node 22/24 in CI, plus a\ndist-freshness gate. Under it sits a unit layer (`node --test`, no extra\ndependencies) including a 146-case gate corpus and adapter translations for\nevery supported agent.\n\n## License\n\nMIT © Medhat Albsugy. Bundled dependency licenses:\n[THIRD-PARTY-LICENSES.md](THIRD-PARTY-LICENSES.md).\n","readmeFilename":"README.md"}