Files
mattermore/PROJECT.md
T

71 lines
2.7 KiB
Markdown

# Project: Mattermore
## Purpose
Mattermore is a Mattermost (Community Edition) plugin that connects chat to
remote LLMs via Ollama. Users invoke it with a `/ai` slash command and
receive streamed AI responses directly in the channel.
## Structure
```
mattermore/
├── DESIGN.md — Functional design document
├── DECISIONS.md — Design rationale log
├── PROJECT.md — This file
├── CHANGES.md — Per-release changelog
├── README.md — User-facing docs
├── plugin.json — Mattermost plugin manifest
├── Makefile — Build, lint, dist targets
├── .gitignore — Go + plugin ignores
├── server/
│ ├── main.go — Plugin entry point (OnActivate, ExecuteCommand)
│ ├── plugin.go — Core plugin struct and hooks
│ ├── configuration.go — Config reading and validation
│ ├── command.go — Slash command parsing and dispatch
│ ├── ollama/
│ │ ├── client.go — Ollama API client (ChatCompletion, ListModels, Ping)
│ │ └── client_test.go — Unit tests (mocked HTTP server)
│ ├── store/
│ │ ├── conversation.go — KV-backed conversation storage
│ │ └── conversation_test.go
│ └── rate/
│ └── limiter.go — Token-bucket rate limiter
└── webapp/ (future — optional)
└── .placeholder
```
## Key Files
| Path | Purpose |
|---|---|
| `plugin.json` | Manifest: id, name, version, settings schema |
| `server/main.go` | `OnActivate()`, `OnDeactivate()`, `ExecuteCommand()` |
| `server/ollama/client.go` | HTTP client for Ollama REST API |
| `server/store/conversation.go` | Context persistence via Mattermost KV store |
| `DESIGN.md` | Full functional design with open decisions |
| `DECISIONS.md` | Record of architectural decisions and their rationale |
## External Dependencies
- **Go ≥ 1.21** (toolchain)
- **Mattermost Server ≥ v8.x** (plugin API)
- **Ollama** (remote inference server)
- Go modules (see `go.mod`):
- `github.com/mattermost/mattermost-server/v6` — Plugin SDK
- Standard library only for Ollama HTTP client (no external AI SDKs)
## Release Cadence
- Tags: `v0.x.y`
- CI builds on tag (see `.gitea/workflows/ci.yml`)
- Plugin bundle published as Gitea release artifact
- Follows `release-workflow` skill: draft → user test → publish
## Documentation
- `DESIGN.md` — functional design (living document)
- `DECISIONS.md` — why key decisions were made
- `CHANGES.md` — user-facing changelog
- `README.md` — quick start, config reference, build instructions