midas-mcp 3.9.0 → 5.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 (70) hide show
  1. package/dist/analyzer.d.ts.map +1 -1
  2. package/dist/analyzer.js +70 -22
  3. package/dist/analyzer.js.map +1 -1
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +183 -1
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config.d.ts +6 -0
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +38 -0
  11. package/dist/config.js.map +1 -1
  12. package/dist/docs/WHY.md +168 -0
  13. package/dist/docs/examples/brainlift-example.md +87 -0
  14. package/dist/docs/examples/gameplan-example.md +230 -0
  15. package/dist/docs/examples/prd-example.md +170 -0
  16. package/dist/providers.d.ts +1 -0
  17. package/dist/providers.d.ts.map +1 -1
  18. package/dist/providers.js +61 -18
  19. package/dist/providers.js.map +1 -1
  20. package/dist/server.d.ts.map +1 -1
  21. package/dist/server.js +32 -2
  22. package/dist/server.js.map +1 -1
  23. package/dist/state/phase.d.ts +32 -0
  24. package/dist/state/phase.d.ts.map +1 -1
  25. package/dist/state/phase.js +25 -21
  26. package/dist/state/phase.js.map +1 -1
  27. package/dist/tools/analyze.d.ts +5 -0
  28. package/dist/tools/analyze.d.ts.map +1 -1
  29. package/dist/tools/analyze.js +21 -0
  30. package/dist/tools/analyze.js.map +1 -1
  31. package/dist/tools/cleanup.d.ts +53 -0
  32. package/dist/tools/cleanup.d.ts.map +1 -0
  33. package/dist/tools/cleanup.js +170 -0
  34. package/dist/tools/cleanup.js.map +1 -0
  35. package/dist/tools/examples.d.ts +30 -0
  36. package/dist/tools/examples.d.ts.map +1 -0
  37. package/dist/tools/examples.js +65 -0
  38. package/dist/tools/examples.js.map +1 -0
  39. package/dist/tools/hotfix.d.ts +69 -0
  40. package/dist/tools/hotfix.d.ts.map +1 -0
  41. package/dist/tools/hotfix.js +174 -0
  42. package/dist/tools/hotfix.js.map +1 -0
  43. package/dist/tools/index.d.ts +6 -1
  44. package/dist/tools/index.d.ts.map +1 -1
  45. package/dist/tools/index.js +11 -1
  46. package/dist/tools/index.js.map +1 -1
  47. package/dist/tools/scope.d.ts +50 -0
  48. package/dist/tools/scope.d.ts.map +1 -0
  49. package/dist/tools/scope.js +278 -0
  50. package/dist/tools/scope.js.map +1 -0
  51. package/dist/tools/validate-docs.d.ts +65 -0
  52. package/dist/tools/validate-docs.d.ts.map +1 -0
  53. package/dist/tools/validate-docs.js +196 -0
  54. package/dist/tools/validate-docs.js.map +1 -0
  55. package/dist/tools/verify.d.ts +22 -0
  56. package/dist/tools/verify.d.ts.map +1 -1
  57. package/dist/tools/verify.js +66 -0
  58. package/dist/tools/verify.js.map +1 -1
  59. package/dist/tracker.d.ts +36 -0
  60. package/dist/tracker.d.ts.map +1 -1
  61. package/dist/tracker.js +134 -0
  62. package/dist/tracker.js.map +1 -1
  63. package/dist/tui.d.ts.map +1 -1
  64. package/dist/tui.js +184 -42
  65. package/dist/tui.js.map +1 -1
  66. package/docs/WHY.md +168 -0
  67. package/docs/examples/brainlift-example.md +87 -0
  68. package/docs/examples/gameplan-example.md +230 -0
  69. package/docs/examples/prd-example.md +170 -0
  70. package/package.json +1 -1
@@ -53,50 +53,54 @@ export const PHASE_INFO = {
53
53
  EAGLE_SIGHT: {
54
54
  name: 'Plan',
55
55
  description: 'Plan before you build',
56
+ why: 'Code without context is just syntax. The AI doesn\'t know your domain, constraints, or users. You do.',
56
57
  color: 'yellow',
57
58
  steps: {
58
- IDEA: { name: 'Idea', action: 'Define the core idea', prompt: 'What problem? Who for? Why now?' },
59
- RESEARCH: { name: 'Research', action: 'Scan the landscape', prompt: 'What exists? What works? What fails?' },
60
- BRAINLIFT: { name: 'Brainlift', action: 'Document your edge', prompt: 'What do YOU know that AI doesn\'t?' },
61
- PRD: { name: 'PRD', action: 'Define requirements', prompt: 'Goals, non-goals, user stories, specs' },
62
- GAMEPLAN: { name: 'Gameplan', action: 'Plan the build', prompt: 'Tech stack, phases, tasks, risks' },
59
+ IDEA: { name: 'Idea', action: 'Define the core idea', prompt: 'What problem? Who for? Why now?', why: 'Most projects fail from solving the wrong problem. 10 min clarifying saves days of building wrong.' },
60
+ RESEARCH: { name: 'Research', action: 'Scan the landscape', prompt: 'What exists? What works? What fails?', why: 'Someone has solved 80% of this. Libraries, patterns, anti-patterns exist. Don\'t reinvent wheels.' },
61
+ BRAINLIFT: { name: 'Brainlift', action: 'Document your edge', prompt: 'What do YOU know that AI doesn\'t?', why: 'AI read the internet. You have specific context it doesn\'t. Capture what makes YOUR project different.' },
62
+ PRD: { name: 'PRD', action: 'Define requirements', prompt: 'Goals, non-goals, user stories, specs', why: '"I\'ll know it when I see it" means you\'ll never finish. A PRD defines the finish line.' },
63
+ GAMEPLAN: { name: 'Gameplan', action: 'Plan the build', prompt: 'Tech stack, phases, tasks, risks', why: 'Some things depend on other things. Sequence work so you\'re never blocked waiting for yourself.' },
63
64
  },
64
65
  },
65
66
  BUILD: {
66
67
  name: 'Build',
67
68
  description: 'Write code that works',
69
+ why: 'Jumping straight to code means hours of debugging. Each step reduces the blast radius of mistakes.',
68
70
  color: 'blue',
69
71
  steps: {
70
- RULES: { name: 'Rules', action: 'Read and understand user rules', prompt: 'Load .cursorrules, understand constraints and patterns' },
71
- INDEX: { name: 'Index', action: 'Index the codebase', prompt: 'Understand architecture, folder structure, key files' },
72
- READ: { name: 'Read', action: 'Read specific files', prompt: 'Read implementation files needed for current task' },
73
- RESEARCH: { name: 'Research', action: 'Research docs and APIs', prompt: 'Look up documentation, best practices, examples' },
74
- IMPLEMENT: { name: 'Implement', action: 'Write code with tests', prompt: 'Write test first, then implement to make it pass' },
75
- TEST: { name: 'Test', action: 'Run and fix tests', prompt: 'Run all tests, fix failures, add edge cases' },
76
- DEBUG: { name: 'Debug', action: 'Debug with Tornado cycle', prompt: 'Research + Logs + Tests to solve issues' },
72
+ RULES: { name: 'Rules', action: 'Read and understand user rules', prompt: 'Load .cursorrules, understand constraints and patterns', why: 'Every project has conventions. Reading first prevents "works but doesn\'t fit" code.' },
73
+ INDEX: { name: 'Index', action: 'Index the codebase', prompt: 'Understand architecture, folder structure, key files', why: 'You can\'t extend what you don\'t understand. Prevents duplicate implementations.' },
74
+ READ: { name: 'Read', action: 'Read specific files', prompt: 'Read implementation files needed for current task', why: 'Indexing shows structure. Reading shows implementation. Understand before touching.' },
75
+ RESEARCH: { name: 'Research', action: 'Research docs and APIs', prompt: 'Look up documentation, best practices, examples', why: 'The right library can turn 200 lines into 5. Research is cheap; debugging is expensive.' },
76
+ IMPLEMENT: { name: 'Implement', action: 'Write code with tests', prompt: 'Write test first, then implement to make it pass', why: 'Test-first defines "working" before you code. Catches misunderstandings early.' },
77
+ TEST: { name: 'Test', action: 'Run and fix tests', prompt: 'Run all tests, fix failures, add edge cases', why: 'Your change might break something unrelated. Full suite catches regressions before production.' },
78
+ DEBUG: { name: 'Debug', action: 'Debug with Tornado cycle', prompt: 'Research + Logs + Tests to solve issues', why: 'When stuck, random changes make it worse. Tornado systematically narrows possibilities.' },
77
79
  },
78
80
  },
79
81
  SHIP: {
80
82
  name: 'Ship',
81
83
  description: 'Get it to users',
84
+ why: '"Works on my machine" isn\'t deployment. Production has constraints, users, and consequences dev doesn\'t.',
82
85
  color: 'green',
83
86
  steps: {
84
- REVIEW: { name: 'Review', action: 'Code review and audit', prompt: 'Security audit, code review, performance' },
85
- DEPLOY: { name: 'Deploy', action: 'Deploy to production', prompt: 'CI/CD, environment config, rollout' },
86
- MONITOR: { name: 'Monitor', action: 'Watch for issues', prompt: 'Logs, alerts, health checks, metrics' },
87
+ REVIEW: { name: 'Review', action: 'Code review and audit', prompt: 'Security audit, code review, performance', why: 'Fresh eyes catch what tired eyes miss. Review is cheaper than incident response.' },
88
+ DEPLOY: { name: 'Deploy', action: 'Deploy to production', prompt: 'CI/CD, environment config, rollout', why: 'Manual deployment is error-prone. CI/CD ensures same steps every time, rollback possible.' },
89
+ MONITOR: { name: 'Monitor', action: 'Watch for issues', prompt: 'Logs, alerts, health checks, metrics', why: 'Users don\'t file bug reports. They leave. Know about problems before they complain.' },
87
90
  },
88
91
  },
89
92
  GROW: {
90
93
  name: 'Grow',
91
94
  description: 'Learn from production and iterate',
95
+ why: 'Version 1 is never right. Growth comes from learning what users actually do, not what you imagined.',
92
96
  color: 'magenta',
93
97
  steps: {
94
- MONITOR: { name: 'Monitor', action: 'Track production health', prompt: 'Error rates, latency, uptime, resource usage' },
95
- COLLECT: { name: 'Collect', action: 'Gather feedback', prompt: 'User reviews, bug reports, feature requests, analytics' },
96
- TRIAGE: { name: 'Triage', action: 'Prioritize issues', prompt: 'Impact vs effort matrix, quick wins, critical bugs' },
97
- RETROSPECT: { name: 'Retrospect', action: 'Review the cycle', prompt: 'What worked? What broke? What surprised us?' },
98
- PLAN_NEXT: { name: 'Plan Next', action: 'Scope next iteration', prompt: 'Define hypothesis, success metrics, scope boundaries' },
99
- LOOP: { name: 'Loop', action: 'Return to Plan', prompt: 'Carry context forward, update brainlift, start new cycle' },
98
+ MONITOR: { name: 'Monitor', action: 'Track production health', prompt: 'Error rates, latency, uptime, resource usage', why: 'Real load reveals real problems. Continuous monitoring catches degradation before failure.' },
99
+ COLLECT: { name: 'Collect', action: 'Gather feedback', prompt: 'User reviews, bug reports, feature requests, analytics', why: 'Users have needs they can\'t articulate. Collecting all signals gives the full picture.' },
100
+ TRIAGE: { name: 'Triage', action: 'Prioritize issues', prompt: 'Impact vs effort matrix, quick wins, critical bugs', why: 'Everything can\'t be priority 1. Fix the right things first, not whatever\'s loudest.' },
101
+ RETROSPECT: { name: 'Retrospect', action: 'Review the cycle', prompt: 'What worked? What broke? What surprised us?', why: 'Teams repeat mistakes they don\'t acknowledge. Retrospectives surface lessons.' },
102
+ PLAN_NEXT: { name: 'Plan Next', action: 'Scope next iteration', prompt: 'Define hypothesis, success metrics, scope boundaries', why: 'Unbounded work never ships. Defining scope creates a finish line.' },
103
+ LOOP: { name: 'Loop', action: 'Return to Plan', prompt: 'Carry context forward, update brainlift, start new cycle', why: 'Each cycle teaches you something. Carry context forward so v2 builds on v1\'s lessons.' },
100
104
  },
101
105
  },
102
106
  };
@@ -1 +1 @@
1
- {"version":3,"file":"phase.js","sourceRoot":"","sources":["../../src/state/phase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phase.js","sourceRoot":"","sources":["../../src/state/phase.ts"],"names":[],"mappings":"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"}
@@ -34,10 +34,13 @@ export interface PromptSuggestion {
34
34
  export declare function suggestPrompt(input: SuggestPromptInput): PromptSuggestion;
35
35
  export declare const advancePhaseSchema: z.ZodObject<{
36
36
  projectPath: z.ZodOptional<z.ZodString>;
37
+ force: z.ZodOptional<z.ZodBoolean>;
37
38
  }, "strip", z.ZodTypeAny, {
38
39
  projectPath?: string | undefined;
40
+ force?: boolean | undefined;
39
41
  }, {
40
42
  projectPath?: string | undefined;
43
+ force?: boolean | undefined;
41
44
  }>;
42
45
  export type AdvancePhaseInput = z.infer<typeof advancePhaseSchema>;
43
46
  export interface AdvancePhaseResult {
@@ -50,6 +53,8 @@ export interface AdvancePhaseResult {
50
53
  step?: string;
51
54
  };
52
55
  message: string;
56
+ blocked?: boolean;
57
+ blockers?: string[];
53
58
  }
54
59
  export declare function advancePhase(input: AdvancePhaseInput): AdvancePhaseResult;
55
60
  //# sourceMappingURL=analyze.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtE,eAAO,MAAM,aAAa;;;;;;;;;EAGxB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEzD,wBAAsB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAyBlG;AAGD,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,gBAAgB,CAyIzE;AAGD,eAAO,MAAM,kBAAkB;;;;;;EAE7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA0BzE"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAMtE,eAAO,MAAM,aAAa;;;;;;;;;EAGxB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEzD,wBAAsB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAyBlG;AAGD,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,gBAAgB,CAyIzE;AAGD,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA+CzE"}
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  import { analyzeProject } from '../analyzer.js';
3
3
  import { loadState, setPhase, getNextPhase } from '../state/phase.js';
4
4
  import { getApiKey } from '../config.js';
5
+ import { validatePlanningDocs } from './validate-docs.js';
5
6
  // Tool: midas_analyze - AI-powered project analysis
6
7
  export const analyzeSchema = z.object({
7
8
  projectPath: z.string().optional().describe('Path to project root'),
@@ -169,12 +170,32 @@ export function suggestPrompt(input) {
169
170
  // Tool: midas_advance_phase - Advance to the next step
170
171
  export const advancePhaseSchema = z.object({
171
172
  projectPath: z.string().optional().describe('Path to project root'),
173
+ force: z.boolean().optional().describe('Force advance even if validation fails'),
172
174
  });
173
175
  export function advancePhase(input) {
174
176
  const projectPath = input.projectPath || process.cwd();
175
177
  const state = loadState(projectPath);
176
178
  const previous = state.current;
177
179
  const next = getNextPhase(previous);
180
+ // Check if advancing from EAGLE_SIGHT (Plan) to BUILD - validate planning docs
181
+ if (previous.phase === 'EAGLE_SIGHT' && next.phase === 'BUILD' && !input.force) {
182
+ const validation = validatePlanningDocs({ projectPath });
183
+ if (!validation.readyForBuild) {
184
+ return {
185
+ previous: {
186
+ phase: previous.phase,
187
+ step: previous.step,
188
+ },
189
+ current: {
190
+ phase: previous.phase,
191
+ step: previous.step,
192
+ },
193
+ message: `Cannot advance to BUILD: planning docs incomplete`,
194
+ blocked: true,
195
+ blockers: validation.blockers,
196
+ };
197
+ }
198
+ }
178
199
  setPhase(projectPath, next);
179
200
  const prevStr = previous.phase === 'IDLE'
180
201
  ? 'IDLE'
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { z } from 'zod';
2
+ export interface DebtItem {
3
+ file: string;
4
+ line: number;
5
+ type: 'TODO' | 'FIXME' | 'HACK' | 'XXX' | 'BUG';
6
+ text: string;
7
+ priority: number;
8
+ }
9
+ export interface CleanupAnalysis {
10
+ totalDebtItems: number;
11
+ debtByType: Record<string, number>;
12
+ topFiles: Array<{
13
+ file: string;
14
+ churn: number;
15
+ debtCount: number;
16
+ }>;
17
+ items: DebtItem[];
18
+ suggestedPrompt: string;
19
+ }
20
+ export declare const scanDebtSchema: z.ZodObject<{
21
+ projectPath: z.ZodOptional<z.ZodString>;
22
+ limit: z.ZodOptional<z.ZodNumber>;
23
+ }, "strip", z.ZodTypeAny, {
24
+ projectPath?: string | undefined;
25
+ limit?: number | undefined;
26
+ }, {
27
+ projectPath?: string | undefined;
28
+ limit?: number | undefined;
29
+ }>;
30
+ export type ScanDebtInput = z.infer<typeof scanDebtSchema>;
31
+ /**
32
+ * Scan codebase for TODO/FIXME/HACK comments
33
+ */
34
+ export declare function scanDebt(input: ScanDebtInput): CleanupAnalysis;
35
+ export declare const getCleanupSuggestionSchema: z.ZodObject<{
36
+ projectPath: z.ZodOptional<z.ZodString>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ projectPath?: string | undefined;
39
+ }, {
40
+ projectPath?: string | undefined;
41
+ }>;
42
+ export type GetCleanupSuggestionInput = z.infer<typeof getCleanupSuggestionSchema>;
43
+ export interface CleanupSuggestion {
44
+ focus: 'refactor' | 'simplify' | 'document' | 'test';
45
+ target: string;
46
+ reason: string;
47
+ prompt: string;
48
+ }
49
+ /**
50
+ * Get a cleanup-focused suggestion (refactoring, not feature building)
51
+ */
52
+ export declare function getCleanupSuggestion(input: GetCleanupSuggestionInput): CleanupSuggestion;
53
+ //# sourceMappingURL=cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/tools/cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAMD,eAAO,MAAM,cAAc;;;;;;;;;EAGzB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAU3D;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CA2E9D;AAgED,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEnF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,iBAAiB,CAsBxF"}
@@ -0,0 +1,170 @@
1
+ import { z } from 'zod';
2
+ import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
3
+ import { join, relative } from 'path';
4
+ import { execSync } from 'child_process';
5
+ import { sanitizePath, isShellSafe } from '../security.js';
6
+ import { logEvent } from '../events.js';
7
+ // ============================================================================
8
+ // Scan for tech debt markers
9
+ // ============================================================================
10
+ export const scanDebtSchema = z.object({
11
+ projectPath: z.string().optional().describe('Path to project root'),
12
+ limit: z.number().optional().describe('Max items to return (default 20)'),
13
+ });
14
+ const DEBT_PATTERNS = [
15
+ { pattern: /\/\/\s*(TODO|FIXME|HACK|XXX|BUG):?\s*(.*)$/i, type: 'comment' },
16
+ { pattern: /#\s*(TODO|FIXME|HACK|XXX|BUG):?\s*(.*)$/i, type: 'hash' },
17
+ ];
18
+ const IGNORE_DIRS = ['node_modules', '.git', 'dist', 'build', '.midas', 'coverage'];
19
+ const CODE_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx', '.py', '.rs', '.go', '.java', '.rb'];
20
+ /**
21
+ * Scan codebase for TODO/FIXME/HACK comments
22
+ */
23
+ export function scanDebt(input) {
24
+ const projectPath = sanitizePath(input.projectPath);
25
+ const limit = input.limit || 20;
26
+ const items = [];
27
+ const fileChurn = getFileChurn(projectPath);
28
+ function scanDir(dir, depth = 0) {
29
+ if (depth > 10)
30
+ return;
31
+ try {
32
+ const entries = readdirSync(dir);
33
+ for (const entry of entries) {
34
+ if (IGNORE_DIRS.includes(entry))
35
+ continue;
36
+ const fullPath = join(dir, entry);
37
+ try {
38
+ const stat = statSync(fullPath);
39
+ if (stat.isDirectory()) {
40
+ scanDir(fullPath, depth + 1);
41
+ }
42
+ else if (stat.isFile()) {
43
+ const ext = entry.slice(entry.lastIndexOf('.'));
44
+ if (CODE_EXTENSIONS.includes(ext)) {
45
+ scanFile(fullPath, projectPath, items, fileChurn);
46
+ }
47
+ }
48
+ }
49
+ catch { }
50
+ }
51
+ }
52
+ catch { }
53
+ }
54
+ scanDir(projectPath);
55
+ // Sort by priority (churn-based) and limit
56
+ items.sort((a, b) => b.priority - a.priority);
57
+ const limitedItems = items.slice(0, limit);
58
+ // Aggregate stats
59
+ const debtByType = {};
60
+ for (const item of items) {
61
+ debtByType[item.type] = (debtByType[item.type] || 0) + 1;
62
+ }
63
+ // Top files by debt + churn
64
+ const fileStats = new Map();
65
+ for (const item of items) {
66
+ const existing = fileStats.get(item.file) || { churn: item.priority, debtCount: 0 };
67
+ existing.debtCount++;
68
+ fileStats.set(item.file, existing);
69
+ }
70
+ const topFiles = Array.from(fileStats.entries())
71
+ .map(([file, stats]) => ({ file, ...stats }))
72
+ .sort((a, b) => (b.churn * b.debtCount) - (a.churn * a.debtCount))
73
+ .slice(0, 5);
74
+ // Generate suggested prompt
75
+ let suggestedPrompt = 'No tech debt found. Codebase is clean!';
76
+ if (limitedItems.length > 0) {
77
+ const topItem = limitedItems[0];
78
+ suggestedPrompt = `Address the ${topItem.type} in ${topItem.file}:${topItem.line}: "${topItem.text.slice(0, 50)}..."`;
79
+ }
80
+ logEvent(projectPath, {
81
+ type: 'tool_called',
82
+ tool: 'midas_scan_debt',
83
+ data: { totalItems: items.length },
84
+ });
85
+ return {
86
+ totalDebtItems: items.length,
87
+ debtByType,
88
+ topFiles,
89
+ items: limitedItems,
90
+ suggestedPrompt,
91
+ };
92
+ }
93
+ function scanFile(filePath, projectPath, items, fileChurn) {
94
+ try {
95
+ const content = readFileSync(filePath, 'utf-8');
96
+ const lines = content.split('\n');
97
+ const relativePath = relative(projectPath, filePath);
98
+ const churn = fileChurn.get(relativePath) || 0;
99
+ for (let i = 0; i < lines.length; i++) {
100
+ const line = lines[i];
101
+ for (const { pattern } of DEBT_PATTERNS) {
102
+ const match = line.match(pattern);
103
+ if (match) {
104
+ items.push({
105
+ file: relativePath,
106
+ line: i + 1,
107
+ type: match[1].toUpperCase(),
108
+ text: match[2]?.trim() || '',
109
+ priority: churn,
110
+ });
111
+ break; // Only one match per line
112
+ }
113
+ }
114
+ }
115
+ }
116
+ catch { }
117
+ }
118
+ /**
119
+ * Get file churn (number of commits that touched each file)
120
+ */
121
+ function getFileChurn(projectPath) {
122
+ const churn = new Map();
123
+ if (!existsSync(join(projectPath, '.git')))
124
+ return churn;
125
+ if (!isShellSafe(projectPath))
126
+ return churn;
127
+ try {
128
+ // Get commit counts per file (last 100 commits for performance)
129
+ const output = execSync('git log --name-only --pretty=format: -100 | sort | uniq -c | sort -rn | head -50', { cwd: projectPath, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
130
+ for (const line of output.split('\n')) {
131
+ const match = line.trim().match(/^\s*(\d+)\s+(.+)$/);
132
+ if (match) {
133
+ churn.set(match[2], parseInt(match[1]));
134
+ }
135
+ }
136
+ }
137
+ catch { }
138
+ return churn;
139
+ }
140
+ // ============================================================================
141
+ // Get cleanup suggestions
142
+ // ============================================================================
143
+ export const getCleanupSuggestionSchema = z.object({
144
+ projectPath: z.string().optional().describe('Path to project root'),
145
+ });
146
+ /**
147
+ * Get a cleanup-focused suggestion (refactoring, not feature building)
148
+ */
149
+ export function getCleanupSuggestion(input) {
150
+ const projectPath = sanitizePath(input.projectPath);
151
+ const debt = scanDebt({ projectPath, limit: 10 });
152
+ // If there's debt, suggest addressing it
153
+ if (debt.items.length > 0) {
154
+ const topItem = debt.items[0];
155
+ return {
156
+ focus: 'refactor',
157
+ target: `${topItem.file}:${topItem.line}`,
158
+ reason: `High-churn file with ${topItem.type} marker`,
159
+ prompt: `Refactor ${topItem.file}:${topItem.line} to address: ${topItem.text}. Keep changes minimal and focused.`,
160
+ };
161
+ }
162
+ // Otherwise, suggest test coverage or docs
163
+ return {
164
+ focus: 'test',
165
+ target: 'test coverage',
166
+ reason: 'No tech debt markers found',
167
+ prompt: 'Review test coverage. Add tests for any uncovered edge cases in the most complex functions.',
168
+ };
169
+ }
170
+ //# sourceMappingURL=cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/tools/cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAsBxC,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CAC1E,CAAC,CAAC;AAIH,MAAM,aAAa,GAAG;IACpB,EAAE,OAAO,EAAE,6CAA6C,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3E,EAAE,OAAO,EAAE,0CAA0C,EAAE,IAAI,EAAE,MAAM,EAAE;CACtE,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpF,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAE5F;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAEhC,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAE5C,SAAS,OAAO,CAAC,GAAW,EAAE,KAAK,GAAG,CAAC;QACrC,IAAI,KAAK,GAAG,EAAE;YAAE,OAAO;QAEvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAClC,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAChC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;wBACvB,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;oBAC/B,CAAC;yBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;wBACzB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;wBAChD,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;4BAClC,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;wBACpD,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,WAAW,CAAC,CAAC;IAErB,2CAA2C;IAC3C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAE3C,kBAAkB;IAClB,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,4BAA4B;IAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgD,CAAC;IAC1E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACpF,QAAQ,CAAC,SAAS,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;SAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;SACjE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEf,4BAA4B;IAC5B,IAAI,eAAe,GAAG,wCAAwC,CAAC;IAC/D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,eAAe,GAAG,eAAe,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;IACxH,CAAC;IAED,QAAQ,CAAC,WAAW,EAAE;QACpB,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE;KACnC,CAAC,CAAC;IAEH,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,MAAM;QAC5B,UAAU;QACV,QAAQ;QACR,KAAK,EAAE,YAAY;QACnB,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CACf,QAAgB,EAChB,WAAmB,EACnB,KAAiB,EACjB,SAA8B;IAE9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,aAAa,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,CAAC,GAAG,CAAC;wBACX,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAsB;wBAChD,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,QAAQ,EAAE,KAAK;qBAChB,CAAC,CAAC;oBACH,MAAM,CAAE,0BAA0B;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,WAAmB;IACvC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5C,IAAI,CAAC;QACH,gEAAgE;QAChE,MAAM,MAAM,GAAG,QAAQ,CACrB,kFAAkF,EAClF,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CACzE,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACrD,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;CACpE,CAAC,CAAC;AAWH;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAgC;IACnE,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAElD,yCAAyC;IACzC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO;YACL,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;YACzC,MAAM,EAAE,wBAAwB,OAAO,CAAC,IAAI,SAAS;YACrD,MAAM,EAAE,YAAY,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,gBAAgB,OAAO,CAAC,IAAI,qCAAqC;SAClH,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,OAAO;QACL,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,4BAA4B;QACpC,MAAM,EAAE,6FAA6F;KACtG,CAAC;AACJ,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+ export declare const showExampleSchema: z.ZodObject<{
3
+ step: z.ZodOptional<z.ZodString>;
4
+ projectPath: z.ZodOptional<z.ZodString>;
5
+ }, "strip", z.ZodTypeAny, {
6
+ step?: string | undefined;
7
+ projectPath?: string | undefined;
8
+ }, {
9
+ step?: string | undefined;
10
+ projectPath?: string | undefined;
11
+ }>;
12
+ export type ShowExampleInput = z.infer<typeof showExampleSchema>;
13
+ export interface ShowExampleResult {
14
+ step: string;
15
+ exampleFile: string;
16
+ content: string;
17
+ summary: string;
18
+ }
19
+ /**
20
+ * Get the example document for a given step
21
+ */
22
+ export declare function showExample(input: ShowExampleInput): ShowExampleResult;
23
+ /**
24
+ * Get available examples
25
+ */
26
+ export declare function listExamples(): {
27
+ step: string;
28
+ file: string;
29
+ }[];
30
+ //# sourceMappingURL=examples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../../src/tools/examples.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgBxB,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAqCtE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAK/D"}
@@ -0,0 +1,65 @@
1
+ import { existsSync, readFileSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import { z } from 'zod';
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = dirname(__filename);
7
+ // Map steps to their example documents
8
+ const STEP_EXAMPLES = {
9
+ // PLAN phase steps
10
+ BRAINLIFT: 'brainlift-example.md',
11
+ PRD: 'prd-example.md',
12
+ GAMEPLAN: 'gameplan-example.md',
13
+ // Other steps use nearest relevant example
14
+ IDEA: 'brainlift-example.md',
15
+ RESEARCH: 'brainlift-example.md',
16
+ };
17
+ export const showExampleSchema = z.object({
18
+ step: z.string().optional().describe('Step to show example for: BRAINLIFT, PRD, or GAMEPLAN'),
19
+ projectPath: z.string().optional().describe('Path to project root'),
20
+ });
21
+ /**
22
+ * Get the example document for a given step
23
+ */
24
+ export function showExample(input) {
25
+ const step = (input.step || 'BRAINLIFT').toUpperCase();
26
+ // Find the example file for this step
27
+ const exampleFileName = STEP_EXAMPLES[step] || 'brainlift-example.md';
28
+ // Look for example in docs/examples/
29
+ const docsPath = join(__dirname, '..', 'docs', 'examples', exampleFileName);
30
+ if (!existsSync(docsPath)) {
31
+ return {
32
+ step,
33
+ exampleFile: exampleFileName,
34
+ content: `Example file not found: ${exampleFileName}`,
35
+ summary: 'No example available for this step.',
36
+ };
37
+ }
38
+ const content = readFileSync(docsPath, 'utf-8');
39
+ // Extract first paragraph after the title as summary
40
+ const lines = content.split('\n');
41
+ let summary = '';
42
+ for (let i = 0; i < lines.length; i++) {
43
+ const line = lines[i].trim();
44
+ if (line && !line.startsWith('#') && !line.startsWith('---')) {
45
+ summary = line.slice(0, 100) + (line.length > 100 ? '...' : '');
46
+ break;
47
+ }
48
+ }
49
+ return {
50
+ step,
51
+ exampleFile: exampleFileName,
52
+ content,
53
+ summary: summary || 'Example document for ' + step,
54
+ };
55
+ }
56
+ /**
57
+ * Get available examples
58
+ */
59
+ export function listExamples() {
60
+ return Object.entries(STEP_EXAMPLES).map(([step, file]) => ({
61
+ step,
62
+ file,
63
+ }));
64
+ }
65
+ //# sourceMappingURL=examples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"examples.js","sourceRoot":"","sources":["../../src/tools/examples.ts"],"names":[],"mappings":"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"}