PR 2 of the steps-3/4 plan. - llm.py: LLMClient protocol — complete(events, tools, model) -> canonical events — present from the first real LLM call. LiteLLMClient renders requests via the A10 renderer, targets the proxy's OpenAI-compatible route, and maps provider tool-call IDs to locally-minted canonical IDs at the boundary - RoleMap (A11): executor/planner/delegate/consultant resolved from env; pinned() returns the mapping to record at task start - Config strictly from env: NISSE_LLM_BASE_URL, NISSE_LLM_TOKEN; envfile.py is a minimal .env loader where real env wins; .env now gitignored with a committed .env.example documenting all variables (Matrix ones included for the upcoming transport PR) - Live smoke test against the proxy is integration-marked and skips without credentials — CI stays credential-free per operator decision; the test runs locally once .env exists - httpx added as nisse-dev's HTTP client Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
17 lines
390 B
TOML
17 lines
390 B
TOML
[project]
|
|
name = "nisse-dev"
|
|
version = "0.1.0"
|
|
description = "Dev agent: plans and implements software projects, produces Gitea PRs"
|
|
requires-python = ">=3.12"
|
|
dependencies = ["nisse-core", "httpx>=0.27"]
|
|
|
|
[project.scripts]
|
|
nisse-dev = "nisse_dev.main:main"
|
|
|
|
[tool.uv.sources]
|
|
nisse-core = { workspace = true }
|
|
|
|
[build-system]
|
|
requires = ["uv_build>=0.12,<0.13"]
|
|
build-backend = "uv_build"
|