Files
CyberStrikeAI/internal/workflow/eino_runtime.go
T
2026-07-03 19:36:40 +08:00

65 lines
1.5 KiB
Go

package workflow
import (
"context"
"cyberstrike-ai/internal/agent"
"cyberstrike-ai/internal/config"
"cyberstrike-ai/internal/database"
"go.uber.org/zap"
)
type workflowRuntimeCtxKey struct{}
// workflowRuntime carries per-run execution context into Eino Workflow local state.
type workflowRuntime struct {
args RunArgs
runID string
idx *graphIndex
state *WorkflowLocalState
}
func withWorkflowRuntime(ctx context.Context, rt *workflowRuntime) context.Context {
return context.WithValue(ctx, workflowRuntimeCtxKey{}, rt)
}
func workflowRuntimeFrom(ctx context.Context) *workflowRuntime {
rt, _ := ctx.Value(workflowRuntimeCtxKey{}).(*workflowRuntime)
return rt
}
func newWorkflowRuntime(args RunArgs, runID string, idx *graphIndex, inputs map[string]interface{}) *workflowRuntime {
return &workflowRuntime{
args: args,
runID: runID,
idx: idx,
state: newWorkflowLocalState(inputs, runID),
}
}
// RunArgs is the execution context for a role-bound workflow run.
type RunArgs struct {
DB *database.DB
Logger *zap.Logger
Role config.RoleConfig
AppCfg *config.Config
Agent *agent.Agent
ConversationID string
ProjectID string
UserMessage string
History []agent.ChatMessage
RoleTools []string
AgentsMarkdownDir string
SystemPromptExtra string
AssistantMessageID string
Progress agent.ProgressCallback
}
type RunResult struct {
Response string
RunID string
Status string
AwaitingHITL bool
}