donobu 2.23.5 → 2.24.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/dist/assets/generated/version +1 -1
- package/dist/esm/assets/generated/version +1 -1
- package/dist/esm/tools/SolveMfaChallenge.d.ts +9 -0
- package/dist/esm/tools/SolveMfaChallenge.d.ts.map +1 -1
- package/dist/esm/tools/SolveMfaChallenge.js +17 -14
- package/dist/esm/tools/SolveMfaChallenge.js.map +1 -1
- package/dist/tools/SolveMfaChallenge.d.ts +9 -0
- package/dist/tools/SolveMfaChallenge.d.ts.map +1 -1
- package/dist/tools/SolveMfaChallenge.js +17 -14
- package/dist/tools/SolveMfaChallenge.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1262
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1262
|
|
@@ -6,11 +6,14 @@ export declare const SolveMfaChallengeCoreSchema: z.ZodObject<{
|
|
|
6
6
|
gmailClientId: z.ZodString;
|
|
7
7
|
gmailClientSecret: z.ZodString;
|
|
8
8
|
gmailRefreshToken: z.ZodString;
|
|
9
|
+
email: z.ZodString;
|
|
9
10
|
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
email: string;
|
|
10
12
|
gmailClientId: string;
|
|
11
13
|
gmailClientSecret: string;
|
|
12
14
|
gmailRefreshToken: string;
|
|
13
15
|
}, {
|
|
16
|
+
email: string;
|
|
14
17
|
gmailClientId: string;
|
|
15
18
|
gmailClientSecret: string;
|
|
16
19
|
gmailRefreshToken: string;
|
|
@@ -30,11 +33,13 @@ export declare const SelectorBasedSolveMfaChallengeSchema: z.ZodObject<z.objectU
|
|
|
30
33
|
gmailClientId: z.ZodString;
|
|
31
34
|
gmailClientSecret: z.ZodString;
|
|
32
35
|
gmailRefreshToken: z.ZodString;
|
|
36
|
+
email: z.ZodString;
|
|
33
37
|
}>, "strip", z.ZodTypeAny, {
|
|
34
38
|
selector: {
|
|
35
39
|
frame: string | null;
|
|
36
40
|
element: string[];
|
|
37
41
|
};
|
|
42
|
+
email: string;
|
|
38
43
|
gmailClientId: string;
|
|
39
44
|
gmailClientSecret: string;
|
|
40
45
|
gmailRefreshToken: string;
|
|
@@ -43,6 +48,7 @@ export declare const SelectorBasedSolveMfaChallengeSchema: z.ZodObject<z.objectU
|
|
|
43
48
|
frame: string | null;
|
|
44
49
|
element: string[];
|
|
45
50
|
};
|
|
51
|
+
email: string;
|
|
46
52
|
gmailClientId: string;
|
|
47
53
|
gmailClientSecret: string;
|
|
48
54
|
gmailRefreshToken: string;
|
|
@@ -56,10 +62,12 @@ export declare const AnnotationBasedSolveMfaChallengeSchema: z.ZodObject<z.objec
|
|
|
56
62
|
gmailClientId: z.ZodString;
|
|
57
63
|
gmailClientSecret: z.ZodString;
|
|
58
64
|
gmailRefreshToken: z.ZodString;
|
|
65
|
+
email: z.ZodString;
|
|
59
66
|
}>, "strip", z.ZodTypeAny, {
|
|
60
67
|
annotation: string;
|
|
61
68
|
rationale: string;
|
|
62
69
|
whyThisAnnotation: string;
|
|
70
|
+
email: string;
|
|
63
71
|
gmailClientId: string;
|
|
64
72
|
gmailClientSecret: string;
|
|
65
73
|
gmailRefreshToken: string;
|
|
@@ -67,6 +75,7 @@ export declare const AnnotationBasedSolveMfaChallengeSchema: z.ZodObject<z.objec
|
|
|
67
75
|
annotation: string;
|
|
68
76
|
rationale: string;
|
|
69
77
|
whyThisAnnotation: string;
|
|
78
|
+
email: string;
|
|
70
79
|
gmailClientId: string;
|
|
71
80
|
gmailClientSecret: string;
|
|
72
81
|
gmailRefreshToken: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolveMfaChallenge.d.ts","sourceRoot":"","sources":["../../../src/tools/SolveMfaChallenge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,qBAAqB,EAGtB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,2BAA2B
|
|
1
|
+
{"version":3,"file":"SolveMfaChallenge.d.ts","sourceRoot":"","sources":["../../../src/tools/SolveMfaChallenge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,qBAAqB,EAGtB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAqBtC,CAAC;AACH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEhD,CAAC;AACF,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;EACO,CAAC;AAE3D,qBAAa,qBAAsB,SAAQ,qBAAqB,CAC9D,OAAO,2BAA2B,EAClC,OAAO,oCAAoC,EAC3C,OAAO,sCAAsC,CAC9C;IACC,gBAAuB,IAAI,uBAAuB;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAK;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAS;;IAazC,MAAM,CACV,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,EACvD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC;YAqDJ,oBAAoB;YAgDpB,mBAAmB;IAwDjC,OAAO,CAAC,WAAW;YA6BL,qBAAqB;IAwCnC,OAAO,CAAC,eAAe;CAKxB"}
|
|
@@ -16,6 +16,9 @@ exports.SolveMfaChallengeCoreSchema = zod_1.z.object({
|
|
|
16
16
|
gmailRefreshToken: zod_1.z
|
|
17
17
|
.string()
|
|
18
18
|
.describe('The Gmail refresh token. This should be passed using an environment variable reference like {{$.env.GMAIL_REFRESH_TOKEN}} or similar.'),
|
|
19
|
+
email: zod_1.z
|
|
20
|
+
.string()
|
|
21
|
+
.describe('The specific email address to filter MFA emails for. This can include variants like someemail+variant@gmail.com to target specific logins.'),
|
|
19
22
|
});
|
|
20
23
|
exports.SelectorBasedSolveMfaChallengeSchema = ReplayableInteraction_1.SelectorBasedSchema.merge(exports.SolveMfaChallengeCoreSchema);
|
|
21
24
|
exports.AnnotationBasedSolveMfaChallengeSchema = ReplayableInteraction_1.AnnotationBasedSchema.merge(exports.SolveMfaChallengeCoreSchema);
|
|
@@ -32,9 +35,9 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
32
35
|
});
|
|
33
36
|
const gmail = googleapis_1.google.gmail({ version: 'v1', auth: oAuth2Client });
|
|
34
37
|
// Extract the MFA code from emails
|
|
35
|
-
const mfaCode = await this.getMfaCodeFromEmails(context, gmail, waitTimeSeconds);
|
|
38
|
+
const mfaCode = await this.getMfaCodeFromEmails(context, gmail, waitTimeSeconds, parameters.email);
|
|
36
39
|
if (!mfaCode) {
|
|
37
|
-
throw new Error(
|
|
40
|
+
throw new Error(`Could not find MFA code in emails for ${parameters.email} after multiple attempts`);
|
|
38
41
|
}
|
|
39
42
|
// Input the MFA code into the element.
|
|
40
43
|
//
|
|
@@ -58,9 +61,9 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
58
61
|
// Some MFA systems automatically submit themselves, so if we have
|
|
59
62
|
// gotten this far, do not fail if the 'Enter' key fails to land.
|
|
60
63
|
}
|
|
61
|
-
return `Successfully retrieved and inputted MFA code "${mfaCode}" into
|
|
64
|
+
return `Successfully retrieved and inputted MFA code "${mfaCode}" into field for ${parameters.email}`;
|
|
62
65
|
}
|
|
63
|
-
async getMfaCodeFromEmails(context, gmail, waitTimeSeconds) {
|
|
66
|
+
async getMfaCodeFromEmails(context, gmail, waitTimeSeconds, targetEmail) {
|
|
64
67
|
const seenIds = new Set();
|
|
65
68
|
const startTime = Date.now();
|
|
66
69
|
const endTime = startTime + waitTimeSeconds * 1000;
|
|
@@ -69,16 +72,16 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
69
72
|
while (Date.now() < endTime &&
|
|
70
73
|
attempt < SolveMfaChallengeTool.MAX_RETRIES) {
|
|
71
74
|
attempt++;
|
|
72
|
-
Logger_1.appLogger.info(`Attempt ${attempt} of ${SolveMfaChallengeTool.MAX_RETRIES} to find MFA code in emails`);
|
|
75
|
+
Logger_1.appLogger.info(`Attempt ${attempt} of ${SolveMfaChallengeTool.MAX_RETRIES} to find MFA code in emails for ${targetEmail}`);
|
|
73
76
|
// Get the body of the latest email for the user.
|
|
74
|
-
const emailBody = await this.fetchLatestMfaEmail(gmail, seenIds);
|
|
77
|
+
const emailBody = await this.fetchLatestMfaEmail(gmail, seenIds, targetEmail);
|
|
75
78
|
// Only process if the email body has changed.
|
|
76
79
|
if (emailBody && emailBody !== lastEmailBody) {
|
|
77
80
|
lastEmailBody = emailBody;
|
|
78
81
|
// Use the GPT client to extract the MFA code.
|
|
79
82
|
const mfaCode = await this.extractMfaCodeWithGpt(context, emailBody);
|
|
80
83
|
if (mfaCode) {
|
|
81
|
-
Logger_1.appLogger.info(`Successfully found MFA code: ${mfaCode}`);
|
|
84
|
+
Logger_1.appLogger.info(`Successfully found MFA code: ${mfaCode} for ${targetEmail}`);
|
|
82
85
|
return mfaCode;
|
|
83
86
|
}
|
|
84
87
|
}
|
|
@@ -89,13 +92,13 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
89
92
|
}
|
|
90
93
|
return null;
|
|
91
94
|
}
|
|
92
|
-
async fetchLatestMfaEmail(gmail, seenIds) {
|
|
95
|
+
async fetchLatestMfaEmail(gmail, seenIds, targetEmail) {
|
|
93
96
|
const lookbackMinutes = 2;
|
|
94
97
|
const cutoff = Date.now() - lookbackMinutes * 60000;
|
|
98
|
+
const searchQuery = `to:${targetEmail} subject:(code OR security OR authentication OR verification OR confirm OR verify) is:unread in:inbox`;
|
|
95
99
|
const threadRes = await gmail.users.threads.list({
|
|
96
100
|
userId: 'me',
|
|
97
|
-
q:
|
|
98
|
-
'is:unread in:inbox',
|
|
101
|
+
q: searchQuery,
|
|
99
102
|
maxResults: 25,
|
|
100
103
|
fields: 'threads(id)',
|
|
101
104
|
});
|
|
@@ -105,7 +108,7 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
105
108
|
userId: 'me',
|
|
106
109
|
id: th.id,
|
|
107
110
|
format: 'metadata',
|
|
108
|
-
fields: 'messages(id,internalDate,labelIds)',
|
|
111
|
+
fields: 'messages(id,internalDate,labelIds,payload)',
|
|
109
112
|
});
|
|
110
113
|
const m = t.data.messages.at(-1); // newest in that thread
|
|
111
114
|
if (!m || seenIds.has(m.id)) {
|
|
@@ -115,12 +118,12 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
115
118
|
continue;
|
|
116
119
|
}
|
|
117
120
|
const ts = Number(m.internalDate);
|
|
118
|
-
if (ts
|
|
119
|
-
|
|
121
|
+
if (ts >= cutoff) {
|
|
122
|
+
candidates.push({ id: m.id, ts });
|
|
120
123
|
}
|
|
121
|
-
candidates.push({ id: m.id, ts });
|
|
122
124
|
}
|
|
123
125
|
if (!candidates.length) {
|
|
126
|
+
Logger_1.appLogger.info(`No MFA email candidates found for ${targetEmail}`);
|
|
124
127
|
return null;
|
|
125
128
|
}
|
|
126
129
|
const winner = candidates.sort((a, b) => b.ts - a.ts)[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolveMfaChallenge.js","sourceRoot":"","sources":["../../../src/tools/SolveMfaChallenge.ts"],"names":[],"mappings":";;;AAEA,mEAIiC;AACjC,kDAA+C;AAC/C,2CAAoC;AACpC,4CAA4C;AAG5C,6BAAwB;AAEX,QAAA,2BAA2B,GAAG,OAAC,CAAC,MAAM,CAAC;IAClD,aAAa,EAAE,OAAC;SACb,MAAM,EAAE;SACR,QAAQ,CACP,+HAA+H,CAChI;IACH,iBAAiB,EAAE,OAAC;SACjB,MAAM,EAAE;SACR,QAAQ,CACP,uIAAuI,CACxI;IACH,iBAAiB,EAAE,OAAC;SACjB,MAAM,EAAE;SACR,QAAQ,CACP,uIAAuI,CACxI;CACJ,CAAC,CAAC;AACU,QAAA,oCAAoC,GAAG,2CAAmB,CAAC,KAAK,CAC3E,mCAA2B,CAC5B,CAAC;AACW,QAAA,sCAAsC,GACjD,6CAAqB,CAAC,KAAK,CAAC,mCAA2B,CAAC,CAAC;AAE3D,MAAa,qBAAsB,SAAQ,6CAI1C;IAKC;QACE,KAAK,CACH,qBAAqB,CAAC,IAAI,EAC1B,2GAA2G,EAC3G,mCAA2B,EAC3B,4CAAoC,EACpC,8CAAsC,EACtC,IAAI,CACL,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CACV,OAAwB,EACxB,UAAuD,EACvD,OAAgB;QAEhB,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,sBAAsB;QACtB,MAAM,YAAY,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,MAAM,CACzC,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,iBAAiB,CAC7B,CAAC;QACF,YAAY,CAAC,cAAc,CAAC;YAC1B,aAAa,EAAE,UAAU,CAAC,iBAAiB;SAC5C,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,mBAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAElE,mCAAmC;QACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAC7C,OAAO,EACP,KAAK,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"SolveMfaChallenge.js","sourceRoot":"","sources":["../../../src/tools/SolveMfaChallenge.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,14 @@ export declare const SolveMfaChallengeCoreSchema: z.ZodObject<{
|
|
|
6
6
|
gmailClientId: z.ZodString;
|
|
7
7
|
gmailClientSecret: z.ZodString;
|
|
8
8
|
gmailRefreshToken: z.ZodString;
|
|
9
|
+
email: z.ZodString;
|
|
9
10
|
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
email: string;
|
|
10
12
|
gmailClientId: string;
|
|
11
13
|
gmailClientSecret: string;
|
|
12
14
|
gmailRefreshToken: string;
|
|
13
15
|
}, {
|
|
16
|
+
email: string;
|
|
14
17
|
gmailClientId: string;
|
|
15
18
|
gmailClientSecret: string;
|
|
16
19
|
gmailRefreshToken: string;
|
|
@@ -30,11 +33,13 @@ export declare const SelectorBasedSolveMfaChallengeSchema: z.ZodObject<z.objectU
|
|
|
30
33
|
gmailClientId: z.ZodString;
|
|
31
34
|
gmailClientSecret: z.ZodString;
|
|
32
35
|
gmailRefreshToken: z.ZodString;
|
|
36
|
+
email: z.ZodString;
|
|
33
37
|
}>, "strip", z.ZodTypeAny, {
|
|
34
38
|
selector: {
|
|
35
39
|
frame: string | null;
|
|
36
40
|
element: string[];
|
|
37
41
|
};
|
|
42
|
+
email: string;
|
|
38
43
|
gmailClientId: string;
|
|
39
44
|
gmailClientSecret: string;
|
|
40
45
|
gmailRefreshToken: string;
|
|
@@ -43,6 +48,7 @@ export declare const SelectorBasedSolveMfaChallengeSchema: z.ZodObject<z.objectU
|
|
|
43
48
|
frame: string | null;
|
|
44
49
|
element: string[];
|
|
45
50
|
};
|
|
51
|
+
email: string;
|
|
46
52
|
gmailClientId: string;
|
|
47
53
|
gmailClientSecret: string;
|
|
48
54
|
gmailRefreshToken: string;
|
|
@@ -56,10 +62,12 @@ export declare const AnnotationBasedSolveMfaChallengeSchema: z.ZodObject<z.objec
|
|
|
56
62
|
gmailClientId: z.ZodString;
|
|
57
63
|
gmailClientSecret: z.ZodString;
|
|
58
64
|
gmailRefreshToken: z.ZodString;
|
|
65
|
+
email: z.ZodString;
|
|
59
66
|
}>, "strip", z.ZodTypeAny, {
|
|
60
67
|
annotation: string;
|
|
61
68
|
rationale: string;
|
|
62
69
|
whyThisAnnotation: string;
|
|
70
|
+
email: string;
|
|
63
71
|
gmailClientId: string;
|
|
64
72
|
gmailClientSecret: string;
|
|
65
73
|
gmailRefreshToken: string;
|
|
@@ -67,6 +75,7 @@ export declare const AnnotationBasedSolveMfaChallengeSchema: z.ZodObject<z.objec
|
|
|
67
75
|
annotation: string;
|
|
68
76
|
rationale: string;
|
|
69
77
|
whyThisAnnotation: string;
|
|
78
|
+
email: string;
|
|
70
79
|
gmailClientId: string;
|
|
71
80
|
gmailClientSecret: string;
|
|
72
81
|
gmailRefreshToken: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolveMfaChallenge.d.ts","sourceRoot":"","sources":["../../src/tools/SolveMfaChallenge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,qBAAqB,EAGtB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,2BAA2B
|
|
1
|
+
{"version":3,"file":"SolveMfaChallenge.d.ts","sourceRoot":"","sources":["../../src/tools/SolveMfaChallenge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,qBAAqB,EAGtB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAqBtC,CAAC;AACH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEhD,CAAC;AACF,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;EACO,CAAC;AAE3D,qBAAa,qBAAsB,SAAQ,qBAAqB,CAC9D,OAAO,2BAA2B,EAClC,OAAO,oCAAoC,EAC3C,OAAO,sCAAsC,CAC9C;IACC,gBAAuB,IAAI,uBAAuB;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAK;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAS;;IAazC,MAAM,CACV,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,EACvD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC;YAqDJ,oBAAoB;YAgDpB,mBAAmB;IAwDjC,OAAO,CAAC,WAAW;YA6BL,qBAAqB;IAwCnC,OAAO,CAAC,eAAe;CAKxB"}
|
|
@@ -16,6 +16,9 @@ exports.SolveMfaChallengeCoreSchema = zod_1.z.object({
|
|
|
16
16
|
gmailRefreshToken: zod_1.z
|
|
17
17
|
.string()
|
|
18
18
|
.describe('The Gmail refresh token. This should be passed using an environment variable reference like {{$.env.GMAIL_REFRESH_TOKEN}} or similar.'),
|
|
19
|
+
email: zod_1.z
|
|
20
|
+
.string()
|
|
21
|
+
.describe('The specific email address to filter MFA emails for. This can include variants like someemail+variant@gmail.com to target specific logins.'),
|
|
19
22
|
});
|
|
20
23
|
exports.SelectorBasedSolveMfaChallengeSchema = ReplayableInteraction_1.SelectorBasedSchema.merge(exports.SolveMfaChallengeCoreSchema);
|
|
21
24
|
exports.AnnotationBasedSolveMfaChallengeSchema = ReplayableInteraction_1.AnnotationBasedSchema.merge(exports.SolveMfaChallengeCoreSchema);
|
|
@@ -32,9 +35,9 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
32
35
|
});
|
|
33
36
|
const gmail = googleapis_1.google.gmail({ version: 'v1', auth: oAuth2Client });
|
|
34
37
|
// Extract the MFA code from emails
|
|
35
|
-
const mfaCode = await this.getMfaCodeFromEmails(context, gmail, waitTimeSeconds);
|
|
38
|
+
const mfaCode = await this.getMfaCodeFromEmails(context, gmail, waitTimeSeconds, parameters.email);
|
|
36
39
|
if (!mfaCode) {
|
|
37
|
-
throw new Error(
|
|
40
|
+
throw new Error(`Could not find MFA code in emails for ${parameters.email} after multiple attempts`);
|
|
38
41
|
}
|
|
39
42
|
// Input the MFA code into the element.
|
|
40
43
|
//
|
|
@@ -58,9 +61,9 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
58
61
|
// Some MFA systems automatically submit themselves, so if we have
|
|
59
62
|
// gotten this far, do not fail if the 'Enter' key fails to land.
|
|
60
63
|
}
|
|
61
|
-
return `Successfully retrieved and inputted MFA code "${mfaCode}" into
|
|
64
|
+
return `Successfully retrieved and inputted MFA code "${mfaCode}" into field for ${parameters.email}`;
|
|
62
65
|
}
|
|
63
|
-
async getMfaCodeFromEmails(context, gmail, waitTimeSeconds) {
|
|
66
|
+
async getMfaCodeFromEmails(context, gmail, waitTimeSeconds, targetEmail) {
|
|
64
67
|
const seenIds = new Set();
|
|
65
68
|
const startTime = Date.now();
|
|
66
69
|
const endTime = startTime + waitTimeSeconds * 1000;
|
|
@@ -69,16 +72,16 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
69
72
|
while (Date.now() < endTime &&
|
|
70
73
|
attempt < SolveMfaChallengeTool.MAX_RETRIES) {
|
|
71
74
|
attempt++;
|
|
72
|
-
Logger_1.appLogger.info(`Attempt ${attempt} of ${SolveMfaChallengeTool.MAX_RETRIES} to find MFA code in emails`);
|
|
75
|
+
Logger_1.appLogger.info(`Attempt ${attempt} of ${SolveMfaChallengeTool.MAX_RETRIES} to find MFA code in emails for ${targetEmail}`);
|
|
73
76
|
// Get the body of the latest email for the user.
|
|
74
|
-
const emailBody = await this.fetchLatestMfaEmail(gmail, seenIds);
|
|
77
|
+
const emailBody = await this.fetchLatestMfaEmail(gmail, seenIds, targetEmail);
|
|
75
78
|
// Only process if the email body has changed.
|
|
76
79
|
if (emailBody && emailBody !== lastEmailBody) {
|
|
77
80
|
lastEmailBody = emailBody;
|
|
78
81
|
// Use the GPT client to extract the MFA code.
|
|
79
82
|
const mfaCode = await this.extractMfaCodeWithGpt(context, emailBody);
|
|
80
83
|
if (mfaCode) {
|
|
81
|
-
Logger_1.appLogger.info(`Successfully found MFA code: ${mfaCode}`);
|
|
84
|
+
Logger_1.appLogger.info(`Successfully found MFA code: ${mfaCode} for ${targetEmail}`);
|
|
82
85
|
return mfaCode;
|
|
83
86
|
}
|
|
84
87
|
}
|
|
@@ -89,13 +92,13 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
89
92
|
}
|
|
90
93
|
return null;
|
|
91
94
|
}
|
|
92
|
-
async fetchLatestMfaEmail(gmail, seenIds) {
|
|
95
|
+
async fetchLatestMfaEmail(gmail, seenIds, targetEmail) {
|
|
93
96
|
const lookbackMinutes = 2;
|
|
94
97
|
const cutoff = Date.now() - lookbackMinutes * 60000;
|
|
98
|
+
const searchQuery = `to:${targetEmail} subject:(code OR security OR authentication OR verification OR confirm OR verify) is:unread in:inbox`;
|
|
95
99
|
const threadRes = await gmail.users.threads.list({
|
|
96
100
|
userId: 'me',
|
|
97
|
-
q:
|
|
98
|
-
'is:unread in:inbox',
|
|
101
|
+
q: searchQuery,
|
|
99
102
|
maxResults: 25,
|
|
100
103
|
fields: 'threads(id)',
|
|
101
104
|
});
|
|
@@ -105,7 +108,7 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
105
108
|
userId: 'me',
|
|
106
109
|
id: th.id,
|
|
107
110
|
format: 'metadata',
|
|
108
|
-
fields: 'messages(id,internalDate,labelIds)',
|
|
111
|
+
fields: 'messages(id,internalDate,labelIds,payload)',
|
|
109
112
|
});
|
|
110
113
|
const m = t.data.messages.at(-1); // newest in that thread
|
|
111
114
|
if (!m || seenIds.has(m.id)) {
|
|
@@ -115,12 +118,12 @@ class SolveMfaChallengeTool extends ReplayableInteraction_1.ReplayableInteractio
|
|
|
115
118
|
continue;
|
|
116
119
|
}
|
|
117
120
|
const ts = Number(m.internalDate);
|
|
118
|
-
if (ts
|
|
119
|
-
|
|
121
|
+
if (ts >= cutoff) {
|
|
122
|
+
candidates.push({ id: m.id, ts });
|
|
120
123
|
}
|
|
121
|
-
candidates.push({ id: m.id, ts });
|
|
122
124
|
}
|
|
123
125
|
if (!candidates.length) {
|
|
126
|
+
Logger_1.appLogger.info(`No MFA email candidates found for ${targetEmail}`);
|
|
124
127
|
return null;
|
|
125
128
|
}
|
|
126
129
|
const winner = candidates.sort((a, b) => b.ts - a.ts)[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolveMfaChallenge.js","sourceRoot":"","sources":["../../src/tools/SolveMfaChallenge.ts"],"names":[],"mappings":";;;AAEA,mEAIiC;AACjC,kDAA+C;AAC/C,2CAAoC;AACpC,4CAA4C;AAG5C,6BAAwB;AAEX,QAAA,2BAA2B,GAAG,OAAC,CAAC,MAAM,CAAC;IAClD,aAAa,EAAE,OAAC;SACb,MAAM,EAAE;SACR,QAAQ,CACP,+HAA+H,CAChI;IACH,iBAAiB,EAAE,OAAC;SACjB,MAAM,EAAE;SACR,QAAQ,CACP,uIAAuI,CACxI;IACH,iBAAiB,EAAE,OAAC;SACjB,MAAM,EAAE;SACR,QAAQ,CACP,uIAAuI,CACxI;CACJ,CAAC,CAAC;AACU,QAAA,oCAAoC,GAAG,2CAAmB,CAAC,KAAK,CAC3E,mCAA2B,CAC5B,CAAC;AACW,QAAA,sCAAsC,GACjD,6CAAqB,CAAC,KAAK,CAAC,mCAA2B,CAAC,CAAC;AAE3D,MAAa,qBAAsB,SAAQ,6CAI1C;IAKC;QACE,KAAK,CACH,qBAAqB,CAAC,IAAI,EAC1B,2GAA2G,EAC3G,mCAA2B,EAC3B,4CAAoC,EACpC,8CAAsC,EACtC,IAAI,CACL,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CACV,OAAwB,EACxB,UAAuD,EACvD,OAAgB;QAEhB,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,sBAAsB;QACtB,MAAM,YAAY,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,MAAM,CACzC,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,iBAAiB,CAC7B,CAAC;QACF,YAAY,CAAC,cAAc,CAAC;YAC1B,aAAa,EAAE,UAAU,CAAC,iBAAiB;SAC5C,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,mBAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAElE,mCAAmC;QACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAC7C,OAAO,EACP,KAAK,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"SolveMfaChallenge.js","sourceRoot":"","sources":["../../src/tools/SolveMfaChallenge.ts"],"names":[],"mappings":"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"}
|