@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 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.LLM_DEFAULT_SESSION = exports.LLM = void 0;
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
@@ -1 +1 @@
1
- {"version":3,"names":["LLM","exports","LLM_DEFAULT_SESSION"],"sources":["constants.ts"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport const LLM = 'llm';\n\nexport const LLM_DEFAULT_SESSION = 'llm-default-session';\n"],"mappings":";;;;;;;AAAA;AACO,IAAMA,GAAG,GAAAC,OAAA,CAAAD,GAAA,GAAG,KAAK;AAEjB,IAAME,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,GAAG,qBAAqB"}
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 _getRequireWildcardCache(e) { if ("function" != typeof _WeakMap) return null; var r = new _WeakMap(), t = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
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","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","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,SAAAE,yBAAAC,CAAA,6BAAAC,QAAA,mBAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,WAAAM,OAAA,EAAAN,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,sBAAA,IAAAC,gCAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAC,MAAA,CAAAC,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAlB,CAAA,EAAAc,CAAA,SAAAK,CAAA,GAAAR,CAAA,GAAAE,gCAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAK,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,sBAAA,CAAAH,CAAA,EAAAK,CAAA,EAAAK,CAAA,IAAAV,CAAA,CAAAK,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAL,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAiB,GAAA,CAAApB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAEzCd,SAAS,CAAC0B,sBAAsB,CAAC,KAAK,EAAEC,YAAU,EAAE;EAClDC,MAAM,EAANA;AACF,CAAC,CAAC"}
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 _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
21
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /* eslint-disable consistent-return */
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 = _super.call.apply(_super, [this].concat(args));
68
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.LLM);
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
- * Map to store connection-specific data for multiple LLM connections
72
- * @private
73
- * @type {Map<string, {webSocketUrl?: string; binding?: string; locusUrl?: string; datachannelUrl?: string}>}
66
+ * If the LLM plugin has been registered and listening
67
+ * @instance
68
+ * @type {Boolean}
69
+ * @public
74
70
  */
75
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "connections", new _map.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)((0, _assertThisInitialized2.default)(_this), "register", function (llmSocketUrl) {
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
- // Get or create connection data
92
- var sessionData = _this.connections.get(sessionId) || {};
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 for ".concat(sessionId, ": ").concat(error));
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)((0, _assertThisInitialized2.default)(_this), "registerAndConnect", function (locusUrl, datachannelUrl) {
109
- var sessionId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _constants.LLM_DEFAULT_SESSION;
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
- // Get or create connection data
114
- var sessionData = _this.connections.get(sessionId) || {};
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)((0, _assertThisInitialized2.default)(_this), "isConnected", function () {
127
- var sessionId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.LLM_DEFAULT_SESSION;
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)((0, _assertThisInitialized2.default)(_this), "getBinding", function () {
137
- var sessionId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.LLM_DEFAULT_SESSION;
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)((0, _assertThisInitialized2.default)(_this), "getLocusUrl", function () {
147
- var sessionId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.LLM_DEFAULT_SESSION;
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)((0, _assertThisInitialized2.default)(_this), "getDatachannelUrl", function () {
157
- var sessionId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.LLM_DEFAULT_SESSION;
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)((0, _assertThisInitialized2.default)(_this), "disconnectAllLLM", function (options) {
180
- return _this.disconnectAll(options).then(function () {
181
- // Clean up all connection data
182
- _this.connections.clear();
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":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["llm.types.ts"],"sourcesContent":["interface ILLMChannel {\n registerAndConnect: (\n locusUrl: string,\n datachannelUrl: string,\n sessionId?: string\n ) => Promise<void>;\n isConnected: (sessionId?: string) => boolean;\n getBinding: (sessionId?: string) => string;\n getLocusUrl: (sessionId?: string) => string;\n getDatachannelUrl: (sessionId?: string) => string;\n disconnectLLM: (options: {code: number; reason: string}, sessionId?: string) => Promise<void>;\n disconnectAllLLM: (options?: {code: number; reason: string}) => Promise<void>;\n getAllConnections: () => Map<\n string,\n {\n webSocketUrl?: string;\n binding?: string;\n locusUrl?: string;\n datachannelUrl?: string;\n }\n >;\n}\n// eslint-disable-next-line import/prefer-default-export\nexport type {ILLMChannel};\n"],"mappings":""}
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-multi-llms.1"
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.9.0-multi-llms.1",
31
- "@webex/test-helper-mocha": "3.9.0-multi-llms.1",
32
- "@webex/test-helper-mock-webex": "3.9.0-multi-llms.1",
33
- "@webex/test-helper-test-users": "3.9.0-multi-llms.1",
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-multi-llms.1"
47
+ "version": "3.10.0-next.10"
48
48
  }
package/src/constants.ts CHANGED
@@ -1,4 +1,2 @@
1
1
  // eslint-disable-next-line import/prefer-default-export
2
2
  export const LLM = 'llm';
3
-
4
- export const LLM_DEFAULT_SESSION = 'llm-default-session';
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, LLM_DEFAULT_SESSION} from './constants';
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
- defaultSessionId = LLM_DEFAULT_SESSION;
45
+
46
46
  /**
47
- * Map to store connection-specific data for multiple LLM connections
48
- * @private
49
- * @type {Map<string, {webSocketUrl?: string; binding?: string; locusUrl?: string; datachannelUrl?: string}>}
47
+ * If the LLM plugin has been registered and listening
48
+ * @instance
49
+ * @type {Boolean}
50
+ * @public
50
51
  */
51
- private connections: Map<
52
- string,
53
- {
54
- webSocketUrl?: string;
55
- binding?: string;
56
- locusUrl?: string;
57
- datachannelUrl?: string;
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
- // Get or create connection data
78
- const sessionData = this.connections.get(sessionId) || {};
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 for ${sessionId}: ${error}`);
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
- locusUrl: string,
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
- // Get or create connection data
104
- const sessionData = this.connections.get(sessionId) || {};
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 = (sessionId = LLM_DEFAULT_SESSION): boolean => {
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 = (sessionId = LLM_DEFAULT_SESSION): string => {
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 = (sessionId = LLM_DEFAULT_SESSION): string => {
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 = (sessionId = LLM_DEFAULT_SESSION): string => {
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 disconnectAllLLM = (options?: {code: number; reason: string}): Promise<void> =>
177
- this.disconnectAll(options).then(() => {
178
- // Clean up all connection data
179
- this.connections.clear();
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
- locusUrl: string,
4
- datachannelUrl: string,
5
- sessionId?: string
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};
@@ -21,8 +21,7 @@ describe('plugin-llm', () => {
21
21
 
22
22
  llmService = webex.internal.llm;
23
23
  llmService.connect = sinon.stub().callsFake(() => {
24
- // Simulate a successful connection by stubbing getSocket to return connected: true
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({