From 227f0e22163f0153c69cdb1a34437df03a49b639 Mon Sep 17 00:00:00 2001 From: Donnie Adams Date: Tue, 27 Feb 2024 07:45:08 -0500 Subject: [PATCH] feat: add a few helper functions for using code outside of this package Signed-off-by: Donnie Adams --- pkg/mvl/log.go | 2 +- pkg/server/server.go | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/pkg/mvl/log.go b/pkg/mvl/log.go index a65aa7de..72f155cf 100644 --- a/pkg/mvl/log.go +++ b/pkg/mvl/log.go @@ -46,7 +46,7 @@ func SetError() { func Package() Logger { _, p, _, _ := runtime.Caller(1) - _, suffix, _ := strings.Cut(p, "gptscript/") + _, suffix, _ := strings.Cut(p, "gptscript") i := strings.LastIndex(suffix, "/") if i > 0 { return New(suffix[:i]) diff --git a/pkg/server/server.go b/pkg/server/server.go index 802164f0..e61b7dc7 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -45,9 +45,7 @@ func New(model engine.Model, opts ...Options) (*Server, error) { opt := complete(opts) r, err := runner.New(model, runner.Options{ - MonitorFactory: &SessionFactory{ - events: events, - }, + MonitorFactory: NewSessionFactory(events), }) if err != nil { return nil, err @@ -84,6 +82,14 @@ var ( type execKey struct{} +func ContextWithNewID(ctx context.Context) context.Context { + return context.WithValue(ctx, execKey{}, fmt.Sprint(atomic.AddInt64(&execID, 1))) +} + +func IDFromContext(ctx context.Context) string { + return ctx.Value(execKey{}).(string) +} + func (s *Server) list(rw http.ResponseWriter, req *http.Request) { rw.Header().Set("Content-Type", "application/json") enc := json.NewEncoder(rw) @@ -276,6 +282,12 @@ type SessionFactory struct { events *broadcaster.Broadcaster[Event] } +func NewSessionFactory(events *broadcaster.Broadcaster[Event]) *SessionFactory { + return &SessionFactory{ + events: events, + } +} + func (s SessionFactory) Start(ctx context.Context, prg *types.Program, env []string, input string) (runner.Monitor, error) { id, _ := ctx.Value(execKey{}).(string)