Skip to content

Development

Andrea de Ruvo edited this page Aug 19, 2026 · 10 revisions

Development

python3 -m pytest -q          # 342 tests, no network, no tmux server of their own

The tests never touch tmux's default socket. Neither should anything else you run against this code: a tmux server that dies takes every session on it with it, which is how this repository learned the rule the hard way.

The tooling, since a folder of unexplained scripts is worse than no folder:

scripts/openapi.py rewrites docs/openapi.json from the code. The test suite runs it with --check and fails if the published description has drifted, so this one is not optional.
scripts/demo.py builds the instance every screenshot and clip is made from — fabricated sessions, fabricated files, on its own tmux socket. It exists so the pictures can be remade when the interface moves, and so that "none of this is a real machine" is something you can verify rather than take on trust.
scripts/orchestra.py, scripts/referee.py, scripts/fullstack.py three worked orchestrators, each run against real tmux before being committed — see Orchestrating several agents
tools/argus_client.py, tools/argus-say the Python client and a command-line front door onto it: the transport. Standard library only, one file, no package — see An agent driving Argus.
tools/argus_orchestra.py the orchestration framework on top of it — the contract, the waiting, the names, the worktrees. It is why the three examples are twenty lines each: see Writing an orchestrator.
scripts/surface.py lists every public name in tools/ and fails if one has no docstring, or — given a checkout of this wiki — if one is named nowhere on it. The test suite runs both; CI clones the wiki so the second one is real there rather than skipped. It exists because the client was once documented eight methods out of fourteen and nothing noticed.
scripts/record.mjs drives a Chromium over the debugging protocol to record those clips, from the demo instance.

Third-party code

Vendored under static/vendor/, unmodified, each keeping its own copyright header:

  • xterm.js 6.0.0 — MIT
  • marked 18.0.7 — MIT
  • qrcode-generator 2.0.4 — MIT
  • highlight.js 11.12.0 — BSD-3-Clause, the ESM build: the core and 27 languages, imported only when a file of code is opened
  • pdf.js 4.10.38 — Apache-2.0, the build Argus draws every PDF with
  • swagger-ui 5.32.14 — Apache-2.0, the bundle and its stylesheet, served at /api/docs; FastAPI's own one-liner would fetch it from a CDN
  • mermaid 11.16.1 — MIT, the minified ESM build with its chunks and without its source maps: 3.7MB on disk and none of it fetched until a document with a ```mermaid fence in it is opened, at which point the entry and the chunks for that one kind of diagram are what load

Optional at runtime: pandoc for Word documents, and pdftotext (poppler) to search inside PDFs. Without either, those files still open — they are just plainer.

Clone this wiki locally