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.
- package/README.md +167 -0
- package/dist/docs/CHEATSHEET.md +122 -0
- package/dist/docs/INGREDIENTS.md +173 -0
- package/dist/docs/METHODOLOGY.md +334 -0
- package/dist/docs/PROMPTS.md +347 -0
- package/dist/docs/SPEC.md +330 -0
- package/dist/docs/USER_RULES.md +90 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/development.d.ts +3 -0
- package/dist/prompts/development.d.ts.map +1 -0
- package/dist/prompts/development.js +90 -0
- package/dist/prompts/development.js.map +1 -0
- package/dist/prompts/index.d.ts +3 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +11 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/research.d.ts +3 -0
- package/dist/prompts/research.d.ts.map +1 -0
- package/dist/prompts/research.js +56 -0
- package/dist/prompts/research.js.map +1 -0
- package/dist/prompts/review.d.ts +3 -0
- package/dist/prompts/review.d.ts.map +1 -0
- package/dist/prompts/review.js +76 -0
- package/dist/prompts/review.js.map +1 -0
- package/dist/prompts/session.d.ts +3 -0
- package/dist/prompts/session.d.ts.map +1 -0
- package/dist/prompts/session.js +35 -0
- package/dist/prompts/session.js.map +1 -0
- package/dist/resources/index.d.ts +3 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +63 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +65 -0
- package/dist/server.js.map +1 -0
- package/dist/state/phase.d.ts +32 -0
- package/dist/state/phase.d.ts.map +1 -0
- package/dist/state/phase.js +125 -0
- package/dist/state/phase.js.map +1 -0
- package/dist/tools/audit.d.ts +23 -0
- package/dist/tools/audit.d.ts.map +1 -0
- package/dist/tools/audit.js +212 -0
- package/dist/tools/audit.js.map +1 -0
- package/dist/tools/docs.d.ts +23 -0
- package/dist/tools/docs.d.ts.map +1 -0
- package/dist/tools/docs.js +66 -0
- package/dist/tools/docs.js.map +1 -0
- package/dist/tools/horizon.d.ts +20 -0
- package/dist/tools/horizon.d.ts.map +1 -0
- package/dist/tools/horizon.js +75 -0
- package/dist/tools/horizon.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +13 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/oneshot.d.ts +21 -0
- package/dist/tools/oneshot.d.ts.map +1 -0
- package/dist/tools/oneshot.js +27 -0
- package/dist/tools/oneshot.js.map +1 -0
- package/dist/tools/phase.d.ts +51 -0
- package/dist/tools/phase.d.ts.map +1 -0
- package/dist/tools/phase.js +152 -0
- package/dist/tools/phase.js.map +1 -0
- package/dist/tools/tornado.d.ts +20 -0
- package/dist/tools/tornado.d.ts.map +1 -0
- package/dist/tools/tornado.js +61 -0
- package/dist/tools/tornado.js.map +1 -0
- package/docs/CHEATSHEET.md +122 -0
- package/docs/INGREDIENTS.md +173 -0
- package/docs/METHODOLOGY.md +334 -0
- package/docs/PROMPTS.md +347 -0
- package/docs/SPEC.md +330 -0
- package/docs/USER_RULES.md +90 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/server.d.ts
ADDED
|
@@ -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"}
|