Skip to content

Engine Decomposition: Extract remaining 13 plugins (Phase 3) #83

Description

@intel352

Overview

Extract all remaining module types from engine.go into plugins, following the pattern established by the HTTP and Observability extractions in Phase 2.

Reference: docs/PLAN_ENGINE_DECOMPOSITION.md — Phase 3
Depends on: Phase 2 (#82)

Extraction Order (by dependency and risk)

Order Plugin Module Types Steps Handler Trigger
3a workflow-plugin-messaging messaging.broker, messaging.broker.eventbus, messaging.handler, messaging.nats, messaging.kafka + 2 step.publish MessagingWorkflowHandler event, eventbus
3b workflow-plugin-statemachine statemachine.engine, state.tracker, state.connector — StateMachineWorkflowHandler —
3c workflow-plugin-auth auth.jwt, auth.user-store — — (wiring hook) —
3d workflow-plugin-storage storage.s3, storage.local, storage.gcs, storage.sqlite, persistence.store, database.workflow step.db_query, step.db_exec — —
3e workflow-plugin-api api.handler, api.query, api.command, api.gateway, openapi.consumer + 2 — — —
3f workflow-plugin-pipeline-steps — step.validate, step.transform, step.set, step.conditional, step.shell_exec, step.deploy, step.scan_* — —
3g workflow-plugin-cicd — 12 CI/CD step types — —
3h workflow-plugin-featureflags featureflag.service step.feature_check, step.feature_set — —
3i workflow-plugin-secrets secrets.vault, secrets.aws — — —
3j workflow-plugin-modular-compat scheduler.modular, cache.modular, database.modular — — —
3k workflow-plugin-scheduler — — SchedulerWorkflowHandler schedule
3l workflow-plugin-integration — — IntegrationWorkflowHandler —
3m workflow-plugin-ai dynamic.component AI step types (4) — —

Per-Plugin Pattern

  1. Create plugin package under plugins/<name>/
  2. Implement EnginePlugin interface
  3. Move factory logic from engine.go switch cases
  4. Move step registrations from main.go
  5. Remove switch case from engine.go
  6. Write negative test (core rejects type without plugin)
  7. Write positive test (plugin provides type correctly)
  8. Update main.go to load plugin

Sub-Issues (Optional)

This can be broken into individual plugin PRs if desired — each plugin extraction is independent once Phase 2 establishes the pattern.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions