Skip to content

v0.33.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 20:32
· 145 commits to main since this release

Fixed

  • Architect steering of async child runs now actually works at runtime.
  • The librarian subagent 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 tk tickets.

Minor details

  • tlh update now automatically reclaims disk space left behind by retired bundled extensions.

Removed

  • Removed the wait tool (extensions/subagents/src/runs/background/wait.ts, 390 LOC) and all wiring: WaitParamsSchema/WaitParams from schemas.ts, WaitToolConfigObject/WaitToolConfig/waitTool config field from types.ts, and the waitToolConfig const plus pi.registerTool(waitTool) call from index.ts. Removed the wait section from docs/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 sets config.waitTool or PI_SUBAGENT_WAIT_TOOL_ENABLED). Test deletions: wait.test.ts (whole file) and exactly one it() in index-child-registration.test.ts.
  • Removed the mcpDirectTools allowlist resolver (extensions/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts, 365 LOC) and the mcpDirectTools?: 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 in pi-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-memory module (extensions/subagents/src/agents/agent-memory.ts) and its test (extensions/subagents/test/unit/agent-memory.test.ts): no TLH agent declares the memory frontmatter field, and TLH is the only consumer. The AgentMemoryScope type, AgentMemoryConfig interface, and memory field are removed from AgentConfig; the buildAgentMemoryInjection call sites are removed from execution.ts and async-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. Its spawn path called executor.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 stray PI_SUBAGENTS_RPC_ENABLED=1 or config typo silently reopening that bypass. RpcBridgeConfig and the rpc? member of ExtensionConfig are also removed from types.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