@bubblelab/bubble-core 0.1.278 → 0.1.281

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 (179) hide show
  1. package/dist/bubble-bundle.d.ts +199 -158
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +6 -0
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubble-trigger/index.d.ts +2 -0
  6. package/dist/bubble-trigger/index.d.ts.map +1 -0
  7. package/dist/bubble-trigger/index.js +2 -0
  8. package/dist/bubble-trigger/index.js.map +1 -0
  9. package/dist/bubble-trigger/types.d.ts +87 -0
  10. package/dist/bubble-trigger/types.d.ts.map +1 -0
  11. package/dist/bubble-trigger/types.js +14 -0
  12. package/dist/bubble-trigger/types.js.map +1 -0
  13. package/dist/bubbles/service-bubble/agi-inc.d.ts +20 -20
  14. package/dist/bubbles/service-bubble/ai-agent.d.ts +74 -74
  15. package/dist/bubbles/service-bubble/airtable.d.ts +76 -76
  16. package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.d.ts +6 -6
  17. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +2 -2
  18. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +8 -8
  19. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +2 -2
  20. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +22 -22
  21. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +38 -38
  22. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +52 -52
  23. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +6 -6
  24. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +12 -12
  25. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +12 -12
  26. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +132 -132
  27. package/dist/bubbles/service-bubble/apify/apify.d.ts +18 -18
  28. package/dist/bubbles/service-bubble/asana/asana.d.ts +1 -1
  29. package/dist/bubbles/service-bubble/asana/asana.schema.d.ts +1 -1
  30. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +20 -20
  31. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +28 -28
  32. package/dist/bubbles/service-bubble/assembled/assembled.d.ts +6 -6
  33. package/dist/bubbles/service-bubble/assembled/assembled.schema.d.ts +6 -6
  34. package/dist/bubbles/service-bubble/attio/attio.d.ts +6 -6
  35. package/dist/bubbles/service-bubble/attio/attio.schema.d.ts +6 -6
  36. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +1 -1
  37. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +1 -1
  38. package/dist/bubbles/service-bubble/clerk/clerk.d.ts +690 -0
  39. package/dist/bubbles/service-bubble/clerk/clerk.d.ts.map +1 -0
  40. package/dist/bubbles/service-bubble/clerk/clerk.js +579 -0
  41. package/dist/bubbles/service-bubble/clerk/clerk.js.map +1 -0
  42. package/dist/bubbles/service-bubble/clerk/clerk.schema.d.ts +653 -0
  43. package/dist/bubbles/service-bubble/clerk/clerk.schema.d.ts.map +1 -0
  44. package/dist/bubbles/service-bubble/clerk/clerk.schema.js +460 -0
  45. package/dist/bubbles/service-bubble/clerk/clerk.schema.js.map +1 -0
  46. package/dist/bubbles/service-bubble/clerk/index.d.ts +3 -0
  47. package/dist/bubbles/service-bubble/clerk/index.d.ts.map +1 -0
  48. package/dist/bubbles/service-bubble/clerk/index.js +3 -0
  49. package/dist/bubbles/service-bubble/clerk/index.js.map +1 -0
  50. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +4 -4
  51. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +8 -8
  52. package/dist/bubbles/service-bubble/discord/discord.d.ts +12 -12
  53. package/dist/bubbles/service-bubble/discord/discord.schema.d.ts +12 -12
  54. package/dist/bubbles/service-bubble/firecrawl.d.ts +330 -330
  55. package/dist/bubbles/service-bubble/followupboss.d.ts +4 -4
  56. package/dist/bubbles/service-bubble/github.d.ts +60 -60
  57. package/dist/bubbles/service-bubble/gmail.d.ts +164 -164
  58. package/dist/bubbles/service-bubble/google-calendar.d.ts +6 -6
  59. package/dist/bubbles/service-bubble/google-drive.d.ts +4 -4
  60. package/dist/bubbles/service-bubble/google-sheets.d.ts +1811 -0
  61. package/dist/bubbles/service-bubble/google-sheets.d.ts.map +1 -0
  62. package/dist/bubbles/service-bubble/google-sheets.js +904 -0
  63. package/dist/bubbles/service-bubble/google-sheets.js.map +1 -0
  64. package/dist/bubbles/service-bubble/http.d.ts +6 -6
  65. package/dist/bubbles/service-bubble/hubspot/hubspot.d.ts +2 -2
  66. package/dist/bubbles/service-bubble/hubspot/hubspot.schema.d.ts +2 -2
  67. package/dist/bubbles/service-bubble/insforge-db.d.ts +8 -8
  68. package/dist/bubbles/service-bubble/jira/jira.d.ts +30 -30
  69. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +36 -36
  70. package/dist/bubbles/service-bubble/looker/index.d.ts +3 -0
  71. package/dist/bubbles/service-bubble/looker/index.d.ts.map +1 -0
  72. package/dist/bubbles/service-bubble/looker/index.js +3 -0
  73. package/dist/bubbles/service-bubble/looker/index.js.map +1 -0
  74. package/dist/bubbles/service-bubble/looker/looker.d.ts +768 -0
  75. package/dist/bubbles/service-bubble/looker/looker.d.ts.map +1 -0
  76. package/dist/bubbles/service-bubble/looker/looker.js +319 -0
  77. package/dist/bubbles/service-bubble/looker/looker.js.map +1 -0
  78. package/dist/bubbles/service-bubble/looker/looker.schema.d.ts +735 -0
  79. package/dist/bubbles/service-bubble/looker/looker.schema.d.ts.map +1 -0
  80. package/dist/bubbles/service-bubble/looker/looker.schema.js +264 -0
  81. package/dist/bubbles/service-bubble/looker/looker.schema.js.map +1 -0
  82. package/dist/bubbles/service-bubble/metabase/index.d.ts +4 -0
  83. package/dist/bubbles/service-bubble/metabase/index.d.ts.map +1 -0
  84. package/dist/bubbles/service-bubble/metabase/index.js +4 -0
  85. package/dist/bubbles/service-bubble/metabase/index.js.map +1 -0
  86. package/dist/bubbles/service-bubble/metabase/metabase.d.ts +746 -0
  87. package/dist/bubbles/service-bubble/metabase/metabase.d.ts.map +1 -0
  88. package/dist/bubbles/service-bubble/metabase/metabase.js +221 -0
  89. package/dist/bubbles/service-bubble/metabase/metabase.js.map +1 -0
  90. package/dist/bubbles/service-bubble/metabase/metabase.schema.d.ts +1125 -0
  91. package/dist/bubbles/service-bubble/metabase/metabase.schema.d.ts.map +1 -0
  92. package/dist/bubbles/service-bubble/metabase/metabase.schema.js +222 -0
  93. package/dist/bubbles/service-bubble/metabase/metabase.schema.js.map +1 -0
  94. package/dist/bubbles/service-bubble/metabase/metabase.utils.d.ts +15 -0
  95. package/dist/bubbles/service-bubble/metabase/metabase.utils.d.ts.map +1 -0
  96. package/dist/bubbles/service-bubble/metabase/metabase.utils.js +32 -0
  97. package/dist/bubbles/service-bubble/metabase/metabase.utils.js.map +1 -0
  98. package/dist/bubbles/service-bubble/notion/notion.d.ts +168 -168
  99. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +16 -16
  100. package/dist/bubbles/service-bubble/postgresql.d.ts +8 -8
  101. package/dist/bubbles/service-bubble/posthog/posthog.d.ts +10 -10
  102. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +14 -14
  103. package/dist/bubbles/service-bubble/pylon/index.d.ts +3 -0
  104. package/dist/bubbles/service-bubble/pylon/index.d.ts.map +1 -0
  105. package/dist/bubbles/service-bubble/pylon/index.js +3 -0
  106. package/dist/bubbles/service-bubble/pylon/index.js.map +1 -0
  107. package/dist/bubbles/service-bubble/pylon/pylon.d.ts +435 -0
  108. package/dist/bubbles/service-bubble/pylon/pylon.d.ts.map +1 -0
  109. package/dist/bubbles/service-bubble/pylon/pylon.js +375 -0
  110. package/dist/bubbles/service-bubble/pylon/pylon.js.map +1 -0
  111. package/dist/bubbles/service-bubble/pylon/pylon.schema.d.ts +408 -0
  112. package/dist/bubbles/service-bubble/pylon/pylon.schema.d.ts.map +1 -0
  113. package/dist/bubbles/service-bubble/pylon/pylon.schema.js +249 -0
  114. package/dist/bubbles/service-bubble/pylon/pylon.schema.js.map +1 -0
  115. package/dist/bubbles/service-bubble/resend.d.ts +12 -12
  116. package/dist/bubbles/service-bubble/slack/slack.d.ts +392 -392
  117. package/dist/bubbles/service-bubble/slack.d.ts +5869 -0
  118. package/dist/bubbles/service-bubble/slack.d.ts.map +1 -0
  119. package/dist/bubbles/service-bubble/slack.js +1536 -0
  120. package/dist/bubbles/service-bubble/slack.js.map +1 -0
  121. package/dist/bubbles/service-bubble/snowflake/snowflake.d.ts +4 -4
  122. package/dist/bubbles/service-bubble/snowflake/snowflake.schema.d.ts +4 -4
  123. package/dist/bubbles/service-bubble/sortly/sortly.d.ts +36 -36
  124. package/dist/bubbles/service-bubble/sortly/sortly.schema.d.ts +40 -40
  125. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +24 -24
  126. package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +28 -28
  127. package/dist/bubbles/service-bubble/xero/xero.d.ts +2 -2
  128. package/dist/bubbles/service-bubble/xero/xero.schema.d.ts +2 -2
  129. package/dist/bubbles/service-bubble/zendesk/zendesk.d.ts +20 -20
  130. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.d.ts +20 -20
  131. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +6 -6
  132. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +8 -8
  133. package/dist/bubbles/tool-bubble/app-rankings-tool.d.ts +8 -8
  134. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
  135. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +4 -4
  136. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +20 -20
  137. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts +3 -0
  138. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts.map +1 -0
  139. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js +3 -0
  140. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js.map +1 -0
  141. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +160 -0
  142. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts.map +1 -0
  143. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js +706 -0
  144. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js.map +1 -0
  145. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts +93 -0
  146. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts.map +1 -0
  147. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js +50 -0
  148. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js.map +1 -0
  149. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +384 -384
  150. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +44 -44
  151. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +10 -10
  152. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
  153. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
  154. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +60 -60
  155. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +134 -134
  156. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +8 -8
  157. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +20 -20
  158. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +114 -0
  159. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +1 -0
  160. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +777 -0
  161. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +1 -0
  162. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +12 -12
  163. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +8 -8
  164. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +2 -2
  165. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +34 -34
  166. package/dist/bubbles.json +1843 -2
  167. package/dist/index.d.ts +2 -0
  168. package/dist/index.d.ts.map +1 -1
  169. package/dist/index.js +2 -0
  170. package/dist/index.js.map +1 -1
  171. package/dist/types/ai-models.d.ts +4 -0
  172. package/dist/types/ai-models.d.ts.map +1 -0
  173. package/dist/types/ai-models.js +16 -0
  174. package/dist/types/ai-models.js.map +1 -0
  175. package/dist/utils/param-helper.d.ts +2 -0
  176. package/dist/utils/param-helper.d.ts.map +1 -0
  177. package/dist/utils/param-helper.js +5 -0
  178. package/dist/utils/param-helper.js.map +1 -0
  179. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clerk.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/clerk/clerk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAI3B,qBAAa,WAAW,CACtB,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAC7C,SAAQ,aAAa,CACrB,CAAC,EACD,OAAO,CAAC,WAAW,EAAE;IAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,CACpD;IACC,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAClC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IAC5C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAG,OAAO,CAAU;IAC9C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAC1C,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAqB;IAC3C,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAqB;IACjD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,uEACsC;IACtE,MAAM,CAAC,QAAQ,CAAC,eAAe,scAS7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;gBAG9B,MAAM,GAAE,CAEF,EACN,OAAO,CAAC,EAAE,aAAa;IAKzB,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;YAalC,gBAAgB;IAiEjB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;cAoB/B,aAAa,CAC3B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC,CAAC;YA0HjD,SAAS;YAmCT,OAAO;YAuBP,UAAU;YAmCV,UAAU;YAgCV,UAAU;YAeV,OAAO;YAwBP,SAAS;YA0BT,iBAAiB;YA+BjB,eAAe;YAuBf,kBAAkB;YAiClB,kBAAkB;YAiClB,kBAAkB;YAiBlB,2BAA2B;YAyC3B,eAAe;YA+Bf,gBAAgB;YA8BhB,gBAAgB;YAmBhB,YAAY;YAiCZ,aAAa;YAiBb,mBAAmB;YAuBnB,2BAA2B;CA4B1C"}
@@ -0,0 +1,579 @@
1
+ import { CredentialType } from '@bubblelab/shared-schemas';
2
+ import { ServiceBubble } from '../../../types/service-bubble-class.js';
3
+ import { ClerkParamsSchema, ClerkResultSchema, } from './clerk.schema.js';
4
+ const CLERK_API_BASE = 'https://api.clerk.com/v1';
5
+ export class ClerkBubble extends ServiceBubble {
6
+ static service = 'clerk';
7
+ static authType = 'oauth';
8
+ static bubbleName = 'clerk';
9
+ static type = 'service';
10
+ static schema = ClerkParamsSchema;
11
+ static resultSchema = ClerkResultSchema;
12
+ static shortDescription = 'Clerk integration for user management, organizations, and billing';
13
+ static longDescription = `
14
+ Integrate with Clerk to manage users, organizations, invitations, sessions, and billing.
15
+ Supported operations:
16
+ - Users: List, get, create, update, delete, ban, unban
17
+ - Organizations: List, get, create, update, delete, list memberships
18
+ - Invitations: List, create, revoke
19
+ - Sessions: List, revoke
20
+ - Billing: Get user/organization subscription status
21
+ Authentication: OAuth 2.0 or Secret Key (Bearer token)
22
+ `;
23
+ static alias = 'clerk';
24
+ constructor(params = {
25
+ operation: 'list_users',
26
+ }, context) {
27
+ super(params, context);
28
+ }
29
+ chooseCredential() {
30
+ const params = this.params;
31
+ const credentials = params.credentials;
32
+ if (!credentials || typeof credentials !== 'object') {
33
+ return undefined;
34
+ }
35
+ // Prefer API key (Secret Key) for Backend API access, fall back to OAuth token
36
+ return (credentials[CredentialType.CLERK_API_KEY] ||
37
+ credentials[CredentialType.CLERK_CRED]);
38
+ }
39
+ async makeClerkRequest(path, options = {}) {
40
+ const token = this.chooseCredential();
41
+ if (!token) {
42
+ return { ok: false, error: 'Clerk credential not found' };
43
+ }
44
+ const { method = 'GET', body, queryParams } = options;
45
+ let url = `${CLERK_API_BASE}${path}`;
46
+ if (queryParams) {
47
+ const params = new URLSearchParams(queryParams);
48
+ url += `?${params.toString()}`;
49
+ }
50
+ const headers = {
51
+ Authorization: `Bearer ${token}`,
52
+ 'Content-Type': 'application/json',
53
+ };
54
+ try {
55
+ const fetchOptions = { method, headers };
56
+ if (body && method !== 'GET') {
57
+ fetchOptions.body = JSON.stringify(body);
58
+ }
59
+ const response = await fetch(url, fetchOptions);
60
+ const text = await response.text();
61
+ if (!response.ok) {
62
+ let errorMessage = `Clerk API error (${response.status})`;
63
+ try {
64
+ const errorData = JSON.parse(text);
65
+ errorMessage =
66
+ errorData.errors?.[0]?.long_message ||
67
+ errorData.errors?.[0]?.message ||
68
+ errorData.message ||
69
+ errorMessage;
70
+ }
71
+ catch {
72
+ if (text)
73
+ errorMessage += `: ${text.slice(0, 200)}`;
74
+ }
75
+ return { ok: false, error: errorMessage };
76
+ }
77
+ if (!text || text.trim() === '') {
78
+ return { ok: true };
79
+ }
80
+ const data = JSON.parse(text);
81
+ return { ok: true, data };
82
+ }
83
+ catch (error) {
84
+ return {
85
+ ok: false,
86
+ error: error instanceof Error ? error.message : 'Unknown error occurred',
87
+ };
88
+ }
89
+ }
90
+ async testCredential() {
91
+ const token = this.chooseCredential();
92
+ if (!token) {
93
+ throw new Error('Clerk credentials are required');
94
+ }
95
+ const response = await fetch(`${CLERK_API_BASE}/users?limit=1`, {
96
+ method: 'GET',
97
+ headers: {
98
+ Authorization: `Bearer ${token}`,
99
+ 'Content-Type': 'application/json',
100
+ },
101
+ });
102
+ if (!response.ok) {
103
+ const text = await response.text();
104
+ throw new Error(`Clerk API error (${response.status}): ${text}`);
105
+ }
106
+ return true;
107
+ }
108
+ async performAction(context) {
109
+ void context;
110
+ const params = this.params;
111
+ const { operation } = params;
112
+ try {
113
+ switch (operation) {
114
+ // Users
115
+ case 'list_users':
116
+ return (await this.listUsers(params));
117
+ case 'get_user':
118
+ return (await this.getUser(params));
119
+ case 'create_user':
120
+ return (await this.createUser(params));
121
+ case 'update_user':
122
+ return (await this.updateUser(params));
123
+ case 'delete_user':
124
+ return (await this.deleteUser(params));
125
+ case 'ban_user':
126
+ return (await this.banUser(params));
127
+ case 'unban_user':
128
+ return (await this.unbanUser(params));
129
+ // Organizations
130
+ case 'list_organizations':
131
+ return (await this.listOrganizations(params));
132
+ case 'get_organization':
133
+ return (await this.getOrganization(params));
134
+ case 'create_organization':
135
+ return (await this.createOrganization(params));
136
+ case 'update_organization':
137
+ return (await this.updateOrganization(params));
138
+ case 'delete_organization':
139
+ return (await this.deleteOrganization(params));
140
+ case 'list_organization_memberships':
141
+ return (await this.listOrganizationMemberships(params));
142
+ // Invitations
143
+ case 'list_invitations':
144
+ return (await this.listInvitations(params));
145
+ case 'create_invitation':
146
+ return (await this.createInvitation(params));
147
+ case 'revoke_invitation':
148
+ return (await this.revokeInvitation(params));
149
+ // Sessions
150
+ case 'list_sessions':
151
+ return (await this.listSessions(params));
152
+ case 'revoke_session':
153
+ return (await this.revokeSession(params));
154
+ // Billing
155
+ case 'get_user_subscription':
156
+ return (await this.getUserSubscription(params));
157
+ case 'get_organization_subscription':
158
+ return (await this.getOrganizationSubscription(params));
159
+ default:
160
+ throw new Error(`Unknown operation: ${operation}`);
161
+ }
162
+ }
163
+ catch (error) {
164
+ return {
165
+ operation,
166
+ success: false,
167
+ error: error instanceof Error ? error.message : 'Unknown error occurred',
168
+ };
169
+ }
170
+ }
171
+ // ========================== Users ==========================
172
+ async listUsers(params) {
173
+ const queryParams = {
174
+ limit: String(params.limit),
175
+ offset: String(params.offset),
176
+ };
177
+ if (params.order_by)
178
+ queryParams.order_by = params.order_by;
179
+ if (params.query)
180
+ queryParams.query = params.query;
181
+ if (params.email_address) {
182
+ for (const email of params.email_address) {
183
+ queryParams[`email_address[]`] = email;
184
+ }
185
+ }
186
+ const result = await this.makeClerkRequest('/users', { queryParams });
187
+ if (!result.ok) {
188
+ return {
189
+ operation: 'list_users',
190
+ success: false,
191
+ error: result.error || 'Failed to list users',
192
+ };
193
+ }
194
+ const data = result.data;
195
+ return {
196
+ operation: 'list_users',
197
+ users: data || [],
198
+ total_count: Array.isArray(data) ? data.length : 0,
199
+ success: true,
200
+ error: '',
201
+ };
202
+ }
203
+ async getUser(params) {
204
+ const result = await this.makeClerkRequest(`/users/${encodeURIComponent(params.user_id)}`);
205
+ if (!result.ok) {
206
+ return {
207
+ operation: 'get_user',
208
+ success: false,
209
+ error: result.error || 'Failed to get user',
210
+ };
211
+ }
212
+ return {
213
+ operation: 'get_user',
214
+ user: result.data,
215
+ success: true,
216
+ error: '',
217
+ };
218
+ }
219
+ async createUser(params) {
220
+ const body = {
221
+ email_address: params.email_address,
222
+ };
223
+ if (params.first_name)
224
+ body.first_name = params.first_name;
225
+ if (params.last_name)
226
+ body.last_name = params.last_name;
227
+ if (params.username)
228
+ body.username = params.username;
229
+ if (params.password)
230
+ body.password = params.password;
231
+ if (params.public_metadata)
232
+ body.public_metadata = params.public_metadata;
233
+ if (params.private_metadata)
234
+ body.private_metadata = params.private_metadata;
235
+ const result = await this.makeClerkRequest('/users', {
236
+ method: 'POST',
237
+ body,
238
+ });
239
+ if (!result.ok) {
240
+ return {
241
+ operation: 'create_user',
242
+ success: false,
243
+ error: result.error || 'Failed to create user',
244
+ };
245
+ }
246
+ return {
247
+ operation: 'create_user',
248
+ user: result.data,
249
+ success: true,
250
+ error: '',
251
+ };
252
+ }
253
+ async updateUser(params) {
254
+ const body = {};
255
+ if (params.first_name !== undefined)
256
+ body.first_name = params.first_name;
257
+ if (params.last_name !== undefined)
258
+ body.last_name = params.last_name;
259
+ if (params.username !== undefined)
260
+ body.username = params.username;
261
+ if (params.public_metadata)
262
+ body.public_metadata = params.public_metadata;
263
+ if (params.private_metadata)
264
+ body.private_metadata = params.private_metadata;
265
+ const result = await this.makeClerkRequest(`/users/${encodeURIComponent(params.user_id)}`, { method: 'PATCH', body });
266
+ if (!result.ok) {
267
+ return {
268
+ operation: 'update_user',
269
+ success: false,
270
+ error: result.error || 'Failed to update user',
271
+ };
272
+ }
273
+ return {
274
+ operation: 'update_user',
275
+ user: result.data,
276
+ success: true,
277
+ error: '',
278
+ };
279
+ }
280
+ async deleteUser(params) {
281
+ const result = await this.makeClerkRequest(`/users/${encodeURIComponent(params.user_id)}`, { method: 'DELETE' });
282
+ return {
283
+ operation: 'delete_user',
284
+ success: result.ok,
285
+ error: result.ok ? '' : result.error || 'Failed to delete user',
286
+ };
287
+ }
288
+ async banUser(params) {
289
+ const result = await this.makeClerkRequest(`/users/${encodeURIComponent(params.user_id)}/ban`, { method: 'POST' });
290
+ if (!result.ok) {
291
+ return {
292
+ operation: 'ban_user',
293
+ success: false,
294
+ error: result.error || 'Failed to ban user',
295
+ };
296
+ }
297
+ return {
298
+ operation: 'ban_user',
299
+ user: result.data,
300
+ success: true,
301
+ error: '',
302
+ };
303
+ }
304
+ async unbanUser(params) {
305
+ const result = await this.makeClerkRequest(`/users/${encodeURIComponent(params.user_id)}/unban`, { method: 'POST' });
306
+ if (!result.ok) {
307
+ return {
308
+ operation: 'unban_user',
309
+ success: false,
310
+ error: result.error || 'Failed to unban user',
311
+ };
312
+ }
313
+ return {
314
+ operation: 'unban_user',
315
+ user: result.data,
316
+ success: true,
317
+ error: '',
318
+ };
319
+ }
320
+ // ========================== Organizations ==========================
321
+ async listOrganizations(params) {
322
+ const result = await this.makeClerkRequest('/organizations', {
323
+ queryParams: {
324
+ limit: String(params.limit),
325
+ offset: String(params.offset),
326
+ },
327
+ });
328
+ if (!result.ok) {
329
+ return {
330
+ operation: 'list_organizations',
331
+ success: false,
332
+ error: result.error || 'Failed to list organizations',
333
+ };
334
+ }
335
+ const responseData = result.data;
336
+ return {
337
+ operation: 'list_organizations',
338
+ organizations: responseData?.data || [],
339
+ total_count: responseData?.total_count,
340
+ success: true,
341
+ error: '',
342
+ };
343
+ }
344
+ async getOrganization(params) {
345
+ const result = await this.makeClerkRequest(`/organizations/${encodeURIComponent(params.organization_id)}`);
346
+ if (!result.ok) {
347
+ return {
348
+ operation: 'get_organization',
349
+ success: false,
350
+ error: result.error || 'Failed to get organization',
351
+ };
352
+ }
353
+ return {
354
+ operation: 'get_organization',
355
+ organization: result.data,
356
+ success: true,
357
+ error: '',
358
+ };
359
+ }
360
+ async createOrganization(params) {
361
+ const body = { name: params.name };
362
+ if (params.slug)
363
+ body.slug = params.slug;
364
+ if (params.created_by)
365
+ body.created_by = params.created_by;
366
+ if (params.public_metadata)
367
+ body.public_metadata = params.public_metadata;
368
+ if (params.private_metadata)
369
+ body.private_metadata = params.private_metadata;
370
+ if (params.max_allowed_memberships !== undefined)
371
+ body.max_allowed_memberships = params.max_allowed_memberships;
372
+ const result = await this.makeClerkRequest('/organizations', {
373
+ method: 'POST',
374
+ body,
375
+ });
376
+ if (!result.ok) {
377
+ return {
378
+ operation: 'create_organization',
379
+ success: false,
380
+ error: result.error || 'Failed to create organization',
381
+ };
382
+ }
383
+ return {
384
+ operation: 'create_organization',
385
+ organization: result.data,
386
+ success: true,
387
+ error: '',
388
+ };
389
+ }
390
+ async updateOrganization(params) {
391
+ const body = {};
392
+ if (params.name !== undefined)
393
+ body.name = params.name;
394
+ if (params.slug !== undefined)
395
+ body.slug = params.slug;
396
+ if (params.public_metadata)
397
+ body.public_metadata = params.public_metadata;
398
+ if (params.private_metadata)
399
+ body.private_metadata = params.private_metadata;
400
+ if (params.max_allowed_memberships !== undefined)
401
+ body.max_allowed_memberships = params.max_allowed_memberships;
402
+ const result = await this.makeClerkRequest(`/organizations/${encodeURIComponent(params.organization_id)}`, { method: 'PATCH', body });
403
+ if (!result.ok) {
404
+ return {
405
+ operation: 'update_organization',
406
+ success: false,
407
+ error: result.error || 'Failed to update organization',
408
+ };
409
+ }
410
+ return {
411
+ operation: 'update_organization',
412
+ organization: result.data,
413
+ success: true,
414
+ error: '',
415
+ };
416
+ }
417
+ async deleteOrganization(params) {
418
+ const result = await this.makeClerkRequest(`/organizations/${encodeURIComponent(params.organization_id)}`, { method: 'DELETE' });
419
+ return {
420
+ operation: 'delete_organization',
421
+ success: result.ok,
422
+ error: result.ok
423
+ ? ''
424
+ : result.error || 'Failed to delete organization',
425
+ };
426
+ }
427
+ async listOrganizationMemberships(params) {
428
+ const result = await this.makeClerkRequest(`/organizations/${encodeURIComponent(params.organization_id)}/memberships`, {
429
+ queryParams: {
430
+ limit: String(params.limit),
431
+ offset: String(params.offset),
432
+ },
433
+ });
434
+ if (!result.ok) {
435
+ return {
436
+ operation: 'list_organization_memberships',
437
+ success: false,
438
+ error: result.error || 'Failed to list memberships',
439
+ };
440
+ }
441
+ const responseData = result.data;
442
+ return {
443
+ operation: 'list_organization_memberships',
444
+ memberships: responseData?.data || [],
445
+ total_count: responseData?.total_count,
446
+ success: true,
447
+ error: '',
448
+ };
449
+ }
450
+ // ========================== Invitations ==========================
451
+ async listInvitations(params) {
452
+ const result = await this.makeClerkRequest('/invitations', {
453
+ queryParams: {
454
+ limit: String(params.limit),
455
+ offset: String(params.offset),
456
+ },
457
+ });
458
+ if (!result.ok) {
459
+ return {
460
+ operation: 'list_invitations',
461
+ success: false,
462
+ error: result.error || 'Failed to list invitations',
463
+ };
464
+ }
465
+ const responseData = result.data;
466
+ return {
467
+ operation: 'list_invitations',
468
+ invitations: responseData?.data || [],
469
+ total_count: responseData?.total_count,
470
+ success: true,
471
+ error: '',
472
+ };
473
+ }
474
+ async createInvitation(params) {
475
+ const body = {
476
+ email_address: params.email_address,
477
+ };
478
+ if (params.redirect_url)
479
+ body.redirect_url = params.redirect_url;
480
+ if (params.public_metadata)
481
+ body.public_metadata = params.public_metadata;
482
+ const result = await this.makeClerkRequest('/invitations', {
483
+ method: 'POST',
484
+ body,
485
+ });
486
+ if (!result.ok) {
487
+ return {
488
+ operation: 'create_invitation',
489
+ success: false,
490
+ error: result.error || 'Failed to create invitation',
491
+ };
492
+ }
493
+ return {
494
+ operation: 'create_invitation',
495
+ invitation: result.data,
496
+ success: true,
497
+ error: '',
498
+ };
499
+ }
500
+ async revokeInvitation(params) {
501
+ const result = await this.makeClerkRequest(`/invitations/${encodeURIComponent(params.invitation_id)}/revoke`, { method: 'POST' });
502
+ return {
503
+ operation: 'revoke_invitation',
504
+ success: result.ok,
505
+ error: result.ok
506
+ ? ''
507
+ : result.error || 'Failed to revoke invitation',
508
+ };
509
+ }
510
+ // ========================== Sessions ==========================
511
+ async listSessions(params) {
512
+ const queryParams = {
513
+ limit: String(params.limit),
514
+ offset: String(params.offset),
515
+ };
516
+ if (params.user_id)
517
+ queryParams.user_id = params.user_id;
518
+ if (params.status)
519
+ queryParams.status = params.status;
520
+ const result = await this.makeClerkRequest('/sessions', { queryParams });
521
+ if (!result.ok) {
522
+ return {
523
+ operation: 'list_sessions',
524
+ success: false,
525
+ error: result.error || 'Failed to list sessions',
526
+ };
527
+ }
528
+ const responseData = result.data;
529
+ return {
530
+ operation: 'list_sessions',
531
+ sessions: responseData?.data || [],
532
+ total_count: responseData?.total_count,
533
+ success: true,
534
+ error: '',
535
+ };
536
+ }
537
+ async revokeSession(params) {
538
+ const result = await this.makeClerkRequest(`/sessions/${encodeURIComponent(params.session_id)}/revoke`, { method: 'POST' });
539
+ return {
540
+ operation: 'revoke_session',
541
+ success: result.ok,
542
+ error: result.ok ? '' : result.error || 'Failed to revoke session',
543
+ };
544
+ }
545
+ // ========================== Billing ==========================
546
+ async getUserSubscription(params) {
547
+ const result = await this.makeClerkRequest(`/users/${encodeURIComponent(params.user_id)}/billing/subscription`);
548
+ if (!result.ok) {
549
+ return {
550
+ operation: 'get_user_subscription',
551
+ success: false,
552
+ error: result.error || 'Failed to get user subscription',
553
+ };
554
+ }
555
+ return {
556
+ operation: 'get_user_subscription',
557
+ subscription: result.data,
558
+ success: true,
559
+ error: '',
560
+ };
561
+ }
562
+ async getOrganizationSubscription(params) {
563
+ const result = await this.makeClerkRequest(`/organizations/${encodeURIComponent(params.organization_id)}/billing/subscription`);
564
+ if (!result.ok) {
565
+ return {
566
+ operation: 'get_organization_subscription',
567
+ success: false,
568
+ error: result.error || 'Failed to get organization subscription',
569
+ };
570
+ }
571
+ return {
572
+ operation: 'get_organization_subscription',
573
+ subscription: result.data,
574
+ success: true,
575
+ error: '',
576
+ };
577
+ }
578
+ }
579
+ //# sourceMappingURL=clerk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clerk.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/clerk/clerk.ts"],"names":[],"mappings":"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"}