{"_id":"@binkley/markdown-bdd-transpiler","_rev":"15-b044eb10f8869a5bda6310dd06312c1b","name":"@binkley/markdown-bdd-transpiler","dist-tags":{"latest":"0.6.0"},"versions":{"0.0.10":{"name":"@binkley/markdown-bdd-transpiler","version":"0.0.10","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.0.10","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"0876ebd0371759d7d3417b3a13ae8c7eba8b2876","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.0.10.tgz","fileCount":8,"integrity":"sha512-2U2zBiIbZC5ZkMIhhknZePOF5PzkiB5ztr69PQh/cWSTZ/eOPYc2Ac/MmgnYPFFaKHa06w7j+t31tvmmF142SQ==","signatures":[{"sig":"MEUCICRVVw1tU2snp4K+IFg45CrySJL69FLHipKZ/8+4Zwn6AiEA1wLHTNfB+7wbT9EL+Q+PLzaKADXKdKxGLCgUHagOY80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43512},"type":"module","engines":{"node":">=22.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"750b271e93087b5058b3d174c636d5db9fccb227","scripts":{"demo":"tsx demo-app.ts","lint":"npm run lint:js && npm run lint:sh","test":"playwright test","build":"tsc","format":"prettier --write .","lint:js":"eslint .","lint:sh":"shellcheck *.sh","prepare":"husky","pretest":"npm run build && node ./dist/transpile.js","type-check":"tsc --noEmit"},"_npmUser":{"name":"binkley","email":"binkley@alumni.rice.edu"},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.12.1","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"mri":"^1.2.0","marked":"^18.0.4","@google/genai":"^2.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","husky":"^9.1.7","eslint":"^10.4.0","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.0.0","typescript":"^6.0.3","@types/express":"^5.0.6","typescript-eslint":"^8.59.4","prettier-plugin-sh":"^0.18.1"},"peerDependencies":{"@playwright/test":"^1.60.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.0.10_1779448277461_0.5524827108294545","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@binkley/markdown-bdd-transpiler","version":"0.0.11","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.0.11","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"b583b0dc7697703198d311624bee52ffd7153b9a","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.0.11.tgz","fileCount":8,"integrity":"sha512-Z6a4nbImNxbX2bCCrD2ThlhPloRSce/7L9fekaqev2UbCFRFV1zW4Q2f6mHjo/2Tq2BD4QVQVUUwXM9Jhz6+Gw==","signatures":[{"sig":"MEQCIBer6LeSNjVV/UnRGkjqa1eKSk7ZmTMHlMzeg23jbXpIAiBE108puRwNXGMRbuqZB83Hoythm3SQg7P+bUfRJkcJ8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":43512},"type":"module","engines":{"node":">=22.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"d80a69c9a9fa909e454c74ac73d425563ce0f15c","scripts":{"demo":"tsx demo-app.ts","lint":"npm run lint:js && npm run lint:sh","test":"playwright test","build":"tsc","format":"prettier --write .","lint:js":"eslint .","lint:sh":"shellcheck *.sh","prepare":"husky","pretest":"npm run build && node ./dist/transpile.js","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.12.1","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"mri":"^1.2.0","marked":"^18.0.4","@google/genai":"^2.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","husky":"^9.1.7","eslint":"^10.4.0","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.0.0","typescript":"^6.0.3","@types/express":"^5.0.6","typescript-eslint":"^8.59.4","prettier-plugin-sh":"^0.18.1"},"peerDependencies":{"@playwright/test":"^1.60.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.0.11_1779448717336_0.7672761613909227","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@binkley/markdown-bdd-transpiler","version":"0.0.12","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.0.12","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"7c80f243c47168ba1fdb54cae27b4cf4655408c8","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.0.12.tgz","fileCount":8,"integrity":"sha512-WXYyFuRwIT7BC2ZRlQgrCkqgIJE1b1bzzq7SHEF1PwteVZrMlMEWS/lbCls+4wuJcv43MToIQSzTOJ6xDKAOQQ==","signatures":[{"sig":"MEUCIH0HZZrIUheBNr0quCfyenmg+KNveBw3JpN3hds0BEhIAiEA7VfywXdanGIuKRnYbgxRpFMgNQYl7Pu7WBQRqZswRfE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51224},"type":"module","engines":{"node":">=22.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"c4bf9f8dd04bbd5a032ddc1f3d695f77c2bdda51","scripts":{"demo":"tsx demo-app.ts","lint":"npm run lint:js && npm run lint:sh","test":"playwright test","build":"tsc","format":"prettier --write .","lint:js":"eslint .","lint:sh":"shellcheck *.sh","prepare":"husky","pretest":"npm run build && node ./dist/transpile.js","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.12.1","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"mri":"^1.2.0","marked":"^18.0.4","@google/genai":"^2.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","husky":"^9.1.7","eslint":"^10.4.0","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.0.0","typescript":"^6.0.3","@types/express":"^5.0.6","typescript-eslint":"^8.59.4","prettier-plugin-sh":"^0.18.1"},"peerDependencies":{"@playwright/test":"^1.60.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.0.12_1779462671502_0.18906376801906344","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@binkley/markdown-bdd-transpiler","version":"0.1.0","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.1.0","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"2537271f815bf91219ce9cd9490fcda991ea3eb5","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.1.0.tgz","fileCount":8,"integrity":"sha512-3ebjAkY3YuLOJu+xVJU7NLKmmwrc+LXgK5UDEkyKMrTPq5uQ0HsFevfw8yQt6YCEZNymnnKl+3BcMJf1rZpZTg==","signatures":[{"sig":"MEUCIBPJ8x5pMNAF4Tit3JhRf35CXGXKjj43FOtij2bBKMLDAiEA1BlblZsF/T90aujsMSjNJfKeJfrgNhnjBsf8VEcgshs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":58030},"type":"module","engines":{"node":">=22.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"e0df1e25d59b4ce638150f60783309f31b868833","scripts":{"demo":"tsx demo-app.ts","lint":"npm run lint:js && npm run lint:sh","test":"playwright test","build":"tsc","format":"prettier --write .","lint:js":"eslint .","lint:sh":"shellcheck *.sh","prepare":"husky","pretest":"npm run build && node ./dist/transpile.js","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.12.1","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"mri":"^1.2.0","remark":"^15.0.1","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@google/genai":"^2.5.0","unist-util-visit":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","husky":"^9.1.7","eslint":"^10.4.0","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.0.0","typescript":"^6.0.3","@types/mdast":"^4.0.4","@types/express":"^5.0.6","typescript-eslint":"^8.59.4","prettier-plugin-sh":"^0.18.1"},"peerDependencies":{"@playwright/test":"^1.60.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.1.0_1779544085268_0.5965663930202341","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@binkley/markdown-bdd-transpiler","version":"0.2.0","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.2.0","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"9dd9b17e3eb7d0d7da33e43646c03485d848df80","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.2.0.tgz","fileCount":8,"integrity":"sha512-q50KRbsyFwT4+z4pRVZwxUJ/9czcMgqHfUgHirkoQxNy7kaZmgqvURAJrYJN4qixkkvcdO/Th1vautkU17LR1A==","signatures":[{"sig":"MEUCIExwDLfFZwbIYg1zbXoJm9FGTnIS8BnEEE0F6eA3RAKQAiEA5YF62rGCdM7VLjiHX68S46vyMVeYb624dQH8lIEgk8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":69251},"type":"module","engines":{"node":">=22.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"6ef7f3af839868e0f332bcfab0e769543fc0b54c","scripts":{"demo":"tsx demo-app.ts","lint":"npm run lint:js && npm run lint:sh","test":"playwright test","build":"tsc","format":"prettier --write .","lint:js":"eslint .","lint:sh":"shellcheck *.sh","prepare":"husky","pretest":"npm run build && node ./dist/transpile.js","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.12.1","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ai":"^6.0.191","mri":"^1.2.0","zod":"^4.4.3","remark":"^15.0.1","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@google/genai":"^2.5.0","unist-util-visit":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","husky":"^9.1.7","eslint":"^10.4.0","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.0.0","typescript":"^6.0.3","@types/mdast":"^4.0.4","@ai-sdk/google":"^3.0.79","@ai-sdk/openai":"^3.0.65","@types/express":"^5.0.6","@ai-sdk/anthropic":"^3.0.79","typescript-eslint":"^8.59.4","prettier-plugin-sh":"^0.18.1"},"peerDependencies":{"@ai-sdk/google":"^1.1.0","@ai-sdk/openai":"^1.1.0","@playwright/test":"^1.60.0","@ai-sdk/anthropic":"^1.1.0"},"peerDependenciesMeta":{"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.2.0_1779557434946_0.6691122510670402","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@binkley/markdown-bdd-transpiler","version":"0.3.0","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.3.0","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"dc0aabe981c104d9350b9d74bf8c1b823dfa1120","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.3.0.tgz","fileCount":35,"integrity":"sha512-7B7sfbSaSCMK0DbkkSzhgGE311x/sT3qVKbArGSa/q6yVFxswFkGgFcK7NJy/2s1FEh18g64kht2y6A0Opy5xw==","signatures":[{"sig":"MEQCIEIXCUuCjc9EbzI0vvqN4xUka+x9BGdZCCe4xStDS1LSAiBffSDoNviEMS0jEm95vhkxkRqwTJ7y7gsDmElfGBQt2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":81044},"type":"module","engines":{"node":">=22.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"0c990b07703ec9d15b12d46f23f01db2be0c5f56","scripts":{"?":"npm run help","demo":"tsx demo-app.ts","help":"node scripts/help.js","lint":"npm run lint:js && npm run lint:sh","test":"npm run test:unit && npm run test:e2e","?demo":"echo \"Run the demo application locally\"","?lint":"echo \"Run both ESLint (JS/TS) and Shellcheck (Bash)\"","?test":"echo \"Run both fast unit tests and the full E2E suite\"","build":"tsc","?build":"echo \"Compile the TypeScript codebase to the dist/ directory\"","format":"prettier --write .","?format":"echo \"Format all files using Prettier\"","lint:js":"eslint .","lint:sh":"shellcheck scripts/*.sh","prepare":"husky","profile":"./scripts/run-and-time.sh","release":"./scripts/release.sh","?profile":"echo \"Benchmark the execution time of any arbitrary NPM command\"","?release":"echo \"Trigger a semantic version bump and NPM publish (Maintainers only)\"","test:e2e":"./scripts/test-e2e.sh","?test:e2e":"echo \"Boot Docker and run the full Playwright integration suite\"","postbuild":"tsx scripts/generate-schema.js","test:unit":"node --experimental-test-coverage --test-coverage-lines=98 --test-coverage-functions=97 --import tsx --test 'src/**/*.spec.ts'","transpile":"node ./dist/transpile.js","?test:unit":"echo \"Run fast native Node.js unit tests with coverage\"","?transpile":"echo \"Execute the compiled transpiler binary\"","type-check":"tsc --noEmit","?type-check":"echo \"Verify TypeScript type safety without emitting files\"","profile:e2e":"npm run profile -- profile-e2e npm run test:e2e","?profile:e2e":"echo \"Benchmark the Dockerized E2E test pipeline\"","validate:push":"./scripts/validate.sh --push","?validate:push":"echo \"Run the strict pre-push pipeline (includes E2E Docker tests)\"","test:playwright":"playwright test","validate:commit":"./scripts/validate.sh --commit","?validate:commit":"echo \"Run the fast pre-commit pipeline (skips Docker tests)\"","pretest:playwright":"npm run build && npm run transpile","// --- 🧪 TESTING --- //":"","// --- 🧹 LINT & FORMAT --- //":"","// --- 🛠️ BUILD & DEV --- //":"","// --- ⚙️ MAINTAINER OPS --- //":""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.12.1","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ai":"^6.0.191","mri":"^1.2.0","zod":"^4.4.3","remark":"^15.0.1","p-limit":"^7.3.0","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@google/genai":"^2.5.0","unist-util-visit":"^5.1.0","zod-to-json-schema":"^3.25.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","husky":"^9.1.7","eslint":"^10.4.0","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.0.0","typescript":"^6.0.3","@types/mdast":"^4.0.4","@ai-sdk/google":"^3.0.79","@ai-sdk/openai":"^3.0.65","@types/express":"^5.0.6","@types/p-limit":"^2.1.0","@ai-sdk/anthropic":"^3.0.79","typescript-eslint":"^8.59.4","prettier-plugin-sh":"^0.18.1"},"peerDependencies":{"@ai-sdk/google":"^1.1.0","@ai-sdk/openai":"^1.1.0","@playwright/test":"^1.60.0","@ai-sdk/anthropic":"^1.1.0"},"peerDependenciesMeta":{"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.3.0_1779644614172_0.19625329780368883","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@binkley/markdown-bdd-transpiler","version":"0.3.1","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.3.1","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"913d87bd78f8b68f0d99a101ef567b1df89deb8b","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.3.1.tgz","fileCount":35,"integrity":"sha512-vpsF5mdXvFJYLNUuBqGAfL8z8HlpjX5fSCdc5/bnXT76f1m39lZd7vYbUIsfM20N9nSi9kWzV74l4GbySNDB/Q==","signatures":[{"sig":"MEUCIDSX4+VSTtxtfhg1jQO/bf2PcZvn949kJe/d9cRLCURAAiEA2i/fhM2o6tfCO3qCZX/2H9Xi6Kar9Ow6IeRqsyiErtU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84815},"type":"module","engines":{"node":">=22.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"4ee418c100e0a3f095d106b9f09d566f816ab5a4","scripts":{"?":"npm run help","demo":"tsx demo-app.ts","help":"node scripts/help.js","lint":"npm run lint:js && npm run lint:sh","test":"npm run test:unit && npm run test:e2e","?demo":"echo \"Run the demo application locally\"","?lint":"echo \"Run both ESLint (JS/TS) and Shellcheck (Bash)\"","?test":"echo \"Run both fast unit tests and the full E2E suite\"","build":"tsc","?build":"echo \"Compile the TypeScript codebase to the dist/ directory\"","format":"prettier --write .","?format":"echo \"Format all files using Prettier\"","lint:js":"eslint .","lint:sh":"shellcheck scripts/*.sh","prepare":"husky","profile":"./scripts/run-and-time.sh","release":"./scripts/release.sh","?profile":"echo \"Benchmark the execution time of any arbitrary NPM command\"","?release":"echo \"Trigger a semantic version bump and NPM publish (Maintainers only)\"","test:e2e":"./scripts/test-e2e.sh","?test:e2e":"echo \"Boot Docker and run the full Playwright integration suite\"","postbuild":"tsx scripts/generate-schema.js","test:unit":"node --experimental-test-coverage --test-coverage-lines=98 --test-coverage-functions=97 --import tsx --test 'src/**/*.spec.ts'","transpile":"node ./dist/transpile.js","?test:unit":"echo \"Run fast native Node.js unit tests with coverage\"","?transpile":"echo \"Execute the compiled transpiler binary\"","type-check":"tsc --noEmit","?type-check":"echo \"Verify TypeScript type safety without emitting files\"","profile:e2e":"npm run profile -- profile-e2e npm run test:e2e","?profile:e2e":"echo \"Benchmark the Dockerized E2E test pipeline\"","validate:push":"./scripts/validate.sh --push","?validate:push":"echo \"Run the strict pre-push pipeline (includes E2E Docker tests)\"","test:playwright":"playwright test","validate:commit":"./scripts/validate.sh --commit","?validate:commit":"echo \"Run the fast pre-commit pipeline (skips Docker tests)\"","pretest:playwright":"npm run build && npm run transpile","// --- 🧪 TESTING --- //":"","// --- 🧹 LINT & FORMAT --- //":"","// --- 🛠️ BUILD & DEV --- //":"","// --- ⚙️ MAINTAINER OPS --- //":""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.12.1","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ai":"^6.0.191","mri":"^1.2.0","zod":"^4.4.3","remark":"^15.0.1","p-limit":"^7.3.0","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@google/genai":"^2.5.0","unist-util-visit":"^5.1.0","zod-to-json-schema":"^3.25.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","husky":"^9.1.7","eslint":"^10.4.0","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.0.0","typescript":"^6.0.3","@types/mdast":"^4.0.4","@ai-sdk/google":"^3.0.79","@ai-sdk/openai":"^3.0.65","@types/express":"^5.0.6","@types/p-limit":"^2.1.0","@ai-sdk/anthropic":"^3.0.79","typescript-eslint":"^8.59.4","prettier-plugin-sh":"^0.18.1"},"peerDependencies":{"@ai-sdk/google":"^1.1.0","@ai-sdk/openai":"^1.1.0","@playwright/test":"^1.60.0","@ai-sdk/anthropic":"^1.1.0"},"peerDependenciesMeta":{"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.3.1_1779709571084_0.7696743130483157","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@binkley/markdown-bdd-transpiler","version":"0.4.0","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.4.0","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"53cee1cb43687cc45d10fb57f103d8d20aa4e3f7","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.4.0.tgz","fileCount":35,"integrity":"sha512-InN0KCIKoD+XhzfDMvBKNIgNkn77pevPqJEgBylZRcrMlPXL1ZEiHDSPZB6xWMBHJaE56YEyhoHzn094GMMfxg==","signatures":[{"sig":"MEYCIQDiLdHBLdi5fU78tmZmzbnoa7GnGS18VyNh8kPyp6gMdwIhAPDMf/LLZ0I+2slRu+7NpO5yZP25RLz5G5+LAAMwTfLP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":88690},"type":"module","engines":{"node":">=22.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"b0e515a8c9f6800c9cb550fa203188ef72cbb0a5","scripts":{"?":"npm run help","demo":"tsx demo-app.ts","help":"node scripts/help.js","lint":"npm run lint:js && npm run lint:sh","test":"npm run test:unit && npm run test:e2e","?demo":"echo \"Run the demo application locally\"","?lint":"echo \"Run both ESLint (JS/TS) and Shellcheck (Bash)\"","?test":"echo \"Run both fast unit tests and the full E2E suite\"","build":"tsc","?build":"echo \"Compile the TypeScript codebase to the dist/ directory\"","format":"prettier --write .","?format":"echo \"Format all files using Prettier\"","lint:js":"eslint .","lint:sh":"shellcheck scripts/*.sh","prepare":"husky","profile":"./scripts/run-and-time.sh","release":"./scripts/release.sh","?profile":"echo \"Benchmark the execution time of any arbitrary NPM command\"","?release":"echo \"Trigger a semantic version bump and NPM publish (Maintainers only)\"","test:e2e":"./scripts/test-e2e.sh","?test:e2e":"echo \"Boot Docker and run the full Playwright integration suite\"","postbuild":"tsx scripts/generate-schema.js","test:unit":"node --experimental-test-coverage --test-coverage-lines=99 --test-coverage-branches=94 --test-coverage-functions=98 --import tsx --test 'src/**/*.spec.ts'","transpile":"node ./dist/transpile.js","?test:unit":"echo \"Run fast native Node.js unit tests with coverage\"","?transpile":"echo \"Execute the compiled transpiler binary\"","type-check":"tsc --noEmit","?type-check":"echo \"Verify TypeScript type safety without emitting files\"","cache:clear":"npm run transpile -- --clear-cache","profile:e2e":"npm run profile -- profile-e2e npm run test:e2e","?cache:clear":"echo \"Instantly wipe the AI cache file (bdd-cache.json) to an empty state without transpiling\"","?profile:e2e":"echo \"Benchmark the Dockerized E2E test pipeline\"","cache:ignore":"npm run transpile -- --ignore-cache","cache:update":"npm run transpile -- --update-cache","?cache:ignore":"echo \"Dry-run transpilation bypassing the cache (forces AI evaluation but does not save to disk)\"","?cache:update":"echo \"Surgically re-transpile specific files, overwriting their cache entries (e.g., npm run cache:update -- tests/login.md)\"","cache:refresh":"npm run cache:clear && npm run transpile","validate:push":"./scripts/validate.sh --push","?cache:refresh":"echo \"Wipe the cache and immediately re-transpile all files to rebuild it from scratch\"","?validate:push":"echo \"Run the strict pre-push pipeline (includes E2E Docker tests)\"","test:playwright":"playwright test","validate:commit":"./scripts/validate.sh --commit","?validate:commit":"echo \"Run the fast pre-commit pipeline (skips Docker tests)\"","// --- 🧪 TESTING --- //":"","// --- 🧹 LINT & FORMAT --- //":"","// --- 🛠️ BUILD & DEV --- //":"","// --- ⚙️ MAINTAINER OPS --- //":"","// --- 🧠 CACHE MANAGEMENT --- //":""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.13.0","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","remark":"^15.0.1","p-limit":"^7.3.0","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@google/genai":"^2.5.0","unist-util-visit":"^5.1.0","zod-to-json-schema":"^3.25.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","husky":"^9.1.7","eslint":"^10.4.0","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.0.0","typescript":"^6.0.3","@types/mdast":"^4.0.4","@ai-sdk/google":"^3.0.79","@ai-sdk/openai":"^3.0.65","@types/express":"^5.0.6","@types/p-limit":"^2.1.0","@ai-sdk/anthropic":"^3.0.79","typescript-eslint":"^8.59.4","prettier-plugin-sh":"^0.18.1"},"peerDependencies":{"@ai-sdk/google":"^1.1.0","@ai-sdk/openai":"^1.1.0","@playwright/test":"^1.60.0","@ai-sdk/anthropic":"^1.1.0"},"peerDependenciesMeta":{"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.4.0_1780064285208_0.769980182615376","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@binkley/markdown-bdd-transpiler","version":"0.5.0","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.5.0","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"8dc71d16c8367173354bf952deb67663061f9b3b","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.5.0.tgz","fileCount":41,"integrity":"sha512-yJqvDChx4NaYlC1ji1grcNt78m4OJi5B2ei2Vg1EmGiB8jb7Jqk6VObub9MyUOAbVlnvtdDLKwMPcRptO1lOjg==","signatures":[{"sig":"MEYCIQCGeNUBQO3pWIEuhIO6zWMXsmu5MzYdtoT2Ca/M1EIZSgIhAKRkpjwMfylghipaqHqNkaelckTMUpN92YJAScoZ5avB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94997},"type":"module","engines":{"node":">=22.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"fec59ea0a770a7947a285423c4b0e9a1eff1c58a","scripts":{"?":"npm run help","demo":"tsx demo-app.ts","help":"node scripts/help.js","lint":"npm run lint:js && npm run lint:sh","test":"npm run test:unit && npm run test:e2e","?demo":"echo \"Run the demo application locally\"","?lint":"echo \"Run both ESLint (JS/TS) and Shellcheck (Bash)\"","?test":"echo \"Run both fast unit tests and the full E2E suite\"","build":"tsc","?build":"echo \"Compile the TypeScript codebase to the dist/ directory\"","format":"prettier --write .","?format":"echo \"Format all files using Prettier\"","lint:js":"eslint .","lint:sh":"shellcheck scripts/*.sh","prepare":"husky","profile":"./scripts/run-and-time.sh","release":"./scripts/release.sh","?profile":"echo \"Benchmark the execution time of any arbitrary NPM command\"","?release":"echo \"Trigger a semantic version bump and NPM publish (Maintainers only)\"","test:e2e":"./scripts/test-e2e.sh","?test:e2e":"echo \"Boot Docker and run the full Playwright integration suite\"","postbuild":"tsx scripts/generate-schema.js","test:unit":"node --experimental-test-coverage --test-coverage-lines=96 --test-coverage-branches=94 --test-coverage-functions=97 --import tsx --test 'src/**/*.spec.ts'","transpile":"node ./dist/transpile.js","?test:unit":"echo \"Run fast native Node.js unit tests with coverage\"","?transpile":"echo \"Execute the compiled transpiler binary\"","type-check":"tsc --noEmit","?type-check":"echo \"Verify TypeScript type safety without emitting files\"","cache:clear":"npm run transpile -- --clear-cache","profile:e2e":"npm run profile -- profile-e2e npm run test:e2e","?cache:clear":"echo \"Instantly wipe the AI cache file (bdd-cache.json) to an empty state without transpiling\"","?profile:e2e":"echo \"Benchmark the Dockerized E2E test pipeline\"","cache:ignore":"npm run transpile -- --ignore-cache","cache:update":"npm run transpile -- --update-cache","?cache:ignore":"echo \"Dry-run transpilation bypassing the cache (forces AI evaluation but does not save to disk)\"","?cache:update":"echo \"Surgically re-transpile specific files, overwriting their cache entries (e.g., npm run cache:update -- tests/login.md)\"","cache:refresh":"npm run cache:clear && npm run transpile","validate:push":"./scripts/validate.sh --push","?cache:refresh":"echo \"Wipe the cache and immediately re-transpile all files to rebuild it from scratch\"","?validate:push":"echo \"Run the strict pre-push pipeline (includes E2E Docker tests)\"","test:playwright":"playwright test","validate:commit":"./scripts/validate.sh --commit","?validate:commit":"echo \"Run the fast pre-commit pipeline (skips Docker tests)\"","// --- 🧪 TESTING --- //":"","// --- 🧹 LINT & FORMAT --- //":"","// --- 🛠️ BUILD & DEV --- //":"","// --- ⚙️ MAINTAINER OPS --- //":"","// --- 🧠 CACHE MANAGEMENT --- //":""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.13.0","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","remark":"^15.0.1","p-limit":"^7.3.0","remark-parse":"^11.0.0","@google/genai":"^2.5.0","unist-util-visit":"^5.1.0","zod-to-json-schema":"^3.25.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","husky":"^9.1.7","eslint":"^10.4.0","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.0.0","typescript":"^6.0.3","@types/mdast":"^4.0.4","@ai-sdk/google":"^3.0.79","@ai-sdk/openai":"^3.0.65","@types/express":"^5.0.6","@types/p-limit":"^2.1.0","standard-version":"^9.5.0","@ai-sdk/anthropic":"^3.0.79","typescript-eslint":"^8.59.4","prettier-plugin-sh":"^0.18.1"},"peerDependencies":{"@ai-sdk/google":"^1.1.0","@ai-sdk/openai":"^1.1.0","@playwright/test":"^1.60.0","@ai-sdk/anthropic":"^1.1.0"},"peerDependenciesMeta":{"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.5.0_1780231346378_0.9528239260289635","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@binkley/markdown-bdd-transpiler","version":"0.5.1","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.5.1","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"20b4a032d425bc5f80c293ae9450b9b637d7f846","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.5.1.tgz","fileCount":41,"integrity":"sha512-hE/dts/r5B69iROYBPlU+JYxZFuDtvL61XVm04duBdJke+uarujbn66yFwkhMEM7JpnvUEx2sXBu3lxpLJmhzw==","signatures":[{"sig":"MEUCIGik7wjy99N0dTg4Ud+6YVfmjfB0i+p20NuPQculnffPAiEA4JkNjJCpIt2dbv+0hfbE+gkwWFhuYqVrE7rpm4/tAHg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102078},"type":"module","engines":{"node":">=22.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"7c40d7c008df6d69b5316b980712f506138d3a86","scripts":{"?":"npm run help","demo":"tsx demo-app.ts","help":"node scripts/help.js","lint":"npm run lint:js && npm run lint:sh","test":"npm run test:unit && npm run test:e2e","?demo":"echo \"Run the demo application locally\"","?lint":"echo \"Run both ESLint (JS/TS) and Shellcheck (Bash)\"","?test":"echo \"Run both fast unit tests and the full E2E suite\"","build":"tsc","?build":"echo \"Compile the TypeScript codebase to the dist/ directory\"","format":"prettier --write .","?format":"echo \"Format all files using Prettier\"","lint:js":"eslint .","lint:sh":"shellcheck scripts/*.sh","prepare":"husky","profile":"./scripts/run-and-time.sh","release":"./scripts/release.sh","?profile":"echo \"Benchmark the execution time of any arbitrary NPM command\"","?release":"echo \"Trigger a semantic version bump and NPM publish (Maintainers only)\"","test:e2e":"./scripts/test-e2e.sh","?test:e2e":"echo \"Boot Docker and run the full Playwright integration suite\"","postbuild":"tsx scripts/generate-schema.js","test:unit":"node --experimental-test-coverage --test-coverage-lines=96 --test-coverage-branches=94 --test-coverage-functions=97 --import tsx --test 'src/**/*.spec.ts'","transpile":"node ./dist/transpile.js","?test:unit":"echo \"Run fast native Node.js unit tests with coverage\"","?transpile":"echo \"Execute the compiled transpiler binary\"","type-check":"tsc --noEmit","?type-check":"echo \"Verify TypeScript type safety without emitting files\"","cache:clear":"npm run transpile -- --clear-cache","profile:e2e":"npm run profile -- profile-e2e npm run test:e2e","?cache:clear":"echo \"Instantly wipe the AI cache file (bdd-cache.json) to an empty state without transpiling\"","?profile:e2e":"echo \"Benchmark the Dockerized E2E test pipeline\"","cache:ignore":"npm run transpile -- --ignore-cache","cache:update":"npm run transpile -- --update-cache","?cache:ignore":"echo \"Dry-run transpilation bypassing the cache (forces AI evaluation but does not save to disk)\"","?cache:update":"echo \"Surgically re-transpile specific files, overwriting their cache entries (e.g., npm run cache:update -- tests/login.md)\"","cache:refresh":"npm run cache:clear && npm run transpile","validate:push":"./scripts/validate.sh --push","?cache:refresh":"echo \"Wipe the cache and immediately re-transpile all files to rebuild it from scratch\"","?validate:push":"echo \"Run the strict pre-push pipeline (includes E2E Docker tests)\"","test:playwright":"playwright test","validate:commit":"./scripts/validate.sh --commit","?validate:commit":"echo \"Run the fast pre-commit pipeline (skips Docker tests)\"","// --- 🧪 TESTING --- //":"","// --- 🧹 LINT & FORMAT --- //":"","// --- 🛠️ BUILD & DEV --- //":"","// --- ⚙️ MAINTAINER OPS --- //":"","// --- 🧠 CACHE MANAGEMENT --- //":""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.13.0","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","remark":"^15.0.1","p-limit":"^7.3.0","remark-parse":"^11.0.0","@google/genai":"^2.5.0","unist-util-visit":"^5.1.0","zod-to-json-schema":"^3.25.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","husky":"^9.1.7","eslint":"^10.4.0","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.0.0","typescript":"^6.0.3","@types/mdast":"^4.0.4","@ai-sdk/google":"^3.0.79","@ai-sdk/openai":"^3.0.65","@types/express":"^5.0.6","@types/p-limit":"^2.1.0","standard-version":"^9.5.0","@ai-sdk/anthropic":"^3.0.79","typescript-eslint":"^8.59.4","prettier-plugin-sh":"^0.18.1"},"peerDependencies":{"@ai-sdk/google":"^1.1.0","@ai-sdk/openai":"^1.1.0","@playwright/test":"^1.60.0","@ai-sdk/anthropic":"^1.1.0"},"peerDependenciesMeta":{"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.5.1_1780323219476_0.16475530184198628","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@binkley/markdown-bdd-transpiler","version":"0.5.2","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.5.2","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"d0cefe42850cdd0d60d9431c8ae6a69a737d8cf3","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.5.2.tgz","fileCount":41,"integrity":"sha512-MgSLudBn8CxUihcFuS1Z8uSz5Ph0Aubdl0s/YvFPmQZAG55x73CoH9+RmfIfaKUTHpFRjeCpBiRw/iE9RWdPxw==","signatures":[{"sig":"MEUCIGJcgxluxXtFaAWzOXJkvqNmkqMgRU7vGU019gPUbuWTAiEAkCraGleFw5Fgn03Cxvz+hiwCd4kbQ8Mq3/ZAfNiWrsA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102088},"type":"module","engines":{"node":">=22.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"a4c5832d10056aca622205b7030f49971c70698c","scripts":{"?":"npm run help","demo":"tsx demo-app.ts","help":"node scripts/help.js","lint":"npm run lint:js && npm run lint:sh","test":"npm run test:unit && npm run test:e2e","?demo":"echo \"Run the demo application locally\"","?lint":"echo \"Run both ESLint (JS/TS) and Shellcheck (Bash)\"","?test":"echo \"Run both fast unit tests and the full E2E suite\"","build":"tsc","?build":"echo \"Compile the TypeScript codebase to the dist/ directory\"","format":"prettier --write .","?format":"echo \"Format all files using Prettier\"","lint:js":"eslint .","lint:sh":"shellcheck scripts/*.sh","prepare":"husky","profile":"./scripts/run-and-time.sh","release":"./scripts/release.sh","?profile":"echo \"Benchmark the execution time of any arbitrary NPM command\"","?release":"echo \"Trigger a semantic version bump and NPM publish (Maintainers only)\"","test:e2e":"./scripts/test-e2e.sh","?test:e2e":"echo \"Boot Docker and run the full Playwright integration suite\"","postbuild":"tsx scripts/generate-schema.js","test:unit":"node --experimental-test-coverage --test-coverage-lines=96 --test-coverage-branches=94 --test-coverage-functions=97 --import tsx --test 'src/**/*.spec.ts'","transpile":"node ./dist/transpile.js","?test:unit":"echo \"Run fast native Node.js unit tests with coverage\"","?transpile":"echo \"Execute the compiled transpiler binary\"","type-check":"tsc --noEmit","?type-check":"echo \"Verify TypeScript type safety without emitting files\"","cache:clear":"npm run transpile -- --clear-cache","profile:e2e":"npm run profile -- profile-e2e npm run test:e2e","?cache:clear":"echo \"Instantly wipe the AI cache file (bdd-cache.json) to an empty state without transpiling\"","?profile:e2e":"echo \"Benchmark the Dockerized E2E test pipeline\"","cache:ignore":"npm run transpile -- --ignore-cache","cache:update":"npm run transpile -- --update-cache","?cache:ignore":"echo \"Dry-run transpilation bypassing the cache (forces AI evaluation but does not save to disk)\"","?cache:update":"echo \"Surgically re-transpile specific files, overwriting their cache entries (e.g., npm run cache:update -- tests/login.md)\"","cache:refresh":"npm run cache:clear && npm run transpile","validate:push":"./scripts/validate.sh --push","?cache:refresh":"echo \"Wipe the cache and immediately re-transpile all files to rebuild it from scratch\"","?validate:push":"echo \"Run the strict pre-push pipeline (includes E2E Docker tests)\"","test:playwright":"playwright test","validate:commit":"./scripts/validate.sh --commit","?validate:commit":"echo \"Run the fast pre-commit pipeline (skips Docker tests)\"","// --- 🧪 TESTING --- //":"","// --- 🧹 LINT & FORMAT --- //":"","// --- 🛠️ BUILD & DEV --- //":"","// --- ⚙️ MAINTAINER OPS --- //":"","// --- 🧠 CACHE MANAGEMENT --- //":""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.13.0","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ai":"^6.0.193","zod":"^4.4.3","remark":"^15.0.1","p-limit":"^7.3.0","remark-parse":"^11.0.0","@google/genai":"^2.7.0","unist-util-visit":"^5.1.0","zod-to-json-schema":"^3.25.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","husky":"^9.1.7","eslint":"^10.4.1","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.1.0","typescript":"^6.0.3","@types/mdast":"^4.0.4","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.67","@types/express":"^5.0.6","@types/p-limit":"^2.1.0","@ai-sdk/anthropic":"^3.0.81","typescript-eslint":"^8.60.0","prettier-plugin-sh":"^0.18.1","commit-and-tag-version":"^12.7.3"},"peerDependencies":{"@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.67","@playwright/test":"^1.60.0","@ai-sdk/anthropic":"^3.0.81"},"peerDependenciesMeta":{"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.5.2_1780329293604_0.6716270454131861","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@binkley/markdown-bdd-transpiler","version":"0.5.4","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.5.4","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"d4103fa5f20665b3f3f3abee33e1e85897713023","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.5.4.tgz","fileCount":41,"integrity":"sha512-CQsK/+6UJbF1vVsFRjfVxrUoM4uP6F2YKecODphIcuuWwOytc/8hsvw7TzIrB1rDM2TBR8kHaA0r5geEAkRZhw==","signatures":[{"sig":"MEUCIQC1Mf55DqQ3UOhxb3mvGl6Tyh3rZFMJN1pTEe/HrkPaWAIgImTy8qRcgVNJ+3rIQ7A8GwkT81+tdpUfHHnAnXbGA9s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102376},"type":"module","engines":{"node":">=20.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"0d7c559d0de7e230061d7e86878278d9c18d1e23","scripts":{"?":"npm run help","demo":"tsx demo-app.ts","help":"node scripts/help.js","lint":"npm run lint:js && npm run lint:sh","test":"npm run test:unit && npm run test:e2e","?demo":"echo \"Run the demo application locally\"","?lint":"echo \"Run both ESLint (JS/TS) and Shellcheck (Bash)\"","?test":"echo \"Run both fast unit tests and the full E2E suite\"","build":"tsc","?build":"echo \"Compile the TypeScript codebase to the dist/ directory\"","format":"prettier --write .","?format":"echo \"Format all files using Prettier\"","lint:js":"eslint .","lint:sh":"shellcheck scripts/*.sh","prepare":"husky","profile":"./scripts/run-and-time.sh","release":"./scripts/release.sh","?profile":"echo \"Benchmark the execution time of any arbitrary NPM command\"","?release":"echo \"Trigger a semantic version bump and NPM publish (Maintainers only)\"","test:e2e":"./scripts/test-e2e.sh","?test:e2e":"echo \"Boot Docker and run the full Playwright integration suite\"","postbuild":"tsx scripts/generate-schema.js","test:unit":"node --experimental-test-coverage --test-coverage-lines=96 --test-coverage-branches=94 --test-coverage-functions=97 --import tsx --test 'src/**/*.spec.ts'","transpile":"node ./dist/transpile.js","?test:unit":"echo \"Run fast native Node.js unit tests with coverage\"","?transpile":"echo \"Execute the compiled transpiler binary\"","type-check":"tsc --noEmit","?type-check":"echo \"Verify TypeScript type safety without emitting files\"","cache:clear":"npm run transpile -- --clear-cache","profile:e2e":"npm run profile -- profile-e2e npm run test:e2e","?cache:clear":"echo \"Instantly wipe the AI cache file (bdd-cache.json) to an empty state without transpiling\"","?profile:e2e":"echo \"Benchmark the Dockerized E2E test pipeline\"","cache:ignore":"npm run transpile -- --ignore-cache","cache:update":"npm run transpile -- --update-cache","?cache:ignore":"echo \"Dry-run transpilation bypassing the cache (forces AI evaluation but does not save to disk)\"","?cache:update":"echo \"Surgically re-transpile specific files, overwriting their cache entries (e.g., npm run cache:update -- tests/login.md)\"","cache:refresh":"npm run cache:clear && npm run transpile","validate:push":"./scripts/validate.sh --push","?cache:refresh":"echo \"Wipe the cache and immediately re-transpile all files to rebuild it from scratch\"","?validate:push":"echo \"Run the strict pre-push pipeline (includes E2E Docker tests)\"","test:playwright":"playwright test","validate:commit":"./scripts/validate.sh --commit","?validate:commit":"echo \"Run the fast pre-commit pipeline (skips Docker tests)\"","// --- 🧪 TESTING --- //":"","// --- 🧹 LINT & FORMAT --- //":"","// --- 🛠️ BUILD & DEV --- //":"","// --- ⚙️ MAINTAINER OPS --- //":"","// --- 🧠 CACHE MANAGEMENT --- //":""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.13.0","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ai":"^6.0.193","zod":"^4.4.3","remark":"^15.0.1","p-limit":"^7.3.0","remark-parse":"^11.0.0","@google/genai":"^2.7.0","unist-util-visit":"^5.1.0","zod-to-json-schema":"^3.25.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","husky":"^9.1.7","eslint":"^10.4.1","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.1.0","typescript":"^6.0.3","@types/mdast":"^4.0.4","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.67","@types/express":"^5.0.6","@types/p-limit":"^2.1.0","@ai-sdk/anthropic":"^3.0.81","typescript-eslint":"^8.60.0","prettier-plugin-sh":"^0.18.1","commit-and-tag-version":"^12.7.3"},"peerDependencies":{"@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.67","@playwright/test":"^1.60.0","@ai-sdk/anthropic":"^3.0.81"},"peerDependenciesMeta":{"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.5.4_1780419156745_0.21491726342218875","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@binkley/markdown-bdd-transpiler","version":"0.5.5","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.5.5","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"a0e0f0a2033e9f720e8c8d540b650acf0732e57a","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.5.5.tgz","fileCount":41,"integrity":"sha512-m1C+aAfQWkB3J3ETOaa+DHJjpmNj0bEFTt/hLAOwkeHxU61pREDg5fVTiGACCvivblQDx09jegMNf7FrtVAWOg==","signatures":[{"sig":"MEYCIQCk1s0oAid21ZxajHR3atmrbTmVi12ocWC55HUeDdr0wAIhAMEBthnJ354hgvhp16a+29LMzORrFV2zJnHgGntNw7Hv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.5.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":104979},"type":"module","engines":{"node":">=20.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"5a4954070732e82fe21aa516e60d08d8081b6b0e","scripts":{"?":"npm run help","demo":"tsx demo-app.ts","help":"node scripts/help.js","lint":"npm run lint:js && npm run lint:sh","test":"npm run test:unit && npm run test:e2e","?demo":"echo \"Run the demo application locally\"","?lint":"echo \"Run both ESLint (JS/TS) and Shellcheck (Bash)\"","?test":"echo \"Run both fast unit tests and the full E2E suite\"","build":"tsc","?build":"echo \"Compile the TypeScript codebase to the dist/ directory\"","format":"prettier --write .","?format":"echo \"Format all files using Prettier\"","lint:js":"eslint .","lint:sh":"shellcheck scripts/*.sh","prepare":"husky","profile":"./scripts/run-and-time.sh","release":"./scripts/release.sh","?profile":"echo \"Benchmark the execution time of any arbitrary NPM command\"","?release":"echo \"Trigger a semantic version bump and NPM publish (Maintainers only)\"","test:e2e":"./scripts/test-e2e.sh","?test:e2e":"echo \"Boot Docker and run the full Playwright integration suite\"","postbuild":"tsx scripts/generate-schema.js","test:unit":"node --experimental-test-coverage --test-coverage-lines=96 --test-coverage-branches=95 --test-coverage-functions=98 --import tsx --test 'src/**/*.spec.ts'","transpile":"node ./dist/transpile.js","?test:unit":"echo \"Run fast native Node.js unit tests with coverage\"","?transpile":"echo \"Execute the compiled transpiler binary\"","type-check":"tsc --noEmit","?type-check":"echo \"Verify TypeScript type safety without emitting files\"","cache:clear":"npm run transpile -- --clear-cache","profile:e2e":"npm run profile -- profile-e2e npm run test:e2e","?cache:clear":"echo \"Instantly wipe the AI cache file (bdd-cache.json) to an empty state without transpiling\"","?profile:e2e":"echo \"Benchmark the Dockerized E2E test pipeline\"","cache:ignore":"npm run transpile -- --ignore-cache","cache:update":"npm run transpile -- --update-cache","?cache:ignore":"echo \"Dry-run transpilation bypassing the cache (forces AI evaluation but does not save to disk)\"","?cache:update":"echo \"Surgically re-transpile specific files, overwriting their cache entries (e.g., npm run cache:update -- tests/login.md)\"","cache:refresh":"npm run cache:clear && npm run transpile","validate:push":"./scripts/validate.sh --push","?cache:refresh":"echo \"Wipe the cache and immediately re-transpile all files to rebuild it from scratch\"","?validate:push":"echo \"Run the strict pre-push pipeline (includes E2E Docker tests)\"","test:playwright":"playwright test","validate:commit":"./scripts/validate.sh --commit","?validate:commit":"echo \"Run the fast pre-commit pipeline (skips Docker tests)\"","// --- 🧪 TESTING --- //":"","// --- 🧹 LINT & FORMAT --- //":"","// --- 🛠️ BUILD & DEV --- //":"","// --- ⚙️ MAINTAINER OPS --- //":"","// --- 🧠 CACHE MANAGEMENT --- //":""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.13.0","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ai":"^6.0.193","zod":"^4.4.3","remark":"^15.0.1","p-limit":"^7.3.0","remark-parse":"^11.0.0","@google/genai":"^2.7.0","unist-util-visit":"^5.1.0","zod-to-json-schema":"^3.25.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","husky":"^9.1.7","eslint":"^10.4.1","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.1.0","typescript":"^6.0.3","@types/mdast":"^4.0.4","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.67","@types/express":"^5.0.6","@types/p-limit":"^2.1.0","@ai-sdk/anthropic":"^3.0.81","typescript-eslint":"^8.60.0","prettier-plugin-sh":"^0.18.1","commit-and-tag-version":"^12.7.3"},"peerDependencies":{"@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.67","@playwright/test":"^1.60.0","@ai-sdk/anthropic":"^3.0.81"},"peerDependenciesMeta":{"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.5.5_1780497204526_0.4627486838506174","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@binkley/markdown-bdd-transpiler","version":"0.5.6","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"url":"binkley","name":"B. K. Oxley","email":"binkley@alumni.rice.edu"},"license":"CC0-1.0","_id":"@binkley/markdown-bdd-transpiler@0.5.6","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"bin":{"markdown-bdd":"dist/transpile.js"},"dist":{"shasum":"d6d482e05a06e29db8f8cf9ece394a0ed5caba22","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.5.6.tgz","fileCount":58,"integrity":"sha512-gFrluG31iWlIYi41wHAlay076cxxM2fmT+ujU0tcXy18OGnW4z/ZSNfQA4n91H49i4aO4FZLDlpkEVxB/NpG/w==","signatures":[{"sig":"MEYCIQDnQ4RYO4PQv3ngh0DXjBR1FbD5ZK2e1QxHd14jSpgEFwIhAP4WdUQ8YRmijH1X8DAukuRRZa37UTVOZJ7Uc7HIuXIA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.5.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":144996},"type":"module","engines":{"node":">=20.0.0"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"gitHead":"69d260a1d1ba2c014362d8ee965be7f0c6860af8","scripts":{"?":"npm run help","demo":"tsx demo-app.ts","help":"node scripts/help.js","lint":"npm run lint:js && npm run lint:sh","test":"npm run test:unit && npm run test:e2e","?demo":"echo \"Run the demo application locally\"","?lint":"echo \"Run both ESLint (JS/TS) and Shellcheck (Bash)\"","?test":"echo \"Run both fast unit tests and the full E2E suite\"","build":"tsc","?build":"echo \"Compile the TypeScript codebase to the dist/ directory\"","format":"prettier --write .","?format":"echo \"Format all files using Prettier\"","lint:js":"eslint .","lint:sh":"shellcheck scripts/*.sh","prepare":"husky","profile":"./scripts/run-and-time.sh","release":"./scripts/release.sh","?profile":"echo \"Benchmark the execution time of any arbitrary NPM command\"","?release":"echo \"Trigger a semantic version bump and NPM publish (Maintainers only)\"","test:e2e":"./scripts/test-e2e.sh","?test:e2e":"echo \"Boot Docker and run the full Playwright integration suite\"","postbuild":"tsx scripts/generate-schema.js","test:unit":"node --experimental-test-coverage --test-coverage-lines=96 --test-coverage-branches=94 --test-coverage-functions=98 --import tsx --test 'src/**/*.spec.ts'","transpile":"node ./dist/transpile.js","?test:unit":"echo \"Run fast native Node.js unit tests with coverage\"","?transpile":"echo \"Execute the compiled transpiler binary\"","type-check":"tsc --noEmit","?type-check":"echo \"Verify TypeScript type safety without emitting files\"","cache:clear":"npm run transpile -- --clear-cache","profile:e2e":"npm run profile -- profile-e2e npm run test:e2e","?cache:clear":"echo \"Instantly wipe the AI cache file (bdd-cache.json) to an empty state without transpiling\"","?profile:e2e":"echo \"Benchmark the Dockerized E2E test pipeline\"","cache:ignore":"npm run transpile -- --ignore-cache","cache:update":"npm run transpile -- --update-cache","test:example":"./scripts/test-e2e.sh example-bdd-markdown-test.md","?cache:ignore":"echo \"Dry-run transpilation bypassing the cache (forces AI evaluation but does not save to disk)\"","?cache:update":"echo \"Surgically re-transpile specific files, overwriting their cache entries (e.g., npm run cache:update -- tests/login.md)\"","?test:example":"echo \"Test the tutorial example BDD file to ensure the tutorial works\"","cache:refresh":"npm run cache:clear && npm run transpile","validate:push":"./scripts/validate.sh --push","?cache:refresh":"echo \"Wipe the cache and immediately re-transpile all files to rebuild it from scratch\"","?validate:push":"echo \"Run the strict pre-push pipeline (includes E2E Docker tests)\"","test:playwright":"playwright test","validate:commit":"./scripts/validate.sh --commit","?validate:commit":"echo \"Run the fast pre-commit pipeline (skips Docker tests)\"","// --- 🧪 TESTING --- //":"","// --- 🧹 LINT & FORMAT --- //":"","// --- 🛠️ BUILD & DEV --- //":"","// --- ⚙️ MAINTAINER OPS --- //":"","// --- 🧠 CACHE MANAGEMENT --- //":""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"repository":{"url":"git+https://github.com/binkley/markdown-bdd-transpiler.git","type":"git"},"_npmVersion":"11.13.0","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ai":"^6.0.193","zod":"^4.4.3","remark":"^15.0.1","p-limit":"^7.3.0","remark-parse":"^11.0.0","unist-util-visit":"^5.1.0","zod-to-json-schema":"^3.25.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","husky":"^9.1.7","eslint":"^10.4.1","express":"^5.2.1","globals":"^17.6.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","shellcheck":"^3.1.0","typescript":"^6.0.3","@types/node":"^25.9.1","@types/mdast":"^4.0.4","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.67","@types/express":"^5.0.6","@types/p-limit":"^2.1.0","@ai-sdk/anthropic":"^3.0.81","typescript-eslint":"^8.60.0","prettier-plugin-sh":"^0.18.1","commit-and-tag-version":"^12.7.3"},"peerDependencies":{"typescript":"^6.0.3","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.67","@playwright/test":"^1.60.0","@ai-sdk/anthropic":"^3.0.81"},"peerDependenciesMeta":{"typescript":{"optional":true},"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/markdown-bdd-transpiler_0.5.6_1781622832511_0.31437462380303605","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@binkley/markdown-bdd-transpiler","version":"0.6.0","description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"author":{"name":"B. K. Oxley","email":"binkley@alumni.rice.edu","url":"binkley"},"homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"engines":{"node":">=20.0.0"},"type":"module","license":"CC0-1.0","repository":{"type":"git","url":"git+https://github.com/binkley/markdown-bdd-transpiler.git"},"bin":{"markdown-bdd":"dist/transpile.js"},"exports":{"./framework":"./dist/framework/standard-ui-steps.js"},"dependencies":{"ai":"^6.0.193","p-limit":"^7.3.0","remark":"^15.0.1","remark-parse":"^11.0.0","unist-util-visit":"^5.1.0","zod":"^4.4.3","zod-to-json-schema":"^3.25.2"},"peerDependencies":{"@ai-sdk/anthropic":"^3.0.81","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.67","@playwright/test":"^1.60.0","typescript":"^6.0.3"},"peerDependenciesMeta":{"@ai-sdk/anthropic":{"optional":true},"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"typescript":{"optional":true}},"devDependencies":{"@ai-sdk/anthropic":"^3.0.81","@ai-sdk/google":"^3.0.84","@ai-sdk/openai":"^3.0.67","@eslint/js":"^10.0.1","@playwright/test":"^1.61.1","@types/express":"^5.0.6","@types/mdast":"^4.0.4","@types/node":"^25.9.1","@types/p-limit":"^2.1.0","commit-and-tag-version":"^12.7.3","eslint":"^10.4.1","express":"^5.2.1","globals":"^17.6.0","husky":"^9.1.7","prettier":"^3.8.3","prettier-plugin-sh":"^0.18.1","shellcheck":"^1.1.0","tsx":"^4.22.4","typescript":"^6.0.3","typescript-eslint":"^8.60.0"},"scripts":{"help":"node scripts/help.js","?":"npm run help","// --- 🛠️ BUILD & DEV --- //":"","?build":"echo \"Compile the TypeScript codebase to the dist/ directory\"","build":"tsc","postbuild":"tsx scripts/generate-schema.js","?demo":"echo \"Run the demo application locally\"","demo":"tsx demo-app.ts","?transpile":"echo \"Execute the compiled transpiler binary\"","transpile":"node ./dist/transpile.js","// --- 🧹 LINT & FORMAT --- //":"","?format":"echo \"Format all files using Prettier\"","format":"prettier --write .","?lint":"echo \"Run both ESLint (JS/TS) and Shellcheck (Bash)\"","lint":"npm run lint:js && npm run lint:sh","lint:js":"eslint .","lint:sh":"shellcheck scripts/*.sh","?type-check":"echo \"Verify TypeScript type safety without emitting files\"","type-check":"tsc --noEmit","// --- 🧪 TESTING --- //":"","?test":"echo \"Run both fast unit tests and the full E2E suite\"","test":"npm run test:unit && npm run test:e2e","?test:unit":"echo \"Run fast native Node.js unit tests with coverage\"","test:unit":"node --experimental-test-coverage --test-coverage-lines=88 --test-coverage-branches=80 --test-coverage-functions=94 --import tsx --test 'src/**/*.spec.ts'","?test:e2e":"echo \"Boot Docker and run the full Playwright integration suite\"","test:e2e":"./scripts/test-e2e.sh","?test:example":"echo \"Test the tutorial example BDD file to ensure the tutorial works\"","test:example":"./scripts/test-e2e.sh example-bdd-markdown-test.md","test:playwright":"playwright test","// --- 🧠 CACHE MANAGEMENT --- //":"","?cache:clear":"echo \"Instantly wipe the AI cache file (bdd-cache.json) to an empty state without transpiling\"","cache:clear":"npm run transpile -- --clear-cache","?cache:ignore":"echo \"Dry-run transpilation bypassing the cache (forces AI evaluation but does not save to disk)\"","cache:ignore":"npm run transpile -- --ignore-cache","?cache:refresh":"echo \"Wipe the cache and immediately re-transpile all files to rebuild it from scratch\"","cache:refresh":"npm run cache:clear && npm run transpile","?cache:update":"echo \"Surgically re-transpile specific files, overwriting their cache entries (e.g., npm run cache:update -- tests/login.md)\"","cache:update":"npm run transpile -- --update-cache","// --- ⚙️ MAINTAINER OPS --- //":"","prepare":"husky","?profile":"echo \"Benchmark the execution time of any arbitrary NPM command\"","profile":"./scripts/run-and-time.sh","?profile:e2e":"echo \"Benchmark the Dockerized E2E test pipeline\"","profile:e2e":"npm run profile -- profile-e2e npm run test:e2e","?release":"echo \"Trigger a semantic version bump and NPM publish (Maintainers only -- patch, minor, or major)\"","release":"./scripts/release.sh","?validate:commit":"echo \"Run the fast pre-commit pipeline (skips Docker tests)\"","validate:commit":"./scripts/validate.sh --commit","?validate:push":"echo \"Run the strict pre-push pipeline (includes E2E Docker tests)\"","validate:push":"./scripts/validate.sh --push"},"gitHead":"e3b72e59439de729738310c7718e62d2694d6b32","_id":"@binkley/markdown-bdd-transpiler@0.6.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-qBvLUucfiHADx3HyodYzHrPOiM+dUTlQkO74+QGF/g/h53AoWgska3sg+LG4K4+GuJVvwOi8T0fj/bzuBEC7Rg==","shasum":"6dc48129108281ae7fc5f85596c6cd28dd5b16b1","tarball":"https://registry.npmjs.org/@binkley/markdown-bdd-transpiler/-/markdown-bdd-transpiler-0.6.0.tgz","fileCount":68,"unpackedSize":180896,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@binkley%2fmarkdown-bdd-transpiler@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDkRDs4bZZNKmbaEE/zSWNQUgNNFDpaJTtjMCocBnuN7gIhAJ6W75wznkCJwd5z4fRl1scTt1vxv9PRdwmYlyJ0Dyat"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae638794-b186-4020-8444-8d0e6748cfbd"}},"directories":{},"maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/markdown-bdd-transpiler_0.6.0_1786104627840_0.48921333854292914"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-22T11:11:17.315Z","modified":"2026-08-07T12:10:28.328Z","0.0.10":"2026-05-22T11:11:17.607Z","0.0.11":"2026-05-22T11:18:37.522Z","0.0.12":"2026-05-22T15:11:11.670Z","0.1.0":"2026-05-23T13:48:05.441Z","0.2.0":"2026-05-23T17:30:35.098Z","0.3.0":"2026-05-24T17:43:34.314Z","0.3.1":"2026-05-25T11:46:11.234Z","0.4.0":"2026-05-29T14:18:05.365Z","0.5.0":"2026-05-31T12:42:26.519Z","0.5.1":"2026-06-01T14:13:39.609Z","0.5.2":"2026-06-01T15:54:53.801Z","0.5.4":"2026-06-02T16:52:36.886Z","0.5.5":"2026-06-03T14:33:24.651Z","0.5.6":"2026-06-16T15:13:52.648Z","0.6.0":"2026-08-07T12:10:27.997Z"},"bugs":{"url":"https://github.com/binkley/markdown-bdd-transpiler/issues"},"author":{"name":"B. K. Oxley","email":"binkley@alumni.rice.edu","url":"binkley"},"license":"CC0-1.0","homepage":"https://github.com/binkley/markdown-bdd-transpiler#readme","keywords":["bdd","testing","playwright","markdown","gemini","genai","e2e"],"repository":{"type":"git","url":"git+https://github.com/binkley/markdown-bdd-transpiler.git"},"description":"An AI-augmented BDD testing framework that transpiles Markdown user journeys into Playwright tests.","maintainers":[{"name":"binkley","email":"binkley@alumni.rice.edu"}],"readme":"# AI-Augmented Markdown BDD Transpiler for Testing\n\n<a href=\"./LICENSE.md\"> <img\nsrc=\"https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg\"\nalt=\"Creative Commons Public Domain Dedication\" align=\"right\" width=\"10%\"\nheight=\"auto\"/> </a>\n\n[![ci](https://img.shields.io/github/actions/workflow/status/binkley/markdown-bdd-transpiler/ci.yml?branch=main&label=ci)](https://github.com/binkley/markdown-bdd-transpiler/actions/workflows/ci.yml)\n[![issues](https://img.shields.io/github/issues/binkley/markdown-bdd-transpiler?label=issues)](https://github.com/binkley/markdown-bdd-transpiler/issues)\n[![pull\nrequests](https://img.shields.io/github/issues-pr/binkley/markdown-bdd-transpiler?label=pull%20requests)](https://github.com/binkley/markdown-bdd-transpiler/pulls)\n[![changelog](https://img.shields.io/badge/changelog-latest-blue.svg)](./CHANGELOG.md)\n[![node\nversion](https://img.shields.io/node/v/@binkley/markdown-bdd-transpiler.svg)](https://nodejs.org)\n[![npm\nversion](https://img.shields.io/npm/v/@binkley/markdown-bdd-transpiler.svg)](https://www.npmjs.com/package/@binkley/markdown-bdd-transpiler)\n\nA modern, Behavior-Driven Development (BDD) testing framework that allows\nnon-technical stakeholders to author End-to-End (E2E) user journeys using\nnative Markdown.\n\nTraditional BDD frameworks (like Cucumber) often suffer from \"step-definition\nbloat,\" requiring extensive engineering work to map rigid phrases to code via\nRegex.' This project solves that by asking an AI to work out the correct test\ncode from the Markdown as a semantic translation layer at compile-time. It\nmaps human language variations to a standardized UI action manifest natively\nexecuted by **Playwright** and **Vitest**.\n\n## 🌟 Key Features\n\n- **Zero-Config Authoring:** Test specs are written in pure Markdown (`.md`).\n  No IDE plugins, custom language servers, or complex setup is required for\n  authors. Syntax highlighting and formatting work out-of-the-box in GitHub\n  and all major editors.\n- **Semantic AI Translation:** Users can write naturally (e.g., \"click the\n  button\", \"smash the button\", \"tap\"). The transpiler uses the provider LLM to\n  map intent to deterministic UI actions.\n- **No Step-Definition Bloat:** Generic functions for the AI to intelligently\n  infer implicit ARIA roles from human text (e.g., classifying a step as\n  targeting a \"link\" or a \"checkbox\").\n- **Deterministic Caching:** Compiled steps are saved to `bdd-cache.json`.\n  Subsequent runs execute instantly without hitting the AI API, ensuring\n  stable, offline, and fast CI/CD pipeline runs.\n- **Fully Dockerized:** Includes a clean Docker Compose environment to spin up\n  the target application and execute tests in complete network isolation\n  (preventing local `EADDRINUSE` port conflicts).\n- **Visual Debugging:** Automatically captures full-page Playwright\n  screenshots whenever a test step fails, saving them locally to\n  `test-results/`. The GitHub Actions CI pipeline is configured to securely\n  upload these artifacts for easy debugging.\n- **Precision Traceability:** Every test execution and compilation warning\n  points directly to the exact file and line number in your Markdown source,\n  eliminating the need to debug generated code.\n- **Production-Grade Transpiler:** Structured compilation logging, concurrent\n  API request orchestration (`p-limit`), high-demand automated retries, and an\n  enforced \"clean state\" architecture that automatically deletes stale\n  generated tests.\n\n---\n\n## 🚀 Getting Started (1-Minute Setup)\n\nThe transpiler includes an interactive initialization script to automatically\nscaffold your configuration and install the correct peer dependencies.\n\nYou can examine the package in\n[NPM](https://www.npmjs.com/package/@binkley/markdown-bdd-transpiler).\n\n### 1. Install the Transpiler\n\n`bash npm install --save-dev @binkley/markdown-bdd-transpiler `\n\n### 2. Run the Initialization Wizard\n\n`bash npx markdown-bdd init `\n\nThis interactive script will:\n\n- Ask if you want to install Playwright (`@playwright/test`) and automatically\n  download the required browser binaries.\n- Prompt you to select your preferred AI Provider (Anthropic, Google Gemini,\n  or OpenAI).\n- Generate a clean `bdd.config.json` tailored to your choice.\n- Genrate a customizable `manifest.json` into your project root.\n- Generate an example markdown BDD test file\n  (`tests/example-bdd-markdown-test.md`) (it will fail on purpose as a test)\n- Auto-install the necessary Vercel AI SDK provider adapter (e.g.,\n  `@ai-sdk/openai`).\n\n_Tip: To change provider or model, you can edit `bdd.config.json` or you can\nrerun `npx markdown-bdd init`._\n\n### 3. CI/CD Automation (Headless Setup)\n\nIf you are automating the setup in a CI/CD pipeline, you can bypass the\ninteractive prompts by providing the `-y`, `--provider`, and `--model` flags:\n\n`bash npx markdown-bdd init -y --provider openai --model gpt-4o-mini `\n\n---\n\n## 🏗️ Architecture\n\n1.  **Authoring (`tests/*.md`)**: Stakeholders define features and scenarios.\n2.  **Manifest (`manifest.json`)**: A JSON schema defining a highly generic\n    set of Playwright A11y actions (e.g., `interact_with_element`,\n    `verify_element_state`).\n3.  **Transpiler (`transpile.ts`)**: Crawls markdown using the `remark` AST\n    parser to track strict file locations, checks the cache, and calls the LLM\n    provider API to map unregistered human language steps to the manifest\n    constraints.\n4.  **Standard Library (`framework/standard-ui-steps.ts`)**: The physical\n    Playwright implementation of the manifest. The core library supports:\n    - **Navigation & Interaction**: `navigate_to`, `fill_input`,\n      `interact_with` (clicks, checks), `interact_with_text`.\n    - **State Verification**: `verify_element_state`, `verify_text_state`.\n    - **Advanced Interactions**: `interact_with_nth_element` (1-based or\n      ordinal targeting for lists), `verify_element_count` (asserting list\n      cardinality), and `dismiss_if_present` (safe, transient state handling\n      for modals/cookie banners).\n5.  **Execution (`.generated/*.test.ts`)**: The transpiler outputs standard,\n    execution-ready Playwrite spec files.\n\n---\n\n## 📦 Installation & Usage in Your Project\n\nTo use the AI-Augmented Markdown BDD Transpiler in your own testing\nrepository:\n\n### 1. Install via NPM\n\nInstall the package as a development dependency:\n\n`bash npm install --save-dev @binkley/markdown-bdd-transpiler `\n\n_Note: This package requires `@playwright/test` as a peer dependency. If you\nhave not already set up Playwright in your repository, you will also need to\ninstall it and its browser binaries:_\n\n`bash npm install --save-dev @playwright/test npx playwright install `\n\n### 2. Configure and Run\n\nCreate a `bdd.config.json` in your project root (see the\n[Configuration](#-configuration-bddconfigjson) section below for options).\n\nThen, use the included CLI to transpile your `.md` files into executable tests\nbefore running your test runner:\n\n`bash npx markdown-bdd `\n\nTo see a full list of available command-line overrides and positional file\ntargeting options, use the help flag:\n\n`bash npx markdown-bdd --help `\n\n_Tip: We recommend adding `\"pretest\": \"markdown-bdd\"` to your `package.json`\nscripts._\n\n---\n\n## 🚀 Local Development (Contributing)\n\n### Prerequisites\n\n- **Node.js** (v22+ recommended)\n- **Docker** and **Docker Compose**\n- An LLM provider API.\n\n### 1. Environment Setup\n\nExport your LLM provider API key in your terminal session. An example for\nGoogle Gemini:\n\n`bash export GOOGLE_API_KEY=\"your_api_key_here\" `\n\n### 2. Local Execution (Native)\n\nIf you prefer to run the project directly on your machine without Docker:\n\n````bash # Install dependencies (including Playwright browsers) npm install\n\n# Start the dummy frontend application in the background npm run demo &\n\n# Transpile the markdown tests and run them via Vitest npm test ```\n\nYou can see a full list of NPM scripts with help:\n\n```bash npm run help # Or npm run ?  ```\n\n### 3. Docker Execution (Recommended)\n\nTo run the application and the test suite in a clean, isolated environment,\nsimply run:\n\n```bash ./scripts/test-e2e.sh ```\n\nUse `./scripts/test-e2e.sh --help` for help.\n\n#### Strict Mode (`--strict`)\n\nBy default, the transpiler emits formatting and logic warnings (e.g., missing\na `THEN` block) without failing the build. To enforce rigid BDD hygiene in\nCI/CD environments, you can fail the pipeline immediately if any warnings are\ndetected:\n\n```bash ./scripts/test-e2e.sh --strict ```\n\nAs you author markdown BDD tests, you can set a higher threshold using\n`--max-warnings=N` instead, progressively lowering the number over time. Both\nsettings can also be configured permanently in `bdd.config.json`.\n\n#### Prompt Debugging (`--dump-prompts`)\n\nIf the LLM is consistently misinterpreting an ambiguous UI step or ignoring\nyour Designer Notes, you can use the `--dump-prompts` flag. This saves the\nexact, finalized text prompts sent to the LLM into the `.generated/` folder,\nallowing you to debug how your markdown and variables are being compiled\nbefore they hit the API:\n\n```bash npx markdown-bdd --dump-prompts ```\n\n#### Diagnostic Logging (`--verbose`)\n\nIf you need deeper insight into the compilation process, use the `--verbose`\nflag:\n\n```bash ./scripts/test-e2e.sh --verbose # Or ./scripts/validate.sh --verbose\n````\n\nThis outputs detailed runtime diagnostics, allowing you to track exactly which\nfiles are being processed, monitor AI cache misses, and profile the latency of\nthe LLM provider API:\n\n`````text 📄 Transpiling tests/login-journey.md ->\n.generated/login-journey.md.test.ts ☁️  Cache miss: \"Click the \"Sign In\"\nbutton\" ⚡ API returned in 1.42s 📄 Transpiling tests/settings-journey.md ->\n.generated/settings-journey.md.test.ts ```\n\nThis script will:\n\n1. Build the lightweight Express frontend container.\n2. Build the Playwright test-runner container.\n3. Automatically orchestrate network connections between them.\n4. Execute the test suite and output the results.\n5. Gracefully tear down the containers upon completion.\n\n---\n\n## 🔎 Precision Traceability\n\nThe transpiler is designed to make debugging Markdown-driven tests as\nintuitive as writing them:\n\n- **Clickable Terminal Warnings:** Structural issues (like missing `GIVEN`\n  statements or unclosed code fences) are logged using modern TS ecosystem\n  standards (e.g., `⚠️ tests/login-journey.md:10 - warning: ...`). In VS Code\n  and most modern terminal emulators, these paths are natively clickable,\n  taking you directly to the exact line in your Markdown file.\n- **Playwright Integration:** Generated Playwright actions are wrapped in\n  native `test.step()` blocks. When a test fails, Playwright's HTML report, UI\n  Mode, and terminal logs point exactly to the human-readable Markdown step\n  that caused the error, including the source file and line number (e.g.,\n  `(login-journey.md:23)`).\n\n---\n\n## ✅ CI/CD & Local Validation\n\nThis repository is configured to ensure code quality through rigorous static\nanalysis and automated E2E testing using GitHub Actions.\n\n### Husky Git Hooks\n\nTo prevent broken code from being pushed to the remote repository, this\nproject utilizes **Husky hooks**.\n\n- **Pre-Commit (`npm run validate:commit`)**: Runs fast local checks including\n  formatting (`prettier`), linting (`eslint`, `shellcheck`), type-checking\n  (`tsc`), and unit tests (`node:test`).\n- **Pre-Push (`npm run validate:push`)**: Runs the strict pipeline which\n  includes all pre-commit checks, plus a dependency security audit (`npm\n  audit`), and executes the full Playwright E2E suite inside Docker\n  (`test-e2e.sh`).\n\nIf any of these steps fail, the git action is aborted.\n\n_Tip: If formatting fails during a commit, run `npm run format` to auto-fix\nthe issues before attempting to commit again._\n\n---\n\n## ✍️ Writing Tests\n\nAdd new test scenarios to the `tests/` directory using standard Markdown\nformatting. This framework is designed to be written by non-technical\nstakeholders in natural language.\n\n### The Anatomy of a Scenario\n\nEvery scenario should follow the standard Behavior-Driven Development (BDD)\nstructure to ensure tests are deterministic and readable. Actionable testing\nsteps **must** be wrapped in a `bdd` code fence and formatted as bullet points\n(`-`).\n\n1. **`GIVEN` (The Setup):** Establishes the initial, immutable state of the\napplication before the test begins. This usually involves navigating to a page\nor setting up prerequisites.\n2. **`WHEN` (The Action):** Describes the specific interactions the user takes\n(e.g., clicking, typing, checking boxes). You can use natural language here\n(e.g., \"Smash the button\").\n3. **`THEN` (The Verification):** Describes the expected outcome or what the\nuser should see as a result of the `WHEN` actions.\n\n**Example:**\n\n````markdown # Feature: User Authentication\n\n## Scenario: User logs in successfully\n\n### GIVEN\n\n```bdd\n- The user navigates to \"/login\" ```\n\n### WHEN\n\n```bdd\n- The user enters \"frontend_wizard\" into the \"Username\" field\n- Click the \"Sign In\" button ```\n\n### THEN\n\n```bdd\n- The user should see the heading \"Welcome Back, Wizard!\" ```\n\n---\n\n## Scenario: User sees error with invalid credentials\n\n### GIVEN\n\n```bdd\n- The user navigates to \"/login\" ```\n\n### WHEN\n\n```bdd\n- The user enters \"bad_wizard\" into the \"Username\" field\n- Click the \"Sign In\" button ```\n\n### THEN\n\n```bdd\n- Verify the \"Error Message\" alert is visible ``` ````\n\n### 🔄 Dynamic Data Injection\n\nTo keep secrets and environment-specific data out of your markdown files, you\ncan use the `{{VARIABLE_NAME}}` syntax. During test execution, the framework\nwill dynamically replace the placeholder with the matching environment\nvariable (e.g., from `process.env` or your `.env` file).\n\n**Example:**\n\n```bdd\n- The user enters \"{{TEST_USER_PASSWORD}}\" into the \"Password\" field ```\n\nor (both work):\n\n```bdd\n- The user enters {{TEST_USER_PASSWORD}} into the \"Password\" field ```\n\n_If the environment variable is missing when the test runs, the test will\nimmediately fail with a descriptive error to prevent silent UI failures._\n\n#### Escaping (Literal Braces)\n\nIf you need the test to literally type curly braces (e.g., when testing a\ntemplating engine) without the framework attempting to look up a variable,\nescape the first brace with a backslash: `\\{{...}}`.\n\n**Example:**\n\n```bdd\n- The user enters \"\\{{literal_string}}\" into the \"Code Editor\" ```\n\n### ⚠️ Structural Validation Warnings\n\nTo help keep your test suites clean and logical, the transpiler checks the\nsequence of your headings. If it detects a broken pattern, it will print a\nwarning to the console during the build:\n\n- **Missing an opening GIVEN:** A scenario jumped straight into a `WHEN`\n  action without first defining the starting state of the application.\n- **GIVEN has no complete WHEN/THEN pair:** The scenario set up the\n  application but never performed an action or checked an outcome.\n- **WHEN is not paired with a subsequent THEN:** The scenario performed an\n  action but never verified that the action did what it was supposed to do.\n\n_Note: You can safely interleave as much standard markdown documentation\n(paragraphs, images, tables) as you want between the `bdd` code fences. The\nparser will ignore everything outside the fences._\n\n---\n\n## 🧭 Guided Tour (Living Documentation)\n\nBecause this framework transpiles Markdown into executable code, our own\ninternal test suite serves as \"living documentation.\" These files prove the\nfeatures work while simultaneously explaining how to use them.\n\nWe recommend new authors read the test files in this order to understand the\nframework's capabilities:\n\n1. **The Basics:** [`tests/login-journey.md`](./tests/login-journey.md) Learn\nthe fundamental anatomy of a BDD Scenario (GIVEN, WHEN, THEN) and see how\nnatural language maps to Playwright actions.\n2. **Handling Secrets:**\n[`tests/dynamic-injection-journey.md`](./tests/dynamic-injection-journey.md)\nLearn how to inject environment variables securely (e.g., passwords or dynamic\nURLs) and how to escape the transpiler if you need to type literal curly\nbraces.\n3. **The AI Engine:**\n[`tests/context-ambiguity-journey.md`](./tests/context-ambiguity-journey.md)\nLearn how the AI resolves vague instructions (like \"Click it\") by looking at\nprevious steps, and how to use Designer Notes to guide the AI when the UI\nlacks proper accessibility roles.\n4. **Quality Assurance:**\n[`tests/validation-warnings-journey.md`](./tests/validation-warnings-journey.md)\nSee how the transpiler acts as a linter, actively enforcing rigorous testing\nstructures and warning your team if scenarios become sloppy or lack\nassertions.\n\n---\n\n## 🧠 Cache Management\n\nThe transpiler ships with dedicated NPM scripts and built-in CLI flags to\nmanage `bdd-cache.json` and improve the developer experience:\n\n- `npm run cache:clear` Instantly wipes the cache file to an empty state\n  without invoking the AI or transpiling.\n- `npm run cache:refresh` Wipes the cache entirely and immediately transpiles\n  all files, forcing the AI to rebuild the cache from scratch.\n- `npm run cache:update -- <files...>` Reads the current cache, forces the AI\n  to re-evaluate the targeted files, and explicitly overwrites their cache\n  entries while preserving untouched steps. This is perfect for surgical cache\n  repairs (e.g., `npm run cache:update -- tests/login.md`).\n- `npm run cache:ignore -- <files...>` Temporarily bypasses the cache, forcing\n  the AI to re-evaluate steps without saving them back to disk. This is a\n  \"dry-run\" mode useful when testing a new LLM model without polluting your\n  stable cache file.\n\n**Advanced Orchestration:**\n\nIf you want to manage the cache and run the Playwright test suite in a single\ncommand, you can pass the underlying transpiler flags (`--ignore-cache`,\n`--update-cache`) directly to the E2E script using the `-t` or `--transpiler`\nflags:\n\n```bash # Update the cache for login.md and immediately run its tests in\nDocker ./scripts/test-e2e.sh -t update-cache tests/login.md ```\n\nTo perform a full cache refresh alongside Docker execution, chain the\ncommands:\n\n```bash npm run cache:clear && ./scripts/test-e2e.sh ```\n\n## ⚙️ Configuration (`bdd.config.json`)\n\nWhile the `init` script provides a great out-of-the-box setup, the framework\nis fully configurable to match your project's architecture.\n\n```json { \"testDir\": \"tests\", \"manifestPath\": \"manifest.json\", \"cachePath\":\n\"bdd-cache.json\", \"outDir\": \".generated\", \"banner\": \"test.use({\nextraHTTPHeaders: { 'x-mock-user': 'admin' } });\", \"bannerFile\":\n\"tests/setup.ts\", \"strict\": false, \"maxWarnings\": 5, \"llm\": { \"provider\":\n\"gemini\", \"model\": \"gemini-2.5-flash-lite\", \"maxRetries\": 3, \"initialDelayMs\":\n1000, \"backoffFactor\": 2.0 } } ```\n\n### Configuration Options:\n\n- **`testDir`**: The directory containing your Markdown (`.md`) feature files.\n  (Default: `tests`)\n- **`manifestPath`**: The path to your JSON manifest defining the available UI\n  steps. (Default: `manifest.json`)\n- **`cachePath`**: The file where AI resolutions are deterministically cached\n  to speed up future runs. (Default: `bdd-cache.json`)\n- **`outDir`**: The directory where the transpiler will output the generated\n  Playwright `.test.ts` files. (Default: `.generated`)\n- **`banner`**: (Optional) A raw string of code injected at the top of every\n  generated test file. (For complex setups, use `bannerFile` instead to avoid\n  stringifying multiline code in JSON).\n- **`bannerFile`**: (Optional) Path to a TypeScript/JavaScript file (e.g.,\n  `tests/setup.ts`). The contents of this file are injected directly into\n  every generated test file. This is the recommended way to inject global\n  Playwright `test.use({})` blocks to mock headers, cookies, or authentication\n  state.\n- **`frameworkImport`**: (Optional) The module path injected into the\n  generated tests. (Defaults to `@binkley/markdown-bdd-transpiler/framework`.\n  Only override this if you are building custom Playwright UI\n  implementations).\n- **`llm`**: Configures the third-party AI provider behavior.\n  - **`provider`**: The vendor to use (`gemini`, `openai`, or `anthropic`).\n  - **`model`**: The specific LLM version to use (e.g., `gpt-4o-mini`).\n  - **`concurrency`**: Max parallel network requests to the LLM. (Default:\n    `5`)\n  - **`maxRetries`**: Maximum number of times to retry a failed API call\n    before crashing. (Default: `3`)\n  - **`initialDelayMs`**: Base delay before the first retry. (Default: `1000`)\n  - **`backoffFactor`**: Exponential multiplier for each subsequent retry.\n    Jitter is automatically applied. (Default: `2.0`)\n\n_Note: All configuration options can also be overridden via CLI flags (e.g.,\n`npx markdown-bdd-transpiler --llm-provider openai`)._\n\n### Extensibility: Custom UI Steps\n\nThe core framework enforces strict A11y and Playwright best practices (e.g.,\nfailing to click if an element is covered by an invisible modal overlay).\nRather than polluting your BDD Markdown with technical terms (e.g.,\n\"forcefully click\") or waiting for the core framework to implement edge cases,\nyour project can easily extend the AI capabilities by defining custom steps.\n\nFor example, to cleanly handle a blocking overlay without altering the natural\nlanguage of your BDD:\n\n**1. Define it in your `manifest.json`:**\n\n```json { \"available_steps\": [ { \"function_name\": \"dismiss_overlay\",\n\"description\": \"Closes a blocking modal or overlay, such as the 'End Session'\nwarning.\", \"parameters\": [\"overlay_name\"] } ] } ```\n\n**2. Implement the workaround in your own code:**\n\n```typescript // project-root/framework/custom-ui-steps.ts import type { Page\n} from '@playwright/test';\n\nexport async function dismiss_overlay(page: Page, overlay_name: string) { //\nEncapsulate the 'force' hack tailored to your specific UI problem await page\n.getByRole('button', { name: overlay_name }) .click({ force: true }); } ```\n\n**3. Point the config to your implementation:**\n\n```json // bdd.config.json { \"manifestPath\": \"manifest.json\",\n\"frameworkImport\": \"./framework/custom-ui-steps.ts\" } ```\n\nNow, when a non-technical author writes `The user dismisses the \"End Session\"\nwarning`, the AI will map it to your custom function, keeping the BDD clean\nand the Playwright hack abstracted.  **4. Sync your manifest automatically:**\n\nInstead of manually editing `manifest.json` every time you add a new custom\nstep in your TypeScript file, you can use the `sync` command. This will parse\nyour custom framework file and automatically append new exported functions to\nyour manifest:\n\n```bash npx markdown-bdd sync ```\n\n#### Temporary Workarounds (Designer Notes)\n\nSometimes, you need a test to pass _today_ before you have time to write\ncustom support code, or when dealing with a legacy UI element that lacks\nproper ARIA roles. The framework supports **Designer Notes**—a standard\nMarkdown paragraph placed immediately before a `bdd` code fence. The\ntranspiler sends this note directly to the AI to help it disambiguate the\nfollowing steps.\n\nIf an element cannot be found by its ARIA role, you can use a Designer Note to\nguide the AI to use the core framework's `interact_with_text` step:\n\n````markdown _QA Note: The \"Submit Icon\" lacks an ARIA role, but contains the\nvisible text \"Submit\"._\n\n```bdd\n- The user clicks the Submit Icon ``` ````\n\n**⚠️ The \"Technical Debt\" Warning**\n\nBecause Designer Notes can leak technical implementation details (or raw\nlocators) into your behavioral specifications, the transpiler considers them a\n\"leaky abstraction.\" **Whenever the transpiler encounters a Designer Note, it\nwill emit a build warning.**\n\nThis is an intentional design choice to track technical debt. It allows the\nscenario to execute and pass in the short term, while signaling to your\nengineering team that technical work (like adding an ARIA role to the app, or\nwriting a custom UI step) is required long-term to keep the test suite pure.\n\n---\n\n## 🛠️ Development Commands\n\n- `npm run format`: Runs Prettier to standardize codebase formatting.\n- `npm run lint`: Runs ESLint for TS and Shellcheck for bash files.\n- `npm run type-check`: Validates TypeScript structural integrity without\n  emitting files.\n- `npm run test:unit`: Runs the native `node:test` suite with code coverage.\n- `npm run test:e2e`: Boots Docker and runs the full Playwright integration\n  suite.\n- `npm run cache:update`: Surgically re-transpile specific files.\n- `npm run profile`: Benchmark the execution time of any arbitrary NPM\n  command.\n- `npm run profile:e2e`: Benchmark the Dockerized E2E test pipeline.\n\n---\n\n## 📦 Releasing and Publishing\n\nThis project uses **NPM Trusted Publishing (OIDC)** via GitHub Actions. There\nare no hardcoded NPM tokens required to publish to the registry.\n\nTo publish a new version of the transpiler, use the included release script.\nThis script will automatically run the tests, bump the version in\n`package.json`, create the git tag, and push to origin:\n\n```bash npm run release -- patch # Or minor, major ```\n\nThe GitHub Action will automatically trigger upon seeing the new tag, build\nthe project, run all static analysis, and securely publish the new version to\n`@binkley/markdown-bdd-transpiler` on NPM using provenance.\n\n---\n\n## 📝 TODO / Future Improvements\n\n#### Advanced LLM Telemetry & Interactive Feedback Loop\n\nTo transition the transpiler from a \"dumb translator\" to an active testing\nassistant, we can operationalize the metadata returned by modern LLMs:\n\n1. **Interactive Confidence-Gating:** Parse the LLM's confidence scores. For\nhigh confidence, transpile automatically. For medium confidence, enter an\ninteractive CLI mode to prompt the author (\"Did you mean X? [Y/n]\"). For low\nconfidence, hard-fail with an actionable reason.\n2. **Automated Test Flakiness Prediction:** Ask the LLM to return a\n`flakiness_risk` metric. The transpiler can proactively wrap high-risk actions\nin a `test.step` with longer timeouts or explicit `.waitFor()` conditions.\n3. **Smart Fallbacks (Dynamic Routing):** If a fast/cheap model (like Gemini\nFlash) fails with a \"length\" finish reason or low confidence, automatically\nroute that specific step to a larger, reasoning-focused model (e.g., Gemini\n3.x Pro).\n4. **Semantic Cache Expansion:** Request the LLM to return\n`semantic_equivalents` for successful mappings (e.g., \"tap the link\", \"select\nthe link\"). Proactively populate `bdd-cache.json` with these to drastically\nreduce API dependency over time.\n5. **Manifest Gap Analysis:** Aggregate when the LLM successfully understands\na step but reports a `missing_capability` against the provided\n`manifest.json`. Print an end-of-run report to guide maintainers on which\nPlaywright ARIA actions to implement next (e.g., \"Authors attempted\ndrag-and-drop 14 times\").\n\n#### Community Manifest Ecosystem (Plugin Architecture)\n\nBecause consuming projects can now eject their `manifest.json` and define\ncustom UI steps, the core framework no longer needs to natively support every\nobscure ARIA role or complex interaction. Future iterations should focus on:\n\n1. **Manifest Modules:** Allowing `bdd.config.json` to accept an array of\nmanifest paths or NPM packages (e.g., `\"manifests\":\n[\"@binkley/bdd-salesforce-plugin\"]`), enabling the community to share\npre-built step libraries for common SaaS platforms.\n2. **Rich Assertions:** Expanding the core library for `THEN` verification\nsteps to handle list lengths, exact text counts, and complex visibility states\nbeyond simple element presence.\n3. **Compound/Parametrized Selectors:** Support finding elements _within_\nother elements (e.g., \"Click the 'Delete' button in the 'User Summary' row\").\n\n#### Interactive Manifest Upgrades\n\nBecause `npx markdown-bdd init` ejects a static copy of the default\n`manifest.json` into the consumer's project, they miss out on new steps added\nin future framework releases. We should build an interactive `npx markdown-bdd\nupgrade` command that parses the consumer's local manifest, diffs it against\nthe latest default manifest, and interactively merges in new capabilities.\n`````\n","readmeFilename":"README.md"}