midas-mcp 2.3.0 → 2.6.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 (47) hide show
  1. package/dist/analyzer.d.ts +15 -0
  2. package/dist/analyzer.d.ts.map +1 -1
  3. package/dist/analyzer.js +183 -67
  4. package/dist/analyzer.js.map +1 -1
  5. package/dist/context.d.ts +55 -0
  6. package/dist/context.d.ts.map +1 -0
  7. package/dist/context.js +336 -0
  8. package/dist/context.js.map +1 -0
  9. package/dist/security.d.ts +29 -0
  10. package/dist/security.d.ts.map +1 -0
  11. package/dist/security.js +72 -0
  12. package/dist/security.js.map +1 -0
  13. package/dist/server.d.ts.map +1 -1
  14. package/dist/server.js +13 -2
  15. package/dist/server.js.map +1 -1
  16. package/dist/tests/edge-cases.test.js +4 -2
  17. package/dist/tests/edge-cases.test.js.map +1 -1
  18. package/dist/tests/journal.test.js +4 -1
  19. package/dist/tests/journal.test.js.map +1 -1
  20. package/dist/tests/security.test.d.ts +2 -0
  21. package/dist/tests/security.test.d.ts.map +1 -0
  22. package/dist/tests/security.test.js +105 -0
  23. package/dist/tests/security.test.js.map +1 -0
  24. package/dist/tools/index.d.ts +1 -0
  25. package/dist/tools/index.d.ts.map +1 -1
  26. package/dist/tools/index.js +2 -0
  27. package/dist/tools/index.js.map +1 -1
  28. package/dist/tools/journal.d.ts.map +1 -1
  29. package/dist/tools/journal.js +15 -10
  30. package/dist/tools/journal.js.map +1 -1
  31. package/dist/tools/phase.d.ts +1 -0
  32. package/dist/tools/phase.d.ts.map +1 -1
  33. package/dist/tools/phase.js +55 -16
  34. package/dist/tools/phase.js.map +1 -1
  35. package/dist/tools/tornado.d.ts +2 -2
  36. package/dist/tools/verify.d.ts +137 -0
  37. package/dist/tools/verify.d.ts.map +1 -0
  38. package/dist/tools/verify.js +151 -0
  39. package/dist/tools/verify.js.map +1 -0
  40. package/dist/tracker.d.ts +87 -0
  41. package/dist/tracker.d.ts.map +1 -1
  42. package/dist/tracker.js +608 -47
  43. package/dist/tracker.js.map +1 -1
  44. package/dist/tui.d.ts.map +1 -1
  45. package/dist/tui.js +184 -44
  46. package/dist/tui.js.map +1 -1
  47. package/package.json +2 -3
@@ -0,0 +1,151 @@
1
+ import { z } from 'zod';
2
+ import { runVerificationGates, getGatesStatus, maybeAutoAdvance, recordError, getSmartPromptSuggestion, markAnalysisComplete, } from '../tracker.js';
3
+ import { sanitizePath } from '../security.js';
4
+ import { loadState } from '../state/phase.js';
5
+ import { logEvent } from '../events.js';
6
+ // ============================================================================
7
+ // midas_verify - Run verification gates (build, test, lint)
8
+ // ============================================================================
9
+ export const verifySchema = z.object({
10
+ projectPath: z.string().optional().describe('Path to project root'),
11
+ runBuild: z.boolean().optional().describe('Run build/compile (default: true)'),
12
+ runTests: z.boolean().optional().describe('Run tests (default: true)'),
13
+ runLint: z.boolean().optional().describe('Run linter (default: true)'),
14
+ });
15
+ export function verify(input) {
16
+ const projectPath = sanitizePath(input.projectPath);
17
+ // Run all gates
18
+ const gates = runVerificationGates(projectPath);
19
+ const status = getGatesStatus(projectPath);
20
+ // Log event for TUI sync
21
+ logEvent(projectPath, {
22
+ type: 'tool_called',
23
+ tool: 'midas_verify',
24
+ data: { allPass: status.allPass, failing: status.failing },
25
+ });
26
+ // Record any errors to error memory
27
+ if (gates.compileError) {
28
+ recordError(projectPath, gates.compileError, undefined, undefined);
29
+ }
30
+ if (gates.testError) {
31
+ recordError(projectPath, gates.testError, undefined, undefined);
32
+ }
33
+ // Maybe auto-advance if all gates pass
34
+ let autoAdvanced;
35
+ if (status.allPass) {
36
+ const advance = maybeAutoAdvance(projectPath);
37
+ if (advance.advanced) {
38
+ autoAdvanced = {
39
+ from: `${advance.from.phase}:${'step' in advance.from ? advance.from.step : ''}`,
40
+ to: `${advance.to.phase}:${'step' in advance.to ? advance.to.step : ''}`,
41
+ };
42
+ }
43
+ }
44
+ // Determine next step
45
+ let nextStep;
46
+ if (status.allPass) {
47
+ if (autoAdvanced) {
48
+ nextStep = `All gates pass! Auto-advanced from ${autoAdvanced.from} to ${autoAdvanced.to}.`;
49
+ }
50
+ else {
51
+ nextStep = 'All gates pass. Ready to continue or advance phase.';
52
+ }
53
+ }
54
+ else {
55
+ nextStep = `Fix: ${status.failing.join(', ')}`;
56
+ if (gates.compileError) {
57
+ nextStep += `\n\nBuild error:\n${gates.compileError.slice(0, 300)}`;
58
+ }
59
+ if (gates.testError) {
60
+ nextStep += `\n\nTest error:\n${gates.testError.slice(0, 300)}`;
61
+ }
62
+ }
63
+ return {
64
+ gates,
65
+ allPass: status.allPass,
66
+ failing: status.failing,
67
+ nextStep,
68
+ autoAdvanced,
69
+ };
70
+ }
71
+ // ============================================================================
72
+ // midas_smart_suggest - Get intelligent next prompt suggestion
73
+ // ============================================================================
74
+ export const smartSuggestSchema = z.object({
75
+ projectPath: z.string().optional().describe('Path to project root'),
76
+ });
77
+ export function smartSuggest(input) {
78
+ const projectPath = sanitizePath(input.projectPath);
79
+ const suggestion = getSmartPromptSuggestion(projectPath);
80
+ const state = loadState(projectPath);
81
+ // Mark that we've done an analysis
82
+ markAnalysisComplete(projectPath);
83
+ return {
84
+ ...suggestion,
85
+ phase: state.current.phase,
86
+ step: 'step' in state.current ? state.current.step : undefined,
87
+ };
88
+ }
89
+ // ============================================================================
90
+ // midas_set_task - Set current task focus
91
+ // ============================================================================
92
+ import { setTaskFocus, updateTaskPhase, clearTaskFocus } from '../tracker.js';
93
+ export const setTaskSchema = z.object({
94
+ projectPath: z.string().optional().describe('Path to project root'),
95
+ description: z.string().describe('What you are working on'),
96
+ relatedFiles: z.array(z.string()).optional().describe('Files related to this task'),
97
+ });
98
+ export function setTask(input) {
99
+ const projectPath = sanitizePath(input.projectPath);
100
+ return setTaskFocus(projectPath, input.description, input.relatedFiles);
101
+ }
102
+ export const updateTaskSchema = z.object({
103
+ projectPath: z.string().optional().describe('Path to project root'),
104
+ phase: z.enum(['plan', 'implement', 'verify', 'reflect']).describe('Current phase of the task'),
105
+ });
106
+ export function updateTask(input) {
107
+ const projectPath = sanitizePath(input.projectPath);
108
+ updateTaskPhase(projectPath, input.phase);
109
+ return { success: true };
110
+ }
111
+ export const clearTaskSchema = z.object({
112
+ projectPath: z.string().optional().describe('Path to project root'),
113
+ });
114
+ export function clearTask(input) {
115
+ const projectPath = sanitizePath(input.projectPath);
116
+ clearTaskFocus(projectPath);
117
+ return { success: true };
118
+ }
119
+ // ============================================================================
120
+ // midas_record_error - Record an error for tracking
121
+ // ============================================================================
122
+ import { recordFixAttempt, getStuckErrors } from '../tracker.js';
123
+ export const recordErrorSchema = z.object({
124
+ projectPath: z.string().optional().describe('Path to project root'),
125
+ error: z.string().describe('The error message'),
126
+ file: z.string().optional().describe('File where error occurred'),
127
+ line: z.number().optional().describe('Line number'),
128
+ });
129
+ export function recordErrorTool(input) {
130
+ const projectPath = sanitizePath(input.projectPath);
131
+ return recordError(projectPath, input.error, input.file, input.line);
132
+ }
133
+ export const recordFixSchema = z.object({
134
+ projectPath: z.string().optional().describe('Path to project root'),
135
+ errorId: z.string().describe('ID of the error'),
136
+ approach: z.string().describe('What fix was attempted'),
137
+ worked: z.boolean().describe('Did the fix work?'),
138
+ });
139
+ export function recordFix(input) {
140
+ const projectPath = sanitizePath(input.projectPath);
141
+ recordFixAttempt(projectPath, input.errorId, input.approach, input.worked);
142
+ return { success: true };
143
+ }
144
+ export const getStuckSchema = z.object({
145
+ projectPath: z.string().optional().describe('Path to project root'),
146
+ });
147
+ export function getStuck(input) {
148
+ const projectPath = sanitizePath(input.projectPath);
149
+ return getStuckErrors(projectPath);
150
+ }
151
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/tools/verify.ts"],"names":[],"mappings":"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"}
package/dist/tracker.d.ts CHANGED
@@ -16,6 +16,51 @@ export interface ToolCall {
16
16
  timestamp: number;
17
17
  args?: Record<string, unknown>;
18
18
  }
19
+ export interface VerificationGates {
20
+ compiles: boolean | null;
21
+ compiledAt: number | null;
22
+ compileError?: string;
23
+ testsPass: boolean | null;
24
+ testedAt: number | null;
25
+ testError?: string;
26
+ failedTests?: number;
27
+ lintsPass: boolean | null;
28
+ lintedAt: number | null;
29
+ lintErrors?: number;
30
+ }
31
+ export interface ErrorMemory {
32
+ id: string;
33
+ error: string;
34
+ file?: string;
35
+ line?: number;
36
+ firstSeen: number;
37
+ lastSeen: number;
38
+ fixAttempts: Array<{
39
+ approach: string;
40
+ timestamp: number;
41
+ worked: boolean;
42
+ }>;
43
+ resolved: boolean;
44
+ }
45
+ export interface TaskFocus {
46
+ description: string;
47
+ startedAt: string;
48
+ relatedFiles: string[];
49
+ phase: 'plan' | 'implement' | 'verify' | 'reflect';
50
+ attempts: number;
51
+ }
52
+ export interface SuggestionHistory {
53
+ timestamp: number;
54
+ suggestion: string;
55
+ accepted: boolean;
56
+ userPrompt?: string;
57
+ rejectionReason?: string;
58
+ }
59
+ export interface FileSnapshot {
60
+ path: string;
61
+ mtime: number;
62
+ size: number;
63
+ }
19
64
  export interface TrackerState {
20
65
  lastUpdated: string;
21
66
  recentFiles: FileActivity[];
@@ -29,10 +74,52 @@ export interface TrackerState {
29
74
  };
30
75
  inferredPhase: Phase;
31
76
  confidence: number;
77
+ gates: VerificationGates;
78
+ errorMemory: ErrorMemory[];
79
+ currentTask: TaskFocus | null;
80
+ suggestionHistory: SuggestionHistory[];
81
+ fileSnapshot: FileSnapshot[];
82
+ lastAnalysis: number | null;
32
83
  }
33
84
  export declare function loadTracker(projectPath: string): TrackerState;
34
85
  export declare function saveTracker(projectPath: string, tracker: TrackerState): void;
35
86
  export declare function trackToolCall(projectPath: string, tool: string, args?: Record<string, unknown>): void;
87
+ export declare function runVerificationGates(projectPath: string): VerificationGates;
88
+ export declare function getGatesStatus(projectPath: string): {
89
+ allPass: boolean;
90
+ failing: string[];
91
+ stale: boolean;
92
+ };
93
+ export declare function recordError(projectPath: string, error: string, file?: string, line?: number): ErrorMemory;
94
+ export declare function recordFixAttempt(projectPath: string, errorId: string, approach: string, worked: boolean): void;
95
+ export declare function getUnresolvedErrors(projectPath: string): ErrorMemory[];
96
+ export declare function getStuckErrors(projectPath: string): ErrorMemory[];
97
+ export declare function setTaskFocus(projectPath: string, description: string, relatedFiles?: string[]): TaskFocus;
98
+ export declare function updateTaskPhase(projectPath: string, phase: TaskFocus['phase']): void;
99
+ export declare function clearTaskFocus(projectPath: string): void;
100
+ export declare function recordSuggestion(projectPath: string, suggestion: string): void;
101
+ export declare function recordSuggestionOutcome(projectPath: string, accepted: boolean, userPrompt?: string, rejectionReason?: string): void;
102
+ export declare function getSuggestionAcceptanceRate(projectPath: string): number;
103
+ export declare function takeFileSnapshot(projectPath: string): FileSnapshot[];
104
+ export declare function detectFileChanges(projectPath: string): {
105
+ changed: string[];
106
+ added: string[];
107
+ deleted: string[];
108
+ };
109
+ export declare function hasFilesChangedSinceAnalysis(projectPath: string): boolean;
110
+ export declare function markAnalysisComplete(projectPath: string): void;
111
+ export declare function getSmartPromptSuggestion(projectPath: string): {
112
+ prompt: string;
113
+ reason: string;
114
+ explanation: string;
115
+ priority: 'critical' | 'high' | 'normal' | 'low';
116
+ context?: string;
117
+ };
118
+ export declare function maybeAutoAdvance(projectPath: string): {
119
+ advanced: boolean;
120
+ from: Phase;
121
+ to: Phase;
122
+ };
36
123
  export declare function scanRecentFiles(projectPath: string, since?: number): FileActivity[];
37
124
  export declare function getGitActivity(projectPath: string): GitActivity | null;
38
125
  export declare function checkCompletionSignals(projectPath: string): TrackerState['completionSignals'];
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAKpE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC5B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE;QACjB,UAAU,EAAE,OAAO,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,aAAa,EAAE,KAAK,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAaD,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAQ7D;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAI5E;AAkBD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAYrG;AAGD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CA8BnF;AAGD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA2BtE;AAGD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAqB7F;AA0BD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAiB/D;AAqDD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA2B9D"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}