@sdk-it/rpc 0.33.3 → 0.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1027,7 +1027,8 @@ function schemaToZod(schema, spec, options) {
1027
1027
  var optionsSchema = z3.object({
1028
1028
  token: z3.string().optional().transform((val) => val ? `Bearer ${val}` : void 0),
1029
1029
  fetch: fetchType,
1030
- baseUrl: z3.string()
1030
+ baseUrl: z3.string(),
1031
+ headers: z3.record(z3.string()).optional()
1031
1032
  });
1032
1033
  function inputToPath(operation, inputs) {
1033
1034
  const inputHeaders = [];
@@ -1061,11 +1062,9 @@ function inputToPath(operation, inputs) {
1061
1062
  var Client = class {
1062
1063
  options;
1063
1064
  schemas;
1064
- operations;
1065
- constructor(options, schemas, operations) {
1065
+ constructor(options, schemas) {
1066
1066
  this.options = optionsSchema.parse(options);
1067
1067
  this.schemas = schemas;
1068
- this.operations = operations;
1069
1068
  }
1070
1069
  async request(endpoint, input, options) {
1071
1070
  const route = this.schemas[endpoint];
@@ -1085,7 +1084,10 @@ var Client = class {
1085
1084
  return result;
1086
1085
  }
1087
1086
  get defaultHeaders() {
1088
- return { authorization: this.options["token"] };
1087
+ return {
1088
+ authorization: this.options["token"],
1089
+ ...this.options.headers
1090
+ };
1089
1091
  }
1090
1092
  get #defaultInputs() {
1091
1093
  return {};
@@ -1099,11 +1101,8 @@ var Client = class {
1099
1101
  }
1100
1102
  }
1101
1103
  };
1102
- async function rpc(openapi, options) {
1103
- const spec = await loadSpec(openapi);
1104
- const ir = toIR({ spec, responses: { flattenErrorResponses: true } });
1104
+ function createRpc(ir, options = {}) {
1105
1105
  const schemas = {};
1106
- const operations = {};
1107
1106
  forEachOperation(ir, (entry, operation) => {
1108
1107
  const endpoint = `${entry.method.toUpperCase()} ${entry.path}`;
1109
1108
  const details = buildInput(ir, operation);
@@ -1115,7 +1114,7 @@ async function rpc(openapi, options) {
1115
1114
  };
1116
1115
  const outputs = Object.keys(operation.responses).flatMap(
1117
1116
  (status) => toHttpOutput(
1118
- spec,
1117
+ ir,
1119
1118
  operation.operationId,
1120
1119
  status,
1121
1120
  operation.responses[status],
@@ -1124,12 +1123,12 @@ async function rpc(openapi, options) {
1124
1123
  );
1125
1124
  const inputSchema = schemaToZod(
1126
1125
  operationSchema(ir, operation, details.ct),
1127
- spec
1126
+ ir
1128
1127
  );
1129
1128
  schemas[endpoint] = {
1130
1129
  operationId: operation.operationId,
1131
1130
  output: outputs.map((it) => response_exports[it.replace("http.", "")]),
1132
- schemas: inputSchema,
1131
+ schema: inputSchema,
1133
1132
  async dispatch(input, options2) {
1134
1133
  const dispatcher = new Dispatcher(options2.interceptors, options2.fetch);
1135
1134
  const serializer = contentTypeMap[details.outgoingContentType] || defaultSerializer(details.outgoingContentType);
@@ -1140,36 +1139,92 @@ async function rpc(openapi, options) {
1140
1139
  return dispatcher.send(request, this.output);
1141
1140
  }
1142
1141
  };
1143
- operations[operation.operationId] = {
1144
- description: operation.description,
1145
- input: inputSchema
1146
- };
1147
1142
  });
1148
1143
  return new Client(
1149
1144
  {
1150
1145
  ...options,
1151
1146
  baseUrl: options?.baseUrl ?? ir.servers[0].url
1152
1147
  },
1153
- schemas,
1154
- operations
1148
+ schemas
1155
1149
  );
1156
1150
  }
1157
- async function toTools(rpc2) {
1151
+ async function rpc(openapi, options) {
1152
+ const spec = await loadSpec(openapi);
1153
+ const ir = toIR({ spec, responses: { flattenErrorResponses: true } });
1154
+ return createRpc(ir, options);
1155
+ }
1156
+ function toTools(rpc2) {
1158
1157
  const tools = {};
1159
1158
  for (const [endpoint, route] of Object.entries(rpc2.schemas)) {
1160
- const operation = rpc2.operations[route.operationId];
1161
- tools[route.operationId] = tool({
1159
+ console.dir({ [endpoint]: route }, { depth: null });
1160
+ }
1161
+ return tools;
1162
+ }
1163
+ async function toAgents(openapi, options) {
1164
+ const spec = await loadSpec(openapi);
1165
+ const ir = toIR({ spec, responses: { flattenErrorResponses: true } });
1166
+ const client = createRpc(ir, options);
1167
+ const groups = {};
1168
+ forEachOperation(ir, (entry, operation) => {
1169
+ const tagDef = ir.tags.find((tag) => tag.name === entry.tag);
1170
+ if (!tagDef) {
1171
+ console.warn(`No tag details found for tag: ${entry.tag}`);
1172
+ return;
1173
+ }
1174
+ groups[entry.tag] ??= {
1175
+ tools: {},
1176
+ instructions: "",
1177
+ displayName: "",
1178
+ name: "",
1179
+ handoffDescription: ""
1180
+ };
1181
+ const endpoint = `${entry.method.toUpperCase()} ${entry.path}`;
1182
+ groups[entry.tag].tools[operation["x-fn-name"]] = tool({
1162
1183
  type: "function",
1163
1184
  description: operation.description,
1164
- inputSchema: operation.input,
1185
+ inputSchema: client.schemas[endpoint].schema,
1165
1186
  execute: async (input) => {
1166
1187
  console.log("Executing tool with input:", input);
1167
- const response = await rpc2.request(endpoint, input);
1188
+ const response = await client.request(endpoint, input);
1168
1189
  return JSON.stringify(response);
1169
1190
  }
1170
1191
  });
1192
+ groups[entry.tag].handoffDescription = tagDef["x-handoff-description"];
1193
+ groups[entry.tag].instructions = tagDef["x-instructions"];
1194
+ groups[entry.tag].name = tagDef.name;
1195
+ groups[entry.tag].displayName = tagDef["x-name"];
1196
+ });
1197
+ const agents = {};
1198
+ for (const [
1199
+ agentName,
1200
+ { tools, instructions, displayName }
1201
+ ] of Object.entries(groups)) {
1202
+ agents[agentName] = {
1203
+ name: displayName,
1204
+ instructions,
1205
+ tools
1206
+ };
1171
1207
  }
1172
- return tools;
1208
+ agents["triage"] = {
1209
+ name: "Triage Agent",
1210
+ instructions: "You are a helpful triaging agent. You can use your tools to delegate questions to other appropriate agents.",
1211
+ tools: Object.fromEntries(
1212
+ Object.entries(groups).map(([, { name, handoffDescription }]) => {
1213
+ return [
1214
+ `transfer_to_${name}`,
1215
+ tool({
1216
+ description: [
1217
+ `Handoff to the ${name} agent to handle the request.`,
1218
+ handoffDescription
1219
+ ].join(" "),
1220
+ inputSchema: z3.object({}),
1221
+ execute: async () => ({ agent: name })
1222
+ })
1223
+ ];
1224
+ })
1225
+ )
1226
+ };
1227
+ return agents;
1173
1228
  }
1174
1229
  function defaultSerializer(ct) {
1175
1230
  throw new Error(`Unsupported content type: ${ct}`);
@@ -1180,6 +1235,7 @@ export {
1180
1235
  inputToPath,
1181
1236
  rpc,
1182
1237
  schemaToZod,
1238
+ toAgents,
1183
1239
  toTools
1184
1240
  };
1185
1241
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/lib/rpc.ts", "../src/lib/http/dispatcher.ts", "../src/lib/http/interceptors.ts", "../src/lib/http/request.ts", "../src/lib/http/parse-response.ts", "../src/lib/http/response.ts", "../src/lib/zod.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { tool } from 'ai';\nimport { z } from 'zod';\n\nimport {\n type TunedOperationObject,\n forEachOperation,\n loadSpec,\n toIR,\n} from '@sdk-it/spec';\nimport {\n type OperationInput,\n buildInput,\n operationSchema,\n toHttpOutput,\n} from '@sdk-it/typescript';\n\nimport { Dispatcher, fetchType } from './http/dispatcher.ts';\nimport {\n type Interceptor,\n createBaseUrlInterceptor,\n createHeadersInterceptor,\n} from './http/interceptors.ts';\nimport {\n type Endpoint,\n type HeadersInit,\n type Method,\n empty,\n formdata,\n json,\n toRequest,\n urlencoded,\n} from './http/request.ts';\nimport * as http from './http/response.ts';\nimport { schemaToZod } from './zod.ts';\n\nconst optionsSchema = z.object({\n token: z\n .string()\n .optional()\n .transform((val) => (val ? `Bearer ${val}` : undefined)),\n fetch: fetchType,\n baseUrl: z.string(),\n});\ntype ClientOptions = z.infer<typeof optionsSchema>;\n\nexport function inputToPath(\n operation: TunedOperationObject,\n inputs: Record<string, OperationInput>,\n) {\n const inputHeaders: string[] = [];\n const inputQuery: string[] = [];\n const inputBody: string[] = [];\n const inputParams: string[] = [];\n for (const [name, prop] of Object.entries(inputs)) {\n if (prop.in === 'headers' || prop.in === 'header') {\n inputHeaders.push(name);\n } else if (prop.in === 'query') {\n inputQuery.push(name);\n } else if (prop.in === 'body') {\n inputBody.push(name);\n } else if (prop.in === 'path') {\n inputParams.push(name);\n } else {\n throw new Error(\n `Unknown source ${prop.in} in ${name} ${JSON.stringify(\n prop,\n )} in ${operation.operationId}`,\n );\n }\n }\n\n return {\n inputHeaders,\n inputQuery,\n inputBody,\n inputParams,\n };\n}\n\nexport class Client {\n public options: ClientOptions;\n public schemas: Record<string, any>;\n public operations: Record<string, any>;\n constructor(\n options: ClientOptions,\n schemas: Record<string, any>,\n operations: Record<string, any>,\n ) {\n this.options = optionsSchema.parse(options);\n this.schemas = schemas;\n this.operations = operations;\n }\n\n async request(\n endpoint: string,\n input: any,\n options?: { signal?: AbortSignal; headers?: HeadersInit },\n ) {\n const route = this.schemas[endpoint];\n const withDefaultInputs = Object.assign({}, this.#defaultInputs, input);\n // const [parsedInput, parseError] = parseInput(\n // route.schema,\n // withDefaultInputs,\n // );\n // if (parseError) {\n // throw parseError;\n // }\n const parsedInput = input;\n const result = await route.dispatch(parsedInput as never, {\n fetch: this.options.fetch,\n interceptors: [\n createHeadersInterceptor(\n () => this.defaultHeaders,\n options?.headers ?? {},\n ),\n createBaseUrlInterceptor(() => this.options.baseUrl),\n ],\n signal: options?.signal,\n });\n return result;\n }\n\n get defaultHeaders() {\n return { authorization: this.options['token'] };\n }\n\n get #defaultInputs() {\n return {};\n }\n\n setOptions(options: Partial<ClientOptions>) {\n const validated = optionsSchema.partial().parse(options);\n\n for (const key of Object.keys(validated) as (keyof ClientOptions)[]) {\n if (validated[key] !== undefined) {\n (this.options[key] as (typeof validated)[typeof key]) = validated[key]!;\n }\n }\n }\n}\n\nexport async function rpc(\n openapi: string,\n options?: Partial<ClientOptions>,\n): Promise<Client> {\n const spec = await loadSpec(openapi);\n const ir = toIR({ spec, responses: { flattenErrorResponses: true } });\n const schemas: Record<Endpoint, any> = {};\n const operations: Record<string, any> = {};\n forEachOperation(ir, (entry, operation) => {\n const endpoint: Endpoint = `${entry.method.toUpperCase() as Method} ${entry.path}`;\n const details = buildInput(ir, operation);\n const contentTypeMap = {\n json: json,\n urlencoded: urlencoded,\n formdata: formdata,\n empty: empty,\n } as const;\n const outputs = Object.keys(operation.responses).flatMap((status) =>\n toHttpOutput(\n spec,\n operation.operationId,\n status,\n operation.responses[status],\n false,\n ),\n );\n const inputSchema = schemaToZod(\n operationSchema(ir, operation, details.ct),\n spec,\n );\n schemas[endpoint] = {\n operationId: operation.operationId,\n output: outputs.map((it) => http[it.replace('http.', '') as never]),\n schemas: inputSchema,\n async dispatch(\n input: any,\n options: {\n signal?: AbortSignal;\n interceptors: Interceptor[];\n fetch: z.infer<typeof fetchType>;\n },\n ) {\n const dispatcher = new Dispatcher(options.interceptors, options.fetch);\n const serializer =\n contentTypeMap[\n details.outgoingContentType as keyof typeof contentTypeMap\n ] || defaultSerializer(details.outgoingContentType);\n const request = toRequest(\n endpoint,\n serializer(input, inputToPath(operation, details.inputs)),\n );\n return dispatcher.send(request, this.output);\n },\n };\n operations[operation.operationId] = {\n description: operation.description,\n input: inputSchema,\n };\n });\n\n return new Client(\n {\n ...options,\n baseUrl: options?.baseUrl ?? ir.servers[0].url,\n },\n schemas,\n operations,\n );\n}\n\nexport async function toTools(rpc: Client) {\n const tools: Record<string, any> = {};\n for (const [endpoint, route] of Object.entries(rpc.schemas)) {\n const operation = rpc.operations[route.operationId];\n tools[route.operationId] = tool({\n type: 'function',\n description: operation.description,\n inputSchema: operation.input,\n execute: async (input) => {\n console.log('Executing tool with input:', input);\n const response = await rpc.request(endpoint, input);\n return JSON.stringify(response);\n },\n });\n }\n return tools;\n}\n\nfunction defaultSerializer(ct: string) {\n throw new Error(`Unsupported content type: ${ct}`);\n}\n", "import z from 'zod';\n\nimport { type Interceptor } from '../http/interceptors.ts';\nimport { type RequestConfig } from '../http/request.ts';\nimport { buffered } from './parse-response.ts';\nimport { APIError, APIResponse, type SuccessfulResponse } from './response.ts';\n\nexport type Unionize<T> = T extends [infer Single extends OutputType]\n ? InstanceType<Single>\n : T extends readonly [...infer Tuple extends OutputType[]]\n ? { [I in keyof Tuple]: InstanceType<Tuple[I]> }[number]\n : never;\n\nexport type InstanceType<T> =\n T extends Type<infer U>\n ? U\n : T extends { type: Type<infer U> }\n ? U\n : T extends Array<unknown>\n ? Unionize<T>\n : never;\n\nexport interface Type<T> {\n new (...args: any[]): T;\n}\nexport type Parser = (\n response: Response,\n) => Promise<unknown> | ReadableStream<any>;\nexport type OutputType =\n | Type<APIResponse>\n | { parser: Parser; type: Type<APIResponse> };\n\nexport const fetchType = z\n .function()\n .args(z.instanceof(Request))\n .returns(z.promise(z.instanceof(Response)))\n .optional();\n\nexport async function parse<T extends OutputType[]>(\n outputs: T,\n response: Response,\n) {\n let output: typeof APIResponse | null = null;\n let parser: Parser = buffered;\n for (const outputType of outputs) {\n if ('parser' in outputType) {\n parser = outputType.parser;\n if (isTypeOf(outputType.type, APIResponse)) {\n if (response.status === outputType.type.status) {\n output = outputType.type;\n break;\n }\n }\n } else if (isTypeOf(outputType, APIResponse)) {\n if (response.status === outputType.status) {\n output = outputType;\n break;\n }\n }\n }\n\n if (response.ok) {\n const apiresponse = (output || APIResponse).create(\n response.status,\n await parser(response),\n );\n\n return apiresponse as Extract<InstanceType<T>, SuccessfulResponse>;\n }\n\n throw (output || APIError).create(response.status, await parser(response));\n}\n\nexport function isTypeOf<T extends Type<APIResponse>>(\n instance: any,\n baseType: T,\n): instance is T {\n if (instance === baseType) {\n return true;\n }\n const prototype = Object.getPrototypeOf(instance);\n if (prototype === null) {\n return false;\n }\n return isTypeOf(prototype, baseType);\n}\n\nexport class Dispatcher {\n #interceptors: Interceptor[] = [];\n #fetch: z.infer<typeof fetchType>;\n constructor(interceptors: Interceptor[], fetch?: z.infer<typeof fetchType>) {\n this.#interceptors = interceptors;\n this.#fetch = fetch;\n }\n\n async send<T extends OutputType[]>(\n config: RequestConfig,\n outputs: T,\n signal?: AbortSignal,\n ) {\n for (const interceptor of this.#interceptors) {\n if (interceptor.before) {\n config = await interceptor.before(config);\n }\n }\n\n let response = await (this.#fetch ?? fetch)(\n new Request(config.url, config.init),\n {\n ...config.init,\n signal: signal,\n },\n );\n\n for (let i = this.#interceptors.length - 1; i >= 0; i--) {\n const interceptor = this.#interceptors[i];\n if (interceptor.after) {\n response = await interceptor.after(response.clone());\n }\n }\n\n return await parse(outputs, response);\n }\n}\n", "import type { HeadersInit, RequestConfig } from './request.ts';\n\nexport interface Interceptor {\n before?: (config: RequestConfig) => Promise<RequestConfig> | RequestConfig;\n after?: (response: Response) => Promise<Response> | Response;\n}\n\nexport const createHeadersInterceptor = (\n defaultHeaders: () => Record<string, string | undefined>,\n requestHeaders: HeadersInit,\n): Interceptor => {\n return {\n before({ init, url }) {\n // Priority Levels\n // 1. Headers Input\n // 2. Request Headers\n // 3. Default Headers\n const headers = defaultHeaders();\n\n for (const [key, value] of new Headers(requestHeaders)) {\n // Only set the header if it doesn't already exist and has a value\n // even though these headers are passed at operation level\n // still they are lower priority compared to the headers input\n if (value !== undefined && !init.headers.has(key)) {\n init.headers.set(key, value);\n }\n }\n\n for (const [key, value] of Object.entries(headers)) {\n // Only set the header if it doesn't already exist and has a value\n if (value !== undefined && !init.headers.has(key)) {\n init.headers.set(key, value);\n }\n }\n\n return { init, url };\n },\n };\n};\n\nexport const createBaseUrlInterceptor = (\n getBaseUrl: () => string,\n): Interceptor => {\n return {\n before({ init, url }) {\n const baseUrl = getBaseUrl();\n if (url.protocol === 'local:') {\n return {\n init,\n url: new URL(url.href.replace('local://', baseUrl)),\n };\n }\n return { init, url };\n },\n };\n};\n\nexport const logInterceptor: Interceptor = {\n before({ url, init }) {\n console.log('Request:', { url, init });\n return { url, init };\n },\n after(response) {\n console.log('Response:', response);\n return response;\n },\n};\n\n/**\n * Creates an interceptor that logs detailed information about requests and responses.\n * @param options Configuration options for the logger\n * @returns An interceptor object with before and after handlers\n */\nexport const createDetailedLogInterceptor = (options?: {\n logLevel?: 'debug' | 'info' | 'warn' | 'error';\n includeRequestBody?: boolean;\n includeResponseBody?: boolean;\n}) => {\n const logLevel = options?.logLevel || 'info';\n const includeRequestBody = options?.includeRequestBody || false;\n const includeResponseBody = options?.includeResponseBody || false;\n\n return {\n async before(request: Request) {\n const logData = {\n url: request.url,\n method: request.method,\n contentType: request.headers.get('Content-Type'),\n headers: Object.fromEntries([...request.headers.entries()]),\n };\n\n console[logLevel]('\uD83D\uDE80 Outgoing Request:', logData);\n\n if (includeRequestBody) {\n try {\n // Clone the request to avoid consuming the body stream\n const clonedRequest = request.clone();\n if (\n clonedRequest.headers\n .get('Content-Type')\n ?.includes('application/json')\n ) {\n const body = await clonedRequest.json().catch(() => null);\n console[logLevel]('Request Body:', body);\n } else {\n const body = await clonedRequest.text().catch(() => null);\n console[logLevel]('Request Body:', body);\n }\n } catch (error) {\n console.error('Could not log request body:', error);\n }\n }\n\n return request;\n },\n\n async after(response: Response) {\n const logData = {\n status: response.status,\n statusText: response.statusText,\n url: response.url,\n headers: Object.fromEntries([...response.headers.entries()]),\n };\n\n console[logLevel]('\uD83D\uDCE5 Incoming Response:', logData);\n\n if (includeResponseBody && response.body) {\n try {\n // Clone the response to avoid consuming the body stream\n const clonedResponse = response.clone();\n if (\n clonedResponse.headers\n .get('Content-Type')\n ?.includes('application/json')\n ) {\n const body = await clonedResponse.json().catch(() => null);\n console[logLevel]('Response Body:', body);\n } else {\n const body = await clonedResponse.text().catch(() => null);\n if (body) {\n console[logLevel](\n 'Response Body:',\n body.substring(0, 500) + (body.length > 500 ? '...' : ''),\n );\n } else {\n console[logLevel]('No response body');\n }\n }\n } catch (error) {\n console.error('Could not log response body:', error);\n }\n }\n\n return response;\n },\n };\n};\n", "type Init = Omit<RequestInit, 'headers'> & { headers: Headers };\nexport type RequestConfig = { init: Init; url: URL };\nexport type Method =\n | 'GET'\n | 'POST'\n | 'PUT'\n | 'PATCH'\n | 'DELETE'\n | 'HEAD'\n | 'OPTIONS';\nexport type ContentType =\n | 'xml'\n | 'json'\n | 'urlencoded'\n | 'multipart'\n | 'formdata';\nexport type HeadersInit = [string, string][] | Record<string, string>;\nexport type Endpoint =\n | `${ContentType} ${Method} ${string}`\n | `${Method} ${string}`;\n\nexport type BodyInit =\n | ArrayBuffer\n | Blob\n | FormData\n | URLSearchParams\n | null\n | string;\n\nfunction template(\n templateString: string,\n templateVariables: Record<string, any>,\n): string {\n const nargs = /{([0-9a-zA-Z_]+)}/g;\n return templateString.replace(nargs, (match, key: string, index: number) => {\n // Handle escaped double braces\n if (\n templateString[index - 1] === '{' &&\n templateString[index + match.length] === '}'\n ) {\n return key;\n }\n\n const result = key in templateVariables ? templateVariables[key] : null;\n return result === null || result === undefined ? '' : String(result);\n });\n}\n\ntype Input = Record<string, any>;\ntype Props = {\n inputHeaders: string[];\n inputQuery: string[];\n inputBody: string[];\n inputParams: string[];\n};\n\nabstract class Serializer {\n protected input: Input;\n protected props: Props;\n\n constructor(input: Input, props: Props) {\n this.input = input;\n this.props = props;\n }\n\n abstract getBody(): BodyInit | null;\n abstract getHeaders(): Record<string, string>;\n serialize(path: string): Serialized {\n const params = this.props.inputParams.reduce<Record<string, any>>(\n (acc, key) => {\n acc[key] = this.input[key];\n return acc;\n },\n {},\n );\n const url = new URL(template(path, params), `local://`);\n\n const headers = new Headers({});\n for (const header of this.props.inputHeaders) {\n headers.set(header, this.input[header]);\n }\n\n for (const key of this.props.inputQuery) {\n const value = this.input[key];\n if (value !== undefined) {\n if (Array.isArray(value)) {\n for (const item of value) {\n url.searchParams.append(key, String(item));\n }\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n return {\n body: this.getBody(),\n url,\n headers: this.getHeaders(),\n };\n }\n}\n\ninterface Serialized {\n body: BodyInit | null;\n headers: Record<string, string>;\n url: URL;\n}\n\nclass JsonSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body: Record<string, any> = {};\n if (\n this.props.inputBody.length === 1 &&\n this.props.inputBody[0] === '$body'\n ) {\n return JSON.stringify(this.input.$body);\n }\n\n for (const prop of this.props.inputBody) {\n body[prop] = this.input[prop];\n }\n return JSON.stringify(body);\n }\n getHeaders(): Record<string, string> {\n return {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n };\n }\n}\n\nclass UrlencodedSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body = new URLSearchParams();\n for (const prop of this.props.inputBody) {\n body.set(prop, this.input[prop]);\n }\n return body;\n }\n getHeaders(): Record<string, string> {\n return {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n };\n }\n}\n\nclass EmptySerializer extends Serializer {\n getBody(): BodyInit | null {\n return null;\n }\n getHeaders(): Record<string, string> {\n return {};\n }\n}\n\nclass FormDataSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body = new FormData();\n for (const prop of this.props.inputBody) {\n body.append(prop, this.input[prop]);\n }\n return body;\n }\n getHeaders(): Record<string, string> {\n return {\n Accept: 'application/json',\n };\n }\n}\n\nexport function json(input: Input, props: Props) {\n return new JsonSerializer(input, props);\n}\nexport function urlencoded(input: Input, props: Props) {\n return new UrlencodedSerializer(input, props);\n}\nexport function empty(input: Input, props: Props) {\n return new EmptySerializer(input, props);\n}\nexport function formdata(input: Input, props: Props) {\n return new FormDataSerializer(input, props);\n}\n\nexport function toRequest<T extends Endpoint>(\n endpoint: T,\n serializer: Serializer,\n): RequestConfig {\n const [method, path] = endpoint.split(' ');\n const input = serializer.serialize(path);\n return {\n url: input.url,\n init: {\n method: method,\n headers: new Headers(input.headers),\n body: method === 'GET' ? undefined : input.body,\n },\n };\n}\n", "import { parse } from \"fast-content-type-parse\";\n\nasync function handleChunkedResponse(response: Response, contentType: string) {\n\tconst { type } = parse(contentType);\n\n\tswitch (type) {\n\t\tcase \"application/json\": {\n\t\t\tlet buffer = \"\";\n\t\t\tconst reader = response.body!.getReader();\n\t\t\tconst decoder = new TextDecoder();\n\t\t\twhile (true) {\n\t\t\t\tconst { value, done } = await reader.read();\n\t\t\t\tif (done) break;\n\t\t\t\tbuffer += decoder.decode(value);\n\t\t\t}\n\t\t\treturn JSON.parse(buffer);\n\t\t}\n\t\tcase \"text/html\":\n\t\tcase \"text/plain\": {\n\t\t\tlet buffer = \"\";\n\t\t\tconst reader = response.body!.getReader();\n\t\t\tconst decoder = new TextDecoder();\n\t\t\twhile (true) {\n\t\t\t\tconst { value, done } = await reader.read();\n\t\t\t\tif (done) break;\n\t\t\t\tbuffer += decoder.decode(value);\n\t\t\t}\n\t\t\treturn buffer;\n\t\t}\n\t\tdefault:\n\t\t\treturn response.body;\n\t}\n}\n\nexport function chunked(response: Response) {\n\treturn response.body!;\n}\n\nexport async function buffered(response: Response) {\n\tconst contentType = response.headers.get(\"Content-Type\");\n\tif (!contentType) {\n\t\tthrow new Error(\"Content-Type header is missing\");\n\t}\n\n\tif (response.status === 204) {\n\t\treturn null;\n\t}\n\n\tconst { type } = parse(contentType);\n\tswitch (type) {\n\t\tcase \"application/json\":\n\t\t\treturn response.json();\n\t\tcase \"text/plain\":\n\t\t\treturn response.text();\n\t\tcase \"text/html\":\n\t\t\treturn response.text();\n\t\tcase \"text/xml\":\n\t\tcase \"application/xml\":\n\t\t\treturn response.text();\n\t\tcase \"application/x-www-form-urlencoded\": {\n\t\t\tconst text = await response.text();\n\t\t\treturn Object.fromEntries(new URLSearchParams(text));\n\t\t}\n\t\tcase \"multipart/form-data\":\n\t\t\treturn response.formData();\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported content type: ${contentType}`);\n\t}\n}\n", "export const KIND = Symbol('APIDATA');\n\nexport class APIResponse<Body = unknown, Status extends number = number> {\n static readonly status: number;\n static readonly kind: symbol = Symbol.for(\"APIResponse\");\n status: Status;\n data: Body;\n\n constructor(status: Status, data: Body) {\n this.status = status;\n this.data = data;\n }\n\n static create<Body = unknown>(status: number, data: Body) {\n return new this(status, data);\n }\n\n}\n\nexport class APIError<Body, Status extends number = number> extends APIResponse<\n Body,\n Status\n> {\n static override create<T>(status: number, data: T) {\n return new this(status, data);\n }\n}\n\n\n// 2xx Success\nexport class Ok<T> extends APIResponse<T, 200> {\n static override readonly kind = Symbol.for(\"Ok\");\n static override readonly status = 200 as const;\n constructor(data: T) {\n super(Ok.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]:typeof Ok['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\n\n\nexport class Created<T> extends APIResponse<T, 201> {\n static override readonly kind = Symbol.for(\"Created\");\n static override status = 201 as const;\n constructor(data: T) {\n super(Created.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Created['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class Accepted<T> extends APIResponse<T, 202> {\n static override readonly kind = Symbol.for(\"Accepted\");\n static override status = 202 as const;\n constructor(data: T) {\n super(Accepted.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Accepted['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class NoContent extends APIResponse<never, 204> {\n static override readonly kind = Symbol.for(\"NoContent\");\n static override status = 204 as const;\n constructor() {\n super(NoContent.status, null as never);\n }\n static override create(status: number, data: never): NoContent {\n return new this();\n }\n\n static is<T extends {[KIND]: typeof NoContent['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\n\n// 4xx Client Errors\nexport class BadRequest<T> extends APIError<T, 400> {\n static override readonly kind = Symbol.for(\"BadRequest\");\n static override status = 400 as const;\n constructor(data: T) {\n super(BadRequest.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof BadRequest['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class Unauthorized<T = { message: string }> extends APIError<T, 401> {\n static override readonly kind = Symbol.for(\"Unauthorized\");\n static override status = 401 as const;\n constructor(data: T) {\n super(Unauthorized.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Unauthorized['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class PaymentRequired<T = { message: string }> extends APIError<T, 402> {\n static override readonly kind = Symbol.for(\"PaymentRequired\");\n static override status = 402 as const;\n constructor(data: T) {\n super(PaymentRequired.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof PaymentRequired['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class Forbidden<T = { message: string }> extends APIError<T, 403> {\n static override readonly kind = Symbol.for(\"Forbidden\");\n static override status = 403 as const;\n constructor(data: T) {\n super(Forbidden.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Forbidden['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class NotFound<T = { message: string }> extends APIError<T, 404> {\n static override readonly kind = Symbol.for(\"NotFound\");\n static override status = 404 as const;\n constructor(data: T) {\n super(NotFound.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof NotFound['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class MethodNotAllowed<T = { message: string }> extends APIError<\n T,\n 405\n> {\n static override readonly kind = Symbol.for(\"MethodNotAllowed\");\n static override status = 405 as const;\n constructor(data: T) {\n super(MethodNotAllowed.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof MethodNotAllowed['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class NotAcceptable<T = { message: string }> extends APIError<T, 406> {\n static override readonly kind = Symbol.for(\"NotAcceptable\");\n static override status = 406 as const;\n constructor(data: T) {\n super(NotAcceptable.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof NotAcceptable['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class Conflict<T = { message: string }> extends APIError<T, 409> {\n static override readonly kind = Symbol.for(\"Conflict\");\n static override status = 409 as const;\n constructor(data: T) {\n super(Conflict.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Conflict['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class Gone<T = { message: string }> extends APIError<T, 410> {\n static override readonly kind = Symbol.for(\"Gone\");\n static override status = 410 as const;\n constructor(data: T) {\n super(Gone.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Gone['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class PreconditionFailed<T = { message: string }> extends APIError<T, 412> {\n static override readonly kind = Symbol.for('PreconditionFailed');\n static override status = 412 as const;\n constructor(data: T) {\n super(PreconditionFailed.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends { [KIND]: (typeof PreconditionFailed)['kind'] }>(\n value: unknown,\n ): value is T {\n return (\n typeof value === 'object' &&\n value !== null &&\n KIND in value &&\n value[KIND] === this.kind\n );\n }\n}\nexport class UnprocessableEntity<\n T = { message: string; errors?: Record<string, string[]> },\n> extends APIError<T, 422> {\n static override readonly kind = Symbol.for(\"UnprocessableEntity\");\n static override status = 422 as const;\n constructor(data: T) {\n super(UnprocessableEntity.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof UnprocessableEntity['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class TooManyRequests<\n T = { message: string; retryAfter?: string },\n> extends APIError<T, 429> {\n static override readonly kind = Symbol.for(\"TooManyRequests\");\n static override status = 429 as const;\n constructor(data: T) {\n super(TooManyRequests.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof TooManyRequests['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class PayloadTooLarge<T = { message: string }> extends APIError<T, 413> {\n static override readonly kind = Symbol.for(\"PayloadTooLarge\");\n static override status = 413 as const;\n constructor(data: T) {\n super(PayloadTooLarge.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof PayloadTooLarge['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class UnsupportedMediaType<T = { message: string }> extends APIError<\n T,\n 415\n> {\n static override readonly kind = Symbol.for(\"UnsupportedMediaType\");\n static override status = 415 as const;\n constructor(data: T) {\n super(UnsupportedMediaType.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof UnsupportedMediaType['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\n\n// 5xx Server Errors\nexport class InternalServerError<T = { message: string }> extends APIError<\n T,\n 500\n> {\n static override readonly kind = Symbol.for(\"InternalServerError\");\n static override status = 500 as const;\n constructor(data: T) {\n super(InternalServerError.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof InternalServerError['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class NotImplemented<T = { message: string }> extends APIError<T, 501> {\n static override readonly kind = Symbol.for(\"NotImplemented\");\n static override status = 501 as const;\n constructor(data: T) {\n super(NotImplemented.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof NotImplemented['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class BadGateway<T = { message: string }> extends APIError<T, 502> {\n static override readonly kind = Symbol.for(\"BadGateway\");\n static override status = 502 as const;\n constructor(data: T) {\n super(BadGateway.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof BadGateway['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class ServiceUnavailable<\n T = { message: string; retryAfter?: string },\n> extends APIError<T, 503> {\n static override readonly kind = Symbol.for(\"ServiceUnavailable\");\n static override status = 503 as const;\n constructor(data: T) {\n super(ServiceUnavailable.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof ServiceUnavailable['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class GatewayTimeout<T = { message: string }> extends APIError<T, 504> {\n static override readonly kind = Symbol.for(\"GatewayTimeout\");\n static override status = 504 as const;\n constructor(data: T) {\n super(GatewayTimeout.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof GatewayTimeout['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\n\nexport type ClientError =\n | BadRequest<unknown>\n | Unauthorized<unknown>\n | PaymentRequired<unknown>\n | Forbidden<unknown>\n | NotFound<unknown>\n | MethodNotAllowed<unknown>\n | NotAcceptable<unknown>\n | Conflict<unknown>\n | Gone<unknown>\n | PreconditionFailed<unknown>\n | PayloadTooLarge<unknown>\n | UnsupportedMediaType<unknown>\n | UnprocessableEntity<unknown>\n | TooManyRequests<unknown>;\n\nexport type ServerError =\n | InternalServerError<unknown>\n | NotImplemented<unknown>\n | BadGateway<unknown>\n | ServiceUnavailable<unknown>\n | GatewayTimeout<unknown>;\n\nexport type ProblematicResponse = ClientError | ServerError;\n\nexport type SuccessfulResponse =\n | Ok<unknown>\n | Created<unknown>\n | Accepted<unknown>\n | NoContent;", "import type {\n OpenAPIObject,\n ReferenceObject,\n SchemaObject,\n} from 'openapi3-ts/oas31';\nimport { type ZodSchema, type ZodTypeAny, z } from 'zod';\n\nimport { followRef, isRef } from '@sdk-it/core';\n\n/**\n * Convert an OpenAPI (JSON Schema style) object into a runtime Zod schema,\n */\nexport class RuntimeZodConverter {\n constructor(private spec: OpenAPIObject) {}\n\n #object(schema: SchemaObject): ZodSchema {\n const properties = schema.properties || {};\n const required = schema.required || [];\n\n // Convert each property\n const shape: Record<string, ZodTypeAny> = {};\n\n for (const [key, propSchema] of Object.entries(properties)) {\n const isRequired = required.includes(key);\n shape[key] = this.handle(propSchema, isRequired);\n }\n\n let result = z.object(shape);\n\n // Handle additional properties\n if (schema.additionalProperties) {\n if (typeof schema.additionalProperties === 'object') {\n const addPropSchema = this.handle(schema.additionalProperties, true);\n result = result.catchall(addPropSchema);\n } else if (schema.additionalProperties === true) {\n result = result.catchall(z.unknown());\n }\n }\n\n return result;\n }\n\n #array(schema: SchemaObject): ZodSchema {\n const { items } = schema;\n if (!items) {\n let result: ZodSchema = z.array(z.unknown());\n\n // Apply default if present\n if (schema.default !== undefined) {\n result = z.array(z.unknown()).default(schema.default);\n }\n\n return result;\n }\n\n // If items is an array => tuple\n if (Array.isArray(items)) {\n const tupleItems = items.map((sub) => this.handle(sub, true));\n return z.tuple(tupleItems as [ZodTypeAny, ...ZodTypeAny[]]);\n }\n\n // If items is a single schema => standard z.array(...)\n const itemsSchema = this.handle(items, true);\n let result: ZodSchema = z.array(itemsSchema);\n\n // Apply default if present\n if (schema.default !== undefined) {\n result = z.array(itemsSchema).default(schema.default);\n }\n\n return result;\n }\n\n #ref($ref: string): ZodSchema {\n const resolvedSchema = followRef(this.spec, $ref);\n const zodSchema = this.handle(resolvedSchema, true);\n return zodSchema;\n }\n\n #toIntersection(schemas: ZodSchema[]): ZodSchema {\n const [left, ...right] = schemas;\n if (!right.length) {\n return left;\n }\n return z.intersection(left, this.#toIntersection(right));\n }\n\n allOf(schemas: (SchemaObject | ReferenceObject)[]): ZodSchema {\n const allOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (allOfSchemas.length === 0) {\n return z.unknown();\n }\n if (allOfSchemas.length === 1) {\n return allOfSchemas[0];\n }\n return this.#toIntersection(allOfSchemas);\n }\n\n anyOf(schemas: (SchemaObject | ReferenceObject)[]): ZodSchema {\n const anyOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (anyOfSchemas.length === 1) {\n return anyOfSchemas[0];\n }\n return z.union(anyOfSchemas as [ZodTypeAny, ZodTypeAny, ...ZodTypeAny[]]);\n }\n\n oneOf(schemas: (SchemaObject | ReferenceObject)[]): ZodSchema {\n const oneOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (oneOfSchemas.length === 1) {\n return oneOfSchemas[0];\n }\n return z.union(oneOfSchemas as [ZodTypeAny, ZodTypeAny, ...ZodTypeAny[]]);\n }\n\n enum(type: string, values: unknown[]): ZodSchema {\n if (values.length === 1) {\n return z.literal(values[0] as z.Primitive);\n }\n if (type === 'integer') {\n // Ensure we have at least 2 values for union\n if (values.length >= 2) {\n const [first, second, ...rest] = values.map((val) =>\n z.literal(val as z.Primitive),\n );\n return z.union([first, second, ...rest]);\n }\n return z.literal(values[0] as z.Primitive);\n }\n\n // For string enums, ensure we have the correct type\n const stringValues = values as string[];\n if (stringValues.length >= 2) {\n const [first, ...rest] = stringValues;\n return z.enum([first, ...rest] as [string, ...string[]]);\n }\n return z.literal(stringValues[0] as z.Primitive);\n }\n\n /**\n * Handle a `string` schema with possible format keywords (JSON Schema).\n */\n string(schema: SchemaObject): ZodSchema {\n if (schema.contentEncoding === 'binary') {\n return z.instanceof(Blob);\n }\n\n let base: ZodSchema = z.string();\n\n switch (schema.format) {\n case 'date-time':\n case 'datetime':\n base = z.string().datetime();\n break;\n case 'date':\n base = z.coerce.date();\n break;\n case 'time':\n base = z.string(); // Could add regex for HH:MM:SS format\n break;\n case 'email':\n base = z.string().email();\n break;\n case 'uuid':\n base = z.string().uuid();\n break;\n case 'url':\n case 'uri':\n base = z.string().url();\n break;\n case 'ipv4':\n base = z.string().ip({ version: 'v4' });\n break;\n case 'ipv6':\n base = z.string().ip({ version: 'v6' });\n break;\n case 'byte':\n case 'binary':\n base = z.instanceof(Blob);\n break;\n case 'int64':\n // JS numbers can't reliably store int64, keep as string or use bigint\n base = z.string();\n break;\n default:\n // No special format\n break;\n }\n\n return base;\n }\n\n /**\n * Handle number/integer constraints from OpenAPI/JSON Schema.\n */\n #number(schema: SchemaObject): ZodSchema {\n let base: ZodSchema = z.number();\n\n if (schema.format === 'int64') {\n base = z.bigint();\n }\n\n if (schema.format === 'int32') {\n base = z.number().int();\n }\n\n // Exclusive bounds\n if (typeof schema.exclusiveMinimum === 'number') {\n if (schema.format === 'int64') {\n base = (base as z.ZodBigInt).gt(BigInt(schema.exclusiveMinimum));\n } else {\n base = (base as z.ZodNumber).gt(schema.exclusiveMinimum);\n }\n }\n\n if (typeof schema.exclusiveMaximum === 'number') {\n if (schema.format === 'int64') {\n base = (base as z.ZodBigInt).lt(BigInt(schema.exclusiveMaximum));\n } else {\n base = (base as z.ZodNumber).lt(schema.exclusiveMaximum);\n }\n }\n\n // Inclusive bounds\n if (typeof schema.minimum === 'number') {\n if (schema.format === 'int64') {\n base = (base as z.ZodBigInt).min(BigInt(schema.minimum));\n } else {\n base = (base as z.ZodNumber).min(schema.minimum);\n }\n }\n\n if (typeof schema.maximum === 'number') {\n if (schema.format === 'int64') {\n base = (base as z.ZodBigInt).max(BigInt(schema.maximum));\n } else {\n base = (base as z.ZodNumber).max(schema.maximum);\n }\n }\n\n // multipleOf\n if (typeof schema.multipleOf === 'number') {\n const multipleOf = schema.multipleOf;\n base = base.refine(\n (val) => Number.isInteger(Number(val) / multipleOf),\n `Must be a multiple of ${multipleOf}`,\n );\n }\n\n return base;\n }\n\n /**\n * Convert a basic type to Zod schema with proper chaining\n */\n normal(\n type: string,\n schema: SchemaObject,\n required = false,\n nullable = false,\n ): ZodSchema {\n let base: ZodSchema;\n\n switch (type) {\n case 'string':\n base = this.string(schema);\n break;\n case 'number':\n case 'integer':\n base = this.#number(schema);\n break;\n case 'boolean':\n base = z.boolean();\n break;\n case 'object':\n base = this.#object(schema);\n break;\n case 'array':\n base = this.#array(schema);\n break;\n case 'null':\n base = z.null();\n break;\n default:\n base = z.unknown();\n break;\n }\n\n // Apply nullable first (this affects the base type)\n if (nullable) {\n base = base.nullable();\n }\n\n // Apply default before optional (important for proper chaining)\n if (schema.default !== undefined) {\n if (schema.format === 'int64' && typeof schema.default === 'number') {\n // For bigint, rebuild the schema with default\n base = z.bigint().default(BigInt(schema.default));\n } else {\n // Rebuild the base schema with default to avoid type issues\n const defaultValue = schema.default;\n switch (type) {\n case 'string':\n base = this.string(schema).default(defaultValue);\n break;\n case 'number':\n case 'integer':\n base = this.#number(schema);\n // Number schemas already handle defaults internally\n break;\n case 'boolean':\n base = z.boolean().default(defaultValue);\n break;\n case 'object':\n base = this.#object(schema).default(defaultValue);\n break;\n case 'array':\n // Arrays handle defaults internally\n break;\n case 'null':\n base = z.null().default(defaultValue);\n break;\n default:\n base = z.unknown().default(defaultValue);\n break;\n }\n }\n }\n\n // Apply optional last\n if (!required) {\n base = base.optional();\n }\n\n // Handle x-prefix transform (this should be last)\n if (schema['x-prefix']) {\n const prefix = schema['x-prefix'];\n if (!required) {\n base = base.transform((val) => (val ? `${prefix}${val}` : undefined));\n } else {\n base = base.transform((val) => `${prefix}${val}`);\n }\n }\n\n return base;\n }\n\n handle(schema: SchemaObject | ReferenceObject, required = false): ZodSchema {\n // Handle reference\n if (isRef(schema)) {\n let result = this.#ref(schema.$ref);\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n\n // Handle allOf \u2192 intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n let result = this.allOf(schema.allOf);\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n\n // anyOf \u2192 union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n let result = this.anyOf(schema.anyOf);\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n\n // oneOf \u2192 union\n if (schema.oneOf && Array.isArray(schema.oneOf) && schema.oneOf.length) {\n let result = this.oneOf(schema.oneOf);\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n\n // enum\n if (schema.enum && Array.isArray(schema.enum)) {\n let result = this.enum(schema.type as string, schema.enum);\n\n // Apply default if it exists and is in the enum\n if (\n schema.default !== undefined &&\n schema.enum.includes(schema.default)\n ) {\n // Rebuild the enum schema with default to avoid type issues\n const defaultValue = schema.default;\n const enumValues = schema.enum;\n const enumType = schema.type as string;\n\n if (enumValues.length === 1) {\n result = z\n .literal(enumValues[0] as z.Primitive)\n .default(defaultValue);\n } else if (enumType === 'integer') {\n if (enumValues.length >= 2) {\n const [first, second, ...rest] = enumValues.map((val: unknown) =>\n z.literal(val as z.Primitive),\n );\n result = z.union([first, second, ...rest]).default(defaultValue);\n } else {\n result = z\n .literal(enumValues[0] as z.Primitive)\n .default(defaultValue);\n }\n } else {\n const stringValues = enumValues as string[];\n if (stringValues.length >= 2) {\n const [first, ...rest] = stringValues;\n result = z\n .enum([first, ...rest] as [string, ...string[]])\n .default(defaultValue);\n } else {\n result = z\n .literal(stringValues[0] as z.Primitive)\n .default(defaultValue);\n }\n }\n }\n\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n\n // Parse types (can be string or array in OpenAPI 3.1)\n const types = Array.isArray(schema.type)\n ? schema.type\n : schema.type\n ? [schema.type]\n : [];\n\n // Backward compatibility with OpenAPI 3.0 nullable\n if ('nullable' in schema && schema.nullable) {\n types.push('null');\n } else if (schema.default === null) {\n types.push('null');\n }\n\n // If no explicit \"type\", fallback to unknown\n if (!types.length) {\n return required ? z.unknown() : z.unknown().optional();\n }\n\n // Handle union types\n if (types.length > 1) {\n const realTypes = types.filter((t) => t !== 'null');\n if (realTypes.length === 1 && types.includes('null')) {\n // Single real type + \"null\"\n return this.normal(realTypes[0], schema, required, true);\n }\n // Multiple different types, build a union\n const subSchemas = types.map((t) => this.normal(t, schema, true));\n if (subSchemas.length >= 2) {\n const [first, second, ...rest] = subSchemas;\n let result: ZodSchema = z.union([first, second, ...rest]);\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n }\n\n return this.normal(types[0], schema, required, false);\n }\n}\n\n/**\n * Convert a runtime SchemaObject to a Zod schema\n */\nexport function schemaToZod(\n schema: SchemaObject,\n spec: OpenAPIObject,\n options?: {\n required?: boolean;\n },\n): ZodSchema {\n const converter = new RuntimeZodConverter(spec);\n return converter.handle(schema, options?.required ?? false);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type Tool, tool } from 'ai';\nimport { z } from 'zod';\n\nimport {\n type IR,\n type TunedOperationObject,\n forEachOperation,\n loadSpec,\n toIR,\n} from '@sdk-it/spec';\nimport {\n type OperationInput,\n buildInput,\n operationSchema,\n toHttpOutput,\n} from '@sdk-it/typescript';\n\nimport { Dispatcher, fetchType } from './http/dispatcher.ts';\nimport {\n type Interceptor,\n createBaseUrlInterceptor,\n createHeadersInterceptor,\n} from './http/interceptors.ts';\nimport {\n type Endpoint,\n type HeadersInit,\n type Method,\n empty,\n formdata,\n json,\n toRequest,\n urlencoded,\n} from './http/request.ts';\nimport * as http from './http/response.ts';\nimport { schemaToZod } from './zod.ts';\n\nconst optionsSchema = z.object({\n token: z\n .string()\n .optional()\n .transform((val) => (val ? `Bearer ${val}` : undefined)),\n fetch: fetchType,\n baseUrl: z.string(),\n headers: z.record(z.string()).optional(),\n});\ntype ClientOptions = z.infer<typeof optionsSchema>;\n\nexport function inputToPath(\n operation: TunedOperationObject,\n inputs: Record<string, OperationInput>,\n) {\n const inputHeaders: string[] = [];\n const inputQuery: string[] = [];\n const inputBody: string[] = [];\n const inputParams: string[] = [];\n for (const [name, prop] of Object.entries(inputs)) {\n if (prop.in === 'headers' || prop.in === 'header') {\n inputHeaders.push(name);\n } else if (prop.in === 'query') {\n inputQuery.push(name);\n } else if (prop.in === 'body') {\n inputBody.push(name);\n } else if (prop.in === 'path') {\n inputParams.push(name);\n } else {\n throw new Error(\n `Unknown source ${prop.in} in ${name} ${JSON.stringify(\n prop,\n )} in ${operation.operationId}`,\n );\n }\n }\n\n return {\n inputHeaders,\n inputQuery,\n inputBody,\n inputParams,\n };\n}\n\nexport class Client {\n public options: ClientOptions;\n public schemas: Record<string, any>;\n constructor(options: ClientOptions, schemas: Record<string, any>) {\n this.options = optionsSchema.parse(options);\n this.schemas = schemas;\n }\n\n async request(\n endpoint: string,\n input: any,\n options?: { signal?: AbortSignal; headers?: HeadersInit },\n ) {\n const route = this.schemas[endpoint];\n const withDefaultInputs = Object.assign({}, this.#defaultInputs, input);\n // const [parsedInput, parseError] = parseInput(\n // route.schema,\n // withDefaultInputs,\n // );\n // if (parseError) {\n // throw parseError;\n // }\n const parsedInput = input;\n const result = await route.dispatch(parsedInput as never, {\n fetch: this.options.fetch,\n interceptors: [\n createHeadersInterceptor(\n () => this.defaultHeaders,\n options?.headers ?? {},\n ),\n createBaseUrlInterceptor(() => this.options.baseUrl),\n ],\n signal: options?.signal,\n });\n return result;\n }\n\n get defaultHeaders() {\n return {\n authorization: this.options['token'],\n ...this.options.headers,\n };\n }\n\n get #defaultInputs() {\n return {};\n }\n\n setOptions(options: Partial<ClientOptions>) {\n const validated = optionsSchema.partial().parse(options);\n\n for (const key of Object.keys(validated) as (keyof ClientOptions)[]) {\n if (validated[key] !== undefined) {\n (this.options[key] as (typeof validated)[typeof key]) = validated[key]!;\n }\n }\n }\n}\n\nfunction createRpc(ir: IR, options: Partial<ClientOptions> = {}) {\n const schemas: Record<Endpoint, any> = {};\n forEachOperation(ir, (entry, operation) => {\n const endpoint: Endpoint = `${entry.method.toUpperCase() as Method} ${entry.path}`;\n const details = buildInput(ir, operation);\n const contentTypeMap = {\n json: json,\n urlencoded: urlencoded,\n formdata: formdata,\n empty: empty,\n } as const;\n const outputs = Object.keys(operation.responses).flatMap((status) =>\n toHttpOutput(\n ir,\n operation.operationId,\n status,\n operation.responses[status],\n false,\n ),\n );\n const inputSchema = schemaToZod(\n operationSchema(ir, operation, details.ct),\n ir,\n );\n schemas[endpoint] = {\n operationId: operation.operationId,\n output: outputs.map((it) => http[it.replace('http.', '') as never]),\n schema: inputSchema,\n async dispatch(\n input: any,\n options: {\n signal?: AbortSignal;\n interceptors: Interceptor[];\n fetch: z.infer<typeof fetchType>;\n },\n ) {\n const dispatcher = new Dispatcher(options.interceptors, options.fetch);\n const serializer =\n contentTypeMap[\n details.outgoingContentType as keyof typeof contentTypeMap\n ] || defaultSerializer(details.outgoingContentType);\n const request = toRequest(\n endpoint,\n serializer(input, inputToPath(operation, details.inputs)),\n );\n return dispatcher.send(request, this.output);\n },\n };\n });\n\n return new Client(\n {\n ...options,\n baseUrl: options?.baseUrl ?? ir.servers[0].url,\n },\n schemas,\n );\n}\n\nexport async function rpc(\n openapi: string,\n options?: Partial<ClientOptions>,\n): Promise<Client> {\n const spec = await loadSpec(openapi);\n const ir = toIR({ spec, responses: { flattenErrorResponses: true } });\n return createRpc(ir, options);\n}\n\nexport function toTools(rpc: Client) {\n const tools: Record<string, any> = {};\n for (const [endpoint, route] of Object.entries(rpc.schemas)) {\n console.dir({ [endpoint]: route }, { depth: null });\n // const operation = rpc.operations[route.operationId];\n // tools[route.operationId] = tool({\n // type: 'function',\n // description: operation.description,\n // inputSchema: operation.input,\n // execute: async (input) => {\n // console.log('Executing tool with input:', input);\n // const response = await rpc.request(endpoint, input);\n // return JSON.stringify(response);\n // },\n // });\n }\n return tools;\n}\n\nexport async function toAgents(\n openapi: string,\n options?: Partial<ClientOptions>,\n) {\n const spec = await loadSpec(openapi);\n const ir = toIR({ spec, responses: { flattenErrorResponses: true } });\n const client = createRpc(ir, options);\n const groups: Record<\n string,\n {\n tools: Record<string, Tool>;\n instructions: string;\n handoffDescription: string;\n displayName: string;\n name: string;\n }\n > = {};\n\n forEachOperation(ir, (entry, operation) => {\n const tagDef = ir.tags.find((tag) => tag.name === entry.tag);\n if (!tagDef) {\n console.warn(`No tag details found for tag: ${entry.tag}`);\n return;\n }\n\n groups[entry.tag] ??= {\n tools: {},\n instructions: '',\n displayName: '',\n name: '',\n handoffDescription: '',\n };\n const endpoint = `${entry.method.toUpperCase()} ${entry.path}`;\n groups[entry.tag].tools[operation['x-fn-name']] = tool({\n type: 'function',\n description: operation.description,\n inputSchema: client.schemas[endpoint].schema,\n execute: async (input) => {\n console.log('Executing tool with input:', input);\n const response = await client.request(endpoint, input);\n return JSON.stringify(response);\n },\n });\n groups[entry.tag].handoffDescription = tagDef['x-handoff-description'];\n groups[entry.tag].instructions = tagDef['x-instructions'];\n groups[entry.tag].name = tagDef.name;\n groups[entry.tag].displayName = tagDef['x-name'];\n });\n const agents: Record<string, any> = {};\n for (const [\n agentName,\n { tools, instructions, displayName },\n ] of Object.entries(groups)) {\n agents[agentName] = {\n name: displayName,\n instructions,\n tools,\n };\n }\n agents['triage'] = {\n name: 'Triage Agent',\n instructions:\n 'You are a helpful triaging agent. You can use your tools to delegate questions to other appropriate agents.',\n tools: Object.fromEntries(\n Object.entries(groups).map(([, { name, handoffDescription }]) => {\n return [\n `transfer_to_${name}`,\n tool({\n description: [\n `Handoff to the ${name} agent to handle the request.`,\n handoffDescription,\n ].join(' '),\n inputSchema: z.object({}),\n execute: async () => ({ agent: name }),\n }),\n ];\n }),\n ),\n };\n return agents;\n}\n\nfunction defaultSerializer(ct: string) {\n throw new Error(`Unsupported content type: ${ct}`);\n}\n", "import z from 'zod';\n\nimport { type Interceptor } from '../http/interceptors.ts';\nimport { type RequestConfig } from '../http/request.ts';\nimport { buffered } from './parse-response.ts';\nimport { APIError, APIResponse, type SuccessfulResponse } from './response.ts';\n\nexport type Unionize<T> = T extends [infer Single extends OutputType]\n ? InstanceType<Single>\n : T extends readonly [...infer Tuple extends OutputType[]]\n ? { [I in keyof Tuple]: InstanceType<Tuple[I]> }[number]\n : never;\n\nexport type InstanceType<T> =\n T extends Type<infer U>\n ? U\n : T extends { type: Type<infer U> }\n ? U\n : T extends Array<unknown>\n ? Unionize<T>\n : never;\n\nexport interface Type<T> {\n new (...args: any[]): T;\n}\nexport type Parser = (\n response: Response,\n) => Promise<unknown> | ReadableStream<any>;\nexport type OutputType =\n | Type<APIResponse>\n | { parser: Parser; type: Type<APIResponse> };\n\nexport const fetchType = z\n .function()\n .args(z.instanceof(Request))\n .returns(z.promise(z.instanceof(Response)))\n .optional();\n\nexport async function parse<T extends OutputType[]>(\n outputs: T,\n response: Response,\n) {\n let output: typeof APIResponse | null = null;\n let parser: Parser = buffered;\n for (const outputType of outputs) {\n if ('parser' in outputType) {\n parser = outputType.parser;\n if (isTypeOf(outputType.type, APIResponse)) {\n if (response.status === outputType.type.status) {\n output = outputType.type;\n break;\n }\n }\n } else if (isTypeOf(outputType, APIResponse)) {\n if (response.status === outputType.status) {\n output = outputType;\n break;\n }\n }\n }\n\n if (response.ok) {\n const apiresponse = (output || APIResponse).create(\n response.status,\n await parser(response),\n );\n\n return apiresponse as Extract<InstanceType<T>, SuccessfulResponse>;\n }\n\n throw (output || APIError).create(response.status, await parser(response));\n}\n\nexport function isTypeOf<T extends Type<APIResponse>>(\n instance: any,\n baseType: T,\n): instance is T {\n if (instance === baseType) {\n return true;\n }\n const prototype = Object.getPrototypeOf(instance);\n if (prototype === null) {\n return false;\n }\n return isTypeOf(prototype, baseType);\n}\n\nexport class Dispatcher {\n #interceptors: Interceptor[] = [];\n #fetch: z.infer<typeof fetchType>;\n constructor(interceptors: Interceptor[], fetch?: z.infer<typeof fetchType>) {\n this.#interceptors = interceptors;\n this.#fetch = fetch;\n }\n\n async send<T extends OutputType[]>(\n config: RequestConfig,\n outputs: T,\n signal?: AbortSignal,\n ) {\n for (const interceptor of this.#interceptors) {\n if (interceptor.before) {\n config = await interceptor.before(config);\n }\n }\n\n let response = await (this.#fetch ?? fetch)(\n new Request(config.url, config.init),\n {\n ...config.init,\n signal: signal,\n },\n );\n\n for (let i = this.#interceptors.length - 1; i >= 0; i--) {\n const interceptor = this.#interceptors[i];\n if (interceptor.after) {\n response = await interceptor.after(response.clone());\n }\n }\n\n return await parse(outputs, response);\n }\n}\n", "import type { HeadersInit, RequestConfig } from './request.ts';\n\nexport interface Interceptor {\n before?: (config: RequestConfig) => Promise<RequestConfig> | RequestConfig;\n after?: (response: Response) => Promise<Response> | Response;\n}\n\nexport const createHeadersInterceptor = (\n defaultHeaders: () => Record<string, string | undefined>,\n requestHeaders: HeadersInit,\n): Interceptor => {\n return {\n before({ init, url }) {\n // Priority Levels\n // 1. Headers Input\n // 2. Request Headers\n // 3. Default Headers\n const headers = defaultHeaders();\n\n for (const [key, value] of new Headers(requestHeaders)) {\n // Only set the header if it doesn't already exist and has a value\n // even though these headers are passed at operation level\n // still they are lower priority compared to the headers input\n if (value !== undefined && !init.headers.has(key)) {\n init.headers.set(key, value);\n }\n }\n\n for (const [key, value] of Object.entries(headers)) {\n // Only set the header if it doesn't already exist and has a value\n if (value !== undefined && !init.headers.has(key)) {\n init.headers.set(key, value);\n }\n }\n\n return { init, url };\n },\n };\n};\n\nexport const createBaseUrlInterceptor = (\n getBaseUrl: () => string,\n): Interceptor => {\n return {\n before({ init, url }) {\n const baseUrl = getBaseUrl();\n if (url.protocol === 'local:') {\n return {\n init,\n url: new URL(url.href.replace('local://', baseUrl)),\n };\n }\n return { init, url };\n },\n };\n};\n\nexport const logInterceptor: Interceptor = {\n before({ url, init }) {\n console.log('Request:', { url, init });\n return { url, init };\n },\n after(response) {\n console.log('Response:', response);\n return response;\n },\n};\n\n/**\n * Creates an interceptor that logs detailed information about requests and responses.\n * @param options Configuration options for the logger\n * @returns An interceptor object with before and after handlers\n */\nexport const createDetailedLogInterceptor = (options?: {\n logLevel?: 'debug' | 'info' | 'warn' | 'error';\n includeRequestBody?: boolean;\n includeResponseBody?: boolean;\n}) => {\n const logLevel = options?.logLevel || 'info';\n const includeRequestBody = options?.includeRequestBody || false;\n const includeResponseBody = options?.includeResponseBody || false;\n\n return {\n async before(request: Request) {\n const logData = {\n url: request.url,\n method: request.method,\n contentType: request.headers.get('Content-Type'),\n headers: Object.fromEntries([...request.headers.entries()]),\n };\n\n console[logLevel]('\uD83D\uDE80 Outgoing Request:', logData);\n\n if (includeRequestBody) {\n try {\n // Clone the request to avoid consuming the body stream\n const clonedRequest = request.clone();\n if (\n clonedRequest.headers\n .get('Content-Type')\n ?.includes('application/json')\n ) {\n const body = await clonedRequest.json().catch(() => null);\n console[logLevel]('Request Body:', body);\n } else {\n const body = await clonedRequest.text().catch(() => null);\n console[logLevel]('Request Body:', body);\n }\n } catch (error) {\n console.error('Could not log request body:', error);\n }\n }\n\n return request;\n },\n\n async after(response: Response) {\n const logData = {\n status: response.status,\n statusText: response.statusText,\n url: response.url,\n headers: Object.fromEntries([...response.headers.entries()]),\n };\n\n console[logLevel]('\uD83D\uDCE5 Incoming Response:', logData);\n\n if (includeResponseBody && response.body) {\n try {\n // Clone the response to avoid consuming the body stream\n const clonedResponse = response.clone();\n if (\n clonedResponse.headers\n .get('Content-Type')\n ?.includes('application/json')\n ) {\n const body = await clonedResponse.json().catch(() => null);\n console[logLevel]('Response Body:', body);\n } else {\n const body = await clonedResponse.text().catch(() => null);\n if (body) {\n console[logLevel](\n 'Response Body:',\n body.substring(0, 500) + (body.length > 500 ? '...' : ''),\n );\n } else {\n console[logLevel]('No response body');\n }\n }\n } catch (error) {\n console.error('Could not log response body:', error);\n }\n }\n\n return response;\n },\n };\n};\n", "type Init = Omit<RequestInit, 'headers'> & { headers: Headers };\nexport type RequestConfig = { init: Init; url: URL };\nexport type Method =\n | 'GET'\n | 'POST'\n | 'PUT'\n | 'PATCH'\n | 'DELETE'\n | 'HEAD'\n | 'OPTIONS';\nexport type ContentType =\n | 'xml'\n | 'json'\n | 'urlencoded'\n | 'multipart'\n | 'formdata';\nexport type HeadersInit = [string, string][] | Record<string, string>;\nexport type Endpoint =\n | `${ContentType} ${Method} ${string}`\n | `${Method} ${string}`;\n\nexport type BodyInit =\n | ArrayBuffer\n | Blob\n | FormData\n | URLSearchParams\n | null\n | string;\n\nfunction template(\n templateString: string,\n templateVariables: Record<string, any>,\n): string {\n const nargs = /{([0-9a-zA-Z_]+)}/g;\n return templateString.replace(nargs, (match, key: string, index: number) => {\n // Handle escaped double braces\n if (\n templateString[index - 1] === '{' &&\n templateString[index + match.length] === '}'\n ) {\n return key;\n }\n\n const result = key in templateVariables ? templateVariables[key] : null;\n return result === null || result === undefined ? '' : String(result);\n });\n}\n\ntype Input = Record<string, any>;\ntype Props = {\n inputHeaders: string[];\n inputQuery: string[];\n inputBody: string[];\n inputParams: string[];\n};\n\nabstract class Serializer {\n protected input: Input;\n protected props: Props;\n\n constructor(input: Input, props: Props) {\n this.input = input;\n this.props = props;\n }\n\n abstract getBody(): BodyInit | null;\n abstract getHeaders(): Record<string, string>;\n serialize(path: string): Serialized {\n const params = this.props.inputParams.reduce<Record<string, any>>(\n (acc, key) => {\n acc[key] = this.input[key];\n return acc;\n },\n {},\n );\n const url = new URL(template(path, params), `local://`);\n\n const headers = new Headers({});\n for (const header of this.props.inputHeaders) {\n headers.set(header, this.input[header]);\n }\n\n for (const key of this.props.inputQuery) {\n const value = this.input[key];\n if (value !== undefined) {\n if (Array.isArray(value)) {\n for (const item of value) {\n url.searchParams.append(key, String(item));\n }\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n return {\n body: this.getBody(),\n url,\n headers: this.getHeaders(),\n };\n }\n}\n\ninterface Serialized {\n body: BodyInit | null;\n headers: Record<string, string>;\n url: URL;\n}\n\nclass JsonSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body: Record<string, any> = {};\n if (\n this.props.inputBody.length === 1 &&\n this.props.inputBody[0] === '$body'\n ) {\n return JSON.stringify(this.input.$body);\n }\n\n for (const prop of this.props.inputBody) {\n body[prop] = this.input[prop];\n }\n return JSON.stringify(body);\n }\n getHeaders(): Record<string, string> {\n return {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n };\n }\n}\n\nclass UrlencodedSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body = new URLSearchParams();\n for (const prop of this.props.inputBody) {\n body.set(prop, this.input[prop]);\n }\n return body;\n }\n getHeaders(): Record<string, string> {\n return {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n };\n }\n}\n\nclass EmptySerializer extends Serializer {\n getBody(): BodyInit | null {\n return null;\n }\n getHeaders(): Record<string, string> {\n return {};\n }\n}\n\nclass FormDataSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body = new FormData();\n for (const prop of this.props.inputBody) {\n body.append(prop, this.input[prop]);\n }\n return body;\n }\n getHeaders(): Record<string, string> {\n return {\n Accept: 'application/json',\n };\n }\n}\n\nexport function json(input: Input, props: Props) {\n return new JsonSerializer(input, props);\n}\nexport function urlencoded(input: Input, props: Props) {\n return new UrlencodedSerializer(input, props);\n}\nexport function empty(input: Input, props: Props) {\n return new EmptySerializer(input, props);\n}\nexport function formdata(input: Input, props: Props) {\n return new FormDataSerializer(input, props);\n}\n\nexport function toRequest<T extends Endpoint>(\n endpoint: T,\n serializer: Serializer,\n): RequestConfig {\n const [method, path] = endpoint.split(' ');\n const input = serializer.serialize(path);\n return {\n url: input.url,\n init: {\n method: method,\n headers: new Headers(input.headers),\n body: method === 'GET' ? undefined : input.body,\n },\n };\n}\n", "import { parse } from \"fast-content-type-parse\";\n\nasync function handleChunkedResponse(response: Response, contentType: string) {\n\tconst { type } = parse(contentType);\n\n\tswitch (type) {\n\t\tcase \"application/json\": {\n\t\t\tlet buffer = \"\";\n\t\t\tconst reader = response.body!.getReader();\n\t\t\tconst decoder = new TextDecoder();\n\t\t\twhile (true) {\n\t\t\t\tconst { value, done } = await reader.read();\n\t\t\t\tif (done) break;\n\t\t\t\tbuffer += decoder.decode(value);\n\t\t\t}\n\t\t\treturn JSON.parse(buffer);\n\t\t}\n\t\tcase \"text/html\":\n\t\tcase \"text/plain\": {\n\t\t\tlet buffer = \"\";\n\t\t\tconst reader = response.body!.getReader();\n\t\t\tconst decoder = new TextDecoder();\n\t\t\twhile (true) {\n\t\t\t\tconst { value, done } = await reader.read();\n\t\t\t\tif (done) break;\n\t\t\t\tbuffer += decoder.decode(value);\n\t\t\t}\n\t\t\treturn buffer;\n\t\t}\n\t\tdefault:\n\t\t\treturn response.body;\n\t}\n}\n\nexport function chunked(response: Response) {\n\treturn response.body!;\n}\n\nexport async function buffered(response: Response) {\n\tconst contentType = response.headers.get(\"Content-Type\");\n\tif (!contentType) {\n\t\tthrow new Error(\"Content-Type header is missing\");\n\t}\n\n\tif (response.status === 204) {\n\t\treturn null;\n\t}\n\n\tconst { type } = parse(contentType);\n\tswitch (type) {\n\t\tcase \"application/json\":\n\t\t\treturn response.json();\n\t\tcase \"text/plain\":\n\t\t\treturn response.text();\n\t\tcase \"text/html\":\n\t\t\treturn response.text();\n\t\tcase \"text/xml\":\n\t\tcase \"application/xml\":\n\t\t\treturn response.text();\n\t\tcase \"application/x-www-form-urlencoded\": {\n\t\t\tconst text = await response.text();\n\t\t\treturn Object.fromEntries(new URLSearchParams(text));\n\t\t}\n\t\tcase \"multipart/form-data\":\n\t\t\treturn response.formData();\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported content type: ${contentType}`);\n\t}\n}\n", "export const KIND = Symbol('APIDATA');\n\nexport class APIResponse<Body = unknown, Status extends number = number> {\n static readonly status: number;\n static readonly kind: symbol = Symbol.for(\"APIResponse\");\n status: Status;\n data: Body;\n\n constructor(status: Status, data: Body) {\n this.status = status;\n this.data = data;\n }\n\n static create<Body = unknown>(status: number, data: Body) {\n return new this(status, data);\n }\n\n}\n\nexport class APIError<Body, Status extends number = number> extends APIResponse<\n Body,\n Status\n> {\n static override create<T>(status: number, data: T) {\n return new this(status, data);\n }\n}\n\n\n// 2xx Success\nexport class Ok<T> extends APIResponse<T, 200> {\n static override readonly kind = Symbol.for(\"Ok\");\n static override readonly status = 200 as const;\n constructor(data: T) {\n super(Ok.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]:typeof Ok['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\n\n\nexport class Created<T> extends APIResponse<T, 201> {\n static override readonly kind = Symbol.for(\"Created\");\n static override status = 201 as const;\n constructor(data: T) {\n super(Created.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Created['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class Accepted<T> extends APIResponse<T, 202> {\n static override readonly kind = Symbol.for(\"Accepted\");\n static override status = 202 as const;\n constructor(data: T) {\n super(Accepted.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Accepted['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class NoContent extends APIResponse<never, 204> {\n static override readonly kind = Symbol.for(\"NoContent\");\n static override status = 204 as const;\n constructor() {\n super(NoContent.status, null as never);\n }\n static override create(status: number, data: never): NoContent {\n return new this();\n }\n\n static is<T extends {[KIND]: typeof NoContent['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\n\n// 4xx Client Errors\nexport class BadRequest<T> extends APIError<T, 400> {\n static override readonly kind = Symbol.for(\"BadRequest\");\n static override status = 400 as const;\n constructor(data: T) {\n super(BadRequest.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof BadRequest['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class Unauthorized<T = { message: string }> extends APIError<T, 401> {\n static override readonly kind = Symbol.for(\"Unauthorized\");\n static override status = 401 as const;\n constructor(data: T) {\n super(Unauthorized.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Unauthorized['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class PaymentRequired<T = { message: string }> extends APIError<T, 402> {\n static override readonly kind = Symbol.for(\"PaymentRequired\");\n static override status = 402 as const;\n constructor(data: T) {\n super(PaymentRequired.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof PaymentRequired['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class Forbidden<T = { message: string }> extends APIError<T, 403> {\n static override readonly kind = Symbol.for(\"Forbidden\");\n static override status = 403 as const;\n constructor(data: T) {\n super(Forbidden.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Forbidden['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class NotFound<T = { message: string }> extends APIError<T, 404> {\n static override readonly kind = Symbol.for(\"NotFound\");\n static override status = 404 as const;\n constructor(data: T) {\n super(NotFound.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof NotFound['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class MethodNotAllowed<T = { message: string }> extends APIError<\n T,\n 405\n> {\n static override readonly kind = Symbol.for(\"MethodNotAllowed\");\n static override status = 405 as const;\n constructor(data: T) {\n super(MethodNotAllowed.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof MethodNotAllowed['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class NotAcceptable<T = { message: string }> extends APIError<T, 406> {\n static override readonly kind = Symbol.for(\"NotAcceptable\");\n static override status = 406 as const;\n constructor(data: T) {\n super(NotAcceptable.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof NotAcceptable['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class Conflict<T = { message: string }> extends APIError<T, 409> {\n static override readonly kind = Symbol.for(\"Conflict\");\n static override status = 409 as const;\n constructor(data: T) {\n super(Conflict.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Conflict['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class Gone<T = { message: string }> extends APIError<T, 410> {\n static override readonly kind = Symbol.for(\"Gone\");\n static override status = 410 as const;\n constructor(data: T) {\n super(Gone.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof Gone['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class PreconditionFailed<T = { message: string }> extends APIError<T, 412> {\n static override readonly kind = Symbol.for('PreconditionFailed');\n static override status = 412 as const;\n constructor(data: T) {\n super(PreconditionFailed.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends { [KIND]: (typeof PreconditionFailed)['kind'] }>(\n value: unknown,\n ): value is T {\n return (\n typeof value === 'object' &&\n value !== null &&\n KIND in value &&\n value[KIND] === this.kind\n );\n }\n}\nexport class UnprocessableEntity<\n T = { message: string; errors?: Record<string, string[]> },\n> extends APIError<T, 422> {\n static override readonly kind = Symbol.for(\"UnprocessableEntity\");\n static override status = 422 as const;\n constructor(data: T) {\n super(UnprocessableEntity.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof UnprocessableEntity['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class TooManyRequests<\n T = { message: string; retryAfter?: string },\n> extends APIError<T, 429> {\n static override readonly kind = Symbol.for(\"TooManyRequests\");\n static override status = 429 as const;\n constructor(data: T) {\n super(TooManyRequests.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof TooManyRequests['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class PayloadTooLarge<T = { message: string }> extends APIError<T, 413> {\n static override readonly kind = Symbol.for(\"PayloadTooLarge\");\n static override status = 413 as const;\n constructor(data: T) {\n super(PayloadTooLarge.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof PayloadTooLarge['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class UnsupportedMediaType<T = { message: string }> extends APIError<\n T,\n 415\n> {\n static override readonly kind = Symbol.for(\"UnsupportedMediaType\");\n static override status = 415 as const;\n constructor(data: T) {\n super(UnsupportedMediaType.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof UnsupportedMediaType['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\n\n// 5xx Server Errors\nexport class InternalServerError<T = { message: string }> extends APIError<\n T,\n 500\n> {\n static override readonly kind = Symbol.for(\"InternalServerError\");\n static override status = 500 as const;\n constructor(data: T) {\n super(InternalServerError.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof InternalServerError['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class NotImplemented<T = { message: string }> extends APIError<T, 501> {\n static override readonly kind = Symbol.for(\"NotImplemented\");\n static override status = 501 as const;\n constructor(data: T) {\n super(NotImplemented.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof NotImplemented['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class BadGateway<T = { message: string }> extends APIError<T, 502> {\n static override readonly kind = Symbol.for(\"BadGateway\");\n static override status = 502 as const;\n constructor(data: T) {\n super(BadGateway.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof BadGateway['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class ServiceUnavailable<\n T = { message: string; retryAfter?: string },\n> extends APIError<T, 503> {\n static override readonly kind = Symbol.for(\"ServiceUnavailable\");\n static override status = 503 as const;\n constructor(data: T) {\n super(ServiceUnavailable.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof ServiceUnavailable['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\nexport class GatewayTimeout<T = { message: string }> extends APIError<T, 504> {\n static override readonly kind = Symbol.for(\"GatewayTimeout\");\n static override status = 504 as const;\n constructor(data: T) {\n super(GatewayTimeout.status, data);\n }\n static override create<T>(status: number, data: T) {\n Object.defineProperty(data, KIND, { value: this.kind });\n return new this(data);\n }\n\n static is<T extends {[KIND]: typeof GatewayTimeout['kind']}>(value: unknown): value is T {\n return typeof value === 'object' && value !== null && KIND in value && value[KIND] === this.kind;\n }\n}\n\nexport type ClientError =\n | BadRequest<unknown>\n | Unauthorized<unknown>\n | PaymentRequired<unknown>\n | Forbidden<unknown>\n | NotFound<unknown>\n | MethodNotAllowed<unknown>\n | NotAcceptable<unknown>\n | Conflict<unknown>\n | Gone<unknown>\n | PreconditionFailed<unknown>\n | PayloadTooLarge<unknown>\n | UnsupportedMediaType<unknown>\n | UnprocessableEntity<unknown>\n | TooManyRequests<unknown>;\n\nexport type ServerError =\n | InternalServerError<unknown>\n | NotImplemented<unknown>\n | BadGateway<unknown>\n | ServiceUnavailable<unknown>\n | GatewayTimeout<unknown>;\n\nexport type ProblematicResponse = ClientError | ServerError;\n\nexport type SuccessfulResponse =\n | Ok<unknown>\n | Created<unknown>\n | Accepted<unknown>\n | NoContent;", "import type {\n ReferenceObject,\n SchemaObject\n} from 'openapi3-ts/oas31';\nimport { type ZodSchema, type ZodTypeAny, z } from 'zod';\n\nimport { followRef, isRef } from '@sdk-it/core';\nimport type { IR } from '@sdk-it/spec';\n\n/**\n * Convert an OpenAPI (JSON Schema style) object into a runtime Zod schema,\n */\nexport class RuntimeZodConverter {\n constructor(private spec: IR) {}\n\n #object(schema: SchemaObject): ZodSchema {\n const properties = schema.properties || {};\n const required = schema.required || [];\n\n // Convert each property\n const shape: Record<string, ZodTypeAny> = {};\n\n for (const [key, propSchema] of Object.entries(properties)) {\n const isRequired = required.includes(key);\n shape[key] = this.handle(propSchema, isRequired);\n }\n\n let result = z.object(shape);\n\n // Handle additional properties\n if (schema.additionalProperties) {\n if (typeof schema.additionalProperties === 'object') {\n const addPropSchema = this.handle(schema.additionalProperties, true);\n result = result.catchall(addPropSchema);\n } else if (schema.additionalProperties === true) {\n result = result.catchall(z.unknown());\n }\n }\n\n return result;\n }\n\n #array(schema: SchemaObject): ZodSchema {\n const { items } = schema;\n if (!items) {\n let result: ZodSchema = z.array(z.unknown());\n\n // Apply default if present\n if (schema.default !== undefined) {\n result = z.array(z.unknown()).default(schema.default);\n }\n\n return result;\n }\n\n // If items is an array => tuple\n if (Array.isArray(items)) {\n const tupleItems = items.map((sub) => this.handle(sub, true));\n return z.tuple(tupleItems as [ZodTypeAny, ...ZodTypeAny[]]);\n }\n\n // If items is a single schema => standard z.array(...)\n const itemsSchema = this.handle(items, true);\n let result: ZodSchema = z.array(itemsSchema);\n\n // Apply default if present\n if (schema.default !== undefined) {\n result = z.array(itemsSchema).default(schema.default);\n }\n\n return result;\n }\n\n #ref($ref: string): ZodSchema {\n const resolvedSchema = followRef(this.spec, $ref);\n const zodSchema = this.handle(resolvedSchema, true);\n return zodSchema;\n }\n\n #toIntersection(schemas: ZodSchema[]): ZodSchema {\n const [left, ...right] = schemas;\n if (!right.length) {\n return left;\n }\n return z.intersection(left, this.#toIntersection(right));\n }\n\n allOf(schemas: (SchemaObject | ReferenceObject)[]): ZodSchema {\n const allOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (allOfSchemas.length === 0) {\n return z.unknown();\n }\n if (allOfSchemas.length === 1) {\n return allOfSchemas[0];\n }\n return this.#toIntersection(allOfSchemas);\n }\n\n anyOf(schemas: (SchemaObject | ReferenceObject)[]): ZodSchema {\n const anyOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (anyOfSchemas.length === 1) {\n return anyOfSchemas[0];\n }\n return z.union(anyOfSchemas as [ZodTypeAny, ZodTypeAny, ...ZodTypeAny[]]);\n }\n\n oneOf(schemas: (SchemaObject | ReferenceObject)[]): ZodSchema {\n const oneOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (oneOfSchemas.length === 1) {\n return oneOfSchemas[0];\n }\n return z.union(oneOfSchemas as [ZodTypeAny, ZodTypeAny, ...ZodTypeAny[]]);\n }\n\n enum(type: string, values: unknown[]): ZodSchema {\n if (values.length === 1) {\n return z.literal(values[0] as z.Primitive);\n }\n if (type === 'integer') {\n // Ensure we have at least 2 values for union\n if (values.length >= 2) {\n const [first, second, ...rest] = values.map((val) =>\n z.literal(val as z.Primitive),\n );\n return z.union([first, second, ...rest]);\n }\n return z.literal(values[0] as z.Primitive);\n }\n\n // For string enums, ensure we have the correct type\n const stringValues = values as string[];\n if (stringValues.length >= 2) {\n const [first, ...rest] = stringValues;\n return z.enum([first, ...rest] as [string, ...string[]]);\n }\n return z.literal(stringValues[0] as z.Primitive);\n }\n\n /**\n * Handle a `string` schema with possible format keywords (JSON Schema).\n */\n string(schema: SchemaObject): ZodSchema {\n if (schema.contentEncoding === 'binary') {\n return z.instanceof(Blob);\n }\n\n let base: ZodSchema = z.string();\n\n switch (schema.format) {\n case 'date-time':\n case 'datetime':\n base = z.string().datetime();\n break;\n case 'date':\n base = z.coerce.date();\n break;\n case 'time':\n base = z.string(); // Could add regex for HH:MM:SS format\n break;\n case 'email':\n base = z.string().email();\n break;\n case 'uuid':\n base = z.string().uuid();\n break;\n case 'url':\n case 'uri':\n base = z.string().url();\n break;\n case 'ipv4':\n base = z.string().ip({ version: 'v4' });\n break;\n case 'ipv6':\n base = z.string().ip({ version: 'v6' });\n break;\n case 'byte':\n case 'binary':\n base = z.instanceof(Blob);\n break;\n case 'int64':\n // JS numbers can't reliably store int64, keep as string or use bigint\n base = z.string();\n break;\n default:\n // No special format\n break;\n }\n\n return base;\n }\n\n /**\n * Handle number/integer constraints from OpenAPI/JSON Schema.\n */\n #number(schema: SchemaObject): ZodSchema {\n let base: ZodSchema = z.number();\n\n if (schema.format === 'int64') {\n base = z.bigint();\n }\n\n if (schema.format === 'int32') {\n base = z.number().int();\n }\n\n // Exclusive bounds\n if (typeof schema.exclusiveMinimum === 'number') {\n if (schema.format === 'int64') {\n base = (base as z.ZodBigInt).gt(BigInt(schema.exclusiveMinimum));\n } else {\n base = (base as z.ZodNumber).gt(schema.exclusiveMinimum);\n }\n }\n\n if (typeof schema.exclusiveMaximum === 'number') {\n if (schema.format === 'int64') {\n base = (base as z.ZodBigInt).lt(BigInt(schema.exclusiveMaximum));\n } else {\n base = (base as z.ZodNumber).lt(schema.exclusiveMaximum);\n }\n }\n\n // Inclusive bounds\n if (typeof schema.minimum === 'number') {\n if (schema.format === 'int64') {\n base = (base as z.ZodBigInt).min(BigInt(schema.minimum));\n } else {\n base = (base as z.ZodNumber).min(schema.minimum);\n }\n }\n\n if (typeof schema.maximum === 'number') {\n if (schema.format === 'int64') {\n base = (base as z.ZodBigInt).max(BigInt(schema.maximum));\n } else {\n base = (base as z.ZodNumber).max(schema.maximum);\n }\n }\n\n // multipleOf\n if (typeof schema.multipleOf === 'number') {\n const multipleOf = schema.multipleOf;\n base = base.refine(\n (val) => Number.isInteger(Number(val) / multipleOf),\n `Must be a multiple of ${multipleOf}`,\n );\n }\n\n return base;\n }\n\n /**\n * Convert a basic type to Zod schema with proper chaining\n */\n normal(\n type: string,\n schema: SchemaObject,\n required = false,\n nullable = false,\n ): ZodSchema {\n let base: ZodSchema;\n\n switch (type) {\n case 'string':\n base = this.string(schema);\n break;\n case 'number':\n case 'integer':\n base = this.#number(schema);\n break;\n case 'boolean':\n base = z.boolean();\n break;\n case 'object':\n base = this.#object(schema);\n break;\n case 'array':\n base = this.#array(schema);\n break;\n case 'null':\n base = z.null();\n break;\n default:\n base = z.unknown();\n break;\n }\n\n // Apply nullable first (this affects the base type)\n if (nullable) {\n base = base.nullable();\n }\n\n // Apply default before optional (important for proper chaining)\n if (schema.default !== undefined) {\n if (schema.format === 'int64' && typeof schema.default === 'number') {\n // For bigint, rebuild the schema with default\n base = z.bigint().default(BigInt(schema.default));\n } else {\n // Rebuild the base schema with default to avoid type issues\n const defaultValue = schema.default;\n switch (type) {\n case 'string':\n base = this.string(schema).default(defaultValue);\n break;\n case 'number':\n case 'integer':\n base = this.#number(schema);\n // Number schemas already handle defaults internally\n break;\n case 'boolean':\n base = z.boolean().default(defaultValue);\n break;\n case 'object':\n base = this.#object(schema).default(defaultValue);\n break;\n case 'array':\n // Arrays handle defaults internally\n break;\n case 'null':\n base = z.null().default(defaultValue);\n break;\n default:\n base = z.unknown().default(defaultValue);\n break;\n }\n }\n }\n\n // Apply optional last\n if (!required) {\n base = base.optional();\n }\n\n // Handle x-prefix transform (this should be last)\n if (schema['x-prefix']) {\n const prefix = schema['x-prefix'];\n if (!required) {\n base = base.transform((val) => (val ? `${prefix}${val}` : undefined));\n } else {\n base = base.transform((val) => `${prefix}${val}`);\n }\n }\n\n return base;\n }\n\n handle(schema: SchemaObject | ReferenceObject, required = false): ZodSchema {\n // Handle reference\n if (isRef(schema)) {\n let result = this.#ref(schema.$ref);\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n\n // Handle allOf \u2192 intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n let result = this.allOf(schema.allOf);\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n\n // anyOf \u2192 union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n let result = this.anyOf(schema.anyOf);\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n\n // oneOf \u2192 union\n if (schema.oneOf && Array.isArray(schema.oneOf) && schema.oneOf.length) {\n let result = this.oneOf(schema.oneOf);\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n\n // enum\n if (schema.enum && Array.isArray(schema.enum)) {\n let result = this.enum(schema.type as string, schema.enum);\n\n // Apply default if it exists and is in the enum\n if (\n schema.default !== undefined &&\n schema.enum.includes(schema.default)\n ) {\n // Rebuild the enum schema with default to avoid type issues\n const defaultValue = schema.default;\n const enumValues = schema.enum;\n const enumType = schema.type as string;\n\n if (enumValues.length === 1) {\n result = z\n .literal(enumValues[0] as z.Primitive)\n .default(defaultValue);\n } else if (enumType === 'integer') {\n if (enumValues.length >= 2) {\n const [first, second, ...rest] = enumValues.map((val: unknown) =>\n z.literal(val as z.Primitive),\n );\n result = z.union([first, second, ...rest]).default(defaultValue);\n } else {\n result = z\n .literal(enumValues[0] as z.Primitive)\n .default(defaultValue);\n }\n } else {\n const stringValues = enumValues as string[];\n if (stringValues.length >= 2) {\n const [first, ...rest] = stringValues;\n result = z\n .enum([first, ...rest] as [string, ...string[]])\n .default(defaultValue);\n } else {\n result = z\n .literal(stringValues[0] as z.Primitive)\n .default(defaultValue);\n }\n }\n }\n\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n\n // Parse types (can be string or array in OpenAPI 3.1)\n const types = Array.isArray(schema.type)\n ? schema.type\n : schema.type\n ? [schema.type]\n : [];\n\n // Backward compatibility with OpenAPI 3.0 nullable\n if ('nullable' in schema && schema.nullable) {\n types.push('null');\n } else if (schema.default === null) {\n types.push('null');\n }\n\n // If no explicit \"type\", fallback to unknown\n if (!types.length) {\n return required ? z.unknown() : z.unknown().optional();\n }\n\n // Handle union types\n if (types.length > 1) {\n const realTypes = types.filter((t) => t !== 'null');\n if (realTypes.length === 1 && types.includes('null')) {\n // Single real type + \"null\"\n return this.normal(realTypes[0], schema, required, true);\n }\n // Multiple different types, build a union\n const subSchemas = types.map((t) => this.normal(t, schema, true));\n if (subSchemas.length >= 2) {\n const [first, second, ...rest] = subSchemas;\n let result: ZodSchema = z.union([first, second, ...rest]);\n if (!required) {\n result = result.optional();\n }\n return result;\n }\n }\n\n return this.normal(types[0], schema, required, false);\n }\n}\n\n/**\n * Convert a runtime SchemaObject to a Zod schema\n */\nexport function schemaToZod(\n schema: SchemaObject,\n spec: IR,\n options?: {\n required?: boolean;\n },\n): ZodSchema {\n const converter = new RuntimeZodConverter(spec);\n return converter.handle(schema, options?.required ?? false);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["z", "parse", "fetch", "z", "result", "z", "options", "rpc"]
7
7
  }
package/dist/lib/rpc.d.ts CHANGED
@@ -6,12 +6,15 @@ declare const optionsSchema: z.ZodObject<{
6
6
  token: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
7
7
  fetch: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodType<import("undici-types").Request, z.ZodTypeDef, import("undici-types").Request>], z.ZodUnknown>, z.ZodPromise<z.ZodType<import("undici-types").Response, z.ZodTypeDef, import("undici-types").Response>>>>;
8
8
  baseUrl: z.ZodString;
9
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
9
10
  }, "strip", z.ZodTypeAny, {
10
11
  baseUrl: string;
12
+ headers?: Record<string, string> | undefined;
11
13
  token?: string | undefined;
12
14
  fetch?: ((args_0: import("undici-types").Request, ...args: unknown[]) => Promise<import("undici-types").Response>) | undefined;
13
15
  }, {
14
16
  baseUrl: string;
17
+ headers?: Record<string, string> | undefined;
15
18
  token?: string | undefined;
16
19
  fetch?: ((args_0: import("undici-types").Request, ...args: unknown[]) => Promise<import("undici-types").Response>) | undefined;
17
20
  }>;
@@ -26,8 +29,7 @@ export declare class Client {
26
29
  #private;
27
30
  options: ClientOptions;
28
31
  schemas: Record<string, any>;
29
- operations: Record<string, any>;
30
- constructor(options: ClientOptions, schemas: Record<string, any>, operations: Record<string, any>);
32
+ constructor(options: ClientOptions, schemas: Record<string, any>);
31
33
  request(endpoint: string, input: any, options?: {
32
34
  signal?: AbortSignal;
33
35
  headers?: HeadersInit;
@@ -38,6 +40,7 @@ export declare class Client {
38
40
  setOptions(options: Partial<ClientOptions>): void;
39
41
  }
40
42
  export declare function rpc(openapi: string, options?: Partial<ClientOptions>): Promise<Client>;
41
- export declare function toTools(rpc: Client): Promise<Record<string, any>>;
43
+ export declare function toTools(rpc: Client): Record<string, any>;
44
+ export declare function toAgents(openapi: string, options?: Partial<ClientOptions>): Promise<Record<string, any>>;
42
45
  export {};
43
46
  //# sourceMappingURL=rpc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/lib/rpc.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,KAAK,oBAAoB,EAI1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EAEL,KAAK,WAAW,EAOjB,MAAM,mBAAmB,CAAC;AAI3B,QAAA,MAAM,aAAa;;;;;;;;;;;;EAOjB,CAAC;AACH,KAAK,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEnD,wBAAgB,WAAW,CACzB,SAAS,EAAE,oBAAoB,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;;;;;EA8BvC;AAED,qBAAa,MAAM;;IACV,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAErC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAO3B,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,GAAG,EACV,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,CAAA;KAAE;IA0B3D,IAAI,cAAc;;MAEjB;IAMD,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC;CAS3C;AAED,wBAAsB,GAAG,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,CAiEjB;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,gCAgBxC"}
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/lib/rpc.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,KAAK,oBAAoB,EAI1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EAEL,KAAK,WAAW,EAOjB,MAAM,mBAAmB,CAAC;AAI3B,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;EAQjB,CAAC;AACH,KAAK,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEnD,wBAAgB,WAAW,CACzB,SAAS,EAAE,oBAAoB,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;;;;;EA8BvC;AAED,qBAAa,MAAM;;IACV,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACxB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAK1D,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,GAAG,EACV,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,CAAA;KAAE;IA0B3D,IAAI,cAAc;;MAKjB;IAMD,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC;CAS3C;AA6DD,wBAAsB,GAAG,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,uBAiBlC;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,gCA8EjC"}
package/dist/lib/zod.d.ts CHANGED
@@ -1,12 +1,13 @@
1
- import type { OpenAPIObject, ReferenceObject, SchemaObject } from 'openapi3-ts/oas31';
1
+ import type { ReferenceObject, SchemaObject } from 'openapi3-ts/oas31';
2
2
  import { type ZodSchema } from 'zod';
3
+ import type { IR } from '@sdk-it/spec';
3
4
  /**
4
5
  * Convert an OpenAPI (JSON Schema style) object into a runtime Zod schema,
5
6
  */
6
7
  export declare class RuntimeZodConverter {
7
8
  #private;
8
9
  private spec;
9
- constructor(spec: OpenAPIObject);
10
+ constructor(spec: IR);
10
11
  allOf(schemas: (SchemaObject | ReferenceObject)[]): ZodSchema;
11
12
  anyOf(schemas: (SchemaObject | ReferenceObject)[]): ZodSchema;
12
13
  oneOf(schemas: (SchemaObject | ReferenceObject)[]): ZodSchema;
@@ -24,7 +25,7 @@ export declare class RuntimeZodConverter {
24
25
  /**
25
26
  * Convert a runtime SchemaObject to a Zod schema
26
27
  */
27
- export declare function schemaToZod(schema: SchemaObject, spec: OpenAPIObject, options?: {
28
+ export declare function schemaToZod(schema: SchemaObject, spec: IR, options?: {
28
29
  required?: boolean;
29
30
  }): ZodSchema;
30
31
  //# sourceMappingURL=zod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../src/lib/zod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,SAAS,EAAsB,MAAM,KAAK,CAAC;AAIzD;;GAEG;AACH,qBAAa,mBAAmB;;IAClB,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IA0EvC,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS;IAW7D,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS;IAQ7D,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS;IAQ7D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS;IAwBhD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS;IA8GvC;;OAEG;IACH,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,QAAQ,UAAQ,EAChB,QAAQ,UAAQ,GACf,SAAS;IAuFZ,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,EAAE,QAAQ,UAAQ,GAAG,SAAS;CA+H5E;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,aAAa,EACnB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GACA,SAAS,CAGX"}
1
+ {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../src/lib/zod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,SAAS,EAAsB,MAAM,KAAK,CAAC;AAGzD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAEvC;;GAEG;AACH,qBAAa,mBAAmB;;IAClB,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,EAAE;IA0E5B,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS;IAW7D,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS;IAQ7D,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS;IAQ7D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS;IAwBhD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS;IA8GvC;;OAEG;IACH,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,QAAQ,UAAQ,EAChB,QAAQ,UAAQ,GACf,SAAS;IAuFZ,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,EAAE,QAAQ,UAAQ,GAAG,SAAS;CA+H5E;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,EAAE,EACR,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GACA,SAAS,CAGX"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdk-it/rpc",
3
- "version": "0.33.3",
3
+ "version": "0.34.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -22,10 +22,10 @@
22
22
  "!**/*.test.*"
23
23
  ],
24
24
  "dependencies": {
25
- "@sdk-it/spec": "0.33.3",
25
+ "@sdk-it/spec": "0.34.1",
26
26
  "zod": "^3.25.76 || ^4.0.0",
27
27
  "fast-content-type-parse": "^3.0.0",
28
- "@sdk-it/typescript": "0.33.3",
28
+ "@sdk-it/typescript": "0.34.1",
29
29
  "ai": "^5.0.0-beta.24",
30
30
  "openapi3-ts": "4.5.0"
31
31
  }