server
software/server · 0 open · 11 done
Cleanly layered and now fully covered. connect/disconnect/rename validate their endpoints and fail loudly; the unreachable svg branch is gone; README + CMakeLists track kinogaki-core only (codecs merged in); the JSON-RPC error surface and the previously-untested tools have tests. 30/30 checks green.
Resolved 2026-06-20. connect now requires both endpoints to exist; disconnect checks findIncoming and fails on a no-op.
Resolved 2026-06-20. rename_element compares the final path to the request and returns a failure on a rejected/self-descendant/no-op rename.
Resolved 2026-06-20. Added test.sh cases for the -32700/-32600 error surface, missing-tool-name, connect/disconnect/rename validation, remove-subtree, and a JSON round-trip.
Resolved 2026-06-20. README tools table renamed prim->element, added the six missing tools, and re-keyed the .mcp.json example.
Resolved 2026-06-20. CMakeLists links only Kinogaki::Core and the README states the single core dependency; matches build.sh.
Resolved 2026-06-20. Documented the intentional initialize-ordering leniency at the dispatch site (single-document server, no per-session state).
Resolved 2026-06-20. Removed the unreachable duplicate 'svg' branch in codecFor.
Resolved 2026-06-20. Removed the stale prism/prisma rename-era binaries from build/; only kinogaki-server remains.
Where: src/main.cpp (transport: stdio loop + HTTP serve loop), src/HttpServer.h (the loopback HTTP transport), src/Dispatch.cpp (JSON-RPC protocol), src/Tools.cpp (domain handlers), src/Doc.h (Reader/Builder message marshalling), src/Log.h (sink-swappable log).
Clean. Transport (now two flavors, both feeding the one dispatch(Session&, line) seam), JSON-RPC protocol, domain tool dispatch, the eat-our-own-food Document message layer, and logging are each in their own unit; main.cpp wires a mutex around dispatch for the HTTP path. No god files. The Dispatch.h:3 / Log.h:4 comments about "the editor calls it per HTTP request" / "Phase 3" are now partly realized by HttpServer.h though still slightly aspirational — cosmetic only.
Where: all src/.
Clean. Functions read as verbs: dispatch, callTool, buildToolCatalog, addTool, readFile/writeFile, parsePath, parentExists, childrenOf, coerce, valueText, dtypeShort, buildArrayValue, endsWith, lowerExt, codecFor, confine, runCmd, logln; HttpServer's start/stop/acceptLoop/serve/send/ctEqual/header. Reader/Builder/Session/ToolResult/Log/HttpServer/Param are types (exempt); port() is a bare-noun accessor (fine).
Where: all src/.
Clean. Largest file is src/Tools.cpp at 487 lines; no file approaches 1000. Counts: Tools.cpp 487, HttpServer.h 153, main.cpp 107, Dispatch.cpp 91, Doc.h 74, Log.h 39, Tools.h 34, Dispatch.h 14 (~999 total).