@rethunk/mcp-multi-root-git 3.1.0 → 4.0.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.
- package/AGENTS.md +21 -15
- package/CHANGELOG.md +114 -39
- package/HUMANS.md +20 -39
- package/README.md +30 -13
- package/dist/repo-paths.js +57 -13
- package/dist/server/batch-commit-tool.js +187 -46
- package/dist/server/error-codes.js +25 -7
- package/dist/server/git-blame-tool.js +6 -3
- package/dist/server/git-branch-tool.js +151 -0
- package/dist/server/git-cherry-pick-tool.js +220 -11
- package/dist/server/git-conflicts-tool.js +230 -0
- package/dist/server/git-diff-summary-tool.js +36 -25
- package/dist/server/git-diff-tool.js +55 -27
- package/dist/server/git-grep-tool.js +188 -0
- package/dist/server/git-inventory-tool.js +26 -6
- package/dist/server/git-log-tool.js +35 -4
- package/dist/server/git-merge-tool.js +70 -12
- package/dist/server/git-parity-tool.js +13 -4
- package/dist/server/git-push-tool.js +3 -1
- package/dist/server/git-refs.js +48 -17
- package/dist/server/git-revert-tool.js +160 -0
- package/dist/server/git-show-tool.js +7 -3
- package/dist/server/git-stash-tool.js +110 -67
- package/dist/server/git-tag-tool.js +7 -6
- package/dist/server/git-worktree-tool.js +65 -53
- package/dist/server/git.js +116 -24
- package/dist/server/inventory.js +90 -32
- package/dist/server/presets-resource.js +37 -20
- package/dist/server/presets.js +87 -15
- package/dist/server/roots.js +13 -1
- package/dist/server/schemas.js +9 -2
- package/dist/server/test-harness.js +11 -4
- package/dist/server/tool-parameter-schemas.js +44 -55
- package/dist/server/tools.js +36 -17
- package/dist/server.js +1 -1
- package/docs/install.md +52 -5
- package/docs/mcp-tools.md +385 -178
- package/package.json +6 -6
- package/schemas/batch_commit.json +2 -2
- package/schemas/git_blame.json +1 -1
- package/schemas/git_branch.json +54 -0
- package/schemas/git_cherry_pick.json +12 -2
- package/schemas/git_cherry_pick_continue.json +34 -0
- package/schemas/{git_reflog.json → git_conflicts.json} +12 -12
- package/schemas/git_diff.json +11 -3
- package/schemas/git_grep.json +85 -0
- package/schemas/git_inventory.json +19 -5
- package/schemas/git_log.json +7 -6
- package/schemas/git_merge.json +2 -2
- package/schemas/git_parity.json +0 -5
- package/schemas/git_revert.json +47 -0
- package/schemas/git_show.json +1 -1
- package/schemas/git_stash_push.json +47 -0
- package/schemas/git_status.json +0 -5
- package/schemas/git_worktree_add.json +1 -1
- package/schemas/git_worktree_remove.json +1 -1
- package/schemas/index.json +28 -23
- package/schemas/list_presets.json +0 -5
- package/tool-parameters.schema.json +326 -167
- package/dist/server/git-branch-list-tool.js +0 -132
- package/dist/server/git-fetch-tool.js +0 -257
- package/dist/server/git-reflog-tool.js +0 -120
- package/schemas/git_branch_list.json +0 -30
- package/schemas/git_fetch.json +0 -46
- package/schemas/git_stash_list.json +0 -24
- package/schemas/git_worktree_list.json +0 -24
|
@@ -15,15 +15,10 @@
|
|
|
15
15
|
"type": "string"
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
|
-
"maxItems": 256,
|
|
19
18
|
"type": "array",
|
|
20
19
|
"items": {
|
|
21
20
|
"type": "string"
|
|
22
21
|
}
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"type": "string",
|
|
26
|
-
"const": "*"
|
|
27
22
|
}
|
|
28
23
|
]
|
|
29
24
|
},
|
|
@@ -57,15 +52,10 @@
|
|
|
57
52
|
"type": "string"
|
|
58
53
|
},
|
|
59
54
|
{
|
|
60
|
-
"maxItems": 256,
|
|
61
55
|
"type": "array",
|
|
62
56
|
"items": {
|
|
63
57
|
"type": "string"
|
|
64
58
|
}
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"type": "string",
|
|
68
|
-
"const": "*"
|
|
69
59
|
}
|
|
70
60
|
]
|
|
71
61
|
},
|
|
@@ -99,6 +89,25 @@
|
|
|
99
89
|
"description": "Pair with `remote`.",
|
|
100
90
|
"type": "string"
|
|
101
91
|
},
|
|
92
|
+
"compareRefs": {
|
|
93
|
+
"description": "Ahead/behind between two local refs (e.g. main vs a feature branch), independent of upstream tracking.",
|
|
94
|
+
"type": "object",
|
|
95
|
+
"properties": {
|
|
96
|
+
"left": {
|
|
97
|
+
"type": "string",
|
|
98
|
+
"description": "Base ref (ahead = commits in right not in left)."
|
|
99
|
+
},
|
|
100
|
+
"right": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"description": "Other ref (behind = commits in left not in right)."
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"required": [
|
|
106
|
+
"left",
|
|
107
|
+
"right"
|
|
108
|
+
],
|
|
109
|
+
"additionalProperties": false
|
|
110
|
+
},
|
|
102
111
|
"maxRoots": {
|
|
103
112
|
"default": 64,
|
|
104
113
|
"type": "integer",
|
|
@@ -124,15 +133,10 @@
|
|
|
124
133
|
"type": "string"
|
|
125
134
|
},
|
|
126
135
|
{
|
|
127
|
-
"maxItems": 256,
|
|
128
136
|
"type": "array",
|
|
129
137
|
"items": {
|
|
130
138
|
"type": "string"
|
|
131
139
|
}
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
"type": "string",
|
|
135
|
-
"const": "*"
|
|
136
140
|
}
|
|
137
141
|
]
|
|
138
142
|
},
|
|
@@ -191,15 +195,10 @@
|
|
|
191
195
|
"type": "string"
|
|
192
196
|
},
|
|
193
197
|
{
|
|
194
|
-
"maxItems": 256,
|
|
195
198
|
"type": "array",
|
|
196
199
|
"items": {
|
|
197
200
|
"type": "string"
|
|
198
201
|
}
|
|
199
|
-
},
|
|
200
|
-
{
|
|
201
|
-
"type": "string",
|
|
202
|
-
"const": "*"
|
|
203
202
|
}
|
|
204
203
|
]
|
|
205
204
|
},
|
|
@@ -228,15 +227,10 @@
|
|
|
228
227
|
"type": "string"
|
|
229
228
|
},
|
|
230
229
|
{
|
|
231
|
-
"maxItems": 256,
|
|
232
230
|
"type": "array",
|
|
233
231
|
"items": {
|
|
234
232
|
"type": "string"
|
|
235
233
|
}
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
"type": "string",
|
|
239
|
-
"const": "*"
|
|
240
234
|
}
|
|
241
235
|
]
|
|
242
236
|
},
|
|
@@ -279,11 +273,100 @@
|
|
|
279
273
|
"branch": {
|
|
280
274
|
"description": "Ref/branch to log from. Default: HEAD.",
|
|
281
275
|
"type": "string"
|
|
276
|
+
},
|
|
277
|
+
"follow": {
|
|
278
|
+
"default": false,
|
|
279
|
+
"description": "Pass `git log --follow` for rename-aware history. Requires exactly one entry in `paths`.",
|
|
280
|
+
"type": "boolean"
|
|
282
281
|
}
|
|
283
282
|
},
|
|
284
283
|
"required": [
|
|
285
284
|
"format",
|
|
286
|
-
"maxCommits"
|
|
285
|
+
"maxCommits",
|
|
286
|
+
"follow"
|
|
287
|
+
],
|
|
288
|
+
"additionalProperties": false
|
|
289
|
+
},
|
|
290
|
+
"git_grep": {
|
|
291
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
292
|
+
"type": "object",
|
|
293
|
+
"properties": {
|
|
294
|
+
"root": {
|
|
295
|
+
"description": "Repo path, array of paths, or \"*\" for all MCP roots.",
|
|
296
|
+
"anyOf": [
|
|
297
|
+
{
|
|
298
|
+
"type": "string"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"type": "array",
|
|
302
|
+
"items": {
|
|
303
|
+
"type": "string"
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
]
|
|
307
|
+
},
|
|
308
|
+
"format": {
|
|
309
|
+
"default": "markdown",
|
|
310
|
+
"type": "string",
|
|
311
|
+
"enum": [
|
|
312
|
+
"markdown",
|
|
313
|
+
"json"
|
|
314
|
+
]
|
|
315
|
+
},
|
|
316
|
+
"pickaxe": {
|
|
317
|
+
"type": "object",
|
|
318
|
+
"properties": {
|
|
319
|
+
"mode": {
|
|
320
|
+
"type": "string",
|
|
321
|
+
"enum": [
|
|
322
|
+
"S",
|
|
323
|
+
"G"
|
|
324
|
+
],
|
|
325
|
+
"description": "`S` = pickaxe string (`git log -S`); `G` = pickaxe regex (`git log -G`)."
|
|
326
|
+
},
|
|
327
|
+
"term": {
|
|
328
|
+
"type": "string",
|
|
329
|
+
"minLength": 1,
|
|
330
|
+
"maxLength": 500,
|
|
331
|
+
"description": "Search term / regex for pickaxe history."
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
"required": [
|
|
335
|
+
"mode",
|
|
336
|
+
"term"
|
|
337
|
+
],
|
|
338
|
+
"additionalProperties": false,
|
|
339
|
+
"description": "Pickaxe history search. Returns `commits[]` (sha + subject) per root."
|
|
340
|
+
},
|
|
341
|
+
"ref": {
|
|
342
|
+
"description": "Commit/branch/tag to use as the history tip. Must be a safe ref token.",
|
|
343
|
+
"type": "string"
|
|
344
|
+
},
|
|
345
|
+
"paths": {
|
|
346
|
+
"description": "Limit history to these paths (must resolve within the repo root).",
|
|
347
|
+
"type": "array",
|
|
348
|
+
"items": {
|
|
349
|
+
"type": "string"
|
|
350
|
+
}
|
|
351
|
+
},
|
|
352
|
+
"ignoreCase": {
|
|
353
|
+
"default": false,
|
|
354
|
+
"description": "Case-insensitive match (`-i`; affects `G` mode regexes).",
|
|
355
|
+
"type": "boolean"
|
|
356
|
+
},
|
|
357
|
+
"maxMatches": {
|
|
358
|
+
"default": 200,
|
|
359
|
+
"description": "Max commits per root (hard cap 1000, default 200).",
|
|
360
|
+
"type": "integer",
|
|
361
|
+
"minimum": 1,
|
|
362
|
+
"maximum": 1000
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
"required": [
|
|
366
|
+
"format",
|
|
367
|
+
"pickaxe",
|
|
368
|
+
"ignoreCase",
|
|
369
|
+
"maxMatches"
|
|
287
370
|
],
|
|
288
371
|
"additionalProperties": false
|
|
289
372
|
},
|
|
@@ -357,11 +440,11 @@
|
|
|
357
440
|
]
|
|
358
441
|
},
|
|
359
442
|
"base": {
|
|
360
|
-
"description": "Base ref (e.g. \"main\"
|
|
443
|
+
"description": "Base ref (e.g. \"main\"). Ancestor notation is accepted (e.g. \"HEAD~3\", \"main^2\"). Omit for unstaged changes.",
|
|
361
444
|
"type": "string"
|
|
362
445
|
},
|
|
363
446
|
"head": {
|
|
364
|
-
"description": "Head ref (e.g. \"feature-branch\"). Defaults to HEAD. Used only when `base` is set.",
|
|
447
|
+
"description": "Head ref (e.g. \"feature-branch\"). Ancestor notation is accepted (e.g. \"HEAD~3\", \"main^2\"). Defaults to HEAD. Used only when `base` is set.",
|
|
365
448
|
"type": "string"
|
|
366
449
|
},
|
|
367
450
|
"path": {
|
|
@@ -385,11 +468,19 @@
|
|
|
385
468
|
"type": "integer",
|
|
386
469
|
"minimum": 0,
|
|
387
470
|
"maximum": 100
|
|
471
|
+
},
|
|
472
|
+
"maxBytes": {
|
|
473
|
+
"default": 512000,
|
|
474
|
+
"description": "Max UTF-8 bytes of diff text to return (default 512000). Oversized output is truncated with truncated:true.",
|
|
475
|
+
"type": "integer",
|
|
476
|
+
"minimum": 1024,
|
|
477
|
+
"maximum": 10000000
|
|
388
478
|
}
|
|
389
479
|
},
|
|
390
480
|
"required": [
|
|
391
481
|
"format",
|
|
392
|
-
"staged"
|
|
482
|
+
"staged",
|
|
483
|
+
"maxBytes"
|
|
393
484
|
],
|
|
394
485
|
"additionalProperties": false
|
|
395
486
|
},
|
|
@@ -412,7 +503,7 @@
|
|
|
412
503
|
"ref": {
|
|
413
504
|
"type": "string",
|
|
414
505
|
"minLength": 1,
|
|
415
|
-
"description": "Commit reference (SHA, branch, tag, or
|
|
506
|
+
"description": "Commit reference (SHA, branch, tag, or ancestor notation like \"HEAD~3\", \"main^2\")."
|
|
416
507
|
},
|
|
417
508
|
"path": {
|
|
418
509
|
"description": "Optional single file path to inspect at the ref. Merged with `paths` when both are provided.",
|
|
@@ -436,29 +527,7 @@
|
|
|
436
527
|
],
|
|
437
528
|
"additionalProperties": false
|
|
438
529
|
},
|
|
439
|
-
"
|
|
440
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
441
|
-
"type": "object",
|
|
442
|
-
"properties": {
|
|
443
|
-
"workspaceRoot": {
|
|
444
|
-
"description": "Repo path. Default: first MCP root / cwd.",
|
|
445
|
-
"type": "string"
|
|
446
|
-
},
|
|
447
|
-
"format": {
|
|
448
|
-
"default": "markdown",
|
|
449
|
-
"type": "string",
|
|
450
|
-
"enum": [
|
|
451
|
-
"markdown",
|
|
452
|
-
"json"
|
|
453
|
-
]
|
|
454
|
-
}
|
|
455
|
-
},
|
|
456
|
-
"required": [
|
|
457
|
-
"format"
|
|
458
|
-
],
|
|
459
|
-
"additionalProperties": false
|
|
460
|
-
},
|
|
461
|
-
"git_stash_list": {
|
|
530
|
+
"git_conflicts": {
|
|
462
531
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
463
532
|
"type": "object",
|
|
464
533
|
"properties": {
|
|
@@ -473,54 +542,24 @@
|
|
|
473
542
|
"markdown",
|
|
474
543
|
"json"
|
|
475
544
|
]
|
|
476
|
-
}
|
|
477
|
-
},
|
|
478
|
-
"required": [
|
|
479
|
-
"format"
|
|
480
|
-
],
|
|
481
|
-
"additionalProperties": false
|
|
482
|
-
},
|
|
483
|
-
"git_fetch": {
|
|
484
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
485
|
-
"type": "object",
|
|
486
|
-
"properties": {
|
|
487
|
-
"workspaceRoot": {
|
|
488
|
-
"description": "Repo path. Default: first MCP root / cwd.",
|
|
489
|
-
"type": "string"
|
|
490
545
|
},
|
|
491
|
-
"
|
|
492
|
-
"default":
|
|
493
|
-
"
|
|
494
|
-
"enum": [
|
|
495
|
-
"markdown",
|
|
496
|
-
"json"
|
|
497
|
-
]
|
|
498
|
-
},
|
|
499
|
-
"remote": {
|
|
500
|
-
"default": "origin",
|
|
501
|
-
"description": "Remote to fetch from (default: origin).",
|
|
502
|
-
"type": "string"
|
|
503
|
-
},
|
|
504
|
-
"branch": {
|
|
505
|
-
"description": "If specified: fetch only this branch (e.g. 'main').",
|
|
506
|
-
"type": "string"
|
|
507
|
-
},
|
|
508
|
-
"prune": {
|
|
509
|
-
"default": false,
|
|
510
|
-
"description": "Pass --prune to remove deleted remote branches (default: false).",
|
|
546
|
+
"withHunks": {
|
|
547
|
+
"default": true,
|
|
548
|
+
"description": "Parse conflict-marker hunks per file. Set false for just the path list.",
|
|
511
549
|
"type": "boolean"
|
|
512
550
|
},
|
|
513
|
-
"
|
|
514
|
-
"default":
|
|
515
|
-
"description": "
|
|
516
|
-
"type": "
|
|
551
|
+
"maxLinesPerFile": {
|
|
552
|
+
"default": 200,
|
|
553
|
+
"description": "Cap on lines scanned per file before marking `truncated: true`.",
|
|
554
|
+
"type": "integer",
|
|
555
|
+
"minimum": 1,
|
|
556
|
+
"maximum": 2000
|
|
517
557
|
}
|
|
518
558
|
},
|
|
519
559
|
"required": [
|
|
520
560
|
"format",
|
|
521
|
-
"
|
|
522
|
-
"
|
|
523
|
-
"tags"
|
|
561
|
+
"withHunks",
|
|
562
|
+
"maxLinesPerFile"
|
|
524
563
|
],
|
|
525
564
|
"additionalProperties": false
|
|
526
565
|
},
|
|
@@ -546,7 +585,7 @@
|
|
|
546
585
|
"description": "Repo-relative path to the file to blame."
|
|
547
586
|
},
|
|
548
587
|
"ref": {
|
|
549
|
-
"description": "Optional commit-ish (SHA, branch, tag) to blame at.",
|
|
588
|
+
"description": "Optional commit-ish (SHA, branch, tag) to blame at. Ancestor notation is accepted (e.g. \"HEAD~3\", \"main^2\").",
|
|
550
589
|
"type": "string"
|
|
551
590
|
},
|
|
552
591
|
"startLine": {
|
|
@@ -576,70 +615,6 @@
|
|
|
576
615
|
],
|
|
577
616
|
"additionalProperties": false
|
|
578
617
|
},
|
|
579
|
-
"git_branch_list": {
|
|
580
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
581
|
-
"type": "object",
|
|
582
|
-
"properties": {
|
|
583
|
-
"workspaceRoot": {
|
|
584
|
-
"description": "Repo path. Default: first MCP root / cwd.",
|
|
585
|
-
"type": "string"
|
|
586
|
-
},
|
|
587
|
-
"format": {
|
|
588
|
-
"default": "markdown",
|
|
589
|
-
"type": "string",
|
|
590
|
-
"enum": [
|
|
591
|
-
"markdown",
|
|
592
|
-
"json"
|
|
593
|
-
]
|
|
594
|
-
},
|
|
595
|
-
"includeRemotes": {
|
|
596
|
-
"default": false,
|
|
597
|
-
"description": "Include remote-tracking branches from refs/remotes (symbolic origin/HEAD excluded).",
|
|
598
|
-
"type": "boolean"
|
|
599
|
-
}
|
|
600
|
-
},
|
|
601
|
-
"required": [
|
|
602
|
-
"format",
|
|
603
|
-
"includeRemotes"
|
|
604
|
-
],
|
|
605
|
-
"additionalProperties": false
|
|
606
|
-
},
|
|
607
|
-
"git_reflog": {
|
|
608
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
609
|
-
"type": "object",
|
|
610
|
-
"properties": {
|
|
611
|
-
"workspaceRoot": {
|
|
612
|
-
"description": "Repo path. Default: first MCP root / cwd.",
|
|
613
|
-
"type": "string"
|
|
614
|
-
},
|
|
615
|
-
"format": {
|
|
616
|
-
"default": "markdown",
|
|
617
|
-
"type": "string",
|
|
618
|
-
"enum": [
|
|
619
|
-
"markdown",
|
|
620
|
-
"json"
|
|
621
|
-
]
|
|
622
|
-
},
|
|
623
|
-
"ref": {
|
|
624
|
-
"default": "HEAD",
|
|
625
|
-
"description": "Ref whose reflog to show (branch name, HEAD, etc.). Default: HEAD.",
|
|
626
|
-
"type": "string"
|
|
627
|
-
},
|
|
628
|
-
"maxEntries": {
|
|
629
|
-
"default": 30,
|
|
630
|
-
"description": "Maximum reflog entries to return (hard cap 200). Default 30.",
|
|
631
|
-
"type": "integer",
|
|
632
|
-
"minimum": 1,
|
|
633
|
-
"maximum": 200
|
|
634
|
-
}
|
|
635
|
-
},
|
|
636
|
-
"required": [
|
|
637
|
-
"format",
|
|
638
|
-
"ref",
|
|
639
|
-
"maxEntries"
|
|
640
|
-
],
|
|
641
|
-
"additionalProperties": false
|
|
642
|
-
},
|
|
643
618
|
"batch_commit": {
|
|
644
619
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
645
620
|
"type": "object",
|
|
@@ -717,7 +692,7 @@
|
|
|
717
692
|
}
|
|
718
693
|
]
|
|
719
694
|
},
|
|
720
|
-
"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."
|
|
695
|
+
"description": "Paths to stage, relative to git root. String or `{ path, lines }` for hunk-level staging. Each path is staged individually (`git add` / `git apply --cached` / `git rm --cached`); on mid-entry stage failure, already-staged paths for that entry are unstaged. Deleted tracked files are staged via `git rm --cached`. Cannot combine `lines` with a deleted file. Rejects `.`, the repo root, and directory pathspecs."
|
|
721
696
|
}
|
|
722
697
|
},
|
|
723
698
|
"required": [
|
|
@@ -739,7 +714,7 @@
|
|
|
739
714
|
},
|
|
740
715
|
"dryRun": {
|
|
741
716
|
"default": false,
|
|
742
|
-
"description": "Stage files and return a preview without writing commits;
|
|
717
|
+
"description": "Stage files and return a preview without writing commits; restores the index afterwards. Response is marked DRY RUN.",
|
|
743
718
|
"type": "boolean"
|
|
744
719
|
}
|
|
745
720
|
},
|
|
@@ -819,7 +794,7 @@
|
|
|
819
794
|
},
|
|
820
795
|
"strategy": {
|
|
821
796
|
"default": "auto",
|
|
822
|
-
"description": "`auto` (default): cascade fast-forward → rebase → merge-commit per source. `ff-only`: only fast-forward, fail if diverged. `rebase`: rebase source onto destination, then fast-forward (no merge-commit fallback). `merge`: always create a merge commit (no fast-forward).",
|
|
797
|
+
"description": "`auto` (default): cascade fast-forward → rebase → merge-commit per source. `ff-only`: only fast-forward, fail if diverged. `rebase`: rebase source onto destination, then fast-forward (no merge-commit fallback). `merge`: always create a merge commit (no fast-forward). Note: `auto`/`rebase` rewrite the source branch tip in place when rebasing (new SHAs).",
|
|
823
798
|
"type": "string",
|
|
824
799
|
"enum": [
|
|
825
800
|
"auto",
|
|
@@ -839,7 +814,7 @@
|
|
|
839
814
|
},
|
|
840
815
|
"deleteMergedWorktrees": {
|
|
841
816
|
"default": false,
|
|
842
|
-
"description": "Remove local worktrees on source branches after clean merge (`git worktree remove`). Protected tails skipped.",
|
|
817
|
+
"description": "Remove local worktrees on source branches after clean merge (`git worktree remove`). Protected source names and path tails skipped.",
|
|
843
818
|
"type": "boolean"
|
|
844
819
|
}
|
|
845
820
|
},
|
|
@@ -889,13 +864,22 @@
|
|
|
889
864
|
},
|
|
890
865
|
"deleteMergedWorktrees": {
|
|
891
866
|
"default": false,
|
|
892
|
-
"description": "Remove local worktrees on branch-kind sources after success. Protected tails skipped.",
|
|
867
|
+
"description": "Remove local worktrees on branch-kind sources after success. Protected names and path tails skipped.",
|
|
893
868
|
"type": "boolean"
|
|
894
869
|
},
|
|
895
870
|
"strictMergedRefEquality": {
|
|
896
871
|
"default": false,
|
|
897
872
|
"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).",
|
|
898
873
|
"type": "boolean"
|
|
874
|
+
},
|
|
875
|
+
"onConflict": {
|
|
876
|
+
"default": "abort",
|
|
877
|
+
"description": "`abort` (default): on conflict, run `cherry-pick --abort` and roll back the whole range (unchanged behavior). `pause`: on conflict, leave the conflict and native cherry-pick sequencer state in place — commits already applied stay applied — so it can be resolved and resumed via `git_cherry_pick_continue`.",
|
|
878
|
+
"type": "string",
|
|
879
|
+
"enum": [
|
|
880
|
+
"abort",
|
|
881
|
+
"pause"
|
|
882
|
+
]
|
|
899
883
|
}
|
|
900
884
|
},
|
|
901
885
|
"required": [
|
|
@@ -903,7 +887,40 @@
|
|
|
903
887
|
"sources",
|
|
904
888
|
"deleteMergedBranches",
|
|
905
889
|
"deleteMergedWorktrees",
|
|
906
|
-
"strictMergedRefEquality"
|
|
890
|
+
"strictMergedRefEquality",
|
|
891
|
+
"onConflict"
|
|
892
|
+
],
|
|
893
|
+
"additionalProperties": false
|
|
894
|
+
},
|
|
895
|
+
"git_cherry_pick_continue": {
|
|
896
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
897
|
+
"type": "object",
|
|
898
|
+
"properties": {
|
|
899
|
+
"workspaceRoot": {
|
|
900
|
+
"description": "Repo path. Default: first MCP root / cwd.",
|
|
901
|
+
"type": "string"
|
|
902
|
+
},
|
|
903
|
+
"format": {
|
|
904
|
+
"default": "markdown",
|
|
905
|
+
"type": "string",
|
|
906
|
+
"enum": [
|
|
907
|
+
"markdown",
|
|
908
|
+
"json"
|
|
909
|
+
]
|
|
910
|
+
},
|
|
911
|
+
"action": {
|
|
912
|
+
"default": "continue",
|
|
913
|
+
"description": "\"continue\" (default): resolve conflicts, stage them, then resume the sequencer. \"abort\": roll back to the pre-cherry-pick HEAD.",
|
|
914
|
+
"type": "string",
|
|
915
|
+
"enum": [
|
|
916
|
+
"continue",
|
|
917
|
+
"abort"
|
|
918
|
+
]
|
|
919
|
+
}
|
|
920
|
+
},
|
|
921
|
+
"required": [
|
|
922
|
+
"format",
|
|
923
|
+
"action"
|
|
907
924
|
],
|
|
908
925
|
"additionalProperties": false
|
|
909
926
|
},
|
|
@@ -935,6 +952,51 @@
|
|
|
935
952
|
],
|
|
936
953
|
"additionalProperties": false
|
|
937
954
|
},
|
|
955
|
+
"git_revert": {
|
|
956
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
957
|
+
"type": "object",
|
|
958
|
+
"properties": {
|
|
959
|
+
"workspaceRoot": {
|
|
960
|
+
"description": "Repo path. Default: first MCP root / cwd.",
|
|
961
|
+
"type": "string"
|
|
962
|
+
},
|
|
963
|
+
"format": {
|
|
964
|
+
"default": "markdown",
|
|
965
|
+
"type": "string",
|
|
966
|
+
"enum": [
|
|
967
|
+
"markdown",
|
|
968
|
+
"json"
|
|
969
|
+
]
|
|
970
|
+
},
|
|
971
|
+
"sources": {
|
|
972
|
+
"minItems": 1,
|
|
973
|
+
"maxItems": 20,
|
|
974
|
+
"type": "array",
|
|
975
|
+
"items": {
|
|
976
|
+
"type": "string",
|
|
977
|
+
"minLength": 1
|
|
978
|
+
},
|
|
979
|
+
"description": "Commits to revert, applied in order: SHA, branch/tag name, or ancestor notation (`HEAD~1`)."
|
|
980
|
+
},
|
|
981
|
+
"noCommit": {
|
|
982
|
+
"default": false,
|
|
983
|
+
"description": "Pass `--no-commit`: apply the revert(s) to the index/working tree without committing (changes are left staged instead).",
|
|
984
|
+
"type": "boolean"
|
|
985
|
+
},
|
|
986
|
+
"mainline": {
|
|
987
|
+
"description": "Parent number (`-m N`) to diff against — required when reverting a merge commit.",
|
|
988
|
+
"type": "integer",
|
|
989
|
+
"minimum": 1,
|
|
990
|
+
"maximum": 9007199254740991
|
|
991
|
+
}
|
|
992
|
+
},
|
|
993
|
+
"required": [
|
|
994
|
+
"format",
|
|
995
|
+
"sources",
|
|
996
|
+
"noCommit"
|
|
997
|
+
],
|
|
998
|
+
"additionalProperties": false
|
|
999
|
+
},
|
|
938
1000
|
"git_tag": {
|
|
939
1001
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
940
1002
|
"type": "object",
|
|
@@ -977,6 +1039,58 @@
|
|
|
977
1039
|
],
|
|
978
1040
|
"additionalProperties": false
|
|
979
1041
|
},
|
|
1042
|
+
"git_branch": {
|
|
1043
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1044
|
+
"type": "object",
|
|
1045
|
+
"properties": {
|
|
1046
|
+
"workspaceRoot": {
|
|
1047
|
+
"description": "Repo path. Default: first MCP root / cwd.",
|
|
1048
|
+
"type": "string"
|
|
1049
|
+
},
|
|
1050
|
+
"format": {
|
|
1051
|
+
"default": "markdown",
|
|
1052
|
+
"type": "string",
|
|
1053
|
+
"enum": [
|
|
1054
|
+
"markdown",
|
|
1055
|
+
"json"
|
|
1056
|
+
]
|
|
1057
|
+
},
|
|
1058
|
+
"action": {
|
|
1059
|
+
"type": "string",
|
|
1060
|
+
"enum": [
|
|
1061
|
+
"create",
|
|
1062
|
+
"delete",
|
|
1063
|
+
"rename"
|
|
1064
|
+
],
|
|
1065
|
+
"description": "Which branch operation to perform."
|
|
1066
|
+
},
|
|
1067
|
+
"name": {
|
|
1068
|
+
"type": "string",
|
|
1069
|
+
"minLength": 1,
|
|
1070
|
+
"description": "Branch name to create/delete, or the existing branch name for rename."
|
|
1071
|
+
},
|
|
1072
|
+
"from": {
|
|
1073
|
+
"description": "Commit-ish to base a new branch on (create only). Default: HEAD.",
|
|
1074
|
+
"type": "string"
|
|
1075
|
+
},
|
|
1076
|
+
"newName": {
|
|
1077
|
+
"description": "New branch name (required for rename).",
|
|
1078
|
+
"type": "string"
|
|
1079
|
+
},
|
|
1080
|
+
"force": {
|
|
1081
|
+
"default": false,
|
|
1082
|
+
"description": "Force-delete an unmerged branch (`git branch -D`). Delete only; never overrides protected-branch rejection.",
|
|
1083
|
+
"type": "boolean"
|
|
1084
|
+
}
|
|
1085
|
+
},
|
|
1086
|
+
"required": [
|
|
1087
|
+
"format",
|
|
1088
|
+
"action",
|
|
1089
|
+
"name",
|
|
1090
|
+
"force"
|
|
1091
|
+
],
|
|
1092
|
+
"additionalProperties": false
|
|
1093
|
+
},
|
|
980
1094
|
"git_worktree_add": {
|
|
981
1095
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
982
1096
|
"type": "object",
|
|
@@ -996,7 +1110,7 @@
|
|
|
996
1110
|
"path": {
|
|
997
1111
|
"type": "string",
|
|
998
1112
|
"minLength": 1,
|
|
999
|
-
"description": "Filesystem path for the new worktree (relative paths resolved from git toplevel)."
|
|
1113
|
+
"description": "Filesystem path for the new worktree (relative paths resolved from git toplevel). Sibling directories outside the repo toplevel are allowed; leading `-` and NUL are rejected."
|
|
1000
1114
|
},
|
|
1001
1115
|
"branch": {
|
|
1002
1116
|
"type": "string",
|
|
@@ -1034,7 +1148,7 @@
|
|
|
1034
1148
|
"path": {
|
|
1035
1149
|
"type": "string",
|
|
1036
1150
|
"minLength": 1,
|
|
1037
|
-
"description": "Path of the worktree to remove. Must not be the main worktree."
|
|
1151
|
+
"description": "Path of the worktree to remove. Must not be the main worktree. Sibling paths outside the repo toplevel are allowed; leading `-` and NUL are rejected."
|
|
1038
1152
|
},
|
|
1039
1153
|
"force": {
|
|
1040
1154
|
"default": false,
|
|
@@ -1084,6 +1198,51 @@
|
|
|
1084
1198
|
"pop"
|
|
1085
1199
|
],
|
|
1086
1200
|
"additionalProperties": false
|
|
1201
|
+
},
|
|
1202
|
+
"git_stash_push": {
|
|
1203
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1204
|
+
"type": "object",
|
|
1205
|
+
"properties": {
|
|
1206
|
+
"workspaceRoot": {
|
|
1207
|
+
"description": "Repo path. Default: first MCP root / cwd.",
|
|
1208
|
+
"type": "string"
|
|
1209
|
+
},
|
|
1210
|
+
"format": {
|
|
1211
|
+
"default": "markdown",
|
|
1212
|
+
"type": "string",
|
|
1213
|
+
"enum": [
|
|
1214
|
+
"markdown",
|
|
1215
|
+
"json"
|
|
1216
|
+
]
|
|
1217
|
+
},
|
|
1218
|
+
"message": {
|
|
1219
|
+
"description": "Stash subject message (`git stash push -m <message>`).",
|
|
1220
|
+
"type": "string"
|
|
1221
|
+
},
|
|
1222
|
+
"includeUntracked": {
|
|
1223
|
+
"default": false,
|
|
1224
|
+
"description": "Include untracked files in the stash (`git stash push -u`).",
|
|
1225
|
+
"type": "boolean"
|
|
1226
|
+
},
|
|
1227
|
+
"keepIndex": {
|
|
1228
|
+
"default": false,
|
|
1229
|
+
"description": "Keep staged changes in the index after stashing (`git stash push --keep-index`).",
|
|
1230
|
+
"type": "boolean"
|
|
1231
|
+
},
|
|
1232
|
+
"paths": {
|
|
1233
|
+
"description": "Scope the stash to specific paths, relative to git root (must resolve within repo root).",
|
|
1234
|
+
"type": "array",
|
|
1235
|
+
"items": {
|
|
1236
|
+
"type": "string"
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
},
|
|
1240
|
+
"required": [
|
|
1241
|
+
"format",
|
|
1242
|
+
"includeUntracked",
|
|
1243
|
+
"keepIndex"
|
|
1244
|
+
],
|
|
1245
|
+
"additionalProperties": false
|
|
1087
1246
|
}
|
|
1088
1247
|
}
|
|
1089
1248
|
}
|