CLI for TypeSafe Jev. Run it from a shell, or let an agent run it.
Jev answers noul, choice, and score questions over JSON state. It does not chat, and it only sees what you send. Invalid answers fail closed. Unused speculative heads cannot act. Ranked find lines are not evidence when the document has no answer.
Python 3.10+. API key: TypeSafe console.
curl -fsSL https://github.com/maddygoround/typesafeai-cli/releases/latest/download/install.sh | bashpipx install typesafeai-clipip install typesafeai-cli is the same package.
export TYPESAFE_API_KEY=apikey_…typesafe ask takes a state file and a questions file. Point each instruction at state with backticks.
{
"message": "I was charged twice for order A-104. Please refund the duplicate.",
"policy": "Duplicate charges are eligible for an immediate refund."
}{
"refund_requested": {
"type": "noul",
"instructions": "Does `message` request a refund?"
},
"intent": {
"type": "choice",
"instructions": "What does `message` ask for?",
"criteria": {
"refund": "The customer wants money returned",
"information": "Explanation only",
"other": "Something else"
}
}
}examples/ticket, examples/code-change, and examples/fan-out are full copies.
typesafe ask --state-file state.json --questions-file questions.json
typesafe noul "Does this request a refund?" --state "I was charged twice."
typesafe decide --answers-file last.jsonKeep those JSON files under ${TMPDIR:-/tmp}/codex/<project>/. typesafe skills install matches npx skills add: --project (default) or --global / -g. A TTY asks which. Global also writes a pointer into the user agent file (~/.claude/CLAUDE.md, ~/.codex/AGENTS.md, or ~/.grok/rules/typesafe-cli.md) so investigations load typesafe. typesafe auth status reports has_key and nothing else.
ask |
State file + questions file |
noul / choice / score |
One question |
find |
Search a file |
rank |
Order a JSON shortlist |
extract |
Pick a span already in the text |
verify |
Check a claim against a source |
screen |
Jailbreak / injection / sensitive-data / harm |
suggest-skill |
At most one skill name |
decide |
Map answers to yes / no / uncertain (no HTTP) |
models |
Model aliases |
smoke |
Live docs quickstart |
auth status |
Whether a key is loaded |
agent schema |
JSON command tree |
skills install |
Official TypeSafe skill + typesafe-cli (-g for all projects) |
Exit 0 answered, 1 request failed or invalid answer, 2 bad flags or questions.