@acquis-consulting/asm 1.0.7 → 1.0.9
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.
- package/dist/index.js +20 -7
- package/dist/index.js.map +1 -1
- package/dist/tools/salesforceLogin.d.ts +1 -1
- package/dist/tools/salesforceLogin.js +5 -4
- package/dist/tools/salesforceLogin.js.map +1 -1
- package/dist/utils/connection.d.ts +1 -1
- package/dist/utils/connection.js +8 -6
- package/dist/utils/connection.js.map +1 -1
- package/dist/utils/oauthWebFlow.d.ts +3 -3
- package/dist/utils/oauthWebFlow.js +10 -8
- package/dist/utils/oauthWebFlow.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3,6 +3,8 @@ import 'dotenv/config';
|
|
|
3
3
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
4
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
5
5
|
import path from 'node:path';
|
|
6
|
+
import crypto from 'node:crypto';
|
|
7
|
+
import { z } from 'zod/v4';
|
|
6
8
|
import { createConnection, toolResponse } from './utils/index.js';
|
|
7
9
|
import { objectSearchDescriptor } from './tools/objectSearch.js';
|
|
8
10
|
import { objectSchemaDescriptor } from './tools/objectSchema.js';
|
|
@@ -90,29 +92,40 @@ const standaloneTools = [
|
|
|
90
92
|
selectOrgDescriptor,
|
|
91
93
|
salesforceLoginDescriptor,
|
|
92
94
|
];
|
|
95
|
+
const SESSION_ID_SCHEMA = z
|
|
96
|
+
.string()
|
|
97
|
+
.optional()
|
|
98
|
+
.describe('Session ID returned by salesforce_login. Pass this to every Salesforce tool call to authenticate your session.');
|
|
93
99
|
// Register connected tools (auto-creates connection per call)
|
|
94
100
|
for (const tool of connectedTools) {
|
|
95
101
|
server.registerTool(tool.name, {
|
|
96
102
|
description: tool.description,
|
|
97
|
-
inputSchema: tool.schema,
|
|
98
|
-
}, async (args) => {
|
|
103
|
+
inputSchema: { ...tool.schema, session_id: SESSION_ID_SCHEMA },
|
|
104
|
+
}, async (args, extra) => {
|
|
105
|
+
const { session_id, ...toolArgs } = args;
|
|
106
|
+
const sessionId = session_id ?? extra?.sessionId;
|
|
107
|
+
console.error(`[session] tool=${tool.name} sessionId=${sessionId ?? '(none)'}`);
|
|
99
108
|
try {
|
|
100
|
-
const conn = await createConnection();
|
|
101
|
-
return tool.handler(conn,
|
|
109
|
+
const conn = await createConnection(undefined, sessionId);
|
|
110
|
+
return tool.handler(conn, toolArgs);
|
|
102
111
|
}
|
|
103
112
|
catch (error) {
|
|
104
113
|
return toolResponse(`Tool execution failed: ${error.message}`, true);
|
|
105
114
|
}
|
|
106
115
|
});
|
|
107
116
|
}
|
|
108
|
-
// Register standalone tools (no connection)
|
|
117
|
+
// Register standalone tools (no connection needed — salesforce_login generates a session ID)
|
|
109
118
|
for (const tool of standaloneTools) {
|
|
110
119
|
server.registerTool(tool.name, {
|
|
111
120
|
description: tool.description,
|
|
112
121
|
inputSchema: tool.schema,
|
|
113
|
-
}, async (args) => {
|
|
122
|
+
}, async (args, extra) => {
|
|
123
|
+
// For stdio transport extra.sessionId is undefined; generate a UUID so each login
|
|
124
|
+
// produces an isolated session that the caller must carry and pass as session_id.
|
|
125
|
+
const sessionId = extra?.sessionId ?? crypto.randomUUID();
|
|
126
|
+
console.error(`[session] tool=${tool.name} sessionId=${sessionId}`);
|
|
114
127
|
try {
|
|
115
|
-
return tool.handler(args);
|
|
128
|
+
return tool.handler(args, sessionId);
|
|
116
129
|
}
|
|
117
130
|
catch (error) {
|
|
118
131
|
return toolResponse(`Tool execution failed: ${error.message}`, true);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,6DAA6D;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,uEAAuE;AACvE,2EAA2E;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,oEAAoE;AACpE,kGAAkG;AAClG,wFAAwF;AACxF,8EAA8E;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAE/E,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;IACpD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC;IAC9C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAExB,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO,EAAE,CACpD,CAAC;AAEF,6CAA6C;AAC7C,MAAM,cAAc,GAAG;IACrB,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;IACrB,wBAAwB;IACxB,aAAa;IACb,0BAA0B;IAC1B,yBAAyB;IACzB,0BAA0B;IAC1B,2BAA2B;IAC3B,yBAAyB;IACzB,0BAA0B;IAC1B,0BAA0B;IAC1B,2BAA2B;IAC3B,0BAA0B;IAC1B,mBAAmB;IACnB,sBAAsB;IACtB,yBAAyB;IACzB,0BAA0B;IAC1B,2BAA2B;IAC3B,yBAAyB;IACzB,0BAA0B;IAC1B,sBAAsB;IACtB,sBAAsB;IACtB,4BAA4B;IAC5B,wBAAwB;IACxB,yBAAyB;IACzB,sBAAsB;IACtB,0BAA0B;IAC1B,2BAA2B;IAC3B,4BAA4B;IAC5B,2BAA2B;IAC3B,2BAA2B;IAC3B,yBAAyB;IACzB,6BAA6B;CAC9B,CAAC;AAEF,gDAAgD;AAChD,MAAM,eAAe,GAAG;IACtB,mBAAmB;IACnB,yBAAyB;CAC1B,CAAC;AAEF,8DAA8D;AAC9D,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;IAClC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export interface SalesforceLoginArgs {
|
|
|
5
5
|
environment: 'production' | 'sandbox' | 'custom';
|
|
6
6
|
custom_domain?: string;
|
|
7
7
|
}
|
|
8
|
-
export declare function handleSalesforceLogin(args: SalesforceLoginArgs): Promise<{
|
|
8
|
+
export declare function handleSalesforceLogin(args: SalesforceLoginArgs, sessionId: string): Promise<{
|
|
9
9
|
content: {
|
|
10
10
|
type: "text";
|
|
11
11
|
text: string;
|
|
@@ -24,7 +24,7 @@ export const salesforceLoginTool = {
|
|
|
24
24
|
required: ['environment'],
|
|
25
25
|
},
|
|
26
26
|
};
|
|
27
|
-
export async function handleSalesforceLogin(args) {
|
|
27
|
+
export async function handleSalesforceLogin(args, sessionId) {
|
|
28
28
|
try {
|
|
29
29
|
let loginUrl;
|
|
30
30
|
let environmentDomain;
|
|
@@ -47,10 +47,11 @@ export async function handleSalesforceLogin(args) {
|
|
|
47
47
|
}
|
|
48
48
|
const clientId = process.env.SALESFORCE_CLIENT_ID ?? ACQUIS_CONNECTED_APP_CLIENT_ID;
|
|
49
49
|
const callbackPort = parseInt(process.env.SALESFORCE_OAUTH_CALLBACK_PORT ?? '7654', 10);
|
|
50
|
-
const { instanceUrl } = await startOAuthWebFlow(loginUrl, clientId, callbackPort);
|
|
50
|
+
const { instanceUrl } = await startOAuthWebFlow(loginUrl, clientId, callbackPort, sessionId);
|
|
51
51
|
return toolResponse(`Successfully authenticated to Salesforce.\n` +
|
|
52
|
-
` Instance URL: ${instanceUrl}\n
|
|
53
|
-
`
|
|
52
|
+
` Instance URL: ${instanceUrl}\n` +
|
|
53
|
+
` Session ID: ${sessionId}\n\n` +
|
|
54
|
+
`IMPORTANT: Pass session_id="${sessionId}" to every Salesforce tool call in this conversation.`);
|
|
54
55
|
}
|
|
55
56
|
catch (err) {
|
|
56
57
|
return toolResponse(`salesforce_login failed: ${err.message}`, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salesforceLogin.js","sourceRoot":"","sources":["../../src/tools/salesforceLogin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,8BAA8B,GAAG,uFAAuF,CAAC;AAC/H,MAAM,CAAC,MAAM,mBAAmB,GAAS;IACvC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,gGAAgG;QAChG,2DAA2D;QAC3D,0FAA0F;QAC1F,8GAA8G;IAChH,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC;gBACzC,WAAW,EAAE,0CAA0C;aACxD;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gGAAgG;aAC9G;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;CACF,CAAC;AAOF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAyB;
|
|
1
|
+
{"version":3,"file":"salesforceLogin.js","sourceRoot":"","sources":["../../src/tools/salesforceLogin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Connection } from 'jsforce';
|
|
2
2
|
import { type ConnectionConfig } from '../types/index.js';
|
|
3
|
-
export declare function createConnection(config?: ConnectionConfig): Promise<Connection>;
|
|
3
|
+
export declare function createConnection(config?: ConnectionConfig, sessionId?: string): Promise<Connection>;
|
package/dist/utils/connection.js
CHANGED
|
@@ -91,11 +91,13 @@ async function loginWithSalesforceCli() {
|
|
|
91
91
|
function isTemplatePlaceholder(value) {
|
|
92
92
|
return /^\$\{[^}]+\}$/.test(value.trim());
|
|
93
93
|
}
|
|
94
|
-
async function loginWithOAuth2WebFlow() {
|
|
95
|
-
|
|
94
|
+
async function loginWithOAuth2WebFlow(sessionId) {
|
|
95
|
+
if (!sessionId) {
|
|
96
|
+
throw new Error('No session_id provided. You MUST call salesforce_login first, then pass the returned session_id to every Salesforce tool.');
|
|
97
|
+
}
|
|
98
|
+
const token = getOAuthWebFlowToken(sessionId);
|
|
96
99
|
if (!token) {
|
|
97
|
-
throw new Error('
|
|
98
|
-
'Choose environment: production, sandbox, or custom.');
|
|
100
|
+
throw new Error('Session not authenticated. Call salesforce_login to get a session_id for this conversation.');
|
|
99
101
|
}
|
|
100
102
|
return new Connection({ instanceUrl: token.instanceUrl, accessToken: token.accessToken });
|
|
101
103
|
}
|
|
@@ -115,7 +117,7 @@ async function loginWithAccessToken() {
|
|
|
115
117
|
const { accessToken, instanceUrl } = await getAccessToken(orgId);
|
|
116
118
|
return new Connection({ instanceUrl, accessToken });
|
|
117
119
|
}
|
|
118
|
-
export async function createConnection(config) {
|
|
120
|
+
export async function createConnection(config, sessionId) {
|
|
119
121
|
const type = config?.type || resolveConnectionType();
|
|
120
122
|
switch (type) {
|
|
121
123
|
case ConnectionType.UsernamePassword:
|
|
@@ -127,7 +129,7 @@ export async function createConnection(config) {
|
|
|
127
129
|
case ConnectionType.AccessToken:
|
|
128
130
|
return loginWithAccessToken();
|
|
129
131
|
case ConnectionType.OAuth2WebFlow:
|
|
130
|
-
return loginWithOAuth2WebFlow();
|
|
132
|
+
return loginWithOAuth2WebFlow(sessionId);
|
|
131
133
|
default:
|
|
132
134
|
throw new Error(`Unknown connection type: ${type}`);
|
|
133
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,cAAc,EAAqD,MAAM,mBAAmB,CAAC;AACtG,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,SAAS,eAAe,CAAC,MAAyB;IAChD,IAAI,MAAM,EAAE,QAAQ;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;IAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACpF,OAAO,8BAA8B,CAAC;AACxC,CAAC;AAED,SAAS,qBAAqB;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IACvD,IAAI,OAAO,KAAK,2BAA2B;QAAE,OAAO,cAAc,CAAC,uBAAuB,CAAC;IAC3F,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,cAAc,CAAC,aAAa,CAAC;IAChE,IAAI,OAAO,KAAK,cAAc;QAAE,OAAO,cAAc,CAAC,WAAW,CAAC;IAClE,IAAI,OAAO,KAAK,mBAAmB;QAAE,OAAO,cAAc,CAAC,gBAAgB,CAAC;IAC5E,OAAO,cAAc,CAAC,aAAa,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,MAAyB;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;IAEjD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,qHAAqH,CAAC,CAAC;IACzI,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAyB;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAExD,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,uIAAuI,CAAC,CAAC;IAC3J,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,WAAW,wBAAwB,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,UAAU,EAAE,oBAAoB;QAChC,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,YAAY;KAC5B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;QACrC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;QAChE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAoD,CAAC;IAE1F,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC;QAC1B,WAAW,EAAE,SAAS,CAAC,YAAY;QACnC,WAAW,EAAE,SAAS,CAAC,YAAY;KACpC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC5D,MAAM,MAAM,GAA0B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEzD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,IAAI,UAAU,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,4GAA4G,CAAC,CAAC;QAChI,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,sBAAsB;
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export declare function getOAuthWebFlowToken(): {
|
|
1
|
+
export declare function getOAuthWebFlowToken(sessionId: string): {
|
|
2
2
|
accessToken: string;
|
|
3
3
|
instanceUrl: string;
|
|
4
4
|
} | null;
|
|
5
|
-
export declare function setOAuthWebFlowToken(accessToken: string, instanceUrl: string): void;
|
|
6
|
-
export declare function startOAuthWebFlow(loginUrl: string, clientId: string, callbackPort: number): Promise<{
|
|
5
|
+
export declare function setOAuthWebFlowToken(accessToken: string, instanceUrl: string, sessionId: string): void;
|
|
6
|
+
export declare function startOAuthWebFlow(loginUrl: string, clientId: string, callbackPort: number, sessionId: string): Promise<{
|
|
7
7
|
instanceUrl: string;
|
|
8
8
|
}>;
|
|
@@ -7,13 +7,15 @@ import { exec } from 'child_process';
|
|
|
7
7
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
8
8
|
const LOGO_B64 = fs.readFileSync(path.resolve(__dirname, '../../claude_desktop/acquis_symbol_transparent.png')).toString('base64');
|
|
9
9
|
const LOGO_SRC = `data:image/png;base64,${LOGO_B64}`;
|
|
10
|
-
// In-memory token store (cleared on process restart)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
// In-memory token store keyed by sessionId (cleared on process restart).
|
|
11
|
+
// Each conversation must call salesforce_login to obtain its own sessionId.
|
|
12
|
+
// Without a sessionId, no token is returned, enforcing per-conversation isolation.
|
|
13
|
+
const tokenMap = new Map();
|
|
14
|
+
export function getOAuthWebFlowToken(sessionId) {
|
|
15
|
+
return tokenMap.get(sessionId) ?? null;
|
|
14
16
|
}
|
|
15
|
-
export function setOAuthWebFlowToken(accessToken, instanceUrl) {
|
|
16
|
-
|
|
17
|
+
export function setOAuthWebFlowToken(accessToken, instanceUrl, sessionId) {
|
|
18
|
+
tokenMap.set(sessionId, { accessToken, instanceUrl });
|
|
17
19
|
}
|
|
18
20
|
function generateCodeVerifier() {
|
|
19
21
|
return crypto.randomBytes(32).toString('base64url');
|
|
@@ -155,7 +157,7 @@ async function exchangeCodeForToken(loginUrl, clientId, redirectUri, code, codeV
|
|
|
155
157
|
const data = await response.json();
|
|
156
158
|
return { accessToken: data.access_token, instanceUrl: data.instance_url };
|
|
157
159
|
}
|
|
158
|
-
export async function startOAuthWebFlow(loginUrl, clientId, callbackPort) {
|
|
160
|
+
export async function startOAuthWebFlow(loginUrl, clientId, callbackPort, sessionId) {
|
|
159
161
|
const codeVerifier = generateCodeVerifier();
|
|
160
162
|
const codeChallenge = generateCodeChallenge(codeVerifier);
|
|
161
163
|
const state = generateState();
|
|
@@ -172,7 +174,7 @@ export async function startOAuthWebFlow(loginUrl, clientId, callbackPort) {
|
|
|
172
174
|
openBrowser(authUrl.toString());
|
|
173
175
|
const { code } = await waitForCallback(callbackPort, state);
|
|
174
176
|
const { accessToken, instanceUrl } = await exchangeCodeForToken(loginUrl, clientId, redirectUri, code, codeVerifier);
|
|
175
|
-
setOAuthWebFlowToken(accessToken, instanceUrl);
|
|
177
|
+
setOAuthWebFlowToken(accessToken, instanceUrl, sessionId);
|
|
176
178
|
return { instanceUrl };
|
|
177
179
|
}
|
|
178
180
|
//# sourceMappingURL=oauthWebFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthWebFlow.js","sourceRoot":"","sources":["../../src/utils/oauthWebFlow.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAC9B,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oDAAoD,CAAC,CAC9E,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrB,MAAM,QAAQ,GAAG,yBAAyB,QAAQ,EAAE,CAAC;AAErD,
|
|
1
|
+
{"version":3,"file":"oauthWebFlow.js","sourceRoot":"","sources":["../../src/utils/oauthWebFlow.ts"],"names":[],"mappings":"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"}
|