{"bin":{"pf":"dist/src/entrypoint.js","promptfoo":"dist/src/entrypoint.js"},"bugs":{"url":"https://github.com/promptfoo/promptfoo/issues"},"dist":{"shasum":"32926e36a0345cdd67adef19104317ec5a6eca9a","tarball":"https://registry.npmjs.org/promptfoo/-/promptfoo-0.124.1.tgz","fileCount":706,"integrity":"sha512-Y6fq/WGTL7lPvDsirNSmmmcPLhURwRao03iv8fCoLbFq6H1eqg5VVTmXiap5Jl+fiRaQQZXYMHb2N1gQm1tGyQ==","signatures":[{"sig":"MEQCIC726XlsfoCEEy/y4rqcdmIEVLGmxsF3NUZ/l4O36e58AiARUCnxMFAswmgA79kBM130XZONbjfQYmMq6n2dPTcJfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDiS0y27N/0sZFgpxqP2Ks9iWaXuyhwG4mSKGlbus68QAIgVUoP0IS2rWcWEg3o9eqXax4hN0BNlzO/34Jyyl7gcPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/promptfoo@0.124.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":31700958},"main":"./dist/src/index.js","name":"promptfoo","pnpm":{"onlyBuiltDependencies":["@huggingface/transformers","core-js","core-js-pure","esbuild","protobufjs","sharp"],"ignoredBuiltDependencies":[]},"type":"module","_from":"file:/home/runner/work/_temp/promptfoo-package/promptfoo-0.124.1.tgz","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"}}},"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":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","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}'","package:pack":"tsx scripts/packPackageArtifact.ts","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":"65fda267-241b-49a9-87ab-4acfa34625f1"}},"homepage":"https://promptfoo.dev","_resolved":"/home/runner/work/_temp/promptfoo-package/promptfoo-0.124.1.tgz","overrides":{"qs":">=6.15.2 <7.0.0","vite":"^8.0.16","jsdom":{"@asamuzakjp/css-color":"6.0.7"},"react":"^19.3.0","gaxios":"^8.0.0","uri-js":"npm:uri-js-replace","esbuild":"0.28.2","webpack":"5.111.1","mongoose":{"gcp-metadata":"^9.0.2"},"nunjucks":{"chokidar":"$chokidar"},"react-is":"^19.3.0","dompurify":"3.4.16","engine.io":{".":"6.6.11","ws":"$ws"},"lodash-es":"^4.18.1","react-dom":"^19.3.0","ip-address":"10.7.2","whatwg-url":"16.0.1","launch-editor":"2.14.1","monaco-editor":{".":"0.57.0","dompurify":"3.4.16"},"fast-xml-parser":"$fast-xml-parser","@cacheable/utils":">=2.5.0 <2.5.1","engine.io-client":{".":"6.6.7","ws":"$ws"},"socket.io-parser":">=4.2.7 <5","brace-expansion@5":"^5.0.6","minimatch@<=3.1.3":"3.1.5","socket.io-adapter":{".":"2.5.8","ws":"$ws"},"webpack-dev-server":{"express":"^4.22.2"},"react-router-config":{"react-router":"^5.3.4"},"serialize-javascript":">=7.1.2","@ai-sdk/provider-utils":{"undici":"$undici"},"@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"}},"_integrity":"sha512-Y6fq/WGTL7lPvDsirNSmmmcPLhURwRao03iv8fCoLbFq6H1eqg5VVTmXiap5Jl+fiRaQQZXYMHb2N1gQm1tGyQ==","repository":{"url":"git+https://github.com/promptfoo/promptfoo.git","type":"git"},"workspaces":["src/app","site"],"_npmVersion":"11.19.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.286","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","acorn":"^8.18.0","async":"^3.2.6","chalk":"^6.0.0","json5":"^2.2.3","saxes":"^6.0.0","dedent":"^1.7.2","http-z":"^8.1.1","mathjs":"^15.1.1","openai":"^7.20.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.2","winston":"^3.19.0","chokidar":"5.0.0","js-rouge":"^3.2.0","nunjucks":"^3.2.4","commander":"^15.0.0","csv-parse":"^7.0.3","keyv-file":"^5.3.3","lru-cache":"^11.5.3","minimatch":"^10.2.4","socket.io":"^4.8.4","cli-table3":"^0.6.5","protobufjs":"^8.7.2","simple-git":"^4.0.2","ajv-formats":"^3.0.1","compression":"^1.8.2","drizzle-orm":"^0.45.3","proxy-agent":"^8.0.0","signal-exit":"4.1.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.9.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.4","@anthropic-ai/sdk":"0.128.0","@hono/node-server":"2.1.1","@inquirer/confirm":"^6.0.8","binary-extensions":"^3.2.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-node":"^2.6.0","@apidevtools/json-schema-ref-parser":"^16.0.3","@opentelemetry/semantic-conventions":"^1.40.0","@opentelemetry/exporter-trace-otlp-http":"^0.222.0"},"typesVersions":{"*":{"contracts":["dist/src/contracts.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"knip":"~6.27.0","yaml":"^2.9.0","husky":"^9.1.7","tsdown":"0.23.0","vitest":"^5.0.2","prettier":"^3.8.1","@types/ws":"^8.18.1","pdf-parse":"^2.4.5","supertest":"^7.3.0","@types/pem":"^1.14.4","oxc-parser":"^0.151.0","playwright":"^1.63.0","typescript":"^7.0.0","@types/cors":"^2.8.19","@types/node":"^24.13.6","drizzle-kit":"^0.31.11","@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","@biomejs/biome":"2.5.14","@fal-ai/client":"~1.10.1","@openai/agents":"^0.14.1","@slack/web-api":"^8.1.1","@types/express":"^5.0.6","@azure/identity":"^4.13.3","@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.1","@types/supertest":"^7.0.0","playwright-extra":"^4.3.6","@aws-sdk/client-s3":"^3.1003.0","@types/compression":"^1.8.1","ibm-cloud-sdk-core":"^5.6.2","source-map-support":"^0.5.21","@types/cli-progress":"^3.11.6","@vitest/coverage-v8":"^5.0.2","@ibm-cloud/watsonx-ai":"^1.7.16","@types/proxy-from-env":"^1.0.4","@openai/codex-security":"^0.2.0","@types/source-map-support":"^0.5.10","@aws/bedrock-token-generator":"^1.1.0","@anthropic-ai/claude-agent-sdk":"0.3.283","@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"},"peerDependencies":{"playwright":"*","@openai/agents":"*","@slack/web-api":"*","@langfuse/client":"*","playwright-extra":"*","ibm-cloud-sdk-core":"*","@ibm-cloud/watsonx-ai":"*","@openai/codex-security":"^0.2.0","@huggingface/transformers":"*","puppeteer-extra-plugin-stealth":"*"},"optionalDependencies":{"pem":"~1.14.8","hono":"^4.13.9","sharp":"^0.35.5","jks-js":"^1.1.5","natural":"^8.1.1","pdf-parse":"^2.4.5","@fal-ai/client":"~1.10.1","@azure/identity":"^4.13.3","node-sql-parser":"^5.4.0","read-excel-file":"^9.3.9","@azure/msal-node":"^7.0.0","@opencode-ai/sdk":"^1.18.32","@openai/codex-sdk":"^0.156.1","@aws-sdk/client-s3":"^3.1003.0","@azure/ai-projects":"^2.1.1","@googleapis/sheets":"^18.0.1","@azure/storage-blob":"^12.31.0","google-auth-library":"^11.1.0","@modelcontextprotocol/sdk":"^1.32.0","@smithy/node-http-handler":"^4.4.14","@aws/bedrock-token-generator":"^1.1.0","@anthropic-ai/claude-agent-sdk":"0.3.283","@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","@modelcontextprotocol/server-filesystem":"2026.8.31"},"peerDependenciesMeta":{"playwright":{"optional":true},"@openai/agents":{"optional":true},"@slack/web-api":{"optional":true},"@langfuse/client":{"optional":true},"playwright-extra":{"optional":true},"ibm-cloud-sdk-core":{"optional":true},"@ibm-cloud/watsonx-ai":{"optional":true},"@openai/codex-security":{"optional":true},"@huggingface/transformers":{"optional":true},"puppeteer-extra-plugin-stealth":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/promptfoo_0.124.1_1791470930471_0.7352557810923117","host":"s3://npm-registry-packages-npm-production"},"_id":"promptfoo@0.124.1","version":"0.124.1"}