claude-task-master 0.1.1__tar.gz → 0.1.3__tar.gz
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.
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/PKG-INFO +144 -6
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/README.md +136 -4
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/pyproject.toml +23 -2
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/__init__.py +1 -1
- claude_task_master-0.1.3/src/claude_task_master/api/__init__.py +98 -0
- claude_task_master-0.1.3/src/claude_task_master/api/models.py +553 -0
- claude_task_master-0.1.3/src/claude_task_master/api/routes.py +1135 -0
- claude_task_master-0.1.3/src/claude_task_master/api/routes_config.py +160 -0
- claude_task_master-0.1.3/src/claude_task_master/api/routes_control.py +278 -0
- claude_task_master-0.1.3/src/claude_task_master/api/routes_webhooks.py +980 -0
- claude_task_master-0.1.3/src/claude_task_master/api/server.py +551 -0
- claude_task_master-0.1.3/src/claude_task_master/auth/__init__.py +89 -0
- claude_task_master-0.1.3/src/claude_task_master/auth/middleware.py +448 -0
- claude_task_master-0.1.3/src/claude_task_master/auth/password.py +332 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/bin/claudetm +1 -1
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/cli.py +4 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/cli_commands/__init__.py +2 -0
- claude_task_master-0.1.3/src/claude_task_master/cli_commands/ci_helpers.py +114 -0
- claude_task_master-0.1.3/src/claude_task_master/cli_commands/control.py +191 -0
- claude_task_master-0.1.3/src/claude_task_master/cli_commands/fix_pr.py +260 -0
- claude_task_master-0.1.3/src/claude_task_master/cli_commands/fix_session.py +174 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/cli_commands/workflow.py +51 -3
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/__init__.py +13 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/agent_message.py +27 -5
- claude_task_master-0.1.3/src/claude_task_master/core/control.py +466 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/orchestrator.py +316 -4
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/pr_context.py +7 -2
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/prompts_working.py +32 -12
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/state.py +84 -2
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/state_exceptions.py +9 -6
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/workflow_stages.py +160 -21
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/github/client_pr.py +43 -1
- claude_task_master-0.1.3/src/claude_task_master/mcp/auth.py +153 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/mcp/server.py +268 -10
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/mcp/tools.py +281 -0
- claude_task_master-0.1.3/src/claude_task_master/server.py +489 -0
- claude_task_master-0.1.3/src/claude_task_master/webhooks/__init__.py +73 -0
- claude_task_master-0.1.3/src/claude_task_master/webhooks/client.py +703 -0
- claude_task_master-0.1.3/src/claude_task_master/webhooks/config.py +565 -0
- claude_task_master-0.1.3/src/claude_task_master/webhooks/events.py +639 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master.egg-info/PKG-INFO +144 -6
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master.egg-info/SOURCES.txt +22 -1
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master.egg-info/entry_points.txt +2 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master.egg-info/requires.txt +8 -1
- claude_task_master-0.1.3/tests/test_server.py +510 -0
- claude_task_master-0.1.1/bin/claudetm +0 -509
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/setup.cfg +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/cli_commands/config.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/cli_commands/github.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/cli_commands/info.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/agent.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/agent_exceptions.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/agent_models.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/agent_phases.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/agent_query.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/checkpoint.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/circuit_breaker.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/config.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/config_loader.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/console.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/context_accumulator.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/conversation.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/credentials.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/hooks.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/key_listener.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/logger.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/parallel.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/planner.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/progress_tracker.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/prompts.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/prompts_base.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/prompts_planning.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/prompts_verification.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/rate_limit.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/shutdown.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/state_backup.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/state_file_ops.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/state_pr.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/state_recovery.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/subagents.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/task_group.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/core/task_runner.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/github/__init__.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/github/client.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/github/client_ci.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/github/exceptions.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/github/pr_cycle.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/mcp/__init__.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/utils/__init__.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/utils/debug_claude_md.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/utils/doctor.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master/wrapper.py +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master.egg-info/dependency_links.txt +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/src/claude_task_master.egg-info/top_level.txt +0 -0
- {claude_task_master-0.1.1 → claude_task_master-0.1.3}/tests/test_wrapper.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-task-master
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: Autonomous task orchestration system that keeps Claude working until a goal is achieved
|
|
5
5
|
Author: Claude Task Master Team
|
|
6
6
|
License-Expression: MIT
|
|
@@ -28,7 +28,13 @@ Requires-Dist: rich>=13.0.0
|
|
|
28
28
|
Requires-Dist: httpx>=0.27.0
|
|
29
29
|
Provides-Extra: mcp
|
|
30
30
|
Requires-Dist: mcp>=1.0.0; extra == "mcp"
|
|
31
|
+
Provides-Extra: api
|
|
32
|
+
Requires-Dist: fastapi>=0.100.0; extra == "api"
|
|
33
|
+
Requires-Dist: uvicorn[standard]>=0.24.0; extra == "api"
|
|
34
|
+
Requires-Dist: passlib[bcrypt]>=1.7.4; extra == "api"
|
|
35
|
+
Requires-Dist: bcrypt<4.1.0,>=4.0.0; extra == "api"
|
|
31
36
|
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: claude-task-master[api]; extra == "dev"
|
|
32
38
|
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
33
39
|
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
|
|
34
40
|
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
|
|
@@ -36,7 +42,7 @@ Requires-Dist: pytest-timeout>=2.4.0; extra == "dev"
|
|
|
36
42
|
Requires-Dist: ruff>=0.3.0; extra == "dev"
|
|
37
43
|
Requires-Dist: mypy>=1.9.0; extra == "dev"
|
|
38
44
|
Provides-Extra: all
|
|
39
|
-
Requires-Dist: claude-task-master[dev,mcp]; extra == "all"
|
|
45
|
+
Requires-Dist: claude-task-master[api,dev,mcp]; extra == "all"
|
|
40
46
|
|
|
41
47
|
# Claude Task Master
|
|
42
48
|
|
|
@@ -50,21 +56,99 @@ Autonomous task orchestration system that keeps Claude working until a goal is a
|
|
|
50
56
|
|
|
51
57
|
## Quick Start
|
|
52
58
|
|
|
59
|
+
### Installation
|
|
60
|
+
|
|
61
|
+
**Option 1: Using uv (recommended)**
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Install with uv
|
|
65
|
+
uv tool install claude-task-master
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Option 2: Using pip**
|
|
69
|
+
|
|
53
70
|
```bash
|
|
54
71
|
# Install from PyPI
|
|
55
72
|
pip install claude-task-master
|
|
73
|
+
```
|
|
56
74
|
|
|
57
|
-
|
|
58
|
-
|
|
75
|
+
**Option 3: Using Docker**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Pull the official Docker image from GitHub Container Registry
|
|
79
|
+
docker pull ghcr.io/developerz-ai/claude-task-master:latest
|
|
80
|
+
|
|
81
|
+
# Run with Docker (requires Claude credentials mounted)
|
|
82
|
+
docker run -d \
|
|
83
|
+
--name claudetm \
|
|
84
|
+
-p 8000:8000 \
|
|
85
|
+
-v ~/.claude:/home/claudetm/.claude:ro \
|
|
86
|
+
-v $(pwd):/app/project \
|
|
87
|
+
-v ~/.gitconfig:/home/claudetm/.gitconfig:ro \
|
|
88
|
+
-v ~/.config/gh:/home/claudetm/.config/gh:ro \
|
|
89
|
+
ghcr.io/developerz-ai/claude-task-master:latest
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
See [Docker Deployment Guide](./docs/docker.md) for detailed Docker setup, volume mounts, and configuration options.
|
|
93
|
+
|
|
94
|
+
### Authentication
|
|
95
|
+
|
|
96
|
+
Before using claudetm, you need to authenticate with Claude:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Run Claude CLI and login (this saves credentials that claudetm will use)
|
|
100
|
+
claude
|
|
101
|
+
/login
|
|
59
102
|
|
|
60
|
-
# Verify
|
|
103
|
+
# Verify claudetm can access credentials
|
|
61
104
|
claudetm doctor
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**For Docker users:** Ensure your `~/.claude/.credentials.json` exists before running the container, as Claude Task Master needs OAuth credentials to function.
|
|
108
|
+
|
|
109
|
+
### Upgrading
|
|
110
|
+
|
|
111
|
+
**With uv:**
|
|
112
|
+
```bash
|
|
113
|
+
uv tool install claude-task-master --force --reinstall
|
|
114
|
+
```
|
|
62
115
|
|
|
63
|
-
|
|
116
|
+
**With pip:**
|
|
117
|
+
```bash
|
|
118
|
+
pip install --upgrade claude-task-master
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**With Docker:**
|
|
122
|
+
```bash
|
|
123
|
+
# Pull the latest image
|
|
124
|
+
docker pull ghcr.io/developerz-ai/claude-task-master:latest
|
|
125
|
+
|
|
126
|
+
# Restart your container with the new image
|
|
127
|
+
docker-compose up -d
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Check version:**
|
|
131
|
+
```bash
|
|
132
|
+
claudetm --version
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Run a Task
|
|
136
|
+
|
|
137
|
+
**Using the CLI:**
|
|
138
|
+
```bash
|
|
64
139
|
cd your-project
|
|
65
140
|
claudetm start "Add user authentication with tests"
|
|
66
141
|
```
|
|
67
142
|
|
|
143
|
+
**Using Docker:**
|
|
144
|
+
```bash
|
|
145
|
+
# Task execution is handled through the unified server
|
|
146
|
+
# Create tasks via the REST API or MCP interface
|
|
147
|
+
curl -H "Authorization: Bearer password" \
|
|
148
|
+
http://localhost:8000/tasks -X POST \
|
|
149
|
+
-d '{"goal": "Add user authentication"}'
|
|
150
|
+
```
|
|
151
|
+
|
|
68
152
|
## Overview
|
|
69
153
|
|
|
70
154
|
Claude Task Master uses the Claude Agent SDK to autonomously work on complex tasks. Give it a goal, and it will:
|
|
@@ -252,6 +336,17 @@ To use OpenRouter instead of direct Anthropic API:
|
|
|
252
336
|
CLAUDETM_DEBUG=1 claudetm status
|
|
253
337
|
```
|
|
254
338
|
|
|
339
|
+
## Documentation
|
|
340
|
+
|
|
341
|
+
Complete documentation for all features and deployment options:
|
|
342
|
+
|
|
343
|
+
| Guide | Description |
|
|
344
|
+
|-------|-------------|
|
|
345
|
+
| **[Docker Deployment](./docs/docker.md)** | Docker installation, configuration, volume mounts, and production deployment |
|
|
346
|
+
| **[Authentication](./docs/authentication.md)** | Password-based authentication for REST API, MCP server, and webhooks |
|
|
347
|
+
| **[REST API Reference](./docs/api-reference.md)** | Complete REST API endpoint documentation with examples |
|
|
348
|
+
| **[Webhooks](./docs/webhooks.md)** | Webhook events, payload formats, HMAC signature verification, and integration examples |
|
|
349
|
+
|
|
255
350
|
## Usage
|
|
256
351
|
|
|
257
352
|
### CLI Commands
|
|
@@ -460,6 +555,49 @@ claudetm context
|
|
|
460
555
|
|
|
461
556
|
The system follows SOLID principles with strict Single Responsibility:
|
|
462
557
|
|
|
558
|
+
### Server Architecture
|
|
559
|
+
|
|
560
|
+
When running with the unified server (`claudetm-server`), the following components work together:
|
|
561
|
+
|
|
562
|
+
```
|
|
563
|
+
┌─────────────────────────────────────────────────────────────────────┐
|
|
564
|
+
│ Claude Task Master Server │
|
|
565
|
+
│ │
|
|
566
|
+
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
567
|
+
│ │ REST API │ │ MCP Server │ │ Webhooks │ │
|
|
568
|
+
│ │ (FastAPI) │ │ (FastMCP) │ │ (httpx) │ │
|
|
569
|
+
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
|
|
570
|
+
│ │ │ │ │
|
|
571
|
+
│ └──────────────────┼──────────────────┘ │
|
|
572
|
+
│ │ │
|
|
573
|
+
│ ┌───────▼───────┐ │
|
|
574
|
+
│ │ Auth Module │ │
|
|
575
|
+
│ │ (Password) │ │
|
|
576
|
+
│ └───────────────┘ │
|
|
577
|
+
└─────────────────────────────────────────────────────────────────────┘
|
|
578
|
+
|
|
579
|
+
Docker Container:
|
|
580
|
+
┌─────────────────────────────────────────────────────────────────────┐
|
|
581
|
+
│ claudetm-server │
|
|
582
|
+
│ │
|
|
583
|
+
│ Volumes: │
|
|
584
|
+
│ - /app/project → project directory │
|
|
585
|
+
│ - /root/.claude → Claude credentials (~/.claude) │
|
|
586
|
+
│ │
|
|
587
|
+
│ Env: CLAUDETM_PASSWORD, CLAUDETM_WEBHOOK_URL, ... │
|
|
588
|
+
└─────────────────────────────────────────────────────────────────────┘
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
**Server Features:**
|
|
592
|
+
- **REST API** - Create and manage tasks, view status, manage webhooks
|
|
593
|
+
- **MCP Server** - Claude editor integration for native IDE support
|
|
594
|
+
- **Webhooks** - Send notifications on task events with HMAC verification
|
|
595
|
+
- **Unified Authentication** - Single password protects all three interfaces
|
|
596
|
+
- **Docker Ready** - Multi-arch image published to GitHub Container Registry
|
|
597
|
+
|
|
598
|
+
For detailed Docker deployment, see [Docker Deployment Guide](./docs/docker.md).
|
|
599
|
+
For authentication details, see [Authentication Guide](./docs/authentication.md).
|
|
600
|
+
|
|
463
601
|
### Core Components
|
|
464
602
|
|
|
465
603
|
| Component | Responsibility |
|
|
@@ -10,21 +10,99 @@ Autonomous task orchestration system that keeps Claude working until a goal is a
|
|
|
10
10
|
|
|
11
11
|
## Quick Start
|
|
12
12
|
|
|
13
|
+
### Installation
|
|
14
|
+
|
|
15
|
+
**Option 1: Using uv (recommended)**
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Install with uv
|
|
19
|
+
uv tool install claude-task-master
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Option 2: Using pip**
|
|
23
|
+
|
|
13
24
|
```bash
|
|
14
25
|
# Install from PyPI
|
|
15
26
|
pip install claude-task-master
|
|
27
|
+
```
|
|
16
28
|
|
|
17
|
-
|
|
18
|
-
|
|
29
|
+
**Option 3: Using Docker**
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Pull the official Docker image from GitHub Container Registry
|
|
33
|
+
docker pull ghcr.io/developerz-ai/claude-task-master:latest
|
|
34
|
+
|
|
35
|
+
# Run with Docker (requires Claude credentials mounted)
|
|
36
|
+
docker run -d \
|
|
37
|
+
--name claudetm \
|
|
38
|
+
-p 8000:8000 \
|
|
39
|
+
-v ~/.claude:/home/claudetm/.claude:ro \
|
|
40
|
+
-v $(pwd):/app/project \
|
|
41
|
+
-v ~/.gitconfig:/home/claudetm/.gitconfig:ro \
|
|
42
|
+
-v ~/.config/gh:/home/claudetm/.config/gh:ro \
|
|
43
|
+
ghcr.io/developerz-ai/claude-task-master:latest
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
See [Docker Deployment Guide](./docs/docker.md) for detailed Docker setup, volume mounts, and configuration options.
|
|
47
|
+
|
|
48
|
+
### Authentication
|
|
49
|
+
|
|
50
|
+
Before using claudetm, you need to authenticate with Claude:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Run Claude CLI and login (this saves credentials that claudetm will use)
|
|
54
|
+
claude
|
|
55
|
+
/login
|
|
19
56
|
|
|
20
|
-
# Verify
|
|
57
|
+
# Verify claudetm can access credentials
|
|
21
58
|
claudetm doctor
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**For Docker users:** Ensure your `~/.claude/.credentials.json` exists before running the container, as Claude Task Master needs OAuth credentials to function.
|
|
62
|
+
|
|
63
|
+
### Upgrading
|
|
64
|
+
|
|
65
|
+
**With uv:**
|
|
66
|
+
```bash
|
|
67
|
+
uv tool install claude-task-master --force --reinstall
|
|
68
|
+
```
|
|
22
69
|
|
|
23
|
-
|
|
70
|
+
**With pip:**
|
|
71
|
+
```bash
|
|
72
|
+
pip install --upgrade claude-task-master
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**With Docker:**
|
|
76
|
+
```bash
|
|
77
|
+
# Pull the latest image
|
|
78
|
+
docker pull ghcr.io/developerz-ai/claude-task-master:latest
|
|
79
|
+
|
|
80
|
+
# Restart your container with the new image
|
|
81
|
+
docker-compose up -d
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Check version:**
|
|
85
|
+
```bash
|
|
86
|
+
claudetm --version
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Run a Task
|
|
90
|
+
|
|
91
|
+
**Using the CLI:**
|
|
92
|
+
```bash
|
|
24
93
|
cd your-project
|
|
25
94
|
claudetm start "Add user authentication with tests"
|
|
26
95
|
```
|
|
27
96
|
|
|
97
|
+
**Using Docker:**
|
|
98
|
+
```bash
|
|
99
|
+
# Task execution is handled through the unified server
|
|
100
|
+
# Create tasks via the REST API or MCP interface
|
|
101
|
+
curl -H "Authorization: Bearer password" \
|
|
102
|
+
http://localhost:8000/tasks -X POST \
|
|
103
|
+
-d '{"goal": "Add user authentication"}'
|
|
104
|
+
```
|
|
105
|
+
|
|
28
106
|
## Overview
|
|
29
107
|
|
|
30
108
|
Claude Task Master uses the Claude Agent SDK to autonomously work on complex tasks. Give it a goal, and it will:
|
|
@@ -212,6 +290,17 @@ To use OpenRouter instead of direct Anthropic API:
|
|
|
212
290
|
CLAUDETM_DEBUG=1 claudetm status
|
|
213
291
|
```
|
|
214
292
|
|
|
293
|
+
## Documentation
|
|
294
|
+
|
|
295
|
+
Complete documentation for all features and deployment options:
|
|
296
|
+
|
|
297
|
+
| Guide | Description |
|
|
298
|
+
|-------|-------------|
|
|
299
|
+
| **[Docker Deployment](./docs/docker.md)** | Docker installation, configuration, volume mounts, and production deployment |
|
|
300
|
+
| **[Authentication](./docs/authentication.md)** | Password-based authentication for REST API, MCP server, and webhooks |
|
|
301
|
+
| **[REST API Reference](./docs/api-reference.md)** | Complete REST API endpoint documentation with examples |
|
|
302
|
+
| **[Webhooks](./docs/webhooks.md)** | Webhook events, payload formats, HMAC signature verification, and integration examples |
|
|
303
|
+
|
|
215
304
|
## Usage
|
|
216
305
|
|
|
217
306
|
### CLI Commands
|
|
@@ -420,6 +509,49 @@ claudetm context
|
|
|
420
509
|
|
|
421
510
|
The system follows SOLID principles with strict Single Responsibility:
|
|
422
511
|
|
|
512
|
+
### Server Architecture
|
|
513
|
+
|
|
514
|
+
When running with the unified server (`claudetm-server`), the following components work together:
|
|
515
|
+
|
|
516
|
+
```
|
|
517
|
+
┌─────────────────────────────────────────────────────────────────────┐
|
|
518
|
+
│ Claude Task Master Server │
|
|
519
|
+
│ │
|
|
520
|
+
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
521
|
+
│ │ REST API │ │ MCP Server │ │ Webhooks │ │
|
|
522
|
+
│ │ (FastAPI) │ │ (FastMCP) │ │ (httpx) │ │
|
|
523
|
+
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
|
|
524
|
+
│ │ │ │ │
|
|
525
|
+
│ └──────────────────┼──────────────────┘ │
|
|
526
|
+
│ │ │
|
|
527
|
+
│ ┌───────▼───────┐ │
|
|
528
|
+
│ │ Auth Module │ │
|
|
529
|
+
│ │ (Password) │ │
|
|
530
|
+
│ └───────────────┘ │
|
|
531
|
+
└─────────────────────────────────────────────────────────────────────┘
|
|
532
|
+
|
|
533
|
+
Docker Container:
|
|
534
|
+
┌─────────────────────────────────────────────────────────────────────┐
|
|
535
|
+
│ claudetm-server │
|
|
536
|
+
│ │
|
|
537
|
+
│ Volumes: │
|
|
538
|
+
│ - /app/project → project directory │
|
|
539
|
+
│ - /root/.claude → Claude credentials (~/.claude) │
|
|
540
|
+
│ │
|
|
541
|
+
│ Env: CLAUDETM_PASSWORD, CLAUDETM_WEBHOOK_URL, ... │
|
|
542
|
+
└─────────────────────────────────────────────────────────────────────┘
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
**Server Features:**
|
|
546
|
+
- **REST API** - Create and manage tasks, view status, manage webhooks
|
|
547
|
+
- **MCP Server** - Claude editor integration for native IDE support
|
|
548
|
+
- **Webhooks** - Send notifications on task events with HMAC verification
|
|
549
|
+
- **Unified Authentication** - Single password protects all three interfaces
|
|
550
|
+
- **Docker Ready** - Multi-arch image published to GitHub Container Registry
|
|
551
|
+
|
|
552
|
+
For detailed Docker deployment, see [Docker Deployment Guide](./docs/docker.md).
|
|
553
|
+
For authentication details, see [Authentication Guide](./docs/authentication.md).
|
|
554
|
+
|
|
423
555
|
### Core Components
|
|
424
556
|
|
|
425
557
|
| Component | Responsibility |
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "claude-task-master"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.3"
|
|
8
8
|
description = "Autonomous task orchestration system that keeps Claude working until a goal is achieved"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -42,7 +42,16 @@ Changelog = "https://github.com/developerz-ai/claude-task-master/blob/main/CHANG
|
|
|
42
42
|
|
|
43
43
|
[project.optional-dependencies]
|
|
44
44
|
mcp = ["mcp>=1.0.0"]
|
|
45
|
+
api = [
|
|
46
|
+
"fastapi>=0.100.0",
|
|
47
|
+
"uvicorn[standard]>=0.24.0",
|
|
48
|
+
# Note: passlib (last release: 1.7.4, Oct 2020) is unmaintained but has no known CVEs.
|
|
49
|
+
# It's widely used and bcrypt is timing-safe. Consider argon2-cffi as future alternative.
|
|
50
|
+
"passlib[bcrypt]>=1.7.4",
|
|
51
|
+
"bcrypt>=4.0.0,<4.1.0", # Pin bcrypt for passlib compatibility
|
|
52
|
+
]
|
|
45
53
|
dev = [
|
|
54
|
+
"claude-task-master[api]", # Include API dependencies for testing
|
|
46
55
|
"pytest>=8.0.0",
|
|
47
56
|
"pytest-cov>=4.1.0",
|
|
48
57
|
"pytest-asyncio>=0.23.0",
|
|
@@ -51,7 +60,7 @@ dev = [
|
|
|
51
60
|
"mypy>=1.9.0",
|
|
52
61
|
]
|
|
53
62
|
all = [
|
|
54
|
-
"claude-task-master[mcp,dev]",
|
|
63
|
+
"claude-task-master[mcp,api,dev]",
|
|
55
64
|
]
|
|
56
65
|
|
|
57
66
|
[project.scripts]
|
|
@@ -61,6 +70,10 @@ claudetm = "claude_task_master.wrapper:main"
|
|
|
61
70
|
claudetm-py = "claude_task_master.cli:app"
|
|
62
71
|
# MCP server entry point
|
|
63
72
|
claudetm-mcp = "claude_task_master.mcp.server:main"
|
|
73
|
+
# REST API server entry point
|
|
74
|
+
claudetm-api = "claude_task_master.api.server:main"
|
|
75
|
+
# Unified server entry point (REST API + MCP together)
|
|
76
|
+
claudetm-server = "claude_task_master.server:main"
|
|
64
77
|
|
|
65
78
|
# Setuptools configuration
|
|
66
79
|
[tool.setuptools.packages.find]
|
|
@@ -117,6 +130,14 @@ ignore_missing_imports = true
|
|
|
117
130
|
module = "mcp.*"
|
|
118
131
|
ignore_missing_imports = true
|
|
119
132
|
|
|
133
|
+
[[tool.mypy.overrides]]
|
|
134
|
+
module = ["fastapi.*", "uvicorn.*"]
|
|
135
|
+
ignore_missing_imports = true
|
|
136
|
+
|
|
137
|
+
[[tool.mypy.overrides]]
|
|
138
|
+
module = "passlib.*"
|
|
139
|
+
ignore_missing_imports = true
|
|
140
|
+
|
|
120
141
|
[[tool.mypy.overrides]]
|
|
121
142
|
module = "tests.*"
|
|
122
143
|
disallow_untyped_defs = false
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"""REST API layer for Claude Task Master.
|
|
2
|
+
|
|
3
|
+
This module provides a FastAPI-based REST API that exposes claudetm functionality
|
|
4
|
+
as HTTP endpoints for remote task monitoring.
|
|
5
|
+
|
|
6
|
+
Currently Implemented Endpoints:
|
|
7
|
+
- GET /status: Get current task status
|
|
8
|
+
- GET /plan: Get task plan content
|
|
9
|
+
- GET /logs: Get log content
|
|
10
|
+
- GET /progress: Get progress summary
|
|
11
|
+
- GET /context: Get accumulated context/learnings
|
|
12
|
+
- GET /health: Health check endpoint
|
|
13
|
+
|
|
14
|
+
Usage:
|
|
15
|
+
# Import and create the app
|
|
16
|
+
from claude_task_master.api import create_app
|
|
17
|
+
|
|
18
|
+
app = create_app()
|
|
19
|
+
|
|
20
|
+
# Or run directly
|
|
21
|
+
from claude_task_master.api import run_server
|
|
22
|
+
|
|
23
|
+
run_server(host="0.0.0.0", port=8000)
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
# API components - imported as they are implemented
|
|
27
|
+
from claude_task_master.api.models import (
|
|
28
|
+
# Response models
|
|
29
|
+
APIInfo,
|
|
30
|
+
# Request models
|
|
31
|
+
ConfigUpdateRequest,
|
|
32
|
+
ContextResponse,
|
|
33
|
+
ControlResponse,
|
|
34
|
+
ErrorResponse,
|
|
35
|
+
HealthResponse,
|
|
36
|
+
# Enums
|
|
37
|
+
LogFormat,
|
|
38
|
+
LogLevel,
|
|
39
|
+
LogsResponse,
|
|
40
|
+
PauseRequest,
|
|
41
|
+
PlanResponse,
|
|
42
|
+
ProgressResponse,
|
|
43
|
+
ResumeRequest,
|
|
44
|
+
StopRequest,
|
|
45
|
+
TaskDeleteResponse,
|
|
46
|
+
TaskInitRequest,
|
|
47
|
+
TaskInitResponse,
|
|
48
|
+
TaskListItem,
|
|
49
|
+
TaskListResponse,
|
|
50
|
+
TaskOptionsResponse,
|
|
51
|
+
TaskProgressInfo,
|
|
52
|
+
TaskStatus,
|
|
53
|
+
TaskStatusResponse,
|
|
54
|
+
WorkflowStage,
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
# Routes
|
|
58
|
+
from claude_task_master.api.routes import create_info_router, register_routes
|
|
59
|
+
|
|
60
|
+
# Server components
|
|
61
|
+
from claude_task_master.api.server import create_app, get_app, run_server
|
|
62
|
+
|
|
63
|
+
__all__: list[str] = [
|
|
64
|
+
# Server
|
|
65
|
+
"create_app",
|
|
66
|
+
"run_server",
|
|
67
|
+
"get_app",
|
|
68
|
+
# Enums
|
|
69
|
+
"TaskStatus",
|
|
70
|
+
"WorkflowStage",
|
|
71
|
+
"LogLevel",
|
|
72
|
+
"LogFormat",
|
|
73
|
+
# Request models
|
|
74
|
+
"PauseRequest",
|
|
75
|
+
"StopRequest",
|
|
76
|
+
"ResumeRequest",
|
|
77
|
+
"ConfigUpdateRequest",
|
|
78
|
+
"TaskInitRequest",
|
|
79
|
+
# Response models
|
|
80
|
+
"TaskStatusResponse",
|
|
81
|
+
"TaskOptionsResponse",
|
|
82
|
+
"TaskProgressInfo",
|
|
83
|
+
"ControlResponse",
|
|
84
|
+
"PlanResponse",
|
|
85
|
+
"LogsResponse",
|
|
86
|
+
"ProgressResponse",
|
|
87
|
+
"ContextResponse",
|
|
88
|
+
"TaskListItem",
|
|
89
|
+
"TaskListResponse",
|
|
90
|
+
"HealthResponse",
|
|
91
|
+
"TaskInitResponse",
|
|
92
|
+
"TaskDeleteResponse",
|
|
93
|
+
"ErrorResponse",
|
|
94
|
+
"APIInfo",
|
|
95
|
+
# Routes
|
|
96
|
+
"create_info_router",
|
|
97
|
+
"register_routes",
|
|
98
|
+
]
|