Skip to main content

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-submit uploads pending turns to proxy, 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 Code acceptEdits for file edits.
  • TENX_EDIT_APPROVAL=true: similar to Claude Code default mode for these tools.

Approval keys:

  • y accept
  • n reject
  • d show 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.jsonl to 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 to proxy.

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 example http://localhost:8000)
  • ASSESSMENT_PROXY_TOKEN (must match the proxy’s PROXY_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_TOKEN as sensitive and rotate if leaked.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tenx_ai-0.1.9.tar.gz (39.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tenx_ai-0.1.9-py3-none-any.whl (45.8 kB view details)

Uploaded Python 3

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

Hashes for tenx_ai-0.1.9.tar.gz
Algorithm Hash digest
SHA256 9cd6a36e029d8620eee32eaa8b3129120f2c5fa61016c1acaa27144410c2ac4b
MD5 86d0675691ae4f0e7d0b302e996c96c1
BLAKE2b-256 8474bc4983dd254ed9d6e2a8fcfcff67bf78dff6219ef7645ab648a084f073ca

See more details on using hashes here.

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

Hashes for tenx_ai-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 49eeb864e27abcf3ba50298f2d15ce74233ae219190b65858649602aac5e2989
MD5 02d2edfb6b7b1503d77facf6b47fc102
BLAKE2b-256 e5e5625b793a01273a2a7cdc7ff2ef98ccd83b4222eda5c2d95efc12899f823e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page