BREAKING: LLMRouter now requires explicit LLMProvider New Abstractions: - LLMProvider interface: swap providers (OpenAI, Claude, local, etc) - SpecBuilder interface: custom spec generation strategies - ParameterBinder interface: flexible parameter resolution - ActivityExecutor interface: pluggable activity execution - WorkflowValidator interface: composable validation Provider System: - ProviderRegistry: manage multiple LLM providers - RoutingProviderLLM: fallback across providers - CachingLLMProvider: caching wrapper - RetryingLLMProvider: retry wrapper Spec Building: - DefaultSpecBuilder: basic spec generation - CronSpecBuilder: cron workflow specialization - SpecBuilderFactory: builder selection - CompositeSpecBuilder: multi-strategy fallback - BuildMetadata: context for builders Validators: - StateGraphValidator: DAG structure - ActivityAvailabilityValidator: activity existence - TimeoutValidator: timeout format - CompositeValidator: multiple validators - TransitionValidator: state transitions Refactored Components: - LLMRouter: config-driven, provider-agnostic - LLMClient: now implements LLMProvider - llm_router.go: 97 fewer lines (delegated to builders) Migration Path: OLD: NewLLMRouter(kb) NEW: NewLLMRouter(LLMRouterConfig{Provider: ..., KB: ...})
- Add RoutingWorkflow: generic state machine executor for WorkflowSpec - Add LLM Router: natural language → WorkflowSpec generation - Add RetrieveMemoryActivity: query poimen-memory for context - Add activities: AnalyzeCode, SecurityScan, GenerateReport, Notify, etc. - Add agent-prompts/router: LLM prompt documentation - Extend starter with --route flag for routing workflows - Remove orchestrator job (trigger via API/message instead) - Clean up: move docs to Desktop, add .gitignore for *.md