- matrix.py: Transport implementation over the Matrix client-server HTTP API directly (token auth, /sync long-poll, /send) using the existing httpx dependency — no Matrix SDK; four endpoints total. Deviation from the presented plan (matrix-nio) flagged in the PR - First sync learns position and skips backlog, so room history is never delivered as context (A1); own messages and non-message events filtered; sender MXID passed through for the orchestrator's operator allowlist - Sync loop backs off (capped at 60s) and retries indefinitely on homeserver errors, mirroring B2's polling posture - Encrypted rooms unsupported: bot rooms are created unencrypted until E2E lands (operator decision; room recreated accordingly) - NISSE_MATRIX_TEST_ROOM_ID added: the live smoke test binds only to the dedicated test room, never the production room - 8 unit tests over a mocked HTTP layer; live integration test verified against the real homeserver Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
22 lines
949 B
Bash
22 lines
949 B
Bash
# Copy to .env (chmod 600). Real environment variables win over this file.
|
|
# .env is gitignored; never commit real values.
|
|
|
|
# --- LLM access (A5): the LiteLLM proxy is the single LLM destination ---
|
|
NISSE_LLM_BASE_URL=http://litellm.example:4000
|
|
NISSE_LLM_TOKEN=sk-your-litellm-virtual-key
|
|
|
|
# --- Role mapping (A11): roles resolve to concrete model strings ---
|
|
NISSE_ROLE_EXECUTOR=anthropic/claude-haiku-4-5-20251001
|
|
NISSE_ROLE_PLANNER=anthropic/claude-opus-5
|
|
NISSE_ROLE_DELEGATE=anthropic/claude-opus-5
|
|
NISSE_ROLE_CONSULTANT=anthropic/claude-opus-5
|
|
|
|
# --- Matrix transport (A1), used by nisse-dev's MatrixTransport ---
|
|
NISSE_MATRIX_HOMESERVER=https://matrix.example
|
|
NISSE_MATRIX_USER_ID=@nisse-dev:example
|
|
NISSE_MATRIX_TOKEN=syt_your_matrix_access_token
|
|
NISSE_MATRIX_ROOM_ID=!roomid:example
|
|
# Dedicated room for the live integration test; never the production room.
|
|
NISSE_MATRIX_TEST_ROOM_ID=!testroomid:example
|
|
NISSE_MATRIX_OPERATORS=@you:example
|