fix: saving image schema items
This commit is contained in:
@ -262,7 +262,7 @@ func (client *AgentClient) RunAgent(userId uuid.UUID, imageId uuid.UUID, imageNa
|
||||
request.Chat.AddImage(imageName, imageData, client.Options.Query)
|
||||
|
||||
toolHandlerInfo := ToolHandlerInfo{
|
||||
ImageId: imageId,
|
||||
ImageID: imageId,
|
||||
ImageName: imageName,
|
||||
UserId: userId,
|
||||
Image: &imageData,
|
||||
|
@ -9,7 +9,7 @@ import (
|
||||
|
||||
type ToolHandlerInfo struct {
|
||||
UserId uuid.UUID
|
||||
ImageId uuid.UUID
|
||||
ImageID uuid.UUID
|
||||
ImageName string
|
||||
|
||||
// Pointer because we don't want to copy this around too much.
|
||||
|
@ -40,7 +40,7 @@ func (suite *ToolTestSuite) TestSingleToolCall() {
|
||||
response := suite.handler.Handle(
|
||||
ToolHandlerInfo{
|
||||
UserId: uuid.Nil,
|
||||
ImageId: uuid.Nil,
|
||||
ImageID: uuid.Nil,
|
||||
},
|
||||
ToolCall{
|
||||
Index: 0,
|
||||
@ -91,7 +91,7 @@ func (suite *ToolTestSuite) TestMultipleToolCalls() {
|
||||
err := suite.client.Process(
|
||||
ToolHandlerInfo{
|
||||
UserId: uuid.Nil,
|
||||
ImageId: uuid.Nil,
|
||||
ImageID: uuid.Nil,
|
||||
},
|
||||
&AgentRequestBody{
|
||||
Chat: &chat,
|
||||
@ -154,7 +154,7 @@ func (suite *ToolTestSuite) TestMultipleToolCallsWithErrors() {
|
||||
err := suite.client.Process(
|
||||
ToolHandlerInfo{
|
||||
UserId: uuid.Nil,
|
||||
ImageId: uuid.Nil,
|
||||
ImageID: uuid.Nil,
|
||||
},
|
||||
&AgentRequestBody{
|
||||
Chat: &chat,
|
||||
|
@ -176,7 +176,7 @@ type addToListArguments struct {
|
||||
Schema []models.IDValue
|
||||
}
|
||||
|
||||
func NewListAgent(log *log.Logger, listModel models.StackModel, limitsMethods limits.LimitsManagerMethods) client.AgentClient {
|
||||
func NewListAgent(log *log.Logger, stackModel models.StackModel, limitsMethods limits.LimitsManagerMethods) client.AgentClient {
|
||||
agentClient := client.CreateAgentClient(client.CreateAgentClientOptions{
|
||||
SystemPrompt: listPrompt,
|
||||
JsonTools: listTools,
|
||||
@ -206,7 +206,7 @@ func NewListAgent(log *log.Logger, listModel models.StackModel, limitsMethods li
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
savedList, err := listModel.Save(ctx, info.UserId, args.Name, args.Desription, model.Progress_Complete)
|
||||
savedList, err := stackModel.Save(ctx, info.UserId, args.Name, args.Desription, model.Progress_Complete)
|
||||
if err != nil {
|
||||
log.Error("saving list", "err", err)
|
||||
return "", err
|
||||
@ -216,7 +216,7 @@ func NewListAgent(log *log.Logger, listModel models.StackModel, limitsMethods li
|
||||
args.Schema[i].StackID = savedList.ID
|
||||
}
|
||||
|
||||
err = listModel.SaveItems(ctx, args.Schema)
|
||||
err = stackModel.SaveItems(ctx, args.Schema)
|
||||
if err != nil {
|
||||
log.Error("saving items", "err", err)
|
||||
return "", err
|
||||
@ -226,7 +226,7 @@ func NewListAgent(log *log.Logger, listModel models.StackModel, limitsMethods li
|
||||
})
|
||||
|
||||
agentClient.ToolHandler.AddTool("listLists", func(info client.ToolHandlerInfo, args string, call client.ToolCall) (any, error) {
|
||||
return listModel.List(context.Background(), info.UserId)
|
||||
return stackModel.List(context.Background(), info.UserId)
|
||||
})
|
||||
|
||||
agentClient.ToolHandler.AddTool("addToList", func(info client.ToolHandlerInfo, _args string, call client.ToolCall) (any, error) {
|
||||
@ -243,7 +243,12 @@ func NewListAgent(log *log.Logger, listModel models.StackModel, limitsMethods li
|
||||
return "", err
|
||||
}
|
||||
|
||||
if err := listModel.SaveImage(ctx, info.ImageId, listUUID); err != nil {
|
||||
imageStack, err := stackModel.SaveImage(ctx, info.ImageID, listUUID)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if err := stackModel.SaveSchemaItems(ctx, imageStack.ID, args.Schema); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@ package models
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"screenmark/screenmark/.gen/haystack/haystack/model"
|
||||
. "screenmark/screenmark/.gen/haystack/haystack/table"
|
||||
|
||||
@ -103,12 +104,40 @@ func (m StackModel) SaveItems(ctx context.Context, items []model.SchemaItems) er
|
||||
return err
|
||||
}
|
||||
|
||||
func (m StackModel) SaveImage(ctx context.Context, imageID uuid.UUID, stackID uuid.UUID) error {
|
||||
func (m StackModel) SaveImage(ctx context.Context, imageID uuid.UUID, stackID uuid.UUID) (model.ImageStacks, error) {
|
||||
saveImageStmt := ImageStacks.
|
||||
INSERT(ImageStacks.ImageID, ImageStacks.StackID).
|
||||
VALUES(imageID, stackID)
|
||||
VALUES(imageID, stackID).
|
||||
RETURNING(ImageStacks.AllColumns)
|
||||
|
||||
_, err := saveImageStmt.ExecContext(ctx, m.dbPool)
|
||||
imageStack := model.ImageStacks{}
|
||||
|
||||
err := saveImageStmt.QueryContext(ctx, m.dbPool, &imageStack)
|
||||
|
||||
return imageStack, err
|
||||
}
|
||||
|
||||
func (m StackModel) SaveSchemaItems(ctx context.Context, imageID uuid.UUID, items []IDValue) error {
|
||||
if len(items) == 0 {
|
||||
return fmt.Errorf("items cannot be empty")
|
||||
}
|
||||
|
||||
saveSchemaItemStmt := ImageSchemaItems.
|
||||
INSERT(
|
||||
ImageSchemaItems.ImageID,
|
||||
ImageSchemaItems.SchemaItemID,
|
||||
ImageSchemaItems.Value,
|
||||
)
|
||||
|
||||
for _, item := range items {
|
||||
saveSchemaItemStmt = saveSchemaItemStmt.VALUES(
|
||||
imageID,
|
||||
item.ID,
|
||||
item.Value,
|
||||
)
|
||||
}
|
||||
|
||||
_, err := saveSchemaItemStmt.ExecContext(ctx, m.dbPool)
|
||||
|
||||
return err
|
||||
}
|
||||
|
@ -222,7 +222,7 @@ const stackValidator = strictObject({
|
||||
|
||||
Name: string(),
|
||||
|
||||
Images: array(stackImage),
|
||||
Images: pipe(nullable(array(stackImage)), transform(l => l ?? [])),
|
||||
SchemaItems: array(stackSchemaItem),
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user