@dainprotocol/service-sdk 1.0.3

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 (55) hide show
  1. package/dist/__tests__/auth.test.d.ts +1 -0
  2. package/dist/__tests__/auth.test.js +110 -0
  3. package/dist/__tests__/auth.test.js.map +1 -0
  4. package/dist/__tests__/convertToVercelTool.test.d.ts +1 -0
  5. package/dist/__tests__/convertToVercelTool.test.js +101 -0
  6. package/dist/__tests__/convertToVercelTool.test.js.map +1 -0
  7. package/dist/__tests__/core.test.d.ts +1 -0
  8. package/dist/__tests__/core.test.js +152 -0
  9. package/dist/__tests__/core.test.js.map +1 -0
  10. package/dist/__tests__/integration.test.d.ts +1 -0
  11. package/dist/__tests__/integration.test.js +180 -0
  12. package/dist/__tests__/integration.test.js.map +1 -0
  13. package/dist/__tests__/types.test.d.ts +1 -0
  14. package/dist/__tests__/types.test.js +95 -0
  15. package/dist/__tests__/types.test.js.map +1 -0
  16. package/dist/client/client-auth.d.ts +20 -0
  17. package/dist/client/client-auth.js +64 -0
  18. package/dist/client/client-auth.js.map +1 -0
  19. package/dist/client/client.d.ts +20 -0
  20. package/dist/client/client.js +122 -0
  21. package/dist/client/client.js.map +1 -0
  22. package/dist/client/index.d.ts +2 -0
  23. package/dist/client/index.js +6 -0
  24. package/dist/client/index.js.map +1 -0
  25. package/dist/client/types.d.ts +146 -0
  26. package/dist/client/types.js +47 -0
  27. package/dist/client/types.js.map +1 -0
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.js +7 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/lib/convertToVercelTool.d.ts +6 -0
  32. package/dist/lib/convertToVercelTool.js +59 -0
  33. package/dist/lib/convertToVercelTool.js.map +1 -0
  34. package/dist/lib/schemaStructure.d.ts +3 -0
  35. package/dist/lib/schemaStructure.js +90 -0
  36. package/dist/lib/schemaStructure.js.map +1 -0
  37. package/dist/service/auth.d.ts +11 -0
  38. package/dist/service/auth.js +104 -0
  39. package/dist/service/auth.js.map +1 -0
  40. package/dist/service/core.d.ts +21 -0
  41. package/dist/service/core.js +116 -0
  42. package/dist/service/core.js.map +1 -0
  43. package/dist/service/index.d.ts +4 -0
  44. package/dist/service/index.js +15 -0
  45. package/dist/service/index.js.map +1 -0
  46. package/dist/service/server.d.ts +3 -0
  47. package/dist/service/server.js +166 -0
  48. package/dist/service/server.js.map +1 -0
  49. package/dist/service/service.d.ts +2 -0
  50. package/dist/service/service.js +118 -0
  51. package/dist/service/service.js.map +1 -0
  52. package/dist/service/types.d.ts +94 -0
  53. package/dist/service/types.js +4 -0
  54. package/dist/service/types.js.map +1 -0
  55. package/package.json +66 -0
@@ -0,0 +1,3 @@
1
+ import { ZodType, ZodTypeDef } from 'zod';
2
+ export declare function getSchemaTypeName(schema: ZodType<any, ZodTypeDef, any>): string;
3
+ export declare function getDetailedSchemaStructure(schema: ZodType<any, ZodTypeDef, any>): any;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ //File: src/lib/schemaStructure.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getSchemaTypeName = getSchemaTypeName;
5
+ exports.getDetailedSchemaStructure = getDetailedSchemaStructure;
6
+ const zod_1 = require("zod");
7
+ function getSchemaTypeName(schema) {
8
+ if (schema instanceof zod_1.z.ZodObject)
9
+ return 'ZodObject';
10
+ if (schema instanceof zod_1.z.ZodString)
11
+ return 'ZodString';
12
+ if (schema instanceof zod_1.z.ZodNumber)
13
+ return 'ZodNumber';
14
+ if (schema instanceof zod_1.z.ZodBoolean)
15
+ return 'ZodBoolean';
16
+ if (schema instanceof zod_1.z.ZodArray)
17
+ return 'ZodArray';
18
+ if (schema instanceof zod_1.z.ZodEnum)
19
+ return 'ZodEnum';
20
+ if (schema instanceof zod_1.z.ZodUnion)
21
+ return 'ZodUnion';
22
+ if (schema instanceof zod_1.z.ZodOptional)
23
+ return 'ZodOptional';
24
+ if (schema instanceof zod_1.z.ZodNullable)
25
+ return 'ZodNullable';
26
+ // Add more type checks as needed
27
+ return 'Unknown';
28
+ }
29
+ function getDetailedSchemaStructure(schema) {
30
+ const typeName = getSchemaTypeName(schema);
31
+ const baseInfo = {
32
+ type: typeName,
33
+ description: schema.description,
34
+ };
35
+ switch (typeName) {
36
+ case 'ZodObject':
37
+ if (schema instanceof zod_1.z.ZodObject) {
38
+ const shape = schema.shape;
39
+ return {
40
+ ...baseInfo,
41
+ shape: Object.fromEntries(Object.entries(shape).map(([key, value]) => [key, getDetailedSchemaStructure(value)])),
42
+ };
43
+ }
44
+ return baseInfo;
45
+ case 'ZodArray':
46
+ if (schema instanceof zod_1.z.ZodArray) {
47
+ return {
48
+ ...baseInfo,
49
+ element: getDetailedSchemaStructure(schema.element),
50
+ };
51
+ }
52
+ return baseInfo;
53
+ case 'ZodEnum':
54
+ if (schema instanceof zod_1.z.ZodEnum) {
55
+ return {
56
+ ...baseInfo,
57
+ values: schema.options,
58
+ };
59
+ }
60
+ return baseInfo;
61
+ case 'ZodUnion':
62
+ if (schema instanceof zod_1.z.ZodUnion) {
63
+ return {
64
+ ...baseInfo,
65
+ options: schema.options.map((option) => getDetailedSchemaStructure(option)),
66
+ };
67
+ }
68
+ return baseInfo;
69
+ case 'ZodOptional':
70
+ if (schema instanceof zod_1.z.ZodOptional) {
71
+ return {
72
+ ...baseInfo,
73
+ innerType: getDetailedSchemaStructure(schema.unwrap()),
74
+ };
75
+ }
76
+ return baseInfo;
77
+ case 'ZodNullable':
78
+ if (schema instanceof zod_1.z.ZodNullable) {
79
+ return {
80
+ ...baseInfo,
81
+ innerType: getDetailedSchemaStructure(schema.unwrap()),
82
+ };
83
+ }
84
+ return baseInfo;
85
+ // Add cases for other Zod types as needed
86
+ default:
87
+ return baseInfo;
88
+ }
89
+ }
90
+ //# sourceMappingURL=schemaStructure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaStructure.js","sourceRoot":"","sources":["../../src/lib/schemaStructure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare function addressToPublicKeyBytes(address: string): Uint8Array;
2
+ export declare function signatureToBytes(signature: string): Uint8Array;
3
+ export declare function verifySignature(signature: string, message: string, address: string): boolean;
4
+ export declare function sanitizeHeaders(headers: Record<string, unknown>): Record<string, string>;
5
+ export declare function signResponse(privateKey: Uint8Array, responseBody: string): {
6
+ signature: string;
7
+ timestamp: string;
8
+ };
9
+ export declare function verifyResponse(publicKey: Uint8Array, responseBody: string, signature: string, timestamp: string): boolean;
10
+ export declare function verifyRequestSignature(signature: string, method: string, path: string, headers: Record<string, string>, body: string, address: string): boolean;
11
+ export declare function isValidSolanaAddress(address: string): boolean;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ // File: src/service/auth.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.addressToPublicKeyBytes = addressToPublicKeyBytes;
5
+ exports.signatureToBytes = signatureToBytes;
6
+ exports.verifySignature = verifySignature;
7
+ exports.sanitizeHeaders = sanitizeHeaders;
8
+ exports.signResponse = signResponse;
9
+ exports.verifyResponse = verifyResponse;
10
+ exports.verifyRequestSignature = verifyRequestSignature;
11
+ exports.isValidSolanaAddress = isValidSolanaAddress;
12
+ const tslib_1 = require("tslib");
13
+ const ed25519_1 = require("@noble/curves/ed25519");
14
+ const sha256_1 = require("@noble/hashes/sha256");
15
+ const utils_1 = require("@noble/hashes/utils");
16
+ const bs58_1 = tslib_1.__importDefault(require("bs58"));
17
+ function addressToPublicKeyBytes(address) {
18
+ try {
19
+ return bs58_1.default.decode(address);
20
+ }
21
+ catch (error) {
22
+ throw new Error("Invalid Solana address format");
23
+ }
24
+ }
25
+ function signatureToBytes(signature) {
26
+ if (!/^[0-9a-fA-F]{128}$/.test(signature)) {
27
+ throw new Error("Invalid signature format");
28
+ }
29
+ return (0, utils_1.hexToBytes)(signature);
30
+ }
31
+ function verifySignature(signature, message, address) {
32
+ try {
33
+ const publicKey = addressToPublicKeyBytes(address);
34
+ const signatureBytes = signatureToBytes(signature);
35
+ const messageHash = (0, sha256_1.sha256)(message);
36
+ return ed25519_1.ed25519.verify(signatureBytes, messageHash, publicKey);
37
+ }
38
+ catch (error) {
39
+ console.log("Signature verification error:", error);
40
+ return false;
41
+ }
42
+ }
43
+ function sanitizeHeaders(headers) {
44
+ const sanitizedHeaders = {};
45
+ for (const [key, value] of Object.entries(headers)) {
46
+ const upperKey = key.toUpperCase();
47
+ if ((upperKey === "CONTENT-TYPE" || upperKey.startsWith("X-")) &&
48
+ typeof value === "string") {
49
+ sanitizedHeaders[upperKey] = value;
50
+ }
51
+ else if ((upperKey === "CONTENT-TYPE" || upperKey.startsWith("X-")) &&
52
+ Array.isArray(value) &&
53
+ value.length > 0) {
54
+ sanitizedHeaders[upperKey] = value.join(", "); // Convert array to comma-separated string
55
+ }
56
+ }
57
+ // Sort headers alphabetically by key
58
+ const sortedSanitizedHeaders = Object.keys(sanitizedHeaders)
59
+ .sort()
60
+ .reduce((acc, key) => {
61
+ acc[key] = sanitizedHeaders[key];
62
+ return acc;
63
+ }, {});
64
+ return sortedSanitizedHeaders;
65
+ }
66
+ function signResponse(privateKey, responseBody) {
67
+ const timestamp = Date.now().toString();
68
+ const messageHash = (0, sha256_1.sha256)((0, utils_1.concatBytes)(new TextEncoder().encode(responseBody), new TextEncoder().encode(timestamp)));
69
+ const signature = ed25519_1.ed25519.sign(messageHash, privateKey);
70
+ return { signature: (0, utils_1.bytesToHex)(signature), timestamp };
71
+ }
72
+ function verifyResponse(publicKey, responseBody, signature, timestamp) {
73
+ try {
74
+ const messageHash = (0, sha256_1.sha256)((0, utils_1.concatBytes)(new TextEncoder().encode(responseBody), new TextEncoder().encode(timestamp)));
75
+ const signatureBytes = (0, utils_1.hexToBytes)(signature);
76
+ return ed25519_1.ed25519.verify(signatureBytes, messageHash, publicKey);
77
+ }
78
+ catch (error) {
79
+ console.error("Response verification error:", error);
80
+ return false;
81
+ }
82
+ }
83
+ function verifyRequestSignature(signature, method, path, headers, body, address) {
84
+ const timestamp = headers["X-DAIN-TIMESTAMP"];
85
+ if (!timestamp) {
86
+ return false;
87
+ }
88
+ // remove x-dain-timestamp from headers
89
+ delete headers["X-DAIN-TIMESTAMP"];
90
+ //delete the signature from headers
91
+ delete headers["X-DAIN-SIGNATURE"];
92
+ const message = `${method.toUpperCase()}:${path}:${timestamp}:${body ? body : "{}"}`;
93
+ return verifySignature(signature, message, address);
94
+ }
95
+ function isValidSolanaAddress(address) {
96
+ try {
97
+ addressToPublicKeyBytes(address);
98
+ return true;
99
+ }
100
+ catch {
101
+ return false;
102
+ }
103
+ }
104
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/service/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { z } from 'zod';
2
+ import { ToolConfig, ServiceConfig, ToolboxConfig, AgentInfo, PricingInfo } from './types';
3
+ export declare function createTool<TInput extends z.ZodType, TOutput extends z.ZodType>(config: ToolConfig<TInput, TOutput>): ToolConfig<TInput, TOutput>;
4
+ export declare function createService(config: ServiceConfig): ServiceConfig;
5
+ export declare function createToolbox(config: ToolboxConfig): ToolboxConfig;
6
+ export declare function validateAgentInfo(agentInfo: AgentInfo): boolean;
7
+ export declare function calculatePrice(pricing: PricingInfo, usageCount: number): number;
8
+ export declare function generateId(prefix: string): string;
9
+ export declare function sanitizeTags(tags: string[]): string[];
10
+ export declare function mergeToolboxes(toolboxes: ToolboxConfig[]): ToolboxConfig;
11
+ export declare function validatePricing(pricing: PricingInfo): boolean;
12
+ export declare function isToolInToolbox(toolId: string, toolbox: ToolboxConfig): boolean;
13
+ export declare const CoreUtils: {
14
+ validateAgentInfo: typeof validateAgentInfo;
15
+ calculatePrice: typeof calculatePrice;
16
+ generateId: typeof generateId;
17
+ sanitizeTags: typeof sanitizeTags;
18
+ mergeToolboxes: typeof mergeToolboxes;
19
+ validatePricing: typeof validatePricing;
20
+ isToolInToolbox: typeof isToolInToolbox;
21
+ };
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ // File: src/service/core.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CoreUtils = void 0;
5
+ exports.createTool = createTool;
6
+ exports.createService = createService;
7
+ exports.createToolbox = createToolbox;
8
+ exports.validateAgentInfo = validateAgentInfo;
9
+ exports.calculatePrice = calculatePrice;
10
+ exports.generateId = generateId;
11
+ exports.sanitizeTags = sanitizeTags;
12
+ exports.mergeToolboxes = mergeToolboxes;
13
+ exports.validatePricing = validatePricing;
14
+ exports.isToolInToolbox = isToolInToolbox;
15
+ function createTool(config) {
16
+ // Validate the config
17
+ if (!config.id || !config.name || !config.description) {
18
+ throw new Error('Tool config is missing required fields');
19
+ }
20
+ // Ensure the handler respects the input and output schemas
21
+ const wrappedHandler = async (input, agentInfo) => {
22
+ const parsedInput = config.input.parse(input);
23
+ const result = await config.handler(parsedInput, agentInfo);
24
+ return {
25
+ text: result.text,
26
+ data: config.output.parse(result.data),
27
+ ui: result.ui,
28
+ };
29
+ };
30
+ return {
31
+ ...config,
32
+ handler: wrappedHandler,
33
+ };
34
+ }
35
+ function createService(config) {
36
+ // Validate the config
37
+ if (!config.id || !config.name || !config.description) {
38
+ throw new Error('Service config is missing required fields');
39
+ }
40
+ // Validate metadata
41
+ if (!config.metadata.capabilities || !config.metadata.languages) {
42
+ throw new Error('Service metadata is incomplete');
43
+ }
44
+ return {
45
+ ...config,
46
+ recommendedTools: config.recommendedTools || [],
47
+ };
48
+ }
49
+ function createToolbox(config) {
50
+ // Validate the config
51
+ if (!config.id || !config.name || !config.description || !config.tools.length) {
52
+ throw new Error('Toolbox config is missing required fields');
53
+ }
54
+ // Validate metadata
55
+ if (!config.metadata.complexity || !config.metadata.applicableFields) {
56
+ throw new Error('Toolbox metadata is incomplete');
57
+ }
58
+ return config;
59
+ }
60
+ // Utility function to validate agent info
61
+ function validateAgentInfo(agentInfo) {
62
+ return !!(agentInfo.agentId && agentInfo.address);
63
+ }
64
+ // Utility function to calculate price for tool usage
65
+ function calculatePrice(pricing, usageCount) {
66
+ return pricing.pricePerUse * usageCount;
67
+ }
68
+ // Utility function to generate a unique ID
69
+ function generateId(prefix) {
70
+ return `${prefix}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
71
+ }
72
+ // Utility function to validate and sanitize metadata tags
73
+ function sanitizeTags(tags) {
74
+ return tags.map(tag => tag.toLowerCase().trim()).filter(Boolean);
75
+ }
76
+ // Utility function to merge toolboxes
77
+ function mergeToolboxes(toolboxes) {
78
+ if (toolboxes.length === 0) {
79
+ throw new Error('No toolboxes provided for merging');
80
+ }
81
+ const mergedTools = new Set();
82
+ const mergedApplicableFields = new Set();
83
+ toolboxes.forEach(toolbox => {
84
+ toolbox.tools.forEach(tool => mergedTools.add(tool));
85
+ toolbox.metadata.applicableFields.forEach(field => mergedApplicableFields.add(field));
86
+ });
87
+ return {
88
+ id: generateId('merged_toolbox'),
89
+ name: 'Merged Toolbox',
90
+ description: 'A toolbox merged from multiple toolboxes',
91
+ tools: Array.from(mergedTools),
92
+ metadata: {
93
+ complexity: 'Mixed',
94
+ applicableFields: Array.from(mergedApplicableFields),
95
+ },
96
+ recommendedPrompt: 'This toolbox contains a variety of tools from multiple domains.',
97
+ };
98
+ }
99
+ // Utility function to validate pricing info
100
+ function validatePricing(pricing) {
101
+ return pricing.pricePerUse >= 0 && !!pricing.currency;
102
+ }
103
+ // Utility function to check if a tool is part of a toolbox
104
+ function isToolInToolbox(toolId, toolbox) {
105
+ return toolbox.tools.includes(toolId);
106
+ }
107
+ exports.CoreUtils = {
108
+ validateAgentInfo,
109
+ calculatePrice,
110
+ generateId,
111
+ sanitizeTags,
112
+ mergeToolboxes,
113
+ validatePricing,
114
+ isToolInToolbox,
115
+ };
116
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/service/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { defineDAINService } from './service';
2
+ export { createTool, createService, createToolbox, CoreUtils } from './core';
3
+ export * from './types';
4
+ export * from './auth';
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ // File: src/service/index.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CoreUtils = exports.createToolbox = exports.createService = exports.createTool = exports.defineDAINService = void 0;
5
+ const tslib_1 = require("tslib");
6
+ var service_1 = require("./service");
7
+ Object.defineProperty(exports, "defineDAINService", { enumerable: true, get: function () { return service_1.defineDAINService; } });
8
+ var core_1 = require("./core");
9
+ Object.defineProperty(exports, "createTool", { enumerable: true, get: function () { return core_1.createTool; } });
10
+ Object.defineProperty(exports, "createService", { enumerable: true, get: function () { return core_1.createService; } });
11
+ Object.defineProperty(exports, "createToolbox", { enumerable: true, get: function () { return core_1.createToolbox; } });
12
+ Object.defineProperty(exports, "CoreUtils", { enumerable: true, get: function () { return core_1.CoreUtils; } });
13
+ tslib_1.__exportStar(require("./types"), exports);
14
+ tslib_1.__exportStar(require("./auth"), exports);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":";AAAA,6BAA6B;;;;AAE7B,qCAA8C;AAArC,4GAAA,iBAAiB,OAAA;AAC1B,+BAA6E;AAApE,kGAAA,UAAU,OAAA;AAAE,qGAAA,aAAa,OAAA;AAAE,qGAAA,aAAa,OAAA;AAAE,iGAAA,SAAS,OAAA;AAC5D,kDAAwB;AACxB,iDAAuB"}
@@ -0,0 +1,3 @@
1
+ import { Hono } from "hono";
2
+ import { DAINServiceConfig, ToolConfig, ServiceConfig, ToolboxConfig, Metadata } from "./types";
3
+ export declare function setupHttpServer(config: DAINServiceConfig, tools: ToolConfig[], services: ServiceConfig[], toolboxes: ToolboxConfig[], metadata: Metadata, privateKey: Uint8Array): Hono;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ // File: src/service/server.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.setupHttpServer = setupHttpServer;
5
+ const hono_1 = require("hono");
6
+ const cors_1 = require("hono/cors");
7
+ const http_exception_1 = require("hono/http-exception");
8
+ const auth_1 = require("./auth");
9
+ const schemaStructure_1 = require("../lib/schemaStructure");
10
+ function setupHttpServer(config, tools, services, toolboxes, metadata, privateKey) {
11
+ const app = new hono_1.Hono();
12
+ // CORS middleware
13
+ app.use("*", (0, cors_1.cors)());
14
+ // Middleware to sign all responses
15
+ app.use("*", async (c, next) => {
16
+ await next();
17
+ const body = await c.res.clone().text();
18
+ const { signature, timestamp } = (0, auth_1.signResponse)(privateKey, body);
19
+ c.res.headers.set("X-DAIN-SIGNATURE", signature);
20
+ c.res.headers.set("X-DAIN-AGENT-ID", config.identity.agentId);
21
+ c.res.headers.set("X-DAIN-ORG-ID", config.identity.orgId);
22
+ c.res.headers.set("X-DAIN-ADDRESS", config.identity.publicKey);
23
+ c.res.headers.set("X-DAIN-TIMESTAMP", timestamp);
24
+ });
25
+ // Middleware for signature verification
26
+ app.use("*", async (c, next) => {
27
+ const signature = c.req.header("X-DAIN-SIGNATURE");
28
+ const address = c.req.header("X-DAIN-ADDRESS");
29
+ const timestamp = c.req.header("X-DAIN-TIMESTAMP");
30
+ console.log({ signature, address, timestamp });
31
+ if (!signature || !address || !timestamp) {
32
+ throw new http_exception_1.HTTPException(401, {
33
+ message: "Missing authentication headers",
34
+ });
35
+ }
36
+ const method = c.req.method;
37
+ const path = c.req.path;
38
+ const headers = (0, auth_1.sanitizeHeaders)(c.req.header());
39
+ const body = await c.req.text();
40
+ if (!(0, auth_1.verifyRequestSignature)(signature, method, path, headers, body, address)) {
41
+ throw new http_exception_1.HTTPException(401, { message: "Invalid signature" });
42
+ }
43
+ await next();
44
+ });
45
+ // Setup default ping route
46
+ app.get("/ping", (c) => c.json({ message: "pong", platform: "DAIN", version: metadata.version }));
47
+ // Metadata endpoint
48
+ app.get("/metadata", (c) => c.json(metadata));
49
+ // Tools list endpoint
50
+ app.get("/tools", (c) => {
51
+ const toolInfo = tools.map((tool) => ({
52
+ id: tool.id,
53
+ name: tool.name,
54
+ description: tool.description,
55
+ pricing: tool.pricing,
56
+ inputSchema: (0, schemaStructure_1.getDetailedSchemaStructure)(tool.input),
57
+ outputSchema: (0, schemaStructure_1.getDetailedSchemaStructure)(tool.output),
58
+ }));
59
+ return c.json(toolInfo);
60
+ });
61
+ // Services list endpoint
62
+ app.get("/services", (c) => {
63
+ const serviceInfo = services.map((service) => ({
64
+ id: service.id,
65
+ name: service.name,
66
+ description: service.description,
67
+ metadata: service.metadata,
68
+ recommendedPrompt: service.recommendedPrompt,
69
+ recommendedTools: service.recommendedTools.map((toolId) => {
70
+ const tool = tools.find((t) => t.id === toolId);
71
+ return tool ? { id: tool.id, name: tool.name } : toolId;
72
+ }),
73
+ }));
74
+ return c.json(serviceInfo);
75
+ });
76
+ // Toolboxes list endpoint
77
+ app.get("/toolboxes", (c) => c.json(toolboxes));
78
+ // Automatically create routes for each tool
79
+ tools.forEach((tool) => {
80
+ app.post(`/tools/${tool.id}`, async (c) => {
81
+ try {
82
+ const agentInfo = {
83
+ agentId: c.req.header("X-DAIN-AGENTID") || "unknown",
84
+ address: c.req.header("X-DAIN-ADDRESS") || "unknown",
85
+ };
86
+ const body = await c.req.json();
87
+ const result = await tool.handler(body, agentInfo);
88
+ return c.json(result);
89
+ }
90
+ catch (error) {
91
+ console.error(`Error executing tool ${tool.id}:`, error);
92
+ throw new http_exception_1.HTTPException(500, { message: "Internal server error" });
93
+ }
94
+ });
95
+ });
96
+ // Detailed info for a specific tool
97
+ app.get("/tools/:toolId", (c) => {
98
+ const tool = tools.find((t) => t.id === c.req.param("toolId"));
99
+ if (tool) {
100
+ const toolDetails = {
101
+ id: tool.id,
102
+ name: tool.name,
103
+ description: tool.description,
104
+ pricing: tool.pricing,
105
+ inputSchema: (0, schemaStructure_1.getDetailedSchemaStructure)(tool.input),
106
+ outputSchema: (0, schemaStructure_1.getDetailedSchemaStructure)(tool.output),
107
+ };
108
+ return c.json(toolDetails);
109
+ }
110
+ else {
111
+ throw new http_exception_1.HTTPException(404, { message: "Tool not found" });
112
+ }
113
+ });
114
+ // Detailed info for a specific service
115
+ app.get("/services/:serviceId", (c) => {
116
+ const service = services.find((s) => s.id === c.req.param("serviceId"));
117
+ if (service) {
118
+ const serviceDetails = {
119
+ id: service.id,
120
+ name: service.name,
121
+ description: service.description,
122
+ metadata: service.metadata,
123
+ recommendedPrompt: service.recommendedPrompt,
124
+ recommendedTools: service.recommendedTools.map((toolId) => {
125
+ const tool = tools.find((t) => t.id === toolId);
126
+ return tool
127
+ ? {
128
+ id: tool.id,
129
+ name: tool.name,
130
+ description: tool.description,
131
+ pricing: tool.pricing,
132
+ inputSchema: (0, schemaStructure_1.getDetailedSchemaStructure)(tool.input),
133
+ outputSchema: (0, schemaStructure_1.getDetailedSchemaStructure)(tool.output),
134
+ }
135
+ : {
136
+ id: toolId,
137
+ name: "Unknown Tool",
138
+ description: "Tool not found",
139
+ };
140
+ }),
141
+ };
142
+ return c.json(serviceDetails);
143
+ }
144
+ else {
145
+ throw new http_exception_1.HTTPException(404, { message: "Service not found" });
146
+ }
147
+ });
148
+ // Detailed info for a specific toolbox
149
+ app.get("/toolboxes/:toolboxId", (c) => {
150
+ const toolbox = toolboxes.find((t) => t.id === c.req.param("toolboxId"));
151
+ if (toolbox) {
152
+ return c.json(toolbox);
153
+ }
154
+ else {
155
+ throw new http_exception_1.HTTPException(404, { message: "Toolbox not found" });
156
+ }
157
+ });
158
+ // Health check endpoint
159
+ app.get("/health", (c) => c.json({ status: "healthy", timestamp: new Date().toISOString() }));
160
+ // Setup custom routes if provided
161
+ if (config.routes) {
162
+ config.routes(app);
163
+ }
164
+ return app;
165
+ }
166
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/service/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { DAINServiceConfig, DAINService } from "./types";
2
+ export declare function defineDAINService(config: DAINServiceConfig): DAINService;