assistant-stream 0.3.3 → 0.3.5
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/core/tool/schema-utils.d.ts +3 -2
- package/dist/core/tool/schema-utils.d.ts.map +1 -1
- package/dist/core/tool/schema-utils.js +17 -2
- package/dist/core/tool/schema-utils.js.map +1 -1
- package/dist/core/tool/tool-types.d.ts +11 -5
- package/dist/core/tool/tool-types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/core/tool/schema-utils.test.ts +30 -8
- package/src/core/tool/schema-utils.ts +27 -3
- package/src/core/tool/tool-types.ts +18 -5
|
@@ -19,9 +19,10 @@ export type ToToolsJSONSchemaOptions = {
|
|
|
19
19
|
* Converts a schema to JSONSchema7.
|
|
20
20
|
* Supports:
|
|
21
21
|
* - StandardSchemaV1 with ~standard.toJSONSchema (e.g., Zod v4)
|
|
22
|
-
* -
|
|
22
|
+
* - StandardSchemaV1 with ~standard.jsonSchema.input() (e.g., Zod v4)
|
|
23
|
+
* - Objects with toJSONSchema() method (e.g., Zod v4)
|
|
23
24
|
* - Objects with toJSON() method
|
|
24
|
-
* - Plain JSONSchema7 objects
|
|
25
|
+
* - Plain JSONSchema7 objects (must have a "type" property)
|
|
25
26
|
*/
|
|
26
27
|
export declare function toJSONSchema(schema: StandardSchemaV1 | JSONSchema7): JSONSchema7;
|
|
27
28
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../../../src/core/tool/schema-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAqB;AAEzC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,WAAW,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;CAChD,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../../../src/core/tool/schema-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAqB;AAEzC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,WAAW,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;CAChD,CAAC;AAoCF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,gBAAgB,GAAG,WAAW,GACrC,WAAW,CAyCb;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,EACvC,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAgBhC"}
|
|
@@ -20,9 +20,10 @@ function hasToJSONMethod(schema) {
|
|
|
20
20
|
* Converts a schema to JSONSchema7.
|
|
21
21
|
* Supports:
|
|
22
22
|
* - StandardSchemaV1 with ~standard.toJSONSchema (e.g., Zod v4)
|
|
23
|
-
* -
|
|
23
|
+
* - StandardSchemaV1 with ~standard.jsonSchema.input() (e.g., Zod v4)
|
|
24
|
+
* - Objects with toJSONSchema() method (e.g., Zod v4)
|
|
24
25
|
* - Objects with toJSON() method
|
|
25
|
-
* - Plain JSONSchema7 objects
|
|
26
|
+
* - Plain JSONSchema7 objects (must have a "type" property)
|
|
26
27
|
*/
|
|
27
28
|
export function toJSONSchema(schema) {
|
|
28
29
|
// StandardSchemaV1 with ~standard.toJSONSchema (e.g., Zod v4)
|
|
@@ -31,6 +32,13 @@ export function toJSONSchema(schema) {
|
|
|
31
32
|
if (typeof toJSONSchemaMethod === "function") {
|
|
32
33
|
return toJSONSchemaMethod();
|
|
33
34
|
}
|
|
35
|
+
// StandardSchemaV1 with ~standard.jsonSchema.input()
|
|
36
|
+
const jsonSchema = schema["~standard"].jsonSchema;
|
|
37
|
+
if (typeof jsonSchema === "object" &&
|
|
38
|
+
jsonSchema !== null &&
|
|
39
|
+
typeof jsonSchema.input === "function") {
|
|
40
|
+
return jsonSchema.input();
|
|
41
|
+
}
|
|
34
42
|
}
|
|
35
43
|
// toJSONSchema method on the schema itself
|
|
36
44
|
if (hasToJSONSchemaMethod(schema)) {
|
|
@@ -40,6 +48,13 @@ export function toJSONSchema(schema) {
|
|
|
40
48
|
if (hasToJSONMethod(schema)) {
|
|
41
49
|
return schema.toJSON();
|
|
42
50
|
}
|
|
51
|
+
// If it's a Standard Schema that we couldn't convert, throw a helpful error
|
|
52
|
+
if (isStandardSchema(schema)) {
|
|
53
|
+
throw new Error("Could not convert schema to JSON Schema. " +
|
|
54
|
+
"The schema implements Standard Schema but does not support JSON Schema conversion. " +
|
|
55
|
+
"If you are using Zod, please upgrade to Zod v4 (npm install zod@latest). " +
|
|
56
|
+
"Alternatively, pass a plain JSON Schema object instead.");
|
|
57
|
+
}
|
|
43
58
|
// Already a plain JSONSchema7
|
|
44
59
|
return schema;
|
|
45
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../../../src/core/tool/schema-utils.ts"],"names":[],"mappings":"AAoBA,SAAS,gBAAgB,CAAC,MAAe;
|
|
1
|
+
{"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../../../src/core/tool/schema-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,7 +69,7 @@ type ToolBase<TArgs extends Record<string, unknown> = Record<string, unknown>, T
|
|
|
69
69
|
streamCall?: ToolStreamCallFunction<TArgs, TResult>;
|
|
70
70
|
};
|
|
71
71
|
type BackendTool<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = ToolBase<TArgs, TResult> & {
|
|
72
|
-
type
|
|
72
|
+
type: "backend";
|
|
73
73
|
description?: undefined;
|
|
74
74
|
parameters?: undefined;
|
|
75
75
|
disabled?: undefined;
|
|
@@ -77,21 +77,27 @@ type BackendTool<TArgs extends Record<string, unknown> = Record<string, unknown>
|
|
|
77
77
|
experimental_onSchemaValidationError?: undefined;
|
|
78
78
|
};
|
|
79
79
|
type FrontendTool<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = ToolBase<TArgs, TResult> & {
|
|
80
|
-
type
|
|
80
|
+
type: "frontend";
|
|
81
81
|
description?: string | undefined;
|
|
82
82
|
parameters: StandardSchemaV1<TArgs> | JSONSchema7;
|
|
83
83
|
disabled?: boolean;
|
|
84
|
-
execute
|
|
84
|
+
execute: ToolExecuteFunction<TArgs, TResult>;
|
|
85
85
|
experimental_onSchemaValidationError?: OnSchemaValidationErrorFunction<TResult>;
|
|
86
86
|
};
|
|
87
87
|
type HumanTool<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = ToolBase<TArgs, TResult> & {
|
|
88
|
-
type
|
|
88
|
+
type: "human";
|
|
89
89
|
description?: string | undefined;
|
|
90
90
|
parameters: StandardSchemaV1<TArgs> | JSONSchema7;
|
|
91
91
|
disabled?: boolean;
|
|
92
92
|
execute?: undefined;
|
|
93
93
|
experimental_onSchemaValidationError?: undefined;
|
|
94
94
|
};
|
|
95
|
-
export type Tool<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = FrontendTool<TArgs, TResult> | BackendTool<TArgs, TResult> | HumanTool<TArgs, TResult>;
|
|
95
|
+
export type Tool<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = FrontendTool<TArgs, TResult> | BackendTool<TArgs, TResult> | HumanTool<TArgs, TResult> | ToolWithoutType<TArgs, TResult>;
|
|
96
|
+
/**
|
|
97
|
+
* @deprecated Use `Tool` with an explicit `type` field instead.
|
|
98
|
+
*/
|
|
99
|
+
export type ToolWithoutType<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = (Omit<FrontendTool<TArgs, TResult>, "type"> | Omit<BackendTool<TArgs, TResult>, "type"> | Omit<HumanTool<TArgs, TResult>, "type">) & {
|
|
100
|
+
type?: undefined;
|
|
101
|
+
};
|
|
96
102
|
export {};
|
|
97
103
|
//# sourceMappingURL=tool-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-types.d.ts","sourceRoot":"","sources":["../../../src/core/tool/tool-types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-types.d.ts","sourceRoot":"","sources":["../../../src/core/tool/tool-types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "assistant-stream",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"description": "Streaming utilities for AI assistants",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/json-schema": "^7.0.15",
|
|
45
45
|
"vitest": "^4.0.18",
|
|
46
|
-
"@assistant-ui/x-buildutils": "0.0.
|
|
46
|
+
"@assistant-ui/x-buildutils": "0.0.2"
|
|
47
47
|
},
|
|
48
48
|
"publishConfig": {
|
|
49
49
|
"access": "public",
|
|
@@ -97,21 +97,41 @@ describe("toJSONSchema", () => {
|
|
|
97
97
|
});
|
|
98
98
|
});
|
|
99
99
|
|
|
100
|
-
it("
|
|
100
|
+
it("throws when StandardSchema has no JSON Schema conversion method", () => {
|
|
101
101
|
const schemaWithoutMethod = {
|
|
102
102
|
"~standard": {
|
|
103
|
-
version: 1,
|
|
103
|
+
version: 1 as const,
|
|
104
104
|
vendor: "test",
|
|
105
105
|
validate: () => ({ value: {} }),
|
|
106
|
-
// no toJSONSchema method
|
|
106
|
+
// no toJSONSchema method and no jsonSchema property
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
expect(() => toJSONSchema(schemaWithoutMethod)).toThrow(
|
|
111
|
+
"Could not convert schema to JSON Schema",
|
|
112
|
+
);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it("converts StandardSchemaV1 with ~standard.jsonSchema.input()", () => {
|
|
116
|
+
const mockStandardSchema = {
|
|
117
|
+
"~standard": {
|
|
118
|
+
version: 1 as const,
|
|
119
|
+
vendor: "test",
|
|
120
|
+
validate: () => ({ value: {} }),
|
|
121
|
+
jsonSchema: {
|
|
122
|
+
input: () => ({
|
|
123
|
+
type: "object",
|
|
124
|
+
properties: { name: { type: "string" } },
|
|
125
|
+
}),
|
|
126
|
+
},
|
|
107
127
|
},
|
|
108
|
-
type: "object" as const,
|
|
109
|
-
properties: {},
|
|
110
128
|
};
|
|
111
129
|
|
|
112
|
-
const result = toJSONSchema(
|
|
113
|
-
|
|
114
|
-
|
|
130
|
+
const result = toJSONSchema(mockStandardSchema);
|
|
131
|
+
expect(result).toEqual({
|
|
132
|
+
type: "object",
|
|
133
|
+
properties: { name: { type: "string" } },
|
|
134
|
+
});
|
|
115
135
|
});
|
|
116
136
|
});
|
|
117
137
|
|
|
@@ -141,6 +161,7 @@ describe("toToolsJSONSchema", () => {
|
|
|
141
161
|
type: "frontend",
|
|
142
162
|
description: "Frontend tool",
|
|
143
163
|
parameters: { type: "object", properties: {} },
|
|
164
|
+
execute: async () => {},
|
|
144
165
|
},
|
|
145
166
|
backendTool: {
|
|
146
167
|
type: "backend",
|
|
@@ -158,6 +179,7 @@ describe("toToolsJSONSchema", () => {
|
|
|
158
179
|
type: "frontend",
|
|
159
180
|
description: "A frontend tool",
|
|
160
181
|
parameters: { type: "object", properties: { x: { type: "number" } } },
|
|
182
|
+
execute: async () => {},
|
|
161
183
|
},
|
|
162
184
|
};
|
|
163
185
|
|
|
@@ -19,7 +19,10 @@ export type ToToolsJSONSchemaOptions = {
|
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
function isStandardSchema(schema: unknown): schema is StandardSchemaV1 & {
|
|
22
|
-
"~standard": StandardSchemaV1["~standard"] & {
|
|
22
|
+
"~standard": StandardSchemaV1["~standard"] & {
|
|
23
|
+
toJSONSchema?: () => unknown;
|
|
24
|
+
jsonSchema?: { input?: () => unknown; output?: () => unknown };
|
|
25
|
+
};
|
|
23
26
|
} {
|
|
24
27
|
return (
|
|
25
28
|
typeof schema === "object" &&
|
|
@@ -53,9 +56,10 @@ function hasToJSONMethod(schema: unknown): schema is { toJSON: () => unknown } {
|
|
|
53
56
|
* Converts a schema to JSONSchema7.
|
|
54
57
|
* Supports:
|
|
55
58
|
* - StandardSchemaV1 with ~standard.toJSONSchema (e.g., Zod v4)
|
|
56
|
-
* -
|
|
59
|
+
* - StandardSchemaV1 with ~standard.jsonSchema.input() (e.g., Zod v4)
|
|
60
|
+
* - Objects with toJSONSchema() method (e.g., Zod v4)
|
|
57
61
|
* - Objects with toJSON() method
|
|
58
|
-
* - Plain JSONSchema7 objects
|
|
62
|
+
* - Plain JSONSchema7 objects (must have a "type" property)
|
|
59
63
|
*/
|
|
60
64
|
export function toJSONSchema(
|
|
61
65
|
schema: StandardSchemaV1 | JSONSchema7,
|
|
@@ -66,6 +70,16 @@ export function toJSONSchema(
|
|
|
66
70
|
if (typeof toJSONSchemaMethod === "function") {
|
|
67
71
|
return toJSONSchemaMethod() as JSONSchema7;
|
|
68
72
|
}
|
|
73
|
+
|
|
74
|
+
// StandardSchemaV1 with ~standard.jsonSchema.input()
|
|
75
|
+
const jsonSchema = schema["~standard"].jsonSchema;
|
|
76
|
+
if (
|
|
77
|
+
typeof jsonSchema === "object" &&
|
|
78
|
+
jsonSchema !== null &&
|
|
79
|
+
typeof jsonSchema.input === "function"
|
|
80
|
+
) {
|
|
81
|
+
return jsonSchema.input() as JSONSchema7;
|
|
82
|
+
}
|
|
69
83
|
}
|
|
70
84
|
|
|
71
85
|
// toJSONSchema method on the schema itself
|
|
@@ -78,6 +92,16 @@ export function toJSONSchema(
|
|
|
78
92
|
return schema.toJSON() as JSONSchema7;
|
|
79
93
|
}
|
|
80
94
|
|
|
95
|
+
// If it's a Standard Schema that we couldn't convert, throw a helpful error
|
|
96
|
+
if (isStandardSchema(schema)) {
|
|
97
|
+
throw new Error(
|
|
98
|
+
"Could not convert schema to JSON Schema. " +
|
|
99
|
+
"The schema implements Standard Schema but does not support JSON Schema conversion. " +
|
|
100
|
+
"If you are using Zod, please upgrade to Zod v4 (npm install zod@latest). " +
|
|
101
|
+
"Alternatively, pass a plain JSON Schema object instead.",
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
|
|
81
105
|
// Already a plain JSONSchema7
|
|
82
106
|
return schema as JSONSchema7;
|
|
83
107
|
}
|
|
@@ -115,7 +115,7 @@ type BackendTool<
|
|
|
115
115
|
TArgs extends Record<string, unknown> = Record<string, unknown>,
|
|
116
116
|
TResult = unknown,
|
|
117
117
|
> = ToolBase<TArgs, TResult> & {
|
|
118
|
-
type
|
|
118
|
+
type: "backend";
|
|
119
119
|
|
|
120
120
|
description?: undefined;
|
|
121
121
|
parameters?: undefined;
|
|
@@ -128,12 +128,12 @@ type FrontendTool<
|
|
|
128
128
|
TArgs extends Record<string, unknown> = Record<string, unknown>,
|
|
129
129
|
TResult = unknown,
|
|
130
130
|
> = ToolBase<TArgs, TResult> & {
|
|
131
|
-
type
|
|
131
|
+
type: "frontend";
|
|
132
132
|
|
|
133
133
|
description?: string | undefined;
|
|
134
134
|
parameters: StandardSchemaV1<TArgs> | JSONSchema7;
|
|
135
135
|
disabled?: boolean;
|
|
136
|
-
execute
|
|
136
|
+
execute: ToolExecuteFunction<TArgs, TResult>;
|
|
137
137
|
experimental_onSchemaValidationError?: OnSchemaValidationErrorFunction<TResult>;
|
|
138
138
|
};
|
|
139
139
|
|
|
@@ -141,7 +141,7 @@ type HumanTool<
|
|
|
141
141
|
TArgs extends Record<string, unknown> = Record<string, unknown>,
|
|
142
142
|
TResult = unknown,
|
|
143
143
|
> = ToolBase<TArgs, TResult> & {
|
|
144
|
-
type
|
|
144
|
+
type: "human";
|
|
145
145
|
|
|
146
146
|
description?: string | undefined;
|
|
147
147
|
parameters: StandardSchemaV1<TArgs> | JSONSchema7;
|
|
@@ -156,4 +156,17 @@ export type Tool<
|
|
|
156
156
|
> =
|
|
157
157
|
| FrontendTool<TArgs, TResult>
|
|
158
158
|
| BackendTool<TArgs, TResult>
|
|
159
|
-
| HumanTool<TArgs, TResult
|
|
159
|
+
| HumanTool<TArgs, TResult>
|
|
160
|
+
| ToolWithoutType<TArgs, TResult>;
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @deprecated Use `Tool` with an explicit `type` field instead.
|
|
164
|
+
*/
|
|
165
|
+
export type ToolWithoutType<
|
|
166
|
+
TArgs extends Record<string, unknown> = Record<string, unknown>,
|
|
167
|
+
TResult = unknown,
|
|
168
|
+
> = (
|
|
169
|
+
| Omit<FrontendTool<TArgs, TResult>, "type">
|
|
170
|
+
| Omit<BackendTool<TArgs, TResult>, "type">
|
|
171
|
+
| Omit<HumanTool<TArgs, TResult>, "type">
|
|
172
|
+
) & { type?: undefined };
|