@dainprotocol/service-sdk 2.0.65 → 2.0.67

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.
Files changed (104) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +8 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/service/hitl.d.ts +8 -2
  5. package/dist/service/hitl.js +34 -9
  6. package/dist/service/hitl.js.map +1 -1
  7. package/dist/service/index.d.ts +4 -2
  8. package/dist/service/index.js +7 -1
  9. package/dist/service/index.js.map +1 -1
  10. package/dist/service/nodeService.d.ts +4 -2
  11. package/dist/service/nodeService.js +7 -1
  12. package/dist/service/nodeService.js.map +1 -1
  13. package/dist/service/oauth2Manager.js +3 -2
  14. package/dist/service/oauth2Manager.js.map +1 -1
  15. package/dist/service/server.js +81 -9
  16. package/dist/service/server.js.map +1 -1
  17. package/dist/service/service.js +3 -2
  18. package/dist/service/service.js.map +1 -1
  19. package/dist/service/skills.d.ts +80 -0
  20. package/dist/service/skills.js +102 -0
  21. package/dist/service/skills.js.map +1 -0
  22. package/dist/service/trigger-forwarder.d.ts +47 -0
  23. package/dist/service/trigger-forwarder.js +91 -0
  24. package/dist/service/trigger-forwarder.js.map +1 -0
  25. package/dist/service/types.d.ts +4 -0
  26. package/dist/service/webhooks.d.ts +109 -10
  27. package/dist/service/webhooks.js +184 -30
  28. package/dist/service/webhooks.js.map +1 -1
  29. package/package.json +1 -1
  30. package/dist/__tests__/api-sdk.test.d.ts +0 -1
  31. package/dist/__tests__/api-sdk.test.js +0 -102
  32. package/dist/__tests__/api-sdk.test.js.map +0 -1
  33. package/dist/__tests__/auth.test.d.ts +0 -1
  34. package/dist/__tests__/auth.test.js +0 -110
  35. package/dist/__tests__/auth.test.js.map +0 -1
  36. package/dist/__tests__/citations-plugin.test.d.ts +0 -1
  37. package/dist/__tests__/citations-plugin.test.js +0 -491
  38. package/dist/__tests__/citations-plugin.test.js.map +0 -1
  39. package/dist/__tests__/context-behavior.test.d.ts +0 -1
  40. package/dist/__tests__/context-behavior.test.js +0 -290
  41. package/dist/__tests__/context-behavior.test.js.map +0 -1
  42. package/dist/__tests__/convertToVercelTool.test.d.ts +0 -1
  43. package/dist/__tests__/convertToVercelTool.test.js +0 -527
  44. package/dist/__tests__/convertToVercelTool.test.js.map +0 -1
  45. package/dist/__tests__/core.test.d.ts +0 -1
  46. package/dist/__tests__/core.test.js +0 -154
  47. package/dist/__tests__/core.test.js.map +0 -1
  48. package/dist/__tests__/crypto-plugin.test.d.ts +0 -1
  49. package/dist/__tests__/crypto-plugin.test.js +0 -694
  50. package/dist/__tests__/crypto-plugin.test.js.map +0 -1
  51. package/dist/__tests__/humanActions.test.d.ts +0 -1
  52. package/dist/__tests__/humanActions.test.js +0 -221
  53. package/dist/__tests__/humanActions.test.js.map +0 -1
  54. package/dist/__tests__/integration.test.d.ts +0 -1
  55. package/dist/__tests__/integration.test.js +0 -1573
  56. package/dist/__tests__/integration.test.js.map +0 -1
  57. package/dist/__tests__/mealMeSchemas.test.d.ts +0 -576
  58. package/dist/__tests__/mealMeSchemas.test.js +0 -627
  59. package/dist/__tests__/mealMeSchemas.test.js.map +0 -1
  60. package/dist/__tests__/oauth-context-simple.test.d.ts +0 -1
  61. package/dist/__tests__/oauth-context-simple.test.js +0 -90
  62. package/dist/__tests__/oauth-context-simple.test.js.map +0 -1
  63. package/dist/__tests__/oauth-context.test.d.ts +0 -1
  64. package/dist/__tests__/oauth-context.test.js +0 -282
  65. package/dist/__tests__/oauth-context.test.js.map +0 -1
  66. package/dist/__tests__/oauth.test.d.ts +0 -1
  67. package/dist/__tests__/oauth.test.js +0 -378
  68. package/dist/__tests__/oauth.test.js.map +0 -1
  69. package/dist/__tests__/oauth2-client-context.test.d.ts +0 -1
  70. package/dist/__tests__/oauth2-client-context.test.js +0 -165
  71. package/dist/__tests__/oauth2-client-context.test.js.map +0 -1
  72. package/dist/__tests__/oauth2-client-integration.test.d.ts +0 -1
  73. package/dist/__tests__/oauth2-client-integration.test.js +0 -182
  74. package/dist/__tests__/oauth2-client-integration.test.js.map +0 -1
  75. package/dist/__tests__/oauth2-client-simple.test.d.ts +0 -1
  76. package/dist/__tests__/oauth2-client-simple.test.js +0 -144
  77. package/dist/__tests__/oauth2-client-simple.test.js.map +0 -1
  78. package/dist/__tests__/oauth2-context.test.d.ts +0 -1
  79. package/dist/__tests__/oauth2-context.test.js +0 -201
  80. package/dist/__tests__/oauth2-context.test.js.map +0 -1
  81. package/dist/__tests__/oauth2-datasource.test.d.ts +0 -1
  82. package/dist/__tests__/oauth2-datasource.test.js +0 -251
  83. package/dist/__tests__/oauth2-datasource.test.js.map +0 -1
  84. package/dist/__tests__/plugin.test.d.ts +0 -1
  85. package/dist/__tests__/plugin.test.js +0 -900
  86. package/dist/__tests__/plugin.test.js.map +0 -1
  87. package/dist/__tests__/processes.test.d.ts +0 -1
  88. package/dist/__tests__/processes.test.js +0 -239
  89. package/dist/__tests__/processes.test.js.map +0 -1
  90. package/dist/__tests__/streaming.test.d.ts +0 -1
  91. package/dist/__tests__/streaming.test.js +0 -592
  92. package/dist/__tests__/streaming.test.js.map +0 -1
  93. package/dist/__tests__/testEnums.d.ts +0 -1
  94. package/dist/__tests__/testEnums.js +0 -73
  95. package/dist/__tests__/testEnums.js.map +0 -1
  96. package/dist/__tests__/testOptionals.test.d.ts +0 -1
  97. package/dist/__tests__/testOptionals.test.js +0 -83
  98. package/dist/__tests__/testOptionals.test.js.map +0 -1
  99. package/dist/__tests__/types.test.d.ts +0 -1
  100. package/dist/__tests__/types.test.js +0 -98
  101. package/dist/__tests__/types.test.js.map +0 -1
  102. package/dist/service/zod-json-converter.d.ts +0 -14
  103. package/dist/service/zod-json-converter.js +0 -203
  104. package/dist/service/zod-json-converter.js.map +0 -1
@@ -1,73 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const zod_1 = require("zod");
4
- const schemaStructure_1 = require("../lib/schemaStructure");
5
- const convertToVercelTool_1 = require("../lib/convertToVercelTool");
6
- describe('Enum types conversion', () => {
7
- it('should correctly convert enum types to Vercel AI Tool parameters', () => {
8
- // Define a schema with enum fields
9
- const testSchema = zod_1.z.object({
10
- simpleEnum: zod_1.z.enum(['A', 'B', 'C']),
11
- optionalEnum: zod_1.z.enum(['X', 'Y', 'Z']).optional(),
12
- nestedEnum: zod_1.z.object({
13
- innerEnum: zod_1.z.enum(['inner1', 'inner2', 'inner3'])
14
- })
15
- });
16
- // Create a mock HTTP tool
17
- const httpTool = {
18
- id: 'test-enum-tool',
19
- name: 'Test Enum Tool',
20
- description: 'A tool to test enum field conversion',
21
- inputSchema: (0, schemaStructure_1.getDetailedSchemaStructure)(testSchema),
22
- outputSchema: { type: 'ZodAny' }
23
- };
24
- // Convert the HTTP tool to a Vercel AI Tool
25
- const vercelAITool = (0, convertToVercelTool_1.convertHttpToolToVercelAITool)(httpTool);
26
- // Check if the conversion was successful
27
- expect(vercelAITool.name).toBe('test-enum-tool');
28
- expect(vercelAITool.description).toBe('A tool to test enum field conversion');
29
- expect(vercelAITool.parameters).toBeInstanceOf(zod_1.z.ZodObject);
30
- // Check if the fields are correctly converted
31
- const schemaShape = vercelAITool.parameters._def.shape();
32
- expect(schemaShape.simpleEnum).toBeInstanceOf(zod_1.z.ZodEnum);
33
- expect(schemaShape.optionalEnum).toBeInstanceOf(zod_1.z.ZodOptional);
34
- expect(schemaShape.optionalEnum._def.innerType).toBeInstanceOf(zod_1.z.ZodEnum);
35
- expect(schemaShape.nestedEnum).toBeInstanceOf(zod_1.z.ZodObject);
36
- expect(schemaShape.nestedEnum._def.shape().innerEnum).toBeInstanceOf(zod_1.z.ZodEnum);
37
- // Test parsing with the converted schema
38
- const validInput = {
39
- simpleEnum: 'B',
40
- optionalEnum: 'Y',
41
- numberEnum: 2,
42
- mixedEnum: 'one',
43
- nestedEnum: {
44
- innerEnum: 'inner2'
45
- }
46
- };
47
- const parseResult = vercelAITool.parameters.safeParse(validInput);
48
- expect(parseResult.success).toBe(true);
49
- // Test parsing with invalid enum values
50
- const invalidInput = {
51
- simpleEnum: 'D',
52
- numberEnum: 4,
53
- mixedEnum: false,
54
- nestedEnum: {
55
- innerEnum: 'inner4'
56
- }
57
- };
58
- const invalidParseResult = vercelAITool.parameters.safeParse(invalidInput);
59
- expect(invalidParseResult.success).toBe(false);
60
- // Test parsing with missing optional enum
61
- const minimalInput = {
62
- simpleEnum: 'A',
63
- numberEnum: 1,
64
- mixedEnum: true,
65
- nestedEnum: {
66
- innerEnum: 'inner1'
67
- }
68
- };
69
- const minimalParseResult = vercelAITool.parameters.safeParse(minimalInput);
70
- expect(minimalParseResult.success).toBe(true);
71
- });
72
- });
73
- //# sourceMappingURL=testEnums.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testEnums.js","sourceRoot":"","sources":["../../src/__tests__/testEnums.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const zod_1 = require("zod");
4
- const schemaStructure_1 = require("../lib/schemaStructure");
5
- const convertToVercelTool_1 = require("../lib/convertToVercelTool");
6
- describe('Optional and default types conversion', () => {
7
- it('should correctly convert optional and default types to Vercel AI Tool parameters', () => {
8
- // Define a schema with optional fields and default values
9
- const testSchema = zod_1.z.object({
10
- requiredField: zod_1.z.string(),
11
- optionalString: zod_1.z.string().optional(),
12
- optionalNumberWithDefault: zod_1.z.number().optional().default(42),
13
- optionalBoolean: zod_1.z.boolean().optional(),
14
- defaultString: zod_1.z.string().default('default value'),
15
- nestedOptional: zod_1.z.object({
16
- innerOptional: zod_1.z.string().optional(),
17
- innerDefault: zod_1.z.number().default(10)
18
- }).optional()
19
- });
20
- // Create a mock HTTP tool
21
- const httpTool = {
22
- id: 'test-optional-default-tool',
23
- name: 'Test Optional and Default Tool',
24
- description: 'A tool to test optional and default field conversion',
25
- inputSchema: (0, schemaStructure_1.getDetailedSchemaStructure)(testSchema),
26
- outputSchema: { type: 'ZodAny' }
27
- };
28
- // Convert the HTTP tool to a Vercel AI Tool
29
- const vercelAITool = (0, convertToVercelTool_1.convertHttpToolToVercelAITool)(httpTool);
30
- // Check if the conversion was successful
31
- expect(vercelAITool.name).toBe('test-optional-default-tool');
32
- expect(vercelAITool.description).toBe('A tool to test optional and default field conversion');
33
- expect(vercelAITool.parameters).toBeInstanceOf(zod_1.z.ZodObject);
34
- // Check if the fields are correctly converted
35
- const schemaShape = vercelAITool.parameters._def.shape();
36
- expect(schemaShape.requiredField).toBeInstanceOf(zod_1.z.ZodString);
37
- expect(schemaShape.optionalString).toBeInstanceOf(zod_1.z.ZodOptional);
38
- expect(schemaShape.optionalBoolean).toBeInstanceOf(zod_1.z.ZodOptional);
39
- // Update for fields with default values
40
- expect(schemaShape.optionalNumberWithDefault).toBeInstanceOf(zod_1.z.ZodDefault);
41
- expect(schemaShape.optionalNumberWithDefault._def.innerType).toBeInstanceOf(zod_1.z.ZodOptional);
42
- expect(schemaShape.optionalNumberWithDefault._def.innerType._def.innerType).toBeInstanceOf(zod_1.z.ZodNumber);
43
- expect(schemaShape.defaultString).toBeInstanceOf(zod_1.z.ZodDefault);
44
- expect(schemaShape.defaultString._def.innerType).toBeInstanceOf(zod_1.z.ZodString);
45
- expect(schemaShape.nestedOptional).toBeInstanceOf(zod_1.z.ZodOptional);
46
- // Check nested fields
47
- const nestedShape = schemaShape.nestedOptional._def.innerType._def.shape();
48
- expect(nestedShape.innerOptional).toBeInstanceOf(zod_1.z.ZodOptional);
49
- expect(nestedShape.innerDefault).toBeInstanceOf(zod_1.z.ZodDefault);
50
- expect(nestedShape.innerDefault._def.innerType).toBeInstanceOf(zod_1.z.ZodNumber);
51
- // Test parsing with the converted schema
52
- const validInput = {
53
- requiredField: 'test',
54
- optionalString: 'optional',
55
- nestedOptional: {
56
- innerOptional: 'nested'
57
- }
58
- };
59
- const parseResult = vercelAITool.parameters.safeParse(validInput);
60
- expect(parseResult.success).toBe(true);
61
- // Test parsing with missing optional fields and check default values
62
- const minimalInput = {
63
- requiredField: 'test'
64
- };
65
- const minimalParseResult = vercelAITool.parameters.safeParse(minimalInput);
66
- expect(minimalParseResult.success).toBe(true);
67
- if (minimalParseResult.success) {
68
- expect(minimalParseResult.data.optionalNumberWithDefault).toBe(42);
69
- expect(minimalParseResult.data.defaultString).toBe('default value');
70
- }
71
- // Test nested default values
72
- const nestedInput = {
73
- requiredField: 'test',
74
- nestedOptional: {}
75
- };
76
- const nestedParseResult = vercelAITool.parameters.safeParse(nestedInput);
77
- expect(nestedParseResult.success).toBe(true);
78
- if (nestedParseResult.success) {
79
- expect(nestedParseResult.data.nestedOptional?.innerDefault).toBe(10);
80
- }
81
- });
82
- });
83
- //# sourceMappingURL=testOptionals.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testOptionals.test.js","sourceRoot":"","sources":["../../src/__tests__/testOptionals.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,98 +0,0 @@
1
- "use strict";
2
- // File: src/__tests__/types.test.ts
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const zod_1 = require("zod");
5
- describe("DAIN Framework Types", () => {
6
- test("AgentInfo type is correctly defined", () => {
7
- const agentInfo = {
8
- agentId: "test-agent",
9
- address: "0x1234567890123456789012345678901234567890",
10
- smartAccountPDA: "1234567890123456789012345678901234567890",
11
- id: "dain_id_1234567890123456789012345678901234567890",
12
- };
13
- expect(agentInfo.agentId).toBe("test-agent");
14
- expect(agentInfo.address).toBe("0x1234567890123456789012345678901234567890");
15
- });
16
- test("PricingInfo type is correctly defined", () => {
17
- const pricingInfo = {
18
- pricePerUse: 0.01,
19
- currency: "USD",
20
- };
21
- expect(pricingInfo.pricePerUse).toBe(0.01);
22
- expect(pricingInfo.currency).toBe("USD");
23
- });
24
- test("ToolConfig type is correctly defined", () => {
25
- const toolConfig = {
26
- id: "get-weather",
27
- name: "Get Weather",
28
- description: "Fetches weather for a city",
29
- input: zod_1.z.object({ city: zod_1.z.string() }),
30
- output: zod_1.z.object({ temperature: zod_1.z.number() }),
31
- pricing: { pricePerUse: 0.01, currency: "USD" },
32
- handler: async (input, agentInfo) => ({
33
- text: `The temperature is 25°C`,
34
- data: { temperature: 25 },
35
- ui: null
36
- }),
37
- };
38
- expect(toolConfig.id).toBe("get-weather");
39
- expect(toolConfig.input.shape.city).toBeInstanceOf(zod_1.z.ZodString);
40
- expect(toolConfig.output.shape.temperature).toBeInstanceOf(zod_1.z.ZodNumber);
41
- });
42
- test("ServiceConfig type is correctly defined", () => {
43
- const serviceConfig = {
44
- id: "weather-service",
45
- name: "Weather Service",
46
- description: "Provides weather information",
47
- metadata: {
48
- capabilities: ["current-weather", "forecast"],
49
- languages: ["en", "es"],
50
- },
51
- recommendedPrompt: "Ask about the weather",
52
- recommendedTools: ["get-weather", "get-forecast"],
53
- };
54
- expect(serviceConfig.id).toBe("weather-service");
55
- expect(serviceConfig.metadata.capabilities).toContain("current-weather");
56
- expect(serviceConfig.recommendedTools).toContain("get-weather");
57
- });
58
- test("ToolboxConfig type is correctly defined", () => {
59
- const toolboxConfig = {
60
- id: "weather-toolbox",
61
- name: "Weather Toolbox",
62
- description: "Collection of weather tools",
63
- tools: ["get-weather", "get-forecast"],
64
- metadata: {
65
- complexity: "Low",
66
- applicableFields: ["Meteorology", "Travel"],
67
- },
68
- recommendedPrompt: "Use these tools for weather-related tasks",
69
- };
70
- expect(toolboxConfig.id).toBe("weather-toolbox");
71
- expect(toolboxConfig.tools).toContain("get-weather");
72
- expect(toolboxConfig.metadata.applicableFields).toContain("Meteorology");
73
- });
74
- test("DAINServiceConfig type is correctly defined", () => {
75
- const serviceConfig = {
76
- metadata: {
77
- title: "Weather Service",
78
- description: "Provides weather information",
79
- version: "1.0.0",
80
- author: "DAIN Developer",
81
- tags: ["weather", "forecast"],
82
- },
83
- identity: {
84
- publicKey: "test-public-key",
85
- agentId: "weather-agent",
86
- orgId: "weather-org",
87
- privateKey: "test-private",
88
- },
89
- services: [],
90
- tools: [],
91
- toolboxes: [],
92
- contexts: [],
93
- };
94
- expect(serviceConfig.metadata.title).toBe("Weather Service");
95
- expect(serviceConfig.identity.agentId).toBe("weather-agent");
96
- });
97
- });
98
- //# sourceMappingURL=types.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../src/__tests__/types.test.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Custom Zod to JSON Schema converter that properly handles Zod v4.1.12
3
- * This replaces the broken zodToJsonSchema from zod-to-json-schema package
4
- */
5
- import { z } from 'zod';
6
- /**
7
- * Converts a Zod schema to JSON Schema format
8
- * Preserves descriptions and properly handles all Zod types
9
- */
10
- export declare function zodToJsonSchemaCustom(schema: z.ZodType<any, any, any>): any;
11
- /**
12
- * Test function to verify the converter works
13
- */
14
- export declare function testZodToJsonSchemaCustom(): any;
@@ -1,203 +0,0 @@
1
- "use strict";
2
- /**
3
- * Custom Zod to JSON Schema converter that properly handles Zod v4.1.12
4
- * This replaces the broken zodToJsonSchema from zod-to-json-schema package
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.zodToJsonSchemaCustom = zodToJsonSchemaCustom;
8
- exports.testZodToJsonSchemaCustom = testZodToJsonSchemaCustom;
9
- const zod_1 = require("zod");
10
- /**
11
- * Converts a Zod schema to JSON Schema format
12
- * Preserves descriptions and properly handles all Zod types
13
- */
14
- function zodToJsonSchemaCustom(schema) {
15
- const def = schema._def;
16
- // Handle different Zod types
17
- switch (def.typeName) {
18
- case 'ZodString': {
19
- const jsonSchema = { type: 'string' };
20
- if (def.description)
21
- jsonSchema.description = def.description;
22
- // Handle string validations
23
- if (def.checks) {
24
- for (const check of def.checks) {
25
- if (check.kind === 'email') {
26
- jsonSchema.format = 'email';
27
- }
28
- else if (check.kind === 'url') {
29
- jsonSchema.format = 'uri';
30
- }
31
- else if (check.kind === 'uuid') {
32
- jsonSchema.format = 'uuid';
33
- }
34
- else if (check.kind === 'min') {
35
- jsonSchema.minLength = check.value;
36
- }
37
- else if (check.kind === 'max') {
38
- jsonSchema.maxLength = check.value;
39
- }
40
- }
41
- }
42
- return jsonSchema;
43
- }
44
- case 'ZodNumber': {
45
- const jsonSchema = { type: 'number' };
46
- if (def.description)
47
- jsonSchema.description = def.description;
48
- if (def.checks) {
49
- for (const check of def.checks) {
50
- if (check.kind === 'min') {
51
- jsonSchema.minimum = check.value;
52
- }
53
- else if (check.kind === 'max') {
54
- jsonSchema.maximum = check.value;
55
- }
56
- else if (check.kind === 'int') {
57
- jsonSchema.type = 'integer';
58
- }
59
- }
60
- }
61
- return jsonSchema;
62
- }
63
- case 'ZodBoolean': {
64
- const jsonSchema = { type: 'boolean' };
65
- if (def.description)
66
- jsonSchema.description = def.description;
67
- return jsonSchema;
68
- }
69
- case 'ZodObject': {
70
- const jsonSchema = {
71
- type: 'object',
72
- properties: {},
73
- required: []
74
- };
75
- if (def.description)
76
- jsonSchema.description = def.description;
77
- // Process each property in the object
78
- const shape = def.shape();
79
- for (const key in shape) {
80
- const fieldSchema = shape[key];
81
- jsonSchema.properties[key] = zodToJsonSchemaCustom(fieldSchema);
82
- // Check if field is required (not optional)
83
- if (!fieldSchema.isOptional()) {
84
- jsonSchema.required.push(key);
85
- }
86
- }
87
- // Remove required array if empty
88
- if (jsonSchema.required.length === 0) {
89
- delete jsonSchema.required;
90
- }
91
- return jsonSchema;
92
- }
93
- case 'ZodArray': {
94
- const jsonSchema = {
95
- type: 'array',
96
- items: zodToJsonSchemaCustom(def.type)
97
- };
98
- if (def.description)
99
- jsonSchema.description = def.description;
100
- if (def.minLength !== null) {
101
- jsonSchema.minItems = def.minLength.value;
102
- }
103
- if (def.maxLength !== null) {
104
- jsonSchema.maxItems = def.maxLength.value;
105
- }
106
- return jsonSchema;
107
- }
108
- case 'ZodEnum': {
109
- const jsonSchema = {
110
- type: 'string',
111
- enum: def.values
112
- };
113
- if (def.description)
114
- jsonSchema.description = def.description;
115
- return jsonSchema;
116
- }
117
- case 'ZodUnion': {
118
- const jsonSchema = {
119
- oneOf: def.options.map((option) => zodToJsonSchemaCustom(option))
120
- };
121
- if (def.description)
122
- jsonSchema.description = def.description;
123
- return jsonSchema;
124
- }
125
- case 'ZodOptional': {
126
- // Unwrap optional and mark as not required in parent
127
- const innerSchema = zodToJsonSchemaCustom(def.innerType);
128
- return innerSchema;
129
- }
130
- case 'ZodNullable': {
131
- const innerSchema = zodToJsonSchemaCustom(def.innerType);
132
- return {
133
- oneOf: [innerSchema, { type: 'null' }]
134
- };
135
- }
136
- case 'ZodRecord': {
137
- const jsonSchema = {
138
- type: 'object',
139
- additionalProperties: zodToJsonSchemaCustom(def.valueType)
140
- };
141
- if (def.description)
142
- jsonSchema.description = def.description;
143
- return jsonSchema;
144
- }
145
- case 'ZodAny': {
146
- const jsonSchema = {};
147
- if (def.description)
148
- jsonSchema.description = def.description;
149
- return jsonSchema;
150
- }
151
- case 'ZodUnknown': {
152
- const jsonSchema = {};
153
- if (def.description)
154
- jsonSchema.description = def.description;
155
- return jsonSchema;
156
- }
157
- case 'ZodLiteral': {
158
- const jsonSchema = {
159
- const: def.value,
160
- type: typeof def.value
161
- };
162
- if (def.description)
163
- jsonSchema.description = def.description;
164
- return jsonSchema;
165
- }
166
- case 'ZodDate': {
167
- const jsonSchema = {
168
- type: 'string',
169
- format: 'date-time'
170
- };
171
- if (def.description)
172
- jsonSchema.description = def.description;
173
- return jsonSchema;
174
- }
175
- default: {
176
- // Fallback for unknown types
177
- console.warn(`Unknown Zod type: ${def.typeName}`);
178
- return { type: 'string' };
179
- }
180
- }
181
- }
182
- /**
183
- * Test function to verify the converter works
184
- */
185
- function testZodToJsonSchemaCustom() {
186
- const testSchema = zod_1.z.object({
187
- to: zod_1.z.string().email().describe("Recipient email address"),
188
- subject: zod_1.z.string().describe("Email subject line"),
189
- body: zod_1.z.string().describe("Email content"),
190
- emailAccount: zod_1.z.string().optional().describe("Specific email account")
191
- });
192
- const result = zodToJsonSchemaCustom(testSchema);
193
- console.log('Test conversion result:', JSON.stringify(result, null, 2));
194
- // Verify structure
195
- if (result.type !== 'object' || !result.properties) {
196
- throw new Error('Conversion failed: not an object schema');
197
- }
198
- if (!result.properties.to?.description) {
199
- throw new Error('Conversion failed: description not preserved');
200
- }
201
- return result;
202
- }
203
- //# sourceMappingURL=zod-json-converter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zod-json-converter.js","sourceRoot":"","sources":["../../src/service/zod-json-converter.ts"],"names":[],"mappings":"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"}