45 lines
2.2 KiB
Markdown
45 lines
2.2 KiB
Markdown
# Dew Documentation
|
|
|
|
Welcome to the documentation for the Dew project management tool!
|
|
|
|
## Contents
|
|
|
|
- [Configuration](./config.md) — Configuring Dew via `dew.yaml`
|
|
|
|
### Features
|
|
|
|
- [Kanban Board](./features/kanban.md) — Visualize and manage tasks in a column-based workflow
|
|
- [Infrastructure](./features/infra.md) — Manage local service manifests and Podman Quadlets
|
|
- [MCP Server](./features/mcp.md) — AI agent integration via the Model Context Protocol
|
|
|
|
## Package Architecture
|
|
|
|
Dew is structured as a Dart workspace with the following packages:
|
|
|
|
| Package | Description |
|
|
| ----------------- | -------------------------------------------------------------------------------------------- |
|
|
| `packages/cli` | The `dew` command-line tool. Wires all packages together at startup. |
|
|
| `packages/core` | Shared foundation: `DewCommand`, `DewToolCommand` mixin, `CommandRegistry`, and `DewConfig`. |
|
|
| `packages/infra` | Infrastructure service discovery, validation, and runtime lifecycle commands. |
|
|
| `packages/kanban` | Kanban board logic. Each command automatically registers itself as an MCP tool. |
|
|
| `packages/mcp` | The MCP server. Collects tools from `CommandRegistry` and serves them over stdio. |
|
|
|
|
### How commands become MCP tools
|
|
|
|
Every CLI command that mixes in `DewToolCommand` is automatically registered as an MCP tool — no separate registration needed. The mixin derives the JSON Schema for the tool's input from the command's own `ArgParser`, so argument definitions are written exactly once.
|
|
|
|
```text
|
|
ArgParser definition
|
|
│
|
|
├─► dew kanban create (human CLI)
|
|
└─► kanban_create_ticket (MCP tool with schema)
|
|
```
|
|
|
|
### Config architecture
|
|
|
|
`DewConfig` in `core` is a thin wrapper around the raw YAML map. Feature packages add typed accessors via Dart extensions:
|
|
|
|
- `dew_kanban` defines `KanbanDewConfig` — exposes `context.config.kanban`
|
|
- `dew_mcp` defines `McpDewConfig` — exposes `context.config.mcp`
|
|
|
|
This keeps feature-specific config classes out of `core` while leaving all call sites unchanged.
|