decide_move_project_to_do
Move a project from the Decide realm to the Do realm using the ADD framework, enabling task completion management within the addTaskManager MCP Server.
Instructions
Move project to Do realm from Decide realm.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectRecordName | Yes | Project record name |
Implementation Reference
- src/index.ts:500-508 (registration)Registration of the 'decide_move_project_to_do' tool including its name, description, and input schema in the ListToolsRequestSchema handler.name: 'decide_move_project_to_do', description: 'Move project to Do realm from Decide realm.', inputSchema: { type: 'object', properties: { projectRecordName: { type: 'string', description: 'Project record name' } }, required: ['projectRecordName'] }
- src/index.ts:724-726 (handler)Handler dispatch in the CallToolRequestSchema switch statement that validates arguments and invokes the moveProjectToRealm method with target 'do'.case 'decide_move_project_to_do': this.validateArgs(args, ['projectRecordName']); return await this.moveProjectToRealm(args.projectRecordName, 'do');
- src/index.ts:1051-1058 (handler)Core handler function that performs realm validation before delegating to moveItemToRealm for the actual project move to Do realm.private async moveProjectToRealm(projectRecordName: string, targetRealm: string) { // Add validation before moving const validationResult = await this.validateRealmTransition(projectRecordName, 'Project', targetRealm as RealmString); if (!validationResult.valid) { throw new McpError(ErrorCode.InvalidParams, validationResult.reason); } return this.moveItemToRealm(projectRecordName, 'Project', targetRealm as RealmString); }
- src/index.ts:1061-1086 (helper)Helper function to validate realm transitions according to ADD framework rules before allowing the move.private async validateRealmTransition(itemRecordName: string, itemType: 'Task' | 'Project', targetRealm: RealmString): Promise<{valid: boolean, reason: string}> { // Mock fetch current item data const currentItem = await this.mockFetchItem(itemRecordName, itemType); if (!currentItem) { return { valid: false, reason: `${itemType} ${itemRecordName} not found` }; } const currentRealmId = currentItem.realmId; const targetRealmId = realmStringToId(targetRealm); // Validate transition rules based on ADD framework switch (currentRealmId) { case REALM_ASSESS_ID: // From Assess (1) return this.validateFromAssess(currentItem, targetRealmId, itemType); case REALM_DECIDE_ID: // From Decide (2) return this.validateFromDecide(currentItem, targetRealmId, itemType); case REALM_DO_ID: // From Do (3) return this.validateFromDo(currentItem, targetRealmId, itemType); default: return { valid: false, reason: `Invalid current realm ID: ${currentRealmId}` }; } }
- src/index.ts:1200-1214 (helper)Helper function that executes the realm change, updates realmId, and applies realm-specific field modifications.private async moveItemToRealm(itemRecordName: string, itemType: 'Task' | 'Project', targetRealmStr: RealmString) { const targetRealmId = realmStringToId(targetRealmStr); // Mock update realmId and clean up fields based on realm rules let updateMessage = `${itemType} ${itemRecordName} moved to ${targetRealmStr} realm (ID: ${targetRealmId})`; // Apply realm-specific cleanup rules if (targetRealmId === REALM_ASSESS_ID) { updateMessage += '. Context and due date cleared for fresh evaluation'; } else if (targetRealmId === REALM_DECIDE_ID && targetRealmStr !== 'decide') { updateMessage += '. Ready for context assignment and due date setting'; } return { content: [{ type: 'text', text: updateMessage }] }; }