taskill 0.1.4__tar.gz → 0.1.6__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.
- {taskill-0.1.4 → taskill-0.1.6}/CHANGELOG.md +41 -0
- {taskill-0.1.4 → taskill-0.1.6}/PKG-INFO +6 -25
- {taskill-0.1.4 → taskill-0.1.6}/README.md +5 -24
- {taskill-0.1.4 → taskill-0.1.6}/SUMD.md +117 -74
- {taskill-0.1.4 → taskill-0.1.6}/SUMR.md +205 -165
- {taskill-0.1.4 → taskill-0.1.6}/TODO.md +1 -1
- taskill-0.1.6/VERSION +1 -0
- {taskill-0.1.4 → taskill-0.1.6}/app.doql.less +1 -1
- {taskill-0.1.4 → taskill-0.1.6}/project/README.md +1 -1
- {taskill-0.1.4 → taskill-0.1.6}/project/analysis.toon.yaml +29 -29
- {taskill-0.1.4 → taskill-0.1.6}/project/calls.mmd +80 -49
- taskill-0.1.6/project/calls.png +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/project/calls.toon.yaml +79 -49
- {taskill-0.1.4 → taskill-0.1.6}/project/calls.yaml +418 -258
- taskill-0.1.6/project/compact_flow.mmd +4 -0
- taskill-0.1.6/project/compact_flow.png +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/project/context.md +141 -133
- {taskill-0.1.4 → taskill-0.1.6}/project/duplication.toon.yaml +5 -5
- {taskill-0.1.4 → taskill-0.1.6}/project/evolution.toon.yaml +6 -26
- taskill-0.1.6/project/flow.mmd +25 -0
- taskill-0.1.6/project/flow.png +0 -0
- taskill-0.1.6/project/index.html +623 -0
- {taskill-0.1.4 → taskill-0.1.6}/project/map.toon.yaml +30 -17
- {taskill-0.1.4 → taskill-0.1.6}/project/mermaid.export +58 -43
- taskill-0.1.6/project/project.toon.yaml +53 -0
- {taskill-0.1.4 → taskill-0.1.6}/project/prompt.txt +2 -2
- {taskill-0.1.4 → taskill-0.1.6}/project.sh +1 -1
- {taskill-0.1.4 → taskill-0.1.6}/pyproject.toml +1 -1
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/__init__.py +1 -1
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/bulk.py +46 -34
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/cli.py +63 -54
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/providers/base.py +21 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/providers/openrouter.py +2 -21
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/providers/windsurf_mcp.py +2 -3
- taskill-0.1.6/src/taskill/triggers.py +110 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/updaters/todo.py +39 -25
- taskill-0.1.4/VERSION +0 -1
- taskill-0.1.4/project/calls.png +0 -0
- taskill-0.1.4/project/compact_flow.mmd +0 -3
- taskill-0.1.4/project/compact_flow.png +0 -0
- taskill-0.1.4/project/flow.mmd +0 -25
- taskill-0.1.4/project/flow.png +0 -0
- taskill-0.1.4/project/index.html +0 -623
- taskill-0.1.4/project/project.toon.yaml +0 -56
- taskill-0.1.4/src/taskill/triggers.py +0 -94
- {taskill-0.1.4 → taskill-0.1.6}/.gitignore +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/.windsurf/workflows/daily-docs-update.md +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/LICENSE +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/ROADMAP.md +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/daily_update.sh +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/examples/ansible-playbook.yml +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/examples/github-action.yml +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/examples/gitlab-ci.yml +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/examples/systemd-timer/taskill.service +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/examples/systemd-timer/taskill.timer +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/goal.yaml +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/planfile.yaml +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/prefact.yaml +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/config.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/core.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/git_state.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/providers/__init__.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/providers/algorithmic.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/state.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/updaters/__init__.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/updaters/base.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/updaters/changelog.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/src/taskill/updaters/readme.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/taskill.yaml +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/testql-scenarios/generated-cli-tests.testql.toon.yaml +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/tests/__init__.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/tests/test_algorithmic.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/tests/test_bulk.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/tests/test_config.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/tests/test_providers.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/tests/test_triggers.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/tests/test_updaters.py +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/tree.sh +0 -0
- {taskill-0.1.4 → taskill-0.1.6}/tree.txt +0 -0
|
@@ -81,6 +81,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
81
81
|
- README: new "Bulk / fleet-wide runs" and "Extending taskill" sections
|
|
82
82
|
- ROADMAP: marked v0.2.1, v0.2.3, and v0.5 baseline as shipped
|
|
83
83
|
|
|
84
|
+
## [0.1.6] - 2026-04-25
|
|
85
|
+
|
|
86
|
+
### Docs
|
|
87
|
+
- Update README.md
|
|
88
|
+
- Update SUMD.md
|
|
89
|
+
- Update SUMR.md
|
|
90
|
+
- Update project/README.md
|
|
91
|
+
- Update project/context.md
|
|
92
|
+
|
|
93
|
+
### Other
|
|
94
|
+
- Update app.doql.less
|
|
95
|
+
- Update project.sh
|
|
96
|
+
- Update project/analysis.toon.yaml
|
|
97
|
+
- Update project/calls.mmd
|
|
98
|
+
- Update project/calls.png
|
|
99
|
+
- Update project/calls.toon.yaml
|
|
100
|
+
- Update project/calls.yaml
|
|
101
|
+
- Update project/compact_flow.mmd
|
|
102
|
+
- Update project/compact_flow.png
|
|
103
|
+
- Update project/duplication.toon.yaml
|
|
104
|
+
- ... and 8 more files
|
|
105
|
+
|
|
106
|
+
## [0.1.5] - 2026-04-25
|
|
107
|
+
|
|
108
|
+
### Docs
|
|
109
|
+
- Update README.md
|
|
110
|
+
- Update SUMD.md
|
|
111
|
+
- Update SUMR.md
|
|
112
|
+
- Update TODO.md
|
|
113
|
+
|
|
114
|
+
### Other
|
|
115
|
+
- Update app.doql.less
|
|
116
|
+
- Update project/analysis.toon.yaml
|
|
117
|
+
- Update project/calls.mmd
|
|
118
|
+
- Update project/calls.png
|
|
119
|
+
- Update project/calls.toon.yaml
|
|
120
|
+
- Update project/calls.yaml
|
|
121
|
+
- Update project/duplication.toon.yaml
|
|
122
|
+
- Update project/index.html
|
|
123
|
+
- Update project/project.toon.yaml
|
|
124
|
+
|
|
84
125
|
## [0.1.4] - 2026-04-25
|
|
85
126
|
|
|
86
127
|
### Docs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: taskill
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.6
|
|
4
4
|
Summary: Daily project hygiene: keep README / CHANGELOG / TODO in sync with reality. LLM-first, algorithmic fallback.
|
|
5
5
|
Project-URL: Homepage, https://github.com/oqlos/taskill
|
|
6
6
|
Project-URL: Issues, https://github.com/oqlos/taskill/issues
|
|
@@ -37,11 +37,11 @@ Description-Content-Type: text/markdown
|
|
|
37
37
|
|
|
38
38
|
## AI Cost Tracking
|
|
39
39
|
|
|
40
|
-
    
|
|
41
|
+
  
|
|
42
42
|
|
|
43
|
-
- 🤖 **LLM usage:** $0.
|
|
44
|
-
- 👤 **Human dev:** ~$
|
|
43
|
+
- 🤖 **LLM usage:** $0.7500 (5 commits)
|
|
44
|
+
- 👤 **Human dev:** ~$439 (4.4h @ $100/h, 30min dedup)
|
|
45
45
|
|
|
46
46
|
Generated on 2026-04-25 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
47
47
|
|
|
@@ -81,22 +81,7 @@ Every run produces three (idempotent) edits:
|
|
|
81
81
|
|
|
82
82
|
1. **`CHANGELOG.md`** — appends new entries under `## [Unreleased]`, grouped by Conventional Commit type (`### Added`, `### Fixed`, `### Performance`, etc.). Uses [Keep a Changelog](https://keepachangelog.com/) layout. Existing entries are deduplicated.
|
|
83
83
|
2. **`TODO.md`** — moves completed items to a `## Done (moved to CHANGELOG)` section, and appends `TODO:` / `FIXME:` markers found in new commit bodies under `## Discovered`.
|
|
84
|
-
3. **`README.md`** — refreshes only the block between `<!-- taskill:status:start
|
|
85
|
-
|
|
86
|
-
## Status
|
|
87
|
-
|
|
88
|
-
_Last updated by [taskill](https://github.com/oqlos/taskill) at 2026-04-25 09:23 UTC_
|
|
89
|
-
|
|
90
|
-
| Metric | Value |
|
|
91
|
-
|---|---|
|
|
92
|
-
| HEAD | `4618c29` |
|
|
93
|
-
| Coverage | — |
|
|
94
|
-
| Failing tests | — |
|
|
95
|
-
| Commits in last cycle | 0 |
|
|
96
|
-
|
|
97
|
-
> No changes were made to the project since the last taskill run.
|
|
98
|
-
|
|
99
|
-
<!-- taskill:status:end -->` markers (HEAD, coverage, failing tests, summary). Never touches the rest of the file.
|
|
84
|
+
3. **`README.md`** — refreshes only the block between `<!-- taskill:status:start -->` and `<!-- taskill:status:end -->` markers (HEAD, coverage, failing tests, summary). Never touches the rest of the file.
|
|
100
85
|
|
|
101
86
|
## Provider chain
|
|
102
87
|
|
|
@@ -342,10 +327,6 @@ SUMR (state) ───────┘
|
|
|
342
327
|
Licensed under Apache-2.0.
|
|
343
328
|
## Status
|
|
344
329
|
|
|
345
|
-
<!-- taskill:status:start -->
|
|
346
|
-
|
|
347
|
-
## Status
|
|
348
|
-
|
|
349
330
|
_Last updated by [taskill](https://github.com/oqlos/taskill) at 2026-04-25 09:23 UTC_
|
|
350
331
|
|
|
351
332
|
| Metric | Value |
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
## AI Cost Tracking
|
|
5
5
|
|
|
6
|
-
    
|
|
7
|
+
  
|
|
8
8
|
|
|
9
|
-
- 🤖 **LLM usage:** $0.
|
|
10
|
-
- 👤 **Human dev:** ~$
|
|
9
|
+
- 🤖 **LLM usage:** $0.7500 (5 commits)
|
|
10
|
+
- 👤 **Human dev:** ~$439 (4.4h @ $100/h, 30min dedup)
|
|
11
11
|
|
|
12
12
|
Generated on 2026-04-25 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
13
13
|
|
|
@@ -47,22 +47,7 @@ Every run produces three (idempotent) edits:
|
|
|
47
47
|
|
|
48
48
|
1. **`CHANGELOG.md`** — appends new entries under `## [Unreleased]`, grouped by Conventional Commit type (`### Added`, `### Fixed`, `### Performance`, etc.). Uses [Keep a Changelog](https://keepachangelog.com/) layout. Existing entries are deduplicated.
|
|
49
49
|
2. **`TODO.md`** — moves completed items to a `## Done (moved to CHANGELOG)` section, and appends `TODO:` / `FIXME:` markers found in new commit bodies under `## Discovered`.
|
|
50
|
-
3. **`README.md`** — refreshes only the block between `<!-- taskill:status:start
|
|
51
|
-
|
|
52
|
-
## Status
|
|
53
|
-
|
|
54
|
-
_Last updated by [taskill](https://github.com/oqlos/taskill) at 2026-04-25 09:23 UTC_
|
|
55
|
-
|
|
56
|
-
| Metric | Value |
|
|
57
|
-
|---|---|
|
|
58
|
-
| HEAD | `4618c29` |
|
|
59
|
-
| Coverage | — |
|
|
60
|
-
| Failing tests | — |
|
|
61
|
-
| Commits in last cycle | 0 |
|
|
62
|
-
|
|
63
|
-
> No changes were made to the project since the last taskill run.
|
|
64
|
-
|
|
65
|
-
<!-- taskill:status:end -->` markers (HEAD, coverage, failing tests, summary). Never touches the rest of the file.
|
|
50
|
+
3. **`README.md`** — refreshes only the block between `<!-- taskill:status:start -->` and `<!-- taskill:status:end -->` markers (HEAD, coverage, failing tests, summary). Never touches the rest of the file.
|
|
66
51
|
|
|
67
52
|
## Provider chain
|
|
68
53
|
|
|
@@ -308,10 +293,6 @@ SUMR (state) ───────┘
|
|
|
308
293
|
Licensed under Apache-2.0.
|
|
309
294
|
## Status
|
|
310
295
|
|
|
311
|
-
<!-- taskill:status:start -->
|
|
312
|
-
|
|
313
|
-
## Status
|
|
314
|
-
|
|
315
296
|
_Last updated by [taskill](https://github.com/oqlos/taskill) at 2026-04-25 09:23 UTC_
|
|
316
297
|
|
|
317
298
|
| Metric | Value |
|
|
@@ -20,7 +20,7 @@ Daily project hygiene: keep README / CHANGELOG / TODO in sync with reality. LLM-
|
|
|
20
20
|
## Metadata
|
|
21
21
|
|
|
22
22
|
- **name**: `taskill`
|
|
23
|
-
- **version**: `0.1.
|
|
23
|
+
- **version**: `0.1.5`
|
|
24
24
|
- **python_requires**: `>=3.10`
|
|
25
25
|
- **license**: Apache-2.0
|
|
26
26
|
- **ai_model**: `openrouter/qwen/qwen3-coder-next`
|
|
@@ -40,7 +40,7 @@ SUMD (description) → DOQL/source (code) → taskfile (automation) → testql (
|
|
|
40
40
|
|
|
41
41
|
app {
|
|
42
42
|
name: taskill;
|
|
43
|
-
version: 0.1.
|
|
43
|
+
version: 0.1.5;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
dependencies {
|
|
@@ -100,7 +100,7 @@ LOG[3]{message}:
|
|
|
100
100
|
```yaml
|
|
101
101
|
project:
|
|
102
102
|
name: taskill
|
|
103
|
-
version: 0.1.
|
|
103
|
+
version: 0.1.5
|
|
104
104
|
env: local
|
|
105
105
|
```
|
|
106
106
|
|
|
@@ -166,10 +166,10 @@ pip install -e .[dev]
|
|
|
166
166
|
### `project/map.toon.yaml`
|
|
167
167
|
|
|
168
168
|
```toon markpact:analysis path=project/map.toon.yaml
|
|
169
|
-
# taskill | 29f
|
|
170
|
-
# stats:
|
|
171
|
-
# alerts[5]: CC
|
|
172
|
-
# hotspots[5]: bulk_run fan=
|
|
169
|
+
# taskill | 29f 3338L | python:25,shell:3,less:1 | 2026-04-25
|
|
170
|
+
# stats: 115 func | 22 cls | 29 mod | CC̄=3.6 | critical:4 | cycles:0
|
|
171
|
+
# alerts[5]: CC _print_bulk_table=13; CC _apply_filters=12; CC _print_run_result=12; CC status=11; CC _scan=9
|
|
172
|
+
# hotspots[5]: bulk_run fan=13; status fan=12; load_config fan=12; run fan=10; bulk_run_cmd fan=10
|
|
173
173
|
# evolution: baseline
|
|
174
174
|
# Keys: M=modules, D=details, i=imports, e=exports, c=classes, f=functions, m=methods
|
|
175
175
|
M[29]:
|
|
@@ -177,23 +177,23 @@ M[29]:
|
|
|
177
177
|
daily_update.sh,94
|
|
178
178
|
project.sh,47
|
|
179
179
|
src/taskill/__init__.py,31
|
|
180
|
-
src/taskill/bulk.py,
|
|
181
|
-
src/taskill/cli.py,
|
|
180
|
+
src/taskill/bulk.py,262
|
|
181
|
+
src/taskill/cli.py,357
|
|
182
182
|
src/taskill/config.py,171
|
|
183
183
|
src/taskill/core.py,212
|
|
184
184
|
src/taskill/git_state.py,148
|
|
185
185
|
src/taskill/providers/__init__.py,76
|
|
186
186
|
src/taskill/providers/algorithmic.py,156
|
|
187
|
-
src/taskill/providers/base.py,
|
|
188
|
-
src/taskill/providers/openrouter.py,
|
|
189
|
-
src/taskill/providers/windsurf_mcp.py,
|
|
187
|
+
src/taskill/providers/base.py,127
|
|
188
|
+
src/taskill/providers/openrouter.py,96
|
|
189
|
+
src/taskill/providers/windsurf_mcp.py,135
|
|
190
190
|
src/taskill/state.py,43
|
|
191
|
-
src/taskill/triggers.py,
|
|
191
|
+
src/taskill/triggers.py,111
|
|
192
192
|
src/taskill/updaters/__init__.py,60
|
|
193
193
|
src/taskill/updaters/base.py,45
|
|
194
194
|
src/taskill/updaters/changelog.py,120
|
|
195
195
|
src/taskill/updaters/readme.py,100
|
|
196
|
-
src/taskill/updaters/todo.py,
|
|
196
|
+
src/taskill/updaters/todo.py,128
|
|
197
197
|
tests/__init__.py,1
|
|
198
198
|
tests/test_algorithmic.py,94
|
|
199
199
|
tests/test_bulk.py,280
|
|
@@ -205,21 +205,26 @@ M[29]:
|
|
|
205
205
|
D:
|
|
206
206
|
src/taskill/__init__.py:
|
|
207
207
|
src/taskill/bulk.py:
|
|
208
|
-
e: find_repos,_scan,resolve_repo_config,_rebase_config,bulk_run,BulkResult
|
|
208
|
+
e: find_repos,_scan,resolve_repo_config,_rebase_config,_load_shared_config,_apply_filters,_run_single_repo,bulk_run,BulkResult
|
|
209
209
|
BulkResult: total_repos(0),ran_count(0),changed_count(0),as_dict(0),summary(0) # Aggregate result of running taskill across multiple repos.
|
|
210
210
|
find_repos(root;max_depth)
|
|
211
211
|
_scan(directory;repos;depth;max_depth)
|
|
212
212
|
resolve_repo_config(repo;shared_config)
|
|
213
213
|
_rebase_config(base;new_root)
|
|
214
|
+
_load_shared_config(shared_config)
|
|
215
|
+
_apply_filters(repos;repo_filter;max_projects)
|
|
216
|
+
_run_single_repo(repo;shared_cfg;force;dry_run)
|
|
214
217
|
bulk_run(root;shared_config)
|
|
215
218
|
src/taskill/cli.py:
|
|
216
|
-
e: _setup_logging,main,run,status,init,release,bulk_run_cmd,clean_todo
|
|
219
|
+
e: _setup_logging,main,_print_run_result,run,status,init,release,_print_bulk_table,bulk_run_cmd,clean_todo
|
|
217
220
|
_setup_logging(verbose)
|
|
218
221
|
main(ctx;verbose;config)
|
|
222
|
+
_print_run_result(result)
|
|
219
223
|
run(ctx;force;dry_run;as_json)
|
|
220
224
|
status(ctx;as_json)
|
|
221
225
|
init(force)
|
|
222
226
|
release(version;changelog)
|
|
227
|
+
_print_bulk_table(result)
|
|
223
228
|
bulk_run_cmd(root;shared_config;max_depth;max_projects;force;dry_run;as_json;repo_filter)
|
|
224
229
|
clean_todo(todo)
|
|
225
230
|
src/taskill/config.py:
|
|
@@ -253,14 +258,15 @@ D:
|
|
|
253
258
|
e: AlgorithmicProvider
|
|
254
259
|
AlgorithmicProvider: is_available(0),generate(1),_format_commit(1),_find_completed_todos(2),_extract_new_todos(1)
|
|
255
260
|
src/taskill/providers/base.py:
|
|
256
|
-
e: build_user_prompt,ProviderError,GeneratedDocs,Provider
|
|
261
|
+
e: build_user_prompt,parse_json_loosely,ProviderError,GeneratedDocs,Provider
|
|
257
262
|
ProviderError: # Provider failed — chain falls through to next provider.
|
|
258
263
|
GeneratedDocs: __post_init__(0) # What every provider returns.
|
|
259
264
|
Provider: __init__(1),is_available(0),generate(1) # Abstract provider — produces docs from a project snapshot.
|
|
260
265
|
build_user_prompt(context)
|
|
266
|
+
parse_json_loosely(text)
|
|
261
267
|
src/taskill/providers/openrouter.py:
|
|
262
268
|
e: _normalize_model,OpenRouterProvider
|
|
263
|
-
OpenRouterProvider: is_available(0),generate(1)
|
|
269
|
+
OpenRouterProvider: is_available(0),generate(1)
|
|
264
270
|
_normalize_model(model)
|
|
265
271
|
src/taskill/providers/windsurf_mcp.py:
|
|
266
272
|
e: _mcp_lib_present,_candidate_endpoints,WindsurfMcpProvider
|
|
@@ -273,8 +279,15 @@ D:
|
|
|
273
279
|
load_state(path)
|
|
274
280
|
save_state(path;state)
|
|
275
281
|
src/taskill/triggers.py:
|
|
276
|
-
e: evaluate,TriggerEvaluation
|
|
282
|
+
e: _check_time,_check_commits,_check_changed_files,_check_coverage,_check_failed_tests,_check_sumd,_check_watched_files,evaluate,TriggerEvaluation
|
|
277
283
|
TriggerEvaluation: summary(0)
|
|
284
|
+
_check_time(state;triggers;reasons;skipped)
|
|
285
|
+
_check_commits(snapshot;triggers;reasons;skipped)
|
|
286
|
+
_check_changed_files(snapshot;triggers;reasons;skipped)
|
|
287
|
+
_check_coverage(snapshot;state;triggers;reasons;skipped)
|
|
288
|
+
_check_failed_tests(snapshot;state;triggers;reasons)
|
|
289
|
+
_check_sumd(snapshot;state;reasons)
|
|
290
|
+
_check_watched_files(triggers;state;project_root;reasons)
|
|
278
291
|
evaluate(triggers;state;snapshot;project_root)
|
|
279
292
|
src/taskill/updaters/__init__.py:
|
|
280
293
|
e: discover_updaters
|
|
@@ -295,7 +308,7 @@ D:
|
|
|
295
308
|
update_readme(path;snapshot;summary)
|
|
296
309
|
src/taskill/updaters/todo.py:
|
|
297
310
|
e: update_todo,empty_todo,TodoUpdater
|
|
298
|
-
TodoUpdater: apply(3),_update_todo(3) # Updater for TODO.md files.
|
|
311
|
+
TodoUpdater: apply(3),_partition_lines(2),_dedup_new_items(2),_assemble_output(3),_update_todo(3) # Updater for TODO.md files.
|
|
299
312
|
update_todo(path;completed_lines;new_items)
|
|
300
313
|
empty_todo(path;header)
|
|
301
314
|
tests/__init__.py:
|
|
@@ -379,82 +392,94 @@ D:
|
|
|
379
392
|
|
|
380
393
|
## Call Graph
|
|
381
394
|
|
|
382
|
-
*
|
|
395
|
+
*57 nodes · 50 edges · 14 modules · CC̄=1.9*
|
|
383
396
|
|
|
384
397
|
### Hubs (by degree)
|
|
385
398
|
|
|
386
399
|
| Function | CC | in | out | total |
|
|
387
400
|
|----------|----|----|-----|-------|
|
|
388
401
|
| `load_config` *(in src.taskill.config)* | 8 | 6 | 35 | **41** |
|
|
389
|
-
| `bulk_run_cmd` *(in src.taskill.cli)* | 17 ⚠ | 0 | 38 | **38** |
|
|
390
|
-
| `run` *(in src.taskill.cli)* | 16 ⚠ | 0 | 32 | **32** |
|
|
391
402
|
| `generate` *(in src.taskill.providers.windsurf_mcp.WindsurfMcpProvider)* | 7 | 0 | 32 | **32** |
|
|
392
403
|
| `generate` *(in src.taskill.providers.openrouter.OpenRouterProvider)* | 6 | 0 | 27 | **27** |
|
|
393
|
-
| `bulk_run` *(in src.taskill.bulk)* | 17 ⚠ | 1 | 26 | **27** |
|
|
394
|
-
| `evaluate` *(in src.taskill.triggers)* | 21 ⚠ | 2 | 23 | **25** |
|
|
395
404
|
| `status` *(in src.taskill.cli)* | 11 ⚠ | 0 | 25 | **25** |
|
|
405
|
+
| `_print_run_result` *(in src.taskill.cli)* | 12 ⚠ | 1 | 20 | **21** |
|
|
406
|
+
| `run` *(in src.taskill.core.Taskill)* | 11 ⚠ | 0 | 20 | **20** |
|
|
407
|
+
| `bulk_run_cmd` *(in src.taskill.cli)* | 5 | 0 | 20 | **20** |
|
|
408
|
+
| `collect_snapshot` *(in src.taskill.git_state)* | 3 | 1 | 13 | **14** |
|
|
396
409
|
|
|
397
410
|
```toon markpact:analysis path=project/calls.toon.yaml
|
|
398
411
|
# code2llm call graph | /home/tom/github/semcod/taskill
|
|
399
|
-
# nodes:
|
|
400
|
-
# CC̄=
|
|
412
|
+
# nodes: 57 | edges: 50 | modules: 14
|
|
413
|
+
# CC̄=1.9
|
|
401
414
|
|
|
402
415
|
HUBS[20]:
|
|
403
416
|
src.taskill.config.load_config
|
|
404
417
|
CC=8 in:6 out:35 total:41
|
|
405
|
-
src.taskill.cli.bulk_run_cmd
|
|
406
|
-
CC=17 in:0 out:38 total:38
|
|
407
|
-
src.taskill.cli.run
|
|
408
|
-
CC=16 in:0 out:32 total:32
|
|
409
418
|
src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate
|
|
410
419
|
CC=7 in:0 out:32 total:32
|
|
411
420
|
src.taskill.providers.openrouter.OpenRouterProvider.generate
|
|
412
421
|
CC=6 in:0 out:27 total:27
|
|
413
|
-
src.taskill.bulk.bulk_run
|
|
414
|
-
CC=17 in:1 out:26 total:27
|
|
415
|
-
src.taskill.triggers.evaluate
|
|
416
|
-
CC=21 in:2 out:23 total:25
|
|
417
422
|
src.taskill.cli.status
|
|
418
423
|
CC=11 in:0 out:25 total:25
|
|
424
|
+
src.taskill.cli._print_run_result
|
|
425
|
+
CC=12 in:1 out:20 total:21
|
|
419
426
|
src.taskill.core.Taskill.run
|
|
420
427
|
CC=11 in:0 out:20 total:20
|
|
428
|
+
src.taskill.cli.bulk_run_cmd
|
|
429
|
+
CC=5 in:0 out:20 total:20
|
|
421
430
|
src.taskill.git_state.collect_snapshot
|
|
422
431
|
CC=3 in:1 out:13 total:14
|
|
432
|
+
src.taskill.bulk.bulk_run
|
|
433
|
+
CC=3 in:0 out:14 total:14
|
|
434
|
+
src.taskill.cli.run
|
|
435
|
+
CC=6 in:0 out:13 total:13
|
|
423
436
|
src.taskill.core.Taskill._apply
|
|
424
437
|
CC=4 in:0 out:12 total:12
|
|
425
438
|
src.taskill.git_state.read_coverage
|
|
426
439
|
CC=7 in:1 out:11 total:12
|
|
427
440
|
src.taskill.updaters.readme.ReadmeUpdater._update_readme
|
|
428
441
|
CC=6 in:0 out:11 total:11
|
|
429
|
-
src.taskill.
|
|
430
|
-
CC=
|
|
442
|
+
src.taskill.triggers.evaluate
|
|
443
|
+
CC=3 in:0 out:10 total:10
|
|
444
|
+
src.taskill.git_state.read_failed_tests
|
|
445
|
+
CC=5 in:1 out:8 total:9
|
|
431
446
|
src.taskill.bulk._scan
|
|
432
447
|
CC=9 in:2 out:7 total:9
|
|
433
448
|
src.taskill.git_state.commits_since
|
|
434
449
|
CC=7 in:1 out:8 total:9
|
|
435
|
-
src.taskill.
|
|
436
|
-
CC=
|
|
450
|
+
src.taskill.bulk._apply_filters
|
|
451
|
+
CC=12 in:1 out:8 total:9
|
|
437
452
|
src.taskill.cli.release
|
|
438
453
|
CC=2 in:0 out:8 total:8
|
|
439
|
-
src.taskill.providers.
|
|
440
|
-
CC=
|
|
441
|
-
src.taskill.state.load_state
|
|
442
|
-
CC=3 in:1 out:6 total:7
|
|
454
|
+
src.taskill.providers.base.parse_json_loosely
|
|
455
|
+
CC=4 in:2 out:6 total:8
|
|
443
456
|
|
|
444
457
|
MODULES:
|
|
445
|
-
|
|
458
|
+
project.map.toon [7 funcs]
|
|
459
|
+
_candidate_endpoints CC=0 out:0
|
|
460
|
+
_mcp_lib_present CC=0 out:0
|
|
461
|
+
_normalize_model CC=0 out:0
|
|
462
|
+
bulk_run CC=0 out:0
|
|
463
|
+
empty_todo CC=0 out:0
|
|
464
|
+
evaluate CC=0 out:0
|
|
465
|
+
update_todo CC=0 out:0
|
|
466
|
+
src.taskill.bulk [8 funcs]
|
|
467
|
+
_apply_filters CC=12 out:8
|
|
468
|
+
_load_shared_config CC=4 out:5
|
|
446
469
|
_rebase_config CC=1 out:3
|
|
470
|
+
_run_single_repo CC=2 out:3
|
|
447
471
|
_scan CC=9 out:7
|
|
448
|
-
bulk_run CC=
|
|
472
|
+
bulk_run CC=3 out:14
|
|
449
473
|
find_repos CC=2 out:5
|
|
450
474
|
resolve_repo_config CC=4 out:4
|
|
451
|
-
src.taskill.cli [
|
|
475
|
+
src.taskill.cli [8 funcs]
|
|
476
|
+
_print_run_result CC=12 out:20
|
|
452
477
|
_setup_logging CC=2 out:1
|
|
453
|
-
bulk_run_cmd CC=
|
|
478
|
+
bulk_run_cmd CC=5 out:20
|
|
454
479
|
clean_todo CC=1 out:6
|
|
455
480
|
main CC=1 out:6
|
|
456
481
|
release CC=2 out:8
|
|
457
|
-
run CC=
|
|
482
|
+
run CC=6 out:13
|
|
458
483
|
status CC=11 out:25
|
|
459
484
|
src.taskill.config [1 funcs]
|
|
460
485
|
load_config CC=8 out:35
|
|
@@ -476,18 +501,24 @@ MODULES:
|
|
|
476
501
|
src.taskill.providers [2 funcs]
|
|
477
502
|
build_chain CC=4 out:4
|
|
478
503
|
discover_providers CC=6 out:7
|
|
479
|
-
src.taskill.providers.
|
|
504
|
+
src.taskill.providers.base [1 funcs]
|
|
505
|
+
parse_json_loosely CC=4 out:6
|
|
506
|
+
src.taskill.providers.openrouter [1 funcs]
|
|
480
507
|
generate CC=6 out:27
|
|
481
|
-
|
|
482
|
-
src.taskill.providers.windsurf_mcp [4 funcs]
|
|
508
|
+
src.taskill.providers.windsurf_mcp [2 funcs]
|
|
483
509
|
generate CC=7 out:32
|
|
484
510
|
is_available CC=2 out:3
|
|
485
|
-
_candidate_endpoints CC=5 out:7
|
|
486
|
-
_mcp_lib_present CC=2 out:0
|
|
487
511
|
src.taskill.state [1 funcs]
|
|
488
512
|
load_state CC=3 out:6
|
|
489
|
-
src.taskill.triggers [
|
|
490
|
-
|
|
513
|
+
src.taskill.triggers [8 funcs]
|
|
514
|
+
_check_changed_files CC=2 out:3
|
|
515
|
+
_check_commits CC=2 out:3
|
|
516
|
+
_check_coverage CC=5 out:3
|
|
517
|
+
_check_failed_tests CC=5 out:1
|
|
518
|
+
_check_sumd CC=3 out:1
|
|
519
|
+
_check_time CC=3 out:5
|
|
520
|
+
_check_watched_files CC=5 out:4
|
|
521
|
+
evaluate CC=3 out:10
|
|
491
522
|
src.taskill.updaters.changelog [2 funcs]
|
|
492
523
|
release_unreleased CC=4 out:6
|
|
493
524
|
update_changelog CC=1 out:2
|
|
@@ -495,17 +526,8 @@ MODULES:
|
|
|
495
526
|
_update_readme CC=6 out:11
|
|
496
527
|
render_status_block CC=6 out:5
|
|
497
528
|
update_readme CC=1 out:2
|
|
498
|
-
src.taskill.updaters.todo [2 funcs]
|
|
499
|
-
empty_todo CC=1 out:1
|
|
500
|
-
update_todo CC=1 out:2
|
|
501
529
|
|
|
502
530
|
EDGES:
|
|
503
|
-
src.taskill.cli.main → src.taskill.cli._setup_logging
|
|
504
|
-
src.taskill.cli.run → src.taskill.config.load_config
|
|
505
|
-
src.taskill.cli.status → src.taskill.config.load_config
|
|
506
|
-
src.taskill.cli.release → src.taskill.updaters.changelog.release_unreleased
|
|
507
|
-
src.taskill.cli.bulk_run_cmd → src.taskill.bulk.bulk_run
|
|
508
|
-
src.taskill.cli.clean_todo → src.taskill.updaters.todo.empty_todo
|
|
509
531
|
src.taskill.git_state.head_sha → src.taskill.git_state._run
|
|
510
532
|
src.taskill.git_state.commits_since → src.taskill.git_state._run
|
|
511
533
|
src.taskill.git_state.changed_files_since → src.taskill.git_state._run
|
|
@@ -517,24 +539,45 @@ EDGES:
|
|
|
517
539
|
src.taskill.git_state.collect_snapshot → src.taskill.git_state.file_hash
|
|
518
540
|
src.taskill.core.Taskill.__init__ → src.taskill.state.load_state
|
|
519
541
|
src.taskill.core.Taskill.__init__ → src.taskill.config.load_config
|
|
520
|
-
src.taskill.core.Taskill.run →
|
|
542
|
+
src.taskill.core.Taskill.run → project.map.toon.evaluate
|
|
521
543
|
src.taskill.core.Taskill.run → src.taskill.providers.build_chain
|
|
522
|
-
src.taskill.core.Taskill.status →
|
|
544
|
+
src.taskill.core.Taskill.status → project.map.toon.evaluate
|
|
523
545
|
src.taskill.core.Taskill._snapshot → src.taskill.git_state.collect_snapshot
|
|
524
546
|
src.taskill.core.Taskill._apply → src.taskill.updaters.changelog.update_changelog
|
|
525
|
-
src.taskill.core.Taskill._apply →
|
|
547
|
+
src.taskill.core.Taskill._apply → project.map.toon.update_todo
|
|
526
548
|
src.taskill.core.Taskill._apply → src.taskill.updaters.readme.update_readme
|
|
549
|
+
src.taskill.updaters.readme.ReadmeUpdater._update_readme → src.taskill.updaters.readme.render_status_block
|
|
550
|
+
src.taskill.providers.build_chain → src.taskill.providers.discover_providers
|
|
551
|
+
src.taskill.providers.openrouter.OpenRouterProvider.generate → project.map.toon._normalize_model
|
|
552
|
+
src.taskill.providers.openrouter.OpenRouterProvider.generate → src.taskill.providers.base.parse_json_loosely
|
|
553
|
+
src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.is_available → project.map.toon._mcp_lib_present
|
|
554
|
+
src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.is_available → project.map.toon._candidate_endpoints
|
|
555
|
+
src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate → project.map.toon._candidate_endpoints
|
|
556
|
+
src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate → src.taskill.providers.base.parse_json_loosely
|
|
557
|
+
src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate → project.map.toon._mcp_lib_present
|
|
558
|
+
src.taskill.triggers.evaluate → src.taskill.triggers._check_time
|
|
559
|
+
src.taskill.triggers.evaluate → src.taskill.triggers._check_commits
|
|
560
|
+
src.taskill.triggers.evaluate → src.taskill.triggers._check_changed_files
|
|
561
|
+
src.taskill.triggers.evaluate → src.taskill.triggers._check_coverage
|
|
562
|
+
src.taskill.triggers.evaluate → src.taskill.triggers._check_failed_tests
|
|
563
|
+
src.taskill.triggers.evaluate → src.taskill.triggers._check_sumd
|
|
564
|
+
src.taskill.triggers.evaluate → src.taskill.triggers._check_watched_files
|
|
527
565
|
src.taskill.bulk.find_repos → src.taskill.bulk._scan
|
|
528
566
|
src.taskill.bulk.resolve_repo_config → src.taskill.config.load_config
|
|
529
567
|
src.taskill.bulk.resolve_repo_config → src.taskill.bulk._rebase_config
|
|
568
|
+
src.taskill.bulk._load_shared_config → src.taskill.config.load_config
|
|
569
|
+
src.taskill.bulk._run_single_repo → src.taskill.bulk.resolve_repo_config
|
|
570
|
+
src.taskill.bulk.bulk_run → src.taskill.bulk._load_shared_config
|
|
530
571
|
src.taskill.bulk.bulk_run → src.taskill.bulk.find_repos
|
|
531
|
-
src.taskill.
|
|
532
|
-
src.taskill.
|
|
533
|
-
src.taskill.
|
|
534
|
-
src.taskill.
|
|
535
|
-
src.taskill.
|
|
536
|
-
src.taskill.
|
|
537
|
-
src.taskill.
|
|
572
|
+
src.taskill.bulk.bulk_run → src.taskill.bulk._apply_filters
|
|
573
|
+
src.taskill.bulk.bulk_run → src.taskill.bulk._run_single_repo
|
|
574
|
+
src.taskill.cli.main → src.taskill.cli._setup_logging
|
|
575
|
+
src.taskill.cli.run → src.taskill.config.load_config
|
|
576
|
+
src.taskill.cli.run → src.taskill.cli._print_run_result
|
|
577
|
+
src.taskill.cli.status → src.taskill.config.load_config
|
|
578
|
+
src.taskill.cli.release → src.taskill.updaters.changelog.release_unreleased
|
|
579
|
+
src.taskill.cli.bulk_run_cmd → project.map.toon.bulk_run
|
|
580
|
+
src.taskill.cli.clean_todo → project.map.toon.empty_todo
|
|
538
581
|
```
|
|
539
582
|
|
|
540
583
|
## Test Contracts
|