@elizaos/plugin-google 2.0.0-beta.1 → 2.0.3-beta.3
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/LICENSE +21 -0
- package/README.md +124 -17
- package/package.json +22 -4
- package/registry-entry.json +82 -0
- package/dist/auth.d.ts +0 -9
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -45
- package/dist/auth.js.map +0 -1
- package/dist/calendar.d.ts +0 -26
- package/dist/calendar.d.ts.map +0 -1
- package/dist/calendar.js +0 -237
- package/dist/calendar.js.map +0 -1
- package/dist/client-factory.d.ts +0 -17
- package/dist/client-factory.d.ts.map +0 -1
- package/dist/client-factory.js +0 -66
- package/dist/client-factory.js.map +0 -1
- package/dist/connector-account-provider.d.ts +0 -23
- package/dist/connector-account-provider.d.ts.map +0 -1
- package/dist/connector-account-provider.js +0 -348
- package/dist/connector-account-provider.js.map +0 -1
- package/dist/connector-credential-refs.d.ts +0 -43
- package/dist/connector-credential-refs.d.ts.map +0 -1
- package/dist/connector-credential-refs.js +0 -252
- package/dist/connector-credential-refs.js.map +0 -1
- package/dist/credential-resolver.d.ts +0 -45
- package/dist/credential-resolver.d.ts.map +0 -1
- package/dist/credential-resolver.js +0 -525
- package/dist/credential-resolver.js.map +0 -1
- package/dist/drive.d.ts +0 -41
- package/dist/drive.d.ts.map +0 -1
- package/dist/drive.js +0 -207
- package/dist/drive.js.map +0 -1
- package/dist/gmail.d.ts +0 -89
- package/dist/gmail.d.ts.map +0 -1
- package/dist/gmail.js +0 -765
- package/dist/gmail.js.map +0 -1
- package/dist/index.d.ts +0 -16
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -46
- package/dist/index.js.map +0 -1
- package/dist/meet.d.ts +0 -61
- package/dist/meet.d.ts.map +0 -1
- package/dist/meet.js +0 -329
- package/dist/meet.js.map +0 -1
- package/dist/scopes.d.ts +0 -59
- package/dist/scopes.d.ts.map +0 -1
- package/dist/scopes.js +0 -142
- package/dist/scopes.js.map +0 -1
- package/dist/service.d.ts +0 -165
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -170
- package/dist/service.js.map +0 -1
- package/dist/types.d.ts +0 -492
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -9
- package/dist/types.js.map +0 -1
package/dist/client-factory.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { type calendar_v3, type docs_v1, type drive_v3, type gmail_v1, type meet_v2, type sheets_v4 } from "googleapis";
|
|
2
|
-
import { type GoogleCapability } from "./scopes.js";
|
|
3
|
-
import { type GoogleAccountRef, type GoogleCredentialResolver } from "./types.js";
|
|
4
|
-
export declare class GoogleApiClientFactory {
|
|
5
|
-
private credentialResolver;
|
|
6
|
-
constructor(credentialResolver?: GoogleCredentialResolver);
|
|
7
|
-
setCredentialResolver(credentialResolver: GoogleCredentialResolver): void;
|
|
8
|
-
gmail(account: GoogleAccountRef, capabilities: readonly GoogleCapability[], reason: string): Promise<gmail_v1.Gmail>;
|
|
9
|
-
calendar(account: GoogleAccountRef, capabilities: readonly GoogleCapability[], reason: string): Promise<calendar_v3.Calendar>;
|
|
10
|
-
drive(account: GoogleAccountRef, capabilities: readonly GoogleCapability[], reason: string): Promise<drive_v3.Drive>;
|
|
11
|
-
docs(account: GoogleAccountRef, capabilities: readonly GoogleCapability[], reason: string): Promise<docs_v1.Docs>;
|
|
12
|
-
sheets(account: GoogleAccountRef, capabilities: readonly GoogleCapability[], reason: string): Promise<sheets_v4.Sheets>;
|
|
13
|
-
meet(account: GoogleAccountRef, capabilities: readonly GoogleCapability[], reason: string): Promise<meet_v2.Meet>;
|
|
14
|
-
private apiOptions;
|
|
15
|
-
private resolveAuthClient;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=client-factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../src/client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,QAAQ,EAEb,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,KAAK,gBAAgB,EAA+B,MAAM,aAAa,CAAC;AACjF,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,wBAAwB,EAC9B,MAAM,YAAY,CAAC;AAgBpB,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,kBAAkB;gBAAlB,kBAAkB,GAAE,wBAAgE;IAG9F,qBAAqB,CAAC,kBAAkB,EAAE,wBAAwB,GAAG,IAAI;IAInE,KAAK,CACT,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAKpB,QAAQ,CACZ,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IAK1B,KAAK,CACT,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAKpB,IAAI,CACR,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAKlB,MAAM,CACV,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;IAKtB,IAAI,CACR,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAKxB,OAAO,CAAC,UAAU;YAQJ,iBAAiB;CAahC"}
|
package/dist/client-factory.js
DELETED
|
@@ -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"}
|