@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.
Files changed (61) hide show
  1. package/dist/bubble-bundle.d.ts +6 -6
  2. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +37 -0
  3. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts.map +1 -1
  4. package/dist/bubbles/service-bubble/browserbase/browserbase.js +80 -0
  5. package/dist/bubbles/service-bubble/browserbase/browserbase.js.map +1 -1
  6. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +33 -0
  7. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts.map +1 -1
  8. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.js +30 -0
  9. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.js.map +1 -1
  10. package/dist/bubbles/service-bubble/google-drive.d.ts +1 -1
  11. package/dist/bubbles/service-bubble/google-drive.d.ts.map +1 -1
  12. package/dist/bubbles/service-bubble/google-drive.js +37 -1
  13. package/dist/bubbles/service-bubble/google-drive.js.map +1 -1
  14. package/dist/bubbles/service-bubble/slack/slack.utils.d.ts.map +1 -1
  15. package/dist/bubbles/service-bubble/slack/slack.utils.js +33 -4
  16. package/dist/bubbles/service-bubble/slack/slack.utils.js.map +1 -1
  17. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.d.ts +66 -0
  18. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.d.ts.map +1 -0
  19. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.js +484 -0
  20. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.js.map +1 -0
  21. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.types.d.ts +85 -0
  22. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.types.d.ts.map +1 -0
  23. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.types.js +2 -0
  24. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-browser-agent.types.js.map +1 -0
  25. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-fallback-step.d.ts +27 -0
  26. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-fallback-step.d.ts.map +1 -0
  27. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-fallback-step.js +77 -0
  28. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/ai-fallback-step.js.map +1 -0
  29. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/index.d.ts +4 -0
  30. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/index.d.ts.map +1 -0
  31. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/index.js +3 -0
  32. package/dist/bubbles/tool-bubble/browser-tools/_shared/ai/index.js.map +1 -0
  33. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.d.ts.map +1 -1
  34. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.js +254 -195
  35. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.js.map +1 -1
  36. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts +2 -0
  37. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts.map +1 -1
  38. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.js +346 -229
  39. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.js.map +1 -1
  40. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts +34 -33
  41. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts.map +1 -1
  42. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.js +212 -151
  43. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.js.map +1 -1
  44. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts +33 -32
  45. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts.map +1 -1
  46. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.js +188 -127
  47. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.js.map +1 -1
  48. package/dist/bubbles.json +73 -2
  49. package/package.json +2 -2
  50. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts +0 -3
  51. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts.map +0 -1
  52. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js +0 -3
  53. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js.map +0 -1
  54. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +0 -160
  55. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts.map +0 -1
  56. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js +0 -706
  57. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js.map +0 -1
  58. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts +0 -93
  59. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts.map +0 -1
  60. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js +0 -50
  61. 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: import("zod").ZodObject<{
8
- operation: import("zod").ZodEnum<["get_sent_invitations"]>;
9
- credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
10
- proxy: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodObject<{
11
- type: import("zod").ZodEnum<["none"]>;
12
- }, "strip", import("zod").ZodTypeAny, {
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
- }>, import("zod").ZodObject<{
17
- type: import("zod").ZodEnum<["browserbase"]>;
18
- }, "strip", import("zod").ZodTypeAny, {
17
+ }>, z.ZodObject<{
18
+ type: z.ZodEnum<["browserbase"]>;
19
+ }, "strip", z.ZodTypeAny, {
19
20
  type: "browserbase";
20
21
  }, {
21
22
  type: "browserbase";
22
- }>, import("zod").ZodObject<{
23
- type: import("zod").ZodEnum<["custom"]>;
24
- proxy: import("zod").ZodObject<{
25
- id: import("zod").ZodString;
26
- server: import("zod").ZodString;
27
- username: import("zod").ZodOptional<import("zod").ZodString>;
28
- password: import("zod").ZodOptional<import("zod").ZodString>;
29
- }, "strip", import("zod").ZodTypeAny, {
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", import("zod").ZodTypeAny, {
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", import("zod").ZodTypeAny, {
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: import("zod").ZodObject<{
91
- operation: import("zod").ZodEnum<["get_sent_invitations"]>;
92
- success: import("zod").ZodBoolean;
93
- invitations: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
94
- name: import("zod").ZodString;
95
- headline: import("zod").ZodOptional<import("zod").ZodString>;
96
- sent_date: import("zod").ZodString;
97
- profile_url: import("zod").ZodOptional<import("zod").ZodString>;
98
- }, "strip", import("zod").ZodTypeAny, {
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: import("zod").ZodOptional<import("zod").ZodNumber>;
110
- message: import("zod").ZodOptional<import("zod").ZodString>;
111
- error: import("zod").ZodString;
112
- }, "strip", import("zod").ZodTypeAny, {
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;AAKjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAGL,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;YAiCvB,6BAA6B;YAkB7B,0BAA0B;YAoB1B,sBAAsB;YAsFtB,qBAAqB;YAYrB,QAAQ;YAaR,eAAe;IAiBvB,aAAa,IAAI,OAAO,CAAC,iCAAiC,CAAC;CA4BlE"}
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
- export class LinkedInSentInvitationsTool extends ToolBubble {
7
- static bubbleName = 'linkedin-sent-invitations-tool';
8
- static schema = LinkedInSentInvitationsToolParamsSchema;
9
- static resultSchema = LinkedInSentInvitationsToolResultSchema;
10
- static shortDescription = 'Extract sent LinkedIn connection invitations';
11
- static longDescription = 'Recordable LinkedIn Sent Invitations Tool for extracting pending sent connection requests.';
12
- static alias = 'linkedin-sent-invitations';
13
- static type = 'tool';
14
- sessionId = null;
15
- contextId = null;
16
- cookies = null;
17
- constructor(params = { operation: 'get_sent_invitations' }, context) {
18
- super(params, context);
19
- }
20
- chooseCredential() {
21
- const { credentials } = this.params;
22
- return credentials?.[CredentialType.LINKEDIN_CRED];
23
- }
24
- async stepStartBrowserSession() {
25
- if (this.sessionId)
26
- return;
27
- const sessionData = parseBrowserSessionData(this.chooseCredential());
28
- if (sessionData) {
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
- const proxyConfig = buildProxyConfig(this.params.proxy);
33
- const browserbase = new BrowserBaseBubble({
34
- operation: 'start_session',
35
- context_id: this.contextId || undefined,
36
- cookies: this.cookies || undefined,
37
- credentials: this.params.credentials,
38
- stealth: { solveCaptchas: true },
39
- ...proxyConfig,
40
- }, this.context, 'startsession');
41
- const result = await browserbase.action();
42
- if (!result.data.success || !result.data.session_id) {
43
- throw new Error(result.data.error || 'Failed to start browser session');
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
- this.sessionId = result.data.session_id;
46
- if (result.data.context_id)
47
- this.contextId = result.data.context_id;
48
- console.log(`[RecordableSentInvitations] Session started: ${this.sessionId}`);
49
- const ip = await this.detectIPAddress();
50
- if (ip)
51
- console.log(`[RecordableSentInvitations] Browser IP: ${ip}`);
52
- }
53
- async stepNavigateToSentInvitations() {
54
- if (!this.sessionId)
55
- throw new Error('No active session');
56
- const browserbase = new BrowserBaseBubble({
57
- operation: 'navigate',
58
- session_id: this.sessionId,
59
- url: 'https://www.linkedin.com/mynetwork/invitation-manager/sent/',
60
- wait_until: 'domcontentloaded',
61
- timeout: 30000,
62
- }, this.context, 'navigate');
63
- const result = await browserbase.action();
64
- if (!result.data.success)
65
- throw new Error(result.data.error || 'Navigation failed');
66
- }
67
- async stepWaitForInvitationsPage() {
68
- const checkScript = `(() => {
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
- for (let attempt = 1; attempt <= 15; attempt++) {
80
- const found = await this.evaluate(checkScript);
81
- if (found)
82
- return true;
83
- await new Promise((r) => setTimeout(r, 1000));
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
- return false;
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
- return result;
168
- }
169
- async stepEndBrowserSession() {
170
- if (!this.sessionId)
171
- return;
172
- const browserbase = new BrowserBaseBubble({ operation: 'end_session', session_id: this.sessionId }, this.context, 'endsession');
173
- await browserbase.action();
174
- console.log(`[RecordableSentInvitations] Session ended: ${this.sessionId}`);
175
- this.sessionId = null;
176
- }
177
- async evaluate(script) {
178
- if (!this.sessionId)
179
- throw new Error('No active session');
180
- const browserbase = new BrowserBaseBubble({ operation: 'evaluate', session_id: this.sessionId, script }, this.context, 'evaluate');
181
- const result = await browserbase.action();
182
- if (!result.data.success)
183
- throw new Error(result.data.error || 'Evaluation failed');
184
- return result.data.result;
185
- }
186
- async detectIPAddress() {
187
- if (!this.sessionId)
188
- return null;
189
- try {
190
- return (await this.evaluate(`
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
- catch {
201
- return null;
202
- }
203
- }
204
- async performAction() {
205
- try {
206
- await this.stepStartBrowserSession();
207
- await this.stepNavigateToSentInvitations();
208
- const pageReady = await this.stepWaitForInvitationsPage();
209
- if (!pageReady)
210
- console.log('[RecordableSentInvitations] Page slow to load, continuing');
211
- const { invitations, total } = await this.stepExtractInvitations();
212
- return {
213
- operation: 'get_sent_invitations',
214
- success: true,
215
- invitations,
216
- total_count: total,
217
- message: `Found ${invitations.length} sent invitations`,
218
- error: '',
219
- };
220
- }
221
- catch (error) {
222
- return {
223
- operation: 'get_sent_invitations',
224
- success: false,
225
- error: error instanceof Error ? error.message : 'Unknown error',
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":"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"}
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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"}