@commitsage/mcp-server 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +434 -0
  2. package/dist/adapters/sse.d.ts +26 -0
  3. package/dist/adapters/sse.d.ts.map +1 -0
  4. package/dist/adapters/sse.js +45 -0
  5. package/dist/adapters/sse.js.map +1 -0
  6. package/dist/auth/jwt.d.ts +70 -0
  7. package/dist/auth/jwt.d.ts.map +1 -0
  8. package/dist/auth/jwt.js +171 -0
  9. package/dist/auth/jwt.js.map +1 -0
  10. package/dist/auth/oauth.d.ts +71 -0
  11. package/dist/auth/oauth.d.ts.map +1 -0
  12. package/dist/auth/oauth.js +213 -0
  13. package/dist/auth/oauth.js.map +1 -0
  14. package/dist/index.d.ts +7 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +19 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/models/errors.d.ts +34 -0
  19. package/dist/models/errors.d.ts.map +1 -0
  20. package/dist/models/errors.js +67 -0
  21. package/dist/models/errors.js.map +1 -0
  22. package/dist/models/types.d.ts +39 -0
  23. package/dist/models/types.d.ts.map +1 -0
  24. package/dist/models/types.js +9 -0
  25. package/dist/models/types.js.map +1 -0
  26. package/dist/server/mcpServer.d.ts +11 -0
  27. package/dist/server/mcpServer.d.ts.map +1 -0
  28. package/dist/server/mcpServer.js +216 -0
  29. package/dist/server/mcpServer.js.map +1 -0
  30. package/dist/server/tools.d.ts +93 -0
  31. package/dist/server/tools.d.ts.map +1 -0
  32. package/dist/server/tools.js +272 -0
  33. package/dist/server/tools.js.map +1 -0
  34. package/dist/services/aiService.d.ts +12 -0
  35. package/dist/services/aiService.d.ts.map +1 -0
  36. package/dist/services/aiService.js +86 -0
  37. package/dist/services/aiService.js.map +1 -0
  38. package/dist/services/baseAIService.d.ts +47 -0
  39. package/dist/services/baseAIService.d.ts.map +1 -0
  40. package/dist/services/baseAIService.js +153 -0
  41. package/dist/services/baseAIService.js.map +1 -0
  42. package/dist/services/codestralService.d.ts +7 -0
  43. package/dist/services/codestralService.d.ts.map +1 -0
  44. package/dist/services/codestralService.js +49 -0
  45. package/dist/services/codestralService.js.map +1 -0
  46. package/dist/services/geminiService.d.ts +18 -0
  47. package/dist/services/geminiService.d.ts.map +1 -0
  48. package/dist/services/geminiService.js +139 -0
  49. package/dist/services/geminiService.js.map +1 -0
  50. package/dist/services/gitBlameAnalyzer.d.ts +15 -0
  51. package/dist/services/gitBlameAnalyzer.d.ts.map +1 -0
  52. package/dist/services/gitBlameAnalyzer.js +135 -0
  53. package/dist/services/gitBlameAnalyzer.js.map +1 -0
  54. package/dist/services/gitService.d.ts +54 -0
  55. package/dist/services/gitService.d.ts.map +1 -0
  56. package/dist/services/gitService.js +394 -0
  57. package/dist/services/gitService.js.map +1 -0
  58. package/dist/services/ollamaService.d.ts +7 -0
  59. package/dist/services/ollamaService.d.ts.map +1 -0
  60. package/dist/services/ollamaService.js +43 -0
  61. package/dist/services/ollamaService.js.map +1 -0
  62. package/dist/services/openaiService.d.ts +9 -0
  63. package/dist/services/openaiService.d.ts.map +1 -0
  64. package/dist/services/openaiService.js +69 -0
  65. package/dist/services/openaiService.js.map +1 -0
  66. package/dist/services/promptService.d.ts +10 -0
  67. package/dist/services/promptService.d.ts.map +1 -0
  68. package/dist/services/promptService.js +136 -0
  69. package/dist/services/promptService.js.map +1 -0
  70. package/dist/utils/config.d.ts +27 -0
  71. package/dist/utils/config.d.ts.map +1 -0
  72. package/dist/utils/config.js +80 -0
  73. package/dist/utils/config.js.map +1 -0
  74. package/dist/utils/httpUtils.d.ts +33 -0
  75. package/dist/utils/httpUtils.d.ts.map +1 -0
  76. package/dist/utils/httpUtils.js +54 -0
  77. package/dist/utils/httpUtils.js.map +1 -0
  78. package/dist/utils/logger.d.ts +14 -0
  79. package/dist/utils/logger.d.ts.map +1 -0
  80. package/dist/utils/logger.js +59 -0
  81. package/dist/utils/logger.js.map +1 -0
  82. package/dist/utils/retryUtils.d.ts +29 -0
  83. package/dist/utils/retryUtils.d.ts.map +1 -0
  84. package/dist/utils/retryUtils.js +49 -0
  85. package/dist/utils/retryUtils.js.map +1 -0
  86. package/dist/utils/textProcessing.d.ts +8 -0
  87. package/dist/utils/textProcessing.d.ts.map +1 -0
  88. package/dist/utils/textProcessing.js +10 -0
  89. package/dist/utils/textProcessing.js.map +1 -0
  90. package/package.json +47 -0
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Retry utilities for API calls
3
+ */
4
+ import { Logger } from './logger.js';
5
+ export class RetryUtils {
6
+ static DEFAULT_MAX_RETRIES = 3;
7
+ static DEFAULT_MAX_RETRY_BACKOFF = 10000;
8
+ /**
9
+ * Update progress based on attempt number
10
+ */
11
+ static async updateProgressForAttempt(progress, attempt) {
12
+ const progressMessage = attempt === 1
13
+ ? 'Generating commit message...'
14
+ : `Retry attempt ${attempt}/${this.DEFAULT_MAX_RETRIES}...`;
15
+ progress.report({ message: progressMessage, increment: 10 });
16
+ }
17
+ /**
18
+ * Calculate retry delay with exponential backoff
19
+ */
20
+ static calculateRetryDelay(attempt, maxBackoff) {
21
+ const backoff = maxBackoff || this.DEFAULT_MAX_RETRY_BACKOFF;
22
+ return Math.min(1000 * Math.pow(2, attempt - 1), backoff);
23
+ }
24
+ /**
25
+ * Create a delay
26
+ */
27
+ static delay(ms) {
28
+ return new Promise((resolve) => setTimeout(resolve, ms));
29
+ }
30
+ /**
31
+ * Universal error handling with retry logic
32
+ */
33
+ static async handleGenerationError(error, prompt, progress, attempt, generateFn, errorHandler) {
34
+ Logger.error(`Generation attempt ${attempt} failed:`, error);
35
+ const { errorMessage, shouldRetry } = errorHandler(error);
36
+ if (shouldRetry && attempt < this.DEFAULT_MAX_RETRIES) {
37
+ const delayMs = this.calculateRetryDelay(attempt);
38
+ Logger.log(`Retrying in ${delayMs / 1000} seconds...`);
39
+ progress.report({
40
+ message: `Waiting ${delayMs / 1000} seconds before retry...`,
41
+ increment: 0,
42
+ });
43
+ await this.delay(delayMs);
44
+ return generateFn(prompt, progress, attempt + 1);
45
+ }
46
+ throw new Error(`Failed to generate commit message: ${errorMessage}`);
47
+ }
48
+ }
49
+ //# sourceMappingURL=retryUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retryUtils.js","sourceRoot":"","sources":["../../src/utils/retryUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC,MAAM,OAAO,UAAU;IACrB,MAAM,CAAU,mBAAmB,GAAG,CAAC,CAAC;IACxC,MAAM,CAAU,yBAAyB,GAAG,KAAK,CAAC;IAElD;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,wBAAwB,CACnC,QAA0B,EAC1B,OAAe;QAEf,MAAM,eAAe,GACnB,OAAO,KAAK,CAAC;YACX,CAAC,CAAC,8BAA8B;YAChC,CAAC,CAAC,iBAAiB,OAAO,IAAI,IAAI,CAAC,mBAAmB,KAAK,CAAC;QAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAe,EAAE,UAAmB;QAC7D,MAAM,OAAO,GAAG,UAAU,IAAI,IAAI,CAAC,yBAAyB,CAAC;QAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,EAAU;QACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAChC,KAAY,EACZ,MAAc,EACd,QAA0B,EAC1B,OAAe,EACf,UAI2B,EAC3B,YAA8C;QAE9C,MAAM,CAAC,KAAK,CAAC,sBAAsB,OAAO,UAAU,EAAE,KAAK,CAAC,CAAC;QAC7D,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1D,IAAI,WAAW,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,eAAe,OAAO,GAAG,IAAI,aAAa,CAAC,CAAC;YACvD,QAAQ,CAAC,MAAM,CAAC;gBACd,OAAO,EAAE,WAAW,OAAO,GAAG,IAAI,0BAA0B;gBAC5D,SAAS,EAAE,CAAC;aACb,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE1B,OAAO,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,sCAAsC,YAAY,EAAE,CAAC,CAAC;IACxE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Utility functions for processing text responses from AI models
3
+ */
4
+ /**
5
+ * Removes any content between <think></think> tags from the input text
6
+ */
7
+ export declare function removeThinkTags(text: string): string;
8
+ //# sourceMappingURL=textProcessing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textProcessing.d.ts","sourceRoot":"","sources":["../../src/utils/textProcessing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Utility functions for processing text responses from AI models
3
+ */
4
+ /**
5
+ * Removes any content between <think></think> tags from the input text
6
+ */
7
+ export function removeThinkTags(text) {
8
+ return text.replace(/<think>[\s\S]*?<\/think>/g, '').trim();
9
+ }
10
+ //# sourceMappingURL=textProcessing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textProcessing.js","sourceRoot":"","sources":["../../src/utils/textProcessing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9D,CAAC"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@commitsage/mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for CommitSage - AI-powered commit message generation with Gemini, OpenAI, Codestral, and Ollama support",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "bin": {
8
+ "commitsage-mcp": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist/**/*",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "dev": "tsx watch src/index.ts",
18
+ "start": "node dist/index.js",
19
+ "clean": "rimraf dist",
20
+ "prepare": "npm run build"
21
+ },
22
+ "keywords": [
23
+ "mcp",
24
+ "model-context-protocol",
25
+ "git",
26
+ "commit",
27
+ "ai",
28
+ "gemini",
29
+ "openai"
30
+ ],
31
+ "author": "VizzleTF",
32
+ "license": "MIT",
33
+ "dependencies": {
34
+ "@modelcontextprotocol/sdk": "^1.0.4",
35
+ "axios": "^1.13.2",
36
+ "zod": "^3.24.1"
37
+ },
38
+ "devDependencies": {
39
+ "@types/node": "^25.0.9",
40
+ "rimraf": "^6.0.1",
41
+ "tsx": "^4.19.2",
42
+ "typescript": "^5.9.3"
43
+ },
44
+ "engines": {
45
+ "node": ">=18.0.0"
46
+ }
47
+ }