{"_id":"@amykit/model-specs","_rev":"4-b52975fb3be403f69e450b321f8b03fe","name":"@amykit/model-specs","dist-tags":{"latest":"0.4.0"},"versions":{"0.2.0":{"name":"@amykit/model-specs","version":"0.2.0","author":{"name":"Nicolas Melo"},"license":"MIT","_id":"@amykit/model-specs@0.2.0","maintainers":[{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"}],"homepage":"https://github.com/nicolasmelo1/amy#readme","bugs":{"url":"https://github.com/nicolasmelo1/amy/issues"},"dist":{"shasum":"d7676679c8fe3bb2a9e91da4242fa4f42dd062fa","tarball":"https://registry.npmjs.org/@amykit/model-specs/-/model-specs-0.2.0.tgz","fileCount":15,"integrity":"sha512-tRK4xR/Y6SzO45IAs5R9QaE8TzsejXnl1dzL2mQrRJyAaWKWPwlKzRXEW63f9m0xiH4RbpfzKjDcnL3hUoItmA==","signatures":[{"sig":"MEQCIDwu+FiMKi3tXJzLpbND5mrr2BBFBPwYpQ/oQ+KrPTt2AiBhZsJLm/JuFrd9KInr4PdPo61jXkmVntodUHTNuNdC5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amykit%2fmodel-specs@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24731},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b7903f5c95e8154f5db6fd4df6ca2633a628812d","_npmUser":{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"},"repository":{"url":"git+https://github.com/nicolasmelo1/amy.git","type":"git","directory":"packages/model-specs"},"_npmVersion":"11.19.0","description":"What each model costs per token, vendored and versioned.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@amykit/core":"^0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/model-specs_0.2.0_1788658146585_0.8371194520708263","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@amykit/model-specs","version":"0.3.0","author":{"name":"Nicolas Melo"},"license":"MIT","_id":"@amykit/model-specs@0.3.0","maintainers":[{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"}],"homepage":"https://github.com/nicolasmelo1/amy#readme","bugs":{"url":"https://github.com/nicolasmelo1/amy/issues"},"dist":{"shasum":"5c9c4373a0e27d55d0111a446b3f70f14bd84f0f","tarball":"https://registry.npmjs.org/@amykit/model-specs/-/model-specs-0.3.0.tgz","fileCount":15,"integrity":"sha512-GwG+WRxGgwfmysH9Non73vp0xWWutE0dBtvmoJMM407/mEbpijz2Io1udXO6XV+QVpt+6G9bQxVZkUXsc2J+5g==","signatures":[{"sig":"MEYCIQDBETpnBUOPhbVSYklhUGC+A+wZjYAEF1LXzghQRUlcSAIhAOnAcJ/PuQked/6+gPRDbbTP0iKvKw91aafLw691djQF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amykit%2fmodel-specs@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29860},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a9e241e87a00d8267ad9e992c4ab8fd97bd04480","_npmUser":{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"},"repository":{"url":"git+https://github.com/nicolasmelo1/amy.git","type":"git","directory":"packages/model-specs"},"_npmVersion":"11.19.0","description":"What each model costs per token, vendored and versioned.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@amykit/core":"^0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/model-specs_0.3.0_1788922128413_0.6224578291745031","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@amykit/model-specs","version":"0.3.1","author":{"name":"Nicolas Melo"},"license":"MIT","_id":"@amykit/model-specs@0.3.1","maintainers":[{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"}],"homepage":"https://github.com/nicolasmelo1/amy#readme","bugs":{"url":"https://github.com/nicolasmelo1/amy/issues"},"dist":{"shasum":"9f1085be1b1a2e745a5858c3c4c6ef410a29099a","tarball":"https://registry.npmjs.org/@amykit/model-specs/-/model-specs-0.3.1.tgz","fileCount":15,"integrity":"sha512-edsvizVsjny/vuYumfhzBwmMiwPSlntgXaxoPmOAGZvn0v1KyxJBwu1EvNt5mutWFIeWJaAtlwZUTF0O1egVoA==","signatures":[{"sig":"MEUCIQCppfWmHlCAIziedphqmwSZRvF2Gah7hum7+HnPGqFSGgIgAUQuI9xb2bJKNYpjcAA1G7NKljBlPtyMP1YnW14uOVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amykit%2fmodel-specs@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29860},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"6a4c559ad368c51e232a33c4c2221f02709ceb2f","_npmUser":{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"},"repository":{"url":"git+https://github.com/nicolasmelo1/amy.git","type":"git","directory":"packages/model-specs"},"_npmVersion":"11.19.0","description":"What each model costs per token, vendored and versioned.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@amykit/core":"^0.3.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/model-specs_0.3.1_1788973010917_0.09511671346649186","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@amykit/model-specs@0.4.0","bugs":{"url":"https://github.com/nicolasmelo1/amy/issues"},"dist":{"shasum":"8754126dfc2e1dd5067b165d1668d85f41c420dd","tarball":"https://registry.npmjs.org/@amykit/model-specs/-/model-specs-0.4.0.tgz","fileCount":15,"integrity":"sha512-4JL0KG6AmzVkobGUcNkky9uPRPQ8GMhNzhqQ/TbpWb4t6E/X9HN7Ul45P7uSSHf23Ir3rmyISpYzFNfQ7DszDw==","signatures":[{"sig":"MEQCIDouXf50dfQXPH0vSabxOVkvIF4V7dguBAeQU6SlCYWOAiARNzdIqWgwi/LVsyF9EuJzRYGJ/bFu0mNaXn2faW1olw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDaM8GWYihK5I8r63YVcY/kNAwe3CTxTDlqHhMw6yniBwIhAL/4MXEj9tkaJ3C5V+zjlB44dWlPi8d9+C0R6W+NHCQD"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amykit%2fmodel-specs@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29860},"main":"./dist/index.js","name":"@amykit/model-specs","type":"module","types":"./dist/index.d.ts","author":{"name":"Nicolas Melo"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ac437aba051bd8e109e1eb8b3c32b0365c6b4e2e","license":"MIT","version":"0.4.0","_npmUser":{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"},"homepage":"https://github.com/nicolasmelo1/amy#readme","repository":{"url":"git+https://github.com/nicolasmelo1/amy.git","type":"git","directory":"packages/model-specs"},"_npmVersion":"11.19.0","description":"What each model costs per token, vendored and versioned.","directories":{},"maintainers":[{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{"@amykit/core":"^0.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/model-specs_0.4.0_1789739852027_0.21281788764619458"}}},"time":{"created":"2026-09-06T01:29:06.417Z","modified":"2026-09-18T13:57:32.458Z","0.2.0":"2026-09-06T01:29:06.716Z","0.3.0":"2026-09-09T02:48:48.560Z","0.3.1":"2026-09-09T16:56:51.066Z","0.4.0":"2026-09-18T13:57:32.108Z"},"bugs":{"url":"https://github.com/nicolasmelo1/amy/issues"},"author":{"name":"Nicolas Melo"},"license":"MIT","homepage":"https://github.com/nicolasmelo1/amy#readme","repository":{"url":"git+https://github.com/nicolasmelo1/amy.git","type":"git","directory":"packages/model-specs"},"description":"What each model costs per token, vendored and versioned.","maintainers":[{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"}],"readme":"# @amykit/model-specs\n\nWhat each model costs per token, vendored and versioned.\n\nIts own package because pricing is neither kernel nor domain: the core does\nnot care what a token costs and a workflow does not either. The agent plugins\nread it to fill in a cost their harness did not report, and the budget reads\nit to decide when to stop.\n\n## Vendored on purpose\n\n`specs.json` is committed, and nothing on the path that decides spending\ntouches the network. The same version of amy always works out the same number.\n\nThe table names its own source, because a price table nobody can check is a\nnumber nobody should trust.\n\n## A model with no price is left out\n\nAbsent is a real answer. It produces `costSource: \"unknown\"`, the cost is\nomitted rather than guessed, and the token ceiling still stops the work. A\nguessed rate would be spent against a dollar ceiling as though it had been\nmeasured.\n\n## Refreshing is not replacing\n\n```sh\namy models show\namy models refresh --dry-run    # what would change\namy models refresh              # writes .amy/model-specs.json\n```\n\nmodels.dev publishes one rate per token kind. It does **not** publish\nlong-context tiering, so a refresh keeps the `thresholdTokens` and\n`aboveThreshold` already in the table. Overwriting them would make a\n200,000-token request look cheaper than it is, and that is the one direction a\ncost estimate must never be wrong in.\n\nThe refresh writes a local override rather than the vendored file, because in\na published install the vendored file lives inside `node_modules` and\nrewriting somebody's dependency in place is not a refresh.\n\n## Two things about the arithmetic that are easy to get wrong\n\nBoth taken from [CodexBar](https://github.com/steipete/CodexBar), which is\nalso where the vendored numbers come from.\n\n**The threshold is measured on the whole input side** — input plus cache reads\nplus cache writes — not on input alone. And crossing it **re-rates the entire\nrequest**, not merely the excess.\n\n**A one-hour cache write is billed at twice the input rate**, which none of\nthe four rate fields expresses on its own.\n","readmeFilename":"README.md"}