@qodo/sdk 0.3.1 → 0.4.0
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.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/sdk/schemas.d.ts +24 -2
- package/dist/sdk/schemas.d.ts.map +1 -1
- package/dist/sdk/schemas.js +139 -2
- package/dist/sdk/schemas.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export type { QodoSDKOptions, QodoSDKRunResult, QodoSDKStreamEvent, QodoSDKRunOp
|
|
|
3
3
|
export { SdkEventType, SDK_PROTOCOL_V2, matchSdkEvent, createSdkEvent, getSdkVersion, } from './sdk/events.js';
|
|
4
4
|
export type { QodoSdkEvent, SdkEventTypeName, SdkEventEnvelope, SdkInitEvent, SdkRunStartedEvent, SdkMessageDeltaEvent, SdkMessageFullEvent, SdkProgressEvent, SdkToolRequestedEvent, SdkToolApprovedEvent, SdkToolExecutedEvent, SdkErrorEvent, SdkFinalEvent, SdkEventHandlers, } from './sdk/events.js';
|
|
5
5
|
export { sdkAgent, sdkCommand, sdkArgs } from './sdk/builders.js';
|
|
6
|
-
export { zodOutputSchema, zodArgsSchema, zCoerce, parseArgsWithSchema, QodoSchemaError, } from './sdk/schemas.js';
|
|
6
|
+
export { zodOutputSchema, zodArgsSchema, zCoerce, zJsonValue, zJsonAny, parseArgsWithSchema, QodoSchemaError, } from './sdk/schemas.js';
|
|
7
7
|
export { QodoInfoClient } from './clients/info/index.js';
|
|
8
8
|
export type { QodoBackendInfo } from './clients/info/types.js';
|
|
9
9
|
export { QodoSessionsClient } from './clients/sessions/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACL,eAAe,EACf,aAAa,EACb,OAAO,EACP,mBAAmB,EACnB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,SAAS,EACT,YAAY,EACZ,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACL,eAAe,EACf,aAAa,EACb,OAAO,EACP,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,SAAS,EACT,YAAY,EACZ,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ export { QodoSDK } from './sdk/index.js';
|
|
|
4
4
|
export { SdkEventType, SDK_PROTOCOL_V2, matchSdkEvent, createSdkEvent, getSdkVersion, } from './sdk/events.js';
|
|
5
5
|
// Builders (Zod-first)
|
|
6
6
|
export { sdkAgent, sdkCommand, sdkArgs } from './sdk/builders.js';
|
|
7
|
-
export { zodOutputSchema, zodArgsSchema, zCoerce, parseArgsWithSchema, QodoSchemaError, } from './sdk/schemas.js';
|
|
7
|
+
export { zodOutputSchema, zodArgsSchema, zCoerce, zJsonValue, zJsonAny, parseArgsWithSchema, QodoSchemaError, } from './sdk/schemas.js';
|
|
8
8
|
// Info & Sessions clients
|
|
9
9
|
export { QodoInfoClient } from './clients/info/index.js';
|
|
10
10
|
export { QodoSessionsClient } from './clients/sessions/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AASzC,SAAS;AACT,OAAO,EACL,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAmBzB,uBAAuB;AACvB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACL,eAAe,EACf,aAAa,EACb,OAAO,EACP,mBAAmB,EACnB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAOjE,6BAA6B;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAYlD,UAAU;AACV,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AASzC,SAAS;AACT,OAAO,EACL,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAmBzB,uBAAuB;AACvB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACL,eAAe,EACf,aAAa,EACb,OAAO,EACP,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAOjE,6BAA6B;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAYlD,UAAU;AACV,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/sdk/schemas.d.ts
CHANGED
|
@@ -12,6 +12,27 @@ import type { OutputSchema } from '../parser/types.js';
|
|
|
12
12
|
export declare class QodoSchemaError extends Error {
|
|
13
13
|
constructor(message: string);
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* A Zod type for "any JSON primitive value" that produces valid JSON Schema.
|
|
17
|
+
* Use this instead of z.any() when you need flexible typing in output schemas.
|
|
18
|
+
*
|
|
19
|
+
* This produces a union of string | number | boolean | null which OpenAI accepts.
|
|
20
|
+
* For arrays of mixed types, use: z.array(zJsonValue())
|
|
21
|
+
*/
|
|
22
|
+
export declare function zJsonValue(): z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
|
|
23
|
+
/**
|
|
24
|
+
* A Zod type for "any JSON value including objects/arrays" that produces valid JSON Schema.
|
|
25
|
+
* Use this instead of z.any() when you need maximum flexibility in output schemas.
|
|
26
|
+
*
|
|
27
|
+
* The generated JSON schema is compatible with OpenAI's structured output requirements.
|
|
28
|
+
* The TypeScript type is `unknown`, allowing any value to be passed without type casting.
|
|
29
|
+
* This is intentional for "passthrough" fields where the exact type doesn't matter
|
|
30
|
+
* at compile time.
|
|
31
|
+
*
|
|
32
|
+
* Note: For deeply nested structures, consider using more specific types for better
|
|
33
|
+
* type safety and clearer LLM guidance.
|
|
34
|
+
*/
|
|
35
|
+
export declare function zJsonAny(): z.ZodType<unknown>;
|
|
15
36
|
/**
|
|
16
37
|
* Coerce common CLI-style/string inputs into typed values before validation.
|
|
17
38
|
* This mirrors current validateCommandArgs behavior:
|
|
@@ -22,14 +43,15 @@ export declare class QodoSchemaError extends Error {
|
|
|
22
43
|
export declare const zCoerce: {
|
|
23
44
|
readonly boolean: () => z.ZodEffects<z.ZodBoolean, boolean, unknown>;
|
|
24
45
|
readonly number: () => z.ZodEffects<z.ZodNumber, number, unknown>;
|
|
25
|
-
readonly jsonArray: <T extends ZodTypeAny = z.ZodTypeAny>(itemSchema?: T) => z.ZodEffects<z.ZodArray<z.
|
|
26
|
-
readonly jsonObject: <T extends ZodRawShape = z.ZodRawShape>(shape?: T) => z.ZodEffects<z.ZodObject<T, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<T>, any> extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never, z.baseObjectInputType<T> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never
|
|
46
|
+
readonly jsonArray: <T extends ZodTypeAny = z.ZodTypeAny>(itemSchema?: T) => z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>, "many"> | z.ZodArray<T, "many">, (string | number | boolean | null)[] | T["_output"][], unknown>;
|
|
47
|
+
readonly jsonObject: <T extends ZodRawShape = z.ZodRawShape>(shape?: T) => z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>> | z.ZodObject<T, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<T>, any> extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never, z.baseObjectInputType<T> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never>, Record<string, string | number | boolean | null> | (z.objectUtil.addQuestionMarks<z.baseObjectOutputType<T>, any> extends infer T_3 ? { [k in keyof T_3]: T_3[k]; } : never), unknown>;
|
|
27
48
|
};
|
|
28
49
|
/**
|
|
29
50
|
* Convert a Zod object schema into the existing OutputSchema (json_schema) shape.
|
|
30
51
|
* Enforces the same rules as validateOutputSchema():
|
|
31
52
|
* - must have properties
|
|
32
53
|
* - each property must have type + description
|
|
54
|
+
* - no z.any() or z.unknown() usage (produces invalid JSON Schema)
|
|
33
55
|
*/
|
|
34
56
|
export declare function zodOutputSchema<T extends ZodTypeAny>(name: string, schema: T, strict?: boolean): OutputSchema;
|
|
35
57
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/sdk/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;;;;;;GAQG;AAEH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO;;;yBAmBN,CAAC,SAAS,UAAU,8BAA4B,CAAC;0BAahD,CAAC,SAAS,WAAW,0BAAwB,CAAC;CAYnD,CAAC;AAgBX
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/sdk/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;;;;;;GAQG;AAEH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AA0GD;;;;;;GAMG;AACH,wBAAgB,UAAU,oEAEzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAa7C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO;;;yBAmBN,CAAC,SAAS,UAAU,8BAA4B,CAAC;0BAahD,CAAC,SAAS,WAAW,0BAAwB,CAAC;CAYnD,CAAC;AAgBX;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAE,OAAc,GAAG,YAAY,CA6CnH;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAQ9F;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAE3E"}
|
package/dist/sdk/schemas.js
CHANGED
|
@@ -16,6 +16,134 @@ export class QodoSchemaError extends Error {
|
|
|
16
16
|
this.name = 'QodoSchemaError';
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Recursively detect z.any() or z.unknown() usage in a Zod schema.
|
|
21
|
+
* Returns paths to all occurrences (e.g., ["projects_path.items"]).
|
|
22
|
+
*/
|
|
23
|
+
function detectAnyOrUnknown(schema, path = '') {
|
|
24
|
+
const found = [];
|
|
25
|
+
const def = schema?._def;
|
|
26
|
+
if (!def)
|
|
27
|
+
return found;
|
|
28
|
+
const typeName = def.typeName;
|
|
29
|
+
if (typeName === 'ZodAny' || typeName === 'ZodUnknown') {
|
|
30
|
+
found.push(path || '(root)');
|
|
31
|
+
return found;
|
|
32
|
+
}
|
|
33
|
+
// Check array items
|
|
34
|
+
if (typeName === 'ZodArray' && def.type) {
|
|
35
|
+
found.push(...detectAnyOrUnknown(def.type, path ? `${path}.items` : 'items'));
|
|
36
|
+
}
|
|
37
|
+
// Check object properties
|
|
38
|
+
if (typeName === 'ZodObject' && def.shape) {
|
|
39
|
+
const shape = typeof def.shape === 'function' ? def.shape() : def.shape;
|
|
40
|
+
for (const [key, value] of Object.entries(shape)) {
|
|
41
|
+
found.push(...detectAnyOrUnknown(value, path ? `${path}.${key}` : key));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Check record values
|
|
45
|
+
if (typeName === 'ZodRecord' && def.valueType) {
|
|
46
|
+
found.push(...detectAnyOrUnknown(def.valueType, path ? `${path}.[value]` : '[value]'));
|
|
47
|
+
}
|
|
48
|
+
// Check optional/nullable inner types
|
|
49
|
+
if ((typeName === 'ZodOptional' || typeName === 'ZodNullable') && def.innerType) {
|
|
50
|
+
found.push(...detectAnyOrUnknown(def.innerType, path));
|
|
51
|
+
}
|
|
52
|
+
// Check union variants
|
|
53
|
+
if (typeName === 'ZodUnion' && def.options) {
|
|
54
|
+
def.options.forEach((opt, i) => {
|
|
55
|
+
found.push(...detectAnyOrUnknown(opt, path ? `${path}[${i}]` : `[${i}]`));
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// Check discriminated union variants
|
|
59
|
+
if (typeName === 'ZodDiscriminatedUnion' && def.options) {
|
|
60
|
+
def.options.forEach((opt, i) => {
|
|
61
|
+
found.push(...detectAnyOrUnknown(opt, path ? `${path}[${i}]` : `[${i}]`));
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
// Check tuple items
|
|
65
|
+
if (typeName === 'ZodTuple' && def.items) {
|
|
66
|
+
def.items.forEach((item, i) => {
|
|
67
|
+
found.push(...detectAnyOrUnknown(item, path ? `${path}[${i}]` : `[${i}]`));
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// Check intersection types
|
|
71
|
+
if (typeName === 'ZodIntersection') {
|
|
72
|
+
if (def.left)
|
|
73
|
+
found.push(...detectAnyOrUnknown(def.left, path));
|
|
74
|
+
if (def.right)
|
|
75
|
+
found.push(...detectAnyOrUnknown(def.right, path));
|
|
76
|
+
}
|
|
77
|
+
// Check lazy types (for recursive schemas)
|
|
78
|
+
if (typeName === 'ZodLazy' && def.getter) {
|
|
79
|
+
try {
|
|
80
|
+
found.push(...detectAnyOrUnknown(def.getter(), path));
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Ignore errors from lazy evaluation
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Check effects (refinements, transforms)
|
|
87
|
+
if (typeName === 'ZodEffects' && def.schema) {
|
|
88
|
+
found.push(...detectAnyOrUnknown(def.schema, path));
|
|
89
|
+
}
|
|
90
|
+
// Check default wrappers
|
|
91
|
+
if (typeName === 'ZodDefault' && def.innerType) {
|
|
92
|
+
found.push(...detectAnyOrUnknown(def.innerType, path));
|
|
93
|
+
}
|
|
94
|
+
// Check catch wrappers
|
|
95
|
+
if (typeName === 'ZodCatch' && def.innerType) {
|
|
96
|
+
found.push(...detectAnyOrUnknown(def.innerType, path));
|
|
97
|
+
}
|
|
98
|
+
// Check branded types
|
|
99
|
+
if (typeName === 'ZodBranded' && def.type) {
|
|
100
|
+
found.push(...detectAnyOrUnknown(def.type, path));
|
|
101
|
+
}
|
|
102
|
+
// Check pipeline
|
|
103
|
+
if (typeName === 'ZodPipeline') {
|
|
104
|
+
if (def.in)
|
|
105
|
+
found.push(...detectAnyOrUnknown(def.in, path));
|
|
106
|
+
if (def.out)
|
|
107
|
+
found.push(...detectAnyOrUnknown(def.out, path));
|
|
108
|
+
}
|
|
109
|
+
return found;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* A Zod type for "any JSON primitive value" that produces valid JSON Schema.
|
|
113
|
+
* Use this instead of z.any() when you need flexible typing in output schemas.
|
|
114
|
+
*
|
|
115
|
+
* This produces a union of string | number | boolean | null which OpenAI accepts.
|
|
116
|
+
* For arrays of mixed types, use: z.array(zJsonValue())
|
|
117
|
+
*/
|
|
118
|
+
export function zJsonValue() {
|
|
119
|
+
return z.union([z.string(), z.number(), z.boolean(), z.null()]);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* A Zod type for "any JSON value including objects/arrays" that produces valid JSON Schema.
|
|
123
|
+
* Use this instead of z.any() when you need maximum flexibility in output schemas.
|
|
124
|
+
*
|
|
125
|
+
* The generated JSON schema is compatible with OpenAI's structured output requirements.
|
|
126
|
+
* The TypeScript type is `unknown`, allowing any value to be passed without type casting.
|
|
127
|
+
* This is intentional for "passthrough" fields where the exact type doesn't matter
|
|
128
|
+
* at compile time.
|
|
129
|
+
*
|
|
130
|
+
* Note: For deeply nested structures, consider using more specific types for better
|
|
131
|
+
* type safety and clearer LLM guidance.
|
|
132
|
+
*/
|
|
133
|
+
export function zJsonAny() {
|
|
134
|
+
const primitives = z.union([z.string(), z.number(), z.boolean(), z.null()]);
|
|
135
|
+
// The Zod schema defines the JSON schema for OpenAI validation.
|
|
136
|
+
// We cast to ZodType<unknown> for maximum TypeScript flexibility -
|
|
137
|
+
// any value can be assigned without type casting.
|
|
138
|
+
return z.union([
|
|
139
|
+
z.string(),
|
|
140
|
+
z.number(),
|
|
141
|
+
z.boolean(),
|
|
142
|
+
z.null(),
|
|
143
|
+
z.array(primitives),
|
|
144
|
+
z.record(z.string(), primitives),
|
|
145
|
+
]);
|
|
146
|
+
}
|
|
19
147
|
/**
|
|
20
148
|
* Coerce common CLI-style/string inputs into typed values before validation.
|
|
21
149
|
* This mirrors current validateCommandArgs behavior:
|
|
@@ -55,7 +183,7 @@ export const zCoerce = {
|
|
|
55
183
|
}
|
|
56
184
|
}
|
|
57
185
|
return v;
|
|
58
|
-
}, itemSchema ? z.array(itemSchema) : z.array(
|
|
186
|
+
}, itemSchema ? z.array(itemSchema) : z.array(zJsonValue())),
|
|
59
187
|
jsonObject: (shape) => z.preprocess((v) => {
|
|
60
188
|
if (v !== null && typeof v === 'object' && !Array.isArray(v))
|
|
61
189
|
return v;
|
|
@@ -68,7 +196,7 @@ export const zCoerce = {
|
|
|
68
196
|
}
|
|
69
197
|
}
|
|
70
198
|
return v;
|
|
71
|
-
}, shape ? z.object(shape) : z.record(z.
|
|
199
|
+
}, shape ? z.object(shape) : z.record(z.string(), zJsonValue())),
|
|
72
200
|
};
|
|
73
201
|
function collectMissingDescriptionsFromJsonSchema(schema) {
|
|
74
202
|
const missing = [];
|
|
@@ -88,8 +216,17 @@ function collectMissingDescriptionsFromJsonSchema(schema) {
|
|
|
88
216
|
* Enforces the same rules as validateOutputSchema():
|
|
89
217
|
* - must have properties
|
|
90
218
|
* - each property must have type + description
|
|
219
|
+
* - no z.any() or z.unknown() usage (produces invalid JSON Schema)
|
|
91
220
|
*/
|
|
92
221
|
export function zodOutputSchema(name, schema, strict = true) {
|
|
222
|
+
// Detect z.any()/z.unknown() usage BEFORE conversion - these produce invalid JSON schemas
|
|
223
|
+
const anyPaths = detectAnyOrUnknown(schema);
|
|
224
|
+
if (anyPaths.length > 0) {
|
|
225
|
+
throw new QodoSchemaError(`Output schema contains z.any() or z.unknown() at: ${anyPaths.join(', ')}. ` +
|
|
226
|
+
`These types produce incomplete JSON schemas that OpenAI rejects (arrays need 'items', records need typed 'additionalProperties'). ` +
|
|
227
|
+
`Use specific types like z.string(), z.number(), z.object({...}), z.record(z.string(), zJsonValue()), ` +
|
|
228
|
+
`or for flexible typing: zJsonValue() (primitives) or zJsonAny() (primitives + arrays/objects).`);
|
|
229
|
+
}
|
|
93
230
|
const json = zodToJsonSchema(schema, { name });
|
|
94
231
|
// zod-to-json-schema often returns {$ref:'#/definitions/<name>'} at the top.
|
|
95
232
|
// Our existing validator expects the *resolved* object schema with properties.
|
package/dist/sdk/schemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/sdk/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAqD,MAAM,KAAK,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;;;;;;GAQG;AAEH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,OAAO,EAAE,GAAG,EAAE,CACZ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;QACjB,IAAI,OAAO,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC;YAC9B,IAAI,CAAC,KAAK,OAAO;gBAAE,OAAO,KAAK,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAEjB,MAAM,EAAE,GAAG,EAAE,CACX,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;QACjB,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAEhB,SAAS,EAAE,CAAoC,UAAc,EAAE,EAAE,CAC/D,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;QACjB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/sdk/schemas.ts"],"names":[],"mappings":"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"}
|