Files
nisse/nisse-core
dongarandClaude Opus 5.5 3813ad55d6
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 2m3s
CI / e2e (pull_request) Successful in 4m5s
nisse-review: read code from a git clone kept between runs
Archives were downloaded and unpacked afresh for every run, which doesn't
scale to very large repositories. Each repository is now cloned once, with
its whole history, under scratch/repos/<owner>/<name>/ (head/ the clone,
base/ a worktree when read). A run fetches every branch and the PR's
refs/pull/N/head, checks out the head exactly, and fails if that head is
gone. Only the latest repository is kept for now.

Git runs walled off: none of the host's git configuration, links checked
out as plain files, no hooks, submodules or LFS, only the Gitea URL's
protocol, and the token as an http.extraHeader for that URL in git's
environment only. A stop ends a git command; a cut-short first clone is
removed. The reader never shows .git. GiteaClient.archive is gone.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
2026-10-17 20:37:12 +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).