Tenx assessment CLI
Project description
cli
CLI client for Tenx hiring assessments.
Highlights
- Uses the Claude Agent SDK for local interactive coding sessions.
- Appends each REPL turn to
.tenx/assessment_turns.jsonl(when a session id is present). tenx-submituploads pending turns toproxy, then runs the FRQ phase and saves free-response rows.
Setup
python -m venv .venv
.venv\Scripts\activate
pip install -e ".[dev]"
copy .env.example .env
Set ANTHROPIC_API_KEY in .env before running.
Run
tenx-ai
The CLI starts a 60-minute assessment timer when the process starts. Use /time to display the remaining time.
Set TENX_ASSESSMENT_DURATION_SECONDS in .env to override the timer length.
Or:
python -m assessment_cli
Edit approval mode
Set TENX_EDIT_APPROVAL=true in .env to review proposed Write, Edit, and Bash tool actions before they run.
TENX_EDIT_APPROVAL=false(default): similar to Claude CodeacceptEditsfor file edits.TENX_EDIT_APPROVAL=true: similar to Claude Codedefaultmode for these tools.
Approval keys:
yacceptnrejectdshow full diff?show key help
Compared to Claude Code, this is a focused terminal subset of the same permission model concepts. For full Claude Code mode controls, see the CLI reference.
Submit changes
Run this from your assessment workspace to stage, commit, and push:
tenx-submit
Optional commit message:
tenx-submit --message "Assessment submission"
By default, after a successful push, tenx-submit:
- Uploads any pending lines from
.tenx/assessment_turns.jsonlto the proxy (then clears that file on success). - Starts an FRQ phase: generates questions from your most recent commit (
HEAD), prompts for answers, and saves rows toproxy.
For local development, set ENV=local in .env to skip git add / commit / push and go straight to upload + FRQ (workspace must still be a git repository for FRQ context).
Chat history persistence
Set these in .env to enable persistence:
ASSESSMENT_PROXY_URL(for examplehttp://localhost:8000)ASSESSMENT_PROXY_TOKEN(must match the proxy’sPROXY_BEARER_SECRET)
When ASSESSMENT_PROXY_URL is unset, there is no session id and no JSONL logging to the proxy. FRQ persistence also requires the URL and token.
With ASSESSMENT_PROXY_URL set, the first tenx-ai run creates a session and writes .tenx/assessment_session_id; later runs reuse it until tenx-submit succeeds (which clears the JSONL upload and that file so the next assessment gets a new session).
Breaking change (Phase 0)
The proxy path and JSON shape changed: see proxy/README.md.
Security notes for Codespaces
- Do not store the Supabase secret API key in the CLI.
- Use only proxy URL and bearer token in CLI env.
- Treat
ASSESSMENT_PROXY_TOKENas sensitive and rotate if leaked.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tenx_ai-0.1.9.tar.gz.
File metadata
- Download URL: tenx_ai-0.1.9.tar.gz
- Upload date:
- Size: 39.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9cd6a36e029d8620eee32eaa8b3129120f2c5fa61016c1acaa27144410c2ac4b
|
|
| MD5 |
86d0675691ae4f0e7d0b302e996c96c1
|
|
| BLAKE2b-256 |
8474bc4983dd254ed9d6e2a8fcfcff67bf78dff6219ef7645ab648a084f073ca
|
File details
Details for the file tenx_ai-0.1.9-py3-none-any.whl.
File metadata
- Download URL: tenx_ai-0.1.9-py3-none-any.whl
- Upload date:
- Size: 45.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49eeb864e27abcf3ba50298f2d15ce74233ae219190b65858649602aac5e2989
|
|
| MD5 |
02d2edfb6b7b1503d77facf6b47fc102
|
|
| BLAKE2b-256 |
e5e5625b793a01273a2a7cdc7ff2ef98ccd83b4222eda5c2d95efc12899f823e
|