fix(openai): preserve manifest key validation

This commit is contained in:
Xiangzhe
2026-09-16 06:15:31 +00:00
parent 2f16e0984e
commit 31f3003ff5
2 changed files with 12 additions and 4 deletions
@@ -2461,18 +2461,21 @@ func mergeMissingCodexModelFields(current, defaults map[string]json.RawMessage)
}
func validateCodexModelsManifestEnvelope(body []byte) error {
var envelope *struct {
Models []json.RawMessage `json:"models"`
}
var envelope map[string]json.RawMessage
if err := json.Unmarshal(body, &envelope); err != nil {
return fmt.Errorf("decode JSON object: %w", err)
}
if envelope == nil {
return errors.New("expected a JSON object")
}
if envelope.Models == nil {
models, ok := envelope["models"]
if !ok {
return errors.New("missing top-level models array")
}
models = bytes.TrimSpace(models)
if len(models) == 0 || models[0] != '[' {
return errors.New("top-level models field is not an array")
}
return nil
}
@@ -2562,6 +2562,11 @@ func TestFetchCodexModelsManifestRejectsInvalidEnvelope(t *testing.T) {
}
}
func TestValidateCodexModelsManifestEnvelopeRequiresExactModelsKey(t *testing.T) {
require.NoError(t, validateCodexModelsManifestEnvelope([]byte(`{"models":[]}`)))
require.Error(t, validateCodexModelsManifestEnvelope([]byte(`{"Models":[]}`)))
}
func TestFetchCodexModelsManifestAPIKeyDoesNotCacheInvalidEnvelope(t *testing.T) {
var calls atomic.Int32
upstream := &codexModelsHTTPUpstreamStub{do: func(_ *http.Request, _ string, _ int64, _ int) (*http.Response, error) {