feat(home): implement count for home auth dispatch requests and enable usage statistics
- Added `count` attribute to `homeAuthCount` requests to improve home message batching. - Enabled usage statistics for home mode by default and added config-level enforcement. - Adjusted failure logging to include detailed metadata in `UsageReporter`. - Updated multiple executors to pass error details to `PublishFailure` for better debugging. - Enhanced unit tests to validate `count` behavior and usage statistics enforcement across components.
This commit is contained in:
+15
-7
@@ -190,7 +190,20 @@ func headersToLowerMap(headers http.Header) map[string]string {
|
||||
return out
|
||||
}
|
||||
|
||||
func (c *Client) RPopAuth(ctx context.Context, requestedModel string, sessionID string, headers http.Header) ([]byte, error) {
|
||||
func newAuthDispatchRequest(requestedModel string, sessionID string, headers http.Header, count int) authDispatchRequest {
|
||||
if count <= 0 {
|
||||
count = 1
|
||||
}
|
||||
return authDispatchRequest{
|
||||
Type: "auth",
|
||||
Model: requestedModel,
|
||||
Count: count,
|
||||
SessionID: strings.TrimSpace(sessionID),
|
||||
Headers: headersToLowerMap(headers),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Client) RPopAuth(ctx context.Context, requestedModel string, sessionID string, headers http.Header, count int) ([]byte, error) {
|
||||
if err := c.ensureClients(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -198,12 +211,7 @@ func (c *Client) RPopAuth(ctx context.Context, requestedModel string, sessionID
|
||||
if requestedModel == "" {
|
||||
return nil, fmt.Errorf("home: requested model is empty")
|
||||
}
|
||||
req := authDispatchRequest{
|
||||
Type: "auth",
|
||||
Model: requestedModel,
|
||||
SessionID: strings.TrimSpace(sessionID),
|
||||
Headers: headersToLowerMap(headers),
|
||||
}
|
||||
req := newAuthDispatchRequest(requestedModel, sessionID, headers, count)
|
||||
keyBytes, err := json.Marshal(&req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package home
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestAuthDispatchRequestIncludesCount(t *testing.T) {
|
||||
req := newAuthDispatchRequest("gpt-5.4", "session-1", http.Header{"Authorization": {"Bearer test"}}, 2)
|
||||
|
||||
raw, err := json.Marshal(&req)
|
||||
if err != nil {
|
||||
t.Fatalf("marshal auth dispatch request: %v", err)
|
||||
}
|
||||
|
||||
var payload map[string]any
|
||||
if err := json.Unmarshal(raw, &payload); err != nil {
|
||||
t.Fatalf("unmarshal auth dispatch request: %v", err)
|
||||
}
|
||||
if got := int(payload["count"].(float64)); got != 2 {
|
||||
t.Fatalf("count = %d, want 2", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAuthDispatchRequestDefaultsCountToOne(t *testing.T) {
|
||||
req := newAuthDispatchRequest("gpt-5.4", "", nil, 0)
|
||||
|
||||
if req.Count != 1 {
|
||||
t.Fatalf("count = %d, want 1", req.Count)
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package home
|
||||
type authDispatchRequest struct {
|
||||
Type string `json:"type"`
|
||||
Model string `json:"model"`
|
||||
Count int `json:"count"`
|
||||
SessionID string `json:"session_id,omitempty"`
|
||||
Headers map[string]string `json:"headers,omitempty"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user