Tools: Implement Tool.Info interface with execute() method
Context: Pass sessionID in tool context, use App.provide() for DI
Validation: All inputs validated with Zod schemas
Logging: Use Log.create({ service: "name" }) pattern
Storage: Use Storage namespace for persistence
API Client: The TypeScript TUI (built with SolidJS + OpenTUI) communicates with the OpenCode server using @opencode-ai/sdk. When adding/modifying server endpoints in packages/opencode/src/server/server.ts, run ./script/generate.ts to regenerate the SDK and related files.