Adapters in src/glue for all ports of agent/ports.h (store, runtime, shell, ui, mcp, skills, plexer, tui, ops, scheduler db), llm log sink and box, repl::ReplHost over agent::Agent, cap-speak, serve-mcp, telegram and tui-local seams. main.cpp dispatches the flags in tai.py main() order. Tests: tests/glue_persist.py (real model, restart persistence, one-shot shell call), tests/glue_flags.py, tests/glue_ports.cpp. Spec: docs/glue.md, gaps: docs/glue-issues.md. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
4.0 KiB
4.0 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.--tui-localmodel turn not proven. The chat scene starts, draws, runs slash commands through the adapter and exits cleanly (driven over a pty); a full model turn through the TUI was started but not confirmed in the vault within the observation window.--tui(grr client) needs a grr server and was not started.--mplex,--plexer-wrap,--install,--update-modelswith writes were wired to the module entry points; only--update-models(read-only discovery) and--demo-shotwere run.--installwrites into$HOMEand was not run on a real home.
Fixed in the glue (one-line integration errors)
- None needed in other modules: every compile error was on the glue side.