| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package service
- import (
- "bytes"
- "fmt"
- "strings"
- "text/template"
- )
- type forcedCodexInstructionsTemplateData struct {
- ExistingInstructions string
- OriginalModel string
- NormalizedModel string
- BillingModel string
- UpstreamModel string
- }
- func applyForcedCodexInstructionsTemplate(
- reqBody map[string]any,
- templateText string,
- data forcedCodexInstructionsTemplateData,
- ) (bool, error) {
- rendered, err := renderForcedCodexInstructionsTemplate(templateText, data)
- if err != nil {
- return false, err
- }
- if rendered == "" {
- return false, nil
- }
- existing, _ := reqBody["instructions"].(string)
- if strings.TrimSpace(existing) == rendered {
- return false, nil
- }
- reqBody["instructions"] = rendered
- return true, nil
- }
- func renderForcedCodexInstructionsTemplate(
- templateText string,
- data forcedCodexInstructionsTemplateData,
- ) (string, error) {
- tmpl, err := template.New("forced_codex_instructions").Option("missingkey=zero").Parse(templateText)
- if err != nil {
- return "", fmt.Errorf("parse forced codex instructions template: %w", err)
- }
- var buf bytes.Buffer
- if err := tmpl.Execute(&buf, data); err != nil {
- return "", fmt.Errorf("render forced codex instructions template: %w", err)
- }
- return strings.TrimSpace(buf.String()), nil
- }
|