rtaskmaster-mcp 0.2.0
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 -0
- package/README.md +244 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/storage.d.ts +38 -0
- package/dist/core/storage.d.ts.map +1 -0
- package/dist/core/storage.js +83 -0
- package/dist/core/storage.js.map +1 -0
- package/dist/core/task-manager.d.ts +67 -0
- package/dist/core/task-manager.d.ts.map +1 -0
- package/dist/core/task-manager.js +243 -0
- package/dist/core/task-manager.js.map +1 -0
- package/dist/core/types.d.ts +67 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +5 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tools.d.ts +9 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +817 -0
- package/dist/mcp/tools.js.map +1 -0
- package/package.json +48 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 RBuildAI
|
|
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
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# RTaskmaster MCP
|
|
2
|
+
|
|
3
|
+
A task master MCP (Model Context Protocol) server for AI-driven development in VS Code, Cursor, and other MCP-compatible editors.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/rtaskmaster-mcp)
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- 📋 **Task Management**: Create, update, list, and organize tasks
|
|
10
|
+
- 🎯 **Subtasks**: Break down complex tasks into manageable subtasks
|
|
11
|
+
- 📊 **Status Tracking**: Track progress with status updates (pending, in-progress, done, blocked, deferred)
|
|
12
|
+
- 🏷️ **Priority Levels**: Organize by priority (high, medium, low)
|
|
13
|
+
- 🔗 **Dependencies**: Define task dependencies
|
|
14
|
+
- 💾 **JSON Storage**: Simple file-based storage in `.rtaskmaster/tasks.json`
|
|
15
|
+
- 🤖 **AI-Ready**: Designed to work seamlessly with GitHub Copilot, Claude, and other AI assistants
|
|
16
|
+
|
|
17
|
+
## Quick Install for VS Code
|
|
18
|
+
|
|
19
|
+
### Option 1: NPX (Recommended - No Install Required)
|
|
20
|
+
|
|
21
|
+
Add to your VS Code MCP configuration at `.vscode/mcp.json` in your project:
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"servers": {
|
|
26
|
+
"rtaskmaster": {
|
|
27
|
+
"command": "npx",
|
|
28
|
+
"args": ["-y", "rtaskmaster-mcp"],
|
|
29
|
+
"type": "stdio"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Option 2: Global Install
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install -g rtaskmaster-mcp
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Then add to `.vscode/mcp.json`:
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"servers": {
|
|
46
|
+
"rtaskmaster": {
|
|
47
|
+
"command": "rtaskmaster-mcp",
|
|
48
|
+
"type": "stdio"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Option 3: Cursor IDE
|
|
55
|
+
|
|
56
|
+
Add to `~/.cursor/mcp.json` or your project's `.cursor/mcp.json`:
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"mcpServers": {
|
|
61
|
+
"rtaskmaster": {
|
|
62
|
+
"command": "npx",
|
|
63
|
+
"args": ["-y", "rtaskmaster-mcp"]
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 📖 AI Agent Instructions
|
|
70
|
+
|
|
71
|
+
For AI agents (GitHub Copilot, Claude, etc.) to work effectively with RTaskmaster, reference the instructions file:
|
|
72
|
+
|
|
73
|
+
**Location**: `.github/instructions.md` in this repository
|
|
74
|
+
|
|
75
|
+
The instructions file provides:
|
|
76
|
+
|
|
77
|
+
- ✅ Getting started workflow
|
|
78
|
+
- ✅ Task lifecycle management
|
|
79
|
+
- ✅ Best practices for AI agents
|
|
80
|
+
- ✅ TASKS.md checklist format
|
|
81
|
+
- ✅ Example sessions
|
|
82
|
+
|
|
83
|
+
### Quick Workflow for AI Agents
|
|
84
|
+
|
|
85
|
+
1. **Initialize**: `rtaskmaster_init` at project start
|
|
86
|
+
2. **Create tasks**: Break down requirements into tasks
|
|
87
|
+
3. **Generate checklist**: `rtaskmaster_generate_tasks_md` for human-readable view
|
|
88
|
+
4. **Work loop**: `rtaskmaster_next_task` → work → `rtaskmaster_set_status` → repeat
|
|
89
|
+
5. **Track progress**: `rtaskmaster_stats` to see completion
|
|
90
|
+
|
|
91
|
+
## Available MCP Tools
|
|
92
|
+
|
|
93
|
+
| Tool | Description |
|
|
94
|
+
| ------------------------------ | -------------------------------------------- |
|
|
95
|
+
| `rtaskmaster_init` | Initialize RTaskmaster in a project |
|
|
96
|
+
| `rtaskmaster_get_tasks` | Get all tasks with optional filtering |
|
|
97
|
+
| `rtaskmaster_get_task` | Get a specific task by ID |
|
|
98
|
+
| `rtaskmaster_create_task` | Create a new task |
|
|
99
|
+
| `rtaskmaster_update_task` | Update an existing task |
|
|
100
|
+
| `rtaskmaster_delete_task` | Delete a task |
|
|
101
|
+
| `rtaskmaster_set_status` | Update task status |
|
|
102
|
+
| `rtaskmaster_add_subtask` | Add a subtask to a task |
|
|
103
|
+
| `rtaskmaster_next_task` | Get the next task to work on |
|
|
104
|
+
| `rtaskmaster_stats` | Get project statistics |
|
|
105
|
+
| `rtaskmaster_generate_tasks_md` | Generate a human-readable TASKS.md checklist |
|
|
106
|
+
| `rtaskmaster_parse_prd` | Parse requirements/PRD files to create tasks |
|
|
107
|
+
| `rtaskmaster_bulk_status` | Update multiple task statuses at once |
|
|
108
|
+
|
|
109
|
+
## 📋 TASKS.md Checklist File
|
|
110
|
+
|
|
111
|
+
RTaskmaster can generate a human-readable `TASKS.md` file that serves as a visual checklist:
|
|
112
|
+
|
|
113
|
+
```markdown
|
|
114
|
+
# Project Tasks
|
|
115
|
+
|
|
116
|
+
## 📊 Progress
|
|
117
|
+
|
|
118
|
+
| Status | Count |
|
|
119
|
+
| -------------- | ----- |
|
|
120
|
+
| ✅ Done | 2 |
|
|
121
|
+
| 🔄 In Progress | 1 |
|
|
122
|
+
| ⏳ Pending | 3 |
|
|
123
|
+
| **Total** | **6** |
|
|
124
|
+
|
|
125
|
+
**Completion: 33%**
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## ✅ Tasks
|
|
130
|
+
|
|
131
|
+
### 🔴 High Priority
|
|
132
|
+
|
|
133
|
+
- [x] Set up project structure (#1)
|
|
134
|
+
- [ ] 🔄 Implement authentication (#2)
|
|
135
|
+
- [x] Set up OAuth (#2.1)
|
|
136
|
+
- [ ] Add JWT tokens (#2.2)
|
|
137
|
+
|
|
138
|
+
### 🟡 Medium Priority
|
|
139
|
+
|
|
140
|
+
- [ ] Add user profile page (#3)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Generate this file anytime using `rtaskmaster_generate_tasks_md`.
|
|
144
|
+
|
|
145
|
+
## Task Structure
|
|
146
|
+
|
|
147
|
+
Tasks are stored in `.rtaskmaster/tasks.json`:
|
|
148
|
+
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"version": "1.0.0",
|
|
152
|
+
"projectName": "My Project",
|
|
153
|
+
"tasks": [
|
|
154
|
+
{
|
|
155
|
+
"id": "1",
|
|
156
|
+
"title": "Implement authentication",
|
|
157
|
+
"description": "Add user authentication system",
|
|
158
|
+
"status": "pending",
|
|
159
|
+
"priority": "high",
|
|
160
|
+
"dependencies": [],
|
|
161
|
+
"subtasks": [
|
|
162
|
+
{
|
|
163
|
+
"id": "1",
|
|
164
|
+
"title": "Set up OAuth",
|
|
165
|
+
"status": "pending"
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
"details": "Implementation notes here...",
|
|
169
|
+
"testStrategy": "How to verify this task...",
|
|
170
|
+
"createdAt": "2026-01-13T10:00:00.000Z",
|
|
171
|
+
"updatedAt": "2026-01-13T10:00:00.000Z"
|
|
172
|
+
}
|
|
173
|
+
],
|
|
174
|
+
"lastUpdated": "2026-01-13T10:00:00.000Z"
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Usage Examples
|
|
179
|
+
|
|
180
|
+
Once configured, interact through your AI assistant:
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
Initialize taskmaster in this project
|
|
184
|
+
|
|
185
|
+
Create a task to implement user authentication with high priority
|
|
186
|
+
|
|
187
|
+
Show me all pending tasks
|
|
188
|
+
|
|
189
|
+
What's the next task I should work on?
|
|
190
|
+
|
|
191
|
+
Mark task 1 as in-progress
|
|
192
|
+
|
|
193
|
+
Add a subtask to task 1: "Set up database schema"
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Task Statuses
|
|
197
|
+
|
|
198
|
+
| Status | Description |
|
|
199
|
+
| ------------- | ------------------------------------- |
|
|
200
|
+
| `pending` | Task not yet started |
|
|
201
|
+
| `in-progress` | Currently being worked on |
|
|
202
|
+
| `done` | Completed |
|
|
203
|
+
| `blocked` | Cannot proceed (waiting on something) |
|
|
204
|
+
| `deferred` | Postponed for later |
|
|
205
|
+
|
|
206
|
+
## Priority Levels
|
|
207
|
+
|
|
208
|
+
| Priority | Description |
|
|
209
|
+
| -------- | ------------------------- |
|
|
210
|
+
| `high` | Urgent/critical tasks |
|
|
211
|
+
| `medium` | Normal priority (default) |
|
|
212
|
+
| `low` | Can wait |
|
|
213
|
+
|
|
214
|
+
## Development
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# Clone the repo
|
|
218
|
+
git clone https://github.com/RagnarPitla/RTaskmaster-rbuildai-mcp.git
|
|
219
|
+
cd RTaskmaster-rbuildai-mcp
|
|
220
|
+
|
|
221
|
+
# Install dependencies
|
|
222
|
+
npm install
|
|
223
|
+
|
|
224
|
+
# Build
|
|
225
|
+
npm run build
|
|
226
|
+
|
|
227
|
+
# Watch mode for development
|
|
228
|
+
npm run dev
|
|
229
|
+
|
|
230
|
+
# Test with MCP Inspector
|
|
231
|
+
npm run inspector
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Contributing
|
|
235
|
+
|
|
236
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
237
|
+
|
|
238
|
+
## License
|
|
239
|
+
|
|
240
|
+
MIT
|
|
241
|
+
|
|
242
|
+
## Author
|
|
243
|
+
|
|
244
|
+
RBuildAI - [GitHub](https://github.com/RagnarPitla)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Storage - File-based JSON storage for tasks
|
|
3
|
+
*/
|
|
4
|
+
import type { Task, TaskStore } from './types.js';
|
|
5
|
+
export declare class TaskStorage {
|
|
6
|
+
private projectRoot;
|
|
7
|
+
private tasksPath;
|
|
8
|
+
constructor(projectRoot: string);
|
|
9
|
+
/**
|
|
10
|
+
* Check if RTaskmaster is initialized in the project
|
|
11
|
+
*/
|
|
12
|
+
isInitialized(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Initialize RTaskmaster in the project
|
|
15
|
+
*/
|
|
16
|
+
initialize(projectName?: string): TaskStore;
|
|
17
|
+
/**
|
|
18
|
+
* Load task store from disk
|
|
19
|
+
*/
|
|
20
|
+
load(): TaskStore;
|
|
21
|
+
/**
|
|
22
|
+
* Save task store to disk
|
|
23
|
+
*/
|
|
24
|
+
save(store: TaskStore): void;
|
|
25
|
+
/**
|
|
26
|
+
* Get all tasks
|
|
27
|
+
*/
|
|
28
|
+
getTasks(): Task[];
|
|
29
|
+
/**
|
|
30
|
+
* Save all tasks
|
|
31
|
+
*/
|
|
32
|
+
saveTasks(tasks: Task[]): void;
|
|
33
|
+
/**
|
|
34
|
+
* Get project root
|
|
35
|
+
*/
|
|
36
|
+
getProjectRoot(): string;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/core/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMlD,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM;IAK/B;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS;IAyB3C;;OAEG;IACH,IAAI,IAAI,SAAS;IAWjB;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAM5B;;OAEG;IACH,QAAQ,IAAI,IAAI,EAAE;IAIlB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAM9B;;OAEG;IACH,cAAc,IAAI,MAAM;CAGzB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Storage - File-based JSON storage for tasks
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'node:fs';
|
|
5
|
+
import * as path from 'node:path';
|
|
6
|
+
const RTASKMASTER_DIR = '.rtaskmaster';
|
|
7
|
+
const TASKS_FILE = 'tasks.json';
|
|
8
|
+
const VERSION = '1.0.0';
|
|
9
|
+
export class TaskStorage {
|
|
10
|
+
projectRoot;
|
|
11
|
+
tasksPath;
|
|
12
|
+
constructor(projectRoot) {
|
|
13
|
+
this.projectRoot = projectRoot;
|
|
14
|
+
this.tasksPath = path.join(projectRoot, RTASKMASTER_DIR, TASKS_FILE);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Check if RTaskmaster is initialized in the project
|
|
18
|
+
*/
|
|
19
|
+
isInitialized() {
|
|
20
|
+
return fs.existsSync(this.tasksPath);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Initialize RTaskmaster in the project
|
|
24
|
+
*/
|
|
25
|
+
initialize(projectName) {
|
|
26
|
+
const rtaskmasterDir = path.join(this.projectRoot, RTASKMASTER_DIR);
|
|
27
|
+
if (!fs.existsSync(rtaskmasterDir)) {
|
|
28
|
+
fs.mkdirSync(rtaskmasterDir, { recursive: true });
|
|
29
|
+
}
|
|
30
|
+
const store = {
|
|
31
|
+
version: VERSION,
|
|
32
|
+
projectName: projectName || path.basename(this.projectRoot),
|
|
33
|
+
tasks: [],
|
|
34
|
+
lastUpdated: new Date().toISOString(),
|
|
35
|
+
};
|
|
36
|
+
this.save(store);
|
|
37
|
+
// Create .gitignore in .rtaskmaster if it doesn't exist
|
|
38
|
+
const gitignorePath = path.join(rtaskmasterDir, '.gitignore');
|
|
39
|
+
if (!fs.existsSync(gitignorePath)) {
|
|
40
|
+
fs.writeFileSync(gitignorePath, '# RTaskmaster files to ignore\n');
|
|
41
|
+
}
|
|
42
|
+
return store;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Load task store from disk
|
|
46
|
+
*/
|
|
47
|
+
load() {
|
|
48
|
+
if (!this.isInitialized()) {
|
|
49
|
+
throw new Error('RTaskmaster is not initialized in this project. Run rtaskmaster_init first.');
|
|
50
|
+
}
|
|
51
|
+
const content = fs.readFileSync(this.tasksPath, 'utf-8');
|
|
52
|
+
return JSON.parse(content);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Save task store to disk
|
|
56
|
+
*/
|
|
57
|
+
save(store) {
|
|
58
|
+
store.lastUpdated = new Date().toISOString();
|
|
59
|
+
const content = JSON.stringify(store, null, 2);
|
|
60
|
+
fs.writeFileSync(this.tasksPath, content, 'utf-8');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get all tasks
|
|
64
|
+
*/
|
|
65
|
+
getTasks() {
|
|
66
|
+
return this.load().tasks;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Save all tasks
|
|
70
|
+
*/
|
|
71
|
+
saveTasks(tasks) {
|
|
72
|
+
const store = this.load();
|
|
73
|
+
store.tasks = tasks;
|
|
74
|
+
this.save(store);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get project root
|
|
78
|
+
*/
|
|
79
|
+
getProjectRoot() {
|
|
80
|
+
return this.projectRoot;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/core/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,MAAM,eAAe,GAAG,cAAc,CAAC;AACvC,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,OAAO,WAAW;IACd,WAAW,CAAS;IACpB,SAAS,CAAS;IAE1B,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,WAAoB;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAEpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACnC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,KAAK,GAAc;YACvB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;YAC3D,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjB,wDAAwD;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,iCAAiC,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAc,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,KAAgB;QACnB,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAa;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Manager - Core business logic for task operations
|
|
3
|
+
*/
|
|
4
|
+
import type { Task, Subtask, TaskStatus, TaskFilter, TaskStats, CreateTaskInput, UpdateTaskInput, CreateSubtaskInput } from './types.js';
|
|
5
|
+
export declare class TaskManager {
|
|
6
|
+
private storage;
|
|
7
|
+
constructor(projectRoot: string);
|
|
8
|
+
/**
|
|
9
|
+
* Check if initialized
|
|
10
|
+
*/
|
|
11
|
+
isInitialized(): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Initialize Ragnar
|
|
14
|
+
*/
|
|
15
|
+
initialize(projectName?: string): import("./types.js").TaskStore;
|
|
16
|
+
/**
|
|
17
|
+
* Generate next task ID
|
|
18
|
+
*/
|
|
19
|
+
private generateTaskId;
|
|
20
|
+
/**
|
|
21
|
+
* Generate next subtask ID
|
|
22
|
+
*/
|
|
23
|
+
private generateSubtaskId;
|
|
24
|
+
/**
|
|
25
|
+
* Get all tasks with optional filtering
|
|
26
|
+
*/
|
|
27
|
+
getTasks(filter?: TaskFilter): Task[];
|
|
28
|
+
/**
|
|
29
|
+
* Get a task by ID (supports dot notation for subtasks: "1.2")
|
|
30
|
+
*/
|
|
31
|
+
getTask(taskId: string): Task | Subtask | null;
|
|
32
|
+
/**
|
|
33
|
+
* Get parent task (for subtask operations)
|
|
34
|
+
*/
|
|
35
|
+
getParentTask(taskId: string): Task | null;
|
|
36
|
+
/**
|
|
37
|
+
* Create a new task
|
|
38
|
+
*/
|
|
39
|
+
createTask(input: CreateTaskInput): Task;
|
|
40
|
+
/**
|
|
41
|
+
* Update an existing task
|
|
42
|
+
*/
|
|
43
|
+
updateTask(taskId: string, input: UpdateTaskInput): Task | null;
|
|
44
|
+
/**
|
|
45
|
+
* Delete a task
|
|
46
|
+
*/
|
|
47
|
+
deleteTask(taskId: string): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Set task status
|
|
50
|
+
*/
|
|
51
|
+
setStatus(taskId: string, status: TaskStatus): Task | Subtask | null;
|
|
52
|
+
/**
|
|
53
|
+
* Add a subtask to a task
|
|
54
|
+
*/
|
|
55
|
+
addSubtask(taskId: string, input: CreateSubtaskInput): Subtask | null;
|
|
56
|
+
/**
|
|
57
|
+
* Get the next task to work on
|
|
58
|
+
* Prioritizes: in-progress > high priority pending > medium > low
|
|
59
|
+
* Only returns tasks with satisfied dependencies
|
|
60
|
+
*/
|
|
61
|
+
getNextTask(): Task | null;
|
|
62
|
+
/**
|
|
63
|
+
* Get task statistics
|
|
64
|
+
*/
|
|
65
|
+
getStats(): TaskStats;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=task-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/core/task-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,IAAI,EACJ,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,eAAe,EACf,eAAe,EACf,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAc;gBAEjB,WAAW,EAAE,MAAM;IAI/B;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM;IAI/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAMtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,EAAE;IAiBrC;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI;IAc9C;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAM1C;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAwBxC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAmB/D;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAiBnC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI;IA+BpE;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,GAAG,IAAI;IAuBrE;;;;OAIG;IACH,WAAW,IAAI,IAAI,GAAG,IAAI;IAuC1B;;OAEG;IACH,QAAQ,IAAI,SAAS;CAkBtB"}
|