workledger-cli 0.6.1__tar.gz → 0.8.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 (85) hide show
  1. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/ask-colleague/SKILL.md +31 -7
  2. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/ask-colleague/prompts/explore.md +10 -0
  3. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/ask-colleague/prompts/review.md +8 -7
  4. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/ask-colleague/prompts/write.md +6 -0
  5. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +302 -36
  6. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.github/workflows/tests.yml +12 -0
  7. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.gitignore +3 -0
  8. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/CHANGELOG.md +36 -0
  9. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/PKG-INFO +4 -2
  10. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/README.md +2 -0
  11. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/pyproject.toml +1 -1
  12. workledger_cli-0.8.0/scripts/sonar-pr-issues.py +168 -0
  13. workledger_cli-0.8.0/tests/test_ledger.py +440 -0
  14. workledger_cli-0.8.0/tests/test_sonar_pr_issues.py +128 -0
  15. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/uv.lock +32 -32
  16. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/cli/__init__.py +4 -0
  17. workledger_cli-0.8.0/workledger/cli/_commands/_store.py +292 -0
  18. workledger_cli-0.8.0/workledger/cli/_commands/append.py +66 -0
  19. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/cli/_commands/learn.py +9 -0
  20. workledger_cli-0.8.0/workledger/cli/_commands/list.py +56 -0
  21. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/cli/_commands/overview.py +2 -0
  22. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/explain/catalog.py +37 -0
  23. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/agent-config/SKILL.md +0 -0
  24. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
  25. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/agent-config/scripts/show.sh +0 -0
  26. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
  27. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
  28. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/challenge/SKILL.md +0 -0
  29. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/cicd/SKILL.md +0 -0
  30. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
  31. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
  32. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
  33. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
  34. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/cicd/scripts/workflow.sh +0 -0
  35. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/communicate/SKILL.md +0 -0
  36. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  37. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  38. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  39. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  40. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
  41. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
  42. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/deviate/SKILL.md +0 -0
  43. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
  44. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
  45. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
  46. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
  47. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/recall/SKILL.md +0 -0
  48. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/recall/scripts/recall.sh +0 -0
  49. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/remember/SKILL.md +0 -0
  50. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/remember/scripts/remember.sh +0 -0
  51. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/run-tests/SKILL.md +0 -0
  52. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
  53. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/scope/SKILL.md +0 -0
  54. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/sonarclaude/SKILL.md +0 -0
  55. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
  56. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/spec-to-plan/SKILL.md +0 -0
  57. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
  58. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/summarize-delivery/SKILL.md +0 -0
  59. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/think/SKILL.md +0 -0
  60. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/think/scripts/think.sh +0 -0
  61. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/version-bump/SKILL.md +0 -0
  62. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills/version-bump/scripts/bump.py +0 -0
  63. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.claude/skills.local.yaml.example +0 -0
  64. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.flake8 +0 -0
  65. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.github/workflows/publish.yml +0 -0
  66. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/.markdownlint-cli2.yaml +0 -0
  67. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/AGENTS.colleague.md +0 -0
  68. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/CLAUDE.md +0 -0
  69. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/LICENSE +0 -0
  70. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/culture.yaml +0 -0
  71. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/docs/skill-sources.md +0 -0
  72. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/sonar-project.properties +0 -0
  73. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/tests/__init__.py +0 -0
  74. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/tests/test_cli.py +0 -0
  75. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/tests/test_cli_introspection.py +0 -0
  76. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/__init__.py +0 -0
  77. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/__main__.py +0 -0
  78. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/cli/_commands/__init__.py +0 -0
  79. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/cli/_commands/cli.py +0 -0
  80. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/cli/_commands/doctor.py +0 -0
  81. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/cli/_commands/explain.py +0 -0
  82. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/cli/_commands/whoami.py +0 -0
  83. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/cli/_errors.py +0 -0
  84. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/cli/_output.py +0 -0
  85. {workledger_cli-0.6.1 → workledger_cli-0.8.0}/workledger/explain/__init__.py +0 -0
@@ -27,7 +27,7 @@ description: >
27
27
  # ask-colleague — lean on colleague as a different mind
28
28
 
29
29
  `ask-colleague` drives the **`colleague`** CLI so a Claude agent can hand a scoped
30
- task to a *different* backend (default: a local vLLM `Qwen3.6-27B` on
30
+ task to a *different* backend (default: a local vLLM `Qwen3.8-27B` on
31
31
  `:8001`). Colleague's model is **not** assumed to be stronger than you — its
32
32
  value is **diversity**. A second, independent mind catches things the author's
33
33
  mind glides past, which is why **review** is the headline verb. Treat it the way
@@ -101,7 +101,9 @@ else an install hint.
101
101
  | `explore "<question or area>"` | Read-only investigation of the repo; the model reads and reports findings. | **None** to your working tree / branch — runs in a throwaway worktree at HEAD; writes only a gradable run artifact under the gitignored `.colleague/` bookkeeping dir. |
102
102
  | `review "<what to focus on>" [--base main]` | A diverse second opinion on the **committed** diff (`<base>...HEAD`). | **None** to your working tree / branch — throwaway worktree, committed changes only; writes only a gradable run artifact under the gitignored `.colleague/` bookkeeping dir. |
103
103
  | `write "<task>" [--apply\|--pr]` | Implement a change. **Previews by default** (throwaway worktree, prints the would-be diff); `--apply` lands a work branch in place; `--pr` pushes + opens a PR. | **None** to your working tree / branch by default (preview); a `colleague/<id>` work branch / PR only with `--apply` / `--pr`. |
104
+ | `plan "<task>"` | Colleague **PLANS** a complex task: it proposes a spec, then a split plan, then fans the waves out to a subagent-colleague workforce (`colleague plan run … --yes`). The *inverse of `/think`* — same arc, but colleague is the planning mind, not Claude. Needs a live backend. | Runs `colleague plan` in `--repo` (not a throwaway worktree): the workforce stage spawns isolated subagent worktrees and can land branches — treat like `write --apply` (gets a user nod). |
104
105
  | `feedback <id\|last> [--rating N]` | **Grade a finished work item** (the ROI loop). With `--rating N` (1–5, plus `--notes`) it records feedback; without, it shows the work item's existing feedback. `last` resolves the most recent work item in `--repo`. | Writes `.colleague/<id>.feedback.json` only when `--rating` is given; read-only otherwise. |
106
+ | `resume <task-id\|last> [--detach]` | **Resume a cut run** — a timed-out / SIGTERM'd / budget-exhausted work item picked back up from its persisted artifact (`colleague work --continue`, lineage on `TaskResult.continued_from`). `last` resolves the most recent work item in `--repo`. `--detach` runs it under `setsid`/`nohup` and returns at once (not `--background`, which drops the continue id — colleague#418). | Continues the ORIGINAL run's `colleague/<id>` work branch; never touches your tree / branch. |
105
107
  | `clean [--dry-run]` | **Reap what a crashed run left behind** (#162): stale/corrupt `colleague/*` branches + orphaned 0-byte `.colleague/` artifacts that can wedge `git fetch`. Scoped strictly to `colleague/*` (never touches an unrelated branch); conservative with `.git/objects` (reports 0-byte loose objects + suggests `git prune`, never deletes them). A thin pass-through to `colleague clean`. | Deletes corrupt `colleague/<id>` refs + 0-byte `.colleague/` artifacts in `--repo`; `--dry-run` changes nothing. |
106
108
 
107
109
  ### Options
@@ -111,9 +113,13 @@ else an install hint.
111
113
  | `--repo PATH` | Target repo (default: `.`). |
112
114
  | `--base BRANCH` | Base for the `review` diff (default: `main`). |
113
115
  | `--engine NAME` | Backend plugin (default: `$COLLEAGUE_ENGINE` or `vllm-openai`). |
114
- | `--model NAME` | Model (default: `$COLLEAGUE_MODEL` or `sakamakismile/Qwen3.6-27B-Text-NVFP4-MTP`). |
116
+ | `--model NAME` | Model (default: `$COLLEAGUE_MODEL` or `unsloth/Qwen3.8-27B-NVFP4`). |
115
117
  | `--base-url URL` | OpenAI base URL (default: `$COLLEAGUE_BASE_URL` or `http://localhost:8001/v1`). |
116
- | `--max-steps N` | Loop step budget (default: 20). |
118
+ | `--role NAME` | Typed subagent role for the run (`explorer`, `reviewer`, `validator`, `planner`, `writer`). Since #416 a top-level `--role explorer` runs at thinking effort **`low`** (off selectable via `--effort off`); other top-level roles keep the acting seat's effort. |
119
+ | `--effort RUNG` | **Thinking effort for the acting seat** (#416): `off` \| `low` \| `medium` \| `high` \| `xhigh` \| `default`. Unset = colleague's own table (acting seat `medium`). `off` sends `enable_thinking:false` — the measured win for small, well-specified briefs (same brief: off 24 s / xhigh 88 s / medium 129 s, all correct — `docs/evidence/2026-08-22-per-seat-thinking-effort-416-results.md`); `xhigh` for open-ended judgement; `default` = the kill-switch (send nothing, the pre-#416 wire). Exported as `COLLEAGUE_CORTEX_REASONING_EFFORT` + `COLLEAGUE_WORKER_REASONING_EFFORT`; validated before the run. |
120
+ | `--seat-effort S=R[,S=R]` | Per-seat override for the other seats (`cortex`, `worker`, `deepthink`, `senses`, `evaluator`, `design`) — e.g. `--seat-effort senses=off,deepthink=xhigh`. Exported as `COLLEAGUE_<SEAT>_REASONING_EFFORT`. Children keep their role table (writer/planner medium, reviewer/validator low, explorer off) unless the parent overrides per delegation. |
121
+ | `--detach` | (`resume`) run detached and return at once; pilot with `monitor` / `guide` / `stop` once the log names the new flight id. |
122
+ | `--max-steps N` | Loop step budget (default: 20). `explore`/`review` select colleague's own native **`explore`**/**`review`** mode profile (`colleague/profiles.py`, applied via `colleague work --mode`) instead of a wrapper-side override — today that profile defaults to 30, since read-only mapping fans out across more files. An explicit `--max-steps N` always overrides the profile's default, in either direction. If the resolved `colleague` predates `--mode` (a stale install on `PATH`), the wrapper falls back to the old caller-side `--max-steps 30` + reserved-steps behavior so it keeps working. |
117
123
  | `--apply` | (`write`) apply the change in place (work branch) instead of previewing. |
118
124
  | `--allow-dirty` | (`write`) allow running on a dirty tree (only matters with `--apply` / `--pr`). |
119
125
  | `--pr` | (`write`) push + open a PR instead of a local work branch (implies `--apply`). |
@@ -155,6 +161,24 @@ keeping stdout valid JSON for a machine consumer while diagnostics stay on stder
155
161
  (or `colleague clean`) to reap it — start with `--dry-run` to see what it would
156
162
  remove. It only ever touches `colleague/*` refs and `.colleague/` artifacts.
157
163
 
164
+ ## Thinking effort and resuming (#416)
165
+
166
+ Colleague resolves a **per-seat thinking effort** where each seat is built,
167
+ never per turn — the acting seat defaults to `medium`, deepthink `xhigh`,
168
+ senses/Talker `off`, children by role (writer/planner `medium`,
169
+ reviewer/validator `low`, explorer `off`). The wrapper exposes the operator
170
+ overrides as `--effort` (acting seat) and `--seat-effort` (any seat); a typo
171
+ fails fast. Rule of thumb from the measurements: **`--effort off` for small,
172
+ well-specified briefs** (5× faster, same result), **leave the default for
173
+ ordinary work**, **`--effort xhigh` for open-ended judgement** (review of a
174
+ subtle diff, a plan). Effort does not rescue a module-sized brief — split the
175
+ request instead (#415).
176
+
177
+ A run cut by a timeout, SIGTERM or an exhausted budget is **resumable**:
178
+ `ask-colleague resume <task-id|last>` continues it from its artifact on the same
179
+ work branch; `--detach` keeps your shell free. Prefer resume over re-dispatch —
180
+ the continuation carries the prior steps and lineage.
181
+
158
182
  ## Piloting a flight
159
183
 
160
184
  Dispatch a drive with `--watch` (on `explore`, `review`, or `write`) to make the
@@ -207,7 +231,7 @@ stop requests take effect on the next iteration rather than interrupting mid-ste
207
231
 
208
232
  ## Provenance
209
233
 
210
- This is a **first-party** colleague skill — colleague is its origin. It is
211
- the inverse of the other skills under `.claude/skills/`, which workledger-cli
212
- vendors *from* guildmaster. See `docs/skill-sources.md`. The `cite, don't import`
213
- policy holds: downstream repos copy it, they don't symlink or depend on it.
234
+ This is a **first-party** colleague skill — colleague is its origin. See
235
+ `docs/skill-sources.md` for the consumer's per-repo skill ledger. The `cite,
236
+ don't import` policy holds: downstream repos copy it, they don't symlink or
237
+ depend on it.
@@ -18,6 +18,16 @@ Rules:
18
18
  report (or you are within a few steps of the budget), STOP reading and call
19
19
  `finish`. Err on the side of finishing early — a focused finding beats endless
20
20
  reading.
21
+ - For a WIDE codebase map (many folders/modules), do NOT read every file in series
22
+ — that exhausts the step budget. Partition the surface by folder and delegate the
23
+ per-folder sub-surveys to the `subagents` tool (one child per folder/subtree, each
24
+ returning its findings), then synthesize their results into your report.
25
+ - NARRATE PROGRESS: with EVERY tool call, write one short line of plain text
26
+ first — what you just learned and what you are checking next. That line rides
27
+ the run's flight feed, so the operator can see where you are instead of a
28
+ silent turn. A long think with nothing written looks like a stall. If you are
29
+ within ~3 steps of the budget, STOP and write the answer-so-far (partial is
30
+ fine, mark it partial) rather than reading one more file.
21
31
 
22
32
  When you are done, call finish with a structured findings report:
23
33
  1. What it is / how it works (with file:line references).
@@ -5,13 +5,8 @@ Focus the review on:
5
5
 
6
6
  $ARGUMENTS
7
7
 
8
- The change under review is the committed diff on this branch versus its base
9
- (`$BASE`). Start by running, read-only:
10
-
11
- git diff $BASE...HEAD --stat
12
- git diff $BASE...HEAD
13
-
14
- then read the touched files for the context you need.
8
+ The diff for this change is ALREADY PROVIDED below the instructions (filtered +
9
+ capped). Read specific files only if you need more context.
15
10
 
16
11
  Rules:
17
12
  - READ-ONLY. Do NOT modify, create, or delete any file. Only read and run
@@ -29,6 +24,12 @@ Rules:
29
24
  NOTHING and wastes the entire drive — so the moment you have enough to write a
30
25
  useful review (or you are within a few steps of the budget), STOP reading and
31
26
  call `finish`. Err on the side of finishing early.
27
+ - NARRATE PROGRESS: with EVERY tool call, write one short line of plain text
28
+ first — what you just learned and what you are checking next. That line rides
29
+ the run's flight feed, so the operator can see where you are instead of a
30
+ silent turn. A long think with nothing written looks like a stall. If you are
31
+ within ~3 steps of the budget, STOP and write the answer-so-far (partial is
32
+ fine, mark it partial) rather than reading one more file.
32
33
 
33
34
  When you are done, call finish with a structured review:
34
35
  1. Correctness risks / likely bugs (with file:line).
@@ -10,6 +10,12 @@ Rules:
10
10
  text file with exactly one trailing newline.
11
11
  - You may read, create, modify files, and run commands as needed.
12
12
  - Don't widen the scope: do exactly what was asked, nothing more.
13
+ - NARRATE PROGRESS: with EVERY tool call, write one short line of plain text
14
+ first — what you just learned and what you are checking next. That line rides
15
+ the run's flight feed, so the operator can see where you are instead of a
16
+ silent turn. A long think with nothing written looks like a stall. If you are
17
+ within ~3 steps of the budget, STOP and write the answer-so-far (partial is
18
+ fine, mark it partial) rather than reading one more file.
13
19
 
14
20
  When you are done, call finish with a short summary of exactly what you changed
15
21
  and why.