agent-tasks 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +181 -188
- package/package.json +84 -84
- package/dist/context.d.ts +0 -21
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -48
- package/dist/context.js.map +0 -1
- package/dist/db.d.ts +0 -10
- package/dist/db.d.ts.map +0 -1
- package/dist/db.js +0 -112
- package/dist/db.js.map +0 -1
- package/dist/domain/agent-bridge.d.ts +0 -13
- package/dist/domain/agent-bridge.d.ts.map +0 -1
- package/dist/domain/agent-bridge.js +0 -99
- package/dist/domain/agent-bridge.js.map +0 -1
- package/dist/domain/approvals.d.ts +0 -19
- package/dist/domain/approvals.d.ts.map +0 -1
- package/dist/domain/approvals.js +0 -99
- package/dist/domain/approvals.js.map +0 -1
- package/dist/domain/cleanup.d.ts +0 -28
- package/dist/domain/cleanup.d.ts.map +0 -1
- package/dist/domain/cleanup.js +0 -68
- package/dist/domain/cleanup.js.map +0 -1
- package/dist/domain/collaborators.d.ts +0 -15
- package/dist/domain/collaborators.d.ts.map +0 -1
- package/dist/domain/collaborators.js +0 -72
- package/dist/domain/collaborators.js.map +0 -1
- package/dist/domain/comments.d.ts +0 -14
- package/dist/domain/comments.d.ts.map +0 -1
- package/dist/domain/comments.js +0 -66
- package/dist/domain/comments.js.map +0 -1
- package/dist/domain/events.d.ts +0 -10
- package/dist/domain/events.d.ts.map +0 -1
- package/dist/domain/events.js +0 -61
- package/dist/domain/events.js.map +0 -1
- package/dist/domain/rules.d.ts +0 -2
- package/dist/domain/rules.d.ts.map +0 -1
- package/dist/domain/rules.js +0 -67
- package/dist/domain/rules.js.map +0 -1
- package/dist/domain/tasks.d.ts +0 -66
- package/dist/domain/tasks.d.ts.map +0 -1
- package/dist/domain/tasks.js +0 -655
- package/dist/domain/tasks.js.map +0 -1
- package/dist/domain/validate.d.ts +0 -16
- package/dist/domain/validate.d.ts.map +0 -1
- package/dist/domain/validate.js +0 -32
- package/dist/domain/validate.js.map +0 -1
- package/dist/event-bus.d.ts +0 -10
- package/dist/event-bus.d.ts.map +0 -1
- package/dist/event-bus.js +0 -38
- package/dist/event-bus.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -132
- package/dist/index.js.map +0 -1
- package/dist/server.d.ts +0 -10
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -95
- package/dist/server.js.map +0 -1
- package/dist/session.d.ts +0 -7
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js +0 -11
- package/dist/session.js.map +0 -1
- package/dist/storage/database.d.ts +0 -15
- package/dist/storage/database.d.ts.map +0 -1
- package/dist/storage/database.js +0 -224
- package/dist/storage/database.js.map +0 -1
- package/dist/tasks.d.ts +0 -32
- package/dist/tasks.d.ts.map +0 -1
- package/dist/tasks.js +0 -410
- package/dist/tasks.js.map +0 -1
- package/dist/transport/mcp.d.ts +0 -6
- package/dist/transport/mcp.d.ts.map +0 -1
- package/dist/transport/mcp.js +0 -731
- package/dist/transport/mcp.js.map +0 -1
- package/dist/transport/rest.d.ts +0 -4
- package/dist/transport/rest.d.ts.map +0 -1
- package/dist/transport/rest.js +0 -534
- package/dist/transport/rest.js.map +0 -1
- package/dist/transport/ws.d.ts +0 -10
- package/dist/transport/ws.d.ts.map +0 -1
- package/dist/transport/ws.js +0 -191
- package/dist/transport/ws.js.map +0 -1
- package/dist/types.d.ts +0 -147
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -35
- package/dist/types.js.map +0 -1
- package/dist/ui/app.js +0 -1973
- package/dist/ui/index.html +0 -172
- package/dist/ui/morphdom.min.js +0 -1
- package/dist/ui/styles.css +0 -2435
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 keshrath
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 keshrath
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,188 +1,181 @@
|
|
|
1
|
-
# agent-tasks
|
|
2
|
-
|
|
3
|
-
[](LICENSE)
|
|
4
|
-
[](https://nodejs.org/)
|
|
5
|
-
[]()
|
|
6
|
-
[]()
|
|
7
|
-
[]()
|
|
8
|
-
|
|
9
|
-
**Pipeline-driven task management for AI coding agents.** An [MCP](https://modelcontextprotocol.io/) server with stage-gated pipelines, multi-agent collaboration, and a real-time kanban dashboard. Tasks flow through configurable stages — `backlog`, `spec`, `plan`, `implement`, `test`, `review`, `done` — with dependency tracking, approval workflows, artifact versioning, and threaded comments.
|
|
10
|
-
|
|
11
|
-
Built for AI coding agents (Claude Code, Codex CLI, Gemini CLI, Aider) but works equally well with any MCP client, REST consumer, or WebSocket listener.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
| Light Theme | Dark Theme |
|
|
16
|
-
| -------------------------------------------------------- | ------------------------------------------------------ |
|
|
17
|
-
|  |  |
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Why agent-tasks?
|
|
22
|
-
|
|
23
|
-
When you run multiple AI agents on the same codebase, they need a shared task pipeline — not just a flat todo list. They need stages, dependencies, approvals, and visibility.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Features
|
|
28
|
-
|
|
29
|
-
- **Pipeline stages** — configurable per project: `backlog` > `spec` > `plan` > `implement` > `test` > `review` > `done`
|
|
30
|
-
- **Task dependencies** — DAG with automatic cycle detection; blocks advancement until resolved
|
|
31
|
-
- **Approval workflows** — stage-gated approve/reject with auto-regress on rejection
|
|
32
|
-
- **Multi-agent collaboration** — roles (collaborator, reviewer, watcher), claiming, assignment
|
|
33
|
-
- **Subtask hierarchies** — parent/child task trees with progress tracking
|
|
34
|
-
- **Threaded comments** — async discussions between agents on any task
|
|
35
|
-
- **Artifact versioning** — per-stage document attachments with automatic versioning and diff viewer
|
|
36
|
-
- **Full-text search** — FTS5 search across task titles and descriptions
|
|
37
|
-
- **Real-time kanban dashboard** — drag-and-drop, side panel, inline creation, dark/light theme
|
|
38
|
-
- **3 transport layers** — MCP (stdio), REST API (HTTP), WebSocket (real-time events)
|
|
39
|
-
- **TodoWrite bridge** — intercepts Claude Code's built-in TodoWrite and syncs to the pipeline
|
|
40
|
-
- **Agent bridge** — notifies connected agents on task events
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Quick Start
|
|
45
|
-
|
|
46
|
-
### Install from npm
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
npm install -g agent-tasks
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### Or clone from source
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
git clone https://github.com/keshrath/agent-tasks.git
|
|
56
|
-
cd agent-tasks
|
|
57
|
-
npm install
|
|
58
|
-
npm run build
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Option 1: MCP server (for AI agents)
|
|
62
|
-
|
|
63
|
-
Add to your MCP client config (Claude Code, Cline, etc.):
|
|
64
|
-
|
|
65
|
-
```json
|
|
66
|
-
{
|
|
67
|
-
"mcpServers": {
|
|
68
|
-
"agent-tasks": {
|
|
69
|
-
"command": "npx",
|
|
70
|
-
"args": ["agent-tasks"]
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
The dashboard auto-starts at http://localhost:3422 on the first MCP connection.
|
|
77
|
-
|
|
78
|
-
### Option 2: Standalone server (for REST/WebSocket clients)
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
node dist/server.js --port 3422
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Claude Code Integration
|
|
87
|
-
|
|
88
|
-
Add agent-tasks as an MCP server in `~/.claude/settings.json`:
|
|
89
|
-
|
|
90
|
-
```json
|
|
91
|
-
{
|
|
92
|
-
"mcpServers": {
|
|
93
|
-
"agent-tasks": {
|
|
94
|
-
"command": "node",
|
|
95
|
-
"args": ["/path/to/agent-tasks/dist/index.js"]
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
Once configured, Claude Code can use all 33 MCP tools directly — creating tasks, advancing stages, adding artifacts, commenting, and more. See the [Setup Guide](docs/SETUP.md) for detailed integration steps.
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## MCP Tools (33)
|
|
106
|
-
|
|
107
|
-
| Category | Tools |
|
|
108
|
-
| ----------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
109
|
-
| **Task lifecycle** (12) | `task_create`, `task_list`, `task_next`, `task_claim`, `task_advance`, `task_regress`, `task_complete`, ... |
|
|
110
|
-
| **Subtasks & deps** (4) | `task_expand`, `task_get_subtasks`, `task_add_dependency`, `task_remove_dependency` |
|
|
111
|
-
| **Artifacts** (2) | `task_add_artifact`, `task_get_artifacts` |
|
|
112
|
-
| **Comments** (2) | `task_comment`, `task_get_comments` |
|
|
113
|
-
| **Collaboration** (2) | `task_add_collaborator`, `task_remove_collaborator` |
|
|
114
|
-
| **Approvals** (5) | `task_request_approval`, `task_approve`, `task_reject`, `task_pending_approvals`, `task_review_cycle` |
|
|
115
|
-
| **Config & utils** (4) | `task_pipeline_config`, `task_set_session`, `task_cleanup`, `task_generate_rules` |
|
|
116
|
-
|
|
117
|
-
See [full API reference](docs/api.md) for detailed descriptions of every tool and endpoint.
|
|
118
|
-
|
|
119
|
-
## REST API (18 endpoints)
|
|
120
|
-
|
|
121
|
-
All endpoints return JSON. CORS enabled. See [full API reference](docs/api.md#rest-api-18-endpoints) for details.
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
GET /health Health check with version + uptime
|
|
125
|
-
GET /api/tasks List tasks (status, stage, project, assignee filters)
|
|
126
|
-
GET /api/tasks/:id Get a single task
|
|
127
|
-
GET /api/tasks/:id/subtasks Subtasks of a parent
|
|
128
|
-
GET /api/tasks/:id/artifacts Artifacts (filter by stage)
|
|
129
|
-
GET /api/tasks/:id/comments Comments on a task
|
|
130
|
-
GET /api/tasks/:id/dependencies Dependencies for a task
|
|
131
|
-
GET /api/dependencies All dependencies across all tasks
|
|
132
|
-
GET /api/pipeline Pipeline stage configuration
|
|
133
|
-
GET /api/overview Full state dump
|
|
134
|
-
GET /api/agents Online agents
|
|
135
|
-
GET /api/search?q= Full-text search
|
|
136
|
-
|
|
137
|
-
POST /api/tasks Create a new task
|
|
138
|
-
PUT /api/tasks/:id Update task fields
|
|
139
|
-
PUT /api/tasks/:id/stage Change stage (advance or regress)
|
|
140
|
-
POST /api/tasks/:id/comments Add a comment
|
|
141
|
-
POST /api/cleanup Trigger manual cleanup
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## Testing
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
npm test # 337 tests across 12 suites
|
|
150
|
-
npm run test:watch # Watch mode
|
|
151
|
-
npm run test:coverage # Coverage report
|
|
152
|
-
npm run check # Full CI: typecheck + lint + format + test
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## Environment variables
|
|
158
|
-
|
|
159
|
-
| Variable | Default | Description |
|
|
160
|
-
| -------------------------- | ------------------------------- | ---------------------------------------------------- |
|
|
161
|
-
| `AGENT_TASKS_DB` | `~/.agent-tasks/agent-tasks.db` | SQLite database file path |
|
|
162
|
-
| `AGENT_TASKS_PORT` | `3422` | Dashboard HTTP/WebSocket port |
|
|
163
|
-
| `AGENT_TASKS_INSTRUCTIONS` | enabled | Set to `0` to disable response-embedded instructions |
|
|
164
|
-
| `AGENT_COMM_URL` | `http://localhost:3421` | Agent-comm REST URL for bridge notifications |
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
## Documentation
|
|
169
|
-
|
|
170
|
-
- [API Reference](docs/api.md) — all 33 MCP tools, 18 REST endpoints, WebSocket protocol
|
|
171
|
-
- [Architecture](docs/architecture.md) — source structure, design principles, database schema
|
|
172
|
-
- [Dashboard](docs/dashboard.md) — kanban board features, keyboard shortcuts, screenshots
|
|
173
|
-
- [Hooks](docs/hooks.md) — TodoWrite bridge hook for Claude Code
|
|
174
|
-
- [Setup Guide](docs/SETUP.md) — detailed installation, integration, and configuration
|
|
175
|
-
- [Changelog](CHANGELOG.md)
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
## License
|
|
180
|
-
|
|
181
|
-
MIT — see [LICENSE](LICENSE)
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
<p align="center">
|
|
186
|
-
<a href="https://github.com/keshrath/agent-tasks">Repository</a> ·
|
|
187
|
-
<a href="https://github.com/keshrath/agent-tasks/issues">Issues</a>
|
|
188
|
-
</p>
|
|
1
|
+
# agent-tasks
|
|
2
|
+
|
|
3
|
+
[](LICENSE)
|
|
4
|
+
[](https://nodejs.org/)
|
|
5
|
+
[]()
|
|
6
|
+
[]()
|
|
7
|
+
[]()
|
|
8
|
+
|
|
9
|
+
**Pipeline-driven task management for AI coding agents.** An [MCP](https://modelcontextprotocol.io/) server with stage-gated pipelines, multi-agent collaboration, and a real-time kanban dashboard. Tasks flow through configurable stages — `backlog`, `spec`, `plan`, `implement`, `test`, `review`, `done` — with dependency tracking, approval workflows, artifact versioning, and threaded comments.
|
|
10
|
+
|
|
11
|
+
Built for AI coding agents (Claude Code, Codex CLI, Gemini CLI, Aider) but works equally well with any MCP client, REST consumer, or WebSocket listener.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
| Light Theme | Dark Theme |
|
|
16
|
+
| -------------------------------------------------------- | ------------------------------------------------------ |
|
|
17
|
+
|  |  |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Why agent-tasks?
|
|
22
|
+
|
|
23
|
+
When you run multiple AI agents on the same codebase, they need a shared task pipeline — not just a flat todo list. They need stages, dependencies, approvals, and visibility.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Features
|
|
28
|
+
|
|
29
|
+
- **Pipeline stages** — configurable per project: `backlog` > `spec` > `plan` > `implement` > `test` > `review` > `done`
|
|
30
|
+
- **Task dependencies** — DAG with automatic cycle detection; blocks advancement until resolved
|
|
31
|
+
- **Approval workflows** — stage-gated approve/reject with auto-regress on rejection
|
|
32
|
+
- **Multi-agent collaboration** — roles (collaborator, reviewer, watcher), claiming, assignment
|
|
33
|
+
- **Subtask hierarchies** — parent/child task trees with progress tracking
|
|
34
|
+
- **Threaded comments** — async discussions between agents on any task
|
|
35
|
+
- **Artifact versioning** — per-stage document attachments with automatic versioning and diff viewer
|
|
36
|
+
- **Full-text search** — FTS5 search across task titles and descriptions
|
|
37
|
+
- **Real-time kanban dashboard** — drag-and-drop, side panel, inline creation, dark/light theme
|
|
38
|
+
- **3 transport layers** — MCP (stdio), REST API (HTTP), WebSocket (real-time events)
|
|
39
|
+
- **TodoWrite bridge** — intercepts Claude Code's built-in TodoWrite and syncs to the pipeline
|
|
40
|
+
- **Agent bridge** — notifies connected agents on task events
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Quick Start
|
|
45
|
+
|
|
46
|
+
### Install from npm
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install -g agent-tasks
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Or clone from source
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
git clone https://github.com/keshrath/agent-tasks.git
|
|
56
|
+
cd agent-tasks
|
|
57
|
+
npm install
|
|
58
|
+
npm run build
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Option 1: MCP server (for AI agents)
|
|
62
|
+
|
|
63
|
+
Add to your MCP client config (Claude Code, Cline, etc.):
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"mcpServers": {
|
|
68
|
+
"agent-tasks": {
|
|
69
|
+
"command": "npx",
|
|
70
|
+
"args": ["agent-tasks"]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The dashboard auto-starts at http://localhost:3422 on the first MCP connection.
|
|
77
|
+
|
|
78
|
+
### Option 2: Standalone server (for REST/WebSocket clients)
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
node dist/server.js --port 3422
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Claude Code Integration
|
|
87
|
+
|
|
88
|
+
Add agent-tasks as an MCP server in `~/.claude/settings.json`:
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"mcpServers": {
|
|
93
|
+
"agent-tasks": {
|
|
94
|
+
"command": "node",
|
|
95
|
+
"args": ["/path/to/agent-tasks/dist/index.js"]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Once configured, Claude Code can use all 33 MCP tools directly — creating tasks, advancing stages, adding artifacts, commenting, and more. See the [Setup Guide](docs/SETUP.md) for detailed integration steps.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## MCP Tools (33)
|
|
106
|
+
|
|
107
|
+
| Category | Tools |
|
|
108
|
+
| ----------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
109
|
+
| **Task lifecycle** (12) | `task_create`, `task_list`, `task_next`, `task_claim`, `task_advance`, `task_regress`, `task_complete`, ... |
|
|
110
|
+
| **Subtasks & deps** (4) | `task_expand`, `task_get_subtasks`, `task_add_dependency`, `task_remove_dependency` |
|
|
111
|
+
| **Artifacts** (2) | `task_add_artifact`, `task_get_artifacts` |
|
|
112
|
+
| **Comments** (2) | `task_comment`, `task_get_comments` |
|
|
113
|
+
| **Collaboration** (2) | `task_add_collaborator`, `task_remove_collaborator` |
|
|
114
|
+
| **Approvals** (5) | `task_request_approval`, `task_approve`, `task_reject`, `task_pending_approvals`, `task_review_cycle` |
|
|
115
|
+
| **Config & utils** (4) | `task_pipeline_config`, `task_set_session`, `task_cleanup`, `task_generate_rules` |
|
|
116
|
+
|
|
117
|
+
See [full API reference](docs/api.md) for detailed descriptions of every tool and endpoint.
|
|
118
|
+
|
|
119
|
+
## REST API (18 endpoints)
|
|
120
|
+
|
|
121
|
+
All endpoints return JSON. CORS enabled. See [full API reference](docs/api.md#rest-api-18-endpoints) for details.
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
GET /health Health check with version + uptime
|
|
125
|
+
GET /api/tasks List tasks (status, stage, project, assignee filters)
|
|
126
|
+
GET /api/tasks/:id Get a single task
|
|
127
|
+
GET /api/tasks/:id/subtasks Subtasks of a parent
|
|
128
|
+
GET /api/tasks/:id/artifacts Artifacts (filter by stage)
|
|
129
|
+
GET /api/tasks/:id/comments Comments on a task
|
|
130
|
+
GET /api/tasks/:id/dependencies Dependencies for a task
|
|
131
|
+
GET /api/dependencies All dependencies across all tasks
|
|
132
|
+
GET /api/pipeline Pipeline stage configuration
|
|
133
|
+
GET /api/overview Full state dump
|
|
134
|
+
GET /api/agents Online agents
|
|
135
|
+
GET /api/search?q= Full-text search
|
|
136
|
+
|
|
137
|
+
POST /api/tasks Create a new task
|
|
138
|
+
PUT /api/tasks/:id Update task fields
|
|
139
|
+
PUT /api/tasks/:id/stage Change stage (advance or regress)
|
|
140
|
+
POST /api/tasks/:id/comments Add a comment
|
|
141
|
+
POST /api/cleanup Trigger manual cleanup
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Testing
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
npm test # 337 tests across 12 suites
|
|
150
|
+
npm run test:watch # Watch mode
|
|
151
|
+
npm run test:coverage # Coverage report
|
|
152
|
+
npm run check # Full CI: typecheck + lint + format + test
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Environment variables
|
|
158
|
+
|
|
159
|
+
| Variable | Default | Description |
|
|
160
|
+
| -------------------------- | ------------------------------- | ---------------------------------------------------- |
|
|
161
|
+
| `AGENT_TASKS_DB` | `~/.agent-tasks/agent-tasks.db` | SQLite database file path |
|
|
162
|
+
| `AGENT_TASKS_PORT` | `3422` | Dashboard HTTP/WebSocket port |
|
|
163
|
+
| `AGENT_TASKS_INSTRUCTIONS` | enabled | Set to `0` to disable response-embedded instructions |
|
|
164
|
+
| `AGENT_COMM_URL` | `http://localhost:3421` | Agent-comm REST URL for bridge notifications |
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Documentation
|
|
169
|
+
|
|
170
|
+
- [API Reference](docs/api.md) — all 33 MCP tools, 18 REST endpoints, WebSocket protocol
|
|
171
|
+
- [Architecture](docs/architecture.md) — source structure, design principles, database schema
|
|
172
|
+
- [Dashboard](docs/dashboard.md) — kanban board features, keyboard shortcuts, screenshots
|
|
173
|
+
- [Hooks](docs/hooks.md) — TodoWrite bridge hook for Claude Code
|
|
174
|
+
- [Setup Guide](docs/SETUP.md) — detailed installation, integration, and configuration
|
|
175
|
+
- [Changelog](CHANGELOG.md)
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## License
|
|
180
|
+
|
|
181
|
+
MIT — see [LICENSE](LICENSE)
|
package/package.json
CHANGED
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "agent-tasks",
|
|
3
|
-
"version": "1.6.
|
|
4
|
-
"description": "Pipeline-driven task management for AI coding agents — stages, dependencies, artifacts, and multi-agent claiming",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"bin": {
|
|
8
|
-
"agent-tasks": "dist/index.js"
|
|
9
|
-
},
|
|
10
|
-
"scripts": {
|
|
11
|
-
"build": "tsc && node scripts/copy-ui.js",
|
|
12
|
-
"dev": "tsc --watch",
|
|
13
|
-
"start": "node dist/index.js",
|
|
14
|
-
"start:server": "node dist/server.js",
|
|
15
|
-
"test": "vitest run",
|
|
16
|
-
"test:watch": "vitest",
|
|
17
|
-
"test:coverage": "vitest run --coverage",
|
|
18
|
-
"lint": "eslint src/ tests/",
|
|
19
|
-
"lint:fix": "eslint src/ tests/ --fix",
|
|
20
|
-
"format": "prettier --write .",
|
|
21
|
-
"format:check": "prettier --check .",
|
|
22
|
-
"typecheck": "tsc --noEmit",
|
|
23
|
-
"check": "npm run typecheck && npm run lint && npm run format:check && npm run test",
|
|
24
|
-
"prepare": "husky"
|
|
25
|
-
},
|
|
26
|
-
"lint-staged": {
|
|
27
|
-
"*.{ts,js}": [
|
|
28
|
-
"prettier --write",
|
|
29
|
-
"eslint --fix"
|
|
30
|
-
],
|
|
31
|
-
"*.{json,md,css,html}": [
|
|
32
|
-
"prettier --write"
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"dependencies": {
|
|
36
|
-
"better-sqlite3": "^12.8.0",
|
|
37
|
-
"morphdom": "^2.7.8",
|
|
38
|
-
"ws": "^8.20.0"
|
|
39
|
-
},
|
|
40
|
-
"devDependencies": {
|
|
41
|
-
"@eslint/js": "^10.0.1",
|
|
42
|
-
"@types/better-sqlite3": "^7.6.13",
|
|
43
|
-
"@types/node": "^22.0.0",
|
|
44
|
-
"@types/ws": "^8.18.1",
|
|
45
|
-
"@vitest/coverage-v8": "^3.2.4",
|
|
46
|
-
"eslint": "^10.1.0",
|
|
47
|
-
"husky": "^9.1.7",
|
|
48
|
-
"lint-staged": "^16.4.0",
|
|
49
|
-
"prettier": "^3.8.1",
|
|
50
|
-
"typescript": "^5.7.0",
|
|
51
|
-
"typescript-eslint": "^8.57.2",
|
|
52
|
-
"vitest": "^3.0.0"
|
|
53
|
-
},
|
|
54
|
-
"engines": {
|
|
55
|
-
"node": ">=20.11.0"
|
|
56
|
-
},
|
|
57
|
-
"keywords": [
|
|
58
|
-
"mcp",
|
|
59
|
-
"agent",
|
|
60
|
-
"tasks",
|
|
61
|
-
"pipeline",
|
|
62
|
-
"multi-agent",
|
|
63
|
-
"model-context-protocol",
|
|
64
|
-
"ai-agents",
|
|
65
|
-
"kanban",
|
|
66
|
-
"workflow",
|
|
67
|
-
"claude-code"
|
|
68
|
-
],
|
|
69
|
-
"files": [
|
|
70
|
-
"dist/",
|
|
71
|
-
"README.md",
|
|
72
|
-
"LICENSE"
|
|
73
|
-
],
|
|
74
|
-
"license": "MIT",
|
|
75
|
-
"author": "keshrath",
|
|
76
|
-
"repository": {
|
|
77
|
-
"type": "git",
|
|
78
|
-
"url": "https://github.com/keshrath/agent-tasks.git"
|
|
79
|
-
},
|
|
80
|
-
"homepage": "https://github.com/keshrath/agent-tasks",
|
|
81
|
-
"bugs": {
|
|
82
|
-
"url": "https://github.com/keshrath/agent-tasks/issues"
|
|
83
|
-
}
|
|
84
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "agent-tasks",
|
|
3
|
+
"version": "1.6.1",
|
|
4
|
+
"description": "Pipeline-driven task management for AI coding agents — stages, dependencies, artifacts, and multi-agent claiming",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"agent-tasks": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc && node scripts/copy-ui.js",
|
|
12
|
+
"dev": "tsc --watch",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"start:server": "node dist/server.js",
|
|
15
|
+
"test": "vitest run",
|
|
16
|
+
"test:watch": "vitest",
|
|
17
|
+
"test:coverage": "vitest run --coverage",
|
|
18
|
+
"lint": "eslint src/ tests/",
|
|
19
|
+
"lint:fix": "eslint src/ tests/ --fix",
|
|
20
|
+
"format": "prettier --write .",
|
|
21
|
+
"format:check": "prettier --check .",
|
|
22
|
+
"typecheck": "tsc --noEmit",
|
|
23
|
+
"check": "npm run typecheck && npm run lint && npm run format:check && npm run test",
|
|
24
|
+
"prepare": "husky"
|
|
25
|
+
},
|
|
26
|
+
"lint-staged": {
|
|
27
|
+
"*.{ts,js}": [
|
|
28
|
+
"prettier --write",
|
|
29
|
+
"eslint --fix"
|
|
30
|
+
],
|
|
31
|
+
"*.{json,md,css,html}": [
|
|
32
|
+
"prettier --write"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"better-sqlite3": "^12.8.0",
|
|
37
|
+
"morphdom": "^2.7.8",
|
|
38
|
+
"ws": "^8.20.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@eslint/js": "^10.0.1",
|
|
42
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
43
|
+
"@types/node": "^22.0.0",
|
|
44
|
+
"@types/ws": "^8.18.1",
|
|
45
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
46
|
+
"eslint": "^10.1.0",
|
|
47
|
+
"husky": "^9.1.7",
|
|
48
|
+
"lint-staged": "^16.4.0",
|
|
49
|
+
"prettier": "^3.8.1",
|
|
50
|
+
"typescript": "^5.7.0",
|
|
51
|
+
"typescript-eslint": "^8.57.2",
|
|
52
|
+
"vitest": "^3.0.0"
|
|
53
|
+
},
|
|
54
|
+
"engines": {
|
|
55
|
+
"node": ">=20.11.0"
|
|
56
|
+
},
|
|
57
|
+
"keywords": [
|
|
58
|
+
"mcp",
|
|
59
|
+
"agent",
|
|
60
|
+
"tasks",
|
|
61
|
+
"pipeline",
|
|
62
|
+
"multi-agent",
|
|
63
|
+
"model-context-protocol",
|
|
64
|
+
"ai-agents",
|
|
65
|
+
"kanban",
|
|
66
|
+
"workflow",
|
|
67
|
+
"claude-code"
|
|
68
|
+
],
|
|
69
|
+
"files": [
|
|
70
|
+
"dist/",
|
|
71
|
+
"README.md",
|
|
72
|
+
"LICENSE"
|
|
73
|
+
],
|
|
74
|
+
"license": "MIT",
|
|
75
|
+
"author": "keshrath",
|
|
76
|
+
"repository": {
|
|
77
|
+
"type": "git",
|
|
78
|
+
"url": "https://github.com/keshrath/agent-tasks.git"
|
|
79
|
+
},
|
|
80
|
+
"homepage": "https://github.com/keshrath/agent-tasks",
|
|
81
|
+
"bugs": {
|
|
82
|
+
"url": "https://github.com/keshrath/agent-tasks/issues"
|
|
83
|
+
}
|
|
84
|
+
}
|
package/dist/context.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { type Db, type DbOptions } from './storage/database.js';
|
|
2
|
-
import { EventBus } from './domain/events.js';
|
|
3
|
-
import { TaskService } from './domain/tasks.js';
|
|
4
|
-
import { CommentService } from './domain/comments.js';
|
|
5
|
-
import { CollaboratorService } from './domain/collaborators.js';
|
|
6
|
-
import { ApprovalService } from './domain/approvals.js';
|
|
7
|
-
import { AgentBridge } from './domain/agent-bridge.js';
|
|
8
|
-
import { CleanupService } from './domain/cleanup.js';
|
|
9
|
-
export interface AppContext {
|
|
10
|
-
readonly db: Db;
|
|
11
|
-
readonly events: EventBus;
|
|
12
|
-
readonly tasks: TaskService;
|
|
13
|
-
readonly comments: CommentService;
|
|
14
|
-
readonly collaborators: CollaboratorService;
|
|
15
|
-
readonly approvals: ApprovalService;
|
|
16
|
-
readonly agentBridge: AgentBridge;
|
|
17
|
-
readonly cleanup: CleanupService;
|
|
18
|
-
close(): void;
|
|
19
|
-
}
|
|
20
|
-
export declare function createContext(dbOptions?: DbOptions): AppContext;
|
|
21
|
-
//# sourceMappingURL=context.d.ts.map
|
package/dist/context.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAOA,OAAO,EAAY,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,CAkC/D"}
|
package/dist/context.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// =============================================================================
|
|
2
|
-
// agent-tasks — Application context
|
|
3
|
-
//
|
|
4
|
-
// Dependency injection root. Creates and wires together all services.
|
|
5
|
-
// Every layer receives its dependencies explicitly — no global state.
|
|
6
|
-
// =============================================================================
|
|
7
|
-
import { createDb } from './storage/database.js';
|
|
8
|
-
import { EventBus } from './domain/events.js';
|
|
9
|
-
import { TaskService } from './domain/tasks.js';
|
|
10
|
-
import { CommentService } from './domain/comments.js';
|
|
11
|
-
import { CollaboratorService } from './domain/collaborators.js';
|
|
12
|
-
import { ApprovalService } from './domain/approvals.js';
|
|
13
|
-
import { AgentBridge } from './domain/agent-bridge.js';
|
|
14
|
-
import { CleanupService } from './domain/cleanup.js';
|
|
15
|
-
export function createContext(dbOptions) {
|
|
16
|
-
const db = createDb(dbOptions);
|
|
17
|
-
const events = new EventBus();
|
|
18
|
-
let closed = false;
|
|
19
|
-
const tasks = new TaskService(db, events);
|
|
20
|
-
const comments = new CommentService(db, events);
|
|
21
|
-
const collaborators = new CollaboratorService(db, events);
|
|
22
|
-
const approvals = new ApprovalService(db, events);
|
|
23
|
-
const agentBridge = new AgentBridge(events);
|
|
24
|
-
const retentionDays = parseInt(process.env.AGENT_TASKS_RETENTION_DAYS ?? '30', 10);
|
|
25
|
-
const cleanup = new CleanupService(db, retentionDays);
|
|
26
|
-
agentBridge.start();
|
|
27
|
-
cleanup.start();
|
|
28
|
-
return {
|
|
29
|
-
db,
|
|
30
|
-
events,
|
|
31
|
-
tasks,
|
|
32
|
-
comments,
|
|
33
|
-
collaborators,
|
|
34
|
-
approvals,
|
|
35
|
-
agentBridge,
|
|
36
|
-
cleanup,
|
|
37
|
-
close() {
|
|
38
|
-
if (closed)
|
|
39
|
-
return;
|
|
40
|
-
closed = true;
|
|
41
|
-
cleanup.stop();
|
|
42
|
-
agentBridge.stop();
|
|
43
|
-
events.removeAll();
|
|
44
|
-
db.close();
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=context.js.map
|