Abilities-First Service Layer

Data Machine’s public service layer is the WordPress Abilities API. REST controllers, WP-CLI commands, chat tools, system tasks, and extension integrations call datamachine/* abilities instead of reaching into manager classes or controller internals.

The legacy Services directory has been removed. Current business operations live in focused ability classes under inc/Abilities/, with lower-level repositories and core classes kept as implementation details behind those abilities.

Migration Status

The migration from OOP service managers to WordPress Abilities API is complete:

Former ServiceReplacementLocation
FlowManagerFlow ability classesinc/Abilities/Flow/
PipelineManagerPipeline ability classesinc/Abilities/Pipeline/
PipelineStepManagerPipelineStepAbilitiesinc/Abilities/PipelineStepAbilities.php
FlowStepManagerFlow step ability classesinc/Abilities/FlowStep/
JobManagerJob ability classesinc/Abilities/Job/
ProcessedItemsManagerProcessedItemsAbilitiesinc/Abilities/ProcessedItemsAbilities.php
HandlerServiceHandlerAbilitiesinc/Abilities/HandlerAbilities.php
StepTypeServiceStepTypeAbilitiesinc/Abilities/StepTypeAbilities.php
LogsManagerLogAbilitiesinc/Abilities/LogAbilities.php
CacheManagerAbility-level/cache-owner invalidation methodsPer-ability class or owning core class
AuthProviderServiceAuthAbilitiesinc/Abilities/AuthAbilities.php

Abilities Overview

Ability classes under inc/Abilities/ register the operations Data Machine exposes to REST, WP-CLI, chat tools, background jobs, and external integrations. The current registry includes 204 datamachine/* abilities across domains including:

  • Pipeline and pipeline-step CRUD, duplication, import, and export
  • Flow CRUD, scheduling, duplication, pause/resume, webhook triggers, and per-step configuration
  • Prompt queues, fetch config-patch queues, and queue mode management
  • Job execution, retry/fail/delete/recovery, flow health, and summaries
  • Agent identity, access grants, tokens, active-agent selection, remote calls, memory, and self-memory writes
  • File, scaffold, chat, email, media, SEO, taxonomy CRUD/resolution/merge, settings, auth, logs, source inventory, and analytics operations

Architecture Principles

  • Standardized Capability Discovery: Public operations are exposed via wp_register_ability()
  • Single Responsibility: Each ability class handles one domain
  • Centralized Business Logic: Consistent validation and error handling
  • Permission Integration: Abilities use PermissionHelper for Data Machine capabilities, agent token ceilings, pre-authenticated contexts, Action Scheduler, and WP-CLI
  • Cache Management: Cache invalidation stays with the ability or core class that owns the cached domain

Cache Management

Cache invalidation is distributed across ability classes:

php
// Handler cache invalidation
HandlerAbilities::clearCache();

// Step type cache invalidation
StepTypeAbilities::clearCache();

// Auth provider cache invalidation
AuthAbilities::clearCache();

// Settings cache invalidation
PluginSettings::clearCache();

Integration Points

REST API Endpoints

REST endpoints delegate to abilities for business logic:

php
// Get the ability
$ability = wp_get_ability('datamachine/get-pipelines');
if (!$ability) {
    return new WP_Error('ability_not_found', 'Ability not found', ['status' => 500]);
}

// Execute with input
$result = $ability->execute(['per_page' => 10]);

CLI Commands

WP-CLI commands execute abilities directly:

php
// CLI handler calls ability
$ability = wp_get_ability('datamachine/execute-workflow');
$result = $ability->execute([
    'pipeline_id' => $pipeline_id,
    'handler_config' => $config,
]);

Chat Tools

Chat tools delegate to abilities:

php
// Tool execution via ability
$ability = wp_get_ability('datamachine/create-flow');
$result = $ability->execute([
    'pipeline_id' => $pipeline_id,
    'name' => $flow_name,
]);

Error Handling

Abilities provide consistent error handling:

  • Validation: Input sanitization and validation before operations
  • Logging: Comprehensive logging via LogAbilities
  • Graceful Failures: Proper error responses without system crashes
  • Permission Checks: All abilities verify user capabilities