Implement CYA-WP-0008 llm-connect adapter integration.

Wire LLMConnectAdapter behind the existing LLMAdapter seam with config-driven
selection, graceful degradation, --offline mode, and bounded session context.
Add unit tests, integration docs, and update README/SCOPE/AGENTS.
This commit is contained in:
2026-06-22 10:36:10 +02:00
parent cd5db14fbf
commit 019f6e7dc7
17 changed files with 800 additions and 19 deletions

View File

@@ -4,7 +4,7 @@ type: workplan
title: "llm-connect Adapter Integration for Production Assistance"
domain: capabilities
repo: can-you-assist
status: ready
status: finished
owner: grok
topic_slug: foerster-capabilities
created: "2026-06-22"
@@ -50,7 +50,7 @@ llm-connect. Credential routing via `warden route` before requesting secrets.
```task
id: CYA-WP-0008-T01
status: todo
status: done
priority: high
state_hub_task_id: "483d13bb-aabe-48ad-96c2-8df83de5f442"
```
@@ -62,11 +62,13 @@ Identify config surface (TOML keys, env vars). Note gaps requiring llm-connect c
- Short integration note in `docs/` or workplan appendix.
- Credential route catalog id(s) documented via `warden route find`.
**Delivered:** `docs/llm-connect-integration.md`
### T02 — Implement `LLMConnectAdapter`
```task
id: CYA-WP-0008-T02
status: todo
status: done
priority: high
state_hub_task_id: "0fc17ad5-d90b-4ad1-b060-a1a2f9c25ea8"
```
@@ -80,11 +82,13 @@ New class in `src/cya/llm/` implementing `LLMAdapter`:
**Acceptance criteria:**
- Protocol-compliant; swap via config or env (`CYA_LLM_ADAPTER=connect|fake`).
**Delivered:** `src/cya/llm/connect_adapter.py`, `src/cya/llm/factory.py`
### T03 — Configuration and developer ergonomics
```task
id: CYA-WP-0008-T03
status: todo
status: done
priority: medium
state_hub_task_id: "e8470a37-ecec-42f1-920b-ccd8b98b5512"
```
@@ -97,11 +101,13 @@ state_hub_task_id: "e8470a37-ecec-42f1-920b-ccd8b98b5512"
- Operator can configure adapter without editing source.
- No secrets committed; example config uses placeholders.
**Delivered:** `src/cya/config.py`, `docs/cya-config.example.toml`, README section
### T04 — Orchestrator and shell integration
```task
id: CYA-WP-0008-T04
status: todo
status: done
priority: high
state_hub_task_id: "f2781963-fecf-4576-96de-bd745df271a0"
```
@@ -116,11 +122,13 @@ Wire `handle_request()` and CYA-WP-0007 shell turns to adapter selection:
- One-shot and shell paths use same adapter factory.
- Session context bounded (token/line budget documented).
**Delivered:** `get_adapter()` wired in orchestrator; `session_turns` + `bound_session_turns()` ready for CYA-WP-0007 shell
### T05 — Tests and offline CI strategy
```task
id: CYA-WP-0008-T05
status: todo
status: done
priority: high
state_hub_task_id: "32de980b-1a24-4159-9550-7c516570cae3"
```
@@ -133,11 +141,13 @@ state_hub_task_id: "32de980b-1a24-4159-9550-7c516570cae3"
- `make test` passes without network or API keys.
- Live test documented for operator manual verification.
**Delivered:** `tests/test_llm_factory.py`, `tests/test_llm_connect_adapter.py`, `tests/test_llm_prompt.py`
### T06 — Documentation and SCOPE update
```task
id: CYA-WP-0008-T06
status: todo
status: done
priority: medium
state_hub_task_id: "2d152d4b-e4b2-4a94-8f85-d8f033e55d5f"
```
@@ -151,7 +161,7 @@ Update README, SCOPE.md (remove "only FakeLLMAdapter" where accurate), AGENTS.md
```task
id: CYA-WP-0008-T07
status: todo
status: done
priority: low
state_hub_task_id: "2fb42517-b2df-43d3-8195-f02d310107dc"
```
@@ -166,4 +176,4 @@ state_hub_task_id: "2fb42517-b2df-43d3-8195-f02d310107dc"
---
**Status note:** `ready` on 2026-06-22. Can start T01T03 in parallel with CYA-WP-0007 T02T04.
**Status note:** `finished` on 2026-06-22. Integration doc: `docs/llm-connect-integration.md`.