{"bin":{"pf":"dist/src/entrypoint.js","promptfoo":"dist/src/entrypoint.js"},"bugs":{"url":"https://github.com/promptfoo/promptfoo/issues"},"dist":{"shasum":"96a901bcc5c43d0b52b42144a49b3d77b1699e25","tarball":"https://registry.npmjs.org/promptfoo/-/promptfoo-0.123.1.tgz","fileCount":665,"integrity":"sha512-9WzFeH6L+5E49R6CTulBo/WzmVPNcMpvgUZAyEsNlaKgpfmF9vV82jKUG1rQ+QH79P7gYAaxeY3TvLDV+x0Cbg==","signatures":[{"sig":"MEQCIHzK7MSrsoei4mAWlztaIDxla9cWB66EXMtXCpOAMyftAiAlrVvQpzE8PcJ+6lIRST+JxYMntM0eiDKV/4Dr+is8fQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD4CPQOkgTqJutLPL3q8Px+iGsYi5HzcOGXcWeBZWbD2AIhAOD5ClPhrZRvdCnw9TVdrUrgAmdNvZ8LrPnkmrj+WVeV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/promptfoo@0.123.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32244718},"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":"34f74d34e140b5e17d23770dfb2340057b1936b8","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","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.2","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":"6.0.7"},"react":"^19.2.4","gaxios":"^8.0.0","uri-js":"npm:uri-js-replace","esbuild":"0.28.2","langium":{".":"4.3.1","chevrotain":"11.2.0","chevrotain-allstar":"0.4.4","@chevrotain/regexp-to-ast":"11.2.0"},"webpack":"5.110.3","chokidar":"5.0.0","mongoose":{"gcp-metadata":"^9.0.2"},"react-is":"^19.2.4","dompurify":"3.4.15","engine.io":{".":"6.6.10","ws":"$ws"},"lodash-es":"^4.18.1","react-dom":"^19.2.4","storybook":{"esbuild":"0.28.2"},"chevrotain":{".":"11.2.0","@chevrotain/gast":"11.2.0","@chevrotain/types":"11.2.0","@chevrotain/utils":"11.2.0","@chevrotain/cst-dts-gen":"11.2.0","@chevrotain/regexp-to-ast":"11.2.0"},"ip-address":"10.7.0","whatwg-url":"16.0.1","launch-editor":"2.14.1","monaco-editor":{".":"0.56.0","dompurify":"3.4.15"},"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","@ai-sdk/provider-utils":{"undici":"$undici"},"@chevrotain/cst-dts-gen":{".":"11.2.0","@chevrotain/gast":"11.2.0","@chevrotain/types":"11.2.0"},"@isaacs/brace-expansion":">=5.0.1","@opentelemetry/sdk-logs":{"@opentelemetry/core":"2.11.0"},"@opentelemetry/resources":{"@opentelemetry/core":"2.11.0"},"@opentelemetry/sdk-metrics":{"@opentelemetry/core":"2.11.0"},"@opentelemetry/sdk-trace-base":{"@opentelemetry/core":"2.11.0"},"@opentelemetry/sdk-trace-node":{"@opentelemetry/core":"2.11.0"},"@opentelemetry/otlp-transformer":{"@opentelemetry/core":"2.11.0"},"@opentelemetry/otlp-exporter-base":{"@opentelemetry/core":"2.11.0"},"@opentelemetry/exporter-trace-otlp-http":{"@opentelemetry/core":"2.11.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.21.0","dependencies":{"ai":"^6.0.264","ws":"^8.21.3","ajv":"^8.18.0","ora":"^9.3.0","tsx":"^4.23.11","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":"^6.0.0","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":"^7.1.0","opener":"^1.5.2","parse5":"^8.0.0","semver":"^7.7.4","undici":">=7.29.1 <8","express":"^5.2.1","exsolve":"^1.0.8","js-yaml":"5.4.1","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":"^15.0.0","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.7.2","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":"^9.0.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":"^12.0.0","@libsql/client":"^0.18.0","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.124.0","@hono/node-server":"2.1.1","@inquirer/confirm":"^6.0.8","binary-extensions":"^3.1.0","@inquirer/checkbox":"^5.1.0","@opentelemetry/api":"^1.9.0","@opentelemetry/core":"2.11.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":"^16.0.2","@opentelemetry/semantic-conventions":"^1.40.0","@opentelemetry/exporter-trace-otlp-http":"^0.222.0"},"typesVersions":{"*":{"contracts":["dist/src/contracts.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","knip":"~6.27.0","yaml":"^2.9.0","husky":"^9.1.7","tsdown":"0.23.0","vitest":"^5.0.0","langium":"4.3.1","prettier":"^3.8.1","pdf-parse":"^2.4.5","supertest":"^7.2.2","ts-dedent":"^2.2.0","@types/pem":"^1.14.4","oxc-parser":"^0.149.0","typescript":"^7.0.0","@types/cors":"^2.8.19","@types/node":"^24.12.0","drizzle-kit":"^0.31.10","@types/async":"^3.2.25","@types/jsdom":"^30.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.12","@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.9","@langfuse/client":"^5.11.0","@types/supertest":"^7.0.0","winston-transport":"^4.9.0","@aws-sdk/client-s3":"^3.1003.0","@types/compression":"^1.8.1","ibm-cloud-sdk-core":"^5.6.0","source-map-support":"^0.5.21","@types/cli-progress":"^3.11.6","@vitest/coverage-v8":"^5.0.0","@ibm-cloud/watsonx-ai":"^1.7.16","@types/proxy-from-env":"^1.0.4","@azure/openai-assistants":"^1.0.0-beta.6","@types/source-map-support":"^0.5.10","@aws/bedrock-token-generator":"^1.1.0","@anthropic-ai/claude-agent-sdk":"0.3.263","@asteasolutions/zod-to-openapi":"^9.1.0","@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.13.7","sharp":"^0.35.4","jks-js":"^1.1.5","natural":"^8.1.1","@swc/core":"^1.16.2","pdf-parse":"^2.4.5","playwright":"^1.63.0","@fal-ai/client":"~1.10.1","@openai/agents":"^0.11.3","@slack/web-api":"^8.1.1","@azure/identity":"^4.13.0","node-sql-parser":"^5.4.0","read-excel-file":"^9.3.9","@azure/msal-node":"^6.0.0","@langfuse/client":"^5.11.0","@opencode-ai/sdk":"^1.18.27","playwright-extra":"^4.3.6","@openai/codex-sdk":"^0.153.2","@aws-sdk/client-s3":"^3.1003.0","@azure/ai-projects":"^2.1.1","@googleapis/sheets":"^14.0.0","ibm-cloud-sdk-core":"^5.6.0","@azure/storage-blob":"^12.31.0","google-auth-library":"^11.0.2","@swc/core-darwin-x64":"^1.16.2","@ibm-cloud/watsonx-ai":"^1.7.16","@openai/codex-security":"^0.1.18","@swc/core-darwin-arm64":"^1.16.2","@swc/core-linux-x64-gnu":"^1.16.2","@azure/openai-assistants":"^1.0.0-beta.6","@swc/core-linux-x64-musl":"^1.16.2","@swc/core-win32-x64-msvc":"^1.16.2","@huggingface/transformers":"^4.0.0","@modelcontextprotocol/sdk":"^1.30.0","@smithy/node-http-handler":"^4.4.14","@aws/bedrock-token-generator":"^1.1.0","@playwright/browser-chromium":"^1.63.0","@rollup/rollup-linux-x64-gnu":"^4.63.1","@anthropic-ai/claude-agent-sdk":"0.3.263","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"},"_npmOperationalInternal":{"tmp":"tmp/promptfoo_0.123.1_1789694877270_0.23557754546303933","host":"s3://npm-registry-packages-npm-production"},"_id":"promptfoo@0.123.1","version":"0.123.1"}