@bubblelab/bubble-core 0.1.150 → 0.1.152
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/bubble-bundle.d.ts +6 -6
- package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +37 -0
- package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/browserbase/browserbase.js +80 -0
- package/dist/bubbles/service-bubble/browserbase/browserbase.js.map +1 -1
- package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +33 -0
- package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/browserbase/browserbase.schema.js +30 -0
- package/dist/bubbles/service-bubble/browserbase/browserbase.schema.js.map +1 -1
- package/dist/bubbles/service-bubble/google-drive.d.ts +1 -1
- package/dist/bubbles/service-bubble/google-drive.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/google-drive.js +37 -1
- package/dist/bubbles/service-bubble/google-drive.js.map +1 -1
- package/dist/bubbles/service-bubble/slack/slack.utils.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/slack/slack.utils.js +33 -4
- package/dist/bubbles/service-bubble/slack/slack.utils.js.map +1 -1
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.d.ts +66 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.js +484 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.js.map +1 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.types.d.ts +85 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.types.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.types.js +2 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.types.js.map +1 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-fallback-step.d.ts +27 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-fallback-step.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-fallback-step.js +77 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-fallback-step.js.map +1 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/index.d.ts +4 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/index.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/index.js +3 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/index.js.map +1 -0
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.js +254 -195
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts +2 -0
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.js +346 -229
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts +34 -33
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.js +212 -151
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts +33 -32
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.js +188 -127
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.js.map +1 -1
- package/dist/bubbles.json +73 -2
- package/package.json +2 -2
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts +0 -3
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts.map +0 -1
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js +0 -3
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js.map +0 -1
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +0 -160
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts.map +0 -1
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js +0 -706
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js.map +0 -1
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts +0 -93
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts.map +0 -1
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js +0 -50
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEpE,OAAO,EACL,iBAAiB,GAElB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACL,kCAAkC,EAClC,kCAAkC,
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
import { ToolBubble } from '../../../../types/tool-bubble-class.js';
|
|
2
2
|
import type { BubbleContext } from '../../../../types/bubble.js';
|
|
3
3
|
import { CredentialType } from '@bubblelab/shared-schemas';
|
|
4
|
+
import { z } from 'zod';
|
|
4
5
|
import { type LinkedInReceivedInvitationsToolParamsInput, type LinkedInReceivedInvitationsToolResult } from './schema.js';
|
|
5
6
|
export declare class LinkedInReceivedInvitationsTool<T extends LinkedInReceivedInvitationsToolParamsInput = LinkedInReceivedInvitationsToolParamsInput> extends ToolBubble<T, LinkedInReceivedInvitationsToolResult> {
|
|
6
7
|
static readonly bubbleName: "linkedin-received-invitations-tool";
|
|
7
|
-
static readonly schema:
|
|
8
|
-
operation:
|
|
9
|
-
credentials:
|
|
10
|
-
proxy:
|
|
11
|
-
type:
|
|
12
|
-
}, "strip",
|
|
8
|
+
static readonly schema: z.ZodObject<{
|
|
9
|
+
operation: z.ZodEnum<["get_received_invitations"]>;
|
|
10
|
+
credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
|
|
11
|
+
proxy: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
|
|
12
|
+
type: z.ZodEnum<["none"]>;
|
|
13
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
14
|
type: "none";
|
|
14
15
|
}, {
|
|
15
16
|
type: "none";
|
|
16
|
-
}>,
|
|
17
|
-
type:
|
|
18
|
-
}, "strip",
|
|
17
|
+
}>, z.ZodObject<{
|
|
18
|
+
type: z.ZodEnum<["browserbase"]>;
|
|
19
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
20
|
type: "browserbase";
|
|
20
21
|
}, {
|
|
21
22
|
type: "browserbase";
|
|
22
|
-
}>,
|
|
23
|
-
type:
|
|
24
|
-
proxy:
|
|
25
|
-
id:
|
|
26
|
-
server:
|
|
27
|
-
username:
|
|
28
|
-
password:
|
|
29
|
-
}, "strip",
|
|
23
|
+
}>, z.ZodObject<{
|
|
24
|
+
type: z.ZodEnum<["custom"]>;
|
|
25
|
+
proxy: z.ZodObject<{
|
|
26
|
+
id: z.ZodString;
|
|
27
|
+
server: z.ZodString;
|
|
28
|
+
username: z.ZodOptional<z.ZodString>;
|
|
29
|
+
password: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
30
31
|
id: string;
|
|
31
32
|
server: string;
|
|
32
33
|
password?: string | undefined;
|
|
@@ -37,7 +38,7 @@ export declare class LinkedInReceivedInvitationsTool<T extends LinkedInReceivedI
|
|
|
37
38
|
password?: string | undefined;
|
|
38
39
|
username?: string | undefined;
|
|
39
40
|
}>;
|
|
40
|
-
}, "strip",
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
41
42
|
type: "custom";
|
|
42
43
|
proxy: {
|
|
43
44
|
id: string;
|
|
@@ -54,7 +55,7 @@ export declare class LinkedInReceivedInvitationsTool<T extends LinkedInReceivedI
|
|
|
54
55
|
username?: string | undefined;
|
|
55
56
|
};
|
|
56
57
|
}>]>>;
|
|
57
|
-
}, "strip",
|
|
58
|
+
}, "strip", z.ZodTypeAny, {
|
|
58
59
|
operation: "get_received_invitations";
|
|
59
60
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
60
61
|
proxy?: {
|
|
@@ -87,16 +88,16 @@ export declare class LinkedInReceivedInvitationsTool<T extends LinkedInReceivedI
|
|
|
87
88
|
};
|
|
88
89
|
} | undefined;
|
|
89
90
|
}>;
|
|
90
|
-
static readonly resultSchema:
|
|
91
|
-
operation:
|
|
92
|
-
success:
|
|
93
|
-
invitations:
|
|
94
|
-
name:
|
|
95
|
-
headline:
|
|
96
|
-
mutual_connections:
|
|
97
|
-
received_date:
|
|
98
|
-
profile_url:
|
|
99
|
-
}, "strip",
|
|
91
|
+
static readonly resultSchema: z.ZodObject<{
|
|
92
|
+
operation: z.ZodEnum<["get_received_invitations"]>;
|
|
93
|
+
success: z.ZodBoolean;
|
|
94
|
+
invitations: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
95
|
+
name: z.ZodString;
|
|
96
|
+
headline: z.ZodOptional<z.ZodString>;
|
|
97
|
+
mutual_connections: z.ZodOptional<z.ZodString>;
|
|
98
|
+
received_date: z.ZodString;
|
|
99
|
+
profile_url: z.ZodOptional<z.ZodString>;
|
|
100
|
+
}, "strip", z.ZodTypeAny, {
|
|
100
101
|
name: string;
|
|
101
102
|
received_date: string;
|
|
102
103
|
headline?: string | undefined;
|
|
@@ -109,10 +110,10 @@ export declare class LinkedInReceivedInvitationsTool<T extends LinkedInReceivedI
|
|
|
109
110
|
profile_url?: string | undefined;
|
|
110
111
|
mutual_connections?: string | undefined;
|
|
111
112
|
}>, "many">>;
|
|
112
|
-
total_count:
|
|
113
|
-
message:
|
|
114
|
-
error:
|
|
115
|
-
}, "strip",
|
|
113
|
+
total_count: z.ZodOptional<z.ZodNumber>;
|
|
114
|
+
message: z.ZodOptional<z.ZodString>;
|
|
115
|
+
error: z.ZodString;
|
|
116
|
+
}, "strip", z.ZodTypeAny, {
|
|
116
117
|
error: string;
|
|
117
118
|
success: boolean;
|
|
118
119
|
operation: "get_received_invitations";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAMjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAIL,KAAK,0CAA0C,EAC/C,KAAK,qCAAqC,EAE3C,MAAM,aAAa,CAAC;AAErB,qBAAa,+BAA+B,CAC1C,CAAC,SACC,0CAA0C,GAAG,0CAA0C,CACzF,SAAQ,UAAU,CAAC,CAAC,EAAE,qCAAqC,CAAC;IAC5D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAG,oCAAoC,CAAU;IAC3E,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA+C;IACrE,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA+C;IAC3E,MAAM,CAAC,QAAQ,CAAC,gBAAgB,sDACqB;IACrD,MAAM,CAAC,QAAQ,CAAC,eAAe,uIACmG;IAClI,MAAM,CAAC,QAAQ,CAAC,KAAK,mCAAmC;IACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAA4B;gBAGzC,MAAM,GAAE,CAAkD,EAC1D,OAAO,CAAC,EAAE,aAAa;IAKzB,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;YAOlC,uBAAuB;YAqCvB,iCAAiC;YAqBjC,0BAA0B;YA0B1B,yBAAyB;YA8LzB,qBAAqB;YAcrB,QAAQ;YAaR,eAAe;IAiBvB,aAAa,IAAI,OAAO,CAAC,qCAAqC,CAAC;CA4BtE"}
|
|
@@ -1,72 +1,131 @@
|
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
5
|
+
}
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
1
35
|
import { ToolBubble } from '../../../../types/tool-bubble-class.js';
|
|
36
|
+
import { AIFallbackStep } from '../_shared/ai/ai-fallback-step.js';
|
|
2
37
|
import { BrowserBaseBubble, } from '../../../service-bubble/browserbase/index.js';
|
|
3
38
|
import { CredentialType } from '@bubblelab/shared-schemas';
|
|
39
|
+
import { z } from 'zod';
|
|
4
40
|
import { parseBrowserSessionData, buildProxyConfig } from '../_shared/utils.js';
|
|
5
|
-
import { LinkedInReceivedInvitationsToolParamsSchema, LinkedInReceivedInvitationsToolResultSchema, } from './schema.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
this.contextId = sessionData.contextId;
|
|
30
|
-
this.cookies = sessionData.cookies;
|
|
41
|
+
import { LinkedInReceivedInvitationsToolParamsSchema, LinkedInReceivedInvitationsToolResultSchema, ReceivedInvitationInfoSchema, } from './schema.js';
|
|
42
|
+
let LinkedInReceivedInvitationsTool = (() => {
|
|
43
|
+
let _classSuper = ToolBubble;
|
|
44
|
+
let _instanceExtraInitializers = [];
|
|
45
|
+
let _stepNavigateToReceivedInvitations_decorators;
|
|
46
|
+
let _stepWaitForInvitationsPage_decorators;
|
|
47
|
+
let _stepExtractAllInvitations_decorators;
|
|
48
|
+
return class LinkedInReceivedInvitationsTool extends _classSuper {
|
|
49
|
+
static {
|
|
50
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
51
|
+
_stepNavigateToReceivedInvitations_decorators = [AIFallbackStep('Navigate to received invitations', {
|
|
52
|
+
taskDescription: 'Navigate to the LinkedIn received invitations page',
|
|
53
|
+
})];
|
|
54
|
+
_stepWaitForInvitationsPage_decorators = [AIFallbackStep('Wait for invitations to load', {
|
|
55
|
+
taskDescription: 'Wait for the received invitations list to fully load',
|
|
56
|
+
})];
|
|
57
|
+
_stepExtractAllInvitations_decorators = [AIFallbackStep('Extract all received invitations', {
|
|
58
|
+
taskDescription: 'Extract all received connection invitations by scrolling and clicking View more',
|
|
59
|
+
extractionSchema: z.array(ReceivedInvitationInfoSchema),
|
|
60
|
+
})];
|
|
61
|
+
__esDecorate(this, null, _stepNavigateToReceivedInvitations_decorators, { kind: "method", name: "stepNavigateToReceivedInvitations", static: false, private: false, access: { has: obj => "stepNavigateToReceivedInvitations" in obj, get: obj => obj.stepNavigateToReceivedInvitations }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
62
|
+
__esDecorate(this, null, _stepWaitForInvitationsPage_decorators, { kind: "method", name: "stepWaitForInvitationsPage", static: false, private: false, access: { has: obj => "stepWaitForInvitationsPage" in obj, get: obj => obj.stepWaitForInvitationsPage }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
63
|
+
__esDecorate(this, null, _stepExtractAllInvitations_decorators, { kind: "method", name: "stepExtractAllInvitations", static: false, private: false, access: { has: obj => "stepExtractAllInvitations" in obj, get: obj => obj.stepExtractAllInvitations }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
64
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
31
65
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
throw new Error(result.data.error || 'Failed to start browser session');
|
|
66
|
+
static bubbleName = 'linkedin-received-invitations-tool';
|
|
67
|
+
static schema = LinkedInReceivedInvitationsToolParamsSchema;
|
|
68
|
+
static resultSchema = LinkedInReceivedInvitationsToolResultSchema;
|
|
69
|
+
static shortDescription = 'Extract received LinkedIn connection invitations';
|
|
70
|
+
static longDescription = 'Recordable LinkedIn Received Invitations Tool. Supports pagination via scrolling and "View more" / "Load more" button clicks.';
|
|
71
|
+
static alias = 'linkedin-received-invitations';
|
|
72
|
+
static type = 'tool';
|
|
73
|
+
sessionId = (__runInitializers(this, _instanceExtraInitializers), null);
|
|
74
|
+
contextId = null;
|
|
75
|
+
cookies = null;
|
|
76
|
+
constructor(params = { operation: 'get_received_invitations' }, context) {
|
|
77
|
+
super(params, context);
|
|
45
78
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
79
|
+
chooseCredential() {
|
|
80
|
+
const { credentials } = this.params;
|
|
81
|
+
return credentials?.[CredentialType.LINKEDIN_CRED];
|
|
82
|
+
}
|
|
83
|
+
async stepStartBrowserSession() {
|
|
84
|
+
if (this.sessionId)
|
|
85
|
+
return;
|
|
86
|
+
const sessionData = parseBrowserSessionData(this.chooseCredential());
|
|
87
|
+
if (sessionData) {
|
|
88
|
+
this.contextId = sessionData.contextId;
|
|
89
|
+
this.cookies = sessionData.cookies;
|
|
90
|
+
}
|
|
91
|
+
const proxyConfig = buildProxyConfig(this.params.proxy);
|
|
92
|
+
const browserbase = new BrowserBaseBubble({
|
|
93
|
+
operation: 'start_session',
|
|
94
|
+
context_id: this.contextId || undefined,
|
|
95
|
+
cookies: this.cookies || undefined,
|
|
96
|
+
credentials: this.params.credentials,
|
|
97
|
+
stealth: { solveCaptchas: true },
|
|
98
|
+
timeout_seconds: 1200, // 10 minutes for full session (navigate + scroll + extract)
|
|
99
|
+
...proxyConfig,
|
|
100
|
+
}, this.context, 'startsession');
|
|
101
|
+
const result = await browserbase.action();
|
|
102
|
+
if (!result.data.success || !result.data.session_id) {
|
|
103
|
+
throw new Error(result.data.error || 'Failed to start browser session');
|
|
104
|
+
}
|
|
105
|
+
this.sessionId = result.data.session_id;
|
|
106
|
+
if (result.data.context_id)
|
|
107
|
+
this.contextId = result.data.context_id;
|
|
108
|
+
console.log(`[RecordableReceivedInvitations] Session started: ${this.sessionId}`);
|
|
109
|
+
const ip = await this.detectIPAddress();
|
|
110
|
+
if (ip)
|
|
111
|
+
console.log(`[RecordableReceivedInvitations] Browser IP: ${ip}`);
|
|
112
|
+
}
|
|
113
|
+
async stepNavigateToReceivedInvitations() {
|
|
114
|
+
if (!this.sessionId)
|
|
115
|
+
throw new Error('No active session');
|
|
116
|
+
const browserbase = new BrowserBaseBubble({
|
|
117
|
+
operation: 'navigate',
|
|
118
|
+
session_id: this.sessionId,
|
|
119
|
+
url: 'https://www.linkedin.com/mynetwork/invitation-manager/',
|
|
120
|
+
wait_until: 'domcontentloaded',
|
|
121
|
+
timeout: 30000,
|
|
122
|
+
}, this.context, 'navigate');
|
|
123
|
+
const result = await browserbase.action();
|
|
124
|
+
if (!result.data.success)
|
|
125
|
+
throw new Error(result.data.error || 'Navigation failed');
|
|
126
|
+
}
|
|
127
|
+
async stepWaitForInvitationsPage() {
|
|
128
|
+
const checkScript = `(() => {
|
|
70
129
|
const buttons = document.querySelectorAll('button');
|
|
71
130
|
let hasAcceptButton = false;
|
|
72
131
|
for (const btn of buttons) {
|
|
@@ -78,23 +137,23 @@ export class LinkedInReceivedInvitationsTool extends ToolBubble {
|
|
|
78
137
|
const peopleLabel = document.body.innerText.match(/People\\s*\\(\\d+\\)/i);
|
|
79
138
|
return hasAcceptButton || !!peopleLabel;
|
|
80
139
|
})()`;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
140
|
+
for (let attempt = 1; attempt <= 15; attempt++) {
|
|
141
|
+
const found = await this.evaluate(checkScript);
|
|
142
|
+
if (found)
|
|
143
|
+
return true;
|
|
144
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
145
|
+
}
|
|
146
|
+
return false;
|
|
86
147
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
for (let iteration = 0; iteration < MAX_SCROLL_ITERATIONS; iteration++) {
|
|
97
|
-
const scrollResult = (await this.evaluate(`
|
|
148
|
+
async stepExtractAllInvitations() {
|
|
149
|
+
const MAX_SCROLL_ITERATIONS = 500;
|
|
150
|
+
const MAX_STALE_ROUNDS = 10;
|
|
151
|
+
const SCROLL_STEP = 1200;
|
|
152
|
+
const SCROLL_WAIT_MS = 2200;
|
|
153
|
+
let prevAcceptCount = 0;
|
|
154
|
+
let staleRounds = 0;
|
|
155
|
+
for (let iteration = 0; iteration < MAX_SCROLL_ITERATIONS; iteration++) {
|
|
156
|
+
const scrollResult = (await this.evaluate(`
|
|
98
157
|
(() => {
|
|
99
158
|
const acceptCount = Array.from(document.querySelectorAll('button')).filter(btn =>
|
|
100
159
|
(btn.innerText || btn.textContent || '').trim().toLowerCase() === 'accept'
|
|
@@ -145,23 +204,23 @@ export class LinkedInReceivedInvitationsTool extends ToolBubble {
|
|
|
145
204
|
return { acceptCount, viewMoreClicked };
|
|
146
205
|
})()
|
|
147
206
|
`));
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
207
|
+
const currentCount = scrollResult.acceptCount;
|
|
208
|
+
if (scrollResult.viewMoreClicked) {
|
|
209
|
+
console.log(`[RecordableReceivedInvitations] Clicked "View more" at scroll ${iteration + 1}`);
|
|
210
|
+
}
|
|
211
|
+
if (currentCount > prevAcceptCount) {
|
|
212
|
+
staleRounds = 0;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
staleRounds++;
|
|
216
|
+
if (staleRounds >= MAX_STALE_ROUNDS)
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
prevAcceptCount = currentCount;
|
|
220
|
+
const waitMs = scrollResult.viewMoreClicked ? 3200 : SCROLL_WAIT_MS;
|
|
221
|
+
await new Promise((r) => setTimeout(r, waitMs));
|
|
159
222
|
}
|
|
160
|
-
|
|
161
|
-
const waitMs = scrollResult.viewMoreClicked ? 3200 : SCROLL_WAIT_MS;
|
|
162
|
-
await new Promise((r) => setTimeout(r, waitMs));
|
|
163
|
-
}
|
|
164
|
-
const result = (await this.evaluate(`
|
|
223
|
+
const result = (await this.evaluate(`
|
|
165
224
|
(() => {
|
|
166
225
|
const invitations = [];
|
|
167
226
|
const acceptButtons = Array.from(document.querySelectorAll('button')).filter(btn =>
|
|
@@ -265,30 +324,30 @@ export class LinkedInReceivedInvitationsTool extends ToolBubble {
|
|
|
265
324
|
return { invitations: unique, total };
|
|
266
325
|
})()
|
|
267
326
|
`));
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
327
|
+
return result;
|
|
328
|
+
}
|
|
329
|
+
async stepEndBrowserSession() {
|
|
330
|
+
if (!this.sessionId)
|
|
331
|
+
return;
|
|
332
|
+
const browserbase = new BrowserBaseBubble({ operation: 'end_session', session_id: this.sessionId }, this.context, 'endsession');
|
|
333
|
+
await browserbase.action();
|
|
334
|
+
console.log(`[RecordableReceivedInvitations] Session ended: ${this.sessionId}`);
|
|
335
|
+
this.sessionId = null;
|
|
336
|
+
}
|
|
337
|
+
async evaluate(script) {
|
|
338
|
+
if (!this.sessionId)
|
|
339
|
+
throw new Error('No active session');
|
|
340
|
+
const browserbase = new BrowserBaseBubble({ operation: 'evaluate', session_id: this.sessionId, script }, this.context, 'evaluate');
|
|
341
|
+
const result = await browserbase.action();
|
|
342
|
+
if (!result.data.success)
|
|
343
|
+
throw new Error(result.data.error || 'Evaluation failed');
|
|
344
|
+
return result.data.result;
|
|
345
|
+
}
|
|
346
|
+
async detectIPAddress() {
|
|
347
|
+
if (!this.sessionId)
|
|
348
|
+
return null;
|
|
349
|
+
try {
|
|
350
|
+
return (await this.evaluate(`
|
|
292
351
|
(async () => {
|
|
293
352
|
try {
|
|
294
353
|
const r = await fetch('https://api.ipify.org?format=json');
|
|
@@ -297,38 +356,40 @@ export class LinkedInReceivedInvitationsTool extends ToolBubble {
|
|
|
297
356
|
} catch { return null; }
|
|
298
357
|
})()
|
|
299
358
|
`));
|
|
359
|
+
}
|
|
360
|
+
catch {
|
|
361
|
+
return null;
|
|
362
|
+
}
|
|
300
363
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
finally {
|
|
330
|
-
await this.stepEndBrowserSession();
|
|
364
|
+
async performAction() {
|
|
365
|
+
try {
|
|
366
|
+
await this.stepStartBrowserSession();
|
|
367
|
+
await this.stepNavigateToReceivedInvitations();
|
|
368
|
+
const pageReady = await this.stepWaitForInvitationsPage();
|
|
369
|
+
if (!pageReady)
|
|
370
|
+
console.log('[RecordableReceivedInvitations] Page slow to load, continuing');
|
|
371
|
+
const { invitations, total } = await this.stepExtractAllInvitations();
|
|
372
|
+
return {
|
|
373
|
+
operation: 'get_received_invitations',
|
|
374
|
+
success: true,
|
|
375
|
+
invitations,
|
|
376
|
+
total_count: total,
|
|
377
|
+
message: `Found ${invitations.length} received invitations`,
|
|
378
|
+
error: '',
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
return {
|
|
383
|
+
operation: 'get_received_invitations',
|
|
384
|
+
success: false,
|
|
385
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
finally {
|
|
389
|
+
await this.stepEndBrowserSession();
|
|
390
|
+
}
|
|
331
391
|
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
392
|
+
};
|
|
393
|
+
})();
|
|
394
|
+
export { LinkedInReceivedInvitationsTool };
|
|
334
395
|
//# sourceMappingURL=tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEpE,OAAO,EACL,iBAAiB,GAElB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACL,2CAA2C,EAC3C,2CAA2C,
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EACL,iBAAiB,GAElB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACL,2CAA2C,EAC3C,2CAA2C,EAC3C,4BAA4B,GAI7B,MAAM,aAAa,CAAC;IAER,+BAA+B;sBAGlC,UAAU;;;;;iBAHP,+BAGX,SAAQ,WAAoD;;;6DA+D3D,cAAc,CAAC,kCAAkC,EAAE;oBAClD,eAAe,EAAE,oDAAoD;iBACtE,CAAC;sDAmBD,cAAc,CAAC,8BAA8B,EAAE;oBAC9C,eAAe,EAAE,sDAAsD;iBACxE,CAAC;qDAsBD,cAAc,CAAC,kCAAkC,EAAE;oBAClD,eAAe,EACb,iFAAiF;oBACnF,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC;iBACxD,CAAC;YA9CF,sPAAc,iCAAiC,6DAgB9C;YAKD,iOAAc,0BAA0B,6DAmBvC;YAOD,8NAAc,yBAAyB,6DA4LtC;;;QA5SD,MAAM,CAAU,UAAU,GAAG,oCAA6C,CAAC;QAC3E,MAAM,CAAU,MAAM,GAAG,2CAA2C,CAAC;QACrE,MAAM,CAAU,YAAY,GAAG,2CAA2C,CAAC;QAC3E,MAAM,CAAU,gBAAgB,GAC9B,kDAAkD,CAAC;QACrD,MAAM,CAAU,eAAe,GAC7B,+HAA+H,CAAC;QAClI,MAAM,CAAU,KAAK,GAAG,+BAA+B,CAAC;QACxD,MAAM,CAAU,IAAI,GAAG,MAAM,CAAC;QAEtB,SAAS,IAdN,mDAA+B,EAcP,IAAI,EAAC;QAChC,SAAS,GAAkB,IAAI,CAAC;QAChC,OAAO,GAAuB,IAAI,CAAC;QAE3C,YACE,SAAY,EAAE,SAAS,EAAE,0BAA0B,EAAO,EAC1D,OAAuB;YAEvB,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzB,CAAC;QAES,gBAAgB;YACxB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAE5B,CAAC;YACF,OAAO,WAAW,EAAE,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACrD,CAAC;QAEO,KAAK,CAAC,uBAAuB;YACnC,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC3B,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACrE,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;gBACvC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YACrC,CAAC;YACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,IAAI,iBAAiB,CACvC;gBACE,SAAS,EAAE,eAAwB;gBACnC,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,SAAS;gBACvC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS;gBAClC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;gBACpC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;gBAChC,eAAe,EAAE,IAAI,EAAE,4DAA4D;gBACnF,GAAG,WAAW;aACf,EACD,IAAI,CAAC,OAAO,EACZ,cAAc,CACf,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,iCAAiC,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACxC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU;gBAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACpE,OAAO,CAAC,GAAG,CACT,oDAAoD,IAAI,CAAC,SAAS,EAAE,CACrE,CAAC;YACF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,IAAI,EAAE;gBAAE,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;QAKO,KAAK,CAAC,iCAAiC;YAC7C,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,IAAI,iBAAiB,CACvC;gBACE,SAAS,EAAE,UAAmB;gBAC9B,UAAU,EAAE,IAAI,CAAC,SAAS;gBAC1B,GAAG,EAAE,wDAAwD;gBAC7D,UAAU,EAAE,kBAAkB;gBAC9B,OAAO,EAAE,KAAK;aACf,EACD,IAAI,CAAC,OAAO,EACZ,UAAU,CACX,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;gBACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC,CAAC;QAC9D,CAAC;QAKO,KAAK,CAAC,0BAA0B;YACtC,MAAM,WAAW,GAAG;;;;;;;;;;;SAWf,CAAC;YACN,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;gBAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAC/C,IAAI,KAAK;oBAAE,OAAO,IAAI,CAAC;gBACvB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAOO,KAAK,CAAC,yBAAyB;YAIrC,MAAM,qBAAqB,GAAG,GAAG,CAAC;YAClC,MAAM,gBAAgB,GAAG,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC;YACzB,MAAM,cAAc,GAAG,IAAI,CAAC;YAE5B,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAI,WAAW,GAAG,CAAC,CAAC;YAEpB,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,qBAAqB,EAAE,SAAS,EAAE,EAAE,CAAC;gBACvE,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC;;;;;+BAKjB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CnC,CAAC,CAAsD,CAAC;gBAEzD,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC;gBAC9C,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;oBACjC,OAAO,CAAC,GAAG,CACT,iEAAiE,SAAS,GAAG,CAAC,EAAE,CACjF,CAAC;gBACJ,CAAC;gBACD,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;oBACnC,WAAW,GAAG,CAAC,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,WAAW,EAAE,CAAC;oBACd,IAAI,WAAW,IAAI,gBAAgB;wBAAE,MAAM;gBAC7C,CAAC;gBACD,eAAe,GAAG,YAAY,CAAC;gBAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;gBACpE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAClD,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuGnC,CAAC,CAA6D,CAAC;YAEhE,OAAO,MAAM,CAAC;QAChB,CAAC;QAEO,KAAK,CAAC,qBAAqB;YACjC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,MAAM,WAAW,GAAG,IAAI,iBAAiB,CACvC,EAAE,SAAS,EAAE,aAAsB,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,EACjE,IAAI,CAAC,OAAO,EACZ,YAAY,CACb,CAAC;YACF,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CACT,kDAAkD,IAAI,CAAC,SAAS,EAAE,CACnE,CAAC;YACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAEO,KAAK,CAAC,QAAQ,CAAC,MAAc;YACnC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,IAAI,iBAAiB,CACvC,EAAE,SAAS,EAAE,UAAmB,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,EACtE,IAAI,CAAC,OAAO,EACZ,UAAU,CACX,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;gBACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC,CAAC;YAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5B,CAAC;QAEO,KAAK,CAAC,eAAe;YAC3B,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;YACjC,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC;;;;;;;;OAQ3B,CAAC,CAAkB,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,KAAK,CAAC,aAAa;YACjB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,iCAAiC,EAAE,CAAC;gBAC/C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAC1D,IAAI,CAAC,SAAS;oBACZ,OAAO,CAAC,GAAG,CACT,+DAA+D,CAChE,CAAC;gBACJ,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACtE,OAAO;oBACL,SAAS,EAAE,0BAA0B;oBACrC,OAAO,EAAE,IAAI;oBACb,WAAW;oBACX,WAAW,EAAE,KAAK;oBAClB,OAAO,EAAE,SAAS,WAAW,CAAC,MAAM,uBAAuB;oBAC3D,KAAK,EAAE,EAAE;iBACV,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,SAAS,EAAE,0BAA0B;oBACrC,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACrC,CAAC;QACH,CAAC;;;SAzXU,+BAA+B"}
|