4.5 KiB
4.5 KiB
glue issues and gaps
Found while wiring src/glue. Each entry names the file and the smallest repro. Nothing here was patched
around silently; items marked "glue side" are limits the glue itself has.
Open
- No vault seal.
src/sealis empty (another agent portsSeal).repl::Bootusesstore::NullSealwhenTAI_PASSPHRASEis unset: the banner saysseal: off, python sayson (default key). An explicitTAI_PASSPHRASE=xis refused:seal error: TAI_PASSPHRASE is set but this build links no vault seal(exit 2). Repro:TAI_PASSPHRASE=x build/detz --versionworks (before boot),TAI_PASSPHRASE=x build/detz hiexits 2. Closes with astore::SealPortimplementation passed asBootOptions::seal_factoryinsrc/glue/app_bundle.cpp(one line). SysInfo.collect_sysinfowas ported by no module (tai.py8978-9008).src/comms/comms.cpponly has a stubsys_info(). The glue carriesSysInfoProbe(sequential, each check timed, 10 s ceiling); the python runs the checks on threads.pythonandvenvchecks report the native binary instead of an interpreter.releasetool cannot work natively.do_releaserewrites theVERSION =line of the running script. The binary has no script.OpsAdapter::do_releasethrows and the tool reports the error; the native flow ismake release PART=... MSG=...intaicpp/.ensure_self_backupat boot is not called for the same reason.- Ctrl-C does not kill the call in flight (glue side).
AgentReplHostexpiresagent.deadline, the loop stops at the next step. A running HTTP call, shell command or sandbox exec finishes first.agent::Agenthas no cancellation point insideChatClient::complete. - MCP port is bound to the main agent (glue side).
McpHostAdapterasks approvals, names the audit actor and runs the resolver subagent through the primary agent, and uses the primary store connection. A worker agent on its own thread that calls an MCP tool therefore shares the primary sqlite connection. tai.py passes the calling agent (app) instead. Needs the port to carry the caller, i.e.McpPort::call(..., Agent&). docs/wiring/capmcp.mddoes not exist. The task listed it;cap/mcpwere wired from the headers (cap_agent_port.h,mcp_serve_main.h,mcp_host.h) andcap.md/mcp.md.src/cli:Command::run()is still the stub (--help/--versiononly) andParser::parsemapsargc <= 1to--help, whereas tai.py starts the REPL.main.cpptherefore callsParser::parseOptsandGlueApp::run(which prints help only for an explicit--help). The other agent that rewritessrc/clishould dropCommandor keepparseOptsand theOptionsfields stable.Makefile:-I../../moloapp/srcresolves fromtaicpp/of the main checkout only. From a git worktree (.claude/worktrees/*/taicpp) it needsCXXFLAGS=... -I/home/retoor/projects/moloapp/src.make testbuildstests/test_main.cpp, which still calls the removed placeholder API (llm::ChatClient("openai", ...),ModelHealth,Opencode,feed_sse,provider_info; docs/wiring/agent.md); not touched here.probe_backendin the REPL banner runs sequentially with a 6 s timeout per backend, like python: a dead backend delays the prompt. Not changed.- Not covered by a committed test:
--tui-local(driven once over a pty by a throwaway script: it drew, ran a real model turn whose answer reached the vault session, and/quitexited 0),--tui(grr client; without a tty it exits 2 withtui unavailable, no grr server was started),--mplexand--plexer-wrap(without a tty they answerno server running on .../open terminal failed: not a terminal, exit 1; the multiplexer session itself was not started),--install(run once against a throwawayHOME: binary copy, bash hook, venv and six bundled skills written, exit 0),--update-models(read-only discovery ran),--eval-retrievaland--stats-rag(empty vault only). --cap-speakstring content. A{"type":"user","message":{"role":"user","content":"text"}}frame (content a plain string) is split into one character per line before it reaches the model. This is the literal tai.py behavior (cap_stream_json.cppmirrorsfor block in message.get("content")); real clients send a block list, whichtests/glue_flags.pyuses. Noted so nobody files it as a port bug.
Fixed in the glue (one-line integration errors)
- None needed in other modules: every compile error was on the glue side.