Live test plugin#130
Merged
Merged
Conversation
Apply parity with the fastedge-plugin generate-docs-template.sh. Rejected `claude -p` outputs now persist under docs/.failures/ for prompt-debugging, and the salvage path strips one-line conversational preambles (a known Sonnet update-mode failure) rather than retrying. Tightens OUTPUT CONSTRAINT and existing-content prompt blocks to ban the "outputting verbatim" acknowledgement class explicitly.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the FastEdge SDK JS “live test plugin” source inputs by renaming “downstream” terminology to “outbound”, adding several new example projects (with live-test fixtures), and expanding the fastedge-plugin source manifest/scripts plus documentation content used by the plugin pipeline.
Changes:
- Renamed “downstream fetch” examples/pages to “outbound fetch” across examples + GitHub Pages docs.
- Added new standalone examples (e.g., streaming, request inspection, secret rotation, crypto JWT verification, bloom-filter denylist) and many
fixtures/*.test.json+*.live.jsonfiles for live testing. - Extended
fastedge-plugin-source/manifest + sync/generation scripts and added new docs references (runtime constraints + pattern docs).
Reviewed changes
Copilot reviewed 167 out of 170 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| pnpm-lock.yaml | Updates workspace importer entries for renamed/added examples and dependency resolutions |
| github-pages/src/content/docs/reference/headers.md | Terminology update from downstream → outbound in Headers reference |
| github-pages/src/content/docs/examples/outbound-modify-response.mdx | New docs page embedding outbound-modify-response example source |
| github-pages/src/content/docs/examples/outbound-fetch.mdx | New docs page embedding outbound-fetch example source |
| github-pages/src/content/docs/examples/main-examples.mdx | Updates example cards to point to outbound example pages |
| github-pages/src/content/docs/examples/downstream-modify-response.mdx | Removes old downstream-modify-response docs page |
| github-pages/src/content/docs/examples/downstream-fetch.mdx | Removes old downstream-fetch docs page |
| fastedge-plugin-source/manifest.json | Adds new docs sources + updates example blueprint paths and target mapping |
| fastedge-plugin-source/generate-docs.sh | Improves generation prompt constraints and salvages leaked preambles into .failures/ |
| fastedge-plugin-source/check-copilot-sync.sh | Adds advisory check ensuring examples on disk are represented in manifest |
| fastedge-plugin-source/.generation-config.md | Expands generation requirements for SDK_API (unavailable APIs + crypto matrix guidance) |
| examples/variables-and-secrets/fixtures/happy-path.test.json | Adds live-test fixture for variables-and-secrets example |
| examples/variables-and-secrets/fixtures/happy-path.live.json | Adds expected live response fixture for variables-and-secrets |
| examples/variables-and-secrets/fixtures/.env | Adds fixture env vars/secrets for variables-and-secrets live tests |
| examples/template-invoice/src/index.js | Adjusts fetch event handler wiring |
| examples/template-invoice/fixtures/happy-path.test.json | Adds template-invoice live-test fixture |
| examples/template-invoice/fixtures/happy-path.live.json | Adds template-invoice expected live response fixture |
| examples/template-invoice-ab-testing/fixtures/hops-exo2.test.json | Adds AB testing variant fixture |
| examples/template-invoice-ab-testing/fixtures/hops-exo2.live.json | Adds AB testing variant expected live response fixture |
| examples/template-invoice-ab-testing/fixtures/defaults.test.json | Adds AB testing default variant fixture |
| examples/template-invoice-ab-testing/fixtures/defaults.live.json | Adds AB testing default expected live response fixture |
| examples/template-invoice-ab-testing/fixtures/bottle-gloria.test.json | Adds AB testing alternative variant fixture |
| examples/template-invoice-ab-testing/fixtures/bottle-gloria.live.json | Adds AB testing alternative expected live response fixture |
| examples/streaming/src/index.js | New example: streaming response via ReadableStream |
| examples/streaming/README.md | Documents streaming example behavior and testing tips |
| examples/streaming/package.json | Adds streaming example package setup |
| examples/streaming/fixtures/happy-path.test.json | Adds streaming example live-test fixture |
| examples/streaming/fixtures/happy-path.live.json | Adds streaming example expected live response fixture |
| examples/static-assets/fixtures/template.test.json | Adds static-assets fixture for /template route |
| examples/static-assets/fixtures/template.live.json | Adds static-assets expected live response for /template |
| examples/static-assets/fixtures/jsx.test.json | Adds static-assets fixture for /jsx route |
| examples/static-assets/fixtures/jsx.live.json | Adds static-assets expected live response for /jsx |
| examples/static-assets/fixtures/image.test.json | Adds static-assets fixture for serving an image asset |
| examples/static-assets/fixtures/image.live.json | Adds static-assets expected headers for image asset |
| examples/static-assets/fixtures/home.test.json | Adds static-assets fixture for home page |
| examples/static-assets/fixtures/home.live.json | Adds static-assets expected live response for home page |
| examples/static-assets/fixtures/css.test.json | Adds static-assets fixture for serving CSS |
| examples/static-assets/fixtures/css.live.json | Adds static-assets expected headers for CSS |
| examples/secret-rotation/src/index.js | New example: slot-based secret rotation using getSecretEffectiveAt |
| examples/secret-rotation/README.md | Documents secret rotation slots and usage patterns |
| examples/secret-rotation/package.json | Adds secret-rotation example package setup |
| examples/secret-rotation/fixtures/specific-slot.test.json | Adds secret-rotation fixture for explicit slot query |
| examples/secret-rotation/fixtures/specific-slot.live.json | Adds secret-rotation expected live response assertions |
| examples/secret-rotation/fixtures/default.test.json | Adds default secret-rotation fixture |
| examples/secret-rotation/fixtures/default.live.json | Adds default secret-rotation expected live response |
| examples/secret-rotation/fixtures/custom-secret.test.json | Adds custom secret name fixture |
| examples/secret-rotation/fixtures/custom-secret.live.json | Adds expected live response for custom secret fixture |
| examples/secret-rotation/fixtures/.env | Adds fixture secrets for secret-rotation live tests |
| examples/request-inspection/src/index.js | New example: echo request method/url/headers/client info |
| examples/request-inspection/README.md | Documents request-inspection example usage |
| examples/request-inspection/package.json | Adds request-inspection example package setup |
| examples/request-inspection/fixtures/happy-path.test.json | Adds request-inspection live-test fixture |
| examples/request-inspection/fixtures/happy-path.live.json | Adds request-inspection expected live response fixture |
| examples/README.md | Updates examples index list; adds new examples and renames outbound ones |
| examples/react-with-hono-server/fixtures/home.test.json | Adds react-with-hono-server home route fixture |
| examples/react-with-hono-server/fixtures/home.live.json | Adds react-with-hono-server home expected live response |
| examples/react-with-hono-server/fixtures/api-users-post.test.json | Adds react-with-hono-server POST fixture |
| examples/react-with-hono-server/fixtures/api-users-post.live.json | Adds expected live response for POST fixture |
| examples/react-with-hono-server/fixtures/api-hello.test.json | Adds react-with-hono-server API hello fixture |
| examples/react-with-hono-server/fixtures/api-hello.live.json | Adds expected live response for API hello fixture |
| examples/react-with-hono-server/fastedge-server/config/asset-manifest.ts | Updates embedded asset manifest timestamps/metadata |
| examples/outbound-modify-response/src/index.js | Renames downstreamResponse variable to outboundResponse |
| examples/outbound-modify-response/README.md | Adds outbound-modify-response example documentation |
| examples/outbound-modify-response/package.json | Adds outbound-modify-response example package setup |
| examples/outbound-modify-response/fixtures/happy-path.test.json | Adds outbound-modify-response live-test fixture |
| examples/outbound-modify-response/fixtures/happy-path.live.json | Adds outbound-modify-response expected live response fixture |
| examples/outbound-fetch/src/index.js | New example: outbound fetch passthrough |
| examples/outbound-fetch/README.md | Adds outbound-fetch example documentation |
| examples/outbound-fetch/package.json | Adds outbound-fetch example package setup |
| examples/outbound-fetch/fixtures/happy-path.test.json | Adds outbound-fetch live-test fixture |
| examples/outbound-fetch/fixtures/happy-path.live.json | Adds outbound-fetch expected live response fixture |
| examples/mcp-server/README.md | Updates MCP README to reflect registerTool API and schemas |
| examples/mcp-server/fixtures/tools-list.test.json | Adds MCP tools/list fixture |
| examples/mcp-server/fixtures/tools-list.live.json | Adds MCP tools/list expected live response assertions |
| examples/mcp-server/fixtures/initialize.test.json | Adds MCP initialize fixture |
| examples/mcp-server/fixtures/initialize.live.json | Adds MCP initialize expected live response assertions |
| examples/kv-store/README.md | Expands KV store README with param tables and examples |
| examples/kv-store/fixtures/zscan.test.json | Adds KV zscan fixture |
| examples/kv-store/fixtures/zrange.test.json | Adds KV zrange fixture |
| examples/kv-store/fixtures/scan.test.json | Adds KV scan fixture |
| examples/kv-store/fixtures/missing-params.test.json | Adds KV missing params fixture |
| examples/kv-store/fixtures/missing-params.live.json | Adds KV missing params expected response |
| examples/kv-store/fixtures/get.test.json | Adds KV get fixture |
| examples/kv-store/fixtures/bf-exists.test.json | Adds KV bfExists fixture |
| examples/kv-store-basic/README.md | Expands kv-store-basic README with usage details and build info |
| examples/kv-store-basic/fixtures/happy-path.test.json | Adds kv-store-basic fixture |
| examples/kv-store-basic/fixtures/happy-path.live.json | Adds kv-store-basic expected live response |
| examples/hello-world/fixtures/happy-path.test.json | Adds hello-world fixture |
| examples/hello-world/fixtures/happy-path.live.json | Adds hello-world expected live response |
| examples/headers/fixtures/happy-path.test.json | Adds headers example fixture |
| examples/headers/fixtures/happy-path.live.json | Adds headers example expected live response |
| examples/headers/fixtures/.env | Adds headers fixture env var |
| examples/geo-redirect/README.md | Expands geo-redirect README with usage/build/testing |
| examples/geo-redirect/fixtures/us.test.json | Adds geo-redirect US fixture |
| examples/geo-redirect/fixtures/us.live.json | Adds geo-redirect US expected redirect assertions |
| examples/geo-redirect/fixtures/missing-config/.env | Adds empty env fixture for missing-config scenario |
| examples/geo-redirect/fixtures/missing-config.test.json | Adds missing-config fixture |
| examples/geo-redirect/fixtures/missing-config.live.json | Adds missing-config expected response |
| examples/geo-redirect/fixtures/germany.test.json | Adds geo-redirect DE fixture |
| examples/geo-redirect/fixtures/germany.live.json | Adds geo-redirect DE expected redirect assertions |
| examples/geo-redirect/fixtures/fallback.test.json | Adds geo-redirect fallback fixture |
| examples/geo-redirect/fixtures/fallback.live.json | Adds geo-redirect fallback expected redirect assertions |
| examples/geo-redirect/fixtures/.env | Adds geo-redirect fixture env vars |
| examples/downstream-modify-response/README.md | Removes old downstream-modify-response README |
| examples/downstream-modify-response/package.json | Removes old downstream-modify-response package |
| examples/downstream-fetch/README.md | Removes old downstream-fetch README |
| examples/downstream-fetch/package.json | Removes old downstream-fetch package |
| examples/crypto-hmac-jwt/src/index.js | New example: HS256 JWT verification using crypto.subtle |
| examples/crypto-hmac-jwt/README.md | Documents crypto-hmac-jwt example |
| examples/crypto-hmac-jwt/package.json | Adds crypto-hmac-jwt example package setup |
| examples/crypto-hmac-jwt/fixtures/valid-token.test.json | Adds valid JWT fixture |
| examples/crypto-hmac-jwt/fixtures/valid-token.live.json | Adds expected response for valid JWT fixture |
| examples/crypto-hmac-jwt/fixtures/missing-auth.test.json | Adds missing auth fixture |
| examples/crypto-hmac-jwt/fixtures/missing-auth.live.json | Adds expected response for missing auth |
| examples/crypto-hmac-jwt/fixtures/malformed-token.test.json | Adds malformed token fixture |
| examples/crypto-hmac-jwt/fixtures/malformed-token.live.json | Adds expected response for malformed token |
| examples/crypto-hmac-jwt/fixtures/.env | Adds JWT secret fixture env |
| examples/cache/fixtures/unknown-action.test.json | Adds cache example unknown-action fixture |
| examples/cache/fixtures/unknown-action.live.json | Adds cache example unknown-action expected response |
| examples/cache/fixtures/rate-limit-exceeded.test.json | Adds cache example rate-limit exceeded fixture |
| examples/cache/fixtures/rate-limit-exceeded.live.json | Adds cache example rate-limit exceeded expected response |
| examples/cache/fixtures/rate-limit-allowed.test.json | Adds cache example rate-limit allowed fixture |
| examples/cache/fixtures/rate-limit-allowed.live.json | Adds cache example rate-limit allowed expected response |
| examples/cache/fixtures/proxy-miss.test.json | Adds cache proxy miss fixture |
| examples/cache/fixtures/proxy-miss.live.json | Adds cache proxy miss expected response |
| examples/cache/fixtures/proxy-invalid-url.test.json | Adds cache proxy invalid-url fixture |
| examples/cache/fixtures/proxy-invalid-url.live.json | Adds cache proxy invalid-url expected response |
| examples/cache/fixtures/memo.test.json | Adds cache memo fixture |
| examples/cache/fixtures/memo.live.json | Adds cache memo expected response |
| examples/cache/fixtures/landing.test.json | Adds cache landing fixture |
| examples/cache/fixtures/landing.live.json | Adds cache landing expected response |
| examples/cache-basic/fixtures/07-unknown-action.test.json | Adds cache-basic unknown-action fixture |
| examples/cache-basic/fixtures/07-unknown-action.live.json | Adds cache-basic unknown-action expected response |
| examples/cache-basic/fixtures/06-missing-key.test.json | Adds cache-basic missing-key fixture |
| examples/cache-basic/fixtures/06-missing-key.live.json | Adds cache-basic missing-key expected response |
| examples/cache-basic/fixtures/05-cache-get-miss.test.json | Adds cache-basic get-miss fixture |
| examples/cache-basic/fixtures/05-cache-get-miss.live.json | Adds cache-basic get-miss expected response |
| examples/cache-basic/fixtures/04-cache-delete.test.json | Adds cache-basic delete fixture |
| examples/cache-basic/fixtures/04-cache-delete.live.json | Adds cache-basic delete expected response |
| examples/cache-basic/fixtures/03-cache-exists.test.json | Adds cache-basic exists fixture |
| examples/cache-basic/fixtures/03-cache-exists.live.json | Adds cache-basic exists expected response |
| examples/cache-basic/fixtures/02-cache-get-hit.test.json | Adds cache-basic get-hit fixture |
| examples/cache-basic/fixtures/02-cache-get-hit.live.json | Adds cache-basic get-hit expected response |
| examples/cache-basic/fixtures/01-cache-set.test.json | Adds cache-basic set fixture |
| examples/cache-basic/fixtures/01-cache-set.live.json | Adds cache-basic set expected response |
| examples/bloom-filter-denylist/src/index.js | New example: KV bloom-filter denylist based on client IP |
| examples/bloom-filter-denylist/README.md | Documents bloom-filter denylist example |
| examples/bloom-filter-denylist/package.json | Adds bloom-filter denylist example package setup |
| examples/bloom-filter-denylist/fixtures/missing-config.test.json | Adds bloom-filter missing-config fixture |
| examples/bloom-filter-denylist/fixtures/missing-config.live.json | Adds bloom-filter missing-config expected response |
| examples/bloom-filter-denylist/fixtures/happy-path.test.json | Adds bloom-filter happy-path fixture |
| examples/bloom-filter-denylist/fixtures/.env | Adds bloom-filter fixture env var |
| examples/ab-testing/src/index.js | Renames downstream URL env var to OUTBOUND_URL and updates fetch target variable names |
| examples/ab-testing/README.md | Updates terminology downstream → outbound and adds guidance note |
| examples/ab-testing/package.json | Adds main entry field |
| examples/ab-testing/fixtures/new-visitor.test.json | Adds AB testing new-visitor fixture |
| examples/ab-testing/fixtures/new-visitor.live.json | Adds AB testing new-visitor expected response |
| examples/ab-testing/fixtures/missing-config.test.json | Adds AB testing missing-config fixture |
| examples/ab-testing/fixtures/existing-visitor.test.json | Adds AB testing existing-visitor fixture |
| examples/ab-testing/fixtures/existing-visitor.live.json | Adds AB testing existing-visitor expected response |
| examples/ab-testing/fixtures/.env | Adds AB testing fixture env var |
| docs/RUNTIME_CONSTRAINTS.md | Adds runtime constraints and compatibility reference |
| docs/quickstart.md | Updates quickstart wording downstream → outbound |
| docs/PROXY_PATTERNS.md | Adds proxy/transform patterns reference document |
| docs/HONO_PATTERNS.md | Adds Hono usage patterns reference document |
| docs/AUTH_PATTERNS.md | Adds auth patterns reference document |
| context/CONTEXT_INDEX.md | Adds doc verification backlog items for runtime/Web API behavior |
| .gitignore | Ignores example lockfiles and docs generator failure artifacts |
| .github/workflows/copilot-sync.yml | Expands workflow triggers to include examples/** and docs/** |
| .github/copilot-instructions.md | Updates review guidance for docs generation and freshness expectations |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (1)
examples/outbound-modify-response/src/index.js:3
- This example uses plain HTTP for the outbound fetch URL. Prefer HTTPS to avoid insecure transport and potential outbound policy restrictions. Switch the JSONPlaceholder URL to https://jsonplaceholder.typicode.com/users.
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 176 out of 179 changed files in this pull request and generated 3 comments.
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (2)
fastedge-plugin-source/generate-llms-txt.sh:103
generate-llms-txt.shderives each doc's link label fromhead -1, which for hand-authored docs starts with an HTML maintenance comment (not the#heading). This producesllms.txtentries with an empty/hidden label instead of a human-meaningful title. Consider extracting the first Markdown heading line (first line starting with#) or skipping leading HTML comments/blank lines when computingheading.
examples/outbound-modify-response/src/index.js:3- This example fetches JSONPlaceholder over plain HTTP. Please switch to HTTPS so the sample doesn’t promote insecure transport (and to stay consistent with the README’s https URL).
qrdl
approved these changes
May 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.