| 6877 | } |
| 6878 | |
| 6879 | func (p *Server) loadPersonalSkillBody( |
| 6880 | ctx context.Context, |
| 6881 | userID uuid.UUID, |
| 6882 | name string, |
| 6883 | ) (skillspkg.ParsedSkill, error) { |
| 6884 | row, err := p.db.GetUserSkillByUserIDAndName( |
| 6885 | userSkillContext(ctx, userID), |
| 6886 | database.GetUserSkillByUserIDAndNameParams{ |
| 6887 | UserID: userID, |
| 6888 | Name: name, |
| 6889 | }, |
| 6890 | ) |
| 6891 | if err != nil { |
| 6892 | if errors.Is(err, sql.ErrNoRows) { |
| 6893 | return skillspkg.ParsedSkill{}, skillspkg.ErrSkillNotFound |
| 6894 | } |
| 6895 | p.logger.Error(ctx, "load personal skill body failed", |
| 6896 | slog.F("user_id", userID), |
| 6897 | slog.F("name", name), |
| 6898 | slog.Error(err), |
| 6899 | ) |
| 6900 | return skillspkg.ParsedSkill{}, xerrors.Errorf("load personal skill body: %w", err) |
| 6901 | } |
| 6902 | |
| 6903 | parsed, err := skillspkg.ParsePersonalSkillMarkdown([]byte(row.Content)) |
| 6904 | if err != nil { |
| 6905 | p.logger.Error(ctx, "parse personal skill body failed", |
| 6906 | slog.F("user_id", userID), |
| 6907 | slog.F("name", name), |
| 6908 | slog.Error(err), |
| 6909 | ) |
| 6910 | return skillspkg.ParsedSkill{}, xerrors.Errorf("parse personal skill body: %w", err) |
| 6911 | } |
| 6912 | return parsed, nil |
| 6913 | } |
| 6914 | |
| 6915 | func (p *Server) appendRootChatTools( |
| 6916 | ctx context.Context, |