150 lines · 4.4 KB · Go
RawDownload
// Package misc provides miscellaneous utility functions and embedded data for the CLI Proxy API.// This package contains general-purpose helpers and embedded resources that do not fit into// more specific domain packages. It includes embedded instructional text for Codex-related operations.package misc import (	"embed"	_ "embed"	"strings"	"sync/atomic" 	"github.com/tidwall/gjson"	"github.com/tidwall/sjson") // codexInstructionsEnabled controls whether CodexInstructionsForModel returns official instructions.// When false (default), CodexInstructionsForModel returns (true, "") immediately.// Set via SetCodexInstructionsEnabled from config.var codexInstructionsEnabled atomic.Bool // SetCodexInstructionsEnabled sets whether codex instructions processing is enabled.func SetCodexInstructionsEnabled(enabled bool) {	codexInstructionsEnabled.Store(enabled)} // GetCodexInstructionsEnabled returns whether codex instructions processing is enabled.func GetCodexInstructionsEnabled() bool {	return codexInstructionsEnabled.Load()} //go:embed codex_instructionsvar codexInstructionsDir embed.FS //go:embed opencode_codex_instructions.txtvar opencodeCodexInstructions string const (	codexUserAgentKey  = "__cpa_user_agent"	userAgentOpenAISDK = "ai-sdk/openai/") func InjectCodexUserAgent(raw []byte, userAgent string) []byte {	if len(raw) == 0 {		return raw	}	trimmed := strings.TrimSpace(userAgent)	if trimmed == "" {		return raw	}	updated, err := sjson.SetBytes(raw, codexUserAgentKey, trimmed)	if err != nil {		return raw	}	return updated} func ExtractCodexUserAgent(raw []byte) string {	if len(raw) == 0 {		return ""	}	return strings.TrimSpace(gjson.GetBytes(raw, codexUserAgentKey).String())} func StripCodexUserAgent(raw []byte) []byte {	if len(raw) == 0 {		return raw	}	if !gjson.GetBytes(raw, codexUserAgentKey).Exists() {		return raw	}	updated, err := sjson.DeleteBytes(raw, codexUserAgentKey)	if err != nil {		return raw	}	return updated} func codexInstructionsForOpenCode(systemInstructions string) (bool, string) {	if opencodeCodexInstructions == "" {		return false, ""	}	if strings.HasPrefix(systemInstructions, opencodeCodexInstructions) {		return true, ""	}	return false, opencodeCodexInstructions} func useOpenCodeInstructions(userAgent string) bool {	return strings.Contains(strings.ToLower(userAgent), userAgentOpenAISDK)} func IsOpenCodeUserAgent(userAgent string) bool {	return useOpenCodeInstructions(userAgent)} func codexInstructionsForCodex(modelName, systemInstructions string) (bool, string) {	entries, _ := codexInstructionsDir.ReadDir("codex_instructions") 	lastPrompt := ""	lastCodexPrompt := ""	lastCodexMaxPrompt := ""	last51Prompt := ""	last52Prompt := ""	last52CodexPrompt := ""	// lastReviewPrompt := ""	for _, entry := range entries {		content, _ := codexInstructionsDir.ReadFile("codex_instructions/" + entry.Name())		if strings.HasPrefix(systemInstructions, string(content)) {			return true, ""		}		if strings.HasPrefix(entry.Name(), "gpt_5_codex_prompt.md") {			lastCodexPrompt = string(content)		} else if strings.HasPrefix(entry.Name(), "gpt-5.1-codex-max_prompt.md") {			lastCodexMaxPrompt = string(content)		} else if strings.HasPrefix(entry.Name(), "prompt.md") {			lastPrompt = string(content)		} else if strings.HasPrefix(entry.Name(), "gpt_5_1_prompt.md") {			last51Prompt = string(content)		} else if strings.HasPrefix(entry.Name(), "gpt_5_2_prompt.md") {			last52Prompt = string(content)		} else if strings.HasPrefix(entry.Name(), "gpt-5.2-codex_prompt.md") {			last52CodexPrompt = string(content)		} else if strings.HasPrefix(entry.Name(), "review_prompt.md") {			// lastReviewPrompt = string(content)		}	}	if strings.Contains(modelName, "codex-max") {		return false, lastCodexMaxPrompt	} else if strings.Contains(modelName, "5.2-codex") {		return false, last52CodexPrompt	} else if strings.Contains(modelName, "codex") {		return false, lastCodexPrompt	} else if strings.Contains(modelName, "5.1") {		return false, last51Prompt	} else if strings.Contains(modelName, "5.2") {		return false, last52Prompt	} else {		return false, lastPrompt	}} func CodexInstructionsForModel(modelName, systemInstructions, userAgent string) (bool, string) {	if !GetCodexInstructionsEnabled() {		return true, ""	}	if IsOpenCodeUserAgent(userAgent) {		return codexInstructionsForOpenCode(systemInstructions)	}	return codexInstructionsForCodex(modelName, systemInstructions)}