JuliusBrussee/caveman · error

unsupported catalog shape

Error message

unsupported catalog shape

What it means

Error "unsupported catalog shape" thrown in JuliusBrussee/caveman.

Source

Thrown at shrink/shrink.go:258

func extractTools(input []byte) ([]toolEntry, error) {
	var top any
	if err := json.Unmarshal(input, &top); err != nil {
		return nil, fmt.Errorf("not valid JSON: %w", err)
	}
	var rawList []any
	switch t := top.(type) {
	case map[string]any:
		if v, ok := t["tools"].([]any); ok {
			rawList = v
		} else if v, ok := t["functions"].([]any); ok {
			rawList = v
		} else {
			rawList = []any{t} // a single tool object
		}
	case []any:
		rawList = t
	default:
		return nil, fmt.Errorf("unsupported catalog shape")
	}

	var entries []toolEntry
	for _, item := range rawList {
		obj, ok := item.(map[string]any)
		if !ok {
			continue
		}
		// OpenAI nests under "function".
		toolObj := obj
		if fn, ok := obj["function"].(map[string]any); ok {
			toolObj = fn
		}
		name, _ := toolObj["name"].(string)
		if name == "" {
			continue
		}
		raw, _ := json.Marshal(obj)

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Provide a supported catalog shape.

When it happens

Trigger: Thrown at shrink/shrink.go:258 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15). Data as JSON: /api/errors/04f8c6f7b52b8f91. Report an issue: GitHub.