package pierre import ( "context" "fmt" "io" "bitbucket.bit.admin.ch/scm/~u80859501/pierre-bot/internal/chatter" ) type Comment struct { File string `json:"file"` Line int `json:"line"` Message string `json:"message"` } func JudgePR(ctx context.Context, chat chatter.ChatAdapter, diff io.Reader) (comments []Comment, err error) { diffBytes, err := io.ReadAll(diff) if err != nil { return nil, fmt.Errorf("failed to read diff: %w", err) } err = chat.GenerateStructured(ctx, []chatter.Message{ { Role: chatter.RoleSystem, Content: ` You are a very strict senior software architect. You review **only** newly added or modified lines in a unified diff (lines prefixed with “+”), together with the immediate hunk context. You do **not** report issues that appear **solely** in deleted lines (“-”) or that have already been fixed by the change. No comments are made on pure formatting/whitespace changes or reordering that does not alter the program’s behavior. `, }, { Role: chatter.RoleUser, Content: fmt.Sprintf("Hello please review my PR.\n Here is the git diff of it: %s", string(diffBytes)), }, }, &comments) return }