@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,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 LinkedInSentInvitationsToolParamsInput, type LinkedInSentInvitationsToolResult } from './schema.js';
|
|
5
6
|
export declare class LinkedInSentInvitationsTool<T extends LinkedInSentInvitationsToolParamsInput = LinkedInSentInvitationsToolParamsInput> extends ToolBubble<T, LinkedInSentInvitationsToolResult> {
|
|
6
7
|
static readonly bubbleName: "linkedin-sent-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_sent_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 LinkedInSentInvitationsTool<T extends LinkedInSentInvitatio
|
|
|
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 LinkedInSentInvitationsTool<T extends LinkedInSentInvitatio
|
|
|
54
55
|
username?: string | undefined;
|
|
55
56
|
};
|
|
56
57
|
}>]>>;
|
|
57
|
-
}, "strip",
|
|
58
|
+
}, "strip", z.ZodTypeAny, {
|
|
58
59
|
operation: "get_sent_invitations";
|
|
59
60
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
60
61
|
proxy?: {
|
|
@@ -87,15 +88,15 @@ export declare class LinkedInSentInvitationsTool<T extends LinkedInSentInvitatio
|
|
|
87
88
|
};
|
|
88
89
|
} | undefined;
|
|
89
90
|
}>;
|
|
90
|
-
static readonly resultSchema:
|
|
91
|
-
operation:
|
|
92
|
-
success:
|
|
93
|
-
invitations:
|
|
94
|
-
name:
|
|
95
|
-
headline:
|
|
96
|
-
sent_date:
|
|
97
|
-
profile_url:
|
|
98
|
-
}, "strip",
|
|
91
|
+
static readonly resultSchema: z.ZodObject<{
|
|
92
|
+
operation: z.ZodEnum<["get_sent_invitations"]>;
|
|
93
|
+
success: z.ZodBoolean;
|
|
94
|
+
invitations: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
95
|
+
name: z.ZodString;
|
|
96
|
+
headline: z.ZodOptional<z.ZodString>;
|
|
97
|
+
sent_date: z.ZodString;
|
|
98
|
+
profile_url: z.ZodOptional<z.ZodString>;
|
|
99
|
+
}, "strip", z.ZodTypeAny, {
|
|
99
100
|
name: string;
|
|
100
101
|
sent_date: string;
|
|
101
102
|
headline?: string | undefined;
|
|
@@ -106,10 +107,10 @@ export declare class LinkedInSentInvitationsTool<T extends LinkedInSentInvitatio
|
|
|
106
107
|
headline?: string | undefined;
|
|
107
108
|
profile_url?: string | undefined;
|
|
108
109
|
}>, "many">>;
|
|
109
|
-
total_count:
|
|
110
|
-
message:
|
|
111
|
-
error:
|
|
112
|
-
}, "strip",
|
|
110
|
+
total_count: z.ZodOptional<z.ZodNumber>;
|
|
111
|
+
message: z.ZodOptional<z.ZodString>;
|
|
112
|
+
error: z.ZodString;
|
|
113
|
+
}, "strip", z.ZodTypeAny, {
|
|
113
114
|
error: string;
|
|
114
115
|
success: boolean;
|
|
115
116
|
operation: "get_sent_invitations";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-sent-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-sent-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,sCAAsC,EAC3C,KAAK,iCAAiC,EAEvC,MAAM,aAAa,CAAC;AAErB,qBAAa,2BAA2B,CACtC,CAAC,SACC,sCAAsC,GAAG,sCAAsC,CACjF,SAAQ,UAAU,CAAC,CAAC,EAAE,iCAAiC,CAAC;IACxD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAG,gCAAgC,CAAU;IACvE,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA2C;IACjE,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA2C;IACvE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,kDACiB;IACjD,MAAM,CAAC,QAAQ,CAAC,eAAe,gGACgE;IAC/F,MAAM,CAAC,QAAQ,CAAC,KAAK,+BAA+B;IACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAA4B;gBAGzC,MAAM,GAAE,CAA8C,EACtD,OAAO,CAAC,EAAE,aAAa;IAKzB,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;YAOlC,uBAAuB;YAoCvB,6BAA6B;YAqB7B,0BAA0B;YAwB1B,sBAAsB;YAsFtB,qBAAqB;YAYrB,QAAQ;YAaR,eAAe;IAiBvB,aAAa,IAAI,OAAO,CAAC,iCAAiC,CAAC;CA4BlE"}
|
|
@@ -1,71 +1,130 @@
|
|
|
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 { LinkedInSentInvitationsToolParamsSchema, LinkedInSentInvitationsToolResultSchema, } 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 { LinkedInSentInvitationsToolParamsSchema, LinkedInSentInvitationsToolResultSchema, SentInvitationInfoSchema, } from './schema.js';
|
|
42
|
+
let LinkedInSentInvitationsTool = (() => {
|
|
43
|
+
let _classSuper = ToolBubble;
|
|
44
|
+
let _instanceExtraInitializers = [];
|
|
45
|
+
let _stepNavigateToSentInvitations_decorators;
|
|
46
|
+
let _stepWaitForInvitationsPage_decorators;
|
|
47
|
+
let _stepExtractInvitations_decorators;
|
|
48
|
+
return class LinkedInSentInvitationsTool extends _classSuper {
|
|
49
|
+
static {
|
|
50
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
51
|
+
_stepNavigateToSentInvitations_decorators = [AIFallbackStep('Navigate to sent invitations', {
|
|
52
|
+
taskDescription: 'Navigate to the LinkedIn sent invitations page',
|
|
53
|
+
})];
|
|
54
|
+
_stepWaitForInvitationsPage_decorators = [AIFallbackStep('Wait for invitations to load', {
|
|
55
|
+
taskDescription: 'Wait for the sent invitations list to load',
|
|
56
|
+
})];
|
|
57
|
+
_stepExtractInvitations_decorators = [AIFallbackStep('Extract sent invitations', {
|
|
58
|
+
taskDescription: 'Extract all sent connection invitations',
|
|
59
|
+
extractionSchema: z.array(SentInvitationInfoSchema),
|
|
60
|
+
})];
|
|
61
|
+
__esDecorate(this, null, _stepNavigateToSentInvitations_decorators, { kind: "method", name: "stepNavigateToSentInvitations", static: false, private: false, access: { has: obj => "stepNavigateToSentInvitations" in obj, get: obj => obj.stepNavigateToSentInvitations }, 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, _stepExtractInvitations_decorators, { kind: "method", name: "stepExtractInvitations", static: false, private: false, access: { has: obj => "stepExtractInvitations" in obj, get: obj => obj.stepExtractInvitations }, 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
|
-
|
|
66
|
+
static bubbleName = 'linkedin-sent-invitations-tool';
|
|
67
|
+
static schema = LinkedInSentInvitationsToolParamsSchema;
|
|
68
|
+
static resultSchema = LinkedInSentInvitationsToolResultSchema;
|
|
69
|
+
static shortDescription = 'Extract sent LinkedIn connection invitations';
|
|
70
|
+
static longDescription = 'Recordable LinkedIn Sent Invitations Tool for extracting pending sent connection requests.';
|
|
71
|
+
static alias = 'linkedin-sent-invitations';
|
|
72
|
+
static type = 'tool';
|
|
73
|
+
sessionId = (__runInitializers(this, _instanceExtraInitializers), null);
|
|
74
|
+
contextId = null;
|
|
75
|
+
cookies = null;
|
|
76
|
+
constructor(params = { operation: 'get_sent_invitations' }, context) {
|
|
77
|
+
super(params, context);
|
|
44
78
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
+
...proxyConfig,
|
|
99
|
+
}, this.context, 'startsession');
|
|
100
|
+
const result = await browserbase.action();
|
|
101
|
+
if (!result.data.success || !result.data.session_id) {
|
|
102
|
+
throw new Error(result.data.error || 'Failed to start browser session');
|
|
103
|
+
}
|
|
104
|
+
this.sessionId = result.data.session_id;
|
|
105
|
+
if (result.data.context_id)
|
|
106
|
+
this.contextId = result.data.context_id;
|
|
107
|
+
console.log(`[RecordableSentInvitations] Session started: ${this.sessionId}`);
|
|
108
|
+
const ip = await this.detectIPAddress();
|
|
109
|
+
if (ip)
|
|
110
|
+
console.log(`[RecordableSentInvitations] Browser IP: ${ip}`);
|
|
111
|
+
}
|
|
112
|
+
async stepNavigateToSentInvitations() {
|
|
113
|
+
if (!this.sessionId)
|
|
114
|
+
throw new Error('No active session');
|
|
115
|
+
const browserbase = new BrowserBaseBubble({
|
|
116
|
+
operation: 'navigate',
|
|
117
|
+
session_id: this.sessionId,
|
|
118
|
+
url: 'https://www.linkedin.com/mynetwork/invitation-manager/sent/',
|
|
119
|
+
wait_until: 'domcontentloaded',
|
|
120
|
+
timeout: 30000,
|
|
121
|
+
}, this.context, 'navigate');
|
|
122
|
+
const result = await browserbase.action();
|
|
123
|
+
if (!result.data.success)
|
|
124
|
+
throw new Error(result.data.error || 'Navigation failed');
|
|
125
|
+
}
|
|
126
|
+
async stepWaitForInvitationsPage() {
|
|
127
|
+
const checkScript = `(() => {
|
|
69
128
|
const buttons = document.querySelectorAll('button');
|
|
70
129
|
let sentTabFound = false, hasInvitations = false;
|
|
71
130
|
for (const btn of buttons) {
|
|
@@ -76,16 +135,16 @@ export class LinkedInSentInvitationsTool extends ToolBubble {
|
|
|
76
135
|
const peopleLabel = document.body.innerText.match(/People\\s*\\(\\d+\\)/i);
|
|
77
136
|
return sentTabFound && (hasInvitations || peopleLabel);
|
|
78
137
|
})()`;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
138
|
+
for (let attempt = 1; attempt <= 15; attempt++) {
|
|
139
|
+
const found = await this.evaluate(checkScript);
|
|
140
|
+
if (found)
|
|
141
|
+
return true;
|
|
142
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
84
145
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
async stepExtractInvitations() {
|
|
88
|
-
const result = (await this.evaluate(`
|
|
146
|
+
async stepExtractInvitations() {
|
|
147
|
+
const result = (await this.evaluate(`
|
|
89
148
|
(() => {
|
|
90
149
|
const invitations = [];
|
|
91
150
|
const withdrawButtons = Array.from(document.querySelectorAll('button')).filter(btn =>
|
|
@@ -164,30 +223,30 @@ export class LinkedInSentInvitationsTool extends ToolBubble {
|
|
|
164
223
|
return { invitations, total };
|
|
165
224
|
})()
|
|
166
225
|
`));
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
async stepEndBrowserSession() {
|
|
229
|
+
if (!this.sessionId)
|
|
230
|
+
return;
|
|
231
|
+
const browserbase = new BrowserBaseBubble({ operation: 'end_session', session_id: this.sessionId }, this.context, 'endsession');
|
|
232
|
+
await browserbase.action();
|
|
233
|
+
console.log(`[RecordableSentInvitations] Session ended: ${this.sessionId}`);
|
|
234
|
+
this.sessionId = null;
|
|
235
|
+
}
|
|
236
|
+
async evaluate(script) {
|
|
237
|
+
if (!this.sessionId)
|
|
238
|
+
throw new Error('No active session');
|
|
239
|
+
const browserbase = new BrowserBaseBubble({ operation: 'evaluate', session_id: this.sessionId, script }, this.context, 'evaluate');
|
|
240
|
+
const result = await browserbase.action();
|
|
241
|
+
if (!result.data.success)
|
|
242
|
+
throw new Error(result.data.error || 'Evaluation failed');
|
|
243
|
+
return result.data.result;
|
|
244
|
+
}
|
|
245
|
+
async detectIPAddress() {
|
|
246
|
+
if (!this.sessionId)
|
|
247
|
+
return null;
|
|
248
|
+
try {
|
|
249
|
+
return (await this.evaluate(`
|
|
191
250
|
(async () => {
|
|
192
251
|
try {
|
|
193
252
|
const r = await fetch('https://api.ipify.org?format=json');
|
|
@@ -196,38 +255,40 @@ export class LinkedInSentInvitationsTool extends ToolBubble {
|
|
|
196
255
|
} catch { return null; }
|
|
197
256
|
})()
|
|
198
257
|
`));
|
|
258
|
+
}
|
|
259
|
+
catch {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
199
262
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
finally {
|
|
229
|
-
await this.stepEndBrowserSession();
|
|
263
|
+
async performAction() {
|
|
264
|
+
try {
|
|
265
|
+
await this.stepStartBrowserSession();
|
|
266
|
+
await this.stepNavigateToSentInvitations();
|
|
267
|
+
const pageReady = await this.stepWaitForInvitationsPage();
|
|
268
|
+
if (!pageReady)
|
|
269
|
+
console.log('[RecordableSentInvitations] Page slow to load, continuing');
|
|
270
|
+
const { invitations, total } = await this.stepExtractInvitations();
|
|
271
|
+
return {
|
|
272
|
+
operation: 'get_sent_invitations',
|
|
273
|
+
success: true,
|
|
274
|
+
invitations,
|
|
275
|
+
total_count: total,
|
|
276
|
+
message: `Found ${invitations.length} sent invitations`,
|
|
277
|
+
error: '',
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
catch (error) {
|
|
281
|
+
return {
|
|
282
|
+
operation: 'get_sent_invitations',
|
|
283
|
+
success: false,
|
|
284
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
finally {
|
|
288
|
+
await this.stepEndBrowserSession();
|
|
289
|
+
}
|
|
230
290
|
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
291
|
+
};
|
|
292
|
+
})();
|
|
293
|
+
export { LinkedInSentInvitationsTool };
|
|
233
294
|
//# sourceMappingURL=tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-sent-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,uCAAuC,EACvC,uCAAuC,
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.ts"],"names":[],"mappings":"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"}
|