@app-connect/core 1.7.25 → 1.7.26
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/.env.test +5 -5
- package/README.md +441 -441
- package/connector/developerPortal.js +31 -31
- package/connector/mock.js +84 -77
- package/connector/proxy/engine.js +164 -164
- package/connector/proxy/index.js +500 -500
- package/connector/registry.js +252 -252
- package/docs/README.md +50 -50
- package/docs/architecture.md +93 -93
- package/docs/connectors.md +116 -116
- package/docs/handlers.md +125 -125
- package/docs/libraries.md +101 -101
- package/docs/models.md +144 -144
- package/docs/routes.md +115 -115
- package/docs/tests.md +73 -73
- package/handlers/admin.js +523 -523
- package/handlers/appointment.js +193 -0
- package/handlers/auth.js +296 -296
- package/handlers/calldown.js +99 -99
- package/handlers/contact.js +280 -280
- package/handlers/disposition.js +82 -80
- package/handlers/log.js +984 -973
- package/handlers/managedAuth.js +446 -446
- package/handlers/plugin.js +208 -208
- package/handlers/user.js +142 -142
- package/index.js +3140 -2652
- package/jest.config.js +56 -56
- package/lib/analytics.js +54 -54
- package/lib/authSession.js +109 -109
- package/lib/cacheCleanup.js +21 -0
- package/lib/callLogComposer.js +898 -898
- package/lib/callLogLookup.js +34 -0
- package/lib/constants.js +8 -8
- package/lib/debugTracer.js +177 -177
- package/lib/encode.js +30 -30
- package/lib/errorHandler.js +218 -206
- package/lib/generalErrorMessage.js +41 -41
- package/lib/jwt.js +18 -18
- package/lib/logger.js +190 -190
- package/lib/migrateCallLogsSchema.js +116 -0
- package/lib/ringcentral.js +266 -266
- package/lib/s3ErrorLogReport.js +65 -65
- package/lib/sharedSMSComposer.js +471 -471
- package/lib/util.js +67 -67
- package/mcp/README.md +412 -395
- package/mcp/lib/validator.js +91 -91
- package/mcp/mcpHandler.js +425 -425
- package/mcp/tools/cancelAppointment.js +101 -0
- package/mcp/tools/checkAuthStatus.js +105 -105
- package/mcp/tools/confirmAppointment.js +101 -0
- package/mcp/tools/createAppointment.js +157 -0
- package/mcp/tools/createCallLog.js +327 -316
- package/mcp/tools/createContact.js +117 -117
- package/mcp/tools/createMessageLog.js +287 -287
- package/mcp/tools/doAuth.js +60 -60
- package/mcp/tools/findContactByName.js +93 -93
- package/mcp/tools/findContactByPhone.js +101 -101
- package/mcp/tools/getCallLog.js +111 -102
- package/mcp/tools/getGoogleFilePicker.js +99 -99
- package/mcp/tools/getHelp.js +43 -43
- package/mcp/tools/getPublicConnectors.js +94 -94
- package/mcp/tools/getSessionInfo.js +90 -90
- package/mcp/tools/index.js +51 -41
- package/mcp/tools/listAppointments.js +163 -0
- package/mcp/tools/logout.js +96 -96
- package/mcp/tools/rcGetCallLogs.js +65 -65
- package/mcp/tools/updateAppointment.js +154 -0
- package/mcp/tools/updateCallLog.js +130 -126
- package/mcp/ui/App/App.tsx +358 -358
- package/mcp/ui/App/components/AuthInfoForm.tsx +113 -113
- package/mcp/ui/App/components/AuthSuccess.tsx +22 -22
- package/mcp/ui/App/components/ConnectorList.tsx +82 -82
- package/mcp/ui/App/components/DebugPanel.tsx +43 -43
- package/mcp/ui/App/components/OAuthConnect.tsx +270 -270
- package/mcp/ui/App/lib/callTool.ts +130 -130
- package/mcp/ui/App/lib/debugLog.ts +41 -41
- package/mcp/ui/App/lib/developerPortal.ts +111 -111
- package/mcp/ui/App/main.css +5 -5
- package/mcp/ui/App/root.tsx +13 -13
- package/mcp/ui/index.html +13 -13
- package/mcp/ui/package-lock.json +6356 -6356
- package/mcp/ui/package.json +25 -25
- package/mcp/ui/tsconfig.json +26 -26
- package/mcp/ui/vite.config.ts +16 -16
- package/models/accountDataModel.js +33 -33
- package/models/adminConfigModel.js +35 -35
- package/models/cacheModel.js +30 -26
- package/models/callDownListModel.js +34 -34
- package/models/callLogModel.js +33 -27
- package/models/dynamo/connectorSchema.js +146 -146
- package/models/dynamo/lockSchema.js +24 -24
- package/models/dynamo/noteCacheSchema.js +29 -29
- package/models/llmSessionModel.js +17 -17
- package/models/messageLogModel.js +25 -25
- package/models/sequelize.js +16 -16
- package/models/userModel.js +45 -45
- package/package.json +1 -1
- package/releaseNotes.json +1093 -1081
- package/test/connector/proxy/engine.test.js +126 -126
- package/test/connector/proxy/index.test.js +279 -279
- package/test/connector/proxy/sample.json +161 -161
- package/test/connector/registry.test.js +415 -415
- package/test/handlers/admin.test.js +616 -616
- package/test/handlers/auth.test.js +1018 -1018
- package/test/handlers/contact.test.js +1014 -1014
- package/test/handlers/log.test.js +1298 -1160
- package/test/handlers/managedAuth.test.js +457 -457
- package/test/handlers/plugin.test.js +380 -380
- package/test/index.test.js +105 -105
- package/test/lib/cacheCleanup.test.js +42 -0
- package/test/lib/callLogComposer.test.js +1231 -1231
- package/test/lib/debugTracer.test.js +328 -328
- package/test/lib/jwt.test.js +176 -176
- package/test/lib/logger.test.js +206 -206
- package/test/lib/oauth.test.js +359 -359
- package/test/lib/ringcentral.test.js +467 -467
- package/test/lib/sharedSMSComposer.test.js +1084 -1084
- package/test/lib/util.test.js +329 -329
- package/test/mcp/tools/checkAuthStatus.test.js +83 -83
- package/test/mcp/tools/createCallLog.test.js +436 -436
- package/test/mcp/tools/createContact.test.js +58 -58
- package/test/mcp/tools/createMessageLog.test.js +595 -595
- package/test/mcp/tools/doAuth.test.js +113 -113
- package/test/mcp/tools/findContactByName.test.js +275 -275
- package/test/mcp/tools/findContactByPhone.test.js +296 -296
- package/test/mcp/tools/getCallLog.test.js +298 -298
- package/test/mcp/tools/getGoogleFilePicker.test.js +281 -281
- package/test/mcp/tools/getPublicConnectors.test.js +107 -107
- package/test/mcp/tools/getSessionInfo.test.js +127 -127
- package/test/mcp/tools/logout.test.js +233 -233
- package/test/mcp/tools/rcGetCallLogs.test.js +56 -56
- package/test/mcp/tools/updateCallLog.test.js +360 -360
- package/test/models/accountDataModel.test.js +98 -98
- package/test/models/dynamo/connectorSchema.test.js +189 -189
- package/test/models/models.test.js +568 -539
- package/test/routes/managedAuthRoutes.test.js +104 -104
- package/test/setup.js +178 -178
|
@@ -1,117 +1,117 @@
|
|
|
1
|
-
const jwt = require('../../lib/jwt');
|
|
2
|
-
const connectorRegistry = require('../../connector/registry');
|
|
3
|
-
const contactCore = require('../../handlers/contact');
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* MCP Tool: Create Contact
|
|
7
|
-
*
|
|
8
|
-
* This tool creates a new contact in the CRM platform.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
const toolDefinition = {
|
|
12
|
-
name: 'createContact',
|
|
13
|
-
description: '⚠️ REQUIRES CRM CONNECTION. | Create a new contact in the CRM platform. Returns the created contact information if successful.',
|
|
14
|
-
inputSchema: {
|
|
15
|
-
type: 'object',
|
|
16
|
-
properties: {
|
|
17
|
-
phoneNumber: {
|
|
18
|
-
type: 'string',
|
|
19
|
-
description: 'Phone number of the new contact (MUST BE in E.164 format, e.g., +14155551234)'
|
|
20
|
-
},
|
|
21
|
-
newContactName: {
|
|
22
|
-
type: 'string',
|
|
23
|
-
description: 'Full name of the new contact. If not provided, use phone number as the name'
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
required: ['phoneNumber']
|
|
27
|
-
},
|
|
28
|
-
annotations: {
|
|
29
|
-
readOnlyHint: false,
|
|
30
|
-
openWorldHint: true,
|
|
31
|
-
destructiveHint: false
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Execute the createContact tool
|
|
37
|
-
* @param {Object} args - The tool arguments
|
|
38
|
-
* @param {string} args.jwtToken - JWT token with user and platform info
|
|
39
|
-
* @param {string} args.phoneNumber - Phone number of the new contact
|
|
40
|
-
* @param {string} args.newContactName - Name of the new contact
|
|
41
|
-
* @returns {Object} Result object with created contact information
|
|
42
|
-
*/
|
|
43
|
-
async function execute(args) {
|
|
44
|
-
try {
|
|
45
|
-
const { jwtToken, phoneNumber, newContactName } = args;
|
|
46
|
-
|
|
47
|
-
if (!jwtToken) {
|
|
48
|
-
throw new Error('Please go to Settings and authorize CRM platform');
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (!phoneNumber) {
|
|
52
|
-
throw new Error('Phone number is required');
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (!newContactName) {
|
|
56
|
-
throw new Error('Contact name is required');
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Decode JWT to get userId and platform
|
|
60
|
-
const decodedToken = jwt.decodeJwt(jwtToken);
|
|
61
|
-
if (!decodedToken) {
|
|
62
|
-
throw new Error('Invalid JWT token');
|
|
63
|
-
}
|
|
64
|
-
const { id: userId, platform } = decodedToken;
|
|
65
|
-
|
|
66
|
-
if (!userId) {
|
|
67
|
-
throw new Error('Invalid JWT token: userId not found');
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Get the platform connector module
|
|
71
|
-
const platformModule = connectorRegistry.getConnector(platform);
|
|
72
|
-
|
|
73
|
-
if (!platformModule) {
|
|
74
|
-
throw new Error(`Platform connector not found for: ${platform}`);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Check if createContact is implemented
|
|
78
|
-
if (!platformModule.createContact) {
|
|
79
|
-
throw new Error(`createContact is not implemented for platform: ${platform}`);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Call the createContact method
|
|
83
|
-
const { successful, returnMessage, contact } = await contactCore.createContact({
|
|
84
|
-
platform,
|
|
85
|
-
userId,
|
|
86
|
-
phoneNumber,
|
|
87
|
-
newContactName
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
if (successful) {
|
|
91
|
-
return {
|
|
92
|
-
success: true,
|
|
93
|
-
data: {
|
|
94
|
-
contact,
|
|
95
|
-
message: returnMessage?.message || 'Contact created successfully'
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
return {
|
|
101
|
-
success: false,
|
|
102
|
-
error: returnMessage?.message || 'Failed to create contact'
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
return {
|
|
108
|
-
success: false,
|
|
109
|
-
error: error.message || 'Unknown error occurred',
|
|
110
|
-
errorDetails: error.stack
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
exports.definition = toolDefinition;
|
|
116
|
-
exports.execute = execute;
|
|
117
|
-
|
|
1
|
+
const jwt = require('../../lib/jwt');
|
|
2
|
+
const connectorRegistry = require('../../connector/registry');
|
|
3
|
+
const contactCore = require('../../handlers/contact');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* MCP Tool: Create Contact
|
|
7
|
+
*
|
|
8
|
+
* This tool creates a new contact in the CRM platform.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const toolDefinition = {
|
|
12
|
+
name: 'createContact',
|
|
13
|
+
description: '⚠️ REQUIRES CRM CONNECTION. | Create a new contact in the CRM platform. Returns the created contact information if successful.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
phoneNumber: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Phone number of the new contact (MUST BE in E.164 format, e.g., +14155551234)'
|
|
20
|
+
},
|
|
21
|
+
newContactName: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'Full name of the new contact. If not provided, use phone number as the name'
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
required: ['phoneNumber']
|
|
27
|
+
},
|
|
28
|
+
annotations: {
|
|
29
|
+
readOnlyHint: false,
|
|
30
|
+
openWorldHint: true,
|
|
31
|
+
destructiveHint: false
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Execute the createContact tool
|
|
37
|
+
* @param {Object} args - The tool arguments
|
|
38
|
+
* @param {string} args.jwtToken - JWT token with user and platform info
|
|
39
|
+
* @param {string} args.phoneNumber - Phone number of the new contact
|
|
40
|
+
* @param {string} args.newContactName - Name of the new contact
|
|
41
|
+
* @returns {Object} Result object with created contact information
|
|
42
|
+
*/
|
|
43
|
+
async function execute(args) {
|
|
44
|
+
try {
|
|
45
|
+
const { jwtToken, phoneNumber, newContactName } = args;
|
|
46
|
+
|
|
47
|
+
if (!jwtToken) {
|
|
48
|
+
throw new Error('Please go to Settings and authorize CRM platform');
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (!phoneNumber) {
|
|
52
|
+
throw new Error('Phone number is required');
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (!newContactName) {
|
|
56
|
+
throw new Error('Contact name is required');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Decode JWT to get userId and platform
|
|
60
|
+
const decodedToken = jwt.decodeJwt(jwtToken);
|
|
61
|
+
if (!decodedToken) {
|
|
62
|
+
throw new Error('Invalid JWT token');
|
|
63
|
+
}
|
|
64
|
+
const { id: userId, platform } = decodedToken;
|
|
65
|
+
|
|
66
|
+
if (!userId) {
|
|
67
|
+
throw new Error('Invalid JWT token: userId not found');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Get the platform connector module
|
|
71
|
+
const platformModule = connectorRegistry.getConnector(platform);
|
|
72
|
+
|
|
73
|
+
if (!platformModule) {
|
|
74
|
+
throw new Error(`Platform connector not found for: ${platform}`);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Check if createContact is implemented
|
|
78
|
+
if (!platformModule.createContact) {
|
|
79
|
+
throw new Error(`createContact is not implemented for platform: ${platform}`);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Call the createContact method
|
|
83
|
+
const { successful, returnMessage, contact } = await contactCore.createContact({
|
|
84
|
+
platform,
|
|
85
|
+
userId,
|
|
86
|
+
phoneNumber,
|
|
87
|
+
newContactName
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
if (successful) {
|
|
91
|
+
return {
|
|
92
|
+
success: true,
|
|
93
|
+
data: {
|
|
94
|
+
contact,
|
|
95
|
+
message: returnMessage?.message || 'Contact created successfully'
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return {
|
|
101
|
+
success: false,
|
|
102
|
+
error: returnMessage?.message || 'Failed to create contact'
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
return {
|
|
108
|
+
success: false,
|
|
109
|
+
error: error.message || 'Unknown error occurred',
|
|
110
|
+
errorDetails: error.stack
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
exports.definition = toolDefinition;
|
|
116
|
+
exports.execute = execute;
|
|
117
|
+
|