Files
nisse/nisse-core
dongarandClaude Opus 5.5 4904fa0b63
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 2m44s
CI / e2e (pull_request) Successful in 4m9s
Stream the chat route, so the timeout is on silence (#174)
A model call that passed request_timeout_s failed the whole run, though the
model was still writing. The chat route, which every local model takes, now
streams its replies and puts them back together into the response the
server would have sent, so the call record and parsing are unchanged.
request_timeout_s becomes the longest the model may go silent.

Measured on the 4090 through LiteLLM: an abandoned plain request kept the
server busy (a tiny request after it waited 51 s); an abandoned stream freed
it (0.3 s). A plain retry would have waited behind the abandoned call, so
there is none.

The passthrough route, hosted Anthropic models only, stays unstreamed: its
cost comes only in a header that streaming loses.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
2026-10-26 22:33:34 +00:00
..
2026-10-13 18:37:01 +00:00
2026-10-13 21:31:29 +00:00

nisse-core

The shared library the Nisse agents sit on (Part L of the architecture). It never imports an agent. Packages follow the architecture's sections:

  • models (L9, L7): llm (the one client), catalog and probe (what the models are), render and render_anthropic (request bodies from the log), context (fitting a request to its window, L6).
  • log (L7, L6): canonical (the log's events), views (what each role is shown of the others).
  • state (L8): store (an agent subclasses StateStore for its own tables, roles and views), reconcile, worker, cancel, dump.
  • knowledge (L10, L6.4): vault, memory.
  • conversation (L5): transport, matrix.
  • execution (L13): ssh (SSH to a tool VM); testing (a throwaway sshd for tests).
  • authority (P3, P4, L4): actions (Action, Verdict, and static reading of shell commands, which each agent's fast-path rules build on; nisse-dev's are in nisse_dev.loop.actions).
  • loop (L2): driver (a driver run, with the agent's waiting tools and executor), tools (the control tools any agent offers), expert (ask_expert, L9). Each agent keeps its own scheduler.
  • knowledge also has handlers: the vault and memory as control tools.
  • config: the shared parts of an agent's configuration.
  • At the top, until each gains a second module: gitea (the tracker and forge, L1), oplog and envfile (L12).