taskulus 0.1.0__tar.gz → 0.3.0__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 (48) hide show
  1. taskulus-0.3.0/PKG-INFO +185 -0
  2. taskulus-0.3.0/README.md +155 -0
  3. {taskulus-0.1.0 → taskulus-0.3.0}/pyproject.toml +18 -1
  4. taskulus-0.3.0/src/taskulus.egg-info/PKG-INFO +185 -0
  5. taskulus-0.1.0/PKG-INFO +0 -20
  6. taskulus-0.1.0/README.md +0 -3
  7. taskulus-0.1.0/src/taskulus.egg-info/PKG-INFO +0 -20
  8. {taskulus-0.1.0 → taskulus-0.3.0}/setup.cfg +0 -0
  9. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/__init__.py +0 -0
  10. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/cache.py +0 -0
  11. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/cli.py +0 -0
  12. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/config.py +0 -0
  13. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/config_loader.py +0 -0
  14. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/daemon.py +0 -0
  15. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/daemon_client.py +0 -0
  16. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/daemon_paths.py +0 -0
  17. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/daemon_protocol.py +0 -0
  18. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/daemon_server.py +0 -0
  19. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/dependencies.py +0 -0
  20. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/dependency_tree.py +0 -0
  21. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/doctor.py +0 -0
  22. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/file_io.py +0 -0
  23. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/hierarchy.py +0 -0
  24. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/ids.py +0 -0
  25. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/index.py +0 -0
  26. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/issue_close.py +0 -0
  27. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/issue_comment.py +0 -0
  28. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/issue_creation.py +0 -0
  29. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/issue_delete.py +0 -0
  30. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/issue_display.py +0 -0
  31. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/issue_files.py +0 -0
  32. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/issue_listing.py +0 -0
  33. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/issue_lookup.py +0 -0
  34. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/issue_transfer.py +0 -0
  35. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/issue_update.py +0 -0
  36. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/maintenance.py +0 -0
  37. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/migration.py +0 -0
  38. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/models.py +0 -0
  39. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/project.py +0 -0
  40. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/queries.py +0 -0
  41. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/users.py +0 -0
  42. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/wiki.py +0 -0
  43. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus/workflows.py +0 -0
  44. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus.egg-info/SOURCES.txt +0 -0
  45. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus.egg-info/dependency_links.txt +0 -0
  46. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus.egg-info/entry_points.txt +0 -0
  47. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus.egg-info/requires.txt +0 -0
  48. {taskulus-0.1.0 → taskulus-0.3.0}/src/taskulus.egg-info/top_level.txt +0 -0
@@ -0,0 +1,185 @@
1
+ Metadata-Version: 2.4
2
+ Name: taskulus
3
+ Version: 0.3.0
4
+ Summary: A git-backed project management system.
5
+ License-Expression: MIT
6
+ Project-URL: Homepage, https://taskul.us
7
+ Project-URL: Repository, https://github.com/AnthusAI/Taskulus
8
+ Project-URL: Issues, https://github.com/AnthusAI/Taskulus/issues
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Environment :: Console
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Topic :: Software Development :: Bug Tracking
17
+ Classifier: Topic :: Software Development :: Version Control
18
+ Requires-Python: >=3.11
19
+ Description-Content-Type: text/markdown
20
+ Requires-Dist: click
21
+ Requires-Dist: jinja2
22
+ Requires-Dist: pydantic
23
+ Requires-Dist: pyyaml
24
+ Requires-Dist: pydantic-settings
25
+ Requires-Dist: behave
26
+ Requires-Dist: coverage
27
+ Requires-Dist: ruff
28
+ Requires-Dist: black
29
+ Requires-Dist: sphinx
30
+
31
+ # Taskulus
32
+
33
+ **A tiny Jira clone for your repo.**
34
+
35
+ ![Python CI](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/python-ci.svg)
36
+ ![Rust CI](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/rust-ci.svg)
37
+ ![Python Coverage](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/python-coverage.svg)
38
+ ![Rust Coverage](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/rust-coverage.svg)
39
+
40
+ ## Inspiration & Lineage
41
+
42
+ Taskulus is a spiritual successor to [Beads](https://github.com/steveyegge/beads), inspired by its elegant, domain-specific approach to project management. We are deeply grateful to the Beads author and community for proving that a dedicated cognitive framework for tasks is game-changing.
43
+
44
+ Taskulus builds on this foundation by adapting the model to be a thinner, more native layer over Git—optimizing for AI agents and distributed teams:
45
+
46
+ * **A Thinner Layer over Git**: We removed the secondary SQLite index. The complexity of maintaining and synchronizing a shadow database isn't worth the operational cost. Taskulus reads files directly.
47
+ * **Better Storage Alignment**: Things like "exclusively claiming" a task don't align well with the distributed Git model. We removed them to ensure the tool behaves exactly like the version control system underneath it.
48
+ * **Conflict-Free Storage**: Instead of a single JSON-L file (which guarantees merge conflicts when agents work in parallel), Taskulus stores separate tasks in separate files. This eliminates conflicts and allows deep linking to specific issues from GitHub.
49
+ * **Streamlined Cognitive Model**: Beads is powerful but complex, with 130+ attributes per issue. We streamlined this to a focused core (Status, Priority, Dependencies) to reduce the "context pollution" for AI agents. We want the model to think about the work, not how to use the tracker. The goal is a **helpful cognitive model** that unburdens your mental state rather than adding to it.
50
+ * **AI-Native Nomenclature**: Instead of teaching models new terms like "beads", we use the standard Jira vocabulary (Epics, Tasks, Sub-tasks) that AI models are already extensively pre-trained on. This leverages their existing knowledge graph for better reasoning.
51
+ * **Git-Native Scoping**: We replaced complex "contributor roles" with standard Git patterns. Want local tasks? Just `.gitignore` a folder. Working in a monorepo? Taskulus respects your current directory scope automatically.
52
+
53
+ ## Frictionless Workflow
54
+
55
+ Taskulus is designed to **remove friction**, not add it.
56
+
57
+ * **No Syncing**: There is no secondary database to synchronize. The files on disk are the source of truth. You will never be blocked from pushing code because a background daemon is out of sync.
58
+ * **Git Hooks Help You**: Git hooks should assist your workflow, not interrupt it. Taskulus hooks are designed to be invisible helpers, ensuring data integrity without stopping you from getting work done.
59
+
60
+ For a detailed comparison, see [Taskulus vs. Beads](docs/VS_BEADS.md).
61
+
62
+ ## Why Taskulus?
63
+
64
+ ### 1. The Sleep Factor
65
+ Offload your mental context. Instead of keeping 15 different chat sessions and open loops in your head, tell your agent to "record the current state" into Taskulus. It's a permanent, searchable memory bank for your AI workforce.
66
+
67
+ ### 2. Files are the Database
68
+ - **No SQL Server**: We removed the SQLite daemon entirely. Each command reads the JSON files directly, so there is nothing to synchronize or keep running.
69
+ - **No JSONL Merge Conflicts**: There is no monolithic JSONL file. Every issue has its own JSON document, which eliminates merge conflicts when teams (or agents) edit work in parallel.
70
+ - **No Daemon**: There is no background process to crash or manage.
71
+ - **No API**: Your agents read and write files directly (or use the simple CLI).
72
+
73
+ ### 3. Concurrency Solved
74
+ Unlike other file-based systems that use a single JSONL file (guaranteeing merge conflicts), Taskulus stores **one issue per file**. This allows multiple agents and developers to work in parallel without blocking each other.
75
+
76
+ ### 4. Jira + Confluence for Agents
77
+ Taskulus includes a **Wiki Engine** that renders Markdown templates with live issue data. Your planning documents always reflect the real-time state of the project, giving agents the "forest view" they often lack.
78
+
79
+ ### 5. Zero Cost Footprint
80
+ There are no per-seat licenses or hosted fees. If you have a git repository, you already have the database—and that keeps Taskulus affordable for very large teams (or fleets of agents).
81
+
82
+ ---
83
+
84
+ ## Status: Planning Phase
85
+
86
+ This repository contains the complete vision, implementation plan, and task breakdown for building Taskulus. We are building it in public, using Taskulus (via Beads) to track itself.
87
+
88
+ ## Quick Start
89
+
90
+ ```bash
91
+ # Initialize a new project
92
+ tsk init
93
+
94
+ # Create an issue
95
+ tsk create "Implement the login flow"
96
+
97
+ # List open tasks
98
+ tsk list --status todo
99
+
100
+ # Show details
101
+ tsk show tsk-a1b
102
+ ```
103
+
104
+ ## Daemon Behavior
105
+
106
+ Taskulus uses a just-in-time index daemon for read-heavy commands such as `tsk list`. The CLI auto-starts the daemon when needed, reuses a healthy socket, and removes stale sockets before restarting.
107
+
108
+ To disable daemon mode for a command:
109
+
110
+ ```bash
111
+ TASKULUS_NO_DAEMON=1 tsk list
112
+ ```
113
+
114
+ Operational commands:
115
+
116
+ ```bash
117
+ tsk daemon-status
118
+ tsk daemon-stop
119
+ ```
120
+
121
+ ## Python vs Rust
122
+
123
+ We provide two implementations driven by the same behavior specification:
124
+
125
+ **Choose Python if:**
126
+ - You want easy `pip install` with no compilation
127
+ - You are scripting custom agent workflows
128
+
129
+ **Choose Rust if:**
130
+ - You need maximum performance (sub-millisecond queries)
131
+ - You have a massive repository (> 2000 issues)
132
+
133
+ ## Project Structure
134
+
135
+ ```
136
+ Taskulus/
137
+ |-- planning/
138
+ | |-- VISION.md # Complete specification
139
+ | `-- IMPLEMENTATION_PLAN.md # Detailed technical plan
140
+ |-- specs/ # Shared Gherkin feature files
141
+ |-- python/ # Python implementation
142
+ |-- rust/ # Rust implementation
143
+ |-- apps/ # Public website (Gatsby)
144
+ `-- .beads/ # Project task database
145
+ ```
146
+
147
+ ## Contributing
148
+
149
+ We welcome contributions! Please:
150
+ 1. Pick a task from `bd ready` (we use Beads for bootstrapping).
151
+ 2. Follow the BDD workflow in [AGENTS.md](AGENTS.md).
152
+ 3. Ensure all quality gates pass.
153
+
154
+ ## Testing
155
+
156
+ Run the full quality gates:
157
+
158
+ ```bash
159
+ make check-all
160
+ ```
161
+
162
+ Run only Python checks:
163
+
164
+ ```bash
165
+ make check-python
166
+ ```
167
+
168
+ Run only Rust checks:
169
+
170
+ ```bash
171
+ make check-rust
172
+ ```
173
+
174
+ ## Benchmarking
175
+
176
+ Run index build and cache load benchmarks:
177
+
178
+ ```bash
179
+ python tools/benchmark_index.py
180
+ cd rust && cargo run --release --bin index_benchmark
181
+ ```
182
+
183
+ ## License
184
+
185
+ MIT
@@ -0,0 +1,155 @@
1
+ # Taskulus
2
+
3
+ **A tiny Jira clone for your repo.**
4
+
5
+ ![Python CI](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/python-ci.svg)
6
+ ![Rust CI](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/rust-ci.svg)
7
+ ![Python Coverage](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/python-coverage.svg)
8
+ ![Rust Coverage](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/rust-coverage.svg)
9
+
10
+ ## Inspiration & Lineage
11
+
12
+ Taskulus is a spiritual successor to [Beads](https://github.com/steveyegge/beads), inspired by its elegant, domain-specific approach to project management. We are deeply grateful to the Beads author and community for proving that a dedicated cognitive framework for tasks is game-changing.
13
+
14
+ Taskulus builds on this foundation by adapting the model to be a thinner, more native layer over Git—optimizing for AI agents and distributed teams:
15
+
16
+ * **A Thinner Layer over Git**: We removed the secondary SQLite index. The complexity of maintaining and synchronizing a shadow database isn't worth the operational cost. Taskulus reads files directly.
17
+ * **Better Storage Alignment**: Things like "exclusively claiming" a task don't align well with the distributed Git model. We removed them to ensure the tool behaves exactly like the version control system underneath it.
18
+ * **Conflict-Free Storage**: Instead of a single JSON-L file (which guarantees merge conflicts when agents work in parallel), Taskulus stores separate tasks in separate files. This eliminates conflicts and allows deep linking to specific issues from GitHub.
19
+ * **Streamlined Cognitive Model**: Beads is powerful but complex, with 130+ attributes per issue. We streamlined this to a focused core (Status, Priority, Dependencies) to reduce the "context pollution" for AI agents. We want the model to think about the work, not how to use the tracker. The goal is a **helpful cognitive model** that unburdens your mental state rather than adding to it.
20
+ * **AI-Native Nomenclature**: Instead of teaching models new terms like "beads", we use the standard Jira vocabulary (Epics, Tasks, Sub-tasks) that AI models are already extensively pre-trained on. This leverages their existing knowledge graph for better reasoning.
21
+ * **Git-Native Scoping**: We replaced complex "contributor roles" with standard Git patterns. Want local tasks? Just `.gitignore` a folder. Working in a monorepo? Taskulus respects your current directory scope automatically.
22
+
23
+ ## Frictionless Workflow
24
+
25
+ Taskulus is designed to **remove friction**, not add it.
26
+
27
+ * **No Syncing**: There is no secondary database to synchronize. The files on disk are the source of truth. You will never be blocked from pushing code because a background daemon is out of sync.
28
+ * **Git Hooks Help You**: Git hooks should assist your workflow, not interrupt it. Taskulus hooks are designed to be invisible helpers, ensuring data integrity without stopping you from getting work done.
29
+
30
+ For a detailed comparison, see [Taskulus vs. Beads](docs/VS_BEADS.md).
31
+
32
+ ## Why Taskulus?
33
+
34
+ ### 1. The Sleep Factor
35
+ Offload your mental context. Instead of keeping 15 different chat sessions and open loops in your head, tell your agent to "record the current state" into Taskulus. It's a permanent, searchable memory bank for your AI workforce.
36
+
37
+ ### 2. Files are the Database
38
+ - **No SQL Server**: We removed the SQLite daemon entirely. Each command reads the JSON files directly, so there is nothing to synchronize or keep running.
39
+ - **No JSONL Merge Conflicts**: There is no monolithic JSONL file. Every issue has its own JSON document, which eliminates merge conflicts when teams (or agents) edit work in parallel.
40
+ - **No Daemon**: There is no background process to crash or manage.
41
+ - **No API**: Your agents read and write files directly (or use the simple CLI).
42
+
43
+ ### 3. Concurrency Solved
44
+ Unlike other file-based systems that use a single JSONL file (guaranteeing merge conflicts), Taskulus stores **one issue per file**. This allows multiple agents and developers to work in parallel without blocking each other.
45
+
46
+ ### 4. Jira + Confluence for Agents
47
+ Taskulus includes a **Wiki Engine** that renders Markdown templates with live issue data. Your planning documents always reflect the real-time state of the project, giving agents the "forest view" they often lack.
48
+
49
+ ### 5. Zero Cost Footprint
50
+ There are no per-seat licenses or hosted fees. If you have a git repository, you already have the database—and that keeps Taskulus affordable for very large teams (or fleets of agents).
51
+
52
+ ---
53
+
54
+ ## Status: Planning Phase
55
+
56
+ This repository contains the complete vision, implementation plan, and task breakdown for building Taskulus. We are building it in public, using Taskulus (via Beads) to track itself.
57
+
58
+ ## Quick Start
59
+
60
+ ```bash
61
+ # Initialize a new project
62
+ tsk init
63
+
64
+ # Create an issue
65
+ tsk create "Implement the login flow"
66
+
67
+ # List open tasks
68
+ tsk list --status todo
69
+
70
+ # Show details
71
+ tsk show tsk-a1b
72
+ ```
73
+
74
+ ## Daemon Behavior
75
+
76
+ Taskulus uses a just-in-time index daemon for read-heavy commands such as `tsk list`. The CLI auto-starts the daemon when needed, reuses a healthy socket, and removes stale sockets before restarting.
77
+
78
+ To disable daemon mode for a command:
79
+
80
+ ```bash
81
+ TASKULUS_NO_DAEMON=1 tsk list
82
+ ```
83
+
84
+ Operational commands:
85
+
86
+ ```bash
87
+ tsk daemon-status
88
+ tsk daemon-stop
89
+ ```
90
+
91
+ ## Python vs Rust
92
+
93
+ We provide two implementations driven by the same behavior specification:
94
+
95
+ **Choose Python if:**
96
+ - You want easy `pip install` with no compilation
97
+ - You are scripting custom agent workflows
98
+
99
+ **Choose Rust if:**
100
+ - You need maximum performance (sub-millisecond queries)
101
+ - You have a massive repository (> 2000 issues)
102
+
103
+ ## Project Structure
104
+
105
+ ```
106
+ Taskulus/
107
+ |-- planning/
108
+ | |-- VISION.md # Complete specification
109
+ | `-- IMPLEMENTATION_PLAN.md # Detailed technical plan
110
+ |-- specs/ # Shared Gherkin feature files
111
+ |-- python/ # Python implementation
112
+ |-- rust/ # Rust implementation
113
+ |-- apps/ # Public website (Gatsby)
114
+ `-- .beads/ # Project task database
115
+ ```
116
+
117
+ ## Contributing
118
+
119
+ We welcome contributions! Please:
120
+ 1. Pick a task from `bd ready` (we use Beads for bootstrapping).
121
+ 2. Follow the BDD workflow in [AGENTS.md](AGENTS.md).
122
+ 3. Ensure all quality gates pass.
123
+
124
+ ## Testing
125
+
126
+ Run the full quality gates:
127
+
128
+ ```bash
129
+ make check-all
130
+ ```
131
+
132
+ Run only Python checks:
133
+
134
+ ```bash
135
+ make check-python
136
+ ```
137
+
138
+ Run only Rust checks:
139
+
140
+ ```bash
141
+ make check-rust
142
+ ```
143
+
144
+ ## Benchmarking
145
+
146
+ Run index build and cache load benchmarks:
147
+
148
+ ```bash
149
+ python tools/benchmark_index.py
150
+ cd rust && cargo run --release --bin index_benchmark
151
+ ```
152
+
153
+ ## License
154
+
155
+ MIT
@@ -4,10 +4,11 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "taskulus"
7
- version = "0.1.0"
7
+ version = "0.3.0"
8
8
  description = "A git-backed project management system."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
11
+ license = "MIT"
11
12
  dependencies = [
12
13
  "click",
13
14
  "jinja2",
@@ -20,6 +21,22 @@ dependencies = [
20
21
  "black",
21
22
  "sphinx",
22
23
  ]
24
+ classifiers = [
25
+ "Development Status :: 3 - Alpha",
26
+ "Environment :: Console",
27
+ "Operating System :: OS Independent",
28
+ "Programming Language :: Python :: 3",
29
+ "Programming Language :: Python :: 3.11",
30
+ "Programming Language :: Python :: 3.12",
31
+ "Programming Language :: Python :: 3.13",
32
+ "Topic :: Software Development :: Bug Tracking",
33
+ "Topic :: Software Development :: Version Control",
34
+ ]
35
+
36
+ [project.urls]
37
+ Homepage = "https://taskul.us"
38
+ Repository = "https://github.com/AnthusAI/Taskulus"
39
+ Issues = "https://github.com/AnthusAI/Taskulus/issues"
23
40
 
24
41
  [project.scripts]
25
42
  tsk = "taskulus.cli:cli"
@@ -0,0 +1,185 @@
1
+ Metadata-Version: 2.4
2
+ Name: taskulus
3
+ Version: 0.3.0
4
+ Summary: A git-backed project management system.
5
+ License-Expression: MIT
6
+ Project-URL: Homepage, https://taskul.us
7
+ Project-URL: Repository, https://github.com/AnthusAI/Taskulus
8
+ Project-URL: Issues, https://github.com/AnthusAI/Taskulus/issues
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Environment :: Console
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Topic :: Software Development :: Bug Tracking
17
+ Classifier: Topic :: Software Development :: Version Control
18
+ Requires-Python: >=3.11
19
+ Description-Content-Type: text/markdown
20
+ Requires-Dist: click
21
+ Requires-Dist: jinja2
22
+ Requires-Dist: pydantic
23
+ Requires-Dist: pyyaml
24
+ Requires-Dist: pydantic-settings
25
+ Requires-Dist: behave
26
+ Requires-Dist: coverage
27
+ Requires-Dist: ruff
28
+ Requires-Dist: black
29
+ Requires-Dist: sphinx
30
+
31
+ # Taskulus
32
+
33
+ **A tiny Jira clone for your repo.**
34
+
35
+ ![Python CI](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/python-ci.svg)
36
+ ![Rust CI](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/rust-ci.svg)
37
+ ![Python Coverage](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/python-coverage.svg)
38
+ ![Rust Coverage](https://raw.githubusercontent.com/AnthusAI/Taskulus/badges/rust-coverage.svg)
39
+
40
+ ## Inspiration & Lineage
41
+
42
+ Taskulus is a spiritual successor to [Beads](https://github.com/steveyegge/beads), inspired by its elegant, domain-specific approach to project management. We are deeply grateful to the Beads author and community for proving that a dedicated cognitive framework for tasks is game-changing.
43
+
44
+ Taskulus builds on this foundation by adapting the model to be a thinner, more native layer over Git—optimizing for AI agents and distributed teams:
45
+
46
+ * **A Thinner Layer over Git**: We removed the secondary SQLite index. The complexity of maintaining and synchronizing a shadow database isn't worth the operational cost. Taskulus reads files directly.
47
+ * **Better Storage Alignment**: Things like "exclusively claiming" a task don't align well with the distributed Git model. We removed them to ensure the tool behaves exactly like the version control system underneath it.
48
+ * **Conflict-Free Storage**: Instead of a single JSON-L file (which guarantees merge conflicts when agents work in parallel), Taskulus stores separate tasks in separate files. This eliminates conflicts and allows deep linking to specific issues from GitHub.
49
+ * **Streamlined Cognitive Model**: Beads is powerful but complex, with 130+ attributes per issue. We streamlined this to a focused core (Status, Priority, Dependencies) to reduce the "context pollution" for AI agents. We want the model to think about the work, not how to use the tracker. The goal is a **helpful cognitive model** that unburdens your mental state rather than adding to it.
50
+ * **AI-Native Nomenclature**: Instead of teaching models new terms like "beads", we use the standard Jira vocabulary (Epics, Tasks, Sub-tasks) that AI models are already extensively pre-trained on. This leverages their existing knowledge graph for better reasoning.
51
+ * **Git-Native Scoping**: We replaced complex "contributor roles" with standard Git patterns. Want local tasks? Just `.gitignore` a folder. Working in a monorepo? Taskulus respects your current directory scope automatically.
52
+
53
+ ## Frictionless Workflow
54
+
55
+ Taskulus is designed to **remove friction**, not add it.
56
+
57
+ * **No Syncing**: There is no secondary database to synchronize. The files on disk are the source of truth. You will never be blocked from pushing code because a background daemon is out of sync.
58
+ * **Git Hooks Help You**: Git hooks should assist your workflow, not interrupt it. Taskulus hooks are designed to be invisible helpers, ensuring data integrity without stopping you from getting work done.
59
+
60
+ For a detailed comparison, see [Taskulus vs. Beads](docs/VS_BEADS.md).
61
+
62
+ ## Why Taskulus?
63
+
64
+ ### 1. The Sleep Factor
65
+ Offload your mental context. Instead of keeping 15 different chat sessions and open loops in your head, tell your agent to "record the current state" into Taskulus. It's a permanent, searchable memory bank for your AI workforce.
66
+
67
+ ### 2. Files are the Database
68
+ - **No SQL Server**: We removed the SQLite daemon entirely. Each command reads the JSON files directly, so there is nothing to synchronize or keep running.
69
+ - **No JSONL Merge Conflicts**: There is no monolithic JSONL file. Every issue has its own JSON document, which eliminates merge conflicts when teams (or agents) edit work in parallel.
70
+ - **No Daemon**: There is no background process to crash or manage.
71
+ - **No API**: Your agents read and write files directly (or use the simple CLI).
72
+
73
+ ### 3. Concurrency Solved
74
+ Unlike other file-based systems that use a single JSONL file (guaranteeing merge conflicts), Taskulus stores **one issue per file**. This allows multiple agents and developers to work in parallel without blocking each other.
75
+
76
+ ### 4. Jira + Confluence for Agents
77
+ Taskulus includes a **Wiki Engine** that renders Markdown templates with live issue data. Your planning documents always reflect the real-time state of the project, giving agents the "forest view" they often lack.
78
+
79
+ ### 5. Zero Cost Footprint
80
+ There are no per-seat licenses or hosted fees. If you have a git repository, you already have the database—and that keeps Taskulus affordable for very large teams (or fleets of agents).
81
+
82
+ ---
83
+
84
+ ## Status: Planning Phase
85
+
86
+ This repository contains the complete vision, implementation plan, and task breakdown for building Taskulus. We are building it in public, using Taskulus (via Beads) to track itself.
87
+
88
+ ## Quick Start
89
+
90
+ ```bash
91
+ # Initialize a new project
92
+ tsk init
93
+
94
+ # Create an issue
95
+ tsk create "Implement the login flow"
96
+
97
+ # List open tasks
98
+ tsk list --status todo
99
+
100
+ # Show details
101
+ tsk show tsk-a1b
102
+ ```
103
+
104
+ ## Daemon Behavior
105
+
106
+ Taskulus uses a just-in-time index daemon for read-heavy commands such as `tsk list`. The CLI auto-starts the daemon when needed, reuses a healthy socket, and removes stale sockets before restarting.
107
+
108
+ To disable daemon mode for a command:
109
+
110
+ ```bash
111
+ TASKULUS_NO_DAEMON=1 tsk list
112
+ ```
113
+
114
+ Operational commands:
115
+
116
+ ```bash
117
+ tsk daemon-status
118
+ tsk daemon-stop
119
+ ```
120
+
121
+ ## Python vs Rust
122
+
123
+ We provide two implementations driven by the same behavior specification:
124
+
125
+ **Choose Python if:**
126
+ - You want easy `pip install` with no compilation
127
+ - You are scripting custom agent workflows
128
+
129
+ **Choose Rust if:**
130
+ - You need maximum performance (sub-millisecond queries)
131
+ - You have a massive repository (> 2000 issues)
132
+
133
+ ## Project Structure
134
+
135
+ ```
136
+ Taskulus/
137
+ |-- planning/
138
+ | |-- VISION.md # Complete specification
139
+ | `-- IMPLEMENTATION_PLAN.md # Detailed technical plan
140
+ |-- specs/ # Shared Gherkin feature files
141
+ |-- python/ # Python implementation
142
+ |-- rust/ # Rust implementation
143
+ |-- apps/ # Public website (Gatsby)
144
+ `-- .beads/ # Project task database
145
+ ```
146
+
147
+ ## Contributing
148
+
149
+ We welcome contributions! Please:
150
+ 1. Pick a task from `bd ready` (we use Beads for bootstrapping).
151
+ 2. Follow the BDD workflow in [AGENTS.md](AGENTS.md).
152
+ 3. Ensure all quality gates pass.
153
+
154
+ ## Testing
155
+
156
+ Run the full quality gates:
157
+
158
+ ```bash
159
+ make check-all
160
+ ```
161
+
162
+ Run only Python checks:
163
+
164
+ ```bash
165
+ make check-python
166
+ ```
167
+
168
+ Run only Rust checks:
169
+
170
+ ```bash
171
+ make check-rust
172
+ ```
173
+
174
+ ## Benchmarking
175
+
176
+ Run index build and cache load benchmarks:
177
+
178
+ ```bash
179
+ python tools/benchmark_index.py
180
+ cd rust && cargo run --release --bin index_benchmark
181
+ ```
182
+
183
+ ## License
184
+
185
+ MIT
taskulus-0.1.0/PKG-INFO DELETED
@@ -1,20 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: taskulus
3
- Version: 0.1.0
4
- Summary: A git-backed project management system.
5
- Requires-Python: >=3.11
6
- Description-Content-Type: text/markdown
7
- Requires-Dist: click
8
- Requires-Dist: jinja2
9
- Requires-Dist: pydantic
10
- Requires-Dist: pyyaml
11
- Requires-Dist: pydantic-settings
12
- Requires-Dist: behave
13
- Requires-Dist: coverage
14
- Requires-Dist: ruff
15
- Requires-Dist: black
16
- Requires-Dist: sphinx
17
-
18
- # Taskulus (Python)
19
-
20
- This file exists for packaging metadata in editable installs. For full project documentation, see the repository README.md.
taskulus-0.1.0/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Taskulus (Python)
2
-
3
- This file exists for packaging metadata in editable installs. For full project documentation, see the repository README.md.
@@ -1,20 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: taskulus
3
- Version: 0.1.0
4
- Summary: A git-backed project management system.
5
- Requires-Python: >=3.11
6
- Description-Content-Type: text/markdown
7
- Requires-Dist: click
8
- Requires-Dist: jinja2
9
- Requires-Dist: pydantic
10
- Requires-Dist: pyyaml
11
- Requires-Dist: pydantic-settings
12
- Requires-Dist: behave
13
- Requires-Dist: coverage
14
- Requires-Dist: ruff
15
- Requires-Dist: black
16
- Requires-Dist: sphinx
17
-
18
- # Taskulus (Python)
19
-
20
- This file exists for packaging metadata in editable installs. For full project documentation, see the repository README.md.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes