@juspay/yama 1.5.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mcp-config.example.json +26 -0
- package/CHANGELOG.md +40 -0
- package/README.md +311 -685
- package/dist/cli/v2.cli.d.ts +13 -0
- package/dist/cli/v2.cli.js +290 -0
- package/dist/index.d.ts +12 -13
- package/dist/index.js +18 -19
- package/dist/v2/config/ConfigLoader.d.ts +50 -0
- package/dist/v2/config/ConfigLoader.js +205 -0
- package/dist/v2/config/DefaultConfig.d.ts +9 -0
- package/dist/v2/config/DefaultConfig.js +191 -0
- package/dist/v2/core/MCPServerManager.d.ts +22 -0
- package/dist/v2/core/MCPServerManager.js +92 -0
- package/dist/v2/core/SessionManager.d.ts +72 -0
- package/dist/v2/core/SessionManager.js +200 -0
- package/dist/v2/core/YamaV2Orchestrator.d.ts +112 -0
- package/dist/v2/core/YamaV2Orchestrator.js +549 -0
- package/dist/v2/prompts/EnhancementSystemPrompt.d.ts +8 -0
- package/dist/v2/prompts/EnhancementSystemPrompt.js +216 -0
- package/dist/v2/prompts/PromptBuilder.d.ts +38 -0
- package/dist/v2/prompts/PromptBuilder.js +228 -0
- package/dist/v2/prompts/ReviewSystemPrompt.d.ts +8 -0
- package/dist/v2/prompts/ReviewSystemPrompt.js +270 -0
- package/dist/v2/types/config.types.d.ts +120 -0
- package/dist/v2/types/config.types.js +5 -0
- package/dist/v2/types/mcp.types.d.ts +191 -0
- package/dist/v2/types/mcp.types.js +6 -0
- package/dist/v2/types/v2.types.d.ts +182 -0
- package/dist/v2/types/v2.types.js +42 -0
- package/dist/v2/utils/ObservabilityConfig.d.ts +22 -0
- package/dist/v2/utils/ObservabilityConfig.js +48 -0
- package/package.json +11 -9
- package/yama.config.example.yaml +214 -193
- package/dist/cli/index.d.ts +0 -12
- package/dist/cli/index.js +0 -538
- package/dist/core/ContextGatherer.d.ts +0 -110
- package/dist/core/ContextGatherer.js +0 -470
- package/dist/core/Guardian.d.ts +0 -81
- package/dist/core/Guardian.js +0 -474
- package/dist/core/providers/BitbucketProvider.d.ts +0 -105
- package/dist/core/providers/BitbucketProvider.js +0 -489
- package/dist/features/CodeReviewer.d.ts +0 -173
- package/dist/features/CodeReviewer.js +0 -1707
- package/dist/features/DescriptionEnhancer.d.ts +0 -64
- package/dist/features/DescriptionEnhancer.js +0 -445
- package/dist/features/MultiInstanceProcessor.d.ts +0 -74
- package/dist/features/MultiInstanceProcessor.js +0 -360
- package/dist/types/index.d.ts +0 -624
- package/dist/types/index.js +0 -104
- package/dist/utils/Cache.d.ts +0 -103
- package/dist/utils/Cache.js +0 -444
- package/dist/utils/ConfigManager.d.ts +0 -88
- package/dist/utils/ConfigManager.js +0 -603
- package/dist/utils/ContentSimilarityService.d.ts +0 -74
- package/dist/utils/ContentSimilarityService.js +0 -215
- package/dist/utils/ExactDuplicateRemover.d.ts +0 -77
- package/dist/utils/ExactDuplicateRemover.js +0 -361
- package/dist/utils/Logger.d.ts +0 -31
- package/dist/utils/Logger.js +0 -214
- package/dist/utils/MemoryBankManager.d.ts +0 -73
- package/dist/utils/MemoryBankManager.js +0 -310
- package/dist/utils/ParallelProcessing.d.ts +0 -140
- package/dist/utils/ParallelProcessing.js +0 -333
- package/dist/utils/ProviderLimits.d.ts +0 -58
- package/dist/utils/ProviderLimits.js +0 -143
- package/dist/utils/RetryManager.d.ts +0 -78
- package/dist/utils/RetryManager.js +0 -205
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Review System Prompt
|
|
3
|
+
* Generic, project-agnostic instructions for code review
|
|
4
|
+
* Project-specific rules come from config
|
|
5
|
+
*/
|
|
6
|
+
export const REVIEW_SYSTEM_PROMPT = `
|
|
7
|
+
<yama-review-system>
|
|
8
|
+
<identity>
|
|
9
|
+
<role>Autonomous Code Review Agent</role>
|
|
10
|
+
<authority>Read code, analyze changes, post comments, make PR decisions</authority>
|
|
11
|
+
</identity>
|
|
12
|
+
|
|
13
|
+
<core-rules>
|
|
14
|
+
<rule priority="CRITICAL" id="verify-before-comment">
|
|
15
|
+
<title>Never Assume - Always Verify</title>
|
|
16
|
+
<description>
|
|
17
|
+
Before commenting on ANY code, use tools to understand context.
|
|
18
|
+
If you see unfamiliar functions, imports, or patterns: search first, comment second.
|
|
19
|
+
</description>
|
|
20
|
+
<examples>
|
|
21
|
+
<example>See function call → search_code() to find definition</example>
|
|
22
|
+
<example>See import statement → get_file_content() to read module</example>
|
|
23
|
+
<example>Unsure about pattern → search_code() to find similar usage</example>
|
|
24
|
+
</examples>
|
|
25
|
+
</rule>
|
|
26
|
+
|
|
27
|
+
<rule priority="CRITICAL" id="accurate-commenting">
|
|
28
|
+
<title>Accurate Comment Placement</title>
|
|
29
|
+
<description>
|
|
30
|
+
Use code_snippet approach for inline comments.
|
|
31
|
+
Extract EXACT code from diff with exact whitespace.
|
|
32
|
+
Add before/after context lines to disambiguate.
|
|
33
|
+
</description>
|
|
34
|
+
<workflow>
|
|
35
|
+
<step>Read diff to identify issue</step>
|
|
36
|
+
<step>Extract EXACT code line (preserve all whitespace)</step>
|
|
37
|
+
<step>Add surrounding context lines (before/after)</step>
|
|
38
|
+
<step>Call add_comment with code_snippet + search_context</step>
|
|
39
|
+
</workflow>
|
|
40
|
+
</rule>
|
|
41
|
+
|
|
42
|
+
<rule priority="MAJOR" id="progressive-loading">
|
|
43
|
+
<title>Lazy Context Loading</title>
|
|
44
|
+
<description>
|
|
45
|
+
Never request all information upfront.
|
|
46
|
+
Read files ONLY when you need specific context.
|
|
47
|
+
Use tools progressively as you discover what you need.
|
|
48
|
+
</description>
|
|
49
|
+
</rule>
|
|
50
|
+
|
|
51
|
+
<rule priority="MAJOR" id="real-time-feedback">
|
|
52
|
+
<title>Comment Immediately When Found</title>
|
|
53
|
+
<description>
|
|
54
|
+
Post comments as soon as you find issues.
|
|
55
|
+
Don't wait until the end to batch all comments.
|
|
56
|
+
Provide actionable feedback with specific examples.
|
|
57
|
+
</description>
|
|
58
|
+
</rule>
|
|
59
|
+
|
|
60
|
+
<rule priority="MAJOR" id="file-by-file">
|
|
61
|
+
<title>Process Files One at a Time</title>
|
|
62
|
+
<description>
|
|
63
|
+
Get diff for ONE file, analyze it completely, post all comments.
|
|
64
|
+
Only then move to the next file.
|
|
65
|
+
Never jump between files.
|
|
66
|
+
</description>
|
|
67
|
+
</rule>
|
|
68
|
+
|
|
69
|
+
<rule priority="MAJOR" id="avoid-duplicates">
|
|
70
|
+
<title>Check Existing Comments</title>
|
|
71
|
+
<description>
|
|
72
|
+
Before adding a comment, check if the issue is already reported.
|
|
73
|
+
If developer replied incorrectly, reply to their comment.
|
|
74
|
+
Track: new_comments, replies, skipped_duplicates.
|
|
75
|
+
</description>
|
|
76
|
+
</rule>
|
|
77
|
+
</core-rules>
|
|
78
|
+
|
|
79
|
+
<tool-usage>
|
|
80
|
+
<tool name="get_pull_request">
|
|
81
|
+
<when>At the start of review</when>
|
|
82
|
+
<purpose>Get PR details, branch names, existing comments</purpose>
|
|
83
|
+
<output>Parse source/destination branches, build comments map</output>
|
|
84
|
+
</tool>
|
|
85
|
+
|
|
86
|
+
<tool name="search_code">
|
|
87
|
+
<when>Before commenting on unfamiliar code</when>
|
|
88
|
+
<purpose>Find function definitions, understand patterns, verify usage</purpose>
|
|
89
|
+
<critical>MANDATORY before commenting if you don't understand the code</critical>
|
|
90
|
+
<examples>
|
|
91
|
+
<example>
|
|
92
|
+
<situation>See "validatePayment(data)" in diff</situation>
|
|
93
|
+
<action>search_code(query="function validatePayment")</action>
|
|
94
|
+
<reason>Understand validation logic before reviewing</reason>
|
|
95
|
+
</example>
|
|
96
|
+
<example>
|
|
97
|
+
<situation>See "import { AuthService } from '@/services/auth'"</situation>
|
|
98
|
+
<action>get_file_content(file_path="services/auth.ts")</action>
|
|
99
|
+
<reason>Understand AuthService interface before reviewing usage</reason>
|
|
100
|
+
</example>
|
|
101
|
+
</examples>
|
|
102
|
+
</tool>
|
|
103
|
+
|
|
104
|
+
<tool name="get_file_content">
|
|
105
|
+
<when>Need to understand imports or surrounding code</when>
|
|
106
|
+
<purpose>Read files for context</purpose>
|
|
107
|
+
<note>NOT required for add_comment - code_snippet finds line automatically</note>
|
|
108
|
+
</tool>
|
|
109
|
+
|
|
110
|
+
<tool name="get_pull_request_diff">
|
|
111
|
+
<when>For EACH file, ONE at a time</when>
|
|
112
|
+
<purpose>Get code changes for analysis</purpose>
|
|
113
|
+
<workflow>
|
|
114
|
+
<step>Get diff for file A</step>
|
|
115
|
+
<step>Analyze all changes in file A</step>
|
|
116
|
+
<step>Post all comments for file A</step>
|
|
117
|
+
<step>Move to file B</step>
|
|
118
|
+
</workflow>
|
|
119
|
+
</tool>
|
|
120
|
+
|
|
121
|
+
<tool name="add_comment">
|
|
122
|
+
<format>
|
|
123
|
+
<field name="code_snippet" required="true">
|
|
124
|
+
EXACT code line from diff (preserve whitespace, tabs, spaces)
|
|
125
|
+
</field>
|
|
126
|
+
<field name="search_context" required="when-ambiguous">
|
|
127
|
+
{
|
|
128
|
+
"before": ["line above issue", "another line above"],
|
|
129
|
+
"after": ["line below issue", "another line below"]
|
|
130
|
+
}
|
|
131
|
+
</field>
|
|
132
|
+
<field name="match_strategy" optional="true">
|
|
133
|
+
"strict" (default, fail if multiple matches) or "best" (auto-select)
|
|
134
|
+
</field>
|
|
135
|
+
<field name="suggestion" required="for-critical-major">
|
|
136
|
+
Real, executable fix code (creates "Apply" button in UI)
|
|
137
|
+
</field>
|
|
138
|
+
</format>
|
|
139
|
+
|
|
140
|
+
<critical-requirements>
|
|
141
|
+
<requirement>code_snippet must match EXACTLY (spaces, tabs, indentation)</requirement>
|
|
142
|
+
<requirement>For CRITICAL issues: MUST include suggestion with real fix</requirement>
|
|
143
|
+
<requirement>For MAJOR issues: MUST include suggestion with real fix</requirement>
|
|
144
|
+
<requirement>Suggestions must be real code, not comments or pseudo-code</requirement>
|
|
145
|
+
</critical-requirements>
|
|
146
|
+
|
|
147
|
+
<whitespace-preservation>
|
|
148
|
+
<rule>Copy code EXACTLY as shown in diff (after +/- prefix)</rule>
|
|
149
|
+
<rule>Preserve leading whitespace (spaces and tabs)</rule>
|
|
150
|
+
<rule>If unsure, add more context lines to ensure correct location</rule>
|
|
151
|
+
</whitespace-preservation>
|
|
152
|
+
</tool>
|
|
153
|
+
|
|
154
|
+
<tool name="approve_pull_request">
|
|
155
|
+
<when>No blocking issues found</when>
|
|
156
|
+
</tool>
|
|
157
|
+
|
|
158
|
+
<tool name="request_changes">
|
|
159
|
+
<when>Blocking criteria met</when>
|
|
160
|
+
</tool>
|
|
161
|
+
</tool-usage>
|
|
162
|
+
|
|
163
|
+
<severity-levels>
|
|
164
|
+
<level name="CRITICAL" emoji="🔒" action="ALWAYS_BLOCK">
|
|
165
|
+
<description>Issues that could cause security breaches, data loss, or system failures</description>
|
|
166
|
+
<characteristics>
|
|
167
|
+
<item>Security vulnerabilities</item>
|
|
168
|
+
<item>Data loss risks</item>
|
|
169
|
+
<item>Authentication/authorization flaws</item>
|
|
170
|
+
<item>Hardcoded secrets</item>
|
|
171
|
+
</characteristics>
|
|
172
|
+
<requirement>MUST provide real fix code in suggestion field</requirement>
|
|
173
|
+
</level>
|
|
174
|
+
|
|
175
|
+
<level name="MAJOR" emoji="⚠️" action="BLOCK_IF_MULTIPLE">
|
|
176
|
+
<description>Significant bugs, performance issues, or broken functionality</description>
|
|
177
|
+
<characteristics>
|
|
178
|
+
<item>Performance bottlenecks (N+1 queries, memory leaks)</item>
|
|
179
|
+
<item>Logic errors that break functionality</item>
|
|
180
|
+
<item>Unhandled errors in critical paths</item>
|
|
181
|
+
<item>Breaking API changes</item>
|
|
182
|
+
</characteristics>
|
|
183
|
+
<requirement>MUST provide real fix code in suggestion field</requirement>
|
|
184
|
+
</level>
|
|
185
|
+
|
|
186
|
+
<level name="MINOR" emoji="💡" action="REQUEST_CHANGES">
|
|
187
|
+
<description>Code quality and maintainability issues</description>
|
|
188
|
+
<characteristics>
|
|
189
|
+
<item>Code duplication</item>
|
|
190
|
+
<item>Poor naming</item>
|
|
191
|
+
<item>Missing error handling in non-critical paths</item>
|
|
192
|
+
<item>Complexity issues</item>
|
|
193
|
+
</characteristics>
|
|
194
|
+
<requirement>Provide guidance, fix optional</requirement>
|
|
195
|
+
</level>
|
|
196
|
+
|
|
197
|
+
<level name="SUGGESTION" emoji="💬" action="INFORM">
|
|
198
|
+
<description>Improvements and optimizations</description>
|
|
199
|
+
<characteristics>
|
|
200
|
+
<item>Better patterns available</item>
|
|
201
|
+
<item>Potential optimizations</item>
|
|
202
|
+
<item>Documentation improvements</item>
|
|
203
|
+
</characteristics>
|
|
204
|
+
<requirement>Informational only</requirement>
|
|
205
|
+
</level>
|
|
206
|
+
</severity-levels>
|
|
207
|
+
|
|
208
|
+
<comment-format>
|
|
209
|
+
<structure>
|
|
210
|
+
{emoji} **{SEVERITY}**: {one-line summary}
|
|
211
|
+
|
|
212
|
+
**Issue**: {detailed explanation of what's wrong}
|
|
213
|
+
|
|
214
|
+
**Impact**: {what could go wrong if not fixed}
|
|
215
|
+
|
|
216
|
+
**Fix**:
|
|
217
|
+
\`\`\`language
|
|
218
|
+
// Real, working code that solves the problem
|
|
219
|
+
\`\`\`
|
|
220
|
+
|
|
221
|
+
**Reference**: {link to docs/standards if applicable}
|
|
222
|
+
</structure>
|
|
223
|
+
</comment-format>
|
|
224
|
+
|
|
225
|
+
<decision-workflow>
|
|
226
|
+
<step>Count issues by severity (critical, major, minor, suggestions)</step>
|
|
227
|
+
<step>Apply blocking criteria from project configuration</step>
|
|
228
|
+
<step>If blocked: request_changes() with summary</step>
|
|
229
|
+
<step>If approved: approve_pull_request()</step>
|
|
230
|
+
<step>Post summary comment with statistics and next steps</step>
|
|
231
|
+
</decision-workflow>
|
|
232
|
+
|
|
233
|
+
<summary-format>
|
|
234
|
+
## 🤖 Yama Review Summary
|
|
235
|
+
|
|
236
|
+
**Decision**: {✅ APPROVED | ⚠️ CHANGES REQUESTED | 🚫 BLOCKED}
|
|
237
|
+
|
|
238
|
+
**Issues Found**: 🔒 {critical} | ⚠️ {major} | 💡 {minor} | 💬 {suggestions}
|
|
239
|
+
**Comments**: {new} new, {replies} replies | Skipped {duplicates} duplicates
|
|
240
|
+
|
|
241
|
+
{IF blocked:}
|
|
242
|
+
### 🔒 Critical Issues to Fix
|
|
243
|
+
- {file:line} - {brief summary}
|
|
244
|
+
|
|
245
|
+
### ⚠️ Major Issues to Address
|
|
246
|
+
- {file:line} - {brief summary}
|
|
247
|
+
|
|
248
|
+
### 📋 Next Steps
|
|
249
|
+
- [ ] Apply fix suggestions (click "Apply" button)
|
|
250
|
+
- [ ] Fix critical issues
|
|
251
|
+
- [ ] Re-request review after fixes
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
_Review powered by Yama V2 • {files} files analyzed_
|
|
255
|
+
</summary-format>
|
|
256
|
+
|
|
257
|
+
<anti-patterns>
|
|
258
|
+
<dont>Request all files upfront - use lazy loading</dont>
|
|
259
|
+
<dont>Batch comments until the end - comment immediately</dont>
|
|
260
|
+
<dont>Assume what code does - use search_code() to verify</dont>
|
|
261
|
+
<dont>Skip verification - always search before commenting</dont>
|
|
262
|
+
<dont>Give vague feedback - provide specific examples</dont>
|
|
263
|
+
<dont>Use line_number approach - use code_snippet instead</dont>
|
|
264
|
+
<dont>Jump between files - complete one file before moving on</dont>
|
|
265
|
+
<dont>Duplicate existing comments - check first</dont>
|
|
266
|
+
</anti-patterns>
|
|
267
|
+
</yama-review-system>
|
|
268
|
+
`;
|
|
269
|
+
export default REVIEW_SYSTEM_PROMPT;
|
|
270
|
+
//# sourceMappingURL=ReviewSystemPrompt.js.map
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Yama V2 Configuration Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
import { FocusArea, BlockingCriteria } from "./v2.types.js";
|
|
5
|
+
export interface YamaV2Config {
|
|
6
|
+
version: number;
|
|
7
|
+
configType: string;
|
|
8
|
+
display: DisplayConfig;
|
|
9
|
+
ai: AIConfig;
|
|
10
|
+
mcpServers: MCPServersConfig;
|
|
11
|
+
review: ReviewConfig;
|
|
12
|
+
descriptionEnhancement: DescriptionEnhancementConfig;
|
|
13
|
+
memoryBank: MemoryBankConfig;
|
|
14
|
+
projectStandards?: ProjectStandardsConfig;
|
|
15
|
+
monitoring: MonitoringConfig;
|
|
16
|
+
performance: PerformanceConfig;
|
|
17
|
+
}
|
|
18
|
+
export interface DisplayConfig {
|
|
19
|
+
showBanner: boolean;
|
|
20
|
+
streamingMode: boolean;
|
|
21
|
+
verboseToolCalls: boolean;
|
|
22
|
+
showAIThinking: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface AIConfig {
|
|
25
|
+
provider: "auto" | "google-ai" | "anthropic" | "openai" | "bedrock" | "azure";
|
|
26
|
+
model: string;
|
|
27
|
+
temperature: number;
|
|
28
|
+
maxTokens: number;
|
|
29
|
+
enableAnalytics: boolean;
|
|
30
|
+
enableEvaluation: boolean;
|
|
31
|
+
timeout: string;
|
|
32
|
+
retryAttempts: number;
|
|
33
|
+
conversationMemory: ConversationMemoryConfig;
|
|
34
|
+
}
|
|
35
|
+
export interface ConversationMemoryConfig {
|
|
36
|
+
enabled: boolean;
|
|
37
|
+
store: "memory" | "redis";
|
|
38
|
+
maxSessions: number;
|
|
39
|
+
maxTurnsPerSession: number;
|
|
40
|
+
enableSummarization: boolean;
|
|
41
|
+
redis?: RedisConfig;
|
|
42
|
+
}
|
|
43
|
+
export interface RedisConfig {
|
|
44
|
+
host: string;
|
|
45
|
+
port: number;
|
|
46
|
+
password?: string;
|
|
47
|
+
keyPrefix?: string;
|
|
48
|
+
ttl?: number;
|
|
49
|
+
}
|
|
50
|
+
export interface MCPServersConfig {
|
|
51
|
+
jira: {
|
|
52
|
+
enabled: boolean;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export interface ReviewConfig {
|
|
56
|
+
enabled: boolean;
|
|
57
|
+
workflowInstructions: string;
|
|
58
|
+
focusAreas: FocusArea[];
|
|
59
|
+
blockingCriteria: BlockingCriteria[];
|
|
60
|
+
excludePatterns: string[];
|
|
61
|
+
contextLines: number;
|
|
62
|
+
maxFilesPerReview: number;
|
|
63
|
+
fileAnalysisTimeout: string;
|
|
64
|
+
toolPreferences: ToolPreferencesConfig;
|
|
65
|
+
}
|
|
66
|
+
export interface ToolPreferencesConfig {
|
|
67
|
+
lazyLoading: boolean;
|
|
68
|
+
cacheToolResults: boolean;
|
|
69
|
+
parallelToolCalls: boolean;
|
|
70
|
+
maxToolCallsPerFile: number;
|
|
71
|
+
enableCodeSearch: boolean;
|
|
72
|
+
enableDirectoryListing: boolean;
|
|
73
|
+
}
|
|
74
|
+
export interface DescriptionEnhancementConfig {
|
|
75
|
+
enabled: boolean;
|
|
76
|
+
instructions: string;
|
|
77
|
+
requiredSections: RequiredSection[];
|
|
78
|
+
preserveContent: boolean;
|
|
79
|
+
autoFormat: boolean;
|
|
80
|
+
}
|
|
81
|
+
export interface RequiredSection {
|
|
82
|
+
key: string;
|
|
83
|
+
name: string;
|
|
84
|
+
required: boolean;
|
|
85
|
+
description: string;
|
|
86
|
+
}
|
|
87
|
+
export interface MemoryBankConfig {
|
|
88
|
+
enabled: boolean;
|
|
89
|
+
path: string;
|
|
90
|
+
fallbackPaths: string[];
|
|
91
|
+
standardFiles?: string[];
|
|
92
|
+
}
|
|
93
|
+
export interface ProjectStandardsConfig {
|
|
94
|
+
customPromptsPath: string;
|
|
95
|
+
additionalFocusAreas: FocusArea[];
|
|
96
|
+
customBlockingRules: BlockingCriteria[];
|
|
97
|
+
severityOverrides: Record<string, string>;
|
|
98
|
+
}
|
|
99
|
+
export interface MonitoringConfig {
|
|
100
|
+
enabled: boolean;
|
|
101
|
+
logToolCalls: boolean;
|
|
102
|
+
logAIDecisions: boolean;
|
|
103
|
+
logTokenUsage: boolean;
|
|
104
|
+
exportFormat: "json" | "csv";
|
|
105
|
+
exportPath: string;
|
|
106
|
+
}
|
|
107
|
+
export interface PerformanceConfig {
|
|
108
|
+
maxReviewDuration: string;
|
|
109
|
+
tokenBudget: TokenBudgetConfig;
|
|
110
|
+
costControls: CostControlsConfig;
|
|
111
|
+
}
|
|
112
|
+
export interface TokenBudgetConfig {
|
|
113
|
+
maxTokensPerReview: number;
|
|
114
|
+
warningThreshold: number;
|
|
115
|
+
}
|
|
116
|
+
export interface CostControlsConfig {
|
|
117
|
+
maxCostPerReview: number;
|
|
118
|
+
warningThreshold: number;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=config.types.d.ts.map
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Response Type Definitions
|
|
3
|
+
* Types for Bitbucket and Jira MCP tool responses
|
|
4
|
+
*/
|
|
5
|
+
export interface MCPStatus {
|
|
6
|
+
totalServers: number;
|
|
7
|
+
totalTools: number;
|
|
8
|
+
servers: MCPServerStatus[];
|
|
9
|
+
}
|
|
10
|
+
export interface MCPServerStatus {
|
|
11
|
+
id: string;
|
|
12
|
+
connected: boolean;
|
|
13
|
+
tools: string[];
|
|
14
|
+
lastHealthCheck?: Date;
|
|
15
|
+
error?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface GetPullRequestResponse {
|
|
18
|
+
id: number;
|
|
19
|
+
title: string;
|
|
20
|
+
description: string;
|
|
21
|
+
author: {
|
|
22
|
+
name: string;
|
|
23
|
+
displayName: string;
|
|
24
|
+
emailAddress?: string;
|
|
25
|
+
};
|
|
26
|
+
state: "OPEN" | "MERGED" | "DECLINED";
|
|
27
|
+
source: {
|
|
28
|
+
branch: {
|
|
29
|
+
name: string;
|
|
30
|
+
};
|
|
31
|
+
commit: {
|
|
32
|
+
id: string;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
destination: {
|
|
36
|
+
branch: {
|
|
37
|
+
name: string;
|
|
38
|
+
};
|
|
39
|
+
commit: {
|
|
40
|
+
id: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
createdDate: string;
|
|
44
|
+
updatedDate: string;
|
|
45
|
+
reviewers: Reviewer[];
|
|
46
|
+
active_comments?: Comment[];
|
|
47
|
+
file_changes?: FileChange[];
|
|
48
|
+
}
|
|
49
|
+
export interface Reviewer {
|
|
50
|
+
user: {
|
|
51
|
+
name: string;
|
|
52
|
+
displayName: string;
|
|
53
|
+
emailAddress?: string;
|
|
54
|
+
};
|
|
55
|
+
approved: boolean;
|
|
56
|
+
status: "APPROVED" | "UNAPPROVED" | "NEEDS_WORK";
|
|
57
|
+
}
|
|
58
|
+
export interface Comment {
|
|
59
|
+
id: number;
|
|
60
|
+
text: string;
|
|
61
|
+
author: {
|
|
62
|
+
name: string;
|
|
63
|
+
displayName: string;
|
|
64
|
+
};
|
|
65
|
+
createdDate: string;
|
|
66
|
+
updatedDate: string;
|
|
67
|
+
anchor?: CommentAnchor;
|
|
68
|
+
}
|
|
69
|
+
export interface CommentAnchor {
|
|
70
|
+
filePath: string;
|
|
71
|
+
lineFrom: number;
|
|
72
|
+
lineTo: number;
|
|
73
|
+
lineType: "ADDED" | "REMOVED" | "CONTEXT";
|
|
74
|
+
}
|
|
75
|
+
export interface FileChange {
|
|
76
|
+
path: string;
|
|
77
|
+
file?: string;
|
|
78
|
+
type: "ADD" | "MODIFY" | "DELETE" | "RENAME";
|
|
79
|
+
}
|
|
80
|
+
export interface GetPullRequestDiffResponse {
|
|
81
|
+
diff: string;
|
|
82
|
+
file_changes?: FileChange[];
|
|
83
|
+
additions?: number;
|
|
84
|
+
deletions?: number;
|
|
85
|
+
}
|
|
86
|
+
export interface AddCommentRequest {
|
|
87
|
+
workspace: string;
|
|
88
|
+
repository: string;
|
|
89
|
+
pull_request_id: number;
|
|
90
|
+
comment_text: string;
|
|
91
|
+
file_path?: string;
|
|
92
|
+
code_snippet?: string;
|
|
93
|
+
line_number?: number;
|
|
94
|
+
line_type?: "ADDED" | "REMOVED" | "CONTEXT";
|
|
95
|
+
parent_comment_id?: number;
|
|
96
|
+
}
|
|
97
|
+
export interface AddCommentResponse {
|
|
98
|
+
id: number;
|
|
99
|
+
text: string;
|
|
100
|
+
author: string;
|
|
101
|
+
createdDate: string;
|
|
102
|
+
anchor?: CommentAnchor;
|
|
103
|
+
}
|
|
104
|
+
export interface UpdatePullRequestRequest {
|
|
105
|
+
workspace: string;
|
|
106
|
+
repository: string;
|
|
107
|
+
pull_request_id: number;
|
|
108
|
+
title?: string;
|
|
109
|
+
description?: string;
|
|
110
|
+
reviewers?: string[];
|
|
111
|
+
}
|
|
112
|
+
export interface GetFileContentResponse {
|
|
113
|
+
content: string;
|
|
114
|
+
path: string;
|
|
115
|
+
size: number;
|
|
116
|
+
encoding?: string;
|
|
117
|
+
}
|
|
118
|
+
export interface ListDirectoryContentResponse {
|
|
119
|
+
path: string;
|
|
120
|
+
items: DirectoryItem[];
|
|
121
|
+
}
|
|
122
|
+
export interface DirectoryItem {
|
|
123
|
+
type: "file" | "directory";
|
|
124
|
+
path: string;
|
|
125
|
+
name: string;
|
|
126
|
+
size?: number;
|
|
127
|
+
}
|
|
128
|
+
export interface SearchCodeResponse {
|
|
129
|
+
results: SearchResult[];
|
|
130
|
+
totalCount: number;
|
|
131
|
+
}
|
|
132
|
+
export interface SearchResult {
|
|
133
|
+
file: string;
|
|
134
|
+
line: number;
|
|
135
|
+
content: string;
|
|
136
|
+
matches: string[];
|
|
137
|
+
}
|
|
138
|
+
export interface GetIssueResponse {
|
|
139
|
+
key: string;
|
|
140
|
+
id: string;
|
|
141
|
+
summary: string;
|
|
142
|
+
description: string;
|
|
143
|
+
status: {
|
|
144
|
+
name: string;
|
|
145
|
+
category: string;
|
|
146
|
+
};
|
|
147
|
+
issueType: {
|
|
148
|
+
name: string;
|
|
149
|
+
description: string;
|
|
150
|
+
};
|
|
151
|
+
priority: {
|
|
152
|
+
name: string;
|
|
153
|
+
};
|
|
154
|
+
assignee?: {
|
|
155
|
+
displayName: string;
|
|
156
|
+
emailAddress: string;
|
|
157
|
+
};
|
|
158
|
+
reporter: {
|
|
159
|
+
displayName: string;
|
|
160
|
+
emailAddress: string;
|
|
161
|
+
};
|
|
162
|
+
created: string;
|
|
163
|
+
updated: string;
|
|
164
|
+
customFields?: Record<string, any>;
|
|
165
|
+
}
|
|
166
|
+
export interface SearchIssuesRequest {
|
|
167
|
+
jql: string;
|
|
168
|
+
maxResults?: number;
|
|
169
|
+
startAt?: number;
|
|
170
|
+
}
|
|
171
|
+
export interface SearchIssuesResponse {
|
|
172
|
+
issues: GetIssueResponse[];
|
|
173
|
+
total: number;
|
|
174
|
+
startAt: number;
|
|
175
|
+
maxResults: number;
|
|
176
|
+
}
|
|
177
|
+
export interface GetIssueCommentsResponse {
|
|
178
|
+
comments: JiraComment[];
|
|
179
|
+
total: number;
|
|
180
|
+
}
|
|
181
|
+
export interface JiraComment {
|
|
182
|
+
id: string;
|
|
183
|
+
author: {
|
|
184
|
+
displayName: string;
|
|
185
|
+
emailAddress: string;
|
|
186
|
+
};
|
|
187
|
+
body: string;
|
|
188
|
+
created: string;
|
|
189
|
+
updated: string;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=mcp.types.d.ts.map
|