@stackmemoryai/stackmemory
Version:
Project-scoped memory for AI coding tools. Durable context across sessions with MCP integration, frames, smart retrieval, Claude Code skills, and automatic hooks.
167 lines (166 loc) • 5.16 kB
JavaScript
import { fileURLToPath as __fileURLToPath } from 'url';
import { dirname as __pathDirname } from 'path';
const __filename = __fileURLToPath(import.meta.url);
const __dirname = __pathDirname(__filename);
import {
ContextHandlers
} from "./context-handlers.js";
import { TaskHandlers } from "./task-handlers.js";
import {
LinearHandlers
} from "./linear-handlers.js";
import {
TraceHandlers
} from "./trace-handlers.js";
import {
DiscoveryHandlers
} from "./discovery-handlers.js";
import {
ContextHandlers as ContextHandlers2
} from "./context-handlers.js";
import { TaskHandlers as TaskHandlers2 } from "./task-handlers.js";
import {
LinearHandlers as LinearHandlers2
} from "./linear-handlers.js";
import { TraceHandlers as TraceHandlers2 } from "./trace-handlers.js";
class MCPHandlerFactory {
contextHandlers;
taskHandlers;
linearHandlers;
traceHandlers;
constructor(deps) {
this.contextHandlers = new ContextHandlers2({
frameManager: deps.frameManager,
contextRetrieval: deps.contextRetrieval
});
this.taskHandlers = new TaskHandlers2({
taskStore: deps.taskStore,
projectId: deps.projectId
});
this.linearHandlers = new LinearHandlers2({
linearAuthManager: deps.linearAuthManager,
linearSync: deps.linearSync,
taskStore: deps.taskStore
});
this.traceHandlers = new TraceHandlers2({
traceDetector: deps.traceDetector,
browserMCP: deps.browserMCP
});
}
/**
* Get handler for a specific tool
*/
getHandler(toolName) {
switch (toolName) {
// Context handlers
case "get_context":
return this.contextHandlers.handleGetContext.bind(this.contextHandlers);
case "add_decision":
return this.contextHandlers.handleAddDecision.bind(
this.contextHandlers
);
case "start_frame":
return this.contextHandlers.handleStartFrame.bind(this.contextHandlers);
case "close_frame":
return this.contextHandlers.handleCloseFrame.bind(this.contextHandlers);
case "add_anchor":
return this.contextHandlers.handleAddAnchor.bind(this.contextHandlers);
case "get_hot_stack":
return this.contextHandlers.handleGetHotStack.bind(
this.contextHandlers
);
// Task handlers
case "create_task":
return this.taskHandlers.handleCreateTask.bind(this.taskHandlers);
case "update_task_status":
return this.taskHandlers.handleUpdateTaskStatus.bind(this.taskHandlers);
case "get_active_tasks":
return this.taskHandlers.handleGetActiveTasks.bind(this.taskHandlers);
case "get_task_metrics":
return this.taskHandlers.handleGetTaskMetrics.bind(this.taskHandlers);
case "add_task_dependency":
return this.taskHandlers.handleAddTaskDependency.bind(
this.taskHandlers
);
// Linear handlers
case "linear_sync":
return this.linearHandlers.handleLinearSync.bind(this.linearHandlers);
case "linear_update_task":
return this.linearHandlers.handleLinearUpdateTask.bind(
this.linearHandlers
);
case "linear_get_tasks":
return this.linearHandlers.handleLinearGetTasks.bind(
this.linearHandlers
);
case "linear_status":
return this.linearHandlers.handleLinearStatus.bind(this.linearHandlers);
// Trace handlers
case "get_traces":
return this.traceHandlers.handleGetTraces.bind(this.traceHandlers);
case "analyze_traces":
return this.traceHandlers.handleAnalyzeTraces.bind(this.traceHandlers);
case "start_browser_debug":
return this.traceHandlers.handleStartBrowserDebug.bind(
this.traceHandlers
);
case "take_screenshot":
return this.traceHandlers.handleTakeScreenshot.bind(this.traceHandlers);
case "execute_script":
return this.traceHandlers.handleExecuteScript.bind(this.traceHandlers);
case "stop_browser_debug":
return this.traceHandlers.handleStopBrowserDebug.bind(
this.traceHandlers
);
default:
throw new Error(`Unknown tool: ${toolName}`);
}
}
/**
* Get all available tool names
*/
getAvailableTools() {
return [
// Context tools
"get_context",
"add_decision",
"start_frame",
"close_frame",
"add_anchor",
"get_hot_stack",
// Task tools
"create_task",
"update_task_status",
"get_active_tasks",
"get_task_metrics",
"add_task_dependency",
// Linear tools
"linear_sync",
"linear_update_task",
"linear_get_tasks",
"linear_status",
// Trace tools
"get_traces",
"analyze_traces",
"start_browser_debug",
"take_screenshot",
"execute_script",
"stop_browser_debug"
];
}
/**
* Check if a tool exists
*/
hasHandler(toolName) {
return this.getAvailableTools().includes(toolName);
}
}
export {
ContextHandlers,
DiscoveryHandlers,
LinearHandlers,
MCPHandlerFactory,
TaskHandlers,
TraceHandlers
};
//# sourceMappingURL=index.js.map