@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,83 +1,83 @@
|
|
|
1
|
-
const checkAuthStatus = require('../../../mcp/tools/checkAuthStatus');
|
|
2
|
-
const { getAuthSession } = require('../../../lib/authSession');
|
|
3
|
-
const { LlmSessionModel } = require('../../../models/llmSessionModel');
|
|
4
|
-
|
|
5
|
-
jest.mock('../../../lib/authSession');
|
|
6
|
-
jest.mock('../../../models/llmSessionModel');
|
|
7
|
-
|
|
8
|
-
describe('MCP Tool: checkAuthStatus', () => {
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
jest.clearAllMocks();
|
|
11
|
-
LlmSessionModel.upsert.mockResolvedValue([{}, true]);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
test('should return pending when auth session is still waiting', async () => {
|
|
15
|
-
getAuthSession.mockResolvedValue({ status: 'pending' });
|
|
16
|
-
|
|
17
|
-
const result = await checkAuthStatus.execute({
|
|
18
|
-
sessionId: 'session-1',
|
|
19
|
-
rcExtensionId: 'rc-ext-1'
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
expect(result).toEqual({
|
|
23
|
-
data: {
|
|
24
|
-
status: 'pending'
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
expect(LlmSessionModel.upsert).not.toHaveBeenCalled();
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
test('should persist completed auth against rcExtensionId', async () => {
|
|
31
|
-
getAuthSession.mockResolvedValue({
|
|
32
|
-
status: 'completed',
|
|
33
|
-
jwtToken: 'jwt-token',
|
|
34
|
-
userInfo: { id: 'user-1', name: 'Casey' }
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
const result = await checkAuthStatus.execute({
|
|
38
|
-
sessionId: 'session-1',
|
|
39
|
-
rcExtensionId: 'rc-ext-1'
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
expect(LlmSessionModel.upsert).toHaveBeenCalledWith({
|
|
43
|
-
id: 'rc-ext-1',
|
|
44
|
-
jwtToken: 'jwt-token',
|
|
45
|
-
expiry: expect.any(Date)
|
|
46
|
-
});
|
|
47
|
-
expect(result).toEqual({
|
|
48
|
-
data: {
|
|
49
|
-
status: 'completed',
|
|
50
|
-
jwtToken: 'jwt-token',
|
|
51
|
-
userInfo: { id: 'user-1', name: 'Casey' },
|
|
52
|
-
message: expect.stringContaining('IMPORTANT')
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
test('should return expired when the auth session TTL has elapsed', async () => {
|
|
58
|
-
getAuthSession.mockResolvedValue({ status: 'expired' });
|
|
59
|
-
|
|
60
|
-
const result = await checkAuthStatus.execute({
|
|
61
|
-
sessionId: 'session-1',
|
|
62
|
-
rcExtensionId: 'rc-ext-1'
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
expect(result).toEqual({
|
|
66
|
-
data: {
|
|
67
|
-
status: 'expired',
|
|
68
|
-
errorMessage: 'Authentication session expired. Ask the user to start the auth flow again.'
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
test('should return an error when rcExtensionId is missing', async () => {
|
|
74
|
-
const result = await checkAuthStatus.execute({
|
|
75
|
-
sessionId: 'session-1'
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
expect(result).toEqual({
|
|
79
|
-
success: false,
|
|
80
|
-
error: 'CRM auth status check error: rcExtensionId is required'
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
});
|
|
1
|
+
const checkAuthStatus = require('../../../mcp/tools/checkAuthStatus');
|
|
2
|
+
const { getAuthSession } = require('../../../lib/authSession');
|
|
3
|
+
const { LlmSessionModel } = require('../../../models/llmSessionModel');
|
|
4
|
+
|
|
5
|
+
jest.mock('../../../lib/authSession');
|
|
6
|
+
jest.mock('../../../models/llmSessionModel');
|
|
7
|
+
|
|
8
|
+
describe('MCP Tool: checkAuthStatus', () => {
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
jest.clearAllMocks();
|
|
11
|
+
LlmSessionModel.upsert.mockResolvedValue([{}, true]);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test('should return pending when auth session is still waiting', async () => {
|
|
15
|
+
getAuthSession.mockResolvedValue({ status: 'pending' });
|
|
16
|
+
|
|
17
|
+
const result = await checkAuthStatus.execute({
|
|
18
|
+
sessionId: 'session-1',
|
|
19
|
+
rcExtensionId: 'rc-ext-1'
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
expect(result).toEqual({
|
|
23
|
+
data: {
|
|
24
|
+
status: 'pending'
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
expect(LlmSessionModel.upsert).not.toHaveBeenCalled();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test('should persist completed auth against rcExtensionId', async () => {
|
|
31
|
+
getAuthSession.mockResolvedValue({
|
|
32
|
+
status: 'completed',
|
|
33
|
+
jwtToken: 'jwt-token',
|
|
34
|
+
userInfo: { id: 'user-1', name: 'Casey' }
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
const result = await checkAuthStatus.execute({
|
|
38
|
+
sessionId: 'session-1',
|
|
39
|
+
rcExtensionId: 'rc-ext-1'
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
expect(LlmSessionModel.upsert).toHaveBeenCalledWith({
|
|
43
|
+
id: 'rc-ext-1',
|
|
44
|
+
jwtToken: 'jwt-token',
|
|
45
|
+
expiry: expect.any(Date)
|
|
46
|
+
});
|
|
47
|
+
expect(result).toEqual({
|
|
48
|
+
data: {
|
|
49
|
+
status: 'completed',
|
|
50
|
+
jwtToken: 'jwt-token',
|
|
51
|
+
userInfo: { id: 'user-1', name: 'Casey' },
|
|
52
|
+
message: expect.stringContaining('IMPORTANT')
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test('should return expired when the auth session TTL has elapsed', async () => {
|
|
58
|
+
getAuthSession.mockResolvedValue({ status: 'expired' });
|
|
59
|
+
|
|
60
|
+
const result = await checkAuthStatus.execute({
|
|
61
|
+
sessionId: 'session-1',
|
|
62
|
+
rcExtensionId: 'rc-ext-1'
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
expect(result).toEqual({
|
|
66
|
+
data: {
|
|
67
|
+
status: 'expired',
|
|
68
|
+
errorMessage: 'Authentication session expired. Ask the user to start the auth flow again.'
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
test('should return an error when rcExtensionId is missing', async () => {
|
|
74
|
+
const result = await checkAuthStatus.execute({
|
|
75
|
+
sessionId: 'session-1'
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
expect(result).toEqual({
|
|
79
|
+
success: false,
|
|
80
|
+
error: 'CRM auth status check error: rcExtensionId is required'
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
});
|