@plotday/tool-google-contacts 0.1.10 → 0.2.1

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/README.md CHANGED
@@ -5,29 +5,29 @@ A Plot tool for syncing with Google Contacts.
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- npm install @plotday/tool-google-contacts @plotday/sdk
8
+ npm install @plotday/tool-google-contacts @plotday/agent
9
9
  ```
10
10
 
11
11
  ## Usage
12
12
 
13
13
  ```typescript
14
- import { Agent, Tools } from "@plotday/sdk";
14
+ import { Agent, Tools } from "@plotday/agent";
15
15
  import { GoogleContacts } from "@plotday/tool-google-contacts";
16
- import { Auth, AuthLevel, AuthProvider } from "@plotday/sdk/tools/auth";
16
+ import { Integrations, AuthLevel, AuthProvider } from "@plotday/agent/tools/integrations";
17
17
 
18
18
  export default class extends Agent {
19
19
  private googleContacts: GoogleContacts;
20
- private auth: Auth;
20
+ private auth: Integrations;
21
21
 
22
22
  constructor(id: string, tools: Tools) {
23
23
  super();
24
24
  this.googleContacts = tools.get(GoogleContacts);
25
- this.auth = tools.get(Auth);
25
+ this.integrations = tools.get(Integrations);
26
26
  }
27
27
 
28
28
  async activate(priority: { id: string }) {
29
29
  // Request Google Contacts access
30
- const authLink = await this.auth.request(
30
+ const authLink = await this.integrations.request(
31
31
  {
32
32
  provider: AuthProvider.Google,
33
33
  level: AuthLevel.User,
@@ -43,7 +43,7 @@ export default class extends Agent {
43
43
  }
44
44
 
45
45
  async onAuthComplete(authorization: any, context: any) {
46
- const authToken = await this.auth.get(authorization);
46
+ const authToken = await this.integrations.get(authorization);
47
47
 
48
48
  // Start syncing contacts
49
49
  await this.googleContacts.startSync(authToken, "onContact");
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "description": "Sync with Google Contacts",
5
5
  "author": "Plot <team@plot.day> (https://plot.day)",
6
6
  "license": "MIT",
7
- "version": "0.1.10",
7
+ "version": "0.2.1",
8
8
  "type": "module",
9
9
  "main": "./dist/index.js",
10
10
  "types": "./dist/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  "LICENSE"
21
21
  ],
22
22
  "dependencies": {
23
- "@plotday/sdk": "^0.16.1"
23
+ "@plotday/agent": "^0.18.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "typescript": "^5.9.3"
@@ -45,7 +45,7 @@
45
45
  "access": "public"
46
46
  },
47
47
  "scripts": {
48
- "build": "tsc --project tsconfig.build.json",
48
+ "build": "tsc",
49
49
  "clean": "rm -rf dist"
50
50
  }
51
51
  }
@@ -1,21 +0,0 @@
1
- import { Tool, type Tools } from "@plotday/sdk";
2
- import type { Contact, GoogleContacts } from "./types";
3
- export default class extends Tool implements GoogleContacts {
4
- protected tools: Tools;
5
- static readonly id = "google-contacts";
6
- private auth;
7
- constructor(id: string, tools: Tools);
8
- requestAuth(callbackFunctionName: string, callbackContext?: any): Promise<any>;
9
- getContacts(authToken: string): Promise<Contact[]>;
10
- startSync(authToken: string, callbackFunctionName: string, options?: {
11
- context?: any;
12
- }): Promise<void>;
13
- stopSync(authToken: string): Promise<void>;
14
- syncBatch(context: {
15
- batchNumber: number;
16
- authToken: string;
17
- }): Promise<void>;
18
- private processContacts;
19
- onAuthSuccess(authResult: any, context: any): Promise<void>;
20
- }
21
- //# sourceMappingURL=google-contacts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-contacts.d.ts","sourceRoot":"","sources":["../src/google-contacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AAShD,OAAO,KAAK,EAAE,OAAO,EAAe,cAAc,EAAE,MAAM,SAAS,CAAC;AA4OpE,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAK,YAAW,cAAc;IAKjC,SAAS,CAAC,KAAK,EAAE,KAAK;IAJ9C,MAAM,CAAC,QAAQ,CAAC,EAAE,qBAAqB;IAEvC,OAAO,CAAC,IAAI,CAAO;gBAEP,EAAE,EAAE,MAAM,EAAY,KAAK,EAAE,KAAK;IAKxC,WAAW,CACf,oBAAoB,EAAE,MAAM,EAC5B,eAAe,CAAC,EAAE,GAAG,GACpB,OAAO,CAAC,GAAG,CAAC;IAiCT,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAkBlD,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,GACA,OAAO,CAAC,IAAI,CAAC;IAgCV,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1C,SAAS,CAAC,OAAO,EAAE;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDH,eAAe;IAYvB,aAAa,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CA4BlE"}
@@ -1,298 +0,0 @@
1
- import { Tool } from "@plotday/sdk";
2
- import { Auth, AuthLevel, AuthProvider, } from "@plotday/sdk/tools/auth";
3
- class GoogleApi {
4
- accessToken;
5
- constructor(accessToken) {
6
- this.accessToken = accessToken;
7
- }
8
- async call(method, url, params, body) {
9
- const query = params ? `?${new URLSearchParams(params)}` : "";
10
- const headers = {
11
- Authorization: `Bearer ${this.accessToken}`,
12
- Accept: "application/json",
13
- ...(body ? { "Content-Type": "application/json" } : {}),
14
- };
15
- const response = await fetch(url + query, {
16
- method,
17
- headers,
18
- ...(body ? { body: JSON.stringify(body) } : {}),
19
- });
20
- switch (response.status) {
21
- case 400:
22
- const responseBody = await response.json();
23
- if (responseBody.status === "FAILED_PRECONDITION") {
24
- return null;
25
- }
26
- throw new Error("Invalid request", { cause: responseBody });
27
- case 401:
28
- throw new Error("Authentication failed - token may be expired");
29
- case 410:
30
- return null;
31
- case 200:
32
- return await response.json();
33
- default:
34
- throw new Error(await response.text());
35
- }
36
- }
37
- }
38
- function parseContact(contact) {
39
- const name = contact.names?.[0]?.displayName;
40
- const avatar = contact.photos?.filter((p) => !p.default && p.metadata?.primary)?.[0]?.url;
41
- return { name, avatar };
42
- }
43
- async function getGoogleContacts(api, scopes, state) {
44
- let tokens = JSON.parse(state.state ?? "{}");
45
- const contacts = {};
46
- let more = false;
47
- if (!state.more || tokens.connections?.nextPageToken) {
48
- if (scopes?.some?.((scope) => scope === "https://www.googleapis.com/auth/contacts.readonly")) {
49
- let response;
50
- while (true) {
51
- response = (await api.call("GET", "https://people.googleapis.com/v1/people/me/connections", {
52
- requestSyncToken: true,
53
- ...(tokens.connections?.nextPageToken
54
- ? {
55
- pageToken: tokens.connections?.nextPageToken,
56
- }
57
- : tokens.connections?.nextSyncToken
58
- ? {
59
- syncToken: tokens.connections?.nextSyncToken,
60
- }
61
- : {}),
62
- personFields: "names,emailAddresses,photos",
63
- }));
64
- if (response !== null)
65
- break;
66
- if (!tokens.connections)
67
- break;
68
- tokens.connections = undefined;
69
- continue;
70
- }
71
- if (response) {
72
- for (const c of response.connections ?? []) {
73
- for (const e of c.emailAddresses ?? []) {
74
- if (!e.value)
75
- continue;
76
- const { name, avatar } = parseContact(c);
77
- contacts[e.value] = {
78
- ...contacts[e.value],
79
- email: e.value,
80
- ...(name ? { name } : {}),
81
- ...(avatar ? { avatar } : {}),
82
- };
83
- }
84
- }
85
- more = true;
86
- tokens = {
87
- ...tokens,
88
- connections: {
89
- nextPageToken: response.nextPageToken ?? undefined,
90
- nextSyncToken: response.nextSyncToken ?? undefined,
91
- },
92
- };
93
- }
94
- }
95
- else {
96
- more = true;
97
- tokens = {
98
- ...tokens,
99
- connections: {},
100
- };
101
- }
102
- }
103
- else {
104
- if (scopes?.some?.((scope) => scope === "https://www.googleapis.com/auth/contacts.other.readonly")) {
105
- let response;
106
- while (true) {
107
- response = (await api.call("GET", "https://people.googleapis.com/v1/otherContacts", {
108
- requestSyncToken: true,
109
- ...(tokens.other?.nextPageToken
110
- ? {
111
- pageToken: tokens.other?.nextPageToken,
112
- }
113
- : tokens.other?.nextSyncToken
114
- ? {
115
- syncToken: tokens.other?.nextSyncToken,
116
- }
117
- : {}),
118
- readMask: "names,emailAddresses,photos",
119
- }));
120
- if (response !== null)
121
- break;
122
- if (!tokens.other)
123
- break;
124
- tokens.other = undefined;
125
- continue;
126
- }
127
- if (response) {
128
- for (const c of response.otherContacts ?? []) {
129
- for (const e of c.emailAddresses ?? []) {
130
- if (!e.value)
131
- continue;
132
- const { name, avatar } = parseContact(c);
133
- contacts[e.value] = {
134
- ...contacts[e.value],
135
- email: e.value,
136
- ...(name ? { name } : {}),
137
- ...(avatar ? { avatar } : {}),
138
- };
139
- }
140
- }
141
- more = !!response.nextPageToken;
142
- tokens = {
143
- ...tokens,
144
- other: {
145
- nextPageToken: response.nextPageToken ?? undefined,
146
- nextSyncToken: response.nextSyncToken ?? undefined,
147
- },
148
- };
149
- }
150
- }
151
- else {
152
- more = false;
153
- tokens = {
154
- ...tokens,
155
- other: {},
156
- };
157
- }
158
- }
159
- return {
160
- contacts: Object.values(contacts),
161
- state: {
162
- more,
163
- state: JSON.stringify(tokens),
164
- },
165
- };
166
- }
167
- export default class default_1 extends Tool {
168
- tools;
169
- static id = "google-contacts";
170
- auth;
171
- constructor(id, tools) {
172
- super(id, tools);
173
- this.tools = tools;
174
- this.auth = tools.get(Auth);
175
- }
176
- async requestAuth(callbackFunctionName, callbackContext) {
177
- const contactsScopes = [
178
- "https://www.googleapis.com/auth/contacts.readonly",
179
- "https://www.googleapis.com/auth/contacts.other.readonly",
180
- ];
181
- // Generate opaque token for this authorization
182
- const opaqueToken = crypto.randomUUID();
183
- // Register the callback for auth completion with opaque token
184
- const callbackToken = await this.callback(callbackFunctionName, callbackContext);
185
- await this.set(`auth_callback_token:${opaqueToken}`, callbackToken);
186
- // Create callback for auth completion
187
- const authCallback = await this.callback("onAuthSuccess", {
188
- toolName: "google-contacts",
189
- opaqueToken,
190
- });
191
- // Request auth and return the activity link
192
- return await this.auth.request({
193
- provider: AuthProvider.Google,
194
- level: AuthLevel.User,
195
- scopes: contactsScopes,
196
- }, authCallback);
197
- }
198
- async getContacts(authToken) {
199
- const storedAuthToken = await this.get(`auth_token:${authToken}`);
200
- if (!storedAuthToken) {
201
- throw new Error("No Google authentication token available for the provided authToken");
202
- }
203
- const api = new GoogleApi(storedAuthToken.token);
204
- const result = await getGoogleContacts(api, storedAuthToken.scopes, {
205
- more: false,
206
- });
207
- return result.contacts;
208
- }
209
- async startSync(authToken, callbackFunctionName, options) {
210
- const storedAuthToken = await this.get(`auth_token:${authToken}`);
211
- if (!storedAuthToken) {
212
- throw new Error("No Google authentication token available for the provided authToken");
213
- }
214
- // Register the callback
215
- const callbackToken = await this.callback(callbackFunctionName, options?.context);
216
- await this.set(`contacts_callback_token:${authToken}`, callbackToken);
217
- // Start initial sync
218
- const initialState = {
219
- more: false,
220
- };
221
- await this.set(`sync_state:${authToken}`, initialState);
222
- // Start sync batch using run tool for long-running operation
223
- const callback = await this.callback("syncBatch", {
224
- batchNumber: 1,
225
- authToken,
226
- });
227
- await this.run(callback);
228
- }
229
- async stopSync(authToken) {
230
- // Clear sync state for this specific auth token
231
- await this.clear(`sync_state:${authToken}`);
232
- await this.clear(`contacts_callback_token:${authToken}`);
233
- }
234
- async syncBatch(context) {
235
- const { batchNumber, authToken } = context;
236
- console.log(`Starting Google Contacts sync batch ${batchNumber}`);
237
- try {
238
- const storedAuthToken = await this.get(`auth_token:${authToken}`);
239
- if (!storedAuthToken) {
240
- throw new Error("No authentication token available for the provided authToken");
241
- }
242
- const state = await this.get(`sync_state:${authToken}`);
243
- if (!state) {
244
- throw new Error("No sync state found");
245
- }
246
- const api = new GoogleApi(storedAuthToken.token);
247
- const result = await getGoogleContacts(api, storedAuthToken.scopes, state);
248
- if (result.contacts.length > 0) {
249
- await this.processContacts(result.contacts, authToken);
250
- console.log(`Synced ${result.contacts.length} contacts in batch ${batchNumber}`);
251
- }
252
- await this.set(`sync_state:${authToken}`, result.state);
253
- if (result.state.more) {
254
- const callback = await this.callback("syncBatch", {
255
- batchNumber: batchNumber + 1,
256
- authToken,
257
- });
258
- await this.run(callback);
259
- }
260
- else {
261
- console.log(`Google Contacts sync completed after ${batchNumber} batches`);
262
- await this.clear(`sync_state:${authToken}`);
263
- }
264
- }
265
- catch (error) {
266
- console.error(`Error in sync batch ${batchNumber}:`, error);
267
- throw error;
268
- }
269
- }
270
- async processContacts(contacts, authToken) {
271
- const callbackToken = await this.get(`contacts_callback_token:${authToken}`);
272
- if (callbackToken) {
273
- await this.callCallback(callbackToken, contacts);
274
- }
275
- }
276
- async onAuthSuccess(authResult, context) {
277
- console.log("Google Contacts authentication successful", authResult);
278
- // Extract opaque token from context
279
- const opaqueToken = context?.opaqueToken;
280
- if (!opaqueToken) {
281
- console.error("No opaque token found in auth context");
282
- return;
283
- }
284
- // Store the actual auth token using opaque token as key
285
- await this.set(`auth_token:${opaqueToken}`, authResult);
286
- // Retrieve and call the stored callback
287
- const callbackToken = await this.get(`auth_callback_token:${opaqueToken}`);
288
- if (callbackToken) {
289
- const authSuccessResult = {
290
- authToken: opaqueToken,
291
- };
292
- await this.callCallback(callbackToken, authSuccessResult);
293
- // Clean up the callback token
294
- await this.clear(`auth_callback_token:${opaqueToken}`);
295
- }
296
- }
297
- }
298
- //# sourceMappingURL=google-contacts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-contacts.js","sourceRoot":"","sources":["../src/google-contacts.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from "./types";
2
- export { default } from "./google-contacts";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js DELETED
@@ -1,3 +0,0 @@
1
- export * from "./types";
2
- export { default } from "./google-contacts";
3
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,18 +0,0 @@
1
- import type { ActivityLink, Tool } from "@plotday/sdk";
2
- export type Contact = {
3
- email: string;
4
- name?: string;
5
- avatar?: string;
6
- };
7
- export type ContactAuth = {
8
- authToken: string;
9
- };
10
- export interface GoogleContacts extends Tool {
11
- requestAuth(callbackFunctionName: string, callbackContext?: any): Promise<ActivityLink>;
12
- getContacts(authToken: string): Promise<Contact[]>;
13
- startSync(authToken: string, callbackFunctionName: string, options?: {
14
- context?: any;
15
- }): Promise<void>;
16
- stopSync(authToken: string): Promise<void>;
17
- }
18
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,cAAe,SAAQ,IAAI;IAC1C,WAAW,CACT,oBAAoB,EAAE,MAAM,EAC5B,eAAe,CAAC,EAAE,GAAG,GACpB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEnD,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,GACA,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C"}
package/dist/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}