@webex/internal-plugin-llm 3.10.0-multi-llms.1 → 3.10.0-next.10
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/constants.js +1 -2
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/llm.js +37 -78
- package/dist/llm.js.map +1 -1
- package/dist/llm.types.js.map +1 -1
- package/package.json +6 -6
- package/src/constants.ts +0 -2
- package/src/llm.ts +33 -97
- package/src/llm.types.ts +5 -20
- package/test/unit/spec/llm.js +1 -2
package/dist/constants.js
CHANGED
|
@@ -4,8 +4,7 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
|
|
|
4
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
7
|
+
exports.LLM = void 0;
|
|
8
8
|
// eslint-disable-next-line import/prefer-default-export
|
|
9
9
|
var LLM = exports.LLM = 'llm';
|
|
10
|
-
var LLM_DEFAULT_SESSION = exports.LLM_DEFAULT_SESSION = 'llm-default-session';
|
|
11
10
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LLM","exports"
|
|
1
|
+
{"version":3,"names":["LLM","exports"],"sources":["constants.ts"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport const LLM = 'llm';\n"],"mappings":";;;;;;;AAAA;AACO,IAAMA,GAAG,GAAAC,OAAA,CAAAD,GAAA,GAAG,KAAK","ignoreList":[]}
|
package/dist/index.js
CHANGED
|
@@ -15,8 +15,7 @@ _Object$defineProperty(exports, "default", {
|
|
|
15
15
|
});
|
|
16
16
|
var WebexCore = _interopRequireWildcard(require("@webex/webex-core"));
|
|
17
17
|
var _llm = _interopRequireWildcard(require("./llm"));
|
|
18
|
-
function
|
|
19
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? _Object$getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? _Object$defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
20
19
|
WebexCore.registerInternalPlugin('llm', _llm.default, {
|
|
21
20
|
config: _llm.config
|
|
22
21
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WebexCore","_interopRequireWildcard","require","_llm","
|
|
1
|
+
{"version":3,"names":["WebexCore","_interopRequireWildcard","require","_llm","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","registerInternalPlugin","LLMChannel","config"],"sources":["index.ts"],"sourcesContent":["import * as WebexCore from '@webex/webex-core';\nimport LLMChannel, {config} from './llm';\n\nWebexCore.registerInternalPlugin('llm', LLMChannel, {\n config,\n});\n\nexport {default} from './llm';\n"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAF,uBAAA,CAAAC,OAAA;AAAyC,SAAAD,wBAAAG,CAAA,EAAAC,CAAA,6BAAAC,QAAA,MAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAL,uBAAA,YAAAA,wBAAAG,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,gBAAAW,OAAA,CAAAX,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAM,GAAA,CAAAZ,CAAA,UAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,GAAAM,CAAA,CAAAQ,GAAA,CAAAd,CAAA,EAAAQ,CAAA,cAAAO,EAAA,IAAAf,CAAA,gBAAAe,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,EAAA,OAAAR,CAAA,IAAAD,CAAA,GAAAY,sBAAA,KAAAC,gCAAA,CAAAnB,CAAA,EAAAe,EAAA,OAAAR,CAAA,CAAAM,GAAA,IAAAN,CAAA,CAAAO,GAAA,IAAAR,CAAA,CAAAE,CAAA,EAAAO,EAAA,EAAAR,CAAA,IAAAC,CAAA,CAAAO,EAAA,IAAAf,CAAA,CAAAe,EAAA,WAAAP,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEzCL,SAAS,CAACwB,sBAAsB,CAAC,KAAK,EAAEC,YAAU,EAAE;EAClDC,MAAM,EAANA;AACF,CAAC,CAAC","ignoreList":[]}
|
package/dist/llm.js
CHANGED
|
@@ -7,18 +7,16 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
7
7
|
value: true
|
|
8
8
|
});
|
|
9
9
|
exports.default = exports.config = void 0;
|
|
10
|
-
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
|
|
11
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
12
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
13
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
|
|
14
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
15
12
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
16
13
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
17
15
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
18
16
|
var _internalPluginMercury = _interopRequireDefault(require("@webex/internal-plugin-mercury"));
|
|
19
17
|
var _constants = require("./constants");
|
|
20
|
-
function
|
|
21
|
-
function _isNativeReflectConstruct() {
|
|
18
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
19
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable consistent-return */
|
|
22
20
|
// eslint-disable-next-line no-unused-vars
|
|
23
21
|
|
|
24
22
|
var config = exports.config = {
|
|
@@ -56,31 +54,30 @@ var config = exports.config = {
|
|
|
56
54
|
* LLMChannel to provide socket connections
|
|
57
55
|
*/
|
|
58
56
|
var LLMChannel = exports.default = /*#__PURE__*/function (_ref) {
|
|
59
|
-
(0, _inherits2.default)(LLMChannel, _ref);
|
|
60
|
-
var _super = _createSuper(LLMChannel);
|
|
61
57
|
function LLMChannel() {
|
|
62
58
|
var _this;
|
|
63
59
|
(0, _classCallCheck2.default)(this, LLMChannel);
|
|
64
60
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
65
61
|
args[_key] = arguments[_key];
|
|
66
62
|
}
|
|
67
|
-
_this =
|
|
68
|
-
(0, _defineProperty2.default)(
|
|
69
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "defaultSessionId", _constants.LLM_DEFAULT_SESSION);
|
|
63
|
+
_this = _callSuper(this, LLMChannel, [].concat(args));
|
|
64
|
+
(0, _defineProperty2.default)(_this, "namespace", _constants.LLM);
|
|
70
65
|
/**
|
|
71
|
-
*
|
|
72
|
-
* @
|
|
73
|
-
* @type {
|
|
66
|
+
* If the LLM plugin has been registered and listening
|
|
67
|
+
* @instance
|
|
68
|
+
* @type {Boolean}
|
|
69
|
+
* @public
|
|
74
70
|
*/
|
|
75
|
-
(0, _defineProperty2.default)(
|
|
71
|
+
(0, _defineProperty2.default)(_this, "webSocketUrl", void 0);
|
|
72
|
+
(0, _defineProperty2.default)(_this, "binding", void 0);
|
|
73
|
+
(0, _defineProperty2.default)(_this, "locusUrl", void 0);
|
|
74
|
+
(0, _defineProperty2.default)(_this, "datachannelUrl", void 0);
|
|
76
75
|
/**
|
|
77
76
|
* Register to the websocket
|
|
78
77
|
* @param {string} llmSocketUrl
|
|
79
|
-
* @param {string} sessionId - Connection identifier
|
|
80
78
|
* @returns {Promise<void>}
|
|
81
79
|
*/
|
|
82
|
-
(0, _defineProperty2.default)(
|
|
83
|
-
var sessionId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.LLM_DEFAULT_SESSION;
|
|
80
|
+
(0, _defineProperty2.default)(_this, "register", function (llmSocketUrl) {
|
|
84
81
|
return _this.request({
|
|
85
82
|
method: 'POST',
|
|
86
83
|
url: llmSocketUrl,
|
|
@@ -88,13 +85,10 @@ var LLMChannel = exports.default = /*#__PURE__*/function (_ref) {
|
|
|
88
85
|
deviceUrl: _this.webex.internal.device.url
|
|
89
86
|
}
|
|
90
87
|
}).then(function (res) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
sessionData.webSocketUrl = res.body.webSocketUrl;
|
|
94
|
-
sessionData.binding = res.body.binding;
|
|
95
|
-
_this.connections.set(sessionId, sessionData);
|
|
88
|
+
_this.webSocketUrl = res.body.webSocketUrl;
|
|
89
|
+
_this.binding = res.body.binding;
|
|
96
90
|
}).catch(function (error) {
|
|
97
|
-
_this.logger.error("Error connecting to websocket
|
|
91
|
+
_this.logger.error("Error connecting to websocket: ".concat(error));
|
|
98
92
|
throw error;
|
|
99
93
|
});
|
|
100
94
|
});
|
|
@@ -102,95 +96,60 @@ var LLMChannel = exports.default = /*#__PURE__*/function (_ref) {
|
|
|
102
96
|
* Register and connect to the websocket
|
|
103
97
|
* @param {string} locusUrl
|
|
104
98
|
* @param {string} datachannelUrl
|
|
105
|
-
* @param {string} sessionId - Connection identifier
|
|
106
99
|
* @returns {Promise<void>}
|
|
107
100
|
*/
|
|
108
|
-
(0, _defineProperty2.default)(
|
|
109
|
-
|
|
110
|
-
return _this.register(datachannelUrl, sessionId).then(function () {
|
|
101
|
+
(0, _defineProperty2.default)(_this, "registerAndConnect", function (locusUrl, datachannelUrl) {
|
|
102
|
+
return _this.register(datachannelUrl).then(function () {
|
|
111
103
|
if (!locusUrl || !datachannelUrl) return undefined;
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
sessionData.locusUrl = locusUrl;
|
|
116
|
-
sessionData.datachannelUrl = datachannelUrl;
|
|
117
|
-
_this.connections.set(sessionId, sessionData);
|
|
118
|
-
return _this.connect(sessionData.webSocketUrl, sessionId);
|
|
104
|
+
_this.locusUrl = locusUrl;
|
|
105
|
+
_this.datachannelUrl = datachannelUrl;
|
|
106
|
+
_this.connect(_this.webSocketUrl);
|
|
119
107
|
});
|
|
120
108
|
});
|
|
121
109
|
/**
|
|
122
110
|
* Tells if LLM socket is connected
|
|
123
|
-
* @param {string} sessionId - Connection identifier
|
|
124
111
|
* @returns {boolean} connected
|
|
125
112
|
*/
|
|
126
|
-
(0, _defineProperty2.default)(
|
|
127
|
-
|
|
128
|
-
var socket = _this.getSocket(sessionId);
|
|
129
|
-
return socket ? socket.connected : false;
|
|
113
|
+
(0, _defineProperty2.default)(_this, "isConnected", function () {
|
|
114
|
+
return _this.connected;
|
|
130
115
|
});
|
|
131
116
|
/**
|
|
132
117
|
* Tells if LLM socket is binding
|
|
133
|
-
* @param {string} sessionId - Connection identifier
|
|
134
118
|
* @returns {string} binding
|
|
135
119
|
*/
|
|
136
|
-
(0, _defineProperty2.default)(
|
|
137
|
-
|
|
138
|
-
var sessionData = _this.connections.get(sessionId);
|
|
139
|
-
return sessionData === null || sessionData === void 0 ? void 0 : sessionData.binding;
|
|
120
|
+
(0, _defineProperty2.default)(_this, "getBinding", function () {
|
|
121
|
+
return _this.binding;
|
|
140
122
|
});
|
|
141
123
|
/**
|
|
142
124
|
* Get Locus URL for the connection
|
|
143
|
-
* @param {string} sessionId - Connection identifier
|
|
144
125
|
* @returns {string} locus Url
|
|
145
126
|
*/
|
|
146
|
-
(0, _defineProperty2.default)(
|
|
147
|
-
|
|
148
|
-
var sessionData = _this.connections.get(sessionId);
|
|
149
|
-
return sessionData === null || sessionData === void 0 ? void 0 : sessionData.locusUrl;
|
|
127
|
+
(0, _defineProperty2.default)(_this, "getLocusUrl", function () {
|
|
128
|
+
return _this.locusUrl;
|
|
150
129
|
});
|
|
151
130
|
/**
|
|
152
131
|
* Get data channel URL for the connection
|
|
153
|
-
* @param {string} sessionId - Connection identifier
|
|
154
132
|
* @returns {string} data channel Url
|
|
155
133
|
*/
|
|
156
|
-
(0, _defineProperty2.default)(
|
|
157
|
-
|
|
158
|
-
var sessionData = _this.connections.get(sessionId);
|
|
159
|
-
return sessionData === null || sessionData === void 0 ? void 0 : sessionData.datachannelUrl;
|
|
134
|
+
(0, _defineProperty2.default)(_this, "getDatachannelUrl", function () {
|
|
135
|
+
return _this.datachannelUrl;
|
|
160
136
|
});
|
|
161
137
|
/**
|
|
162
138
|
* Disconnects websocket connection
|
|
163
139
|
* @param {{code: number, reason: string}} options - The disconnect option object with code and reason
|
|
164
|
-
* @param {string} sessionId - Connection identifier
|
|
165
|
-
* @returns {Promise<void>}
|
|
166
|
-
*/
|
|
167
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "disconnectLLM", function (options) {
|
|
168
|
-
var sessionId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.LLM_DEFAULT_SESSION;
|
|
169
|
-
return _this.disconnect(options, sessionId).then(function () {
|
|
170
|
-
// Clean up sessions data
|
|
171
|
-
_this.connections.delete(sessionId);
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
/**
|
|
175
|
-
* Disconnects all LLM websocket connections
|
|
176
|
-
* @param {{code: number, reason: string}} options - The disconnect option object with code and reason
|
|
177
140
|
* @returns {Promise<void>}
|
|
178
141
|
*/
|
|
179
|
-
(0, _defineProperty2.default)(
|
|
180
|
-
return _this.
|
|
181
|
-
|
|
182
|
-
_this.
|
|
142
|
+
(0, _defineProperty2.default)(_this, "disconnectLLM", function (options) {
|
|
143
|
+
return _this.disconnect(options).then(function () {
|
|
144
|
+
_this.locusUrl = undefined;
|
|
145
|
+
_this.datachannelUrl = undefined;
|
|
146
|
+
_this.binding = undefined;
|
|
147
|
+
_this.webSocketUrl = undefined;
|
|
183
148
|
});
|
|
184
149
|
});
|
|
185
|
-
/**
|
|
186
|
-
* Get all active LLM connections
|
|
187
|
-
* @returns {Map} Map of sessionId to session data
|
|
188
|
-
*/
|
|
189
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getAllConnections", function () {
|
|
190
|
-
return new _map.default(_this.connections);
|
|
191
|
-
});
|
|
192
150
|
return _this;
|
|
193
151
|
}
|
|
152
|
+
(0, _inherits2.default)(LLMChannel, _ref);
|
|
194
153
|
return (0, _createClass2.default)(LLMChannel);
|
|
195
154
|
}(_internalPluginMercury.default);
|
|
196
155
|
//# sourceMappingURL=llm.js.map
|
package/dist/llm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_internalPluginMercury","_interopRequireDefault","require","_constants","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","config","exports","llm","pingInterval","process","env","MERCURY_PING_INTERVAL","pongTimeout","MERCURY_PONG_TIMEOUT","backoffTimeMax","MERCURY_BACKOFF_TIME_MAX","backoffTimeReset","MERCURY_BACKOFF_TIME_RESET","forceCloseDelay","MERCURY_FORCE_CLOSE_DELAY","LLMChannel","_ref","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","LLM","LLM_DEFAULT_SESSION","_map","llmSocketUrl","sessionId","undefined","request","method","url","body","deviceUrl","webex","internal","device","then","res","sessionData","connections","get","webSocketUrl","binding","set","catch","error","logger","locusUrl","datachannelUrl","register","connect","socket","getSocket","connected","options","disconnect","delete","disconnectAll","clear","_createClass2","Mercury"],"sources":["llm.ts"],"sourcesContent":["/* eslint-disable consistent-return */\n\nimport Mercury from '@webex/internal-plugin-mercury';\n\nimport {LLM, LLM_DEFAULT_SESSION} from './constants';\n// eslint-disable-next-line no-unused-vars\nimport {ILLMChannel} from './llm.types';\n\nexport const config = {\n llm: {\n /**\n * Milliseconds between pings sent up the socket\n * @type {number}\n */\n pingInterval: process.env.MERCURY_PING_INTERVAL || 15000,\n /**\n * Milliseconds to wait for a pong before declaring the connection dead\n * @type {number}\n */\n pongTimeout: process.env.MERCURY_PONG_TIMEOUT || 14000,\n /**\n * Maximum milliseconds between connection attempts\n * @type {Number}\n */\n backoffTimeMax: process.env.MERCURY_BACKOFF_TIME_MAX || 32000,\n /**\n * Initial milliseconds between connection attempts\n * @type {Number}\n */\n backoffTimeReset: process.env.MERCURY_BACKOFF_TIME_RESET || 1000,\n /**\n * Milliseconds to wait for a close frame before declaring the socket dead and\n * discarding it\n * @type {[type]}\n */\n forceCloseDelay: process.env.MERCURY_FORCE_CLOSE_DELAY || 2000,\n },\n};\n\n/**\n * LLMChannel to provide socket connections\n */\nexport default class LLMChannel extends (Mercury as any) implements ILLMChannel {\n namespace = LLM;\n defaultSessionId = LLM_DEFAULT_SESSION;\n /**\n * Map to store connection-specific data for multiple LLM connections\n * @private\n * @type {Map<string, {webSocketUrl?: string; binding?: string; locusUrl?: string; datachannelUrl?: string}>}\n */\n private connections: Map<\n string,\n {\n webSocketUrl?: string;\n binding?: string;\n locusUrl?: string;\n datachannelUrl?: string;\n }\n > = new Map();\n\n /**\n * Register to the websocket\n * @param {string} llmSocketUrl\n * @param {string} sessionId - Connection identifier\n * @returns {Promise<void>}\n */\n private register = (\n llmSocketUrl: string,\n sessionId: string = LLM_DEFAULT_SESSION\n ): Promise<void> =>\n this.request({\n method: 'POST',\n url: llmSocketUrl,\n body: {deviceUrl: this.webex.internal.device.url},\n })\n .then((res: {body: {webSocketUrl: string; binding: string}}) => {\n // Get or create connection data\n const sessionData = this.connections.get(sessionId) || {};\n sessionData.webSocketUrl = res.body.webSocketUrl;\n sessionData.binding = res.body.binding;\n this.connections.set(sessionId, sessionData);\n })\n .catch((error: any) => {\n this.logger.error(`Error connecting to websocket for ${sessionId}: ${error}`);\n throw error;\n });\n\n /**\n * Register and connect to the websocket\n * @param {string} locusUrl\n * @param {string} datachannelUrl\n * @param {string} sessionId - Connection identifier\n * @returns {Promise<void>}\n */\n public registerAndConnect = (\n locusUrl: string,\n datachannelUrl: string,\n sessionId: string = LLM_DEFAULT_SESSION\n ): Promise<void> =>\n this.register(datachannelUrl, sessionId).then(() => {\n if (!locusUrl || !datachannelUrl) return undefined;\n\n // Get or create connection data\n const sessionData = this.connections.get(sessionId) || {};\n sessionData.locusUrl = locusUrl;\n sessionData.datachannelUrl = datachannelUrl;\n this.connections.set(sessionId, sessionData);\n\n return this.connect(sessionData.webSocketUrl, sessionId);\n });\n\n /**\n * Tells if LLM socket is connected\n * @param {string} sessionId - Connection identifier\n * @returns {boolean} connected\n */\n public isConnected = (sessionId = LLM_DEFAULT_SESSION): boolean => {\n const socket = this.getSocket(sessionId);\n\n return socket ? socket.connected : false;\n };\n\n /**\n * Tells if LLM socket is binding\n * @param {string} sessionId - Connection identifier\n * @returns {string} binding\n */\n public getBinding = (sessionId = LLM_DEFAULT_SESSION): string => {\n const sessionData = this.connections.get(sessionId);\n\n return sessionData?.binding;\n };\n\n /**\n * Get Locus URL for the connection\n * @param {string} sessionId - Connection identifier\n * @returns {string} locus Url\n */\n public getLocusUrl = (sessionId = LLM_DEFAULT_SESSION): string => {\n const sessionData = this.connections.get(sessionId);\n\n return sessionData?.locusUrl;\n };\n\n /**\n * Get data channel URL for the connection\n * @param {string} sessionId - Connection identifier\n * @returns {string} data channel Url\n */\n public getDatachannelUrl = (sessionId = LLM_DEFAULT_SESSION): string => {\n const sessionData = this.connections.get(sessionId);\n\n return sessionData?.datachannelUrl;\n };\n\n /**\n * Disconnects websocket connection\n * @param {{code: number, reason: string}} options - The disconnect option object with code and reason\n * @param {string} sessionId - Connection identifier\n * @returns {Promise<void>}\n */\n public disconnectLLM = (\n options: {code: number; reason: string},\n sessionId: string = LLM_DEFAULT_SESSION\n ): Promise<void> =>\n this.disconnect(options, sessionId).then(() => {\n // Clean up sessions data\n this.connections.delete(sessionId);\n });\n\n /**\n * Disconnects all LLM websocket connections\n * @param {{code: number, reason: string}} options - The disconnect option object with code and reason\n * @returns {Promise<void>}\n */\n public disconnectAllLLM = (options?: {code: number; reason: string}): Promise<void> =>\n this.disconnectAll(options).then(() => {\n // Clean up all connection data\n this.connections.clear();\n });\n\n /**\n * Get all active LLM connections\n * @returns {Map} Map of sessionId to session data\n */\n public getAllConnections = (): Map<\n string,\n {\n webSocketUrl?: string;\n binding?: string;\n locusUrl?: string;\n datachannelUrl?: string;\n }\n > => new Map(this.connections);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_internalPluginMercury","_interopRequireDefault","require","_constants","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","config","exports","llm","pingInterval","process","env","MERCURY_PING_INTERVAL","pongTimeout","MERCURY_PONG_TIMEOUT","backoffTimeMax","MERCURY_BACKOFF_TIME_MAX","backoffTimeReset","MERCURY_BACKOFF_TIME_RESET","forceCloseDelay","MERCURY_FORCE_CLOSE_DELAY","LLMChannel","_ref","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","concat","_defineProperty2","LLM","llmSocketUrl","request","method","url","body","deviceUrl","webex","internal","device","then","res","webSocketUrl","binding","catch","error","logger","locusUrl","datachannelUrl","register","undefined","connect","connected","options","disconnect","_inherits2","_createClass2","Mercury"],"sources":["llm.ts"],"sourcesContent":["/* eslint-disable consistent-return */\n\nimport Mercury from '@webex/internal-plugin-mercury';\n\nimport {LLM} from './constants';\n// eslint-disable-next-line no-unused-vars\nimport {ILLMChannel} from './llm.types';\n\nexport const config = {\n llm: {\n /**\n * Milliseconds between pings sent up the socket\n * @type {number}\n */\n pingInterval: process.env.MERCURY_PING_INTERVAL || 15000,\n /**\n * Milliseconds to wait for a pong before declaring the connection dead\n * @type {number}\n */\n pongTimeout: process.env.MERCURY_PONG_TIMEOUT || 14000,\n /**\n * Maximum milliseconds between connection attempts\n * @type {Number}\n */\n backoffTimeMax: process.env.MERCURY_BACKOFF_TIME_MAX || 32000,\n /**\n * Initial milliseconds between connection attempts\n * @type {Number}\n */\n backoffTimeReset: process.env.MERCURY_BACKOFF_TIME_RESET || 1000,\n /**\n * Milliseconds to wait for a close frame before declaring the socket dead and\n * discarding it\n * @type {[type]}\n */\n forceCloseDelay: process.env.MERCURY_FORCE_CLOSE_DELAY || 2000,\n },\n};\n\n/**\n * LLMChannel to provide socket connections\n */\nexport default class LLMChannel extends (Mercury as any) implements ILLMChannel {\n namespace = LLM;\n\n /**\n * If the LLM plugin has been registered and listening\n * @instance\n * @type {Boolean}\n * @public\n */\n\n private webSocketUrl?: string;\n\n private binding?: string;\n\n private locusUrl?: string;\n\n private datachannelUrl?: string;\n\n /**\n * Register to the websocket\n * @param {string} llmSocketUrl\n * @returns {Promise<void>}\n */\n private register = (llmSocketUrl: string): Promise<void> =>\n this.request({\n method: 'POST',\n url: llmSocketUrl,\n body: {deviceUrl: this.webex.internal.device.url},\n })\n .then((res: {body: {webSocketUrl: string; binding: string}}) => {\n this.webSocketUrl = res.body.webSocketUrl;\n this.binding = res.body.binding;\n })\n .catch((error: any) => {\n this.logger.error(`Error connecting to websocket: ${error}`);\n throw error;\n });\n\n /**\n * Register and connect to the websocket\n * @param {string} locusUrl\n * @param {string} datachannelUrl\n * @returns {Promise<void>}\n */\n public registerAndConnect = (locusUrl: string, datachannelUrl: string): Promise<void> =>\n this.register(datachannelUrl).then(() => {\n if (!locusUrl || !datachannelUrl) return undefined;\n this.locusUrl = locusUrl;\n this.datachannelUrl = datachannelUrl;\n this.connect(this.webSocketUrl);\n });\n\n /**\n * Tells if LLM socket is connected\n * @returns {boolean} connected\n */\n public isConnected = (): boolean => this.connected;\n\n /**\n * Tells if LLM socket is binding\n * @returns {string} binding\n */\n public getBinding = (): string => this.binding;\n\n /**\n * Get Locus URL for the connection\n * @returns {string} locus Url\n */\n public getLocusUrl = (): string => this.locusUrl;\n\n /**\n * Get data channel URL for the connection\n * @returns {string} data channel Url\n */\n public getDatachannelUrl = (): string => this.datachannelUrl;\n\n /**\n * Disconnects websocket connection\n * @param {{code: number, reason: string}} options - The disconnect option object with code and reason\n * @returns {Promise<void>}\n */\n public disconnectLLM = (options: object): Promise<void> =>\n this.disconnect(options).then(() => {\n this.locusUrl = undefined;\n this.datachannelUrl = undefined;\n this.binding = undefined;\n this.webSocketUrl = undefined;\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;AAEA,IAAAA,sBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAAgC,SAAAE,WAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,WAAAD,CAAA,OAAAE,gBAAA,CAAAC,OAAA,EAAAH,CAAA,OAAAI,2BAAA,CAAAD,OAAA,EAAAJ,CAAA,EAAAM,yBAAA,KAAAC,kBAAA,CAAAN,CAAA,EAAAC,CAAA,YAAAC,gBAAA,CAAAC,OAAA,EAAAJ,CAAA,EAAAQ,WAAA,IAAAP,CAAA,CAAAQ,KAAA,CAAAT,CAAA,EAAAE,CAAA;AAAA,SAAAI,0BAAA,cAAAN,CAAA,IAAAU,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAN,kBAAA,CAAAG,OAAA,iCAAAV,CAAA,aAAAM,yBAAA,YAAAA,0BAAA,aAAAN,CAAA,UAJhC;AAKA;;AAGO,IAAMc,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG;EACpBE,GAAG,EAAE;IACH;AACJ;AACA;AACA;IACIC,YAAY,EAAEC,OAAO,CAACC,GAAG,CAACC,qBAAqB,IAAI,KAAK;IACxD;AACJ;AACA;AACA;IACIC,WAAW,EAAEH,OAAO,CAACC,GAAG,CAACG,oBAAoB,IAAI,KAAK;IACtD;AACJ;AACA;AACA;IACIC,cAAc,EAAEL,OAAO,CAACC,GAAG,CAACK,wBAAwB,IAAI,KAAK;IAC7D;AACJ;AACA;AACA;IACIC,gBAAgB,EAAEP,OAAO,CAACC,GAAG,CAACO,0BAA0B,IAAI,IAAI;IAChE;AACJ;AACA;AACA;AACA;IACIC,eAAe,EAAET,OAAO,CAACC,GAAG,CAACS,yBAAyB,IAAI;EAC5D;AACF,CAAC;;AAED;AACA;AACA;AAFA,IAGqBC,UAAU,GAAAd,OAAA,CAAAX,OAAA,0BAAA0B,IAAA;EAAA,SAAAD,WAAA;IAAA,IAAAE,KAAA;IAAA,IAAAC,gBAAA,CAAA5B,OAAA,QAAAyB,UAAA;IAAA,SAAAI,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IAAAP,KAAA,GAAAhC,UAAA,OAAA8B,UAAA,KAAAU,MAAA,CAAAH,IAAA;IAAA,IAAAI,gBAAA,CAAApC,OAAA,EAAA2B,KAAA,eACjBU,cAAG;IAEf;AACF;AACA;AACA;AACA;AACA;IALE,IAAAD,gBAAA,CAAApC,OAAA,EAAA2B,KAAA;IAAA,IAAAS,gBAAA,CAAApC,OAAA,EAAA2B,KAAA;IAAA,IAAAS,gBAAA,CAAApC,OAAA,EAAA2B,KAAA;IAAA,IAAAS,gBAAA,CAAApC,OAAA,EAAA2B,KAAA;IAeA;AACF;AACA;AACA;AACA;IAJE,IAAAS,gBAAA,CAAApC,OAAA,EAAA2B,KAAA,cAKmB,UAACW,YAAoB;MAAA,OACtCX,KAAA,CAAKY,OAAO,CAAC;QACXC,MAAM,EAAE,MAAM;QACdC,GAAG,EAAEH,YAAY;QACjBI,IAAI,EAAE;UAACC,SAAS,EAAEhB,KAAA,CAAKiB,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACL;QAAG;MAClD,CAAC,CAAC,CACCM,IAAI,CAAC,UAACC,GAAoD,EAAK;QAC9DrB,KAAA,CAAKsB,YAAY,GAAGD,GAAG,CAACN,IAAI,CAACO,YAAY;QACzCtB,KAAA,CAAKuB,OAAO,GAAGF,GAAG,CAACN,IAAI,CAACQ,OAAO;MACjC,CAAC,CAAC,CACDC,KAAK,CAAC,UAACC,KAAU,EAAK;QACrBzB,KAAA,CAAK0B,MAAM,CAACD,KAAK,mCAAAjB,MAAA,CAAmCiB,KAAK,CAAE,CAAC;QAC5D,MAAMA,KAAK;MACb,CAAC,CAAC;IAAA;IAEN;AACF;AACA;AACA;AACA;AACA;IALE,IAAAhB,gBAAA,CAAApC,OAAA,EAAA2B,KAAA,wBAM4B,UAAC2B,QAAgB,EAAEC,cAAsB;MAAA,OACnE5B,KAAA,CAAK6B,QAAQ,CAACD,cAAc,CAAC,CAACR,IAAI,CAAC,YAAM;QACvC,IAAI,CAACO,QAAQ,IAAI,CAACC,cAAc,EAAE,OAAOE,SAAS;QAClD9B,KAAA,CAAK2B,QAAQ,GAAGA,QAAQ;QACxB3B,KAAA,CAAK4B,cAAc,GAAGA,cAAc;QACpC5B,KAAA,CAAK+B,OAAO,CAAC/B,KAAA,CAAKsB,YAAY,CAAC;MACjC,CAAC,CAAC;IAAA;IAEJ;AACF;AACA;AACA;IAHE,IAAAb,gBAAA,CAAApC,OAAA,EAAA2B,KAAA,iBAIqB;MAAA,OAAeA,KAAA,CAAKgC,SAAS;IAAA;IAElD;AACF;AACA;AACA;IAHE,IAAAvB,gBAAA,CAAApC,OAAA,EAAA2B,KAAA,gBAIoB;MAAA,OAAcA,KAAA,CAAKuB,OAAO;IAAA;IAE9C;AACF;AACA;AACA;IAHE,IAAAd,gBAAA,CAAApC,OAAA,EAAA2B,KAAA,iBAIqB;MAAA,OAAcA,KAAA,CAAK2B,QAAQ;IAAA;IAEhD;AACF;AACA;AACA;IAHE,IAAAlB,gBAAA,CAAApC,OAAA,EAAA2B,KAAA,uBAI2B;MAAA,OAAcA,KAAA,CAAK4B,cAAc;IAAA;IAE5D;AACF;AACA;AACA;AACA;IAJE,IAAAnB,gBAAA,CAAApC,OAAA,EAAA2B,KAAA,mBAKuB,UAACiC,OAAe;MAAA,OACrCjC,KAAA,CAAKkC,UAAU,CAACD,OAAO,CAAC,CAACb,IAAI,CAAC,YAAM;QAClCpB,KAAA,CAAK2B,QAAQ,GAAGG,SAAS;QACzB9B,KAAA,CAAK4B,cAAc,GAAGE,SAAS;QAC/B9B,KAAA,CAAKuB,OAAO,GAAGO,SAAS;QACxB9B,KAAA,CAAKsB,YAAY,GAAGQ,SAAS;MAC/B,CAAC,CAAC;IAAA;IAAA,OAAA9B,KAAA;EAAA;EAAA,IAAAmC,UAAA,CAAA9D,OAAA,EAAAyB,UAAA,EAAAC,IAAA;EAAA,WAAAqC,aAAA,CAAA/D,OAAA,EAAAyB,UAAA;AAAA,EAvFmCuC,8BAAO","ignoreList":[]}
|
package/dist/llm.types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["llm.types.ts"],"sourcesContent":["interface ILLMChannel {\n registerAndConnect: (
|
|
1
|
+
{"version":3,"names":[],"sources":["llm.types.ts"],"sourcesContent":["interface ILLMChannel {\n registerAndConnect: (locusUrl: string, datachannelUrl: string) => Promise<void>;\n isConnected: () => boolean;\n getBinding: () => string;\n getLocusUrl: () => string;\n disconnectLLM: (options: {code: number; reason: string}) => Promise<void>;\n}\n// eslint-disable-next-line import/prefer-default-export\nexport type {ILLMChannel};\n"],"mappings":"","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"node": ">=18"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@webex/internal-plugin-mercury": "3.10.0-
|
|
16
|
+
"@webex/internal-plugin-mercury": "3.10.0-next.10"
|
|
17
17
|
},
|
|
18
18
|
"browserify": {
|
|
19
19
|
"transform": [
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
28
28
|
"@webex/jest-config-legacy": "0.0.0",
|
|
29
29
|
"@webex/legacy-tools": "0.0.0",
|
|
30
|
-
"@webex/test-helper-chai": "3.
|
|
31
|
-
"@webex/test-helper-mocha": "3.
|
|
32
|
-
"@webex/test-helper-mock-webex": "3.
|
|
33
|
-
"@webex/test-helper-test-users": "3.
|
|
30
|
+
"@webex/test-helper-chai": "3.10.0-next.1",
|
|
31
|
+
"@webex/test-helper-mocha": "3.10.0-next.1",
|
|
32
|
+
"@webex/test-helper-mock-webex": "3.10.0-next.1",
|
|
33
|
+
"@webex/test-helper-test-users": "3.10.0-next.1",
|
|
34
34
|
"eslint": "^8.24.0",
|
|
35
35
|
"prettier": "^2.7.1",
|
|
36
36
|
"sinon": "^9.2.4"
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"test:style": "eslint ./src/**/*.*",
|
|
45
45
|
"test:unit": "webex-legacy-tools test --unit --runner jest"
|
|
46
46
|
},
|
|
47
|
-
"version": "3.10.0-
|
|
47
|
+
"version": "3.10.0-next.10"
|
|
48
48
|
}
|
package/src/constants.ts
CHANGED
package/src/llm.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import Mercury from '@webex/internal-plugin-mercury';
|
|
4
4
|
|
|
5
|
-
import {LLM
|
|
5
|
+
import {LLM} from './constants';
|
|
6
6
|
// eslint-disable-next-line no-unused-vars
|
|
7
7
|
import {ILLMChannel} from './llm.types';
|
|
8
8
|
|
|
@@ -42,46 +42,39 @@ export const config = {
|
|
|
42
42
|
*/
|
|
43
43
|
export default class LLMChannel extends (Mercury as any) implements ILLMChannel {
|
|
44
44
|
namespace = LLM;
|
|
45
|
-
|
|
45
|
+
|
|
46
46
|
/**
|
|
47
|
-
*
|
|
48
|
-
* @
|
|
49
|
-
* @type {
|
|
47
|
+
* If the LLM plugin has been registered and listening
|
|
48
|
+
* @instance
|
|
49
|
+
* @type {Boolean}
|
|
50
|
+
* @public
|
|
50
51
|
*/
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
> = new Map();
|
|
52
|
+
|
|
53
|
+
private webSocketUrl?: string;
|
|
54
|
+
|
|
55
|
+
private binding?: string;
|
|
56
|
+
|
|
57
|
+
private locusUrl?: string;
|
|
58
|
+
|
|
59
|
+
private datachannelUrl?: string;
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
62
|
* Register to the websocket
|
|
63
63
|
* @param {string} llmSocketUrl
|
|
64
|
-
* @param {string} sessionId - Connection identifier
|
|
65
64
|
* @returns {Promise<void>}
|
|
66
65
|
*/
|
|
67
|
-
private register = (
|
|
68
|
-
llmSocketUrl: string,
|
|
69
|
-
sessionId: string = LLM_DEFAULT_SESSION
|
|
70
|
-
): Promise<void> =>
|
|
66
|
+
private register = (llmSocketUrl: string): Promise<void> =>
|
|
71
67
|
this.request({
|
|
72
68
|
method: 'POST',
|
|
73
69
|
url: llmSocketUrl,
|
|
74
70
|
body: {deviceUrl: this.webex.internal.device.url},
|
|
75
71
|
})
|
|
76
72
|
.then((res: {body: {webSocketUrl: string; binding: string}}) => {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
sessionData.webSocketUrl = res.body.webSocketUrl;
|
|
80
|
-
sessionData.binding = res.body.binding;
|
|
81
|
-
this.connections.set(sessionId, sessionData);
|
|
73
|
+
this.webSocketUrl = res.body.webSocketUrl;
|
|
74
|
+
this.binding = res.body.binding;
|
|
82
75
|
})
|
|
83
76
|
.catch((error: any) => {
|
|
84
|
-
this.logger.error(`Error connecting to websocket
|
|
77
|
+
this.logger.error(`Error connecting to websocket: ${error}`);
|
|
85
78
|
throw error;
|
|
86
79
|
});
|
|
87
80
|
|
|
@@ -89,107 +82,50 @@ export default class LLMChannel extends (Mercury as any) implements ILLMChannel
|
|
|
89
82
|
* Register and connect to the websocket
|
|
90
83
|
* @param {string} locusUrl
|
|
91
84
|
* @param {string} datachannelUrl
|
|
92
|
-
* @param {string} sessionId - Connection identifier
|
|
93
85
|
* @returns {Promise<void>}
|
|
94
86
|
*/
|
|
95
|
-
public registerAndConnect = (
|
|
96
|
-
|
|
97
|
-
datachannelUrl: string,
|
|
98
|
-
sessionId: string = LLM_DEFAULT_SESSION
|
|
99
|
-
): Promise<void> =>
|
|
100
|
-
this.register(datachannelUrl, sessionId).then(() => {
|
|
87
|
+
public registerAndConnect = (locusUrl: string, datachannelUrl: string): Promise<void> =>
|
|
88
|
+
this.register(datachannelUrl).then(() => {
|
|
101
89
|
if (!locusUrl || !datachannelUrl) return undefined;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
sessionData.locusUrl = locusUrl;
|
|
106
|
-
sessionData.datachannelUrl = datachannelUrl;
|
|
107
|
-
this.connections.set(sessionId, sessionData);
|
|
108
|
-
|
|
109
|
-
return this.connect(sessionData.webSocketUrl, sessionId);
|
|
90
|
+
this.locusUrl = locusUrl;
|
|
91
|
+
this.datachannelUrl = datachannelUrl;
|
|
92
|
+
this.connect(this.webSocketUrl);
|
|
110
93
|
});
|
|
111
94
|
|
|
112
95
|
/**
|
|
113
96
|
* Tells if LLM socket is connected
|
|
114
|
-
* @param {string} sessionId - Connection identifier
|
|
115
97
|
* @returns {boolean} connected
|
|
116
98
|
*/
|
|
117
|
-
public isConnected = (
|
|
118
|
-
const socket = this.getSocket(sessionId);
|
|
119
|
-
|
|
120
|
-
return socket ? socket.connected : false;
|
|
121
|
-
};
|
|
99
|
+
public isConnected = (): boolean => this.connected;
|
|
122
100
|
|
|
123
101
|
/**
|
|
124
102
|
* Tells if LLM socket is binding
|
|
125
|
-
* @param {string} sessionId - Connection identifier
|
|
126
103
|
* @returns {string} binding
|
|
127
104
|
*/
|
|
128
|
-
public getBinding = (
|
|
129
|
-
const sessionData = this.connections.get(sessionId);
|
|
130
|
-
|
|
131
|
-
return sessionData?.binding;
|
|
132
|
-
};
|
|
105
|
+
public getBinding = (): string => this.binding;
|
|
133
106
|
|
|
134
107
|
/**
|
|
135
108
|
* Get Locus URL for the connection
|
|
136
|
-
* @param {string} sessionId - Connection identifier
|
|
137
109
|
* @returns {string} locus Url
|
|
138
110
|
*/
|
|
139
|
-
public getLocusUrl = (
|
|
140
|
-
const sessionData = this.connections.get(sessionId);
|
|
141
|
-
|
|
142
|
-
return sessionData?.locusUrl;
|
|
143
|
-
};
|
|
111
|
+
public getLocusUrl = (): string => this.locusUrl;
|
|
144
112
|
|
|
145
113
|
/**
|
|
146
114
|
* Get data channel URL for the connection
|
|
147
|
-
* @param {string} sessionId - Connection identifier
|
|
148
115
|
* @returns {string} data channel Url
|
|
149
116
|
*/
|
|
150
|
-
public getDatachannelUrl = (
|
|
151
|
-
const sessionData = this.connections.get(sessionId);
|
|
152
|
-
|
|
153
|
-
return sessionData?.datachannelUrl;
|
|
154
|
-
};
|
|
117
|
+
public getDatachannelUrl = (): string => this.datachannelUrl;
|
|
155
118
|
|
|
156
119
|
/**
|
|
157
120
|
* Disconnects websocket connection
|
|
158
121
|
* @param {{code: number, reason: string}} options - The disconnect option object with code and reason
|
|
159
|
-
* @param {string} sessionId - Connection identifier
|
|
160
|
-
* @returns {Promise<void>}
|
|
161
|
-
*/
|
|
162
|
-
public disconnectLLM = (
|
|
163
|
-
options: {code: number; reason: string},
|
|
164
|
-
sessionId: string = LLM_DEFAULT_SESSION
|
|
165
|
-
): Promise<void> =>
|
|
166
|
-
this.disconnect(options, sessionId).then(() => {
|
|
167
|
-
// Clean up sessions data
|
|
168
|
-
this.connections.delete(sessionId);
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Disconnects all LLM websocket connections
|
|
173
|
-
* @param {{code: number, reason: string}} options - The disconnect option object with code and reason
|
|
174
122
|
* @returns {Promise<void>}
|
|
175
123
|
*/
|
|
176
|
-
public
|
|
177
|
-
this.
|
|
178
|
-
|
|
179
|
-
this.
|
|
124
|
+
public disconnectLLM = (options: object): Promise<void> =>
|
|
125
|
+
this.disconnect(options).then(() => {
|
|
126
|
+
this.locusUrl = undefined;
|
|
127
|
+
this.datachannelUrl = undefined;
|
|
128
|
+
this.binding = undefined;
|
|
129
|
+
this.webSocketUrl = undefined;
|
|
180
130
|
});
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Get all active LLM connections
|
|
184
|
-
* @returns {Map} Map of sessionId to session data
|
|
185
|
-
*/
|
|
186
|
-
public getAllConnections = (): Map<
|
|
187
|
-
string,
|
|
188
|
-
{
|
|
189
|
-
webSocketUrl?: string;
|
|
190
|
-
binding?: string;
|
|
191
|
-
locusUrl?: string;
|
|
192
|
-
datachannelUrl?: string;
|
|
193
|
-
}
|
|
194
|
-
> => new Map(this.connections);
|
|
195
131
|
}
|
package/src/llm.types.ts
CHANGED
|
@@ -1,24 +1,9 @@
|
|
|
1
1
|
interface ILLMChannel {
|
|
2
|
-
registerAndConnect: (
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
) => Promise<void>;
|
|
7
|
-
isConnected: (sessionId?: string) => boolean;
|
|
8
|
-
getBinding: (sessionId?: string) => string;
|
|
9
|
-
getLocusUrl: (sessionId?: string) => string;
|
|
10
|
-
getDatachannelUrl: (sessionId?: string) => string;
|
|
11
|
-
disconnectLLM: (options: {code: number; reason: string}, sessionId?: string) => Promise<void>;
|
|
12
|
-
disconnectAllLLM: (options?: {code: number; reason: string}) => Promise<void>;
|
|
13
|
-
getAllConnections: () => Map<
|
|
14
|
-
string,
|
|
15
|
-
{
|
|
16
|
-
webSocketUrl?: string;
|
|
17
|
-
binding?: string;
|
|
18
|
-
locusUrl?: string;
|
|
19
|
-
datachannelUrl?: string;
|
|
20
|
-
}
|
|
21
|
-
>;
|
|
2
|
+
registerAndConnect: (locusUrl: string, datachannelUrl: string) => Promise<void>;
|
|
3
|
+
isConnected: () => boolean;
|
|
4
|
+
getBinding: () => string;
|
|
5
|
+
getLocusUrl: () => string;
|
|
6
|
+
disconnectLLM: (options: {code: number; reason: string}) => Promise<void>;
|
|
22
7
|
}
|
|
23
8
|
// eslint-disable-next-line import/prefer-default-export
|
|
24
9
|
export type {ILLMChannel};
|
package/test/unit/spec/llm.js
CHANGED
|
@@ -21,8 +21,7 @@ describe('plugin-llm', () => {
|
|
|
21
21
|
|
|
22
22
|
llmService = webex.internal.llm;
|
|
23
23
|
llmService.connect = sinon.stub().callsFake(() => {
|
|
24
|
-
|
|
25
|
-
llmService.getSocket = sinon.stub().returns({connected: true});
|
|
24
|
+
llmService.connected = true;
|
|
26
25
|
});
|
|
27
26
|
llmService.disconnect = sinon.stub().resolves(true);
|
|
28
27
|
llmService.request = sinon.stub().resolves({
|