@keystrokehq/salesforce 0.0.15 → 0.0.16-integration-id-canonicalization.0

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 (67) hide show
  1. package/README.md +31 -130
  2. package/dist/common-DkQhdp5I.d.mts +40 -0
  3. package/dist/credential-sets/index.d.mts +2 -0
  4. package/dist/credential-sets/index.mjs +4 -0
  5. package/dist/index.d.mts +4 -1
  6. package/dist/index.mjs +6 -1
  7. package/dist/operations/index.d.mts +2 -0
  8. package/dist/operations/index.mjs +3 -0
  9. package/dist/salesforce-app.credential-set-BvN8tzVf.mjs +16 -0
  10. package/dist/salesforce-app.credential-set-RWN3Wimi.d.mts +51 -0
  11. package/dist/salesforce.credential-set-CiJcvT3l.mjs +199 -0
  12. package/dist/schemas/index.d.mts +1 -39
  13. package/dist/schemas/index.mjs +1 -1
  14. package/dist/update_task.operation-DLJMTduq.d.mts +2825 -0
  15. package/dist/update_task.operation-KNAsLHv7.mjs +1311 -0
  16. package/package.json +12 -95
  17. package/dist/_official/index.d.mts +0 -38
  18. package/dist/_official/index.mjs +0 -3
  19. package/dist/_runtime/index.d.mts +0 -6
  20. package/dist/_runtime/index.mjs +0 -89
  21. package/dist/accounts.d.mts +0 -81
  22. package/dist/accounts.mjs +0 -30
  23. package/dist/associations.d.mts +0 -33
  24. package/dist/associations.mjs +0 -70
  25. package/dist/campaign-members.d.mts +0 -81
  26. package/dist/campaign-members.mjs +0 -27
  27. package/dist/campaigns.d.mts +0 -81
  28. package/dist/campaigns.mjs +0 -28
  29. package/dist/cases.d.mts +0 -81
  30. package/dist/cases.mjs +0 -30
  31. package/dist/client.d.mts +0 -8
  32. package/dist/client.mjs +0 -26
  33. package/dist/connection.d.mts +0 -2
  34. package/dist/connection.mjs +0 -3
  35. package/dist/contacts.d.mts +0 -81
  36. package/dist/contacts.mjs +0 -29
  37. package/dist/dashboards.d.mts +0 -22
  38. package/dist/dashboards.mjs +0 -44
  39. package/dist/factory-BGHapzgT.mjs +0 -8
  40. package/dist/integration-BDDBjdNG.d.mts +0 -30
  41. package/dist/integration-BzLQsPf-.mjs +0 -60
  42. package/dist/leads.d.mts +0 -81
  43. package/dist/leads.mjs +0 -30
  44. package/dist/messaging.d.mts +0 -1
  45. package/dist/messaging.mjs +0 -1
  46. package/dist/notes.d.mts +0 -81
  47. package/dist/notes.mjs +0 -26
  48. package/dist/objects.d.mts +0 -16
  49. package/dist/objects.mjs +0 -31
  50. package/dist/opportunities.d.mts +0 -81
  51. package/dist/opportunities.mjs +0 -29
  52. package/dist/opportunity-line-items.d.mts +0 -81
  53. package/dist/opportunity-line-items.mjs +0 -29
  54. package/dist/ownership.d.mts +0 -21
  55. package/dist/ownership.mjs +0 -49
  56. package/dist/reports.d.mts +0 -27
  57. package/dist/reports.mjs +0 -59
  58. package/dist/shared-CM1r3Nii.mjs +0 -196
  59. package/dist/soql.d.mts +0 -40
  60. package/dist/soql.mjs +0 -30
  61. package/dist/tasks.d.mts +0 -81
  62. package/dist/tasks.mjs +0 -29
  63. package/dist/triggers.d.mts +0 -83
  64. package/dist/triggers.mjs +0 -309
  65. package/dist/users.d.mts +0 -10
  66. package/dist/users.mjs +0 -20
  67. /package/dist/{common-BUAhHMqn.mjs → common-wiFkMAq5.mjs} +0 -0
package/README.md CHANGED
@@ -4,15 +4,13 @@ Salesforce CRM and platform integration for Keystroke workflows.
4
4
 
5
5
  ## Overview
6
6
 
7
- This package provides:
7
+ This package provides Playbook 17 primitives for Salesforce automation:
8
8
 
9
- - Explicit support surfaces for `connection`, `client`, `schemas`, `triggers`, and CRM domain modules
10
- - CRUD-backed Salesforce record operations for accounts, contacts, leads, opportunities, cases, tasks, campaigns, campaign members, opportunity line items, and notes
11
- - Focused Salesforce helpers for contact-account associations, ownership transfer, current-user identity, SOQL pagination, reports, and dashboards
12
- - Direct-binding polling triggers for common Salesforce record activity with stable `eventType` payloads
13
- - A thin JSforce client wrapper for resolved OAuth credentials
9
+ - `@keystrokehq/salesforce/credential-sets` user OAuth and platform Connected App credential sets
10
+ - `@keystrokehq/salesforce/operations` 65 manifest-typed operations (CRUD, SOQL, analytics, associations)
11
+ - `@keystrokehq/salesforce/schemas` shared Zod schemas for records, queries, and analytics payloads
14
12
 
15
- The package root is intentionally non-canonical. Import from explicit subpaths instead of `@keystrokehq/salesforce`.
13
+ Polling triggers and the JSforce client wrapper live under `src/triggers/` and `src/utils/` for package-local tests and advanced authoring.
16
14
 
17
15
  ## Installation
18
16
 
@@ -22,33 +20,31 @@ pnpm add @keystrokehq/salesforce
22
20
 
23
21
  ## Credentials
24
22
 
25
- The public Salesforce connection exposes two OAuth credentials to workflow authors:
23
+ The public Salesforce credential set exposes OAuth with:
26
24
 
27
25
  - `SALESFORCE_ACCESS_TOKEN`
28
26
  - `SALESFORCE_INSTANCE_URL`
29
27
 
30
28
  ```ts
31
- import { salesforce } from '@keystrokehq/salesforce/connection';
29
+ import { salesforceCredentialSet } from '@keystrokehq/salesforce/credential-sets';
32
30
  ```
33
31
 
34
- The internal Salesforce Connected App credential set stores `clientId` and `clientSecret` separately from the public runtime auth contract.
35
-
36
- For sandbox tenants, the provider app metadata can set either:
37
-
38
- - `environment: "sandbox"`
39
- - `loginBaseUrl: "https://test.salesforce.com"`
32
+ The platform Connected App credential set (`salesforceAppCredentialSet`, `salesforce-app`) stores `clientId` and `clientSecret` separately. Sandbox installs can set provider metadata via `KEYSTROKE_OFFICIAL_SALESFORCE_ENVIRONMENT` or `KEYSTROKE_OFFICIAL_SALESFORCE_LOGIN_BASE_URL`.
40
33
 
41
34
  ## Operations
42
35
 
43
- Operations are regular Keystroke steps, so call them with `.run(...)` inside workflow code.
36
+ Operations are regular Keystroke steps. Import from the operations barrel and call `.run(...)` inside workflow code.
44
37
 
45
38
  ```ts
46
39
  import { Workflow } from '@keystrokehq/core';
47
40
  import { z } from 'zod';
48
- import { getAccount } from '@keystrokehq/salesforce/accounts';
49
- import { associateContactToAccount } from '@keystrokehq/salesforce/associations';
50
- import { createLead } from '@keystrokehq/salesforce/leads';
51
- import { queryMore, runSoqlQuery } from '@keystrokehq/salesforce/soql';
41
+ import {
42
+ associateContactToAccountOperation,
43
+ createLeadOperation,
44
+ getAccountOperation,
45
+ queryMoreOperation,
46
+ runSoqlQueryOperation,
47
+ } from '@keystrokehq/salesforce/operations';
52
48
 
53
49
  export const salesforceFollowUpWorkflow = new Workflow({
54
50
  id: 'salesforce-follow-up',
@@ -56,12 +52,12 @@ export const salesforceFollowUpWorkflow = new Workflow({
56
52
  input: z.object({ accountId: z.string() }),
57
53
  output: z.object({ success: z.boolean() }),
58
54
  run: async (input) => {
59
- const account = await getAccount.run({
55
+ const account = await getAccountOperation.run({
60
56
  id: input.accountId,
61
57
  fields: ['Id', 'Name', 'Industry', 'LastModifiedDate'],
62
58
  });
63
59
 
64
- await createLead.run({
60
+ await createLeadOperation.run({
65
61
  fields: {
66
62
  FirstName: 'Avery',
67
63
  LastName: 'Stone',
@@ -71,20 +67,20 @@ export const salesforceFollowUpWorkflow = new Workflow({
71
67
  returnFields: ['Id', 'FirstName', 'LastName', 'Company', 'Status'],
72
68
  });
73
69
 
74
- const recentContacts = await runSoqlQuery.run({
70
+ const recentContacts = await runSoqlQueryOperation.run({
75
71
  query:
76
72
  "SELECT Id, FirstName, LastName, Email FROM Contact WHERE AccountId != NULL ORDER BY LastModifiedDate DESC LIMIT 10",
77
73
  });
78
74
 
79
75
  if (recentContacts.records[0]?.Id) {
80
- await associateContactToAccount.run({
76
+ await associateContactToAccountOperation.run({
81
77
  contactId: recentContacts.records[0].Id,
82
78
  accountId: input.accountId,
83
79
  });
84
80
  }
85
81
 
86
82
  if (recentContacts.nextRecordsUrl) {
87
- await queryMore.run({ nextRecordsUrl: recentContacts.nextRecordsUrl });
83
+ await queryMoreOperation.run({ nextRecordsUrl: recentContacts.nextRecordsUrl });
88
84
  }
89
85
 
90
86
  return { success: recentContacts.records.length >= 0 };
@@ -92,114 +88,19 @@ export const salesforceFollowUpWorkflow = new Workflow({
92
88
  });
93
89
  ```
94
90
 
95
- Additional helpers are available from:
96
-
97
- - `@keystrokehq/salesforce/associations`
98
- - `@keystrokehq/salesforce/campaign-members`
99
- - `@keystrokehq/salesforce/opportunity-line-items`
100
- - `@keystrokehq/salesforce/ownership`
101
- - `@keystrokehq/salesforce/users`
102
-
103
- ## Triggers
104
-
105
- Salesforce trigger helpers are direct-binding only. Call the helper once with optional `name`, `description`, `schedule`, `filter`, or `transform` fields and use the returned bound trigger in your workflow.
106
-
107
- Every mapped trigger payload includes:
108
-
109
- - `eventType`: a stable event identifier such as `lead.created` or `task.completed`
110
- - `objectName`: the Salesforce object being polled
111
- - `records`: normalized Salesforce records
112
- - `taskEventType`: present for task triggers so created vs. completed is explicit in filters and transforms
113
-
114
- ```ts
115
- import { polling } from '@keystrokehq/salesforce/triggers';
116
-
117
- const newLeadTrigger = polling.newLead({
118
- name: 'Salesforce New Lead',
119
- schedule: '*/10 * * * *',
120
- transform: (payload) => ({
121
- eventType: payload.eventType,
122
- leadIds: payload.records
123
- .map((record) => (typeof record.Id === 'string' ? record.Id : undefined))
124
- .filter((value): value is string => value !== undefined),
125
- count: payload.records.length,
126
- }),
127
- });
128
-
129
- const opportunityTrigger = polling.opportunityCreatedOrUpdated({
130
- stages: ['Prospecting', 'Closed Won'],
131
- schedule: '15m',
132
- });
133
-
134
- void newLeadTrigger;
135
- void opportunityTrigger;
136
- ```
137
-
138
- Use `polling.sObjectRecordUpdated(...)` when you need a generic object poller with custom `fields`, `watermarkField`, and `where` filters.
139
-
140
- ## Analytics
141
-
142
- Analytics helpers expose low-risk report and dashboard endpoints:
91
+ ## Canonical imports
143
92
 
144
- - `listReports`, `listReportTypes`, `getReportMetadata`, `runReport`
145
- - `listDashboards`, `getDashboard`, `refreshDashboard`
146
-
147
- The `refreshDashboard` operation is marked `needsApproval: true` because it triggers a dashboard refresh job.
93
+ - `@keystrokehq/salesforce`
94
+ - `@keystrokehq/salesforce/credential-sets`
95
+ - `@keystrokehq/salesforce/operations`
96
+ - `@keystrokehq/salesforce/schemas`
97
+ - `catalog discovery via `src/provider-apps/`` (provider seed descriptor only)
148
98
 
149
99
  ## Testing
150
100
 
151
- This package now uses the repo’s two-project Vitest layout:
152
-
153
- - `pnpm test:unit` for deterministic unit tests
154
- - `pnpm test:int` for deterministic integration tests and env-gated live Salesforce smoke tests
155
-
156
- The package coverage inventory lives in `TEST_MATRIX.md`.
157
-
158
- Deterministic integration coverage does not require live Salesforce credentials. It uses package-local `*.int.test.ts` files to exercise:
159
-
160
- - every exported operation in `src/operations.ts`
161
- - trigger polling behavior with realistic mapped payloads
162
- - client error normalization and auth failure handling
163
- - schema and shared query/mutation helpers
164
-
165
- Live Salesforce tests are opt-in and stay skipped unless all required env values exist in `.env.test`:
166
-
167
- - `RUN_LIVE_INT="true"`
168
- - `SALESFORCE_ACCESS_TOKEN`
169
- - `SALESFORCE_INSTANCE_URL`
170
-
171
- Optional live analytics and line-item smoke tests also use:
172
-
173
- - `SALESFORCE_TEST_REPORT_ID`
174
- - `SALESFORCE_TEST_DASHBOARD_ID`
175
- - `SALESFORCE_TEST_PRICEBOOK_ENTRY_ID`
101
+ - `pnpm test:unit` deterministic unit tests
102
+ - `pnpm test:int` — integration harness and opt-in live Salesforce smoke tests
176
103
 
177
- Use a Salesforce sandbox or scratch org only.
104
+ Live tests require `RUN_LIVE_INT="true"`, `SALESFORCE_ACCESS_TOKEN`, and `SALESFORCE_INSTANCE_URL` in `.env.test`. Use a sandbox or scratch org only.
178
105
 
179
- ## High-Risk Follow-Ups
180
-
181
- The initial package intentionally leaves a few Salesforce-specific behaviors as separately scoped follow-up work. See `HIGH_RISK_BEHAVIORS.md` for the current decision notes around assignment rules, cloning, outbound email, and richer trigger semantics.
182
-
183
- ## Canonical Imports
184
-
185
- - `@keystrokehq/salesforce/connection`
186
- - `@keystrokehq/salesforce/client`
187
- - `@keystrokehq/salesforce/schemas`
188
- - `@keystrokehq/salesforce/triggers`
189
- - `@keystrokehq/salesforce/accounts`
190
- - `@keystrokehq/salesforce/associations`
191
- - `@keystrokehq/salesforce/campaign-members`
192
- - `@keystrokehq/salesforce/contacts`
193
- - `@keystrokehq/salesforce/leads`
194
- - `@keystrokehq/salesforce/opportunities`
195
- - `@keystrokehq/salesforce/opportunity-line-items`
196
- - `@keystrokehq/salesforce/ownership`
197
- - `@keystrokehq/salesforce/cases`
198
- - `@keystrokehq/salesforce/tasks`
199
- - `@keystrokehq/salesforce/campaigns`
200
- - `@keystrokehq/salesforce/notes`
201
- - `@keystrokehq/salesforce/users`
202
- - `@keystrokehq/salesforce/soql`
203
- - `@keystrokehq/salesforce/objects`
204
- - `@keystrokehq/salesforce/reports`
205
- - `@keystrokehq/salesforce/dashboards`
106
+ See `TEST_MATRIX.md` for coverage inventory and `HIGH_RISK_BEHAVIORS.md` for scoped follow-up work.
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+
3
+ //#region src/schemas/common.d.ts
4
+ declare const salesforceIdSchema: z.ZodString;
5
+ declare const salesforceAttributesSchema: z.ZodObject<{
6
+ type: z.ZodString;
7
+ url: z.ZodString;
8
+ }, z.core.$strip>;
9
+ declare const salesforceRecordSchema: z.ZodObject<{
10
+ Id: z.ZodOptional<z.ZodString>;
11
+ attributes: z.ZodOptional<z.ZodObject<{
12
+ type: z.ZodString;
13
+ url: z.ZodString;
14
+ }, z.core.$strip>>;
15
+ }, z.core.$catchall<z.ZodUnknown>>;
16
+ declare const salesforceQueryResultSchema: z.ZodObject<{
17
+ totalSize: z.ZodNumber;
18
+ done: z.ZodBoolean;
19
+ nextRecordsUrl: z.ZodOptional<z.ZodString>;
20
+ records: z.ZodArray<z.ZodObject<{
21
+ Id: z.ZodOptional<z.ZodString>;
22
+ attributes: z.ZodOptional<z.ZodObject<{
23
+ type: z.ZodString;
24
+ url: z.ZodString;
25
+ }, z.core.$strip>>;
26
+ }, z.core.$catchall<z.ZodUnknown>>>;
27
+ }, z.core.$strip>;
28
+ declare const salesforceMutationResultSchema: z.ZodObject<{
29
+ success: z.ZodBoolean;
30
+ id: z.ZodOptional<z.ZodString>;
31
+ errors: z.ZodOptional<z.ZodArray<z.ZodString>>;
32
+ }, z.core.$strip>;
33
+ declare const salesforceGenericObjectSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
34
+ declare const salesforceGenericObjectArraySchema: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
35
+ type SalesforceRecord = z.infer<typeof salesforceRecordSchema>;
36
+ type SalesforceQueryResult = z.infer<typeof salesforceQueryResultSchema>;
37
+ type SalesforceMutationResult = z.infer<typeof salesforceMutationResultSchema>;
38
+ type SalesforceGenericObject = z.infer<typeof salesforceGenericObjectSchema>;
39
+ //#endregion
40
+ export { salesforceAttributesSchema as a, salesforceIdSchema as c, salesforceRecordSchema as d, SalesforceRecord as i, salesforceMutationResultSchema as l, SalesforceMutationResult as n, salesforceGenericObjectArraySchema as o, SalesforceQueryResult as r, salesforceGenericObjectSchema as s, SalesforceGenericObject as t, salesforceQueryResultSchema as u };
@@ -0,0 +1,2 @@
1
+ import { i as salesforceCredentialSet, n as salesforceAppCredentialSet, r as SalesforceCredentials, t as SalesforceAppCredentials } from "../salesforce-app.credential-set-RWN3Wimi.mjs";
2
+ export { type SalesforceAppCredentials, type SalesforceCredentials, salesforceAppCredentialSet, salesforceCredentialSet };
@@ -0,0 +1,4 @@
1
+ import { t as salesforceCredentialSet } from "../salesforce.credential-set-CiJcvT3l.mjs";
2
+ import { t as salesforceAppCredentialSet } from "../salesforce-app.credential-set-BvN8tzVf.mjs";
3
+
4
+ export { salesforceAppCredentialSet, salesforceCredentialSet };
package/dist/index.d.mts CHANGED
@@ -1 +1,4 @@
1
- export { };
1
+ import { i as salesforceCredentialSet, n as salesforceAppCredentialSet, r as SalesforceCredentials, t as SalesforceAppCredentials } from "./salesforce-app.credential-set-RWN3Wimi.mjs";
2
+ import { $ as deleteCampaignOperation, A as getReportMetadataOperation, B as getCampaignMemberOperation, C as listNoteOperation, D as listCampaignOperation, E as listCaseOperation, F as getOpportunityOperation, G as deleteTaskOperation, H as getAccountOperation, I as getNoteOperation, J as deleteNoteOperation, K as deleteOpportunityLineItemOperation, L as getLeadOperation, M as getCurrentUserInfoOperation, N as getTaskOperation, O as listCampaignMemberOperation, P as getOpportunityLineItemOperation, Q as deleteCampaignMemberOperation, R as getContactOperation, S as listOpportunityLineItemOperation, T as listContactOperation, U as dissociateContactFromAccountOperation, V as getCampaignOperation, W as describeObjectOperation, X as deleteContactOperation, Y as deleteLeadOperation, Z as deleteCaseOperation, _ as listReportTypesOperation, a as updateLeadOperation, at as createLeadOperation, b as listTaskOperation, c as updateCampaignMemberOperation, ct as createCampaignMemberOperation, d as transferRecordOwnershipOperation, dt as associateContactToAccountOperation, et as deleteAccountOperation, f as runSoqlQueryOperation, g as listReportsOperation, h as queryMoreOperation, i as updateNoteOperation, it as createNoteOperation, j as getDashboardOperation, k as listAccountOperation, l as updateCampaignOperation, lt as createCampaignOperation, m as refreshDashboardOperation, n as updateOpportunityLineItemOperation, nt as createOpportunityLineItemOperation, o as updateContactOperation, ot as createContactOperation, p as runReportOperation, q as deleteOpportunityOperation, r as updateOpportunityOperation, rt as createOpportunityOperation, s as updateCaseOperation, st as createCaseOperation, t as updateTaskOperation, tt as createTaskOperation, u as updateAccountOperation, ut as createAccountOperation, v as listObjectsOperation, w as listLeadOperation, x as listOpportunityOperation, y as listDashboardsOperation, z as getCaseOperation } from "./update_task.operation-DLJMTduq.mjs";
3
+ import { a as salesforceAttributesSchema, c as salesforceIdSchema, d as salesforceRecordSchema, i as SalesforceRecord, l as salesforceMutationResultSchema, n as SalesforceMutationResult, o as salesforceGenericObjectArraySchema, r as SalesforceQueryResult, s as salesforceGenericObjectSchema, t as SalesforceGenericObject, u as salesforceQueryResultSchema } from "./common-DkQhdp5I.mjs";
4
+ export { SalesforceAppCredentials, SalesforceCredentials, SalesforceGenericObject, SalesforceMutationResult, SalesforceQueryResult, SalesforceRecord, associateContactToAccountOperation, associateContactToAccountOperation as associateContactToAccountTool, createAccountOperation, createAccountOperation as createAccountTool, createCampaignMemberOperation, createCampaignMemberOperation as createCampaignMemberTool, createCampaignOperation, createCampaignOperation as createCampaignTool, createCaseOperation, createCaseOperation as createCaseTool, createContactOperation, createContactOperation as createContactTool, createLeadOperation, createLeadOperation as createLeadTool, createNoteOperation, createNoteOperation as createNoteTool, createOpportunityLineItemOperation, createOpportunityLineItemOperation as createOpportunityLineItemTool, createOpportunityOperation, createOpportunityOperation as createOpportunityTool, createTaskOperation, createTaskOperation as createTaskTool, deleteAccountOperation, deleteAccountOperation as deleteAccountTool, deleteCampaignMemberOperation, deleteCampaignMemberOperation as deleteCampaignMemberTool, deleteCampaignOperation, deleteCampaignOperation as deleteCampaignTool, deleteCaseOperation, deleteCaseOperation as deleteCaseTool, deleteContactOperation, deleteContactOperation as deleteContactTool, deleteLeadOperation, deleteLeadOperation as deleteLeadTool, deleteNoteOperation, deleteNoteOperation as deleteNoteTool, deleteOpportunityLineItemOperation, deleteOpportunityLineItemOperation as deleteOpportunityLineItemTool, deleteOpportunityOperation, deleteOpportunityOperation as deleteOpportunityTool, deleteTaskOperation, deleteTaskOperation as deleteTaskTool, describeObjectOperation, describeObjectOperation as describeObjectTool, dissociateContactFromAccountOperation, dissociateContactFromAccountOperation as dissociateContactFromAccountTool, getAccountOperation, getAccountOperation as getAccountTool, getCampaignMemberOperation, getCampaignMemberOperation as getCampaignMemberTool, getCampaignOperation, getCampaignOperation as getCampaignTool, getCaseOperation, getCaseOperation as getCaseTool, getContactOperation, getContactOperation as getContactTool, getCurrentUserInfoOperation, getCurrentUserInfoOperation as getCurrentUserInfoTool, getDashboardOperation, getDashboardOperation as getDashboardTool, getLeadOperation, getLeadOperation as getLeadTool, getNoteOperation, getNoteOperation as getNoteTool, getOpportunityLineItemOperation, getOpportunityLineItemOperation as getOpportunityLineItemTool, getOpportunityOperation, getOpportunityOperation as getOpportunityTool, getReportMetadataOperation, getReportMetadataOperation as getReportMetadataTool, getTaskOperation, getTaskOperation as getTaskTool, listAccountOperation, listAccountOperation as listAccountTool, listCampaignMemberOperation, listCampaignMemberOperation as listCampaignMemberTool, listCampaignOperation, listCampaignOperation as listCampaignTool, listCaseOperation, listCaseOperation as listCaseTool, listContactOperation, listContactOperation as listContactTool, listDashboardsOperation, listDashboardsOperation as listDashboardsTool, listLeadOperation, listLeadOperation as listLeadTool, listNoteOperation, listNoteOperation as listNoteTool, listObjectsOperation, listObjectsOperation as listObjectsTool, listOpportunityLineItemOperation, listOpportunityLineItemOperation as listOpportunityLineItemTool, listOpportunityOperation, listOpportunityOperation as listOpportunityTool, listReportTypesOperation, listReportTypesOperation as listReportTypesTool, listReportsOperation, listReportsOperation as listReportsTool, listTaskOperation, listTaskOperation as listTaskTool, queryMoreOperation, queryMoreOperation as queryMoreTool, refreshDashboardOperation, refreshDashboardOperation as refreshDashboardTool, runReportOperation, runReportOperation as runReportTool, runSoqlQueryOperation, runSoqlQueryOperation as runSoqlQueryTool, salesforceAppCredentialSet, salesforceAttributesSchema, salesforceCredentialSet, salesforceGenericObjectArraySchema, salesforceGenericObjectSchema, salesforceIdSchema, salesforceMutationResultSchema, salesforceQueryResultSchema, salesforceRecordSchema, transferRecordOwnershipOperation, transferRecordOwnershipOperation as transferRecordOwnershipTool, updateAccountOperation, updateAccountOperation as updateAccountTool, updateCampaignMemberOperation, updateCampaignMemberOperation as updateCampaignMemberTool, updateCampaignOperation, updateCampaignOperation as updateCampaignTool, updateCaseOperation, updateCaseOperation as updateCaseTool, updateContactOperation, updateContactOperation as updateContactTool, updateLeadOperation, updateLeadOperation as updateLeadTool, updateNoteOperation, updateNoteOperation as updateNoteTool, updateOpportunityLineItemOperation, updateOpportunityLineItemOperation as updateOpportunityLineItemTool, updateOpportunityOperation, updateOpportunityOperation as updateOpportunityTool, updateTaskOperation, updateTaskOperation as updateTaskTool };
package/dist/index.mjs CHANGED
@@ -1 +1,6 @@
1
- export { };
1
+ import { t as salesforceCredentialSet } from "./salesforce.credential-set-CiJcvT3l.mjs";
2
+ import { t as salesforceAppCredentialSet } from "./salesforce-app.credential-set-BvN8tzVf.mjs";
3
+ import { a as salesforceMutationResultSchema, i as salesforceIdSchema, n as salesforceGenericObjectArraySchema, o as salesforceQueryResultSchema, r as salesforceGenericObjectSchema, s as salesforceRecordSchema, t as salesforceAttributesSchema } from "./common-wiFkMAq5.mjs";
4
+ import { $ as deleteCampaignOperation, A as getReportMetadataOperation, B as getCampaignMemberOperation, C as listNoteOperation, D as listCampaignOperation, E as listCaseOperation, F as getOpportunityOperation, G as deleteTaskOperation, H as getAccountOperation, I as getNoteOperation, J as deleteNoteOperation, K as deleteOpportunityLineItemOperation, L as getLeadOperation, M as getCurrentUserInfoOperation, N as getTaskOperation, O as listCampaignMemberOperation, P as getOpportunityLineItemOperation, Q as deleteCampaignMemberOperation, R as getContactOperation, S as listOpportunityLineItemOperation, T as listContactOperation, U as dissociateContactFromAccountOperation, V as getCampaignOperation, W as describeObjectOperation, X as deleteContactOperation, Y as deleteLeadOperation, Z as deleteCaseOperation, _ as listReportTypesOperation, a as updateLeadOperation, at as createLeadOperation, b as listTaskOperation, c as updateCampaignMemberOperation, ct as createCampaignMemberOperation, d as transferRecordOwnershipOperation, dt as associateContactToAccountOperation, et as deleteAccountOperation, f as runSoqlQueryOperation, g as listReportsOperation, h as queryMoreOperation, i as updateNoteOperation, it as createNoteOperation, j as getDashboardOperation, k as listAccountOperation, l as updateCampaignOperation, lt as createCampaignOperation, m as refreshDashboardOperation, n as updateOpportunityLineItemOperation, nt as createOpportunityLineItemOperation, o as updateContactOperation, ot as createContactOperation, p as runReportOperation, q as deleteOpportunityOperation, r as updateOpportunityOperation, rt as createOpportunityOperation, s as updateCaseOperation, st as createCaseOperation, t as updateTaskOperation, tt as createTaskOperation, u as updateAccountOperation, ut as createAccountOperation, v as listObjectsOperation, w as listLeadOperation, x as listOpportunityOperation, y as listDashboardsOperation, z as getCaseOperation } from "./update_task.operation-KNAsLHv7.mjs";
5
+
6
+ export { associateContactToAccountOperation, associateContactToAccountOperation as associateContactToAccountTool, createAccountOperation, createAccountOperation as createAccountTool, createCampaignMemberOperation, createCampaignMemberOperation as createCampaignMemberTool, createCampaignOperation, createCampaignOperation as createCampaignTool, createCaseOperation, createCaseOperation as createCaseTool, createContactOperation, createContactOperation as createContactTool, createLeadOperation, createLeadOperation as createLeadTool, createNoteOperation, createNoteOperation as createNoteTool, createOpportunityLineItemOperation, createOpportunityLineItemOperation as createOpportunityLineItemTool, createOpportunityOperation, createOpportunityOperation as createOpportunityTool, createTaskOperation, createTaskOperation as createTaskTool, deleteAccountOperation, deleteAccountOperation as deleteAccountTool, deleteCampaignMemberOperation, deleteCampaignMemberOperation as deleteCampaignMemberTool, deleteCampaignOperation, deleteCampaignOperation as deleteCampaignTool, deleteCaseOperation, deleteCaseOperation as deleteCaseTool, deleteContactOperation, deleteContactOperation as deleteContactTool, deleteLeadOperation, deleteLeadOperation as deleteLeadTool, deleteNoteOperation, deleteNoteOperation as deleteNoteTool, deleteOpportunityLineItemOperation, deleteOpportunityLineItemOperation as deleteOpportunityLineItemTool, deleteOpportunityOperation, deleteOpportunityOperation as deleteOpportunityTool, deleteTaskOperation, deleteTaskOperation as deleteTaskTool, describeObjectOperation, describeObjectOperation as describeObjectTool, dissociateContactFromAccountOperation, dissociateContactFromAccountOperation as dissociateContactFromAccountTool, getAccountOperation, getAccountOperation as getAccountTool, getCampaignMemberOperation, getCampaignMemberOperation as getCampaignMemberTool, getCampaignOperation, getCampaignOperation as getCampaignTool, getCaseOperation, getCaseOperation as getCaseTool, getContactOperation, getContactOperation as getContactTool, getCurrentUserInfoOperation, getCurrentUserInfoOperation as getCurrentUserInfoTool, getDashboardOperation, getDashboardOperation as getDashboardTool, getLeadOperation, getLeadOperation as getLeadTool, getNoteOperation, getNoteOperation as getNoteTool, getOpportunityLineItemOperation, getOpportunityLineItemOperation as getOpportunityLineItemTool, getOpportunityOperation, getOpportunityOperation as getOpportunityTool, getReportMetadataOperation, getReportMetadataOperation as getReportMetadataTool, getTaskOperation, getTaskOperation as getTaskTool, listAccountOperation, listAccountOperation as listAccountTool, listCampaignMemberOperation, listCampaignMemberOperation as listCampaignMemberTool, listCampaignOperation, listCampaignOperation as listCampaignTool, listCaseOperation, listCaseOperation as listCaseTool, listContactOperation, listContactOperation as listContactTool, listDashboardsOperation, listDashboardsOperation as listDashboardsTool, listLeadOperation, listLeadOperation as listLeadTool, listNoteOperation, listNoteOperation as listNoteTool, listObjectsOperation, listObjectsOperation as listObjectsTool, listOpportunityLineItemOperation, listOpportunityLineItemOperation as listOpportunityLineItemTool, listOpportunityOperation, listOpportunityOperation as listOpportunityTool, listReportTypesOperation, listReportTypesOperation as listReportTypesTool, listReportsOperation, listReportsOperation as listReportsTool, listTaskOperation, listTaskOperation as listTaskTool, queryMoreOperation, queryMoreOperation as queryMoreTool, refreshDashboardOperation, refreshDashboardOperation as refreshDashboardTool, runReportOperation, runReportOperation as runReportTool, runSoqlQueryOperation, runSoqlQueryOperation as runSoqlQueryTool, salesforceAppCredentialSet, salesforceAttributesSchema, salesforceCredentialSet, salesforceGenericObjectArraySchema, salesforceGenericObjectSchema, salesforceIdSchema, salesforceMutationResultSchema, salesforceQueryResultSchema, salesforceRecordSchema, transferRecordOwnershipOperation, transferRecordOwnershipOperation as transferRecordOwnershipTool, updateAccountOperation, updateAccountOperation as updateAccountTool, updateCampaignMemberOperation, updateCampaignMemberOperation as updateCampaignMemberTool, updateCampaignOperation, updateCampaignOperation as updateCampaignTool, updateCaseOperation, updateCaseOperation as updateCaseTool, updateContactOperation, updateContactOperation as updateContactTool, updateLeadOperation, updateLeadOperation as updateLeadTool, updateNoteOperation, updateNoteOperation as updateNoteTool, updateOpportunityLineItemOperation, updateOpportunityLineItemOperation as updateOpportunityLineItemTool, updateOpportunityOperation, updateOpportunityOperation as updateOpportunityTool, updateTaskOperation, updateTaskOperation as updateTaskTool };
@@ -0,0 +1,2 @@
1
+ import { $ as deleteCampaignOperation, A as getReportMetadataOperation, B as getCampaignMemberOperation, C as listNoteOperation, D as listCampaignOperation, E as listCaseOperation, F as getOpportunityOperation, G as deleteTaskOperation, H as getAccountOperation, I as getNoteOperation, J as deleteNoteOperation, K as deleteOpportunityLineItemOperation, L as getLeadOperation, M as getCurrentUserInfoOperation, N as getTaskOperation, O as listCampaignMemberOperation, P as getOpportunityLineItemOperation, Q as deleteCampaignMemberOperation, R as getContactOperation, S as listOpportunityLineItemOperation, T as listContactOperation, U as dissociateContactFromAccountOperation, V as getCampaignOperation, W as describeObjectOperation, X as deleteContactOperation, Y as deleteLeadOperation, Z as deleteCaseOperation, _ as listReportTypesOperation, a as updateLeadOperation, at as createLeadOperation, b as listTaskOperation, c as updateCampaignMemberOperation, ct as createCampaignMemberOperation, d as transferRecordOwnershipOperation, dt as associateContactToAccountOperation, et as deleteAccountOperation, f as runSoqlQueryOperation, g as listReportsOperation, h as queryMoreOperation, i as updateNoteOperation, it as createNoteOperation, j as getDashboardOperation, k as listAccountOperation, l as updateCampaignOperation, lt as createCampaignOperation, m as refreshDashboardOperation, n as updateOpportunityLineItemOperation, nt as createOpportunityLineItemOperation, o as updateContactOperation, ot as createContactOperation, p as runReportOperation, q as deleteOpportunityOperation, r as updateOpportunityOperation, rt as createOpportunityOperation, s as updateCaseOperation, st as createCaseOperation, t as updateTaskOperation, tt as createTaskOperation, u as updateAccountOperation, ut as createAccountOperation, v as listObjectsOperation, w as listLeadOperation, x as listOpportunityOperation, y as listDashboardsOperation, z as getCaseOperation } from "../update_task.operation-DLJMTduq.mjs";
2
+ export { associateContactToAccountOperation, associateContactToAccountOperation as associateContactToAccountTool, createAccountOperation, createAccountOperation as createAccountTool, createCampaignMemberOperation, createCampaignMemberOperation as createCampaignMemberTool, createCampaignOperation, createCampaignOperation as createCampaignTool, createCaseOperation, createCaseOperation as createCaseTool, createContactOperation, createContactOperation as createContactTool, createLeadOperation, createLeadOperation as createLeadTool, createNoteOperation, createNoteOperation as createNoteTool, createOpportunityLineItemOperation, createOpportunityLineItemOperation as createOpportunityLineItemTool, createOpportunityOperation, createOpportunityOperation as createOpportunityTool, createTaskOperation, createTaskOperation as createTaskTool, deleteAccountOperation, deleteAccountOperation as deleteAccountTool, deleteCampaignMemberOperation, deleteCampaignMemberOperation as deleteCampaignMemberTool, deleteCampaignOperation, deleteCampaignOperation as deleteCampaignTool, deleteCaseOperation, deleteCaseOperation as deleteCaseTool, deleteContactOperation, deleteContactOperation as deleteContactTool, deleteLeadOperation, deleteLeadOperation as deleteLeadTool, deleteNoteOperation, deleteNoteOperation as deleteNoteTool, deleteOpportunityLineItemOperation, deleteOpportunityLineItemOperation as deleteOpportunityLineItemTool, deleteOpportunityOperation, deleteOpportunityOperation as deleteOpportunityTool, deleteTaskOperation, deleteTaskOperation as deleteTaskTool, describeObjectOperation, describeObjectOperation as describeObjectTool, dissociateContactFromAccountOperation, dissociateContactFromAccountOperation as dissociateContactFromAccountTool, getAccountOperation, getAccountOperation as getAccountTool, getCampaignMemberOperation, getCampaignMemberOperation as getCampaignMemberTool, getCampaignOperation, getCampaignOperation as getCampaignTool, getCaseOperation, getCaseOperation as getCaseTool, getContactOperation, getContactOperation as getContactTool, getCurrentUserInfoOperation, getCurrentUserInfoOperation as getCurrentUserInfoTool, getDashboardOperation, getDashboardOperation as getDashboardTool, getLeadOperation, getLeadOperation as getLeadTool, getNoteOperation, getNoteOperation as getNoteTool, getOpportunityLineItemOperation, getOpportunityLineItemOperation as getOpportunityLineItemTool, getOpportunityOperation, getOpportunityOperation as getOpportunityTool, getReportMetadataOperation, getReportMetadataOperation as getReportMetadataTool, getTaskOperation, getTaskOperation as getTaskTool, listAccountOperation, listAccountOperation as listAccountTool, listCampaignMemberOperation, listCampaignMemberOperation as listCampaignMemberTool, listCampaignOperation, listCampaignOperation as listCampaignTool, listCaseOperation, listCaseOperation as listCaseTool, listContactOperation, listContactOperation as listContactTool, listDashboardsOperation, listDashboardsOperation as listDashboardsTool, listLeadOperation, listLeadOperation as listLeadTool, listNoteOperation, listNoteOperation as listNoteTool, listObjectsOperation, listObjectsOperation as listObjectsTool, listOpportunityLineItemOperation, listOpportunityLineItemOperation as listOpportunityLineItemTool, listOpportunityOperation, listOpportunityOperation as listOpportunityTool, listReportTypesOperation, listReportTypesOperation as listReportTypesTool, listReportsOperation, listReportsOperation as listReportsTool, listTaskOperation, listTaskOperation as listTaskTool, queryMoreOperation, queryMoreOperation as queryMoreTool, refreshDashboardOperation, refreshDashboardOperation as refreshDashboardTool, runReportOperation, runReportOperation as runReportTool, runSoqlQueryOperation, runSoqlQueryOperation as runSoqlQueryTool, transferRecordOwnershipOperation, transferRecordOwnershipOperation as transferRecordOwnershipTool, updateAccountOperation, updateAccountOperation as updateAccountTool, updateCampaignMemberOperation, updateCampaignMemberOperation as updateCampaignMemberTool, updateCampaignOperation, updateCampaignOperation as updateCampaignTool, updateCaseOperation, updateCaseOperation as updateCaseTool, updateContactOperation, updateContactOperation as updateContactTool, updateLeadOperation, updateLeadOperation as updateLeadTool, updateNoteOperation, updateNoteOperation as updateNoteTool, updateOpportunityLineItemOperation, updateOpportunityLineItemOperation as updateOpportunityLineItemTool, updateOpportunityOperation, updateOpportunityOperation as updateOpportunityTool, updateTaskOperation, updateTaskOperation as updateTaskTool };
@@ -0,0 +1,3 @@
1
+ import { $ as deleteCampaignOperation, A as getReportMetadataOperation, B as getCampaignMemberOperation, C as listNoteOperation, D as listCampaignOperation, E as listCaseOperation, F as getOpportunityOperation, G as deleteTaskOperation, H as getAccountOperation, I as getNoteOperation, J as deleteNoteOperation, K as deleteOpportunityLineItemOperation, L as getLeadOperation, M as getCurrentUserInfoOperation, N as getTaskOperation, O as listCampaignMemberOperation, P as getOpportunityLineItemOperation, Q as deleteCampaignMemberOperation, R as getContactOperation, S as listOpportunityLineItemOperation, T as listContactOperation, U as dissociateContactFromAccountOperation, V as getCampaignOperation, W as describeObjectOperation, X as deleteContactOperation, Y as deleteLeadOperation, Z as deleteCaseOperation, _ as listReportTypesOperation, a as updateLeadOperation, at as createLeadOperation, b as listTaskOperation, c as updateCampaignMemberOperation, ct as createCampaignMemberOperation, d as transferRecordOwnershipOperation, dt as associateContactToAccountOperation, et as deleteAccountOperation, f as runSoqlQueryOperation, g as listReportsOperation, h as queryMoreOperation, i as updateNoteOperation, it as createNoteOperation, j as getDashboardOperation, k as listAccountOperation, l as updateCampaignOperation, lt as createCampaignOperation, m as refreshDashboardOperation, n as updateOpportunityLineItemOperation, nt as createOpportunityLineItemOperation, o as updateContactOperation, ot as createContactOperation, p as runReportOperation, q as deleteOpportunityOperation, r as updateOpportunityOperation, rt as createOpportunityOperation, s as updateCaseOperation, st as createCaseOperation, t as updateTaskOperation, tt as createTaskOperation, u as updateAccountOperation, ut as createAccountOperation, v as listObjectsOperation, w as listLeadOperation, x as listOpportunityOperation, y as listDashboardsOperation, z as getCaseOperation } from "../update_task.operation-KNAsLHv7.mjs";
2
+
3
+ export { associateContactToAccountOperation, associateContactToAccountOperation as associateContactToAccountTool, createAccountOperation, createAccountOperation as createAccountTool, createCampaignMemberOperation, createCampaignMemberOperation as createCampaignMemberTool, createCampaignOperation, createCampaignOperation as createCampaignTool, createCaseOperation, createCaseOperation as createCaseTool, createContactOperation, createContactOperation as createContactTool, createLeadOperation, createLeadOperation as createLeadTool, createNoteOperation, createNoteOperation as createNoteTool, createOpportunityLineItemOperation, createOpportunityLineItemOperation as createOpportunityLineItemTool, createOpportunityOperation, createOpportunityOperation as createOpportunityTool, createTaskOperation, createTaskOperation as createTaskTool, deleteAccountOperation, deleteAccountOperation as deleteAccountTool, deleteCampaignMemberOperation, deleteCampaignMemberOperation as deleteCampaignMemberTool, deleteCampaignOperation, deleteCampaignOperation as deleteCampaignTool, deleteCaseOperation, deleteCaseOperation as deleteCaseTool, deleteContactOperation, deleteContactOperation as deleteContactTool, deleteLeadOperation, deleteLeadOperation as deleteLeadTool, deleteNoteOperation, deleteNoteOperation as deleteNoteTool, deleteOpportunityLineItemOperation, deleteOpportunityLineItemOperation as deleteOpportunityLineItemTool, deleteOpportunityOperation, deleteOpportunityOperation as deleteOpportunityTool, deleteTaskOperation, deleteTaskOperation as deleteTaskTool, describeObjectOperation, describeObjectOperation as describeObjectTool, dissociateContactFromAccountOperation, dissociateContactFromAccountOperation as dissociateContactFromAccountTool, getAccountOperation, getAccountOperation as getAccountTool, getCampaignMemberOperation, getCampaignMemberOperation as getCampaignMemberTool, getCampaignOperation, getCampaignOperation as getCampaignTool, getCaseOperation, getCaseOperation as getCaseTool, getContactOperation, getContactOperation as getContactTool, getCurrentUserInfoOperation, getCurrentUserInfoOperation as getCurrentUserInfoTool, getDashboardOperation, getDashboardOperation as getDashboardTool, getLeadOperation, getLeadOperation as getLeadTool, getNoteOperation, getNoteOperation as getNoteTool, getOpportunityLineItemOperation, getOpportunityLineItemOperation as getOpportunityLineItemTool, getOpportunityOperation, getOpportunityOperation as getOpportunityTool, getReportMetadataOperation, getReportMetadataOperation as getReportMetadataTool, getTaskOperation, getTaskOperation as getTaskTool, listAccountOperation, listAccountOperation as listAccountTool, listCampaignMemberOperation, listCampaignMemberOperation as listCampaignMemberTool, listCampaignOperation, listCampaignOperation as listCampaignTool, listCaseOperation, listCaseOperation as listCaseTool, listContactOperation, listContactOperation as listContactTool, listDashboardsOperation, listDashboardsOperation as listDashboardsTool, listLeadOperation, listLeadOperation as listLeadTool, listNoteOperation, listNoteOperation as listNoteTool, listObjectsOperation, listObjectsOperation as listObjectsTool, listOpportunityLineItemOperation, listOpportunityLineItemOperation as listOpportunityLineItemTool, listOpportunityOperation, listOpportunityOperation as listOpportunityTool, listReportTypesOperation, listReportTypesOperation as listReportTypesTool, listReportsOperation, listReportsOperation as listReportsTool, listTaskOperation, listTaskOperation as listTaskTool, queryMoreOperation, queryMoreOperation as queryMoreTool, refreshDashboardOperation, refreshDashboardOperation as refreshDashboardTool, runReportOperation, runReportOperation as runReportTool, runSoqlQueryOperation, runSoqlQueryOperation as runSoqlQueryTool, transferRecordOwnershipOperation, transferRecordOwnershipOperation as transferRecordOwnershipTool, updateAccountOperation, updateAccountOperation as updateAccountTool, updateCampaignMemberOperation, updateCampaignMemberOperation as updateCampaignMemberTool, updateCampaignOperation, updateCampaignOperation as updateCampaignTool, updateCaseOperation, updateCaseOperation as updateCaseTool, updateContactOperation, updateContactOperation as updateContactTool, updateLeadOperation, updateLeadOperation as updateLeadTool, updateNoteOperation, updateNoteOperation as updateNoteTool, updateOpportunityLineItemOperation, updateOpportunityLineItemOperation as updateOpportunityLineItemTool, updateOpportunityOperation, updateOpportunityOperation as updateOpportunityTool, updateTaskOperation, updateTaskOperation as updateTaskTool };
@@ -0,0 +1,16 @@
1
+ import { CredentialSet } from "@keystrokehq/core";
2
+ import { z } from "zod";
3
+
4
+ //#region src/credential-sets/salesforce-app.credential-set.ts
5
+ const salesforceAppCredentialSet = new CredentialSet({
6
+ id: "salesforce-app",
7
+ exposure: "platform-only",
8
+ name: "Salesforce Connected App",
9
+ auth: z.object({
10
+ clientId: z.string().min(1),
11
+ clientSecret: z.string().min(1)
12
+ })
13
+ });
14
+
15
+ //#endregion
16
+ export { salesforceAppCredentialSet as t };
@@ -0,0 +1,51 @@
1
+ import { CredentialSet } from "@keystrokehq/core";
2
+ import { z } from "zod";
3
+ import * as _keystrokehq_core_credential_set0 from "@keystrokehq/core/credential-set";
4
+ import { InferCredentialSetAuth } from "@keystrokehq/core/credential-set";
5
+
6
+ //#region src/credential-sets/salesforce.credential-set.d.ts
7
+ declare const salesforceCredentialSet: CredentialSet<"salesforce", z.ZodObject<{
8
+ SALESFORCE_ACCESS_TOKEN: z.ZodString;
9
+ SALESFORCE_INSTANCE_URL: z.ZodURL;
10
+ }, z.core.$strip>, {
11
+ kind: "oauth";
12
+ tokenType: "refreshable";
13
+ authUrl: "https://login.salesforce.com/services/oauth2/authorize";
14
+ tokenUrl: "https://login.salesforce.com/services/oauth2/token";
15
+ revokeUrl: null;
16
+ scopes: readonly ["api", "refresh_token", "offline_access"];
17
+ vault: {
18
+ readonly accessToken: "SALESFORCE_ACCESS_TOKEN";
19
+ readonly instanceUrl: "SALESFORCE_INSTANCE_URL";
20
+ };
21
+ buildAuthUrl: ({
22
+ oauthClient,
23
+ redirectUri,
24
+ state,
25
+ connection,
26
+ requestedScopes
27
+ }: _keystrokehq_core_credential_set0.BuildAuthUrlContext) => string;
28
+ exchangeCode: ({
29
+ oauthClient,
30
+ code,
31
+ redirectUri
32
+ }: _keystrokehq_core_credential_set0.ExchangeCodeContext) => Promise<_keystrokehq_core_credential_set0.TokenResult>;
33
+ refreshToken: ({
34
+ oauthClient,
35
+ refreshToken
36
+ }: _keystrokehq_core_credential_set0.RefreshTokenContext) => Promise<_keystrokehq_core_credential_set0.TokenResult>;
37
+ id: string;
38
+ }[]>;
39
+ type SalesforceCredentials = InferCredentialSetAuth<typeof salesforceCredentialSet>;
40
+ //#endregion
41
+ //#region src/credential-sets/salesforce-app.credential-set.d.ts
42
+ declare const salesforceAppCredentialSet: CredentialSet<"salesforce-app", z.ZodObject<{
43
+ clientId: z.ZodString;
44
+ clientSecret: z.ZodString;
45
+ }, z.core.$strip>, readonly _keystrokehq_core_credential_set0.CredentialConnection<z.ZodObject<{
46
+ clientId: z.ZodString;
47
+ clientSecret: z.ZodString;
48
+ }, z.core.$strip>>[] | undefined>;
49
+ type SalesforceAppCredentials = InferCredentialSetAuth<typeof salesforceAppCredentialSet>;
50
+ //#endregion
51
+ export { salesforceCredentialSet as i, salesforceAppCredentialSet as n, SalesforceCredentials as r, SalesforceAppCredentials as t };
@@ -0,0 +1,199 @@
1
+ import { CredentialSet } from "@keystrokehq/core";
2
+ import { z } from "zod";
3
+
4
+ //#region ../../packages/credential-connection/dist/defaults-YE9AvLIc.mjs
5
+ /**
6
+ * Shared OAuth 2.0 token-response plumbing.
7
+ *
8
+ * `parseOAuthTokenResponse` handles the two common wire formats (JSON and
9
+ * form-urlencoded, the latter used by GitHub unless you explicitly ask for
10
+ * JSON). `normalizeOAuthTokens` pulls the standard fields out of the parsed
11
+ * body in both the flat form and Slack's nested `authed_user.access_token`
12
+ * form. These helpers are exposed so integration authors overriding
13
+ * `exchangeCode` / `refreshToken` do not have to re-implement them.
14
+ */
15
+ var TokenExchangeError = class extends Error {
16
+ httpStatus;
17
+ constructor(httpStatus) {
18
+ super(`Token exchange failed: HTTP ${httpStatus}`);
19
+ this.name = "TokenExchangeError";
20
+ this.httpStatus = httpStatus;
21
+ }
22
+ };
23
+ async function parseOAuthTokenResponse(response) {
24
+ const contentType = response.headers.get("content-type")?.toLowerCase() ?? "";
25
+ if (contentType.includes("application/json")) return await response.json();
26
+ const text = await response.text();
27
+ if (!text.trim()) return {};
28
+ if (contentType.includes("application/x-www-form-urlencoded") || text.includes("=")) {
29
+ const params = new URLSearchParams(text);
30
+ return Object.fromEntries(params.entries());
31
+ }
32
+ throw new Error(`Unsupported OAuth token response content type: ${contentType || "unknown"}`);
33
+ }
34
+ function normalizeOAuthTokens(tokenData) {
35
+ const authedUser = tokenData.authed_user;
36
+ const rawAccessToken = tokenData.access_token ?? authedUser?.access_token;
37
+ const rawRefreshToken = tokenData.refresh_token;
38
+ const rawExpiresIn = tokenData.expires_in;
39
+ const rawInstanceUrl = tokenData.instance_url;
40
+ return {
41
+ accessToken: typeof rawAccessToken === "string" ? rawAccessToken : void 0,
42
+ refreshToken: typeof rawRefreshToken === "string" ? rawRefreshToken : void 0,
43
+ expiresIn: typeof rawExpiresIn === "number" ? rawExpiresIn : typeof rawExpiresIn === "string" ? Number(rawExpiresIn) || void 0 : void 0,
44
+ instanceUrl: typeof rawInstanceUrl === "string" ? rawInstanceUrl : void 0
45
+ };
46
+ }
47
+ function buildAuthUrl(ctx) {
48
+ const { oauthClient, redirectUri, state, connection } = ctx;
49
+ const scopes = ctx.requestedScopes ?? connection.scopes;
50
+ const url = new URL(connection.authUrl);
51
+ url.searchParams.set("client_id", oauthClient.clientId);
52
+ url.searchParams.set("scope", scopes.join(" "));
53
+ url.searchParams.set("redirect_uri", redirectUri);
54
+ url.searchParams.set("state", state);
55
+ url.searchParams.set("response_type", "code");
56
+ return url.toString();
57
+ }
58
+ async function exchangeToken(params) {
59
+ const response = await fetch(params.tokenUrl, {
60
+ method: "POST",
61
+ headers: {
62
+ Accept: "application/json",
63
+ "Content-Type": "application/x-www-form-urlencoded"
64
+ },
65
+ body: params.body
66
+ });
67
+ if (!response.ok) throw new TokenExchangeError(response.status);
68
+ const raw = await parseOAuthTokenResponse(response);
69
+ const { accessToken, refreshToken, expiresIn, instanceUrl } = normalizeOAuthTokens(raw);
70
+ if (!accessToken) throw new Error("No access token in response");
71
+ return {
72
+ accessToken,
73
+ refreshToken,
74
+ expiresIn,
75
+ instanceUrl,
76
+ raw
77
+ };
78
+ }
79
+ async function exchangeCode(ctx) {
80
+ const { oauthClient, code, redirectUri, connection } = ctx;
81
+ if (!code) throw new Error("Missing authorization code");
82
+ return exchangeToken({
83
+ tokenUrl: connection.tokenUrl,
84
+ body: new URLSearchParams({
85
+ code,
86
+ client_id: oauthClient.clientId,
87
+ client_secret: oauthClient.clientSecret,
88
+ redirect_uri: redirectUri,
89
+ grant_type: "authorization_code"
90
+ })
91
+ });
92
+ }
93
+ async function refreshToken(ctx) {
94
+ const { oauthClient, refreshToken, connection } = ctx;
95
+ return exchangeToken({
96
+ tokenUrl: connection.tokenUrl,
97
+ body: new URLSearchParams({
98
+ grant_type: "refresh_token",
99
+ refresh_token: refreshToken,
100
+ client_id: oauthClient.clientId,
101
+ client_secret: oauthClient.clientSecret
102
+ })
103
+ });
104
+ }
105
+ const oauthDefaults = {
106
+ buildAuthUrl,
107
+ exchangeCode,
108
+ exchangeToken,
109
+ refreshToken
110
+ };
111
+
112
+ //#endregion
113
+ //#region src/utils/oauth-connection.ts
114
+ function getMetadataValue(metadata, key) {
115
+ if (!metadata || typeof metadata !== "object" || !(key in metadata)) return;
116
+ const value = metadata[key];
117
+ if (typeof value === "string" || typeof value === "boolean") return value;
118
+ }
119
+ function resolveSalesforceLoginBaseUrl(metadata) {
120
+ const explicitBaseUrl = getMetadataValue(metadata, "loginBaseUrl");
121
+ if (typeof explicitBaseUrl === "string" && explicitBaseUrl.length > 0) return explicitBaseUrl;
122
+ if (getMetadataValue(metadata, "environment") === "sandbox") return "https://test.salesforce.com";
123
+ if (getMetadataValue(metadata, "sandbox") === true) return "https://test.salesforce.com";
124
+ return "https://login.salesforce.com";
125
+ }
126
+ function buildSalesforceUrl(metadata, path) {
127
+ return new URL(path, resolveSalesforceLoginBaseUrl(metadata)).toString();
128
+ }
129
+ const salesforceOAuthConnection = {
130
+ kind: "oauth",
131
+ tokenType: "refreshable",
132
+ authUrl: "https://login.salesforce.com/services/oauth2/authorize",
133
+ tokenUrl: "https://login.salesforce.com/services/oauth2/token",
134
+ revokeUrl: null,
135
+ scopes: [
136
+ "api",
137
+ "refresh_token",
138
+ "offline_access"
139
+ ],
140
+ vault: {
141
+ accessToken: "SALESFORCE_ACCESS_TOKEN",
142
+ instanceUrl: "SALESFORCE_INSTANCE_URL"
143
+ },
144
+ buildAuthUrl({ oauthClient, redirectUri, state, connection, requestedScopes }) {
145
+ const scopes = requestedScopes ?? connection.scopes;
146
+ const url = new URL(buildSalesforceUrl(oauthClient.metadata, "/services/oauth2/authorize"));
147
+ url.searchParams.set("client_id", oauthClient.clientId);
148
+ url.searchParams.set("scope", scopes.join(" "));
149
+ url.searchParams.set("redirect_uri", redirectUri);
150
+ url.searchParams.set("state", state);
151
+ url.searchParams.set("response_type", "code");
152
+ return url.toString();
153
+ },
154
+ async exchangeCode({ oauthClient, code, redirectUri }) {
155
+ if (!code) throw new Error("Missing authorization code");
156
+ return oauthDefaults.exchangeToken({
157
+ tokenUrl: buildSalesforceUrl(oauthClient.metadata, "/services/oauth2/token"),
158
+ body: new URLSearchParams({
159
+ code,
160
+ client_id: oauthClient.clientId,
161
+ client_secret: oauthClient.clientSecret,
162
+ redirect_uri: redirectUri,
163
+ grant_type: "authorization_code"
164
+ })
165
+ });
166
+ },
167
+ async refreshToken({ oauthClient, refreshToken }) {
168
+ return oauthDefaults.exchangeToken({
169
+ tokenUrl: buildSalesforceUrl(oauthClient.metadata, "/services/oauth2/token"),
170
+ body: new URLSearchParams({
171
+ grant_type: "refresh_token",
172
+ refresh_token: refreshToken,
173
+ client_id: oauthClient.clientId,
174
+ client_secret: oauthClient.clientSecret
175
+ })
176
+ });
177
+ }
178
+ };
179
+
180
+ //#endregion
181
+ //#region src/credential-sets/salesforce.credential-set.ts
182
+ const salesforceAuthSchema = z.object({
183
+ SALESFORCE_ACCESS_TOKEN: z.string().min(1),
184
+ SALESFORCE_INSTANCE_URL: z.url()
185
+ });
186
+ const salesforceCredentialSet = new CredentialSet({
187
+ id: "salesforce",
188
+ name: "Salesforce",
189
+ description: "Salesforce CRM and platform automation",
190
+ auth: salesforceAuthSchema,
191
+ proxy: { hosts: ["*.salesforce.com", "*.force.com"] },
192
+ connections: [{
193
+ id: "oauth",
194
+ ...salesforceOAuthConnection
195
+ }]
196
+ });
197
+
198
+ //#endregion
199
+ export { salesforceCredentialSet as t };