Repository navigation
Conversation
JEV_BASE_URL and JEV_MODEL in ~/.config/typesafe/env (or the environment) set the endpoint and default model; without them the script calls TypeSafe with jev-latest. A 400 reads as a malformed request, as LiteLLM rejects one that way, and 401/403 name the model a proxy key may not list. key-status reports the endpoint and model in use. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Problem
jev.pyposts tohttps://api.typesafe.ai/v1/systemonewithjev-latest, both hardcoded. We're moving decision models behind LiteLLM, which serves the same/v1/systemoneroute natively (and translates it for OpenAI Decisions models), so the request itself doesn't need to change. Only where it goes, and what the model is called there: a proxy names models by its own aliases, and a virtual key may call only the ones it lists.Solution
Two optional settings, read the same way as the key (environment first, then
~/.config/typesafe/env):JEV_BASE_URLhttps://api.typesafe.ai/v1/systemoneis appended; a base ending in/v1or the full path works tooJEV_MODELjev-latest--modelThe key stays in
TYPESAFE_API_KEY. Slightly misnamed when it holds a LiteLLM key, I know, but renaming it would break every existing setup for the sake of one word.Smaller things that fell out of it:
key-statusalso reports the endpoint and default model, and where each came from. Still never the key.lean-jev-usagedescribed theevaluatebinary we dropped in 0.3.0; it now lists the actual requirements.Without the new variables, behaviour is exactly as before.
Testing
python3 -m unittest tests/test_jev.py: 33 pass, including new ones for settings resolution, the 400/401 paths and key redaction.claude plugin validate . --strictpasses.jevcomes back correct in ~0.7 s. A model the key doesn't list returns the 403 message above, with the proxy's own detail attached.🤖 Generated with Claude Code