feat: Enhance AI Agent and Channel Management
- Updated labels in the AI Agents dashboard for clarity, changing "流程状态" to "Playbook 状态" and "未发布流程" to "未发布 Playbook". - Introduced AI Agent rollout percentage management in channel editing, allowing users to set and rollback rollout percentages. - Added new API endpoints for rolling back AI Agent rollout and fetching agent run metrics. - Implemented new UI components for displaying agent run details, including status, duration, and input/output tokens. - Enhanced type definitions for AdminChannel and AIAgent to include rollout percentages and runtime modes. - Updated navigation to include a section for agent runs. - Added new translations for agent run features in both English and Chinese.
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
package runtime
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
"agent-desk/internal/pkg/errorsx"
|
||||
)
|
||||
|
||||
const (
|
||||
EngineCodeWorkflow = "workflow"
|
||||
EngineCodeAutonomous = "autonomous"
|
||||
)
|
||||
|
||||
// Engine executes one Agent Runtime mode. Implementations must keep business
|
||||
// mutations behind AgentDesk services and return a normalized RunResult.
|
||||
type Engine interface {
|
||||
Code() string
|
||||
Run(ctx context.Context, req RunInput) (*RunResult, error)
|
||||
Resume(ctx context.Context, req ResumeInput) (*RunResult, error)
|
||||
}
|
||||
|
||||
// EngineRegistry resolves the runtime implementation. Workflow is the default
|
||||
// until Agent runtime modes are persisted on AIAgent in the next migration.
|
||||
type EngineRegistry struct {
|
||||
engines map[string]Engine
|
||||
}
|
||||
|
||||
func NewEngineRegistry(engines ...Engine) *EngineRegistry {
|
||||
registry := &EngineRegistry{engines: make(map[string]Engine, len(engines))}
|
||||
for _, engine := range engines {
|
||||
if engine == nil || strings.TrimSpace(engine.Code()) == "" {
|
||||
continue
|
||||
}
|
||||
registry.engines[strings.TrimSpace(engine.Code())] = engine
|
||||
}
|
||||
return registry
|
||||
}
|
||||
|
||||
func NewDefaultEngineRegistry() *EngineRegistry {
|
||||
return NewEngineRegistry(NewWorkflowEngine(), NewAutonomousEngine(), NewHybridEngine())
|
||||
}
|
||||
|
||||
func (r *EngineRegistry) Resolve(code string) (Engine, error) {
|
||||
if r == nil {
|
||||
return nil, errors.New("agent runtime engine registry is not configured")
|
||||
}
|
||||
code = strings.TrimSpace(code)
|
||||
if code == "" {
|
||||
code = EngineCodeWorkflow
|
||||
}
|
||||
engine := r.engines[code]
|
||||
if engine == nil {
|
||||
return nil, errorsx.InvalidParam("agent runtime engine does not exist")
|
||||
}
|
||||
return engine, nil
|
||||
}
|
||||
Reference in New Issue
Block a user