@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,118 @@
1
+ "use strict";
2
+ // File: src/service/service.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.defineDAINService = defineDAINService;
5
+ const tslib_1 = require("tslib");
6
+ const core_1 = require("./core");
7
+ const server_1 = require("./server");
8
+ const bs58_1 = tslib_1.__importDefault(require("bs58"));
9
+ function parseApiKey(apiKey) {
10
+ const parts = apiKey.split('_');
11
+ if (parts.length !== 5 || parts[0] !== 'sk' || parts[1] !== 'agent') {
12
+ throw new Error('Invalid API key format');
13
+ }
14
+ const orgId = parts[2].replace('org_', '');
15
+ const agentId = parts[3].replace('agent_', '');
16
+ const pk = parts[4];
17
+ // first 32 bytes are the private key and second 32 bytes are the public key from the imported key
18
+ const privateKeyBuffer = bs58_1.default.decode(pk);
19
+ const privateKey = privateKeyBuffer.slice(0, 32);
20
+ const publicKey = privateKeyBuffer.slice(32);
21
+ return {
22
+ orgId,
23
+ agentId,
24
+ privateKey: bs58_1.default.encode(privateKey),
25
+ publicKey: bs58_1.default.encode(publicKey), // Assuming the public key is the first 32 bytes
26
+ };
27
+ }
28
+ function defineDAINService(config) {
29
+ let identity;
30
+ if (config.identity.apiKey) {
31
+ identity = parseApiKey(config.identity.apiKey);
32
+ }
33
+ else if (config.identity.publicKey && config.identity.privateKey && config.identity.agentId && config.identity.orgId) {
34
+ identity = {
35
+ ...config.identity,
36
+ agentId: config.identity.agentId.replace('agent_', ''),
37
+ orgId: config.identity.orgId.replace('org_', '')
38
+ };
39
+ }
40
+ else {
41
+ throw new Error('Invalid identity configuration. Provide either an apiKey or all required identity fields.');
42
+ }
43
+ const tools = config.tools.map((toolConfig) => (0, core_1.createTool)(toolConfig));
44
+ const services = config.services.map((serviceConfig) => (0, core_1.createService)(serviceConfig));
45
+ const toolboxes = config.toolboxes.map((toolboxConfig) => (0, core_1.createToolbox)(toolboxConfig));
46
+ // Validate and sanitize metadata
47
+ config.metadata.tags = core_1.CoreUtils.sanitizeTags(config.metadata.tags);
48
+ let app;
49
+ const startWorkers = () => {
50
+ const service = startService();
51
+ console.log(`DAIN Service exported to cloudflare workers with version ${config.metadata.version}`);
52
+ return service.fetch;
53
+ };
54
+ const startNode = async (options = {
55
+ port: 3000,
56
+ }) => {
57
+ const { port } = options;
58
+ const { serve } = await Promise.resolve().then(() => tslib_1.__importStar(require("@hono/node-server")));
59
+ const service = await startService();
60
+ const server = serve({
61
+ fetch: service.fetch,
62
+ port
63
+ });
64
+ console.log(`Server is listening on port ${port} -- Node Environment`);
65
+ console.log(`DAIN Service is running on version ${config.metadata.version}`);
66
+ return {
67
+ address: () => ({ port }),
68
+ shutdown: async () => {
69
+ console.log("Shutting down DAIN service...");
70
+ server.close();
71
+ },
72
+ };
73
+ };
74
+ const startDeno = async (options = {
75
+ port: 8787,
76
+ }) => {
77
+ const service = await startService();
78
+ const { port } = options;
79
+ //@ts-ignore Deno.listen is not yet typed if not in a Deno environment
80
+ const server = Deno.listen({ port });
81
+ console.log(`Server is listening on port ${port} -- Deno Environment`);
82
+ console.log(`DAIN Service is running on version ${config.metadata.version}`);
83
+ return {
84
+ address: () => ({ port }),
85
+ shutdown: async () => {
86
+ console.log("Shutting down DAIN service...");
87
+ server.close();
88
+ },
89
+ };
90
+ };
91
+ const startService = function () {
92
+ const privateKey = bs58_1.default.decode(identity.privateKey);
93
+ app = (0, server_1.setupHttpServer)({ ...config, identity }, tools, services, toolboxes, config.metadata, privateKey);
94
+ return app;
95
+ };
96
+ const getMetadata = () => config.metadata;
97
+ const getServices = () => services;
98
+ const getTools = () => tools;
99
+ const getToolboxes = () => toolboxes;
100
+ const findTool = (toolId) => tools.find((tool) => tool.id === toolId);
101
+ const findToolbox = (toolboxId) => toolboxes.find((toolbox) => toolbox.id === toolboxId);
102
+ const findService = (serviceId) => services.find((service) => service.id === serviceId);
103
+ const dainService = {
104
+ getMetadata,
105
+ getServices,
106
+ getTools,
107
+ getToolboxes,
108
+ findTool,
109
+ findToolbox,
110
+ findService,
111
+ app,
112
+ startNode,
113
+ startDeno,
114
+ startWorkers,
115
+ };
116
+ return dainService;
117
+ }
118
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import { z } from "zod";
2
+ import { ExecutionContext, Hono } from "hono";
3
+ export type AgentInfo = {
4
+ agentId: string;
5
+ address: string;
6
+ };
7
+ export type PricingInfo = {
8
+ pricePerUse: number;
9
+ currency: string;
10
+ };
11
+ export type Metadata = {
12
+ title: string;
13
+ description: string;
14
+ version: string;
15
+ author: string;
16
+ tags: string[];
17
+ };
18
+ export type Identity = {
19
+ publicKey?: string;
20
+ privateKey?: string;
21
+ agentId?: string;
22
+ orgId?: string;
23
+ apiKey?: string;
24
+ };
25
+ export type ToolConfig<TInput extends z.ZodType = z.ZodType, TOutput extends z.ZodType = z.ZodType> = {
26
+ id: string;
27
+ name: string;
28
+ description: string;
29
+ input: TInput;
30
+ output: TOutput;
31
+ pricing: PricingInfo;
32
+ handler: (input: z.infer<TInput>, agentInfo: AgentInfo) => Promise<{
33
+ text: string;
34
+ data: z.infer<TOutput>;
35
+ ui: any | undefined;
36
+ }>;
37
+ };
38
+ export type ServiceConfig = {
39
+ id: string;
40
+ name: string;
41
+ description: string;
42
+ metadata: {
43
+ capabilities: string[];
44
+ languages: string[];
45
+ };
46
+ recommendedPrompt: string;
47
+ recommendedTools: string[];
48
+ };
49
+ export type ToolboxConfig = {
50
+ id: string;
51
+ name: string;
52
+ description: string;
53
+ tools: string[];
54
+ metadata: {
55
+ complexity: string;
56
+ applicableFields: string[];
57
+ };
58
+ recommendedPrompt: string;
59
+ };
60
+ export interface DAINService {
61
+ startNode: (options?: {
62
+ port?: number;
63
+ }) => Promise<ServiceManager>;
64
+ startDeno: (options?: {
65
+ port?: number;
66
+ }) => Promise<ServiceManager>;
67
+ startWorkers: () => (request: Request, Env?: unknown, executionCtx?: ExecutionContext) => Response | Promise<Response>;
68
+ getMetadata: () => Metadata;
69
+ getServices: () => ServiceConfig[];
70
+ getTools: () => ToolConfig[];
71
+ getToolboxes: () => ToolboxConfig[];
72
+ findTool: (toolId: string) => ToolConfig | undefined;
73
+ findToolbox: (toolboxId: string) => ToolboxConfig | undefined;
74
+ findService: (serviceId: string) => ServiceConfig | undefined;
75
+ app: Hono;
76
+ }
77
+ export type DAINServiceConfig = {
78
+ metadata: Metadata;
79
+ identity: Identity;
80
+ services: ServiceConfig[];
81
+ tools: ToolConfig[];
82
+ toolboxes: ToolboxConfig[];
83
+ routes?: (app: Hono) => void;
84
+ };
85
+ export interface ServiceManager {
86
+ shutdown: () => Promise<void>;
87
+ address: () => {
88
+ port: number;
89
+ };
90
+ }
91
+ export interface DAINPlugin {
92
+ initialize: (service: DAINService) => Promise<void>;
93
+ }
94
+ export type ServerEnvironment = "node" | "deno" | "cloudflare" | "custom";
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // File: src/service/types.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/service/types.ts"],"names":[],"mappings":";AAAA,6BAA6B"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@dainprotocol/service-sdk",
3
+ "version": "1.0.3",
4
+ "description": "DAIN Service SDK",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": "./dist/index.js",
9
+ "./client": "./dist/client/index.js",
10
+ "./service": "./dist/service/index.js",
11
+ "./client/*": "./dist/client/*.js",
12
+ "./service/*": "./dist/service/*.js"
13
+ },
14
+ "typesVersions": {
15
+ "*": {
16
+ ".": ["./dist/index.d.ts"],
17
+ "client": ["./dist/client/index.d.ts"],
18
+ "service": ["./dist/service/index.d.ts"],
19
+ "client/*": ["./dist/client/*.d.ts"],
20
+ "service/*": ["./dist/service/*.d.ts"]
21
+ }
22
+ },
23
+ "scripts": {
24
+ "build": "tsc",
25
+ "build:types": "tsc --emitDeclarationOnly",
26
+ "test": "jest",
27
+ "test:watch": "jest --watch",
28
+ "prepublishOnly": "npm run build && npm run build:types"
29
+ },
30
+ "keywords": ["dain", "sdk", "ai"],
31
+ "author": "Ryan",
32
+ "license": "ISC",
33
+ "devDependencies": {
34
+ "@types/express": "^4.17.21",
35
+ "@types/jest": "^29.5.12",
36
+ "jest": "^29.7.0",
37
+ "ts-jest": "^29.1.5",
38
+ "typescript": "^5.0.0"
39
+ },
40
+ "dependencies": {
41
+ "@ai-sdk/anthropic": "^0.0.23",
42
+ "@ai-sdk/openai": "^0.0.33",
43
+ "@hono/node-server": "^1.12.0",
44
+ "@noble/curves": "^1.4.0",
45
+ "@noble/hashes": "^1.4.0",
46
+ "@types/body-parser": "^1.19.5",
47
+ "@types/bs58": "^4.0.4",
48
+ "@types/supertest": "^6.0.2",
49
+ "ai": "^3.2.5",
50
+ "axios": "^1.7.2",
51
+ "body-parser": "^1.20.2",
52
+ "bs58": "^5.0.0",
53
+ "express": "^4.19.2",
54
+ "hono": "^4.4.13",
55
+ "supertest": "^7.0.0",
56
+ "tslib": "^2.6.3",
57
+ "zod": "^3.23.8"
58
+ },
59
+ "files": [
60
+ "dist",
61
+ "README.md"
62
+ ],
63
+ "engines": {
64
+ "node": "20.7.0"
65
+ }
66
+ }