{"_id":"@affer/affer","_rev":"18-459f5f837dafef27aa22f03447ec8700","name":"@affer/affer","dist-tags":{"latest":"0.9.0"},"versions":{"0.3.0":{"name":"@affer/affer","version":"0.3.0","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant","claude-code"],"license":"MIT","_id":"@affer/affer@0.3.0","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"25a943be9748d73a58e5152a2164c660df7bc212","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.3.0.tgz","fileCount":18,"integrity":"sha512-GQsbjouFV8pLxn+A66rdGYxBE3ikpRpHsQMG+Qtu9u6Qf/LhbJrEdExfYDd/fFyLggDWn4eewRb+IXqOvBXuPQ==","signatures":[{"sig":"MEUCIGgbiGF91oeTDkAg6Qiodcpx4GBQNra6EcyZ9KL8xqBAAiEAkG0G1lwAS2hTMSYce90mexw2Tcy2bOUqsxJw5oX6LjU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98716},"type":"module","engines":{"bun":">=1.1.0"},"gitHead":"91a75ce3910d669a58119cb3ee43bb4bf967cb89","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — interactive TUI, 13 LLM providers, sessions, checkpoints, context compaction","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"z-ai-web-dev-sdk":"*"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.3.0_1788171794663_0.22199922970488473","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@affer/affer","version":"0.4.0","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.4.0","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"dc3888ee2792f54dc0468f2ecdc726dea1ad5246","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.4.0.tgz","fileCount":18,"integrity":"sha512-hctR1a03Kx8b0BQmSdB1KLhkjLiIcCE0wmrVaIE3+NYdAPW6mJI0eg4mcZ1gzZVaJUrS0PPgMdFFszTBcoaJxg==","signatures":[{"sig":"MEQCIFd33t+MZueJUBqzC9uh2nGDGYTKFp1AE7TQTIjvbKJ7AiBuKBs7gP+NZY4SbKJ/FD2G7P8CDGzN1YY0mRnHGheacg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100611},"type":"module","gitHead":"31a78056ae1f6fe94ccc998b0be652833311caf7","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — interactive TUI, 13 LLM providers, sessions, checkpoints, context compaction. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@affer/affer-linux-x64":"0.4.0","@affer/affer-darwin-x64":"0.4.0","@affer/affer-linux-arm64":"0.4.0","@affer/affer-windows-x64":"0.4.0","@affer/affer-darwin-arm64":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.4.0_1788172560967_0.5295418456544456","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@affer/affer","version":"0.4.1","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.4.1","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"21c30e5fff829afc3015e949130240ec2d0808dc","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.4.1.tgz","fileCount":18,"integrity":"sha512-6gXBbmEWvT982MDpf9tKnUggOomDqP9bWBMpC7SHKPNMJGY9dEPJb13Z6xjRMOOeuE1AvwErV5VWZiUgonihBw==","signatures":[{"sig":"MEUCIQCv9EGx20YaOUxsoCkmSrBb2gMkBrK+7RNZ4eW2lN0t7wIgKDbHv5WvdZGgbhHhKSCDhdvo8EWfQjlrrxKrX1Gw1Ws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102146},"type":"module","gitHead":"2268abb8d7c203450e624183e8d03ae474cbcc8c","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — interactive TUI, 13 LLM providers, sessions, checkpoints, context compaction. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@affer/affer-linux-x64":"0.4.0","@affer/affer-darwin-x64":"0.4.0","@affer/affer-linux-arm64":"0.4.0","@affer/affer-windows-x64":"0.4.0","@affer/affer-darwin-arm64":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.4.1_1788173588444_0.07148045538698877","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@affer/affer","version":"0.5.0","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.5.0","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"afbb5a4999d5e1336d6ba1553bea94625163ec22","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.5.0.tgz","fileCount":19,"integrity":"sha512-K7c0NnyigWJkvUYwB7/BX+swe0yxfE0574uOui2vTfqVA15wHjvVk0cnlpIAZaJf/yPw7RsdZzgirKkrtH6xmA==","signatures":[{"sig":"MEUCIQC8tPhKyQHaiRvb00E+SHK6hdFoyi6Y6klL1OjIDW+OzAIgMINT5u8Q/8ysviGTvna0i9jFTQhIT4u4Cp5ey7xrEoc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118864},"type":"module","gitHead":"52066808ace3d6a36941ad6f0f11515bcbef2ae3","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — interactive TUI, 13 LLM providers, sessions, checkpoints, context compaction. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@affer/affer-linux-x64":"0.4.0","@affer/affer-darwin-x64":"0.4.0","@affer/affer-linux-arm64":"0.4.0","@affer/affer-windows-x64":"0.4.0","@affer/affer-darwin-arm64":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.5.0_1788174510329_0.9206729126403381","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@affer/affer","version":"0.5.1","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.5.1","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"776ece48e4b7258a4079e8eac8f3f4fc256534ac","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.5.1.tgz","fileCount":19,"integrity":"sha512-xmGpcJzSi33F5pE433VNCltS4YB7QWMwwqY85C3uVNwajIBSW/qH/amwLHuikaP5TCxBH1Ptl/yroXIkUuSsWg==","signatures":[{"sig":"MEYCIQCTbW8SyE2agQD7UMSQoJhkqEkRmeZufRZzN3Qpg924UgIhAMiRgRFtRjJFNLlTJhr1h0GuCRhoAfZ7YkyvEfZEbnPn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119285},"type":"module","gitHead":"52066808ace3d6a36941ad6f0f11515bcbef2ae3","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — interactive TUI, 13 LLM providers, sessions, checkpoints, context compaction. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@affer/affer-linux-x64":"0.4.0","@affer/affer-darwin-x64":"0.4.0","@affer/affer-linux-arm64":"0.4.0","@affer/affer-windows-x64":"0.4.0","@affer/affer-darwin-arm64":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.5.1_1788174529245_0.5015994537965363","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@affer/affer","version":"0.5.2","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.5.2","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"930b658a707c5906ea30ce1de5cebbda7241bd40","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.5.2.tgz","fileCount":19,"integrity":"sha512-RrJfPaLBl+LRYsr8vXOQgSEzS1lEZUnzfcQYCQLIJw/2qfxSiMxo1RMM+MhxgqAU65xKl49SwMdHzTkpecc1rQ==","signatures":[{"sig":"MEUCIQCSa7LckavUDpQQqZjVcVQHAGsCK2YjnFweydKMVqUdSwIgdsUini5N0CZ9iKjPv+SUt4tqA9CaixqJDQreTlSkeNs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119544},"type":"module","gitHead":"52066808ace3d6a36941ad6f0f11515bcbef2ae3","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — interactive TUI, 13 LLM providers, sessions, checkpoints, context compaction. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@affer/affer-linux-x64":"0.4.0","@affer/affer-darwin-x64":"0.4.0","@affer/affer-linux-arm64":"0.4.0","@affer/affer-windows-x64":"0.4.0","@affer/affer-darwin-arm64":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.5.2_1788174723814_0.7042338461779096","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@affer/affer","version":"0.5.3","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.5.3","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"d4e0b088b8e7833ab9853f99487ba7922f2e8f7a","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.5.3.tgz","fileCount":19,"integrity":"sha512-al0lJZGy3JSLff/2oCS7h+sWXtwsP92BzlhKlOWa29ojgS/MgNZlfuUFrirqnUtNMAT/2zY4FvCj73Q+u7LlSw==","signatures":[{"sig":"MEYCIQCKKRlvvxHAhwWgcyjd27Z2JyE6/XR9YuYZBvnk3zlg4gIhAN21hpZoLogXP5D2u7T2QTj0QPTZP/B7bdByJazCUmow","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119544},"type":"module","gitHead":"52066808ace3d6a36941ad6f0f11515bcbef2ae3","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — interactive TUI, 13 LLM providers, sessions, checkpoints, context compaction. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@affer/affer-linux-x64":"0.5.3","@affer/affer-darwin-x64":"0.5.3","@affer/affer-linux-arm64":"0.5.3","@affer/affer-windows-x64":"0.5.3","@affer/affer-darwin-arm64":"0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.5.3_1788174937923_0.6402394006937258","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@affer/affer","version":"0.5.4","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.5.4","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"62b23c1c6bcde80e1d9400487653a0c923e23b9d","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.5.4.tgz","fileCount":19,"integrity":"sha512-5XlC039bWnRovev5v/QUqfFDeJqzHcHyvUoEY6+RPGpZKjfGNsN9y2xVi/uC0NPRcq2jRcj7zz+zKjBc0qMdFQ==","signatures":[{"sig":"MEUCIFnAi/HX1bHSYA5Ui4uCBoVYD1yLNhCE6ULjC3DbfzwpAiEA0NdBU4sR2Ff+/qT6yjwt9zGIsXXuh0MqAUBwVLMicGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121180},"type":"module","gitHead":"e40bb6922ad94f48048b67e2236dfec0f7b50a4b","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — interactive TUI, 13 LLM providers, sessions, checkpoints, context compaction. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@affer/affer-linux-x64":"0.5.4","@affer/affer-darwin-x64":"0.5.4","@affer/affer-linux-arm64":"0.5.4","@affer/affer-windows-x64":"0.5.4","@affer/affer-darwin-arm64":"0.5.4"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.5.4_1788176673901_0.6654002495141571","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@affer/affer","version":"0.5.5","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.5.5","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"12cd2baecbd873a07a5dd6511384e611106c5053","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.5.5.tgz","fileCount":19,"integrity":"sha512-7X4ELaeBeS2Nv4Oyw9IFCQf+7rZZzOxNtWiDuNAmXw0W29yE3lC47AInMnqxqFeAQrrKwlYKK+xqbre8ASZq0Q==","signatures":[{"sig":"MEYCIQCTEa3h362SKutDCRMh+MssqEVToO8PwwoO/N6txxq46wIhANrt32IFWPbKAt+Z7HjD7ZG/qoJpnXgAcFocsZRFP3Pv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122545},"type":"module","gitHead":"5244ad2dd2cb44c2365fd218c6a90e2b11d5a513","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — interactive TUI, 13 LLM providers, sessions, checkpoints, context compaction. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@affer/affer-linux-x64":"0.5.5","@affer/affer-darwin-x64":"0.5.5","@affer/affer-linux-arm64":"0.5.5","@affer/affer-windows-x64":"0.5.5","@affer/affer-darwin-arm64":"0.5.5"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.5.5_1788178368758_0.40988981821065673","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@affer/affer","version":"0.5.6","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.5.6","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"13eb754095dab2c30710ebbb889b4625039bddc4","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.5.6.tgz","fileCount":19,"integrity":"sha512-QHDb3kZtpOc78RnKboSYNJPHB6BBXAXmgKSpma+epO7I+IED3/b1/FvyLAfPdUku+m1LeXE3TMLxH2CWowgNbQ==","signatures":[{"sig":"MEUCIGhNMcyJTnisX7irLoTPhR9rP9/j+C61H7QYNkXX6aBUAiEA6B3d+1eTR5WfxDTFhGHvvKKrDM8CsKY89MPjvI9Xc34=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128353},"type":"module","gitHead":"652b53927e9fb107e4a6377651468189a4feb5dd","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — interactive TUI, 13 LLM providers, sessions, checkpoints, context compaction. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@affer/affer-linux-x64":"0.5.6","@affer/affer-darwin-x64":"0.5.6","@affer/affer-linux-arm64":"0.5.6","@affer/affer-windows-x64":"0.5.6","@affer/affer-darwin-arm64":"0.5.6"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.5.6_1788180761892_0.08186671208752516","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"@affer/affer","version":"0.5.7","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.5.7","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"b25940a4a2cb3edbfc579fc63de53ebff741a981","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.5.7.tgz","fileCount":19,"integrity":"sha512-vvWRNrM/H9Ld4ZKBVyfKOjsepqpmbXLkWB3ljh1QMZG5ShR2ztESuAugK3a4L6SNTgC1kvyLDGmo8mMVk9USGQ==","signatures":[{"sig":"MEUCIQDqr6pKLNSqlV4o2TmpDno2Jw7C5AUuqT2FpTb/eD9X7QIgH/Nnfj+sakpR2GRXTJd1HD9rRoyQblq9jpyOF0yy+2I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132451},"type":"module","gitHead":"c9f3b019946c08fc1df3202f10f32377429bcb58","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — interactive TUI, 13 LLM providers, sessions, checkpoints, context compaction. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@affer/affer-linux-x64":"0.5.6","@affer/affer-darwin-x64":"0.5.6","@affer/affer-linux-arm64":"0.5.6","@affer/affer-windows-x64":"0.5.6","@affer/affer-darwin-arm64":"0.5.6"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.5.7_1788258796920_0.9452259200036204","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@affer/affer","version":"0.7.0","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.7.0","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"64b6c6d554edea28a8b4df3f8ace2bd2fcab32b9","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.7.0.tgz","fileCount":23,"integrity":"sha512-bCSxGf2ntVNhfcBtv8pXtfUTyCa2HJC0kSyRyHWQXvf/XfAovzGIxiXBTGZTy3VNf9jSp9hJCtBSA7e94thH2A==","signatures":[{"sig":"MEUCIQCU+N6H0WbU/pT+jDNT/QFd+p8g2zjG5MwJ8AZkzW8m4QIgJuKuiewkwXOkVC1xc66C9fH9ZAMgIjpKU859NXFUwT8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228152},"type":"module","_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent — opencode-grade themed TUI (rails, markdown, tool cards, Knight-Rider spinner, 6 themes), 13 LLM providers, sessions, checkpoints, LLM compaction, V4A apply_patch, todo planning. Prebuilt native binaries, no runtime ","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@affer/affer-linux-x64":"0.7.0","@affer/affer-darwin-x64":"0.7.0","@affer/affer-linux-arm64":"0.7.0","@affer/affer-windows-x64":"0.7.0","@affer/affer-darwin-arm64":"0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.7.0_1788340834661_0.049014345834671014","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@affer/affer","version":"0.8.0","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.8.0","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"4adf7acea8e272d20f8df2eca2b4344ec5dec421","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.8.0.tgz","fileCount":25,"integrity":"sha512-TUaId9W/TmYslZtegp0cErnUZSH3rmAra3hrrXORH0cgI8Qv7qhry4eVmslwjhmZNz5T3Dr8dtUccdM3FHNSSA==","signatures":[{"sig":"MEUCIFMq7pwNrEAx2Ya8XdZwnbky410orJPdY2IqCpyjImIbAiEA3F019XBbC+xaiV5f1lJmK3nUiizjckskPJLUkoKTGZk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280571},"main":"sdk.ts","type":"module","engines":{"node":">=18"},"scripts":{"dev":"bun index.ts","test":"node --test \"test/*.test.ts\"","build":"bun build --compile index.ts --outfile affer","check":"npm run typecheck && npm test","release":"bash release.sh","typecheck":"tsc --noEmit"},"_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent: professional TUI, 13 LLM providers, sessions, checkpoints, LLM compaction, V4A apply_patch, todo planning. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"24.13.3"},"optionalDependencies":{"@affer/affer-linux-x64":"0.8.0","@affer/affer-darwin-x64":"0.8.0","@affer/affer-linux-arm64":"0.8.0","@affer/affer-windows-x64":"0.8.0","@affer/affer-darwin-arm64":"0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.8.0_1788353325395_0.475615092869653","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@affer/affer","version":"0.8.1","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.8.1","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"a08d0544fcb35559e026c1c6d99e990ca0f9e880","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.8.1.tgz","fileCount":46,"integrity":"sha512-hKR1Nd4jXBTXgOHlESCF86b5r0nmHILGGfETrw7w5Lr77iHn9WAY2XEkz1RSGxOLVE/ELYGuU/NwiZS4Csc01A==","signatures":[{"sig":"MEUCIQCj8+8MrtBrLtqkSSmdSCIhqWc1VYGF06NN8KTd9mjNZQIgZRa7TJ4WJqbUVh3MhJaMza4qLaQ5U+tetB6v8hBe/ps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":326315},"main":"dist/sdk.js","type":"module","types":"dist/sdk.d.ts","engines":{"node":">=18"},"scripts":{"dev":"bun index.ts","test":"node --test \"test/*.test.ts\"","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test","compile":"bun build --compile index.ts --outfile affer","release":"bash release.sh","typecheck":"tsc --noEmit"},"_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.17.0","description":"Zero-dependency terminal coding agent: professional TUI, 13 LLM providers, sessions, checkpoints, LLM compaction, V4A apply_patch, todo planning. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"24.13.3"},"optionalDependencies":{"@affer/affer-linux-x64":"0.8.1","@affer/affer-darwin-x64":"0.8.1","@affer/affer-linux-arm64":"0.8.1","@affer/affer-windows-x64":"0.8.1","@affer/affer-darwin-arm64":"0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.8.1_1788354659936_0.5017851925856323","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@affer/affer","version":"0.8.2","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.8.2","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"ca4a1ce430b7dc3922100bbf06cc230921c81ecd","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.8.2.tgz","fileCount":25,"integrity":"sha512-URFEHtClM+bkX8tInceRlNXMd8McQEkLtGxgmLHCRycLxMgVmLJz7gZzh1HuoMaHBOoPnTb6hmpcpHu2GshyoA==","signatures":[{"sig":"MEQCIG7g3T6jtVfy1NGsQahY4vdFzKvQ64mjkA+teNHvJVPeAiBkkXqmrLbFODeJwlwaAHzZb67MAXkzMInRBCUAfLOPUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":291377},"main":"dist/sdk.js","type":"module","engines":{"node":">=18"},"scripts":{"dev":"bun index.ts","test":"node --test \"test/*.test.ts\"","build":"node build.js","check":"npm run typecheck && npm test","release":"bash release.sh","typecheck":"tsc --noEmit","prepublishOnly":"node build.js"},"_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.16.0","description":"Zero-dependency terminal coding agent: professional TUI, 13 LLM providers, sessions, checkpoints, LLM compaction, V4A apply_patch, todo planning. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"24.13.3"},"optionalDependencies":{"@affer/affer-linux-x64":"0.8.2","@affer/affer-darwin-x64":"0.8.2","@affer/affer-linux-arm64":"0.8.2","@affer/affer-windows-x64":"0.8.2","@affer/affer-darwin-arm64":"0.8.2"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.8.2_1788421682010_0.7769474603723441","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@affer/affer","version":"0.8.3","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.8.3","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"c1f8e0c0e904ec8115bcf912e580eb7d96c6c710","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.8.3.tgz","fileCount":25,"integrity":"sha512-ToLO9PW2m1CWHLqGPNGPjOp77Jl401AhLhYajDxeGmDzU5FTIhXtwcvuT4IMRlOl02mJgD+J4IH2JlO6DlildA==","signatures":[{"sig":"MEQCIC4+qI22WX5Ehq676WaFQ/1kbe6DMJAwA6a8S52S2GY8AiAUkddGBH5MNFN0WmR9nhW5O4CoW+OxhnAM4VFa9SX1SQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":292601},"main":"dist/sdk.js","type":"module","engines":{"node":">=18"},"scripts":{"dev":"bun index.ts","test":"node --test \"test/*.test.ts\"","build":"node build.js","check":"npm run typecheck && npm test","release":"bash release.sh","typecheck":"tsc --noEmit","prepublishOnly":"node build.js"},"_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.16.0","description":"Zero-dependency terminal coding agent: professional TUI, 13 LLM providers, sessions, checkpoints, LLM compaction, V4A apply_patch, todo planning. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"24.13.3"},"optionalDependencies":{"@affer/affer-linux-x64":"0.8.3","@affer/affer-darwin-x64":"0.8.3","@affer/affer-linux-arm64":"0.8.3","@affer/affer-windows-x64":"0.8.3","@affer/affer-darwin-arm64":"0.8.3"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.8.3_1788425556678_0.9044851019438003","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"@affer/affer","version":"0.8.4","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"license":"MIT","_id":"@affer/affer@0.8.4","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"bin":{"affer":"bin/affer.js"},"dist":{"shasum":"3422b10364d91668ac16dccd7f142789c6b388c4","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.8.4.tgz","fileCount":25,"integrity":"sha512-ZMNgBoVuAkU/k9lx9OVyGG5Gki+D8lSCZpyOu2Kh3lzuyBEOqnR3mYVpfMjO5CZFTsr8xnI5JMG8L9RR4wzg7A==","signatures":[{"sig":"MEUCIQDPd5maLlNzxlqhbLwYUT99jFB7mZpfxmzCfPaieUmLJwIgZKO3CNrJnZjCDl+I6TctXtvS7jy+yrspo1ZNO/39reE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":295204},"main":"dist/sdk.js","type":"module","engines":{"node":">=18"},"scripts":{"dev":"bun index.ts","test":"node --test \"test/*.test.ts\"","build":"node build.js","check":"npm run typecheck && npm test","release":"bash release.sh","typecheck":"tsc --noEmit","prepublishOnly":"node build.js"},"_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"_npmVersion":"11.16.0","description":"Zero-dependency terminal coding agent: professional TUI, 13 LLM providers, sessions, checkpoints, LLM compaction, V4A apply_patch, todo planning. Prebuilt native binaries, no runtime required.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"24.13.3"},"optionalDependencies":{"@affer/affer-linux-x64":"0.8.4","@affer/affer-darwin-x64":"0.8.4","@affer/affer-linux-arm64":"0.8.4","@affer/affer-windows-x64":"0.8.4","@affer/affer-darwin-arm64":"0.8.4"},"_npmOperationalInternal":{"tmp":"tmp/affer_0.8.4_1788431538730_0.2761829647763925","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@affer/affer","version":"0.9.0","description":"Zero-dependency terminal coding agent: professional TUI, 13 LLM providers, sessions, checkpoints, LLM compaction, V4A apply_patch, todo planning. Prebuilt native binaries, no runtime required.","type":"module","license":"MIT","publishConfig":{"access":"public"},"bin":{"affer":"bin/affer.js"},"main":"dist/sdk.js","engines":{"node":">=18"},"scripts":{"typecheck":"tsc --noEmit","test":"node --test \"test/*.test.ts\"","check":"npm run typecheck && npm test","build":"node build.js","prepublishOnly":"node build.js","dev":"bun index.ts","release":"bash release.sh"},"keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"devDependencies":{"@types/node":"24.13.3","typescript":"5.9.3"},"optionalDependencies":{"@affer/affer-linux-x64":"0.9.0","@affer/affer-linux-arm64":"0.9.0","@affer/affer-darwin-x64":"0.9.0","@affer/affer-darwin-arm64":"0.9.0","@affer/affer-windows-x64":"0.9.0"},"_id":"@affer/affer@0.9.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-b+ChP3qTmS4JkEKV7fKFrJr/A48eAoM+YsAmTetQoVKAhDGuZ3ueTd4g7cu1QAOL2OlOsrZVjI7ZX6ynmCY65g==","shasum":"ecbc7f3148dc5407f758fba4b426cb8eeaf951f0","tarball":"https://registry.npmjs.org/@affer/affer/-/affer-0.9.0.tgz","fileCount":25,"unpackedSize":296397,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDBm+J+LS4Ghk/z/yAVszi2qm6E9PhVP5TCRO82itDo/AIhAIUe8XjWcvsdcZGrnf1B+rNr49nLBlm9NXEk7fZ/dK3u"}]},"_npmUser":{"name":"affer","email":"cliptopie342@gmail.com"},"directories":{},"maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/affer_0.9.0_1788593570366_0.9209303919689245"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-31T10:23:14.434Z","modified":"2026-09-05T07:32:50.634Z","0.3.0":"2026-08-31T10:23:14.815Z","0.4.0":"2026-08-31T10:36:01.109Z","0.4.1":"2026-08-31T10:53:08.579Z","0.5.0":"2026-08-31T11:08:30.503Z","0.5.1":"2026-08-31T11:08:49.370Z","0.5.2":"2026-08-31T11:12:03.972Z","0.5.3":"2026-08-31T11:15:38.053Z","0.5.4":"2026-08-31T11:44:34.035Z","0.5.5":"2026-08-31T12:12:48.896Z","0.5.6":"2026-08-31T12:52:42.006Z","0.5.7":"2026-09-01T10:33:17.072Z","0.7.0":"2026-09-02T09:20:34.784Z","0.8.0":"2026-09-02T12:48:45.543Z","0.8.1":"2026-09-02T13:11:00.084Z","0.8.2":"2026-09-03T07:48:02.202Z","0.8.3":"2026-09-03T08:52:36.895Z","0.8.4":"2026-09-03T10:32:18.886Z","0.9.0":"2026-09-05T07:32:50.484Z"},"license":"MIT","keywords":["cli","agent","coding-agent","terminal","tui","llm","ai","bun","assistant"],"description":"Zero-dependency terminal coding agent: professional TUI, 13 LLM providers, sessions, checkpoints, LLM compaction, V4A apply_patch, todo planning. Prebuilt native binaries, no runtime required.","maintainers":[{"name":"affer","email":"cliptopie342@gmail.com"}],"readme":"# Affer\n\n**Zero-dependency terminal coding agent** — professional TUI, 13 LLM providers, sessions, checkpoints, LLM context compaction, Codex-style `apply_patch`, todo planning, and an SDK. Built from scratch after studying 30+ open-source agent harnesses (OpenCode, Codex CLI, Gemini CLI, Claude Code patterns, Aider, Crush, Goose, Pi, grok-cli…).\n\n```\n                 ███  ████ ████ ████ ████\n                █   █ █    █    █    █   █\n                █████ ███  ███  ███  ████\n                █   █ █    █    █    █   █\n                █   █ █    █    ████ █   █\n\n                    ask · xai/grok-4.6\n          / commands  ·  shift+tab posture  ·  ctrl+c stop\n\n                      affer v0.9.0  ·  affer\n```\n\n## Install\n\n```bash\nnpm install -g @affer/affer\n```\n\nThat's it — npm pulls the **pre-compiled native binary** for your platform\n(linux/macOS/Windows, x64 & arm64). **No Bun, no Node toolchains, nothing else\nto install.** The command is `affer`.\n\n**First run opens a setup wizard**: pick a provider, paste your API key once —\nit's verified live, saved to `~/.affer2/config.json` (chmod 600), and affer\nhandles everything after that. Switch anytime with `/connect` inside the app.\n\n<details>\n<summary>Building from source (contributors)</summary>\n\nAffer is a single Bun/TypeScript program. To run from source or build your own binary:\n\n```bash\ngit clone <repo> && cd affer\nbun index.ts --help                                  # run from source\nbun build --compile index.ts --outfile affer          # self-contained binary\n```\n\n</details>\n\n## Configure\n\nAffer defaults to the `zai` provider. Set one API key:\n\n```bash\nexport ZAI_API_KEY=...\n```\n\n…or use any of the 13 supported providers:\n\n| Provider | Env key |\n|---|---|\n| zai (default) | `ZAI_API_KEY` |\n| anthropic | `ANTHROPIC_API_KEY` |\n| openai | `OPENAI_API_KEY` |\n| google | `GOOGLE_API_KEY` |\n| groq | `GROQ_API_KEY` |\n| mistral | `MISTRAL_API_KEY` |\n| deepseek | `DEEPSEEK_API_KEY` |\n| xai | `XAI_API_KEY` |\n| together | `TOGETHER_API_KEY` |\n| openrouter | `OPENROUTER_API_KEY` |\n| opencode zen | `OPENCODE_API_KEY` (60+ models incl. free tiers) |\n| ollama / lmstudio | (local, no key) |\n\nAlso supported: `AFFER_PROVIDER`, `AFFER_MODEL`, `AFFER_API_KEY` (fallback for any provider).\nFor zai gateways: `ZAI_BASE_URL` (default `https://api.z.ai/api/paas/v4`), plus optional `ZAI_CHAT_ID` / `ZAI_TOKEN` / `ZAI_USER_ID`.\n\n## Usage\n\n```bash\naffer                      # interactive TUI (default on a terminal)\naffer --plain              # legacy readline REPL\naffer -p \"fix the tests\"   # one-shot task\naffer -p \"...\" --yolo      # one-shot, no approval prompts\naffer -c                   # continue the latest session\naffer -r <session-id>      # resume a specific session\n```\n\n### Inside the TUI\n\n| Key | Action |\n|---|---|\n| `tab` | complete `/commands` and arguments |\n| `shift+tab` | cycle posture `plan → ask → auto → full` |\n| `ctrl+c` | interrupt the agent (busy) / clear input / exit (idle ×2) |\n| `ctrl+j` / `alt+enter` | newline — multi-line prompts |\n| `ctrl+g` | open the prompt in `$EDITOR` |\n| `ctrl+a` / `ctrl+e` | start / end of line |\n| `ctrl+w` / `ctrl+u` / `ctrl+k` | delete word / line / to end of line |\n| `ctrl+l` | clear the screen |\n| `↑` / `↓` | input history (inside a multi-line buffer: move lines) |\n| `esc` | clear input / drop queued messages |\n| `y` / `n` / `a` | answer permission prompts |\n| `alt+b` / `alt+f` / `ctrl+←` / `ctrl+→` | word-wise cursor motion |\n\n**Queue while busy**: keep typing while the agent works — press enter to queue\nyour message; it sends automatically when the current task finishes. Type `/` —\nfiltered command palette; `/model`, `/provider`, `/posture`, `/theme` open\nargument pickers with ↑↓ + enter (exact `/help` + enter runs immediately).\n\n### Slash commands\n\n`/help` `/connect` `/model` `/provider` `/posture` `/plan` `/yolo` `/goal` `/theme`\n`/memory` `/todos` `/diff` `/undo` `/restore` `/checkpoints` `/compact` `/clear`\n`/init` `/sessions` `/cost` `/version` `/exit`\n\n## Features\n\n- **Interactive TUI** — compact boxed header, bordered prompt, **command palette** (type `/` — filtered list with descriptions, ↑↓ + tab/enter), tool cards (`●`/`└` plus a dim summary line), live reasoning tail and a braille spinner with elapsed time. Light-terminal safe: no background fills, only foreground accents. Zero dependencies.\n- **6 themes** — `/theme affer | light | ember | gruvbox | dracula | mono` (saved globally, `light` auto-selected on light terminals). Pure-ASCII mode with `AFFER_ASCII=1`.\n- **Zero-config onboarding** — first launch walks you through provider + API key, verifies the key live, saves it, done. `/connect` re-runs it anytime. `NO_COLOR=1` and `FORCE_COLOR` are respected.\n- **13 providers** — OpenAI-compatible SSE adapters (streaming + tool-call fragment reassembly by index, abort-aware retries with `Retry-After`, `reasoning`/`reasoning_content` for DeepSeek/OpenRouter), Anthropic native with **prompt caching**, tool-result merging and `stop_reason` mapping, `zai` via its OpenAI-compatible endpoint, live `/v1/models` with a static fallback, o-series/GPT-5 `max_completion_tokens`.\n- **4 postures** — `plan` (read-only — `todo_write` is still allowed, it is the plan), `ask` (approve writes/commands), `auto`, `full` (hard blocklist still applies). Protected paths (`.git`, `.affer2`) can never be written.\n- **Sessions & resume** — every session persisted atomically as JSON with auto-titles; `-c` resumes the latest session **for the current directory** and warns when continuing elsewhere.\n- **Checkpoints** — file snapshots per turn under `~/.affer2/sessions/checkpoints/<id>`; `/undo` consumes its checkpoint, `/checkpoints` lists restorable turns, `/restore <turn>` replays a point in time. `apply_patch` targets are backed up too.\n- **LLM context compaction** — auto + manual (`/compact`): the older conversation is summarized into a structured handoff note (Objective / Key Knowledge / Work State / Next Step / Relevant Files); inflating summaries are rejected; stub fallback when the summarizer fails. Split is group-safe so `tool_calls` are never orphaned.\n- **Todo planning** — Codex-style `todo_write` (full-list rewrite, one `in_progress`), rendered as a plan card in the TUI, inspectable via `/todos`.\n- **Git auto-commit** — opt-in with `AFFER_GIT=1`: stages **only the touched files** and commits (`affer: <task>`). Checkpoints cover undo in all cases.\n- **Subagents** — read-only explore tasks with depth limits; children receive only read-only tools and share the parent's abort signal.\n- **Toolset** — shell (process-group kill, `head+tail` for long output, Windows `taskkill` fallback), read/write/edit files (aider-grade match ladder: exact → uniform-indent → whitespace-normalized → `...` elision → closest-lines hint, plus a fix for the `void end` infinite loop), **Codex V4A `apply_patch`** (multi-file, context-anchored, 5-pass fuzzy seek, unified-diff fallback, blank-line handling), glob (`**` crosses directories, `{a,b}` alternations), grep (`ignore_case`, binary skip), todo, subagent — with a hard-coded dangerous-command blocklist that no posture can bypass. Paths are resolved through a single `paths.ts` helper so Windows absolute paths work and the classic prefix bug (`/proj2` passing for `/proj`) is gone.\n- **Unattended-safe** — approvals deny instead of hanging when stdin isn't a TTY; truncated tool calls are poisoned instead of executed; `run_command` and provider retries honour `AbortSignal`.\n\n## SDK\n\nUse Affer programmatically — zero deps, same harness the CLI uses:\n\n```ts\nimport { createAgent, listProviders } from \"./sdk.ts\";\n\nconst agent = createAgent({\n  provider: \"openai\",\n  model: \"gpt-4o\",\n  events: {\n    onText: (t) => process.stdout.write(t),\n    onToolStart: (name) => console.log(`→ ${name}`),\n  },\n});\n\nawait agent.run(\"fix the failing tests in ./src\");\n```\n\nRe-exports for embedding:\n\n```ts\nimport { Agent, SessionStore, listSessions, CheckpointStore } from \"./sdk.ts\";\nimport { repoMap, scanSymbols, buildSystemPrompt } from \"./sdk.ts\";\nimport { TOOL_DEFS, executeTool, executeToolAsync, SPAWN_AGENT_DEF } from \"./sdk.ts\";\nimport { checkPolicy, HARD_BLOCKLIST, diffForEdit, classifyCommand } from \"./sdk.ts\";\nimport { compactMessages, estTokens, verifyKey, VERSION } from \"./sdk.ts\";\nimport { Tui, THEMES, setTheme, parseKeys, headerLines } from \"./sdk.ts\";\nimport { G, SPINNER, ASCII } from \"./sdk.ts\";\nimport type { Config, ToolDef, Message, AgentEvents } from \"./sdk.ts\";\n```\n\n- `createAgent(opts)` — resolves config (env < file < flags), creates session + checkpoints, returns `Agent`\n- `agent.compact()` — LLM context compaction with stub fallback\n- `listProviders()` / `listModels(provider)` / `verifyKey(provider, key)` — provider registry + live key check\n- `listSessions(dir?)` — recent sessions, newest first\n- `repoMap(cwd)` / `buildRepoMap(cwd)` / `scanSymbols(file, src)` — ctags-like repo overview for prompts\n- `Agent`, `SessionStore`, `CheckpointStore`, `TOOL_DEFS`, `checkPolicy` — low-level harness primitives\n- `Tui` / `THEMES` / `setTheme` — the whole TUI is embeddable\n\n## License\n\nMIT\n","readmeFilename":"README.md"}