v0.33.0
Fixed
- Architect steering of async child runs now actually works at runtime.
- The
librariansubagent tool budget was raised from soft 20 / hard 30 to soft 30 / hard 60 so external GitHub research tasks are less likely to end early on budget exhaustion. - The architect cleanup guidance now spells out how to delete
tktickets.
Minor details
tlh updatenow automatically reclaims disk space left behind by retired bundled extensions.
Removed
- Removed the
waittool (extensions/subagents/src/runs/background/wait.ts, 390 LOC) and all wiring:WaitParamsSchema/WaitParamsfromschemas.ts,WaitToolConfigObject/WaitToolConfig/waitToolconfig field fromtypes.ts, and thewaitToolConfigconst pluspi.registerTool(waitTool)call fromindex.ts. Removed thewaitsection fromdocs/subagents.md. This is a user-visible removal for any non-TLH consumer; TLH could not reach the tool (TLH's primary-agent tool allowlist excludes it, no TLH agent declares it, TLH never setsconfig.waitToolorPI_SUBAGENT_WAIT_TOOL_ENABLED). Test deletions:wait.test.ts(whole file) and exactly oneit()inindex-child-registration.test.ts. - Removed the
mcpDirectToolsallowlist resolver (extensions/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts, 365 LOC) and themcpDirectTools?: string[]frontmatter field threading from all call-site files: no TLH agent declares the field. Kept:env.MCP_DIRECT_TOOLS = "__none__"is still set unconditionally inpi-args.ts; the sentinel tells@diegopetrucci/pi-mcp-adapter(bundled in TLH) not to bootstrap direct MCP tools in child subagents — an unset var means "bootstrap everything configured" and would silently widen every child's tool surface. This sentinel must not be removed by a future cleanup pass. - Removed the
agent-memorymodule (extensions/subagents/src/agents/agent-memory.ts) and its test (extensions/subagents/test/unit/agent-memory.test.ts): no TLH agent declares thememoryfrontmatter field, and TLH is the only consumer. TheAgentMemoryScopetype,AgentMemoryConfiginterface, andmemoryfield are removed fromAgentConfig; thebuildAgentMemoryInjectioncall sites are removed fromexecution.tsandasync-execution.ts. - Removed the subagent RPC bridge (
extensions/subagents/src/extension/rpc.ts, 384 LOC) and its tests (rpc.test.ts,rpc-gate.test.ts). The bridge let a co-installed Pi extension drive subagents over the in-process event bus via ping/status/spawn/interrupt/stop. Itsspawnpath calledexecutor.execute()directly, bypassing TLH's tool-call allow-list guard — which is exactly why it shipped default-off. Nothing in this monorepo enables or references it. Removing it eliminates the possibility of a strayPI_SUBAGENTS_RPC_ENABLED=1or config typo silently reopening that bypass.RpcBridgeConfigand therpc?member ofExtensionConfigare also removed fromtypes.ts. - The fff (
npm:@ff-labs/pi-fff) extension has been removed.
Full changelog: https://github.com/diegopetrucci/the-last-harness/blob/v0.33.0/CHANGELOG.md