Spaces:
Build error
Build error
| import { isNonEmptyString, isObject } from '@sniptt/guards'; | |
| import { type InputJsonSchema } from '@/logic-function/input-json-schema.type'; | |
| import { isRecordObjectSchema } from '@/logic-function/is-record-object-schema'; | |
| import { isDefined } from '@/utils/validation/isDefined'; | |
| type ResolveObjectLabel = ( | |
| objectUniversalIdentifier: string, | |
| ) => string | undefined; | |
| const buildRecordIdDescription = ( | |
| objectUniversalIdentifier: string | undefined, | |
| resolveObjectLabel?: ResolveObjectLabel, | |
| ): string => { | |
| const objectLabel = isNonEmptyString(objectUniversalIdentifier) | |
| ? resolveObjectLabel?.(objectUniversalIdentifier) | |
| : undefined; | |
| return `Id of the ${isNonEmptyString(objectLabel) ? objectLabel : 'linked'} record`; | |
| }; | |
| export const buildToolInputJsonSchema = ( | |
| jsonSchema: InputJsonSchema, | |
| resolveObjectLabel?: ResolveObjectLabel, | |
| ): InputJsonSchema => { | |
| if (isRecordObjectSchema(jsonSchema)) { | |
| return { | |
| type: 'string', | |
| description: buildRecordIdDescription( | |
| jsonSchema.objectUniversalIdentifier, | |
| resolveObjectLabel, | |
| ), | |
| }; | |
| } | |
| if (jsonSchema.type === 'records') { | |
| return { | |
| type: 'array', | |
| items: { | |
| type: 'string', | |
| description: buildRecordIdDescription( | |
| jsonSchema.objectUniversalIdentifier, | |
| resolveObjectLabel, | |
| ), | |
| }, | |
| }; | |
| } | |
| const { | |
| objectUniversalIdentifier: _objectUniversalIdentifier, | |
| multiline: _multiline, | |
| label: _label, | |
| items, | |
| properties, | |
| additionalProperties, | |
| ...standardKeywords | |
| } = jsonSchema; | |
| const toolSchema: InputJsonSchema = { ...standardKeywords }; | |
| if (isDefined(items)) { | |
| toolSchema.items = buildToolInputJsonSchema(items, resolveObjectLabel); | |
| } | |
| if (isDefined(properties)) { | |
| toolSchema.properties = Object.fromEntries( | |
| Object.entries(properties).map(([key, value]) => [ | |
| key, | |
| buildToolInputJsonSchema(value, resolveObjectLabel), | |
| ]), | |
| ); | |
| } | |
| if (isDefined(additionalProperties)) { | |
| toolSchema.additionalProperties = isObject(additionalProperties) | |
| ? buildToolInputJsonSchema(additionalProperties, resolveObjectLabel) | |
| : additionalProperties; | |
| } | |
| return toolSchema; | |
| }; | |