@elizaos/plugin-google 2.0.0-beta.1 → 2.0.3-beta.2

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/LICENSE +21 -0
  2. package/README.md +124 -17
  3. package/package.json +21 -4
  4. package/dist/auth.d.ts +0 -9
  5. package/dist/auth.d.ts.map +0 -1
  6. package/dist/auth.js +0 -45
  7. package/dist/auth.js.map +0 -1
  8. package/dist/calendar.d.ts +0 -26
  9. package/dist/calendar.d.ts.map +0 -1
  10. package/dist/calendar.js +0 -237
  11. package/dist/calendar.js.map +0 -1
  12. package/dist/client-factory.d.ts +0 -17
  13. package/dist/client-factory.d.ts.map +0 -1
  14. package/dist/client-factory.js +0 -66
  15. package/dist/client-factory.js.map +0 -1
  16. package/dist/connector-account-provider.d.ts +0 -23
  17. package/dist/connector-account-provider.d.ts.map +0 -1
  18. package/dist/connector-account-provider.js +0 -348
  19. package/dist/connector-account-provider.js.map +0 -1
  20. package/dist/connector-credential-refs.d.ts +0 -43
  21. package/dist/connector-credential-refs.d.ts.map +0 -1
  22. package/dist/connector-credential-refs.js +0 -252
  23. package/dist/connector-credential-refs.js.map +0 -1
  24. package/dist/credential-resolver.d.ts +0 -45
  25. package/dist/credential-resolver.d.ts.map +0 -1
  26. package/dist/credential-resolver.js +0 -525
  27. package/dist/credential-resolver.js.map +0 -1
  28. package/dist/drive.d.ts +0 -41
  29. package/dist/drive.d.ts.map +0 -1
  30. package/dist/drive.js +0 -207
  31. package/dist/drive.js.map +0 -1
  32. package/dist/gmail.d.ts +0 -89
  33. package/dist/gmail.d.ts.map +0 -1
  34. package/dist/gmail.js +0 -765
  35. package/dist/gmail.js.map +0 -1
  36. package/dist/index.d.ts +0 -16
  37. package/dist/index.d.ts.map +0 -1
  38. package/dist/index.js +0 -46
  39. package/dist/index.js.map +0 -1
  40. package/dist/meet.d.ts +0 -61
  41. package/dist/meet.d.ts.map +0 -1
  42. package/dist/meet.js +0 -329
  43. package/dist/meet.js.map +0 -1
  44. package/dist/scopes.d.ts +0 -59
  45. package/dist/scopes.d.ts.map +0 -1
  46. package/dist/scopes.js +0 -142
  47. package/dist/scopes.js.map +0 -1
  48. package/dist/service.d.ts +0 -165
  49. package/dist/service.d.ts.map +0 -1
  50. package/dist/service.js +0 -170
  51. package/dist/service.js.map +0 -1
  52. package/dist/types.d.ts +0 -492
  53. package/dist/types.d.ts.map +0 -1
  54. package/dist/types.js +0 -9
  55. package/dist/types.js.map +0 -1
@@ -1,66 +0,0 @@
1
- import { google, } from "googleapis";
2
- import { MissingGoogleCredentialResolver } from "./auth.js";
3
- import { scopesForGoogleCapabilities } from "./scopes.js";
4
- import { GOOGLE_SERVICE_NAME, } from "./types.js";
5
- function mockGoogleRootUrl() {
6
- const raw = process.env.ELIZA_MOCK_GOOGLE_BASE?.trim();
7
- if (!raw)
8
- return undefined;
9
- try {
10
- const url = new URL(raw);
11
- if (!url.pathname.endsWith("/")) {
12
- url.pathname = `${url.pathname}/`;
13
- }
14
- return url.toString();
15
- }
16
- catch {
17
- return raw.endsWith("/") ? raw : `${raw}/`;
18
- }
19
- }
20
- export class GoogleApiClientFactory {
21
- credentialResolver;
22
- constructor(credentialResolver = new MissingGoogleCredentialResolver()) {
23
- this.credentialResolver = credentialResolver;
24
- }
25
- setCredentialResolver(credentialResolver) {
26
- this.credentialResolver = credentialResolver;
27
- }
28
- async gmail(account, capabilities, reason) {
29
- const auth = await this.resolveAuthClient(account, capabilities, reason);
30
- return google.gmail(this.apiOptions("v1", auth));
31
- }
32
- async calendar(account, capabilities, reason) {
33
- const auth = await this.resolveAuthClient(account, capabilities, reason);
34
- return google.calendar(this.apiOptions("v3", auth));
35
- }
36
- async drive(account, capabilities, reason) {
37
- const auth = await this.resolveAuthClient(account, capabilities, reason);
38
- return google.drive(this.apiOptions("v3", auth));
39
- }
40
- async docs(account, capabilities, reason) {
41
- const auth = await this.resolveAuthClient(account, capabilities, reason);
42
- return google.docs(this.apiOptions("v1", auth));
43
- }
44
- async sheets(account, capabilities, reason) {
45
- const auth = await this.resolveAuthClient(account, capabilities, reason);
46
- return google.sheets(this.apiOptions("v4", auth));
47
- }
48
- async meet(account, capabilities, reason) {
49
- const auth = await this.resolveAuthClient(account, capabilities, reason);
50
- return google.meet(this.apiOptions("v2", auth));
51
- }
52
- apiOptions(version, auth) {
53
- const rootUrl = mockGoogleRootUrl();
54
- return rootUrl ? { version, auth, rootUrl } : { version, auth };
55
- }
56
- async resolveAuthClient(account, capabilities, reason) {
57
- return this.credentialResolver.getAuthClient({
58
- provider: GOOGLE_SERVICE_NAME,
59
- accountId: account.accountId,
60
- capabilities,
61
- scopes: scopesForGoogleCapabilities(capabilities),
62
- reason,
63
- });
64
- }
65
- }
66
- //# sourceMappingURL=client-factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client-factory.js","sourceRoot":"","sources":["../src/client-factory.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Google ConnectorAccountManager provider.
3
- *
4
- * Bridges plugin-google to the @elizaos/core ConnectorAccountManager so the
5
- * generic HTTP CRUD + OAuth surface (packages/agent/src/api/connector-account-routes.ts)
6
- * can list, create, patch, delete, and run the OAuth flow for Google accounts
7
- * using a single consolidated grant covering Gmail, Calendar, Drive, and Meet.
8
- *
9
- * Single OAuth grant per account: callers may pass `scopes` to the manager's
10
- * startOAuth to limit which capabilities are requested. By default all
11
- * capabilities (gmail.read+send+manage, calendar.read+write, drive.read+write,
12
- * meet.create+read) are requested; granted capabilities are recorded on the
13
- * returned account so downstream consumers know which surfaces are usable.
14
- */
15
- import { type ConnectorAccountProvider, type IAgentRuntime } from "@elizaos/core";
16
- /**
17
- * Build the Google ConnectorAccountManager provider. Exposes listAccounts (from
18
- * manager-owned storage), CRUD adapters, and a single consolidated PKCE OAuth
19
- * flow that returns a Google account hydrated with the granted capabilities,
20
- * scopes, and userinfo identity.
21
- */
22
- export declare function createGoogleConnectorAccountProvider(runtime: IAgentRuntime): ConnectorAccountProvider;
23
- //# sourceMappingURL=connector-account-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connector-account-provider.d.ts","sourceRoot":"","sources":["../src/connector-account-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAIL,KAAK,wBAAwB,EAO7B,KAAK,aAAa,EAEnB,MAAM,eAAe,CAAC;AAgNvB;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,aAAa,GACrB,wBAAwB,CAwN1B"}
@@ -1,348 +0,0 @@
1
- /**
2
- * Google ConnectorAccountManager provider.
3
- *
4
- * Bridges plugin-google to the @elizaos/core ConnectorAccountManager so the
5
- * generic HTTP CRUD + OAuth surface (packages/agent/src/api/connector-account-routes.ts)
6
- * can list, create, patch, delete, and run the OAuth flow for Google accounts
7
- * using a single consolidated grant covering Gmail, Calendar, Drive, and Meet.
8
- *
9
- * Single OAuth grant per account: callers may pass `scopes` to the manager's
10
- * startOAuth to limit which capabilities are requested. By default all
11
- * capabilities (gmail.read+send+manage, calendar.read+write, drive.read+write,
12
- * meet.create+read) are requested; granted capabilities are recorded on the
13
- * returned account so downstream consumers know which surfaces are usable.
14
- */
15
- import { createHash, randomBytes } from "node:crypto";
16
- import { logger, } from "@elizaos/core";
17
- import { GOOGLE_OAUTH_PROVIDER_METADATA } from "./auth.js";
18
- import { persistConnectorCredentialRefs } from "./connector-credential-refs.js";
19
- import { GOOGLE_CAPABILITIES, GOOGLE_IDENTITY_SCOPES, isGoogleCapability, scopesForGoogleCapabilities, } from "./scopes.js";
20
- import { GOOGLE_SERVICE_NAME } from "./types.js";
21
- const GOOGLE_USERINFO_ENDPOINT = "https://openidconnect.googleapis.com/v1/userinfo";
22
- const GROUP_PURPOSE = {
23
- gmail: "messaging",
24
- calendar: "calendar",
25
- drive: "drive",
26
- meet: "meet",
27
- };
28
- function createCodeVerifier() {
29
- return randomBytes(64).toString("base64url");
30
- }
31
- function createCodeChallenge(codeVerifier) {
32
- return createHash("sha256").update(codeVerifier).digest("base64url");
33
- }
34
- function nonEmptyString(value) {
35
- if (typeof value !== "string")
36
- return undefined;
37
- const trimmed = value.trim();
38
- return trimmed.length > 0 ? trimmed : undefined;
39
- }
40
- function readSetting(runtime, key) {
41
- return nonEmptyString(runtime.getSetting?.(key));
42
- }
43
- function readClientConfig(runtime) {
44
- const clientId = readSetting(runtime, "GOOGLE_CLIENT_ID");
45
- const clientSecret = readSetting(runtime, "GOOGLE_CLIENT_SECRET");
46
- const redirectUri = readSetting(runtime, "GOOGLE_REDIRECT_URI");
47
- if (!clientId || !clientSecret || !redirectUri) {
48
- throw new Error("Google OAuth requires GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and GOOGLE_REDIRECT_URI to be configured.");
49
- }
50
- return { clientId, clientSecret, redirectUri };
51
- }
52
- function normalizeRequestedCapabilities(scopes) {
53
- if (!scopes || scopes.length === 0) {
54
- return [...GOOGLE_CAPABILITIES];
55
- }
56
- // The caller passes either capability identifiers (e.g. "gmail.read") OR raw
57
- // OAuth scope URLs. Both shapes are accepted so the manager's startOAuth API
58
- // surface stays uniform with other providers (which use raw scopes).
59
- const requested = new Set();
60
- for (const value of scopes) {
61
- if (isGoogleCapability(value)) {
62
- requested.add(value);
63
- continue;
64
- }
65
- const matched = matchCapabilityFromScope(value);
66
- if (matched) {
67
- requested.add(matched);
68
- }
69
- }
70
- if (requested.size === 0) {
71
- return [...GOOGLE_CAPABILITIES];
72
- }
73
- return [...requested];
74
- }
75
- function matchCapabilityFromScope(scope) {
76
- // Scope URL → capability ID mapping. Pulls from the canonical capability
77
- // metadata so additions to scopes.ts propagate automatically.
78
- const trimmed = scope.trim().toLowerCase();
79
- for (const capability of GOOGLE_CAPABILITIES) {
80
- const capabilityScopes = scopesForGoogleCapabilities([capability], {
81
- includeIdentityScopes: false,
82
- });
83
- if (capabilityScopes.some((value) => value.toLowerCase() === trimmed)) {
84
- return capability;
85
- }
86
- }
87
- return undefined;
88
- }
89
- function purposesForCapabilities(capabilities) {
90
- const groups = new Set();
91
- for (const capability of capabilities) {
92
- groups.add(capability.split(".")[0]);
93
- }
94
- return [...groups].map((group) => GROUP_PURPOSE[group]);
95
- }
96
- function parseScopeString(value) {
97
- if (!value)
98
- return [];
99
- return value
100
- .split(/\s+/)
101
- .map((scope) => scope.trim())
102
- .filter(Boolean);
103
- }
104
- function roleFromMetadata(metadata) {
105
- const record = metadata && typeof metadata === "object" && !Array.isArray(metadata)
106
- ? metadata
107
- : {};
108
- const raw = nonEmptyString(record.role ?? record.accountRole ?? record.requestedRole);
109
- if (!raw)
110
- return "OWNER";
111
- const normalized = raw.toUpperCase();
112
- if (normalized === "OWNER" || normalized === "AGENT" || normalized === "TEAM") {
113
- return normalized;
114
- }
115
- return "OWNER";
116
- }
117
- function parseIdTokenClaims(idToken) {
118
- if (!idToken)
119
- return {};
120
- const segments = idToken.split(".");
121
- if (segments.length < 2)
122
- return {};
123
- try {
124
- const payload = Buffer.from(segments[1] ?? "", "base64url").toString("utf-8");
125
- const parsed = JSON.parse(payload);
126
- return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
127
- }
128
- catch {
129
- return {};
130
- }
131
- }
132
- async function fetchGoogleUserInfo(accessToken) {
133
- const response = await fetch(GOOGLE_USERINFO_ENDPOINT, {
134
- headers: { Authorization: `Bearer ${accessToken}` },
135
- });
136
- if (!response.ok) {
137
- throw new Error(`Google userinfo request failed with ${response.status}`);
138
- }
139
- const parsed = (await response.json());
140
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
141
- throw new Error("Google userinfo returned an invalid payload.");
142
- }
143
- return parsed;
144
- }
145
- async function exchangeAuthorizationCode(args) {
146
- const params = new URLSearchParams({
147
- client_id: args.clientId,
148
- client_secret: args.clientSecret,
149
- redirect_uri: args.redirectUri,
150
- grant_type: "authorization_code",
151
- code: args.code,
152
- });
153
- if (args.codeVerifier) {
154
- params.set("code_verifier", args.codeVerifier);
155
- }
156
- const response = await fetch(GOOGLE_OAUTH_PROVIDER_METADATA.tokenEndpoint, {
157
- method: "POST",
158
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
159
- body: params.toString(),
160
- });
161
- if (!response.ok) {
162
- const body = await response.text();
163
- throw new Error(`Google token exchange failed with ${response.status}: ${body}`);
164
- }
165
- const parsed = (await response.json());
166
- if (!parsed.access_token || !Number.isFinite(parsed.expires_in)) {
167
- throw new Error("Google token exchange returned an invalid payload.");
168
- }
169
- return parsed;
170
- }
171
- /**
172
- * Build the Google ConnectorAccountManager provider. Exposes listAccounts (from
173
- * manager-owned storage), CRUD adapters, and a single consolidated PKCE OAuth
174
- * flow that returns a Google account hydrated with the granted capabilities,
175
- * scopes, and userinfo identity.
176
- */
177
- export function createGoogleConnectorAccountProvider(runtime) {
178
- return {
179
- provider: GOOGLE_SERVICE_NAME,
180
- label: GOOGLE_OAUTH_PROVIDER_METADATA.label,
181
- listAccounts: async (manager) => {
182
- return manager.getStorage().listAccounts(GOOGLE_SERVICE_NAME);
183
- },
184
- createAccount: async (input, _manager) => {
185
- // Persistence is owned by the manager; this adapter just normalizes the
186
- // patch into a Google-shaped account so role/purpose/status defaults are
187
- // sensible when an upstream caller creates the row before OAuth runs.
188
- return {
189
- ...input,
190
- provider: GOOGLE_SERVICE_NAME,
191
- role: input.role ?? "OWNER",
192
- purpose: input.purpose ?? ["messaging", "calendar", "drive", "meet"],
193
- accessGate: input.accessGate ?? "open",
194
- status: input.status ?? "pending",
195
- };
196
- },
197
- patchAccount: async (_accountId, patch, _manager) => {
198
- return { ...patch, provider: GOOGLE_SERVICE_NAME };
199
- },
200
- deleteAccount: async (_accountId, _manager) => {
201
- // Credential cleanup is the credential store's responsibility; the
202
- // manager removes the account row after this resolves.
203
- },
204
- startOAuth: async (request, _manager) => {
205
- const config = readClientConfig(runtime);
206
- const redirectUri = request.redirectUri ?? config.redirectUri;
207
- const capabilities = normalizeRequestedCapabilities(request.scopes);
208
- const oauthScopes = scopesForGoogleCapabilities(capabilities);
209
- const codeVerifier = createCodeVerifier();
210
- const codeChallenge = createCodeChallenge(codeVerifier);
211
- const params = new URLSearchParams({
212
- client_id: config.clientId,
213
- redirect_uri: redirectUri,
214
- response_type: "code",
215
- scope: oauthScopes.join(" "),
216
- state: request.flow.state,
217
- access_type: "offline",
218
- prompt: "consent",
219
- code_challenge: codeChallenge,
220
- code_challenge_method: "S256",
221
- include_granted_scopes: "true",
222
- });
223
- return {
224
- authUrl: `${GOOGLE_OAUTH_PROVIDER_METADATA.authorizationEndpoint}?${params.toString()}`,
225
- codeVerifier,
226
- metadata: {
227
- ...request.metadata,
228
- requestedCapabilities: capabilities,
229
- requestedScopes: oauthScopes,
230
- redirectUri,
231
- },
232
- };
233
- },
234
- completeOAuth: async (request, manager) => {
235
- const code = nonEmptyString(request.code);
236
- if (!code) {
237
- throw new Error("Google OAuth callback is missing an authorization code.");
238
- }
239
- const config = readClientConfig(runtime);
240
- const redirectUri = nonEmptyString(request.flow.redirectUri) ??
241
- nonEmptyString(request.flow.metadata?.redirectUri) ??
242
- config.redirectUri;
243
- const tokens = await exchangeAuthorizationCode({
244
- clientId: config.clientId,
245
- clientSecret: config.clientSecret,
246
- redirectUri,
247
- code,
248
- codeVerifier: request.flow.codeVerifier,
249
- });
250
- const grantedScopes = parseScopeString(tokens.scope);
251
- const grantedCapabilities = normalizeRequestedCapabilities(grantedScopes.length > 0
252
- ? grantedScopes
253
- : request.flow.metadata?.requestedScopes);
254
- const purposes = purposesForCapabilities(grantedCapabilities);
255
- let identity = parseIdTokenClaims(tokens.id_token);
256
- if (!identity.email) {
257
- identity = { ...identity, ...(await fetchGoogleUserInfo(tokens.access_token)) };
258
- }
259
- const externalId = nonEmptyString(identity.sub) ?? nonEmptyString(identity.email);
260
- if (!externalId) {
261
- throw new Error("Google identity payload did not include sub or email.");
262
- }
263
- const expiresAt = Date.now() + tokens.expires_in * 1000;
264
- const oauthCredentialVersion = String(Date.now());
265
- const accountMetadata = {
266
- email: identity.email ?? null,
267
- emailVerified: identity.email_verified ?? null,
268
- name: identity.name ?? null,
269
- picture: identity.picture ?? null,
270
- locale: identity.locale ?? null,
271
- grantedCapabilities,
272
- grantedScopes: grantedScopes.length > 0
273
- ? grantedScopes
274
- : scopesForGoogleCapabilities(grantedCapabilities),
275
- identityScopes: [...GOOGLE_IDENTITY_SCOPES],
276
- tokenType: tokens.token_type ?? "Bearer",
277
- hasRefreshToken: Boolean(tokens.refresh_token),
278
- expiresAt,
279
- oauthCredentialVersion,
280
- };
281
- const pendingAccount = await manager.upsertAccount(GOOGLE_SERVICE_NAME, {
282
- provider: GOOGLE_SERVICE_NAME,
283
- role: roleFromMetadata(request.flow.metadata),
284
- purpose: purposes,
285
- accessGate: "open",
286
- status: "pending",
287
- externalId,
288
- displayHandle: nonEmptyString(identity.email) ?? nonEmptyString(identity.name),
289
- label: nonEmptyString(identity.name) ??
290
- nonEmptyString(identity.email) ??
291
- GOOGLE_OAUTH_PROVIDER_METADATA.label,
292
- metadata: accountMetadata,
293
- }, request.flow.accountId);
294
- const credentialPersist = await persistConnectorCredentialRefs({
295
- runtime,
296
- manager,
297
- provider: GOOGLE_SERVICE_NAME,
298
- accountIdForRef: pendingAccount.id,
299
- storageAccountId: pendingAccount.id,
300
- caller: "plugin-google",
301
- credentials: [
302
- {
303
- credentialType: "oauth.tokens",
304
- value: JSON.stringify({
305
- access_token: tokens.access_token,
306
- ...(tokens.refresh_token ? { refresh_token: tokens.refresh_token } : {}),
307
- ...(tokens.id_token ? { id_token: tokens.id_token } : {}),
308
- token_type: tokens.token_type ?? "Bearer",
309
- scope: grantedScopes.length > 0
310
- ? grantedScopes.join(" ")
311
- : scopesForGoogleCapabilities(grantedCapabilities).join(" "),
312
- expiry_date: expiresAt,
313
- }),
314
- expiresAt,
315
- metadata: {
316
- provider: GOOGLE_SERVICE_NAME,
317
- hasRefreshToken: Boolean(tokens.refresh_token),
318
- },
319
- },
320
- ],
321
- });
322
- const accountPatch = {
323
- ...pendingAccount,
324
- id: pendingAccount.id,
325
- provider: GOOGLE_SERVICE_NAME,
326
- status: "connected",
327
- metadata: {
328
- ...accountMetadata,
329
- credentialRefs: credentialPersist.refs,
330
- credentialRefStorage: {
331
- vaultAvailable: credentialPersist.vaultAvailable,
332
- storageAvailable: credentialPersist.storageAvailable,
333
- },
334
- },
335
- };
336
- logger.info({
337
- src: "plugin:google:connector",
338
- externalId,
339
- capabilities: grantedCapabilities,
340
- }, "Google OAuth completed");
341
- return {
342
- account: accountPatch,
343
- flow: { status: "completed" },
344
- };
345
- },
346
- };
347
- }
348
- //# sourceMappingURL=connector-account-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connector-account-provider.js","sourceRoot":"","sources":["../src/connector-account-provider.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- import { type ConnectorAccountManager, type IAgentRuntime } from "@elizaos/core";
2
- type JsonValue = string | number | boolean | null | undefined | JsonValue[] | {
3
- readonly [key: string]: JsonValue;
4
- };
5
- type JsonRecord = Record<string, JsonValue>;
6
- export interface ConnectorCredentialRefMetadata extends JsonRecord {
7
- credentialType: string;
8
- vaultRef: string;
9
- expiresAt?: number;
10
- metadata?: JsonRecord;
11
- }
12
- export interface ConnectorCredentialRefRecordLike {
13
- credentialType: string;
14
- vaultRef?: string | null;
15
- metadata?: JsonRecord | null;
16
- expiresAt?: number | string | Date | null;
17
- updatedAt?: number | string | Date | null;
18
- version?: string | number | null;
19
- }
20
- export interface ConnectorCredentialPersistResult {
21
- refs: ConnectorCredentialRefMetadata[];
22
- vaultAvailable: boolean;
23
- storageAvailable: boolean;
24
- }
25
- interface ConnectorCredentialInput {
26
- credentialType: string;
27
- value: string;
28
- expiresAt?: number;
29
- metadata?: JsonRecord;
30
- }
31
- interface PersistConnectorCredentialRefsParams {
32
- runtime: IAgentRuntime;
33
- manager?: ConnectorAccountManager;
34
- provider: string;
35
- accountIdForRef: string;
36
- storageAccountId?: string;
37
- credentials: ConnectorCredentialInput[];
38
- caller: string;
39
- }
40
- export declare function persistConnectorCredentialRefs(params: PersistConnectorCredentialRefsParams): Promise<ConnectorCredentialPersistResult>;
41
- export declare function credentialRefRecordsFromMetadata(metadata: unknown): ConnectorCredentialRefRecordLike[];
42
- export {};
43
- //# sourceMappingURL=connector-credential-refs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connector-credential-refs.d.ts","sourceRoot":"","sources":["../src/connector-credential-refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAEvB,KAAK,SAAS,GACV,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,SAAS,EAAE,GACX;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAC1C,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE5C,MAAM,WAAW,8BAA+B,SAAQ,UAAU;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,gCAAgC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,8BAA8B,EAAE,CAAC;IACvC,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,wBAAwB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,UAAU,oCAAoC;IAC5C,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,wBAAwB,EAAE,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAYD,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,oCAAoC,GAC3C,OAAO,CAAC,gCAAgC,CAAC,CAqD3C;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,OAAO,GAChB,gCAAgC,EAAE,CAUpC"}