Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
775 commits
Select commit Hold shift + click to select a range
9e29e7e
fix(#792): agents/skills list --flag silently returned empty success;…
code-yeongyu May 27, 2026
9fcc569
fix(#793): plugins list --flag silent success + uninstall not-found h…
code-yeongyu May 27, 2026
aedd0df
fix(#794): plugins install not-found path returns typed plugin_source…
code-yeongyu May 27, 2026
3ff18c4
fix(#795): skill_not_found and unsupported_skills_action now return n…
code-yeongyu May 27, 2026
9a2a461
fix(#796): agents/skills show <name> <extra> returned wrong not-found…
code-yeongyu May 27, 2026
3b4490d
fix: plugins extra-arg errors now return non-null hint via newline-de…
code-yeongyu May 27, 2026
cb36580
fix: empty-prompt error now returns non-null hint via newline-delimit…
code-yeongyu May 27, 2026
8a75af4
test: add unit test coverage for invalid_history_count and unknown_op…
code-yeongyu May 27, 2026
711d182
docs(roadmap): add #786 installed binary provenance gap (#3126)
Yeachan-Heo May 27, 2026
38c2595
docs(roadmap): add deferred entries #798-#800 (plugins extra-arg, emp…
code-yeongyu May 27, 2026
64ed2ad
fix(#801): diff non-git-dir error envelope now includes error_kind, h…
code-yeongyu May 27, 2026
aa5f117
fix(#802): four resume-mode and broad-cwd error envelopes now include…
code-yeongyu May 27, 2026
7ef7cbf
fix(#803): agents/skills/plugins list --flag in text mode silently re…
code-yeongyu May 27, 2026
2423b1f
fix(#804): agents/skills show <name> <extra> in text mode returned wr…
code-yeongyu May 27, 2026
dbcb5af
fix(#805): skills show <not-found> in text mode silently returned emp…
code-yeongyu May 27, 2026
0d61693
fix(#3129): handle trailing json format for diff errors (#3161)
Yeachan-Heo May 27, 2026
8330750
fix(#806): plugins show <not-found> in text mode returned empty succe…
code-yeongyu May 27, 2026
b5473bd
fix: recover from llama.cpp context overflow and reqwest SSE decode f…
petterreinholdtsen May 27, 2026
1235455
docs(roadmap): add #807 model json hang (#3163)
Yeachan-Heo May 27, 2026
3d0fb83
docs(roadmap): add #808 control-plane json hangs (#3166)
Yeachan-Heo May 27, 2026
7cbb75e
docs(roadmap): add #809 help mcp plugin json hangs (#3168)
Yeachan-Heo May 27, 2026
8e0b261
docs(roadmap): add #810 json stdout warning contamination (#3169)
Yeachan-Heo May 27, 2026
97e70dd
docs(roadmap): add #811 json error envelope nontty hangs (#3171)
Yeachan-Heo May 27, 2026
1d1b145
fix: add roadmap next-id help handling (#3172)
Yeachan-Heo May 27, 2026
f1db51d
fix: reject extra roadmap helper paths (#3173)
Yeachan-Heo May 27, 2026
56b04f4
fix: make cc2 generator missing source error concise (#3174)
Yeachan-Heo May 27, 2026
4087917
fix: make cc2 validator board read errors concise (#3175)
Yeachan-Heo May 27, 2026
7499ea5
fix: resolve cc2 wrapper tools from script root (#3176)
Yeachan-Heo May 27, 2026
9dd7847
fix: suppress partial cc2 wrapper validate pass output (#3177)
Yeachan-Heo May 28, 2026
71bbeca
fix: avoid cc2 generator dirs on missing source (#3178)
Yeachan-Heo May 28, 2026
3e4cada
fix: make cc2 validator directory board error concise (#3179)
Yeachan-Heo May 28, 2026
ae2d591
fix: make cc2 renderer path errors concise (#3180)
Yeachan-Heo May 28, 2026
c4fcec4
fix: add dogfood build help handling (#3181)
Yeachan-Heo May 28, 2026
2118d90
docs: use trap cleanup in dogfood build guidance (#3182)
Yeachan-Heo May 28, 2026
a8aaf66
docs: quote dogfood build trap cleanup guidance (#3183)
Yeachan-Heo May 28, 2026
d3a762e
Keep doctor help machine-discoverable locally (#3184)
Yeachan-Heo May 28, 2026
5f74f42
test: cover doctor help JSON flag order (#3185)
Yeachan-Heo May 28, 2026
57abe5b
docs: record argv-safe dogfood probe gap (#3186)
Yeachan-Heo May 28, 2026
5cc686a
docs: record trailing json inventory timeout (#3187)
Yeachan-Heo May 28, 2026
e4ca642
docs: verify trailing json inventory gap resolved (#3188)
Yeachan-Heo May 28, 2026
4c23f05
docs: record config json warning duplication (#3189)
Yeachan-Heo May 28, 2026
367e56f
Avoid duplicate config warnings for JSON consumers (#3190)
Yeachan-Heo May 28, 2026
0c747e6
docs: record global json warning leak (#3191)
Yeachan-Heo May 28, 2026
11f052a
Suppress config warnings on JSON local surfaces (#3192)
Yeachan-Heo May 28, 2026
f0facc4
docs: record plugins trailing dash json routing (#3193)
Yeachan-Heo May 28, 2026
6a434b7
Route plugins list JSON parse errors to stdout (#3194)
Yeachan-Heo May 28, 2026
e6aa5c6
docs: record AGENTS.md and .claude/CLAUDE.md instruction cascade gap …
code-yeongyu May 28, 2026
7797b54
docs: record export session-not-found JSON stderr routing gap (#819)
code-yeongyu May 29, 2026
558eb19
docs: record interactive_only error class JSON stderr routing gap (#820)
code-yeongyu May 29, 2026
0bf0681
docs: record status/sandbox/system-prompt JSON stderr deprecation lea…
code-yeongyu May 29, 2026
7137e84
docs: record unknown subcommand falls through to provider startup (#822)
code-yeongyu May 29, 2026
de133ae
docs: record prompt missing-text JSON stderr routing gap (#823)
code-yeongyu May 29, 2026
6e53658
docs: extend #821 - config/providers also leak deprecation warning in…
code-yeongyu May 29, 2026
a304d7c
fix: route all JSON-mode abort envelopes to stdout (#819 #820 #823) (…
code-yeongyu May 29, 2026
8f6eb87
docs: record #824 - global settings-load deprecation leaks to stderr …
code-yeongyu May 29, 2026
2468c7c
fix: suppress config deprecation stderr in JSON mode globally (#824)
code-yeongyu May 29, 2026
05cfa1e
fix: unknown single-word subcommand emits command_not_found instead o…
code-yeongyu May 29, 2026
6a5e0ae
docs: record #826 - multi-word unknown subcommand falls through to mi…
code-yeongyu May 29, 2026
a6f790e
fix: unknown single-word subcommand emits command_not_found (#825/#826)
code-yeongyu May 29, 2026
d3a04ef
docs: record #827 - resume unknown slash command emits opaque error_k…
code-yeongyu May 29, 2026
16be566
fix: unknown slash command emits unknown_slash_command error_kind (#827)
code-yeongyu May 29, 2026
26931f5
fix: /approve and /deny outside REPL emit interactive_only error_kind…
code-yeongyu May 29, 2026
cde3310
docs: record #829 - interactive_only hint incorrectly suggests --resu…
code-yeongyu May 29, 2026
cc87a9c
fix: interactive_only hint omits --resume for non-resume-safe command…
code-yeongyu May 29, 2026
5b8042b
docs: record #830 - mcp show missing server name emits unknown_mcp_ac…
code-yeongyu May 29, 2026
106f518
Harden permission enforcement against sandbox bypasses
May 31, 2026
d8effc4
feat: API timeout config, Retry-After header support, and configurabl…
TheArchitectit Apr 27, 2026
251eb32
fix: retry 400 responses with transient gateway error bodies
TheArchitectit Apr 27, 2026
4b5dcb3
fix: add "no parseable body" to CONTEXT_WINDOW_ERROR_MARKERS
TheArchitectit Apr 27, 2026
5457ee7
feat: API timeout config, Retry-After header, configurable retry, and…
TheArchitectit Jun 2, 2026
5f2b6c7
fix: session resume — skip current empty session, unify cross-workspa…
TheArchitectit Jun 2, 2026
8883627
fix: classify mcp show missing server argument
Jun 3, 2026
5a0927e
docs: close ROADMAP 829 interactive hint evidence
Jun 3, 2026
1ff2868
docs: close ROADMAP 828 approval slash evidence
Jun 3, 2026
bd171e7
test: cover resumed unknown slash command
Jun 3, 2026
70c2d22
fix: load common instruction files and typed unknown commands
Jun 3, 2026
d761784
fix: keep JSON control surfaces local
Jun 3, 2026
d1ff419
test: add argv-safe dogfood probes
Jun 3, 2026
5ed8847
test: cover roadmap helper missing path
Jun 3, 2026
b84a112
fix: expose binary provenance in local JSON
Jun 3, 2026
ef07139
fix: keep hooks clean and close bash stdin
Jun 3, 2026
2afa373
feat: add GitShow output formats
Jun 3, 2026
f63781c
fix: resolve clippy pedantic warnings
olabi Jun 3, 2026
fa3519c
feat: import project instruction rules
Jun 3, 2026
c6539b7
fix: parse object-style hook config
Jun 3, 2026
293f73f
fix: report config file load statuses
Jun 3, 2026
1f069be
fix: preserve DeepSeek V4 thinking history
Jun 3, 2026
09054cc
fix: normalize Anthropic model routing
Jun 3, 2026
31c32d1
fix: read prompt subcommand input from stdin
Jun 3, 2026
8e9b634
fix: route local OpenAI-compatible models
Jun 3, 2026
d531432
fix: attribute config precedence in JSON
Jun 3, 2026
169c717
fix: validate env model selection
Jun 3, 2026
0fca1c7
fix: keep session help local
Jun 3, 2026
86480a0
fix: default to workspace-write permissions
Jun 3, 2026
1eb22e2
fix: add global cwd override
Jun 3, 2026
88089fe
fix: make dump-manifests self-contained
Jun 3, 2026
560989a
fix: address CI failures and reviewer feedback on #3214
TheArchitectit Jun 3, 2026
aff2bc3
fix: address CI test failure and add empty-session error message
TheArchitectit Jun 3, 2026
08e0184
fix: keep skills lifecycle local
Jun 3, 2026
cecd97a
fix: type allowed tools validation
Jun 4, 2026
b8cda80
fix: type output format selection
Jun 4, 2026
d9ea692
fix: recover CLI parser CI
Jun 4, 2026
cfb35ad
test: align compact CI contract
Jun 4, 2026
3ab17b2
fix: recover parser contract CI
Jun 4, 2026
5072609
fix: keep failed resume side-effect free
Jun 4, 2026
ad80f2f
fix: scaffold safe init settings
Jun 4, 2026
ec42af4
fix: expose complete version provenance
Jun 4, 2026
9e5c254
fix: load Claw and Agents memory files
Jun 4, 2026
f760a8d
fix: bound parent memory discovery
Jun 4, 2026
f67b8c7
fix: load partial MCP configs
Jun 4, 2026
99e9d21
Merge remote-tracking branch 'upstream/main' into worktree-session-re…
TheArchitectit Jun 4, 2026
4e7318c
test: add exclude_id and 0-message filtering coverage; cargo fmt
TheArchitectit Jun 4, 2026
9f8ebe3
Merge remote-tracking branch 'upstream/main' into worktree-api-timeou…
TheArchitectit Jun 4, 2026
324d16b
fix: validate hook config entries partially
Jun 4, 2026
72697c7
fix: accept markdown agent definitions with YAML frontmatter
Jun 4, 2026
9cc8f88
fix: exit non-zero for acp serve and remove internal tracking IDs
Jun 4, 2026
f9956ff
docs: close ROADMAP 443 acp serve evidence
Jun 4, 2026
d6487da
fix: add broad-cwd guard to resume path
Jun 4, 2026
42dd840
fix: track skill directory name for name/dir mismatch detection
Jun 4, 2026
825fea8
fix: detect skill name/dir mismatch and report metadata drift
Jun 4, 2026
d666b81
fix: route broad_cwd JSON error to stdout and close ROADMAP 446-447
Jun 4, 2026
8a289b9
fix: clarify sandbox requested vs active state in JSON output
Jun 4, 2026
6977437
fix: route session list through credentials-free path
Jun 4, 2026
135386b
fix: add prompt_ready to doctor auth check
Jun 4, 2026
bc351e7
fix: add list to KNOWN_SUBCOMMANDS and close ROADMAP 454-455
Jun 4, 2026
a0157f5
fix: align discovered_config_files count with config check
Jun 4, 2026
a2a489b
fix: handle --help after --resume flag
Jun 4, 2026
8f94d01
docs: close ROADMAP 460 alias check evidence
Jun 4, 2026
602b132
docs: close ROADMAP 451-452 models already wired evidence
Jun 4, 2026
05f553f
fix: widen parse_subcommand guard for multi-word commands
Jun 4, 2026
67b641c
fix: add prefix-aware matching to config key suggestion
Jun 4, 2026
d131487
docs: close ROADMAP 462-463 evidence
Jun 4, 2026
c06e10f
docs: close ROADMAP 464,470 evidence
Jun 4, 2026
69db914
fix: target multi-word guard for CLI subcommands only
Jun 4, 2026
b5f3884
fix: return typed error for unsupported MCP sub-actions
Jun 4, 2026
3b139e1
docs: close ROADMAP 682,693 evidence
Jun 4, 2026
18932bf
docs: close ROADMAP 694,698 evidence
Jun 4, 2026
175e1b2
docs: close ROADMAP 705-722 evidence
Jun 4, 2026
b3add30
docs: mark ROADMAP 726-806 as DONE
Jun 4, 2026
138cd1b
docs: close ROADMAP 458-459 evidence
Jun 4, 2026
274c5a4
docs: close ROADMAP 700-704 evidence
Jun 4, 2026
bca7ab3
docs: close ROADMAP 419-420 evidence
Jun 4, 2026
56c962b
fix: filter boundary sentinel from system-prompt sections JSON
Jun 4, 2026
9839ac7
docs: close ROADMAP 413,416 evidence
Jun 4, 2026
a143245
docs: close ROADMAP 347,356,357 evidence
Jun 4, 2026
0f00abf
fix: expose openai_key_present in doctor auth check
Jun 4, 2026
81e0244
docs: close ROADMAP 465 evidence
Jun 4, 2026
9e23b44
docs: close ROADMAP 335 evidence
Jun 4, 2026
5777ffe
fix: expose merged key-value pairs in config JSON
Jun 4, 2026
f6ab65f
fix: track duplicate global flags in status JSON
Jun 4, 2026
27ea241
style: apply cargo fmt
Jun 4, 2026
26ee24d
docs: mark ROADMAP 713-716,723,734-735,737,767,771,774-776,781 as DONE
Jun 4, 2026
d45522b
docs: mark ROADMAP 696-697 DONE
Jun 4, 2026
0708b0e
fix: add structured help JSON and provider BASE_URL validation
Jun 4, 2026
8c93b10
docs: mark additional pre-440 ROADMAP items as DONE
Jun 4, 2026
12bd24b
docs: mark 16 ROADMAP items as DONE with direct verification evidence
Jun 4, 2026
3ce951a
fix: standardize list command count fields and resume help field name
Jun 4, 2026
f90b20c
docs: mark ROADMAP 338,410 DONE with fix evidence
Jun 4, 2026
bd40ee2
fix: correct help source lists, add is_clean to status JSON
Jun 4, 2026
02856b8
docs: mark ROADMAP 327,328,408,6 DONE with fix evidence
Jun 4, 2026
713bc11
docs: mark ROADMAP #77 DONE (classify_error_kind implemented)
Jun 4, 2026
798bf0d
docs: mark 8 ROADMAP items DONE (78,84,103,107,108,110,116,119)
Jun 4, 2026
6eafc38
docs: mark ROADMAP #124,127 DONE with direct evidence
Jun 4, 2026
7ad5e86
fix: update resume help test for message field parity (#338)
Jun 4, 2026
9abde4e
docs: mark ROADMAP #80,86,100 DONE
Jun 4, 2026
52b21e2
docs: mark ROADMAP #105,118 DONE
Jun 4, 2026
14d1644
docs: mark ROADMAP 81-83,87,91,102,117,128 DONE with direct evidence
Jun 4, 2026
f2d5a60
fix: validate --cwd and --date for system-prompt (#99)
Jun 4, 2026
e6c764f
docs: mark ROADMAP #97 DONE
Jun 4, 2026
c2b3eeb
fix: structured bootstrap-plan phases JSON (#412)
Jun 4, 2026
6b362ef
fix: report 'no_git_repo' instead of 'clean' when not in git (#125)
Jun 4, 2026
cd6a782
docs: mark ROADMAP #85,88,125,126 DONE
Jun 4, 2026
58e818f
docs: mark ROADMAP #93,109 DONE
Jun 4, 2026
b6461af
docs: mark ROADMAP #101,104 DONE
Jun 4, 2026
fe1ea7b
docs: mark ROADMAP #111,115 DONE
Jun 4, 2026
954b813
docs: mark ROADMAP #32,43 DONE with runtime evidence
Jun 4, 2026
c06e089
fix: redact MCP server sensitive fields in JSON (#90)
Jun 4, 2026
232c3fe
docs: mark ROADMAP #120,121 DONE
Jun 4, 2026
28ab8e2
fix: use existing path in system-prompt test (#99 fix regression)
Jun 4, 2026
3e7d65a
fix: validate --base-commit is a hex SHA (#122)
Jun 4, 2026
09fe7e6
feat: detect git rebase/merge/cherry-pick/bisect states (#89)
Jun 4, 2026
fb81436
docs: mark ROADMAP #129 DONE (verified code flow)
Jun 4, 2026
004ecec
docs: mark ROADMAP #339 DONE (/session delete resume-safe)
Jun 4, 2026
86f1ec2
fix: plugins enable/disable only reloads when state changes (#411)
Jun 4, 2026
359514b
fix: add structured command list to top-level help JSON (#325)
Jun 4, 2026
20f74be
fix: /config help returns structured section list (#344)
Jun 4, 2026
ea93183
fix: /config help returns structured section list (#344)
Jun 4, 2026
4b161c1
fix: /tasks returns structured JSON in resume mode (#341)
Jun 4, 2026
3952fc1
fix: reject --compact for non-prompt subcommands (#98)
Jun 4, 2026
273b643
fix: /model returns structured JSON in resume mode (#343)
Jun 4, 2026
8620669
docs: mark ROADMAP #342 DONE (covered by #325)
Jun 4, 2026
4809d74
fix: strip macOS /private symlink prefix from JSON cwd (#421)
Jun 5, 2026
1536aee
docs: mark ROADMAP #330 DONE (verified /cost and /stats work in resume)
Jun 5, 2026
4fdf087
fix: /session switch and /session fork return structured JSON in resu…
Jun 5, 2026
ea9989a
fix: /clear preserves session_id to prevent resume divergence (#114)
Jun 5, 2026
b156fc6
fix: normalize permission rule tool names to lowercase (#94)
Jun 5, 2026
be02228
fix: config merge concatenates arrays instead of replacing (#106)
Jun 5, 2026
f8e1447
fix: expand ${VAR} and ~/ in MCP config fields (#92)
Jun 5, 2026
7fde99a
feat: skills install --project flag for project-level scope (#95)
Jun 5, 2026
09bc6fe
fix: add actionable auth hint to 401/403 API errors (#28)
Jun 5, 2026
54e2ba8
fix: status JSON reports all workspace panes not just the first (#326)
Jun 5, 2026
31da9d6
fix: wrap concurrent ENOENT as domain-specific session error (#112)
Jun 5, 2026
e854cc3
fix: update skills help test assertions for --project flag (#95 CI fix)
Jun 5, 2026
5ae1430
Merge pull request #3164 from petterreinholdtsen/llama.cpp-errors
Yeachan-Heo Jun 5, 2026
0def46d
docs: add gajae-code to Ecosystem section
Jun 5, 2026
574d625
Merge pull request #3209 from Sam0urr/harden-permission-enforcer
Yeachan-Heo Jun 5, 2026
2b05cff
Merge pull request #3214 from TheArchitectit/worktree-api-timeout-ret…
Yeachan-Heo Jun 5, 2026
19f8f83
Merge pull request #3216 from TheArchitectit/worktree-session-resume-…
Yeachan-Heo Jun 5, 2026
097176e
style: cargo fmt after merged PRs (#3164, #3209, #3214, #3216)
Jun 5, 2026
b81e3c4
feat: wizard entry points -- /setup command, claw setup subcommand, a…
Jun 5, 2026
327bf9f
fix: update slash command count and add /setup assertion in test
TheArchitectit Jun 3, 2026
378bdc7
feat: add native Ollama provider support via OLLAMA_HOST env var
Jun 5, 2026
43f90c3
docs: add ROADMAP #833 — native Ollama provider support via OLLAMA_HOST
Jun 5, 2026
8b16d6c
update readme
realsigridjin Jun 6, 2026
b9b490f
Update README.md
realsigridjin Jun 6, 2026
9075e38
Update README.md
realsigridjin Jun 6, 2026
8d7458f
docs: add interactive session example to quick start
Gaurav-x111 Jun 6, 2026
c874b94
fix(providers): strip provider prefix from model names for openai_com…
Ajinkya-Ghuge Jun 6, 2026
4464039
Merge pull request #3232 from Ajinkya-Ghuge/fix/deepseek-model-routing
realsigridjin Jun 7, 2026
49f92dd
fix(providers): preserve OpenAI-compatible reasoning history
code-yeongyu Jun 7, 2026
ca1d965
test(runtime): isolate session and git metadata checks
code-yeongyu Jun 7, 2026
37b05d2
test(cli): serialize env-sensitive model alias checks
code-yeongyu Jun 7, 2026
9c5eb56
Merge pull request #3234 from ultraworkers/fix/openai-compatible-reas…
code-yeongyu Jun 8, 2026
1b1a989
fix(providers): parse Ollama reasoning fields
code-yeongyu Jun 8, 2026
068935d
fix(cli): hint Ollama for Qwen tags
code-yeongyu Jun 8, 2026
43735df
docs: mention local Ollama reasoning setup
code-yeongyu Jun 8, 2026
7656027
Merge pull request #3236 from ultraworkers/fix/ollama-qwen-reasoning-…
code-yeongyu Jun 8, 2026
67bfd1c
fix: validate attached redirection paths
hiSandog Jun 8, 2026
8337965
Merge pull request #3237 from hiisandog/fix/redirection-path-scope-20…
code-yeongyu Jun 8, 2026
220b2bd
Merge pull request #3230 from Gaurav-x111/contributor/example-change
code-yeongyu Jun 8, 2026
b5259db
fix: preserve runtime config validation compatibility
code-yeongyu Jun 8, 2026
a9d9985
Merge pull request #3227 from TheArchitectit/worktree-wizard-entry-po…
code-yeongyu Jun 8, 2026
886de40
docs: document mlx-lm backend and known model-resolution/EOS gotchas
EmreCelenli Jun 18, 2026
f480a1d
Improve command lookup normalization
hiSandog Jun 25, 2026
e9c203e
Merge pull request #3263 from hiisandog/fix/claw-small-cleanup-c6b25
realsigridjin Jun 26, 2026
65a1a07
Merge pull request #3253 from EmreCelenli/docs/mlx-compatibility
realsigridjin Jun 26, 2026
69da59a
refactor(sandbox): extract unshare mapping probe into cached helper
procaffe121 Jul 31, 2026
809f8a5
fix(sandbox): fall back to --map-auto when root-user mapping is restr…
procaffe121 Jul 31, 2026
1af4eab
docs(sandbox): document newuidmap/newgidmap dependency for --map-auto…
procaffe121 Aug 1, 2026
17c3905
fix(sandbox): probe the full launcher shape, not just the mapping
code-yeongyu Aug 6, 2026
deef791
Merge pull request #3280 from Einspanner123/fix/sandbox-map-auto-fall…
code-yeongyu Aug 6, 2026
9a44ab9
docs: add hierarchical AGENTS.md knowledge base
code-yeongyu Aug 16, 2026
a091e0a
feat(team): team enhancements, subagentModel, parallel tool exec
TheArchitectit Jul 7, 2026
d1c3c67
cargo fmt
TheArchitectit Jul 25, 2026
ff67861
fix: model_token_limit catch-all returns None for unknown models
TheArchitectit Jul 25, 2026
1ab8926
test: add subagentModel accessor chain tests
TheArchitectit Jul 25, 2026
17c6c4e
fix: restore workspace unsafe_code=forbid, fix TaskClaim TOCTOU, remo…
TheArchitectit Jul 28, 2026
7a82920
feat(config): parse maxParallelToolCalls and maxConcurrentAgents sett…
TheArchitectit Sep 7, 2026
e78a1d1
feat(teams): bound per-team sub-agent concurrency with AgentGate
TheArchitectit Sep 7, 2026
4ff9750
fix(cli): order parallel tool results by call index and cap fan-out
TheArchitectit Sep 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Keep docker build context small (Windows-friendly).
.git
.github
**/target
**/.claw-rag
**/.claw
**/.claude
**/.cursor
**/node_modules
**/dist
**/build
**/*.log
**/*.tmp
**/*.sqlite
**/*.sqlite-wal
**/*.sqlite-shm
**/.DS_Store
54 changes: 54 additions & 0 deletions .github/ISSUE_TEMPLATE/anti_slop_triage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Anti-slop triage
about: Classify low-signal, duplicate, generated, or unsafe reports before engineering work starts.
title: "triage: "
labels: ["needs-triage"]
body:
- type: markdown
attributes:
value: |
Use this form for issue intake that needs evidence-backed classification before anyone closes, fixes, or escalates it.
Do not paste secrets, live tokens, private logs, or non-public customer data.
- type: dropdown
id: classification
attributes:
label: Initial classification
description: Pick the strongest current classification. Update it if evidence changes.
options:
- actionable-bug
- actionable-docs
- actionable-feature
- duplicate
- spam-or-promotion
- generated-slop-or-hallucinated
- unsafe-or-security-sensitive
- not-reproducible-yet
- externally-blocked
validations:
required: true
- type: textarea
id: evidence
attributes:
label: Evidence
description: Link the PR, issue, command output, docs page, reproduction, duplicate, or policy that supports the classification.
placeholder: "Evidence: ..."
validations:
required: true
- type: textarea
id: safe_next_action
attributes:
label: Safe next action
description: State the next non-destructive action. If closure or merge is proposed, name the required owner/gate.
placeholder: "Next action: label only / request repro / link duplicate / fix docs / defer with rationale / owner review required"
validations:
required: true
- type: checkboxes
id: guardrails
attributes:
label: Guardrails
options:
- label: I did not close, merge, or mutate remote state as part of this triage-only report.
required: true
- label: I checked for duplicates or related PRs/issues before recommending action.
required: true
- label: If this touches credentials, security, or private data, I avoided public reproduction details and routed to the appropriate private/security path.
required: true
17 changes: 17 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## Summary
- TBD

## Anti-slop triage
- Classification: <!-- actionable-fix | docs-only | duplicate | generated-slop | unsafe | out-of-scope | needs-maintainer-decision -->
- Evidence: <!-- issue link, repro command, failing test, docs source, or duplicate PR -->
- Non-destructive review result: <!-- merge candidate | request changes | close/defer with rationale | needs owner gate -->

## Verification
- [ ] Targeted tests/docs checks ran, or the gap is explicitly recorded.
- [ ] `git diff --check` passes.
- [ ] No live secrets, tokens, private logs, or unrelated generated churn are included.

## Resolution gate
- [ ] If this PR resolves an issue, the issue number and fix evidence are linked.
- [ ] If this PR should not merge, the rejection/defer rationale is evidence-backed and does not rely on vibes.
- [ ] I did not merge/close remote PRs or issues from an automation lane without owner approval.
31 changes: 31 additions & 0 deletions .github/hooks/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bash
# Claw Code local pre-push safety gate.
#
# Install with:
# git config core.hooksPath .github/hooks
#
# This intentionally mirrors the CI build gate so stale field/enum references are
# caught before pushing to main or PR branches.
set -euo pipefail

repo_root="$(git rev-parse --show-toplevel 2>/dev/null)"
cd "$repo_root"

if [[ -x scripts/roadmap-check-ids.sh ]]; then
echo "pre-push: scripts/roadmap-check-ids.sh" >&2
scripts/roadmap-check-ids.sh >&2
fi

if [[ "${SKIP_CLAW_PRE_PUSH_BUILD:-}" == "1" ]]; then
echo "pre-push: SKIP_CLAW_PRE_PUSH_BUILD=1 set; skipping cargo workspace build" >&2
exit 0
fi

if [[ ! -f rust/Cargo.toml ]]; then
echo "pre-push: rust/Cargo.toml not found; skipping cargo workspace build" >&2
exit 0
fi

build_cmd=(cargo build --manifest-path rust/Cargo.toml --workspace --locked)
echo "pre-push: ${build_cmd[*]}" >&2
"${build_cmd[@]}"
169 changes: 169 additions & 0 deletions .github/scripts/check_release_readiness.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
#!/usr/bin/env python3
"""Validate release-readiness docs that are easy to regress.

The check is intentionally dependency-free so it can run on developer machines,
Windows CI, and minimal release jobs. It validates:

* required repository policy files exist;
* local Markdown links and image targets resolve;
* local heading anchors referenced from Markdown resolve; and
* command examples do not present the deprecated `cargo install claw-code`
package as an executable install path.
"""

from __future__ import annotations

from pathlib import Path
from urllib.parse import unquote, urlparse
import re
import sys

ROOT = Path(__file__).resolve().parents[2]

REQUIRED_POLICY_FILES = [
"LICENSE",
"CONTRIBUTING.md",
"SECURITY.md",
"SUPPORT.md",
"CODE_OF_CONDUCT.md",
]

MARKDOWN_ROOTS = [
ROOT / "README.md",
ROOT / "USAGE.md",
ROOT / "PARITY.md",
ROOT / "PHILOSOPHY.md",
ROOT / "ROADMAP.md",
ROOT / "CONTRIBUTING.md",
ROOT / "SECURITY.md",
ROOT / "SUPPORT.md",
ROOT / "CODE_OF_CONDUCT.md",
ROOT / "docs",
ROOT / "rust" / "README.md",
ROOT / "rust" / "USAGE.md",
ROOT / "rust" / "MOCK_PARITY_HARNESS.md",
]

LINK_PATTERN = re.compile(r"(?<!!)\[[^\]\n]+\]\(([^)\s]+)(?:\s+\"[^\"]*\")?\)")
HTML_LINK_PATTERN = re.compile(r"""<(?:a|img)\b[^>]*(?:href|src)=["']([^"']+)["']""", re.I)
FENCE_PATTERN = re.compile(r"```(?P<lang>[^\n`]*)\n(?P<body>.*?)```", re.S)


def iter_markdown_files() -> list[Path]:
files: set[Path] = set()
for entry in MARKDOWN_ROOTS:
if entry.is_file():
files.add(entry)
elif entry.is_dir():
files.update(entry.rglob("*.md"))
return sorted(files)


def github_anchor(heading: str) -> str:
anchor = heading.strip().lower()
anchor = re.sub(r"<[^>]+>", "", anchor)
anchor = re.sub(r"`([^`]*)`", r"\1", anchor)
anchor = re.sub(r"[^a-z0-9 _-]", "", anchor)
anchor = anchor.replace(" ", "-")
anchor = re.sub(r"-+", "-", anchor)
return anchor.strip("-")


def anchors_for(path: Path) -> set[str]:
anchors: set[str] = set()
for line in path.read_text(encoding="utf-8").splitlines():
match = re.match(r"^(#{1,6})\s+(.+?)\s*#*\s*$", line)
if match:
anchors.add(github_anchor(match.group(2)))
return anchors


def is_external(target: str) -> bool:
parsed = urlparse(target)
return parsed.scheme in {"http", "https", "mailto"}


def validate_policies(errors: list[str]) -> None:
for relative in REQUIRED_POLICY_FILES:
path = ROOT / relative
if not path.is_file():
errors.append(f"missing required policy file: {relative}")


def validate_markdown_links(errors: list[str]) -> None:
anchor_cache: dict[Path, set[str]] = {}
for path in iter_markdown_files():
text = path.read_text(encoding="utf-8")
candidates = [m.group(1) for m in LINK_PATTERN.finditer(text)]
candidates.extend(m.group(1) for m in HTML_LINK_PATTERN.finditer(text))
for target in candidates:
if (
not target
or is_external(target)
or target.startswith(("mailto:", "tel:", "data:"))
):
continue
link_path, _, raw_anchor = target.partition("#")
if not link_path:
destination = path
else:
destination = (path.parent / unquote(link_path)).resolve()
try:
destination.relative_to(ROOT)
except ValueError:
errors.append(
f"{path.relative_to(ROOT)}: link escapes repo root: {target}"
)
continue
if not destination.exists():
errors.append(
f"{path.relative_to(ROOT)}: missing local link target: {target}"
)
continue
if raw_anchor and destination.suffix.lower() == ".md":
anchor = unquote(raw_anchor).lower()
anchor_cache.setdefault(destination, anchors_for(destination))
if anchor not in anchor_cache[destination]:
errors.append(
f"{path.relative_to(ROOT)}: missing anchor `{raw_anchor}` in "
f"{destination.relative_to(ROOT)}"
)


def validate_command_examples(errors: list[str]) -> None:
for path in iter_markdown_files():
text = path.read_text(encoding="utf-8")
for match in FENCE_PATTERN.finditer(text):
lang = match.group("lang").strip().lower()
if lang not in {"bash", "sh", "shell", "zsh", "powershell", "ps1"}:
continue
body = match.group("body")
for offset, line in enumerate(body.splitlines(), start=1):
stripped = line.strip()
if not stripped or stripped.startswith(("#", ">")):
continue
if re.search(r"\bcargo\s+install\s+claw-code\b", stripped):
line_no = text.count("\n", 0, match.start()) + offset + 1
errors.append(
f"{path.relative_to(ROOT)}:{line_no}: deprecated "
"`cargo install claw-code` appears in an executable "
"command block; use build-from-source docs instead"
)


def main() -> int:
errors: list[str] = []
validate_policies(errors)
validate_markdown_links(errors)
validate_command_examples(errors)
if errors:
print("release-readiness check failed:", file=sys.stderr)
for error in errors:
print(f" - {error}", file=sys.stderr)
return 1
print("release-readiness check passed")
return 0


if __name__ == "__main__":
raise SystemExit(main())
15 changes: 12 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ jobs:
os: macos-14
bin: claw
artifact_name: claw-macos-arm64
- name: windows-x64
os: windows-latest
bin: claw.exe
artifact_name: claw-windows-x64.exe
defaults:
run:
working-directory: rust
Expand All @@ -47,22 +51,27 @@ jobs:
- name: Build release binary
run: cargo build --release -p rusty-claude-cli

- name: Package artifact
- name: Package artifact and checksum
shell: bash
run: |
mkdir -p dist
cp "target/release/${{ matrix.bin }}" "dist/${{ matrix.artifact_name }}"
chmod +x "dist/${{ matrix.artifact_name }}"
(cd dist && sha256sum "${{ matrix.artifact_name }}" > "${{ matrix.artifact_name }}.sha256")

- name: Upload workflow artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact_name }}
path: rust/dist/${{ matrix.artifact_name }}
path: |
rust/dist/${{ matrix.artifact_name }}
rust/dist/${{ matrix.artifact_name }}.sha256

- name: Upload release asset
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: rust/dist/${{ matrix.artifact_name }}
files: |
rust/dist/${{ matrix.artifact_name }}
rust/dist/${{ matrix.artifact_name }}.sha256
fail_on_unmatched_files: true
Loading