@dainprotocol/service-sdk 2.0.55 → 2.0.57
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/client/client.d.ts +0 -1
- package/dist/client/client.js +13 -73
- package/dist/client/client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/convertToVercelTool.d.ts +2 -3
- package/dist/lib/convertToVercelTool.js +4 -47
- package/dist/lib/convertToVercelTool.js.map +1 -1
- package/dist/lib/schemaConversion.d.ts +35 -0
- package/dist/lib/schemaConversion.js +234 -0
- package/dist/lib/schemaConversion.js.map +1 -0
- package/dist/lib/schemaStructure.d.ts +3 -2
- package/dist/lib/schemaStructure.js +15 -142
- package/dist/lib/schemaStructure.js.map +1 -1
- package/dist/service/server.js +19 -3
- package/dist/service/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// File: src/lib/schemaConversion.ts
|
|
3
|
+
// Unified schema conversion: JSON ↔ Zod
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.jsonToZod = jsonToZod;
|
|
6
|
+
exports.getZodTypeName = getZodTypeName;
|
|
7
|
+
exports.zodToJson = zodToJson;
|
|
8
|
+
const zod_1 = require("zod");
|
|
9
|
+
/**
|
|
10
|
+
* Convert serialized JSON schema back to Zod schema
|
|
11
|
+
* Used by client to reconstruct schemas received from server
|
|
12
|
+
*/
|
|
13
|
+
function jsonToZod(schema) {
|
|
14
|
+
if (!schema || typeof schema !== "object") {
|
|
15
|
+
return zod_1.z.any();
|
|
16
|
+
}
|
|
17
|
+
const desc = schema.description || "";
|
|
18
|
+
switch (schema.type) {
|
|
19
|
+
case "ZodObject": {
|
|
20
|
+
const shape = {};
|
|
21
|
+
if (schema.shape) {
|
|
22
|
+
for (const [key, value] of Object.entries(schema.shape)) {
|
|
23
|
+
shape[key] = jsonToZod(value);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return zod_1.z.object(shape).describe(desc);
|
|
27
|
+
}
|
|
28
|
+
case "ZodString":
|
|
29
|
+
return zod_1.z.string().describe(desc);
|
|
30
|
+
case "ZodNumber":
|
|
31
|
+
return zod_1.z.number().describe(desc);
|
|
32
|
+
case "ZodBoolean":
|
|
33
|
+
return zod_1.z.boolean().describe(desc);
|
|
34
|
+
case "ZodArray":
|
|
35
|
+
return zod_1.z.array(jsonToZod(schema.element)).describe(desc);
|
|
36
|
+
case "ZodEnum":
|
|
37
|
+
if (!schema.values?.length)
|
|
38
|
+
return zod_1.z.any().describe(desc);
|
|
39
|
+
return zod_1.z.enum(schema.values).describe(desc);
|
|
40
|
+
case "ZodUnion":
|
|
41
|
+
if (!schema.options?.length)
|
|
42
|
+
return zod_1.z.any().describe(desc);
|
|
43
|
+
return zod_1.z.union(schema.options.map(opt => jsonToZod(opt))).describe(desc);
|
|
44
|
+
case "ZodDiscriminatedUnion":
|
|
45
|
+
if (!schema.discriminator || !schema.options?.length)
|
|
46
|
+
return zod_1.z.any().describe(desc);
|
|
47
|
+
return zod_1.z.discriminatedUnion(schema.discriminator, schema.options.map(opt => jsonToZod(opt))).describe(desc);
|
|
48
|
+
case "ZodOptional":
|
|
49
|
+
return jsonToZod(schema.innerType).optional().describe(desc);
|
|
50
|
+
case "ZodNullable":
|
|
51
|
+
return jsonToZod(schema.innerType).nullable().describe(desc);
|
|
52
|
+
case "ZodDefault":
|
|
53
|
+
return jsonToZod(schema.innerType).default(schema.defaultValue).describe(desc);
|
|
54
|
+
case "ZodLiteral":
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
56
|
+
return zod_1.z.literal(schema.value).describe(desc);
|
|
57
|
+
case "ZodTuple":
|
|
58
|
+
if (!schema.items?.length)
|
|
59
|
+
return zod_1.z.tuple([]).describe(desc);
|
|
60
|
+
return zod_1.z.tuple(schema.items.map(item => jsonToZod(item))).describe(desc);
|
|
61
|
+
case "ZodIntersection":
|
|
62
|
+
return zod_1.z.intersection(jsonToZod(schema.left), jsonToZod(schema.right)).describe(desc);
|
|
63
|
+
case "ZodRecord":
|
|
64
|
+
return zod_1.z.record(jsonToZod(schema.keyType), jsonToZod(schema.valueType)).describe(desc);
|
|
65
|
+
case "ZodMap":
|
|
66
|
+
return zod_1.z.map(jsonToZod(schema.keyType), jsonToZod(schema.valueType)).describe(desc);
|
|
67
|
+
case "ZodSet":
|
|
68
|
+
return zod_1.z.set(jsonToZod(schema.valueType)).describe(desc);
|
|
69
|
+
case "ZodDate":
|
|
70
|
+
return zod_1.z.date().describe(desc);
|
|
71
|
+
case "ZodBigInt":
|
|
72
|
+
return zod_1.z.bigint().describe(desc);
|
|
73
|
+
case "ZodPromise":
|
|
74
|
+
return zod_1.z.promise(jsonToZod(schema.innerType)).describe(desc);
|
|
75
|
+
default:
|
|
76
|
+
return zod_1.z.any().describe(desc || "Unknown type");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get the Zod type name from a schema instance
|
|
81
|
+
*/
|
|
82
|
+
function getZodTypeName(schema) {
|
|
83
|
+
// Check _def.typeName first (works across Zod versions)
|
|
84
|
+
const typeName = schema._def?.typeName;
|
|
85
|
+
if (typeName)
|
|
86
|
+
return typeName;
|
|
87
|
+
// Fallback to instanceof checks
|
|
88
|
+
if (schema instanceof zod_1.z.ZodDefault)
|
|
89
|
+
return "ZodDefault";
|
|
90
|
+
if (schema instanceof zod_1.z.ZodOptional)
|
|
91
|
+
return "ZodOptional";
|
|
92
|
+
if (schema instanceof zod_1.z.ZodNullable)
|
|
93
|
+
return "ZodNullable";
|
|
94
|
+
if (schema instanceof zod_1.z.ZodArray)
|
|
95
|
+
return "ZodArray";
|
|
96
|
+
if (schema instanceof zod_1.z.ZodEnum)
|
|
97
|
+
return "ZodEnum";
|
|
98
|
+
if (schema instanceof zod_1.z.ZodDiscriminatedUnion)
|
|
99
|
+
return "ZodDiscriminatedUnion";
|
|
100
|
+
if (schema instanceof zod_1.z.ZodUnion)
|
|
101
|
+
return "ZodUnion";
|
|
102
|
+
if (schema instanceof zod_1.z.ZodObject)
|
|
103
|
+
return "ZodObject";
|
|
104
|
+
if (schema instanceof zod_1.z.ZodString)
|
|
105
|
+
return "ZodString";
|
|
106
|
+
if (schema instanceof zod_1.z.ZodNumber)
|
|
107
|
+
return "ZodNumber";
|
|
108
|
+
if (schema instanceof zod_1.z.ZodBoolean)
|
|
109
|
+
return "ZodBoolean";
|
|
110
|
+
if (schema instanceof zod_1.z.ZodLiteral)
|
|
111
|
+
return "ZodLiteral";
|
|
112
|
+
if (schema instanceof zod_1.z.ZodTuple)
|
|
113
|
+
return "ZodTuple";
|
|
114
|
+
if (schema instanceof zod_1.z.ZodIntersection)
|
|
115
|
+
return "ZodIntersection";
|
|
116
|
+
if (schema instanceof zod_1.z.ZodRecord)
|
|
117
|
+
return "ZodRecord";
|
|
118
|
+
if (schema instanceof zod_1.z.ZodMap)
|
|
119
|
+
return "ZodMap";
|
|
120
|
+
if (schema instanceof zod_1.z.ZodSet)
|
|
121
|
+
return "ZodSet";
|
|
122
|
+
if (schema instanceof zod_1.z.ZodDate)
|
|
123
|
+
return "ZodDate";
|
|
124
|
+
if (schema instanceof zod_1.z.ZodBigInt)
|
|
125
|
+
return "ZodBigInt";
|
|
126
|
+
if (schema instanceof zod_1.z.ZodPromise)
|
|
127
|
+
return "ZodPromise";
|
|
128
|
+
return "Unknown";
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Convert Zod schema to serialized JSON format
|
|
132
|
+
* Used by server to serialize schemas for transmission to client
|
|
133
|
+
*/
|
|
134
|
+
function zodToJson(schema) {
|
|
135
|
+
const typeName = getZodTypeName(schema);
|
|
136
|
+
const base = {
|
|
137
|
+
type: typeName,
|
|
138
|
+
description: schema.description,
|
|
139
|
+
};
|
|
140
|
+
switch (typeName) {
|
|
141
|
+
case "ZodObject": {
|
|
142
|
+
const shape = schema.shape;
|
|
143
|
+
return {
|
|
144
|
+
...base,
|
|
145
|
+
shape: Object.fromEntries(Object.entries(shape).map(([k, v]) => [k, zodToJson(v)])),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
case "ZodArray":
|
|
149
|
+
return {
|
|
150
|
+
...base,
|
|
151
|
+
element: zodToJson(schema.element),
|
|
152
|
+
};
|
|
153
|
+
case "ZodEnum":
|
|
154
|
+
return {
|
|
155
|
+
...base,
|
|
156
|
+
values: schema.options,
|
|
157
|
+
};
|
|
158
|
+
case "ZodUnion":
|
|
159
|
+
return {
|
|
160
|
+
...base,
|
|
161
|
+
options: schema.options.map((opt) => zodToJson(opt)),
|
|
162
|
+
};
|
|
163
|
+
case "ZodDiscriminatedUnion": {
|
|
164
|
+
const def = schema._def;
|
|
165
|
+
const options = Array.isArray(def.options)
|
|
166
|
+
? def.options
|
|
167
|
+
: Array.from(def.options.values());
|
|
168
|
+
return {
|
|
169
|
+
...base,
|
|
170
|
+
discriminator: def.discriminator,
|
|
171
|
+
options: options.map((opt) => zodToJson(opt)),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
case "ZodOptional":
|
|
175
|
+
case "ZodNullable":
|
|
176
|
+
return {
|
|
177
|
+
...base,
|
|
178
|
+
innerType: zodToJson(schema._def.innerType),
|
|
179
|
+
};
|
|
180
|
+
case "ZodDefault": {
|
|
181
|
+
const def = schema._def;
|
|
182
|
+
// Handle both Zod 3 (function) and Zod 4 (value) defaultValue
|
|
183
|
+
const defaultVal = typeof def.defaultValue === 'function'
|
|
184
|
+
? def.defaultValue()
|
|
185
|
+
: def.defaultValue;
|
|
186
|
+
return {
|
|
187
|
+
...base,
|
|
188
|
+
innerType: zodToJson(def.innerType),
|
|
189
|
+
defaultValue: defaultVal,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
case "ZodLiteral":
|
|
193
|
+
return {
|
|
194
|
+
...base,
|
|
195
|
+
value: schema.value,
|
|
196
|
+
};
|
|
197
|
+
case "ZodTuple":
|
|
198
|
+
return {
|
|
199
|
+
...base,
|
|
200
|
+
items: schema._def.items.map((item) => zodToJson(item)),
|
|
201
|
+
};
|
|
202
|
+
case "ZodIntersection":
|
|
203
|
+
return {
|
|
204
|
+
...base,
|
|
205
|
+
left: zodToJson(schema._def.left),
|
|
206
|
+
right: zodToJson(schema._def.right),
|
|
207
|
+
};
|
|
208
|
+
case "ZodRecord":
|
|
209
|
+
return {
|
|
210
|
+
...base,
|
|
211
|
+
keyType: zodToJson(schema._def.keyType),
|
|
212
|
+
valueType: zodToJson(schema._def.valueType),
|
|
213
|
+
};
|
|
214
|
+
case "ZodMap":
|
|
215
|
+
return {
|
|
216
|
+
...base,
|
|
217
|
+
keyType: zodToJson(schema._def.keyType),
|
|
218
|
+
valueType: zodToJson(schema._def.valueType),
|
|
219
|
+
};
|
|
220
|
+
case "ZodSet":
|
|
221
|
+
return {
|
|
222
|
+
...base,
|
|
223
|
+
valueType: zodToJson(schema._def.valueType),
|
|
224
|
+
};
|
|
225
|
+
case "ZodPromise":
|
|
226
|
+
return {
|
|
227
|
+
...base,
|
|
228
|
+
innerType: zodToJson(schema._def.type),
|
|
229
|
+
};
|
|
230
|
+
default:
|
|
231
|
+
return base;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=schemaConversion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaConversion.js","sourceRoot":"","sources":["../../src/lib/schemaConversion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ZodType } from "zod";
|
|
2
|
+
import { getZodTypeName, zodToJson, SerializedSchema } from "./schemaConversion";
|
|
3
|
+
export { getZodTypeName as getSchemaTypeName, zodToJson as getDetailedSchemaStructure };
|
|
4
|
+
export type { SerializedSchema };
|
|
2
5
|
/**
|
|
3
6
|
* Convert Zod schema to JSON Schema format (compatible with Claude API)
|
|
4
7
|
* Note: Claude API doesn't support oneOf/anyOf/allOf at top level of input_schema
|
|
5
8
|
*/
|
|
6
9
|
export declare function zodToJsonSchema(schema: ZodType<any, any, any>): any;
|
|
7
|
-
export declare function getSchemaTypeName(schema: ZodType<any, any, any>): string;
|
|
8
|
-
export declare function getDetailedSchemaStructure(schema: ZodType<any, any, any>): any;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
//File: src/lib/schemaStructure.ts
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getDetailedSchemaStructure = exports.getSchemaTypeName = void 0;
|
|
4
5
|
exports.zodToJsonSchema = zodToJsonSchema;
|
|
5
|
-
|
|
6
|
-
exports.
|
|
7
|
-
|
|
6
|
+
const schemaConversion_1 = require("./schemaConversion");
|
|
7
|
+
Object.defineProperty(exports, "getSchemaTypeName", { enumerable: true, get: function () { return schemaConversion_1.getZodTypeName; } });
|
|
8
|
+
Object.defineProperty(exports, "getDetailedSchemaStructure", { enumerable: true, get: function () { return schemaConversion_1.zodToJson; } });
|
|
8
9
|
/**
|
|
9
10
|
* Convert Zod schema to JSON Schema format (compatible with Claude API)
|
|
10
11
|
* Note: Claude API doesn't support oneOf/anyOf/allOf at top level of input_schema
|
|
@@ -23,7 +24,7 @@ function zodToJsonSchema(schema) {
|
|
|
23
24
|
return result;
|
|
24
25
|
}
|
|
25
26
|
function zodToJsonSchemaInternal(schema) {
|
|
26
|
-
const typeName =
|
|
27
|
+
const typeName = (0, schemaConversion_1.getZodTypeName)(schema);
|
|
27
28
|
const baseInfo = {};
|
|
28
29
|
if (schema.description) {
|
|
29
30
|
baseInfo.description = schema.description;
|
|
@@ -37,20 +38,19 @@ function zodToJsonSchemaInternal(schema) {
|
|
|
37
38
|
const fieldSchema = value;
|
|
38
39
|
properties[key] = zodToJsonSchemaInternal(fieldSchema);
|
|
39
40
|
// Check if required (not optional/nullable/default)
|
|
40
|
-
const fieldType =
|
|
41
|
+
const fieldType = (0, schemaConversion_1.getZodTypeName)(fieldSchema);
|
|
41
42
|
if (fieldType !== 'ZodOptional' &&
|
|
42
43
|
fieldType !== 'ZodNullable' &&
|
|
43
44
|
fieldType !== 'ZodDefault') {
|
|
44
45
|
required.push(key);
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
|
-
|
|
48
|
+
return {
|
|
48
49
|
type: 'object',
|
|
49
50
|
properties,
|
|
50
51
|
...(required.length > 0 && { required }),
|
|
51
52
|
...baseInfo,
|
|
52
53
|
};
|
|
53
|
-
return result;
|
|
54
54
|
}
|
|
55
55
|
case "ZodArray": {
|
|
56
56
|
const element = schema.element;
|
|
@@ -70,21 +70,15 @@ function zodToJsonSchemaInternal(schema) {
|
|
|
70
70
|
}
|
|
71
71
|
case "ZodUnion": {
|
|
72
72
|
const options = schema.options;
|
|
73
|
-
// Check if all options are simple primitive types
|
|
73
|
+
// Check if all options are simple primitive types
|
|
74
74
|
const allPrimitives = options.every((opt) => {
|
|
75
|
-
const
|
|
76
|
-
return
|
|
75
|
+
const tn = (0, schemaConversion_1.getZodTypeName)(opt);
|
|
76
|
+
return tn === 'ZodString' || tn === 'ZodNumber' || tn === 'ZodBoolean';
|
|
77
77
|
});
|
|
78
78
|
if (allPrimitives) {
|
|
79
|
-
// For simple type unions, use type: ["string", "number"] format
|
|
80
|
-
const types = options.map((opt) =>
|
|
81
|
-
|
|
82
|
-
return optSchema.type;
|
|
83
|
-
});
|
|
84
|
-
return {
|
|
85
|
-
type: types,
|
|
86
|
-
...baseInfo,
|
|
87
|
-
};
|
|
79
|
+
// For simple type unions, use type: ["string", "number"] format
|
|
80
|
+
const types = options.map((opt) => zodToJsonSchemaInternal(opt).type);
|
|
81
|
+
return { type: types, ...baseInfo };
|
|
88
82
|
}
|
|
89
83
|
// For complex unions, fall back to oneOf
|
|
90
84
|
return {
|
|
@@ -97,7 +91,6 @@ function zodToJsonSchemaInternal(schema) {
|
|
|
97
91
|
case "ZodDefault": {
|
|
98
92
|
const innerType = schema._def.innerType;
|
|
99
93
|
const innerSchema = zodToJsonSchemaInternal(innerType);
|
|
100
|
-
// Preserve description from the wrapper if inner doesn't have one
|
|
101
94
|
if (baseInfo.description && !innerSchema.description) {
|
|
102
95
|
innerSchema.description = baseInfo.description;
|
|
103
96
|
}
|
|
@@ -108,14 +101,11 @@ function zodToJsonSchemaInternal(schema) {
|
|
|
108
101
|
case "ZodNumber": {
|
|
109
102
|
const numSchema = schema;
|
|
110
103
|
const result = { type: 'number', ...baseInfo };
|
|
111
|
-
// Check if it's an integer type (using isInt property)
|
|
112
104
|
if (numSchema.isInt) {
|
|
113
105
|
result.type = 'integer';
|
|
114
106
|
}
|
|
115
|
-
// Extract min/max constraints from checks
|
|
116
107
|
const checks = numSchema._def.checks || [];
|
|
117
108
|
for (const check of checks) {
|
|
118
|
-
// Access check definition from _zod.def property
|
|
119
109
|
const checkDef = check._zod?.def || check;
|
|
120
110
|
const checkType = checkDef.check || check.kind;
|
|
121
111
|
if (checkType === 'greater_than' || checkType === 'min') {
|
|
@@ -157,8 +147,7 @@ function zodToJsonSchemaInternal(schema) {
|
|
|
157
147
|
const options = Array.isArray(duDef.options)
|
|
158
148
|
? duDef.options
|
|
159
149
|
: Array.from(duDef.options.values());
|
|
160
|
-
// Convert
|
|
161
|
-
// AI SDK doesn't support oneOf/anyOf/allOf at top level, so we merge all properties
|
|
150
|
+
// Convert to merged object schema for AI SDK compatibility
|
|
162
151
|
const mergedProperties = {};
|
|
163
152
|
const allRequired = new Set();
|
|
164
153
|
// Add discriminator field as required enum
|
|
@@ -178,14 +167,12 @@ function zodToJsonSchemaInternal(schema) {
|
|
|
178
167
|
if (optSchema.properties) {
|
|
179
168
|
for (const [key, value] of Object.entries(optSchema.properties)) {
|
|
180
169
|
if (key === duDef.discriminator)
|
|
181
|
-
continue;
|
|
182
|
-
// If property already exists, make it optional (could be from different union branch)
|
|
170
|
+
continue;
|
|
183
171
|
if (!mergedProperties[key]) {
|
|
184
172
|
mergedProperties[key] = value;
|
|
185
173
|
}
|
|
186
174
|
}
|
|
187
175
|
}
|
|
188
|
-
// Don't mark properties as required if they're not in all branches
|
|
189
176
|
}
|
|
190
177
|
return {
|
|
191
178
|
type: 'object',
|
|
@@ -195,11 +182,8 @@ function zodToJsonSchemaInternal(schema) {
|
|
|
195
182
|
};
|
|
196
183
|
}
|
|
197
184
|
case "ZodEffects": {
|
|
198
|
-
// ZodEffects wraps schemas with refinements/transformations
|
|
199
|
-
// We extract the underlying schema and convert that instead
|
|
200
185
|
const innerType = schema._def.schema;
|
|
201
186
|
const innerSchema = zodToJsonSchemaInternal(innerType);
|
|
202
|
-
// Preserve description from the wrapper if inner doesn't have one
|
|
203
187
|
if (baseInfo.description && !innerSchema.description) {
|
|
204
188
|
innerSchema.description = baseInfo.description;
|
|
205
189
|
}
|
|
@@ -209,115 +193,4 @@ function zodToJsonSchemaInternal(schema) {
|
|
|
209
193
|
return baseInfo;
|
|
210
194
|
}
|
|
211
195
|
}
|
|
212
|
-
function getSchemaTypeName(schema) {
|
|
213
|
-
// Check for ZodEffects using _def.typeName (works across Zod versions)
|
|
214
|
-
const typeName = schema._def?.typeName;
|
|
215
|
-
if (typeName === "ZodEffects")
|
|
216
|
-
return "ZodEffects";
|
|
217
|
-
if (schema instanceof zod_1.z.ZodDefault)
|
|
218
|
-
return "ZodDefault";
|
|
219
|
-
if (schema instanceof zod_1.z.ZodOptional)
|
|
220
|
-
return "ZodOptional";
|
|
221
|
-
if (schema instanceof zod_1.z.ZodNullable)
|
|
222
|
-
return "ZodNullable";
|
|
223
|
-
if (schema instanceof zod_1.z.ZodArray)
|
|
224
|
-
return "ZodArray";
|
|
225
|
-
if (schema instanceof zod_1.z.ZodEnum)
|
|
226
|
-
return "ZodEnum";
|
|
227
|
-
// Check ZodDiscriminatedUnion before ZodUnion (discriminated unions extend unions)
|
|
228
|
-
if (schema instanceof zod_1.z.ZodDiscriminatedUnion)
|
|
229
|
-
return "ZodDiscriminatedUnion";
|
|
230
|
-
if (schema instanceof zod_1.z.ZodUnion)
|
|
231
|
-
return "ZodUnion";
|
|
232
|
-
if (schema instanceof zod_1.z.ZodObject)
|
|
233
|
-
return "ZodObject";
|
|
234
|
-
if (schema instanceof zod_1.z.ZodString)
|
|
235
|
-
return "ZodString";
|
|
236
|
-
if (schema instanceof zod_1.z.ZodNumber)
|
|
237
|
-
return "ZodNumber";
|
|
238
|
-
if (schema instanceof zod_1.z.ZodBoolean)
|
|
239
|
-
return "ZodBoolean";
|
|
240
|
-
if (schema instanceof zod_1.z.ZodLiteral)
|
|
241
|
-
return "ZodLiteral";
|
|
242
|
-
if (schema instanceof zod_1.z.ZodTuple)
|
|
243
|
-
return "ZodTuple";
|
|
244
|
-
if (schema instanceof zod_1.z.ZodIntersection)
|
|
245
|
-
return "ZodIntersection";
|
|
246
|
-
// Add more type checks as needed
|
|
247
|
-
return "Unknown";
|
|
248
|
-
}
|
|
249
|
-
function getDetailedSchemaStructure(schema) {
|
|
250
|
-
const typeName = getSchemaTypeName(schema);
|
|
251
|
-
const baseInfo = {
|
|
252
|
-
type: typeName,
|
|
253
|
-
description: schema.description,
|
|
254
|
-
};
|
|
255
|
-
switch (typeName) {
|
|
256
|
-
case "ZodObject":
|
|
257
|
-
return {
|
|
258
|
-
...baseInfo,
|
|
259
|
-
shape: Object.fromEntries(Object.entries(schema.shape).map(([key, value]) => [
|
|
260
|
-
key,
|
|
261
|
-
getDetailedSchemaStructure(value),
|
|
262
|
-
])),
|
|
263
|
-
};
|
|
264
|
-
case "ZodArray":
|
|
265
|
-
return {
|
|
266
|
-
...baseInfo,
|
|
267
|
-
element: getDetailedSchemaStructure(schema.element),
|
|
268
|
-
};
|
|
269
|
-
case "ZodEnum":
|
|
270
|
-
return {
|
|
271
|
-
...baseInfo,
|
|
272
|
-
values: schema.options,
|
|
273
|
-
};
|
|
274
|
-
case "ZodUnion":
|
|
275
|
-
return {
|
|
276
|
-
...baseInfo,
|
|
277
|
-
options: schema.options.map((option) => getDetailedSchemaStructure(option)),
|
|
278
|
-
};
|
|
279
|
-
case "ZodOptional":
|
|
280
|
-
return {
|
|
281
|
-
...baseInfo,
|
|
282
|
-
innerType: getDetailedSchemaStructure(schema._def.innerType),
|
|
283
|
-
};
|
|
284
|
-
case "ZodNullable":
|
|
285
|
-
return {
|
|
286
|
-
...baseInfo,
|
|
287
|
-
innerType: getDetailedSchemaStructure(schema._def.innerType),
|
|
288
|
-
};
|
|
289
|
-
case "ZodLiteral":
|
|
290
|
-
return {
|
|
291
|
-
...baseInfo,
|
|
292
|
-
value: schema.value,
|
|
293
|
-
};
|
|
294
|
-
case "ZodTuple":
|
|
295
|
-
return {
|
|
296
|
-
...baseInfo,
|
|
297
|
-
items: schema._def.items.map((item) => getDetailedSchemaStructure(item)),
|
|
298
|
-
};
|
|
299
|
-
case "ZodIntersection":
|
|
300
|
-
return {
|
|
301
|
-
...baseInfo,
|
|
302
|
-
left: getDetailedSchemaStructure(schema._def.left),
|
|
303
|
-
right: getDetailedSchemaStructure(schema._def.right),
|
|
304
|
-
};
|
|
305
|
-
case "ZodDiscriminatedUnion": {
|
|
306
|
-
const duDef = schema._def;
|
|
307
|
-
return {
|
|
308
|
-
...baseInfo,
|
|
309
|
-
discriminator: duDef.discriminator,
|
|
310
|
-
options: Array.from(duDef.options.values()).map((option) => getDetailedSchemaStructure(option)),
|
|
311
|
-
};
|
|
312
|
-
}
|
|
313
|
-
case "ZodDefault":
|
|
314
|
-
return {
|
|
315
|
-
...baseInfo,
|
|
316
|
-
innerType: getDetailedSchemaStructure(schema._def.innerType),
|
|
317
|
-
defaultValue: schema._def.defaultValue,
|
|
318
|
-
};
|
|
319
|
-
default:
|
|
320
|
-
return baseInfo;
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
196
|
//# sourceMappingURL=schemaStructure.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaStructure.js","sourceRoot":"","sources":["../../src/lib/schemaStructure.ts"],"names":[],"mappings":";AAAA,kCAAkC
|
|
1
|
+
{"version":3,"file":"schemaStructure.js","sourceRoot":"","sources":["../../src/lib/schemaStructure.ts"],"names":[],"mappings":"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"}
|
package/dist/service/server.js
CHANGED
|
@@ -60,10 +60,16 @@ function requireScope(requiredScope) {
|
|
|
60
60
|
}
|
|
61
61
|
// Add a helper function to sign SSE events
|
|
62
62
|
function signedStreamSSE(c, privateKey, config, handler) {
|
|
63
|
+
const sseId = `${config.identity.agentId}-${Date.now()}`;
|
|
64
|
+
console.log(`[SSE Server] Starting SSE stream ${sseId}`);
|
|
63
65
|
return (0, streaming_1.streamSSE)(c, async (stream) => {
|
|
66
|
+
console.log(`[SSE Server] Stream ${sseId} opened`);
|
|
67
|
+
let eventCount = 0;
|
|
64
68
|
// Wrap the original stream with a version that signs each event
|
|
65
69
|
const signedStream = {
|
|
66
70
|
writeSSE: async (event) => {
|
|
71
|
+
eventCount++;
|
|
72
|
+
console.log(`[SSE Server] Stream ${sseId} writing event #${eventCount}: ${event.event}`);
|
|
67
73
|
try {
|
|
68
74
|
// Get the current timestamp
|
|
69
75
|
const timestamp = Date.now().toString();
|
|
@@ -96,14 +102,17 @@ function signedStreamSSE(c, privateKey, config, handler) {
|
|
|
96
102
|
dataWithSignature = `{"data":${event.data},"_signature":{"signature":"${signature}","timestamp":"${timestamp}","agentId":"${config.identity.agentId}","orgId":"${config.identity.orgId}","address":"${config.identity.publicKey}"}}`;
|
|
97
103
|
}
|
|
98
104
|
// Send the signed event
|
|
99
|
-
|
|
105
|
+
console.log(`[SSE Server] Stream ${sseId} sending signed event ${event.event}`);
|
|
106
|
+
const writeResult = await stream.writeSSE({
|
|
100
107
|
event: event.event,
|
|
101
108
|
data: dataWithSignature,
|
|
102
109
|
id: event.id
|
|
103
110
|
});
|
|
111
|
+
console.log(`[SSE Server] Stream ${sseId} event ${event.event} sent successfully`);
|
|
112
|
+
return writeResult;
|
|
104
113
|
}
|
|
105
114
|
catch (error) {
|
|
106
|
-
console.error(
|
|
115
|
+
console.error(`[SSE Server] Stream ${sseId} signing error:`, error);
|
|
107
116
|
// Try to send the event unsigned as fallback
|
|
108
117
|
try {
|
|
109
118
|
return stream.writeSSE({
|
|
@@ -120,7 +129,14 @@ function signedStreamSSE(c, privateKey, config, handler) {
|
|
|
120
129
|
}
|
|
121
130
|
};
|
|
122
131
|
// Call the original handler with our signed stream
|
|
123
|
-
|
|
132
|
+
try {
|
|
133
|
+
await handler(signedStream);
|
|
134
|
+
console.log(`[SSE Server] Stream ${sseId} handler completed, total events: ${eventCount}`);
|
|
135
|
+
}
|
|
136
|
+
catch (handlerError) {
|
|
137
|
+
console.error(`[SSE Server] Stream ${sseId} handler error:`, handlerError);
|
|
138
|
+
throw handlerError;
|
|
139
|
+
}
|
|
124
140
|
});
|
|
125
141
|
}
|
|
126
142
|
function setupHttpServer(config, tools, services, toolboxes, metadata, privateKey, contexts, widgets, datasources = [], agents = []) {
|