@@ -22,32 +22,35 @@ type RunnerResult struct {
2222}
2323
2424type RunnerManager struct {
25- name string
26- page * chrome.Page
27- configs map [string ]Configuration
28- method * method.Method
29- results map [string ]RunnerResult
30- debug bool
31- debugConfigs map [string ]string
32- appConfigRunner config.AppConfigRunner
33- abort bool
25+ appConfigInstance config.AppConfigInstance
26+ page * chrome.Page
27+ configs map [string ]Configuration
28+ method * method.Method
29+ results map [string ]RunnerResult
30+ debug bool
31+ debugConfigs map [string ]string
32+ abort bool
3433}
3534
36- func NewRunnerManager (name string , appConfigRunner config.AppConfigRunner , page * chrome.Page , debug bool ) (* RunnerManager , error ) {
35+ func NewRunnerManager (appConfigInstance config.AppConfigInstance , page * chrome.Page , debug bool , results ... map [string ]RunnerResult ) (* RunnerManager , error ) {
36+ if len (results ) == 0 {
37+ results = []map [string ]RunnerResult {make (map [string ]RunnerResult )}
38+ }
39+
3740 runner := & RunnerManager {
38- name : name ,
39- page : page ,
40- method : method .NewMethod (page ),
41- configs : make (map [string ]Configuration ),
42- results : make (map [string ]RunnerResult ),
43- debug : debug ,
44- debugConfigs : make (map [string ]string ),
45- appConfigRunner : appConfigRunner ,
41+ appConfigInstance : appConfigInstance ,
42+ page : page ,
43+ method : method .NewMethod (page ),
44+ configs : make (map [string ]Configuration ),
45+ results : results [0 ],
46+ debug : debug ,
47+ debugConfigs : make (map [string ]string ),
4648 }
4749 err := runner .LoadConfigurations ()
4850 if err != nil {
4951 return nil , err
5052 }
53+ runner .SetVariable ("TextFilePromptMinSize" , appConfigInstance .TextFilePromptMinSize , "int" )
5154 return runner , nil
5255}
5356
@@ -115,13 +118,13 @@ func (rm *RunnerManager) LoadConfiguration(name, path string) error {
115118// LoadConfigurations scans all yaml files in the runner directory and calls LoadConfiguration method by filename
116119func (rm * RunnerManager ) LoadConfigurations () error {
117120 // Scan all yaml and yml files in the runner directory
118- pattern := filepath .Join ("runner" , rm .name , "*.yaml" )
121+ pattern := filepath .Join ("runner" , rm .appConfigInstance . Name , "*.yaml" )
119122 yamlFiles , err := filepath .Glob (pattern )
120123 if err != nil {
121124 return fmt .Errorf ("failed to scan yaml files: %v" , err )
122125 }
123126
124- pattern = filepath .Join ("runner" , rm .name , "*.yml" )
127+ pattern = filepath .Join ("runner" , rm .appConfigInstance . Name , "*.yml" )
125128 ymlFiles , err := filepath .Glob (pattern )
126129 if err != nil {
127130 return fmt .Errorf ("failed to scan yml files: %v" , err )
@@ -138,11 +141,11 @@ func (rm *RunnerManager) LoadConfigurations() error {
138141 name := strings .TrimSuffix (fileName , filepath .Ext (fileName ))
139142
140143 switch name {
141- case rm .appConfigRunner .Init :
144+ case rm .appConfigInstance . Runner .Init :
142145 name = "init"
143- case rm .appConfigRunner .ChatCompletions :
146+ case rm .appConfigInstance . Runner .ChatCompletions :
144147 name = "chat_completions"
145- case rm .appConfigRunner .ContextCanceled :
148+ case rm .appConfigInstance . Runner .ContextCanceled :
146149 name = "context_canceled"
147150 }
148151
@@ -219,7 +222,7 @@ outLoop:
219222 }
220223
221224 if workflows [executeIndex ].Action == "DoRunner" {
222- r , err := NewRunnerManager (rm .name , rm .appConfigRunner , rm .page , rm .debug )
225+ r , err := NewRunnerManager (rm .appConfigInstance , rm .page , rm .debug , rm .results )
223226 if err != nil {
224227 log .Error (err )
225228 return err
@@ -315,6 +318,8 @@ outLoop:
315318 doFailback = true
316319 } else if rule == "FAILED" {
317320 return fmt .Errorf ("workflow failed" )
321+ } else if rule == "FINISH" {
322+ return fmt .Errorf ("workflow done" )
318323 } else if strings .HasPrefix (rule , "DO-WORKFLOW-IDX:" ) {
319324 log .Debugf ("DO-WORKFLOW-IDX: %s" , rule [16 :])
320325 // Handle DO-WORKFLOW-IDX:1,2,3 cases
@@ -386,6 +391,8 @@ outLoop:
386391 continue outLoop
387392 } else if err .Error () == "workflow failed" {
388393 return err
394+ } else if err .Error () == "workflow done" {
395+ return nil
389396 }
390397
391398 // sub workflow failed, need to retry
@@ -503,7 +510,7 @@ func (rm *RunnerManager) executeMethod(obj any, methodName string, params []inte
503510 input := strings .TrimSpace (reflect .ValueOf (params [i - 1 ]).String ())
504511 if len (input ) > 2 && input [0 ] == '#' && input [len (input )- 1 ] == '#' {
505512 if input == "#NEW_RUNNER#" {
506- newRm , _ := NewRunnerManager (rm .name , rm .appConfigRunner , rm .page , rm .debug )
513+ newRm , _ := NewRunnerManager (rm .appConfigInstance , rm .page , rm .debug , rm .results )
507514 args [paramIndex ] = reflect .ValueOf (newRm )
508515 } else {
509516 input = input [1 : len (input )- 1 ]
0 commit comments