instantsearch.js 4.87.0 → 4.87.1

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 (54) hide show
  1. package/cjs/connectors/chat/connectChat.js +4 -4
  2. package/cjs/index.js +2 -2
  3. package/cjs/lib/ai-lite/abstract-chat.js +823 -0
  4. package/cjs/lib/ai-lite/index.js +57 -0
  5. package/cjs/lib/ai-lite/stream-parser.js +138 -0
  6. package/cjs/lib/ai-lite/transport.js +218 -0
  7. package/cjs/lib/ai-lite/types.js +1 -0
  8. package/cjs/lib/ai-lite/utils.js +85 -0
  9. package/cjs/lib/chat/chat.js +3 -3
  10. package/cjs/lib/version.js +1 -1
  11. package/dist/instantsearch.development.d.ts +1561 -169
  12. package/dist/instantsearch.development.js +9110 -4563
  13. package/dist/instantsearch.development.js.map +1 -1
  14. package/dist/instantsearch.production.d.ts +1561 -169
  15. package/dist/instantsearch.production.min.d.ts +1561 -169
  16. package/dist/instantsearch.production.min.js +2 -2
  17. package/dist/instantsearch.production.min.js.map +1 -1
  18. package/es/connectors/chat/connectChat.d.ts +14 -14
  19. package/es/connectors/chat/connectChat.js +1 -1
  20. package/es/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.d.ts +2 -2
  21. package/es/connectors/geo-search/connectGeoSearch.d.ts +1 -1
  22. package/es/connectors/hits/connectHits.d.ts +1 -1
  23. package/es/connectors/hits/connectHitsWithInsights.d.ts +1 -1
  24. package/es/connectors/infinite-hits/connectInfiniteHits.d.ts +1 -1
  25. package/es/connectors/infinite-hits/connectInfiniteHitsWithInsights.d.ts +1 -1
  26. package/es/connectors/looking-similar/connectLookingSimilar.d.ts +2 -2
  27. package/es/connectors/related-products/connectRelatedProducts.d.ts +2 -2
  28. package/es/connectors/trending-items/connectTrendingItems.d.ts +2 -2
  29. package/es/lib/ai-lite/abstract-chat.d.ts +89 -0
  30. package/es/lib/ai-lite/abstract-chat.js +818 -0
  31. package/es/lib/ai-lite/index.d.ts +11 -0
  32. package/es/lib/ai-lite/index.js +18 -0
  33. package/es/lib/ai-lite/stream-parser.d.ts +18 -0
  34. package/es/lib/ai-lite/stream-parser.js +131 -0
  35. package/es/lib/ai-lite/transport.d.ts +24 -0
  36. package/es/lib/ai-lite/transport.js +214 -0
  37. package/es/lib/ai-lite/types.d.ts +362 -0
  38. package/es/lib/ai-lite/types.js +1 -0
  39. package/es/lib/ai-lite/utils.d.ts +12 -0
  40. package/es/lib/ai-lite/utils.js +76 -0
  41. package/es/lib/chat/chat.d.ts +2 -2
  42. package/es/lib/chat/chat.js +1 -1
  43. package/es/lib/version.d.ts +1 -1
  44. package/es/lib/version.js +1 -1
  45. package/es/widgets/chat/chat.d.ts +14 -14
  46. package/es/widgets/filter-suggestions/filter-suggestions.d.ts +5 -5
  47. package/es/widgets/frequently-bought-together/frequently-bought-together.d.ts +3 -3
  48. package/es/widgets/geo-search/geo-search.d.ts +1 -1
  49. package/es/widgets/hits/hits.d.ts +1 -1
  50. package/es/widgets/infinite-hits/infinite-hits.d.ts +1 -1
  51. package/es/widgets/looking-similar/looking-similar.d.ts +3 -3
  52. package/es/widgets/related-products/related-products.d.ts +3 -3
  53. package/es/widgets/trending-items/trending-items.d.ts +3 -3
  54. package/package.json +6 -7
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "AbstractChat", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _abstractChat.AbstractChat;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "DefaultChatTransport", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _transport.DefaultChatTransport;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "HttpChatTransport", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _transport.HttpChatTransport;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "SerialJobExecutor", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _utils.SerialJobExecutor;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "generateId", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _utils.generateId;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "lastAssistantMessageIsCompleteWithToolCalls", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _utils.lastAssistantMessageIsCompleteWithToolCalls;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "parseJsonEventStream", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _streamParser.parseJsonEventStream;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "processStream", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _streamParser.processStream;
52
+ }
53
+ });
54
+ var _abstractChat = require("./abstract-chat");
55
+ var _transport = require("./transport");
56
+ var _utils = require("./utils");
57
+ var _streamParser = require("./stream-parser");
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseJsonEventStream = parseJsonEventStream;
7
+ exports.processStream = processStream;
8
+ /**
9
+ * Stream parser for parsing SSE (Server-Sent Events) streams.
10
+ * The AI SDK 5 format uses SSE with JSON payloads prefixed by "data: ".
11
+ */
12
+
13
+ /**
14
+ * Parse a stream of bytes as SSE (Server-Sent Events) and convert to UIMessageChunk events.
15
+ * Handles the "data: " prefix used by the AI SDK 5 streaming format.
16
+ *
17
+ * @param stream - The input stream of raw bytes
18
+ * @returns A ReadableStream of parsed UIMessageChunk events
19
+ */
20
+ function parseJsonEventStream(stream) {
21
+ var decoder = new TextDecoder();
22
+ var buffer = '';
23
+ return new ReadableStream({
24
+ start: function start(controller) {
25
+ var reader = stream.getReader();
26
+ var processChunk = function processChunk() {
27
+ reader.read().then(function (_ref) {
28
+ var done = _ref.done,
29
+ value = _ref.value;
30
+ if (done) {
31
+ // Process any remaining data in the buffer
32
+ if (buffer.trim()) {
33
+ var jsonData = extractJsonFromLine(buffer.trim());
34
+ if (jsonData) {
35
+ try {
36
+ var chunk = JSON.parse(jsonData);
37
+ controller.enqueue(chunk);
38
+ } catch (_unused) {
39
+ // Ignore parsing errors for incomplete data at end
40
+ }
41
+ }
42
+ }
43
+ controller.close();
44
+ return;
45
+ }
46
+
47
+ // Decode the chunk and add to buffer
48
+ buffer += decoder.decode(value, {
49
+ stream: true
50
+ });
51
+
52
+ // Process complete lines
53
+ var lines = buffer.split('\n');
54
+ // Keep the last potentially incomplete line in the buffer
55
+ buffer = lines.pop() || '';
56
+ for (var i = 0; i < lines.length; i++) {
57
+ var trimmedLine = lines[i].trim();
58
+ // eslint-disable-next-line no-continue
59
+ if (!trimmedLine) continue;
60
+
61
+ // Extract JSON from SSE data line or plain JSON
62
+ var _jsonData = extractJsonFromLine(trimmedLine);
63
+ // eslint-disable-next-line no-continue
64
+ if (!_jsonData) continue;
65
+ try {
66
+ var _chunk = JSON.parse(_jsonData);
67
+ controller.enqueue(_chunk);
68
+ } catch (_unused2) {
69
+ // Skip malformed lines
70
+ }
71
+ }
72
+
73
+ // Continue reading
74
+ processChunk();
75
+ }, function (error) {
76
+ controller.error(error);
77
+ });
78
+ };
79
+ processChunk();
80
+ }
81
+ });
82
+ }
83
+
84
+ /**
85
+ * Extract JSON data from an SSE line or plain JSON line.
86
+ * Handles both "data: {...}" SSE format and plain "{...}" NDJSON format.
87
+ */
88
+ function extractJsonFromLine(line) {
89
+ // Handle SSE format: "data: {...}"
90
+ if (line.startsWith('data:')) {
91
+ var data = line.slice(5).trim();
92
+ // Skip SSE stream termination signal
93
+ if (data === '[DONE]') return null;
94
+ return data;
95
+ }
96
+
97
+ // Handle plain JSON (NDJSON format)
98
+ if (line.startsWith('{')) {
99
+ return line;
100
+ }
101
+
102
+ // Skip other SSE fields (event:, id:, retry:, etc.)
103
+ return null;
104
+ }
105
+
106
+ /**
107
+ * Process a ReadableStream using a callback for each value.
108
+ * This is a non-async alternative to for-await-of iteration.
109
+ */
110
+ function processStream(stream, onChunk, onDone, onError) {
111
+ var reader = stream.getReader();
112
+ var read = function read() {
113
+ reader.read().then(function (_ref2) {
114
+ var done = _ref2.done,
115
+ value = _ref2.value;
116
+ if (done) {
117
+ reader.releaseLock();
118
+ onDone();
119
+ return;
120
+ }
121
+ var result = onChunk(value);
122
+ if (result && typeof result.then === 'function') {
123
+ result.then(function () {
124
+ return read();
125
+ }, function (error) {
126
+ reader.releaseLock();
127
+ onError(error);
128
+ });
129
+ } else {
130
+ read();
131
+ }
132
+ }, function (error) {
133
+ reader.releaseLock();
134
+ onError(error);
135
+ });
136
+ };
137
+ read();
138
+ }
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HttpChatTransport = exports.DefaultChatTransport = void 0;
7
+ var _streamParser = require("./stream-parser");
8
+ var _utils = require("./utils");
9
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
10
+ function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
11
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
12
+ function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = _getPrototypeOf(t); if (r) { var s = _getPrototypeOf(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return _possibleConstructorReturn(this, e); }; }
13
+ function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
14
+ function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
15
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
16
+ function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
17
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
20
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
22
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
23
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
24
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
25
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
26
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
27
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
28
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
29
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
30
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /**
31
+ * HTTP transport implementation for chat.
32
+ */
33
+ /**
34
+ * Abstract base class for HTTP-based chat transports.
35
+ */
36
+ var HttpChatTransport = exports.HttpChatTransport = /*#__PURE__*/function () {
37
+ function HttpChatTransport(_ref) {
38
+ var _ref$api = _ref.api,
39
+ api = _ref$api === void 0 ? '/api/chat' : _ref$api,
40
+ credentials = _ref.credentials,
41
+ headers = _ref.headers,
42
+ body = _ref.body,
43
+ customFetch = _ref.fetch,
44
+ prepareSendMessagesRequest = _ref.prepareSendMessagesRequest,
45
+ prepareReconnectToStreamRequest = _ref.prepareReconnectToStreamRequest;
46
+ _classCallCheck(this, HttpChatTransport);
47
+ _defineProperty(this, "api", void 0);
48
+ _defineProperty(this, "credentials", void 0);
49
+ _defineProperty(this, "headers", void 0);
50
+ _defineProperty(this, "body", void 0);
51
+ _defineProperty(this, "fetch", void 0);
52
+ _defineProperty(this, "prepareSendMessagesRequest", void 0);
53
+ _defineProperty(this, "prepareReconnectToStreamRequest", void 0);
54
+ this.api = api;
55
+ this.credentials = credentials;
56
+ this.headers = headers;
57
+ this.body = body;
58
+ this.fetch = customFetch;
59
+ this.prepareSendMessagesRequest = prepareSendMessagesRequest;
60
+ this.prepareReconnectToStreamRequest = prepareReconnectToStreamRequest;
61
+ }
62
+ _createClass(HttpChatTransport, [{
63
+ key: "sendMessages",
64
+ value: function sendMessages(_ref2) {
65
+ var _this$fetch,
66
+ _this = this;
67
+ var abortSignal = _ref2.abortSignal,
68
+ chatId = _ref2.chatId,
69
+ messages = _ref2.messages,
70
+ requestMetadata = _ref2.requestMetadata,
71
+ trigger = _ref2.trigger,
72
+ messageId = _ref2.messageId,
73
+ requestHeaders = _ref2.headers,
74
+ requestBody = _ref2.body;
75
+ var fetchFn = (_this$fetch = this.fetch) !== null && _this$fetch !== void 0 ? _this$fetch : fetch;
76
+
77
+ // Resolve configurable values
78
+ return Promise.all([(0, _utils.resolveValue)(this.credentials), (0, _utils.resolveValue)(this.headers), (0, _utils.resolveValue)(this.body)]).then(function (_ref3) {
79
+ var _ref4 = _slicedToArray(_ref3, 3),
80
+ resolvedCredentials = _ref4[0],
81
+ resolvedHeaders = _ref4[1],
82
+ resolvedBody = _ref4[2];
83
+ // Build default request options
84
+ var api = _this.api;
85
+ var body = _objectSpread(_objectSpread({
86
+ id: chatId,
87
+ messages: messages
88
+ }, resolvedBody), requestBody);
89
+ var headers = _objectSpread(_objectSpread({
90
+ 'Content-Type': 'application/json'
91
+ }, resolvedHeaders instanceof Headers ? Object.fromEntries(resolvedHeaders.entries()) : resolvedHeaders), requestHeaders instanceof Headers ? Object.fromEntries(requestHeaders.entries()) : requestHeaders);
92
+ var credentials = resolvedCredentials;
93
+
94
+ // Apply custom preparation if provided
95
+ var prepareRequestBody = _objectSpread(_objectSpread({}, resolvedBody), requestBody);
96
+ var preparePromise = _this.prepareSendMessagesRequest ? Promise.resolve(_this.prepareSendMessagesRequest({
97
+ id: chatId,
98
+ messages: messages,
99
+ requestMetadata: requestMetadata,
100
+ body: prepareRequestBody,
101
+ credentials: resolvedCredentials,
102
+ headers: resolvedHeaders,
103
+ api: _this.api,
104
+ trigger: trigger,
105
+ messageId: messageId
106
+ })) : Promise.resolve(null);
107
+ return preparePromise.then(function (prepared) {
108
+ if (prepared) {
109
+ body = prepared.body;
110
+ if (prepared.api) api = prepared.api;
111
+ if (prepared.headers) {
112
+ headers = _objectSpread({
113
+ 'Content-Type': 'application/json'
114
+ }, prepared.headers instanceof Headers ? Object.fromEntries(prepared.headers.entries()) : prepared.headers);
115
+ }
116
+ if (prepared.credentials) credentials = prepared.credentials;
117
+ }
118
+ return fetchFn(api, {
119
+ method: 'POST',
120
+ headers: headers,
121
+ body: JSON.stringify(body),
122
+ signal: abortSignal,
123
+ credentials: credentials
124
+ }).then(function (response) {
125
+ if (!response.ok) {
126
+ throw new Error("HTTP error: ".concat(response.status, " ").concat(response.statusText));
127
+ }
128
+ if (!response.body) {
129
+ throw new Error('Response body is empty');
130
+ }
131
+ return _this.processResponseStream(response.body);
132
+ });
133
+ });
134
+ });
135
+ }
136
+ }, {
137
+ key: "reconnectToStream",
138
+ value: function reconnectToStream(_ref5) {
139
+ var _this$fetch2,
140
+ _this2 = this;
141
+ var chatId = _ref5.chatId,
142
+ requestHeaders = _ref5.headers,
143
+ requestBody = _ref5.body;
144
+ var fetchFn = (_this$fetch2 = this.fetch) !== null && _this$fetch2 !== void 0 ? _this$fetch2 : fetch;
145
+
146
+ // Resolve configurable values
147
+ return Promise.all([(0, _utils.resolveValue)(this.credentials), (0, _utils.resolveValue)(this.headers), (0, _utils.resolveValue)(this.body)]).then(function (_ref6) {
148
+ var _ref7 = _slicedToArray(_ref6, 3),
149
+ resolvedCredentials = _ref7[0],
150
+ resolvedHeaders = _ref7[1],
151
+ resolvedBody = _ref7[2];
152
+ // Build default request options
153
+ var api = _this2.api;
154
+ var headers = _objectSpread(_objectSpread({}, resolvedHeaders instanceof Headers ? Object.fromEntries(resolvedHeaders.entries()) : resolvedHeaders), requestHeaders instanceof Headers ? Object.fromEntries(requestHeaders.entries()) : requestHeaders);
155
+ var credentials = resolvedCredentials;
156
+
157
+ // Apply custom preparation if provided
158
+ var prepareRequestBody = _objectSpread(_objectSpread({}, resolvedBody), requestBody);
159
+ var preparePromise = _this2.prepareReconnectToStreamRequest ? Promise.resolve(_this2.prepareReconnectToStreamRequest({
160
+ id: chatId,
161
+ requestMetadata: undefined,
162
+ body: prepareRequestBody,
163
+ credentials: resolvedCredentials,
164
+ headers: resolvedHeaders,
165
+ api: _this2.api
166
+ })) : Promise.resolve(null);
167
+ return preparePromise.then(function (prepared) {
168
+ if (prepared) {
169
+ if (prepared.api) api = prepared.api;
170
+ if (prepared.headers) {
171
+ headers = prepared.headers instanceof Headers ? Object.fromEntries(prepared.headers.entries()) : prepared.headers;
172
+ }
173
+ if (prepared.credentials) credentials = prepared.credentials;
174
+ }
175
+
176
+ // GET request for reconnection
177
+ return fetchFn("".concat(api, "?chatId=").concat(chatId), {
178
+ method: 'GET',
179
+ headers: headers,
180
+ credentials: credentials
181
+ }).then(function (response) {
182
+ if (!response.ok) {
183
+ // 404 means no stream to reconnect to, which is not an error
184
+ if (response.status === 404) {
185
+ return null;
186
+ }
187
+ throw new Error("HTTP error: ".concat(response.status, " ").concat(response.statusText));
188
+ }
189
+ if (!response.body) {
190
+ return null;
191
+ }
192
+ return _this2.processResponseStream(response.body);
193
+ });
194
+ });
195
+ });
196
+ }
197
+ }]);
198
+ return HttpChatTransport;
199
+ }();
200
+ /**
201
+ * Default chat transport implementation using NDJSON streaming.
202
+ */
203
+ var DefaultChatTransport = exports.DefaultChatTransport = /*#__PURE__*/function (_HttpChatTransport) {
204
+ _inherits(DefaultChatTransport, _HttpChatTransport);
205
+ var _super = _createSuper(DefaultChatTransport);
206
+ function DefaultChatTransport() {
207
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
208
+ _classCallCheck(this, DefaultChatTransport);
209
+ return _super.call(this, options);
210
+ }
211
+ _createClass(DefaultChatTransport, [{
212
+ key: "processResponseStream",
213
+ value: function processResponseStream(stream) {
214
+ return (0, _streamParser.parseJsonEventStream)(stream);
215
+ }
216
+ }]);
217
+ return DefaultChatTransport;
218
+ }(HttpChatTransport);
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SerialJobExecutor = void 0;
7
+ exports.generateId = generateId;
8
+ exports.lastAssistantMessageIsCompleteWithToolCalls = lastAssistantMessageIsCompleteWithToolCalls;
9
+ exports.resolveValue = resolveValue;
10
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
11
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
12
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
13
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
14
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
15
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
17
+ function generateId() {
18
+ return Math.random().toString(36).substring(2, 9);
19
+ }
20
+ function isToolOrDynamicToolUIPart(part) {
21
+ if (_typeof(part) !== 'object' || part === null) return false;
22
+ var p = part;
23
+ return typeof p.type === 'string' && (p.type.startsWith('tool-') || p.type === 'dynamic-tool');
24
+ }
25
+ function lastAssistantMessageIsCompleteWithToolCalls(_ref) {
26
+ var messages = _ref.messages;
27
+ if (messages.length === 0) return false;
28
+ var lastMessage = messages[messages.length - 1];
29
+ if (lastMessage.role !== 'assistant') return false;
30
+ if (!lastMessage.parts || lastMessage.parts.length === 0) return false;
31
+ var toolParts = lastMessage.parts.filter(isToolOrDynamicToolUIPart);
32
+ if (toolParts.length === 0) return false;
33
+ return toolParts.every(function (part) {
34
+ return part.state === 'output-available' || part.state === 'output-error';
35
+ });
36
+ }
37
+ var SerialJobExecutor = exports.SerialJobExecutor = /*#__PURE__*/function () {
38
+ function SerialJobExecutor() {
39
+ _classCallCheck(this, SerialJobExecutor);
40
+ _defineProperty(this, "queue", []);
41
+ _defineProperty(this, "isRunning", false);
42
+ }
43
+ _createClass(SerialJobExecutor, [{
44
+ key: "run",
45
+ value: function run(job) {
46
+ var _this = this;
47
+ return new Promise(function (resolve, reject) {
48
+ _this.queue.push(function () {
49
+ return job().then(function (result) {
50
+ resolve(result);
51
+ }, function (error) {
52
+ reject(error);
53
+ });
54
+ });
55
+ _this.processQueue();
56
+ });
57
+ }
58
+ }, {
59
+ key: "processQueue",
60
+ value: function processQueue() {
61
+ var _this2 = this;
62
+ if (this.isRunning) return;
63
+ this.isRunning = true;
64
+ var processNext = function processNext() {
65
+ if (_this2.queue.length === 0) {
66
+ _this2.isRunning = false;
67
+ return;
68
+ }
69
+ var job = _this2.queue.shift();
70
+ if (job) {
71
+ job().then(processNext, processNext);
72
+ }
73
+ };
74
+ processNext();
75
+ }
76
+ }]);
77
+ return SerialJobExecutor;
78
+ }();
79
+ function resolveValue(value) {
80
+ if (value === undefined) return Promise.resolve(undefined);
81
+ if (typeof value === 'function') {
82
+ return Promise.resolve(value());
83
+ }
84
+ return Promise.resolve(value);
85
+ }
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  Object.defineProperty(exports, "AbstractChat", {
7
7
  enumerable: true,
8
8
  get: function get() {
9
- return _ai.AbstractChat;
9
+ return _aiLite.AbstractChat;
10
10
  }
11
11
  });
12
12
  exports.ChatState = exports.Chat = exports.CACHE_KEY = void 0;
13
- var _ai = require("ai");
13
+ var _aiLite = require("../ai-lite");
14
14
  var _excluded = ["messages", "agentId"];
15
15
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
16
16
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -174,4 +174,4 @@ var Chat = exports.Chat = /*#__PURE__*/function (_AbstractChat) {
174
174
  return _this2;
175
175
  }
176
176
  return _createClass(Chat);
177
- }(_ai.AbstractChat);
177
+ }(_aiLite.AbstractChat);
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _default = exports.default = '4.87.0';
7
+ var _default = exports.default = '4.87.1';