driftdetect-mcp 0.4.0 → 0.4.2

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 (140) hide show
  1. package/dist/bin/server.d.ts +12 -2
  2. package/dist/bin/server.d.ts.map +1 -1
  3. package/dist/bin/server.js +25 -5
  4. package/dist/bin/server.js.map +1 -1
  5. package/dist/enterprise-server.d.ts +78 -0
  6. package/dist/enterprise-server.d.ts.map +1 -0
  7. package/dist/enterprise-server.js +201 -0
  8. package/dist/enterprise-server.js.map +1 -0
  9. package/dist/index.d.ts +15 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +17 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/infrastructure/cache.d.ts +86 -0
  14. package/dist/infrastructure/cache.d.ts.map +1 -0
  15. package/dist/infrastructure/cache.js +271 -0
  16. package/dist/infrastructure/cache.js.map +1 -0
  17. package/dist/infrastructure/cursor-manager.d.ts +86 -0
  18. package/dist/infrastructure/cursor-manager.d.ts.map +1 -0
  19. package/dist/infrastructure/cursor-manager.js +175 -0
  20. package/dist/infrastructure/cursor-manager.js.map +1 -0
  21. package/dist/infrastructure/error-handler.d.ts +82 -0
  22. package/dist/infrastructure/error-handler.d.ts.map +1 -0
  23. package/dist/infrastructure/error-handler.js +226 -0
  24. package/dist/infrastructure/error-handler.js.map +1 -0
  25. package/dist/infrastructure/index.d.ts +19 -0
  26. package/dist/infrastructure/index.d.ts.map +1 -0
  27. package/dist/infrastructure/index.js +26 -0
  28. package/dist/infrastructure/index.js.map +1 -0
  29. package/dist/infrastructure/metrics.d.ts +104 -0
  30. package/dist/infrastructure/metrics.d.ts.map +1 -0
  31. package/dist/infrastructure/metrics.js +291 -0
  32. package/dist/infrastructure/metrics.js.map +1 -0
  33. package/dist/infrastructure/rate-limiter.d.ts +59 -0
  34. package/dist/infrastructure/rate-limiter.d.ts.map +1 -0
  35. package/dist/infrastructure/rate-limiter.js +132 -0
  36. package/dist/infrastructure/rate-limiter.js.map +1 -0
  37. package/dist/infrastructure/response-builder.d.ts +104 -0
  38. package/dist/infrastructure/response-builder.d.ts.map +1 -0
  39. package/dist/infrastructure/response-builder.js +207 -0
  40. package/dist/infrastructure/response-builder.js.map +1 -0
  41. package/dist/infrastructure/token-estimator.d.ts +48 -0
  42. package/dist/infrastructure/token-estimator.d.ts.map +1 -0
  43. package/dist/infrastructure/token-estimator.js +131 -0
  44. package/dist/infrastructure/token-estimator.js.map +1 -0
  45. package/dist/server.d.ts.map +1 -1
  46. package/dist/server.js +1074 -17
  47. package/dist/server.js.map +1 -1
  48. package/dist/tools/detail/code-examples.d.ts +33 -0
  49. package/dist/tools/detail/code-examples.d.ts.map +1 -0
  50. package/dist/tools/detail/code-examples.js +126 -0
  51. package/dist/tools/detail/code-examples.js.map +1 -0
  52. package/dist/tools/detail/dna-check.d.ts +32 -0
  53. package/dist/tools/detail/dna-check.d.ts.map +1 -0
  54. package/dist/tools/detail/dna-check.js +231 -0
  55. package/dist/tools/detail/dna-check.js.map +1 -0
  56. package/dist/tools/detail/dna-profile.d.ts +37 -0
  57. package/dist/tools/detail/dna-profile.d.ts.map +1 -0
  58. package/dist/tools/detail/dna-profile.js +101 -0
  59. package/dist/tools/detail/dna-profile.js.map +1 -0
  60. package/dist/tools/detail/file-patterns.d.ts +39 -0
  61. package/dist/tools/detail/file-patterns.d.ts.map +1 -0
  62. package/dist/tools/detail/file-patterns.js +103 -0
  63. package/dist/tools/detail/file-patterns.js.map +1 -0
  64. package/dist/tools/detail/files-list.d.ts +30 -0
  65. package/dist/tools/detail/files-list.d.ts.map +1 -0
  66. package/dist/tools/detail/files-list.js +99 -0
  67. package/dist/tools/detail/files-list.js.map +1 -0
  68. package/dist/tools/detail/impact-analysis.d.ts +53 -0
  69. package/dist/tools/detail/impact-analysis.d.ts.map +1 -0
  70. package/dist/tools/detail/impact-analysis.js +130 -0
  71. package/dist/tools/detail/impact-analysis.js.map +1 -0
  72. package/dist/tools/detail/index.d.ts +23 -0
  73. package/dist/tools/detail/index.d.ts.map +1 -0
  74. package/dist/tools/detail/index.js +200 -0
  75. package/dist/tools/detail/index.js.map +1 -0
  76. package/dist/tools/detail/pattern-get.d.ts +45 -0
  77. package/dist/tools/detail/pattern-get.d.ts.map +1 -0
  78. package/dist/tools/detail/pattern-get.js +87 -0
  79. package/dist/tools/detail/pattern-get.js.map +1 -0
  80. package/dist/tools/detail/reachability.d.ts +60 -0
  81. package/dist/tools/detail/reachability.d.ts.map +1 -0
  82. package/dist/tools/detail/reachability.js +168 -0
  83. package/dist/tools/detail/reachability.js.map +1 -0
  84. package/dist/tools/discovery/capabilities.d.ts +28 -0
  85. package/dist/tools/discovery/capabilities.d.ts.map +1 -0
  86. package/dist/tools/discovery/capabilities.js +112 -0
  87. package/dist/tools/discovery/capabilities.js.map +1 -0
  88. package/dist/tools/discovery/index.d.ts +13 -0
  89. package/dist/tools/discovery/index.d.ts.map +1 -0
  90. package/dist/tools/discovery/index.js +30 -0
  91. package/dist/tools/discovery/index.js.map +1 -0
  92. package/dist/tools/discovery/projects.d.ts +26 -0
  93. package/dist/tools/discovery/projects.d.ts.map +1 -0
  94. package/dist/tools/discovery/projects.js +210 -0
  95. package/dist/tools/discovery/projects.js.map +1 -0
  96. package/dist/tools/discovery/status.d.ts +42 -0
  97. package/dist/tools/discovery/status.d.ts.map +1 -0
  98. package/dist/tools/discovery/status.js +157 -0
  99. package/dist/tools/discovery/status.js.map +1 -0
  100. package/dist/tools/exploration/contracts-list.d.ts +35 -0
  101. package/dist/tools/exploration/contracts-list.d.ts.map +1 -0
  102. package/dist/tools/exploration/contracts-list.js +106 -0
  103. package/dist/tools/exploration/contracts-list.js.map +1 -0
  104. package/dist/tools/exploration/files-list.d.ts +29 -0
  105. package/dist/tools/exploration/files-list.d.ts.map +1 -0
  106. package/dist/tools/exploration/files-list.js +94 -0
  107. package/dist/tools/exploration/files-list.js.map +1 -0
  108. package/dist/tools/exploration/index.d.ts +17 -0
  109. package/dist/tools/exploration/index.d.ts.map +1 -0
  110. package/dist/tools/exploration/index.js +126 -0
  111. package/dist/tools/exploration/index.js.map +1 -0
  112. package/dist/tools/exploration/patterns-list.d.ts +40 -0
  113. package/dist/tools/exploration/patterns-list.d.ts.map +1 -0
  114. package/dist/tools/exploration/patterns-list.js +172 -0
  115. package/dist/tools/exploration/patterns-list.js.map +1 -0
  116. package/dist/tools/exploration/security-summary.d.ts +49 -0
  117. package/dist/tools/exploration/security-summary.d.ts.map +1 -0
  118. package/dist/tools/exploration/security-summary.js +111 -0
  119. package/dist/tools/exploration/security-summary.js.map +1 -0
  120. package/dist/tools/exploration/trends.d.ts +49 -0
  121. package/dist/tools/exploration/trends.d.ts.map +1 -0
  122. package/dist/tools/exploration/trends.js +147 -0
  123. package/dist/tools/exploration/trends.js.map +1 -0
  124. package/dist/tools/index.d.ts +13 -0
  125. package/dist/tools/index.d.ts.map +1 -0
  126. package/dist/tools/index.js +13 -0
  127. package/dist/tools/index.js.map +1 -0
  128. package/dist/tools/orchestration/context.d.ts +72 -0
  129. package/dist/tools/orchestration/context.d.ts.map +1 -0
  130. package/dist/tools/orchestration/context.js +499 -0
  131. package/dist/tools/orchestration/context.js.map +1 -0
  132. package/dist/tools/orchestration/index.d.ts +11 -0
  133. package/dist/tools/orchestration/index.d.ts.map +1 -0
  134. package/dist/tools/orchestration/index.js +56 -0
  135. package/dist/tools/orchestration/index.js.map +1 -0
  136. package/dist/tools/registry.d.ts +41 -0
  137. package/dist/tools/registry.d.ts.map +1 -0
  138. package/dist/tools/registry.js +64 -0
  139. package/dist/tools/registry.js.map +1 -0
  140. package/package.json +3 -3
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Token Estimator
3
+ *
4
+ * Estimates token count for responses to stay within context budgets.
5
+ * Uses heuristics based on typical tokenization patterns.
6
+ */
7
+ export class TokenEstimator {
8
+ // Average characters per token for different content types
9
+ static CHARS_PER_TOKEN = {
10
+ english: 4,
11
+ code: 3.5,
12
+ json: 3,
13
+ mixed: 3.5,
14
+ };
15
+ // JSON structure overhead multiplier
16
+ static JSON_OVERHEAD = 1.15;
17
+ /**
18
+ * Estimate tokens for a string
19
+ */
20
+ estimate(text) {
21
+ if (!text)
22
+ return 0;
23
+ const contentType = this.detectContentType(text);
24
+ const charsPerToken = TokenEstimator.CHARS_PER_TOKEN[contentType];
25
+ // Base token count
26
+ let tokens = Math.ceil(text.length / charsPerToken);
27
+ // Add overhead for JSON structure
28
+ if (contentType === 'json') {
29
+ tokens = Math.ceil(tokens * TokenEstimator.JSON_OVERHEAD);
30
+ }
31
+ return tokens;
32
+ }
33
+ /**
34
+ * Estimate with detailed breakdown
35
+ */
36
+ estimateDetailed(text) {
37
+ if (!text) {
38
+ return { tokens: 0, confidence: 'high' };
39
+ }
40
+ const contentType = this.detectContentType(text);
41
+ const charsPerToken = TokenEstimator.CHARS_PER_TOKEN[contentType];
42
+ // Count different parts
43
+ const whitespaceCount = (text.match(/\s/g) || []).length;
44
+ const structureCount = (text.match(/[{}\[\]":,]/g) || []).length;
45
+ const textCount = text.length - whitespaceCount - structureCount;
46
+ // Estimate each part
47
+ const textTokens = Math.ceil(textCount / charsPerToken);
48
+ const structureTokens = Math.ceil(structureCount / 2); // Structure chars are often single tokens
49
+ const whitespaceTokens = Math.ceil(whitespaceCount / 10); // Whitespace is heavily compressed
50
+ const totalTokens = textTokens + structureTokens + whitespaceTokens;
51
+ // Confidence based on content type
52
+ const confidence = contentType === 'json' ? 'high' :
53
+ contentType === 'code' ? 'medium' : 'medium';
54
+ return {
55
+ tokens: totalTokens,
56
+ confidence,
57
+ breakdown: {
58
+ text: textTokens,
59
+ structure: structureTokens,
60
+ whitespace: whitespaceTokens,
61
+ },
62
+ };
63
+ }
64
+ /**
65
+ * Estimate tokens for an object (will be JSON serialized)
66
+ */
67
+ estimateObject(obj) {
68
+ return this.estimate(JSON.stringify(obj, null, 2));
69
+ }
70
+ /**
71
+ * Check if content fits within a token budget
72
+ */
73
+ fitsInBudget(text, budget) {
74
+ return this.estimate(text) <= budget;
75
+ }
76
+ /**
77
+ * Truncate text to fit within token budget
78
+ */
79
+ truncateToFit(text, budget, suffix = '...[truncated]') {
80
+ const currentTokens = this.estimate(text);
81
+ if (currentTokens <= budget) {
82
+ return text;
83
+ }
84
+ // Estimate how much to keep
85
+ const ratio = budget / currentTokens;
86
+ const targetLength = Math.floor(text.length * ratio * 0.9); // 10% safety margin
87
+ const suffixLength = suffix.length;
88
+ return text.slice(0, targetLength - suffixLength) + suffix;
89
+ }
90
+ /**
91
+ * Detect content type for better estimation
92
+ */
93
+ detectContentType(text) {
94
+ // Check for JSON
95
+ if (text.trim().startsWith('{') || text.trim().startsWith('[')) {
96
+ try {
97
+ JSON.parse(text);
98
+ return 'json';
99
+ }
100
+ catch {
101
+ // Not valid JSON, continue checking
102
+ }
103
+ }
104
+ // Check for code indicators
105
+ const codeIndicators = [
106
+ /function\s+\w+/,
107
+ /const\s+\w+\s*=/,
108
+ /class\s+\w+/,
109
+ /import\s+.*from/,
110
+ /def\s+\w+\(/,
111
+ /=>/,
112
+ ];
113
+ const codeMatches = codeIndicators.filter(pattern => pattern.test(text)).length;
114
+ if (codeMatches >= 2) {
115
+ return 'code';
116
+ }
117
+ // Check JSON-like structure ratio
118
+ const structureChars = (text.match(/[{}\[\]":,]/g) || []).length;
119
+ const structureRatio = structureChars / text.length;
120
+ if (structureRatio > 0.1) {
121
+ return 'json';
122
+ }
123
+ // Default to mixed
124
+ return 'mixed';
125
+ }
126
+ }
127
+ /**
128
+ * Singleton instance for convenience
129
+ */
130
+ export const tokenEstimator = new TokenEstimator();
131
+ //# sourceMappingURL=token-estimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-estimator.js","sourceRoot":"","sources":["../../src/infrastructure/token-estimator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,OAAO,cAAc;IACzB,2DAA2D;IACnD,MAAM,CAAU,eAAe,GAAG;QACxC,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,GAAG;KACX,CAAC;IAEF,qCAAqC;IAC7B,MAAM,CAAU,aAAa,GAAG,IAAI,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAElE,mBAAmB;QACnB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;QAEpD,kCAAkC;QAClC,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAY;QAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAElE,wBAAwB;QACxB,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACzD,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,eAAe,GAAG,cAAc,CAAC;QAEjE,qBAAqB;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,0CAA0C;QACjG,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,mCAAmC;QAE7F,MAAM,WAAW,GAAG,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAC;QAEpE,mCAAmC;QACnC,MAAM,UAAU,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACjC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEhE,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,UAAU;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,eAAe;gBAC1B,UAAU,EAAE,gBAAgB;aAC7B;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,GAAY;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY,EAAE,MAAc;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,IAAY,EAAE,MAAc,EAAE,SAAiB,gBAAgB;QAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,aAAa,IAAI,MAAM,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4BAA4B;QAC5B,MAAM,KAAK,GAAG,MAAM,GAAG,aAAa,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,oBAAoB;QAChF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAEnC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC,GAAG,MAAM,CAAC;IAC7D,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAY;QACpC,iBAAiB;QACjB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjB,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,oCAAoC;YACtC,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,MAAM,cAAc,GAAG;YACrB,gBAAgB;YAChB,iBAAiB;YACjB,aAAa;YACb,iBAAiB;YACjB,aAAa;YACb,IAAI;SACL,CAAC;QAEF,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAChF,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,kCAAkC;QAClC,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;QAEpD,IAAI,cAAc,GAAG,GAAG,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,mBAAmB;QACnB,OAAO,OAAO,CAAC;IACjB,CAAC;;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA8BnE,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAqYD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA4JnE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAsCnE,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AA8eD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAwLnE"}