@rethunk/mcp-multi-root-git 2.9.0 → 3.1.0

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 (56) hide show
  1. package/AGENTS.md +4 -6
  2. package/CHANGELOG.md +65 -0
  3. package/HUMANS.md +4 -4
  4. package/dist/server/batch-commit-tool.js +24 -15
  5. package/dist/server/coverage.js +5 -1
  6. package/dist/server/error-codes.js +6 -9
  7. package/dist/server/git-blame-tool.js +60 -16
  8. package/dist/server/git-branch-list-tool.js +1 -7
  9. package/dist/server/git-cherry-pick-tool.js +1 -1
  10. package/dist/server/git-diff-summary-tool.js +3 -3
  11. package/dist/server/git-diff-tool.js +1 -4
  12. package/dist/server/git-fetch-tool.js +3 -12
  13. package/dist/server/git-inventory-tool.js +4 -4
  14. package/dist/server/git-log-tool.js +2 -2
  15. package/dist/server/git-merge-tool.js +1 -1
  16. package/dist/server/git-parity-tool.js +2 -2
  17. package/dist/server/git-push-tool.js +1 -1
  18. package/dist/server/git-reflog-tool.js +1 -7
  19. package/dist/server/git-reset-soft-tool.js +1 -1
  20. package/dist/server/git-show-tool.js +2 -11
  21. package/dist/server/git-stash-tool.js +3 -12
  22. package/dist/server/git-status-tool.js +2 -2
  23. package/dist/server/git-tag-tool.js +1 -7
  24. package/dist/server/git-worktree-tool.js +3 -7
  25. package/dist/server/git.js +2 -8
  26. package/dist/server/list-presets-tool.js +2 -8
  27. package/dist/server/roots.js +41 -80
  28. package/dist/server/schemas.js +11 -19
  29. package/dist/server/tool-parameter-schemas.js +3 -3
  30. package/dist/server.js +1 -1
  31. package/docs/mcp-tools.md +117 -136
  32. package/package.json +6 -5
  33. package/schemas/batch_commit.json +7 -19
  34. package/schemas/git_blame.json +12 -10
  35. package/schemas/git_branch_list.json +2 -8
  36. package/schemas/git_cherry_pick.json +5 -17
  37. package/schemas/git_diff.json +7 -13
  38. package/schemas/git_diff_summary.json +2 -16
  39. package/schemas/git_fetch.json +1 -7
  40. package/schemas/git_inventory.json +18 -23
  41. package/schemas/git_log.json +24 -29
  42. package/schemas/git_merge.json +3 -15
  43. package/schemas/git_parity.json +18 -23
  44. package/schemas/git_push.json +1 -13
  45. package/schemas/git_reflog.json +1 -7
  46. package/schemas/git_reset_soft.json +2 -14
  47. package/schemas/git_show.json +1 -7
  48. package/schemas/git_stash_apply.json +3 -9
  49. package/schemas/git_stash_list.json +1 -7
  50. package/schemas/git_status.json +18 -23
  51. package/schemas/git_tag.json +1 -7
  52. package/schemas/git_worktree_add.json +4 -16
  53. package/schemas/git_worktree_list.json +1 -7
  54. package/schemas/git_worktree_remove.json +2 -14
  55. package/schemas/list_presets.json +18 -23
  56. package/tool-parameters.schema.json +122 -297
@@ -5,20 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP file roots.",
20
- "type": "boolean"
21
- },
22
11
  "format": {
23
12
  "default": "markdown",
24
13
  "type": "string",
@@ -62,13 +51,13 @@
62
51
  "from": {
63
52
  "type": "integer",
64
53
  "minimum": 1,
65
- "maximum": 9007199254740991,
54
+ "maximum": 1000000,
66
55
  "description": "Start line number (1-indexed)."
67
56
  },
68
57
  "to": {
69
58
  "type": "integer",
70
59
  "minimum": 1,
71
- "maximum": 9007199254740991,
60
+ "maximum": 1000000,
72
61
  "description": "End line number (1-indexed, inclusive)."
73
62
  }
74
63
  },
@@ -88,7 +77,7 @@
88
77
  }
89
78
  ]
90
79
  },
91
- "description": "Paths to stage, relative to the git root. Each can be a string path or { path, lines } for hunk-level staging. Deleted files (missing on disk but tracked in HEAD) are staged as removals via `git rm --cached`. Combining { path, lines } with a deleted file is an error."
80
+ "description": "Paths to stage, relative to git root. String or `{ path, lines }` for hunk-level staging. Deleted tracked files are staged via `git rm --cached`. Cannot combine `lines` with a deleted file."
92
81
  }
93
82
  },
94
83
  "required": [
@@ -97,11 +86,11 @@
97
86
  ],
98
87
  "additionalProperties": false
99
88
  },
100
- "description": "Commits to create, applied in order."
89
+ "description": "Ordered list of commits to create."
101
90
  },
102
91
  "push": {
103
92
  "default": "never",
104
- "description": "`never` (default): no push. `after`: push the current branch to its upstream once all commits succeed; fails with `push_no_upstream` if the branch has no upstream (commits are NOT rolled back). Enum reserved for future modes such as `force-with-lease`.",
93
+ "description": "`never` (default): no push. `after`: push current branch to upstream after all commits succeed; fails with `push_no_upstream` if no upstream (commits are NOT rolled back).",
105
94
  "type": "string",
106
95
  "enum": [
107
96
  "never",
@@ -110,12 +99,11 @@
110
99
  },
111
100
  "dryRun": {
112
101
  "default": false,
113
- "description": "When true, stage files, collect preview (files staged, commit messages), return preview response without writing commits. Unstages any files that were staged for the preview. Response indicates DRY RUN mode.",
102
+ "description": "Stage files and return a preview without writing commits; unstages afterwards. Response is marked DRY RUN.",
114
103
  "type": "boolean"
115
104
  }
116
105
  },
117
106
  "required": [
118
- "allWorkspaceRoots",
119
107
  "format",
120
108
  "commits",
121
109
  "push",
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -35,18 +29,26 @@
35
29
  "description": "First line of the range to blame (1-based). Requires endLine.",
36
30
  "type": "integer",
37
31
  "minimum": 1,
38
- "maximum": 9007199254740991
32
+ "maximum": 1000000
39
33
  },
40
34
  "endLine": {
41
35
  "description": "Last line of the range to blame (1-based, inclusive). Requires startLine.",
42
36
  "type": "integer",
43
37
  "minimum": 1,
44
- "maximum": 9007199254740991
38
+ "maximum": 1000000
39
+ },
40
+ "maxLines": {
41
+ "default": 2000,
42
+ "description": "Max blamed lines to return. Default: 2000.",
43
+ "type": "integer",
44
+ "minimum": 1,
45
+ "maximum": 10000
45
46
  }
46
47
  },
47
48
  "required": [
48
49
  "format",
49
- "path"
50
+ "path",
51
+ "maxLines"
50
52
  ],
51
53
  "additionalProperties": false
52
54
  }
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -24,7 +18,7 @@
24
18
  },
25
19
  "includeRemotes": {
26
20
  "default": false,
27
- "description": "When true, also return remote-tracking branches from refs/remotes (excluding symbolic origin/HEAD).",
21
+ "description": "Include remote-tracking branches from refs/remotes (symbolic origin/HEAD excluded).",
28
22
  "type": "boolean"
29
23
  }
30
24
  },
@@ -5,20 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP file roots.",
20
- "type": "boolean"
21
- },
22
11
  "format": {
23
12
  "default": "markdown",
24
13
  "type": "string",
@@ -35,7 +24,7 @@
35
24
  "type": "string",
36
25
  "minLength": 1
37
26
  },
38
- "description": "Sources to cherry-pick: SHA, `A..B` range, or branch name. Branch sources resolve to `onto..<branch>` (only commits missing from destination)."
27
+ "description": "Sources: SHA, `A..B` range, or branch name (resolves to `onto..<branch>`)."
39
28
  },
40
29
  "onto": {
41
30
  "description": "Destination branch. Defaults to the currently checked-out branch.",
@@ -43,22 +32,21 @@
43
32
  },
44
33
  "deleteMergedBranches": {
45
34
  "default": false,
46
- "description": "After all commits apply, delete each branch-kind source locally (`git branch -d`) when it is fully merged into the destination. Protected names always skipped; never touches remote refs.",
35
+ "description": "Delete branch-kind sources locally after success. Protected names and remote refs unaffected.",
47
36
  "type": "boolean"
48
37
  },
49
38
  "deleteMergedWorktrees": {
50
39
  "default": false,
51
- "description": "After success, remove any local worktree attached to a branch-kind source (`git worktree remove`). Protected tails always skipped.",
40
+ "description": "Remove local worktrees on branch-kind sources after success. Protected tails skipped.",
52
41
  "type": "boolean"
53
42
  },
54
43
  "strictMergedRefEquality": {
55
44
  "default": false,
56
- "description": "When false (default), branch deletion uses patch-id equivalence: a source branch is deleted when every commit it contains has a content-equivalent commit on the destination (same diff, different SHA — the normal cherry-pick outcome). Set to true to require strict ref ancestry (`git branch -d` semantics), which will refuse deletion after a cherry-pick because the SHA differs.",
45
+ "description": "false (default): delete branch when every commit is content-equivalent on destination (patch-id, normal cherry-pick outcome). true: require strict ref ancestry (`git branch -d` semantics will refuse after cherry-pick due to SHA mismatch).",
57
46
  "type": "boolean"
58
47
  }
59
48
  },
60
49
  "required": [
61
- "allWorkspaceRoots",
62
50
  "format",
63
51
  "sources",
64
52
  "deleteMergedBranches",
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -23,19 +17,19 @@
23
17
  ]
24
18
  },
25
19
  "base": {
26
- "description": "Base ref (e.g. \"main\", \"HEAD~3\"). Required for range diffs. If omitted and `staged: false`, shows unstaged changes.",
20
+ "description": "Base ref (e.g. \"main\", \"HEAD~3\"). Omit for unstaged changes.",
27
21
  "type": "string"
28
22
  },
29
23
  "head": {
30
- "description": "Head ref (e.g. \"feature-branch\"). If omitted, defaults to HEAD. Only used if `base` is provided.",
24
+ "description": "Head ref (e.g. \"feature-branch\"). Defaults to HEAD. Used only when `base` is set.",
31
25
  "type": "string"
32
26
  },
33
27
  "path": {
34
- "description": "Scope diff to a single file path (e.g. \"src/main.ts\"). For multiple files, prefer `paths`. If both `path` and `paths` are given, they are unioned.",
28
+ "description": "Scope to a single file. Unioned with `paths` if both given.",
35
29
  "type": "string"
36
30
  },
37
31
  "paths": {
38
- "description": "Scope diff to multiple file paths (e.g. [\"src/a.ts\", \"src/b.ts\"]). Each path is validated and must lie within the repository root. If both `path` and `paths` are given, they are unioned.",
32
+ "description": "Scope to multiple files (must be within repo root). Unioned with `path` if both given.",
39
33
  "type": "array",
40
34
  "items": {
41
35
  "type": "string"
@@ -43,11 +37,11 @@
43
37
  },
44
38
  "staged": {
45
39
  "default": false,
46
- "description": "If true, show staged changes (git diff --staged). Ignored if `base` is provided.",
40
+ "description": "Show staged changes (`git diff --staged`). Ignored if `base` is set.",
47
41
  "type": "boolean"
48
42
  },
49
43
  "unified": {
50
- "description": "Number of context lines to show around each change (passed as -U<n> to git diff). Defaults to git's built-in default (3). Use 0 for no context.",
44
+ "description": "Context lines around each change (`-U<n>`). Default: 3. Use 0 for no context.",
51
45
  "type": "integer",
52
46
  "minimum": 0,
53
47
  "maximum": 100
@@ -5,23 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "absoluteGitRoots": {
18
- "description": "Absolute paths to git repo roots. Use for many sibling clones under a non-git parent directory.",
19
- "maxItems": 256,
20
- "type": "array",
21
- "items": {
22
- "type": "string"
23
- }
24
- },
25
11
  "format": {
26
12
  "default": "markdown",
27
13
  "type": "string",
@@ -53,7 +39,7 @@
53
39
  "maximum": 500
54
40
  },
55
41
  "excludePatterns": {
56
- "description": "Glob patterns to exclude. Defaults to common noise: lock files, dist, vendor, etc.",
42
+ "description": "Glob patterns to exclude. Default: lock files, dist, vendor, etc.",
57
43
  "type": "array",
58
44
  "items": {
59
45
  "type": "string"
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -4,28 +4,24 @@
4
4
  "description": "Parameter schema for the 'git_inventory' MCP tool.",
5
5
  "type": "object",
6
6
  "properties": {
7
- "workspaceRoot": {
8
- "description": "Highest-priority override.",
9
- "type": "string"
10
- },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP file roots.",
20
- "type": "boolean"
21
- },
22
- "absoluteGitRoots": {
23
- "description": "Absolute paths to git repo roots. Use for many sibling clones under a non-git parent directory.",
24
- "maxItems": 256,
25
- "type": "array",
26
- "items": {
27
- "type": "string"
28
- }
7
+ "root": {
8
+ "description": "Repo path, array of paths, or \"*\" for all MCP roots.",
9
+ "anyOf": [
10
+ {
11
+ "type": "string"
12
+ },
13
+ {
14
+ "maxItems": 256,
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string"
18
+ }
19
+ },
20
+ {
21
+ "type": "string",
22
+ "const": "*"
23
+ }
24
+ ]
29
25
  },
30
26
  "format": {
31
27
  "default": "markdown",
@@ -65,7 +61,6 @@
65
61
  }
66
62
  },
67
63
  "required": [
68
- "allWorkspaceRoots",
69
64
  "format",
70
65
  "presetMerge",
71
66
  "maxRoots"
@@ -4,32 +4,28 @@
4
4
  "description": "Parameter schema for the 'git_log' MCP tool.",
5
5
  "type": "object",
6
6
  "properties": {
7
- "workspaceRoot": {
8
- "description": "Highest-priority override.",
9
- "type": "string"
10
- },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP file roots.",
20
- "type": "boolean"
21
- },
22
- "absoluteGitRoots": {
23
- "description": "Absolute paths to git repo roots. Use for many sibling clones under a non-git parent directory.",
24
- "maxItems": 256,
25
- "type": "array",
26
- "items": {
27
- "type": "string"
28
- }
7
+ "root": {
8
+ "description": "Repo path, array of paths, or \"*\" for all MCP roots.",
9
+ "anyOf": [
10
+ {
11
+ "type": "string"
12
+ },
13
+ {
14
+ "maxItems": 256,
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string"
18
+ }
19
+ },
20
+ {
21
+ "type": "string",
22
+ "const": "*"
23
+ }
24
+ ]
29
25
  },
30
26
  "format": {
31
27
  "default": "markdown",
32
- "description": "`markdown` (default): headed sections per root. `json`: structured groups array. `oneline`: `<sha7> <subject>` per line, no headers (single-root) or `### repo (branch)` separator per group (multi-root). Lowest-token option for post-commit verification.",
28
+ "description": "`markdown` (default): headed sections per root. `json`: groups array. `oneline`: `<sha7> <subject>` per line; lowest-token option for post-commit verification.",
33
29
  "type": "string",
34
30
  "enum": [
35
31
  "markdown",
@@ -38,27 +34,27 @@
38
34
  ]
39
35
  },
40
36
  "since": {
41
- "description": "Passed to `git log --since=`. Accepts ISO timestamps or git relative forms like `48.hours` or `2.weeks.ago`. Default: `7.days`.",
37
+ "description": "Passed to `--since=`. ISO timestamp or git relative form (`48.hours`, `2.weeks.ago`). Default: `7.days`.",
42
38
  "type": "string"
43
39
  },
44
40
  "paths": {
45
- "description": "Limit to commits touching these paths (passed as `-- <paths>`).",
41
+ "description": "Limit to commits touching these paths (`-- <paths>`).",
46
42
  "type": "array",
47
43
  "items": {
48
44
  "type": "string"
49
45
  }
50
46
  },
51
47
  "grep": {
52
- "description": "Filter commits whose message matches this regex (git `--grep`, case-insensitive).",
48
+ "description": "Filter by commit message regex (git `--grep`, case-insensitive).",
53
49
  "type": "string"
54
50
  },
55
51
  "author": {
56
- "description": "Filter by author name or email (passed as `--author=`).",
52
+ "description": "Filter by author name or email (`--author=`).",
57
53
  "type": "string"
58
54
  },
59
55
  "maxCommits": {
60
56
  "default": 50,
61
- "description": "Maximum commits to return per root (hard cap 500). Default 50.",
57
+ "description": "Max commits per root (hard cap 500, default 50).",
62
58
  "type": "integer",
63
59
  "minimum": 1,
64
60
  "maximum": 500
@@ -69,7 +65,6 @@
69
65
  }
70
66
  },
71
67
  "required": [
72
- "allWorkspaceRoots",
73
68
  "format",
74
69
  "maxCommits"
75
70
  ],
@@ -5,20 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP file roots.",
20
- "type": "boolean"
21
- },
22
11
  "format": {
23
12
  "default": "markdown",
24
13
  "type": "string",
@@ -58,17 +47,16 @@
58
47
  },
59
48
  "deleteMergedBranches": {
60
49
  "default": false,
61
- "description": "After all sources merge cleanly, delete each source branch locally (`git branch -d`). Protected names always skipped. Never affects remote branches.",
50
+ "description": "Delete each source branch locally after clean merge (`git branch -d`). Protected names and remote refs unaffected.",
62
51
  "type": "boolean"
63
52
  },
64
53
  "deleteMergedWorktrees": {
65
54
  "default": false,
66
- "description": "After all sources merge cleanly, remove any local worktree currently checked out on a source branch (`git worktree remove`). Protected tails always skipped.",
55
+ "description": "Remove local worktrees on source branches after clean merge (`git worktree remove`). Protected tails skipped.",
67
56
  "type": "boolean"
68
57
  }
69
58
  },
70
59
  "required": [
71
- "allWorkspaceRoots",
72
60
  "format",
73
61
  "sources",
74
62
  "strategy",
@@ -4,28 +4,24 @@
4
4
  "description": "Parameter schema for the 'git_parity' MCP tool.",
5
5
  "type": "object",
6
6
  "properties": {
7
- "workspaceRoot": {
8
- "description": "Highest-priority override.",
9
- "type": "string"
10
- },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP file roots.",
20
- "type": "boolean"
21
- },
22
- "absoluteGitRoots": {
23
- "description": "Absolute paths to git repo roots. Use for many sibling clones under a non-git parent directory.",
24
- "maxItems": 256,
25
- "type": "array",
26
- "items": {
27
- "type": "string"
28
- }
7
+ "root": {
8
+ "description": "Repo path, array of paths, or \"*\" for all MCP roots.",
9
+ "anyOf": [
10
+ {
11
+ "type": "string"
12
+ },
13
+ {
14
+ "maxItems": 256,
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string"
18
+ }
19
+ },
20
+ {
21
+ "type": "string",
22
+ "const": "*"
23
+ }
24
+ ]
29
25
  },
30
26
  "format": {
31
27
  "default": "markdown",
@@ -66,7 +62,6 @@
66
62
  }
67
63
  },
68
64
  "required": [
69
- "allWorkspaceRoots",
70
65
  "format",
71
66
  "presetMerge"
72
67
  ],
@@ -5,20 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP file roots.",
20
- "type": "boolean"
21
- },
22
11
  "format": {
23
12
  "default": "markdown",
24
13
  "type": "string",
@@ -42,7 +31,6 @@
42
31
  }
43
32
  },
44
33
  "required": [
45
- "allWorkspaceRoots",
46
34
  "format",
47
35
  "setUpstream"
48
36
  ],
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -5,20 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into the MCP file roots list; ignored when workspaceRoot is set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP file roots.",
20
- "type": "boolean"
21
- },
22
11
  "format": {
23
12
  "default": "markdown",
24
13
  "type": "string",
@@ -30,11 +19,10 @@
30
19
  "ref": {
31
20
  "type": "string",
32
21
  "minLength": 1,
33
- "description": "Commit to reset to. Accepts ancestor notation (`HEAD~1`, `HEAD~3`), branch names, or full SHAs."
22
+ "description": "Commit to reset to: ancestor notation (`HEAD~1`, `HEAD~3`), branch name, or SHA."
34
23
  }
35
24
  },
36
25
  "required": [
37
- "allWorkspaceRoots",
38
26
  "format",
39
27
  "ref"
40
28
  ],