create-merlin-brain 3.10.0 → 3.12.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/bin/install.cjs +146 -22
- package/bin/runtime-adapters.cjs +396 -0
- package/dist/server/cost/tracker.d.ts +38 -2
- package/dist/server/cost/tracker.d.ts.map +1 -1
- package/dist/server/cost/tracker.js +87 -15
- package/dist/server/cost/tracker.js.map +1 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +74 -30
- package/dist/server/server.js.map +1 -1
- package/dist/server/tools/adaptive.js +1 -1
- package/dist/server/tools/adaptive.js.map +1 -1
- package/dist/server/tools/agents-index.js +3 -3
- package/dist/server/tools/agents-index.js.map +1 -1
- package/dist/server/tools/agents.js +5 -5
- package/dist/server/tools/agents.js.map +1 -1
- package/dist/server/tools/behaviors.js +4 -4
- package/dist/server/tools/behaviors.js.map +1 -1
- package/dist/server/tools/context.js +7 -7
- package/dist/server/tools/context.js.map +1 -1
- package/dist/server/tools/cost.d.ts +3 -1
- package/dist/server/tools/cost.d.ts.map +1 -1
- package/dist/server/tools/cost.js +66 -13
- package/dist/server/tools/cost.js.map +1 -1
- package/dist/server/tools/discoveries.js +6 -6
- package/dist/server/tools/discoveries.js.map +1 -1
- package/dist/server/tools/index.d.ts +4 -0
- package/dist/server/tools/index.d.ts.map +1 -1
- package/dist/server/tools/index.js +4 -0
- package/dist/server/tools/index.js.map +1 -1
- package/dist/server/tools/learning.d.ts +12 -0
- package/dist/server/tools/learning.d.ts.map +1 -0
- package/dist/server/tools/learning.js +269 -0
- package/dist/server/tools/learning.js.map +1 -0
- package/dist/server/tools/project.js +7 -7
- package/dist/server/tools/project.js.map +1 -1
- package/dist/server/tools/promote.d.ts +11 -0
- package/dist/server/tools/promote.d.ts.map +1 -0
- package/dist/server/tools/promote.js +315 -0
- package/dist/server/tools/promote.js.map +1 -0
- package/dist/server/tools/route.d.ts.map +1 -1
- package/dist/server/tools/route.js +65 -24
- package/dist/server/tools/route.js.map +1 -1
- package/dist/server/tools/session-restore.d.ts +18 -0
- package/dist/server/tools/session-restore.d.ts.map +1 -0
- package/dist/server/tools/session-restore.js +154 -0
- package/dist/server/tools/session-restore.js.map +1 -0
- package/dist/server/tools/session-search.d.ts +16 -0
- package/dist/server/tools/session-search.d.ts.map +1 -0
- package/dist/server/tools/session-search.js +240 -0
- package/dist/server/tools/session-search.js.map +1 -0
- package/dist/server/tools/sights-index.js +2 -2
- package/dist/server/tools/sights-index.js.map +1 -1
- package/dist/server/tools/smart-route.d.ts.map +1 -1
- package/dist/server/tools/smart-route.js +4 -5
- package/dist/server/tools/smart-route.js.map +1 -1
- package/dist/server/tools/verification.js +1 -1
- package/dist/server/tools/verification.js.map +1 -1
- package/files/agents/code-organization-supervisor.md +9 -0
- package/files/agents/context-guardian.md +9 -0
- package/files/agents/docs-keeper.md +11 -1
- package/files/agents/dry-refactor.md +12 -1
- package/files/agents/elite-code-refactorer.md +10 -0
- package/files/agents/hardening-guard.md +13 -1
- package/files/agents/implementation-dev.md +12 -1
- package/files/agents/merlin-access-control-reviewer.md +248 -0
- package/files/agents/merlin-api-designer.md +9 -0
- package/files/agents/merlin-codebase-mapper.md +9 -1
- package/files/agents/merlin-debugger.md +10 -0
- package/files/agents/merlin-dependency-auditor.md +216 -0
- package/files/agents/merlin-executor.md +12 -1
- package/files/agents/merlin-frontend.md +9 -0
- package/files/agents/merlin-input-validator.md +247 -0
- package/files/agents/merlin-integration-checker.md +9 -1
- package/files/agents/merlin-migrator.md +9 -0
- package/files/agents/merlin-milestone-auditor.md +8 -0
- package/files/agents/merlin-performance.md +8 -0
- package/files/agents/merlin-planner.md +10 -0
- package/files/agents/merlin-researcher.md +10 -0
- package/files/agents/merlin-reviewer.md +42 -7
- package/files/agents/merlin-sast-reviewer.md +182 -0
- package/files/agents/merlin-secret-scanner.md +203 -0
- package/files/agents/merlin-security.md +9 -0
- package/files/agents/merlin-verifier.md +9 -0
- package/files/agents/merlin-work-verifier.md +9 -0
- package/files/agents/merlin.md +10 -0
- package/files/agents/ops-railway.md +11 -1
- package/files/agents/orchestrator-retrofit.md +9 -1
- package/files/agents/product-spec.md +11 -1
- package/files/agents/remotion.md +8 -0
- package/files/agents/system-architect.md +11 -1
- package/files/agents/tests-qa.md +12 -1
- package/files/commands/merlin/course-correct.md +219 -0
- package/files/commands/merlin/debug.md +2 -2
- package/files/commands/merlin/execute-phase.md +96 -199
- package/files/commands/merlin/execute-plan.md +118 -182
- package/files/commands/merlin/health.md +385 -0
- package/files/commands/merlin/loop-recipes.md +93 -36
- package/files/commands/merlin/map-codebase.md +4 -4
- package/files/commands/merlin/next.md +240 -0
- package/files/commands/merlin/optimize-prompts.md +158 -0
- package/files/commands/merlin/plan-phase.md +1 -1
- package/files/commands/merlin/profiles.md +215 -0
- package/files/commands/merlin/promote.md +176 -0
- package/files/commands/merlin/quick.md +229 -0
- package/files/commands/merlin/readiness-gate.md +208 -0
- package/files/commands/merlin/research-phase.md +2 -2
- package/files/commands/merlin/research-project.md +4 -4
- package/files/commands/merlin/resume-work.md +27 -1
- package/files/commands/merlin/route.md +43 -1
- package/files/commands/merlin/sandbox.md +359 -0
- package/files/commands/merlin/usage.md +55 -0
- package/files/commands/merlin/verify-work.md +1 -1
- package/files/docker/Dockerfile.merlin +20 -0
- package/files/docker/docker-compose.merlin.yml +23 -0
- package/files/hook-templates/auto-commit.sh +64 -0
- package/files/hook-templates/auto-format.sh +95 -0
- package/files/hook-templates/auto-test.sh +117 -0
- package/files/hook-templates/branch-protection.sh +72 -0
- package/files/hook-templates/changelog-reminder.sh +76 -0
- package/files/hook-templates/complexity-check.sh +112 -0
- package/files/hook-templates/import-audit.sh +83 -0
- package/files/hook-templates/license-header.sh +84 -0
- package/files/hook-templates/pr-description.sh +100 -0
- package/files/hook-templates/todo-tracker.sh +80 -0
- package/files/hooks/check-file-size.sh +17 -4
- package/files/hooks/config-change.sh +44 -16
- package/files/hooks/instructions-loaded.sh +22 -5
- package/files/hooks/notify-desktop.sh +157 -0
- package/files/hooks/notify-webhook.sh +141 -0
- package/files/hooks/pre-edit-sights-check.sh +76 -9
- package/files/hooks/security-scanner.sh +153 -0
- package/files/hooks/session-end-memory-sync.sh +97 -0
- package/files/hooks/session-end.sh +274 -1
- package/files/hooks/session-start.sh +19 -6
- package/files/hooks/smart-approve.sh +270 -0
- package/files/hooks/teammate-idle-verify.sh +87 -12
- package/files/hooks/worktree-create.sh +20 -3
- package/files/hooks/worktree-remove.sh +21 -3
- package/files/merlin/references/plan-format.md +37 -9
- package/files/merlin/sandbox.json +9 -0
- package/files/merlin/security.json +11 -0
- package/files/merlin/templates/ci/docs-update.yml +81 -0
- package/files/merlin/templates/ci/pr-review.yml +50 -0
- package/files/merlin/templates/ci/security-audit.yml +74 -0
- package/files/merlin/templates/config.json +9 -1
- package/files/rules/api-rules.md +30 -0
- package/files/rules/frontend-rules.md +25 -0
- package/files/rules/hooks-rules.md +36 -0
- package/files/rules/mcp-rules.md +30 -0
- package/files/rules/worker-rules.md +29 -0
- package/package.json +1 -1
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Restore Tool
|
|
3
|
+
*
|
|
4
|
+
* Reads the most recent session summary from ~/.claude/merlin/sessions/
|
|
5
|
+
* and returns it formatted for context injection at session start.
|
|
6
|
+
*
|
|
7
|
+
* Session summaries are written by the session-end.sh hook and contain:
|
|
8
|
+
* - Files modified (git diff)
|
|
9
|
+
* - Commit messages from that session
|
|
10
|
+
* - Agents used
|
|
11
|
+
* - Session duration and working directory
|
|
12
|
+
*/
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
import { existsSync, readdirSync, readFileSync } from 'fs';
|
|
15
|
+
import { join } from 'path';
|
|
16
|
+
import { homedir } from 'os';
|
|
17
|
+
const SESSIONS_DIR = join(homedir(), '.claude', 'merlin', 'sessions');
|
|
18
|
+
/**
|
|
19
|
+
* Read and parse a session summary file.
|
|
20
|
+
* Returns null if unreadable or malformed.
|
|
21
|
+
*/
|
|
22
|
+
function readSessionFile(filePath) {
|
|
23
|
+
try {
|
|
24
|
+
const raw = readFileSync(filePath, 'utf-8');
|
|
25
|
+
const parsed = JSON.parse(raw);
|
|
26
|
+
// Minimal validation — ensure required fields exist
|
|
27
|
+
if (!parsed.timestamp || typeof parsed.summary !== 'string')
|
|
28
|
+
return null;
|
|
29
|
+
return parsed;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Return all session file paths sorted newest-first.
|
|
37
|
+
*/
|
|
38
|
+
function getSessionFiles() {
|
|
39
|
+
if (!existsSync(SESSIONS_DIR))
|
|
40
|
+
return [];
|
|
41
|
+
try {
|
|
42
|
+
return readdirSync(SESSIONS_DIR)
|
|
43
|
+
.filter(f => f.startsWith('session-') && f.endsWith('.json'))
|
|
44
|
+
.sort()
|
|
45
|
+
.reverse()
|
|
46
|
+
.map(f => join(SESSIONS_DIR, f));
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Format duration in seconds to a human-readable string.
|
|
54
|
+
*/
|
|
55
|
+
function formatDuration(seconds) {
|
|
56
|
+
if (seconds <= 0)
|
|
57
|
+
return 'unknown duration';
|
|
58
|
+
const h = Math.floor(seconds / 3600);
|
|
59
|
+
const m = Math.floor((seconds % 3600) / 60);
|
|
60
|
+
const s = seconds % 60;
|
|
61
|
+
if (h > 0)
|
|
62
|
+
return `${h}h ${m}m`;
|
|
63
|
+
if (m > 0)
|
|
64
|
+
return `${m}m ${s}s`;
|
|
65
|
+
return `${s}s`;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Format a session summary into a markdown context block.
|
|
69
|
+
*/
|
|
70
|
+
function formatSessionForContext(session, index = 0) {
|
|
71
|
+
const label = index === 0 ? 'Last Session' : `Session ${index + 1}`;
|
|
72
|
+
const date = new Date(session.timestamp).toLocaleString();
|
|
73
|
+
const duration = formatDuration(session.duration_seconds);
|
|
74
|
+
let out = `## ${label} — ${date} (${duration})\n\n`;
|
|
75
|
+
out += `**Summary:** ${session.summary}\n\n`;
|
|
76
|
+
if (session.working_directory) {
|
|
77
|
+
out += `**Working directory:** \`${session.working_directory}\`\n\n`;
|
|
78
|
+
}
|
|
79
|
+
if (session.files_modified.length > 0) {
|
|
80
|
+
out += `**Files modified (${session.files_modified.length}):**\n`;
|
|
81
|
+
session.files_modified.slice(0, 15).forEach(f => {
|
|
82
|
+
out += `- \`${f}\`\n`;
|
|
83
|
+
});
|
|
84
|
+
if (session.files_modified.length > 15) {
|
|
85
|
+
out += `- _...and ${session.files_modified.length - 15} more_\n`;
|
|
86
|
+
}
|
|
87
|
+
out += '\n';
|
|
88
|
+
}
|
|
89
|
+
if (session.commits.length > 0) {
|
|
90
|
+
out += `**Commits:**\n`;
|
|
91
|
+
session.commits.slice(0, 8).forEach(c => {
|
|
92
|
+
out += `- ${c}\n`;
|
|
93
|
+
});
|
|
94
|
+
out += '\n';
|
|
95
|
+
}
|
|
96
|
+
if (session.agents_used.length > 0) {
|
|
97
|
+
out += `**Agents used:** ${session.agents_used.join(', ')}\n\n`;
|
|
98
|
+
}
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Register session restore tools with the MCP server.
|
|
103
|
+
*/
|
|
104
|
+
export function registerSessionRestoreTools(ctx) {
|
|
105
|
+
const { server } = ctx;
|
|
106
|
+
// ── DEFERRED tool: loaded on-demand at session start for continuity ─────────
|
|
107
|
+
// ============================================================
|
|
108
|
+
// Tool: merlin_session_restore
|
|
109
|
+
// ============================================================
|
|
110
|
+
server.tool('merlin_session_restore', 'Restore context from the previous session. Returns what was worked on, files changed, decisions made, and agents used. Call at session start for seamless continuation. Use before /merlin:resume-work to get the last session snapshot without needing a full PLAN file.', {
|
|
111
|
+
count: z.number().optional().describe('Number of recent sessions to return (1-5, default: 1)'),
|
|
112
|
+
}, async ({ count }) => {
|
|
113
|
+
const sessionCount = Math.min(Math.max(count || 1, 1), 5);
|
|
114
|
+
const files = getSessionFiles();
|
|
115
|
+
if (files.length === 0) {
|
|
116
|
+
return {
|
|
117
|
+
content: [{
|
|
118
|
+
type: 'text',
|
|
119
|
+
text: '## No Previous Sessions Found\n\nNo session summaries found in `~/.claude/merlin/sessions/`.\n\nSession summaries are written automatically at session end by the Merlin session-end hook. If this is your first session, start working — context will be captured from now on.',
|
|
120
|
+
}],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
const sessions = [];
|
|
124
|
+
for (const filePath of files.slice(0, sessionCount)) {
|
|
125
|
+
const session = readSessionFile(filePath);
|
|
126
|
+
if (session)
|
|
127
|
+
sessions.push(session);
|
|
128
|
+
if (sessions.length >= sessionCount)
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
if (sessions.length === 0) {
|
|
132
|
+
return {
|
|
133
|
+
content: [{
|
|
134
|
+
type: 'text',
|
|
135
|
+
text: '## Session Files Found but Unreadable\n\nSession summary files exist but could not be parsed. They may be from an older format or corrupted.',
|
|
136
|
+
}],
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
let response = `# Session Context Restored\n\n`;
|
|
140
|
+
response += `Found **${files.length}** session(s) total. Showing last **${sessions.length}**.\n\n`;
|
|
141
|
+
response += `---\n\n`;
|
|
142
|
+
sessions.forEach((s, i) => {
|
|
143
|
+
response += formatSessionForContext(s, i);
|
|
144
|
+
if (i < sessions.length - 1)
|
|
145
|
+
response += `---\n\n`;
|
|
146
|
+
});
|
|
147
|
+
response += `---\n\n`;
|
|
148
|
+
response += `Use \`merlin_session_search(query="...")\` to find specific past sessions.\n`;
|
|
149
|
+
return {
|
|
150
|
+
content: [{ type: 'text', text: response }],
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=session-restore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-restore.js","sourceRoot":"","sources":["../../../src/server/tools/session-restore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAG7B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAatE;;;GAGG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;QACjD,oDAAoD;QACpD,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACzE,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe;IACtB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,YAAY,CAAC;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC5D,IAAI,EAAE;aACN,OAAO,EAAE;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,kBAAkB,CAAC;IAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC;IACvB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAChC,OAAO,GAAG,CAAC,GAAG,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,OAAuB,EAAE,QAAgB,CAAC;IACzE,MAAM,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC,EAAE,CAAC;IACpE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE1D,IAAI,GAAG,GAAG,MAAM,KAAK,MAAM,IAAI,KAAK,QAAQ,OAAO,CAAC;IACpD,GAAG,IAAI,gBAAgB,OAAO,CAAC,OAAO,MAAM,CAAC;IAE7C,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,GAAG,IAAI,4BAA4B,OAAO,CAAC,iBAAiB,QAAQ,CAAC;IACvE,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,GAAG,IAAI,qBAAqB,OAAO,CAAC,cAAc,CAAC,MAAM,QAAQ,CAAC;QAClE,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC9C,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACvC,GAAG,IAAI,aAAa,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,EAAE,UAAU,CAAC;QACnE,CAAC;QACD,GAAG,IAAI,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,GAAG,IAAI,gBAAgB,CAAC;QACxB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACtC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,GAAG,IAAI,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,GAAG,IAAI,oBAAoB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAClE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAgB;IAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,+EAA+E;IAC/E,+DAA+D;IAC/D,+BAA+B;IAC/B,+DAA+D;IAC/D,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,2QAA2Q,EAC3Q;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KAC/F,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;QAEhC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,iRAAiR;qBACxR,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAqB,EAAE,CAAC;QACtC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,OAAO;gBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,QAAQ,CAAC,MAAM,IAAI,YAAY;gBAAE,MAAM;QAC7C,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,8IAA8I;qBACrJ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,GAAG,gCAAgC,CAAC;QAChD,QAAQ,IAAI,WAAW,KAAK,CAAC,MAAM,uCAAuC,QAAQ,CAAC,MAAM,SAAS,CAAC;QACnG,QAAQ,IAAI,SAAS,CAAC;QAEtB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,QAAQ,IAAI,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,IAAI,SAAS,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,QAAQ,IAAI,SAAS,CAAC;QACtB,QAAQ,IAAI,8EAA8E,CAAC;QAE3F,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SACrD,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Search Tool
|
|
3
|
+
*
|
|
4
|
+
* Keyword search across all session summary files in ~/.claude/merlin/sessions/.
|
|
5
|
+
* Supports searching by: summary text, commit messages, file paths, agents used,
|
|
6
|
+
* and working directory.
|
|
7
|
+
*
|
|
8
|
+
* Returns matching sessions sorted by relevance (hit count), then recency.
|
|
9
|
+
* No vector DB — plain keyword matching, fast and offline.
|
|
10
|
+
*/
|
|
11
|
+
import type { ToolContext } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Register session search tools with the MCP server.
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerSessionSearchTools(ctx: ToolContext): void;
|
|
16
|
+
//# sourceMappingURL=session-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-search.d.ts","sourceRoot":"","sources":["../../../src/server/tools/session-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA6K9C;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA0FjE"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Search Tool
|
|
3
|
+
*
|
|
4
|
+
* Keyword search across all session summary files in ~/.claude/merlin/sessions/.
|
|
5
|
+
* Supports searching by: summary text, commit messages, file paths, agents used,
|
|
6
|
+
* and working directory.
|
|
7
|
+
*
|
|
8
|
+
* Returns matching sessions sorted by relevance (hit count), then recency.
|
|
9
|
+
* No vector DB — plain keyword matching, fast and offline.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
import { existsSync, readdirSync, readFileSync } from 'fs';
|
|
13
|
+
import { join } from 'path';
|
|
14
|
+
import { homedir } from 'os';
|
|
15
|
+
const SESSIONS_DIR = join(homedir(), '.claude', 'merlin', 'sessions');
|
|
16
|
+
/**
|
|
17
|
+
* Return all session file paths sorted newest-first.
|
|
18
|
+
*/
|
|
19
|
+
function getSessionFiles() {
|
|
20
|
+
if (!existsSync(SESSIONS_DIR))
|
|
21
|
+
return [];
|
|
22
|
+
try {
|
|
23
|
+
return readdirSync(SESSIONS_DIR)
|
|
24
|
+
.filter(f => f.startsWith('session-') && f.endsWith('.json'))
|
|
25
|
+
.sort()
|
|
26
|
+
.reverse()
|
|
27
|
+
.map(f => join(SESSIONS_DIR, f));
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Read and parse a session summary file.
|
|
35
|
+
* Returns null if unreadable or malformed.
|
|
36
|
+
*/
|
|
37
|
+
function readSessionFile(filePath) {
|
|
38
|
+
try {
|
|
39
|
+
const raw = readFileSync(filePath, 'utf-8');
|
|
40
|
+
const parsed = JSON.parse(raw);
|
|
41
|
+
if (!parsed.timestamp || typeof parsed.summary !== 'string')
|
|
42
|
+
return null;
|
|
43
|
+
return parsed;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Tokenize a query string into lowercase search terms.
|
|
51
|
+
* Removes stop words to keep matching meaningful.
|
|
52
|
+
*/
|
|
53
|
+
function tokenize(query) {
|
|
54
|
+
const stopWords = new Set([
|
|
55
|
+
'a', 'an', 'the', 'and', 'or', 'in', 'on', 'at', 'to', 'for',
|
|
56
|
+
'of', 'with', 'by', 'from', 'is', 'was', 'are', 'were', 'be',
|
|
57
|
+
'i', 'we', 'you', 'it', 'this', 'that', 'what', 'how', 'when',
|
|
58
|
+
]);
|
|
59
|
+
return query
|
|
60
|
+
.toLowerCase()
|
|
61
|
+
.split(/[\s,._\-/()[\]{}:;'"!?+]+/)
|
|
62
|
+
.filter(t => t.length >= 2 && !stopWords.has(t));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Count how many times any term from `terms` appears in `text`.
|
|
66
|
+
* Returns the hit count and which field this came from.
|
|
67
|
+
*/
|
|
68
|
+
function countHits(text, terms) {
|
|
69
|
+
const lower = text.toLowerCase();
|
|
70
|
+
return terms.reduce((acc, term) => {
|
|
71
|
+
// Count occurrences of the term in text
|
|
72
|
+
const re = new RegExp(term.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g');
|
|
73
|
+
const matches = lower.match(re);
|
|
74
|
+
return acc + (matches ? matches.length : 0);
|
|
75
|
+
}, 0);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Score a session against the search terms.
|
|
79
|
+
* Higher weight is given to summary and commits (intent-rich) vs file paths.
|
|
80
|
+
*/
|
|
81
|
+
function scoreSession(session, terms) {
|
|
82
|
+
let score = 0;
|
|
83
|
+
const matchedIn = [];
|
|
84
|
+
const summaryHits = countHits(session.summary, terms);
|
|
85
|
+
if (summaryHits > 0) {
|
|
86
|
+
score += summaryHits * 3;
|
|
87
|
+
matchedIn.push('summary');
|
|
88
|
+
}
|
|
89
|
+
const commitText = session.commits.join(' ');
|
|
90
|
+
const commitHits = countHits(commitText, terms);
|
|
91
|
+
if (commitHits > 0) {
|
|
92
|
+
score += commitHits * 2;
|
|
93
|
+
matchedIn.push('commits');
|
|
94
|
+
}
|
|
95
|
+
const fileText = session.files_modified.join(' ');
|
|
96
|
+
const fileHits = countHits(fileText, terms);
|
|
97
|
+
if (fileHits > 0) {
|
|
98
|
+
score += fileHits * 1;
|
|
99
|
+
matchedIn.push('files');
|
|
100
|
+
}
|
|
101
|
+
const agentText = session.agents_used.join(' ');
|
|
102
|
+
const agentHits = countHits(agentText, terms);
|
|
103
|
+
if (agentHits > 0) {
|
|
104
|
+
score += agentHits * 2;
|
|
105
|
+
matchedIn.push('agents');
|
|
106
|
+
}
|
|
107
|
+
if (session.working_directory) {
|
|
108
|
+
const wdHits = countHits(session.working_directory, terms);
|
|
109
|
+
if (wdHits > 0) {
|
|
110
|
+
score += wdHits * 1;
|
|
111
|
+
matchedIn.push('directory');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return { session, score, matchedIn };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Format duration in seconds to a human-readable string.
|
|
118
|
+
*/
|
|
119
|
+
function formatDuration(seconds) {
|
|
120
|
+
if (seconds <= 0)
|
|
121
|
+
return 'unknown';
|
|
122
|
+
const h = Math.floor(seconds / 3600);
|
|
123
|
+
const m = Math.floor((seconds % 3600) / 60);
|
|
124
|
+
if (h > 0)
|
|
125
|
+
return `${h}h ${m}m`;
|
|
126
|
+
if (m > 0)
|
|
127
|
+
return `${m}m`;
|
|
128
|
+
return `${seconds}s`;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Format a scored session as a compact result block.
|
|
132
|
+
*/
|
|
133
|
+
function formatSearchResult(scored, rank) {
|
|
134
|
+
const { session, score, matchedIn } = scored;
|
|
135
|
+
const date = new Date(session.timestamp).toLocaleString();
|
|
136
|
+
const duration = formatDuration(session.duration_seconds);
|
|
137
|
+
let out = `### ${rank}. ${date} (${duration}) — score: ${score}\n`;
|
|
138
|
+
out += `**Matched in:** ${matchedIn.join(', ')}\n`;
|
|
139
|
+
out += `**Summary:** ${session.summary}\n`;
|
|
140
|
+
if (session.working_directory) {
|
|
141
|
+
out += `**Directory:** \`${session.working_directory}\`\n`;
|
|
142
|
+
}
|
|
143
|
+
if (session.commits.length > 0) {
|
|
144
|
+
out += `**Commits:** ${session.commits.slice(0, 3).join(' | ')}\n`;
|
|
145
|
+
}
|
|
146
|
+
if (session.agents_used.length > 0) {
|
|
147
|
+
out += `**Agents:** ${session.agents_used.join(', ')}\n`;
|
|
148
|
+
}
|
|
149
|
+
if (session.files_modified.length > 0) {
|
|
150
|
+
const shown = session.files_modified.slice(0, 5);
|
|
151
|
+
const extra = session.files_modified.length - shown.length;
|
|
152
|
+
out += `**Files:** ${shown.map(f => `\`${f}\``).join(', ')}`;
|
|
153
|
+
if (extra > 0)
|
|
154
|
+
out += ` _+${extra} more_`;
|
|
155
|
+
out += '\n';
|
|
156
|
+
}
|
|
157
|
+
return out;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Register session search tools with the MCP server.
|
|
161
|
+
*/
|
|
162
|
+
export function registerSessionSearchTools(ctx) {
|
|
163
|
+
const { server } = ctx;
|
|
164
|
+
// ── DEFERRED tool: loaded on-demand for session history search ───────────────
|
|
165
|
+
// ============================================================
|
|
166
|
+
// Tool: merlin_session_search
|
|
167
|
+
// ============================================================
|
|
168
|
+
server.tool('merlin_session_search', 'Search across all previous sessions by keyword. Find when a feature was built, what decisions were made, or which agents were used for similar tasks. Searches session summaries, commit messages, modified files, and agents used. Returns matching sessions sorted by relevance.', {
|
|
169
|
+
query: z.string().describe('Search terms (e.g., "OAuth login", "stripe payments", "tests-qa refactor")'),
|
|
170
|
+
limit: z.number().optional().describe('Maximum results to return (1-20, default: 5)'),
|
|
171
|
+
}, async ({ query, limit }) => {
|
|
172
|
+
const maxResults = Math.min(Math.max(limit || 5, 1), 20);
|
|
173
|
+
if (!query.trim()) {
|
|
174
|
+
return {
|
|
175
|
+
content: [{
|
|
176
|
+
type: 'text',
|
|
177
|
+
text: 'Please provide a search query. Example: `merlin_session_search(query="authentication")`',
|
|
178
|
+
}],
|
|
179
|
+
isError: true,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
const terms = tokenize(query);
|
|
183
|
+
if (terms.length === 0) {
|
|
184
|
+
return {
|
|
185
|
+
content: [{
|
|
186
|
+
type: 'text',
|
|
187
|
+
text: `Query "${query}" produced no searchable terms after filtering. Try more specific keywords.`,
|
|
188
|
+
}],
|
|
189
|
+
isError: true,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
const files = getSessionFiles();
|
|
193
|
+
if (files.length === 0) {
|
|
194
|
+
return {
|
|
195
|
+
content: [{
|
|
196
|
+
type: 'text',
|
|
197
|
+
text: '## No Session History\n\nNo session summaries found in `~/.claude/merlin/sessions/`.\n\nSession summaries are written automatically at session end by the Merlin session-end hook.',
|
|
198
|
+
}],
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
// Score all sessions — skip unreadable files
|
|
202
|
+
const scored = [];
|
|
203
|
+
for (const filePath of files) {
|
|
204
|
+
const session = readSessionFile(filePath);
|
|
205
|
+
if (!session)
|
|
206
|
+
continue;
|
|
207
|
+
const result = scoreSession(session, terms);
|
|
208
|
+
if (result.score > 0)
|
|
209
|
+
scored.push(result);
|
|
210
|
+
}
|
|
211
|
+
// Sort by score desc, then by timestamp desc (recency tiebreak)
|
|
212
|
+
scored.sort((a, b) => {
|
|
213
|
+
if (b.score !== a.score)
|
|
214
|
+
return b.score - a.score;
|
|
215
|
+
return new Date(b.session.timestamp).getTime() - new Date(a.session.timestamp).getTime();
|
|
216
|
+
});
|
|
217
|
+
const topResults = scored.slice(0, maxResults);
|
|
218
|
+
if (topResults.length === 0) {
|
|
219
|
+
return {
|
|
220
|
+
content: [{
|
|
221
|
+
type: 'text',
|
|
222
|
+
text: `## No Matches Found\n\nNo sessions matched "${query}" across ${files.length} session(s).\n\nTry:\n- Broader terms (e.g., "auth" instead of "OAuth PKCE")\n- File names, agent names, or commit keywords\n- \`merlin_session_restore()\` to see recent sessions without filtering`,
|
|
223
|
+
}],
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
let response = `# Session Search: "${query}"\n\n`;
|
|
227
|
+
response += `Found **${topResults.length}** match(es) across ${files.length} session(s):\n\n`;
|
|
228
|
+
topResults.forEach((s, i) => {
|
|
229
|
+
response += formatSearchResult(s, i + 1);
|
|
230
|
+
if (i < topResults.length - 1)
|
|
231
|
+
response += '\n---\n\n';
|
|
232
|
+
});
|
|
233
|
+
response += '\n\n---\n';
|
|
234
|
+
response += `Use \`merlin_session_restore(count=${maxResults})\` to view the most recent sessions without filtering.\n`;
|
|
235
|
+
return {
|
|
236
|
+
content: [{ type: 'text', text: response }],
|
|
237
|
+
};
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=session-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-search.js","sourceRoot":"","sources":["../../../src/server/tools/session-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export function registerSightsIndexTools(ctx) {
|
|
|
10
10
|
const { server, client } = ctx;
|
|
11
11
|
// ── DEFERRED tool: loaded on-demand for browsing open source references ──
|
|
12
12
|
// Tool: merlin_browse_sights
|
|
13
|
-
server.tool('merlin_browse_sights', 'Search the public Sights catalog of analyzed open source repositories. Use when the user asks for open source examples,
|
|
13
|
+
server.tool('merlin_browse_sights', 'Search the public Sights catalog of analyzed open source repositories for reference implementations and architecture inspiration. Use when: the user asks for open source examples, you need to see how others solved a problem, you want reference implementations to learn from, or you\'re seeking architecture patterns. Returns analyzed repos with star count, description, and topics. Follow up with merlin_get_public_sight_context to explore a specific codebase in depth.', {
|
|
14
14
|
query: z.string().describe('Search query (e.g., "authentication", "react hooks", "REST API")'),
|
|
15
15
|
limit: z.number().optional().describe('Maximum number of results to return (1-20, default: 5)'),
|
|
16
16
|
}, async ({ query, limit }) => {
|
|
@@ -59,7 +59,7 @@ export function registerSightsIndexTools(ctx) {
|
|
|
59
59
|
});
|
|
60
60
|
// ── DEFERRED tool: loaded on-demand for exploring a specific open source repo
|
|
61
61
|
// Tool: merlin_get_public_sight_context
|
|
62
|
-
server.tool('merlin_get_public_sight_context', '
|
|
62
|
+
server.tool('merlin_get_public_sight_context', 'Deep-dive into a specific publicly analyzed open source repository: architecture overview, full tech stack, coding conventions, entry points, and key design patterns. Use after merlin_browse_sights to extract actionable patterns you can apply to your own project. Provide owner + repo name from the browse results.', {
|
|
63
63
|
owner: z.string().describe('Repository owner (GitHub username or org)'),
|
|
64
64
|
repo: z.string().describe('Repository name'),
|
|
65
65
|
}, async ({ owner, repo }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sights-index.js","sourceRoot":"","sources":["../../../src/server/tools/sights-index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAgB;IACvD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAE/B,4EAA4E;IAC5E,6BAA6B;IAC7B,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"sights-index.js","sourceRoot":"","sources":["../../../src/server/tools/sights-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-route.d.ts","sourceRoot":"","sources":["../../../src/server/tools/smart-route.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA0D9C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"smart-route.d.ts","sourceRoot":"","sources":["../../../src/server/tools/smart-route.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA0D9C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,QA8GvD"}
|
|
@@ -56,11 +56,10 @@ function getAvailableAgents() {
|
|
|
56
56
|
}
|
|
57
57
|
export function registerSmartRouteTools(ctx) {
|
|
58
58
|
const { server, client } = ctx;
|
|
59
|
-
server.tool('merlin_smart_route', 'Discovery-first routing: describe
|
|
60
|
-
'
|
|
61
|
-
'Returns a ranked recommendation with the
|
|
62
|
-
'Use
|
|
63
|
-
'if a better specialist exists before defaulting to a built-in agent.', {
|
|
59
|
+
server.tool('merlin_smart_route', 'Discovery-first agent routing: describe what you want done and Merlin finds the best agent — ' +
|
|
60
|
+
'scores both installed local agents AND the community catalog of 500+ graded agents by keyword relevance. ' +
|
|
61
|
+
'Returns a ranked recommendation with the top match and why it was chosen. ' +
|
|
62
|
+
'Use when you don\'t know which agent to pick, when starting a new type of task, or when you want to check if a better specialist exists before defaulting to a built-in agent.', {
|
|
64
63
|
task: z.string().describe('What needs to be done (e.g., "add Stripe payments", "write E2E tests", "security audit")'),
|
|
65
64
|
context: z.string().optional().describe('Additional context for the task'),
|
|
66
65
|
}, async ({ task }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-route.js","sourceRoot":"","sources":["../../../src/server/tools/smart-route.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"smart-route.js","sourceRoot":"","sources":["../../../src/server/tools/smart-route.ts"],"names":[],"mappings":"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"}
|
|
@@ -297,7 +297,7 @@ export function registerVerificationTools(ctx) {
|
|
|
297
297
|
const { server, getRepoRootPath } = ctx;
|
|
298
298
|
// ── DEFERRED tool: loaded on-demand for quality assurance and validation ─
|
|
299
299
|
// Tool: merlin_run_verification
|
|
300
|
-
server.tool('merlin_run_verification', 'Run a 6-phase quality check pipeline: Build → TypeScript
|
|
300
|
+
server.tool('merlin_run_verification', 'Run a 6-phase quality check pipeline: Build → TypeScript type-check → Lint (ESLint/Biome) → Tests → Security audit (npm audit + .env check) → Git diff. Auto-detects package manager (npm/pnpm/yarn/bun) and available scripts. Returns pass/fail/warn per phase with error output. Use after major changes, before committing, after refactoring, or every 15 minutes during long autonomous sessions. Pass a phases array to run only a subset.', {
|
|
301
301
|
phases: z.array(z.enum(['build', 'types', 'lint', 'tests', 'security', 'diff'])).optional()
|
|
302
302
|
.describe('Specific phases to run (default: all)'),
|
|
303
303
|
format: z.enum(['full', 'summary']).optional().default('full')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/server/tools/verification.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/server/tools/verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ color: blue
|
|
|
6
6
|
version: "1.0.0"
|
|
7
7
|
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
8
8
|
effort: low
|
|
9
|
+
background: true
|
|
9
10
|
permissionMode: bypassPermissions
|
|
10
11
|
maxTurns: 100
|
|
11
12
|
---
|
|
@@ -128,3 +129,11 @@ You should:
|
|
|
128
129
|
- Propose architectural improvements for long-term maintainability
|
|
129
130
|
|
|
130
131
|
Remember: Your goal is a codebase where any developer can quickly find, understand, and modify code without being overwhelmed by file size or lost in poor organization.
|
|
132
|
+
|
|
133
|
+
<critical_actions>
|
|
134
|
+
## Critical Actions (NEVER violate these)
|
|
135
|
+
|
|
136
|
+
1. NEVER approve files over 400 lines without flagging for split
|
|
137
|
+
2. NEVER reorganize code without updating all imports
|
|
138
|
+
3. ALWAYS verify the project builds after reorganization
|
|
139
|
+
</critical_actions>
|