-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathschema.ts
More file actions
57 lines (53 loc) · 1.21 KB
/
schema.ts
File metadata and controls
57 lines (53 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
* JSON Schema type for describing values. Supports primitives, arrays, and objects
* with recursive definitions.
*/
export type JsonSchema =
| PrimitiveJsonSchema
| ArrayJsonSchema
| ObjectJsonSchema;
/**
* Primitive JSON Schema types (string, number, boolean).
*/
type PrimitiveJsonSchema = {
type: 'string' | 'number' | 'boolean';
description?: string;
};
/**
* Array JSON Schema with recursive item type.
*/
type ArrayJsonSchema = {
type: 'array';
description?: string;
items: JsonSchema;
};
/**
* Object JSON Schema with recursive property definitions.
*/
type ObjectJsonSchema = {
type: 'object';
description?: string;
properties: {
[key: string]: JsonSchema;
};
required?: string[];
additionalProperties?: boolean;
};
/**
* Schema describing a method, including its purpose, arguments, and return value.
*/
export type MethodSchema = {
/**
* Description of the method's purpose and behavior.
*/
description: string;
/**
* Arguments of the method, keyed by argument name.
* Each argument includes its type and description.
*/
args: Record<string, JsonSchema>;
/**
* Return value schema, including type and description.
*/
returns?: JsonSchema;
};