mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-04 19:48:02 +02:00
65 lines
1.5 KiB
Go
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
|
|
}
|