@cyanheads/git-mcp-server 2.7.1 → 2.8.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 (3) hide show
  1. package/README.md +14 -13
  2. package/dist/index.js +612 -439
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -15335,7 +15335,7 @@ var package_default;
15335
15335
  var init_package = __esm(() => {
15336
15336
  package_default = {
15337
15337
  name: "@cyanheads/git-mcp-server",
15338
- version: "2.7.0",
15338
+ version: "2.7.1",
15339
15339
  mcpName: "io.github.cyanheads/git-mcp-server",
15340
15340
  description: "A secure and scalable Git MCP server enabling AI agents to perform comprehensive Git version control operations via STDIO and Streamable HTTP.",
15341
15341
  main: "dist/index.js",
@@ -193816,7 +193816,7 @@ PromptRegistry = __legacyDecorateClassTS([
193816
193816
  var import_tsyringe12 = __toESM(require_cjs4(), 1);
193817
193817
  init_utils();
193818
193818
 
193819
- // src/mcp-server/tools/definitions/git-blame.tool.ts
193819
+ // src/mcp-server/tools/definitions/git-changelog-analyze.tool.ts
193820
193820
  init_zod();
193821
193821
 
193822
193822
  // src/mcp-server/tools/schemas/common.ts
@@ -193856,6 +193856,125 @@ var DepthSchema = exports_external.number().int().min(1).optional().describe("Cr
193856
193856
  var SignSchema = exports_external.boolean().optional().describe("Sign the commit/tag with GPG.");
193857
193857
  var NoVerifySchema = exports_external.boolean().default(false).describe("Bypass pre-commit and commit-msg hooks.");
193858
193858
 
193859
+ // src/mcp-server/tools/utils/json-response-formatter.ts
193860
+ init_config();
193861
+ class JsonFormatterError extends Error {
193862
+ cause;
193863
+ constructor(message, cause) {
193864
+ super(message);
193865
+ this.cause = cause;
193866
+ this.name = "JsonFormatterError";
193867
+ }
193868
+ }
193869
+ function detectCircularReference(obj, seen = new WeakSet, path4 = "root") {
193870
+ if (obj === null || typeof obj !== "object")
193871
+ return null;
193872
+ if (seen.has(obj))
193873
+ return path4;
193874
+ seen.add(obj);
193875
+ if (Array.isArray(obj)) {
193876
+ for (let i2 = 0;i2 < obj.length; i2++) {
193877
+ const result = detectCircularReference(obj[i2], seen, `${path4}[${i2}]`);
193878
+ if (result)
193879
+ return result;
193880
+ }
193881
+ } else {
193882
+ for (const [key, value] of Object.entries(obj)) {
193883
+ const result = detectCircularReference(value, seen, `${path4}.${key}`);
193884
+ if (result)
193885
+ return result;
193886
+ }
193887
+ }
193888
+ return null;
193889
+ }
193890
+ function defaultReplacer(_key, value) {
193891
+ if (value instanceof Date)
193892
+ return value.toISOString();
193893
+ if (typeof value === "bigint")
193894
+ return value.toString();
193895
+ if (value === undefined)
193896
+ return null;
193897
+ if (typeof value === "function")
193898
+ return;
193899
+ return value;
193900
+ }
193901
+ function safeJsonStringify(data, replacer, indent) {
193902
+ const circularPath = detectCircularReference(data);
193903
+ if (circularPath) {
193904
+ throw new JsonFormatterError(`Circular reference detected at: ${circularPath}`);
193905
+ }
193906
+ const combinedReplacer = (key, value) => {
193907
+ const processed = defaultReplacer(key, value);
193908
+ return replacer ? replacer(key, processed) : processed;
193909
+ };
193910
+ try {
193911
+ return JSON.stringify(data, combinedReplacer, indent);
193912
+ } catch (error49) {
193913
+ throw new JsonFormatterError("Failed to serialize to JSON", error49 instanceof Error ? error49 : undefined);
193914
+ }
193915
+ }
193916
+ function estimateTokenCount(text) {
193917
+ const normalized = text.replace(/\s+/g, " ").trim();
193918
+ return Math.ceil(normalized.length / 4);
193919
+ }
193920
+ function createJsonFormatter(options) {
193921
+ const {
193922
+ verbosity = config2.mcpResponseVerbosity,
193923
+ filter,
193924
+ prettyPrint = true,
193925
+ replacer,
193926
+ debug = false,
193927
+ memoize = false
193928
+ } = options || {};
193929
+ const cache = memoize ? new Map : null;
193930
+ return (result) => {
193931
+ const startTime = debug ? Date.now() : 0;
193932
+ try {
193933
+ const filteredResult = filter ? filter(result, verbosity) : result;
193934
+ let cacheKey = null;
193935
+ if (cache) {
193936
+ try {
193937
+ cacheKey = JSON.stringify({ result: filteredResult, verbosity });
193938
+ const cached2 = cache.get(cacheKey);
193939
+ if (cached2) {
193940
+ if (debug && process.stderr?.isTTY) {
193941
+ console.log("[JsonFormatter] Cache hit");
193942
+ }
193943
+ return [{ type: "text", text: cached2 }];
193944
+ }
193945
+ } catch {
193946
+ cacheKey = null;
193947
+ }
193948
+ }
193949
+ const jsonString = safeJsonStringify(filteredResult, replacer, prettyPrint ? 2 : 0);
193950
+ if (cache && cacheKey) {
193951
+ cache.set(cacheKey, jsonString);
193952
+ }
193953
+ if (debug && process.stderr?.isTTY) {
193954
+ const elapsed = Date.now() - startTime;
193955
+ console.log(`[JsonFormatter] ${elapsed}ms, ~${estimateTokenCount(jsonString)} tokens`);
193956
+ }
193957
+ return [{ type: "text", text: jsonString }];
193958
+ } catch (error49) {
193959
+ const errorMessage = error49 instanceof JsonFormatterError ? error49.message : "Unknown formatting error";
193960
+ if (debug && process.stderr?.isTTY) {
193961
+ console.error("[JsonFormatter] Error:", error49);
193962
+ }
193963
+ return [
193964
+ {
193965
+ type: "text",
193966
+ text: JSON.stringify({
193967
+ error: "JSON_FORMATTING_ERROR",
193968
+ message: errorMessage,
193969
+ verbosity
193970
+ }, null, prettyPrint ? 2 : 0)
193971
+ }
193972
+ ];
193973
+ }
193974
+ };
193975
+ }
193976
+ var defaultJsonFormatter = createJsonFormatter();
193977
+
193859
193978
  // src/mcp-server/tools/utils/toolHandlerFactory.ts
193860
193979
  init_tokens();
193861
193980
  init_utils();
@@ -194057,130 +194176,183 @@ function createToolHandler(coreLogic, options = {}) {
194057
194176
  };
194058
194177
  }
194059
194178
 
194060
- // src/mcp-server/tools/utils/json-response-formatter.ts
194061
- init_config();
194062
- class JsonFormatterError extends Error {
194063
- cause;
194064
- constructor(message, cause) {
194065
- super(message);
194066
- this.cause = cause;
194067
- this.name = "JsonFormatterError";
194068
- }
194069
- }
194070
- function detectCircularReference(obj, seen = new WeakSet, path4 = "root") {
194071
- if (obj === null || typeof obj !== "object")
194072
- return null;
194073
- if (seen.has(obj))
194074
- return path4;
194075
- seen.add(obj);
194076
- if (Array.isArray(obj)) {
194077
- for (let i2 = 0;i2 < obj.length; i2++) {
194078
- const result = detectCircularReference(obj[i2], seen, `${path4}[${i2}]`);
194079
- if (result)
194080
- return result;
194081
- }
194082
- } else {
194083
- for (const [key, value] of Object.entries(obj)) {
194084
- const result = detectCircularReference(value, seen, `${path4}.${key}`);
194085
- if (result)
194086
- return result;
194087
- }
194088
- }
194089
- return null;
194090
- }
194091
- function defaultReplacer(_key, value) {
194092
- if (value instanceof Date)
194093
- return value.toISOString();
194094
- if (typeof value === "bigint")
194095
- return value.toString();
194096
- if (value === undefined)
194097
- return null;
194098
- if (typeof value === "function")
194099
- return;
194100
- return value;
194179
+ // src/mcp-server/tools/definitions/git-changelog-analyze.tool.ts
194180
+ var TOOL_NAME = "git_changelog_analyze";
194181
+ var TOOL_TITLE = "Git Changelog Analyze";
194182
+ var TOOL_DESCRIPTION = "Gather git history context (commits, tags) and structured review instructions to support LLM-driven changelog analysis. Changelog file should be read separately; this tool provides the supporting git data and analysis framework. Pass one or more review types to control what kind of analysis to perform.";
194183
+ var ReviewTypeSchema = exports_external.enum([
194184
+ "security",
194185
+ "features",
194186
+ "storyline",
194187
+ "gaps",
194188
+ "breaking_changes",
194189
+ "quality"
194190
+ ]);
194191
+ var REVIEW_TYPE_INSTRUCTIONS = {
194192
+ security: `## Security Review
194193
+ Examine the changelog entries and cross-reference with the provided git commits. Identify:
194194
+ - Security-related commits (touching auth, crypto, input validation, dependency updates) that lack changelog documentation
194195
+ - Changelog entries that understate the security implications of changes
194196
+ - Patterns suggesting security debt (repeated quick-fixes to security-adjacent areas)
194197
+ - Missing CVE references or security advisory links for dependency updates
194198
+ - Changes to access control, session management, or data handling that should be called out explicitly`,
194199
+ features: `## Feature Trajectory Review
194200
+ Analyze the progression of features documented in the changelog alongside recent commit activity to identify:
194201
+ - Logical next features based on the development direction and momentum
194202
+ - Features that appear partially implemented (started in one version, not completed in subsequent ones)
194203
+ - Feature areas receiving heavy investment vs areas being neglected
194204
+ - Opportunities for feature consolidation or decomposition
194205
+ - Gaps between what commits show being built and what the changelog advertises`,
194206
+ storyline: `## Project Storyline Review
194207
+ Narrate the project's evolution using the changelog as the primary source and tags as milestones:
194208
+ - Describe the arc of the project from earliest to latest entry
194209
+ - Identify major pivots, theme shifts, or focus changes between releases
194210
+ - Highlight the most significant releases and what made them important
194211
+ - Characterize the project's current phase (early development, rapid growth, stabilization, mature maintenance)
194212
+ - Note the rhythm of releases — accelerating, steady, or slowing`,
194213
+ gaps: `## Gap Analysis
194214
+ Cross-reference the changelog with the provided git commit history to find discrepancies:
194215
+ - Commits that introduce meaningful changes but have no corresponding changelog entry
194216
+ - Version bumps in tags that lack changelog documentation
194217
+ - Categories of changes systematically under-documented (e.g., always documents features but never documents fixes or internal refactors)
194218
+ - Time periods with high commit activity but sparse changelog updates
194219
+ - Changelog entries that don't correspond to identifiable commits (phantom entries)`,
194220
+ breaking_changes: `## Breaking Changes Review
194221
+ Analyze the changelog for breaking change documentation quality:
194222
+ - Are breaking changes clearly marked and easy to find (dedicated section, visual callout)?
194223
+ - Do major version bumps (in tags) correlate with documented breaking changes?
194224
+ - Are migration paths or upgrade instructions provided for each breaking change?
194225
+ - What is the frequency and pattern of breaking changes over time — increasing or stabilizing?
194226
+ - Are breaking changes concentrated in certain areas of the project?
194227
+ - Are deprecation notices given before removals?`,
194228
+ quality: `## Quality Trends Review
194229
+ Examine commit history and changelog entries for code quality and process health indicators:
194230
+ - Ratio of bug fixes to features over time — is the project stabilizing or accumulating debt?
194231
+ - Commit message quality and consistency (conventional commits adherence, descriptive subjects)
194232
+ - Frequency of "hotfix" or "emergency" patterns suggesting insufficient testing
194233
+ - Documentation update frequency relative to code changes
194234
+ - Release cadence regularity — predictable schedule or sporadic?
194235
+ - Revert frequency and what it suggests about review/testing practices`
194236
+ };
194237
+ var InputSchema = exports_external.object({
194238
+ path: PathSchema,
194239
+ reviewTypes: exports_external.array(ReviewTypeSchema).min(1).describe("Types of changelog review to perform. At least one required. Options: security, features, storyline, gaps, breaking_changes, quality."),
194240
+ maxCommits: exports_external.number().int().min(1).max(1000).default(200).describe("Maximum recent commits to fetch for cross-referencing (1-1000)."),
194241
+ sinceTag: exports_external.string().optional().describe('Only include git history since this tag (e.g., "v1.2.0"). Narrows the analysis window.'),
194242
+ branch: CommitRefSchema.optional().describe("Branch to analyze (defaults to current branch).")
194243
+ });
194244
+ var CommitSummarySchema = exports_external.object({
194245
+ hash: exports_external.string().describe("Short commit hash."),
194246
+ subject: exports_external.string().describe("Commit subject line."),
194247
+ author: exports_external.string().describe("Commit author."),
194248
+ timestamp: exports_external.number().int().describe("Unix timestamp."),
194249
+ refs: exports_external.array(exports_external.string()).optional().describe("Tags or branches at this commit.")
194250
+ });
194251
+ var TagSummarySchema = exports_external.object({
194252
+ name: exports_external.string().describe("Tag name."),
194253
+ commit: exports_external.string().describe("Commit hash the tag points to."),
194254
+ timestamp: exports_external.number().int().optional().describe("Tag creation timestamp."),
194255
+ message: exports_external.string().optional().describe("Annotated tag message.")
194256
+ });
194257
+ var OutputSchema2 = exports_external.object({
194258
+ success: exports_external.boolean().describe("Indicates if the operation was successful."),
194259
+ reviewTypes: exports_external.array(ReviewTypeSchema).describe("Review types that were requested."),
194260
+ gitContext: exports_external.object({
194261
+ currentBranch: exports_external.string().nullable().describe("Current branch name."),
194262
+ totalCommitsFetched: exports_external.number().int().describe("Number of commits returned."),
194263
+ commits: exports_external.array(CommitSummarySchema).describe("Recent commits for cross-referencing."),
194264
+ tags: exports_external.array(TagSummarySchema).describe("Repository tags for release context.")
194265
+ }).describe("Git history context for changelog cross-referencing."),
194266
+ reviewInstructions: exports_external.string().describe("Analysis instructions for each requested review type. Guides the LLM on what to look for in the changelog.")
194267
+ });
194268
+ function buildReviewInstructions(reviewTypes) {
194269
+ const preamble = `Analyze the changelog file using the git context provided below. For each review type, produce structured findings with specific references to changelog entries and commits.
194270
+ `;
194271
+ const sections = reviewTypes.map((type2) => REVIEW_TYPE_INSTRUCTIONS[type2]).join(`
194272
+
194273
+ `);
194274
+ return `${preamble}
194275
+ ${sections}`;
194101
194276
  }
194102
- function safeJsonStringify(data, replacer, indent) {
194103
- const circularPath = detectCircularReference(data);
194104
- if (circularPath) {
194105
- throw new JsonFormatterError(`Circular reference detected at: ${circularPath}`);
194106
- }
194107
- const combinedReplacer = (key, value) => {
194108
- const processed = defaultReplacer(key, value);
194109
- return replacer ? replacer(key, processed) : processed;
194277
+ async function gitChangelogAnalyzeLogic(input, { provider, targetPath, appContext }) {
194278
+ const operationContext = {
194279
+ workingDirectory: targetPath,
194280
+ requestContext: appContext,
194281
+ tenantId: appContext.tenantId || "default-tenant"
194110
194282
  };
194111
- try {
194112
- return JSON.stringify(data, combinedReplacer, indent);
194113
- } catch (error49) {
194114
- throw new JsonFormatterError("Failed to serialize to JSON", error49 instanceof Error ? error49 : undefined);
194283
+ const logOptions = {
194284
+ maxCount: input.maxCommits
194285
+ };
194286
+ if (input.sinceTag) {
194287
+ logOptions.branch = `${input.sinceTag}..HEAD`;
194288
+ } else if (input.branch) {
194289
+ logOptions.branch = input.branch;
194115
194290
  }
194116
- }
194117
- function estimateTokenCount(text) {
194118
- const normalized = text.replace(/\s+/g, " ").trim();
194119
- return Math.ceil(normalized.length / 4);
194120
- }
194121
- function createJsonFormatter(options) {
194122
- const {
194123
- verbosity = config2.mcpResponseVerbosity,
194124
- filter,
194125
- prettyPrint = true,
194126
- replacer,
194127
- debug = false,
194128
- memoize = false
194129
- } = options || {};
194130
- const cache = memoize ? new Map : null;
194131
- return (result) => {
194132
- const startTime = debug ? Date.now() : 0;
194133
- try {
194134
- const filteredResult = filter ? filter(result, verbosity) : result;
194135
- let cacheKey = null;
194136
- if (cache) {
194137
- try {
194138
- cacheKey = JSON.stringify({ result: filteredResult, verbosity });
194139
- const cached2 = cache.get(cacheKey);
194140
- if (cached2) {
194141
- if (debug && process.stderr?.isTTY) {
194142
- console.log("[JsonFormatter] Cache hit");
194143
- }
194144
- return [{ type: "text", text: cached2 }];
194145
- }
194146
- } catch {
194147
- cacheKey = null;
194148
- }
194149
- }
194150
- const jsonString = safeJsonStringify(filteredResult, replacer, prettyPrint ? 2 : 0);
194151
- if (cache && cacheKey) {
194152
- cache.set(cacheKey, jsonString);
194153
- }
194154
- if (debug && process.stderr?.isTTY) {
194155
- const elapsed = Date.now() - startTime;
194156
- console.log(`[JsonFormatter] ${elapsed}ms, ~${estimateTokenCount(jsonString)} tokens`);
194157
- }
194158
- return [{ type: "text", text: jsonString }];
194159
- } catch (error49) {
194160
- const errorMessage = error49 instanceof JsonFormatterError ? error49.message : "Unknown formatting error";
194161
- if (debug && process.stderr?.isTTY) {
194162
- console.error("[JsonFormatter] Error:", error49);
194163
- }
194164
- return [
194165
- {
194166
- type: "text",
194167
- text: JSON.stringify({
194168
- error: "JSON_FORMATTING_ERROR",
194169
- message: errorMessage,
194170
- verbosity
194171
- }, null, prettyPrint ? 2 : 0)
194172
- }
194173
- ];
194174
- }
194291
+ const [logResult, tagResult, statusResult] = await Promise.all([
194292
+ provider.log(logOptions, operationContext),
194293
+ provider.tag({ mode: "list" }, operationContext),
194294
+ provider.status({ includeUntracked: false }, operationContext)
194295
+ ]);
194296
+ const reviewInstructions = buildReviewInstructions(input.reviewTypes);
194297
+ return {
194298
+ success: true,
194299
+ reviewTypes: input.reviewTypes,
194300
+ gitContext: {
194301
+ currentBranch: statusResult.currentBranch,
194302
+ totalCommitsFetched: logResult.totalCount,
194303
+ commits: logResult.commits.map((c) => ({
194304
+ hash: c.shortHash,
194305
+ subject: c.subject,
194306
+ author: c.author,
194307
+ timestamp: c.timestamp,
194308
+ ...c.refs && c.refs.length > 0 && { refs: c.refs }
194309
+ })),
194310
+ tags: (tagResult.tags ?? []).map((t) => ({
194311
+ name: t.name,
194312
+ commit: t.commit,
194313
+ ...t.timestamp != null && { timestamp: t.timestamp },
194314
+ ...t.message != null && { message: t.message }
194315
+ }))
194316
+ },
194317
+ reviewInstructions
194175
194318
  };
194176
194319
  }
194177
- var defaultJsonFormatter = createJsonFormatter();
194320
+ function filterChangelogAnalyzeOutput(result, level) {
194321
+ if (level === "minimal") {
194322
+ return {
194323
+ success: result.success,
194324
+ reviewTypes: result.reviewTypes,
194325
+ gitContext: {
194326
+ currentBranch: result.gitContext.currentBranch,
194327
+ totalCommitsFetched: result.gitContext.totalCommitsFetched,
194328
+ commits: [],
194329
+ tags: []
194330
+ },
194331
+ reviewInstructions: result.reviewInstructions
194332
+ };
194333
+ }
194334
+ return result;
194335
+ }
194336
+ var responseFormatter = createJsonFormatter({
194337
+ filter: filterChangelogAnalyzeOutput
194338
+ });
194339
+ var gitChangelogAnalyzeTool = {
194340
+ name: TOOL_NAME,
194341
+ title: TOOL_TITLE,
194342
+ description: TOOL_DESCRIPTION,
194343
+ inputSchema: InputSchema,
194344
+ outputSchema: OutputSchema2,
194345
+ annotations: { readOnlyHint: true },
194346
+ logic: withToolAuth(["tool:git:read"], createToolHandler(gitChangelogAnalyzeLogic)),
194347
+ responseFormatter
194348
+ };
194178
194349
 
194179
194350
  // src/mcp-server/tools/definitions/git-blame.tool.ts
194180
- var TOOL_NAME = "git_blame";
194181
- var TOOL_TITLE = "Git Blame";
194182
- var TOOL_DESCRIPTION = "Show line-by-line authorship information for a file, displaying who last modified each line and when.";
194183
- var InputSchema = exports_external.object({
194351
+ init_zod();
194352
+ var TOOL_NAME2 = "git_blame";
194353
+ var TOOL_TITLE2 = "Git Blame";
194354
+ var TOOL_DESCRIPTION2 = "Show line-by-line authorship information for a file, displaying who last modified each line and when.";
194355
+ var InputSchema2 = exports_external.object({
194184
194356
  path: PathSchema,
194185
194357
  file: exports_external.string().min(1).describe("Path to the file to blame (relative to repository root)."),
194186
194358
  startLine: exports_external.number().int().min(1).optional().describe("Start line number (1-indexed)."),
@@ -194194,7 +194366,7 @@ var BlameLineSchema = exports_external.object({
194194
194366
  timestamp: exports_external.number().int().describe("Unix timestamp of the commit that last modified this line."),
194195
194367
  content: exports_external.string().describe("The actual content/text of this line.")
194196
194368
  });
194197
- var OutputSchema2 = exports_external.object({
194369
+ var OutputSchema3 = exports_external.object({
194198
194370
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
194199
194371
  file: exports_external.string().describe("The file that was blamed."),
194200
194372
  lines: exports_external.array(BlameLineSchema).describe("Array of blame information for each line."),
@@ -194233,26 +194405,26 @@ function filterGitBlameOutput(result, level) {
194233
194405
  }
194234
194406
  return result;
194235
194407
  }
194236
- var responseFormatter = createJsonFormatter({
194408
+ var responseFormatter2 = createJsonFormatter({
194237
194409
  filter: filterGitBlameOutput
194238
194410
  });
194239
194411
  var gitBlameTool = {
194240
- name: TOOL_NAME,
194241
- title: TOOL_TITLE,
194242
- description: TOOL_DESCRIPTION,
194243
- inputSchema: InputSchema,
194244
- outputSchema: OutputSchema2,
194412
+ name: TOOL_NAME2,
194413
+ title: TOOL_TITLE2,
194414
+ description: TOOL_DESCRIPTION2,
194415
+ inputSchema: InputSchema2,
194416
+ outputSchema: OutputSchema3,
194245
194417
  annotations: { readOnlyHint: true },
194246
194418
  logic: withToolAuth(["tool:git:read"], createToolHandler(gitBlameLogic)),
194247
- responseFormatter
194419
+ responseFormatter: responseFormatter2
194248
194420
  };
194249
194421
 
194250
194422
  // src/mcp-server/tools/definitions/git-clean.tool.ts
194251
194423
  init_zod();
194252
- var TOOL_NAME2 = "git_clean";
194253
- var TOOL_TITLE2 = "Git Clean";
194254
- var TOOL_DESCRIPTION2 = "Remove untracked files from the working directory. Requires force flag for safety. Use dry-run to preview files that would be removed.";
194255
- var InputSchema2 = exports_external.object({
194424
+ var TOOL_NAME3 = "git_clean";
194425
+ var TOOL_TITLE3 = "Git Clean";
194426
+ var TOOL_DESCRIPTION3 = "Remove untracked files from the working directory. Requires force flag for safety. Use dry-run to preview files that would be removed.";
194427
+ var InputSchema3 = exports_external.object({
194256
194428
  path: PathSchema,
194257
194429
  force: ForceSchema.refine((val) => val === true, {
194258
194430
  message: "force flag must be set to true to clean untracked files"
@@ -194261,7 +194433,7 @@ var InputSchema2 = exports_external.object({
194261
194433
  directories: exports_external.boolean().default(false).describe("Remove untracked directories in addition to files."),
194262
194434
  ignored: exports_external.boolean().default(false).describe("Remove ignored files as well.")
194263
194435
  });
194264
- var OutputSchema3 = exports_external.object({
194436
+ var OutputSchema4 = exports_external.object({
194265
194437
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
194266
194438
  filesRemoved: exports_external.array(exports_external.string()).describe("List of files that were removed."),
194267
194439
  directoriesRemoved: exports_external.array(exports_external.string()).describe("List of directories that were removed."),
@@ -194293,29 +194465,29 @@ function filterGitCleanOutput(result, level) {
194293
194465
  }
194294
194466
  return result;
194295
194467
  }
194296
- var responseFormatter2 = createJsonFormatter({
194468
+ var responseFormatter3 = createJsonFormatter({
194297
194469
  filter: filterGitCleanOutput
194298
194470
  });
194299
194471
  var gitCleanTool = {
194300
- name: TOOL_NAME2,
194301
- title: TOOL_TITLE2,
194302
- description: TOOL_DESCRIPTION2,
194303
- inputSchema: InputSchema2,
194304
- outputSchema: OutputSchema3,
194472
+ name: TOOL_NAME3,
194473
+ title: TOOL_TITLE3,
194474
+ description: TOOL_DESCRIPTION3,
194475
+ inputSchema: InputSchema3,
194476
+ outputSchema: OutputSchema4,
194305
194477
  annotations: { readOnlyHint: false },
194306
194478
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitCleanLogic)),
194307
- responseFormatter: responseFormatter2
194479
+ responseFormatter: responseFormatter3
194308
194480
  };
194309
194481
 
194310
194482
  // src/mcp-server/tools/definitions/git-clear-working-dir.tool.ts
194311
194483
  init_zod();
194312
- var TOOL_NAME3 = "git_clear_working_dir";
194313
- var TOOL_TITLE3 = "Git Clear Working Directory";
194314
- var TOOL_DESCRIPTION3 = "Clear the session working directory setting. This resets the context without restarting the server. Subsequent git operations will require an explicit path parameter unless git_set_working_dir is called again.";
194315
- var InputSchema3 = exports_external.object({
194484
+ var TOOL_NAME4 = "git_clear_working_dir";
194485
+ var TOOL_TITLE4 = "Git Clear Working Directory";
194486
+ var TOOL_DESCRIPTION4 = "Clear the session working directory setting. This resets the context without restarting the server. Subsequent git operations will require an explicit path parameter unless git_set_working_dir is called again.";
194487
+ var InputSchema4 = exports_external.object({
194316
194488
  confirm: exports_external.enum(["Y", "y", "Yes", "yes"]).describe("Explicit confirmation required to clear working directory. Accepted values: 'Y', 'y', 'Yes', or 'yes'.")
194317
194489
  });
194318
- var OutputSchema4 = exports_external.object({
194490
+ var OutputSchema5 = exports_external.object({
194319
194491
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
194320
194492
  message: exports_external.string().describe("Confirmation message."),
194321
194493
  previousPath: exports_external.string().optional().describe("The working directory that was cleared (if one was set).")
@@ -194340,26 +194512,26 @@ function filterGitClearWorkingDirOutput(result, level) {
194340
194512
  }
194341
194513
  return result;
194342
194514
  }
194343
- var responseFormatter3 = createJsonFormatter({
194515
+ var responseFormatter4 = createJsonFormatter({
194344
194516
  filter: filterGitClearWorkingDirOutput
194345
194517
  });
194346
194518
  var gitClearWorkingDirTool = {
194347
- name: TOOL_NAME3,
194348
- title: TOOL_TITLE3,
194349
- description: TOOL_DESCRIPTION3,
194350
- inputSchema: InputSchema3,
194351
- outputSchema: OutputSchema4,
194519
+ name: TOOL_NAME4,
194520
+ title: TOOL_TITLE4,
194521
+ description: TOOL_DESCRIPTION4,
194522
+ inputSchema: InputSchema4,
194523
+ outputSchema: OutputSchema5,
194352
194524
  annotations: { readOnlyHint: false },
194353
194525
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitClearWorkingDirLogic, { skipPathResolution: true })),
194354
- responseFormatter: responseFormatter3
194526
+ responseFormatter: responseFormatter4
194355
194527
  };
194356
194528
 
194357
194529
  // src/mcp-server/tools/definitions/git-clone.tool.ts
194358
194530
  init_zod();
194359
- var TOOL_NAME4 = "git_clone";
194360
- var TOOL_TITLE4 = "Git Clone";
194361
- var TOOL_DESCRIPTION4 = "Clone a repository from a remote URL to a local path. Supports HTTP/HTTPS and SSH URLs, with optional shallow cloning.";
194362
- var InputSchema4 = exports_external.object({
194531
+ var TOOL_NAME5 = "git_clone";
194532
+ var TOOL_TITLE5 = "Git Clone";
194533
+ var TOOL_DESCRIPTION5 = "Clone a repository from a remote URL to a local path. Supports HTTP/HTTPS and SSH URLs, with optional shallow cloning.";
194534
+ var InputSchema5 = exports_external.object({
194363
194535
  url: exports_external.string().url().describe("Remote repository URL to clone from."),
194364
194536
  localPath: exports_external.string().min(1).describe("Local path where the repository should be cloned."),
194365
194537
  branch: exports_external.string().optional().describe("Specific branch to clone (defaults to remote HEAD)."),
@@ -194367,7 +194539,7 @@ var InputSchema4 = exports_external.object({
194367
194539
  bare: exports_external.boolean().default(false).describe("Create a bare repository (no working directory)."),
194368
194540
  mirror: exports_external.boolean().default(false).describe("Create a mirror clone (implies bare).")
194369
194541
  });
194370
- var OutputSchema5 = exports_external.object({
194542
+ var OutputSchema6 = exports_external.object({
194371
194543
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
194372
194544
  remoteUrl: exports_external.string().describe("The remote URL that was cloned."),
194373
194545
  localPath: exports_external.string().describe("Local path where repository was cloned."),
@@ -194409,31 +194581,31 @@ function filterGitCloneOutput(result, level) {
194409
194581
  }
194410
194582
  return result;
194411
194583
  }
194412
- var responseFormatter4 = createJsonFormatter({
194584
+ var responseFormatter5 = createJsonFormatter({
194413
194585
  filter: filterGitCloneOutput
194414
194586
  });
194415
194587
  var gitCloneTool = {
194416
- name: TOOL_NAME4,
194417
- title: TOOL_TITLE4,
194418
- description: TOOL_DESCRIPTION4,
194419
- inputSchema: InputSchema4,
194420
- outputSchema: OutputSchema5,
194588
+ name: TOOL_NAME5,
194589
+ title: TOOL_TITLE5,
194590
+ description: TOOL_DESCRIPTION5,
194591
+ inputSchema: InputSchema5,
194592
+ outputSchema: OutputSchema6,
194421
194593
  annotations: { readOnlyHint: false },
194422
194594
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitCloneLogic, { skipPathResolution: true })),
194423
- responseFormatter: responseFormatter4
194595
+ responseFormatter: responseFormatter5
194424
194596
  };
194425
194597
 
194426
194598
  // src/mcp-server/tools/definitions/git-init.tool.ts
194427
194599
  init_zod();
194428
- var TOOL_NAME5 = "git_init";
194429
- var TOOL_TITLE5 = "Git Init";
194430
- var TOOL_DESCRIPTION5 = "Initialize a new Git repository at the specified path. Creates a .git directory and sets up the initial branch.";
194431
- var InputSchema5 = exports_external.object({
194600
+ var TOOL_NAME6 = "git_init";
194601
+ var TOOL_TITLE6 = "Git Init";
194602
+ var TOOL_DESCRIPTION6 = "Initialize a new Git repository at the specified path. Creates a .git directory and sets up the initial branch.";
194603
+ var InputSchema6 = exports_external.object({
194432
194604
  path: PathSchema,
194433
194605
  initialBranch: exports_external.string().optional().describe("Name of the initial branch (default: main)."),
194434
194606
  bare: exports_external.boolean().default(false).describe("Create a bare repository (no working directory).")
194435
194607
  });
194436
- var OutputSchema6 = exports_external.object({
194608
+ var OutputSchema7 = exports_external.object({
194437
194609
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
194438
194610
  path: exports_external.string().describe("Path where repository was initialized."),
194439
194611
  initialBranch: exports_external.string().describe("Name of the initial branch."),
@@ -194475,26 +194647,26 @@ function filterGitInitOutput(result, level) {
194475
194647
  }
194476
194648
  return result;
194477
194649
  }
194478
- var responseFormatter5 = createJsonFormatter({
194650
+ var responseFormatter6 = createJsonFormatter({
194479
194651
  filter: filterGitInitOutput
194480
194652
  });
194481
194653
  var gitInitTool = {
194482
- name: TOOL_NAME5,
194483
- title: TOOL_TITLE5,
194484
- description: TOOL_DESCRIPTION5,
194485
- inputSchema: InputSchema5,
194486
- outputSchema: OutputSchema6,
194654
+ name: TOOL_NAME6,
194655
+ title: TOOL_TITLE6,
194656
+ description: TOOL_DESCRIPTION6,
194657
+ inputSchema: InputSchema6,
194658
+ outputSchema: OutputSchema7,
194487
194659
  annotations: { readOnlyHint: false },
194488
194660
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitInitLogic)),
194489
- responseFormatter: responseFormatter5
194661
+ responseFormatter: responseFormatter6
194490
194662
  };
194491
194663
 
194492
194664
  // src/mcp-server/tools/definitions/git-reflog.tool.ts
194493
194665
  init_zod();
194494
- var TOOL_NAME6 = "git_reflog";
194495
- var TOOL_TITLE6 = "Git Reflog";
194496
- var TOOL_DESCRIPTION6 = "View the reference logs (reflog) to track when branch tips and other references were updated. Useful for recovering lost commits.";
194497
- var InputSchema6 = exports_external.object({
194666
+ var TOOL_NAME7 = "git_reflog";
194667
+ var TOOL_TITLE7 = "Git Reflog";
194668
+ var TOOL_DESCRIPTION7 = "View the reference logs (reflog) to track when branch tips and other references were updated. Useful for recovering lost commits.";
194669
+ var InputSchema7 = exports_external.object({
194498
194670
  path: PathSchema,
194499
194671
  ref: exports_external.string().optional().describe("Show reflog for specific reference (default: HEAD)."),
194500
194672
  maxCount: LimitSchema
@@ -194506,7 +194678,7 @@ var ReflogEntrySchema = exports_external.object({
194506
194678
  message: exports_external.string().describe("Detailed message describing the action."),
194507
194679
  timestamp: exports_external.number().int().describe("Unix timestamp when this action occurred.")
194508
194680
  });
194509
- var OutputSchema7 = exports_external.object({
194681
+ var OutputSchema8 = exports_external.object({
194510
194682
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
194511
194683
  ref: exports_external.string().describe("The reference that was queried."),
194512
194684
  entries: exports_external.array(ReflogEntrySchema).describe("Array of reflog entries in reverse chronological order."),
@@ -194542,32 +194714,32 @@ function filterGitReflogOutput(result, level) {
194542
194714
  }
194543
194715
  return result;
194544
194716
  }
194545
- var responseFormatter6 = createJsonFormatter({
194717
+ var responseFormatter7 = createJsonFormatter({
194546
194718
  filter: filterGitReflogOutput
194547
194719
  });
194548
194720
  var gitReflogTool = {
194549
- name: TOOL_NAME6,
194550
- title: TOOL_TITLE6,
194551
- description: TOOL_DESCRIPTION6,
194552
- inputSchema: InputSchema6,
194553
- outputSchema: OutputSchema7,
194721
+ name: TOOL_NAME7,
194722
+ title: TOOL_TITLE7,
194723
+ description: TOOL_DESCRIPTION7,
194724
+ inputSchema: InputSchema7,
194725
+ outputSchema: OutputSchema8,
194554
194726
  annotations: { readOnlyHint: true },
194555
194727
  logic: withToolAuth(["tool:git:read"], createToolHandler(gitReflogLogic)),
194556
- responseFormatter: responseFormatter6
194728
+ responseFormatter: responseFormatter7
194557
194729
  };
194558
194730
 
194559
194731
  // src/mcp-server/tools/definitions/git-set-working-dir.tool.ts
194560
194732
  init_zod();
194561
- var TOOL_NAME7 = "git_set_working_dir";
194562
- var TOOL_TITLE7 = "Git Set Working Directory";
194563
- var TOOL_DESCRIPTION7 = "Set the session working directory for all git operations. This allows subsequent git commands to omit the path parameter and use this directory as the default.";
194564
- var InputSchema7 = exports_external.object({
194733
+ var TOOL_NAME8 = "git_set_working_dir";
194734
+ var TOOL_TITLE8 = "Git Set Working Directory";
194735
+ var TOOL_DESCRIPTION8 = "Set the session working directory for all git operations. This allows subsequent git commands to omit the path parameter and use this directory as the default.";
194736
+ var InputSchema8 = exports_external.object({
194565
194737
  path: exports_external.string().min(1).describe("Absolute path to the git repository to use as the working directory."),
194566
194738
  validateGitRepo: exports_external.boolean().default(true).describe("Validate that the path is a Git repository."),
194567
194739
  initializeIfNotPresent: exports_external.boolean().default(false).describe("If not a Git repository, initialize it with 'git init'."),
194568
194740
  includeMetadata: exports_external.boolean().default(false).describe("Include repository metadata (status, branches, remotes, recent commits) in the response. Set to true for immediate repository context understanding. Defaults to false to minimize response size.")
194569
194741
  });
194570
- var OutputSchema8 = exports_external.object({
194742
+ var OutputSchema9 = exports_external.object({
194571
194743
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
194572
194744
  path: exports_external.string().describe("The working directory that was set."),
194573
194745
  message: exports_external.string().describe("Confirmation message."),
@@ -194717,30 +194889,30 @@ function filterGitSetWorkingDirOutput(result, level) {
194717
194889
  }
194718
194890
  return result;
194719
194891
  }
194720
- var responseFormatter7 = createJsonFormatter({
194892
+ var responseFormatter8 = createJsonFormatter({
194721
194893
  filter: filterGitSetWorkingDirOutput
194722
194894
  });
194723
194895
  var gitSetWorkingDirTool = {
194724
- name: TOOL_NAME7,
194725
- title: TOOL_TITLE7,
194726
- description: TOOL_DESCRIPTION7,
194727
- inputSchema: InputSchema7,
194728
- outputSchema: OutputSchema8,
194896
+ name: TOOL_NAME8,
194897
+ title: TOOL_TITLE8,
194898
+ description: TOOL_DESCRIPTION8,
194899
+ inputSchema: InputSchema8,
194900
+ outputSchema: OutputSchema9,
194729
194901
  annotations: { readOnlyHint: false },
194730
194902
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitSetWorkingDirLogic, { skipPathResolution: true })),
194731
- responseFormatter: responseFormatter7
194903
+ responseFormatter: responseFormatter8
194732
194904
  };
194733
194905
 
194734
194906
  // src/mcp-server/tools/definitions/git-status.tool.ts
194735
194907
  init_zod();
194736
- var TOOL_NAME8 = "git_status";
194737
- var TOOL_TITLE8 = "Git Status";
194738
- var TOOL_DESCRIPTION8 = "Show the working tree status including staged, unstaged, and untracked files.";
194739
- var InputSchema8 = exports_external.object({
194908
+ var TOOL_NAME9 = "git_status";
194909
+ var TOOL_TITLE9 = "Git Status";
194910
+ var TOOL_DESCRIPTION9 = "Show the working tree status including staged, unstaged, and untracked files.";
194911
+ var InputSchema9 = exports_external.object({
194740
194912
  path: PathSchema,
194741
194913
  includeUntracked: exports_external.boolean().default(true).describe("Include untracked files in the output.")
194742
194914
  });
194743
- var OutputSchema9 = exports_external.object({
194915
+ var OutputSchema10 = exports_external.object({
194744
194916
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
194745
194917
  currentBranch: exports_external.string().nullable().describe("Current branch name."),
194746
194918
  isClean: exports_external.boolean().describe("True if working directory is clean."),
@@ -194787,18 +194959,18 @@ function filterGitStatusOutput(result, level) {
194787
194959
  }
194788
194960
  return result;
194789
194961
  }
194790
- var responseFormatter8 = createJsonFormatter({
194962
+ var responseFormatter9 = createJsonFormatter({
194791
194963
  filter: filterGitStatusOutput
194792
194964
  });
194793
194965
  var gitStatusTool = {
194794
- name: TOOL_NAME8,
194795
- title: TOOL_TITLE8,
194796
- description: TOOL_DESCRIPTION8,
194797
- inputSchema: InputSchema8,
194798
- outputSchema: OutputSchema9,
194966
+ name: TOOL_NAME9,
194967
+ title: TOOL_TITLE9,
194968
+ description: TOOL_DESCRIPTION9,
194969
+ inputSchema: InputSchema9,
194970
+ outputSchema: OutputSchema10,
194799
194971
  annotations: { readOnlyHint: true },
194800
194972
  logic: withToolAuth(["tool:git:read"], createToolHandler(gitStatusLogic)),
194801
- responseFormatter: responseFormatter8
194973
+ responseFormatter: responseFormatter9
194802
194974
  };
194803
194975
 
194804
194976
  // src/mcp-server/tools/definitions/git-wrapup-instructions.tool.ts
@@ -194807,15 +194979,15 @@ init_utils();
194807
194979
  import { readFileSync } from "fs";
194808
194980
  import path4 from "path";
194809
194981
  init_config();
194810
- var TOOL_NAME9 = "git_wrapup_instructions";
194811
- var TOOL_TITLE9 = "Git Wrap-up Instructions";
194812
- var TOOL_DESCRIPTION9 = "Provides the user's desired Git wrap-up workflow and instructions. Returns custom workflow steps (if configured) or default best practices for reviewing, documenting, and committing changes. Includes current repository status to guide next actions.";
194813
- var InputSchema9 = exports_external.object({
194982
+ var TOOL_NAME10 = "git_wrapup_instructions";
194983
+ var TOOL_TITLE10 = "Git Wrap-up Instructions";
194984
+ var TOOL_DESCRIPTION10 = "Provides the user's desired Git wrap-up workflow and instructions. Returns custom workflow steps (if configured) or default best practices for reviewing, documenting, and committing changes. Includes current repository status to guide next actions.";
194985
+ var InputSchema10 = exports_external.object({
194814
194986
  acknowledgement: exports_external.enum(["Y", "y", "Yes", "yes"]).describe("Acknowledgement to initiate the wrap-up workflow."),
194815
194987
  updateAgentMetaFiles: exports_external.enum(["Y", "y", "Yes", "yes"]).optional().describe("Include an instruction to update agent-specific meta files."),
194816
194988
  createTag: exports_external.boolean().optional().describe("If true, instructs the agent to create a Git tag after committing all changes. Only set to true if given permission to do so.")
194817
194989
  });
194818
- var OutputSchema10 = exports_external.object({
194990
+ var OutputSchema11 = exports_external.object({
194819
194991
  instructions: exports_external.string().describe("The set of instructions for the wrap-up workflow."),
194820
194992
  gitStatus: exports_external.object({
194821
194993
  branch: exports_external.string().describe("Current branch name."),
@@ -194936,18 +195108,18 @@ function filterGitWrapupInstructionsOutput(result, level) {
194936
195108
  }
194937
195109
  return result;
194938
195110
  }
194939
- var responseFormatter9 = createJsonFormatter({
195111
+ var responseFormatter10 = createJsonFormatter({
194940
195112
  filter: filterGitWrapupInstructionsOutput
194941
195113
  });
194942
195114
  var gitWrapupInstructionsTool = {
194943
- name: TOOL_NAME9,
194944
- title: TOOL_TITLE9,
194945
- description: TOOL_DESCRIPTION9,
194946
- inputSchema: InputSchema9,
194947
- outputSchema: OutputSchema10,
195115
+ name: TOOL_NAME10,
195116
+ title: TOOL_TITLE10,
195117
+ description: TOOL_DESCRIPTION10,
195118
+ inputSchema: InputSchema10,
195119
+ outputSchema: OutputSchema11,
194948
195120
  annotations: { readOnlyHint: true },
194949
195121
  logic: withToolAuth(["tool:git:read"], createToolHandler(gitWrapupInstructionsLogic, { skipPathResolution: true })),
194950
- responseFormatter: responseFormatter9
195122
+ responseFormatter: responseFormatter10
194951
195123
  };
194952
195124
 
194953
195125
  // src/mcp-server/tools/definitions/git-add.tool.ts
@@ -194975,17 +195147,17 @@ function flattenChanges(changes) {
194975
195147
  }
194976
195148
 
194977
195149
  // src/mcp-server/tools/definitions/git-add.tool.ts
194978
- var TOOL_NAME10 = "git_add";
194979
- var TOOL_TITLE10 = "Git Add";
194980
- var TOOL_DESCRIPTION10 = "Stage files for commit. Add file contents to the staging area (index) to prepare for the next commit.";
194981
- var InputSchema10 = exports_external.object({
195150
+ var TOOL_NAME11 = "git_add";
195151
+ var TOOL_TITLE11 = "Git Add";
195152
+ var TOOL_DESCRIPTION11 = "Stage files for commit. Add file contents to the staging area (index) to prepare for the next commit.";
195153
+ var InputSchema11 = exports_external.object({
194982
195154
  path: PathSchema,
194983
195155
  files: exports_external.array(exports_external.string()).min(1).describe('Array of file paths to stage (relative to repository root). Use ["."] to stage all changes.'),
194984
195156
  update: exports_external.boolean().default(false).describe("Stage only modified and deleted files (skip untracked files)."),
194985
195157
  all: AllSchema,
194986
195158
  force: exports_external.boolean().default(false).describe("Allow adding otherwise ignored files.")
194987
195159
  });
194988
- var OutputSchema11 = exports_external.object({
195160
+ var OutputSchema12 = exports_external.object({
194989
195161
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
194990
195162
  stagedFiles: exports_external.array(exports_external.string()).describe("Files that were successfully staged."),
194991
195163
  totalFiles: exports_external.number().int().describe("Total number of files staged."),
@@ -195053,25 +195225,25 @@ function filterGitAddOutput(result, level) {
195053
195225
  }
195054
195226
  return result;
195055
195227
  }
195056
- var responseFormatter10 = createJsonFormatter({
195228
+ var responseFormatter11 = createJsonFormatter({
195057
195229
  filter: filterGitAddOutput
195058
195230
  });
195059
195231
  var gitAddTool = {
195060
- name: TOOL_NAME10,
195061
- title: TOOL_TITLE10,
195062
- description: TOOL_DESCRIPTION10,
195063
- inputSchema: InputSchema10,
195064
- outputSchema: OutputSchema11,
195232
+ name: TOOL_NAME11,
195233
+ title: TOOL_TITLE11,
195234
+ description: TOOL_DESCRIPTION11,
195235
+ inputSchema: InputSchema11,
195236
+ outputSchema: OutputSchema12,
195065
195237
  annotations: { readOnlyHint: false },
195066
195238
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitAddLogic)),
195067
- responseFormatter: responseFormatter10
195239
+ responseFormatter: responseFormatter11
195068
195240
  };
195069
195241
 
195070
195242
  // src/mcp-server/tools/definitions/git-commit.tool.ts
195071
195243
  init_zod();
195072
- var TOOL_NAME11 = "git_commit";
195073
- var TOOL_TITLE11 = "Git Commit";
195074
- var TOOL_DESCRIPTION11 = `Create a new commit with staged changes in the repository. Records a snapshot of the staging area with a commit message.
195244
+ var TOOL_NAME12 = "git_commit";
195245
+ var TOOL_TITLE12 = "Git Commit";
195246
+ var TOOL_DESCRIPTION12 = `Create a new commit with staged changes in the repository. Records a snapshot of the staging area with a commit message.
195075
195247
 
195076
195248
  **Commit Message Format:**
195077
195249
  Pass commit messages as JSON string parameters. Multi-line messages are supported using standard JSON string escaping.
@@ -195081,7 +195253,7 @@ Pass commit messages as JSON string parameters. Multi-line messages are supporte
195081
195253
  - Multi-line: { "message": "feat: add user authentication\\n\\nImplemented OAuth2 flow with JWT tokens.\\nAdded tests for login and logout." }
195082
195254
 
195083
195255
  Note: Do not use bash heredoc syntax. Literal escape sequences (\\n, \\t) in the message string are automatically normalized to their actual characters.`;
195084
- var InputSchema11 = exports_external.object({
195256
+ var InputSchema12 = exports_external.object({
195085
195257
  path: PathSchema,
195086
195258
  message: CommitMessageSchema,
195087
195259
  author: exports_external.object({
@@ -195095,7 +195267,7 @@ var InputSchema11 = exports_external.object({
195095
195267
  filesToStage: exports_external.array(exports_external.string()).optional().describe("File paths to stage before committing (atomic stage+commit operation)."),
195096
195268
  forceUnsignedOnFailure: exports_external.boolean().default(false).describe("If GPG/SSH signing fails, retry the commit without signing instead of failing.")
195097
195269
  });
195098
- var OutputSchema12 = exports_external.object({
195270
+ var OutputSchema13 = exports_external.object({
195099
195271
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
195100
195272
  commitHash: exports_external.string().describe("SHA-1 hash of the created commit."),
195101
195273
  message: exports_external.string().describe("The commit message."),
@@ -195202,26 +195374,26 @@ function filterGitCommitOutput(result, level) {
195202
195374
  }
195203
195375
  return result;
195204
195376
  }
195205
- var responseFormatter11 = createJsonFormatter({
195377
+ var responseFormatter12 = createJsonFormatter({
195206
195378
  filter: filterGitCommitOutput
195207
195379
  });
195208
195380
  var gitCommitTool = {
195209
- name: TOOL_NAME11,
195210
- title: TOOL_TITLE11,
195211
- description: TOOL_DESCRIPTION11,
195212
- inputSchema: InputSchema11,
195213
- outputSchema: OutputSchema12,
195381
+ name: TOOL_NAME12,
195382
+ title: TOOL_TITLE12,
195383
+ description: TOOL_DESCRIPTION12,
195384
+ inputSchema: InputSchema12,
195385
+ outputSchema: OutputSchema13,
195214
195386
  annotations: { readOnlyHint: false },
195215
195387
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitCommitLogic)),
195216
- responseFormatter: responseFormatter11
195388
+ responseFormatter: responseFormatter12
195217
195389
  };
195218
195390
 
195219
195391
  // src/mcp-server/tools/definitions/git-diff.tool.ts
195220
195392
  init_zod();
195221
- var TOOL_NAME12 = "git_diff";
195222
- var TOOL_TITLE12 = "Git Diff";
195223
- var TOOL_DESCRIPTION12 = "View differences between commits, branches, or working tree. Shows changes in unified diff format.";
195224
- var InputSchema12 = exports_external.object({
195393
+ var TOOL_NAME13 = "git_diff";
195394
+ var TOOL_TITLE13 = "Git Diff";
195395
+ var TOOL_DESCRIPTION13 = "View differences between commits, branches, or working tree. Shows changes in unified diff format.";
195396
+ var InputSchema13 = exports_external.object({
195225
195397
  path: PathSchema,
195226
195398
  target: CommitRefSchema.optional().describe("Target commit/branch to compare against. If not specified, shows unstaged changes in working tree."),
195227
195399
  source: CommitRefSchema.optional().describe("Source commit/branch to compare from. If target is specified but not source, compares target against working tree."),
@@ -195232,7 +195404,7 @@ var InputSchema12 = exports_external.object({
195232
195404
  stat: exports_external.boolean().default(false).describe("Show diffstat (summary of changes) instead of full diff content."),
195233
195405
  contextLines: exports_external.number().int().min(0).max(100).default(3).describe("Number of context lines to show around changes.")
195234
195406
  });
195235
- var OutputSchema13 = exports_external.object({
195407
+ var OutputSchema14 = exports_external.object({
195236
195408
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
195237
195409
  diff: exports_external.string().describe("The diff output in unified diff format."),
195238
195410
  filesChanged: exports_external.number().int().describe("Number of files with differences."),
@@ -195273,26 +195445,26 @@ function filterGitDiffOutput(result, level) {
195273
195445
  }
195274
195446
  return result;
195275
195447
  }
195276
- var responseFormatter12 = createJsonFormatter({
195448
+ var responseFormatter13 = createJsonFormatter({
195277
195449
  filter: filterGitDiffOutput
195278
195450
  });
195279
195451
  var gitDiffTool = {
195280
- name: TOOL_NAME12,
195281
- title: TOOL_TITLE12,
195282
- description: TOOL_DESCRIPTION12,
195283
- inputSchema: InputSchema12,
195284
- outputSchema: OutputSchema13,
195452
+ name: TOOL_NAME13,
195453
+ title: TOOL_TITLE13,
195454
+ description: TOOL_DESCRIPTION13,
195455
+ inputSchema: InputSchema13,
195456
+ outputSchema: OutputSchema14,
195285
195457
  annotations: { readOnlyHint: true },
195286
195458
  logic: withToolAuth(["tool:git:read"], createToolHandler(gitDiffLogic)),
195287
- responseFormatter: responseFormatter12
195459
+ responseFormatter: responseFormatter13
195288
195460
  };
195289
195461
 
195290
195462
  // src/mcp-server/tools/definitions/git-log.tool.ts
195291
195463
  init_zod();
195292
- var TOOL_NAME13 = "git_log";
195293
- var TOOL_TITLE13 = "Git Log";
195294
- var TOOL_DESCRIPTION13 = "View commit history with optional filtering by author, date range, file path, or commit message pattern.";
195295
- var InputSchema13 = exports_external.object({
195464
+ var TOOL_NAME14 = "git_log";
195465
+ var TOOL_TITLE14 = "Git Log";
195466
+ var TOOL_DESCRIPTION14 = "View commit history with optional filtering by author, date range, file path, or commit message pattern.";
195467
+ var InputSchema14 = exports_external.object({
195296
195468
  path: PathSchema,
195297
195469
  maxCount: LimitSchema,
195298
195470
  skip: SkipSchema,
@@ -195320,7 +195492,7 @@ var CommitSchema = exports_external.object({
195320
195492
  stat: exports_external.string().optional().describe("File change statistics (when stat option is used)."),
195321
195493
  patch: exports_external.string().optional().describe("Full diff patch (when patch option is used).")
195322
195494
  });
195323
- var OutputSchema14 = exports_external.object({
195495
+ var OutputSchema15 = exports_external.object({
195324
195496
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
195325
195497
  commits: exports_external.array(CommitSchema).describe("Array of commit objects."),
195326
195498
  totalCount: exports_external.number().int().describe("Total number of commits returned (may be limited by maxCount).")
@@ -195359,33 +195531,33 @@ function filterGitLogOutput(result, level) {
195359
195531
  }
195360
195532
  return result;
195361
195533
  }
195362
- var responseFormatter13 = createJsonFormatter({
195534
+ var responseFormatter14 = createJsonFormatter({
195363
195535
  filter: filterGitLogOutput
195364
195536
  });
195365
195537
  var gitLogTool = {
195366
- name: TOOL_NAME13,
195367
- title: TOOL_TITLE13,
195368
- description: TOOL_DESCRIPTION13,
195369
- inputSchema: InputSchema13,
195370
- outputSchema: OutputSchema14,
195538
+ name: TOOL_NAME14,
195539
+ title: TOOL_TITLE14,
195540
+ description: TOOL_DESCRIPTION14,
195541
+ inputSchema: InputSchema14,
195542
+ outputSchema: OutputSchema15,
195371
195543
  annotations: { readOnlyHint: true },
195372
195544
  logic: withToolAuth(["tool:git:read"], createToolHandler(gitLogLogic)),
195373
- responseFormatter: responseFormatter13
195545
+ responseFormatter: responseFormatter14
195374
195546
  };
195375
195547
 
195376
195548
  // src/mcp-server/tools/definitions/git-show.tool.ts
195377
195549
  init_zod();
195378
- var TOOL_NAME14 = "git_show";
195379
- var TOOL_TITLE14 = "Git Show";
195380
- var TOOL_DESCRIPTION14 = "Show details of a git object (commit, tree, blob, or tag). Displays commit information and the diff of changes introduced.";
195381
- var InputSchema14 = exports_external.object({
195550
+ var TOOL_NAME15 = "git_show";
195551
+ var TOOL_TITLE15 = "Git Show";
195552
+ var TOOL_DESCRIPTION15 = "Show details of a git object (commit, tree, blob, or tag). Displays commit information and the diff of changes introduced.";
195553
+ var InputSchema15 = exports_external.object({
195382
195554
  path: PathSchema,
195383
195555
  object: CommitRefSchema.describe("Git object to show (commit hash, branch, tag, tree, or blob)."),
195384
195556
  format: exports_external.enum(["raw", "json"]).optional().describe("Output format for the git object."),
195385
195557
  stat: exports_external.boolean().default(false).describe("Show diffstat instead of full diff."),
195386
195558
  filePath: exports_external.string().optional().describe("View specific file at a given commit reference. When provided, shows the file content from the specified object.")
195387
195559
  });
195388
- var OutputSchema15 = exports_external.object({
195560
+ var OutputSchema16 = exports_external.object({
195389
195561
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
195390
195562
  object: exports_external.string().describe("Object identifier."),
195391
195563
  type: exports_external.enum(["commit", "tag", "tree", "blob"]).describe("Type of git object shown."),
@@ -195436,26 +195608,26 @@ function filterGitShowOutput(result, level) {
195436
195608
  }
195437
195609
  return result;
195438
195610
  }
195439
- var responseFormatter14 = createJsonFormatter({
195611
+ var responseFormatter15 = createJsonFormatter({
195440
195612
  filter: filterGitShowOutput
195441
195613
  });
195442
195614
  var gitShowTool = {
195443
- name: TOOL_NAME14,
195444
- title: TOOL_TITLE14,
195445
- description: TOOL_DESCRIPTION14,
195446
- inputSchema: InputSchema14,
195447
- outputSchema: OutputSchema15,
195615
+ name: TOOL_NAME15,
195616
+ title: TOOL_TITLE15,
195617
+ description: TOOL_DESCRIPTION15,
195618
+ inputSchema: InputSchema15,
195619
+ outputSchema: OutputSchema16,
195448
195620
  annotations: { readOnlyHint: true },
195449
195621
  logic: withToolAuth(["tool:git:read"], createToolHandler(gitShowLogic)),
195450
- responseFormatter: responseFormatter14
195622
+ responseFormatter: responseFormatter15
195451
195623
  };
195452
195624
 
195453
195625
  // src/mcp-server/tools/definitions/git-branch.tool.ts
195454
195626
  init_zod();
195455
- var TOOL_NAME15 = "git_branch";
195456
- var TOOL_TITLE15 = "Git Branch";
195457
- var TOOL_DESCRIPTION15 = "Manage branches: list all branches, show current branch, create a new branch, delete a branch, or rename a branch.";
195458
- var InputSchema15 = exports_external.object({
195627
+ var TOOL_NAME16 = "git_branch";
195628
+ var TOOL_TITLE16 = "Git Branch";
195629
+ var TOOL_DESCRIPTION16 = "Manage branches: list all branches, show current branch, create a new branch, delete a branch, or rename a branch.";
195630
+ var InputSchema16 = exports_external.object({
195459
195631
  path: PathSchema,
195460
195632
  operation: exports_external.enum(["list", "create", "delete", "rename", "show-current"]).default("list").describe("The branch operation to perform."),
195461
195633
  name: BranchNameSchema.optional().describe("Branch name for create/delete/rename operations."),
@@ -195475,7 +195647,7 @@ var BranchInfoSchema = exports_external.object({
195475
195647
  ahead: exports_external.number().int().optional().describe("Commits ahead of upstream."),
195476
195648
  behind: exports_external.number().int().optional().describe("Commits behind upstream.")
195477
195649
  });
195478
- var OutputSchema16 = exports_external.object({
195650
+ var OutputSchema17 = exports_external.object({
195479
195651
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
195480
195652
  operation: exports_external.enum(["list", "create", "delete", "rename", "show-current"]),
195481
195653
  branches: exports_external.array(BranchInfoSchema).optional().describe("List of branches (for list operation)."),
@@ -195574,26 +195746,26 @@ function filterGitBranchOutput(result, level) {
195574
195746
  }
195575
195747
  return result;
195576
195748
  }
195577
- var responseFormatter15 = createJsonFormatter({
195749
+ var responseFormatter16 = createJsonFormatter({
195578
195750
  filter: filterGitBranchOutput
195579
195751
  });
195580
195752
  var gitBranchTool = {
195581
- name: TOOL_NAME15,
195582
- title: TOOL_TITLE15,
195583
- description: TOOL_DESCRIPTION15,
195584
- inputSchema: InputSchema15,
195585
- outputSchema: OutputSchema16,
195753
+ name: TOOL_NAME16,
195754
+ title: TOOL_TITLE16,
195755
+ description: TOOL_DESCRIPTION16,
195756
+ inputSchema: InputSchema16,
195757
+ outputSchema: OutputSchema17,
195586
195758
  annotations: { readOnlyHint: false },
195587
195759
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitBranchLogic)),
195588
- responseFormatter: responseFormatter15
195760
+ responseFormatter: responseFormatter16
195589
195761
  };
195590
195762
 
195591
195763
  // src/mcp-server/tools/definitions/git-checkout.tool.ts
195592
195764
  init_zod();
195593
- var TOOL_NAME16 = "git_checkout";
195594
- var TOOL_TITLE16 = "Git Checkout";
195595
- var TOOL_DESCRIPTION16 = "Switch branches or restore working tree files. Can checkout an existing branch, create a new branch, or restore specific files.";
195596
- var InputSchema16 = exports_external.object({
195765
+ var TOOL_NAME17 = "git_checkout";
195766
+ var TOOL_TITLE17 = "Git Checkout";
195767
+ var TOOL_DESCRIPTION17 = "Switch branches or restore working tree files. Can checkout an existing branch, create a new branch, or restore specific files.";
195768
+ var InputSchema17 = exports_external.object({
195597
195769
  path: PathSchema,
195598
195770
  target: exports_external.union([BranchNameSchema, CommitRefSchema]).describe("Branch name, commit hash, or tag to checkout."),
195599
195771
  createBranch: exports_external.boolean().default(false).describe("Create a new branch with the specified name."),
@@ -195601,7 +195773,7 @@ var InputSchema16 = exports_external.object({
195601
195773
  paths: exports_external.array(exports_external.string()).optional().describe("Specific file paths to checkout/restore (relative to repository root)."),
195602
195774
  track: exports_external.boolean().optional().describe("Set up tracking relationship with remote branch when creating new branch.")
195603
195775
  });
195604
- var OutputSchema17 = exports_external.object({
195776
+ var OutputSchema18 = exports_external.object({
195605
195777
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
195606
195778
  target: exports_external.string().describe("Checked out branch or commit."),
195607
195779
  branchCreated: exports_external.boolean().describe("True if a new branch was created."),
@@ -195640,26 +195812,26 @@ function filterGitCheckoutOutput(result, level) {
195640
195812
  }
195641
195813
  return result;
195642
195814
  }
195643
- var responseFormatter16 = createJsonFormatter({
195815
+ var responseFormatter17 = createJsonFormatter({
195644
195816
  filter: filterGitCheckoutOutput
195645
195817
  });
195646
195818
  var gitCheckoutTool = {
195647
- name: TOOL_NAME16,
195648
- title: TOOL_TITLE16,
195649
- description: TOOL_DESCRIPTION16,
195650
- inputSchema: InputSchema16,
195651
- outputSchema: OutputSchema17,
195819
+ name: TOOL_NAME17,
195820
+ title: TOOL_TITLE17,
195821
+ description: TOOL_DESCRIPTION17,
195822
+ inputSchema: InputSchema17,
195823
+ outputSchema: OutputSchema18,
195652
195824
  annotations: { readOnlyHint: false },
195653
195825
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitCheckoutLogic)),
195654
- responseFormatter: responseFormatter16
195826
+ responseFormatter: responseFormatter17
195655
195827
  };
195656
195828
 
195657
195829
  // src/mcp-server/tools/definitions/git-cherry-pick.tool.ts
195658
195830
  init_zod();
195659
- var TOOL_NAME17 = "git_cherry_pick";
195660
- var TOOL_TITLE17 = "Git Cherry-Pick";
195661
- var TOOL_DESCRIPTION17 = "Cherry-pick commits from other branches. Apply specific commits to the current branch without merging entire branches.";
195662
- var InputSchema17 = exports_external.object({
195831
+ var TOOL_NAME18 = "git_cherry_pick";
195832
+ var TOOL_TITLE18 = "Git Cherry-Pick";
195833
+ var TOOL_DESCRIPTION18 = "Cherry-pick commits from other branches. Apply specific commits to the current branch without merging entire branches.";
195834
+ var InputSchema18 = exports_external.object({
195663
195835
  path: PathSchema,
195664
195836
  commits: exports_external.array(CommitRefSchema).min(1).describe("Commit hashes to cherry-pick."),
195665
195837
  noCommit: exports_external.boolean().default(false).describe("Don't create commit (stage changes only)."),
@@ -195669,7 +195841,7 @@ var InputSchema17 = exports_external.object({
195669
195841
  strategy: MergeStrategySchema.describe("Merge strategy to use for cherry-pick."),
195670
195842
  signoff: exports_external.boolean().default(false).describe("Add Signed-off-by line to the commit message.")
195671
195843
  });
195672
- var OutputSchema18 = exports_external.object({
195844
+ var OutputSchema19 = exports_external.object({
195673
195845
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
195674
195846
  pickedCommits: exports_external.array(exports_external.string()).describe("Commits that were successfully cherry-picked."),
195675
195847
  conflicts: exports_external.boolean().describe("Whether operation had conflicts."),
@@ -195710,26 +195882,26 @@ function filterGitCherryPickOutput(result, level) {
195710
195882
  }
195711
195883
  return result;
195712
195884
  }
195713
- var responseFormatter17 = createJsonFormatter({
195885
+ var responseFormatter18 = createJsonFormatter({
195714
195886
  filter: filterGitCherryPickOutput
195715
195887
  });
195716
195888
  var gitCherryPickTool = {
195717
- name: TOOL_NAME17,
195718
- title: TOOL_TITLE17,
195719
- description: TOOL_DESCRIPTION17,
195720
- inputSchema: InputSchema17,
195721
- outputSchema: OutputSchema18,
195889
+ name: TOOL_NAME18,
195890
+ title: TOOL_TITLE18,
195891
+ description: TOOL_DESCRIPTION18,
195892
+ inputSchema: InputSchema18,
195893
+ outputSchema: OutputSchema19,
195722
195894
  annotations: { readOnlyHint: false },
195723
195895
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitCherryPickLogic)),
195724
- responseFormatter: responseFormatter17
195896
+ responseFormatter: responseFormatter18
195725
195897
  };
195726
195898
 
195727
195899
  // src/mcp-server/tools/definitions/git-merge.tool.ts
195728
195900
  init_zod();
195729
- var TOOL_NAME18 = "git_merge";
195730
- var TOOL_TITLE18 = "Git Merge";
195731
- var TOOL_DESCRIPTION18 = "Merge branches together. Integrates changes from another branch into the current branch with optional merge strategies.";
195732
- var InputSchema18 = exports_external.object({
195901
+ var TOOL_NAME19 = "git_merge";
195902
+ var TOOL_TITLE19 = "Git Merge";
195903
+ var TOOL_DESCRIPTION19 = "Merge branches together. Integrates changes from another branch into the current branch with optional merge strategies.";
195904
+ var InputSchema19 = exports_external.object({
195733
195905
  path: PathSchema,
195734
195906
  branch: BranchNameSchema.describe("Branch to merge into current branch."),
195735
195907
  strategy: MergeStrategySchema,
@@ -195738,7 +195910,7 @@ var InputSchema18 = exports_external.object({
195738
195910
  message: CommitMessageSchema.optional().describe("Custom merge commit message."),
195739
195911
  abort: exports_external.boolean().default(false).describe("Abort an in-progress merge that has conflicts.")
195740
195912
  });
195741
- var OutputSchema19 = exports_external.object({
195913
+ var OutputSchema20 = exports_external.object({
195742
195914
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
195743
195915
  strategy: exports_external.string().describe("Merge strategy used."),
195744
195916
  fastForward: exports_external.boolean().describe("Whether merge was fast-forward."),
@@ -195792,26 +195964,26 @@ function filterGitMergeOutput(result, level) {
195792
195964
  }
195793
195965
  return result;
195794
195966
  }
195795
- var responseFormatter18 = createJsonFormatter({
195967
+ var responseFormatter19 = createJsonFormatter({
195796
195968
  filter: filterGitMergeOutput
195797
195969
  });
195798
195970
  var gitMergeTool = {
195799
- name: TOOL_NAME18,
195800
- title: TOOL_TITLE18,
195801
- description: TOOL_DESCRIPTION18,
195802
- inputSchema: InputSchema18,
195803
- outputSchema: OutputSchema19,
195971
+ name: TOOL_NAME19,
195972
+ title: TOOL_TITLE19,
195973
+ description: TOOL_DESCRIPTION19,
195974
+ inputSchema: InputSchema19,
195975
+ outputSchema: OutputSchema20,
195804
195976
  annotations: { readOnlyHint: false },
195805
195977
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitMergeLogic)),
195806
- responseFormatter: responseFormatter18
195978
+ responseFormatter: responseFormatter19
195807
195979
  };
195808
195980
 
195809
195981
  // src/mcp-server/tools/definitions/git-rebase.tool.ts
195810
195982
  init_zod();
195811
- var TOOL_NAME19 = "git_rebase";
195812
- var TOOL_TITLE19 = "Git Rebase";
195813
- var TOOL_DESCRIPTION19 = "Rebase commits onto another branch. Reapplies commits on top of another base tip for a cleaner history.";
195814
- var InputSchema19 = exports_external.object({
195983
+ var TOOL_NAME20 = "git_rebase";
195984
+ var TOOL_TITLE20 = "Git Rebase";
195985
+ var TOOL_DESCRIPTION20 = "Rebase commits onto another branch. Reapplies commits on top of another base tip for a cleaner history.";
195986
+ var InputSchema20 = exports_external.object({
195815
195987
  path: PathSchema,
195816
195988
  mode: exports_external.enum(["start", "continue", "abort", "skip"]).default("start").describe("Rebase operation mode: 'start', 'continue', 'abort', or 'skip'."),
195817
195989
  upstream: CommitRefSchema.optional().describe("Upstream branch to rebase onto (required for start mode)."),
@@ -195820,7 +195992,7 @@ var InputSchema19 = exports_external.object({
195820
195992
  onto: CommitRefSchema.optional().describe("Rebase onto different commit than upstream."),
195821
195993
  preserve: exports_external.boolean().default(false).describe("Preserve merge commits during rebase.")
195822
195994
  });
195823
- var OutputSchema20 = exports_external.object({
195995
+ var OutputSchema21 = exports_external.object({
195824
195996
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
195825
195997
  conflicts: exports_external.boolean().describe("Whether rebase had conflicts."),
195826
195998
  conflictedFiles: exports_external.array(exports_external.string()).describe("Files with conflicts that need resolution."),
@@ -195870,33 +196042,33 @@ function filterGitRebaseOutput(result, level) {
195870
196042
  }
195871
196043
  return result;
195872
196044
  }
195873
- var responseFormatter19 = createJsonFormatter({
196045
+ var responseFormatter20 = createJsonFormatter({
195874
196046
  filter: filterGitRebaseOutput
195875
196047
  });
195876
196048
  var gitRebaseTool = {
195877
- name: TOOL_NAME19,
195878
- title: TOOL_TITLE19,
195879
- description: TOOL_DESCRIPTION19,
195880
- inputSchema: InputSchema19,
195881
- outputSchema: OutputSchema20,
196049
+ name: TOOL_NAME20,
196050
+ title: TOOL_TITLE20,
196051
+ description: TOOL_DESCRIPTION20,
196052
+ inputSchema: InputSchema20,
196053
+ outputSchema: OutputSchema21,
195882
196054
  annotations: { readOnlyHint: false },
195883
196055
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitRebaseLogic)),
195884
- responseFormatter: responseFormatter19
196056
+ responseFormatter: responseFormatter20
195885
196057
  };
195886
196058
 
195887
196059
  // src/mcp-server/tools/definitions/git-fetch.tool.ts
195888
196060
  init_zod();
195889
- var TOOL_NAME20 = "git_fetch";
195890
- var TOOL_TITLE20 = "Git Fetch";
195891
- var TOOL_DESCRIPTION20 = "Fetch updates from a remote repository. Downloads objects and refs without merging them.";
195892
- var InputSchema20 = exports_external.object({
196061
+ var TOOL_NAME21 = "git_fetch";
196062
+ var TOOL_TITLE21 = "Git Fetch";
196063
+ var TOOL_DESCRIPTION21 = "Fetch updates from a remote repository. Downloads objects and refs without merging them.";
196064
+ var InputSchema21 = exports_external.object({
195893
196065
  path: PathSchema,
195894
196066
  remote: RemoteNameSchema.optional().describe("Remote name (default: origin)."),
195895
196067
  prune: PruneSchema,
195896
196068
  tags: exports_external.boolean().default(false).describe("Fetch all tags from the remote."),
195897
196069
  depth: DepthSchema
195898
196070
  });
195899
- var OutputSchema21 = exports_external.object({
196071
+ var OutputSchema22 = exports_external.object({
195900
196072
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
195901
196073
  remote: exports_external.string().describe("Remote name that was fetched from."),
195902
196074
  fetchedRefs: exports_external.array(exports_external.string()).describe("References that were fetched from the remote."),
@@ -195937,33 +196109,33 @@ function filterGitFetchOutput(result, level) {
195937
196109
  }
195938
196110
  return result;
195939
196111
  }
195940
- var responseFormatter20 = createJsonFormatter({
196112
+ var responseFormatter21 = createJsonFormatter({
195941
196113
  filter: filterGitFetchOutput
195942
196114
  });
195943
196115
  var gitFetchTool = {
195944
- name: TOOL_NAME20,
195945
- title: TOOL_TITLE20,
195946
- description: TOOL_DESCRIPTION20,
195947
- inputSchema: InputSchema20,
195948
- outputSchema: OutputSchema21,
196116
+ name: TOOL_NAME21,
196117
+ title: TOOL_TITLE21,
196118
+ description: TOOL_DESCRIPTION21,
196119
+ inputSchema: InputSchema21,
196120
+ outputSchema: OutputSchema22,
195949
196121
  annotations: { readOnlyHint: false },
195950
196122
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitFetchLogic)),
195951
- responseFormatter: responseFormatter20
196123
+ responseFormatter: responseFormatter21
195952
196124
  };
195953
196125
 
195954
196126
  // src/mcp-server/tools/definitions/git-pull.tool.ts
195955
196127
  init_zod();
195956
- var TOOL_NAME21 = "git_pull";
195957
- var TOOL_TITLE21 = "Git Pull";
195958
- var TOOL_DESCRIPTION21 = "Pull changes from a remote repository. Fetches and integrates changes into the current branch.";
195959
- var InputSchema21 = exports_external.object({
196128
+ var TOOL_NAME22 = "git_pull";
196129
+ var TOOL_TITLE22 = "Git Pull";
196130
+ var TOOL_DESCRIPTION22 = "Pull changes from a remote repository. Fetches and integrates changes into the current branch.";
196131
+ var InputSchema22 = exports_external.object({
195960
196132
  path: PathSchema,
195961
196133
  remote: RemoteNameSchema.optional().describe("Remote name (default: origin)."),
195962
196134
  branch: BranchNameSchema.optional().describe("Branch name (default: current branch)."),
195963
196135
  rebase: exports_external.boolean().default(false).describe("Use rebase instead of merge when integrating changes."),
195964
196136
  fastForwardOnly: exports_external.boolean().default(false).describe("Fail if can't fast-forward (no merge commit).")
195965
196137
  });
195966
- var OutputSchema22 = exports_external.object({
196138
+ var OutputSchema23 = exports_external.object({
195967
196139
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
195968
196140
  remote: exports_external.string().describe("Remote name that was pulled from."),
195969
196141
  branch: exports_external.string().describe("Branch that was pulled."),
@@ -196011,26 +196183,26 @@ function filterGitPullOutput(result, level) {
196011
196183
  }
196012
196184
  return result;
196013
196185
  }
196014
- var responseFormatter21 = createJsonFormatter({
196186
+ var responseFormatter22 = createJsonFormatter({
196015
196187
  filter: filterGitPullOutput
196016
196188
  });
196017
196189
  var gitPullTool = {
196018
- name: TOOL_NAME21,
196019
- title: TOOL_TITLE21,
196020
- description: TOOL_DESCRIPTION21,
196021
- inputSchema: InputSchema21,
196022
- outputSchema: OutputSchema22,
196190
+ name: TOOL_NAME22,
196191
+ title: TOOL_TITLE22,
196192
+ description: TOOL_DESCRIPTION22,
196193
+ inputSchema: InputSchema22,
196194
+ outputSchema: OutputSchema23,
196023
196195
  annotations: { readOnlyHint: false },
196024
196196
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitPullLogic)),
196025
- responseFormatter: responseFormatter21
196197
+ responseFormatter: responseFormatter22
196026
196198
  };
196027
196199
 
196028
196200
  // src/mcp-server/tools/definitions/git-push.tool.ts
196029
196201
  init_zod();
196030
- var TOOL_NAME22 = "git_push";
196031
- var TOOL_TITLE22 = "Git Push";
196032
- var TOOL_DESCRIPTION22 = "Push changes to a remote repository. Uploads local commits to the remote branch.";
196033
- var InputSchema22 = exports_external.object({
196202
+ var TOOL_NAME23 = "git_push";
196203
+ var TOOL_TITLE23 = "Git Push";
196204
+ var TOOL_DESCRIPTION23 = "Push changes to a remote repository. Uploads local commits to the remote branch.";
196205
+ var InputSchema23 = exports_external.object({
196034
196206
  path: PathSchema,
196035
196207
  remote: RemoteNameSchema.optional().describe("Remote name (default: origin)."),
196036
196208
  branch: BranchNameSchema.optional().describe("Branch name (default: current branch)."),
@@ -196042,7 +196214,7 @@ var InputSchema22 = exports_external.object({
196042
196214
  delete: exports_external.boolean().default(false).describe("Delete the specified remote branch."),
196043
196215
  remoteBranch: BranchNameSchema.optional().describe("Remote branch name to push to (if different from local branch name).")
196044
196216
  });
196045
- var OutputSchema23 = exports_external.object({
196217
+ var OutputSchema24 = exports_external.object({
196046
196218
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
196047
196219
  remote: exports_external.string().describe("Remote name that was pushed to."),
196048
196220
  branch: exports_external.string().describe("Branch that was pushed."),
@@ -196103,26 +196275,26 @@ function filterGitPushOutput(result, level) {
196103
196275
  }
196104
196276
  return result;
196105
196277
  }
196106
- var responseFormatter22 = createJsonFormatter({
196278
+ var responseFormatter23 = createJsonFormatter({
196107
196279
  filter: filterGitPushOutput
196108
196280
  });
196109
196281
  var gitPushTool = {
196110
- name: TOOL_NAME22,
196111
- title: TOOL_TITLE22,
196112
- description: TOOL_DESCRIPTION22,
196113
- inputSchema: InputSchema22,
196114
- outputSchema: OutputSchema23,
196282
+ name: TOOL_NAME23,
196283
+ title: TOOL_TITLE23,
196284
+ description: TOOL_DESCRIPTION23,
196285
+ inputSchema: InputSchema23,
196286
+ outputSchema: OutputSchema24,
196115
196287
  annotations: { readOnlyHint: false },
196116
196288
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitPushLogic)),
196117
- responseFormatter: responseFormatter22
196289
+ responseFormatter: responseFormatter23
196118
196290
  };
196119
196291
 
196120
196292
  // src/mcp-server/tools/definitions/git-remote.tool.ts
196121
196293
  init_zod();
196122
- var TOOL_NAME23 = "git_remote";
196123
- var TOOL_TITLE23 = "Git Remote";
196124
- var TOOL_DESCRIPTION23 = "Manage remote repositories: list remotes, add new remotes, remove remotes, rename remotes, or get/set remote URLs.";
196125
- var InputSchema23 = exports_external.object({
196294
+ var TOOL_NAME24 = "git_remote";
196295
+ var TOOL_TITLE24 = "Git Remote";
196296
+ var TOOL_DESCRIPTION24 = "Manage remote repositories: list remotes, add new remotes, remove remotes, rename remotes, or get/set remote URLs.";
196297
+ var InputSchema24 = exports_external.object({
196126
196298
  path: PathSchema,
196127
196299
  mode: exports_external.enum(["list", "add", "remove", "rename", "get-url", "set-url"]).default("list").describe("The remote operation to perform."),
196128
196300
  name: RemoteNameSchema.optional().describe("Remote name for add/remove/rename/get-url/set-url operations."),
@@ -196135,7 +196307,7 @@ var RemoteInfoSchema = exports_external.object({
196135
196307
  fetchUrl: exports_external.string().describe("Fetch URL."),
196136
196308
  pushUrl: exports_external.string().describe("Push URL (may differ from fetch URL).")
196137
196309
  });
196138
- var OutputSchema24 = exports_external.object({
196310
+ var OutputSchema25 = exports_external.object({
196139
196311
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
196140
196312
  mode: exports_external.string().describe("Operation mode that was performed."),
196141
196313
  remotes: exports_external.array(RemoteInfoSchema).optional().describe("List of remotes (for list mode)."),
@@ -196188,32 +196360,32 @@ function filterGitRemoteOutput(result, level) {
196188
196360
  }
196189
196361
  return result;
196190
196362
  }
196191
- var responseFormatter23 = createJsonFormatter({
196363
+ var responseFormatter24 = createJsonFormatter({
196192
196364
  filter: filterGitRemoteOutput
196193
196365
  });
196194
196366
  var gitRemoteTool = {
196195
- name: TOOL_NAME23,
196196
- title: TOOL_TITLE23,
196197
- description: TOOL_DESCRIPTION23,
196198
- inputSchema: InputSchema23,
196199
- outputSchema: OutputSchema24,
196367
+ name: TOOL_NAME24,
196368
+ title: TOOL_TITLE24,
196369
+ description: TOOL_DESCRIPTION24,
196370
+ inputSchema: InputSchema24,
196371
+ outputSchema: OutputSchema25,
196200
196372
  annotations: { readOnlyHint: false },
196201
196373
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitRemoteLogic)),
196202
- responseFormatter: responseFormatter23
196374
+ responseFormatter: responseFormatter24
196203
196375
  };
196204
196376
 
196205
196377
  // src/mcp-server/tools/definitions/git-reset.tool.ts
196206
196378
  init_zod();
196207
- var TOOL_NAME24 = "git_reset";
196208
- var TOOL_TITLE24 = "Git Reset";
196209
- var TOOL_DESCRIPTION24 = "Reset current HEAD to specified state. Can be used to unstage files (soft), discard commits (mixed), or discard all changes (hard).";
196210
- var InputSchema24 = exports_external.object({
196379
+ var TOOL_NAME25 = "git_reset";
196380
+ var TOOL_TITLE25 = "Git Reset";
196381
+ var TOOL_DESCRIPTION25 = "Reset current HEAD to specified state. Can be used to unstage files (soft), discard commits (mixed), or discard all changes (hard).";
196382
+ var InputSchema25 = exports_external.object({
196211
196383
  path: PathSchema,
196212
196384
  mode: exports_external.enum(["soft", "mixed", "hard", "merge", "keep"]).default("mixed").describe("Reset mode: soft (keep changes staged), mixed (unstage changes), hard (discard all changes), merge (reset and merge), keep (reset but keep local changes)."),
196213
196385
  target: CommitRefSchema.optional().describe("Target commit to reset to (default: HEAD)."),
196214
196386
  paths: exports_external.array(exports_external.string()).optional().describe("Specific file paths to reset (leaves HEAD unchanged).")
196215
196387
  });
196216
- var OutputSchema25 = exports_external.object({
196388
+ var OutputSchema26 = exports_external.object({
196217
196389
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
196218
196390
  mode: exports_external.string().describe("Reset mode that was used."),
196219
196391
  target: exports_external.string().describe("Target commit that was reset to."),
@@ -196251,26 +196423,26 @@ function filterGitResetOutput(result, level) {
196251
196423
  }
196252
196424
  return result;
196253
196425
  }
196254
- var responseFormatter24 = createJsonFormatter({
196426
+ var responseFormatter25 = createJsonFormatter({
196255
196427
  filter: filterGitResetOutput
196256
196428
  });
196257
196429
  var gitResetTool = {
196258
- name: TOOL_NAME24,
196259
- title: TOOL_TITLE24,
196260
- description: TOOL_DESCRIPTION24,
196261
- inputSchema: InputSchema24,
196262
- outputSchema: OutputSchema25,
196430
+ name: TOOL_NAME25,
196431
+ title: TOOL_TITLE25,
196432
+ description: TOOL_DESCRIPTION25,
196433
+ inputSchema: InputSchema25,
196434
+ outputSchema: OutputSchema26,
196263
196435
  annotations: { readOnlyHint: false },
196264
196436
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitResetLogic)),
196265
- responseFormatter: responseFormatter24
196437
+ responseFormatter: responseFormatter25
196266
196438
  };
196267
196439
 
196268
196440
  // src/mcp-server/tools/definitions/git-stash.tool.ts
196269
196441
  init_zod();
196270
- var TOOL_NAME25 = "git_stash";
196271
- var TOOL_TITLE25 = "Git Stash";
196272
- var TOOL_DESCRIPTION25 = "Manage stashes: list stashes, save current changes (push), restore changes (pop/apply), or remove stashes (drop/clear).";
196273
- var InputSchema25 = exports_external.object({
196442
+ var TOOL_NAME26 = "git_stash";
196443
+ var TOOL_TITLE26 = "Git Stash";
196444
+ var TOOL_DESCRIPTION26 = "Manage stashes: list stashes, save current changes (push), restore changes (pop/apply), or remove stashes (drop/clear).";
196445
+ var InputSchema26 = exports_external.object({
196274
196446
  path: PathSchema,
196275
196447
  mode: exports_external.enum(["list", "push", "pop", "apply", "drop", "clear"]).default("list").describe("The stash operation to perform."),
196276
196448
  message: exports_external.string().optional().describe("Stash message description (for push operation)."),
@@ -196285,7 +196457,7 @@ var StashInfoSchema = exports_external.object({
196285
196457
  description: exports_external.string().describe("Stash description."),
196286
196458
  timestamp: exports_external.number().int().describe("Unix timestamp when stashed.")
196287
196459
  });
196288
- var OutputSchema26 = exports_external.object({
196460
+ var OutputSchema27 = exports_external.object({
196289
196461
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
196290
196462
  mode: exports_external.string().describe("Operation mode that was performed."),
196291
196463
  stashes: exports_external.array(StashInfoSchema).optional().describe("List of stashes (for list mode)."),
@@ -196334,26 +196506,26 @@ function filterGitStashOutput(result, level) {
196334
196506
  }
196335
196507
  return result;
196336
196508
  }
196337
- var responseFormatter25 = createJsonFormatter({
196509
+ var responseFormatter26 = createJsonFormatter({
196338
196510
  filter: filterGitStashOutput
196339
196511
  });
196340
196512
  var gitStashTool = {
196341
- name: TOOL_NAME25,
196342
- title: TOOL_TITLE25,
196343
- description: TOOL_DESCRIPTION25,
196344
- inputSchema: InputSchema25,
196345
- outputSchema: OutputSchema26,
196513
+ name: TOOL_NAME26,
196514
+ title: TOOL_TITLE26,
196515
+ description: TOOL_DESCRIPTION26,
196516
+ inputSchema: InputSchema26,
196517
+ outputSchema: OutputSchema27,
196346
196518
  annotations: { readOnlyHint: false },
196347
196519
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitStashLogic)),
196348
- responseFormatter: responseFormatter25
196520
+ responseFormatter: responseFormatter26
196349
196521
  };
196350
196522
 
196351
196523
  // src/mcp-server/tools/definitions/git-tag.tool.ts
196352
196524
  init_zod();
196353
- var TOOL_NAME26 = "git_tag";
196354
- var TOOL_TITLE26 = "Git Tag";
196355
- var TOOL_DESCRIPTION26 = "Manage tags: list all tags, create a new tag, or delete a tag. Tags are used to mark specific points in history (releases, milestones).";
196356
- var InputSchema26 = exports_external.object({
196525
+ var TOOL_NAME27 = "git_tag";
196526
+ var TOOL_TITLE27 = "Git Tag";
196527
+ var TOOL_DESCRIPTION27 = "Manage tags: list all tags, create a new tag, or delete a tag. Tags are used to mark specific points in history (releases, milestones).";
196528
+ var InputSchema27 = exports_external.object({
196357
196529
  path: PathSchema,
196358
196530
  mode: exports_external.enum(["list", "create", "delete"]).default("list").describe("The tag operation to perform."),
196359
196531
  tagName: TagNameSchema.optional().describe("Tag name for create/delete operations."),
@@ -196369,7 +196541,7 @@ var TagInfoSchema = exports_external.object({
196369
196541
  tagger: exports_external.string().optional().describe("Tagger name and email."),
196370
196542
  timestamp: exports_external.number().int().optional().describe("Tag creation timestamp.")
196371
196543
  });
196372
- var OutputSchema27 = exports_external.object({
196544
+ var OutputSchema28 = exports_external.object({
196373
196545
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
196374
196546
  mode: exports_external.string().describe("Operation mode that was performed."),
196375
196547
  tags: exports_external.array(TagInfoSchema).optional().describe("List of tags (for list mode)."),
@@ -196417,26 +196589,26 @@ function filterGitTagOutput(result, level) {
196417
196589
  }
196418
196590
  return result;
196419
196591
  }
196420
- var responseFormatter26 = createJsonFormatter({
196592
+ var responseFormatter27 = createJsonFormatter({
196421
196593
  filter: filterGitTagOutput
196422
196594
  });
196423
196595
  var gitTagTool = {
196424
- name: TOOL_NAME26,
196425
- title: TOOL_TITLE26,
196426
- description: TOOL_DESCRIPTION26,
196427
- inputSchema: InputSchema26,
196428
- outputSchema: OutputSchema27,
196596
+ name: TOOL_NAME27,
196597
+ title: TOOL_TITLE27,
196598
+ description: TOOL_DESCRIPTION27,
196599
+ inputSchema: InputSchema27,
196600
+ outputSchema: OutputSchema28,
196429
196601
  annotations: { readOnlyHint: false },
196430
196602
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitTagLogic)),
196431
- responseFormatter: responseFormatter26
196603
+ responseFormatter: responseFormatter27
196432
196604
  };
196433
196605
 
196434
196606
  // src/mcp-server/tools/definitions/git-worktree.tool.ts
196435
196607
  init_zod();
196436
- var TOOL_NAME27 = "git_worktree";
196437
- var TOOL_TITLE27 = "Git Worktree";
196438
- var TOOL_DESCRIPTION27 = "Manage multiple working trees: list worktrees, add new worktrees for parallel work, remove worktrees, or move worktrees to new locations.";
196439
- var InputSchema27 = exports_external.object({
196608
+ var TOOL_NAME28 = "git_worktree";
196609
+ var TOOL_TITLE28 = "Git Worktree";
196610
+ var TOOL_DESCRIPTION28 = "Manage multiple working trees: list worktrees, add new worktrees for parallel work, remove worktrees, or move worktrees to new locations.";
196611
+ var InputSchema28 = exports_external.object({
196440
196612
  path: PathSchema,
196441
196613
  mode: exports_external.enum(["list", "add", "remove", "move", "prune"]).default("list").describe("The worktree operation to perform."),
196442
196614
  worktreePath: exports_external.string().optional().describe("Path for the new worktree (for add/move operations)."),
@@ -196457,7 +196629,7 @@ var WorktreeInfoSchema = exports_external.object({
196457
196629
  locked: exports_external.boolean().describe("Whether the worktree is locked."),
196458
196630
  prunable: exports_external.boolean().describe("Whether the worktree can be pruned.")
196459
196631
  });
196460
- var OutputSchema28 = exports_external.object({
196632
+ var OutputSchema29 = exports_external.object({
196461
196633
  success: exports_external.boolean().describe("Indicates if the operation was successful."),
196462
196634
  mode: exports_external.string().describe("Operation mode that was performed."),
196463
196635
  worktrees: exports_external.array(WorktreeInfoSchema).optional().describe("List of worktrees (for list mode)."),
@@ -196521,18 +196693,18 @@ function filterGitWorktreeOutput(result, level) {
196521
196693
  }
196522
196694
  return result;
196523
196695
  }
196524
- var responseFormatter27 = createJsonFormatter({
196696
+ var responseFormatter28 = createJsonFormatter({
196525
196697
  filter: filterGitWorktreeOutput
196526
196698
  });
196527
196699
  var gitWorktreeTool = {
196528
- name: TOOL_NAME27,
196529
- title: TOOL_TITLE27,
196530
- description: TOOL_DESCRIPTION27,
196531
- inputSchema: InputSchema27,
196532
- outputSchema: OutputSchema28,
196700
+ name: TOOL_NAME28,
196701
+ title: TOOL_TITLE28,
196702
+ description: TOOL_DESCRIPTION28,
196703
+ inputSchema: InputSchema28,
196704
+ outputSchema: OutputSchema29,
196533
196705
  annotations: { readOnlyHint: false },
196534
196706
  logic: withToolAuth(["tool:git:write"], createToolHandler(gitWorktreeLogic)),
196535
- responseFormatter: responseFormatter27
196707
+ responseFormatter: responseFormatter28
196536
196708
  };
196537
196709
 
196538
196710
  // src/mcp-server/tools/definitions/index.ts
@@ -196540,6 +196712,7 @@ var allToolDefinitions = [
196540
196712
  gitAddTool,
196541
196713
  gitBlameTool,
196542
196714
  gitBranchTool,
196715
+ gitChangelogAnalyzeTool,
196543
196716
  gitCheckoutTool,
196544
196717
  gitCherryPickTool,
196545
196718
  gitCleanTool,