# Progress ## Milestones ### ✅ Done - Repo created at `/home/sebby/repos/nanobot-ts` - Tooling configured: `oxfmt` (single quotes), `oxlint`, `@types/bun`, strict tsconfig - All dependencies installed - `src/` directory structure scaffolded - Memory bank initialized - All source files written (first pass) - Templates and skills copied from Python repo - **Full typecheck pass**: `tsc --noEmit` → 0 errors - **Full lint pass**: `oxlint` → 0 errors, 0 warnings - `package.json` scripts added: `start`, `dev`, `typecheck` - **Docs created**: `/docs/PRD.md`, `Architecture.md`, `API.md`, `Discoveries.md` - **Onboard command**: Created `src/cli/onboard.ts` with workspace initialization - **Provider config**: Added required `provider` field to agent config - **Workspace validation**: Agent/gateway commands throw if workspace doesn't exist ### 🔄 In Progress - Nothing ### ⏳ Pending - Integration test with a real Mattermost server ## Known Issues / Risks - `ollama-ai-provider` v1.2.0 returns `LanguageModelV1` (not V2/V3 as expected by AI SDK v6) — cast used at call site. Works at runtime. - Zod v4 `.default()` on nested object schemas requires providing full output type as factory function return value (not just `{}`). All instances fixed. - AI SDK v6 changed `maxSteps` → `stopWhen: stepCountIs(n)` and `usage.promptTokens/completionTokens` → `usage.inputTokens/outputTokens`.