UNPKG

@copilotkit/shared

Version:

<div align="center"> <a href="https://copilotkit.ai" target="_blank"> <img src="https://github.com/copilotkit/copilotkit/raw/main/assets/banner.png" alt="CopilotKit Logo"> </a>

137 lines (136 loc) 4.89 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/utils/json-schema.ts var json_schema_exports = {}; __export(json_schema_exports, { actionParametersToJsonSchema: () => actionParametersToJsonSchema, convertJsonSchemaToZodSchema: () => convertJsonSchemaToZodSchema }); module.exports = __toCommonJS(json_schema_exports); var import_zod = require("zod"); function actionParametersToJsonSchema(actionParameters) { let parameters = {}; for (let parameter of actionParameters || []) { parameters[parameter.name] = convertAttribute(parameter); } let requiredParameterNames = []; for (let arg of actionParameters || []) { if (arg.required !== false) { requiredParameterNames.push(arg.name); } } return { type: "object", properties: parameters, required: requiredParameterNames }; } function convertAttribute(attribute) { var _a, _b, _c; switch (attribute.type) { case "string": return { type: "string", description: attribute.description, ...attribute.enum && { enum: attribute.enum } }; case "number": case "boolean": return { type: attribute.type, description: attribute.description }; case "object": case "object[]": const properties = (_a = attribute.attributes) == null ? void 0 : _a.reduce( (acc, attr) => { acc[attr.name] = convertAttribute(attr); return acc; }, {} ); const required = (_b = attribute.attributes) == null ? void 0 : _b.filter((attr) => attr.required !== false).map((attr) => attr.name); if (attribute.type === "object[]") { return { type: "array", items: { type: "object", ...properties && { properties }, ...required && required.length > 0 && { required } }, description: attribute.description }; } return { type: "object", description: attribute.description, ...properties && { properties }, ...required && required.length > 0 && { required } }; default: if ((_c = attribute.type) == null ? void 0 : _c.endsWith("[]")) { const itemType = attribute.type.slice(0, -2); return { type: "array", items: { type: itemType }, description: attribute.description }; } return { type: "string", description: attribute.description }; } } function convertJsonSchemaToZodSchema(jsonSchema, required) { if (jsonSchema.type === "object") { const spec = {}; if (!jsonSchema.properties || !Object.keys(jsonSchema.properties).length) { return !required ? import_zod.z.object(spec).optional() : import_zod.z.object(spec); } for (const [key, value] of Object.entries(jsonSchema.properties)) { spec[key] = convertJsonSchemaToZodSchema( value, jsonSchema.required ? jsonSchema.required.includes(key) : false ); } let schema = import_zod.z.object(spec).describe(jsonSchema.description); return required ? schema : schema.optional(); } else if (jsonSchema.type === "string") { let schema = import_zod.z.string().describe(jsonSchema.description); return required ? schema : schema.optional(); } else if (jsonSchema.type === "number") { let schema = import_zod.z.number().describe(jsonSchema.description); return required ? schema : schema.optional(); } else if (jsonSchema.type === "boolean") { let schema = import_zod.z.boolean().describe(jsonSchema.description); return required ? schema : schema.optional(); } else if (jsonSchema.type === "array") { let itemSchema = convertJsonSchemaToZodSchema(jsonSchema.items, true); let schema = import_zod.z.array(itemSchema).describe(jsonSchema.description); return required ? schema : schema.optional(); } throw new Error("Invalid JSON schema"); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { actionParametersToJsonSchema, convertJsonSchemaToZodSchema }); //# sourceMappingURL=json-schema.js.map