sqlew 3.1.2 → 3.2.3
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/CHANGELOG.md +118 -0
- package/README.md +58 -3
- package/assets/schema.sql +28 -1
- package/dist/database.d.ts +65 -0
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +190 -0
- package/dist/database.js.map +1 -1
- package/dist/index.js +47 -1005
- package/dist/index.js.map +1 -1
- package/dist/migrations/add-decision-context.d.ts +28 -0
- package/dist/migrations/add-decision-context.d.ts.map +1 -0
- package/dist/migrations/add-decision-context.js +125 -0
- package/dist/migrations/add-decision-context.js.map +1 -0
- package/dist/migrations/add-task-dependencies.d.ts +26 -0
- package/dist/migrations/add-task-dependencies.d.ts.map +1 -0
- package/dist/migrations/add-task-dependencies.js +94 -0
- package/dist/migrations/add-task-dependencies.js.map +1 -0
- package/dist/migrations/index.d.ts +3 -1
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +32 -2
- package/dist/migrations/index.js.map +1 -1
- package/dist/schema.js +2 -2
- package/dist/schema.js.map +1 -1
- package/dist/tests/migrations/test-v3.2-migration.d.ts +6 -0
- package/dist/tests/migrations/test-v3.2-migration.d.ts.map +1 -0
- package/dist/tests/migrations/test-v3.2-migration.js +191 -0
- package/dist/tests/migrations/test-v3.2-migration.js.map +1 -0
- package/dist/tests/tasks.dependencies.test.d.ts +7 -0
- package/dist/tests/tasks.dependencies.test.d.ts.map +1 -0
- package/dist/tests/tasks.dependencies.test.js +613 -0
- package/dist/tests/tasks.dependencies.test.js.map +1 -0
- package/dist/tools/config.d.ts +10 -0
- package/dist/tools/config.d.ts.map +1 -1
- package/dist/tools/config.js +105 -0
- package/dist/tools/config.js.map +1 -1
- package/dist/tools/constraints.d.ts +10 -0
- package/dist/tools/constraints.d.ts.map +1 -1
- package/dist/tools/constraints.js +167 -0
- package/dist/tools/constraints.js.map +1 -1
- package/dist/tools/context.d.ts +29 -2
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +442 -106
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/files.d.ts +8 -0
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +125 -0
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/messaging.d.ts +8 -0
- package/dist/tools/messaging.d.ts.map +1 -1
- package/dist/tools/messaging.js +134 -0
- package/dist/tools/messaging.js.map +1 -1
- package/dist/tools/tasks.d.ts +32 -0
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +651 -8
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/utils.d.ts +10 -0
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +179 -21
- package/dist/tools/utils.js.map +1 -1
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/AI_AGENT_GUIDE.md +25 -3
- package/docs/DECISION_CONTEXT.md +474 -0
- package/docs/HELP_PREVIEW_COMPARISON.md +259 -0
- package/docs/TASK_ACTIONS.md +311 -10
- package/docs/TASK_DEPENDENCIES.md +748 -0
- package/docs/TASK_LINKING.md +188 -8
- package/docs/TOOL_REFERENCE.md +158 -1
- package/docs/WORKFLOWS.md +25 -3
- package/package.json +4 -2
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
# Task Tool Help Documentation - Before/After Comparison
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
This document shows the changes made to the task tool `help` action to expose the automatic file watching feature to AI agents.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## BEFORE (Original Help Output)
|
|
9
|
+
|
|
10
|
+
### Header Section
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"tool": "task",
|
|
14
|
+
"description": "Kanban Task Watcher for managing tasks with AI-optimized lifecycle states",
|
|
15
|
+
"note": "💡 TIP: Use action: \"example\" to see comprehensive usage scenarios and real-world examples for all task actions."
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Missing:** No mention of automatic file watching feature
|
|
20
|
+
|
|
21
|
+
### Link Action (Original)
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"link": {
|
|
25
|
+
"description": "Link task to decision/constraint/file",
|
|
26
|
+
"required_params": ["task_id", "link_type", "target_id"],
|
|
27
|
+
"optional_params": ["link_relation"],
|
|
28
|
+
"link_types": ["decision", "constraint", "file"],
|
|
29
|
+
"example": {
|
|
30
|
+
"action": "link",
|
|
31
|
+
"task_id": 5,
|
|
32
|
+
"link_type": "decision",
|
|
33
|
+
"target_id": "auth_method",
|
|
34
|
+
"link_relation": "implements"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Missing:** No indication that file linking activates watcher
|
|
41
|
+
|
|
42
|
+
### Documentation Section (Original)
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"priority_levels": {
|
|
46
|
+
"1": "low",
|
|
47
|
+
"2": "medium (default)",
|
|
48
|
+
"3": "high",
|
|
49
|
+
"4": "critical"
|
|
50
|
+
},
|
|
51
|
+
"documentation": {
|
|
52
|
+
"task_overview": "docs/TASK_OVERVIEW.md - Lifecycle, status transitions, auto-stale detection (363 lines, ~10k tokens)",
|
|
53
|
+
"task_actions": "docs/TASK_ACTIONS.md - All action references with examples (854 lines, ~21k tokens)",
|
|
54
|
+
...
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Missing:** No auto_file_tracking section explaining the feature
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## AFTER (Updated Help Output)
|
|
64
|
+
|
|
65
|
+
### Header Section ✅ ENHANCED
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"tool": "task",
|
|
69
|
+
"description": "Kanban Task Watcher for managing tasks with AI-optimized lifecycle states",
|
|
70
|
+
"note": "💡 TIP: Use action: \"example\" to see comprehensive usage scenarios and real-world examples for all task actions.",
|
|
71
|
+
"important": "🚨 AUTOMATIC FILE WATCHING: Linking files to tasks activates automatic file change monitoring and acceptance criteria validation. This provides 97% token reduction vs manual tracking. See auto_file_tracking section below."
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**✨ NEW:** Prominent warning about automatic file watching feature
|
|
76
|
+
**🎯 Impact:** AI agents immediately see this critical feature exists
|
|
77
|
+
|
|
78
|
+
### Link Action ✅ ENHANCED
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"link": {
|
|
82
|
+
"description": "Link task to decision/constraint/file",
|
|
83
|
+
"required_params": ["task_id", "link_type", "target_id"],
|
|
84
|
+
"optional_params": ["link_relation"],
|
|
85
|
+
"link_types": ["decision", "constraint", "file"],
|
|
86
|
+
"file_linking_behavior": "⚠️ IMPORTANT: When link_type=\"file\", this action ACTIVATES AUTOMATIC FILE WATCHING. The file watcher monitors linked files for changes and validates acceptance criteria when files are saved. This provides 97% token reduction compared to manual file change tracking.",
|
|
87
|
+
"example": {
|
|
88
|
+
"action": "link",
|
|
89
|
+
"task_id": 5,
|
|
90
|
+
"link_type": "decision",
|
|
91
|
+
"target_id": "auth_method",
|
|
92
|
+
"link_relation": "implements"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**✨ NEW:** `file_linking_behavior` field with prominent warning
|
|
99
|
+
**🎯 Impact:** AI agents understand that file linking is not passive documentation
|
|
100
|
+
|
|
101
|
+
### Documentation Section ✅ ENHANCED
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"priority_levels": {
|
|
105
|
+
"1": "low",
|
|
106
|
+
"2": "medium (default)",
|
|
107
|
+
"3": "high",
|
|
108
|
+
"4": "critical"
|
|
109
|
+
},
|
|
110
|
+
"auto_file_tracking": {
|
|
111
|
+
"description": "Automatic file watching and acceptance criteria validation (97% token reduction)",
|
|
112
|
+
"how_it_works": [
|
|
113
|
+
"1. Link files to tasks using the link action with link_type=\"file\"",
|
|
114
|
+
"2. File watcher automatically activates and monitors linked files",
|
|
115
|
+
"3. When files are saved, watcher detects changes",
|
|
116
|
+
"4. If task has acceptance_criteria, watcher validates criteria against changes",
|
|
117
|
+
"5. Results appear in terminal output with pass/fail status"
|
|
118
|
+
],
|
|
119
|
+
"requirements": [
|
|
120
|
+
"Task must have files linked via link action",
|
|
121
|
+
"File paths must be relative to project root (e.g., \"src/api/auth.ts\")",
|
|
122
|
+
"Watcher only monitors files explicitly linked to tasks"
|
|
123
|
+
],
|
|
124
|
+
"token_efficiency": "File watching happens in background. No MCP tokens consumed until you query status. Manual file tracking would cost ~500-1000 tokens per file check.",
|
|
125
|
+
"documentation_reference": "docs/AUTO_FILE_TRACKING.md - Complete guide with examples"
|
|
126
|
+
},
|
|
127
|
+
"documentation": {
|
|
128
|
+
"task_overview": "docs/TASK_OVERVIEW.md - Lifecycle, status transitions, auto-stale detection (363 lines, ~10k tokens)",
|
|
129
|
+
"task_actions": "docs/TASK_ACTIONS.md - All action references with examples (854 lines, ~21k tokens)",
|
|
130
|
+
...
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**✨ NEW:** Complete `auto_file_tracking` section with:
|
|
136
|
+
- Clear description of the feature and token benefits
|
|
137
|
+
- 5-step workflow explaining how it works
|
|
138
|
+
- Requirements for activation
|
|
139
|
+
- Token efficiency explanation
|
|
140
|
+
- Reference to detailed documentation
|
|
141
|
+
|
|
142
|
+
**🎯 Impact:** AI agents have complete understanding without reading external docs
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Example Action Changes
|
|
147
|
+
|
|
148
|
+
### BEFORE (Original Example)
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"scenario": "Link task to file",
|
|
152
|
+
"request": "{ action: \"link\", task_id: 5, link_type: \"file\", target_id: \"src/api/auth.ts\", link_relation: \"modifies\" }",
|
|
153
|
+
"explanation": "Indicate which files the task will modify"
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**❌ Problem:** Sounds passive - "Indicate" suggests documentation only
|
|
158
|
+
|
|
159
|
+
### AFTER (Updated Example) ✅
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"scenario": "Link task to file",
|
|
163
|
+
"request": "{ action: \"link\", task_id: 5, link_type: \"file\", target_id: \"src/api/auth.ts\", link_relation: \"modifies\" }",
|
|
164
|
+
"explanation": "Activates automatic file watching for the task (97% token reduction vs manual tracking)",
|
|
165
|
+
"behavior": "File watcher monitors linked files and validates acceptance criteria when files change"
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**✨ NEW:**
|
|
170
|
+
- Active voice: "Activates" (not "Indicate")
|
|
171
|
+
- Token reduction benefit highlighted
|
|
172
|
+
- Explicit behavior description
|
|
173
|
+
|
|
174
|
+
**🎯 Impact:** AI agents understand this is an active feature, not passive documentation
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Key Improvements Summary
|
|
179
|
+
|
|
180
|
+
### 1. Discoverability ✅
|
|
181
|
+
- **Before:** Feature completely hidden from MCP tool interface
|
|
182
|
+
- **After:** Prominently displayed in 3 locations (header, link action, dedicated section)
|
|
183
|
+
|
|
184
|
+
### 2. Understanding ✅
|
|
185
|
+
- **Before:** No explanation of how/why to use file linking
|
|
186
|
+
- **After:** 5-step workflow, requirements, and token efficiency clearly documented
|
|
187
|
+
|
|
188
|
+
### 3. Motivation ✅
|
|
189
|
+
- **Before:** No indication of benefits
|
|
190
|
+
- **After:** "97% token reduction" mentioned 3 times to motivate usage
|
|
191
|
+
|
|
192
|
+
### 4. Behavior Clarity ✅
|
|
193
|
+
- **Before:** File linking sounded like passive documentation
|
|
194
|
+
- **After:** Clearly stated as active feature that "activates" watching
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Token Impact Analysis
|
|
199
|
+
|
|
200
|
+
### Help Documentation Size
|
|
201
|
+
- **Before:** ~1,200 tokens
|
|
202
|
+
- **After:** ~1,400 tokens (+200 tokens)
|
|
203
|
+
- **Increase:** 16.7%
|
|
204
|
+
|
|
205
|
+
### Value Gained
|
|
206
|
+
- **Feature discoverability:** Infinite value (feature was invisible before)
|
|
207
|
+
- **Token savings per usage:** 500-1,000 tokens per file check avoided
|
|
208
|
+
- **ROI:** First use of file watcher saves 3-5x the documentation cost
|
|
209
|
+
|
|
210
|
+
### Net Token Efficiency
|
|
211
|
+
If AI agents use file watching just **once**, they save more tokens than the documentation costs. The 200-token investment pays for itself immediately.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Files Modified
|
|
216
|
+
|
|
217
|
+
1. **src/tools/tasks.ts** (lines 1184-1371)
|
|
218
|
+
- Added `important` field to header (line 1189)
|
|
219
|
+
- Added `file_linking_behavior` to link action (line 1258)
|
|
220
|
+
- Added `auto_file_tracking` section (lines 1355-1371)
|
|
221
|
+
|
|
222
|
+
2. **src/index.ts** (lines 1370-1375)
|
|
223
|
+
- Updated file linking example explanation
|
|
224
|
+
- Added behavior description
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Verification Checklist
|
|
229
|
+
|
|
230
|
+
- [x] Header prominently mentions automatic file watching
|
|
231
|
+
- [x] Link action clearly states watcher activation
|
|
232
|
+
- [x] Complete auto_file_tracking section with workflow
|
|
233
|
+
- [x] Example action uses active voice ("Activates")
|
|
234
|
+
- [x] Token reduction benefit (97%) mentioned multiple times
|
|
235
|
+
- [x] Documentation reference provided for deep dive
|
|
236
|
+
- [x] All changes maintain existing help structure
|
|
237
|
+
- [x] TypeScript compiles successfully (to be verified)
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Expected AI Agent Behavior Change
|
|
242
|
+
|
|
243
|
+
### Before These Changes
|
|
244
|
+
```
|
|
245
|
+
AI Agent: "I'll link the files to document which files this task affects"
|
|
246
|
+
Result: Feature activation happens, but agent doesn't realize it or leverage it
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### After These Changes
|
|
250
|
+
```
|
|
251
|
+
AI Agent: "I'll link these files to activate automatic file watching (97% token reduction).
|
|
252
|
+
The watcher will monitor changes and validate acceptance criteria automatically."
|
|
253
|
+
Result: Feature activation is intentional and understood, agent can explain benefits to user
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
**Status:** Documentation updates complete ✅
|
|
259
|
+
**Next Step:** Implement watcher status query action (task #93-95)
|
package/docs/TASK_ACTIONS.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Task Actions Reference
|
|
2
2
|
|
|
3
|
-
**Version:** 3.
|
|
4
|
-
**Last Updated:** 2025-10-
|
|
3
|
+
**Version:** 3.2.0
|
|
4
|
+
**Last Updated:** 2025-10-18
|
|
5
5
|
|
|
6
6
|
## Table of Contents
|
|
7
7
|
|
|
@@ -14,14 +14,19 @@
|
|
|
14
14
|
7. [Action: link](#action-link)
|
|
15
15
|
8. [Action: archive](#action-archive)
|
|
16
16
|
9. [Action: batch_create](#action-batch_create)
|
|
17
|
-
10. [Action:
|
|
18
|
-
11. [
|
|
19
|
-
12. [
|
|
20
|
-
13. [
|
|
17
|
+
10. [Action: add_dependency](#action-add_dependency) (NEW in 3.2.0)
|
|
18
|
+
11. [Action: remove_dependency](#action-remove_dependency) (NEW in 3.2.0)
|
|
19
|
+
12. [Action: get_dependencies](#action-get_dependencies) (NEW in 3.2.0)
|
|
20
|
+
13. [Action: help](#action-help)
|
|
21
|
+
14. [Best Practices](#best-practices)
|
|
22
|
+
15. [Common Errors](#common-errors)
|
|
23
|
+
16. [Related Documentation](#related-documentation)
|
|
21
24
|
|
|
22
25
|
## Overview
|
|
23
26
|
|
|
24
|
-
The `task` MCP tool provides
|
|
27
|
+
The `task` MCP tool provides 12 actions for managing tasks in the Kanban Task Watcher system. All actions require the `action` parameter.
|
|
28
|
+
|
|
29
|
+
**NEW in v3.2.0:** Task Dependencies - Manage blocking relationships between tasks with circular dependency detection.
|
|
25
30
|
|
|
26
31
|
**Action-Based API Pattern:**
|
|
27
32
|
```javascript
|
|
@@ -179,8 +184,12 @@ Get single task with full details.
|
|
|
179
184
|
- `action`: "get"
|
|
180
185
|
- `task_id`: Task ID (number)
|
|
181
186
|
|
|
182
|
-
|
|
187
|
+
**Optional (NEW in 3.2.0):**
|
|
188
|
+
- `include_dependencies`: Include dependency arrays (boolean) - default: false
|
|
189
|
+
|
|
190
|
+
### Examples
|
|
183
191
|
|
|
192
|
+
**Basic Get:**
|
|
184
193
|
```javascript
|
|
185
194
|
{
|
|
186
195
|
action: "get",
|
|
@@ -188,8 +197,18 @@ Get single task with full details.
|
|
|
188
197
|
}
|
|
189
198
|
```
|
|
190
199
|
|
|
200
|
+
**Get with Dependencies:**
|
|
201
|
+
```javascript
|
|
202
|
+
{
|
|
203
|
+
action: "get",
|
|
204
|
+
task_id: 1,
|
|
205
|
+
include_dependencies: true
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
191
209
|
### Response
|
|
192
210
|
|
|
211
|
+
**Without Dependencies:**
|
|
193
212
|
```javascript
|
|
194
213
|
{
|
|
195
214
|
task_id: 1,
|
|
@@ -208,6 +227,23 @@ Get single task with full details.
|
|
|
208
227
|
}
|
|
209
228
|
```
|
|
210
229
|
|
|
230
|
+
**With Dependencies (NEW in 3.2.0):**
|
|
231
|
+
```javascript
|
|
232
|
+
{
|
|
233
|
+
task_id: 1,
|
|
234
|
+
title: "Implement JWT authentication",
|
|
235
|
+
description: "Add JWT-based authentication with refresh tokens",
|
|
236
|
+
// ... other fields ...
|
|
237
|
+
dependencies: {
|
|
238
|
+
blockers: [3, 5], // Tasks blocking this task
|
|
239
|
+
blocking: [2, 7] // Tasks this task blocks
|
|
240
|
+
},
|
|
241
|
+
decision_links: ["auth_method", "jwt_secret"],
|
|
242
|
+
constraint_links: [5],
|
|
243
|
+
file_links: ["/src/auth/jwt.ts", "/src/auth/middleware.ts"]
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
211
247
|
### Token Efficiency
|
|
212
248
|
|
|
213
249
|
- **~332 bytes/task** (includes description and links)
|
|
@@ -229,6 +265,7 @@ List tasks with filtering (metadata only, no descriptions).
|
|
|
229
265
|
- `tags`: Filter by tags (string[])
|
|
230
266
|
- `layer`: Filter by layer (string)
|
|
231
267
|
- `limit`: Maximum results (number) - default: 100
|
|
268
|
+
- `include_dependency_counts`: Include dependency counts (boolean) - default: false (NEW in 3.2.0)
|
|
232
269
|
|
|
233
270
|
### Examples
|
|
234
271
|
|
|
@@ -275,8 +312,18 @@ List tasks with filtering (metadata only, no descriptions).
|
|
|
275
312
|
}
|
|
276
313
|
```
|
|
277
314
|
|
|
315
|
+
**With Dependency Counts (NEW in 3.2.0):**
|
|
316
|
+
```javascript
|
|
317
|
+
{
|
|
318
|
+
action: "list",
|
|
319
|
+
status: "in_progress",
|
|
320
|
+
include_dependency_counts: true
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
278
324
|
### Response
|
|
279
325
|
|
|
326
|
+
**Without Dependency Counts:**
|
|
280
327
|
```javascript
|
|
281
328
|
{
|
|
282
329
|
tasks: [
|
|
@@ -308,6 +355,42 @@ List tasks with filtering (metadata only, no descriptions).
|
|
|
308
355
|
}
|
|
309
356
|
```
|
|
310
357
|
|
|
358
|
+
**With Dependency Counts (NEW in 3.2.0):**
|
|
359
|
+
```javascript
|
|
360
|
+
{
|
|
361
|
+
tasks: [
|
|
362
|
+
{
|
|
363
|
+
task_id: 1,
|
|
364
|
+
title: "Implement JWT authentication",
|
|
365
|
+
status_name: "in_progress",
|
|
366
|
+
priority_name: "high",
|
|
367
|
+
assignee: "auth-agent",
|
|
368
|
+
layer_name: "business",
|
|
369
|
+
tags: "security,authentication",
|
|
370
|
+
created_ts: 1697545200,
|
|
371
|
+
updated_ts: 1697545800,
|
|
372
|
+
blocked_by_count: 0, // Nothing blocks this task
|
|
373
|
+
blocking_count: 2 // This blocks 2 tasks
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
task_id: 2,
|
|
377
|
+
title: "Setup OAuth2 provider",
|
|
378
|
+
status_name: "in_progress",
|
|
379
|
+
priority_name: "high",
|
|
380
|
+
assignee: "auth-agent",
|
|
381
|
+
layer_name: "business",
|
|
382
|
+
tags: "security,oauth2",
|
|
383
|
+
created_ts: 1697545300,
|
|
384
|
+
updated_ts: 1697545900,
|
|
385
|
+
blocked_by_count: 1, // 1 task blocks this
|
|
386
|
+
blocking_count: 0 // This doesn't block anything
|
|
387
|
+
}
|
|
388
|
+
],
|
|
389
|
+
count: 2,
|
|
390
|
+
stale_tasks_transitioned: 0
|
|
391
|
+
}
|
|
392
|
+
```
|
|
393
|
+
|
|
311
394
|
### Token Efficiency
|
|
312
395
|
|
|
313
396
|
- **~100 bytes/task** (metadata only)
|
|
@@ -623,6 +706,223 @@ Create multiple tasks atomically or best-effort.
|
|
|
623
706
|
- **Best-effort mode (false):** Partial success allowed (recommended for AI)
|
|
624
707
|
- Each task follows same schema as `create` action
|
|
625
708
|
|
|
709
|
+
## Action: add_dependency
|
|
710
|
+
|
|
711
|
+
Add a blocking relationship between two tasks (NEW in 3.2.0).
|
|
712
|
+
|
|
713
|
+
### Parameters
|
|
714
|
+
|
|
715
|
+
**Required:**
|
|
716
|
+
- `action`: "add_dependency"
|
|
717
|
+
- `blocker_task_id`: Task ID that blocks (number)
|
|
718
|
+
- `blocked_task_id`: Task ID that is blocked (number)
|
|
719
|
+
|
|
720
|
+
### Validations
|
|
721
|
+
|
|
722
|
+
- No self-dependencies (task cannot block itself)
|
|
723
|
+
- No circular dependencies (direct or transitive)
|
|
724
|
+
- Both tasks must exist
|
|
725
|
+
- Neither task can be archived
|
|
726
|
+
|
|
727
|
+
### Examples
|
|
728
|
+
|
|
729
|
+
**Basic Dependency:**
|
|
730
|
+
```javascript
|
|
731
|
+
{
|
|
732
|
+
action: "add_dependency",
|
|
733
|
+
blocker_task_id: 1,
|
|
734
|
+
blocked_task_id: 2
|
|
735
|
+
}
|
|
736
|
+
```
|
|
737
|
+
|
|
738
|
+
**Sequential Workflow:**
|
|
739
|
+
```javascript
|
|
740
|
+
// Task #1: Implement auth (must complete first)
|
|
741
|
+
// Task #2: Add profile page (depends on auth)
|
|
742
|
+
|
|
743
|
+
{
|
|
744
|
+
action: "add_dependency",
|
|
745
|
+
blocker_task_id: 1,
|
|
746
|
+
blocked_task_id: 2
|
|
747
|
+
}
|
|
748
|
+
```
|
|
749
|
+
|
|
750
|
+
### Response
|
|
751
|
+
|
|
752
|
+
```javascript
|
|
753
|
+
{
|
|
754
|
+
success: true,
|
|
755
|
+
message: "Dependency added: Task #1 blocks Task #2"
|
|
756
|
+
}
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
### Error Examples
|
|
760
|
+
|
|
761
|
+
**Self-Dependency:**
|
|
762
|
+
```javascript
|
|
763
|
+
{
|
|
764
|
+
action: "add_dependency",
|
|
765
|
+
blocker_task_id: 1,
|
|
766
|
+
blocked_task_id: 1
|
|
767
|
+
}
|
|
768
|
+
// Error: "Self-dependency not allowed"
|
|
769
|
+
```
|
|
770
|
+
|
|
771
|
+
**Circular Dependency:**
|
|
772
|
+
```javascript
|
|
773
|
+
// Existing: Task #1 blocks Task #2
|
|
774
|
+
|
|
775
|
+
{
|
|
776
|
+
action: "add_dependency",
|
|
777
|
+
blocker_task_id: 2,
|
|
778
|
+
blocked_task_id: 1
|
|
779
|
+
}
|
|
780
|
+
// Error: "Circular dependency detected: Task #2 already blocks Task #1"
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
**Archived Task:**
|
|
784
|
+
```javascript
|
|
785
|
+
{
|
|
786
|
+
action: "add_dependency",
|
|
787
|
+
blocker_task_id: 10, // archived
|
|
788
|
+
blocked_task_id: 2
|
|
789
|
+
}
|
|
790
|
+
// Error: "Cannot add dependency: Task #10 is archived"
|
|
791
|
+
```
|
|
792
|
+
|
|
793
|
+
### Notes
|
|
794
|
+
|
|
795
|
+
- Uses recursive CTE for transitive cycle detection
|
|
796
|
+
- Depth limit: 100 levels
|
|
797
|
+
- CASCADE deletion: Dependencies auto-delete when tasks are deleted
|
|
798
|
+
|
|
799
|
+
## Action: remove_dependency
|
|
800
|
+
|
|
801
|
+
Remove a blocking relationship between two tasks (NEW in 3.2.0).
|
|
802
|
+
|
|
803
|
+
### Parameters
|
|
804
|
+
|
|
805
|
+
**Required:**
|
|
806
|
+
- `action`: "remove_dependency"
|
|
807
|
+
- `blocker_task_id`: Task ID that blocks (number)
|
|
808
|
+
- `blocked_task_id`: Task ID that is blocked (number)
|
|
809
|
+
|
|
810
|
+
### Example
|
|
811
|
+
|
|
812
|
+
```javascript
|
|
813
|
+
{
|
|
814
|
+
action: "remove_dependency",
|
|
815
|
+
blocker_task_id: 1,
|
|
816
|
+
blocked_task_id: 2
|
|
817
|
+
}
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
### Response
|
|
821
|
+
|
|
822
|
+
```javascript
|
|
823
|
+
{
|
|
824
|
+
success: true,
|
|
825
|
+
message: "Dependency removed: Task #1 no longer blocks Task #2"
|
|
826
|
+
}
|
|
827
|
+
```
|
|
828
|
+
|
|
829
|
+
### Notes
|
|
830
|
+
|
|
831
|
+
- Idempotent: Succeeds silently if dependency doesn't exist
|
|
832
|
+
- Use when task completed early or requirements changed
|
|
833
|
+
- Unblocks dependent tasks
|
|
834
|
+
|
|
835
|
+
## Action: get_dependencies
|
|
836
|
+
|
|
837
|
+
Query dependencies for a task bidirectionally (NEW in 3.2.0).
|
|
838
|
+
|
|
839
|
+
### Parameters
|
|
840
|
+
|
|
841
|
+
**Required:**
|
|
842
|
+
- `action`: "get_dependencies"
|
|
843
|
+
- `task_id`: Task to query dependencies for (number)
|
|
844
|
+
|
|
845
|
+
**Optional:**
|
|
846
|
+
- `include_details`: Include full task metadata (boolean) - default: false
|
|
847
|
+
|
|
848
|
+
### Examples
|
|
849
|
+
|
|
850
|
+
**Metadata-Only (Recommended):**
|
|
851
|
+
```javascript
|
|
852
|
+
{
|
|
853
|
+
action: "get_dependencies",
|
|
854
|
+
task_id: 2
|
|
855
|
+
}
|
|
856
|
+
```
|
|
857
|
+
|
|
858
|
+
**With Full Details:**
|
|
859
|
+
```javascript
|
|
860
|
+
{
|
|
861
|
+
action: "get_dependencies",
|
|
862
|
+
task_id: 2,
|
|
863
|
+
include_details: true
|
|
864
|
+
}
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
### Response
|
|
868
|
+
|
|
869
|
+
**Metadata-Only:**
|
|
870
|
+
```javascript
|
|
871
|
+
{
|
|
872
|
+
task_id: 2,
|
|
873
|
+
blockers: [1, 3], // Task IDs only (~30 bytes)
|
|
874
|
+
blocking: [5, 7]
|
|
875
|
+
}
|
|
876
|
+
```
|
|
877
|
+
|
|
878
|
+
**With Details:**
|
|
879
|
+
```javascript
|
|
880
|
+
{
|
|
881
|
+
task_id: 2,
|
|
882
|
+
blockers: [
|
|
883
|
+
{
|
|
884
|
+
task_id: 1,
|
|
885
|
+
title: "Implement JWT authentication",
|
|
886
|
+
status: "in_progress",
|
|
887
|
+
priority: "high"
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
task_id: 3,
|
|
891
|
+
title: "Design user schema",
|
|
892
|
+
status: "done",
|
|
893
|
+
priority: "medium"
|
|
894
|
+
}
|
|
895
|
+
],
|
|
896
|
+
blocking: [
|
|
897
|
+
{
|
|
898
|
+
task_id: 5,
|
|
899
|
+
title: "Add profile page",
|
|
900
|
+
status: "todo",
|
|
901
|
+
priority: "medium"
|
|
902
|
+
},
|
|
903
|
+
{
|
|
904
|
+
task_id: 7,
|
|
905
|
+
title: "Add settings page",
|
|
906
|
+
status: "todo",
|
|
907
|
+
priority: "low"
|
|
908
|
+
}
|
|
909
|
+
]
|
|
910
|
+
}
|
|
911
|
+
```
|
|
912
|
+
|
|
913
|
+
### Token Efficiency
|
|
914
|
+
|
|
915
|
+
- **Metadata-only:** ~30 bytes (IDs only)
|
|
916
|
+
- **With details:** ~250 bytes per task
|
|
917
|
+
- **Savings:** ~88% token reduction with metadata approach
|
|
918
|
+
|
|
919
|
+
### Use Cases
|
|
920
|
+
|
|
921
|
+
- Find what's blocking a task (`blockers`)
|
|
922
|
+
- Find what's waiting for a task (`blocking`)
|
|
923
|
+
- Identify bottlenecks (high `blocking` count)
|
|
924
|
+
- Plan work order
|
|
925
|
+
|
|
626
926
|
## Action: help
|
|
627
927
|
|
|
628
928
|
Get comprehensive on-demand documentation.
|
|
@@ -843,12 +1143,13 @@ link({
|
|
|
843
1143
|
|
|
844
1144
|
- **[TASK_OVERVIEW.md](TASK_OVERVIEW.md)** - Task system overview and core concepts
|
|
845
1145
|
- **[TASK_LINKING.md](TASK_LINKING.md)** - Linking tasks to decisions/constraints/files
|
|
1146
|
+
- **[TASK_DEPENDENCIES.md](TASK_DEPENDENCIES.md)** - Dependency management (NEW in 3.2.0)
|
|
846
1147
|
- **[TASK_MIGRATION.md](TASK_MIGRATION.md)** - Migrating from decision-based task tracking
|
|
847
1148
|
- **[TASK_SYSTEM.md](TASK_SYSTEM.md)** - Complete documentation (original)
|
|
848
1149
|
- **[AI_AGENT_GUIDE.md](AI_AGENT_GUIDE.md)** - Comprehensive AI agent guide
|
|
849
1150
|
|
|
850
1151
|
---
|
|
851
1152
|
|
|
852
|
-
**Version:** 3.
|
|
853
|
-
**Last Updated:** 2025-10-
|
|
1153
|
+
**Version:** 3.2.0
|
|
1154
|
+
**Last Updated:** 2025-10-18
|
|
854
1155
|
**Author:** sin5ddd
|