# 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): - `src/config/types.ts` + `src/config/loader.ts` - `src/bus/types.ts` + `src/bus/queue.ts` - `src/provider/types.ts` + `src/provider/index.ts` - `src/session/types.ts` + `src/session/manager.ts` - `src/agent/tools/base.ts` (+ `strArg` helper) - `src/agent/tools/filesystem.ts` - `src/agent/tools/shell.ts` - `src/agent/tools/web.ts` - `src/agent/tools/message.ts` - `src/agent/tools/spawn.ts` + `src/agent/subagent.ts` - `src/agent/tools/cron.ts` - `src/cron/types.ts` + `src/cron/service.ts` - `src/heartbeat/service.ts` - `src/agent/memory.ts` - `src/agent/skills.ts` - `src/agent/context.ts` - `src/agent/loop.ts` - `src/channels/base.ts` + `src/channels/mattermost.ts` - `src/channels/manager.ts` - `src/cli/commands.ts` - `index.ts` - 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` ### 🔄 In Progress - Nothing ### ⏳ Pending - Runtime smoke test: `bun run start --help` - Integration test with a real Mattermost server - Sample `~/.nanobot/config.json` documentation ## 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`.