@bubblelab/bubble-core 0.1.141 → 0.1.143

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 (154) hide show
  1. package/dist/bubble-bundle.d.ts +181 -118
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +9 -1
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubble-flow/bubble-flow-class.d.ts +4 -0
  6. package/dist/bubble-flow/bubble-flow-class.d.ts.map +1 -1
  7. package/dist/bubble-flow/bubble-flow-class.js +1 -0
  8. package/dist/bubble-flow/bubble-flow-class.js.map +1 -1
  9. package/dist/bubbles/service-bubble/agi-inc.d.ts +140 -140
  10. package/dist/bubbles/service-bubble/ai-agent.d.ts +4 -4
  11. package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
  12. package/dist/bubbles/service-bubble/ai-agent.js +7 -0
  13. package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
  14. package/dist/bubbles/service-bubble/airtable.d.ts +158 -158
  15. package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts +6 -6
  16. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +806 -0
  17. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts.map +1 -0
  18. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.js +256 -0
  19. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.js.map +1 -0
  20. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +813 -6
  21. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts.map +1 -1
  22. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js +8 -0
  23. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js.map +1 -1
  24. package/dist/bubbles/service-bubble/apify/apify.d.ts +13 -13
  25. package/dist/bubbles/service-bubble/apify/apify.d.ts.map +1 -1
  26. package/dist/bubbles/service-bubble/apify/apify.js +1 -0
  27. package/dist/bubbles/service-bubble/apify/apify.js.map +1 -1
  28. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +64 -64
  29. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +6 -6
  30. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +44 -37
  31. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts.map +1 -1
  32. package/dist/bubbles/service-bubble/browserbase/browserbase.js +66 -3
  33. package/dist/bubbles/service-bubble/browserbase/browserbase.js.map +1 -1
  34. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +59 -16
  35. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts.map +1 -1
  36. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.js +19 -0
  37. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.js.map +1 -1
  38. package/dist/bubbles/service-bubble/confluence/confluence.d.ts +26 -26
  39. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +96 -96
  40. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +24 -24
  41. package/dist/bubbles/service-bubble/eleven-labs.d.ts +24 -24
  42. package/dist/bubbles/service-bubble/firecrawl.d.ts +244 -244
  43. package/dist/bubbles/service-bubble/followupboss.d.ts +152 -152
  44. package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts +44 -44
  45. package/dist/bubbles/service-bubble/fullenrich/fullenrich.schema.d.ts +62 -62
  46. package/dist/bubbles/service-bubble/github.d.ts +148 -148
  47. package/dist/bubbles/service-bubble/gmail.d.ts +556 -556
  48. package/dist/bubbles/service-bubble/google-calendar.d.ts +34 -34
  49. package/dist/bubbles/service-bubble/google-drive.d.ts +102 -102
  50. package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +30 -30
  51. package/dist/bubbles/service-bubble/http.d.ts +20 -20
  52. package/dist/bubbles/service-bubble/jira/jira.d.ts +92 -92
  53. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +2 -2
  54. package/dist/bubbles/service-bubble/notion/notion.d.ts +647 -647
  55. package/dist/bubbles/service-bubble/resend.d.ts +32 -32
  56. package/dist/bubbles/service-bubble/slack/slack.d.ts +496 -496
  57. package/dist/bubbles/service-bubble/slack/slack.js +2 -2
  58. package/dist/bubbles/service-bubble/slack/slack.js.map +1 -1
  59. package/dist/bubbles/service-bubble/storage.d.ts +20 -20
  60. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +87 -87
  61. package/dist/bubbles/service-bubble/telegram.d.ts +108 -108
  62. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +18 -18
  63. package/dist/bubbles/tool-bubble/browser-tools/_shared/schema.d.ts +126 -0
  64. package/dist/bubbles/tool-bubble/browser-tools/_shared/schema.d.ts.map +1 -0
  65. package/dist/bubbles/tool-bubble/browser-tools/_shared/schema.js +34 -0
  66. package/dist/bubbles/tool-bubble/browser-tools/_shared/schema.js.map +1 -0
  67. package/dist/bubbles/tool-bubble/browser-tools/_shared/utils.d.ts +22 -0
  68. package/dist/bubbles/tool-bubble/browser-tools/_shared/utils.d.ts.map +1 -0
  69. package/dist/bubbles/tool-bubble/browser-tools/_shared/utils.js +57 -0
  70. package/dist/bubbles/tool-bubble/browser-tools/_shared/utils.js.map +1 -0
  71. package/dist/bubbles/tool-bubble/browser-tools/index.d.ts +5 -0
  72. package/dist/bubbles/tool-bubble/browser-tools/index.d.ts.map +1 -0
  73. package/dist/bubbles/tool-bubble/browser-tools/index.js +5 -0
  74. package/dist/bubbles/tool-bubble/browser-tools/index.js.map +1 -0
  75. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/index.d.ts +3 -0
  76. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/index.d.ts.map +1 -0
  77. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/index.js +3 -0
  78. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/index.js.map +1 -0
  79. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/schema.d.ts +158 -0
  80. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/schema.d.ts.map +1 -0
  81. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/schema.js +33 -0
  82. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/schema.js.map +1 -0
  83. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.d.ts +161 -0
  84. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.d.ts.map +1 -0
  85. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.js +310 -0
  86. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.js.map +1 -0
  87. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/index.d.ts +3 -0
  88. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/index.d.ts.map +1 -0
  89. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/index.js +3 -0
  90. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/index.js.map +1 -0
  91. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/schema.d.ts +165 -0
  92. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/schema.d.ts.map +1 -0
  93. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/schema.js +45 -0
  94. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/schema.js.map +1 -0
  95. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts +171 -0
  96. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts.map +1 -0
  97. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.js +364 -0
  98. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.js.map +1 -0
  99. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/index.d.ts +3 -0
  100. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/index.d.ts.map +1 -0
  101. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/index.js +3 -0
  102. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/index.js.map +1 -0
  103. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/schema.d.ts +160 -0
  104. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/schema.d.ts.map +1 -0
  105. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/schema.js +24 -0
  106. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/schema.js.map +1 -0
  107. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts +160 -0
  108. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts.map +1 -0
  109. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.js +334 -0
  110. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.js.map +1 -0
  111. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/index.d.ts +3 -0
  112. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/index.d.ts.map +1 -0
  113. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/index.js +3 -0
  114. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/index.js.map +1 -0
  115. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/schema.d.ts +152 -0
  116. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/schema.d.ts.map +1 -0
  117. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/schema.js +23 -0
  118. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/schema.js.map +1 -0
  119. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts +155 -0
  120. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts.map +1 -0
  121. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.js +233 -0
  122. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.js.map +1 -0
  123. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
  124. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +64 -64
  125. package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +16 -16
  126. package/dist/bubbles/tool-bubble/instagram-tool.d.ts +4 -4
  127. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +2 -2
  128. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +1634 -196
  129. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts.map +1 -1
  130. package/dist/bubbles/tool-bubble/linkedin-tool.js +300 -56
  131. package/dist/bubbles/tool-bubble/linkedin-tool.js.map +1 -1
  132. package/dist/bubbles/tool-bubble/list-capabilities-tool.d.ts +8 -8
  133. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +108 -108
  134. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +10 -10
  135. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
  136. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
  137. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +24 -24
  138. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +14 -14
  139. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +4 -4
  140. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +4 -4
  141. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +8 -8
  142. package/dist/bubbles/tool-bubble/web-search-tool.d.ts +2 -2
  143. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +32 -32
  144. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +14 -14
  145. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +58 -58
  146. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +16 -16
  147. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +2 -2
  148. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +46 -46
  149. package/dist/bubbles.json +1148 -75
  150. package/dist/index.d.ts +4 -1
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/index.js +4 -1
  153. package/dist/index.js.map +1 -1
  154. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-connection/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAK5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwB7C,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ7C,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CACjD,OAAO,kCAAkC,CAC1C,CAAC;AACF,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CACrD,OAAO,kCAAkC,CAC1C,CAAC;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CACjD,OAAO,kCAAkC,CAC1C,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ import { CredentialType } from '@bubblelab/shared-schemas';
3
+ import { ProxyChoiceSchema } from '../_shared/schema.js';
4
+ /**
5
+ * Profile information extracted from LinkedIn
6
+ */
7
+ export const ProfileInfoSchema = z.object({
8
+ name: z.string().describe('Full name of the profile owner'),
9
+ headline: z.string().optional().describe('Professional headline'),
10
+ location: z.string().optional().describe('Location information'),
11
+ profile_url: z.string().describe('LinkedIn profile URL'),
12
+ });
13
+ /**
14
+ * LinkedIn Connection Tool parameters schema
15
+ */
16
+ export const LinkedInConnectionToolParamsSchema = z.object({
17
+ operation: z
18
+ .literal('send_connection')
19
+ .describe('Send a connection request to a LinkedIn profile'),
20
+ profile_url: z
21
+ .string()
22
+ .min(1)
23
+ .describe('LinkedIn profile URL (e.g., https://www.linkedin.com/in/username)'),
24
+ message: z
25
+ .string()
26
+ .max(300)
27
+ .optional()
28
+ .describe('Optional personalized note to include with the connection request (max 300 characters)'),
29
+ credentials: z
30
+ .record(z.nativeEnum(CredentialType), z.string())
31
+ .optional()
32
+ .describe('Required: LINKEDIN_CRED for authenticated LinkedIn session'),
33
+ proxy: ProxyChoiceSchema.optional().describe('Proxy configuration: none (direct connection), browserbase (residential), or custom proxy'),
34
+ });
35
+ /**
36
+ * LinkedIn Connection Tool result schema
37
+ */
38
+ export const LinkedInConnectionToolResultSchema = z.object({
39
+ operation: z.literal('send_connection'),
40
+ success: z.boolean().describe('Whether the connection request was sent'),
41
+ message: z.string().optional().describe('Success or status message'),
42
+ profile: ProfileInfoSchema.optional().describe('Profile information of the person'),
43
+ error: z.string().describe('Error message if operation failed'),
44
+ });
45
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-connection/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAChE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;CACzD,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC;IACzD,SAAS,EAAE,CAAC;SACT,OAAO,CAAC,iBAAiB,CAAC;SAC1B,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,mEAAmE,CACpE;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,wFAAwF,CACzF;IACH,WAAW,EAAE,CAAC;SACX,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAChD,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;IACzE,KAAK,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC1C,2FAA2F,CAC5F;CACF,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC;IACzD,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACpE,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5C,mCAAmC,CACpC;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAChE,CAAC,CAAC"}
@@ -0,0 +1,171 @@
1
+ import { ToolBubble } from '../../../../types/tool-bubble-class.js';
2
+ import type { BubbleContext } from '../../../../types/bubble.js';
3
+ import { CredentialType } from '@bubblelab/shared-schemas';
4
+ import { type LinkedInConnectionToolParamsInput, type LinkedInConnectionToolResult } from './schema.js';
5
+ /**
6
+ * Recordable LinkedIn Connection Tool
7
+ *
8
+ * A tool bubble for automating LinkedIn connection requests with step recording.
9
+ * Each major action is decorated with @RecordableStep to capture before/after
10
+ * screenshots, URLs, and timing information.
11
+ */
12
+ export declare class LinkedInConnectionTool<T extends LinkedInConnectionToolParamsInput = LinkedInConnectionToolParamsInput> extends ToolBubble<T, LinkedInConnectionToolResult> {
13
+ static readonly bubbleName: "linkedin-connection-tool";
14
+ static readonly schema: import("zod").ZodObject<{
15
+ operation: import("zod").ZodLiteral<"send_connection">;
16
+ profile_url: import("zod").ZodString;
17
+ message: import("zod").ZodOptional<import("zod").ZodString>;
18
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
19
+ proxy: import("zod").ZodOptional<import("zod").ZodDiscriminatedUnion<"type", [import("zod").ZodObject<{
20
+ type: import("zod").ZodLiteral<"none">;
21
+ }, "strip", import("zod").ZodTypeAny, {
22
+ type: "none";
23
+ }, {
24
+ type: "none";
25
+ }>, import("zod").ZodObject<{
26
+ type: import("zod").ZodLiteral<"browserbase">;
27
+ }, "strip", import("zod").ZodTypeAny, {
28
+ type: "browserbase";
29
+ }, {
30
+ type: "browserbase";
31
+ }>, import("zod").ZodObject<{
32
+ type: import("zod").ZodLiteral<"custom">;
33
+ proxy: import("zod").ZodObject<{
34
+ id: import("zod").ZodString;
35
+ server: import("zod").ZodString;
36
+ username: import("zod").ZodOptional<import("zod").ZodString>;
37
+ password: import("zod").ZodOptional<import("zod").ZodString>;
38
+ }, "strip", import("zod").ZodTypeAny, {
39
+ id: string;
40
+ server: string;
41
+ password?: string | undefined;
42
+ username?: string | undefined;
43
+ }, {
44
+ id: string;
45
+ server: string;
46
+ password?: string | undefined;
47
+ username?: string | undefined;
48
+ }>;
49
+ }, "strip", import("zod").ZodTypeAny, {
50
+ type: "custom";
51
+ proxy: {
52
+ id: string;
53
+ server: string;
54
+ password?: string | undefined;
55
+ username?: string | undefined;
56
+ };
57
+ }, {
58
+ type: "custom";
59
+ proxy: {
60
+ id: string;
61
+ server: string;
62
+ password?: string | undefined;
63
+ username?: string | undefined;
64
+ };
65
+ }>]>>;
66
+ }, "strip", import("zod").ZodTypeAny, {
67
+ operation: "send_connection";
68
+ profile_url: string;
69
+ message?: string | undefined;
70
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
71
+ proxy?: {
72
+ type: "none";
73
+ } | {
74
+ type: "browserbase";
75
+ } | {
76
+ type: "custom";
77
+ proxy: {
78
+ id: string;
79
+ server: string;
80
+ password?: string | undefined;
81
+ username?: string | undefined;
82
+ };
83
+ } | undefined;
84
+ }, {
85
+ operation: "send_connection";
86
+ profile_url: string;
87
+ message?: string | undefined;
88
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
89
+ proxy?: {
90
+ type: "none";
91
+ } | {
92
+ type: "browserbase";
93
+ } | {
94
+ type: "custom";
95
+ proxy: {
96
+ id: string;
97
+ server: string;
98
+ password?: string | undefined;
99
+ username?: string | undefined;
100
+ };
101
+ } | undefined;
102
+ }>;
103
+ static readonly resultSchema: import("zod").ZodObject<{
104
+ operation: import("zod").ZodLiteral<"send_connection">;
105
+ success: import("zod").ZodBoolean;
106
+ message: import("zod").ZodOptional<import("zod").ZodString>;
107
+ profile: import("zod").ZodOptional<import("zod").ZodObject<{
108
+ name: import("zod").ZodString;
109
+ headline: import("zod").ZodOptional<import("zod").ZodString>;
110
+ location: import("zod").ZodOptional<import("zod").ZodString>;
111
+ profile_url: import("zod").ZodString;
112
+ }, "strip", import("zod").ZodTypeAny, {
113
+ name: string;
114
+ profile_url: string;
115
+ location?: string | undefined;
116
+ headline?: string | undefined;
117
+ }, {
118
+ name: string;
119
+ profile_url: string;
120
+ location?: string | undefined;
121
+ headline?: string | undefined;
122
+ }>>;
123
+ error: import("zod").ZodString;
124
+ }, "strip", import("zod").ZodTypeAny, {
125
+ operation: "send_connection";
126
+ error: string;
127
+ success: boolean;
128
+ message?: string | undefined;
129
+ profile?: {
130
+ name: string;
131
+ profile_url: string;
132
+ location?: string | undefined;
133
+ headline?: string | undefined;
134
+ } | undefined;
135
+ }, {
136
+ operation: "send_connection";
137
+ error: string;
138
+ success: boolean;
139
+ message?: string | undefined;
140
+ profile?: {
141
+ name: string;
142
+ profile_url: string;
143
+ location?: string | undefined;
144
+ headline?: string | undefined;
145
+ } | undefined;
146
+ }>;
147
+ static readonly shortDescription = "LinkedIn connection automation with step recording";
148
+ static readonly longDescription = "\n Recordable LinkedIn Connection Tool for automating connection requests.\n Records each step with screenshots and timing information for debugging.\n ";
149
+ static readonly alias = "linkedin-recordable";
150
+ static readonly type = "tool";
151
+ private sessionId;
152
+ private contextId;
153
+ private cookies;
154
+ constructor(params?: T, context?: BubbleContext);
155
+ /** Required by RecordableToolBubble - returns the active browser session ID */
156
+ protected chooseCredential(): string | undefined;
157
+ private parseBrowserSessionData;
158
+ private stepStartBrowserSession;
159
+ private stepNavigateToProfile;
160
+ private stepWaitForProfilePage;
161
+ private stepExtractProfileInfo;
162
+ private stepClickConnect;
163
+ private stepWaitForModal;
164
+ private stepAddNote;
165
+ private stepSendRequest;
166
+ private stepEndBrowserSession;
167
+ private evaluate;
168
+ private detectIPAddress;
169
+ performAction(): Promise<LinkedInConnectionToolResult>;
170
+ }
171
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-connection/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,iCAAiC,EACtC,KAAK,4BAA4B,EAElC,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,qBAAa,sBAAsB,CACjC,CAAC,SACC,iCAAiC,GAAG,iCAAiC,CACvE,SAAQ,UAAU,CAAC,CAAC,EAAE,4BAA4B,CAAC;IACnD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAG,0BAA0B,CAAU;IACjE,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAsC;IAC5D,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAsC;IAClE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,wDACuB;IACvD,MAAM,CAAC,QAAQ,CAAC,eAAe,qKAG7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,yBAAyB;IAC9C,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAA4B;gBAGzC,MAAM,GAAE,CAA0D,EAClE,OAAO,CAAC,EAAE,aAAa;IAKzB,+EAA+E;IAC/E,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAUhD,OAAO,CAAC,uBAAuB;YAMjB,uBAAuB;YAwCvB,qBAAqB;YAqBrB,sBAAsB;YAwBtB,sBAAsB;YA8BtB,gBAAgB;YAkEhB,gBAAgB;YAoBhB,WAAW;YA8BX,eAAe;YAsCf,qBAAqB;YAiBrB,QAAQ;YAoBR,eAAe;IAoBvB,aAAa,IAAI,OAAO,CAAC,4BAA4B,CAAC;CAwC7D"}
@@ -0,0 +1,364 @@
1
+ import { ToolBubble } from '../../../../types/tool-bubble-class.js';
2
+ import { BrowserBaseBubble, } from '../../../service-bubble/browserbase/index.js';
3
+ import { CredentialType } from '@bubblelab/shared-schemas';
4
+ import { parseBrowserSessionData, buildProxyConfig } from '../_shared/utils.js';
5
+ import { LinkedInConnectionToolParamsSchema, LinkedInConnectionToolResultSchema, } from './schema.js';
6
+ /**
7
+ * Recordable LinkedIn Connection Tool
8
+ *
9
+ * A tool bubble for automating LinkedIn connection requests with step recording.
10
+ * Each major action is decorated with @RecordableStep to capture before/after
11
+ * screenshots, URLs, and timing information.
12
+ */
13
+ export class LinkedInConnectionTool extends ToolBubble {
14
+ static bubbleName = 'linkedin-connection-tool';
15
+ static schema = LinkedInConnectionToolParamsSchema;
16
+ static resultSchema = LinkedInConnectionToolResultSchema;
17
+ static shortDescription = 'LinkedIn connection automation with step recording';
18
+ static longDescription = `
19
+ Recordable LinkedIn Connection Tool for automating connection requests.
20
+ Records each step with screenshots and timing information for debugging.
21
+ `;
22
+ static alias = 'linkedin-recordable';
23
+ static type = 'tool';
24
+ sessionId = null;
25
+ contextId = null;
26
+ cookies = null;
27
+ constructor(params = { operation: 'send_connection', profile_url: '' }, context) {
28
+ super(params, context);
29
+ }
30
+ /** Required by RecordableToolBubble - returns the active browser session ID */
31
+ chooseCredential() {
32
+ const { credentials } = this.params;
33
+ if (!credentials || typeof credentials !== 'object') {
34
+ return undefined;
35
+ }
36
+ return credentials[CredentialType.LINKEDIN_CRED];
37
+ }
38
+ parseBrowserSessionData() {
39
+ return parseBrowserSessionData(this.chooseCredential());
40
+ }
41
+ // ==================== RECORDABLE STEPS ====================
42
+ async stepStartBrowserSession() {
43
+ if (this.sessionId)
44
+ return;
45
+ const sessionData = this.parseBrowserSessionData();
46
+ if (sessionData) {
47
+ this.contextId = sessionData.contextId;
48
+ this.cookies = sessionData.cookies;
49
+ }
50
+ const proxyConfig = buildProxyConfig(this.params.proxy);
51
+ const browserbase = new BrowserBaseBubble({
52
+ operation: 'start_session',
53
+ context_id: this.contextId || undefined,
54
+ cookies: this.cookies || undefined,
55
+ credentials: this.params.credentials,
56
+ stealth: { solveCaptchas: true },
57
+ ...proxyConfig,
58
+ }, this.context, 'startsession');
59
+ const result = await browserbase.action();
60
+ if (!result.data.success || !result.data.session_id) {
61
+ throw new Error(result.data.error || 'Failed to start browser session');
62
+ }
63
+ this.sessionId = result.data.session_id;
64
+ if (result.data.context_id) {
65
+ this.contextId = result.data.context_id;
66
+ }
67
+ console.log(`[RecordableLinkedIn] Session started: ${this.sessionId}`);
68
+ const ipAddress = await this.detectIPAddress();
69
+ if (ipAddress) {
70
+ console.log(`[RecordableLinkedIn] Browser IP: ${ipAddress}`);
71
+ }
72
+ }
73
+ async stepNavigateToProfile() {
74
+ if (!this.sessionId)
75
+ throw new Error('No active session');
76
+ const browserbase = new BrowserBaseBubble({
77
+ operation: 'navigate',
78
+ session_id: this.sessionId,
79
+ url: this.params.profile_url,
80
+ wait_until: 'domcontentloaded',
81
+ timeout: 30000,
82
+ }, this.context, 'navigate');
83
+ const result = await browserbase.action();
84
+ if (!result.data.success) {
85
+ throw new Error(result.data.error || 'Navigation failed');
86
+ }
87
+ }
88
+ async stepWaitForProfilePage() {
89
+ const checkScript = `
90
+ (() => {
91
+ const buttons = document.querySelectorAll('button');
92
+ for (const btn of buttons) {
93
+ const ariaLabel = (btn.getAttribute('aria-label') || '').toLowerCase();
94
+ const text = (btn.innerText || btn.textContent || '').trim().toLowerCase();
95
+ if (ariaLabel.includes('connect') || text === 'connect') return true;
96
+ if (ariaLabel === 'more actions') return true;
97
+ if (text === 'message' || ariaLabel.includes('message')) return true;
98
+ if (text === 'follow' || ariaLabel.includes('follow')) return true;
99
+ }
100
+ return false;
101
+ })()
102
+ `;
103
+ for (let attempt = 1; attempt <= 30; attempt++) {
104
+ const found = await this.evaluate(checkScript);
105
+ if (found)
106
+ return true;
107
+ await new Promise((r) => setTimeout(r, 1000));
108
+ }
109
+ return false;
110
+ }
111
+ async stepExtractProfileInfo() {
112
+ const info = (await this.evaluate(`
113
+ (() => {
114
+ let name = '';
115
+ const h1El = document.querySelector('h1');
116
+ if (h1El) name = h1El.textContent?.trim() || '';
117
+
118
+ let headline = '';
119
+ const headlineEl = document.querySelector('div.text-body-medium.break-words');
120
+ if (headlineEl) headline = headlineEl.textContent?.trim() || '';
121
+
122
+ let location = '';
123
+ const spans = document.querySelectorAll('span');
124
+ for (const span of spans) {
125
+ const text = span.textContent?.trim() || '';
126
+ if (text.includes(',') && text.length < 100 && text.length > 5) {
127
+ if (/(?:United|Kingdom|States|England|Germany|France|India|Canada|Australia)/i.test(text)) {
128
+ location = text;
129
+ break;
130
+ }
131
+ }
132
+ }
133
+
134
+ return { name, headline, location, profile_url: window.location.href };
135
+ })()
136
+ `));
137
+ return info.name ? info : null;
138
+ }
139
+ async stepClickConnect() {
140
+ const directResult = (await this.evaluate(`
141
+ (() => {
142
+ const buttons = document.querySelectorAll('button, [role="button"]');
143
+ for (const btn of buttons) {
144
+ const ariaLabel = btn.getAttribute('aria-label') || '';
145
+ const text = (btn.innerText || btn.textContent || '').trim().toLowerCase();
146
+ if (ariaLabel.toLowerCase().includes('connect') || text === 'connect') {
147
+ if (btn.classList.contains('artdeco-button--primary') ||
148
+ btn.closest('.pvs-profile-actions') ||
149
+ btn.closest('.pv-top-card-v2-ctas') ||
150
+ btn.closest('.artdeco-dropdown__content')) {
151
+ btn.click();
152
+ return { clicked: true, element: btn.tagName + ' - ' + (ariaLabel || text) };
153
+ }
154
+ }
155
+ }
156
+ return { clicked: false };
157
+ })()
158
+ `));
159
+ if (directResult.clicked)
160
+ return true;
161
+ const moreResult = (await this.evaluate(`
162
+ (() => {
163
+ const buttons = document.querySelectorAll('button');
164
+ for (const btn of buttons) {
165
+ const ariaLabel = (btn.getAttribute('aria-label') || '').toLowerCase();
166
+ const text = (btn.innerText || btn.textContent || '').trim().toLowerCase();
167
+ if ((ariaLabel === 'more actions' || ariaLabel === 'more' || text === 'more') &&
168
+ (btn.classList.contains('artdeco-dropdown__trigger') || btn.closest('.pv-top-card-v2-ctas'))) {
169
+ btn.click();
170
+ return { clicked: true, element: ariaLabel || text };
171
+ }
172
+ }
173
+ return { clicked: false };
174
+ })()
175
+ `));
176
+ if (moreResult.clicked) {
177
+ await new Promise((r) => setTimeout(r, 1000));
178
+ const dropdownResult = (await this.evaluate(`
179
+ (() => {
180
+ const items = document.querySelectorAll('.artdeco-dropdown__item[role="button"], .artdeco-dropdown__content [role="button"]');
181
+ for (const item of items) {
182
+ const ariaLabel = (item.getAttribute('aria-label') || '').toLowerCase();
183
+ const text = (item.innerText || item.textContent || '').trim().toLowerCase();
184
+ if (ariaLabel.includes('connect') || text === 'connect') {
185
+ item.click();
186
+ return { clicked: true, element: ariaLabel || text };
187
+ }
188
+ }
189
+ return { clicked: false, itemCount: items.length };
190
+ })()
191
+ `));
192
+ if (dropdownResult.clicked)
193
+ return true;
194
+ throw new Error(`Could not find Connect option in More dropdown (found ${dropdownResult.itemCount} items)`);
195
+ }
196
+ throw new Error('Could not find Connect button or More dropdown');
197
+ }
198
+ async stepWaitForModal() {
199
+ const checkScript = `
200
+ (() => {
201
+ const buttons = document.querySelectorAll('button');
202
+ for (const btn of buttons) {
203
+ const text = (btn.innerText || btn.textContent || '').trim().toLowerCase();
204
+ if (text.includes('add a note') || text.includes('send without')) return true;
205
+ }
206
+ return false;
207
+ })()
208
+ `;
209
+ for (let attempt = 1; attempt <= 8; attempt++) {
210
+ const found = await this.evaluate(checkScript);
211
+ if (found)
212
+ return true;
213
+ await new Promise((r) => setTimeout(r, 1000));
214
+ }
215
+ throw new Error('Connection modal did not appear within 8 seconds');
216
+ }
217
+ async stepAddNote(message) {
218
+ await this.evaluate(`
219
+ (() => {
220
+ const buttons = document.querySelectorAll('button');
221
+ for (const btn of buttons) {
222
+ const text = (btn.innerText || btn.textContent || '').trim().toLowerCase();
223
+ if (text.includes('add a note')) {
224
+ btn.click();
225
+ return true;
226
+ }
227
+ }
228
+ return false;
229
+ })()
230
+ `);
231
+ await new Promise((r) => setTimeout(r, 500));
232
+ await this.evaluate(`
233
+ (() => {
234
+ const textarea = document.querySelector('#custom-message');
235
+ if (textarea) {
236
+ textarea.value = ${JSON.stringify(message)};
237
+ textarea.dispatchEvent(new Event('input', { bubbles: true }));
238
+ return true;
239
+ }
240
+ return false;
241
+ })()
242
+ `);
243
+ }
244
+ async stepSendRequest(withNote) {
245
+ if (withNote) {
246
+ const result = (await this.evaluate(`
247
+ (() => {
248
+ const buttons = document.querySelectorAll('button');
249
+ for (const btn of buttons) {
250
+ const text = (btn.innerText || btn.textContent || '').trim().toLowerCase();
251
+ if (text === 'send' && btn.classList.contains('artdeco-button--primary')) {
252
+ btn.click();
253
+ return { clicked: true };
254
+ }
255
+ }
256
+ return { clicked: false };
257
+ })()
258
+ `));
259
+ if (!result.clicked)
260
+ throw new Error('Could not find Send button in modal');
261
+ return true;
262
+ }
263
+ else {
264
+ const result = (await this.evaluate(`
265
+ (() => {
266
+ const buttons = document.querySelectorAll('button');
267
+ for (const btn of buttons) {
268
+ const text = (btn.innerText || btn.textContent || '').trim().toLowerCase();
269
+ if (text.includes('send without')) {
270
+ btn.click();
271
+ return { clicked: true };
272
+ }
273
+ }
274
+ return { clicked: false };
275
+ })()
276
+ `));
277
+ if (!result.clicked)
278
+ throw new Error('Could not find "Send without a note" button in modal');
279
+ return true;
280
+ }
281
+ }
282
+ async stepEndBrowserSession() {
283
+ if (!this.sessionId)
284
+ return;
285
+ const browserbase = new BrowserBaseBubble({
286
+ operation: 'end_session',
287
+ session_id: this.sessionId,
288
+ }, this.context, 'endsession');
289
+ await browserbase.action();
290
+ console.log(`[RecordableLinkedIn] Session ended: ${this.sessionId}`);
291
+ this.sessionId = null;
292
+ }
293
+ async evaluate(script) {
294
+ if (!this.sessionId)
295
+ throw new Error('No active session');
296
+ const browserbase = new BrowserBaseBubble({
297
+ operation: 'evaluate',
298
+ session_id: this.sessionId,
299
+ script,
300
+ }, this.context, 'evaluate');
301
+ const result = await browserbase.action();
302
+ if (!result.data.success) {
303
+ throw new Error(result.data.error || 'Evaluation failed');
304
+ }
305
+ return result.data.result;
306
+ }
307
+ async detectIPAddress() {
308
+ if (!this.sessionId)
309
+ return null;
310
+ try {
311
+ const result = await this.evaluate(`
312
+ (async () => {
313
+ try {
314
+ const response = await fetch('https://api.ipify.org?format=json');
315
+ const data = await response.json();
316
+ return data.ip;
317
+ } catch (e) {
318
+ return null;
319
+ }
320
+ })()
321
+ `);
322
+ return result;
323
+ }
324
+ catch {
325
+ return null;
326
+ }
327
+ }
328
+ async performAction() {
329
+ try {
330
+ await this.stepStartBrowserSession();
331
+ await this.stepNavigateToProfile();
332
+ const pageReady = await this.stepWaitForProfilePage();
333
+ if (!pageReady) {
334
+ console.log('[RecordableLinkedIn] Profile page slow to load, continuing anyway');
335
+ }
336
+ const profileInfo = await this.stepExtractProfileInfo();
337
+ await this.stepClickConnect();
338
+ await this.stepWaitForModal();
339
+ const { message } = this.params;
340
+ if (message) {
341
+ await this.stepAddNote(message);
342
+ }
343
+ await this.stepSendRequest(!!message);
344
+ return {
345
+ operation: 'send_connection',
346
+ success: true,
347
+ message: `Connection request sent to ${profileInfo?.name || 'profile'}`,
348
+ profile: profileInfo || undefined,
349
+ error: '',
350
+ };
351
+ }
352
+ catch (error) {
353
+ return {
354
+ operation: 'send_connection',
355
+ success: false,
356
+ error: error instanceof Error ? error.message : 'Unknown error',
357
+ };
358
+ }
359
+ finally {
360
+ await this.stepEndBrowserSession();
361
+ }
362
+ }
363
+ }
364
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { LinkedInReceivedInvitationsTool } from './tool.js';
2
+ export { LinkedInReceivedInvitationsToolParamsSchema, LinkedInReceivedInvitationsToolResultSchema, ReceivedInvitationInfoSchema, type LinkedInReceivedInvitationsToolParamsInput, type LinkedInReceivedInvitationsToolResult, type ReceivedInvitationInfo, } from './schema.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,2CAA2C,EAC3C,2CAA2C,EAC3C,4BAA4B,EAC5B,KAAK,0CAA0C,EAC/C,KAAK,qCAAqC,EAC1C,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { LinkedInReceivedInvitationsTool } from './tool.js';
2
+ export { LinkedInReceivedInvitationsToolParamsSchema, LinkedInReceivedInvitationsToolResultSchema, ReceivedInvitationInfoSchema, } from './schema.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,2CAA2C,EAC3C,2CAA2C,EAC3C,4BAA4B,GAI7B,MAAM,aAAa,CAAC"}