From b90588f2dfda321fe77965b81eda16aba1be5373 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Fri, 17 May 2024 01:27:12 -0700 Subject: [PATCH] chore: event cleanup, send first start before context/credential --- pkg/engine/engine.go | 7 +++---- pkg/monitor/display.go | 5 +++-- pkg/runner/runner.go | 16 ++++++++-------- pkg/server/server.go | 3 ++- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index d081de41..a88e8415 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -69,10 +69,9 @@ type CallContext struct { type Context struct { commonContext - Ctx context.Context - Parent *Context - Program *types.Program - ToolCategory ToolCategory + Ctx context.Context + Parent *Context + Program *types.Program } type ToolCategory string diff --git a/pkg/monitor/display.go b/pkg/monitor/display.go index f10ef770..9cdae6c2 100644 --- a/pkg/monitor/display.go +++ b/pkg/monitor/display.go @@ -51,7 +51,7 @@ func (c *Console) Start(_ context.Context, prg *types.Program, _ []string, input mon.dump.Program = prg mon.dump.Input = input - log.Fields("runID", mon.dump.ID, "input", input, "program", prg).Debugf("Run started") + log.Fields("runID", mon.dump.ID, "input", input, "program", prg, "type", "runStart").Debugf("Run started") return mon, nil } @@ -210,6 +210,7 @@ func (d *display) Event(event runner.Event) { "id", currentCall.ID, "parentID", currentCall.ParentID, "toolID", currentCall.ToolID, + "type", event.Type, ) _, ok := d.callIDMap[currentCall.ID] @@ -287,7 +288,7 @@ func (d *display) Stop(output string, err error) { d.callLock.Lock() defer d.callLock.Unlock() - log.Fields("runID", d.dump.ID, "output", output, "err", err).Debugf("Run stopped") + log.Fields("runID", d.dump.ID, "output", output, "err", err, "type", "runFinish").Debugf("Run stopped") if d.usage.TotalTokens > 0 { log.Fields("runID", d.dump.ID, "total", d.usage.TotalTokens, "prompt", d.usage.PromptTokens, "completion", d.usage.CompletionTokens).Infof("usage ") } diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index b93511e1..234f308c 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -367,6 +367,13 @@ func (r *Runner) start(callCtx engine.Context, state *State, monitor Monitor, en progress, progressClose := streamProgress(&callCtx, monitor) defer progressClose() + monitor.Event(Event{ + Time: time.Now(), + CallContext: callCtx.GetCallContext(), + Type: EventTypeCallStart, + Content: input, + }) + if len(callCtx.Tool.Credentials) > 0 { var err error env, err = r.handleCredentials(callCtx, monitor, env) @@ -396,13 +403,6 @@ func (r *Runner) start(callCtx engine.Context, state *State, monitor Monitor, en Ports: &r.ports, } - monitor.Event(Event{ - Time: time.Now(), - CallContext: callCtx.GetCallContext(), - Type: EventTypeCallStart, - Content: input, - }) - callCtx.Ctx = context2.AddPauseFuncToCtx(callCtx.Ctx, monitor.Pause) ret, err := e.Start(callCtx, input) @@ -719,7 +719,7 @@ func (r *Runner) subCalls(callCtx engine.Context, monitor Monitor, env []string, for _, id := range ids { call := state.Continuation.Calls[id] d.Run(func(ctx context.Context) error { - result, err := r.subCall(ctx, callCtx, monitor, env, call.ToolID, call.Input, id, "") + result, err := r.subCall(ctx, callCtx, monitor, env, call.ToolID, call.Input, id, toolCategory) if err != nil { return err } diff --git a/pkg/server/server.go b/pkg/server/server.go index 27ce49b1..3b96d670 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -18,6 +18,7 @@ import ( "github.com/acorn-io/broadcaster" "github.com/gptscript-ai/gptscript/pkg/builtin" "github.com/gptscript-ai/gptscript/pkg/cache" + "github.com/gptscript-ai/gptscript/pkg/counter" "github.com/gptscript-ai/gptscript/pkg/gptscript" "github.com/gptscript-ai/gptscript/pkg/loader" "github.com/gptscript-ai/gptscript/pkg/runner" @@ -89,7 +90,7 @@ var ( type execKey struct{} func ContextWithNewID(ctx context.Context) context.Context { - return context.WithValue(ctx, execKey{}, fmt.Sprint(atomic.AddInt64(&execID, 1))) + return context.WithValue(ctx, execKey{}, counter.Next()) } func IDFromContext(ctx context.Context) string {