@dainprotocol/service-sdk 2.0.66 → 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.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/service/index.d.ts +4 -2
- package/dist/service/index.js +7 -1
- package/dist/service/index.js.map +1 -1
- package/dist/service/nodeService.d.ts +4 -2
- package/dist/service/nodeService.js +7 -1
- package/dist/service/nodeService.js.map +1 -1
- package/dist/service/oauth2Manager.js +3 -2
- package/dist/service/oauth2Manager.js.map +1 -1
- package/dist/service/server.js +81 -9
- package/dist/service/server.js.map +1 -1
- package/dist/service/service.js +3 -2
- package/dist/service/service.js.map +1 -1
- package/dist/service/skills.d.ts +80 -0
- package/dist/service/skills.js +102 -0
- package/dist/service/skills.js.map +1 -0
- package/dist/service/trigger-forwarder.d.ts +47 -0
- package/dist/service/trigger-forwarder.js +91 -0
- package/dist/service/trigger-forwarder.js.map +1 -0
- package/dist/service/types.d.ts +4 -0
- package/dist/service/webhooks.d.ts +109 -10
- package/dist/service/webhooks.js +184 -30
- package/dist/service/webhooks.js.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/api-sdk.test.d.ts +0 -1
- package/dist/__tests__/api-sdk.test.js +0 -102
- package/dist/__tests__/api-sdk.test.js.map +0 -1
- package/dist/__tests__/auth.test.d.ts +0 -1
- package/dist/__tests__/auth.test.js +0 -110
- package/dist/__tests__/auth.test.js.map +0 -1
- package/dist/__tests__/citations-plugin.test.d.ts +0 -1
- package/dist/__tests__/citations-plugin.test.js +0 -491
- package/dist/__tests__/citations-plugin.test.js.map +0 -1
- package/dist/__tests__/context-behavior.test.d.ts +0 -1
- package/dist/__tests__/context-behavior.test.js +0 -290
- package/dist/__tests__/context-behavior.test.js.map +0 -1
- package/dist/__tests__/convertToVercelTool.test.d.ts +0 -1
- package/dist/__tests__/convertToVercelTool.test.js +0 -527
- package/dist/__tests__/convertToVercelTool.test.js.map +0 -1
- package/dist/__tests__/core.test.d.ts +0 -1
- package/dist/__tests__/core.test.js +0 -154
- package/dist/__tests__/core.test.js.map +0 -1
- package/dist/__tests__/crypto-plugin.test.d.ts +0 -1
- package/dist/__tests__/crypto-plugin.test.js +0 -694
- package/dist/__tests__/crypto-plugin.test.js.map +0 -1
- package/dist/__tests__/humanActions.test.d.ts +0 -1
- package/dist/__tests__/humanActions.test.js +0 -221
- package/dist/__tests__/humanActions.test.js.map +0 -1
- package/dist/__tests__/integration.test.d.ts +0 -1
- package/dist/__tests__/integration.test.js +0 -1573
- package/dist/__tests__/integration.test.js.map +0 -1
- package/dist/__tests__/mealMeSchemas.test.d.ts +0 -576
- package/dist/__tests__/mealMeSchemas.test.js +0 -627
- package/dist/__tests__/mealMeSchemas.test.js.map +0 -1
- package/dist/__tests__/oauth-context-simple.test.d.ts +0 -1
- package/dist/__tests__/oauth-context-simple.test.js +0 -90
- package/dist/__tests__/oauth-context-simple.test.js.map +0 -1
- package/dist/__tests__/oauth-context.test.d.ts +0 -1
- package/dist/__tests__/oauth-context.test.js +0 -282
- package/dist/__tests__/oauth-context.test.js.map +0 -1
- package/dist/__tests__/oauth.test.d.ts +0 -1
- package/dist/__tests__/oauth.test.js +0 -378
- package/dist/__tests__/oauth.test.js.map +0 -1
- package/dist/__tests__/oauth2-client-context.test.d.ts +0 -1
- package/dist/__tests__/oauth2-client-context.test.js +0 -165
- package/dist/__tests__/oauth2-client-context.test.js.map +0 -1
- package/dist/__tests__/oauth2-client-integration.test.d.ts +0 -1
- package/dist/__tests__/oauth2-client-integration.test.js +0 -182
- package/dist/__tests__/oauth2-client-integration.test.js.map +0 -1
- package/dist/__tests__/oauth2-client-simple.test.d.ts +0 -1
- package/dist/__tests__/oauth2-client-simple.test.js +0 -144
- package/dist/__tests__/oauth2-client-simple.test.js.map +0 -1
- package/dist/__tests__/oauth2-context.test.d.ts +0 -1
- package/dist/__tests__/oauth2-context.test.js +0 -201
- package/dist/__tests__/oauth2-context.test.js.map +0 -1
- package/dist/__tests__/oauth2-datasource.test.d.ts +0 -1
- package/dist/__tests__/oauth2-datasource.test.js +0 -251
- package/dist/__tests__/oauth2-datasource.test.js.map +0 -1
- package/dist/__tests__/plugin.test.d.ts +0 -1
- package/dist/__tests__/plugin.test.js +0 -900
- package/dist/__tests__/plugin.test.js.map +0 -1
- package/dist/__tests__/processes.test.d.ts +0 -1
- package/dist/__tests__/processes.test.js +0 -239
- package/dist/__tests__/processes.test.js.map +0 -1
- package/dist/__tests__/streaming.test.d.ts +0 -1
- package/dist/__tests__/streaming.test.js +0 -592
- package/dist/__tests__/streaming.test.js.map +0 -1
- package/dist/__tests__/testEnums.d.ts +0 -1
- package/dist/__tests__/testEnums.js +0 -73
- package/dist/__tests__/testEnums.js.map +0 -1
- package/dist/__tests__/testOptionals.test.d.ts +0 -1
- package/dist/__tests__/testOptionals.test.js +0 -83
- package/dist/__tests__/testOptionals.test.js.map +0 -1
- package/dist/__tests__/types.test.d.ts +0 -1
- package/dist/__tests__/types.test.js +0 -98
- package/dist/__tests__/types.test.js.map +0 -1
- package/dist/service/zod-json-converter.d.ts +0 -14
- package/dist/service/zod-json-converter.js +0 -203
- package/dist/service/zod-json-converter.js.map +0 -1
|
@@ -1,378 +0,0 @@
|
|
|
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
|
-
const oauth2_token_manager_1 = require("@dainprotocol/oauth2-token-manager");
|
|
11
|
-
const hono_1 = require("hono");
|
|
12
|
-
const node_server_1 = require("@hono/node-server");
|
|
13
|
-
describe("OAuth Integration", () => {
|
|
14
|
-
const privateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
15
|
-
const publicKey = ed25519_1.ed25519.getPublicKey(privateKey);
|
|
16
|
-
const clientPrivateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
17
|
-
const agentAuth = new client_auth_1.DainClientAuth({
|
|
18
|
-
privateKeyBase58: bs58_1.default.encode(clientPrivateKey),
|
|
19
|
-
agentId: "agent-12",
|
|
20
|
-
orgId: "org-12",
|
|
21
|
-
});
|
|
22
|
-
const mockTokenStore = new oauth2_token_manager_1.InMemoryStorageAdapter();
|
|
23
|
-
let oauthServer;
|
|
24
|
-
let oauthSdk;
|
|
25
|
-
let mockOAuthProvider;
|
|
26
|
-
beforeAll(async () => {
|
|
27
|
-
// Create mock OAuth provider server
|
|
28
|
-
const mockOAuthApp = new hono_1.Hono();
|
|
29
|
-
// Add auth endpoint
|
|
30
|
-
mockOAuthApp.get('/auth', (c) => {
|
|
31
|
-
return c.redirect(c.req.query('redirect_uri') +
|
|
32
|
-
'?code=test-code&state=' + c.req.query('state'));
|
|
33
|
-
});
|
|
34
|
-
mockOAuthApp.post('/token', async (c) => {
|
|
35
|
-
const body = await c.req.parseBody();
|
|
36
|
-
// Verify the expected OAuth token request
|
|
37
|
-
if (body.grant_type === 'authorization_code' &&
|
|
38
|
-
body.client_id === 'test-client-id' &&
|
|
39
|
-
body.client_secret === 'test-client-secret' &&
|
|
40
|
-
body.code === 'test-code') {
|
|
41
|
-
return c.json({
|
|
42
|
-
access_token: 'mock_access_token',
|
|
43
|
-
token_type: 'Bearer',
|
|
44
|
-
expires_in: 3600,
|
|
45
|
-
refresh_token: 'mock_refresh_token',
|
|
46
|
-
scope: 'test_scope',
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
return c.json({ error: 'invalid_request' }, 400);
|
|
50
|
-
});
|
|
51
|
-
mockOAuthProvider = (0, node_server_1.serve)({
|
|
52
|
-
fetch: mockOAuthApp.fetch,
|
|
53
|
-
port: 4455
|
|
54
|
-
});
|
|
55
|
-
// Update the OAuth service config to use mock server
|
|
56
|
-
const oauthService = (0, nodeService_1.defineDAINService)({
|
|
57
|
-
metadata: {
|
|
58
|
-
title: "Test OAuth Service",
|
|
59
|
-
description: "A test OAuth service",
|
|
60
|
-
version: "1.0.0",
|
|
61
|
-
author: "Test Author",
|
|
62
|
-
tags: ["test", "oauth"],
|
|
63
|
-
},
|
|
64
|
-
identity: {
|
|
65
|
-
publicKey: bs58_1.default.encode(publicKey),
|
|
66
|
-
agentId: "test-agent",
|
|
67
|
-
orgId: "test-org",
|
|
68
|
-
privateKey: bs58_1.default.encode(privateKey),
|
|
69
|
-
},
|
|
70
|
-
oauth2: {
|
|
71
|
-
baseUrl: "http://localhost:4422",
|
|
72
|
-
tokenStore: mockTokenStore,
|
|
73
|
-
providers: {
|
|
74
|
-
test_provider: {
|
|
75
|
-
clientId: "test-client-id",
|
|
76
|
-
clientSecret: "test-client-secret",
|
|
77
|
-
authorizationUrl: "http://localhost:4455/auth", // Point to mock server
|
|
78
|
-
tokenUrl: "http://localhost:4455/token", // Point to mock server
|
|
79
|
-
scopes: ["test_scope"],
|
|
80
|
-
reason: "Required for testing",
|
|
81
|
-
requiredTools: ["test-oauth-tool"],
|
|
82
|
-
onSuccess: async (agentId, tokens) => {
|
|
83
|
-
console.log("OAuth success", agentId, tokens);
|
|
84
|
-
},
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
tools: [
|
|
89
|
-
(0, nodeService_1.createTool)({
|
|
90
|
-
id: "test-oauth-tool",
|
|
91
|
-
name: "Test OAuth Tool",
|
|
92
|
-
description: "Tool that requires OAuth",
|
|
93
|
-
input: zod_1.z.object({}),
|
|
94
|
-
output: zod_1.z.object({ success: zod_1.z.boolean() }),
|
|
95
|
-
pricing: { pricePerUse: 0.01, currency: "USD" },
|
|
96
|
-
handler: async () => ({
|
|
97
|
-
text: "OAuth test",
|
|
98
|
-
data: { success: true },
|
|
99
|
-
ui: null,
|
|
100
|
-
}),
|
|
101
|
-
}),
|
|
102
|
-
],
|
|
103
|
-
});
|
|
104
|
-
oauthServer = await oauthService.startNode({ port: 4422 });
|
|
105
|
-
oauthSdk = new api_sdk_1.DainSDK("http://localhost:4422", agentAuth);
|
|
106
|
-
await oauthSdk.initialize();
|
|
107
|
-
});
|
|
108
|
-
afterAll(async () => {
|
|
109
|
-
if (oauthServer) {
|
|
110
|
-
await oauthServer.shutdown();
|
|
111
|
-
}
|
|
112
|
-
if (mockOAuthProvider) {
|
|
113
|
-
await new Promise((resolve) => {
|
|
114
|
-
mockOAuthProvider.close(() => resolve(undefined));
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
// Give a moment for all connections to close
|
|
118
|
-
await new Promise(resolve => setTimeout(resolve, 100));
|
|
119
|
-
});
|
|
120
|
-
describe("Provider Management", () => {
|
|
121
|
-
it("should list available OAuth providers", async () => {
|
|
122
|
-
const providers = await oauthSdk.getOAuthProviders();
|
|
123
|
-
expect(providers).toHaveLength(1);
|
|
124
|
-
expect(providers[0].name).toBe("test_provider");
|
|
125
|
-
expect(providers[0].config.reason).toBe("Required for testing");
|
|
126
|
-
expect(providers[0].config.scopes).toEqual(["test_scope"]);
|
|
127
|
-
expect(providers[0].config.requiredTools).toEqual(["test-oauth-tool"]);
|
|
128
|
-
});
|
|
129
|
-
it("should generate OAuth connect URL", async () => {
|
|
130
|
-
const url = await oauthSdk.getOAuthConnectUrl("test_provider");
|
|
131
|
-
expect(url).toContain("http://localhost:4455/auth");
|
|
132
|
-
expect(url).toContain("client_id=test-client-id");
|
|
133
|
-
expect(url).toContain("scope=test_scope");
|
|
134
|
-
});
|
|
135
|
-
it("should throw error for invalid provider", async () => {
|
|
136
|
-
await expect(oauthSdk.getOAuthConnectUrl("invalid_provider"))
|
|
137
|
-
.rejects
|
|
138
|
-
.toThrow();
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
describe("Tool Requirements", () => {
|
|
142
|
-
it("should identify tools requiring OAuth", async () => {
|
|
143
|
-
const requirements = await oauthSdk.getToolOAuthRequirements("test-oauth-tool");
|
|
144
|
-
expect(requirements.required).toBe(true);
|
|
145
|
-
expect(requirements.providers).toHaveLength(1);
|
|
146
|
-
expect(requirements.providers[0].name).toBe("test_provider");
|
|
147
|
-
expect(requirements.providers[0].reason).toBe("Required for testing");
|
|
148
|
-
});
|
|
149
|
-
it("should handle tools without OAuth requirements", async () => {
|
|
150
|
-
const noOAuthTool = (0, nodeService_1.createTool)({
|
|
151
|
-
id: "no-oauth-tool",
|
|
152
|
-
name: "No OAuth Tool",
|
|
153
|
-
description: "Tool that doesn't require OAuth",
|
|
154
|
-
input: zod_1.z.object({}),
|
|
155
|
-
output: zod_1.z.object({}),
|
|
156
|
-
pricing: { pricePerUse: 0.01, currency: "USD" },
|
|
157
|
-
handler: async () => ({
|
|
158
|
-
text: "No OAuth",
|
|
159
|
-
data: {},
|
|
160
|
-
ui: null,
|
|
161
|
-
}),
|
|
162
|
-
});
|
|
163
|
-
const service = (0, nodeService_1.defineDAINService)({
|
|
164
|
-
metadata: {
|
|
165
|
-
title: "Test OAuth Service",
|
|
166
|
-
description: "A test OAuth service",
|
|
167
|
-
version: "1.0.0",
|
|
168
|
-
author: "Test Author",
|
|
169
|
-
tags: ["test", "oauth"],
|
|
170
|
-
},
|
|
171
|
-
identity: {
|
|
172
|
-
publicKey: bs58_1.default.encode(publicKey),
|
|
173
|
-
agentId: "test-agent",
|
|
174
|
-
orgId: "test-org",
|
|
175
|
-
privateKey: bs58_1.default.encode(privateKey),
|
|
176
|
-
},
|
|
177
|
-
oauth2: {
|
|
178
|
-
baseUrl: "http://localhost:4423",
|
|
179
|
-
tokenStore: mockTokenStore,
|
|
180
|
-
providers: {
|
|
181
|
-
test_provider: {
|
|
182
|
-
clientId: "test-client-id",
|
|
183
|
-
clientSecret: "test-client-secret",
|
|
184
|
-
authorizationUrl: "https://test.com/auth",
|
|
185
|
-
tokenUrl: "https://test.com/token",
|
|
186
|
-
scopes: ["test_scope"],
|
|
187
|
-
reason: "Required for testing",
|
|
188
|
-
requiredTools: ["test-oauth-tool"],
|
|
189
|
-
onSuccess: async (agentId, tokens) => {
|
|
190
|
-
console.log("OAuth success", agentId, tokens);
|
|
191
|
-
},
|
|
192
|
-
},
|
|
193
|
-
},
|
|
194
|
-
},
|
|
195
|
-
tools: [(0, nodeService_1.createTool)({
|
|
196
|
-
id: "test-oauth-tool",
|
|
197
|
-
name: "Test OAuth Tool",
|
|
198
|
-
description: "Tool that requires OAuth",
|
|
199
|
-
input: zod_1.z.object({}),
|
|
200
|
-
output: zod_1.z.object({ success: zod_1.z.boolean() }),
|
|
201
|
-
pricing: { pricePerUse: 0.01, currency: "USD" },
|
|
202
|
-
handler: async () => ({
|
|
203
|
-
text: "OAuth test",
|
|
204
|
-
data: { success: true },
|
|
205
|
-
ui: null,
|
|
206
|
-
}),
|
|
207
|
-
}), noOAuthTool],
|
|
208
|
-
});
|
|
209
|
-
const newServer = await service.startNode({ port: 4423 });
|
|
210
|
-
const newSdk = new api_sdk_1.DainSDK("http://localhost:4423", agentAuth);
|
|
211
|
-
await newSdk.initialize();
|
|
212
|
-
const requirements = await newSdk.getToolOAuthRequirements("no-oauth-tool");
|
|
213
|
-
expect(requirements.required).toBe(false);
|
|
214
|
-
expect(requirements.providers).toHaveLength(0);
|
|
215
|
-
await newServer.shutdown();
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
describe("Documentation", () => {
|
|
219
|
-
it("should include OAuth requirements in documentation", async () => {
|
|
220
|
-
const docs = await oauthSdk.getDocumentation();
|
|
221
|
-
expect(docs).toContain("## OAuth Requirements");
|
|
222
|
-
expect(docs).toContain("test_provider");
|
|
223
|
-
expect(docs).toContain("Required for testing");
|
|
224
|
-
expect(docs).toContain("test_scope");
|
|
225
|
-
expect(docs).toContain("**OAuth Requirements:**");
|
|
226
|
-
expect(docs).toContain("test_provider: Required for testing");
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
describe("Token Management", () => {
|
|
230
|
-
it("should check OAuth requirements before executing tool", async () => {
|
|
231
|
-
// @ts-ignore - Accessing generated method
|
|
232
|
-
await expect(oauthSdk.testOauthTool({}))
|
|
233
|
-
.rejects
|
|
234
|
-
.toThrow(/Missing required OAuth connections/);
|
|
235
|
-
});
|
|
236
|
-
it("should handle OAuth flow integration", async () => {
|
|
237
|
-
// This test verifies the integration between the SDK and oauth2-token-manager
|
|
238
|
-
// The actual OAuth flow is handled by the oauth2-token-manager library
|
|
239
|
-
// Get OAuth URL
|
|
240
|
-
const authUrl = await oauthSdk.getOAuthConnectUrl("test_provider");
|
|
241
|
-
expect(authUrl).toContain("http://localhost:4455/auth");
|
|
242
|
-
expect(authUrl).toContain("client_id=test-client-id");
|
|
243
|
-
// Check initial state - should not be connected
|
|
244
|
-
const requirements = await oauthSdk.getToolOAuthRequirements("test-oauth-tool");
|
|
245
|
-
expect(requirements.providers[0].connected).toBe(false);
|
|
246
|
-
// Note: Full OAuth flow testing would require simulating the entire OAuth dance
|
|
247
|
-
// which is already tested in the oauth2-token-manager library
|
|
248
|
-
});
|
|
249
|
-
});
|
|
250
|
-
describe("PKCE and Basic Auth", () => {
|
|
251
|
-
let pkceServer;
|
|
252
|
-
let pkceSdk;
|
|
253
|
-
let pkceMockProvider;
|
|
254
|
-
beforeAll(async () => {
|
|
255
|
-
// Create mock OAuth provider with PKCE support
|
|
256
|
-
const mockPKCEApp = new hono_1.Hono();
|
|
257
|
-
// Add auth endpoint that validates PKCE parameters
|
|
258
|
-
mockPKCEApp.get('/auth', (c) => {
|
|
259
|
-
const codeChallenge = c.req.query('code_challenge');
|
|
260
|
-
const codeChallengeMethod = c.req.query('code_challenge_method');
|
|
261
|
-
// Verify PKCE parameters are present
|
|
262
|
-
if (!codeChallenge || codeChallengeMethod !== 'S256') {
|
|
263
|
-
return c.json({ error: 'invalid_request' }, 400);
|
|
264
|
-
}
|
|
265
|
-
return c.redirect(c.req.query('redirect_uri') +
|
|
266
|
-
'?code=pkce-test-code&state=' + c.req.query('state'));
|
|
267
|
-
});
|
|
268
|
-
// Add token endpoint that validates PKCE code verifier and Basic Auth
|
|
269
|
-
mockPKCEApp.post('/token', async (c) => {
|
|
270
|
-
const authHeader = c.req.header('Authorization');
|
|
271
|
-
const body = await c.req.parseBody();
|
|
272
|
-
// Verify Basic Auth
|
|
273
|
-
const expectedAuth = 'Basic ' + Buffer.from('pkce-client-id:pkce-client-secret').toString('base64');
|
|
274
|
-
if (authHeader !== expectedAuth) {
|
|
275
|
-
return c.json({ error: 'invalid_client' }, 401);
|
|
276
|
-
}
|
|
277
|
-
// Verify PKCE code verifier is present
|
|
278
|
-
if (!body.code_verifier) {
|
|
279
|
-
return c.json({ error: 'invalid_request' }, 400);
|
|
280
|
-
}
|
|
281
|
-
return c.json({
|
|
282
|
-
access_token: 'pkce_access_token',
|
|
283
|
-
token_type: 'Bearer',
|
|
284
|
-
expires_in: 3600,
|
|
285
|
-
refresh_token: 'pkce_refresh_token',
|
|
286
|
-
scope: 'pkce_scope',
|
|
287
|
-
});
|
|
288
|
-
});
|
|
289
|
-
pkceMockProvider = (0, node_server_1.serve)({
|
|
290
|
-
fetch: mockPKCEApp.fetch,
|
|
291
|
-
port: 4456
|
|
292
|
-
});
|
|
293
|
-
const pkcePrivateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
294
|
-
const pkcePublicKey = ed25519_1.ed25519.getPublicKey(pkcePrivateKey);
|
|
295
|
-
// Create service with PKCE and Basic Auth enabled
|
|
296
|
-
const pkceService = (0, nodeService_1.defineDAINService)({
|
|
297
|
-
metadata: {
|
|
298
|
-
title: "PKCE OAuth Test Service",
|
|
299
|
-
description: "Testing PKCE and Basic Auth",
|
|
300
|
-
version: "1.0.0",
|
|
301
|
-
author: "Test Author",
|
|
302
|
-
tags: ["test", "oauth", "pkce"],
|
|
303
|
-
},
|
|
304
|
-
identity: {
|
|
305
|
-
publicKey: bs58_1.default.encode(pkcePublicKey),
|
|
306
|
-
privateKey: bs58_1.default.encode(pkcePrivateKey),
|
|
307
|
-
agentId: "test-agent",
|
|
308
|
-
orgId: "test-org",
|
|
309
|
-
},
|
|
310
|
-
oauth2: {
|
|
311
|
-
baseUrl: "http://localhost:4424",
|
|
312
|
-
tokenStore: new oauth2_token_manager_1.InMemoryStorageAdapter(),
|
|
313
|
-
providers: {
|
|
314
|
-
pkce_provider: {
|
|
315
|
-
clientId: "pkce-client-id",
|
|
316
|
-
clientSecret: "pkce-client-secret",
|
|
317
|
-
authorizationUrl: "http://localhost:4456/auth",
|
|
318
|
-
tokenUrl: "http://localhost:4456/token",
|
|
319
|
-
scopes: ["pkce_scope"],
|
|
320
|
-
reason: "Testing PKCE flow",
|
|
321
|
-
requiredTools: ["pkce-test-tool"],
|
|
322
|
-
usePKCE: true,
|
|
323
|
-
useBasicAuth: true,
|
|
324
|
-
},
|
|
325
|
-
},
|
|
326
|
-
},
|
|
327
|
-
tools: [
|
|
328
|
-
(0, nodeService_1.createTool)({
|
|
329
|
-
id: "pkce-test-tool",
|
|
330
|
-
name: "PKCE Test Tool",
|
|
331
|
-
description: "Tool for testing PKCE flow",
|
|
332
|
-
input: zod_1.z.object({}),
|
|
333
|
-
output: zod_1.z.object({ success: zod_1.z.boolean() }),
|
|
334
|
-
handler: async () => ({
|
|
335
|
-
text: "PKCE test",
|
|
336
|
-
data: { success: true },
|
|
337
|
-
ui: null,
|
|
338
|
-
}),
|
|
339
|
-
}),
|
|
340
|
-
],
|
|
341
|
-
});
|
|
342
|
-
pkceServer = await pkceService.startNode({ port: 4424 });
|
|
343
|
-
pkceSdk = new api_sdk_1.DainSDK("http://localhost:4424", agentAuth);
|
|
344
|
-
await pkceSdk.initialize();
|
|
345
|
-
});
|
|
346
|
-
afterAll(async () => {
|
|
347
|
-
if (pkceServer) {
|
|
348
|
-
await pkceServer.shutdown();
|
|
349
|
-
}
|
|
350
|
-
if (pkceMockProvider) {
|
|
351
|
-
await new Promise((resolve) => {
|
|
352
|
-
pkceMockProvider.close(() => resolve(undefined));
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
// Give a moment for all connections to close
|
|
356
|
-
await new Promise(resolve => setTimeout(resolve, 100));
|
|
357
|
-
});
|
|
358
|
-
it("should generate auth URL with PKCE parameters", async () => {
|
|
359
|
-
const url = await pkceSdk.getOAuthConnectUrl("pkce_provider");
|
|
360
|
-
const urlParams = new URL(url).searchParams;
|
|
361
|
-
expect(urlParams.get('code_challenge')).toBeTruthy();
|
|
362
|
-
expect(urlParams.get('code_challenge_method')).toBe('S256');
|
|
363
|
-
});
|
|
364
|
-
it("should complete PKCE flow with Basic Auth", async () => {
|
|
365
|
-
// This test verifies PKCE parameters are included in the auth URL
|
|
366
|
-
// The actual PKCE flow is handled by the oauth2-token-manager library
|
|
367
|
-
const url = await pkceSdk.getOAuthConnectUrl("pkce_provider");
|
|
368
|
-
const urlParams = new URL(url).searchParams;
|
|
369
|
-
// Verify PKCE parameters are present
|
|
370
|
-
expect(urlParams.get('code_challenge')).toBeTruthy();
|
|
371
|
-
expect(urlParams.get('code_challenge_method')).toBe('S256');
|
|
372
|
-
// Verify initial state - should not be connected
|
|
373
|
-
const requirements = await pkceSdk.getToolOAuthRequirements("pkce-test-tool");
|
|
374
|
-
expect(requirements.providers[0].connected).toBe(false);
|
|
375
|
-
});
|
|
376
|
-
});
|
|
377
|
-
});
|
|
378
|
-
//# sourceMappingURL=oauth.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.test.js","sourceRoot":"","sources":["../../src/__tests__/oauth.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const nodeService_1 = require("../service/nodeService");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const oauth2_token_manager_1 = require("@dainprotocol/oauth2-token-manager");
|
|
7
|
-
const tweetnacl_1 = tslib_1.__importDefault(require("tweetnacl"));
|
|
8
|
-
const bs58_1 = tslib_1.__importDefault(require("bs58"));
|
|
9
|
-
describe("OAuth2Client in Tool Context", () => {
|
|
10
|
-
it("should have oauth2Client available in tool context when OAuth2 is configured", async () => {
|
|
11
|
-
// Generate test keys
|
|
12
|
-
const keyPair = tweetnacl_1.default.sign.keyPair();
|
|
13
|
-
const privateKey = bs58_1.default.encode(new Uint8Array([...keyPair.secretKey.slice(0, 32), ...keyPair.publicKey]));
|
|
14
|
-
let capturedContext = null;
|
|
15
|
-
const service = (0, nodeService_1.defineDAINService)({
|
|
16
|
-
metadata: {
|
|
17
|
-
title: "Test Service",
|
|
18
|
-
description: "Test service with OAuth2",
|
|
19
|
-
version: "1.0.0",
|
|
20
|
-
author: "Test",
|
|
21
|
-
tags: ["test"],
|
|
22
|
-
},
|
|
23
|
-
identity: {
|
|
24
|
-
privateKey: privateKey,
|
|
25
|
-
publicKey: bs58_1.default.encode(keyPair.publicKey),
|
|
26
|
-
agentId: "test-agent",
|
|
27
|
-
orgId: "test-org",
|
|
28
|
-
},
|
|
29
|
-
oauth2: {
|
|
30
|
-
baseUrl: "http://localhost:5555",
|
|
31
|
-
tokenStore: new oauth2_token_manager_1.InMemoryStorageAdapter(),
|
|
32
|
-
providers: {
|
|
33
|
-
google: {
|
|
34
|
-
clientId: "test-client-id",
|
|
35
|
-
clientSecret: "test-client-secret",
|
|
36
|
-
authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth",
|
|
37
|
-
tokenUrl: "https://oauth2.googleapis.com/token",
|
|
38
|
-
scopes: ["profile", "email"],
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
tools: [
|
|
43
|
-
(0, nodeService_1.createTool)({
|
|
44
|
-
id: "test-oauth-context",
|
|
45
|
-
name: "Test OAuth Context",
|
|
46
|
-
description: "Tool to test OAuth2 context",
|
|
47
|
-
input: zod_1.z.object({}),
|
|
48
|
-
output: zod_1.z.object({
|
|
49
|
-
hasOAuth2: zod_1.z.boolean(),
|
|
50
|
-
hasOAuth2Client: zod_1.z.boolean(),
|
|
51
|
-
}),
|
|
52
|
-
handler: async (input, agentInfo, context) => {
|
|
53
|
-
capturedContext = context;
|
|
54
|
-
return {
|
|
55
|
-
text: "Context captured",
|
|
56
|
-
data: {
|
|
57
|
-
hasOAuth2: !!context.oauth2,
|
|
58
|
-
hasOAuth2Client: !!context.oauth2Client,
|
|
59
|
-
},
|
|
60
|
-
ui: null,
|
|
61
|
-
};
|
|
62
|
-
},
|
|
63
|
-
}),
|
|
64
|
-
],
|
|
65
|
-
});
|
|
66
|
-
const manager = await service.startNode({ port: 5555 });
|
|
67
|
-
try {
|
|
68
|
-
// Make a request to the tool
|
|
69
|
-
const response = await fetch("http://localhost:5555/tools/test-oauth-context", {
|
|
70
|
-
method: "POST",
|
|
71
|
-
headers: {
|
|
72
|
-
"Content-Type": "application/json",
|
|
73
|
-
"X-Agent-Id": "test-agent",
|
|
74
|
-
"X-Agent-Address": "test-address",
|
|
75
|
-
},
|
|
76
|
-
body: JSON.stringify({}),
|
|
77
|
-
});
|
|
78
|
-
const result = await response.json();
|
|
79
|
-
// Verify the context has oauth2Client
|
|
80
|
-
expect(capturedContext).toBeTruthy();
|
|
81
|
-
expect(capturedContext.oauth2).toBeTruthy();
|
|
82
|
-
expect(capturedContext.oauth2Client).toBeTruthy();
|
|
83
|
-
// Verify the tool response
|
|
84
|
-
expect(result.data.hasOAuth2).toBe(true);
|
|
85
|
-
expect(result.data.hasOAuth2Client).toBe(true);
|
|
86
|
-
// Verify oauth2Client has the expected methods
|
|
87
|
-
expect(typeof capturedContext.oauth2Client.queryTokens).toBe("function");
|
|
88
|
-
expect(typeof capturedContext.oauth2Client.getValidToken).toBe("function");
|
|
89
|
-
expect(typeof capturedContext.oauth2Client.getAccessToken).toBe("function");
|
|
90
|
-
}
|
|
91
|
-
finally {
|
|
92
|
-
await manager.shutdown();
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
it("should have oauth2Client as undefined when OAuth2 is not configured", async () => {
|
|
96
|
-
// Generate test keys
|
|
97
|
-
const keyPair = tweetnacl_1.default.sign.keyPair();
|
|
98
|
-
const privateKey = bs58_1.default.encode(new Uint8Array([...keyPair.secretKey.slice(0, 32), ...keyPair.publicKey]));
|
|
99
|
-
let capturedContext = null;
|
|
100
|
-
const service = (0, nodeService_1.defineDAINService)({
|
|
101
|
-
metadata: {
|
|
102
|
-
title: "Test Service No OAuth",
|
|
103
|
-
description: "Test service without OAuth2",
|
|
104
|
-
version: "1.0.0",
|
|
105
|
-
author: "Test",
|
|
106
|
-
tags: ["test"],
|
|
107
|
-
},
|
|
108
|
-
identity: {
|
|
109
|
-
privateKey: privateKey,
|
|
110
|
-
publicKey: bs58_1.default.encode(keyPair.publicKey),
|
|
111
|
-
agentId: "test-agent",
|
|
112
|
-
orgId: "test-org",
|
|
113
|
-
},
|
|
114
|
-
// No oauth2 configuration
|
|
115
|
-
tools: [
|
|
116
|
-
(0, nodeService_1.createTool)({
|
|
117
|
-
id: "test-no-oauth-context",
|
|
118
|
-
name: "Test No OAuth Context",
|
|
119
|
-
description: "Tool to test context without OAuth2",
|
|
120
|
-
input: zod_1.z.object({}),
|
|
121
|
-
output: zod_1.z.object({
|
|
122
|
-
hasOAuth2: zod_1.z.boolean(),
|
|
123
|
-
hasOAuth2Client: zod_1.z.boolean(),
|
|
124
|
-
}),
|
|
125
|
-
handler: async (input, agentInfo, context) => {
|
|
126
|
-
capturedContext = context;
|
|
127
|
-
return {
|
|
128
|
-
text: "Context captured",
|
|
129
|
-
data: {
|
|
130
|
-
hasOAuth2: !!context.oauth2,
|
|
131
|
-
hasOAuth2Client: !!context.oauth2Client,
|
|
132
|
-
},
|
|
133
|
-
ui: null,
|
|
134
|
-
};
|
|
135
|
-
},
|
|
136
|
-
}),
|
|
137
|
-
],
|
|
138
|
-
});
|
|
139
|
-
const manager = await service.startNode({ port: 5556 });
|
|
140
|
-
try {
|
|
141
|
-
// Make a request to the tool
|
|
142
|
-
const response = await fetch("http://localhost:5556/tools/test-no-oauth-context", {
|
|
143
|
-
method: "POST",
|
|
144
|
-
headers: {
|
|
145
|
-
"Content-Type": "application/json",
|
|
146
|
-
"X-Agent-Id": "test-agent",
|
|
147
|
-
"X-Agent-Address": "test-address",
|
|
148
|
-
},
|
|
149
|
-
body: JSON.stringify({}),
|
|
150
|
-
});
|
|
151
|
-
const result = await response.json();
|
|
152
|
-
// Verify the context doesn't have oauth2Client
|
|
153
|
-
expect(capturedContext).toBeTruthy();
|
|
154
|
-
expect(capturedContext.oauth2).toBeUndefined();
|
|
155
|
-
expect(capturedContext.oauth2Client).toBeUndefined();
|
|
156
|
-
// Verify the tool response
|
|
157
|
-
expect(result.data.hasOAuth2).toBe(false);
|
|
158
|
-
expect(result.data.hasOAuth2Client).toBe(false);
|
|
159
|
-
}
|
|
160
|
-
finally {
|
|
161
|
-
await manager.shutdown();
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
//# sourceMappingURL=oauth2-client-context.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2-client-context.test.js","sourceRoot":"","sources":["../../src/__tests__/oauth2-client-context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|