package common import ( "strconv" ) func GeminiTokenCountJSON(count int64) []byte { out := make([]byte, 0, 96) out = append(out, `{"totalTokens":`...) out = strconv.AppendInt(out, count, 10) out = append(out, `,"promptTokensDetails":[{"modality":"TEXT","tokenCount":`...) out = strconv.AppendInt(out, count, 10) out = append(out, `}]}`...) return out } func ClaudeInputTokensJSON(count int64) []byte { out := make([]byte, 0, 32) out = append(out, `{"input_tokens":`...) out = strconv.AppendInt(out, count, 10) out = append(out, '}') return out } func JoinRawArray(items [][]byte) []byte { if len(items) == 0 { return []byte("[]") } size := len(items) + 1 for _, item := range items { size += len(item) } out := make([]byte, 0, size) out = append(out, '[') for i, item := range items { if i > 0 { out = append(out, ',') } out = append(out, item...) } return append(out, ']') } func SSEEventData(event string, payload []byte) []byte { out := make([]byte, 0, len(event)+len(payload)+14) out = append(out, "event: "...) out = append(out, event...) out = append(out, '\n') out = append(out, "data: "...) out = append(out, payload...) return out } func AppendSSEEventString(out []byte, event, payload string, trailingNewlines int) []byte { out = append(out, "event: "...) out = append(out, event...) out = append(out, '\n') out = append(out, "data: "...) out = append(out, payload...) for i := 0; i < trailingNewlines; i++ { out = append(out, '\n') } return out } func AppendSSEEventBytes(out []byte, event string, payload []byte, trailingNewlines int) []byte { out = append(out, "event: "...) out = append(out, event...) out = append(out, '\n') out = append(out, "data: "...) out = append(out, payload...) for i := 0; i < trailingNewlines; i++ { out = append(out, '\n') } return out }