{"bin":{"pf":"dist/src/entrypoint.js","promptfoo":"dist/src/entrypoint.js"},"bugs":{"url":"https://github.com/promptfoo/promptfoo/issues"},"dist":{"shasum":"4ed9ce223915224fad7acc62a269e500144e480d","tarball":"https://registry.npmjs.org/promptfoo/-/promptfoo-0.122.0.tgz","fileCount":629,"integrity":"sha512-WdNErK7GuKnpVMvXqIVudeTvllx4Ir/dfqQeJuwTi4Cdve4XQVufDYrkFyBsaeVLtFBkznvLSxh4/VQeTqv3qg==","signatures":[{"sig":"MEQCIEwIXvyyvBn3HJKKteMnpR/edD36GExTJb3rZcRh6DIAAiB0K98XPnhObg0Ppjgll9jzu2ifHLqMiIIoqMTR+WjKEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/promptfoo@0.122.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29264883},"main":"./dist/src/index.js","name":"promptfoo","pnpm":{"onlyBuiltDependencies":["@huggingface/transformers","@playwright/browser-chromium","@swc/core","core-js","core-js-pure","esbuild","protobufjs","sharp"],"ignoredBuiltDependencies":[]},"type":"module","madge":{"detectiveOptions":{"ts":{"skipAsyncImports":true},"tsx":{"skipAsyncImports":true}}},"types":"dist/src/index.d.ts","author":{"name":"Ian Webster"},"engines":{"node":">=22.22.0"},"exports":{".":{"import":"./dist/src/index.js","require":"./dist/src/index.cjs"},"./contracts":{"import":{"types":"./dist/src/contracts.d.ts","default":"./dist/src/contracts.js"},"require":{"types":"./dist/src/contracts.d.cts","default":"./dist/src/contracts.cjs"}}},"gitHead":"7b898cbdb16205cb7f0e2994baa807d131eb2326","license":"MIT","scripts":{"f":"git diff --name-only --diff-filter=ACMRTUXB origin/main | grep -E '\\.(js|jsx|mjs|cjs|ts|tsx|json)$' | xargs npx @biomejs/biome check --write && git diff --name-only --diff-filter=ACMRTUXB origin/main | grep -E '\\.(css|scss|html|md|mdc|mdx|yaml|yml)$' | xargs prettier --write","l":"git diff --name-only --diff-filter=ACMRTUXB origin/main | grep -E '\\.(js|ts|tsx)$' | xargs npx @biomejs/biome lint --write","bin":"dist/src/entrypoint.js","dev":"concurrently \"npm run dev:server\" \"npm run dev:app\"","mcp":"node dist/src/entrypoint.js mcp","tsc":"tsc --noEmit","knip":"knip","lint":"npm run lint:src","test":"vitest run","build":"concurrently -g --kill-others-on-fail \"npm run tsc\" \"NODE_OPTIONS='--max-old-space-size=8192' tsdown\" \"npm run build:app\"","local":"tsx src/localEntrypoint.ts","format":"npx @biomejs/biome check --write . && prettier --write '**/*.{css,scss,html,md,mdc,mdx,yaml,yml}'","dev:app":"npm run dev --prefix src/app","lint:ci":"npx @biomejs/biome ci .","prepare":"husky || exit 0","depcheck":"depcheck --ignores=\"@types/*,@typescript/native,@biomejs/biome,prettier,shx,concurrently,madge,knip,vite,typescript,tshy,gcp-metadata,@actions/core,@actions/exec,@actions/github,@octokit/rest,@vitest/coverage-v8,langium,block-no-verify,yaml\" --ignore-dirs=\"dist,site,examples\"","lint:src":"npx @biomejs/biome lint src","test:app":"npm --prefix src/app run test --","audit:fix":"npm audit fix && npm audit fix --prefix src/app && npm audit fix --prefix site","build:app":"npm run build --prefix src/app","db:studio":"npx drizzle-kit studio","lint:site":"npx @biomejs/biome lint site","local:web":"npm run dev --prefix src/app","postbuild":"tsx scripts/postbuild.ts","storybook":"npm run storybook --prefix src/app","test:site":"npm run test --prefix site","db:migrate":"tsx src/migrate.ts","dev:server":"tsx watch src/server/index.ts","lint:tests":"npx @biomejs/biome lint test","preversion":"command -v gh >/dev/null 2>&1 || (echo \"Error: GitHub CLI required.\" && exit 1) && [ \"$(git rev-parse --abbrev-ref HEAD)\" = \"main\" ] || (echo \"Error: Must be on main branch to version\" && exit 1) && git pull origin main && git checkout -b \"chore/bump-version-$(date +%s)\"","test:smoke":"vitest run --config vitest.smoke.config.ts","test:watch":"vitest","build:clean":"shx rm -rf dist","build:watch":"NODE_OPTIONS='--max-old-space-size=8192' tsdown --watch","db:generate":"npx drizzle-kit generate","postversion":"npm run changelog:release && npm run citation:generate && git add CHANGELOG.md CITATION.cff && git commit --amend --no-edit && gh pr create --repo promptfoo/promptfoo --title \"chore: bump version $npm_package_version\" --body \"\"","test:vitest":"vitest run","format:check":"npx @biomejs/biome check && prettier --check '**/*.{css,scss,html,md,mdc,mdx,yaml,yml}'","openapi:check":"tsx scripts/generateOpenApi.ts --check","test:coverage":"vitest run --coverage && npm run test:coverage --prefix src/app","deps:ownership":"tsx scripts/reportDependencyOwnership.ts","prepublishOnly":"node -e \"if (!process.env.PROMPTFOO_POSTHOG_KEY) { console.error('Error: PROMPTFOO_POSTHOG_KEY must be set'); process.exit(1); }\" && npm run build:clean && npm run build","openapi:generate":"tsx scripts/generateOpenApi.ts","test:app:browser":"npm --prefix src/app run test:browser --","test:integration":"vitest run --config vitest.integration.config.ts","changelog:release":"node scripts/update-changelog-version.cjs","citation:generate":"tsx scripts/generateCitation.ts","test:vitest:watch":"vitest","architecture:check":"tsx scripts/checkArchitectureBoundaries.ts","jsonSchema:generate":"npx -y tsx scripts/generateJsonSchema.ts > site/static/config-schema.json && npx @biomejs/biome format --write site/static/config-schema.json","architecture:baseline":"tsx scripts/regenerateEdgeBaseline.ts","format:check:prettier":"prettier --check '**/*.{css,scss,html,md,mdc,mdx,yaml,yml}'","test:coverage:ratchet":"node --import tsx ./scripts/checkCoverageRatchets.ts","test:package-artifact":"tsx scripts/testPackageArtifact.ts","test:redteam:integration":"npm run build && ./test/redteam/integration/test.sh","check:typescript-coverage":"tsx scripts/checkTypeScriptCoverage.ts","modelAuditSchema:generate":"python3 scripts/generate_modelaudit_schema.py && npx @biomejs/biome format --write site/static/schemas/modelaudit site/static/examples/modelaudit"},"typings":"dist/src/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:65fda267-241b-49a9-87ab-4acfa34625f1"}},"homepage":"https://promptfoo.dev","overrides":{"*":{"react":"^19.2.4","esbuild":"0.28.1","chokidar":"5.0.0","react-dom":"^19.2.4","whatwg-url":"16.0.1"},"qs":">=6.15.2 <7.0.0","vite":"^8.0.16","jsdom":{"@asamuzakjp/css-color":"5.1.11"},"react":"^19.2.4","gaxios":"^7.1.4","uri-js":"npm:uri-js-replace","esbuild":"0.28.1","langium":{".":"4.3.1","chevrotain":"11.2.0","chevrotain-allstar":"0.4.4","@chevrotain/regexp-to-ast":"11.2.0"},"webpack":"5.109.0","chokidar":"5.0.0","mongoose":{"gcp-metadata":"^8.1.2"},"react-is":"^19.2.4","dompurify":"3.4.12","engine.io":{".":"6.6.9","ws":"$ws"},"lodash-es":"^4.18.1","react-dom":"^19.2.4","storybook":{"esbuild":"0.28.1"},"chevrotain":{".":"11.2.0","@chevrotain/gast":"11.2.0","@chevrotain/types":"11.2.0","@chevrotain/utils":"11.2.0","@chevrotain/cst-dts-gen":"13.0.0","@chevrotain/regexp-to-ast":"11.2.0"},"ip-address":"10.3.1","whatwg-url":"16.0.1","launch-editor":"2.14.1","monaco-editor":{".":"0.56.0","dompurify":"3.4.12"},"fast-xml-parser":"$fast-xml-parser","@cacheable/utils":">=2.5.0 <2.5.1","engine.io-client":{".":"6.6.6","ws":"$ws"},"socket.io-parser":">=4.2.7 <5","brace-expansion@5":"^5.0.6","https-proxy-agent":"^9.0.0","minimatch@<=3.1.3":"3.1.5","socket.io-adapter":{".":"2.5.8","ws":"$ws"},"chevrotain-allstar":{".":"0.4.4","chevrotain":"11.2.0"},"webpack-dev-server":{"express":"^4.22.2"},"serialize-javascript":">=7.0.5","@chevrotain/cst-dts-gen":{".":"13.0.0","@chevrotain/gast":"11.2.0","@chevrotain/types":"11.2.0"},"@isaacs/brace-expansion":">=5.0.1","@opentelemetry/sdk-logs":{"@opentelemetry/core":"2.10.0"},"@opentelemetry/resources":{"@opentelemetry/core":"2.10.0"},"@opentelemetry/sdk-metrics":{"@opentelemetry/core":"2.10.0"},"@opentelemetry/sdk-trace-base":{"@opentelemetry/core":"2.10.0"},"@opentelemetry/sdk-trace-node":{"@opentelemetry/core":"2.10.0"},"@opentelemetry/otlp-transformer":{"@opentelemetry/core":"2.10.0"},"@opentelemetry/otlp-exporter-base":{"@opentelemetry/core":"2.10.0"},"@opentelemetry/exporter-trace-otlp-http":{"@opentelemetry/core":"2.10.0"}},"repository":{"url":"git+https://github.com/promptfoo/promptfoo.git","type":"git"},"workspaces":["src/app","site"],"_npmVersion":"11.11.0","description":"LLM eval & testing toolkit","directories":{},"maintainers":[{"name":"sklein12","email":"sklein12@gmail.com"},{"name":"mdangelo","email":"michael.l.dangelo@gmail.com"},{"name":"ianw","email":"ianw_npm@ianww.com"},{"name":"justinbeckwith","email":"justin.beckwith@gmail.com"},{"name":"faizanminhas","email":"faizan1030@gmail.com"}],"_nodeVersion":"24.19.0","dependencies":{"ai":"^6.0.190","ws":"^8.21.1","ajv":"^8.18.0","ora":"^9.3.0","tsx":"^4.21.0","zod":"^4.3.6","cors":"^2.8.6","glob":"^13.0.6","keyv":"^5.6.0","rfdc":"^1.4.1","rxjs":"^7.8.2","async":"^3.2.6","chalk":"^5.6.2","execa":"^10.0.0","json5":"^2.2.3","saxes":"^6.0.0","dedent":"^1.7.2","dotenv":"^17.3.1","http-z":"^8.1.1","mathjs":"^15.1.1","openai":"^6.37.0","opener":"^1.5.2","parse5":"^8.0.0","semver":"^7.7.4","undici":">=7.29.0 <8","express":"^5.2.1","exsolve":"^1.0.8","js-yaml":"5.2.2","winston":"^3.19.0","chokidar":"5.0.0","debounce":"^3.0.0","js-rouge":"^3.2.0","nunjucks":"^3.2.4","@types/ws":"^8.18.1","commander":"^14.0.3","csv-parse":"^7.0.0","keyv-file":"^5.3.3","lru-cache":"^11.3.0","minimatch":"^10.2.4","socket.io":"^4.8.3","cli-table3":"^0.6.5","protobufjs":"^8.0.0","simple-git":"^3.33.0","ajv-formats":"^3.0.1","compression":"^1.8.1","drizzle-orm":"^0.45.1","proxy-agent":"^8.0.0","cli-progress":"^3.12.0","gcp-metadata":"^8.1.2","posthog-node":"~5.24.10","python-shell":"^5.0.0","cache-manager":">=7.2.8 <7.2.10","csv-stringify":"^6.7.0","@inquirer/core":"^11.1.5","@libsql/client":"^0.17.3","istextorbinary":"^9.5.0","proxy-from-env":"^2.1.0","@inquirer/input":"^5.0.8","fast-deep-equal":"^3.1.3","fast-xml-parser":"^5.7.1","text-extensions":"^3.1.0","@inquirer/editor":"^5.0.8","@inquirer/search":"^4.1.8","@inquirer/select":"^5.1.0","socket.io-client":"^4.8.3","@anthropic-ai/sdk":"0.115.0","@hono/node-server":"2.0.12","@inquirer/confirm":"^6.0.8","binary-extensions":"^3.1.0","@inquirer/checkbox":"^5.1.0","@opentelemetry/api":"^1.9.0","@opentelemetry/core":"2.10.0","fast-safe-stringify":"^2.1.1","fastest-levenshtein":"^1.0.16","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-trace-base":"^2.6.0","@opentelemetry/sdk-trace-node":"^2.6.0","@apidevtools/json-schema-ref-parser":"^15.3.1","@opentelemetry/semantic-conventions":"^1.40.0","@opentelemetry/exporter-trace-otlp-http":"^0.221.0"},"typesVersions":{"*":{"contracts":["dist/src/contracts.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","knip":"^6.0.0","yaml":"^2.9.0","husky":"^9.1.7","tsdown":"0.22.14","vitest":"^4.1.0","langium":"4.3.1","depcheck":"^1.4.7","prettier":"^3.8.1","pdf-parse":"^2.4.5","supertest":"^7.2.2","ts-dedent":"^2.2.0","@types/pem":"^1.14.4","playwright":"^1.60.0","typescript":"npm:@typescript/typescript6@^6.0.2","@types/cors":"^2.8.19","@types/node":"^24.12.0","drizzle-kit":"^0.31.10","@types/async":"^3.2.25","@types/jsdom":"^28.0.0","concurrently":"^9.2.3","@smithy/types":"^4.13.0","@types/opener":"^1.4.3","@types/semver":"^7.7.1","@aws-sdk/types":"^3.973.5","@biomejs/biome":"2.5.5","@fal-ai/client":"~1.10.1","@types/express":"^5.0.6","@azure/identity":"^4.13.0","@types/nunjucks":"^3.2.6","block-no-verify":"^1.2.0","node-sql-parser":"^5.4.0","read-excel-file":"^9.3.3","@langfuse/client":"^5.4.0","@types/pdf-parse":"^1.1.5","@types/supertest":"^7.0.0","playwright-extra":"^4.3.6","winston-transport":"^4.9.0","@aws-sdk/client-s3":"^3.1003.0","@types/compression":"^1.8.1","@typescript/native":"npm:typescript@^7.0.0","ibm-cloud-sdk-core":"^5.6.0","source-map-support":"^0.5.21","@types/cli-progress":"^3.11.6","@vitest/coverage-v8":"^4.1.0","@ibm-cloud/watsonx-ai":"^1.7.15","@types/proxy-from-env":"^1.0.4","@azure/openai-assistants":"^1.0.0-beta.6","@types/source-map-support":"^0.5.10","@anthropic-ai/claude-agent-sdk":"0.3.220","@asteasolutions/zod-to-openapi":"^9.1.0","puppeteer-extra-plugin-stealth":"^2.11.2","@aws-sdk/client-bedrock-runtime":"^3.1045.0","@aws-sdk/credential-provider-sso":"^3.972.16","@aws-sdk/client-sagemaker-runtime":"^3.1045.0","@aws-sdk/client-bedrock-agent-runtime":"^3.1045.0"},"optionalDependencies":{"pem":"~1.14.8","hono":"^4.12.34","sharp":"^0.35.3","jks-js":"^1.1.5","natural":"^8.1.1","@swc/core":"^1.15.46","pdf-parse":"^2.4.5","playwright":"^1.60.0","@fal-ai/client":"~1.10.1","@openai/agents":"^0.11.3","@slack/web-api":"^8.0.0","@azure/identity":"^4.13.0","node-sql-parser":"^5.4.0","read-excel-file":"^9.3.3","@azure/msal-node":"^5.2.0","@langfuse/client":"^5.4.0","@opencode-ai/sdk":"^1.14.33","playwright-extra":"^4.3.6","@openai/codex-sdk":"^0.144.0","@aws-sdk/client-s3":"^3.1003.0","@azure/ai-projects":"^2.1.1","@googleapis/sheets":"^13.0.1","ibm-cloud-sdk-core":"^5.6.0","@azure/storage-blob":"^12.31.0","google-auth-library":"^10.9.1","@swc/core-darwin-x64":"^1.15.46","@ibm-cloud/watsonx-ai":"^1.7.15","@swc/core-darwin-arm64":"^1.15.46","@swc/core-linux-x64-gnu":"^1.15.46","@azure/openai-assistants":"^1.0.0-beta.6","@swc/core-linux-x64-musl":"^1.15.46","@swc/core-win32-x64-msvc":"^1.15.46","@huggingface/transformers":"^4.0.0","@modelcontextprotocol/sdk":"^1.30.0","@smithy/node-http-handler":"^4.4.14","@playwright/browser-chromium":"^1.60.0","@rollup/rollup-linux-x64-gnu":"^4.62.0","@anthropic-ai/claude-agent-sdk":"0.3.220","@aws-sdk/client-bedrock-runtime":"^3.1045.0","@aws-sdk/credential-provider-sso":"^3.972.16","@aws-sdk/client-sagemaker-runtime":"^3.1045.0","@aws-sdk/client-bedrock-agent-runtime":"^3.1045.0"},"_npmOperationalInternal":{"tmp":"tmp/promptfoo_0.122.0_1785866254307_0.46484961216713105","host":"s3://npm-registry-packages-npm-production"},"_id":"promptfoo@0.122.0","version":"0.122.0"}