Add session management MCP tools (Phase 3)
Implemented 8 new session management tools: - session_start: Initialize session with metadata tracking - session_update: Update session metrics during execution - session_end: Close session with summary and embedding - session_list: List sessions with filtering - session_search: Semantic search across sessions - session_context: Get complete session context (tasks, commits, builds, memories) - build_record: Link builds to sessions and versions - session_commit_link: Link commits to sessions Enhanced existing tools: - memory_add: Added session_id and task_id parameters - Updated all memory queries to use 'memories' table (renamed from session_memories) Implementation: - Created src/tools/sessions.ts with all session operations - Updated src/tools/memories.ts for new schema - Added 8 session tool definitions to src/tools/index.ts - Registered all session tools in src/index.ts switch statement - TypeScript compilation successful Related: CF-167 (Fix shared session-summary.md file conflict)
This commit is contained in:
75
src/index.ts
75
src/index.ts
@@ -37,6 +37,16 @@ import {
|
||||
componentGraph,
|
||||
} from './tools/impact.js';
|
||||
import { memoryAdd, memorySearch, memoryList, memoryContext } from './tools/memories.js';
|
||||
import {
|
||||
sessionStart,
|
||||
sessionUpdate,
|
||||
sessionEnd,
|
||||
sessionList,
|
||||
sessionSearch,
|
||||
sessionContext,
|
||||
buildRecord,
|
||||
sessionCommitLink,
|
||||
} from './tools/sessions.js';
|
||||
|
||||
// Create MCP server
|
||||
const server = new Server(
|
||||
@@ -329,6 +339,8 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
||||
content: a.content,
|
||||
context: a.context,
|
||||
project: a.project,
|
||||
session_id: a.session_id,
|
||||
task_id: a.task_id,
|
||||
});
|
||||
break;
|
||||
case 'memory_search':
|
||||
@@ -350,6 +362,69 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
||||
result = await memoryContext(a.project, a.task_description);
|
||||
break;
|
||||
|
||||
// Sessions
|
||||
case 'session_start':
|
||||
result = await sessionStart({
|
||||
session_id: a.session_id,
|
||||
project: a.project,
|
||||
working_directory: a.working_directory,
|
||||
git_branch: a.git_branch,
|
||||
initial_prompt: a.initial_prompt,
|
||||
});
|
||||
break;
|
||||
case 'session_update':
|
||||
result = await sessionUpdate({
|
||||
session_id: a.session_id,
|
||||
message_count: a.message_count,
|
||||
token_count: a.token_count,
|
||||
tools_used: a.tools_used,
|
||||
});
|
||||
break;
|
||||
case 'session_end':
|
||||
result = await sessionEnd({
|
||||
session_id: a.session_id,
|
||||
summary: a.summary,
|
||||
status: a.status,
|
||||
});
|
||||
break;
|
||||
case 'session_list':
|
||||
result = await sessionList({
|
||||
project: a.project,
|
||||
status: a.status,
|
||||
since: a.since,
|
||||
limit: a.limit,
|
||||
});
|
||||
break;
|
||||
case 'session_search':
|
||||
result = await sessionSearch({
|
||||
query: a.query,
|
||||
project: a.project,
|
||||
limit: a.limit,
|
||||
});
|
||||
break;
|
||||
case 'session_context':
|
||||
result = await sessionContext(a.session_id);
|
||||
break;
|
||||
case 'build_record':
|
||||
result = await buildRecord(
|
||||
a.session_id,
|
||||
a.version_id,
|
||||
a.build_number,
|
||||
a.git_commit_sha,
|
||||
a.status,
|
||||
a.started_at
|
||||
);
|
||||
break;
|
||||
case 'session_commit_link':
|
||||
result = await sessionCommitLink(
|
||||
a.session_id,
|
||||
a.commit_sha,
|
||||
a.repo,
|
||||
a.commit_message,
|
||||
a.committed_at
|
||||
);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new Error(`Unknown tool: ${name}`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user