tasks-toolkit 0.1.6__tar.gz → 0.1.7__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.
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/PKG-INFO +37 -1
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/README.md +36 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/pyproject.toml +1 -1
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_tasks_watch.py +1 -45
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/tasks_toolkit.egg-info/PKG-INFO +37 -1
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/LICENSE +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/__init__.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/apply-plan.sh +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/run-task.sh +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/run_stats.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/run_summary.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/runner_config.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/spec-lint.sh +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint-auto.sh +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto_execute.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto_preflight.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto_prepare.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto_resume.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto_state.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_plan.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/task-report.sh +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/task_runner.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_cli.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_commands.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_init.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_mcp.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_model.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_plan_import.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_render.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_storage.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_watch.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_python_fast.sh +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_python_lint.sh +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_python_slow.sh +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_run_stats.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_run_summary.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_runner_config.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_spec_lint.sh +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto_execute.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto_preflight.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto_prepare.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto_resume.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto_state.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_lifecycle.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_plan.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_task_runner.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_tasks.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_tasks_mcp.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_tasks_plan_import.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_tasks_storage.py +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/setup.cfg +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/tasks_toolkit.egg-info/SOURCES.txt +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/tasks_toolkit.egg-info/dependency_links.txt +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/tasks_toolkit.egg-info/entry_points.txt +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/tasks_toolkit.egg-info/requires.txt +0 -0
- {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/tasks_toolkit.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tasks-toolkit
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Task tracker toolkit: CLI + MCP server for sprint/task/subtask management, delegation helpers.
|
|
5
5
|
Author: prachwal
|
|
6
6
|
License: MIT License
|
|
@@ -67,6 +67,23 @@ tasks-init
|
|
|
67
67
|
tasks overview
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
+
### Run with uvx
|
|
71
|
+
|
|
72
|
+
With [uv installed](https://docs.astral.sh/uv/getting-started/installation/),
|
|
73
|
+
run commands directly from PyPI without a separate tool installation:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
cd /path/to/your-project
|
|
77
|
+
uvx --from tasks-toolkit tasks-init
|
|
78
|
+
uvx --from tasks-toolkit tasks overview
|
|
79
|
+
uvx --from tasks-toolkit tasks next
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Use `--from tasks-toolkit` because the package and executable names differ.
|
|
83
|
+
The same form works for `tasks-run`, `tasks-sprint`, and `tasks-mcp`.
|
|
84
|
+
To select a specific release, use `--from tasks-toolkit==0.1.6`.
|
|
85
|
+
See the [uv tools guide](https://docs.astral.sh/uv/guides/tools/).
|
|
86
|
+
|
|
70
87
|
### From source
|
|
71
88
|
|
|
72
89
|
```bash
|
|
@@ -109,6 +126,25 @@ the project, not to the toolkit installation. An installed server needs no copy
|
|
|
109
126
|
this source repository. Use an absolute executable path if the client cannot find
|
|
110
127
|
`tasks-mcp` on its PATH; `command -v tasks-mcp` shows it on Unix.
|
|
111
128
|
|
|
129
|
+
To launch the MCP server through `uvx`, use the following configuration in clients
|
|
130
|
+
with an `mcpServers` section (such as Claude Desktop or Cursor):
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"mcpServers": {
|
|
135
|
+
"tasks": {
|
|
136
|
+
"command": "uvx",
|
|
137
|
+
"args": ["--from", "tasks-toolkit", "tasks-mcp"],
|
|
138
|
+
"env": {"TASKS_ROOT": "/absolute/path/to/your-project"}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Use the absolute path returned by `command -v uvx` if the client cannot find `uvx`.
|
|
145
|
+
For the other client schemas below, use the same executable and arguments with
|
|
146
|
+
the client's configuration keys.
|
|
147
|
+
|
|
112
148
|
### Claude Desktop
|
|
113
149
|
|
|
114
150
|
Open **Settings → Developer → Edit Config**, merge this entry into
|
|
@@ -18,6 +18,23 @@ tasks-init
|
|
|
18
18
|
tasks overview
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
+
### Run with uvx
|
|
22
|
+
|
|
23
|
+
With [uv installed](https://docs.astral.sh/uv/getting-started/installation/),
|
|
24
|
+
run commands directly from PyPI without a separate tool installation:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
cd /path/to/your-project
|
|
28
|
+
uvx --from tasks-toolkit tasks-init
|
|
29
|
+
uvx --from tasks-toolkit tasks overview
|
|
30
|
+
uvx --from tasks-toolkit tasks next
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Use `--from tasks-toolkit` because the package and executable names differ.
|
|
34
|
+
The same form works for `tasks-run`, `tasks-sprint`, and `tasks-mcp`.
|
|
35
|
+
To select a specific release, use `--from tasks-toolkit==0.1.6`.
|
|
36
|
+
See the [uv tools guide](https://docs.astral.sh/uv/guides/tools/).
|
|
37
|
+
|
|
21
38
|
### From source
|
|
22
39
|
|
|
23
40
|
```bash
|
|
@@ -60,6 +77,25 @@ the project, not to the toolkit installation. An installed server needs no copy
|
|
|
60
77
|
this source repository. Use an absolute executable path if the client cannot find
|
|
61
78
|
`tasks-mcp` on its PATH; `command -v tasks-mcp` shows it on Unix.
|
|
62
79
|
|
|
80
|
+
To launch the MCP server through `uvx`, use the following configuration in clients
|
|
81
|
+
with an `mcpServers` section (such as Claude Desktop or Cursor):
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"mcpServers": {
|
|
86
|
+
"tasks": {
|
|
87
|
+
"command": "uvx",
|
|
88
|
+
"args": ["--from", "tasks-toolkit", "tasks-mcp"],
|
|
89
|
+
"env": {"TASKS_ROOT": "/absolute/path/to/your-project"}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Use the absolute path returned by `command -v uvx` if the client cannot find `uvx`.
|
|
96
|
+
For the other client schemas below, use the same executable and arguments with
|
|
97
|
+
the client's configuration keys.
|
|
98
|
+
|
|
63
99
|
### Claude Desktop
|
|
64
100
|
|
|
65
101
|
Open **Settings → Developer → Edit Config**, merge this entry into
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tasks-toolkit"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.7"
|
|
8
8
|
description = "Task tracker toolkit: CLI + MCP server for sprint/task/subtask management, delegation helpers."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { file = "LICENSE" }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Tests for scripts/tasks_watch.py
|
|
1
|
+
"""Tests for scripts/tasks_watch.py.
|
|
2
2
|
|
|
3
3
|
Run: python3 -m unittest scripts/test_tasks_watch.py
|
|
4
4
|
|
|
@@ -6,7 +6,6 @@ All tests use a temporary root so the real tasks/ directory is never touched.
|
|
|
6
6
|
"""
|
|
7
7
|
import contextlib
|
|
8
8
|
import hashlib
|
|
9
|
-
import json
|
|
10
9
|
import sqlite3
|
|
11
10
|
import tempfile
|
|
12
11
|
import unittest
|
|
@@ -188,48 +187,5 @@ class WatchRefreshTests(WatchTestCase):
|
|
|
188
187
|
self.assertIn("snapshot", stderr)
|
|
189
188
|
|
|
190
189
|
|
|
191
|
-
class TasksJsonTests(unittest.TestCase):
|
|
192
|
-
"""Validate .vscode/tasks.json structure and command references."""
|
|
193
|
-
|
|
194
|
-
def test_tasks_json_is_valid(self):
|
|
195
|
-
""".vscode/tasks.json must be valid JSON."""
|
|
196
|
-
tasks_json = Path(".vscode/tasks.json")
|
|
197
|
-
self.assertTrue(tasks_json.exists(), ".vscode/tasks.json does not exist")
|
|
198
|
-
with open(tasks_json, encoding="utf-8") as f:
|
|
199
|
-
data = json.load(f)
|
|
200
|
-
self.assertEqual(data["version"], "2.0.0")
|
|
201
|
-
|
|
202
|
-
def test_tasks_json_has_six_labels(self):
|
|
203
|
-
""".vscode/tasks.json must contain exactly the six expected labels."""
|
|
204
|
-
with open(".vscode/tasks.json", encoding="utf-8") as f:
|
|
205
|
-
data = json.load(f)
|
|
206
|
-
labels = {t["label"] for t in data["tasks"]}
|
|
207
|
-
expected = {
|
|
208
|
-
"Tracker: refresh view",
|
|
209
|
-
"Tracker: sync (view + snapshot)",
|
|
210
|
-
"Tracker: check",
|
|
211
|
-
"Tracker: next",
|
|
212
|
-
"Tracker: list",
|
|
213
|
-
"Tracker: watch view",
|
|
214
|
-
}
|
|
215
|
-
self.assertEqual(labels, expected)
|
|
216
|
-
|
|
217
|
-
def test_task_commands_reference_existing_scripts(self):
|
|
218
|
-
"""Every command in tasks.json must reference an existing scripts/*.py file."""
|
|
219
|
-
with open(".vscode/tasks.json", encoding="utf-8") as f:
|
|
220
|
-
data = json.load(f)
|
|
221
|
-
for task in data["tasks"]:
|
|
222
|
-
cmd = task["command"]
|
|
223
|
-
# Extract the script file from the command (e.g., "python3 scripts/tasks.py render")
|
|
224
|
-
parts = cmd.split()
|
|
225
|
-
for part in parts:
|
|
226
|
-
if part.startswith("scripts/") and part.endswith(".py"):
|
|
227
|
-
script_path = Path(part)
|
|
228
|
-
self.assertTrue(
|
|
229
|
-
script_path.exists(),
|
|
230
|
-
f"Task '{task['label']}' references non-existent script: {script_path}"
|
|
231
|
-
)
|
|
232
|
-
|
|
233
|
-
|
|
234
190
|
if __name__ == "__main__":
|
|
235
191
|
unittest.main()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tasks-toolkit
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Task tracker toolkit: CLI + MCP server for sprint/task/subtask management, delegation helpers.
|
|
5
5
|
Author: prachwal
|
|
6
6
|
License: MIT License
|
|
@@ -67,6 +67,23 @@ tasks-init
|
|
|
67
67
|
tasks overview
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
+
### Run with uvx
|
|
71
|
+
|
|
72
|
+
With [uv installed](https://docs.astral.sh/uv/getting-started/installation/),
|
|
73
|
+
run commands directly from PyPI without a separate tool installation:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
cd /path/to/your-project
|
|
77
|
+
uvx --from tasks-toolkit tasks-init
|
|
78
|
+
uvx --from tasks-toolkit tasks overview
|
|
79
|
+
uvx --from tasks-toolkit tasks next
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Use `--from tasks-toolkit` because the package and executable names differ.
|
|
83
|
+
The same form works for `tasks-run`, `tasks-sprint`, and `tasks-mcp`.
|
|
84
|
+
To select a specific release, use `--from tasks-toolkit==0.1.6`.
|
|
85
|
+
See the [uv tools guide](https://docs.astral.sh/uv/guides/tools/).
|
|
86
|
+
|
|
70
87
|
### From source
|
|
71
88
|
|
|
72
89
|
```bash
|
|
@@ -109,6 +126,25 @@ the project, not to the toolkit installation. An installed server needs no copy
|
|
|
109
126
|
this source repository. Use an absolute executable path if the client cannot find
|
|
110
127
|
`tasks-mcp` on its PATH; `command -v tasks-mcp` shows it on Unix.
|
|
111
128
|
|
|
129
|
+
To launch the MCP server through `uvx`, use the following configuration in clients
|
|
130
|
+
with an `mcpServers` section (such as Claude Desktop or Cursor):
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"mcpServers": {
|
|
135
|
+
"tasks": {
|
|
136
|
+
"command": "uvx",
|
|
137
|
+
"args": ["--from", "tasks-toolkit", "tasks-mcp"],
|
|
138
|
+
"env": {"TASKS_ROOT": "/absolute/path/to/your-project"}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Use the absolute path returned by `command -v uvx` if the client cannot find `uvx`.
|
|
145
|
+
For the other client schemas below, use the same executable and arguments with
|
|
146
|
+
the client's configuration keys.
|
|
147
|
+
|
|
112
148
|
### Claude Desktop
|
|
113
149
|
|
|
114
150
|
Open **Settings → Developer → Edit Config**, merge this entry into
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|