@andrebuzeli/git-mcp 2.28.1 → 2.29.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 (188) hide show
  1. package/dist/client.d.ts +306 -306
  2. package/dist/client.js +298 -298
  3. package/dist/config.d.ts +310 -310
  4. package/dist/config.js +392 -392
  5. package/dist/index.d.ts +22 -22
  6. package/dist/index.js +89 -89
  7. package/dist/providers/base-provider.d.ts +160 -160
  8. package/dist/providers/base-provider.js +274 -274
  9. package/dist/providers/error-handler.d.ts +74 -50
  10. package/dist/providers/error-handler.d.ts.map +1 -1
  11. package/dist/providers/error-handler.js +234 -175
  12. package/dist/providers/error-handler.js.map +1 -1
  13. package/dist/providers/gitea-provider.d.ts +97 -97
  14. package/dist/providers/gitea-provider.d.ts.map +1 -1
  15. package/dist/providers/gitea-provider.js +1015 -1001
  16. package/dist/providers/gitea-provider.js.map +1 -1
  17. package/dist/providers/github-provider.d.ts +104 -104
  18. package/dist/providers/github-provider.d.ts.map +1 -1
  19. package/dist/providers/github-provider.js +1248 -1234
  20. package/dist/providers/github-provider.js.map +1 -1
  21. package/dist/providers/index.d.ts +12 -12
  22. package/dist/providers/index.js +40 -40
  23. package/dist/providers/provider-factory.d.ts +74 -74
  24. package/dist/providers/provider-factory.d.ts.map +1 -1
  25. package/dist/providers/provider-factory.js +318 -311
  26. package/dist/providers/provider-factory.js.map +1 -1
  27. package/dist/providers/types.d.ts +318 -318
  28. package/dist/providers/types.js +6 -6
  29. package/dist/server.d.ts +76 -76
  30. package/dist/server.js +306 -306
  31. package/dist/server.js.map +1 -1
  32. package/dist/tools/git-archive.d.ts +169 -165
  33. package/dist/tools/git-archive.d.ts.map +1 -1
  34. package/dist/tools/git-archive.js +246 -233
  35. package/dist/tools/git-archive.js.map +1 -1
  36. package/dist/tools/git-branches.d.ts +434 -430
  37. package/dist/tools/git-branches.d.ts.map +1 -1
  38. package/dist/tools/git-branches.js +640 -627
  39. package/dist/tools/git-branches.js.map +1 -1
  40. package/dist/tools/git-commits.d.ts +489 -485
  41. package/dist/tools/git-commits.d.ts.map +1 -1
  42. package/dist/tools/git-commits.js +748 -735
  43. package/dist/tools/git-commits.js.map +1 -1
  44. package/dist/tools/git-config.d.ts +144 -140
  45. package/dist/tools/git-config.d.ts.map +1 -1
  46. package/dist/tools/git-config.js +281 -268
  47. package/dist/tools/git-config.js.map +1 -1
  48. package/dist/tools/git-files.d.ts +490 -486
  49. package/dist/tools/git-files.d.ts.map +1 -1
  50. package/dist/tools/git-files.js +620 -607
  51. package/dist/tools/git-files.js.map +1 -1
  52. package/dist/tools/git-initialize.d.ts +46 -42
  53. package/dist/tools/git-initialize.d.ts.map +1 -1
  54. package/dist/tools/git-initialize.js +81 -68
  55. package/dist/tools/git-initialize.js.map +1 -1
  56. package/dist/tools/git-issues.d.ts +578 -571
  57. package/dist/tools/git-issues.d.ts.map +1 -1
  58. package/dist/tools/git-issues.js +754 -740
  59. package/dist/tools/git-issues.js.map +1 -1
  60. package/dist/tools/git-pulls.d.ts +701 -694
  61. package/dist/tools/git-pulls.d.ts.map +1 -1
  62. package/dist/tools/git-pulls.js +746 -732
  63. package/dist/tools/git-pulls.js.map +1 -1
  64. package/dist/tools/git-releases.d.ts +494 -487
  65. package/dist/tools/git-releases.d.ts.map +1 -1
  66. package/dist/tools/git-releases.js +571 -557
  67. package/dist/tools/git-releases.js.map +1 -1
  68. package/dist/tools/git-remote.d.ts +142 -138
  69. package/dist/tools/git-remote.d.ts.map +1 -1
  70. package/dist/tools/git-remote.js +287 -274
  71. package/dist/tools/git-remote.js.map +1 -1
  72. package/dist/tools/git-repositories.d.ts +487 -483
  73. package/dist/tools/git-repositories.d.ts.map +1 -1
  74. package/dist/tools/git-repositories.js +653 -640
  75. package/dist/tools/git-repositories.js.map +1 -1
  76. package/dist/tools/git-reset.d.ts +134 -130
  77. package/dist/tools/git-reset.d.ts.map +1 -1
  78. package/dist/tools/git-reset.js +236 -223
  79. package/dist/tools/git-reset.js.map +1 -1
  80. package/dist/tools/git-revert.d.ts +153 -149
  81. package/dist/tools/git-revert.d.ts.map +1 -1
  82. package/dist/tools/git-revert.js +211 -198
  83. package/dist/tools/git-revert.js.map +1 -1
  84. package/dist/tools/git-stash.d.ts +144 -140
  85. package/dist/tools/git-stash.d.ts.map +1 -1
  86. package/dist/tools/git-stash.js +282 -269
  87. package/dist/tools/git-stash.js.map +1 -1
  88. package/dist/tools/git-sync.d.ts +182 -178
  89. package/dist/tools/git-sync.d.ts.map +1 -1
  90. package/dist/tools/git-sync.js +325 -312
  91. package/dist/tools/git-sync.js.map +1 -1
  92. package/dist/tools/git-tags.d.ts +418 -411
  93. package/dist/tools/git-tags.d.ts.map +1 -1
  94. package/dist/tools/git-tags.js +499 -485
  95. package/dist/tools/git-tags.js.map +1 -1
  96. package/dist/tools/git-upload-project.d.ts +5 -1
  97. package/dist/tools/git-upload-project.d.ts.map +1 -1
  98. package/dist/tools/git-upload-project.js +21 -1
  99. package/dist/tools/git-upload-project.js.map +1 -1
  100. package/dist/tools/git-webhooks.d.ts +477 -470
  101. package/dist/tools/git-webhooks.d.ts.map +1 -1
  102. package/dist/tools/git-webhooks.js +561 -543
  103. package/dist/tools/git-webhooks.js.map +1 -1
  104. package/dist/utils/git-error-analyzer.d.ts +64 -0
  105. package/dist/utils/git-error-analyzer.d.ts.map +1 -0
  106. package/dist/utils/git-error-analyzer.js +286 -0
  107. package/dist/utils/git-error-analyzer.js.map +1 -0
  108. package/dist/utils/terminal-controller.d.ts +80 -80
  109. package/dist/utils/terminal-controller.js +345 -345
  110. package/dist/utils/user-detection.d.ts +24 -24
  111. package/dist/utils/user-detection.js +53 -53
  112. package/package.json +2 -2
  113. package/dist/tools/gh-actions.d.ts +0 -253
  114. package/dist/tools/gh-actions.d.ts.map +0 -1
  115. package/dist/tools/gh-actions.js +0 -390
  116. package/dist/tools/gh-actions.js.map +0 -1
  117. package/dist/tools/gh-analytics.d.ts +0 -264
  118. package/dist/tools/gh-analytics.d.ts.map +0 -1
  119. package/dist/tools/gh-analytics.js +0 -402
  120. package/dist/tools/gh-analytics.js.map +0 -1
  121. package/dist/tools/gh-code-review.d.ts +0 -305
  122. package/dist/tools/gh-code-review.d.ts.map +0 -1
  123. package/dist/tools/gh-code-review.js +0 -513
  124. package/dist/tools/gh-code-review.js.map +0 -1
  125. package/dist/tools/gh-codespaces.d.ts +0 -139
  126. package/dist/tools/gh-codespaces.d.ts.map +0 -1
  127. package/dist/tools/gh-codespaces.js +0 -283
  128. package/dist/tools/gh-codespaces.js.map +0 -1
  129. package/dist/tools/gh-deployments.d.ts +0 -301
  130. package/dist/tools/gh-deployments.d.ts.map +0 -1
  131. package/dist/tools/gh-deployments.js +0 -368
  132. package/dist/tools/gh-deployments.js.map +0 -1
  133. package/dist/tools/gh-gists.d.ts +0 -175
  134. package/dist/tools/gh-gists.d.ts.map +0 -1
  135. package/dist/tools/gh-gists.js +0 -322
  136. package/dist/tools/gh-gists.js.map +0 -1
  137. package/dist/tools/gh-projects.d.ts +0 -206
  138. package/dist/tools/gh-projects.d.ts.map +0 -1
  139. package/dist/tools/gh-projects.js +0 -359
  140. package/dist/tools/gh-projects.js.map +0 -1
  141. package/dist/tools/gh-security.d.ts +0 -275
  142. package/dist/tools/gh-security.d.ts.map +0 -1
  143. package/dist/tools/gh-security.js +0 -396
  144. package/dist/tools/gh-security.js.map +0 -1
  145. package/dist/tools/gh-sync.d.ts +0 -214
  146. package/dist/tools/gh-sync.d.ts.map +0 -1
  147. package/dist/tools/gh-sync.js +0 -379
  148. package/dist/tools/gh-sync.js.map +0 -1
  149. package/dist/tools/gh-workflows.d.ts +0 -291
  150. package/dist/tools/gh-workflows.d.ts.map +0 -1
  151. package/dist/tools/gh-workflows.js +0 -433
  152. package/dist/tools/gh-workflows.js.map +0 -1
  153. package/dist/tools/git-bundle.d.ts +0 -172
  154. package/dist/tools/git-bundle.d.ts.map +0 -1
  155. package/dist/tools/git-bundle.js +0 -242
  156. package/dist/tools/git-bundle.js.map +0 -1
  157. package/dist/tools/git-cherry-pick.d.ts +0 -159
  158. package/dist/tools/git-cherry-pick.d.ts.map +0 -1
  159. package/dist/tools/git-cherry-pick.js +0 -225
  160. package/dist/tools/git-cherry-pick.js.map +0 -1
  161. package/dist/tools/git-rebase.d.ts +0 -138
  162. package/dist/tools/git-rebase.d.ts.map +0 -1
  163. package/dist/tools/git-rebase.js +0 -214
  164. package/dist/tools/git-rebase.js.map +0 -1
  165. package/dist/tools/git-submodule.d.ts +0 -153
  166. package/dist/tools/git-submodule.d.ts.map +0 -1
  167. package/dist/tools/git-submodule.js +0 -290
  168. package/dist/tools/git-submodule.js.map +0 -1
  169. package/dist/tools/git-worktree.d.ts +0 -160
  170. package/dist/tools/git-worktree.d.ts.map +0 -1
  171. package/dist/tools/git-worktree.js +0 -270
  172. package/dist/tools/git-worktree.js.map +0 -1
  173. package/dist/tools/repositories.d.ts +0 -406
  174. package/dist/tools/repositories.d.ts.map +0 -1
  175. package/dist/tools/repositories.js +0 -570
  176. package/dist/tools/repositories.js.map +0 -1
  177. package/dist/tools/users.d.ts +0 -373
  178. package/dist/tools/users.d.ts.map +0 -1
  179. package/dist/tools/users.js +0 -500
  180. package/dist/tools/users.js.map +0 -1
  181. package/dist/tools/validator.d.ts +0 -171
  182. package/dist/tools/validator.d.ts.map +0 -1
  183. package/dist/tools/validator.js +0 -195
  184. package/dist/tools/validator.js.map +0 -1
  185. package/dist/tools/version-control.d.ts +0 -137
  186. package/dist/tools/version-control.d.ts.map +0 -1
  187. package/dist/tools/version-control.js +0 -165
  188. package/dist/tools/version-control.js.map +0 -1
@@ -1,138 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * Tool: git-rebase
4
- *
5
- * DESCRIÇÃO:
6
- * Gerenciamento de rebase Git (GitHub + Gitea) com múltiplas ações
7
- *
8
- * FUNCIONALIDADES:
9
- * - Rebase interativo
10
- * - Rebase simples
11
- * - Abortar rebase
12
- * - Continuar rebase
13
- * - Pular commit
14
- * - Rebase de branch
15
- *
16
- * USO:
17
- * - Para reescrever histórico de commits
18
- * - Para limpar commits antes do merge
19
- * - Para reorganizar commits
20
- * - Para resolver conflitos
21
- *
22
- * RECOMENDAÇÕES:
23
- * - Use com cuidado em branches compartilhadas
24
- * - Faça backup antes de rebases complexos
25
- * - Teste em branches locais primeiro
26
- */
27
- declare const GitRebaseInputSchema: z.ZodObject<{
28
- action: z.ZodEnum<["rebase", "interactive-rebase", "abort", "continue", "skip"]>;
29
- repo: z.ZodString;
30
- provider: z.ZodEnum<["gitea", "github"]>;
31
- projectPath: z.ZodString;
32
- target_branch: z.ZodOptional<z.ZodString>;
33
- base_branch: z.ZodOptional<z.ZodString>;
34
- interactive: z.ZodOptional<z.ZodBoolean>;
35
- commit_range: z.ZodOptional<z.ZodString>;
36
- rebase_commands: z.ZodOptional<z.ZodString>;
37
- }, "strip", z.ZodTypeAny, {
38
- provider: "gitea" | "github";
39
- repo: string;
40
- action: "rebase" | "interactive-rebase" | "abort" | "continue" | "skip";
41
- projectPath: string;
42
- base_branch?: string | undefined;
43
- target_branch?: string | undefined;
44
- interactive?: boolean | undefined;
45
- commit_range?: string | undefined;
46
- rebase_commands?: string | undefined;
47
- }, {
48
- provider: "gitea" | "github";
49
- repo: string;
50
- action: "rebase" | "interactive-rebase" | "abort" | "continue" | "skip";
51
- projectPath: string;
52
- base_branch?: string | undefined;
53
- target_branch?: string | undefined;
54
- interactive?: boolean | undefined;
55
- commit_range?: string | undefined;
56
- rebase_commands?: string | undefined;
57
- }>;
58
- export type GitRebaseInput = z.infer<typeof GitRebaseInputSchema>;
59
- declare const GitRebaseResultSchema: z.ZodObject<{
60
- success: z.ZodBoolean;
61
- action: z.ZodString;
62
- message: z.ZodString;
63
- data: z.ZodOptional<z.ZodAny>;
64
- error: z.ZodOptional<z.ZodString>;
65
- }, "strip", z.ZodTypeAny, {
66
- message: string;
67
- action: string;
68
- success: boolean;
69
- error?: string | undefined;
70
- data?: any;
71
- }, {
72
- message: string;
73
- action: string;
74
- success: boolean;
75
- error?: string | undefined;
76
- data?: any;
77
- }>;
78
- export type GitRebaseResult = z.infer<typeof GitRebaseResultSchema>;
79
- export declare const gitRebaseTool: {
80
- name: string;
81
- description: string;
82
- inputSchema: {
83
- type: string;
84
- properties: {
85
- action: {
86
- type: string;
87
- enum: string[];
88
- description: string;
89
- };
90
- owner: {
91
- type: string;
92
- description: string;
93
- };
94
- repo: {
95
- type: string;
96
- description: string;
97
- };
98
- provider: {
99
- type: string;
100
- enum: string[];
101
- description: string;
102
- };
103
- projectPath: {
104
- type: string;
105
- description: string;
106
- };
107
- target_branch: {
108
- type: string;
109
- description: string;
110
- };
111
- base_branch: {
112
- type: string;
113
- description: string;
114
- };
115
- interactive: {
116
- type: string;
117
- description: string;
118
- };
119
- commit_range: {
120
- type: string;
121
- description: string;
122
- };
123
- rebase_commands: {
124
- type: string;
125
- description: string;
126
- };
127
- };
128
- required: string[];
129
- };
130
- handler(input: GitRebaseInput): Promise<GitRebaseResult>;
131
- rebase(params: GitRebaseInput): Promise<GitRebaseResult>;
132
- interactiveRebase(params: GitRebaseInput): Promise<GitRebaseResult>;
133
- abortRebase(params: GitRebaseInput): Promise<GitRebaseResult>;
134
- continueRebase(params: GitRebaseInput): Promise<GitRebaseResult>;
135
- skipCommit(params: GitRebaseInput): Promise<GitRebaseResult>;
136
- };
137
- export {};
138
- //# sourceMappingURL=git-rebase.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-rebase.d.ts","sourceRoot":"","sources":["../../src/tools/git-rebase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAexB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAMzB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAwBH,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;mBA4BzC,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;8BAmC9B,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;wBAgC/C,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;2BA0BtC,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;uBA0B7C,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;CAyBnE,CAAC"}
@@ -1,214 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.gitRebaseTool = void 0;
4
- const zod_1 = require("zod");
5
- const terminal_controller_js_1 = require("../utils/terminal-controller.js");
6
- /**
7
- * Tool: git-rebase
8
- *
9
- * DESCRIÇÃO:
10
- * Gerenciamento de rebase Git (GitHub + Gitea) com múltiplas ações
11
- *
12
- * FUNCIONALIDADES:
13
- * - Rebase interativo
14
- * - Rebase simples
15
- * - Abortar rebase
16
- * - Continuar rebase
17
- * - Pular commit
18
- * - Rebase de branch
19
- *
20
- * USO:
21
- * - Para reescrever histórico de commits
22
- * - Para limpar commits antes do merge
23
- * - Para reorganizar commits
24
- * - Para resolver conflitos
25
- *
26
- * RECOMENDAÇÕES:
27
- * - Use com cuidado em branches compartilhadas
28
- * - Faça backup antes de rebases complexos
29
- * - Teste em branches locais primeiro
30
- */
31
- const GitRebaseInputSchema = zod_1.z.object({
32
- action: zod_1.z.enum(['rebase', 'interactive-rebase', 'abort', 'continue', 'skip']),
33
- // owner: obtido automaticamente do provider,
34
- repo: zod_1.z.string(),
35
- provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'),
36
- projectPath: zod_1.z.string().describe('Local project path for git operations'),
37
- // Para rebase
38
- target_branch: zod_1.z.string().optional(),
39
- base_branch: zod_1.z.string().optional(),
40
- interactive: zod_1.z.boolean().optional(),
41
- // Para interactive-rebase
42
- commit_range: zod_1.z.string().optional(),
43
- rebase_commands: zod_1.z.string().optional(),
44
- });
45
- const GitRebaseResultSchema = zod_1.z.object({
46
- success: zod_1.z.boolean(),
47
- action: zod_1.z.string(),
48
- message: zod_1.z.string(),
49
- data: zod_1.z.any().optional(),
50
- error: zod_1.z.string().optional()
51
- });
52
- exports.gitRebaseTool = {
53
- name: 'git-rebase',
54
- description: 'tool: Gerencia operações Git rebase para reorganização de commits\n──────────────\naction rebase: executa rebase simples\naction rebase requires: repo, target_branch, base_branch, provider, projectPath\n───────────────\naction interactive-rebase: rebase interativo\naction interactive-rebase requires: repo, target_branch, base_branch, interactive, commit_range, rebase_commands, provider, projectPath\n───────────────\naction abort: aborta rebase em andamento\naction abort requires: repo, provider, projectPath\n───────────────\naction continue: continua rebase pausado\naction continue requires: repo, provider, projectPath\n───────────────\naction skip: pula commit problemático\naction skip requires: repo, provider, projectPath',
55
- inputSchema: {
56
- type: 'object',
57
- properties: {
58
- action: {
59
- type: 'string',
60
- enum: ['rebase', 'interactive-rebase', 'abort', 'continue', 'skip'],
61
- description: 'Action to perform on rebase'
62
- },
63
- owner: { type: 'string', description: 'Repository owner' },
64
- repo: { type: 'string', description: 'Repository name' },
65
- provider: { type: 'string', enum: ['gitea', 'github'], description: 'Provider to use (gitea or github)' },
66
- projectPath: { type: 'string', description: 'Local project path for git operations' },
67
- target_branch: { type: 'string', description: 'Target branch for rebase' },
68
- base_branch: { type: 'string', description: 'Base branch for rebase' },
69
- interactive: { type: 'boolean', description: 'Interactive rebase' },
70
- commit_range: { type: 'string', description: 'Commit range for interactive rebase' },
71
- rebase_commands: { type: 'string', description: 'Rebase commands for interactive mode' }
72
- },
73
- required: ['action', 'repo', 'provider', 'projectPath']
74
- },
75
- async handler(input) {
76
- try {
77
- const validatedInput = GitRebaseInputSchema.parse(input);
78
- switch (validatedInput.action) {
79
- case 'rebase':
80
- return await this.rebase(validatedInput);
81
- case 'interactive-rebase':
82
- return await this.interactiveRebase(validatedInput);
83
- case 'abort':
84
- return await this.abortRebase(validatedInput);
85
- case 'continue':
86
- return await this.continueRebase(validatedInput);
87
- case 'skip':
88
- return await this.skipCommit(validatedInput);
89
- default:
90
- throw new Error(`Ação não suportada: ${validatedInput.action}`);
91
- }
92
- }
93
- catch (error) {
94
- return {
95
- success: false,
96
- action: input.action,
97
- message: 'Erro na operação de rebase',
98
- error: error instanceof Error ? error.message : String(error)
99
- };
100
- }
101
- },
102
- async rebase(params) {
103
- try {
104
- if (!params.target_branch) {
105
- throw new Error('target_branch é obrigatório para rebase');
106
- }
107
- const gitCommand = params.interactive
108
- ? `cd "${params.projectPath}" && git rebase -i ${params.target_branch}`
109
- : `cd "${params.projectPath}" && git rebase ${params.target_branch}`;
110
- const result = await (0, terminal_controller_js_1.runGitCommand)(gitCommand, params.projectPath, 'Executando rebase');
111
- if (result.exitCode !== 0) {
112
- throw new Error(`Falha no rebase: ${result.output}`);
113
- }
114
- return {
115
- success: true,
116
- action: 'rebase',
117
- message: `Rebase executado com sucesso na branch ${params.target_branch}`,
118
- data: {
119
- target_branch: params.target_branch,
120
- interactive: params.interactive,
121
- output: result.output
122
- }
123
- };
124
- }
125
- catch (error) {
126
- throw new Error(`Falha ao executar rebase: ${error instanceof Error ? error.message : String(error)}`);
127
- }
128
- },
129
- async interactiveRebase(params) {
130
- try {
131
- if (!params.commit_range) {
132
- throw new Error('commit_range é obrigatório para rebase interativo');
133
- }
134
- const gitCommand = `rebase -i ${params.commit_range}`;
135
- const result = await (0, terminal_controller_js_1.runGitCommand)(gitCommand, params.projectPath, 'Executando rebase interativo');
136
- if (result.exitCode !== 0) {
137
- throw new Error(`Falha no rebase interativo: ${result.output}`);
138
- }
139
- return {
140
- success: true,
141
- action: 'interactive-rebase',
142
- message: `Rebase interativo executado com sucesso no range ${params.commit_range}`,
143
- data: {
144
- commit_range: params.commit_range,
145
- output: result.output
146
- }
147
- };
148
- }
149
- catch (error) {
150
- throw new Error(`Falha ao executar rebase interativo: ${error instanceof Error ? error.message : String(error)}`);
151
- }
152
- },
153
- async abortRebase(params) {
154
- try {
155
- const result = await (0, terminal_controller_js_1.runGitCommand)(`rebase --abort`, params.projectPath, 'Abortando rebase');
156
- if (result.exitCode !== 0) {
157
- throw new Error(`Falha ao abortar rebase: ${result.output}`);
158
- }
159
- return {
160
- success: true,
161
- action: 'abort',
162
- message: 'Rebase abortado com sucesso',
163
- data: {
164
- aborted: true,
165
- output: result.output
166
- }
167
- };
168
- }
169
- catch (error) {
170
- throw new Error(`Falha ao abortar rebase: ${error instanceof Error ? error.message : String(error)}`);
171
- }
172
- },
173
- async continueRebase(params) {
174
- try {
175
- const result = await (0, terminal_controller_js_1.runGitCommand)(`rebase --continue`, params.projectPath, 'Continuando rebase');
176
- if (result.exitCode !== 0) {
177
- throw new Error(`Falha ao continuar rebase: ${result.output}`);
178
- }
179
- return {
180
- success: true,
181
- action: 'continue',
182
- message: 'Rebase continuado com sucesso',
183
- data: {
184
- continued: true,
185
- output: result.output
186
- }
187
- };
188
- }
189
- catch (error) {
190
- throw new Error(`Falha ao continuar rebase: ${error instanceof Error ? error.message : String(error)}`);
191
- }
192
- },
193
- async skipCommit(params) {
194
- try {
195
- const result = await (0, terminal_controller_js_1.runGitCommand)(`rebase --skip`, params.projectPath, 'Pulando commit no rebase');
196
- if (result.exitCode !== 0) {
197
- throw new Error(`Falha ao pular commit: ${result.output}`);
198
- }
199
- return {
200
- success: true,
201
- action: 'skip',
202
- message: 'Commit pulado com sucesso',
203
- data: {
204
- skipped: true,
205
- output: result.output
206
- }
207
- };
208
- }
209
- catch (error) {
210
- throw new Error(`Falha ao pular commit: ${error instanceof Error ? error.message : String(error)}`);
211
- }
212
- }
213
- };
214
- //# sourceMappingURL=git-rebase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-rebase.js","sourceRoot":"","sources":["../../src/tools/git-rebase.ts"],"names":[],"mappings":"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"}
@@ -1,153 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * Tool: git-submodule
4
- *
5
- * DESCRIÇÃO:
6
- * Gerenciamento de submódulos Git (GitHub + Gitea) com múltiplas ações
7
- *
8
- * FUNCIONALIDADES:
9
- * - Adicionar submódulo
10
- * - Atualizar submódulos
11
- * - Inicializar submódulos
12
- * - Deinicializar submódulos
13
- * - Status de submódulos
14
- * - Sincronizar submódulos
15
- *
16
- * USO:
17
- * - Para incluir repositórios externos
18
- * - Para gerenciar dependências
19
- * - Para manter versões específicas
20
- * - Para organizar projetos grandes
21
- *
22
- * RECOMENDAÇÕES:
23
- * - Use para dependências estáveis
24
- * - Mantenha versões específicas
25
- * - Documente submódulos no README
26
- */
27
- declare const GitSubmoduleInputSchema: z.ZodObject<{
28
- action: z.ZodEnum<["add", "update", "init", "deinit", "status", "sync"]>;
29
- repo: z.ZodString;
30
- provider: z.ZodEnum<["gitea", "github"]>;
31
- projectPath: z.ZodString;
32
- submodule_url: z.ZodOptional<z.ZodString>;
33
- submodule_path: z.ZodOptional<z.ZodString>;
34
- submodule_branch: z.ZodOptional<z.ZodString>;
35
- submodule_name: z.ZodOptional<z.ZodString>;
36
- recursive: z.ZodOptional<z.ZodBoolean>;
37
- remote: z.ZodOptional<z.ZodBoolean>;
38
- recursive_sync: z.ZodOptional<z.ZodBoolean>;
39
- }, "strip", z.ZodTypeAny, {
40
- provider: "gitea" | "github";
41
- repo: string;
42
- action: "status" | "init" | "add" | "update" | "deinit" | "sync";
43
- projectPath: string;
44
- recursive?: boolean | undefined;
45
- remote?: boolean | undefined;
46
- submodule_url?: string | undefined;
47
- submodule_path?: string | undefined;
48
- submodule_branch?: string | undefined;
49
- submodule_name?: string | undefined;
50
- recursive_sync?: boolean | undefined;
51
- }, {
52
- provider: "gitea" | "github";
53
- repo: string;
54
- action: "status" | "init" | "add" | "update" | "deinit" | "sync";
55
- projectPath: string;
56
- recursive?: boolean | undefined;
57
- remote?: boolean | undefined;
58
- submodule_url?: string | undefined;
59
- submodule_path?: string | undefined;
60
- submodule_branch?: string | undefined;
61
- submodule_name?: string | undefined;
62
- recursive_sync?: boolean | undefined;
63
- }>;
64
- export type GitSubmoduleInput = z.infer<typeof GitSubmoduleInputSchema>;
65
- declare const GitSubmoduleResultSchema: z.ZodObject<{
66
- success: z.ZodBoolean;
67
- action: z.ZodString;
68
- message: z.ZodString;
69
- data: z.ZodOptional<z.ZodAny>;
70
- error: z.ZodOptional<z.ZodString>;
71
- }, "strip", z.ZodTypeAny, {
72
- message: string;
73
- action: string;
74
- success: boolean;
75
- error?: string | undefined;
76
- data?: any;
77
- }, {
78
- message: string;
79
- action: string;
80
- success: boolean;
81
- error?: string | undefined;
82
- data?: any;
83
- }>;
84
- export type GitSubmoduleResult = z.infer<typeof GitSubmoduleResultSchema>;
85
- export declare const gitSubmoduleTool: {
86
- name: string;
87
- description: string;
88
- inputSchema: {
89
- type: string;
90
- properties: {
91
- action: {
92
- type: string;
93
- enum: string[];
94
- description: string;
95
- };
96
- owner: {
97
- type: string;
98
- description: string;
99
- };
100
- repo: {
101
- type: string;
102
- description: string;
103
- };
104
- provider: {
105
- type: string;
106
- enum: string[];
107
- description: string;
108
- };
109
- projectPath: {
110
- type: string;
111
- description: string;
112
- };
113
- submodule_url: {
114
- type: string;
115
- description: string;
116
- };
117
- submodule_path: {
118
- type: string;
119
- description: string;
120
- };
121
- submodule_branch: {
122
- type: string;
123
- description: string;
124
- };
125
- submodule_name: {
126
- type: string;
127
- description: string;
128
- };
129
- recursive: {
130
- type: string;
131
- description: string;
132
- };
133
- remote: {
134
- type: string;
135
- description: string;
136
- };
137
- recursive_sync: {
138
- type: string;
139
- description: string;
140
- };
141
- };
142
- required: string[];
143
- };
144
- handler(input: GitSubmoduleInput): Promise<GitSubmoduleResult>;
145
- add(params: GitSubmoduleInput): Promise<GitSubmoduleResult>;
146
- update(params: GitSubmoduleInput): Promise<GitSubmoduleResult>;
147
- init(params: GitSubmoduleInput): Promise<GitSubmoduleResult>;
148
- deinit(params: GitSubmoduleInput): Promise<GitSubmoduleResult>;
149
- status(params: GitSubmoduleInput): Promise<GitSubmoduleResult>;
150
- sync(params: GitSubmoduleInput): Promise<GitSubmoduleResult>;
151
- };
152
- export {};
153
- //# sourceMappingURL=git-submodule.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-submodule.d.ts","sourceRoot":"","sources":["../../src/tools/git-submodule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;EAM5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA0BN,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;gBA8BlD,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;mBAsC5C,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;iBA0CjD,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;mBAgC7C,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;mBAqC/C,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;iBAgDjD,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAoCnE,CAAC"}