@slashfi/agents-sdk 0.4.0 → 0.6.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/{auth.d.ts → agent-definitions/auth.d.ts} +36 -2
- package/dist/agent-definitions/auth.d.ts.map +1 -0
- package/dist/{auth.js → agent-definitions/auth.js} +69 -8
- package/dist/agent-definitions/auth.js.map +1 -0
- package/dist/agent-definitions/integrations.d.ts +162 -0
- package/dist/agent-definitions/integrations.d.ts.map +1 -0
- package/dist/agent-definitions/integrations.js +861 -0
- package/dist/agent-definitions/integrations.js.map +1 -0
- package/dist/agent-definitions/secrets.d.ts +51 -0
- package/dist/agent-definitions/secrets.d.ts.map +1 -0
- package/dist/agent-definitions/secrets.js +165 -0
- package/dist/agent-definitions/secrets.js.map +1 -0
- package/dist/agent-definitions/users.d.ts +80 -0
- package/dist/agent-definitions/users.d.ts.map +1 -0
- package/dist/agent-definitions/users.js +397 -0
- package/dist/agent-definitions/users.js.map +1 -0
- package/dist/crypto.d.ts +14 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +40 -0
- package/dist/crypto.js.map +1 -0
- package/dist/define.d.ts +6 -1
- package/dist/define.d.ts.map +1 -1
- package/dist/define.js +1 -0
- package/dist/define.js.map +1 -1
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/jwt.d.ts +2 -0
- package/dist/jwt.d.ts.map +1 -1
- package/dist/jwt.js.map +1 -1
- package/dist/server.d.ts +28 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +478 -27
- package/dist/server.js.map +1 -1
- package/dist/slack-oauth.d.ts +27 -0
- package/dist/slack-oauth.d.ts.map +1 -0
- package/dist/slack-oauth.js +48 -0
- package/dist/slack-oauth.js.map +1 -0
- package/dist/types.d.ts +66 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/web-pages.d.ts +8 -0
- package/dist/web-pages.d.ts.map +1 -0
- package/dist/web-pages.js +169 -0
- package/dist/web-pages.js.map +1 -0
- package/package.json +2 -1
- package/src/{auth.ts → agent-definitions/auth.ts} +134 -15
- package/src/agent-definitions/integrations.ts +1209 -0
- package/src/agent-definitions/secrets.ts +241 -0
- package/src/agent-definitions/users.ts +533 -0
- package/src/crypto.ts +71 -0
- package/src/define.ts +8 -0
- package/src/index.ts +62 -4
- package/src/jwt.ts +9 -5
- package/src/server.ts +567 -35
- package/src/slack-oauth.ts +66 -0
- package/src/types.ts +83 -0
- package/src/web-pages.ts +178 -0
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js.map +0 -1
- package/dist/secrets.d.ts +0 -44
- package/dist/secrets.d.ts.map +0 -1
- package/dist/secrets.js +0 -106
- package/dist/secrets.js.map +0 -1
- package/src/secrets.ts +0 -154
|
@@ -23,10 +23,11 @@
|
|
|
23
23
|
* await server.start();
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
|
-
import type { AgentDefinition } from "
|
|
26
|
+
import type { AgentDefinition } from "../types.js";
|
|
27
27
|
/** Registered client */
|
|
28
28
|
export interface AuthClient {
|
|
29
29
|
clientId: string;
|
|
30
|
+
tenantId?: string;
|
|
30
31
|
clientSecretHash: string;
|
|
31
32
|
name: string;
|
|
32
33
|
scopes: string[];
|
|
@@ -53,9 +54,25 @@ export interface AuthIdentity {
|
|
|
53
54
|
* Pluggable storage for auth state.
|
|
54
55
|
* Implement this interface to use Postgres, Redis, SQLite, etc.
|
|
55
56
|
*/
|
|
57
|
+
/**
|
|
58
|
+
* Tenant - organizational unit for multi-tenant isolation.
|
|
59
|
+
*/
|
|
60
|
+
export interface AuthTenant {
|
|
61
|
+
id: string;
|
|
62
|
+
name: string;
|
|
63
|
+
createdAt: number;
|
|
64
|
+
}
|
|
56
65
|
export interface AuthStore {
|
|
66
|
+
/** Create a tenant. */
|
|
67
|
+
createTenant(name: string): Promise<{
|
|
68
|
+
tenantId: string;
|
|
69
|
+
}>;
|
|
70
|
+
/** Get tenant by ID. */
|
|
71
|
+
getTenant(tenantId: string): Promise<AuthTenant | null>;
|
|
72
|
+
/** List tenants. */
|
|
73
|
+
listTenants(): Promise<AuthTenant[]>;
|
|
57
74
|
/** Create a new client. Returns the raw (unhashed) secret. */
|
|
58
|
-
createClient(name: string, scopes: string[], selfRegistered?: boolean): Promise<{
|
|
75
|
+
createClient(name: string, scopes: string[], selfRegistered?: boolean, tenantId?: string): Promise<{
|
|
59
76
|
clientId: string;
|
|
60
77
|
clientSecret: string;
|
|
61
78
|
}>;
|
|
@@ -77,6 +94,23 @@ export interface AuthStore {
|
|
|
77
94
|
validateToken(tokenString: string): Promise<AuthToken | null>;
|
|
78
95
|
/** Revoke a specific token. */
|
|
79
96
|
revokeToken(tokenString: string): Promise<boolean>;
|
|
97
|
+
/** Register a user under a tenant. Returns a refresh token. */
|
|
98
|
+
registerUser?(tenantId: string, userId: string, clientId: string): Promise<{
|
|
99
|
+
refreshToken: string;
|
|
100
|
+
}>;
|
|
101
|
+
/** Validate a refresh token. Returns user info. */
|
|
102
|
+
validateRefreshToken?(refreshToken: string): Promise<{
|
|
103
|
+
tenantId: string;
|
|
104
|
+
userId: string;
|
|
105
|
+
clientId: string;
|
|
106
|
+
} | null>;
|
|
107
|
+
/** Rotate a refresh token. */
|
|
108
|
+
rotateRefreshToken?(oldToken: string): Promise<{
|
|
109
|
+
refreshToken: string;
|
|
110
|
+
tenantId: string;
|
|
111
|
+
userId: string;
|
|
112
|
+
clientId: string;
|
|
113
|
+
} | null>;
|
|
80
114
|
}
|
|
81
115
|
/**
|
|
82
116
|
* Create an in-memory auth store.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/agent-definitions/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
* await server.start();
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
|
-
import { defineAgent, defineTool } from "
|
|
27
|
-
import { signJwt } from "
|
|
26
|
+
import { defineAgent, defineTool } from "../define.js";
|
|
27
|
+
import { signJwt } from "../jwt.js";
|
|
28
28
|
// ============================================
|
|
29
29
|
// In-Memory Auth Store
|
|
30
30
|
// ============================================
|
|
@@ -58,15 +58,28 @@ async function hashSecret(secret) {
|
|
|
58
58
|
* Suitable for development and testing. Use a persistent store for production.
|
|
59
59
|
*/
|
|
60
60
|
export function createMemoryAuthStore() {
|
|
61
|
+
const tenants = new Map();
|
|
61
62
|
const clients = new Map();
|
|
62
63
|
const tokens = new Map();
|
|
63
64
|
return {
|
|
64
|
-
async
|
|
65
|
+
async createTenant(name) {
|
|
66
|
+
const id = `tenant_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
|
|
67
|
+
tenants.set(id, { id, name, createdAt: Date.now() });
|
|
68
|
+
return { tenantId: id };
|
|
69
|
+
},
|
|
70
|
+
async getTenant(tenantId) {
|
|
71
|
+
return tenants.get(tenantId) ?? null;
|
|
72
|
+
},
|
|
73
|
+
async listTenants() {
|
|
74
|
+
return Array.from(tenants.values());
|
|
75
|
+
},
|
|
76
|
+
async createClient(name, scopes, selfRegistered, tenantId) {
|
|
65
77
|
const clientId = generateId("ag_");
|
|
66
78
|
const clientSecret = generateSecret();
|
|
67
79
|
const secretHash = await hashSecret(clientSecret);
|
|
68
80
|
clients.set(clientId, {
|
|
69
81
|
clientId,
|
|
82
|
+
tenantId,
|
|
70
83
|
clientSecretHash: secretHash,
|
|
71
84
|
name,
|
|
72
85
|
scopes,
|
|
@@ -103,7 +116,9 @@ export function createMemoryAuthStore() {
|
|
|
103
116
|
return null;
|
|
104
117
|
const clientSecret = generateSecret();
|
|
105
118
|
client.clientSecretHash = await hashSecret(clientSecret);
|
|
106
|
-
return {
|
|
119
|
+
return {
|
|
120
|
+
clientSecret: { $agent_type: "secret", value: clientSecret },
|
|
121
|
+
};
|
|
107
122
|
},
|
|
108
123
|
async storeToken(token) {
|
|
109
124
|
tokens.set(token.token, token);
|
|
@@ -135,6 +150,22 @@ export function createMemoryAuthStore() {
|
|
|
135
150
|
export function createAuthAgent(options) {
|
|
136
151
|
const { rootKey, allowRegistration = false, registrationScopes, tokenTtl = 3600, store = createMemoryAuthStore(), } = options;
|
|
137
152
|
// --- Public Tools ---
|
|
153
|
+
const createTenantTool = defineTool({
|
|
154
|
+
name: "create_tenant",
|
|
155
|
+
description: "Create a new tenant (organizational unit). All clients and resources are scoped to a tenant.",
|
|
156
|
+
visibility: "public",
|
|
157
|
+
inputSchema: {
|
|
158
|
+
type: "object",
|
|
159
|
+
properties: {
|
|
160
|
+
name: { type: "string", description: "Tenant name" },
|
|
161
|
+
},
|
|
162
|
+
required: ["name"],
|
|
163
|
+
},
|
|
164
|
+
execute: async (input) => {
|
|
165
|
+
const result = await store.createTenant(input.name);
|
|
166
|
+
return { tenantId: result.tenantId, name: input.name };
|
|
167
|
+
},
|
|
168
|
+
});
|
|
138
169
|
const tokenTool = defineTool({
|
|
139
170
|
name: "token",
|
|
140
171
|
description: "Exchange client credentials for an access token (OAuth2 client_credentials grant)",
|
|
@@ -153,8 +184,32 @@ export function createAuthAgent(options) {
|
|
|
153
184
|
required: ["grantType", "clientId", "clientSecret"],
|
|
154
185
|
},
|
|
155
186
|
execute: async (input) => {
|
|
187
|
+
if (input.grantType === "refresh_token") {
|
|
188
|
+
if (!input.refreshToken)
|
|
189
|
+
throw new Error("refreshToken is required for refresh_token grant");
|
|
190
|
+
if (!store.rotateRefreshToken)
|
|
191
|
+
throw new Error("Refresh tokens not supported by this store");
|
|
192
|
+
const result = await store.rotateRefreshToken(input.refreshToken);
|
|
193
|
+
if (!result)
|
|
194
|
+
throw new Error("Invalid or expired refresh token");
|
|
195
|
+
const now = Math.floor(Date.now() / 1000);
|
|
196
|
+
const jwt = await signJwt({
|
|
197
|
+
sub: result.clientId,
|
|
198
|
+
name: result.userId,
|
|
199
|
+
tenantId: result.tenantId,
|
|
200
|
+
scopes: [],
|
|
201
|
+
iat: now,
|
|
202
|
+
exp: now + tokenTtl,
|
|
203
|
+
}, (await store.getClient(result.clientId))?.clientSecretHash ?? "");
|
|
204
|
+
return {
|
|
205
|
+
accessToken: { $agent_type: "secret", value: jwt },
|
|
206
|
+
refreshToken: { $agent_type: "secret", value: result.refreshToken },
|
|
207
|
+
tokenType: "bearer",
|
|
208
|
+
expiresIn: tokenTtl,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
156
211
|
if (input.grantType !== "client_credentials") {
|
|
157
|
-
throw new Error("Unsupported grant type. Use 'client_credentials'.");
|
|
212
|
+
throw new Error("Unsupported grant type. Use 'client_credentials' or 'refresh_token'.");
|
|
158
213
|
}
|
|
159
214
|
const client = await store.validateClient(input.clientId, input.clientSecret);
|
|
160
215
|
if (!client) {
|
|
@@ -164,12 +219,13 @@ export function createAuthAgent(options) {
|
|
|
164
219
|
const jwt = await signJwt({
|
|
165
220
|
sub: client.clientId,
|
|
166
221
|
name: client.name,
|
|
222
|
+
tenantId: client.tenantId,
|
|
167
223
|
scopes: client.scopes,
|
|
168
224
|
iat: now,
|
|
169
225
|
exp: now + tokenTtl,
|
|
170
226
|
}, client.clientSecretHash);
|
|
171
227
|
return {
|
|
172
|
-
accessToken: jwt,
|
|
228
|
+
accessToken: { $agent_type: "secret", value: jwt },
|
|
173
229
|
tokenType: "bearer",
|
|
174
230
|
expiresIn: tokenTtl,
|
|
175
231
|
scopes: client.scopes,
|
|
@@ -213,8 +269,12 @@ export function createAuthAgent(options) {
|
|
|
213
269
|
if (registrationScopes && registrationScopes.length > 0) {
|
|
214
270
|
scopes = scopes.filter((s) => registrationScopes.includes(s));
|
|
215
271
|
}
|
|
216
|
-
const { clientId, clientSecret } = await store.createClient(input.name, scopes, true);
|
|
217
|
-
return {
|
|
272
|
+
const { clientId, clientSecret } = await store.createClient(input.name, scopes, true, input.tenantId);
|
|
273
|
+
return {
|
|
274
|
+
clientId,
|
|
275
|
+
clientSecret: { $agent_type: "secret", value: clientSecret },
|
|
276
|
+
scopes,
|
|
277
|
+
};
|
|
218
278
|
},
|
|
219
279
|
});
|
|
220
280
|
// --- Private Tools (root key only) ---
|
|
@@ -293,6 +353,7 @@ export function createAuthAgent(options) {
|
|
|
293
353
|
});
|
|
294
354
|
// --- Assemble tools ---
|
|
295
355
|
const tools = [
|
|
356
|
+
createTenantTool,
|
|
296
357
|
tokenTool,
|
|
297
358
|
whoamiTool,
|
|
298
359
|
...(allowRegistration ? [registerTool] : []),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/agent-definitions/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integrations Agent (@integrations)
|
|
3
|
+
*
|
|
4
|
+
* Built-in agent for managing third-party API integrations.
|
|
5
|
+
* Provides OAuth2 flows, provider config management, and API calling.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Provider config management (setup/list/get)
|
|
9
|
+
* - OAuth2 authorization code flow (connect)
|
|
10
|
+
* - API calling with auto-injected auth (REST + GraphQL)
|
|
11
|
+
* - Agent-registry type for agent-to-agent federation
|
|
12
|
+
* - Pluggable IntegrationStore interface
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { createAgentRegistry, createIntegrationsAgent } from '@slashfi/agents-sdk';
|
|
17
|
+
*
|
|
18
|
+
* const registry = createAgentRegistry();
|
|
19
|
+
* registry.register(createIntegrationsAgent({
|
|
20
|
+
* store: myIntegrationStore,
|
|
21
|
+
* callbackBaseUrl: 'https://myapp.com/integrations/callback',
|
|
22
|
+
* }));
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import type { AgentDefinition } from "../types.js";
|
|
26
|
+
export type TokenContentType = "application/x-www-form-urlencoded" | "application/json";
|
|
27
|
+
export type ClientAuthMethod = "client_secret_post" | "client_secret_basic";
|
|
28
|
+
/**
|
|
29
|
+
* OAuth configuration for a provider.
|
|
30
|
+
* Describes how to obtain and refresh access tokens.
|
|
31
|
+
*/
|
|
32
|
+
export interface IntegrationOAuthConfig {
|
|
33
|
+
authUrl: string;
|
|
34
|
+
tokenUrl: string;
|
|
35
|
+
scopes: string[];
|
|
36
|
+
scopeSeparator?: string;
|
|
37
|
+
/** How to send client credentials during token exchange */
|
|
38
|
+
clientAuthMethod: ClientAuthMethod;
|
|
39
|
+
tokenContentType: TokenContentType;
|
|
40
|
+
tokenGrantType?: string;
|
|
41
|
+
tokenBodyParams?: string[];
|
|
42
|
+
tokenHeaders?: Record<string, string>;
|
|
43
|
+
/** Extra params appended to the authorization URL */
|
|
44
|
+
authUrlExtraParams?: Record<string, string>;
|
|
45
|
+
/** Field names in the token response */
|
|
46
|
+
accessTokenField?: string;
|
|
47
|
+
refreshTokenField?: string;
|
|
48
|
+
expiresInField?: string;
|
|
49
|
+
tokenTypeField?: string;
|
|
50
|
+
/** Refresh token config (falls back to token config if not set) */
|
|
51
|
+
refreshUrl?: string;
|
|
52
|
+
refreshClientAuthMethod?: ClientAuthMethod;
|
|
53
|
+
refreshContentType?: TokenContentType;
|
|
54
|
+
refreshGrantType?: string;
|
|
55
|
+
refreshBodyParams?: string[];
|
|
56
|
+
refreshHeaders?: Record<string, string>;
|
|
57
|
+
}
|
|
58
|
+
export interface IntegrationApiAuthConfig {
|
|
59
|
+
type: "bearer" | "basic" | "header";
|
|
60
|
+
headerName?: string;
|
|
61
|
+
prefix?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface IntegrationApiConfig {
|
|
64
|
+
baseUrl: string;
|
|
65
|
+
docsUrl?: string;
|
|
66
|
+
defaultHeaders?: Record<string, string>;
|
|
67
|
+
auth: IntegrationApiAuthConfig;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Full provider configuration tying OAuth + API together.
|
|
71
|
+
*/
|
|
72
|
+
export interface ProviderConfig {
|
|
73
|
+
id: string;
|
|
74
|
+
name: string;
|
|
75
|
+
type: "rest" | "graphql" | "agent-registry";
|
|
76
|
+
/**
|
|
77
|
+
* Scope of the integration:
|
|
78
|
+
* - 'user': per-user tokens (Slack, Notion, Linear)
|
|
79
|
+
* - 'tenant': shared org-wide token (Datadog, AWS)
|
|
80
|
+
*/
|
|
81
|
+
scope?: "user" | "tenant";
|
|
82
|
+
docs?: {
|
|
83
|
+
llmsTxt?: string;
|
|
84
|
+
human?: string[];
|
|
85
|
+
};
|
|
86
|
+
auth?: IntegrationOAuthConfig;
|
|
87
|
+
api: IntegrationApiConfig;
|
|
88
|
+
}
|
|
89
|
+
export interface RestCallInput {
|
|
90
|
+
provider: string;
|
|
91
|
+
type: "rest";
|
|
92
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
93
|
+
path: string;
|
|
94
|
+
body?: Record<string, unknown>;
|
|
95
|
+
query?: Record<string, string>;
|
|
96
|
+
}
|
|
97
|
+
export interface GraphqlCallInput {
|
|
98
|
+
provider: string;
|
|
99
|
+
type: "graphql";
|
|
100
|
+
query: string;
|
|
101
|
+
variables?: Record<string, unknown>;
|
|
102
|
+
}
|
|
103
|
+
export interface AgentRegistryCallInput {
|
|
104
|
+
provider: string;
|
|
105
|
+
type: "agent-registry";
|
|
106
|
+
agent: string;
|
|
107
|
+
tool: string;
|
|
108
|
+
params?: Record<string, unknown>;
|
|
109
|
+
}
|
|
110
|
+
export type IntegrationCallInput = RestCallInput | GraphqlCallInput | AgentRegistryCallInput;
|
|
111
|
+
export interface UserConnection {
|
|
112
|
+
userId: string;
|
|
113
|
+
providerId: string;
|
|
114
|
+
accessToken: string;
|
|
115
|
+
refreshToken?: string;
|
|
116
|
+
expiresAt?: number;
|
|
117
|
+
tokenType?: string;
|
|
118
|
+
scopes?: string[];
|
|
119
|
+
connectedAt: number;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Pluggable storage backend for integrations.
|
|
123
|
+
* Implement this to use Postgres, VCS, file system, etc.
|
|
124
|
+
*/
|
|
125
|
+
export interface IntegrationStore {
|
|
126
|
+
getProvider(providerId: string): Promise<ProviderConfig | null>;
|
|
127
|
+
listProviders(): Promise<ProviderConfig[]>;
|
|
128
|
+
upsertProvider(config: ProviderConfig): Promise<void>;
|
|
129
|
+
deleteProvider(providerId: string): Promise<boolean>;
|
|
130
|
+
getConnection(userId: string, providerId: string): Promise<UserConnection | null>;
|
|
131
|
+
listConnections(userId: string): Promise<UserConnection[]>;
|
|
132
|
+
upsertConnection(connection: UserConnection): Promise<void>;
|
|
133
|
+
deleteConnection(userId: string, providerId: string): Promise<boolean>;
|
|
134
|
+
}
|
|
135
|
+
export declare function createInMemoryIntegrationStore(): IntegrationStore;
|
|
136
|
+
export declare function getDefaultTokenBodyParams(method: ClientAuthMethod): string[];
|
|
137
|
+
export declare function getDefaultRefreshBodyParams(method: ClientAuthMethod): string[];
|
|
138
|
+
export interface TokenExchangeResult {
|
|
139
|
+
accessToken: string;
|
|
140
|
+
refreshToken?: string;
|
|
141
|
+
expiresIn?: number;
|
|
142
|
+
tokenType?: string;
|
|
143
|
+
}
|
|
144
|
+
export declare function exchangeCodeForToken(config: ProviderConfig, code: string, redirectUri: string, clientId: string, clientSecret: string): Promise<TokenExchangeResult>;
|
|
145
|
+
export declare function refreshAccessToken(config: ProviderConfig, refreshToken: string, clientId: string, clientSecret: string): Promise<TokenExchangeResult>;
|
|
146
|
+
export interface IntegrationsAgentOptions {
|
|
147
|
+
/** Integration store backend */
|
|
148
|
+
store: IntegrationStore;
|
|
149
|
+
/** Secret store for storing/resolving client credentials and tokens */
|
|
150
|
+
secretStore: {
|
|
151
|
+
store(value: string, ownerId: string): Promise<string>;
|
|
152
|
+
resolve(id: string, ownerId: string): Promise<string | null>;
|
|
153
|
+
delete(id: string, ownerId: string): Promise<boolean>;
|
|
154
|
+
};
|
|
155
|
+
/**
|
|
156
|
+
* Base URL for OAuth callbacks.
|
|
157
|
+
* The callback URL will be: `${callbackBaseUrl}/${providerId}`
|
|
158
|
+
*/
|
|
159
|
+
callbackBaseUrl?: string;
|
|
160
|
+
}
|
|
161
|
+
export declare function createIntegrationsAgent(options: IntegrationsAgentOptions): AgentDefinition;
|
|
162
|
+
//# sourceMappingURL=integrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/agent-definitions/integrations.ts"],"names":[],"mappings":"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"}
|