Project Structure¶
MetaBot is a TypeScript ESM project ("type": "module", all imports use .js extensions).
Directory Layout¶
metabot/
├── src/
│ ├── index.ts # Entrypoint
│ ├── config.ts # Configuration loader
│ ├── bridge/
│ │ ├── message-bridge.ts # Core orchestrator
│ │ ├── rate-limiter.ts # Card update throttling
│ │ └── outputs-manager.ts # Output file lifecycle
│ ├── claude/
│ │ ├── executor.ts # Agent SDK wrapper
│ │ ├── stream-processor.ts # SDK message → card state
│ │ └── session-manager.ts # Session store
│ ├── feishu/
│ │ ├── event-handler.ts # Feishu event parsing
│ │ ├── card-builder.ts # Interactive card builder
│ │ ├── message-sender.ts # Feishu API client
│ │ └── doc-reader.ts # Document → Markdown
│ ├── telegram/
│ │ └── ... # Telegram bot integration
│ ├── web/
│ │ └── ws-server.ts # WebSocket server + static files
│ ├── api/
│ │ ├── http-server.ts # REST API server
│ │ ├── voice-handler.ts # Voice API (STT + Agent + TTS)
│ │ ├── bot-registry.ts # Bot registry
│ │ └── peer-manager.ts # Cross-instance federation
│ ├── memory/
│ │ ├── memory-client.ts # MetaMemory HTTP client
│ │ └── memory-events.ts # Change event emitter
│ ├── sync/
│ │ ├── doc-sync.ts # Wiki sync service
│ │ ├── sync-store.ts # SQLite persistence
│ │ └── markdown-to-blocks.ts # MD → Feishu blocks
│ ├── skills/
│ │ └── metabot/
│ │ └── SKILL.md # Agent Bus skill
│ └── utils/
│ └── logger.ts # Logging
├── bin/
│ ├── metabot # Service management CLI
│ ├── mb # Agent Bus CLI
│ ├── mm # MetaMemory CLI
│ └── fd # Feishu Doc Reader CLI
├── web/ # Web UI source (React + Vite)
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── hooks/ # Custom hooks (WebSocket)
│ │ ├── store.ts # Zustand state management
│ │ └── theme.css # Design system
│ └── vite.config.ts
├── tests/ # Vitest test files
├── docs/ # Documentation (MkDocs)
├── dist/ # Compiled output (includes dist/web/)
├── mkdocs.yml # MkDocs configuration
├── bots.example.json # Multi-bot config example
├── .env.example # Environment config example
└── package.json
Key Dependencies¶
| Package | Purpose |
|---|---|
@anthropic-ai/claude-agent-sdk |
Claude Code Agent SDK |
@anthropic-ai/claude-code |
Claude Code CLI (peer dependency) |
@larksuiteoapi/node-sdk |
Feishu/Lark SDK |
tsx |
TypeScript execution (dev) |
vitest |
Test framework |