bf9395e022
CI / license-header (push) Has been skipped
CI / e2e-dry-run (push) Has been skipped
CI / fast-gate (push) Failing after 0s
Test PR Label Logic / test-pr-labels (push) Failing after 1s
Skill Format Check / check-format (push) Failing after 2s
CI / security (push) Failing after 5s
CI / unit-test (push) Has been skipped
CI / lint (push) Has been skipped
CI / script-test (push) Has been skipped
CI / deterministic-gate (push) Has been skipped
CI / coverage (push) Has been skipped
CI / results (push) Has been cancelled
CI / deadcode (push) Has been cancelled
CI / e2e-live (push) Has been cancelled
43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
// Copyright (c) 2026 Lark Technologies Pte. Ltd.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package schemas
|
|
|
|
import "sort"
|
|
|
|
// FieldMeta overrides win over struct tags; non-empty fields replace schema annotations.
|
|
type FieldMeta struct {
|
|
Description string
|
|
Enum []string
|
|
Kind string // renders to JSON Schema "format" (open_id / chat_id / timestamp_ms …)
|
|
}
|
|
|
|
// ApplyFieldOverrides mutates schema in place; returns unresolved pointer paths (orphans).
|
|
func ApplyFieldOverrides(schema map[string]interface{}, overrides map[string]FieldMeta) []string {
|
|
var orphans []string
|
|
for path, meta := range overrides {
|
|
nodes := ResolvePointer(schema, path)
|
|
if len(nodes) == 0 {
|
|
orphans = append(orphans, path)
|
|
continue
|
|
}
|
|
for _, node := range nodes {
|
|
if meta.Description != "" {
|
|
node["description"] = meta.Description
|
|
}
|
|
if len(meta.Enum) > 0 {
|
|
arr := make([]interface{}, len(meta.Enum))
|
|
for i, v := range meta.Enum {
|
|
arr[i] = v
|
|
}
|
|
node["enum"] = arr
|
|
}
|
|
if meta.Kind != "" {
|
|
node["format"] = meta.Kind
|
|
}
|
|
}
|
|
}
|
|
sort.Strings(orphans)
|
|
return orphans
|
|
}
|