mcp-adr-analysis-server 2.7.30 → 2.7.32

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 (34) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/package.json +1 -1
  3. package/dist/src/resources/adrs-review-resource.d.ts +0 -82
  4. package/dist/src/resources/adrs-review-resource.d.ts.map +0 -1
  5. package/dist/src/resources/adrs-review-resource.js +0 -160
  6. package/dist/src/resources/adrs-review-resource.js.map +0 -1
  7. package/dist/src/resources/architectural-context-resource.d.ts +0 -95
  8. package/dist/src/resources/architectural-context-resource.d.ts.map +0 -1
  9. package/dist/src/resources/architectural-context-resource.js +0 -428
  10. package/dist/src/resources/architectural-context-resource.js.map +0 -1
  11. package/dist/src/resources/memory-expand-resource.d.ts +0 -90
  12. package/dist/src/resources/memory-expand-resource.d.ts.map +0 -1
  13. package/dist/src/resources/memory-expand-resource.js +0 -176
  14. package/dist/src/resources/memory-expand-resource.js.map +0 -1
  15. package/dist/src/utils/bootstrap-task-integration.d.ts +0 -214
  16. package/dist/src/utils/bootstrap-task-integration.d.ts.map +0 -1
  17. package/dist/src/utils/bootstrap-task-integration.js +0 -365
  18. package/dist/src/utils/bootstrap-task-integration.js.map +0 -1
  19. package/dist/src/utils/index.d.ts +0 -9
  20. package/dist/src/utils/index.d.ts.map +0 -1
  21. package/dist/src/utils/index.js +0 -13
  22. package/dist/src/utils/index.js.map +0 -1
  23. package/dist/src/utils/interactive-approval.d.ts +0 -63
  24. package/dist/src/utils/interactive-approval.d.ts.map +0 -1
  25. package/dist/src/utils/interactive-approval.js +0 -445
  26. package/dist/src/utils/interactive-approval.js.map +0 -1
  27. package/dist/src/utils/llm-artifact-detector.d.ts +0 -76
  28. package/dist/src/utils/llm-artifact-detector.d.ts.map +0 -1
  29. package/dist/src/utils/llm-artifact-detector.js +0 -426
  30. package/dist/src/utils/llm-artifact-detector.js.map +0 -1
  31. package/dist/src/utils/location-filter.d.ts +0 -104
  32. package/dist/src/utils/location-filter.d.ts.map +0 -1
  33. package/dist/src/utils/location-filter.js +0 -593
  34. package/dist/src/utils/location-filter.js.map +0 -1
@@ -1,365 +0,0 @@
1
- /**
2
- * MCP Tasks Integration for Bootstrap Validation Loop
3
- *
4
- * This module provides standardized task tracking for the bootstrap validation loop tool,
5
- * implementing ADR-020: MCP Tasks Integration Strategy.
6
- *
7
- * Key features:
8
- * - Creates MCP Tasks for bootstrap operations
9
- * - Tracks progress through phases (platform_detection, infrastructure, application, validation)
10
- * - Supports cancellation between phases
11
- * - Migrates from custom executionId to standardized taskId
12
- *
13
- * @see ADR-020: MCP Tasks Integration Strategy
14
- * @see https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/tasks
15
- */
16
- import { getTaskManager } from './task-manager.js';
17
- import { createComponentLogger } from './enhanced-logging.js';
18
- const logger = createComponentLogger('BootstrapTaskIntegration');
19
- /**
20
- * Bootstrap phases that map to MCP Task phases
21
- */
22
- export const BOOTSTRAP_PHASES = [
23
- 'platform_detection',
24
- 'infrastructure_setup',
25
- 'application_deployment',
26
- 'validation',
27
- 'cleanup',
28
- ];
29
- /**
30
- * Bootstrap Task Manager - Provides MCP Tasks integration for bootstrap validation loop
31
- *
32
- * This class wraps the TaskManager to provide bootstrap-specific functionality:
33
- * - Creates tasks with bootstrap-specific phases
34
- * - Tracks iteration progress
35
- * - Supports cancellation checks between phases
36
- * - Converts between executionId and taskId patterns
37
- */
38
- export class BootstrapTaskManager {
39
- taskManager;
40
- activeContexts = new Map();
41
- constructor(taskManager) {
42
- this.taskManager = taskManager ?? getTaskManager();
43
- }
44
- /**
45
- * Initialize the bootstrap task manager
46
- */
47
- async initialize() {
48
- await this.taskManager.initialize();
49
- logger.info('BootstrapTaskManager initialized');
50
- }
51
- /**
52
- * Create a new bootstrap task
53
- *
54
- * @returns The created task and context
55
- */
56
- async createBootstrapTask(options) {
57
- const { projectPath, adrDirectory, maxIterations } = options;
58
- const task = await this.taskManager.createTask({
59
- type: 'bootstrap',
60
- tool: 'bootstrap_validation_loop',
61
- phases: [...BOOTSTRAP_PHASES],
62
- projectPath,
63
- adrDirectory,
64
- ttl: 1800000, // 30 minute TTL for bootstrap operations
65
- pollInterval: 2000, // 2 second poll interval
66
- });
67
- const context = {
68
- taskId: task.taskId,
69
- currentPhase: 'platform_detection',
70
- iteration: 0,
71
- maxIterations,
72
- cancelled: false,
73
- };
74
- this.activeContexts.set(task.taskId, context);
75
- logger.info('Bootstrap task created', {
76
- taskId: task.taskId,
77
- projectPath,
78
- maxIterations,
79
- });
80
- return { task, context };
81
- }
82
- /**
83
- * Get bootstrap task context
84
- */
85
- getContext(taskId) {
86
- return this.activeContexts.get(taskId);
87
- }
88
- /**
89
- * Start a bootstrap phase
90
- */
91
- async startPhase(taskId, phase, message) {
92
- const context = this.activeContexts.get(taskId);
93
- if (!context) {
94
- logger.warn('No context found for task', { taskId });
95
- return;
96
- }
97
- // Check for cancellation
98
- if (context.cancelled) {
99
- throw new Error('Task was cancelled');
100
- }
101
- context.currentPhase = phase;
102
- await this.taskManager.startPhase(taskId, phase);
103
- // Calculate overall progress based on phase
104
- const phaseIndex = BOOTSTRAP_PHASES.indexOf(phase);
105
- const phaseProgress = phaseIndex >= 0 ? Math.floor((phaseIndex / BOOTSTRAP_PHASES.length) * 100) : 0;
106
- await this.taskManager.updateProgress({
107
- taskId,
108
- progress: phaseProgress,
109
- phase,
110
- phaseProgress: 0,
111
- message: message ?? `Starting phase: ${phase}`,
112
- });
113
- logger.info('Bootstrap phase started', { taskId, phase, progress: phaseProgress });
114
- }
115
- /**
116
- * Update phase progress
117
- */
118
- async updatePhaseProgress(taskId, phase, phaseProgress, message) {
119
- const context = this.activeContexts.get(taskId);
120
- if (!context) {
121
- return;
122
- }
123
- // Calculate overall progress
124
- const phaseIndex = BOOTSTRAP_PHASES.indexOf(phase);
125
- const phaseFraction = 100 / BOOTSTRAP_PHASES.length;
126
- const baseProgress = phaseIndex * phaseFraction;
127
- const overallProgress = Math.floor(baseProgress + (phaseProgress / 100) * phaseFraction);
128
- await this.taskManager.updateProgress({
129
- taskId,
130
- progress: overallProgress,
131
- phase,
132
- phaseProgress,
133
- ...(message !== undefined && { message }),
134
- });
135
- }
136
- /**
137
- * Complete a bootstrap phase
138
- */
139
- async completePhase(taskId, phase, _message) {
140
- const context = this.activeContexts.get(taskId);
141
- if (!context) {
142
- return;
143
- }
144
- await this.taskManager.completePhase(taskId, phase);
145
- logger.info('Bootstrap phase completed', { taskId, phase });
146
- }
147
- /**
148
- * Fail a bootstrap phase
149
- */
150
- async failPhase(taskId, phase, error) {
151
- const context = this.activeContexts.get(taskId);
152
- if (!context) {
153
- return;
154
- }
155
- await this.taskManager.failPhase(taskId, phase, error);
156
- logger.warn('Bootstrap phase failed', { taskId, phase, error });
157
- }
158
- /**
159
- * Update iteration progress
160
- */
161
- async updateIteration(taskId, iteration) {
162
- const context = this.activeContexts.get(taskId);
163
- if (!context) {
164
- return;
165
- }
166
- context.iteration = iteration;
167
- await this.taskManager.updateProgress({
168
- taskId,
169
- progress: this.taskManager.getProgress(taskId) ?? 0,
170
- message: `Iteration ${iteration}/${context.maxIterations}`,
171
- });
172
- logger.info('Bootstrap iteration updated', {
173
- taskId,
174
- iteration,
175
- maxIterations: context.maxIterations,
176
- });
177
- }
178
- /**
179
- * Store platform detection result
180
- */
181
- async storePlatformDetection(taskId, platform, confidence) {
182
- const context = this.activeContexts.get(taskId);
183
- if (!context) {
184
- return;
185
- }
186
- context.platformDetected = platform;
187
- await this.taskManager.updateProgress({
188
- taskId,
189
- progress: 20, // Platform detection is ~20% of bootstrap
190
- message: `Platform detected: ${platform} (${(confidence * 100).toFixed(0)}% confidence)`,
191
- });
192
- logger.info('Platform detection stored', { taskId, platform, confidence });
193
- }
194
- /**
195
- * Store infrastructure result
196
- */
197
- async storeInfrastructureResult(taskId, result) {
198
- const context = this.activeContexts.get(taskId);
199
- if (!context) {
200
- return;
201
- }
202
- context.infrastructureResult = result;
203
- const progress = result.success ? 50 : 40;
204
- await this.taskManager.updateProgress({
205
- taskId,
206
- progress,
207
- message: result.success
208
- ? `Infrastructure setup complete (${result.executedTasks.length} tasks executed)`
209
- : `Infrastructure setup failed (${result.failedTasks.length} tasks failed)`,
210
- });
211
- logger.info('Infrastructure result stored', {
212
- taskId,
213
- success: result.success,
214
- executed: result.executedTasks.length,
215
- failed: result.failedTasks.length,
216
- });
217
- }
218
- /**
219
- * Check if task is cancelled
220
- */
221
- async isCancelled(taskId) {
222
- const context = this.activeContexts.get(taskId);
223
- if (!context) {
224
- return false;
225
- }
226
- // Check if task was cancelled externally
227
- const task = await this.taskManager.getTask(taskId);
228
- if (task?.status === 'cancelled') {
229
- context.cancelled = true;
230
- }
231
- return context.cancelled;
232
- }
233
- /**
234
- * Cancel a bootstrap task
235
- */
236
- async cancelTask(taskId, reason) {
237
- const context = this.activeContexts.get(taskId);
238
- if (context) {
239
- context.cancelled = true;
240
- }
241
- await this.taskManager.cancelTask(taskId, reason ?? 'Bootstrap cancelled by user');
242
- this.activeContexts.delete(taskId);
243
- logger.info('Bootstrap task cancelled', { taskId, reason });
244
- }
245
- /**
246
- * Complete a bootstrap task successfully
247
- */
248
- async completeTask(taskId, result) {
249
- await this.taskManager.completeTask(taskId, result);
250
- this.activeContexts.delete(taskId);
251
- logger.info('Bootstrap task completed', { taskId, success: result.success });
252
- }
253
- /**
254
- * Fail a bootstrap task
255
- */
256
- async failTask(taskId, error) {
257
- await this.taskManager.failTask(taskId, error);
258
- this.activeContexts.delete(taskId);
259
- logger.error('Bootstrap task failed', undefined, { taskId, error });
260
- }
261
- /**
262
- * Get task status
263
- */
264
- async getTaskStatus(taskId) {
265
- const task = await this.taskManager.getTask(taskId);
266
- const context = this.activeContexts.get(taskId);
267
- return { task, context };
268
- }
269
- }
270
- /**
271
- * Get the global BootstrapTaskManager instance
272
- */
273
- let globalBootstrapTaskManager = null;
274
- export function getBootstrapTaskManager() {
275
- if (!globalBootstrapTaskManager) {
276
- globalBootstrapTaskManager = new BootstrapTaskManager();
277
- }
278
- return globalBootstrapTaskManager;
279
- }
280
- /**
281
- * Reset the global BootstrapTaskManager (for testing)
282
- */
283
- export async function resetBootstrapTaskManager() {
284
- globalBootstrapTaskManager = null;
285
- }
286
- /**
287
- * Helper function to wrap bootstrap execution with task tracking
288
- *
289
- * This can be used by the bootstrap_validation_loop tool to automatically
290
- * track progress through MCP Tasks.
291
- *
292
- * @example
293
- * ```typescript
294
- * const result = await executeWithTaskTracking(
295
- * {
296
- * projectPath: '/path/to/project',
297
- * adrDirectory: 'docs/adrs',
298
- * targetEnvironment: 'development',
299
- * maxIterations: 5,
300
- * autoFix: true,
301
- * updateAdrsWithLearnings: true,
302
- * },
303
- * async (tracker) => {
304
- * // Platform detection phase
305
- * await tracker.startPhase('platform_detection');
306
- * const platform = await detectPlatform();
307
- * await tracker.storePlatformDetection(platform.name, platform.confidence);
308
- * await tracker.completePhase('platform_detection');
309
- *
310
- * // Infrastructure phase
311
- * await tracker.startPhase('infrastructure_setup');
312
- * const infraResult = await runInfrastructure();
313
- * await tracker.storeInfrastructureResult(infraResult);
314
- * await tracker.completePhase('infrastructure_setup');
315
- *
316
- * // Return final result
317
- * return { success: true, iterations: 3 };
318
- * }
319
- * );
320
- * ```
321
- */
322
- export async function executeWithTaskTracking(options, executor) {
323
- const btm = getBootstrapTaskManager();
324
- await btm.initialize();
325
- const { task, context } = await btm.createBootstrapTask(options);
326
- const taskId = task.taskId;
327
- // Create a tracker interface for the executor
328
- const tracker = {
329
- taskId,
330
- startPhase: (phase, message) => btm.startPhase(taskId, phase, message),
331
- updatePhaseProgress: (phase, progress, message) => btm.updatePhaseProgress(taskId, phase, progress, message),
332
- completePhase: (phase, message) => btm.completePhase(taskId, phase, message),
333
- failPhase: (phase, error) => btm.failPhase(taskId, phase, error),
334
- updateIteration: iteration => btm.updateIteration(taskId, iteration),
335
- storePlatformDetection: (platform, confidence) => btm.storePlatformDetection(taskId, platform, confidence),
336
- storeInfrastructureResult: result => btm.storeInfrastructureResult(taskId, result),
337
- isCancelled: () => btm.isCancelled(taskId),
338
- getContext: () => context,
339
- };
340
- try {
341
- const resultData = await executor(tracker);
342
- const result = {
343
- success: resultData?.success ?? true,
344
- data: resultData,
345
- };
346
- await btm.completeTask(taskId, result);
347
- return { taskId, result };
348
- }
349
- catch (error) {
350
- const errorMessage = error instanceof Error ? error.message : String(error);
351
- await btm.failTask(taskId, errorMessage);
352
- return {
353
- taskId,
354
- result: {
355
- success: false,
356
- error: {
357
- code: 'BOOTSTRAP_ERROR',
358
- message: errorMessage,
359
- recoverable: false,
360
- },
361
- },
362
- };
363
- }
364
- }
365
- //# sourceMappingURL=bootstrap-task-integration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bootstrap-task-integration.js","sourceRoot":"","sources":["../../../src/utils/bootstrap-task-integration.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Utility modules index
3
- * Exports all utility functions for advanced prompting techniques
4
- */
5
- export { generateArchitecturalKnowledge, enhancePromptWithKnowledge, generateKnowledgeCacheKey, getAvailableDomainsInfo, validateKnowledgeGenerationInputs, getDefaultKnowledgeConfig, isDomainSupported, getSupportedDomains, getSupportedDepths, validateKnowledgeConfig, createDomainKnowledgeConfig, generateDomainKnowledge, } from './knowledge-generation.js';
6
- export { optimizePromptWithAPE, generatePromptCandidates, evaluatePromptPerformance, optimizeToolPrompt, generateAPECacheKey, getDefaultAPEConfig, validateAPEConfig, getSupportedGenerationStrategies, getSupportedEvaluationCriteria, getSupportedSelectionStrategies, createToolAPEConfig, } from './automatic-prompt-engineering.js';
7
- export { executeWithReflexion, retrieveRelevantMemories, persistReflexionMemory, getLearningProgress, enhancePromptWithMemories, generateReflexionCacheKey, getDefaultReflexionConfig, validateReflexionConfig, getSupportedMemoryTypes, getSupportedEvaluationCriteria as getSupportedReflexionEvaluationCriteria, getSupportedReflectionDepths, createToolReflexionConfig, generateMemoryId, calculateMemoryExpiration, createMemoryQuery, } from './reflexion.js';
8
- export { McpAdrError } from '../types/index.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,iCAAiC,EACjC,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,IAAI,uCAAuC,EACzE,4BAA4B,EAC5B,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Utility modules index
3
- * Exports all utility functions for advanced prompting techniques
4
- */
5
- // Knowledge Generation exports
6
- export { generateArchitecturalKnowledge, enhancePromptWithKnowledge, generateKnowledgeCacheKey, getAvailableDomainsInfo, validateKnowledgeGenerationInputs, getDefaultKnowledgeConfig, isDomainSupported, getSupportedDomains, getSupportedDepths, validateKnowledgeConfig, createDomainKnowledgeConfig, generateDomainKnowledge, } from './knowledge-generation.js';
7
- // Automatic Prompt Engineering exports
8
- export { optimizePromptWithAPE, generatePromptCandidates, evaluatePromptPerformance, optimizeToolPrompt, generateAPECacheKey, getDefaultAPEConfig, validateAPEConfig, getSupportedGenerationStrategies, getSupportedEvaluationCriteria, getSupportedSelectionStrategies, createToolAPEConfig, } from './automatic-prompt-engineering.js';
9
- // Reflexion exports
10
- export { executeWithReflexion, retrieveRelevantMemories, persistReflexionMemory, getLearningProgress, enhancePromptWithMemories, generateReflexionCacheKey, getDefaultReflexionConfig, validateReflexionConfig, getSupportedMemoryTypes, getSupportedEvaluationCriteria as getSupportedReflexionEvaluationCriteria, getSupportedReflectionDepths, createToolReflexionConfig, generateMemoryId, calculateMemoryExpiration, createMemoryQuery, } from './reflexion.js';
11
- // Configuration and error handling exports
12
- export { McpAdrError } from '../types/index.js';
13
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+BAA+B;AAC/B,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,iCAAiC,EACjC,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,uCAAuC;AACvC,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAE3C,oBAAoB;AACpB,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,IAAI,uCAAuC,EACzE,4BAA4B,EAC5B,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,2CAA2C;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,63 +0,0 @@
1
- /**
2
- * Interactive approval workflow for smart git push
3
- *
4
- * Handles user interaction for approving/rejecting files with issues
5
- */
6
- export interface ApprovalItem {
7
- filePath: string;
8
- issues: ApprovalIssue[];
9
- suggestions: string[];
10
- severity: 'error' | 'warning' | 'info';
11
- allowedInLocation: boolean;
12
- confidence: number;
13
- }
14
- export interface ApprovalIssue {
15
- type: 'sensitive-content' | 'llm-artifact' | 'location-violation' | 'temporary-file' | 'wrong-location';
16
- message: string;
17
- severity: 'error' | 'warning' | 'info';
18
- pattern?: string;
19
- line?: number;
20
- context?: string;
21
- }
22
- export interface ApprovalResult {
23
- approved: string[];
24
- rejected: string[];
25
- moved: Array<{
26
- from: string;
27
- to: string;
28
- }>;
29
- ignored: string[];
30
- actions: ApprovalAction[];
31
- proceed: boolean;
32
- }
33
- export interface ApprovalAction {
34
- type: 'approve' | 'reject' | 'move' | 'ignore' | 'edit';
35
- filePath: string;
36
- target?: string | undefined;
37
- reason?: string;
38
- }
39
- export interface ApprovalOptions {
40
- interactiveMode: boolean;
41
- autoApproveInfo: boolean;
42
- autoRejectErrors: boolean;
43
- dryRun: boolean;
44
- batchMode: boolean;
45
- timeout?: number;
46
- }
47
- /**
48
- * Main interactive approval function
49
- */
50
- export declare function handleInteractiveApproval(items: ApprovalItem[], options: ApprovalOptions): Promise<ApprovalResult>;
51
- /**
52
- * Batch approval for similar files
53
- */
54
- export declare function batchApproval(items: ApprovalItem[], action: ApprovalAction, criteria: {
55
- sameSeverity?: boolean;
56
- sameIssueType?: boolean;
57
- samePattern?: boolean;
58
- }): ApprovalAction[];
59
- /**
60
- * Save approval preferences for future use
61
- */
62
- export declare function saveApprovalPreferences(actions: ApprovalAction[], configPath?: string): Promise<void>;
63
- //# sourceMappingURL=interactive-approval.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive-approval.d.ts","sourceRoot":"","sources":["../../../src/utils/interactive-approval.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EACA,mBAAmB,GACnB,cAAc,GACd,oBAAoB,GACpB,gBAAgB,GAChB,gBAAgB,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAuEzB;AAuYD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EAAE,EACrB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE;IACR,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GACA,cAAc,EAAE,CAkClB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,GAAE,MAAmC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAkBf"}