Skip to main content
Glama

π“‚€π“’π“‹Ήπ”Έβ„•π•Œπ”Ήπ•€π•Šπ“‹Ήπ“’π“‚€ - Intelligent Guidance for

by Hive-Academy
workflow-progress-improvements.mdβ€’7.91 kB
# πŸ”§ Workflow Progress System Improvements ## πŸ“Š Summary of Changes Made ### 1. **Enhanced Step Completion Reporting** **BEFORE (Fragile Approach):** ```typescript // Old approach - fragile data extraction const executionData = { someField: "value", anotherField: "data" }; // Unknown structure // Service tried to guess what data existed private extractValidationResults(executionData?: unknown) { // Try to find validation-related fields by guessing const validationFields = ['validationResults', 'qualityChecksComplete']; // ...fragile extraction logic } ``` **AFTER (Structured Approach):** ```typescript // New approach - explicit Zod schema validation const reportData = { executionId: "exec-123", stepId: "step-456", result: "success", // Structured execution data with clear schema executionData: { outputSummary: "Clear description of what was accomplished", filesModified: ["file1.ts", "file2.ts"], commandsExecuted: ["npm test", "git commit"], // ... other structured fields }, // Explicit validation results validationResults: { allChecksPassed: true, qualityScore: 9.5, checklist: [ { item: "Code quality check", passed: true, evidence: "All linting rules passed" } ] }, // Structured report data reportData: { stepType: "implementation", keyAchievements: ["Feature implemented successfully"], nextStepRecommendations: ["Add integration tests"] } }; ``` ### 2. **Fixed Step Progress Tracking** **BEFORE (Incorrect Approach):** ```typescript // Old - used taskId for progress tracking const GetStepProgressInputSchema = z.object({ id: z.number().describe('Task ID for progress query'), roleId: z.string().optional() }); // Queried by taskId instead of executionId const executionResult = await this.workflowExecutionOperationsService.getExecution({ taskId: input.id, }); ``` **AFTER (Correct Approach):** ```typescript // New - uses executionId for progress tracking const GetStepProgressInputSchema = z.object({ executionId: z.string().describe('Execution ID for progress query'), roleId: z.string().optional() }); // Queries by executionId as intended const executionResult = await this.workflowExecutionOperationsService.getExecution({ executionId: input.executionId, }); ``` ### 3. **Comprehensive Progress Information** **BEFORE (Limited Data):** ```typescript // Old - minimal progress info return { taskId: input.id, status: execution.completedAt ? 'completed' : 'in_progress', currentStep: { name: currentStep?.name || 'No current step', status: execution.completedAt ? 'completed' : 'active', stepId: currentStep?.id, }, progress: { stepsCompleted: execution.stepsCompleted || 0, progressPercentage: execution.progressPercentage || 0, } }; ``` **AFTER (Rich Context Data):** ```typescript // New - comprehensive progress with detailed context return { executionId: input.executionId, taskId: execution.taskId, status: execution.completedAt ? 'completed' : 'in_progress', // Current execution state currentStep: { id: currentStep?.id, name: currentStep?.name || 'No current step', status: execution.completedAt ? 'completed' : 'active', roleId: execution.currentRoleId, roleName: currentRole?.name || 'Unknown', }, // Progress metrics progress: { stepsCompleted: execution.stepsCompleted || 0, progressPercentage: execution.progressPercentage || 0, totalSteps: execution.totalSteps || 0, }, // πŸ”§ NEW: Detailed step execution history completedSteps: [ { stepId: "step-123", stepName: "Implementation", roleId: "role-456", roleName: "Senior Developer", completedAt: "2025-07-14T10:00:00Z", executionData: { /* structured data */ }, validationResults: { /* structured validation */ }, reportData: { /* structured report */ } } ], // Execution context for workflow continuation executionContext: { phase: "in-progress", startedAt: "2025-07-14T09:00:00Z", executionMode: "GUIDED", lastProgressUpdate: "2025-07-14T10:00:00Z" }, // Summary for AI agent understanding contextSummary: { totalStepsCompleted: 3, lastCompletedStep: { /* last step info */ }, hasValidationData: true, hasReportData: true, keyFindings: [ "Setup: Project initialized", "Implementation: Core features implemented", "Testing: All tests passing" ] } }; ``` ## 🎯 Key Benefits ### 1. **Type Safety & Validation** - βœ… **Zod Schema Validation**: Ensures data structure correctness - βœ… **Clear Error Messages**: Helpful validation errors when data is incorrect - βœ… **TypeScript Integration**: Full type safety throughout the workflow ### 2. **Better Agent Context** - βœ… **Rich Progress Data**: Agents can understand what work has been completed - βœ… **Structured History**: Complete execution history with detailed context - βœ… **Key Findings**: Summarized insights from completed steps - βœ… **Workflow Continuation**: All context needed to continue work seamlessly ### 3. **Improved Maintainability** - βœ… **No Data Guessing**: Explicit schema instead of fragile extraction - βœ… **Extensible Schema**: Easy to add new fields without breaking changes - βœ… **Documentation**: Schema serves as documentation for expected data - βœ… **Backward Compatibility**: Old methods deprecated but not removed ### 4. **Enhanced Reliability** - βœ… **Consistent Data Structure**: All completion reports follow same schema - βœ… **Validation at Input**: Catches issues before they reach the database - βœ… **Proper Error Handling**: Clear error messages for debugging - βœ… **Database Integrity**: Structured data ensures consistent storage ## πŸš€ Usage for AI Agents ### **Simple Step Completion** ```typescript await report_step_completion({ executionId: "exec-123", stepId: "step-456", result: "success" }); ``` ### **Detailed Step Completion** ```typescript await report_step_completion({ executionId: "exec-123", stepId: "step-456", result: "success", executionTime: 5000, executionData: { outputSummary: "Successfully implemented authentication system", filesModified: ["auth.service.ts", "auth.controller.ts"], commandsExecuted: ["npm test", "git commit"] }, validationResults: { allChecksPassed: true, qualityScore: 9.5, checklist: [ { item: "All tests passing", passed: true, evidence: "12/12 tests pass" } ] }, reportData: { stepType: "implementation", keyAchievements: ["Authentication system implemented"], nextStepRecommendations: ["Add authorization system"] } }); ``` ### **Get Comprehensive Progress** ```typescript const progress = await get_step_progress({ executionId: "exec-123" }); // Returns rich context including: // - Current step details // - All completed steps with their data // - Validation results from each step // - Report data from each step // - Key findings summary // - Context for continuation ``` ## πŸ”„ Migration Path 1. **Existing Workflows**: Continue to work with backward compatibility 2. **New Workflows**: Use structured schema for better experience 3. **Gradual Adoption**: Agents can start using structured data incrementally 4. **No Breaking Changes**: Old API still supported during transition This improvement transforms the workflow system from fragile data extraction to robust, type-safe, structured data handling that provides AI agents with the context they need to continue work seamlessly.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Hive-Academy/Anubis-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server