app.pyis the Streamlit entry point that wires user chat events to the LangGraph workflow.graph/main.pydefines theChatState, tool bindings, and compiled graph exported asgraph; extend this file when adding nodes or tools.venting_list.txtsupplies canned prompts for theparse_vent_listtool—keep updates idempotent and one entry per line.env.examplelists required environment keys (OPENAI_API_KEY); copy it to.envfor local secrets. Assets and additional configs belong beside their consuming modules to keep navigation predictable.
uv venvcreates the project virtual environment; run once per machine.source .venv/bin/activate(macOS/Linux) activates the environment; adapt for Windows as needed.uv syncinstalls all runtime and dev dependencies declared inpyproject.toml.uv run streamlit run app.pylaunches the chat UI athttp://localhost:8501.uv run langgraph playground graph/main.pyopens an interactive graph preview useful for debugging node flows.
- Follow standard Python 3.10+ conventions: 4-space indentation, type hints for new public functions, and descriptive snake_case names.
- Run
uv run ruff check --fixbefore pushing; configure ignores inpyproject.tomlif necessary. - Keep Streamlit widget keys stable and prefer pure functions for graph nodes to simplify state reasoning.
- Add tests under
tests/naming filestest_<feature>.py; target pytest parametrization for tool behaviors and graph transitions. - Execute
uv run pytestlocally; aim for meaningful coverage on graph state changes and Streamlit helpers. - Mock external APIs (e.g., OpenAI) via fixtures to keep runs deterministic.
- Match existing history with short, imperative commit titles (
add tool,run langgraph) and scoped changes per commit. - Fill PR descriptions with context: problem statement, solution notes, manual test steps, and screenshots of UI tweaks.
- Link related issues and call out migration steps or new environment keys so reviewers can validate deployment impact.
- Never commit
.envor.streamlit/secrets.toml; rely on the provided template and document new keys. - Validate that
venting_list.txtadditions contain non-sensitive phrasing, as the tool reads it verbatim into responses.