Metadata-Version: 2.4
Name: quest-ai
Version: 0.1.2
Summary: Quest — Socratic AI tutor that never gives the answer, only asks the next better question.
Author: yuvrxj
Project-URL: Homepage, https://github.com/preoracle/quest
Project-URL: Documentation, https://github.com/preoracle/quest#readme
Project-URL: Repository, https://github.com/preoracle/quest
Project-URL: Issues, https://github.com/preoracle/quest/issues
Project-URL: Changelog, https://github.com/preoracle/quest/blob/main/docs/CHANGELOG.md
Keywords: socratic,tutor,education,langgraph,spaced-repetition
Classifier: License :: Other/Proprietary License
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Education
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Education
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: langchain>=0.3.0
Requires-Dist: langchain-anthropic>=0.3.0
Requires-Dist: langgraph>=0.2.0
Requires-Dist: langgraph-checkpoint-sqlite>=2.0.0
Requires-Dist: prompt-toolkit>=3.0.0
Requires-Dist: pydantic>=2.7.0
Requires-Dist: python-dotenv>=1.0.1
Requires-Dist: pyyaml>=6.0.2
Requires-Dist: rich>=13.0.0
Requires-Dist: questionary>=2.0.0
Provides-Extra: api
Requires-Dist: fastapi>=0.115.0; extra == "api"
Requires-Dist: uvicorn>=0.30.0; extra == "api"
Requires-Dist: httpx>=0.27.0; extra == "api"
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: httpx>=0.27.0; extra == "dev"
Requires-Dist: build>=1.0; extra == "dev"
Requires-Dist: twine>=5.0; extra == "dev"

# Quest

Socratic AI tutor — **no explanations**, only the next better question. Separate evaluator, concept DAGs, mastery tracking, resumable sessions.

**Requires Python 3.11+** · **Author:** [yuvrxj](https://pypi.org/user/yuvrxj/)

```bash
pip install -U quest-ai
mkdir -p ~/.quest
echo 'ANTHROPIC_API_KEY=sk-ant-...' >> ~/.quest/.env
quest
```

## Quick start

| Command | What it does |
|---------|----------------|
| `quest` | Topic catalog → pick or search → session |
| `quest TOPIC` | Start or resume a topic |
| `quest TOPIC --fresh` | New session, replay full concept DAG |
| `quest topic new "your goal"` | Generate a concept map (LLM) |
| `quest mastery` | Mastery scores |
| `quest reset` | Wipe progress (topic YAMLs stay) |

At the catalog prompt: `3`, `rag_pipeline`, `rag_pipeline --fresh`, `new react hooks`, `help`, `quit`.

Installed data lives in `~/.quest/` (`quest.db`, checkpoints, custom topics). In a git checkout, data stays beside `cli.py`.

## How sessions work

1. You pick a **topic** (bundled catalog or `quest topic new`).
2. Quest selects a **concept** from a prerequisite graph (mastery + spaced repetition).
3. **Tutor** asks one Socratic question → you answer → **evaluator** scores that answer (1–5).
4. Repeat on the same concept until mastery (≥4 on three turns), then next concept.
5. `/quit` pauses; run `quest TOPIC` again to resume.

**Memory:** the tutor sees your full Q↔A on the **current concept**. The evaluator scores **only the latest question and answer** (`/last` in-session for detail).

## vs “just use ChatGPT”

Quest is for **learning**: the tutor does not teach; a separate model scores you; topics are structured graphs; progress persists across sessions.

## Links (GitHub)

Use these **absolute** URLs — PyPI cannot serve files under `docs/` on the package page.

- [User guide](https://github.com/preoracle/quest/blob/main/docs/PRODUCT.md)
- [Changelog](https://github.com/preoracle/quest/blob/main/docs/CHANGELOG.md)
- [Repository](https://github.com/preoracle/quest)

## Development

```bash
git clone https://github.com/preoracle/quest.git
cd quest
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
pytest
python cli.py
```

Optional: `QUEST_WIZARD=1 quest` for arrow-key menus instead of the Rich catalog.

**Publish to PyPI** (token in `.env` as `PYPI_TOKEN` or exported in shell):

```bash
chmod +x scripts/publish_pypi.sh
./scripts/publish_pypi.sh          # build + upload
./scripts/publish_pypi.sh --check  # build + validate only
```

Internal design notes: [BRIEF](https://github.com/preoracle/quest/blob/main/docs/BRIEF.md) · [PHASES](https://github.com/preoracle/quest/blob/main/docs/PHASES.md)
