@egain/ai-agent-sdk 0.1.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 (164) hide show
  1. package/README.md +295 -0
  2. package/dist/browser.js +22739 -0
  3. package/dist/core/AiAgent.d.ts +1126 -0
  4. package/dist/core/AiAgent.d.ts.map +1 -0
  5. package/dist/core/AiAgent.js +2037 -0
  6. package/dist/core/AiAgent.js.map +1 -0
  7. package/dist/core/api/ApiHelper.d.ts +433 -0
  8. package/dist/core/api/ApiHelper.d.ts.map +1 -0
  9. package/dist/core/api/ApiHelper.js +689 -0
  10. package/dist/core/api/ApiHelper.js.map +1 -0
  11. package/dist/core/api/CacheAdapter.d.ts +295 -0
  12. package/dist/core/api/CacheAdapter.d.ts.map +1 -0
  13. package/dist/core/api/CacheAdapter.js +298 -0
  14. package/dist/core/api/CacheAdapter.js.map +1 -0
  15. package/dist/core/auth/AnonymousAuthStrategy.d.ts +87 -0
  16. package/dist/core/auth/AnonymousAuthStrategy.d.ts.map +1 -0
  17. package/dist/core/auth/AnonymousAuthStrategy.js +257 -0
  18. package/dist/core/auth/AnonymousAuthStrategy.js.map +1 -0
  19. package/dist/core/auth/AuthProvider.d.ts +13 -0
  20. package/dist/core/auth/AuthProvider.d.ts.map +1 -0
  21. package/dist/core/auth/AuthProvider.js +2 -0
  22. package/dist/core/auth/AuthProvider.js.map +1 -0
  23. package/dist/core/auth/AuthStrategy.d.ts +74 -0
  24. package/dist/core/auth/AuthStrategy.d.ts.map +1 -0
  25. package/dist/core/auth/AuthStrategy.js +2 -0
  26. package/dist/core/auth/AuthStrategy.js.map +1 -0
  27. package/dist/core/auth/AuthenticationService.d.ts +226 -0
  28. package/dist/core/auth/AuthenticationService.d.ts.map +1 -0
  29. package/dist/core/auth/AuthenticationService.js +344 -0
  30. package/dist/core/auth/AuthenticationService.js.map +1 -0
  31. package/dist/core/auth/ClientCredentialsAuthStrategy.d.ts +62 -0
  32. package/dist/core/auth/ClientCredentialsAuthStrategy.d.ts.map +1 -0
  33. package/dist/core/auth/ClientCredentialsAuthStrategy.js +78 -0
  34. package/dist/core/auth/ClientCredentialsAuthStrategy.js.map +1 -0
  35. package/dist/core/auth/PKCEAuthStrategy.d.ts +136 -0
  36. package/dist/core/auth/PKCEAuthStrategy.d.ts.map +1 -0
  37. package/dist/core/auth/PKCEAuthStrategy.js +409 -0
  38. package/dist/core/auth/PKCEAuthStrategy.js.map +1 -0
  39. package/dist/core/auth/PreAuthStrategy.d.ts +101 -0
  40. package/dist/core/auth/PreAuthStrategy.d.ts.map +1 -0
  41. package/dist/core/auth/PreAuthStrategy.js +216 -0
  42. package/dist/core/auth/PreAuthStrategy.js.map +1 -0
  43. package/dist/core/auth/msal-browser.js +19683 -0
  44. package/dist/core/auth/msal-loader.d.ts +14 -0
  45. package/dist/core/auth/msal-loader.d.ts.map +1 -0
  46. package/dist/core/auth/msal-loader.js +43 -0
  47. package/dist/core/auth/msal-loader.js.map +1 -0
  48. package/dist/core/connection/Connection.d.ts +168 -0
  49. package/dist/core/connection/Connection.d.ts.map +1 -0
  50. package/dist/core/connection/Connection.js +290 -0
  51. package/dist/core/connection/Connection.js.map +1 -0
  52. package/dist/core/connection/ConnectionState.d.ts +11 -0
  53. package/dist/core/connection/ConnectionState.d.ts.map +1 -0
  54. package/dist/core/connection/ConnectionState.js +12 -0
  55. package/dist/core/connection/ConnectionState.js.map +1 -0
  56. package/dist/core/connection/Transport.d.ts +98 -0
  57. package/dist/core/connection/Transport.d.ts.map +1 -0
  58. package/dist/core/connection/Transport.js +27 -0
  59. package/dist/core/connection/Transport.js.map +1 -0
  60. package/dist/core/connection/WebSocketTransport.d.ts +65 -0
  61. package/dist/core/connection/WebSocketTransport.d.ts.map +1 -0
  62. package/dist/core/connection/WebSocketTransport.js +177 -0
  63. package/dist/core/connection/WebSocketTransport.js.map +1 -0
  64. package/dist/core/errors/SDKError.d.ts +27 -0
  65. package/dist/core/errors/SDKError.d.ts.map +1 -0
  66. package/dist/core/errors/SDKError.js +43 -0
  67. package/dist/core/errors/SDKError.js.map +1 -0
  68. package/dist/core/events/EventEmitter.d.ts +120 -0
  69. package/dist/core/events/EventEmitter.d.ts.map +1 -0
  70. package/dist/core/events/EventEmitter.js +183 -0
  71. package/dist/core/events/EventEmitter.js.map +1 -0
  72. package/dist/core/logging/LogLevel.d.ts +33 -0
  73. package/dist/core/logging/LogLevel.d.ts.map +1 -0
  74. package/dist/core/logging/LogLevel.js +40 -0
  75. package/dist/core/logging/LogLevel.js.map +1 -0
  76. package/dist/core/logging/Logger.d.ts +120 -0
  77. package/dist/core/logging/Logger.d.ts.map +1 -0
  78. package/dist/core/logging/Logger.js +204 -0
  79. package/dist/core/logging/Logger.js.map +1 -0
  80. package/dist/core/logging/globalLogger.d.ts +8 -0
  81. package/dist/core/logging/globalLogger.d.ts.map +1 -0
  82. package/dist/core/logging/globalLogger.js +12 -0
  83. package/dist/core/logging/globalLogger.js.map +1 -0
  84. package/dist/core/logging/types.d.ts +45 -0
  85. package/dist/core/logging/types.d.ts.map +1 -0
  86. package/dist/core/logging/types.js +2 -0
  87. package/dist/core/logging/types.js.map +1 -0
  88. package/dist/core/message/BaseMessageHandler.d.ts +208 -0
  89. package/dist/core/message/BaseMessageHandler.d.ts.map +1 -0
  90. package/dist/core/message/BaseMessageHandler.js +155 -0
  91. package/dist/core/message/BaseMessageHandler.js.map +1 -0
  92. package/dist/core/message/Message.d.ts +69 -0
  93. package/dist/core/message/Message.d.ts.map +1 -0
  94. package/dist/core/message/Message.js +131 -0
  95. package/dist/core/message/Message.js.map +1 -0
  96. package/dist/core/message/MessageProcessor.d.ts +51 -0
  97. package/dist/core/message/MessageProcessor.d.ts.map +1 -0
  98. package/dist/core/message/MessageProcessor.js +123 -0
  99. package/dist/core/message/MessageProcessor.js.map +1 -0
  100. package/dist/core/message/MessageTypes.d.ts +123 -0
  101. package/dist/core/message/MessageTypes.d.ts.map +1 -0
  102. package/dist/core/message/MessageTypes.js +106 -0
  103. package/dist/core/message/MessageTypes.js.map +1 -0
  104. package/dist/core/message/Transcript.d.ts +373 -0
  105. package/dist/core/message/Transcript.d.ts.map +1 -0
  106. package/dist/core/message/Transcript.js +355 -0
  107. package/dist/core/message/Transcript.js.map +1 -0
  108. package/dist/core/message/handlers/AgentMessageHandler.d.ts +26 -0
  109. package/dist/core/message/handlers/AgentMessageHandler.d.ts.map +1 -0
  110. package/dist/core/message/handlers/AgentMessageHandler.js +130 -0
  111. package/dist/core/message/handlers/AgentMessageHandler.js.map +1 -0
  112. package/dist/core/message/handlers/ChatHistoryHandler.d.ts +12 -0
  113. package/dist/core/message/handlers/ChatHistoryHandler.d.ts.map +1 -0
  114. package/dist/core/message/handlers/ChatHistoryHandler.js +49 -0
  115. package/dist/core/message/handlers/ChatHistoryHandler.js.map +1 -0
  116. package/dist/core/message/handlers/ErrorMessageHandler.d.ts +12 -0
  117. package/dist/core/message/handlers/ErrorMessageHandler.d.ts.map +1 -0
  118. package/dist/core/message/handlers/ErrorMessageHandler.js +49 -0
  119. package/dist/core/message/handlers/ErrorMessageHandler.js.map +1 -0
  120. package/dist/core/message/handlers/HeartbeatHandler.d.ts +12 -0
  121. package/dist/core/message/handlers/HeartbeatHandler.d.ts.map +1 -0
  122. package/dist/core/message/handlers/HeartbeatHandler.js +46 -0
  123. package/dist/core/message/handlers/HeartbeatHandler.js.map +1 -0
  124. package/dist/core/message/handlers/TokenRefreshHandler.d.ts +30 -0
  125. package/dist/core/message/handlers/TokenRefreshHandler.d.ts.map +1 -0
  126. package/dist/core/message/handlers/TokenRefreshHandler.js +84 -0
  127. package/dist/core/message/handlers/TokenRefreshHandler.js.map +1 -0
  128. package/dist/core/message/types.d.ts +107 -0
  129. package/dist/core/message/types.d.ts.map +1 -0
  130. package/dist/core/message/types.js +30 -0
  131. package/dist/core/message/types.js.map +1 -0
  132. package/dist/core/platform/HookContract.d.ts +112 -0
  133. package/dist/core/platform/HookContract.d.ts.map +1 -0
  134. package/dist/core/platform/HookContract.js +13 -0
  135. package/dist/core/platform/HookContract.js.map +1 -0
  136. package/dist/core/platform/PlatformComponentService.d.ts +40 -0
  137. package/dist/core/platform/PlatformComponentService.d.ts.map +1 -0
  138. package/dist/core/platform/PlatformComponentService.js +12 -0
  139. package/dist/core/platform/PlatformComponentService.js.map +1 -0
  140. package/dist/core/platform/PlatformScriptLoader.d.ts +41 -0
  141. package/dist/core/platform/PlatformScriptLoader.d.ts.map +1 -0
  142. package/dist/core/platform/PlatformScriptLoader.js +110 -0
  143. package/dist/core/platform/PlatformScriptLoader.js.map +1 -0
  144. package/dist/core/polyfills.d.ts +16 -0
  145. package/dist/core/polyfills.d.ts.map +1 -0
  146. package/dist/core/polyfills.js +168 -0
  147. package/dist/core/polyfills.js.map +1 -0
  148. package/dist/core/portal-initializer/PortalInitializer.d.ts +234 -0
  149. package/dist/core/portal-initializer/PortalInitializer.d.ts.map +1 -0
  150. package/dist/core/portal-initializer/PortalInitializer.js +636 -0
  151. package/dist/core/portal-initializer/PortalInitializer.js.map +1 -0
  152. package/dist/core/queue/MessageQueue.d.ts +277 -0
  153. package/dist/core/queue/MessageQueue.d.ts.map +1 -0
  154. package/dist/core/queue/MessageQueue.js +291 -0
  155. package/dist/core/queue/MessageQueue.js.map +1 -0
  156. package/dist/core/types/PortalTypes.d.ts +51 -0
  157. package/dist/core/types/PortalTypes.d.ts.map +1 -0
  158. package/dist/core/types/PortalTypes.js +8 -0
  159. package/dist/core/types/PortalTypes.js.map +1 -0
  160. package/dist/index.d.ts +91 -0
  161. package/dist/index.d.ts.map +1 -0
  162. package/dist/index.js +82 -0
  163. package/dist/index.js.map +1 -0
  164. package/package.json +84 -0
package/README.md ADDED
@@ -0,0 +1,295 @@
1
+ # @eGain/ai-agent-sdk
2
+
3
+ TypeScript-first SDK for eGain's AI Agent platform with WebSocket communication, automatic reconnection, and comprehensive message handling.
4
+
5
+ **Current release:** v0.0.14
6
+
7
+ [![npm version](https://img.shields.io/npm/v/@eGain/ai-agent-sdk.svg)](https://www.npmjs.com/package/@eGain/ai-agent-sdk)
8
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)
9
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
10
+
11
+ ## Features
12
+
13
+ - 🔌 **WebSocket Communication** - Real-time bidirectional messaging with auto-reconnection
14
+ - 📬 **Message Queuing** - Automatic queuing when offline, flush on reconnect
15
+ - 🔐 **Multiple Auth Strategies** - Pre-Auth, Anonymous, PKCE, Client Credentials
16
+ - 🎯 **Type-Safe Events** - Full TypeScript support with strongly-typed events
17
+ - 📝 **Transcript Management** - Built-in conversation history with filtering
18
+ - 🧠 **Context Persistence** - Automatic caching and restoration on reconnect
19
+ - 🛡️ **Error Handling** - Comprehensive typed errors that protect your app
20
+ - 🌐 **Universal** - Works in Browser and Node.js
21
+ - 🏢 **Portal initialization** - Contact center REST pipeline (portals, agents, profiles) before WebSocket `connect()`
22
+ - 🔌 **Platform connectors** - Load CC connector scripts; typed `HookContract` / `PlatformComponentService` for integrators
23
+
24
+ ## Installation
25
+
26
+ ```bash
27
+ npm install @eGain/ai-agent-sdk
28
+ ```
29
+
30
+ **GitHub Packages Configuration** (`.npmrc`):
31
+ ```ini
32
+ @eGain:registry=https://npm.pkg.github.com/
33
+ //npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN
34
+ ```
35
+
36
+ ## Quick Start
37
+
38
+ ```typescript
39
+ import { AiAgent } from "@eGain/ai-agent-sdk";
40
+
41
+ const agent = new AiAgent({
42
+ id: "your-agent-id",
43
+ endpoint: "https://your-endpoint.com",
44
+ auth: { type: "pre-auth", accessToken: "your-access-token" },
45
+ autoConnect: true
46
+ });
47
+
48
+ agent.on("agentMessage", (event) => {
49
+ console.log("Agent:", event.payload.message?.content);
50
+ });
51
+
52
+ agent.on("error", (event) => {
53
+ console.error("Error:", event.payload.error);
54
+ });
55
+
56
+ await agent.initialize();
57
+ await agent.send("Hello!");
58
+ ```
59
+
60
+ ### Contact center (portal flow)
61
+
62
+ For agents that use the portal / profile pipeline, listen for selection events and call `connect()` after `initialized`:
63
+
64
+ ```typescript
65
+ import { AiAgent } from "@eGain/ai-agent-sdk";
66
+
67
+ const agent = new AiAgent({
68
+ id: "your-agent-id",
69
+ endpoint: "https://your-endpoint.com",
70
+ initParams: { authType: "user", userid: "user-1", platform: "standalone" },
71
+ authScheme: "popup",
72
+ });
73
+
74
+ agent.on("portalsAvailable", (e) => agent.selectPortal(e.payload.portals[0]));
75
+ agent.on("profilesAvailable", (e) => agent.selectUserProfile(e.payload.profiles[0]));
76
+ agent.on("initialized", async () => {
77
+ await agent.connect();
78
+ });
79
+
80
+ await agent.initialize();
81
+ ```
82
+
83
+ See the [Portal initialization](https://egain.github.io/ai-agent-sdk/guide/portal-initialization.html) guide for the full flow.
84
+
85
+ ## Documentation
86
+
87
+ Published docs and TypeDoc on the site below describe the **current release** (version at top of this file).
88
+
89
+ 📚 **[Full Documentation](https://egain.github.io/ai-agent-sdk/)**
90
+
91
+ | Guide | Description |
92
+ |-------|-------------|
93
+ | [Getting Started](https://egain.github.io/ai-agent-sdk/guide/) | Introduction and concepts |
94
+ | [Installation](https://egain.github.io/ai-agent-sdk/guide/installation.html) | Setup instructions |
95
+ | [Quick Start](https://egain.github.io/ai-agent-sdk/guide/quick-start.html) | First integration |
96
+ | [Authentication](https://egain.github.io/ai-agent-sdk/guide/authentication.html) | Auth strategies |
97
+ | [Events](https://egain.github.io/ai-agent-sdk/guide/events.html) | Event handling |
98
+ | [Portal initialization](https://egain.github.io/ai-agent-sdk/guide/portal-initialization.html) | CC portal / agent / profile pipeline |
99
+ | [Platform connectors](https://egain.github.io/ai-agent-sdk/guide/platform-connectors.html) | Connector scripts and `HookContract` |
100
+ | [Message Flow](https://egain.github.io/ai-agent-sdk/guide/message-flow.html) | Sending/receiving messages |
101
+ | [API Reference](https://egain.github.io/ai-agent-sdk/api-generated/README.html) | TypeDoc: classes, interfaces, and methods |
102
+ | [Types](https://egain.github.io/ai-agent-sdk/api-generated/README.html) | `Portal`, `UserProfile`, `AgentListItem`, API options (see TypeDoc index) |
103
+
104
+ ## Authentication Options
105
+
106
+ ```typescript
107
+ // Pre-Auth (API Key / Token)
108
+ auth: { type: "pre-auth", accessToken: "your-access-token" }
109
+
110
+ // Anonymous
111
+ auth: { type: "anonymous" }
112
+
113
+ // PKCE (Browser OAuth)
114
+ auth: {
115
+ type: "pkce",
116
+ config: {
117
+ authorizationUrl: "https://auth.example.com/authorize",
118
+ tokenUrl: "https://auth.example.com/token",
119
+ clientId: "your-client-id",
120
+ redirectUri: "https://your-app.com/callback"
121
+ }
122
+ }
123
+
124
+ // Pre-Auth (Server-provided token)
125
+ auth: {
126
+ type: "pre-auth",
127
+ accessToken: "token-from-server"
128
+ }
129
+ ```
130
+
131
+ ## Events
132
+
133
+ ```typescript
134
+ agent.on("connected", (event) => { /* Connected */ });
135
+ agent.on("agentMessage", (event) => { /* Agent response */ });
136
+ agent.on("message", (event) => { /* Any message */ });
137
+ agent.on("heartbeat", (event) => { /* Agent typing */ });
138
+ agent.on("error", (event) => { /* Error occurred */ });
139
+ agent.on("closed", (event) => { /* Disconnected */ });
140
+ agent.on("stateChanged", (event) => { /* State change */ });
141
+ agent.on("queueFlushed", (event) => { /* Queue sent */ });
142
+ agent.on("tokenExpiring", (event) => { /* Token refresh needed */ });
143
+ agent.on("transcriptUpdate", (event) => { /* Chat transcript line */ });
144
+ agent.on("initialized", (event) => { /* CC init done; safe to connect */ });
145
+ agent.on("portalsAvailable", (event) => { /* Call selectPortal */ });
146
+ agent.on("agentsAvailable", (event) => { /* Call selectAgent */ });
147
+ agent.on("profilesAvailable", (event) => { /* Call selectUserProfile */ });
148
+ ```
149
+
150
+ ## Message Helpers
151
+
152
+ ```typescript
153
+ import {
154
+ createContextMessage,
155
+ createFeedbackMessage,
156
+ createEscalationMessage
157
+ } from "@eGain/ai-agent-sdk";
158
+
159
+ // Send context (auto-cached for reconnect)
160
+ await agent.send(createContextMessage({
161
+ context: { userId: "123", language: "en" }
162
+ }));
163
+
164
+ // Send feedback
165
+ await agent.send(createFeedbackMessage({
166
+ rating: 5,
167
+ answerMessageId: "msg-456"
168
+ }));
169
+
170
+ // Trigger escalation
171
+ await agent.send(createEscalationMessage({
172
+ escalationEvent: { type: "transfer", reason: "complex" }
173
+ }));
174
+ ```
175
+
176
+ ## Node.js Setup
177
+
178
+ ```bash
179
+ npm install ws
180
+ ```
181
+
182
+ The SDK automatically loads the `ws` package when running in Node.js. Just import and use:
183
+
184
+ ```typescript
185
+ import { AiAgent } from "@eGain/ai-agent-sdk";
186
+
187
+ const agent = new AiAgent({
188
+ id: "your-agent-id",
189
+ endpoint: "https://your-endpoint.com",
190
+ auth: { type: "pre-auth", accessToken: process.env.AI_AGENT_TOKEN }
191
+ });
192
+ // ... rest of code
193
+ ```
194
+
195
+ If the automatic polyfill doesn't work in your environment, you can set it up manually:
196
+
197
+ ```typescript
198
+ import WebSocket from "ws";
199
+ (global as any).WebSocket = WebSocket;
200
+
201
+ import { AiAgent } from "@eGain/ai-agent-sdk";
202
+ // ... rest of code
203
+ ```
204
+
205
+ ## Browser (UMD)
206
+
207
+ ```html
208
+ <script src="https://unpkg.com/@eGain/ai-agent-sdk/dist/browser.js"></script>
209
+ <script>
210
+ const agent = new eGain.AiAgent({ ... });
211
+ </script>
212
+ ```
213
+
214
+ ## Development
215
+
216
+ ```bash
217
+ # Install dependencies
218
+ npm install
219
+
220
+ # Build
221
+ npm run build:all
222
+
223
+ # Test
224
+ npm test
225
+
226
+ # Documentation
227
+ npm run docs:dev # Dev server
228
+ npm run docs:build # Build docs
229
+ ```
230
+
231
+ ## Examples
232
+
233
+ See [usage-examples](https://github.com/eGain/ai-agent-sdk/tree/master/ai-agent-sdk/usage-examples) in this repository for complete examples:
234
+ - **Basic Usage** - Simple getting started
235
+ - **Browser Test** - Browser integration with UI
236
+ - **Server Test** - Node.js implementation
237
+
238
+ ## API Reference
239
+
240
+ ### AiAgent Methods
241
+
242
+ | Method | Description |
243
+ |--------|-------------|
244
+ | `initialize()` | Initialize the agent (required) |
245
+ | `connect()` | Connect to the server |
246
+ | `disconnect(options?)` | Disconnect from server |
247
+ | `restartConnection()` | Restart with new session |
248
+ | `send(data, options?)` | Send a message |
249
+ | `getState()` | Get connection state |
250
+ | `isConnected()` | Check if connected |
251
+ | `getTranscript(options?)` | Get conversation transcript |
252
+ | `getContext()` | Get stored context |
253
+ | `removeContext()` | Remove stored context |
254
+ | `updateAccessToken(token)` | Update auth token |
255
+ | `selectPortal(portal)` | CC: continue after `portalsAvailable` |
256
+ | `selectAgent(agent)` | CC Flow B: continue after `agentsAvailable` |
257
+ | `selectUserProfile(profile)` | CC: continue after `profilesAvailable` |
258
+ | `getInitParams()` | Copy of configured `initParams` |
259
+ | `getIsInitialized()` | Whether `initialize()` completed |
260
+ | `restartPortalInitializer()` | Re-run CC portal pipeline (or `restartConnection` fallback) |
261
+ | `updateUserProfile(profile)` | Switch profile after CC init without full pipeline restart |
262
+ | `getUserDetails()` | User details from init (or `null`) |
263
+ | `getCallTranscript()` / `clearCallTranscript()` | Telephony call transcript (connector) |
264
+ | `getCallerInfo()` / `getConversationId()` | Connector-provided CTI state |
265
+
266
+ ### Configuration
267
+
268
+ ```typescript
269
+ new AiAgent({
270
+ id: string, // Required: Agent ID
271
+ endpoint: string, // Required: Endpoint URL
272
+ auth?: AuthenticationInput, // Optional: Auth config (defaults to anonymous)
273
+ autoConnect?: boolean, // Auto-connect (default: false)
274
+ maxQueueSize?: number, // Queue size (default: 1000)
275
+ maxReconnectAttempts?: number, // Reconnect attempts (default: Infinity)
276
+ baseReconnectDelay?: number, // Base delay ms (default: 1000)
277
+ maxReconnectDelay?: number, // Max delay ms (default: 30000)
278
+ logLevel?: LogLevel, // Log level (default: INFO)
279
+ transcriptConfig?: TranscriptConfig,
280
+ cache?: CacheConfig,
281
+ sessionId?: string | number, // Skip session fetch if already known
282
+ scopes?: string[], // OAuth resource scopes
283
+ initParams?: Record<string, string>, // CC: portalIds, authType, platform, etc.
284
+ platformScriptUrl?: string, // Override connector script URL
285
+ authScheme?: "popup" | "redirect" // Auto-built PKCE only
286
+ });
287
+ ```
288
+
289
+ ## License
290
+
291
+ MIT
292
+
293
+ ## Support
294
+
295
+ For issues and questions, please open an issue on [GitHub](https://github.com/eGain/ai-agent-sdk/issues).