- Add LLMAuth struct with support for Bearer, API Key, and Custom auth types - Implement applyAuth() to inject auth headers into LLM requests - Add X-Tenant-ID header for multi-tenant isolation - Add X-OAuth-Scopes header for OAuth2 scope enforcement - Add UpdateAuth() for runtime token refresh (long-running workflows) - Update LLMRouterConfig with Auth and TenantID fields - Document 4 authentication patterns (Bearer, API Key, Custom, Router config) - Add security best practices: token vault integration, tenant isolation, scopes - Add audit headers for compliance & logging - Create multi-tenant router factory pattern Auth types supported: - Bearer: JWT/OAuth2 tokens (most secure for federated access) - API Key: Static keys (X-API-Key header) - Custom: Any custom header-based scheme - None: No authentication Customers can now pass per-tenant JWT tokens with customized scopes and isolated LLM API access per tenant/customer.
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