@mandors/cli 0.3.11 → 0.4.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/README.md +108 -144
- package/binaries/darwin-arm64/mandor +0 -0
- package/binaries/darwin-arm64.tar.gz +0 -0
- package/binaries/linux-arm64/mandor +0 -0
- package/binaries/linux-arm64.tar.gz +0 -0
- package/npm/lib/install.js +1 -1
- package/package.json +1 -1
- package/.mandor/projects/test-proj/events.jsonl +0 -20
- package/.mandor/projects/test-proj/features.jsonl +0 -1
- package/.mandor/projects/test-proj/issues.jsonl +0 -3
- package/.mandor/projects/test-proj/project.jsonl +0 -11
- package/.mandor/projects/test-proj/schema.json +0 -29
- package/.mandor/projects/test-proj/tasks.jsonl +0 -3
- package/.mandor/workspace.json +0 -13
- package/bin/mandor +0 -0
- package/mandor-cli +0 -0
- package/mandor-test +0 -0
package/README.md
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
# Mandor -
|
|
1
|
+
# Mandor - Deterministic Task Manager CLI for AI Agent Workflows
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="logo.png" alt="Mandor Logo" width="600">
|
|
5
|
+
</p>
|
|
2
6
|
|
|
3
7
|
<p align="center">
|
|
4
8
|
<strong>Stop writing markdown plans. Start shipping features with deterministic task tracking.</strong>
|
|
5
9
|
</p>
|
|
6
10
|
|
|
7
11
|
<p align="center">
|
|
8
|
-
<strong>
|
|
12
|
+
<strong>Dependency-aware | Structured storage | CLI-native | Built for AI agents</strong>
|
|
9
13
|
</p>
|
|
10
14
|
|
|
11
15
|
<p align="center">
|
|
@@ -27,18 +31,18 @@ Traditional workflows scatter task state across markdown files, spreadsheets, an
|
|
|
27
31
|
|
|
28
32
|
Mandor brings **deterministic task management** to AI agent workflows:
|
|
29
33
|
|
|
30
|
-
- **Single Source of Truth**: All state in
|
|
34
|
+
- **Single Source of Truth**: All state in structured JSONL files—queryable, reproducible, auditable
|
|
31
35
|
- **Automatic Dependency Resolution**: Mark tasks done → dependents auto-transition to ready
|
|
32
36
|
- **Schema-Driven**: Enforce implementation steps, test cases, and library needs upfront
|
|
33
37
|
- **CLI-Native**: Works in terminal, scripts, and CI/CD pipelines
|
|
34
|
-
- **
|
|
38
|
+
- **Dependency Tracking**: Full support for same-project and cross-project dependencies
|
|
35
39
|
|
|
36
40
|
## Overview
|
|
37
41
|
|
|
38
42
|
Mandor is a CLI tool for managing tasks, features, and issues in AI agent workflows:
|
|
39
43
|
|
|
40
|
-
- **
|
|
41
|
-
- **
|
|
44
|
+
- **Structured Storage**: All data in JSONL format with full audit trail
|
|
45
|
+
- **Real-Time Status**: Query tasks/issues by status (ready, blocked, in_progress)
|
|
42
46
|
- **Dependency Tracking**: Automatic status transitions when dependencies complete
|
|
43
47
|
- **Cross-Platform**: Go binary for macOS, Linux, Windows (arm64 & x64)
|
|
44
48
|
|
|
@@ -46,22 +50,14 @@ Mandor is a CLI tool for managing tasks, features, and issues in AI agent workfl
|
|
|
46
50
|
|
|
47
51
|
## Core Concepts
|
|
48
52
|
|
|
49
|
-
### Entity Hierarchy
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
Workspace
|
|
53
|
-
└── Projects
|
|
54
|
-
└── Features
|
|
55
|
-
└── Tasks
|
|
56
|
-
└── Issues
|
|
57
|
-
```
|
|
58
|
-
|
|
59
53
|
### Entity Types
|
|
60
54
|
|
|
61
55
|
| Type | Purpose | Status Values |
|
|
62
56
|
|------|---------|---------------|
|
|
63
|
-
| **
|
|
57
|
+
| **Workspace** | Top-level container for all projects | (single instance per directory) |
|
|
58
|
+
| **Project** | Container for features and issues | (active/deleted) |
|
|
64
59
|
| **Feature** | Logical grouping of related tasks | draft, active, done, blocked, cancelled |
|
|
60
|
+
| **Task** | Work items within a feature | pending, ready, in_progress, done, blocked, cancelled |
|
|
65
61
|
| **Issue** | Problems, bugs, or improvement requests | open, ready, in_progress, resolved, wontfix, blocked, cancelled |
|
|
66
62
|
|
|
67
63
|
### Dependency Types
|
|
@@ -74,47 +70,43 @@ Workspace
|
|
|
74
70
|
|
|
75
71
|
**Tasks:**
|
|
76
72
|
```
|
|
77
|
-
pending → ready
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
73
|
+
pending → {ready, in_progress, cancelled}
|
|
74
|
+
ready → {in_progress, cancelled}
|
|
75
|
+
in_progress → {done, blocked, cancelled}
|
|
76
|
+
blocked → {ready, cancelled}
|
|
77
|
+
done → (terminal)
|
|
78
|
+
cancelled → (terminal)
|
|
81
79
|
```
|
|
82
80
|
|
|
83
81
|
**Features:**
|
|
84
82
|
```
|
|
85
|
-
draft → active
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
draft → {active, blocked, cancelled}
|
|
84
|
+
active → {done, blocked, cancelled}
|
|
85
|
+
blocked → {draft, active, done, cancelled}
|
|
86
|
+
done → {cancelled}
|
|
87
|
+
cancelled → {draft}
|
|
89
88
|
```
|
|
90
89
|
|
|
91
90
|
**Issues:**
|
|
92
91
|
```
|
|
93
|
-
open → ready
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
cancelled →
|
|
92
|
+
open → {ready, in_progress, blocked, resolved, wontfix, cancelled}
|
|
93
|
+
ready → {in_progress, blocked, resolved, wontfix, cancelled}
|
|
94
|
+
in_progress → {blocked, resolved, wontfix, cancelled}
|
|
95
|
+
blocked → {ready, resolved, wontfix, cancelled}
|
|
96
|
+
resolved → (terminal, can reopen to any status)
|
|
97
|
+
wontfix → (terminal, can reopen to any status)
|
|
98
|
+
cancelled → (terminal, can reopen to any status)
|
|
100
99
|
```
|
|
101
100
|
|
|
102
101
|
---
|
|
103
102
|
|
|
104
103
|
## Installation
|
|
105
104
|
|
|
106
|
-
###
|
|
105
|
+
### Install with curl
|
|
107
106
|
|
|
108
107
|
```bash
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
go build -o ./mandor ./cmd/mandor
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Use from Binaries
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
./mandor --help
|
|
108
|
+
curl -fsSL https://raw.githubusercontent.com/sanxzy/mandor/main/scripts/install.sh | sh
|
|
109
|
+
mandor --help
|
|
118
110
|
```
|
|
119
111
|
|
|
120
112
|
### Install from npm
|
|
@@ -153,7 +145,7 @@ mandor feature create "Authentication" --project api \
|
|
|
153
145
|
|
|
154
146
|
```bash
|
|
155
147
|
# Create first task (no dependencies)
|
|
156
|
-
mandor task create "JWT Parser"
|
|
148
|
+
mandor task create api-feature-xxx "JWT Parser" \
|
|
157
149
|
--goal "Parse and validate JWT tokens in incoming requests with expiry and signature verification" \
|
|
158
150
|
--implementation-steps "Setup crypto library|Add token validation|Handle expiry|Return errors" \
|
|
159
151
|
--test-cases "Valid token accepted|Expired token rejected|Invalid signature rejected" \
|
|
@@ -162,7 +154,7 @@ mandor task create "JWT Parser" --feature api-feature-xxx \
|
|
|
162
154
|
--priority P1
|
|
163
155
|
|
|
164
156
|
# Create dependent task (depends on JWT Parser)
|
|
165
|
-
mandor task create "Login Endpoint"
|
|
157
|
+
mandor task create api-feature-xxx "Login Endpoint" \
|
|
166
158
|
--goal "Accept user credentials and return JWT token with refresh token flow" \
|
|
167
159
|
--implementation-steps "Setup endpoint|Validate credentials|Generate JWT|Return tokens" \
|
|
168
160
|
--test-cases "Valid creds return token|Invalid creds rejected|Tokens properly formatted" \
|
|
@@ -175,25 +167,22 @@ mandor task create "Login Endpoint" --feature api-feature-xxx \
|
|
|
175
167
|
### 5. View Task Progress
|
|
176
168
|
|
|
177
169
|
```bash
|
|
178
|
-
# See all tasks in feature
|
|
179
|
-
mandor
|
|
170
|
+
# See all tasks in feature with visualization
|
|
171
|
+
mandor track feature api-feature-xxx
|
|
180
172
|
|
|
181
|
-
#
|
|
182
|
-
mandor task
|
|
183
|
-
|
|
184
|
-
# See blocked/waiting tasks
|
|
185
|
-
mandor task blocked --feature api-feature-xxx
|
|
173
|
+
# Get task details
|
|
174
|
+
mandor task detail <task-id>
|
|
186
175
|
```
|
|
187
176
|
|
|
188
177
|
### 6. Mark Tasks Complete
|
|
189
178
|
|
|
190
179
|
```bash
|
|
191
|
-
# Get task ID from
|
|
180
|
+
# Get task ID from track output
|
|
192
181
|
mandor task update <task-id> --status in_progress
|
|
193
182
|
mandor task update <task-id> --status done
|
|
194
183
|
|
|
195
184
|
# Dependent tasks auto-transition to "ready"
|
|
196
|
-
mandor
|
|
185
|
+
mandor track feature api-feature-xxx # Now shows "Login Endpoint" as ready
|
|
197
186
|
```
|
|
198
187
|
|
|
199
188
|
---
|
|
@@ -207,10 +196,7 @@ mandor task ready --feature api-feature-xxx # Now shows "Login Endpoint" as rea
|
|
|
207
196
|
mandor init [--workspace-name <name>] [-y]
|
|
208
197
|
|
|
209
198
|
# View workspace and project status
|
|
210
|
-
mandor status [--project <id>] [--
|
|
211
|
-
|
|
212
|
-
# Display feature summary grouped by priority
|
|
213
|
-
mandor summary [--project <id>]
|
|
199
|
+
mandor status [--project <id>] [--json]
|
|
214
200
|
|
|
215
201
|
# Manage configuration
|
|
216
202
|
mandor config get <key>
|
|
@@ -219,13 +205,35 @@ mandor config list
|
|
|
219
205
|
mandor config reset <key>
|
|
220
206
|
|
|
221
207
|
# Display all commands and best practices
|
|
222
|
-
mandor populate
|
|
208
|
+
mandor populate
|
|
223
209
|
|
|
224
210
|
# Show version
|
|
225
211
|
mandor version
|
|
226
212
|
|
|
227
213
|
# Generate shell completions
|
|
228
214
|
mandor completion [bash|zsh|fish]
|
|
215
|
+
|
|
216
|
+
# AI-assisted documentation
|
|
217
|
+
mandor ai --help
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Track Commands
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Track workspace status
|
|
224
|
+
mandor track
|
|
225
|
+
|
|
226
|
+
# Track project status
|
|
227
|
+
mandor track project <project-id>
|
|
228
|
+
|
|
229
|
+
# Track feature with tasks
|
|
230
|
+
mandor track feature <feature-id> [--verbose]
|
|
231
|
+
|
|
232
|
+
# Track specific task
|
|
233
|
+
mandor track task <task-id>
|
|
234
|
+
|
|
235
|
+
# Track issue
|
|
236
|
+
mandor track issue <issue-id>
|
|
229
237
|
```
|
|
230
238
|
|
|
231
239
|
### Project Commands
|
|
@@ -234,67 +242,44 @@ mandor completion [bash|zsh|fish]
|
|
|
234
242
|
# Create a project
|
|
235
243
|
mandor project create <id> --name <name> --goal <goal> [OPTIONS]
|
|
236
244
|
|
|
237
|
-
# List projects
|
|
238
|
-
mandor project list [--json]
|
|
239
|
-
|
|
240
245
|
# Show project details
|
|
241
246
|
mandor project detail <project-id>
|
|
242
247
|
|
|
243
248
|
# Update project
|
|
244
|
-
mandor project update <project-id> --name <name> [--goal <goal>]
|
|
245
|
-
|
|
246
|
-
# Delete project (soft delete)
|
|
247
|
-
mandor project delete <project-id> [--hard]
|
|
248
|
-
|
|
249
|
-
# Reopen a soft-deleted project
|
|
250
|
-
mandor project reopen <project-id>
|
|
249
|
+
mandor project update <project-id> [--name <name>] [--goal <goal>] [--status <status>]
|
|
251
250
|
```
|
|
252
251
|
|
|
253
252
|
### Feature Commands
|
|
254
253
|
|
|
255
254
|
```bash
|
|
256
255
|
# Create a feature
|
|
257
|
-
mandor feature create <name> --project <id> --goal <goal> [--scope <scope>] [--priority <priority>]
|
|
256
|
+
mandor feature create <name> --project <id> --goal <goal> [--scope <scope>] [--priority <priority>]
|
|
258
257
|
|
|
259
258
|
# List features
|
|
260
|
-
mandor feature list --project <id>
|
|
259
|
+
mandor feature list --project <id>
|
|
261
260
|
|
|
262
261
|
# Show feature details
|
|
263
262
|
mandor feature detail <feature-id> --project <id>
|
|
264
263
|
|
|
265
264
|
# Update feature
|
|
266
265
|
mandor feature update <feature-id> --project <id> [--name <text>] [--goal <goal>] [--scope <scope>] [--priority <priority>] [--status <status>] [--depends <ids>] [--cancel --reason <text>] [--reopen] [--dry-run]
|
|
267
|
-
|
|
268
|
-
# List features by status filter
|
|
269
|
-
mandor feature list --project <id> [--status <status>]
|
|
270
266
|
```
|
|
271
267
|
|
|
272
268
|
### Task Commands
|
|
273
269
|
|
|
274
270
|
```bash
|
|
275
271
|
# Create a task
|
|
276
|
-
mandor task create <
|
|
272
|
+
mandor task create <feature-id> <name> --goal <goal> \
|
|
277
273
|
--implementation-steps <steps> --test-cases <cases> \
|
|
278
274
|
--derivable-files <files> --library-needs <libs> \
|
|
279
|
-
[--priority <priority>] [--depends-on <ids>]
|
|
280
|
-
|
|
281
|
-
# List tasks in a feature
|
|
282
|
-
mandor task list --feature <id> [--status <status>] [--priority <priority>] [--json] [--include-deleted] [--sort <field>] [--order <asc|desc>]
|
|
283
|
-
|
|
284
|
-
# Show ready tasks
|
|
285
|
-
mandor task ready --feature <id> [--priority <priority>] [--json]
|
|
286
|
-
|
|
287
|
-
# Show blocked tasks
|
|
288
|
-
mandor task blocked --feature <id> [--priority <priority>] [--json]
|
|
275
|
+
[--priority <priority>] [--depends-on <ids>]
|
|
289
276
|
|
|
290
277
|
# Show task details
|
|
291
278
|
mandor task detail <task-id>
|
|
292
279
|
|
|
293
280
|
# Update task
|
|
294
281
|
mandor task update <task-id> [--name <text>] [--goal <goal>] [--priority <priority>] \
|
|
295
|
-
[--
|
|
296
|
-
[--library-needs <libs>] [--status <status>] [--depends <ids>] [--depends-add <ids>] \
|
|
297
|
-
[--depends-remove <ids>] [--cancel --reason <text>] [--reopen] [--dry-run] [--force]
|
|
282
|
+
[--status <status>] [--depends-add <ids>] [--depends-remove <ids>] [--cancel --reason <text>] [--dry-run]
|
|
298
283
|
```
|
|
299
284
|
|
|
300
285
|
### Issue Commands
|
|
@@ -303,36 +288,21 @@ mandor task update <task-id> [--name <text>] [--goal <goal>] [--priority <priori
|
|
|
303
288
|
# Create an issue
|
|
304
289
|
mandor issue create <name> --project <id> --type <type> --goal <goal> \
|
|
305
290
|
--affected-files <files> --affected-tests <tests> \
|
|
306
|
-
--implementation-steps <steps>
|
|
307
|
-
[--priority <priority>] [--depends-on <ids>] [--library-needs <libs>] [-y]
|
|
308
|
-
|
|
309
|
-
# List issues in project
|
|
310
|
-
mandor issue list [--project <id>] [--type <type>] [--status <status>] [--priority <priority>] [--json] [--sort <field>] [--order <asc|desc>] [--verbose]
|
|
311
|
-
|
|
312
|
-
# Show ready issues
|
|
313
|
-
mandor issue ready [--project <id>] [--type <type>] [--priority <priority>] [--json]
|
|
314
|
-
|
|
315
|
-
# Show blocked issues
|
|
316
|
-
mandor issue blocked [--project <id>] [--type <type>] [--priority <priority>] [--json]
|
|
291
|
+
--implementation-steps <steps> [--priority <priority>] [--depends-on <ids>] [--library-needs <libs>]
|
|
317
292
|
|
|
318
293
|
# Show issue details
|
|
319
|
-
mandor issue detail <issue-id>
|
|
294
|
+
mandor issue detail <issue-id> --project <id>
|
|
320
295
|
|
|
321
296
|
# Update issue
|
|
322
|
-
mandor issue update <issue-id> [--
|
|
323
|
-
[--
|
|
324
|
-
[--affected-files <files>] [--affected-tests <tests>] [--implementation-steps <steps>] [--library-needs <libs>] \
|
|
325
|
-
[--start] [--resolve] [--wontfix] [--reopen] [--cancel] [--force] [--dry-run]
|
|
297
|
+
mandor issue update <issue-id> [--name <text>] [--goal <goal>] [--priority <priority>] \
|
|
298
|
+
[--type <type>] [--status <status>] [--start] [--resolve] [--wontfix] [--reason <text>] [--cancel --reason <text>] [--dry-run]
|
|
326
299
|
```
|
|
327
300
|
|
|
328
301
|
### AI Commands
|
|
329
302
|
|
|
330
303
|
```bash
|
|
331
|
-
#
|
|
332
|
-
mandor ai
|
|
333
|
-
|
|
334
|
-
# Generate CLAUDE.md for the project
|
|
335
|
-
mandor ai claude
|
|
304
|
+
# AI-assisted documentation generation
|
|
305
|
+
mandor ai --help
|
|
336
306
|
```
|
|
337
307
|
|
|
338
308
|
---
|
|
@@ -360,7 +330,7 @@ mandor feature create "Authentication" --project api \
|
|
|
360
330
|
--scope backend
|
|
361
331
|
|
|
362
332
|
# Create tasks with explicit dependencies
|
|
363
|
-
mandor task create "JWT Parser"
|
|
333
|
+
mandor task create auth-feature-id "JWT Parser" \
|
|
364
334
|
--goal "Validate JWT tokens..." \
|
|
365
335
|
--implementation-steps "Step 1|Step 2" \
|
|
366
336
|
--test-cases "Test invalid tokens|Test expired" \
|
|
@@ -368,21 +338,21 @@ mandor task create "JWT Parser" --feature auth-feature-id \
|
|
|
368
338
|
--library-needs "jsonwebtoken" \
|
|
369
339
|
--priority P1
|
|
370
340
|
|
|
371
|
-
mandor task create "Login Endpoint"
|
|
341
|
+
mandor task create auth-feature-id "Login Endpoint" \
|
|
372
342
|
--goal "Accept credentials and return JWT..." \
|
|
373
343
|
--depends-on jwt-parser-task-id \
|
|
374
344
|
--priority P1
|
|
375
345
|
|
|
376
346
|
# Real-time progress queries
|
|
377
|
-
mandor
|
|
378
|
-
mandor task
|
|
347
|
+
mandor track feature auth-feature-id # See all tasks and status
|
|
348
|
+
mandor track task jwt-parser-task-id # See specific task details
|
|
379
349
|
```
|
|
380
350
|
|
|
381
351
|
**Benefits:**
|
|
382
352
|
- No file sync required
|
|
383
353
|
- Dependencies auto-validated
|
|
384
354
|
- Blocking tasks auto-detected
|
|
385
|
-
-
|
|
355
|
+
- Structured JSONL storage
|
|
386
356
|
- Queryable via CLI or JSON
|
|
387
357
|
- Works in CI/CD pipelines
|
|
388
358
|
|
|
@@ -395,11 +365,11 @@ mandor status
|
|
|
395
365
|
# Check a specific project
|
|
396
366
|
mandor status --project api
|
|
397
367
|
|
|
398
|
-
# View feature dependencies
|
|
399
|
-
mandor
|
|
368
|
+
# View feature dependencies and progress
|
|
369
|
+
mandor track project api
|
|
400
370
|
|
|
401
371
|
# Create tasks with dependencies
|
|
402
|
-
mandor task create "Step 2"
|
|
372
|
+
mandor task create feature-id "Step 2" \
|
|
403
373
|
--goal "..." \
|
|
404
374
|
--implementation-steps "..." \
|
|
405
375
|
--test-cases "..." \
|
|
@@ -407,14 +377,14 @@ mandor task create "Step 2" --feature feature-id \
|
|
|
407
377
|
--library-needs "..." \
|
|
408
378
|
--depends-on task-id-1|task-id-2
|
|
409
379
|
|
|
410
|
-
# See
|
|
411
|
-
mandor
|
|
380
|
+
# See all feature tasks with status
|
|
381
|
+
mandor track feature feature-id
|
|
412
382
|
|
|
413
383
|
# Mark as done (auto-unblocks dependents)
|
|
414
384
|
mandor task update task-id --status done
|
|
415
385
|
|
|
416
|
-
#
|
|
417
|
-
mandor
|
|
386
|
+
# Verify dependents auto-transitioned to ready
|
|
387
|
+
mandor track feature feature-id
|
|
418
388
|
```
|
|
419
389
|
|
|
420
390
|
### Issue Tracking
|
|
@@ -430,16 +400,10 @@ mandor issue create "Fix memory leak in auth" \
|
|
|
430
400
|
--affected-tests "src/handlers/auth_test.go" \
|
|
431
401
|
--implementation-steps "Identify leak|Add cleanup|Test|Verify"
|
|
432
402
|
|
|
433
|
-
#
|
|
434
|
-
mandor issue
|
|
435
|
-
|
|
436
|
-
# Filter by type and priority
|
|
437
|
-
mandor issue list --project api --type bug --priority P0
|
|
438
|
-
|
|
439
|
-
# See ready issues
|
|
440
|
-
mandor issue ready --project api --type bug
|
|
403
|
+
# View issue details
|
|
404
|
+
mandor issue detail issue-id --project api
|
|
441
405
|
|
|
442
|
-
# Start working
|
|
406
|
+
# Start working on an issue
|
|
443
407
|
mandor issue update issue-id --start
|
|
444
408
|
|
|
445
409
|
# Mark as resolved
|
|
@@ -447,6 +411,9 @@ mandor issue update issue-id --resolve
|
|
|
447
411
|
|
|
448
412
|
# Mark as won't fix with reason
|
|
449
413
|
mandor issue update issue-id --wontfix --reason "Working as intended"
|
|
414
|
+
|
|
415
|
+
# See project issues with track
|
|
416
|
+
mandor track project api
|
|
450
417
|
```
|
|
451
418
|
|
|
452
419
|
### Configuration
|
|
@@ -592,16 +559,14 @@ mandor status
|
|
|
592
559
|
# Project summary
|
|
593
560
|
mandor status --project api
|
|
594
561
|
|
|
595
|
-
#
|
|
596
|
-
mandor
|
|
562
|
+
# See feature progress
|
|
563
|
+
mandor track project api
|
|
597
564
|
|
|
598
|
-
# See
|
|
599
|
-
mandor
|
|
600
|
-
mandor issue ready --project api
|
|
565
|
+
# See feature tasks
|
|
566
|
+
mandor track feature feature-id
|
|
601
567
|
|
|
602
|
-
# See
|
|
603
|
-
mandor task
|
|
604
|
-
mandor issue blocked --project api
|
|
568
|
+
# See task details
|
|
569
|
+
mandor track task task-id
|
|
605
570
|
```
|
|
606
571
|
|
|
607
572
|
---
|
|
@@ -621,7 +586,7 @@ export PATH="$HOME/.local/bin:$PATH"
|
|
|
621
586
|
Check the project ID and ensure you're in the correct workspace:
|
|
622
587
|
|
|
623
588
|
```bash
|
|
624
|
-
mandor
|
|
589
|
+
mandor status
|
|
625
590
|
```
|
|
626
591
|
|
|
627
592
|
### "Entity not found"
|
|
@@ -629,8 +594,8 @@ mandor project list
|
|
|
629
594
|
Verify the entity ID exists:
|
|
630
595
|
|
|
631
596
|
```bash
|
|
632
|
-
mandor
|
|
633
|
-
mandor
|
|
597
|
+
mandor track feature <feature-id>
|
|
598
|
+
mandor track project <project-id>
|
|
634
599
|
```
|
|
635
600
|
|
|
636
601
|
### "Cross-project dependency detected"
|
|
@@ -683,10 +648,9 @@ mandor feature update <id> --project <pid> --reopen
|
|
|
683
648
|
└── projects/
|
|
684
649
|
└── <project-id>/
|
|
685
650
|
├── project.json # Project metadata
|
|
686
|
-
├── features.jsonl # Feature
|
|
687
|
-
├── tasks.jsonl # Task
|
|
688
|
-
|
|
689
|
-
└── events.jsonl # All events
|
|
651
|
+
├── features.jsonl # Feature records
|
|
652
|
+
├── tasks.jsonl # Task records
|
|
653
|
+
└── issues.jsonl # Issue records
|
|
690
654
|
```
|
|
691
655
|
|
|
692
656
|
---
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/npm/lib/install.js
CHANGED
|
@@ -28,7 +28,7 @@ async function getLatestVersion(prerelease = false) {
|
|
|
28
28
|
const url = `https://api.github.com/repos/${REPO}/releases`;
|
|
29
29
|
|
|
30
30
|
return new Promise((resolve, reject) => {
|
|
31
|
-
https.get(url, { headers: { 'User-Agent': '
|
|
31
|
+
https.get(url, { headers: { 'User-Agent': 'binaries/mandor' } }, (res) => {
|
|
32
32
|
let data = '';
|
|
33
33
|
res.on('data', chunk => data += chunk);
|
|
34
34
|
res.on('end', () => {
|
package/package.json
CHANGED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{"layer":"project","type":"created","id":"test-proj","by":"BUDISANTOSO","ts":"2026-02-02T10:28:51.466422Z"}
|
|
2
|
-
{"layer":"feature","type":"created","id":"test-proj-feature-qgFb","by":"BUDISANTOSO","ts":"2026-02-02T10:28:59.0611Z"}
|
|
3
|
-
{"layer":"task","type":"created","id":"test-proj-feature-qgFb-task-9fse","by":"BUDISANTOSO","ts":"2026-02-02T10:29:14.29734Z"}
|
|
4
|
-
{"layer":"task","type":"ready","id":"test-proj-feature-qgFb-task-9fse","by":"system","ts":"2026-02-02T10:29:14.29734Z"}
|
|
5
|
-
{"layer":"task","type":"created","id":"test-proj-feature-qgFb-task-u4Sb","by":"BUDISANTOSO","ts":"2026-02-02T10:29:16.665464Z"}
|
|
6
|
-
{"layer":"task","type":"ready","id":"test-proj-feature-qgFb-task-u4Sb","by":"system","ts":"2026-02-02T10:29:16.665464Z"}
|
|
7
|
-
{"layer":"task","type":"created","id":"test-proj-feature-qgFb-task-CPT4","by":"BUDISANTOSO","ts":"2026-02-02T10:29:19.350275Z"}
|
|
8
|
-
{"layer":"task","type":"ready","id":"test-proj-feature-qgFb-task-CPT4","by":"system","ts":"2026-02-02T10:29:19.350275Z"}
|
|
9
|
-
{"layer":"task","type":"updated","id":"test-proj-feature-qgFb-task-9fse","by":"BUDISANTOSO","ts":"2026-02-02T10:29:29.806828Z","changes":["status"]}
|
|
10
|
-
{"layer":"task","type":"updated","id":"test-proj-feature-qgFb-task-u4Sb","by":"BUDISANTOSO","ts":"2026-02-02T10:29:33.953761Z","changes":["status"]}
|
|
11
|
-
{"layer":"task","type":"updated","id":"test-proj-feature-qgFb-task-CPT4","by":"BUDISANTOSO","ts":"2026-02-02T10:29:38.227724Z","changes":["status"]}
|
|
12
|
-
{"layer":"task","type":"updated","id":"test-proj-feature-qgFb-task-CPT4","by":"BUDISANTOSO","ts":"2026-02-02T10:29:38.249316Z","changes":["status"]}
|
|
13
|
-
{"layer":"issue","type":"created","id":"test-proj-issue-Kj2y","by":"BUDISANTOSO","ts":"2026-02-02T10:29:50.229194Z"}
|
|
14
|
-
{"layer":"issue","type":"ready","id":"test-proj-issue-Kj2y","by":"system","ts":"2026-02-02T10:29:50.229194Z"}
|
|
15
|
-
{"layer":"issue","type":"created","id":"test-proj-issue-NDVP","by":"BUDISANTOSO","ts":"2026-02-02T10:29:52.962947Z"}
|
|
16
|
-
{"layer":"issue","type":"ready","id":"test-proj-issue-NDVP","by":"system","ts":"2026-02-02T10:29:52.962947Z"}
|
|
17
|
-
{"layer":"issue","type":"created","id":"test-proj-issue-39iV","by":"BUDISANTOSO","ts":"2026-02-02T10:29:56.23988Z"}
|
|
18
|
-
{"layer":"issue","type":"ready","id":"test-proj-issue-39iV","by":"system","ts":"2026-02-02T10:29:56.23988Z"}
|
|
19
|
-
{"layer":"issue","type":"updated","id":"test-proj-issue-Kj2y","by":"BUDISANTOSO","ts":"2026-02-02T10:30:01.070387Z","changes":["status"]}
|
|
20
|
-
{"layer":"issue","type":"updated","id":"test-proj-issue-NDVP","by":"BUDISANTOSO","ts":"2026-02-02T10:30:01.082771Z","changes":["status"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"test-proj-feature-qgFb","project_id":"test-proj","name":"Test Feature","goal":"A test feature for testing tasks and issues in development environment with proper workflow","priority":"P3","status":"draft","created_at":"2026-02-02T10:28:59.0611Z","updated_at":"2026-02-02T10:28:59.0611Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
{"id":"test-proj-issue-39iV","project_id":"test-proj","name":"Issue Security 1","goal":"Security issue in test feature that needs immediate attention and comprehensive security testing","issue_type":"security","priority":"P1","status":"ready","affected_files":["file3.go"],"affected_tests":["test3.go"],"implementation_steps":["Security step 1"],"created_at":"2026-02-02T10:29:56.23988Z","last_updated_at":"2026-02-02T10:29:56.23988Z","created_by":"BUDISANTOSO","last_updated_by":"BUDISANTOSO"}
|
|
2
|
-
{"id":"test-proj-issue-Kj2y","project_id":"test-proj","name":"Issue Bug 1","goal":"Bug in the test feature that needs fixing with proper analysis and solution steps for comprehensive testing","issue_type":"bug","priority":"P0","status":"in_progress","affected_files":["file1.go"],"affected_tests":["test1.go"],"implementation_steps":["Fix step 1","Fix step 2"],"created_at":"2026-02-02T10:29:50.229194Z","last_updated_at":"2026-02-02T10:30:01.070387Z","created_by":"BUDISANTOSO","last_updated_by":"BUDISANTOSO"}
|
|
3
|
-
{"id":"test-proj-issue-NDVP","project_id":"test-proj","name":"Issue Improvement 1","goal":"Improve performance of the test feature with optimization strategies and benchmarking approaches for comprehensive testing","issue_type":"improvement","priority":"P2","status":"resolved","affected_files":["file2.go"],"affected_tests":["test2.go"],"implementation_steps":["Optimize step 1","Optimize step 2"],"created_at":"2026-02-02T10:29:52.962947Z","last_updated_at":"2026-02-02T10:30:01.082771Z","created_by":"BUDISANTOSO","last_updated_by":"BUDISANTOSO"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "test-proj",
|
|
3
|
-
"name": "Test Project",
|
|
4
|
-
"goal": "A test project for CLI testing",
|
|
5
|
-
"status": "initial",
|
|
6
|
-
"strict": false,
|
|
7
|
-
"created_at": "2026-02-02T10:28:51.466422Z",
|
|
8
|
-
"updated_at": "2026-02-02T10:28:51.466422Z",
|
|
9
|
-
"created_by": "BUDISANTOSO",
|
|
10
|
-
"updated_by": "BUDISANTOSO"
|
|
11
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": "mandor.v1",
|
|
3
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4
|
-
"rules": {
|
|
5
|
-
"task": {
|
|
6
|
-
"dependency": "same_project_only",
|
|
7
|
-
"cycle": "disallowed"
|
|
8
|
-
},
|
|
9
|
-
"feature": {
|
|
10
|
-
"dependency": "cross_project_allowed",
|
|
11
|
-
"cycle": "disallowed"
|
|
12
|
-
},
|
|
13
|
-
"issue": {
|
|
14
|
-
"dependency": "same_project_only",
|
|
15
|
-
"cycle": "disallowed"
|
|
16
|
-
},
|
|
17
|
-
"priority": {
|
|
18
|
-
"levels": [
|
|
19
|
-
"P0",
|
|
20
|
-
"P1",
|
|
21
|
-
"P2",
|
|
22
|
-
"P3",
|
|
23
|
-
"P4",
|
|
24
|
-
"P5"
|
|
25
|
-
],
|
|
26
|
-
"default": "P3"
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
{"id":"test-proj-feature-qgFb-task-9fse","feature_id":"test-proj-feature-qgFb","project_id":"test-proj","name":"Task 1","goal":"This is a comprehensive test task for testing the task summary command implementation in the CLI. The task involves comprehensive testing of all the features that were recently implemented. It should cover multiple scenarios including ready tasks, in-progress tasks, blocked tasks, pending tasks, and completed tasks. The implementation should handle all edge cases and error scenarios properly.\n\nThis task includes detailed testing of the markdown table output format to ensure proper alignment and formatting of all columns. The testing should verify that task IDs, names, priorities, and statuses are displayed correctly. It should also test filtering by priority levels and ensure that the output is properly sorted by creation date within each status group.\n\nThe task requires implementation of comprehensive error handling for invalid feature IDs and proper workspace initialization checks. The testing should cover scenarios where features don't exist, tasks don't exist, and various filter combinations. All error messages should be clear and helpful to the user.\n\nThe implementation should also include documentation and examples of how to use the new commands. This includes examples for each command type and explanation of the output format. The documentation should be clear and easy to follow for new users.","priority":"P3","status":"in_progress","implementation_steps":["Step 1","Step 2"],"test_cases":["Test 1","Test 2"],"derivable_files":["file1.go","file2.go"],"library_needs":["none"],"created_at":"2026-02-02T10:29:14.29734Z","updated_at":"2026-02-02T10:29:29.806828Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
|
|
2
|
-
{"id":"test-proj-feature-qgFb-task-u4Sb","feature_id":"test-proj-feature-qgFb","project_id":"test-proj","name":"Task 2","goal":"This is a comprehensive test task for testing the task summary command implementation in the CLI. The task involves comprehensive testing of all the features that were recently implemented. It should cover multiple scenarios including ready tasks, in-progress tasks, blocked tasks, pending tasks, and completed tasks. The implementation should handle all edge cases and error scenarios properly.\n\nThis task includes detailed testing of the markdown table output format to ensure proper alignment and formatting of all columns. The testing should verify that task IDs, names, priorities, and statuses are displayed correctly. It should also test filtering by priority levels and ensure that the output is properly sorted by creation date within each status group.\n\nThe task requires implementation of comprehensive error handling for invalid feature IDs and proper workspace initialization checks. The testing should cover scenarios where features don't exist, tasks don't exist, and various filter combinations. All error messages should be clear and helpful to the user.\n\nThe implementation should also include documentation and examples of how to use the new commands. This includes examples for each command type and explanation of the output format. The documentation should be clear and easy to follow for new users.","priority":"P0","status":"in_progress","implementation_steps":["Step 1","Step 2"],"test_cases":["Test 1","Test 2"],"derivable_files":["file1.go","file2.go"],"library_needs":["none"],"created_at":"2026-02-02T10:29:16.665464Z","updated_at":"2026-02-02T10:29:33.953761Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
|
|
3
|
-
{"id":"test-proj-feature-qgFb-task-CPT4","feature_id":"test-proj-feature-qgFb","project_id":"test-proj","name":"Task 3","goal":"This is a comprehensive test task for testing the task summary command implementation in the CLI. The task involves comprehensive testing of all the features that were recently implemented. It should cover multiple scenarios including ready tasks, in-progress tasks, blocked tasks, pending tasks, and completed tasks. The implementation should handle all edge cases and error scenarios properly.\n\nThis task includes detailed testing of the markdown table output format to ensure proper alignment and formatting of all columns. The testing should verify that task IDs, names, priorities, and statuses are displayed correctly. It should also test filtering by priority levels and ensure that the output is properly sorted by creation date within each status group.\n\nThe task requires implementation of comprehensive error handling for invalid feature IDs and proper workspace initialization checks. The testing should cover scenarios where features don't exist, tasks don't exist, and various filter combinations. All error messages should be clear and helpful to the user.\n\nThe implementation should also include documentation and examples of how to use the new commands. This includes examples for each command type and explanation of the output format. The documentation should be clear and easy to follow for new users.","priority":"P2","status":"done","implementation_steps":["Step 1","Step 2"],"test_cases":["Test 1","Test 2"],"derivable_files":["file1.go","file2.go"],"library_needs":["none"],"created_at":"2026-02-02T10:29:19.350275Z","updated_at":"2026-02-02T10:29:38.249316Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
|
package/.mandor/workspace.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "bPTh",
|
|
3
|
-
"name": "Mandor",
|
|
4
|
-
"version": "mandor.v1",
|
|
5
|
-
"schema_version": "mandor.v1",
|
|
6
|
-
"created_at": "2026-02-02T10:28:47.490328Z",
|
|
7
|
-
"last_updated_at": "2026-02-02T10:28:47.490328Z",
|
|
8
|
-
"created_by": "BUDISANTOSO",
|
|
9
|
-
"config": {
|
|
10
|
-
"default_priority": "P3",
|
|
11
|
-
"strict_mode": false
|
|
12
|
-
}
|
|
13
|
-
}
|
package/bin/mandor
DELETED
|
Binary file
|
package/mandor-cli
DELETED
|
Binary file
|
package/mandor-test
DELETED
|
Binary file
|