midas-mcp 1.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 (78) hide show
  1. package/README.md +167 -0
  2. package/dist/docs/CHEATSHEET.md +122 -0
  3. package/dist/docs/INGREDIENTS.md +173 -0
  4. package/dist/docs/METHODOLOGY.md +334 -0
  5. package/dist/docs/PROMPTS.md +347 -0
  6. package/dist/docs/SPEC.md +330 -0
  7. package/dist/docs/USER_RULES.md +90 -0
  8. package/dist/index.d.ts +3 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +15 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/prompts/development.d.ts +3 -0
  13. package/dist/prompts/development.d.ts.map +1 -0
  14. package/dist/prompts/development.js +90 -0
  15. package/dist/prompts/development.js.map +1 -0
  16. package/dist/prompts/index.d.ts +3 -0
  17. package/dist/prompts/index.d.ts.map +1 -0
  18. package/dist/prompts/index.js +11 -0
  19. package/dist/prompts/index.js.map +1 -0
  20. package/dist/prompts/research.d.ts +3 -0
  21. package/dist/prompts/research.d.ts.map +1 -0
  22. package/dist/prompts/research.js +56 -0
  23. package/dist/prompts/research.js.map +1 -0
  24. package/dist/prompts/review.d.ts +3 -0
  25. package/dist/prompts/review.d.ts.map +1 -0
  26. package/dist/prompts/review.js +76 -0
  27. package/dist/prompts/review.js.map +1 -0
  28. package/dist/prompts/session.d.ts +3 -0
  29. package/dist/prompts/session.d.ts.map +1 -0
  30. package/dist/prompts/session.js +35 -0
  31. package/dist/prompts/session.js.map +1 -0
  32. package/dist/resources/index.d.ts +3 -0
  33. package/dist/resources/index.d.ts.map +1 -0
  34. package/dist/resources/index.js +63 -0
  35. package/dist/resources/index.js.map +1 -0
  36. package/dist/server.d.ts +3 -0
  37. package/dist/server.d.ts.map +1 -0
  38. package/dist/server.js +65 -0
  39. package/dist/server.js.map +1 -0
  40. package/dist/state/phase.d.ts +32 -0
  41. package/dist/state/phase.d.ts.map +1 -0
  42. package/dist/state/phase.js +125 -0
  43. package/dist/state/phase.js.map +1 -0
  44. package/dist/tools/audit.d.ts +23 -0
  45. package/dist/tools/audit.d.ts.map +1 -0
  46. package/dist/tools/audit.js +212 -0
  47. package/dist/tools/audit.js.map +1 -0
  48. package/dist/tools/docs.d.ts +23 -0
  49. package/dist/tools/docs.d.ts.map +1 -0
  50. package/dist/tools/docs.js +66 -0
  51. package/dist/tools/docs.js.map +1 -0
  52. package/dist/tools/horizon.d.ts +20 -0
  53. package/dist/tools/horizon.d.ts.map +1 -0
  54. package/dist/tools/horizon.js +75 -0
  55. package/dist/tools/horizon.js.map +1 -0
  56. package/dist/tools/index.d.ts +7 -0
  57. package/dist/tools/index.d.ts.map +1 -0
  58. package/dist/tools/index.js +13 -0
  59. package/dist/tools/index.js.map +1 -0
  60. package/dist/tools/oneshot.d.ts +21 -0
  61. package/dist/tools/oneshot.d.ts.map +1 -0
  62. package/dist/tools/oneshot.js +27 -0
  63. package/dist/tools/oneshot.js.map +1 -0
  64. package/dist/tools/phase.d.ts +51 -0
  65. package/dist/tools/phase.d.ts.map +1 -0
  66. package/dist/tools/phase.js +152 -0
  67. package/dist/tools/phase.js.map +1 -0
  68. package/dist/tools/tornado.d.ts +20 -0
  69. package/dist/tools/tornado.d.ts.map +1 -0
  70. package/dist/tools/tornado.js +61 -0
  71. package/dist/tools/tornado.js.map +1 -0
  72. package/docs/CHEATSHEET.md +122 -0
  73. package/docs/INGREDIENTS.md +173 -0
  74. package/docs/METHODOLOGY.md +334 -0
  75. package/docs/PROMPTS.md +347 -0
  76. package/docs/SPEC.md +330 -0
  77. package/docs/USER_RULES.md +90 -0
  78. package/package.json +42 -0
@@ -0,0 +1,76 @@
1
+ import { z } from 'zod';
2
+ export function registerReviewPrompts(server) {
3
+ // Security review
4
+ server.prompt('security_review', 'Review code for security vulnerabilities', { target: z.string().describe('File or code to review') }, (args) => ({
5
+ messages: [
6
+ {
7
+ role: 'user',
8
+ content: {
9
+ type: 'text',
10
+ text: `Review this for security vulnerabilities: ${args.target}
11
+
12
+ Check specifically for:
13
+ - SQL injection
14
+ - XSS vulnerabilities
15
+ - Authentication bypasses
16
+ - Authorization flaws
17
+ - Data exposure
18
+ - Insecure dependencies
19
+ - Hardcoded secrets
20
+
21
+ For each issue found:
22
+ 1. Describe the vulnerability
23
+ 2. Show the vulnerable code
24
+ 3. Provide the fix`,
25
+ },
26
+ },
27
+ ],
28
+ }));
29
+ // Performance review
30
+ server.prompt('performance_review', 'Review code for performance issues', { target: z.string().describe('File or code to review') }, (args) => ({
31
+ messages: [
32
+ {
33
+ role: 'user',
34
+ content: {
35
+ type: 'text',
36
+ text: `Review this for performance issues: ${args.target}
37
+
38
+ Check for:
39
+ - N+1 queries
40
+ - Unnecessary re-renders
41
+ - Memory leaks
42
+ - Blocking operations
43
+ - Missing caching opportunities
44
+ - Inefficient algorithms
45
+
46
+ For each issue:
47
+ 1. Current complexity (O notation if applicable)
48
+ 2. Impact on user experience
49
+ 3. Suggested optimization`,
50
+ },
51
+ },
52
+ ],
53
+ }));
54
+ // Safe refactor
55
+ server.prompt('safe_refactor', 'Safely move or refactor code', { description: z.string().describe('What to refactor') }, (args) => ({
56
+ messages: [
57
+ {
58
+ role: 'user',
59
+ content: {
60
+ type: 'text',
61
+ text: `SAFE REFACTORING: ${args.description}
62
+
63
+ Follow this process:
64
+ 0. Comment out code on original file first
65
+ 1. Split large classes into smaller, focused class files
66
+ 2. Copy code verbatim - Don't modify logic when moving to new files
67
+ 3. Extract logical groups - Move related functions/components together
68
+ 4. Use proper exports/imports - Maintain all references between files
69
+ 5. Keep dependencies intact - Ensure imports are accessible to new files
70
+ 6. Test frequently - Verify functionality after each extraction`,
71
+ },
72
+ },
73
+ ],
74
+ }));
75
+ }
76
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/prompts/review.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,kBAAkB;IAClB,MAAM,CAAC,MAAM,CACX,iBAAiB,EACjB,0CAA0C,EAC1C,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,EACzD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACT,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,6CAA6C,IAAI,CAAC,MAAM;;;;;;;;;;;;;;mBAcvD;iBACR;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,MAAM,CACX,oBAAoB,EACpB,oCAAoC,EACpC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,EACzD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACT,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,uCAAuC,IAAI,CAAC,MAAM;;;;;;;;;;;;;0BAa1C;iBACf;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,MAAM,CACX,eAAe,EACf,8BAA8B,EAC9B,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,EACxD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACT,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qBAAqB,IAAI,CAAC,WAAW;;;;;;;;;gEASS;iBACrD;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerSessionPrompts(server: McpServer): void;
3
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/prompts/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0C9D"}
@@ -0,0 +1,35 @@
1
+ export function registerSessionPrompts(server) {
2
+ // Master prompt - session initialization
3
+ server.prompt('master_prompt', 'Initialize a development session with full context loading and planning', () => ({
4
+ messages: [
5
+ {
6
+ role: 'user',
7
+ content: {
8
+ type: 'text',
9
+ text: `# Read and understand user rules, research each for complete understanding
10
+
11
+ # Ask me any clarifying questions (hallucination avoidance)
12
+
13
+ # Make todos of all tasks, use high IQ strategy for safety and correctness as you create and order each, add todos for testing of all code changes and additions, research documentation and best practices online, don't start yet`,
14
+ },
15
+ },
16
+ ],
17
+ }));
18
+ // Execution prompt - start building
19
+ server.prompt('execution_prompt', 'Start building with TDD approach after planning is complete', () => ({
20
+ messages: [
21
+ {
22
+ role: 'user',
23
+ content: {
24
+ type: 'text',
25
+ text: `# Continue todos, do each comprehensively and in highest IQ way possible
26
+
27
+ # Build test and write AND run test scripts then fix and repeat process of writing tests and running them until all tests pass
28
+
29
+ # Short commit message once individual todos are complete and proceed`,
30
+ },
31
+ },
32
+ ],
33
+ }));
34
+ }
35
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/prompts/session.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,yCAAyC;IACzC,MAAM,CAAC,MAAM,CACX,eAAe,EACf,yEAAyE,EACzE,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;oOAIkN;iBACzN;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,oCAAoC;IACpC,MAAM,CAAC,MAAM,CACX,kBAAkB,EAClB,6DAA6D,EAC7D,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;sEAIoD;iBAC3D;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerAllResources(server: McpServer): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuE5D"}
@@ -0,0 +1,63 @@
1
+ import { readFileSync, existsSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ const __filename = fileURLToPath(import.meta.url);
5
+ const __dirname = dirname(__filename);
6
+ // Path to docs folder (relative to dist/resources/)
7
+ const DOCS_PATH = join(__dirname, '..', '..', 'docs');
8
+ function readDocFile(filename) {
9
+ const filePath = join(DOCS_PATH, filename);
10
+ if (!existsSync(filePath)) {
11
+ return `Documentation file not found: ${filename}`;
12
+ }
13
+ return readFileSync(filePath, 'utf-8');
14
+ }
15
+ export function registerAllResources(server) {
16
+ // List available resources
17
+ server.resource('methodology', 'midas://methodology', async () => ({
18
+ contents: [
19
+ {
20
+ uri: 'midas://methodology',
21
+ mimeType: 'text/markdown',
22
+ text: readDocFile('METHODOLOGY.md'),
23
+ },
24
+ ],
25
+ }));
26
+ server.resource('prompts', 'midas://prompts', async () => ({
27
+ contents: [
28
+ {
29
+ uri: 'midas://prompts',
30
+ mimeType: 'text/markdown',
31
+ text: readDocFile('PROMPTS.md'),
32
+ },
33
+ ],
34
+ }));
35
+ server.resource('ingredients', 'midas://ingredients', async () => ({
36
+ contents: [
37
+ {
38
+ uri: 'midas://ingredients',
39
+ mimeType: 'text/markdown',
40
+ text: readDocFile('INGREDIENTS.md'),
41
+ },
42
+ ],
43
+ }));
44
+ server.resource('user-rules', 'midas://user-rules', async () => ({
45
+ contents: [
46
+ {
47
+ uri: 'midas://user-rules',
48
+ mimeType: 'text/markdown',
49
+ text: readDocFile('USER_RULES.md'),
50
+ },
51
+ ],
52
+ }));
53
+ server.resource('cheatsheet', 'midas://cheatsheet', async () => ({
54
+ contents: [
55
+ {
56
+ uri: 'midas://cheatsheet',
57
+ mimeType: 'text/markdown',
58
+ text: readDocFile('CHEATSHEET.md'),
59
+ },
60
+ ],
61
+ }));
62
+ }
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,oDAAoD;AACpD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAEtD,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,iCAAiC,QAAQ,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,2BAA2B;IAC3B,MAAM,CAAC,QAAQ,CACb,aAAa,EACb,qBAAqB,EACrB,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,qBAAqB;gBAC1B,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC;aACpC;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,QAAQ,CACb,SAAS,EACT,iBAAiB,EACjB,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,iBAAiB;gBACtB,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC;aAChC;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,QAAQ,CACb,aAAa,EACb,qBAAqB,EACrB,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,qBAAqB;gBAC1B,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC;aACpC;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,QAAQ,CACb,YAAY,EACZ,oBAAoB,EACpB,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,oBAAoB;gBACzB,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,WAAW,CAAC,eAAe,CAAC;aACnC;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,QAAQ,CACb,YAAY,EACZ,oBAAoB,EACpB,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,oBAAoB;gBACzB,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,WAAW,CAAC,eAAe,CAAC;aACnC;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function createServer(): McpServer;
3
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBpE,wBAAgB,YAAY,IAAI,SAAS,CA8GxC"}
package/dist/server.js ADDED
@@ -0,0 +1,65 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { startProject, startProjectSchema, getPhase, getPhaseSchema, setPhaseManually, setPhaseSchema, audit, auditSchema, checkDocs, checkDocsSchema, constructOneshot, oneshotSchema, triggerTornado, tornadoSchema, expandHorizon, horizonSchema, } from './tools/index.js';
3
+ import { registerAllPrompts } from './prompts/index.js';
4
+ import { registerAllResources } from './resources/index.js';
5
+ export function createServer() {
6
+ const server = new McpServer({
7
+ name: 'midas',
8
+ version: '1.0.0',
9
+ });
10
+ // Register tools
11
+ server.tool('midas_start_project', 'Initialize a new project with Eagle Sight phase and create docs templates', startProjectSchema.shape, async (args) => {
12
+ const result = startProject(args);
13
+ return {
14
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
15
+ };
16
+ });
17
+ server.tool('midas_get_phase', 'Get current phase and recommended next steps', getPhaseSchema.shape, async (args) => {
18
+ const result = getPhase(args);
19
+ return {
20
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
21
+ };
22
+ });
23
+ server.tool('midas_set_phase', 'Manually set the current phase', setPhaseSchema.shape, async (args) => {
24
+ const result = setPhaseManually(args);
25
+ return {
26
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
27
+ };
28
+ });
29
+ server.tool('midas_audit', 'Audit project against 12 ingredients of production readiness', auditSchema.shape, async (args) => {
30
+ const result = audit(args);
31
+ return {
32
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
33
+ };
34
+ });
35
+ server.tool('midas_check_docs', 'Verify Eagle Sight docs (brainlift, prd, gameplan) exist and are complete', checkDocsSchema.shape, async (args) => {
36
+ const result = checkDocs(args);
37
+ return {
38
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
39
+ };
40
+ });
41
+ server.tool('midas_oneshot', 'Construct a Oneshot retry prompt from original prompt and error', oneshotSchema.shape, async (args) => {
42
+ const result = constructOneshot(args);
43
+ return {
44
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
45
+ };
46
+ });
47
+ server.tool('midas_tornado', 'Guide through the Tornado cycle (Research + Logs + Tests)', tornadoSchema.shape, async (args) => {
48
+ const result = triggerTornado(args);
49
+ return {
50
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
51
+ };
52
+ });
53
+ server.tool('midas_horizon', 'Expand horizontal context when AI output does not fit', horizonSchema.shape, async (args) => {
54
+ const result = expandHorizon(args);
55
+ return {
56
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
57
+ };
58
+ });
59
+ // Register prompts
60
+ registerAllPrompts(server);
61
+ // Register resources
62
+ registerAllResources(server);
63
+ return server;
64
+ }
65
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export type EagleSightStep = 'IDEA' | 'RESEARCH' | 'BRAINLIFT' | 'PRD' | 'GAMEPLAN';
2
+ export type BuildStep = 'RULES_LOADED' | 'CODEBASE_INDEXED' | 'FILES_READ' | 'RESEARCHING' | 'IMPLEMENTING' | 'TESTING' | 'DEBUGGING';
3
+ export type Phase = {
4
+ phase: 'IDLE';
5
+ } | {
6
+ phase: 'EAGLE_SIGHT';
7
+ step: EagleSightStep;
8
+ } | {
9
+ phase: 'BUILD';
10
+ step: BuildStep;
11
+ } | {
12
+ phase: 'SHIPPED';
13
+ };
14
+ export interface PhaseState {
15
+ current: Phase;
16
+ history: Phase[];
17
+ startedAt: string;
18
+ docs: {
19
+ brainlift: boolean;
20
+ prd: boolean;
21
+ gameplan: boolean;
22
+ };
23
+ }
24
+ export declare function getDefaultState(): PhaseState;
25
+ export declare function loadState(projectPath: string): PhaseState;
26
+ export declare function saveState(projectPath: string, state: PhaseState): void;
27
+ export declare function setPhase(projectPath: string, newPhase: Phase): PhaseState;
28
+ export declare function getPhaseGuidance(phase: Phase): {
29
+ nextSteps: string[];
30
+ prompt?: string;
31
+ };
32
+ //# sourceMappingURL=phase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase.d.ts","sourceRoot":"","sources":["../../src/state/phase.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,UAAU,GACV,WAAW,GACX,KAAK,GACL,UAAU,CAAC;AAEf,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,kBAAkB,GAClB,YAAY,GACZ,aAAa,GACb,cAAc,GACd,SAAS,GACT,WAAW,CAAC;AAEhB,MAAM,MAAM,KAAK,GACb;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GAC9C;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GACnC;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEzB,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,SAAS,EAAE,OAAO,CAAC;QACnB,GAAG,EAAE,OAAO,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAgBD,wBAAgB,eAAe,IAAI,UAAU,CAW5C;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAWzD;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAItE;AAED,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,UAAU,CAMzE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA4EvF"}
@@ -0,0 +1,125 @@
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
2
+ import { join } from 'path';
3
+ const STATE_DIR = '.midas';
4
+ const STATE_FILE = 'state.json';
5
+ function getStatePath(projectPath) {
6
+ return join(projectPath, STATE_DIR, STATE_FILE);
7
+ }
8
+ function ensureStateDir(projectPath) {
9
+ const dir = join(projectPath, STATE_DIR);
10
+ if (!existsSync(dir)) {
11
+ mkdirSync(dir, { recursive: true });
12
+ }
13
+ }
14
+ export function getDefaultState() {
15
+ return {
16
+ current: { phase: 'IDLE' },
17
+ history: [],
18
+ startedAt: new Date().toISOString(),
19
+ docs: {
20
+ brainlift: false,
21
+ prd: false,
22
+ gameplan: false,
23
+ },
24
+ };
25
+ }
26
+ export function loadState(projectPath) {
27
+ const statePath = getStatePath(projectPath);
28
+ if (!existsSync(statePath)) {
29
+ return getDefaultState();
30
+ }
31
+ try {
32
+ const raw = readFileSync(statePath, 'utf-8');
33
+ return JSON.parse(raw);
34
+ }
35
+ catch {
36
+ return getDefaultState();
37
+ }
38
+ }
39
+ export function saveState(projectPath, state) {
40
+ ensureStateDir(projectPath);
41
+ const statePath = getStatePath(projectPath);
42
+ writeFileSync(statePath, JSON.stringify(state, null, 2));
43
+ }
44
+ export function setPhase(projectPath, newPhase) {
45
+ const state = loadState(projectPath);
46
+ state.history.push(state.current);
47
+ state.current = newPhase;
48
+ saveState(projectPath, state);
49
+ return state;
50
+ }
51
+ export function getPhaseGuidance(phase) {
52
+ if (phase.phase === 'IDLE') {
53
+ return {
54
+ nextSteps: [
55
+ 'Start a new project with midas_start_project',
56
+ 'Or set phase manually with midas_set_phase',
57
+ ],
58
+ prompt: 'Ready to begin. What are you building?',
59
+ };
60
+ }
61
+ if (phase.phase === 'EAGLE_SIGHT') {
62
+ const stepGuidance = {
63
+ IDEA: {
64
+ nextSteps: ['Define the core idea clearly', 'Move to RESEARCH when ready'],
65
+ prompt: 'What problem does this solve? Who is it for?',
66
+ },
67
+ RESEARCH: {
68
+ nextSteps: ['Scan the landscape', 'Identify existing solutions', 'Move to BRAINLIFT'],
69
+ prompt: 'What already exists? What can you learn from competitors?',
70
+ },
71
+ BRAINLIFT: {
72
+ nextSteps: ['Document your unique insights', 'Add domain knowledge AI lacks', 'Move to PRD'],
73
+ prompt: 'What do YOU know that AI doesn\'t? What are your contrarian insights?',
74
+ },
75
+ PRD: {
76
+ nextSteps: ['Define requirements clearly', 'Include non-goals', 'Move to GAMEPLAN'],
77
+ prompt: 'What exactly are you building? What are you NOT building?',
78
+ },
79
+ GAMEPLAN: {
80
+ nextSteps: ['Define tech stack', 'Break into phases', 'Ready for BUILD phase'],
81
+ prompt: 'How will you build this? What\'s the order of operations?',
82
+ },
83
+ };
84
+ return stepGuidance[phase.step];
85
+ }
86
+ if (phase.phase === 'BUILD') {
87
+ const stepGuidance = {
88
+ RULES_LOADED: {
89
+ nextSteps: ['Index the codebase structure', 'Move to CODEBASE_INDEXED'],
90
+ prompt: 'Rules loaded. Now index the codebase architecture.',
91
+ },
92
+ CODEBASE_INDEXED: {
93
+ nextSteps: ['Read specific implementation files', 'Move to FILES_READ'],
94
+ prompt: 'Architecture understood. Read the specific files you need.',
95
+ },
96
+ FILES_READ: {
97
+ nextSteps: ['Research documentation if needed', 'Move to RESEARCHING or IMPLEMENTING'],
98
+ prompt: 'Files loaded. Research any APIs or patterns, then implement.',
99
+ },
100
+ RESEARCHING: {
101
+ nextSteps: ['Document findings', 'Move to IMPLEMENTING'],
102
+ prompt: 'Research complete? Time to write code.',
103
+ },
104
+ IMPLEMENTING: {
105
+ nextSteps: ['Write code with tests', 'Move to TESTING'],
106
+ prompt: 'Write code. Include tests. Run them.',
107
+ },
108
+ TESTING: {
109
+ nextSteps: ['Run all tests', 'Fix failures', 'Move to DEBUGGING if issues'],
110
+ prompt: 'Run tests. All passing? Ship it. Failures? Debug.',
111
+ },
112
+ DEBUGGING: {
113
+ nextSteps: ['Use Tornado cycle', 'Add logs', 'Research', 'Back to TESTING'],
114
+ prompt: 'Stuck? Spin the Tornado: Research + Logs + Tests.',
115
+ },
116
+ };
117
+ return stepGuidance[phase.step];
118
+ }
119
+ // SHIPPED
120
+ return {
121
+ nextSteps: ['Project shipped!', 'Run midas_audit for production readiness check'],
122
+ prompt: 'Shipped. Run an audit to verify production readiness.',
123
+ };
124
+ }
125
+ //# sourceMappingURL=phase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase.js","sourceRoot":"","sources":["../../src/state/phase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ export declare const auditSchema: z.ZodObject<{
3
+ projectPath: z.ZodOptional<z.ZodString>;
4
+ }, "strip", z.ZodTypeAny, {
5
+ projectPath?: string | undefined;
6
+ }, {
7
+ projectPath?: string | undefined;
8
+ }>;
9
+ export type AuditInput = z.infer<typeof auditSchema>;
10
+ interface IngredientScore {
11
+ exists: boolean;
12
+ score: number;
13
+ issues: string[];
14
+ suggestions: string[];
15
+ }
16
+ interface AuditResult {
17
+ scores: Record<string, IngredientScore>;
18
+ overall: number;
19
+ level: 'functional' | 'integrated' | 'protected' | 'production';
20
+ }
21
+ export declare function audit(input: AuditInput): AuditResult;
22
+ export {};
23
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW;;;;;;EAEtB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;CACjE;AAoDD,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAkLpD"}