| 169 | } |
| 170 | |
| 171 | func (p RequestPayload) injectTools(injected []responses.ToolUnionParam) (RequestPayload, error) { |
| 172 | if len(injected) == 0 { |
| 173 | return p, nil |
| 174 | } |
| 175 | |
| 176 | existing, err := p.toolItems() |
| 177 | if err != nil { |
| 178 | return p, xerrors.Errorf("failed to get existing tools: %w", err) |
| 179 | } |
| 180 | |
| 181 | allTools := make([]any, 0, len(existing)+len(injected)) |
| 182 | for _, item := range existing { |
| 183 | allTools = append(allTools, item) |
| 184 | } |
| 185 | for _, tool := range injected { |
| 186 | allTools = append(allTools, tool) |
| 187 | } |
| 188 | |
| 189 | return p.set(reqPathTools, allTools) |
| 190 | } |
| 191 | |
| 192 | func (p RequestPayload) disableParallelToolCalls() (RequestPayload, error) { |
| 193 | return p.set(reqPathParallelToolCalls, false) |