MCPcopy Create free account
hub / github.com/anomalyco/opencode / inlineLocalReferences

Function inlineLocalReferences

packages/opencode/src/tool/json-schema.ts:121–144  ·  view source on GitHub ↗
(value: unknown, definitions?: JsonObject, seen = new Set<string>())

Source from the content-addressed store, hash-verified

119}
120
121function inlineLocalReferences(value: unknown, definitions?: JsonObject, seen = new Set<string>()): unknown {
122 if (Array.isArray(value)) return value.map((item) => inlineLocalReferences(item, definitions, seen))
123 if (!isRecord(value)) return value
124
125 const localDefinitions = definitions ?? (isRecord(value.$defs) ? value.$defs : undefined)
126 if (typeof value.$ref === "string" && localDefinitions) {
127 const name = value.$ref.match(/^#\/\$defs\/(.+)$/)?.[1] ?? value.$ref.match(/^#\/definitions\/(.+)$/)?.[1]
128 if (name && !seen.has(name)) {
129 const target = localDefinitions[name]
130 if (target) {
131 const { $ref: _, ...rest } = value
132 return inlineLocalReferences(
133 { ...(isRecord(target) ? target : {}), ...rest },
134 localDefinitions,
135 new Set(seen).add(name),
136 )
137 }
138 }
139 }
140
141 return Object.fromEntries(
142 Object.entries(value).map(([key, item]) => [key, inlineLocalReferences(item, localDefinitions, seen)]),
143 )
144}
145
146function dropDefinitionsIfResolved(value: unknown): unknown {
147 if (!isRecord(value) || hasLocalReference(value)) return value

Callers 1

fromSchemaFunction · 0.85

Calls 2

isRecordFunction · 0.70
addMethod · 0.65

Tested by

no test coverage detected