@dainprotocol/service-sdk 1.1.48 → 1.2.0
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__/context-behavior.test.js +290 -0
- package/dist/__tests__/context-behavior.test.js.map +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.js +251 -0
- package/dist/__tests__/oauth2-datasource.test.js.map +1 -0
- package/dist/client/client-auth.d.ts +24 -8
- package/dist/client/client-auth.js +103 -16
- package/dist/client/client-auth.js.map +1 -1
- package/dist/service/auth.d.ts +38 -1
- package/dist/service/auth.js +77 -5
- package/dist/service/auth.js.map +1 -1
- package/dist/service/core.js.map +1 -1
- package/dist/service/oauth2.d.ts +3 -2
- package/dist/service/oauth2.js +1 -0
- package/dist/service/oauth2.js.map +1 -1
- package/dist/service/oauth2Manager.d.ts +2 -0
- package/dist/service/oauth2Manager.js +5 -2
- package/dist/service/oauth2Manager.js.map +1 -1
- package/dist/service/server.js +54 -11
- package/dist/service/server.js.map +1 -1
- package/dist/service/types.d.ts +9 -0
- package/package.json +3 -3
- 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.js +0 -282
- package/dist/__tests__/oauth-context.test.js.map +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-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__/{oauth-context-simple.test.d.ts → context-behavior.test.d.ts} +0 -0
- /package/dist/__tests__/{oauth-context.test.d.ts → oauth2-context.test.d.ts} +0 -0
- /package/dist/__tests__/{oauth2-client-context.test.d.ts → oauth2-datasource.test.d.ts} +0 -0
package/dist/service/auth.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// File: src/service/auth.ts
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.verifyJWT = verifyJWT;
|
|
5
|
+
exports.extractBearerToken = extractBearerToken;
|
|
6
|
+
exports.hasRequiredScope = hasRequiredScope;
|
|
4
7
|
exports.addressToPublicKeyBytes = addressToPublicKeyBytes;
|
|
5
8
|
exports.signatureToBytes = signatureToBytes;
|
|
6
9
|
exports.verifySignature = verifySignature;
|
|
@@ -14,6 +17,77 @@ const ed25519_1 = require("@noble/curves/ed25519");
|
|
|
14
17
|
const sha256_1 = require("@noble/hashes/sha256");
|
|
15
18
|
const utils_1 = require("@noble/hashes/utils");
|
|
16
19
|
const bs58_1 = tslib_1.__importDefault(require("bs58"));
|
|
20
|
+
/**
|
|
21
|
+
* Verify JWT token from DAIN ID
|
|
22
|
+
* This should be used with a public key fetched from DAIN ID's JWKS endpoint
|
|
23
|
+
*/
|
|
24
|
+
async function verifyJWT(token, publicKeyOrJWKS) {
|
|
25
|
+
try {
|
|
26
|
+
// In a real implementation, use jsonwebtoken library
|
|
27
|
+
// For now, we'll decode without verification (services should implement proper verification)
|
|
28
|
+
const payload = JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString());
|
|
29
|
+
// Verify issuer
|
|
30
|
+
if (payload.iss !== 'dainid-oauth') {
|
|
31
|
+
return {
|
|
32
|
+
success: false,
|
|
33
|
+
error: 'Invalid issuer',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// Verify expiration
|
|
37
|
+
const now = Math.floor(Date.now() / 1000);
|
|
38
|
+
if (payload.exp && payload.exp < now) {
|
|
39
|
+
return {
|
|
40
|
+
success: false,
|
|
41
|
+
error: 'Token expired',
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// Extract smart account ID
|
|
45
|
+
const smartAccountId = payload.smart_account_id || payload.sub;
|
|
46
|
+
if (!smartAccountId) {
|
|
47
|
+
return {
|
|
48
|
+
success: false,
|
|
49
|
+
error: 'Missing smart_account_id',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
success: true,
|
|
54
|
+
smartAccountId,
|
|
55
|
+
scope: payload.scope || [],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
error: error instanceof Error ? error.message : 'JWT verification failed',
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Extract Bearer token from Authorization header
|
|
67
|
+
*/
|
|
68
|
+
function extractBearerToken(authHeader) {
|
|
69
|
+
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
return authHeader.substring(7);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check if token has required scope
|
|
76
|
+
*/
|
|
77
|
+
function hasRequiredScope(tokenScopes, requiredScope) {
|
|
78
|
+
return (tokenScopes.includes(requiredScope) ||
|
|
79
|
+
tokenScopes.includes('*') ||
|
|
80
|
+
tokenScopes.some((scope) => {
|
|
81
|
+
if (scope.endsWith('.*')) {
|
|
82
|
+
const prefix = scope.slice(0, -2);
|
|
83
|
+
return requiredScope.startsWith(prefix + '.');
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* LEGACY AUTHENTICATION (for service-to-service)
|
|
90
|
+
*/
|
|
17
91
|
function addressToPublicKeyBytes(address) {
|
|
18
92
|
try {
|
|
19
93
|
return bs58_1.default.decode(address);
|
|
@@ -51,10 +125,10 @@ function sanitizeHeaders(headers) {
|
|
|
51
125
|
else if ((upperKey === "CONTENT-TYPE" || upperKey.startsWith("X-")) &&
|
|
52
126
|
Array.isArray(value) &&
|
|
53
127
|
value.length > 0) {
|
|
54
|
-
sanitizedHeaders[upperKey] = value.join(", ");
|
|
128
|
+
sanitizedHeaders[upperKey] = value.join(", ");
|
|
55
129
|
}
|
|
56
130
|
}
|
|
57
|
-
// Sort headers alphabetically
|
|
131
|
+
// Sort headers alphabetically
|
|
58
132
|
const sortedSanitizedHeaders = Object.keys(sanitizedHeaders)
|
|
59
133
|
.sort()
|
|
60
134
|
.reduce((acc, key) => {
|
|
@@ -81,14 +155,12 @@ function verifyResponse(publicKey, responseBody, signature, timestamp) {
|
|
|
81
155
|
}
|
|
82
156
|
}
|
|
83
157
|
function verifyRequestSignature(signature, method, path, headers, body, address, smartAccountPDA) {
|
|
84
|
-
//TODO smartAccountPDA check
|
|
85
158
|
const timestamp = headers["X-DAIN-TIMESTAMP"];
|
|
86
159
|
if (!timestamp) {
|
|
87
160
|
return false;
|
|
88
161
|
}
|
|
89
|
-
//
|
|
162
|
+
// Remove signature headers before verification
|
|
90
163
|
delete headers["X-DAIN-TIMESTAMP"];
|
|
91
|
-
//delete the signature from headers
|
|
92
164
|
delete headers["X-DAIN-SIGNATURE"];
|
|
93
165
|
const message = `${method.toUpperCase()}:${path}:${timestamp}:${body ? body : "{}"}`;
|
|
94
166
|
return verifySignature(signature, message, address);
|
package/dist/service/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/service/auth.ts"],"names":[],"mappings":";AAAA,4BAA4B;;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/service/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/service/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/service/core.ts"],"names":[],"mappings":";AAAA,4BAA4B;;;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/service/core.ts"],"names":[],"mappings":"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"}
|
package/dist/service/oauth2.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OAuth2ProviderConfig } from "./types";
|
|
2
|
-
import { StorageAdapter } from "@dainprotocol/oauth2-token-manager";
|
|
2
|
+
import { StorageAdapter, OAuth2Client } from "@dainprotocol/oauth2-token-manager";
|
|
3
3
|
interface StateData {
|
|
4
4
|
agentId: string;
|
|
5
5
|
provider: string;
|
|
@@ -11,8 +11,9 @@ export declare class OAuth2Handler {
|
|
|
11
11
|
private readonly privateKey;
|
|
12
12
|
/**
|
|
13
13
|
* Method to get the OAuth2Client (not exposed as a property)
|
|
14
|
+
* @returns The OAuth2Client instance
|
|
14
15
|
*/
|
|
15
|
-
getClient():
|
|
16
|
+
getClient(): OAuth2Client;
|
|
16
17
|
constructor(privateKey: string, baseUrl: string, tokenStore?: StorageAdapter);
|
|
17
18
|
registerProvider(name: string, config: OAuth2ProviderConfig): void;
|
|
18
19
|
generateAuthUrl(provider: string, agentId: string): Promise<string>;
|
package/dist/service/oauth2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2.js","sourceRoot":"","sources":["../../src/service/oauth2.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAChD,+CAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"oauth2.js","sourceRoot":"","sources":["../../src/service/oauth2.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAChD,+CAAoD;AACpD,6EAA0G;AAS1G,MAAa,aAAa;IAChB,OAAO,CAAgB;IACd,UAAU,CAAS;IAEpC;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,YAAY,UAAkB,EAAE,OAAe,EAAE,UAA2B;QAC1E,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,uDAAuD;QACvD,MAAM,OAAO,GAAG,UAAU,IAAI,IAAI,6CAAsB,EAAE,CAAC;QAE3D,IAAI,CAAC,OAAO,GAAG,IAAI,6BAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,MAA4B;QACzD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,OAAe;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,KAAa;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,OAAe;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,OAAe;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe;QAKhC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1D,IAAI;YACJ,MAAM,EAAE;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,aAAa,EAAE,MAAM,CAAC,aAAa;aACpC;YACD,SAAS,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC;SAC5D,CAAC,CAAC,CACJ,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,WAAW,CAAC,IAAe;QAC/B,OAAO,MAAM,IAAA,uBAAQ,EAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,OAAO,MAAM,IAAA,yBAAU,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAChE,CAAC;CACF;AAxED,sCAwEC"}
|
|
@@ -26,6 +26,7 @@ export declare class OAuth2Manager {
|
|
|
26
26
|
hasValidTokens(provider: string, agentId: string): Promise<boolean>;
|
|
27
27
|
/**
|
|
28
28
|
* Get tokens for an agent and provider
|
|
29
|
+
* @returns The OAuth2 tokens or null if not found
|
|
29
30
|
*/
|
|
30
31
|
getTokens(provider: string, agentId: string): Promise<OAuth2Tokens | null>;
|
|
31
32
|
/**
|
|
@@ -43,6 +44,7 @@ export declare class OAuth2Manager {
|
|
|
43
44
|
/**
|
|
44
45
|
* Get all accounts (tokens) for a user and provider with auto-refresh
|
|
45
46
|
* This method ensures expired tokens are refreshed before returning
|
|
47
|
+
* @returns Array of stored tokens for the user and provider
|
|
46
48
|
*/
|
|
47
49
|
getAccounts(provider: string, agentId: string): Promise<StoredToken[]>;
|
|
48
50
|
}
|
|
@@ -87,6 +87,7 @@ class OAuth2Manager {
|
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
89
|
* Get tokens for an agent and provider
|
|
90
|
+
* @returns The OAuth2 tokens or null if not found
|
|
90
91
|
*/
|
|
91
92
|
async getTokens(provider, agentId) {
|
|
92
93
|
try {
|
|
@@ -125,15 +126,17 @@ class OAuth2Manager {
|
|
|
125
126
|
/**
|
|
126
127
|
* Get all accounts (tokens) for a user and provider with auto-refresh
|
|
127
128
|
* This method ensures expired tokens are refreshed before returning
|
|
129
|
+
* @returns Array of stored tokens for the user and provider
|
|
128
130
|
*/
|
|
129
131
|
async getAccounts(provider, agentId) {
|
|
130
132
|
try {
|
|
131
133
|
// First, try to refresh any expired tokens
|
|
132
134
|
// The queryTokens method in OAuth2Client will handle auto-refresh
|
|
133
|
-
const
|
|
135
|
+
const query = {
|
|
134
136
|
userId: agentId,
|
|
135
137
|
provider: provider
|
|
136
|
-
}
|
|
138
|
+
};
|
|
139
|
+
const tokens = await this.client.queryTokens(query);
|
|
137
140
|
return tokens;
|
|
138
141
|
}
|
|
139
142
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2Manager.js","sourceRoot":"","sources":["../../src/service/oauth2Manager.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"oauth2Manager.js","sourceRoot":"","sources":["../../src/service/oauth2Manager.ts"],"names":[],"mappings":"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"}
|
package/dist/service/server.js
CHANGED
|
@@ -119,25 +119,46 @@ function setupHttpServer(config, tools, services, toolboxes, metadata, privateKe
|
|
|
119
119
|
c.res.headers.set("X-DAIN-ADDRESS", config.identity.publicKey);
|
|
120
120
|
c.res.headers.set("X-DAIN-TIMESTAMP", timestamp);
|
|
121
121
|
});
|
|
122
|
-
// Middleware for
|
|
122
|
+
// Middleware for authentication - supports both JWT and Legacy
|
|
123
123
|
app.use("*", async (c, next) => {
|
|
124
124
|
// Skip auth check for OAuth callback routes and addons
|
|
125
125
|
if (c.req.path.startsWith("/oauth2/callback/") || c.req.path.startsWith("/addons")) {
|
|
126
126
|
await next();
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
129
|
-
// Skip
|
|
129
|
+
// Skip auth check for ping endpoint
|
|
130
130
|
if (c.req.path.startsWith("/ping")) {
|
|
131
131
|
await next();
|
|
132
132
|
return;
|
|
133
133
|
}
|
|
134
|
+
const authHeader = c.req.header("Authorization");
|
|
135
|
+
const jwtToken = (0, auth_1.extractBearerToken)(authHeader);
|
|
136
|
+
// Try JWT authentication first (for users)
|
|
137
|
+
if (jwtToken) {
|
|
138
|
+
const result = await (0, auth_1.verifyJWT)(jwtToken, null); // TODO: Pass JWKS public key
|
|
139
|
+
if (!result.success) {
|
|
140
|
+
throw new http_exception_1.HTTPException(401, {
|
|
141
|
+
message: `JWT authentication failed: ${result.error}`,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
// Store auth info in context for later use
|
|
145
|
+
c.set('authMethod', 'jwt');
|
|
146
|
+
c.set('smartAccountId', result.smartAccountId);
|
|
147
|
+
c.set('scope', result.scope);
|
|
148
|
+
await next();
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// Fall back to legacy authentication (for services)
|
|
134
152
|
const signature = c.req.header("X-DAIN-SIGNATURE");
|
|
135
153
|
const address = c.req.header("X-DAIN-ADDRESS");
|
|
136
154
|
const timestamp = c.req.header("X-DAIN-TIMESTAMP");
|
|
137
155
|
const smartAccountPDA = c.req.header("X-DAIN-SMART-ACCOUNT-PDA");
|
|
138
156
|
if (!signature || !address || !timestamp) {
|
|
139
157
|
throw new http_exception_1.HTTPException(401, {
|
|
140
|
-
message: "Missing authentication
|
|
158
|
+
message: "Missing authentication. Provide either:\n" +
|
|
159
|
+
" - Authorization: Bearer <JWT> (for users)\n" +
|
|
160
|
+
" - X-DAIN-SIGNATURE, X-DAIN-ADDRESS, X-DAIN-TIMESTAMP (for services)\n\n" +
|
|
161
|
+
"TIP: You should not be visiting this page directly.",
|
|
141
162
|
});
|
|
142
163
|
}
|
|
143
164
|
const method = c.req.method;
|
|
@@ -147,9 +168,28 @@ function setupHttpServer(config, tools, services, toolboxes, metadata, privateKe
|
|
|
147
168
|
if (!(0, auth_1.verifyRequestSignature)(signature, method, path, headers, body, address, smartAccountPDA)) {
|
|
148
169
|
throw new http_exception_1.HTTPException(401, { message: "Invalid signature" });
|
|
149
170
|
}
|
|
171
|
+
// Store auth info in context for later use
|
|
172
|
+
c.set('authMethod', 'legacy');
|
|
173
|
+
c.set('agentId', c.req.header("X-DAIN-AGENT-ID"));
|
|
174
|
+
c.set('address', address);
|
|
175
|
+
c.set('smartAccountPDA', smartAccountPDA);
|
|
150
176
|
await next();
|
|
151
177
|
});
|
|
152
178
|
async function getAgentInfo(c) {
|
|
179
|
+
const authMethod = c.get('authMethod');
|
|
180
|
+
if (authMethod === 'jwt') {
|
|
181
|
+
// JWT authentication (users)
|
|
182
|
+
const smartAccountId = c.get('smartAccountId');
|
|
183
|
+
const webhookUrl = c.req.header("X-DAIN-WEBHOOK-URL");
|
|
184
|
+
return {
|
|
185
|
+
agentId: smartAccountId, // Use smartAccountId as agentId for JWT users
|
|
186
|
+
address: undefined,
|
|
187
|
+
smartAccountPDA: smartAccountId, // Smart Account ID from JWT
|
|
188
|
+
id: `smart_account_${smartAccountId}`,
|
|
189
|
+
webhookUrl: webhookUrl,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// Legacy authentication (services)
|
|
153
193
|
const smartAccountPDA = c.req.header("X-DAIN-SMART-ACCOUNT-PDA");
|
|
154
194
|
const address = c.req.header("X-DAIN-ADDRESS");
|
|
155
195
|
const agentId = c.req.header("X-DAIN-AGENT-ID");
|
|
@@ -217,8 +257,9 @@ function setupHttpServer(config, tools, services, toolboxes, metadata, privateKe
|
|
|
217
257
|
}
|
|
218
258
|
// Process plugins for the request
|
|
219
259
|
const processedPluginData = await processPluginsForRequest(body, agentInfo);
|
|
220
|
-
// Get
|
|
260
|
+
// Get oauth2 client if available
|
|
221
261
|
const oauth2Client = app.oauth2 ? app.oauth2.getClient() : undefined;
|
|
262
|
+
// Get context data with plugins and oauth2Client
|
|
222
263
|
const contextData = await context.getContextData(agentInfo, {
|
|
223
264
|
plugins: processedPluginData.plugins,
|
|
224
265
|
oauth2Client: oauth2Client
|
|
@@ -251,8 +292,9 @@ function setupHttpServer(config, tools, services, toolboxes, metadata, privateKe
|
|
|
251
292
|
}
|
|
252
293
|
// Process plugins for the request
|
|
253
294
|
const processedPluginData = await processPluginsForRequest(body, agentInfo);
|
|
254
|
-
// Get
|
|
295
|
+
// Get oauth2 client if available
|
|
255
296
|
const oauth2Client = app.oauth2 ? app.oauth2.getClient() : undefined;
|
|
297
|
+
// Get all contexts with plugins and oauth2Client
|
|
256
298
|
const contextsFull = await Promise.all(contexts.map(async (context) => ({
|
|
257
299
|
id: context.id,
|
|
258
300
|
name: context.name,
|
|
@@ -510,9 +552,12 @@ function setupHttpServer(config, tools, services, toolboxes, metadata, privateKe
|
|
|
510
552
|
delete params.plugins;
|
|
511
553
|
try {
|
|
512
554
|
const parsedParams = datasource.input.parse(params);
|
|
513
|
-
// Get
|
|
555
|
+
// Get oauth2 client if available
|
|
556
|
+
const oauth2Client = app.oauth2 ? app.oauth2.getClient() : undefined;
|
|
557
|
+
// Get datasource with plugins and oauth2Client
|
|
514
558
|
const data = await datasource.getDatasource(agentInfo, parsedParams, {
|
|
515
|
-
plugins: pluginsData
|
|
559
|
+
plugins: pluginsData,
|
|
560
|
+
oauth2Client: oauth2Client
|
|
516
561
|
});
|
|
517
562
|
// Create the response
|
|
518
563
|
const response = {
|
|
@@ -1040,7 +1085,6 @@ function setupHttpServer(config, tools, services, toolboxes, metadata, privateKe
|
|
|
1040
1085
|
console.log(`Tool ${tool.id} execution completed, gathering contexts`);
|
|
1041
1086
|
// Gather contexts with proper error handling
|
|
1042
1087
|
let contextsNow = [];
|
|
1043
|
-
const oauth2Client = app.oauth2 ? app.oauth2.getClient() : undefined;
|
|
1044
1088
|
try {
|
|
1045
1089
|
const contextPromises = contexts.map(async (context) => {
|
|
1046
1090
|
try {
|
|
@@ -1050,7 +1094,7 @@ function setupHttpServer(config, tools, services, toolboxes, metadata, privateKe
|
|
|
1050
1094
|
description: context.description,
|
|
1051
1095
|
data: await context.getContextData(agentInfo, {
|
|
1052
1096
|
plugins: pluginsData,
|
|
1053
|
-
oauth2Client:
|
|
1097
|
+
oauth2Client: app.oauth2 ? app.oauth2.getClient() : undefined
|
|
1054
1098
|
}),
|
|
1055
1099
|
};
|
|
1056
1100
|
}
|
|
@@ -1160,14 +1204,13 @@ function setupHttpServer(config, tools, services, toolboxes, metadata, privateKe
|
|
|
1160
1204
|
if (withContext) {
|
|
1161
1205
|
try {
|
|
1162
1206
|
// Get contexts
|
|
1163
|
-
const oauth2Client = app.oauth2 ? app.oauth2.getClient() : undefined;
|
|
1164
1207
|
let contextsNow = await Promise.all(contexts.map(async (context) => ({
|
|
1165
1208
|
id: context.id,
|
|
1166
1209
|
name: context.name,
|
|
1167
1210
|
description: context.description,
|
|
1168
1211
|
data: await context.getContextData(agentInfo, {
|
|
1169
1212
|
plugins: pluginsData,
|
|
1170
|
-
oauth2Client:
|
|
1213
|
+
oauth2Client: app.oauth2 ? app.oauth2.getClient() : undefined
|
|
1171
1214
|
}),
|
|
1172
1215
|
})));
|
|
1173
1216
|
// Create the complete response with context
|