{"_id":"@dwmkerr/mock-llm","_rev":"26-1c98b05a1be819e007936b17b7bad9cd","name":"@dwmkerr/mock-llm","dist-tags":{"latest":"0.1.29"},"versions":{"0.1.2":{"name":"@dwmkerr/mock-llm","version":"0.1.2","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.2","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"bin":{"mock-llm":"dist/server.js"},"dist":{"shasum":"0799fc84874610c5bc47fc518e5f062909d27bed","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.2.tgz","fileCount":23,"integrity":"sha512-6E420rBzfQXrwZwgTqVdJZ71c0AkbrMzeHV5oofKI2pkYT/oYPFriS5/bnwsa4GOKVYvJ6eK1ltM+u7obWuDFw==","signatures":[{"sig":"MEYCIQCkVVJsisLCogep/zk4VQh2lx5YxanS4rsozHRMHzaRNQIhAIXleWDYBPormEkrNCoqqZwQTgvZXX8D/1HWP0DCTRkT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35673},"main":"dist/server.js","types":"./dist/server.d.ts","gitHead":"d43fcc70ffa358c099bd8018ab141f99ca7399ad","scripts":{"dev":"tsx watch src/server.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","start":"node dist/server.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"_npmVersion":"11.6.0","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.9.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","handlebars":"^4.7.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.2_1759534936651_0.11160403101729854","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dwmkerr/mock-llm","version":"0.1.3","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.3","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"bin":{"mock-llm":"dist/server.js"},"dist":{"shasum":"21bad72f07413fef023619d064516a3b2a1211aa","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.3.tgz","fileCount":23,"integrity":"sha512-fqGlD4fyGhn8tYkT7bYFUgX8B1nHAVJq9g2RAJ6Ji/iCft2mSHt6Jx6jqhsdEZFRNJASYQxPkAIneh5G7h6E+Q==","signatures":[{"sig":"MEYCIQC3x87ceeE6UBzpRzJ6TEY7J4q+PHDwrPwJN1XnBtimeAIhAKggtWie9R2YclJRG0pCsMenwW7otGROk7TGre6uIA5b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36428},"main":"dist/server.js","types":"./dist/server.d.ts","gitHead":"bcbfdcd15c5fc59cdc821c087d4a895616fe0cb5","scripts":{"dev":"tsx watch src/server.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","build":"tsc","start":"node dist/server.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"_npmVersion":"11.6.0","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.9.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","handlebars":"^4.7.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.3_1759565516012_0.4126376409502921","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@dwmkerr/mock-llm","version":"0.1.4","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.4","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"1596ae3a351596afdf54c6ab776589f2ab3a98b9","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.4.tgz","fileCount":32,"integrity":"sha512-IV6SLDxSiY3pP88M0CuZRE/ly2q4zrgZOeawsL39GCDdKVd4wlaiXb/NP3LlqvDnElRkzlUICfeYyuAxe+htOQ==","signatures":[{"sig":"MEQCIDQG40/nHPiXWwKjC6c859hjNOwvAecmYF6hybUyR1qzAiBNTPRtWHOweFNVj2jtJXCxsd292pqLDJ/ngz4i7cG+3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44167},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"e8ea3c40d74757e878533c0eedeae464d6f4af74","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"_npmVersion":"11.6.0","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.9.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","handlebars":"^4.7.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.4_1759582462582_0.13260573640391127","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@dwmkerr/mock-llm","version":"0.1.5","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.5","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"9c508892503df3249e5dcf5490ef7452c6f89cb8","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.5.tgz","fileCount":32,"integrity":"sha512-yU4omsAAiwnI2lfg+JsGuJHutlCC3/+OsU1UWU7hhWRh+uiXsHqIHo0B2ZhpLcQJHex21pwnY11AT+BAzUg2wQ==","signatures":[{"sig":"MEUCIGd5dt7azCfUxTYW8lW0lT+01m4h1OyVraa/eU6ek5sEAiEAzblYwU5nB4oILUSUQwXahjR5YmrTjtJ/ctZRXtIIAk8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47512},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"00c8ec0275779295e3b1cf446c33964ccf918f01","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"_npmVersion":"11.6.0","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.9.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","handlebars":"^4.7.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.5_1760008701865_0.4657664389610321","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@dwmkerr/mock-llm","version":"0.1.7","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.7","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"e67514a578b9d5a6a6c2469cdae4c8eaddd9b659","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.7.tgz","fileCount":32,"integrity":"sha512-3F7sE5SRgj6ZHkI6nshyPOj/a41019BHcaxdNN3d3PJWm6rMfm5l8/eDOyx8Fcbbs1JSf2JjAU62OSRLsxmzGg==","signatures":[{"sig":"MEYCIQDs/L3eEjiJYl6WUAtcYh6PrrbEW8kXqSiBZ14dshXLeQIhAL8y7Ie4yfpdYnQ7rvSm4TyivQTq2lHknFxtPUTJ/BXa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50543},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"c387fcb716e9f6121eee86b031bf1d884209fa37","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"_npmVersion":"11.6.0","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.9.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","handlebars":"^4.7.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.7_1760010791049_0.7281423623725511","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@dwmkerr/mock-llm","version":"0.1.8","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.8","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"ba6123a949fe57421b03fe8a4fb36e6c6dda3b53","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.8.tgz","fileCount":39,"integrity":"sha512-U0BBWO0pc1ciNy1O53nsl1ZbFR68lZ3uVHTgY2ckvGfUXhdYVdp9Hug0saKZbSsT+zcsP43EV6AYNjDesw8jTg==","signatures":[{"sig":"MEUCIDbm4MY7liN0aweuaPbe+mjq+Wt3lg/jU6nKRYxczEk7AiEA+Me0iD1PM4BFFxjZBpnve7MCrTAdxTUKTlazdwnYsKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63416},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"39742f25ef8097e5507c7b2c28f461e4cf5d4552","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"_npmVersion":"11.6.0","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.9.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.8_1760025892298_0.6911499766939466","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@dwmkerr/mock-llm","version":"0.1.9","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.9","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"fd7fa71c2ea10dd721c8c31a46f8a500a21c122e","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.9.tgz","fileCount":51,"integrity":"sha512-iPp3QdF3hMlUuLiRsrzbLcD84MSYLVuTHQs3T7wihs/xGy6g4XTf2tJlEMZyqnBXdbGsS8hTL5aBCfk696a8Kg==","signatures":[{"sig":"MEUCIQCFUz3abGnLvsjd678CAV1ZpyfvKYdZY/G82AwHivAT2wIgBx543jfZfJPGPp5RIpe1eBeVYQbzZGoSWnIbTRuOZyE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82554},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"fb2bad623e590dd28d149a4944d46827bdeba110","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.9_1760359721686_0.14276511747517984","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@dwmkerr/mock-llm","version":"0.1.10","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.10","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"472b4805cd3c701ffec73b82d16727dfb2c0da3d","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.10.tgz","fileCount":54,"integrity":"sha512-9Cyua0t9xKWwK295yFLg3QGOoTCJrh7voUPbuJCy1+1GmUtHr+l95dAYB+ryamCWTiZk62sbM/C7YClocxpnjg==","signatures":[{"sig":"MEYCIQDC2c3vs60o/HTWPFQ1lgZxc2/LaMliW0cmlbiYXGUVpQIhAMDNcHPif0PZAZ3P4wfXg4zyKD22PMNI6VxaC3+t9IHw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90485},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"7c2a31540e5b0bdb117ef1052a59d776544a9b49","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.10_1760433388732_0.5184324969420129","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@dwmkerr/mock-llm","version":"0.1.11","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.11","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"ebe61842729f572266db70cf7148237ee43e9e89","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.11.tgz","fileCount":55,"integrity":"sha512-BPfU5wrVVDC2kuaD5L2Qh1Zas4a9hyIVCPSBk1Qgn8/jzGcMnJ8DiqlAtbSSoRiP9so7BnI6nWTGNcXqvr3y0g==","signatures":[{"sig":"MEQCIHg5Y3JW9toCHy41azlEbqzq2XN9aYZC/c9AevCtHWSOAiBvGmijbzvZh3DBpgeXAH4UiwIvPC586cmxE0PDIBucuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98938},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"be27a34da28b98d6c568366030483d68061a1d91","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.11_1760454256046_0.5004197949606586","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@dwmkerr/mock-llm","version":"0.1.12","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.12","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"6eb28c9c6748ca1699cfa6ada5f95f7da9e63089","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.12.tgz","fileCount":55,"integrity":"sha512-+AGE9seMdSb0TmQ1x0jLRKyGBM584xHGigVqvfmXY+m2gmTIoW2qy5a56x7D85AfCJ+9fN1u9XsOW0rPTgrpJQ==","signatures":[{"sig":"MEUCIBtHPjBhnukPOCLVJx1FkklRj10MFcvwJ8pzQQjyrCMzAiEAzapbLLRY3cfpUcF5APzV61Hu8OTzpIUrLvr7IomWrXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101399},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"9c1e72936c4d5836ba69295760f23ba92c1fd3c2","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.12_1760463938232_0.7045600428548469","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@dwmkerr/mock-llm","version":"0.1.13","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.13","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"0bfc3fca0f135782c91b52faab1d91d5838a2ff0","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.13.tgz","fileCount":95,"integrity":"sha512-my+X3JjAyrLGguE42GZGhOw2jzO8RooxjDVEIP5HkejfFgd7UD/3+qCiO+altdhYatF9fVpD6UGNxqKrTFbbXw==","signatures":[{"sig":"MEUCIQC2UFI2dcOTdOyp2lprlN8Lo+G1gwBvqpCQlJtrurWYogIgDYFldcCJFZUVHHrj+8BvFlu8WnImSqDsA/6MfX7O1BE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":161960},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"122ea83dc0b9d89e34616ae59a760a125229e912","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.13_1760696987356_0.7388176991381199","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@dwmkerr/mock-llm","version":"0.1.14","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.14","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"13d44306a0308e3377b14c7700a0408e810dadea","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.14.tgz","fileCount":95,"integrity":"sha512-VU3+uvdsUjvQ0ymE1Tu8mB3Ua6ZHGxx6oCGOMtcJx5ji/iSoimxuQqcRriukCp7sKhS7B+S+78o5fPfW7eTD6Q==","signatures":[{"sig":"MEQCIBXpkd3jpi5/3jjGUjmDDKEJbAOFIU/0B41mXrx/NJ1JAiBcMjcISNQs11F5AnbiLzqxM+edx1dhIbQG06U1ZG3+Sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168593},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"ee4b98069e3dcc43b44e9d1a5e6c040c3ee9efa0","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.14_1760702015406_0.18086718219108677","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@dwmkerr/mock-llm","version":"0.1.15","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.15","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"fbe650b5354cd7a294f0a66b85529348885fe069","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.15.tgz","fileCount":103,"integrity":"sha512-UO/BD8fe0dAsAn/FAUzKn2sXXyvGWHGtY+Sl5sr7QUGGvb4L9UKKJ4p/uSoouYe/1eM6OtVIiUPCkNj9e1DHyg==","signatures":[{"sig":"MEQCIB6AVfBM4yOw5FkLuB9UtUDXuwuZQ27cF8kqwP/nPQ1jAiBGeMgYrjO4HQSOr3j1F/q/bW/7a+Sb8BP3fPTrsDLa9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180991},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"f14f977797c39e9fac38d3c6fb75760ae66dce8b","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.15_1761139962161_0.5610730402891617","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@dwmkerr/mock-llm","version":"0.1.16","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.16","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"dc696a29d28248a85e882e30dd9a7a707365c5da","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.16.tgz","fileCount":125,"integrity":"sha512-2UbPmbHOr2o7qcm1iq3abhpVNQKfo1pWMKDHeJUXPzWNvdya0xiYBWvZfmLw6TKN6Ea4X5xNnhH5dANr8qYaPg==","signatures":[{"sig":"MEYCIQCRbDp5mLKcL9zDqy1T7y8Z/Up7/UxFjuhTkrEygborFAIhAJQFJKzhUgnireBLDn+PRoxrNw75EiH7W1OnorhWz8pu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214075},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"acbbb461e9852c5f390e5b1d9e3c323be2c67840","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.16_1761571315824_0.9836991653023333","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@dwmkerr/mock-llm","version":"0.1.17","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.17","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"fb2fdef965aad6e951d957cbd21cb988dd4844d3","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.17.tgz","fileCount":135,"integrity":"sha512-HfhnC8EaSdi9c87feITJeulQBbyOxv4iN0CPs8AiJ5/UKNH6dWr27h4Za9dpTKEbz87Guys6qVxzjswU7nLwNQ==","signatures":[{"sig":"MEUCIDB73mND/16KmHcqm9fX7CgBXZg1ph2V7ny96TJnYu1cAiEA7yDXIrtZSWq/wpS1cEicodQYEoUb1nBi40O8GFdTsEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293596},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"4140dc2feca12a4e8f08afeaf69e07afceab36af","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.17_1761896826742_0.06655598618757708","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@dwmkerr/mock-llm","version":"0.1.18","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.18","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"7b80f1dbc5b8851915103b80f72cc22be6819f89","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.18.tgz","fileCount":136,"integrity":"sha512-2h1dEN1sdp7rL6YRnfAMthuCjn7NXXlNwOWXjhaj4ToJqFGQdsSE879qVVjWxxH7Yst9lhyn3DEbHVpwFgcvfg==","signatures":[{"sig":"MEUCIHelmbfhQDsHtq0oIC+Grf0GFBkVqyNBvLmz7J1xUhbMAiEAz6I0KNuGef5zsvcd20PlPlUaqqOWY3/uE1iAwmsTl8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297379},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"ef26e25e5b2045386726448e24129a07065d58a8","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.18_1761924193783_0.13193107617039246","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@dwmkerr/mock-llm","version":"0.1.19","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.19","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"af4d734807504d03c95c268f2a28d6d43e8ca683","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.19.tgz","fileCount":142,"integrity":"sha512-l9ZvRelxB/9p6MdpSnfyEChVZ2Z746wmGY/E/BUNJbzwJrRWLEhIvW51O05c1JEALj9HVgLIpOrjz6iKEBpvoA==","signatures":[{"sig":"MEYCIQCA5L/JuHAIW059t8esHwReHYh6EQL1c5sImNP6OSkO5gIhAKa5r65rPeiQbRd3hUG57XlC/4bV8n8UDZzRFgss3U4q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":308414},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"4f83c931b019cb332e5c811a457f432a43044d45","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.19_1762185542663_0.787064807699789","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@dwmkerr/mock-llm","version":"0.1.20","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.20","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"0c22026b9ccb234b29feb21737b6850c389f049b","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.20.tgz","fileCount":142,"integrity":"sha512-bPURqA8OTyXZVpedi1WvXdBikbXd/1u5btZzw6ddT42vruEkh0jgQxjEe8tgKA8v7FSlaiPM/rO3YKEPtXbbSw==","signatures":[{"sig":"MEUCIATa8AjIHjrRtx0APqD3j63+hrI5L5G+7iyPq0TTu3TmAiEAr4JqTVZY5TIGpWrz5QFsNG8OHUdIOkl+z/3quwaZsyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":308724},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"cfbb19a41fbfee32342e264e08a8eac5e91efb54","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.20_1762236898923_0.1475265944680526","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@dwmkerr/mock-llm","version":"0.1.21","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.21","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"6a0a640f8f95de96fca06d30d8e6d0eb2a59cc73","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.21.tgz","fileCount":142,"integrity":"sha512-fbWEHF7xJJzdd+ODVEcLDEmPnz6/1I0rUxn9WKORiXhRZ58k6UsE/Ax8D6l/J/LCa+bJLpn/BpNunDP85ycTNA==","signatures":[{"sig":"MEUCIBll2vM8tJyXeim7htLD9YkE/QICMmDwvajzkk9yLq4KAiEAn6rh2PHhjiCOuwRyvlzei5A0UXaxpNoFjQQhiRyNgpo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":309130},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"ba49792e245833eb5830cb8415db0d36b82db2a7","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.21_1762237150025_0.5202898191431788","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@dwmkerr/mock-llm","version":"0.1.22","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.22","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"2a238898128c85558f6e488330118e3697bcace0","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.22.tgz","fileCount":142,"integrity":"sha512-2HCPGvY/psOHeO6FCIJFaankjsDdfh6hVakgoiMlg0YA37spZWbiWm9GTEqWZuNkOJzsvjfEqW6uxMBSrmO8MQ==","signatures":[{"sig":"MEUCIQD+rSoEHcCQwD1gHwfdo+5WQIvPO0ZU2CdaxAbuWBuwbgIgEG9CiZvvYXFIKiaMxpNLXyDex9MjTCVQpYl2fb+f8Z8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":310039},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"ca267ec3aac895b81c1b1d0810a2a61166c689e7","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.1","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.22_1762344455829_0.4205388878588918","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@dwmkerr/mock-llm","version":"0.1.23","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.23","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"8d5120d6d9d338433e80ec5b0c4bcfe869074552","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.23.tgz","fileCount":142,"integrity":"sha512-sI3wNU7/c+HQmPiHaEZUXqj9JPeIMqASFdmY4IoPxz0O0z+2EHTP6YRjpmk1c2B93XH+5Tu01go3ad1PbYzH4w==","signatures":[{"sig":"MEYCIQDlEo6v6p9/QX5TXPkiXznhIEhBX2rmMuj2vZcah+dTZgIhAMLN0imB12E6YBRdjmZmcoOgbSqx/Y0v4rcoIzz715Mg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":310845},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"b62f539364d2d1e66ea4a063403ed2ce3284571e","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.2","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.23_1764163287675_0.7108286468749905","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@dwmkerr/mock-llm","version":"0.1.25","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.25","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"6c4e65adcd7d3f0e20f4054ec0704589929d6e83","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.25.tgz","fileCount":143,"integrity":"sha512-r1xks4wZiG4N/xIW5xyvCL8xh5A/OQSDWylect23hxGjJOh1F3t5LeqpIRSfCIJOCH4Qc9N43r16aGSZ7tFqeQ==","signatures":[{"sig":"MEUCIQCQiDSzL0bKZdQ3K11vD6awDzcTuuHn3TTDtLMlldZLqwIgOQl+2LQiHaOnmJNz04bIj3O2fFoUzn4kYnjOGdsKyVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":324114},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"e5e4df49c9b5a18a7c012099837ec4ba5439c92f","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.2","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^9.39.1","globals":"^16.5.0","ts-jest":"^29.1.2","@eslint/js":"^9.39.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","typescript-eslint":"^8.48.0","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.25_1764233858334_0.08757459813122681","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@dwmkerr/mock-llm","version":"0.1.26","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.26","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"1655eeaa264d3bacf7bac9ce415bbfdc6e67f82f","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.26.tgz","fileCount":143,"integrity":"sha512-WlECN4TR46X1dz7RLzoyp8E0etF2pNweLWh34h5CwZh3mBy7KAPxXzLbmQK5OsMtUaSgOvHZypPdqeoXj4DPxw==","signatures":[{"sig":"MEUCID5wVMC+bAL7AJe31VHI1iZsV6+A42fZzWUIaaTvapTIAiEAlgg9jWcDg3KJjiVtDzXATEpefIos7MN1URzduwqE1sI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":329054},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"f571bffd217973cd95dff638a6514412bffcb95e","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.2","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^9.39.1","globals":"^16.5.0","ts-jest":"^29.1.2","@eslint/js":"^9.39.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","typescript-eslint":"^8.48.0","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.26_1766390301296_0.044006502764376565","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"@dwmkerr/mock-llm","version":"0.1.27","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.27","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"3d564551964da212d2dbcd99061cb83fac869773","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.27.tgz","fileCount":143,"integrity":"sha512-zm4I7I8WEC8iyM2Z+Vpr/ZnoPAf/Dj6eaiG0I1zRvyXvSRanhwfXCDy9DLS40ll4Msodbmx455dsFCutVfOCCg==","signatures":[{"sig":"MEUCIQCizffSXO+hW3iQXsMprUUwiF8Rf5lOzV3ljxcwy8KqxQIgB9W8d5mLntvGtoQRW9mHbRMwCt6exgVzMRsuLxXH/Iw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":329966},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"c20bb8b18c233a2a0614006b2cd4158e545e2d02","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.2","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^9.39.1","globals":"^16.5.0","ts-jest":"^29.1.2","@eslint/js":"^9.39.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","typescript-eslint":"^8.48.0","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.27_1767694047090_0.484869274617828","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"@dwmkerr/mock-llm","version":"0.1.28","keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","_id":"@dwmkerr/mock-llm@0.1.28","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"homepage":"https://github.com/dwmkerr/mock-llm#readme","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"bin":{"mock-llm":"dist/main.js"},"dist":{"shasum":"31f56d2e2a343e771d16ee3efb2af4f53f0a7bf0","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.28.tgz","fileCount":144,"integrity":"sha512-TAYT565uRf/QILJ4NMQeQ/dNPoBwJsNDr9zdMBaaIE4u1X/sOtp2sG3RDWIAWdo+4QqKGA8h6YuyNm7lDoWS2A==","signatures":[{"sig":"MEYCIQCTgw4btOHFwbC6Sh2HwmUmcAksoeg5hOfSDXgr8oVW3AIhAJt7YHO2AVFaEaV2dcfbVdGfhE1af8VVz+RJtm/3bAm0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":338443},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"5c50e486c3d21f4b447dbc3791d16eb950bf80ad","scripts":{"dev":"tsx watch src/main.ts","lint":"eslint src/**/*.ts","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","build":"tsc","start":"node dist/main.js","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test-base":"jest","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","local:inspect":"npx @modelcontextprotocol/inspector"},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"repository":{"url":"git+https://github.com/dwmkerr/mock-llm.git","type":"git"},"_npmVersion":"11.6.2","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.25.76","openai":"^4.28.0","express":"^5.1.0","js-yaml":"^4.1.0","jmespath":"^0.16.0","@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^9.39.1","globals":"^16.5.0","ts-jest":"^29.1.2","@eslint/js":"^9.39.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/express":"^4.17.21","@types/js-yaml":"^4.0.9","@types/jmespath":"^0.15.2","typescript-eslint":"^8.48.0","@typescript-eslint/parser":"^8.45.0","@typescript-eslint/eslint-plugin":"^8.45.0"},"_npmOperationalInternal":{"tmp":"tmp/mock-llm_0.1.28_1767715739124_0.4939660545046425","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"@dwmkerr/mock-llm","version":"0.1.29","description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","main":"dist/main.js","bin":{"mock-llm":"dist/main.js"},"scripts":{"prepare":"npm run build","build":"tsc","start":"node dist/main.js","dev":"tsx watch src/main.ts","test-base":"jest","local:inspect":"npx @modelcontextprotocol/inspector","test":"jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary --testPathIgnorePatterns=test-samples.spec.ts","test:samples":"npm run build && jest --roots='<rootDir>' --testMatch='**/test-samples.spec.ts' --coverage --coverageDirectory=./artifacts/coverage-samples --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary","lint":"eslint src/**/*.ts","lint:fix":"eslint src/**/*.ts --fix"},"keywords":["openai","mock","testing","llm"],"author":{"name":"Dave Kerr"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/dwmkerr/mock-llm.git"},"publishConfig":{"access":"public"},"dependencies":{"@a2a-js/sdk":"^0.3.4","@modelcontextprotocol/sdk":"^1.20.1","express":"^5.1.0","jmespath":"^0.16.0","js-yaml":"^4.1.0","openai":"^4.28.0","zod":"^3.25.76"},"devDependencies":{"@eslint/js":"^9.39.1","@types/express":"^4.17.21","@types/jest":"^29.5.12","@types/jmespath":"^0.15.2","@types/js-yaml":"^4.0.9","@types/node":"^20.11.19","@typescript-eslint/eslint-plugin":"^8.45.0","@typescript-eslint/parser":"^8.45.0","eslint":"^9.39.1","globals":"^16.5.0","jest":"^29.7.0","ts-jest":"^29.1.2","tsx":"^4.7.0","typescript":"^5.3.3","typescript-eslint":"^8.48.0"},"gitHead":"82901f8ebe814342ef14cd9a7ad7f80259765f67","types":"./dist/main.d.ts","_id":"@dwmkerr/mock-llm@0.1.29","bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"homepage":"https://github.com/dwmkerr/mock-llm#readme","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-5jaaRw+grlCaUvG29K7zbI3SKFs41PaNozalqbvPbw9TtMZIrGTPF1lhmOIJW3guY8epbX5hbh1xVaWU+26IxA==","shasum":"4dba3c7711d95714f2c149308bd39afca7dc9fa1","tarball":"https://registry.npmjs.org/@dwmkerr/mock-llm/-/mock-llm-0.1.29.tgz","fileCount":183,"unpackedSize":454606,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBjqLktp8lkpZloni0gr0OLy4Nvl34gDRliLm6ZsgrpoAiArH0S3RglOlsXw4IkK1eoJDhUDaKqXOLfAMVc9yaIqNQ=="}]},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"directories":{},"maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mock-llm_0.1.29_1776857856649_0.4484182463275188"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-03T23:42:16.580Z","modified":"2026-04-22T11:37:36.970Z","0.1.2":"2025-10-03T23:42:16.886Z","0.1.3":"2025-10-04T08:11:56.231Z","0.1.4":"2025-10-04T12:54:22.805Z","0.1.5":"2025-10-09T11:18:22.120Z","0.1.7":"2025-10-09T11:53:11.244Z","0.1.8":"2025-10-09T16:04:52.479Z","0.1.9":"2025-10-13T12:48:41.896Z","0.1.10":"2025-10-14T09:16:29.023Z","0.1.11":"2025-10-14T15:04:16.231Z","0.1.12":"2025-10-14T17:45:38.406Z","0.1.13":"2025-10-17T10:29:47.542Z","0.1.14":"2025-10-17T11:53:35.593Z","0.1.15":"2025-10-22T13:32:42.369Z","0.1.16":"2025-10-27T13:21:56.020Z","0.1.17":"2025-10-31T07:47:06.989Z","0.1.18":"2025-10-31T15:23:13.986Z","0.1.19":"2025-11-03T15:59:02.851Z","0.1.20":"2025-11-04T06:14:59.153Z","0.1.21":"2025-11-04T06:19:10.208Z","0.1.22":"2025-11-05T12:07:36.019Z","0.1.23":"2025-11-26T13:21:27.879Z","0.1.25":"2025-11-27T08:57:38.518Z","0.1.26":"2025-12-22T07:58:21.455Z","0.1.27":"2026-01-06T10:07:27.245Z","0.1.28":"2026-01-06T16:08:59.284Z","0.1.29":"2026-04-22T11:37:36.841Z"},"bugs":{"url":"https://github.com/dwmkerr/mock-llm/issues"},"author":{"name":"Dave Kerr"},"license":"MIT","homepage":"https://github.com/dwmkerr/mock-llm#readme","keywords":["openai","mock","testing","llm"],"repository":{"type":"git","url":"git+https://github.com/dwmkerr/mock-llm.git"},"description":"Simple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.","maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"readme":"# mock-llm\n\n[![npm version](https://badge.fury.io/js/@dwmkerr%2Fmock-llm.svg)](https://badge.fury.io/js/@dwmkerr%2Fmock-llm)\n[![codecov](https://codecov.io/gh/dwmkerr/mock-llm/graph/badge.svg?token=0GvcoTYVY4)](https://codecov.io/gh/dwmkerr/mock-llm)\n[![All Contributors](https://img.shields.io/github/all-contributors/dwmkerr/mock-llm?color=ee8449&style=flat-square)](#contributors)\n\nSimple OpenAI compatible Mock API server. Useful for deterministic testing of AI applications.\n\n## Introduction\n\nCreating integration tests for AI applications that rely on LLMs can be challenging due to costs, the complexity of response structures and the non-deterministic nature of LLMs. Mock LLM runs as a simple 'echo' server that responses to a user message.\n\nThe server can be configured to provide different responses based on the input, which can be useful for testing error scenarios, different payloads, etc. It is currently designed to mock the [OpenAI Completions API](https://platform.openai.com/docs/api-reference/completions) but could be extended to mock the list models APIs, responses APIs, A2A apis and so on in the future.\n\n<!-- vim-markdown-toc GFM -->\n\n- [Quickstart](#quickstart)\n- [Configuration](#configuration)\n    - [Customising Responses](#customising-responses)\n    - [Loading Configuration Files](#loading-configuration-files)\n    - [Updating Configuration](#updating-configuration)\n    - [Health & Readiness Checks](#health--readiness-checks)\n    - [Template Variables](#template-variables)\n    - [Sequential Responses](#sequential-responses)\n    - [Streaming Configuration](#streaming-configuration)\n- [MCP (Model Context Protocol) Mocking](#mcp-model-context-protocol-mocking)\n- [MCP OAuth Emulation](#mcp-oauth-emulation)\n- [A2A (Agent to Agent Protocol) Mocking](#a2a-agent-to-agent-protocol-mocking)\n- [Deploying to Kubernetes with Helm](#deploying-to-kubernetes-with-helm)\n- [Examples](#examples)\n- [Developer Guide](#developer-guide)\n- [Samples](#samples)\n- [Contributors](#contributors)\n\n<!-- vim-markdown-toc -->\n\n## Quickstart\n\nInstall and run:\n\n```bash\nnpm install -g mock-llm\nmock-llm\n```\n\nMock-LLM runs on port 6556 (which is dial-pad code 6556, to avoid conflicts with\ncommon ports).\n\nOr use Docker:\n\n```bash\ndocker run -p 6556:6556 ghcr.io/dwmkerr/mock-llm\n```\n\nOr [use Helm](#deploying-to-kubernetes-with-helm) for Kubernetes deployments.\n\nTest with curl. The default rule for incoming requests is to reply with the user's exact message:\n\n```bash\ncurl -X POST http://localhost:6556/v1/chat/completions \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gpt-4\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"Hello\"}]\n  }'\n```\n\nResponse:\n\n```json\n{\n  \"id\": \"chatcmpl-1234567890\",\n  \"object\": \"chat.completion\",\n  \"model\": \"gpt-4\",\n  \"choices\": [{\n    \"message\": {\n      \"role\": \"assistant\",\n      \"content\": \"Hello\"\n    },\n    \"finish_reason\": \"stop\"\n  }]\n}\n```\n\nMock LLM also has basic support for the [A2A (Agent-to-Agent) protocol](docs/a2a.md) for testing agent messages, task, and asynchronous operations.\n\n## Configuration\n\nResponses are configured using a `yaml` file loaded from `mock-llm.yaml` in the current working directory. Rules are evaluated in order - last match wins.\n\nThe default configuration echoes the last user message and provides a `/v1/models` endpoint:\n\n```yaml\nrules:\n  # Default echo rule\n  - path: \"/v1/chat/completions\"\n    method: \"POST\"\n    # The JMESPath expression '@' always matches.\n    match: \"@\"\n    response:\n      status: 200\n      content: |\n        {\n          \"id\": \"chatcmpl-{{timestamp}}\",\n          \"object\": \"chat.completion\",\n          \"model\": \"{{jmes request body.model}}\",\n          \"choices\": [{\n            \"message\": {\n              \"role\": \"assistant\",\n              \"content\": \"{{jmes request body.messages[-1].content}}\"\n            },\n            \"finish_reason\": \"stop\"\n          }]\n        }\n\n  # List models endpoint\n  - path: \"/v1/models\"\n    method: \"GET\"\n    response:\n      status: 200\n      content: |\n        {\n          \"object\": \"list\",\n          \"data\": [{\"id\": \"gpt-5.2\", \"object\": \"model\", \"owned_by\": \"openai\"}]\n        }\n```\n\nEach rule supports these fields:\n- `path` - Regular expression to match the request path\n- `method` - HTTP method to match (GET, POST, etc). If not specified, matches all methods\n- `match` - JMESPath expression to match request content (optional)\n- `sequence` - Match by request order (optional)\n- `response` - The response to return (status and content)\n\n### Customising Responses\n\n[JMESPath](https://jmespath.org/) is a query language for JSON used to match incoming requests and extract values for responses.\n\nThis returns a fixed message for `hello` and simulates a `401` error for `error-401`, and simulates `v1/models`:\n\n```yaml\nrules:\n  # Fixed message when input contains 'hello':\n  - path: \"/v1/chat/completions\"\n    match: \"contains(body.messages[-1].content, 'hello')\"\n    response:\n      status: 200\n      content: |\n        {\n          \"choices\": [{\n            \"message\": {\n              \"role\": \"assistant\",\n              \"content\": \"Hi there! How can I help you today?\"\n            },\n            \"finish_reason\": \"stop\"\n          }]\n        }\n  # Realistic OpenAI 401 if the input contains `error-401`:\n  - path: \"/v1/chat/completions\"\n    match: \"contains(body.messages[-1].content, 'error-401')\"\n    response:\n      status: 401\n      content: |\n        {\n          \"error\": {\n            \"message\": \"Incorrect API key provided.\",\n            \"type\": \"invalid_request_error\",\n            \"param\": null,\n            \"code\": \"invalid_api_key\"\n          }\n        }\n\n  # List models endpoint\n  - path: \"/v1/models\"\n    # The JMESPath expression '@' always matches.\n    match: \"@\"\n    response:\n      status: 200\n      # Return a set of models.\n      content: |\n        {\n          \"data\": [\n            {\"id\": \"gpt-4\", \"object\": \"model\"},\n            {\"id\": \"gpt-3.5-turbo\", \"object\": \"model\"}\n          ]\n        }\n```\n\n### Loading Configuration Files\n\nThe `--config` parameter can be used for a non-default location:\n\n```bash\n# Use the '--config' parameter directly...\nmock-llm --config /tmp/myconfig.yaml\n\n# ...mount a config file from the working directory for mock-llm in docker.\ndocker run -v $(pwd)/mock-llm.yaml:/app/mock-llm.yaml -p 6556:6556 ghcr.io/dwmkerr/mock-llm\n```\n\n### Updating Configuration\n\nConfiguration can be updated at runtime via the `/config` endpoint: `GET` returns current config (JSON by default, YAML with `Accept: application/x-yaml`), `POST` replaces it, `PATCH` merges updates, `DELETE` resets to default. Both `POST` and `PATCH` accept JSON (`Content-Type: application/json`) or YAML (`Content-Type: application/x-yaml`).\n\n### Health & Readiness Checks\n\n```bash\ncurl http://localhost:6556/health\n# {\"status\":\"healthy\"}\n\ncurl http://localhost:6556/ready\n# {\"status\":\"ready\"}\n```\n\n### Template Variables\n\nAvailable in response content templates:\n\n- `{{jmes request <query>}}` - Query the request object using [JMESPath](https://jmespath.org/):\n  - `request.body` - Request body (e.g., `body.model`, `body.messages[-1].content`)\n  - `request.headers` - HTTP headers, lowercase (e.g., `headers.authorization`)\n  - `request.method` - HTTP method (e.g., `POST`)\n  - `request.path` - Request path (e.g., `/v1/chat/completions`)\n  - `request.query` - Query parameters (e.g., `query.apikey`)\n- `{{timestamp}}` - Current time in milliseconds\n\nObjects and arrays are automatically JSON-stringified. Primitives are returned as-is.\n\n```yaml\n\"model\": \"{{jmes request body.model}}\"              // \"gpt-4\"\n\"message\": {{jmes request body.messages[0]}}        // {\"role\":\"system\",\"content\":\"...\"}\n\"auth\": \"{{jmes request headers.authorization}}\"    // \"Bearer sk-...\"\n\"apikey\": \"{{jmes request query.apikey}}\"           // \"test-123\"\n```\n\n### Sequential Responses\n\nFor testing multi-turn interactions like tool calling, use `sequence` to return different responses based on request order:\n\n```yaml\nrules:\n  # First request: trigger tool call\n  - path: \"/v1/chat/completions\"\n    sequence: 0\n    response:\n      status: 200\n      content: '{\"choices\":[{\"message\":{\"tool_calls\":[{\"function\":{\"name\":\"get_weather\"}}]},\"finish_reason\":\"tool_calls\"}]}'\n\n  # Second request: return final answer\n  - path: \"/v1/chat/completions\"\n    sequence: 1\n    response:\n      status: 200\n      content: '{\"choices\":[{\"message\":{\"content\":\"The weather is 72°F\"},\"finish_reason\":\"stop\"}]}'\n```\n\nRules can use `match`, `sequence`, both, or neither:\n\n| `match` | `sequence` | Behavior |\n|---------|------------|----------|\n| No | No | Matches all requests (catch-all) |\n| Yes | No | Content-based matching only |\n| No | Yes | Order-based matching only |\n| Yes | Yes | Must satisfy both conditions |\n\nSequence counters are tracked per path and reset via `DELETE /config`. The counter only increments when the winning rule has a `sequence` property, so fallback rules (without `sequence`) can handle liveness probes without consuming sequence numbers.\n\n### Streaming Configuration\n\nMock-LLM supports streaming responses when clients send `stream: true` in their requests. Streaming behavior is configured globally:\n\n```yaml\nstreaming:\n  chunkSize: 50         # characters per chunk (default: 50)\n  chunkIntervalMs: 50   # milliseconds between chunks (default: 50)\n\nrules:\n  - path: \"/v1/chat/completions\"\n    match: \"@\"\n    # etc...\n```\n\nWhen clients request streaming, Mock-LLM returns Server-Sent Events (SSE) with `Content-Type: text/event-stream`:\n\n```javascript\nconst stream = await client.chat.completions.create({\n  model: 'gpt-4',\n  messages: [{ role: 'user', content: 'Hello' }],\n  stream: true  // Enables streaming\n});\n\nfor await (const chunk of stream) {\n  process.stdout.write(chunk.choices[0]?.delta?.content || '');\n}\n```\n\nThis enables deterministic testing of streaming protocol responses. Errors conditions can also be tested - error responses are sent as per the [OpenAI Streaming Specification](https://platform.openai.com/docs/api-reference/chat-streaming/streaming).\n\n## MCP (Model Context Protocol) Mocking\n\nMock-LLM exposes MCP servers and tools which support testing the MCP protocol, details are in the [MCP Documentation](docs/mcp.md).\n\n## MCP OAuth Emulation\n\nMock-LLM can also emulate an OAuth 2.1 authorization server in front of its MCP endpoint, so you can test OAuth-protected MCP servers end-to-end without depending on a real IdP. It serves RFC 8414 / RFC 9728 discovery, RFC 7591 Dynamic Client Registration, Authorization Code + PKCE, and refresh-token flows, plus a small set of control endpoints for test orchestration. See the [MCP OAuth Documentation](docs/mcp-oauth.md).\n\n## A2A (Agent to Agent Protocol) Mocking\n\nMock-LLM exposes A2A servers and tools which support testing the A2A protocol, details are in the [A2A Documentation](docs/a2a.md).\n\n## Deploying to Kubernetes with Helm\n\n```bash\n# Install from OCI registry\nhelm install mock-llm oci://ghcr.io/dwmkerr/charts/mock-llm --version 0.1.8\n\n# Install with Ark resources enabled\n# Requires Ark to be installed: https://github.com/mckinsey/agents-at-scale-ark\nhelm install mock-llm oci://ghcr.io/dwmkerr/charts/mock-llm --version 0.1.8 \\\n  --set ark.model.enabled=true \\\n  --set ark.a2a.enabled=true \\\n  --set ark.mcp.enabled=true\n\n# Verify deployment\nkubectl get deployment mock-llm\nkubectl get service mock-llm\n\n# Port forward and test\nkubectl port-forward svc/mock-llm 6556:6556 &\ncurl -X POST http://localhost:6556/v1/chat/completions \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\": \"gpt-4\", \"messages\": [{\"role\": \"user\", \"content\": \"Hello\"}]}'\n```\n\nCustom configuration via values.yaml:\n\n```yaml\n\n# Optional additional mock-llm configuration.\nconfig:\n  rules:\n    - path: \"/v1/chat/completions\"\n      match: \"contains(messages[-1].content, 'hello')\"\n      response:\n        status: 200\n        content: |\n          {\n            \"choices\": [{\n              \"message\": {\n                \"role\": \"assistant\",\n                \"content\": \"Hi there!\"\n              },\n              \"finish_reason\": \"stop\"\n            }]\n          }\n\n# Or use existing ConfigMap (must contain key 'mock-llm.yaml')\n# existingConfigMap: \"my-custom-config\"\n```\n\nSee the [full Helm documentation](docs/helm.md) for advanced configuration, Ark integration, and more.\n\n## Examples\n\nAny OpenAI API compatible SDKs can be used with Mock LLM. For Node.js:\n\n```javascript\nconst OpenAI = require('openai');\n\nconst client = new OpenAI({\n  apiKey: 'mock-key',\n  baseURL: 'http://localhost:6556/v1'\n});\n\nconst response = await client.chat.completions.create({\n  model: 'gpt-4',\n  messages: [{ role: 'user', content: 'Hello' }]\n});\n\nconsole.log(response.choices[0].message.content);\n// \"Hello\"\n```\n\nAnd for Python:\n\n```python\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key='mock-key',\n    base_url='http://localhost:6556/v1'\n)\n\nresponse = client.chat.completions.create(\n    model='gpt-4',\n    messages=[{'role': 'user', 'content': 'Hello'}]\n)\n\nprint(response.choices[0].message.content)\n# \"Hello\"\n```\n\n## Developer Guide\n\nInstall dependencies and start with live-reload:\n\n```bash\nnpm install\nnpm run dev\n```\n\nLint or run tests:\n\n```bash\nnpm run lint\nnpm run test\n```\n\nRun the end-to-end [samples](#samples) suite:\n\n```bash\nnpm run test:samples\n```\n\nTest and inspect the MCP Server running locally:\n\n```bash\nnpm run local:inspect\n```\n\n### Testing with Minikube\n\n```bash\ndocker build -t mock-llm:local .\nminikube image load mock-llm:local\nhelm install mock-llm ./chart \\\n  --set image.repository=mock-llm \\\n  --set image.tag=local \\\n  --set image.pullPolicy=Never\n```\n\nTo use with chainsaw tests (e.g., from [Ark](https://github.com/mckinsey/agents-at-scale-ark)):\n\n```bash\nminikube image load mock-llm:local\nchainsaw test ./tests/my-test \\\n  --values image.repository=mock-llm,image.tag=local,image.pullPolicy=Never\n```\n\n## Samples\n\nEach sample below is in the form of an extremely minimal script that shows:\n\n1. How to configure mock-llm for a specific scenario\n2. How to run the scenario\n3. How to validate the results\n\nThese can be a reference for your own tests. Each sample is also run as part of the project's build pipeline.\n\n| Sample | Description |\n|--------|-------------|\n| [01-echo-message.sh](samples/01-echo-message.sh) | Assert a response from an LLM. |\n| [02-error-401.sh](samples/02-error-401.sh) | Verify error handling scenario. |\n| [03-system-message-in-conversation.sh](samples/03-system-message-in-conversation.sh) | Test system message handling in conversations. |\n| [04-headers-validation.sh](samples/04-headers-validation.sh) | Test custom HTTP header validation. |\n| [05-a2a-countdown-agent.sh](samples/05-a2a-countdown-agent.sh) | Test A2A blocking task operations. |\n| [06-a2a-echo-agent.sh](samples/06-a2a-echo-agent.sh) | Test A2A message handling. |\n| [07-a2a-message-context.sh](samples/07-a2a-message-context.sh) | Test A2A message context and history. |\n| [08-mcp-echo-tool.sh](samples/08-mcp-echo-tool.sh) | Test MCP tool invocation. |\n| [09-token-usage.sh](samples/09-token-usage.sh) | Test token usage tracking. |\n| [10-mcp-inspect-headers.sh](samples/10-mcp-inspect-headers.sh) | Test MCP header inspection. |\n| [11-sequential-tool-calling.sh](samples/11-sequential-tool-calling.sh) | Test sequential responses for tool-calling flows. |\n| [12-list-models.sh](samples/12-list-models.sh) | Test GET /v1/models endpoint. |\n| [14-mcp-oauth-discovery.sh](samples/14-mcp-oauth-discovery.sh) | Test OAuth 401 challenge + RFC 9728 / RFC 8414 discovery metadata on protected MCP endpoint. |\n| [15-mcp-oauth-pkce-flow.sh](samples/15-mcp-oauth-pkce-flow.sh) | Test full OAuth 2.1 Authorization Code + PKCE flow (DCR, authorize, token exchange, authenticated MCP initialize). |\n| [16-mcp-oauth-refresh.sh](samples/16-mcp-oauth-refresh.sh) | Test refresh-token grant, refresh-token rotation, and `/oauth/revoke` + `/oauth/expire` control endpoints. |\n\nEach sample below is a link to a real-world deterministic integration test in [Ark](https://github.com/mckinsey/agents-at-scale-ark) that uses `mock-llm` features. These tests can be used as a reference for your own tests.\n\n| Test | Description |\n|------|-------------|\n| [agent-default-model](https://github.com/mckinsey/agents-at-scale-ark/tree/main/tests/agent-default-model) | Basic LLM query and response. |\n| [model-custom-headers](https://github.com/mckinsey/agents-at-scale-ark/tree/main/tests/model-custom-headers) | Passing custom headers to models. |\n| [query-parameter-ref](https://github.com/mckinsey/agents-at-scale-ark/tree/main/tests/query-parameter-ref) | Dynamic prompt resolution from ConfigMaps and Secrets. |\n| [query-token-usage](https://github.com/mckinsey/agents-at-scale-ark/tree/main/tests/query-token-usage) | Token usage tracking and reporting. |\n| [a2a-agent-discovery](https://github.com/mckinsey/agents-at-scale-ark/tree/main/tests/a2a-agent-discovery) | A2A agent discovery and server readiness. |\n| [a2a-message-query](https://github.com/mckinsey/agents-at-scale-ark/tree/main/tests/a2a-message-query) | A2A message handling. |\n| [a2a-blocking-task-completed](https://github.com/mckinsey/agents-at-scale-ark/tree/main/tests/a2a-blocking-task-completed) | A2A blocking task successful completion. |\n| [a2a-blocking-task-failed](https://github.com/mckinsey/agents-at-scale-ark/tree/main/tests/a2a-blocking-task-failed) | A2A blocking task error handling. |\n| [mcp-discovery](https://github.com/mckinsey/agents-at-scale-ark/tree/main/tests/mcp-discovery) | MCP server and tool discovery. |\n| [mcp-header-propagation (PR #311)](https://github.com/mckinsey/agents-at-scale-ark/pull/311) | MCP header propagation from Agents and Queries. |\n| [agent-tools](https://github.com/mckinsey/agents-at-scale-ark/tree/main/tests/agent-tools) | Sequential responses for tool-calling agents. |\n\n## Contributors\n\nThanks to ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/dwmkerr\"><img src=\"https://avatars.githubusercontent.com/u/1926984?v=4?s=100\" width=\"100px;\" alt=\"Dave Kerr\"/><br /><sub><b>Dave Kerr</b></sub></a><br /><a href=\"https://github.com/dwmkerr/mock-llm/commits?author=dwmkerr\" title=\"Code\">💻</a> <a href=\"https://github.com/dwmkerr/mock-llm/commits?author=dwmkerr\" title=\"Documentation\">📖</a> <a href=\"#infra-dwmkerr\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">🚇</a> <a href=\"#maintenance-dwmkerr\" title=\"Maintenance\">🚧</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/lucaromagnoli\"><img src=\"https://avatars.githubusercontent.com/u/38782977?v=4?s=100\" width=\"100px;\" alt=\"Luca Romagnoli\"/><br /><sub><b>Luca Romagnoli</b></sub></a><br /><a href=\"https://github.com/dwmkerr/mock-llm/commits?author=lucaromagnoli\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/daniele-marostica\"><img src=\"https://avatars.githubusercontent.com/u/238710818?v=4?s=100\" width=\"100px;\" alt=\"Daniele\"/><br /><sub><b>Daniele</b></sub></a><br /><a href=\"https://github.com/dwmkerr/mock-llm/commits?author=daniele-marostica\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/mcowger\"><img src=\"https://avatars.githubusercontent.com/u/1929548?v=4?s=100\" width=\"100px;\" alt=\"Matt Cowger\"/><br /><sub><b>Matt Cowger</b></sub></a><br /><a href=\"https://github.com/dwmkerr/mock-llm/commits?author=mcowger\" title=\"Code\">💻</a></td>\n    </tr>\n  </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome.\n","readmeFilename":"README.md"}