UNPKG

@mseep/atlas-mcp-server

Version:

A Model Context Protocol (MCP) server for ATLAS, a Neo4j-powered task management system for LLM Agents - implementing a three-tier architecture (Projects, Tasks, Knowledge) to manage complex workflows.

113 lines (112 loc) 4.45 kB
import { Neo4jTask, PaginatedResult, TaskFilterOptions } from './types.js'; /** * Service for managing Task entities in Neo4j */ export declare class TaskService { /** * Create a new task and optionally assign it to a user. * @param task Task data, including optional assignedTo for relationship creation * @returns The created task */ static createTask(task: Omit<Neo4jTask, 'id' | 'createdAt' | 'updatedAt'> & { id?: string; assignedTo?: string; }): Promise<Neo4jTask>; /** * Link a Task to a Knowledge item with a specified relationship type. * @param taskId ID of the source Task item * @param knowledgeId ID of the target Knowledge item * @param relationshipType The type of relationship to create (e.g., 'ADDRESSES', 'REFERENCES') - Validation needed * @returns True if the link was created successfully, false otherwise */ static linkTaskToKnowledge(taskId: string, knowledgeId: string, relationshipType: string): Promise<boolean>; /** * Get a task by ID, including the assigned user ID via relationship. * @param id Task ID * @returns The task with assignedToUserId property, or null if not found. */ static getTaskById(id: string): Promise<(Neo4jTask & { assignedToUserId: string | null; }) | null>; /** * Check if all dependencies of a task are completed * @param taskId Task ID to check dependencies for * @returns True if all dependencies are completed, false otherwise */ static areAllDependenciesCompleted(taskId: string): Promise<boolean>; /** * Update a task's properties and handle assignment changes via relationships. * @param id Task ID * @param updates Task updates, including optional assignedTo for relationship changes * @returns The updated task (without assignedTo property) */ static updateTask(id: string, updates: Partial<Omit<Neo4jTask, 'id' | 'projectId' | 'createdAt' | 'updatedAt'>> & { assignedTo?: string | null; }): Promise<Neo4jTask>; /** * Delete a task * @param id Task ID * @returns True if deleted, false if not found */ static deleteTask(id: string): Promise<boolean>; /** * Get tasks for a project with optional filtering and server-side pagination. * Includes assigned user ID via relationship. * @param options Filter and pagination options * @returns Paginated list of tasks including assignedToUserId */ static getTasks(options: TaskFilterOptions): Promise<PaginatedResult<Neo4jTask & { assignedToUserId: string | null; }>>; /** * Add a dependency relationship between tasks * @param sourceTaskId ID of the dependent task (source) * @param targetTaskId ID of the dependency task (target) * @returns The IDs of the two tasks and the relationship ID */ static addTaskDependency(sourceTaskId: string, targetTaskId: string): Promise<{ id: string; sourceTaskId: string; targetTaskId: string; }>; /** * Remove a dependency relationship between tasks * @param dependencyId The ID of the dependency relationship to remove * @returns True if removed, false if not found */ static removeTaskDependency(dependencyId: string): Promise<boolean>; /** * Get task dependencies (both dependencies and dependents) * @param taskId Task ID * @returns Object containing dependencies and dependents */ static getTaskDependencies(taskId: string): Promise<{ dependencies: { id: string; taskId: string; title: string; status: string; priority: string; }[]; dependents: { id: string; taskId: string; title: string; status: string; priority: string; }[]; }>; /** * Assign a task to a user by creating an ASSIGNED_TO relationship. * @param taskId Task ID * @param userId User ID * @returns The updated task (without assignedTo property) */ static assignTask(taskId: string, userId: string): Promise<Neo4jTask>; /** * Unassign a task by deleting the ASSIGNED_TO relationship. * @param taskId Task ID * @returns The updated task (without assignedTo property) */ static unassignTask(taskId: string): Promise<Neo4jTask>; }