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.
Files changed (59) hide show
  1. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/PKG-INFO +37 -1
  2. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/README.md +36 -0
  3. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/pyproject.toml +1 -1
  4. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_tasks_watch.py +1 -45
  5. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/tasks_toolkit.egg-info/PKG-INFO +37 -1
  6. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/LICENSE +0 -0
  7. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/__init__.py +0 -0
  8. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/apply-plan.sh +0 -0
  9. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/run-task.sh +0 -0
  10. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/run_stats.py +0 -0
  11. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/run_summary.py +0 -0
  12. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/runner_config.py +0 -0
  13. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/spec-lint.sh +0 -0
  14. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint-auto.sh +0 -0
  15. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto.py +0 -0
  16. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto_execute.py +0 -0
  17. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto_preflight.py +0 -0
  18. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto_prepare.py +0 -0
  19. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto_resume.py +0 -0
  20. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_auto_state.py +0 -0
  21. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/sprint_plan.py +0 -0
  22. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/task-report.sh +0 -0
  23. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/task_runner.py +0 -0
  24. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks.py +0 -0
  25. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_cli.py +0 -0
  26. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_commands.py +0 -0
  27. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_init.py +0 -0
  28. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_mcp.py +0 -0
  29. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_model.py +0 -0
  30. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_plan_import.py +0 -0
  31. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_render.py +0 -0
  32. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_storage.py +0 -0
  33. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/tasks_watch.py +0 -0
  34. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_python_fast.sh +0 -0
  35. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_python_lint.sh +0 -0
  36. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_python_slow.sh +0 -0
  37. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_run_stats.py +0 -0
  38. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_run_summary.py +0 -0
  39. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_runner_config.py +0 -0
  40. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_spec_lint.sh +0 -0
  41. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto.py +0 -0
  42. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto_execute.py +0 -0
  43. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto_preflight.py +0 -0
  44. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto_prepare.py +0 -0
  45. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto_resume.py +0 -0
  46. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_auto_state.py +0 -0
  47. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_lifecycle.py +0 -0
  48. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_sprint_plan.py +0 -0
  49. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_task_runner.py +0 -0
  50. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_tasks.py +0 -0
  51. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_tasks_mcp.py +0 -0
  52. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_tasks_plan_import.py +0 -0
  53. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/scripts/test_tasks_storage.py +0 -0
  54. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/setup.cfg +0 -0
  55. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/tasks_toolkit.egg-info/SOURCES.txt +0 -0
  56. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/tasks_toolkit.egg-info/dependency_links.txt +0 -0
  57. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/tasks_toolkit.egg-info/entry_points.txt +0 -0
  58. {tasks_toolkit-0.1.6 → tasks_toolkit-0.1.7}/tasks_toolkit.egg-info/requires.txt +0 -0
  59. {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.6
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.6"
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 and .vscode/tasks.json.
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.6
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