@dainprotocol/service-sdk 2.0.43 → 2.0.44
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/__tests__/api-sdk.test.d.ts +1 -0
- package/dist/__tests__/api-sdk.test.js +102 -0
- package/dist/__tests__/api-sdk.test.js.map +1 -0
- package/dist/__tests__/auth.test.d.ts +1 -0
- package/dist/__tests__/auth.test.js +110 -0
- package/dist/__tests__/auth.test.js.map +1 -0
- package/dist/__tests__/citations-plugin.test.d.ts +1 -0
- package/dist/__tests__/citations-plugin.test.js +491 -0
- package/dist/__tests__/citations-plugin.test.js.map +1 -0
- package/dist/__tests__/context-behavior.test.d.ts +1 -0
- package/dist/__tests__/context-behavior.test.js +290 -0
- package/dist/__tests__/context-behavior.test.js.map +1 -0
- package/dist/__tests__/convertToVercelTool.test.d.ts +1 -0
- package/dist/__tests__/convertToVercelTool.test.js +527 -0
- package/dist/__tests__/convertToVercelTool.test.js.map +1 -0
- package/dist/__tests__/core.test.d.ts +1 -0
- package/dist/__tests__/core.test.js +154 -0
- package/dist/__tests__/core.test.js.map +1 -0
- package/dist/__tests__/crypto-plugin.test.d.ts +1 -0
- package/dist/__tests__/crypto-plugin.test.js +694 -0
- package/dist/__tests__/crypto-plugin.test.js.map +1 -0
- package/dist/__tests__/humanActions.test.d.ts +1 -0
- package/dist/__tests__/humanActions.test.js +221 -0
- package/dist/__tests__/humanActions.test.js.map +1 -0
- package/dist/__tests__/integration.test.d.ts +1 -0
- package/dist/__tests__/integration.test.js +1573 -0
- package/dist/__tests__/integration.test.js.map +1 -0
- package/dist/__tests__/mealMeSchemas.test.d.ts +576 -0
- package/dist/__tests__/mealMeSchemas.test.js +627 -0
- package/dist/__tests__/mealMeSchemas.test.js.map +1 -0
- package/dist/__tests__/oauth-context-simple.test.d.ts +1 -0
- package/dist/__tests__/oauth-context-simple.test.js +90 -0
- package/dist/__tests__/oauth-context-simple.test.js.map +1 -0
- package/dist/__tests__/oauth-context.test.d.ts +1 -0
- package/dist/__tests__/oauth-context.test.js +282 -0
- package/dist/__tests__/oauth-context.test.js.map +1 -0
- package/dist/__tests__/oauth.test.d.ts +1 -0
- package/dist/__tests__/oauth.test.js +378 -0
- package/dist/__tests__/oauth.test.js.map +1 -0
- package/dist/__tests__/oauth2-client-context.test.d.ts +1 -0
- package/dist/__tests__/oauth2-client-context.test.js +165 -0
- package/dist/__tests__/oauth2-client-context.test.js.map +1 -0
- package/dist/__tests__/oauth2-client-integration.test.d.ts +1 -0
- package/dist/__tests__/oauth2-client-integration.test.js +182 -0
- package/dist/__tests__/oauth2-client-integration.test.js.map +1 -0
- package/dist/__tests__/oauth2-client-simple.test.d.ts +1 -0
- package/dist/__tests__/oauth2-client-simple.test.js +144 -0
- package/dist/__tests__/oauth2-client-simple.test.js.map +1 -0
- package/dist/__tests__/oauth2-context.test.d.ts +1 -0
- package/dist/__tests__/oauth2-context.test.js +201 -0
- package/dist/__tests__/oauth2-context.test.js.map +1 -0
- package/dist/__tests__/oauth2-datasource.test.d.ts +1 -0
- package/dist/__tests__/oauth2-datasource.test.js +251 -0
- package/dist/__tests__/oauth2-datasource.test.js.map +1 -0
- package/dist/__tests__/plugin.test.d.ts +1 -0
- package/dist/__tests__/plugin.test.js +900 -0
- package/dist/__tests__/plugin.test.js.map +1 -0
- package/dist/__tests__/processes.test.d.ts +1 -0
- package/dist/__tests__/processes.test.js +239 -0
- package/dist/__tests__/processes.test.js.map +1 -0
- package/dist/__tests__/streaming.test.d.ts +1 -0
- package/dist/__tests__/streaming.test.js +592 -0
- package/dist/__tests__/streaming.test.js.map +1 -0
- package/dist/__tests__/testEnums.d.ts +1 -0
- package/dist/__tests__/testEnums.js +73 -0
- package/dist/__tests__/testEnums.js.map +1 -0
- package/dist/__tests__/testOptionals.test.d.ts +1 -0
- package/dist/__tests__/testOptionals.test.js +83 -0
- package/dist/__tests__/testOptionals.test.js.map +1 -0
- package/dist/__tests__/types.test.d.ts +1 -0
- package/dist/__tests__/types.test.js +98 -0
- package/dist/__tests__/types.test.js.map +1 -0
- package/dist/service/auth.js +27 -19
- package/dist/service/auth.js.map +1 -1
- package/dist/service/server.js +84 -1
- package/dist/service/server.js.map +1 -1
- package/package.json +10 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const api_sdk_1 = require("../client/api-sdk");
|
|
5
|
+
const client_auth_1 = require("../client/client-auth");
|
|
6
|
+
const ed25519_1 = require("@noble/curves/ed25519");
|
|
7
|
+
const bs58_1 = tslib_1.__importDefault(require("bs58"));
|
|
8
|
+
const nodeService_1 = require("../service/nodeService");
|
|
9
|
+
const zod_1 = require("zod");
|
|
10
|
+
describe("DainSDK", () => {
|
|
11
|
+
const privateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
12
|
+
const publicKey = ed25519_1.ed25519.getPublicKey(privateKey);
|
|
13
|
+
const clientPrivateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
14
|
+
const agentAuth = new client_auth_1.DainClientAuth({
|
|
15
|
+
privateKeyBase58: bs58_1.default.encode(clientPrivateKey),
|
|
16
|
+
agentId: "agent-12",
|
|
17
|
+
orgId: "org-12",
|
|
18
|
+
});
|
|
19
|
+
// Create test tools with different schema types
|
|
20
|
+
const simpleTestTool = (0, nodeService_1.createTool)({
|
|
21
|
+
id: "simple-test-tool",
|
|
22
|
+
name: "my-test-tool-name",
|
|
23
|
+
description: "Test tool with simple types",
|
|
24
|
+
input: zod_1.z.object({
|
|
25
|
+
stringParam: zod_1.z.string().describe("A string parameter"),
|
|
26
|
+
numberParam: zod_1.z.number().describe("A number parameter"),
|
|
27
|
+
booleanParam: zod_1.z.boolean().describe("A boolean parameter"),
|
|
28
|
+
optionalParam: zod_1.z.string().optional().describe("An optional parameter"),
|
|
29
|
+
enumParam: zod_1.z.enum(["option1", "option2", "option3"]).describe("An enum parameter"),
|
|
30
|
+
}),
|
|
31
|
+
output: zod_1.z.object({ result: zod_1.z.string() }),
|
|
32
|
+
pricing: { pricePerUse: 0.01, currency: "USD" },
|
|
33
|
+
handler: async ({ stringParam }) => ({
|
|
34
|
+
text: `Processed: ${stringParam}`,
|
|
35
|
+
data: { result: `Processed: ${stringParam}` },
|
|
36
|
+
ui: null,
|
|
37
|
+
}),
|
|
38
|
+
});
|
|
39
|
+
const complexTestTool = (0, nodeService_1.createTool)({
|
|
40
|
+
id: "complex-test-tool",
|
|
41
|
+
name: "complex-tool-name",
|
|
42
|
+
description: "Test tool with complex types",
|
|
43
|
+
input: zod_1.z.object({
|
|
44
|
+
arrayParam: zod_1.z.array(zod_1.z.string()).describe("Array of strings"),
|
|
45
|
+
objectParam: zod_1.z.object({
|
|
46
|
+
nested: zod_1.z.number(),
|
|
47
|
+
deeplyNested: zod_1.z.object({
|
|
48
|
+
value: zod_1.z.boolean(),
|
|
49
|
+
}),
|
|
50
|
+
}).describe("Nested object"),
|
|
51
|
+
unionParam: zod_1.z.union([
|
|
52
|
+
zod_1.z.string(),
|
|
53
|
+
zod_1.z.number(),
|
|
54
|
+
]).describe("String or number"),
|
|
55
|
+
recordParam: zod_1.z.record(zod_1.z.string(), zod_1.z.number()).describe("Record of numbers"),
|
|
56
|
+
defaultParam: zod_1.z.string().default("default value"),
|
|
57
|
+
}),
|
|
58
|
+
output: zod_1.z.object({ result: zod_1.z.string() }),
|
|
59
|
+
pricing: { pricePerUse: 0.01, currency: "USD" },
|
|
60
|
+
handler: async () => ({
|
|
61
|
+
text: "Processed complex input",
|
|
62
|
+
data: { result: "Processed complex input" },
|
|
63
|
+
ui: null,
|
|
64
|
+
}),
|
|
65
|
+
});
|
|
66
|
+
// Create test service with both tools
|
|
67
|
+
const dainService = (0, nodeService_1.defineDAINService)({
|
|
68
|
+
metadata: {
|
|
69
|
+
title: "Test DAIN Service",
|
|
70
|
+
description: "A test DAIN service",
|
|
71
|
+
version: "1.0.0",
|
|
72
|
+
author: "Test Author",
|
|
73
|
+
tags: ["test"],
|
|
74
|
+
},
|
|
75
|
+
identity: {
|
|
76
|
+
publicKey: bs58_1.default.encode(publicKey),
|
|
77
|
+
agentId: "test-agent",
|
|
78
|
+
orgId: "test-org",
|
|
79
|
+
privateKey: bs58_1.default.encode(privateKey),
|
|
80
|
+
},
|
|
81
|
+
tools: [simpleTestTool, complexTestTool],
|
|
82
|
+
});
|
|
83
|
+
let server;
|
|
84
|
+
let sdk;
|
|
85
|
+
beforeAll(async () => {
|
|
86
|
+
server = await dainService.startNode({ port: 3081 });
|
|
87
|
+
sdk = new api_sdk_1.DainSDK("http://localhost:3081", agentAuth);
|
|
88
|
+
await sdk.initialize();
|
|
89
|
+
});
|
|
90
|
+
afterAll(async () => {
|
|
91
|
+
if (server) {
|
|
92
|
+
await server.shutdown();
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
describe("Docs tests not implemented yet - THIS NEEDS TO BE CREATED", () => {
|
|
96
|
+
it("Docs output- THIS NEEDS TO BE CREATED", async () => {
|
|
97
|
+
const docs = await sdk.getDocumentation();
|
|
98
|
+
expect(docs.length).toBeGreaterThan(0);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=api-sdk.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-sdk.test.js","sourceRoot":"","sources":["../../src/__tests__/api-sdk.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// File: src/__tests__/auth.test.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const client_auth_1 = require("@/client/client-auth");
|
|
6
|
+
const auth_1 = require("../service/auth");
|
|
7
|
+
const ed25519_1 = require("@noble/curves/ed25519");
|
|
8
|
+
const sha256_1 = require("@noble/hashes/sha256");
|
|
9
|
+
const utils_1 = require("@noble/hashes/utils");
|
|
10
|
+
const bs58_1 = tslib_1.__importDefault(require("bs58"));
|
|
11
|
+
describe("Auth Module", () => {
|
|
12
|
+
// Generate a key pair for testing
|
|
13
|
+
const privateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
14
|
+
const publicKey = ed25519_1.ed25519.getPublicKey(privateKey);
|
|
15
|
+
// Convert public key to base58 (Solana address format)
|
|
16
|
+
const address = bs58_1.default.encode(publicKey);
|
|
17
|
+
const clientPrivateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
18
|
+
const clientAddress = bs58_1.default.encode(ed25519_1.ed25519.getPublicKey(clientPrivateKey));
|
|
19
|
+
const agentAuth = new client_auth_1.DainClientAuth({
|
|
20
|
+
privateKeyBase58: bs58_1.default.encode(clientPrivateKey),
|
|
21
|
+
agentId: "agent-12",
|
|
22
|
+
orgId: "org-12",
|
|
23
|
+
});
|
|
24
|
+
test("verifySignature validates correct signatures", () => {
|
|
25
|
+
const message = "Hello, World!";
|
|
26
|
+
const messageHash = (0, sha256_1.sha256)(message);
|
|
27
|
+
const signature = ed25519_1.ed25519.sign(messageHash, privateKey);
|
|
28
|
+
expect((0, auth_1.verifySignature)((0, utils_1.bytesToHex)(signature), message, address)).toBe(true);
|
|
29
|
+
});
|
|
30
|
+
test("verifySignature rejects incorrect signatures", () => {
|
|
31
|
+
const message = "Hello, World!";
|
|
32
|
+
const incorrectMessage = "Hello, World?";
|
|
33
|
+
const messageHash = (0, sha256_1.sha256)(message);
|
|
34
|
+
const signature = ed25519_1.ed25519.sign(messageHash, privateKey);
|
|
35
|
+
expect((0, auth_1.verifySignature)((0, utils_1.bytesToHex)(signature), incorrectMessage, address)).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
test("isValidSolanaAddress correctly validates Solana addresses", () => {
|
|
38
|
+
expect((0, auth_1.isValidSolanaAddress)(address)).toBe(true);
|
|
39
|
+
expect((0, auth_1.isValidSolanaAddress)("invalid_address")).toBe(false);
|
|
40
|
+
});
|
|
41
|
+
test.only("createRequestSignature generates a valid signature", async () => {
|
|
42
|
+
const method = "GET";
|
|
43
|
+
const path = "/api/test";
|
|
44
|
+
const headers = { "content-type": "application/json" };
|
|
45
|
+
const body = "{}";
|
|
46
|
+
const { signature, timestamp } = await agentAuth.signRequest(method, path, body);
|
|
47
|
+
headers["X-DAIN-TIMESTAMP"] = timestamp;
|
|
48
|
+
const verified = (0, auth_1.verifyRequestSignature)(signature, method, path, (0, auth_1.sanitizeHeaders)(headers), body, clientAddress, undefined);
|
|
49
|
+
expect(verified).toBe(true);
|
|
50
|
+
});
|
|
51
|
+
test("verifyRequestSignature validates correct request signatures", async () => {
|
|
52
|
+
const method = "POST";
|
|
53
|
+
const path = "/api/test";
|
|
54
|
+
const headers = { "content-type": "application/json" };
|
|
55
|
+
const body = JSON.stringify({ key: "value" });
|
|
56
|
+
const { signature, timestamp } = await agentAuth.signRequest(method, path, body);
|
|
57
|
+
const validHeaders = { ...headers, "X-DAIN-TIMESTAMP": timestamp };
|
|
58
|
+
expect((0, auth_1.verifyRequestSignature)(signature, method, path, validHeaders, body, clientAddress, undefined)).toBe(true);
|
|
59
|
+
});
|
|
60
|
+
test("verifyRequestSignature rejects incorrect request signatures", async () => {
|
|
61
|
+
const method = "POST";
|
|
62
|
+
const path = "/api/test";
|
|
63
|
+
const headers = { "content-type": "application/json" };
|
|
64
|
+
const body = JSON.stringify({ key: "value" });
|
|
65
|
+
const { signature, timestamp } = await agentAuth.signRequest(method, path, body);
|
|
66
|
+
const invalidHeaders = {
|
|
67
|
+
...headers,
|
|
68
|
+
"X-DAIN-TIMESTAMP": (parseInt(timestamp) + 1).toString(),
|
|
69
|
+
}; // Modifying timestamp
|
|
70
|
+
expect((0, auth_1.verifyRequestSignature)(signature, method, path, invalidHeaders, body, clientAddress, undefined)).toBe(false);
|
|
71
|
+
});
|
|
72
|
+
describe("signResponse and verifyResponse", () => {
|
|
73
|
+
it("should sign a response and verify it successfully", () => {
|
|
74
|
+
const privateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
75
|
+
const publicKey = ed25519_1.ed25519.getPublicKey(privateKey);
|
|
76
|
+
const responseBody = JSON.stringify({ message: "Hello, World!" });
|
|
77
|
+
const { signature, timestamp } = (0, auth_1.signResponse)(privateKey, responseBody);
|
|
78
|
+
const isValid = (0, auth_1.verifyResponse)(publicKey, responseBody, signature, timestamp);
|
|
79
|
+
expect(isValid).toBe(true);
|
|
80
|
+
});
|
|
81
|
+
it("should fail verification with tampered response body", () => {
|
|
82
|
+
const privateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
83
|
+
const publicKey = ed25519_1.ed25519.getPublicKey(privateKey);
|
|
84
|
+
const responseBody = JSON.stringify({ message: "Hello, World!" });
|
|
85
|
+
const { signature, timestamp } = (0, auth_1.signResponse)(privateKey, responseBody);
|
|
86
|
+
const tamperedBody = JSON.stringify({ message: "Tampered message" });
|
|
87
|
+
const isValid = (0, auth_1.verifyResponse)(publicKey, tamperedBody, signature, timestamp);
|
|
88
|
+
expect(isValid).toBe(false);
|
|
89
|
+
});
|
|
90
|
+
it("should fail verification with incorrect public key", () => {
|
|
91
|
+
const privateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
92
|
+
const wrongPrivateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
93
|
+
const wrongPublicKey = ed25519_1.ed25519.getPublicKey(wrongPrivateKey);
|
|
94
|
+
const responseBody = JSON.stringify({ message: "Hello, World!" });
|
|
95
|
+
const { signature, timestamp } = (0, auth_1.signResponse)(privateKey, responseBody);
|
|
96
|
+
const isValid = (0, auth_1.verifyResponse)(wrongPublicKey, responseBody, signature, timestamp);
|
|
97
|
+
expect(isValid).toBe(false);
|
|
98
|
+
});
|
|
99
|
+
it("should fail verification with tampered timestamp", () => {
|
|
100
|
+
const privateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
101
|
+
const publicKey = ed25519_1.ed25519.getPublicKey(privateKey);
|
|
102
|
+
const responseBody = JSON.stringify({ message: "Hello, World!" });
|
|
103
|
+
const { signature, timestamp } = (0, auth_1.signResponse)(privateKey, responseBody);
|
|
104
|
+
const tamperedTimestamp = (parseInt(timestamp) + 1000).toString();
|
|
105
|
+
const isValid = (0, auth_1.verifyResponse)(publicKey, responseBody, signature, tamperedTimestamp);
|
|
106
|
+
expect(isValid).toBe(false);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=auth.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../src/__tests__/auth.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|