You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* fix: strip all invalid HTTP header characters in sanitizeEnvValue
The previous regex only removed \r\n but Node.js rejects all control
characters outside [\t\x20-\x7e\x80-\xff] with ERR_INVALID_CHAR.
CI secrets can contain null bytes or other control chars that slipped
through.
https://claude.ai/code/session_01Kj7rEHNuhTG5U7NrM9RWaG
* fix: sanitize env vars in-place so third-party libs get clean values
The OTel OTLP exporter (used by @arizeai/phoenix-otel) reads
PHOENIX_API_KEY directly from process.env via getEnvApiKey(), bypassing
our sanitizeEnvValue() wrapper. It then passes the raw value to
node:http which throws ERR_INVALID_CHAR.
Add sanitizeProcessEnv() that rewrites sensitive env vars on
process.env itself, called right after dotenv.config(). This ensures
every reader — including third-party libraries — gets clean values.
https://claude.ai/code/session_01Kj7rEHNuhTG5U7NrM9RWaG
* fix: simplify regex, improve comments, add redacted env logging
- Replace cryptic allowlist regex with readable control-char blocklist
- Explain why in-place sanitization is needed (phoenix-otel reads env directly)
- Log redacted env var values during sanitizeProcessEnv() for CI debugging
https://claude.ai/code/session_01Kj7rEHNuhTG5U7NrM9RWaG
* fix: simplify tests for sanitizeEnvValue and sanitizeProcessEnv
* docs: update DEVELOPMENT.md to include LLM evals
* fix: improve value redaction logic for safer logging
---------
Co-authored-by: Claude <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: DEVELOPMENT.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -104,6 +104,11 @@ Restart Claude Code for the change to take effect. This token is picked up by bo
104
104
|**Unit tests**|`npm run test:unit`| Individual modules in isolation — no credentials needed |
105
105
|**Integration tests**|`npm run test:integration`| Full server over all transports against real Apify API (requires `APIFY_TOKEN` + `npm run build`) |
106
106
|**mcpc probing**|`mcpc @stdio tools-call ...`| Interactive end-to-end verification during development |
107
+
|**LLM evals**| CI only — apply `validated` label | Runs `evals/run_evaluation.ts` against multiple models via OpenRouter; requires `PHOENIX_*` and `OPENROUTER_*` secrets |
108
+
109
+
To trigger the eval workflow on a PR, apply the **`validated`** label.
110
+
The workflow then runs automatically and posts results to Phoenix.
111
+
It also runs automatically on every merge to the `master` branch.
0 commit comments