History

schema

Rhys Sullivan committed 8 months ago

Commit ef83afa1 parent bc109b49 files · +182 −4Browse files

Showing the changes to packages/codemode-openapi/src (1 of 9 files). Show all

Unified · Split

packages/codemode-openapi/src/openapi-tools.ts+23−1
@@ -1,7 +1,12 @@
11 import * as Data from "effect/Data";
22 import * as Effect from "effect/Effect";
33
4−import { toTool, type ToolMap } from "@executor-v3/codemode-core";
4+import {
5+ standardSchemaFromJsonSchema,
6+ toTool,
7+ type ToolMap,
8+ unknownInputSchema,
9+} from "@executor-v3/codemode-core";
510
611 import {
712 extractOpenApiManifest,
@@ -179,6 +184,22 @@ const decodeFetchResponseBody = async (response: Response): Promise<unknown> => · 171 unmodified lines
179184 return response.text();
180185 };
181186
187+const inputSchemaFromTypingJson = (inputSchemaJson: string | undefined) => {
188+ if (!inputSchemaJson) {
189+ return unknownInputSchema;
190+ }
191+
192+ try {
193+ return standardSchemaFromJsonSchema(JSON.parse(inputSchemaJson), {
194+ vendor: "openapi",
195+ fallback: unknownInputSchema,
196+ });
197+ } catch {
198+ return unknownInputSchema;
199+ }
200+};
201+
202+
182203 type CreateOpenApiToolsFromManifestInput = {
183204 manifest: OpenApiToolManifest;
184205 baseUrl: string;
@@ -297,6 +318,7 @@ export const createOpenApiToolsFromManifest = ( · 112 unmodified lines
297318 result[toolPath] = toTool({
298319 tool: {
299320 description,
321+ inputSchema: inputSchemaFromTypingJson(extracted.typing?.inputSchemaJson),
300322 execute: async (args: unknown) => {
301323 const decodedArgs = asToolArgs(args);
302324 const request = buildFetchRequest({