@bubblelab/bubble-core 0.1.216 → 0.1.218

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 (155) hide show
  1. package/dist/bubble-bundle.d.ts +274 -188
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +8 -0
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubbles/service-bubble/agi-inc.d.ts +80 -80
  6. package/dist/bubbles/service-bubble/ai-agent.d.ts +74 -74
  7. package/dist/bubbles/service-bubble/airtable.d.ts +102 -102
  8. package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts +2 -2
  9. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +6 -6
  10. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +20 -20
  11. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +26 -26
  12. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +90 -90
  13. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +70 -70
  14. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +16 -16
  15. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +37 -37
  16. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +16 -16
  17. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +243 -243
  18. package/dist/bubbles/service-bubble/apify/apify.d.ts +30 -30
  19. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +64 -64
  20. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +86 -86
  21. package/dist/bubbles/service-bubble/assembled/assembled.d.ts +42 -42
  22. package/dist/bubbles/service-bubble/assembled/assembled.schema.d.ts +42 -42
  23. package/dist/bubbles/service-bubble/attio/attio.d.ts +34 -34
  24. package/dist/bubbles/service-bubble/attio/attio.schema.d.ts +34 -34
  25. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +31 -31
  26. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +33 -33
  27. package/dist/bubbles/service-bubble/confluence/confluence.d.ts +24 -24
  28. package/dist/bubbles/service-bubble/confluence/confluence.schema.d.ts +24 -24
  29. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +126 -126
  30. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +158 -158
  31. package/dist/bubbles/service-bubble/eleven-labs.d.ts +28 -28
  32. package/dist/bubbles/service-bubble/firecrawl.d.ts +834 -834
  33. package/dist/bubbles/service-bubble/followupboss.d.ts +144 -144
  34. package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts +68 -68
  35. package/dist/bubbles/service-bubble/fullenrich/fullenrich.schema.d.ts +108 -108
  36. package/dist/bubbles/service-bubble/github.d.ts +144 -144
  37. package/dist/bubbles/service-bubble/gmail.d.ts +240 -240
  38. package/dist/bubbles/service-bubble/google-calendar.d.ts +138 -138
  39. package/dist/bubbles/service-bubble/google-drive.d.ts +52 -52
  40. package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +44 -44
  41. package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +48 -48
  42. package/dist/bubbles/service-bubble/hello-world.d.ts +8 -8
  43. package/dist/bubbles/service-bubble/http.d.ts +18 -18
  44. package/dist/bubbles/service-bubble/hubspot/hubspot.d.ts +8 -8
  45. package/dist/bubbles/service-bubble/hubspot/hubspot.schema.d.ts +8 -8
  46. package/dist/bubbles/service-bubble/insforge-db.d.ts +16 -16
  47. package/dist/bubbles/service-bubble/jira/jira.d.ts +60 -60
  48. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +62 -62
  49. package/dist/bubbles/service-bubble/linear/linear.d.ts +32 -32
  50. package/dist/bubbles/service-bubble/linear/linear.schema.d.ts +32 -32
  51. package/dist/bubbles/service-bubble/notion/notion.d.ts +682 -682
  52. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +16 -16
  53. package/dist/bubbles/service-bubble/postgresql.d.ts +16 -16
  54. package/dist/bubbles/service-bubble/posthog/posthog.d.ts +24 -24
  55. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +30 -30
  56. package/dist/bubbles/service-bubble/ramp/index.d.ts +5 -0
  57. package/dist/bubbles/service-bubble/ramp/index.d.ts.map +1 -0
  58. package/dist/bubbles/service-bubble/ramp/index.js +5 -0
  59. package/dist/bubbles/service-bubble/ramp/index.js.map +1 -0
  60. package/dist/bubbles/service-bubble/ramp/ramp.d.ts +1128 -0
  61. package/dist/bubbles/service-bubble/ramp/ramp.d.ts.map +1 -0
  62. package/dist/bubbles/service-bubble/ramp/ramp.integration.flow.d.ts +15 -0
  63. package/dist/bubbles/service-bubble/ramp/ramp.integration.flow.d.ts.map +1 -0
  64. package/dist/bubbles/service-bubble/ramp/ramp.integration.flow.js +169 -0
  65. package/dist/bubbles/service-bubble/ramp/ramp.integration.flow.js.map +1 -0
  66. package/dist/bubbles/service-bubble/ramp/ramp.js +183 -0
  67. package/dist/bubbles/service-bubble/ramp/ramp.js.map +1 -0
  68. package/dist/bubbles/service-bubble/ramp/ramp.schema.d.ts +1373 -0
  69. package/dist/bubbles/service-bubble/ramp/ramp.schema.d.ts.map +1 -0
  70. package/dist/bubbles/service-bubble/ramp/ramp.schema.js +536 -0
  71. package/dist/bubbles/service-bubble/ramp/ramp.schema.js.map +1 -0
  72. package/dist/bubbles/service-bubble/ramp/ramp.utils.d.ts +13 -0
  73. package/dist/bubbles/service-bubble/ramp/ramp.utils.d.ts.map +1 -0
  74. package/dist/bubbles/service-bubble/ramp/ramp.utils.js +36 -0
  75. package/dist/bubbles/service-bubble/ramp/ramp.utils.js.map +1 -0
  76. package/dist/bubbles/service-bubble/resend.d.ts +28 -28
  77. package/dist/bubbles/service-bubble/s3/s3.d.ts +10 -10
  78. package/dist/bubbles/service-bubble/s3/s3.schema.d.ts +10 -10
  79. package/dist/bubbles/service-bubble/sendsafely/sendsafely.d.ts +10 -10
  80. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.d.ts +12 -12
  81. package/dist/bubbles/service-bubble/slack/slack-table-blocks.d.ts +1 -0
  82. package/dist/bubbles/service-bubble/slack/slack-table-blocks.d.ts.map +1 -1
  83. package/dist/bubbles/service-bubble/slack/slack-table-blocks.js +1 -0
  84. package/dist/bubbles/service-bubble/slack/slack-table-blocks.js.map +1 -1
  85. package/dist/bubbles/service-bubble/slack/slack.d.ts +556 -556
  86. package/dist/bubbles/service-bubble/slack/slack.utils.d.ts.map +1 -1
  87. package/dist/bubbles/service-bubble/slack/slack.utils.js +63 -17
  88. package/dist/bubbles/service-bubble/slack/slack.utils.js.map +1 -1
  89. package/dist/bubbles/service-bubble/storage.d.ts +20 -20
  90. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +157 -157
  91. package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +183 -183
  92. package/dist/bubbles/service-bubble/telegram.d.ts +1540 -1540
  93. package/dist/bubbles/service-bubble/xero/index.d.ts +3 -0
  94. package/dist/bubbles/service-bubble/xero/index.d.ts.map +1 -0
  95. package/dist/bubbles/service-bubble/xero/index.js +3 -0
  96. package/dist/bubbles/service-bubble/xero/index.js.map +1 -0
  97. package/dist/bubbles/service-bubble/xero/xero.d.ts +975 -0
  98. package/dist/bubbles/service-bubble/xero/xero.d.ts.map +1 -0
  99. package/dist/bubbles/service-bubble/xero/xero.js +477 -0
  100. package/dist/bubbles/service-bubble/xero/xero.js.map +1 -0
  101. package/dist/bubbles/service-bubble/xero/xero.schema.d.ts +924 -0
  102. package/dist/bubbles/service-bubble/xero/xero.schema.d.ts.map +1 -0
  103. package/dist/bubbles/service-bubble/xero/xero.schema.js +366 -0
  104. package/dist/bubbles/service-bubble/xero/xero.schema.js.map +1 -0
  105. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +19 -19
  106. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +21 -21
  107. package/dist/bubbles/tool-bubble/browser-tools/_shared/schema.d.ts +2 -2
  108. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/schema.d.ts +2 -2
  109. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.d.ts +2 -2
  110. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/schema.d.ts +2 -2
  111. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts +2 -2
  112. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/schema.d.ts +2 -2
  113. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts +2 -2
  114. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/schema.d.ts +2 -2
  115. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts +2 -2
  116. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +20 -20
  117. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +26 -26
  118. package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +4 -4
  119. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +62 -62
  120. package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +4 -4
  121. package/dist/bubbles/tool-bubble/get-trigger-detail-tool.d.ts +4 -4
  122. package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +4 -4
  123. package/dist/bubbles/tool-bubble/instagram-tool.d.ts +14 -14
  124. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +567 -567
  125. package/dist/bubbles/tool-bubble/list-airtable-bases-tool.d.ts +4 -4
  126. package/dist/bubbles/tool-bubble/list-airtable-tables-tool.d.ts +4 -4
  127. package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
  128. package/dist/bubbles/tool-bubble/list-capabilities-tool.d.ts +4 -4
  129. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +58 -58
  130. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +28 -28
  131. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
  132. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +8 -8
  133. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +88 -88
  134. package/dist/bubbles/tool-bubble/tool-template.d.ts +4 -4
  135. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +188 -188
  136. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +22 -22
  137. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +8 -8
  138. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +8 -8
  139. package/dist/bubbles/tool-bubble/web-search-tool.d.ts +8 -8
  140. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +26 -26
  141. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +38 -38
  142. package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +4 -4
  143. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +40 -40
  144. package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +8 -8
  145. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +72 -72
  146. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +32 -32
  147. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +32 -32
  148. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +104 -104
  149. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +8 -8
  150. package/dist/bubbles.json +2600 -2
  151. package/dist/index.d.ts +4 -0
  152. package/dist/index.d.ts.map +1 -1
  153. package/dist/index.js +2 -0
  154. package/dist/index.js.map +1 -1
  155. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ramp.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/ramp/ramp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { BubbleFlow, type WebhookEvent } from '@bubblelab/bubble-core';
2
+ export interface Output {
3
+ testResults: {
4
+ operation: string;
5
+ success: boolean;
6
+ details?: string;
7
+ }[];
8
+ }
9
+ export interface TestPayload extends WebhookEvent {
10
+ testName?: string;
11
+ }
12
+ export declare class RampIntegrationTest extends BubbleFlow<'webhook/http'> {
13
+ handle(_payload: TestPayload): Promise<Output>;
14
+ }
15
+ //# sourceMappingURL=ramp.integration.flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ramp.integration.flow.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/ramp/ramp.integration.flow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,mBAAoB,SAAQ,UAAU,CAAC,cAAc,CAAC;IAC3D,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAgMrD"}
@@ -0,0 +1,169 @@
1
+ import { BubbleFlow, RampBubble, } from '@bubblelab/bubble-core';
2
+ export class RampIntegrationTest extends BubbleFlow {
3
+ async handle(_payload) {
4
+ const results = [];
5
+ // 1. Test get_business
6
+ const businessResult = await new RampBubble({
7
+ operation: 'get_business',
8
+ }).action();
9
+ results.push({
10
+ operation: 'get_business',
11
+ success: businessResult.success,
12
+ details: businessResult.success
13
+ ? `Business: ${JSON.stringify(businessResult.data?.business)}`
14
+ : businessResult.error,
15
+ });
16
+ // 2. Test list_transactions
17
+ const txResult = await new RampBubble({
18
+ operation: 'list_transactions',
19
+ page_size: 5,
20
+ }).action();
21
+ results.push({
22
+ operation: 'list_transactions',
23
+ success: txResult.success,
24
+ details: txResult.success
25
+ ? `Found ${txResult.data?.transactions?.length ?? 0} transactions`
26
+ : txResult.error,
27
+ });
28
+ // 3. Test get_transaction (if we have one)
29
+ if (txResult.success && txResult.data?.transactions?.[0]?.id) {
30
+ const txId = txResult.data.transactions[0].id;
31
+ const singleTxResult = await new RampBubble({
32
+ operation: 'get_transaction',
33
+ transaction_id: txId,
34
+ }).action();
35
+ results.push({
36
+ operation: 'get_transaction',
37
+ success: singleTxResult.success,
38
+ details: singleTxResult.success
39
+ ? `Transaction: ${singleTxResult.data?.transaction?.merchant_name ?? 'N/A'}`
40
+ : singleTxResult.error,
41
+ });
42
+ }
43
+ // 4. Test list_users
44
+ const usersResult = await new RampBubble({
45
+ operation: 'list_users',
46
+ page_size: 5,
47
+ }).action();
48
+ results.push({
49
+ operation: 'list_users',
50
+ success: usersResult.success,
51
+ details: usersResult.success
52
+ ? `Found ${usersResult.data?.users?.length ?? 0} users`
53
+ : usersResult.error,
54
+ });
55
+ // 5. Test get_user (if we have one)
56
+ if (usersResult.success && usersResult.data?.users?.[0]?.id) {
57
+ const userId = usersResult.data.users[0].id;
58
+ const singleUserResult = await new RampBubble({
59
+ operation: 'get_user',
60
+ user_id: userId,
61
+ }).action();
62
+ results.push({
63
+ operation: 'get_user',
64
+ success: singleUserResult.success,
65
+ details: singleUserResult.success
66
+ ? `User: ${singleUserResult.data?.user?.first_name} ${singleUserResult.data?.user?.last_name}`
67
+ : singleUserResult.error,
68
+ });
69
+ }
70
+ // 6. Test list_cards
71
+ const cardsResult = await new RampBubble({
72
+ operation: 'list_cards',
73
+ page_size: 5,
74
+ }).action();
75
+ results.push({
76
+ operation: 'list_cards',
77
+ success: cardsResult.success,
78
+ details: cardsResult.success
79
+ ? `Found ${cardsResult.data?.cards?.length ?? 0} cards`
80
+ : cardsResult.error,
81
+ });
82
+ // 7. Test list_departments
83
+ const deptsResult = await new RampBubble({
84
+ operation: 'list_departments',
85
+ page_size: 5,
86
+ }).action();
87
+ results.push({
88
+ operation: 'list_departments',
89
+ success: deptsResult.success,
90
+ details: deptsResult.success
91
+ ? `Found ${deptsResult.data?.departments?.length ?? 0} departments`
92
+ : deptsResult.error,
93
+ });
94
+ // 8. Test list_locations
95
+ const locsResult = await new RampBubble({
96
+ operation: 'list_locations',
97
+ page_size: 5,
98
+ }).action();
99
+ results.push({
100
+ operation: 'list_locations',
101
+ success: locsResult.success,
102
+ details: locsResult.success
103
+ ? `Found ${locsResult.data?.locations?.length ?? 0} locations`
104
+ : locsResult.error,
105
+ });
106
+ // 9. Test list_spend_programs
107
+ const spResult = await new RampBubble({
108
+ operation: 'list_spend_programs',
109
+ page_size: 5,
110
+ }).action();
111
+ results.push({
112
+ operation: 'list_spend_programs',
113
+ success: spResult.success,
114
+ details: spResult.success
115
+ ? `Found ${spResult.data?.spend_programs?.length ?? 0} spend programs`
116
+ : spResult.error,
117
+ });
118
+ // 10. Test list_limits
119
+ const limitsResult = await new RampBubble({
120
+ operation: 'list_limits',
121
+ page_size: 5,
122
+ }).action();
123
+ results.push({
124
+ operation: 'list_limits',
125
+ success: limitsResult.success,
126
+ details: limitsResult.success
127
+ ? `Found ${limitsResult.data?.limits?.length ?? 0} limits`
128
+ : limitsResult.error,
129
+ });
130
+ // 11. Test list_reimbursements
131
+ const reimbResult = await new RampBubble({
132
+ operation: 'list_reimbursements',
133
+ page_size: 5,
134
+ }).action();
135
+ results.push({
136
+ operation: 'list_reimbursements',
137
+ success: reimbResult.success,
138
+ details: reimbResult.success
139
+ ? `Found ${reimbResult.data?.reimbursements?.length ?? 0} reimbursements`
140
+ : reimbResult.error,
141
+ });
142
+ // 12. Test list_bills
143
+ const billsResult = await new RampBubble({
144
+ operation: 'list_bills',
145
+ page_size: 5,
146
+ }).action();
147
+ results.push({
148
+ operation: 'list_bills',
149
+ success: billsResult.success,
150
+ details: billsResult.success
151
+ ? `Found ${billsResult.data?.bills?.length ?? 0} bills`
152
+ : billsResult.error,
153
+ });
154
+ // 13. Test list_vendors
155
+ const vendorsResult = await new RampBubble({
156
+ operation: 'list_vendors',
157
+ page_size: 5,
158
+ }).action();
159
+ results.push({
160
+ operation: 'list_vendors',
161
+ success: vendorsResult.success,
162
+ details: vendorsResult.success
163
+ ? `Found ${vendorsResult.data?.vendors?.length ?? 0} vendors`
164
+ : vendorsResult.error,
165
+ });
166
+ return { testResults: results };
167
+ }
168
+ }
169
+ //# sourceMappingURL=ramp.integration.flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ramp.integration.flow.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/ramp/ramp.integration.flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ import { ServiceBubble } from '../../../types/service-bubble-class.js';
2
+ import { CredentialType } from '@bubblelab/shared-schemas';
3
+ import { RampParamsSchema, RampResultSchema, } from './ramp.schema.js';
4
+ import { makeRampRequest } from './ramp.utils.js';
5
+ /**
6
+ * Ramp Service Bubble
7
+ *
8
+ * Agent-friendly Ramp integration for corporate expense management.
9
+ *
10
+ * Operations:
11
+ * - list_transactions / get_transaction: View spending activity
12
+ * - list_users / get_user: View employees
13
+ * - list_cards / get_card: View corporate cards
14
+ * - list_departments: View departments
15
+ * - list_locations: View locations
16
+ * - list_spend_programs: View spend programs
17
+ * - list_limits: View spend limits/funds
18
+ * - list_reimbursements: View reimbursements
19
+ * - list_bills: View bills
20
+ * - list_vendors: View vendors
21
+ * - get_business: Get business info
22
+ *
23
+ * Features:
24
+ * - OAuth 2.0 authentication
25
+ * - Cursor-based pagination
26
+ * - REST API integration
27
+ */
28
+ export class RampBubble extends ServiceBubble {
29
+ static type = 'service';
30
+ static service = 'ramp';
31
+ static authType = 'oauth';
32
+ static bubbleName = 'ramp';
33
+ static schema = RampParamsSchema;
34
+ static resultSchema = RampResultSchema;
35
+ static shortDescription = 'Ramp integration for corporate expense management';
36
+ static longDescription = `
37
+ Agent-friendly Ramp integration for corporate expense and spend management.
38
+
39
+ Operations:
40
+ - list_transactions / get_transaction: View spending activity across cards
41
+ - list_users / get_user: View and manage employees
42
+ - list_cards / get_card: View corporate cards
43
+ - list_departments: View departments
44
+ - list_locations: View locations
45
+ - list_spend_programs: View spend programs
46
+ - list_limits: View spend limits/funds
47
+ - list_reimbursements: View reimbursements
48
+ - list_bills: View bills
49
+ - list_vendors: View vendors
50
+ - get_business: Get business information
51
+
52
+ Features:
53
+ - OAuth 2.0 authentication
54
+ - Cursor-based pagination
55
+ - Comprehensive spend visibility
56
+ `;
57
+ static alias = 'ramp';
58
+ constructor(params, context) {
59
+ super(params, context);
60
+ }
61
+ async testCredential() {
62
+ const accessToken = this.chooseCredential();
63
+ if (!accessToken) {
64
+ throw new Error('Ramp credentials are required');
65
+ }
66
+ // Test by fetching business info
67
+ const data = await makeRampRequest(accessToken, '/business');
68
+ if (!data || typeof data !== 'object') {
69
+ throw new Error('Ramp API returned no data');
70
+ }
71
+ return true;
72
+ }
73
+ getAccessToken() {
74
+ const { credentials } = this.params;
75
+ if (!credentials || typeof credentials !== 'object') {
76
+ throw new Error('Ramp credentials are required. Connect your Ramp account via OAuth.');
77
+ }
78
+ const token = credentials[CredentialType.RAMP_CRED];
79
+ if (!token) {
80
+ throw new Error('Ramp credentials are required. Connect your Ramp account via OAuth.');
81
+ }
82
+ return token;
83
+ }
84
+ async performAction(context) {
85
+ void context;
86
+ const { operation } = this.params;
87
+ try {
88
+ const result = await (async () => {
89
+ const params = this.params;
90
+ const token = this.getAccessToken();
91
+ switch (operation) {
92
+ case 'list_transactions':
93
+ return await this.listPaginated(token, '/transactions', 'list_transactions', 'transactions', params);
94
+ case 'get_transaction':
95
+ return await this.getSingle(token, `/transactions/${params.transaction_id}`, 'get_transaction', 'transaction');
96
+ case 'list_users':
97
+ return await this.listPaginated(token, '/users', 'list_users', 'users', params);
98
+ case 'get_user':
99
+ return await this.getSingle(token, `/users/${params.user_id}`, 'get_user', 'user');
100
+ case 'list_cards':
101
+ return await this.listPaginated(token, '/cards', 'list_cards', 'cards', params);
102
+ case 'get_card':
103
+ return await this.getSingle(token, `/cards/${params.card_id}`, 'get_card', 'card');
104
+ case 'list_departments':
105
+ return await this.listPaginated(token, '/departments', 'list_departments', 'departments', params);
106
+ case 'list_locations':
107
+ return await this.listPaginated(token, '/locations', 'list_locations', 'locations', params);
108
+ case 'list_spend_programs':
109
+ return await this.listPaginated(token, '/spend-programs', 'list_spend_programs', 'spend_programs', params);
110
+ case 'list_limits':
111
+ return await this.listPaginated(token, '/limits', 'list_limits', 'limits', params);
112
+ case 'list_reimbursements':
113
+ return await this.listPaginated(token, '/reimbursements', 'list_reimbursements', 'reimbursements', params);
114
+ case 'list_bills':
115
+ return await this.listPaginated(token, '/bills', 'list_bills', 'bills', params);
116
+ case 'list_vendors':
117
+ return await this.listPaginated(token, '/vendors', 'list_vendors', 'vendors', params);
118
+ case 'get_business': {
119
+ const data = await makeRampRequest(token, '/business');
120
+ return {
121
+ operation: 'get_business',
122
+ success: true,
123
+ business: data,
124
+ error: '',
125
+ };
126
+ }
127
+ default:
128
+ throw new Error(`Unsupported operation: ${operation}`);
129
+ }
130
+ })();
131
+ return result;
132
+ }
133
+ catch (error) {
134
+ return {
135
+ operation,
136
+ success: false,
137
+ error: error instanceof Error ? error.message : 'Unknown error occurred',
138
+ };
139
+ }
140
+ }
141
+ async listPaginated(token, endpoint, operation, dataKey, params) {
142
+ const queryParams = {};
143
+ if ('page_size' in params && params.page_size) {
144
+ queryParams.page_size = params.page_size;
145
+ }
146
+ if ('start' in params && params.start) {
147
+ queryParams.start = params.start;
148
+ }
149
+ if ('from_date' in params && params.from_date) {
150
+ queryParams.from_date = params.from_date;
151
+ }
152
+ if ('to_date' in params && params.to_date) {
153
+ queryParams.to_date = params.to_date;
154
+ }
155
+ const data = await makeRampRequest(token, endpoint, {
156
+ params: queryParams,
157
+ });
158
+ return {
159
+ operation,
160
+ success: true,
161
+ [dataKey]: (data.data ?? []),
162
+ has_more: !!data.page?.next,
163
+ error: '',
164
+ };
165
+ }
166
+ async getSingle(token, endpoint, operation, dataKey) {
167
+ const data = await makeRampRequest(token, endpoint);
168
+ return {
169
+ operation,
170
+ success: true,
171
+ [dataKey]: data,
172
+ error: '',
173
+ };
174
+ }
175
+ chooseCredential() {
176
+ const { credentials } = this.params;
177
+ if (!credentials || typeof credentials !== 'object') {
178
+ return undefined;
179
+ }
180
+ return credentials[CredentialType.RAMP_CRED];
181
+ }
182
+ }
183
+ //# sourceMappingURL=ramp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ramp.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/ramp/ramp.ts"],"names":[],"mappings":"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"}