@superinterface/react 1.1.7 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,3383 @@
1
+ "use strict";
2
+ function _array_like_to_array(arr, len) {
3
+ if (len == null || len > arr.length) len = arr.length;
4
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
5
+ return arr2;
6
+ }
7
+ function _array_with_holes(arr) {
8
+ if (Array.isArray(arr)) return arr;
9
+ }
10
+ function _array_without_holes(arr) {
11
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
12
+ }
13
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
14
+ try {
15
+ var info = gen[key](arg);
16
+ var value = info.value;
17
+ } catch (error) {
18
+ reject(error);
19
+ return;
20
+ }
21
+ if (info.done) {
22
+ resolve(value);
23
+ } else {
24
+ Promise.resolve(value).then(_next, _throw);
25
+ }
26
+ }
27
+ function _async_to_generator(fn) {
28
+ return function() {
29
+ var self = this, args = arguments;
30
+ return new Promise(function(resolve, reject) {
31
+ var gen = fn.apply(self, args);
32
+ function _next(value) {
33
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
34
+ }
35
+ function _throw(err) {
36
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
37
+ }
38
+ _next(undefined);
39
+ });
40
+ };
41
+ }
42
+ function _define_property(obj, key, value) {
43
+ if (key in obj) {
44
+ Object.defineProperty(obj, key, {
45
+ value: value,
46
+ enumerable: true,
47
+ configurable: true,
48
+ writable: true
49
+ });
50
+ } else {
51
+ obj[key] = value;
52
+ }
53
+ return obj;
54
+ }
55
+ function _iterable_to_array(iter) {
56
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
57
+ }
58
+ function _iterable_to_array_limit(arr, i) {
59
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
60
+ if (_i == null) return;
61
+ var _arr = [];
62
+ var _n = true;
63
+ var _d = false;
64
+ var _s, _e;
65
+ try {
66
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
67
+ _arr.push(_s.value);
68
+ if (i && _arr.length === i) break;
69
+ }
70
+ } catch (err) {
71
+ _d = true;
72
+ _e = err;
73
+ } finally{
74
+ try {
75
+ if (!_n && _i["return"] != null) _i["return"]();
76
+ } finally{
77
+ if (_d) throw _e;
78
+ }
79
+ }
80
+ return _arr;
81
+ }
82
+ function _non_iterable_rest() {
83
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
84
+ }
85
+ function _non_iterable_spread() {
86
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
87
+ }
88
+ function _object_spread(target) {
89
+ for(var i = 1; i < arguments.length; i++){
90
+ var source = arguments[i] != null ? arguments[i] : {};
91
+ var ownKeys = Object.keys(source);
92
+ if (typeof Object.getOwnPropertySymbols === "function") {
93
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
94
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
95
+ }));
96
+ }
97
+ ownKeys.forEach(function(key) {
98
+ _define_property(target, key, source[key]);
99
+ });
100
+ }
101
+ return target;
102
+ }
103
+ function ownKeys(object, enumerableOnly) {
104
+ var keys = Object.keys(object);
105
+ if (Object.getOwnPropertySymbols) {
106
+ var symbols = Object.getOwnPropertySymbols(object);
107
+ if (enumerableOnly) {
108
+ symbols = symbols.filter(function(sym) {
109
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
110
+ });
111
+ }
112
+ keys.push.apply(keys, symbols);
113
+ }
114
+ return keys;
115
+ }
116
+ function _object_spread_props(target, source) {
117
+ source = source != null ? source : {};
118
+ if (Object.getOwnPropertyDescriptors) {
119
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
120
+ } else {
121
+ ownKeys(Object(source)).forEach(function(key) {
122
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
123
+ });
124
+ }
125
+ return target;
126
+ }
127
+ function _object_without_properties(source, excluded) {
128
+ if (source == null) return {};
129
+ var target = _object_without_properties_loose(source, excluded);
130
+ var key, i;
131
+ if (Object.getOwnPropertySymbols) {
132
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
133
+ for(i = 0; i < sourceSymbolKeys.length; i++){
134
+ key = sourceSymbolKeys[i];
135
+ if (excluded.indexOf(key) >= 0) continue;
136
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
137
+ target[key] = source[key];
138
+ }
139
+ }
140
+ return target;
141
+ }
142
+ function _object_without_properties_loose(source, excluded) {
143
+ if (source == null) return {};
144
+ var target = {};
145
+ var sourceKeys = Object.keys(source);
146
+ var key, i;
147
+ for(i = 0; i < sourceKeys.length; i++){
148
+ key = sourceKeys[i];
149
+ if (excluded.indexOf(key) >= 0) continue;
150
+ target[key] = source[key];
151
+ }
152
+ return target;
153
+ }
154
+ function _sliced_to_array(arr, i) {
155
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
156
+ }
157
+ function _to_array(arr) {
158
+ return _array_with_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_rest();
159
+ }
160
+ function _to_consumable_array(arr) {
161
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
162
+ }
163
+ function _unsupported_iterable_to_array(o, minLen) {
164
+ if (!o) return;
165
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
166
+ var n = Object.prototype.toString.call(o).slice(8, -1);
167
+ if (n === "Object" && o.constructor) n = o.constructor.name;
168
+ if (n === "Map" || n === "Set") return Array.from(n);
169
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
170
+ }
171
+ function _ts_generator(thisArg, body) {
172
+ var f, y, t, g, _ = {
173
+ label: 0,
174
+ sent: function() {
175
+ if (t[0] & 1) throw t[1];
176
+ return t[1];
177
+ },
178
+ trys: [],
179
+ ops: []
180
+ };
181
+ return g = {
182
+ next: verb(0),
183
+ "throw": verb(1),
184
+ "return": verb(2)
185
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
186
+ return this;
187
+ }), g;
188
+ function verb(n) {
189
+ return function(v) {
190
+ return step([
191
+ n,
192
+ v
193
+ ]);
194
+ };
195
+ }
196
+ function step(op) {
197
+ if (f) throw new TypeError("Generator is already executing.");
198
+ while(_)try {
199
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
200
+ if (y = 0, t) op = [
201
+ op[0] & 2,
202
+ t.value
203
+ ];
204
+ switch(op[0]){
205
+ case 0:
206
+ case 1:
207
+ t = op;
208
+ break;
209
+ case 4:
210
+ _.label++;
211
+ return {
212
+ value: op[1],
213
+ done: false
214
+ };
215
+ case 5:
216
+ _.label++;
217
+ y = op[1];
218
+ op = [
219
+ 0
220
+ ];
221
+ continue;
222
+ case 7:
223
+ op = _.ops.pop();
224
+ _.trys.pop();
225
+ continue;
226
+ default:
227
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
228
+ _ = 0;
229
+ continue;
230
+ }
231
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
232
+ _.label = op[1];
233
+ break;
234
+ }
235
+ if (op[0] === 6 && _.label < t[1]) {
236
+ _.label = t[1];
237
+ t = op;
238
+ break;
239
+ }
240
+ if (t && _.label < t[2]) {
241
+ _.label = t[2];
242
+ _.ops.push(op);
243
+ break;
244
+ }
245
+ if (t[2]) _.ops.pop();
246
+ _.trys.pop();
247
+ continue;
248
+ }
249
+ op = body.call(thisArg, _);
250
+ } catch (e) {
251
+ op = [
252
+ 6,
253
+ e
254
+ ];
255
+ y = 0;
256
+ } finally{
257
+ f = t = 0;
258
+ }
259
+ if (op[0] & 5) throw op[1];
260
+ return {
261
+ value: op[0] ? op[1] : void 0,
262
+ done: true
263
+ };
264
+ }
265
+ }
266
+ var _import_lodash2_default;
267
+ var _this;
268
+ var __create = Object.create;
269
+ var __defProp = Object.defineProperty;
270
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
271
+ var __getOwnPropNames = Object.getOwnPropertyNames;
272
+ var __getProtoOf = Object.getPrototypeOf;
273
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
274
+ var __export = function(target, all) {
275
+ for(var name in all)__defProp(target, name, {
276
+ get: all[name],
277
+ enumerable: true
278
+ });
279
+ };
280
+ var __copyProps = function(to, from, except, desc) {
281
+ if (from && typeof from === "object" || typeof from === "function") {
282
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
283
+ try {
284
+ var _loop = function() {
285
+ var key = _step.value;
286
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
287
+ get: function() {
288
+ return from[key];
289
+ },
290
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
291
+ });
292
+ };
293
+ for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
294
+ } catch (err) {
295
+ _didIteratorError = true;
296
+ _iteratorError = err;
297
+ } finally{
298
+ try {
299
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
300
+ _iterator.return();
301
+ }
302
+ } finally{
303
+ if (_didIteratorError) {
304
+ throw _iteratorError;
305
+ }
306
+ }
307
+ }
308
+ }
309
+ return to;
310
+ };
311
+ var __toESM = function(mod, isNodeMode, target) {
312
+ return target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(// If the importer is in node compatibility mode or this is not an ESM
313
+ // file that has been converted to a CommonJS file using a Babel-
314
+ // compatible transform (i.e. "__esModule" has not been set), then set
315
+ // "default" to the CommonJS "module.exports" for node compatibility.
316
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
317
+ value: mod,
318
+ enumerable: true
319
+ }) : target, mod);
320
+ };
321
+ var __toCommonJS = function(mod) {
322
+ return __copyProps(__defProp({}, "__esModule", {
323
+ value: true
324
+ }), mod);
325
+ };
326
+ // src/index.ts
327
+ var src_exports = {};
328
+ __export(src_exports, {
329
+ AssistantAvatarContext: function() {
330
+ return AssistantAvatarContext;
331
+ },
332
+ AssistantNameContext: function() {
333
+ return AssistantNameContext;
334
+ },
335
+ AudioThread: function() {
336
+ return AudioThread;
337
+ },
338
+ AudioThreadDialog: function() {
339
+ return AudioThreadDialog;
340
+ },
341
+ FunctionBase: function() {
342
+ return FunctionBase;
343
+ },
344
+ FunctionComponentsContext: function() {
345
+ return FunctionComponentsContext;
346
+ },
347
+ MarkdownContext: function() {
348
+ return MarkdownContext;
349
+ },
350
+ Suggestion: function() {
351
+ return Suggestion;
352
+ },
353
+ Suggestions: function() {
354
+ return Suggestions;
355
+ },
356
+ SuperinterfaceProvider: function() {
357
+ return SuperinterfaceProvider;
358
+ },
359
+ Thread: function() {
360
+ return Thread;
361
+ },
362
+ ThreadDialog: function() {
363
+ return ThreadDialog;
364
+ },
365
+ ThreadMessageForm: function() {
366
+ return ThreadMessageForm;
367
+ },
368
+ ThreadMessages: function() {
369
+ return ThreadMessages;
370
+ },
371
+ ThreadProvider: function() {
372
+ return SuperinterfaceProvider;
373
+ },
374
+ useCreateRun: function() {
375
+ return useCreateRun;
376
+ },
377
+ useCreateThreadMessage: function() {
378
+ return useCreateThreadMessage;
379
+ },
380
+ useIsRunActive: function() {
381
+ return useIsRunActive;
382
+ },
383
+ useLatestRun: function() {
384
+ return useLatestRun;
385
+ },
386
+ useLatestThreadMessage: function() {
387
+ return useLatestThreadMessage;
388
+ },
389
+ useMarkdownContext: function() {
390
+ return useMarkdownContext;
391
+ },
392
+ useRuns: function() {
393
+ return useRuns;
394
+ },
395
+ useSuperinterfaceContext: function() {
396
+ return useSuperinterfaceContext;
397
+ },
398
+ useThreadContext: function() {
399
+ return useSuperinterfaceContext;
400
+ },
401
+ useThreadLifecycles: function() {
402
+ return useThreadLifecycles;
403
+ },
404
+ useThreadMessages: function() {
405
+ return useThreadMessages;
406
+ }
407
+ });
408
+ module.exports = __toCommonJS(src_exports);
409
+ // src/lib/misc/merge/index.ts
410
+ var import_lodash2 = __toESM(require("lodash"), 1);
411
+ // src/lib/misc/merge/customizer.ts
412
+ var import_lodash = __toESM(require("lodash"), 1);
413
+ var customizer = function(objectValue, srcValue) {
414
+ if (!import_lodash.default.isArray(objectValue)) return;
415
+ return srcValue;
416
+ };
417
+ // src/lib/misc/merge/index.ts
418
+ var merge = function(obj) {
419
+ for(var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
420
+ sources[_key - 1] = arguments[_key];
421
+ }
422
+ return (_import_lodash2_default = import_lodash2.default).mergeWith.apply(_import_lodash2_default, [
423
+ import_lodash2.default.cloneDeep(obj)
424
+ ].concat(_to_consumable_array(sources), [
425
+ customizer
426
+ ]));
427
+ };
428
+ // src/contexts/core/SuperinterfaceContext/index.tsx
429
+ var import_react = require("react");
430
+ var SuperinterfaceContext = (0, import_react.createContext)({
431
+ baseUrl: "http://localhost:3000/api/cloud",
432
+ variables: {},
433
+ defaultOptions: {
434
+ queries: {},
435
+ mutations: {}
436
+ }
437
+ });
438
+ // src/hooks/core/useSuperinterfaceContext/index.ts
439
+ var import_react2 = require("react");
440
+ var useSuperinterfaceContext = function() {
441
+ return (0, import_react2.useContext)(SuperinterfaceContext);
442
+ };
443
+ // src/components/core/SuperinterfaceProvider/index.tsx
444
+ var import_jsx_runtime = require("react/jsx-runtime");
445
+ var SuperinterfaceProvider = function(param) {
446
+ var children = param.children, baseUrl = param.baseUrl, publicApiKey = param.publicApiKey, variables = param.variables, defaultOptions = param.defaultOptions;
447
+ var superinterfaceContext = useSuperinterfaceContext();
448
+ var value = merge(superinterfaceContext, _object_spread({}, baseUrl ? {
449
+ baseUrl: baseUrl
450
+ } : {}, publicApiKey ? {
451
+ publicApiKey: publicApiKey
452
+ } : {}, variables ? {
453
+ variables: variables
454
+ } : {}, defaultOptions ? {
455
+ defaultOptions: defaultOptions
456
+ } : {}));
457
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SuperinterfaceContext.Provider, {
458
+ value: value,
459
+ children: children
460
+ });
461
+ };
462
+ // src/components/threads/Thread/index.tsx
463
+ var import_themes31 = require("@radix-ui/themes");
464
+ // src/components/threadMessages/ThreadMessages/index.tsx
465
+ var import_themes28 = require("@radix-ui/themes");
466
+ // src/hooks/misc/useInfiniteScroll/index.tsx
467
+ var import_react4 = require("react");
468
+ var import_react_intersection_observer = require("react-intersection-observer");
469
+ // src/hooks/misc/useThrottledEffect/index.tsx
470
+ var import_lodash3 = __toESM(require("lodash"), 1);
471
+ var import_react3 = require("react");
472
+ var useThrottledEffect = function(cb, delay, additionalDeps) {
473
+ var _cbRef;
474
+ var cbRef = (0, import_react3.useRef)(cb);
475
+ var throttledCb = (0, import_react3.useCallback)(import_lodash3.default.throttle(function() {
476
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
477
+ args[_key] = arguments[_key];
478
+ }
479
+ return (_cbRef = cbRef).current.apply(_cbRef, _to_consumable_array(args));
480
+ }, delay, {
481
+ leading: true,
482
+ trailing: true
483
+ }), [
484
+ delay
485
+ ]);
486
+ (0, import_react3.useEffect)(function() {
487
+ cbRef.current = cb;
488
+ });
489
+ (0, import_react3.useEffect)(throttledCb, [
490
+ throttledCb
491
+ ].concat(_to_consumable_array(additionalDeps)));
492
+ };
493
+ // src/hooks/misc/useInfiniteScroll/index.tsx
494
+ var useInfiniteScroll = function(param) {
495
+ var isFetchingNextPage = param.isFetchingNextPage, hasNextPage = param.hasNextPage, fetchNextPage = param.fetchNextPage;
496
+ var containerRef = (0, import_react4.useRef)(null);
497
+ var _ref = (0, import_react_intersection_observer.useInView)({
498
+ root: containerRef.current,
499
+ rootMargin: "0px",
500
+ threshold: 0.1
501
+ }), loaderRef = _ref.ref, inView = _ref.inView;
502
+ useThrottledEffect(function() {
503
+ if (isFetchingNextPage) return;
504
+ if (!inView) return;
505
+ if (!hasNextPage) return;
506
+ console.log("Fetching next page");
507
+ fetchNextPage();
508
+ }, 500, [
509
+ inView,
510
+ isFetchingNextPage,
511
+ hasNextPage,
512
+ fetchNextPage
513
+ ]);
514
+ return {
515
+ containerRef: containerRef,
516
+ loaderRef: loaderRef,
517
+ inView: inView
518
+ };
519
+ };
520
+ // src/components/skeletons/ThreadMessagesSkeleton/index.tsx
521
+ var import_react6 = require("react");
522
+ var import_themes4 = require("@radix-ui/themes");
523
+ // src/components/skeletons/Skeleton/index.tsx
524
+ var import_themes = require("@radix-ui/themes");
525
+ var import_jsx_runtime2 = // @ts-ignore-next-line
526
+ require("react/jsx-runtime");
527
+ var Skeleton = function(_param) {
528
+ var height = _param.height, style = _param.style, rest = _object_without_properties(_param, [
529
+ "height",
530
+ "style"
531
+ ]);
532
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_themes.Flex, _object_spread({
533
+ style: _object_spread({
534
+ animation: "pulse 2s cubic-bezier(.4,0,.6,1) infinite",
535
+ borderRadius: "var(--radius-3)",
536
+ backgroundColor: "var(--gray-5)",
537
+ height: "var(--space-".concat(height, ")")
538
+ }, style)
539
+ }, rest));
540
+ };
541
+ // src/components/threadMessageGroups/ThreadMessagesGroupBase/index.tsx
542
+ var import_react5 = require("react");
543
+ var import_themes2 = require("@radix-ui/themes");
544
+ var import_jsx_runtime3 = require("react/jsx-runtime");
545
+ var ThreadMessagesGroupBase = (0, import_react5.forwardRef)(function ThreadMessagesGroupBase2(param, ref) {
546
+ var children = param.children;
547
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_themes2.Container, {
548
+ ref: ref,
549
+ size: "2",
550
+ grow: "0",
551
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_themes2.Flex, {
552
+ shrink: "0",
553
+ gap: "3",
554
+ children: children
555
+ })
556
+ });
557
+ });
558
+ // src/components/threadMessageGroups/ThreadMessagesGroupBase/Name.tsx
559
+ var import_themes3 = require("@radix-ui/themes");
560
+ var import_jsx_runtime4 = require("react/jsx-runtime");
561
+ var Name = function(param) {
562
+ var children = param.children;
563
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_themes3.Flex, {
564
+ align: "center",
565
+ style: {
566
+ height: "var(--space-5)"
567
+ },
568
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_themes3.Text, {
569
+ size: "2",
570
+ weight: "bold",
571
+ children: children
572
+ })
573
+ });
574
+ };
575
+ // src/components/skeletons/ThreadMessagesSkeleton/index.tsx
576
+ var import_jsx_runtime5 = require("react/jsx-runtime");
577
+ var ThreadMessagesSkeleton = (0, import_react6.forwardRef)(function ThreadMessagesSkeleton2(_props, ref) {
578
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(ThreadMessagesGroupBase, {
579
+ ref: ref,
580
+ children: [
581
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_themes4.Avatar, {
582
+ fallback: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_themes4.Flex, {}),
583
+ size: "1",
584
+ style: {
585
+ animation: "pulse 2s cubic-bezier(.4,0,.6,1) infinite"
586
+ }
587
+ }),
588
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_themes4.Box, {
589
+ pb: "3",
590
+ children: [
591
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Name, {
592
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
593
+ height: "1",
594
+ style: {
595
+ width: "128px"
596
+ }
597
+ })
598
+ }),
599
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
600
+ height: "2",
601
+ style: {
602
+ width: "256px"
603
+ }
604
+ }),
605
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
606
+ height: "2",
607
+ style: {
608
+ width: "256px",
609
+ marginTop: "var(--space-2)"
610
+ }
611
+ }),
612
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
613
+ height: "2",
614
+ style: {
615
+ width: "256px",
616
+ marginTop: "var(--space-2)"
617
+ }
618
+ })
619
+ ]
620
+ })
621
+ ]
622
+ });
623
+ });
624
+ // src/hooks/threadMessages/useThreadMessages/index.tsx
625
+ var import_react7 = require("react");
626
+ var import_react_query2 = require("@tanstack/react-query");
627
+ // src/lib/threads/queryOptions/index.ts
628
+ var import_react_query = require("@tanstack/react-query");
629
+ var queryOptions = function(param) {
630
+ var queryKeyBase = param.queryKeyBase, path = param.path, queryClient = param.queryClient, threadContext = param.threadContext, superinterfaceContext = param.superinterfaceContext;
631
+ var queryKey = _to_consumable_array(queryKeyBase).concat([
632
+ threadContext.variables
633
+ ]);
634
+ return (0, import_react_query.infiniteQueryOptions)(_object_spread(_object_spread_props(_object_spread({
635
+ // @ts-ignore-next-line
636
+ queryFn: function() {
637
+ var _ref = _async_to_generator(function(param) {
638
+ var pageParam, queryKey2, _queryKey2, _key, variables, params;
639
+ return _ts_generator(this, function(_state) {
640
+ pageParam = param.pageParam, queryKey2 = param.queryKey;
641
+ _queryKey2 = _sliced_to_array(queryKey2, 2), _key = _queryKey2[0], variables = _queryKey2[1];
642
+ params = new URLSearchParams(_object_spread({}, pageParam ? {
643
+ pageParam: pageParam
644
+ } : {}, variables));
645
+ return [
646
+ 2,
647
+ fetch("".concat(superinterfaceContext.baseUrl).concat(path, "?").concat(params), {
648
+ credentials: "include"
649
+ }).then(function() {
650
+ var _ref = _async_to_generator(function(response) {
651
+ var errorResponse, error;
652
+ return _ts_generator(this, function(_state) {
653
+ switch(_state.label){
654
+ case 0:
655
+ if (!(response.status !== 200)) return [
656
+ 3,
657
+ 4
658
+ ];
659
+ _state.label = 1;
660
+ case 1:
661
+ _state.trys.push([
662
+ 1,
663
+ 3,
664
+ ,
665
+ 4
666
+ ]);
667
+ return [
668
+ 4,
669
+ response.json()
670
+ ];
671
+ case 2:
672
+ errorResponse = _state.sent();
673
+ throw new Error(errorResponse.error);
674
+ case 3:
675
+ error = _state.sent();
676
+ throw new Error("Failed to fetch");
677
+ case 4:
678
+ return [
679
+ 2,
680
+ response.json()
681
+ ];
682
+ }
683
+ });
684
+ });
685
+ return function(response) {
686
+ return _ref.apply(this, arguments);
687
+ };
688
+ }())
689
+ ];
690
+ });
691
+ });
692
+ return function(_) {
693
+ return _ref.apply(this, arguments);
694
+ };
695
+ }(),
696
+ initialPageParam: void 0,
697
+ getNextPageParam: function(lastPage) {
698
+ if (!lastPage.hasNextPage) return null;
699
+ return lastPage.lastId;
700
+ },
701
+ limit: 10
702
+ }, queryClient.getQueryDefaults(queryKey)), {
703
+ queryKey: queryKey
704
+ }), threadContext.defaultOptions.queries));
705
+ };
706
+ // src/hooks/threadMessages/useThreadMessages/index.tsx
707
+ var threadMessages = function(param) {
708
+ var props = param.props;
709
+ if (!props.data) return [];
710
+ return props.data.pages.reduce(function(acc, page) {
711
+ return acc.concat(page.data);
712
+ }, []);
713
+ };
714
+ var useThreadMessages = function() {
715
+ var queryClient = (0, import_react_query2.useQueryClient)();
716
+ var threadContext = useSuperinterfaceContext();
717
+ var superinterfaceContext = useSuperinterfaceContext();
718
+ var props = (0, import_react_query2.useInfiniteQuery)(queryOptions({
719
+ queryKeyBase: [
720
+ "threadMessages"
721
+ ],
722
+ path: "/thread-messages",
723
+ queryClient: queryClient,
724
+ threadContext: threadContext,
725
+ superinterfaceContext: superinterfaceContext
726
+ }));
727
+ return (0, import_react7.useMemo)(function() {
728
+ return _object_spread_props(_object_spread({}, props), {
729
+ // @ts-ignore-next-line
730
+ threadMessages: threadMessages({
731
+ props: props
732
+ })
733
+ });
734
+ }, [
735
+ props
736
+ ]);
737
+ };
738
+ // src/hooks/runs/useManageRuns/index.tsx
739
+ var import_react_query5 = require("@tanstack/react-query");
740
+ var import_react11 = require("react");
741
+ // src/hooks/threadMessages/useLatestThreadMessage/index.ts
742
+ var import_react8 = require("react");
743
+ var useLatestThreadMessage = function() {
744
+ var props = useThreadMessages();
745
+ return (0, import_react8.useMemo)(function() {
746
+ return _object_spread_props(_object_spread({}, props), {
747
+ latestThreadMessage: props.threadMessages[0] || null
748
+ });
749
+ }, [
750
+ props
751
+ ]);
752
+ };
753
+ // src/hooks/runs/useLatestRun/index.ts
754
+ var import_react10 = require("react");
755
+ // src/hooks/runs/useRuns/index.tsx
756
+ var import_react9 = require("react");
757
+ var import_react_query3 = require("@tanstack/react-query");
758
+ // src/hooks/runs/useRuns/lib/getRuns.ts
759
+ var getRuns = function(param) {
760
+ var data3 = param.data;
761
+ if (!data3) return [];
762
+ return data3.pages.reduce(function(acc, page) {
763
+ return acc.concat(page.data);
764
+ }, []);
765
+ };
766
+ // src/hooks/runs/useRuns/index.tsx
767
+ var useRuns = function() {
768
+ var queryClient = (0, import_react_query3.useQueryClient)();
769
+ var superinterfaceContext = useSuperinterfaceContext();
770
+ var threadContext = useSuperinterfaceContext();
771
+ var props = (0, import_react_query3.useInfiniteQuery)(queryOptions({
772
+ queryKeyBase: [
773
+ "runs"
774
+ ],
775
+ path: "/runs",
776
+ queryClient: queryClient,
777
+ threadContext: threadContext,
778
+ superinterfaceContext: superinterfaceContext
779
+ }));
780
+ return (0, import_react9.useMemo)(function() {
781
+ return _object_spread_props(_object_spread({}, props), {
782
+ // @ts-ignore-next-line
783
+ runs: getRuns({
784
+ data: props.data
785
+ })
786
+ });
787
+ }, [
788
+ props
789
+ ]);
790
+ };
791
+ // src/hooks/runs/useLatestRun/index.ts
792
+ var useLatestRun = function() {
793
+ var props = useRuns();
794
+ return (0, import_react10.useMemo)(function() {
795
+ return _object_spread_props(_object_spread({}, props), {
796
+ latestRun: props.runs[0]
797
+ });
798
+ }, [
799
+ props
800
+ ]);
801
+ };
802
+ // src/hooks/runs/useCreateRun/index.ts
803
+ var import_radash2 = require("radash");
804
+ var import_react_query4 = require("@tanstack/react-query");
805
+ // src/lib/threads/mutationOptions/index.ts
806
+ var mutationOptions = function(param) {
807
+ var mutationKeyBase = param.mutationKeyBase, path = param.path, queryClient = param.queryClient, threadContext = param.threadContext, superinterfaceContext = param.superinterfaceContext;
808
+ var mutationKey = _to_consumable_array(mutationKeyBase).concat([
809
+ threadContext.variables
810
+ ]);
811
+ return _object_spread(_object_spread_props(_object_spread({
812
+ mutationFn: function(variables) {
813
+ return fetch("".concat(superinterfaceContext.baseUrl).concat(path), {
814
+ method: "POST",
815
+ body: JSON.stringify(variables),
816
+ credentials: "include"
817
+ }).then(function() {
818
+ var _ref = _async_to_generator(function(response) {
819
+ var errorResponse, error;
820
+ return _ts_generator(this, function(_state) {
821
+ switch(_state.label){
822
+ case 0:
823
+ if (!(response.status !== 200)) return [
824
+ 3,
825
+ 4
826
+ ];
827
+ _state.label = 1;
828
+ case 1:
829
+ _state.trys.push([
830
+ 1,
831
+ 3,
832
+ ,
833
+ 4
834
+ ]);
835
+ return [
836
+ 4,
837
+ response.json()
838
+ ];
839
+ case 2:
840
+ errorResponse = _state.sent();
841
+ throw new Error(errorResponse.error);
842
+ case 3:
843
+ error = _state.sent();
844
+ throw new Error("Failed to fetch");
845
+ case 4:
846
+ return [
847
+ 2,
848
+ response.json()
849
+ ];
850
+ }
851
+ });
852
+ });
853
+ return function(response) {
854
+ return _ref.apply(this, arguments);
855
+ };
856
+ }());
857
+ }
858
+ }, queryClient.getMutationDefaults(mutationKey)), {
859
+ mutationKey: mutationKey
860
+ }), threadContext.defaultOptions.mutations);
861
+ };
862
+ // src/hooks/runs/useCreateRun/lib/onSuccess.ts
863
+ var onSuccess = function(param) {
864
+ var queryClient = param.queryClient;
865
+ return function() {
866
+ var _ref = _async_to_generator(function(data3, variables) {
867
+ return _ts_generator(this, function(_state) {
868
+ return [
869
+ 2,
870
+ queryClient.setQueryData([
871
+ "runs",
872
+ variables
873
+ ], function(prevData) {
874
+ if (!prevData) {
875
+ return {
876
+ pageParams: [],
877
+ pages: [
878
+ {
879
+ data: [
880
+ data3.run
881
+ ],
882
+ hasNextPage: false,
883
+ lastId: data3.run.id
884
+ }
885
+ ]
886
+ };
887
+ }
888
+ var _prevData_pages = _to_array(prevData.pages), latestPage = _prevData_pages[0], pagesRest = _prevData_pages.slice(1);
889
+ return _object_spread_props(_object_spread({}, prevData), {
890
+ pages: [
891
+ _object_spread_props(_object_spread({}, latestPage), {
892
+ data: [
893
+ data3.run
894
+ ].concat(_to_consumable_array(latestPage.data))
895
+ })
896
+ ].concat(_to_consumable_array(pagesRest))
897
+ });
898
+ })
899
+ ];
900
+ });
901
+ });
902
+ return function(data3, variables) {
903
+ return _ref.apply(this, arguments);
904
+ };
905
+ }();
906
+ };
907
+ // src/hooks/runs/useCreateRun/lib/onSettled.ts
908
+ var onSettled = function(param) {
909
+ var queryClient = param.queryClient;
910
+ return function() {
911
+ var _ref = _async_to_generator(function(_data, _error, variables) {
912
+ return _ts_generator(this, function(_state) {
913
+ switch(_state.label){
914
+ case 0:
915
+ return [
916
+ 4,
917
+ queryClient.invalidateQueries({
918
+ queryKey: [
919
+ "threadMessages",
920
+ variables
921
+ ]
922
+ })
923
+ ];
924
+ case 1:
925
+ _state.sent();
926
+ return [
927
+ 4,
928
+ queryClient.invalidateQueries({
929
+ queryKey: [
930
+ "runs",
931
+ variables
932
+ ]
933
+ })
934
+ ];
935
+ case 2:
936
+ _state.sent();
937
+ return [
938
+ 2
939
+ ];
940
+ }
941
+ });
942
+ });
943
+ return function(_data, _error, variables) {
944
+ return _ref.apply(this, arguments);
945
+ };
946
+ }();
947
+ };
948
+ // src/lib/optimistic/optimisticId.ts
949
+ var import_radash = require("radash");
950
+ var optimisticId = function() {
951
+ return "-".concat((0, import_radash.uid)(24));
952
+ };
953
+ // src/hooks/runs/useCreateRun/lib/onMutate/data.ts
954
+ var data = function(prevData) {
955
+ var run = {
956
+ id: optimisticId(),
957
+ object: "thread.run",
958
+ created_at: +/* @__PURE__ */ new Date(),
959
+ assistant_id: null,
960
+ thread_id: null,
961
+ status: "in_progress",
962
+ expires_at: +/* @__PURE__ */ new Date() + 1e3 * 60 * 60 * 24,
963
+ cancelled_at: null,
964
+ failed_at: null,
965
+ completed_at: null,
966
+ required_action: null,
967
+ last_error: null,
968
+ model: null,
969
+ instructions: null,
970
+ tools: [],
971
+ file_ids: [],
972
+ metadata: {},
973
+ usage: null
974
+ };
975
+ if (!prevData) {
976
+ return {
977
+ pageParams: [],
978
+ pages: [
979
+ {
980
+ data: [
981
+ run
982
+ ],
983
+ hasNextPage: false,
984
+ lastId: run.id
985
+ }
986
+ ]
987
+ };
988
+ }
989
+ var _prevData_pages = _to_array(prevData.pages), latestPage = _prevData_pages[0], pagesRest = _prevData_pages.slice(1);
990
+ return _object_spread_props(_object_spread({}, prevData), {
991
+ pages: [
992
+ _object_spread_props(_object_spread({}, latestPage), {
993
+ data: [
994
+ run
995
+ ].concat(_to_consumable_array(latestPage.data))
996
+ })
997
+ ].concat(_to_consumable_array(pagesRest))
998
+ });
999
+ };
1000
+ // src/hooks/runs/useCreateRun/lib/onMutate/index.ts
1001
+ var onMutate = function(param) {
1002
+ var queryClient = param.queryClient;
1003
+ return function() {
1004
+ var _ref = _async_to_generator(function(variables) {
1005
+ var queryKey, prevRuns;
1006
+ return _ts_generator(this, function(_state) {
1007
+ switch(_state.label){
1008
+ case 0:
1009
+ queryKey = [
1010
+ "runs",
1011
+ variables
1012
+ ];
1013
+ return [
1014
+ 4,
1015
+ queryClient.cancelQueries({
1016
+ queryKey: queryKey
1017
+ })
1018
+ ];
1019
+ case 1:
1020
+ _state.sent();
1021
+ prevRuns = queryClient.getQueryData(queryKey);
1022
+ queryClient.setQueryData(queryKey, data);
1023
+ return [
1024
+ 2,
1025
+ {
1026
+ prevRuns: prevRuns,
1027
+ variables: variables
1028
+ }
1029
+ ];
1030
+ }
1031
+ });
1032
+ });
1033
+ return function(variables) {
1034
+ return _ref.apply(this, arguments);
1035
+ };
1036
+ }();
1037
+ };
1038
+ // src/hooks/runs/useCreateRun/index.ts
1039
+ var useCreateRun = function() {
1040
+ var queryClient = (0, import_react_query4.useQueryClient)();
1041
+ var superinterfaceContext = useSuperinterfaceContext();
1042
+ var threadContext = useSuperinterfaceContext();
1043
+ var props = (0, import_react_query4.useMutation)(_object_spread({
1044
+ onSuccess: onSuccess({
1045
+ queryClient: queryClient
1046
+ }),
1047
+ onSettled: onSettled({
1048
+ queryClient: queryClient
1049
+ }),
1050
+ onMutate: onMutate({
1051
+ queryClient: queryClient
1052
+ })
1053
+ }, mutationOptions({
1054
+ mutationKeyBase: [
1055
+ "createRun"
1056
+ ],
1057
+ path: "/runs",
1058
+ queryClient: queryClient,
1059
+ threadContext: threadContext,
1060
+ superinterfaceContext: superinterfaceContext
1061
+ })));
1062
+ return _object_spread_props(_object_spread({}, props), {
1063
+ createRun: (0, import_radash2.partob)(props.mutate, threadContext.variables)
1064
+ });
1065
+ };
1066
+ // src/lib/optimistic/isOptimistic.ts
1067
+ var import_lodash4 = __toESM(require("lodash"), 1);
1068
+ var isOptimistic = function(param) {
1069
+ var id = param.id;
1070
+ return import_lodash4.default.startsWith(id, "-");
1071
+ };
1072
+ // src/hooks/runs/useManageRuns/index.tsx
1073
+ var useManageRuns = function() {
1074
+ var queryClient = (0, import_react_query5.useQueryClient)();
1075
+ var latestRunProps = useLatestRun();
1076
+ var latestThreadMessageProps = useLatestThreadMessage();
1077
+ var createRunProps = useCreateRun();
1078
+ var threadContext = useSuperinterfaceContext();
1079
+ (0, import_react11.useEffect)(function() {
1080
+ if (createRunProps.isPending) return;
1081
+ if (latestRunProps.isFetching) return;
1082
+ if (latestThreadMessageProps.isFetching) return;
1083
+ if (!latestThreadMessageProps.latestThreadMessage) return;
1084
+ if (latestThreadMessageProps.latestThreadMessage.role !== "user") return;
1085
+ if (isOptimistic({
1086
+ id: latestThreadMessageProps.latestThreadMessage.id
1087
+ })) return;
1088
+ if (latestRunProps.latestRun && latestRunProps.latestRun.created_at > latestThreadMessageProps.latestThreadMessage.created_at) {
1089
+ return;
1090
+ }
1091
+ var isMutating = queryClient.isMutating({
1092
+ mutationKey: [
1093
+ "createRun",
1094
+ threadContext.variables
1095
+ ]
1096
+ });
1097
+ if (isMutating) return;
1098
+ createRunProps.createRun();
1099
+ }, [
1100
+ threadContext,
1101
+ queryClient,
1102
+ createRunProps,
1103
+ latestRunProps,
1104
+ latestThreadMessageProps
1105
+ ]);
1106
+ return null;
1107
+ };
1108
+ // src/hooks/runs/usePolling/index.tsx
1109
+ var import_react_query7 = require("@tanstack/react-query");
1110
+ var import_react_use = require("react-use");
1111
+ // src/hooks/runs/useIsRunActive/index.tsx
1112
+ var import_react12 = require("react");
1113
+ var import_react_query6 = require("@tanstack/react-query");
1114
+ // src/lib/runs/isRunEditingThreadMessage/index.ts
1115
+ var import_lodash5 = __toESM(require("lodash"), 1);
1116
+ var isRunEditingThreadMessage = function(param) {
1117
+ var threadMessage = param.threadMessage;
1118
+ if (!threadMessage) return false;
1119
+ if (threadMessage.role === "user") return false;
1120
+ if (!threadMessage.run_id) return false;
1121
+ var hasContent = import_lodash5.default.some(threadMessage.content, function(content) {
1122
+ var _content_text;
1123
+ return content.type !== "text" || content.type === "text" && ((_content_text = content.text) === null || _content_text === void 0 ? void 0 : _content_text.value) !== "";
1124
+ });
1125
+ return !hasContent;
1126
+ };
1127
+ // src/hooks/runs/useIsRunActive/index.tsx
1128
+ var progressStatuses = [
1129
+ "queued",
1130
+ "in_progress",
1131
+ "cancelling",
1132
+ "requires_action"
1133
+ ];
1134
+ var stoppedStatuses = [
1135
+ "expired",
1136
+ "cancelled",
1137
+ "failed"
1138
+ ];
1139
+ var isRunActive = function(param) {
1140
+ var latestRunProps = param.latestRunProps, latestThreadMessageProps = param.latestThreadMessageProps, isMutating = param.isMutating;
1141
+ var _latestThreadMessageProps_latestThreadMessage_metadata, _latestThreadMessageProps_latestThreadMessage;
1142
+ if ((_latestThreadMessageProps_latestThreadMessage = latestThreadMessageProps.latestThreadMessage) === null || _latestThreadMessageProps_latestThreadMessage === void 0 ? void 0 : (_latestThreadMessageProps_latestThreadMessage_metadata = _latestThreadMessageProps_latestThreadMessage.metadata) === null || _latestThreadMessageProps_latestThreadMessage_metadata === void 0 ? void 0 : _latestThreadMessageProps_latestThreadMessage_metadata.isBlocking) return false;
1143
+ if (isMutating) return true;
1144
+ if (!latestRunProps.latestRun) return false;
1145
+ if (progressStatuses.includes(latestRunProps.latestRun.status)) return true;
1146
+ if (stoppedStatuses.includes(latestRunProps.latestRun.status)) return false;
1147
+ return isRunEditingThreadMessage({
1148
+ threadMessage: latestThreadMessageProps.latestThreadMessage
1149
+ });
1150
+ };
1151
+ var useIsRunActive = function() {
1152
+ var latestRunProps = useLatestRun();
1153
+ var latestThreadMessageProps = useLatestThreadMessage();
1154
+ var threadContext = useSuperinterfaceContext();
1155
+ var isMutatingCreateRun = (0, import_react_query6.useIsMutating)({
1156
+ mutationKey: [
1157
+ "createRun",
1158
+ threadContext.variables
1159
+ ]
1160
+ });
1161
+ var isMutatingCreateThreadMessage = (0, import_react_query6.useIsMutating)({
1162
+ mutationKey: [
1163
+ "createThreadMessage",
1164
+ threadContext.variables
1165
+ ]
1166
+ });
1167
+ var isMutatingCreateHandleAction = (0, import_react_query6.useIsMutating)({
1168
+ mutationKey: [
1169
+ "handleAction",
1170
+ threadContext.variables
1171
+ ]
1172
+ });
1173
+ return (0, import_react12.useMemo)(function() {
1174
+ return _object_spread_props(_object_spread({}, latestRunProps), {
1175
+ isRunActive: isRunActive({
1176
+ latestRunProps: latestRunProps,
1177
+ latestThreadMessageProps: latestThreadMessageProps,
1178
+ isMutating: isMutatingCreateRun > 0 || isMutatingCreateThreadMessage > 0 || isMutatingCreateHandleAction > 0
1179
+ })
1180
+ });
1181
+ }, [
1182
+ latestRunProps,
1183
+ latestThreadMessageProps,
1184
+ isMutatingCreateRun,
1185
+ isMutatingCreateThreadMessage,
1186
+ isMutatingCreateHandleAction
1187
+ ]);
1188
+ };
1189
+ // src/hooks/runs/usePolling/lib/refetch.ts
1190
+ var refetch = function() {
1191
+ var _ref = _async_to_generator(function(param) {
1192
+ var queryClient, threadContext, _threadContext_defaultOptions_queries_queryKey, _threadContext_defaultOptions_queries_queryKey1;
1193
+ return _ts_generator(this, function(_state) {
1194
+ switch(_state.label){
1195
+ case 0:
1196
+ queryClient = param.queryClient, threadContext = param.threadContext;
1197
+ return [
1198
+ 4,
1199
+ queryClient.invalidateQueries({
1200
+ queryKey: (_threadContext_defaultOptions_queries_queryKey = threadContext.defaultOptions.queries.queryKey) !== null && _threadContext_defaultOptions_queries_queryKey !== void 0 ? _threadContext_defaultOptions_queries_queryKey : [
1201
+ "threadMessages",
1202
+ threadContext.variables
1203
+ ]
1204
+ })
1205
+ ];
1206
+ case 1:
1207
+ _state.sent();
1208
+ return [
1209
+ 4,
1210
+ queryClient.invalidateQueries({
1211
+ queryKey: (_threadContext_defaultOptions_queries_queryKey1 = threadContext.defaultOptions.queries.queryKey) !== null && _threadContext_defaultOptions_queries_queryKey1 !== void 0 ? _threadContext_defaultOptions_queries_queryKey1 : [
1212
+ "runs",
1213
+ threadContext.variables
1214
+ ]
1215
+ })
1216
+ ];
1217
+ case 2:
1218
+ _state.sent();
1219
+ return [
1220
+ 2
1221
+ ];
1222
+ }
1223
+ });
1224
+ });
1225
+ return function refetch(_) {
1226
+ return _ref.apply(this, arguments);
1227
+ };
1228
+ }();
1229
+ // src/hooks/runs/usePolling/index.tsx
1230
+ var usePolling = function() {
1231
+ var threadContext = useSuperinterfaceContext();
1232
+ var queryClient = (0, import_react_query7.useQueryClient)();
1233
+ var isRunActiveProps = useIsRunActive();
1234
+ (0, import_react_use.useInterval)(function() {
1235
+ refetch({
1236
+ queryClient: queryClient,
1237
+ threadContext: threadContext
1238
+ });
1239
+ console.log("poll refetched");
1240
+ }, isRunActiveProps.isRunActive ? 3e3 : null);
1241
+ return null;
1242
+ };
1243
+ // src/hooks/actions/useManageActions/index.tsx
1244
+ var import_react_query9 = require("@tanstack/react-query");
1245
+ var import_react13 = require("react");
1246
+ // src/hooks/actions/useHandleAction/index.tsx
1247
+ var import_radash3 = require("radash");
1248
+ var import_react_query8 = require("@tanstack/react-query");
1249
+ // src/hooks/actions/useHandleAction/lib/onSettled.ts
1250
+ var onSettled2 = function(param) {
1251
+ var queryClient = param.queryClient;
1252
+ return function() {
1253
+ var _ref = _async_to_generator(function(_data, _error, variables) {
1254
+ return _ts_generator(this, function(_state) {
1255
+ switch(_state.label){
1256
+ case 0:
1257
+ return [
1258
+ 4,
1259
+ queryClient.invalidateQueries({
1260
+ queryKey: [
1261
+ "threadMessages",
1262
+ variables
1263
+ ]
1264
+ })
1265
+ ];
1266
+ case 1:
1267
+ _state.sent();
1268
+ return [
1269
+ 4,
1270
+ queryClient.invalidateQueries({
1271
+ queryKey: [
1272
+ "runs",
1273
+ variables
1274
+ ]
1275
+ })
1276
+ ];
1277
+ case 2:
1278
+ _state.sent();
1279
+ return [
1280
+ 2
1281
+ ];
1282
+ }
1283
+ });
1284
+ });
1285
+ return function(_data, _error, variables) {
1286
+ return _ref.apply(this, arguments);
1287
+ };
1288
+ }();
1289
+ };
1290
+ // src/hooks/actions/useHandleAction/index.tsx
1291
+ var useHandleAction = function() {
1292
+ var queryClient = (0, import_react_query8.useQueryClient)();
1293
+ var superinterfaceContext = useSuperinterfaceContext();
1294
+ var threadContext = useSuperinterfaceContext();
1295
+ var props = (0, import_react_query8.useMutation)(_object_spread({
1296
+ onSettled: onSettled2({
1297
+ queryClient: queryClient
1298
+ })
1299
+ }, mutationOptions({
1300
+ mutationKeyBase: [
1301
+ "handleAction"
1302
+ ],
1303
+ path: "/actions",
1304
+ queryClient: queryClient,
1305
+ threadContext: threadContext,
1306
+ superinterfaceContext: superinterfaceContext
1307
+ })));
1308
+ return _object_spread_props(_object_spread({}, props), {
1309
+ handleAction: (0, import_radash3.partob)(props.mutate, threadContext.variables)
1310
+ });
1311
+ };
1312
+ // src/hooks/actions/useManageActions/index.tsx
1313
+ var useManageActions = function() {
1314
+ var queryClient = (0, import_react_query9.useQueryClient)();
1315
+ var threadContext = useSuperinterfaceContext();
1316
+ var latestRunProps = useLatestRun();
1317
+ var handleActionProps = useHandleAction();
1318
+ (0, import_react13.useEffect)(function() {
1319
+ if (handleActionProps.isPending) return;
1320
+ if (latestRunProps.isFetching) return;
1321
+ if (!latestRunProps.latestRun) return;
1322
+ if (latestRunProps.latestRun.status !== "requires_action") return;
1323
+ var isMutating = queryClient.isMutating({
1324
+ mutationKey: [
1325
+ "handleAction",
1326
+ threadContext.variables
1327
+ ]
1328
+ });
1329
+ if (isMutating) return;
1330
+ console.log("requires action", {
1331
+ latestRunProps: latestRunProps
1332
+ });
1333
+ handleActionProps.handleAction({
1334
+ latestRun: latestRunProps.latestRun
1335
+ });
1336
+ }, [
1337
+ handleActionProps,
1338
+ latestRunProps
1339
+ ]);
1340
+ return null;
1341
+ };
1342
+ // src/hooks/threads/useThreadLifecycles/index.tsx
1343
+ var useThreadLifecycles = function() {
1344
+ useManageRuns();
1345
+ useManageActions();
1346
+ usePolling();
1347
+ return null;
1348
+ };
1349
+ // src/hooks/threadMessageGroups/useThreadMessageGroups/index.ts
1350
+ var import_react14 = require("react");
1351
+ // src/hooks/threadMessageGroups/useThreadMessageGroups/lib/threadMessageGroups/index.ts
1352
+ var import_lodash6 = __toESM(require("lodash"), 1);
1353
+ var import_radash5 = require("radash");
1354
+ // src/lib/threadMessages/order.ts
1355
+ var import_radash4 = require("radash");
1356
+ var order = function(param) {
1357
+ var threadMessages2 = param.threadMessages;
1358
+ return (0, import_radash4.sort)(threadMessages2, function(tm) {
1359
+ return tm.created_at;
1360
+ }, true);
1361
+ };
1362
+ // src/hooks/threadMessageGroups/useThreadMessageGroups/lib/threadMessageGroups/newGroup/newGroupItem.ts
1363
+ var newGroupItem = function(param) {
1364
+ var threadMessage = param.threadMessage;
1365
+ return {
1366
+ id: threadMessage.id,
1367
+ role: threadMessage.role,
1368
+ createdAt: threadMessage.created_at,
1369
+ threadMessages: [
1370
+ threadMessage
1371
+ ]
1372
+ };
1373
+ };
1374
+ // src/hooks/threadMessageGroups/useThreadMessageGroups/lib/threadMessageGroups/newGroup/index.ts
1375
+ var newGroup = function(param) {
1376
+ var groups = param.groups, threadMessage = param.threadMessage;
1377
+ return _to_consumable_array(groups).concat([
1378
+ newGroupItem({
1379
+ threadMessage: threadMessage
1380
+ })
1381
+ ]);
1382
+ };
1383
+ // src/hooks/threadMessageGroups/useThreadMessageGroups/lib/threadMessageGroups/index.ts
1384
+ var threadMessageGroups = function(param) {
1385
+ var threadMessages2 = param.threadMessages;
1386
+ return import_lodash6.default.reduce(order({
1387
+ threadMessages: threadMessages2
1388
+ }), function(groups, threadMessage) {
1389
+ var group = (0, import_radash5.last)(groups);
1390
+ if (!group) return newGroup({
1391
+ groups: groups,
1392
+ threadMessage: threadMessage
1393
+ });
1394
+ if (group.role !== threadMessage.role) {
1395
+ return newGroup({
1396
+ groups: groups,
1397
+ threadMessage: threadMessage
1398
+ });
1399
+ }
1400
+ return _to_consumable_array(import_lodash6.default.dropRight(groups)).concat([
1401
+ _object_spread_props(_object_spread({}, group), {
1402
+ threadMessages: _to_consumable_array(group.threadMessages).concat([
1403
+ threadMessage
1404
+ ])
1405
+ })
1406
+ ]);
1407
+ }, []);
1408
+ };
1409
+ // src/hooks/threadMessageGroups/useThreadMessageGroups/index.ts
1410
+ var useThreadMessageGroups = function(param) {
1411
+ var threadMessages2 = param.threadMessages;
1412
+ return (0, import_react14.useMemo)(function() {
1413
+ return {
1414
+ threadMessageGroups: threadMessageGroups({
1415
+ threadMessages: threadMessages2
1416
+ })
1417
+ };
1418
+ }, [
1419
+ threadMessages2
1420
+ ]);
1421
+ };
1422
+ // src/components/threadMessages/ThreadMessages/Content/ThreadMessageGroup/index.tsx
1423
+ var import_react24 = require("react");
1424
+ var import_themes24 = require("@radix-ui/themes");
1425
+ var import_react_icons4 = require("@radix-ui/react-icons");
1426
+ // src/components/threadMessageGroups/ThreadMessagesGroupBase/AssistantAvatar.tsx
1427
+ var import_react16 = require("react");
1428
+ var import_themes6 = require("@radix-ui/themes");
1429
+ // src/contexts/assistants/AssistantAvatarContext/index.tsx
1430
+ var import_react15 = require("react");
1431
+ var import_themes5 = require("@radix-ui/themes");
1432
+ var import_react_icons = require("@radix-ui/react-icons");
1433
+ var import_jsx_runtime6 = require("react/jsx-runtime");
1434
+ var AssistantAvatarContext = (0, import_react15.createContext)(/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_themes5.Avatar, {
1435
+ fallback: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_icons.LightningBoltIcon, {}),
1436
+ size: "1"
1437
+ }));
1438
+ // src/components/threadMessageGroups/ThreadMessagesGroupBase/AssistantAvatar.tsx
1439
+ var import_jsx_runtime7 = require("react/jsx-runtime");
1440
+ var AssistantAvatar = function() {
1441
+ var AssistantAvatarContextValue = (0, import_react16.useContext)(AssistantAvatarContext);
1442
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_themes6.Flex, {
1443
+ shrink: "0",
1444
+ style: {
1445
+ borderRadius: "var(--radius-3)",
1446
+ overflow: "hidden",
1447
+ height: "24px",
1448
+ width: "24px"
1449
+ },
1450
+ children: AssistantAvatarContextValue
1451
+ });
1452
+ };
1453
+ // src/contexts/assistants/AssistantNameContext/index.tsx
1454
+ var import_react17 = require("react");
1455
+ var AssistantNameContext = (0, import_react17.createContext)("Assistant");
1456
+ // src/components/threadMessages/ThreadMessages/Content/ThreadMessageGroup/Content/index.tsx
1457
+ var import_themes23 = require("@radix-ui/themes");
1458
+ // src/components/ThreadMessages/ThreadMessage/index.tsx
1459
+ var import_react23 = require("react");
1460
+ var import_themes22 = require("@radix-ui/themes");
1461
+ // src/components/runSteps/RunSteps/index.tsx
1462
+ var import_themes15 = require("@radix-ui/themes");
1463
+ // src/components/runSteps/RunStep/ToolCalls/index.tsx
1464
+ var import_themes14 = require("@radix-ui/themes");
1465
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/index.tsx
1466
+ var import_themes12 = require("@radix-ui/themes");
1467
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/index.tsx
1468
+ var import_react20 = require("react");
1469
+ // src/contexts/functions/FunctionComponentsContext/index.tsx
1470
+ var import_react18 = require("react");
1471
+ var FunctionComponentsContext = (0, import_react18.createContext)({});
1472
+ // src/components/functions/FunctionBase/index.tsx
1473
+ var import_themes10 = require("@radix-ui/themes");
1474
+ // src/components/toolCalls/ToolCallBase/index.tsx
1475
+ var import_themes7 = require("@radix-ui/themes");
1476
+ var import_jsx_runtime8 = require("react/jsx-runtime");
1477
+ var ToolCallBase = function(param) {
1478
+ var children = param.children;
1479
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_themes7.Flex, {
1480
+ py: "1",
1481
+ ml: "-2",
1482
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_themes7.PopoverTrigger, {
1483
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_themes7.Button, {
1484
+ size: "1",
1485
+ color: "gold",
1486
+ variant: "outline",
1487
+ style: {
1488
+ boxShadow: "none"
1489
+ },
1490
+ children: children
1491
+ })
1492
+ })
1493
+ });
1494
+ };
1495
+ // src/components/toolCalls/ToolCallBase/ToolCallTitle.tsx
1496
+ var import_themes8 = require("@radix-ui/themes");
1497
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1498
+ var ToolCallTitle = function(param) {
1499
+ var children = param.children;
1500
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_themes8.Text, {
1501
+ weight: "regular",
1502
+ children: children
1503
+ });
1504
+ };
1505
+ // src/components/functions/FunctionBase/Icon.tsx
1506
+ var import_react_icons2 = require("@radix-ui/react-icons");
1507
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1508
+ var Icon = function(param) {
1509
+ var runStep = param.runStep;
1510
+ if (runStep.completed_at) {
1511
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_icons2.CheckCircledIcon, {});
1512
+ } else if (runStep.cancelled_at || runStep.failed_at || runStep.status === "expired") {
1513
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_icons2.CircleBackslashIcon, {});
1514
+ } else {
1515
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_icons2.CircleIcon, {});
1516
+ }
1517
+ };
1518
+ // src/components/functions/FunctionBase/Content.tsx
1519
+ var import_react19 = require("react");
1520
+ var import_themes9 = require("@radix-ui/themes");
1521
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1522
+ var Content = function(param) {
1523
+ var fn = param.fn;
1524
+ var args = (0, import_react19.useMemo)(function() {
1525
+ var result = null;
1526
+ try {
1527
+ result = JSON.parse(fn.arguments);
1528
+ } catch (error) {
1529
+ console.error(error);
1530
+ }
1531
+ return result;
1532
+ }, [
1533
+ fn
1534
+ ]);
1535
+ var output = (0, import_react19.useMemo)(function() {
1536
+ if (!fn.output) {
1537
+ return null;
1538
+ }
1539
+ var result = null;
1540
+ try {
1541
+ result = JSON.parse(fn.output);
1542
+ } catch (error) {
1543
+ console.error(error);
1544
+ }
1545
+ return result;
1546
+ }, [
1547
+ fn
1548
+ ]);
1549
+ if (!args) {
1550
+ return null;
1551
+ }
1552
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_themes9.Code, {
1553
+ variant: "ghost",
1554
+ color: "gold",
1555
+ style: {
1556
+ whiteSpace: "pre",
1557
+ wordBreak: "break-word"
1558
+ },
1559
+ children: [
1560
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_themes9.Box, {
1561
+ children: args && JSON.stringify(args, null, 2)
1562
+ }),
1563
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_themes9.Box, {
1564
+ children: output && JSON.stringify(output, null, 2)
1565
+ })
1566
+ ]
1567
+ });
1568
+ };
1569
+ // src/components/functions/FunctionBase/index.tsx
1570
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1571
+ var FunctionBase = function(param) {
1572
+ var fn = param.fn, runStep = param.runStep, title2 = param.title;
1573
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_themes10.PopoverRoot, {
1574
+ children: [
1575
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(ToolCallBase, {
1576
+ children: [
1577
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, {
1578
+ runStep: runStep
1579
+ }),
1580
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ToolCallTitle, {
1581
+ children: title2
1582
+ })
1583
+ ]
1584
+ }),
1585
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_themes10.PopoverContent, {
1586
+ style: {
1587
+ maxHeight: "500px"
1588
+ },
1589
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Content, {
1590
+ fn: fn
1591
+ })
1592
+ })
1593
+ ]
1594
+ });
1595
+ };
1596
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/DefaultFunction/lib/title.ts
1597
+ var title = function(param) {
1598
+ var fn = param.fn, runStep = param.runStep;
1599
+ if (runStep.completed_at) {
1600
+ return "Finished ".concat(fn.name);
1601
+ } else if (runStep.cancelled_at) {
1602
+ return "Cancelled ".concat(fn.name);
1603
+ } else {
1604
+ return "Calling ".concat(fn.name);
1605
+ }
1606
+ };
1607
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/DefaultFunction/index.tsx
1608
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1609
+ var DefaultFunction = function(param) {
1610
+ var fn = param.fn, runStep = param.runStep;
1611
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(FunctionBase, {
1612
+ fn: fn,
1613
+ runStep: runStep,
1614
+ title: title({
1615
+ runStep: runStep,
1616
+ fn: fn
1617
+ })
1618
+ });
1619
+ };
1620
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/index.tsx
1621
+ var import_jsx_runtime14 = // @ts-ignore-next-line
1622
+ require("react/jsx-runtime");
1623
+ var Fn = function(param) {
1624
+ var fn = param.fn, runStep = param.runStep;
1625
+ var functionComponentsContext = (0, import_react20.useContext)(FunctionComponentsContext);
1626
+ var Component = functionComponentsContext[fn.name] || DefaultFunction;
1627
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Component, {
1628
+ fn: fn,
1629
+ runStep: runStep
1630
+ });
1631
+ };
1632
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/CodeInterpreter/index.tsx
1633
+ var import_themes11 = require("@radix-ui/themes");
1634
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1635
+ var CodeInterpreter = function(param) {
1636
+ var codeInterpreter = param.codeInterpreter;
1637
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_themes11.Flex, {
1638
+ children: codeInterpreter.input
1639
+ });
1640
+ };
1641
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/index.tsx
1642
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1643
+ var ToolCall = function(param) {
1644
+ var toolCall = param.toolCall, runStep = param.runStep;
1645
+ if (toolCall.type === "function") {
1646
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Fn, {
1647
+ fn: toolCall.function,
1648
+ runStep: runStep
1649
+ });
1650
+ }
1651
+ if (toolCall.type === "code_interpreter") {
1652
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CodeInterpreter, {
1653
+ codeInterpreter: toolCall.code_interpreter,
1654
+ runStep: runStep
1655
+ });
1656
+ }
1657
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_themes12.Flex, {
1658
+ children: toolCall.type
1659
+ });
1660
+ };
1661
+ // src/components/runSteps/RunStep/ToolCalls/Starting/index.tsx
1662
+ var import_themes13 = require("@radix-ui/themes");
1663
+ var import_react_icons3 = require("@radix-ui/react-icons");
1664
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1665
+ var Starting = function() {
1666
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_themes13.PopoverRoot, {
1667
+ children: [
1668
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(ToolCallBase, {
1669
+ children: [
1670
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_react_icons3.CircleIcon, {}),
1671
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ToolCallTitle, {
1672
+ children: "Starting actions"
1673
+ })
1674
+ ]
1675
+ }),
1676
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_themes13.PopoverContent, {
1677
+ style: {
1678
+ maxHeight: "500px"
1679
+ },
1680
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_themes13.Text, {
1681
+ children: "Getting ready to connect to domain API"
1682
+ })
1683
+ })
1684
+ ]
1685
+ });
1686
+ };
1687
+ // src/components/runSteps/RunStep/ToolCalls/index.tsx
1688
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1689
+ var ToolCalls = function(param) {
1690
+ var stepDetails = param.stepDetails, runStep = param.runStep;
1691
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_themes14.Flex, {
1692
+ direction: "column",
1693
+ children: [
1694
+ !stepDetails.tool_calls.length && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Starting, {}),
1695
+ stepDetails.tool_calls.map(function(toolCall) {
1696
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ToolCall, {
1697
+ toolCall: toolCall,
1698
+ runStep: runStep
1699
+ }, toolCall.id);
1700
+ })
1701
+ ]
1702
+ });
1703
+ };
1704
+ // src/components/runSteps/RunStep/index.tsx
1705
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1706
+ var RunStep = function(param) {
1707
+ var runStep = param.runStep;
1708
+ if (runStep.step_details.type === "tool_calls") {
1709
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ToolCalls, {
1710
+ stepDetails: runStep.step_details,
1711
+ runStep: runStep
1712
+ });
1713
+ }
1714
+ return null;
1715
+ };
1716
+ // src/components/runSteps/RunSteps/index.tsx
1717
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1718
+ var RunSteps = function(param) {
1719
+ var runSteps = param.runSteps;
1720
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_themes15.Flex, {
1721
+ direction: "column-reverse",
1722
+ children: runSteps.map(function(runStep) {
1723
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(RunStep, {
1724
+ runStep: runStep
1725
+ }, runStep.id);
1726
+ })
1727
+ });
1728
+ };
1729
+ // src/components/ThreadMessages/ThreadMessage/TextContent/index.tsx
1730
+ var import_react22 = require("react");
1731
+ var import_react_remark = require("react-remark");
1732
+ // src/contexts/markdown/MarkdownContext/index.ts
1733
+ var import_react21 = require("react");
1734
+ // src/contexts/markdown/MarkdownContext/lib/components/Paragraph.tsx
1735
+ var import_themes16 = require("@radix-ui/themes");
1736
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1737
+ var Paragraph = function(param) {
1738
+ var children = param.children;
1739
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_themes16.Box, {
1740
+ pb: "3",
1741
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_themes16.Text, {
1742
+ size: "3",
1743
+ style: {
1744
+ whiteSpace: "pre-line",
1745
+ wordBreak: "break-word"
1746
+ },
1747
+ children: children
1748
+ })
1749
+ });
1750
+ };
1751
+ // src/contexts/markdown/MarkdownContext/lib/components/Link.tsx
1752
+ var import_themes17 = require("@radix-ui/themes");
1753
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1754
+ var Link = function(param) {
1755
+ var children = param.children, href = param.href;
1756
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_themes17.Link, {
1757
+ href: href,
1758
+ children: children
1759
+ });
1760
+ };
1761
+ // src/contexts/markdown/MarkdownContext/lib/components/UnorderedList.tsx
1762
+ var import_themes18 = require("@radix-ui/themes");
1763
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1764
+ var UnorderedList = function(param) {
1765
+ var children = param.children;
1766
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_themes18.Box, {
1767
+ pb: "3",
1768
+ asChild: true,
1769
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("ul", {
1770
+ style: {
1771
+ listStylePosition: "inside"
1772
+ },
1773
+ children: children
1774
+ })
1775
+ });
1776
+ };
1777
+ // src/contexts/markdown/MarkdownContext/lib/components/OrderedList.tsx
1778
+ var import_themes19 = require("@radix-ui/themes");
1779
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1780
+ var OrderedList = function(param) {
1781
+ var children = param.children;
1782
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_themes19.Box, {
1783
+ pb: "3",
1784
+ asChild: true,
1785
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("ol", {
1786
+ style: {
1787
+ listStylePosition: "inside"
1788
+ },
1789
+ children: children
1790
+ })
1791
+ });
1792
+ };
1793
+ // src/contexts/markdown/MarkdownContext/lib/components/ListItem.tsx
1794
+ var import_themes20 = require("@radix-ui/themes");
1795
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1796
+ var ListItem = function(param) {
1797
+ var children = param.children;
1798
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_themes20.Box, {
1799
+ pb: "1",
1800
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("li", {
1801
+ children: children
1802
+ })
1803
+ });
1804
+ };
1805
+ // src/contexts/markdown/MarkdownContext/lib/components/Strong.tsx
1806
+ var import_themes21 = require("@radix-ui/themes");
1807
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1808
+ var Strong = function(param) {
1809
+ var children = param.children;
1810
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_themes21.Strong, {
1811
+ children: children
1812
+ });
1813
+ };
1814
+ // src/contexts/markdown/MarkdownContext/lib/components/index.tsx
1815
+ var components = {
1816
+ p: Paragraph,
1817
+ a: Link,
1818
+ strong: Strong,
1819
+ ul: UnorderedList,
1820
+ ol: OrderedList,
1821
+ li: ListItem
1822
+ };
1823
+ // src/contexts/markdown/MarkdownContext/index.ts
1824
+ var MarkdownContext = (0, import_react21.createContext)({
1825
+ remarkPlugins: [],
1826
+ rehypeReactOptions: {
1827
+ components: components
1828
+ }
1829
+ });
1830
+ // src/components/ThreadMessages/ThreadMessage/TextContent/index.tsx
1831
+ var TextContent = function(param) {
1832
+ var content = param.content;
1833
+ var markdownContext = (0, import_react22.useContext)(MarkdownContext);
1834
+ return (0, import_react_remark.useRemarkSync)(content.text.value, markdownContext);
1835
+ };
1836
+ // src/components/ThreadMessages/ThreadMessage/index.tsx
1837
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1838
+ var ThreadMessage = function(param) {
1839
+ var threadMessage = param.threadMessage;
1840
+ var _ref = _sliced_to_array((0, import_react23.useMemo)(function() {
1841
+ if (!threadMessage.runSteps.length) return [
1842
+ [],
1843
+ []
1844
+ ];
1845
+ var messageCreationRunStepIndex = threadMessage.runSteps.findIndex(function(runStep) {
1846
+ if (runStep.step_details.type !== "message_creation") return;
1847
+ return runStep.step_details.message_creation.message_id === threadMessage.id;
1848
+ });
1849
+ var nextRunStepIndex = threadMessage.runSteps.slice(0, messageCreationRunStepIndex).findLastIndex(function(runStep) {
1850
+ return runStep.step_details.type === "message_creation";
1851
+ });
1852
+ if (nextRunStepIndex === -1) {
1853
+ nextRunStepIndex = 0;
1854
+ }
1855
+ var laterRunSteps2 = threadMessage.runSteps.slice(nextRunStepIndex, messageCreationRunStepIndex);
1856
+ var prevRunStepIndex = threadMessage.runSteps.slice(messageCreationRunStepIndex + 1).findIndex(function(runStep) {
1857
+ return runStep.step_details.type === "message_creation";
1858
+ });
1859
+ var olderRunSteps2;
1860
+ if (prevRunStepIndex === -1) {
1861
+ olderRunSteps2 = threadMessage.runSteps.slice(messageCreationRunStepIndex + 1);
1862
+ } else {
1863
+ olderRunSteps2 = threadMessage.runSteps.slice(messageCreationRunStepIndex + 1, messageCreationRunStepIndex + prevRunStepIndex);
1864
+ }
1865
+ return [
1866
+ olderRunSteps2,
1867
+ laterRunSteps2
1868
+ ];
1869
+ }, [
1870
+ threadMessage
1871
+ ]), 2), olderRunSteps = _ref[0], laterRunSteps = _ref[1];
1872
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_themes22.Box, {
1873
+ children: [
1874
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RunSteps, {
1875
+ runSteps: olderRunSteps
1876
+ }),
1877
+ threadMessage.content.map(function(content, index) {
1878
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_themes22.Box, {
1879
+ children: content.type === "text" && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TextContent, {
1880
+ content: content
1881
+ })
1882
+ }, index);
1883
+ }),
1884
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RunSteps, {
1885
+ runSteps: laterRunSteps
1886
+ })
1887
+ ]
1888
+ });
1889
+ };
1890
+ // src/components/threadMessages/ThreadMessages/Content/ThreadMessageGroup/Content/index.tsx
1891
+ var import_jsx_runtime28 = require("react/jsx-runtime");
1892
+ var Content2 = function(param) {
1893
+ var threadMessageGroup = param.threadMessageGroup;
1894
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_themes23.Flex, {
1895
+ direction: "column-reverse",
1896
+ children: threadMessageGroup.threadMessages.map(function(threadMessage) {
1897
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ThreadMessage, {
1898
+ threadMessage: threadMessage
1899
+ }, threadMessage.id);
1900
+ })
1901
+ });
1902
+ };
1903
+ // src/components/threadMessages/ThreadMessages/Content/ThreadMessageGroup/index.tsx
1904
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1905
+ var ThreadMessageGroup = function(param) {
1906
+ var threadMessageGroup = param.threadMessageGroup;
1907
+ var assistantNameContext = (0, import_react24.useContext)(AssistantNameContext);
1908
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(ThreadMessagesGroupBase, {
1909
+ children: [
1910
+ threadMessageGroup.role === "user" ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_themes24.Avatar, {
1911
+ fallback: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_icons4.PersonIcon, {}),
1912
+ size: "1"
1913
+ }) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(AssistantAvatar, {}),
1914
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_themes24.Box, {
1915
+ grow: "1",
1916
+ children: [
1917
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Name, {
1918
+ children: threadMessageGroup.role === "user" ? "You" : assistantNameContext
1919
+ }),
1920
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Content2, {
1921
+ threadMessageGroup: threadMessageGroup
1922
+ })
1923
+ ]
1924
+ })
1925
+ ]
1926
+ });
1927
+ };
1928
+ // src/components/threadMessages/ThreadMessages/Content/index.tsx
1929
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1930
+ var Content3 = function(param) {
1931
+ var threadMessages2 = param.threadMessages, isLoading = param.isLoading, isLoadingError = param.isLoadingError;
1932
+ var _useThreadMessageGroups = useThreadMessageGroups({
1933
+ threadMessages: threadMessages2
1934
+ }), threadMessageGroups2 = _useThreadMessageGroups.threadMessageGroups;
1935
+ if (isLoading || isLoadingError) {
1936
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ThreadMessagesSkeleton, {});
1937
+ }
1938
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, {
1939
+ children: threadMessageGroups2.map(function(threadMessageGroup) {
1940
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ThreadMessageGroup, {
1941
+ threadMessageGroup: threadMessageGroup
1942
+ }, threadMessageGroup.id);
1943
+ })
1944
+ });
1945
+ };
1946
+ // src/components/threadMessages/ThreadMessages/Progress/index.tsx
1947
+ var import_themes27 = require("@radix-ui/themes");
1948
+ // src/components/skeletons/StartingContentSkeleton/index.tsx
1949
+ var import_themes25 = require("@radix-ui/themes");
1950
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1951
+ var StartingContentSkeleton = function() {
1952
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_themes25.Box, {
1953
+ shrink: "0",
1954
+ mt: "1",
1955
+ style: {
1956
+ animation: "pulse 2s cubic-bezier(.4,0,.6,1) infinite",
1957
+ borderRadius: "var(--radius-3)",
1958
+ backgroundColor: "var(--gray-12)",
1959
+ height: "var(--space-4)",
1960
+ width: "var(--space-4)"
1961
+ }
1962
+ });
1963
+ };
1964
+ // src/components/skeletons/StartingSkeleton/index.tsx
1965
+ var import_react25 = require("react");
1966
+ var import_themes26 = require("@radix-ui/themes");
1967
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1968
+ var StartingSkeleton = function(param) {
1969
+ var children = param.children;
1970
+ var assistantNameContext = (0, import_react25.useContext)(AssistantNameContext);
1971
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(ThreadMessagesGroupBase, {
1972
+ children: [
1973
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(AssistantAvatar, {}),
1974
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_themes26.Box, {
1975
+ children: [
1976
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Name, {
1977
+ children: assistantNameContext
1978
+ }),
1979
+ children,
1980
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(StartingContentSkeleton, {})
1981
+ ]
1982
+ })
1983
+ ]
1984
+ });
1985
+ };
1986
+ // src/components/threadMessages/ThreadMessages/Progress/index.tsx
1987
+ var import_jsx_runtime33 = require("react/jsx-runtime");
1988
+ var Progress = function(param) {
1989
+ var latestThreadMessage = param.latestThreadMessage, isRunActive2 = param.isRunActive;
1990
+ if (!latestThreadMessage) return null;
1991
+ if (!isRunActive2) return null;
1992
+ if (latestThreadMessage.role === "user") {
1993
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(StartingSkeleton, {});
1994
+ }
1995
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(ThreadMessagesGroupBase, {
1996
+ children: [
1997
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_themes27.Box, {
1998
+ pl: "5"
1999
+ }),
2000
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(StartingContentSkeleton, {})
2001
+ ]
2002
+ });
2003
+ };
2004
+ // src/components/threadMessages/ThreadMessages/index.tsx
2005
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2006
+ var ThreadMessages = function(param) {
2007
+ var children = param.children, _param_style = param.style, style = _param_style === void 0 ? {} : _param_style;
2008
+ var _useThreadMessages = useThreadMessages(), threadMessages2 = _useThreadMessages.threadMessages, isFetchingNextPage = _useThreadMessages.isFetchingNextPage, hasNextPage = _useThreadMessages.hasNextPage, fetchNextPage = _useThreadMessages.fetchNextPage, isLoading = _useThreadMessages.isLoading, isLoadingError = _useThreadMessages.isLoadingError;
2009
+ useThreadLifecycles();
2010
+ var _useInfiniteScroll = useInfiniteScroll({
2011
+ isFetchingNextPage: isFetchingNextPage,
2012
+ hasNextPage: hasNextPage,
2013
+ fetchNextPage: fetchNextPage
2014
+ }), containerRef = _useInfiniteScroll.containerRef, loaderRef = _useInfiniteScroll.loaderRef;
2015
+ var _useIsRunActive = useIsRunActive(), isRunActive2 = _useIsRunActive.isRunActive;
2016
+ var latestThreadMessage = useLatestThreadMessage().latestThreadMessage;
2017
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_themes28.Flex, {
2018
+ ref: containerRef,
2019
+ direction: "column-reverse",
2020
+ grow: "1",
2021
+ style: _object_spread_props(_object_spread({}, style), {
2022
+ overflow: "auto"
2023
+ }),
2024
+ children: [
2025
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_themes28.Flex, {
2026
+ shrink: "0",
2027
+ style: {
2028
+ height: "var(--space-3)"
2029
+ }
2030
+ }),
2031
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Progress, {
2032
+ latestThreadMessage: latestThreadMessage,
2033
+ isRunActive: isRunActive2
2034
+ }),
2035
+ children,
2036
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Content3, {
2037
+ threadMessages: threadMessages2,
2038
+ isLoading: isLoading,
2039
+ isLoadingError: isLoadingError
2040
+ }),
2041
+ hasNextPage && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ThreadMessagesSkeleton, {
2042
+ ref: loaderRef
2043
+ }),
2044
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_themes28.Flex, {
2045
+ shrink: "0",
2046
+ grow: "1"
2047
+ })
2048
+ ]
2049
+ });
2050
+ };
2051
+ // src/components/threadMessages/ThreadMessageForm/index.tsx
2052
+ var import_themes30 = require("@radix-ui/themes");
2053
+ var import_react27 = require("react");
2054
+ var import_react_hook_form = require("react-hook-form");
2055
+ var import_react_use2 = require("react-use");
2056
+ // src/components/textareas/TextareaBase/index.tsx
2057
+ var import_react26 = require("react");
2058
+ var import_react_textarea_autosize = __toESM(require("react-textarea-autosize"), 1);
2059
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2060
+ var UPSCALE_RATIO = 16 / 14;
2061
+ var TextareaBase = (0, import_react26.forwardRef)(function TextareaBase2(props, ref) {
2062
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_react_textarea_autosize.default, _object_spread({
2063
+ ref: ref,
2064
+ className: "textarea-base",
2065
+ style: {
2066
+ resize: "none",
2067
+ fontSize: "".concat(14 * UPSCALE_RATIO, "px"),
2068
+ lineHeight: "".concat(24 * UPSCALE_RATIO, "px"),
2069
+ transform: "scale(".concat(1 / UPSCALE_RATIO, ")"),
2070
+ margin: "0 ".concat((-100 * UPSCALE_RATIO + 100) / 2, "%"),
2071
+ width: "".concat(100 * UPSCALE_RATIO, "%"),
2072
+ maxWidth: "".concat(100 * UPSCALE_RATIO, "%"),
2073
+ flexGrow: 1,
2074
+ display: "flex"
2075
+ }
2076
+ }, props));
2077
+ });
2078
+ // src/hooks/threadMessages/useCreateThreadMessage/index.ts
2079
+ var import_radash8 = require("radash");
2080
+ var import_react_query10 = require("@tanstack/react-query");
2081
+ // src/hooks/threadMessages/useCreateThreadMessage/lib/mutationOptions/onMutate/index.ts
2082
+ var import_radash6 = require("radash");
2083
+ // src/hooks/threadMessages/useCreateThreadMessage/lib/mutationOptions/onMutate/data.ts
2084
+ var data2 = function(param) {
2085
+ var newThreadMessage = param.newThreadMessage;
2086
+ return function(prevData) {
2087
+ var message = {
2088
+ id: optimisticId(),
2089
+ role: "user",
2090
+ created_at: +/* @__PURE__ */ new Date(),
2091
+ object: "thread.message",
2092
+ content: [
2093
+ {
2094
+ type: "text",
2095
+ text: {
2096
+ annotations: [],
2097
+ value: newThreadMessage.content
2098
+ }
2099
+ }
2100
+ ],
2101
+ run_id: null,
2102
+ assistant_id: null,
2103
+ thread_id: null,
2104
+ file_ids: [],
2105
+ metadata: {},
2106
+ runSteps: []
2107
+ };
2108
+ if (!prevData) {
2109
+ return {
2110
+ pageParams: [],
2111
+ pages: [
2112
+ {
2113
+ data: [
2114
+ message
2115
+ ],
2116
+ hasNextPage: false,
2117
+ lastId: message.id
2118
+ }
2119
+ ]
2120
+ };
2121
+ }
2122
+ var _prevData_pages = _to_array(prevData.pages), latestPage = _prevData_pages[0], pagesRest = _prevData_pages.slice(1);
2123
+ return _object_spread_props(_object_spread({}, prevData), {
2124
+ pages: [
2125
+ _object_spread_props(_object_spread({}, latestPage), {
2126
+ data: [
2127
+ message
2128
+ ].concat(_to_consumable_array(latestPage.data))
2129
+ })
2130
+ ].concat(_to_consumable_array(pagesRest))
2131
+ });
2132
+ };
2133
+ };
2134
+ // src/hooks/threadMessages/useCreateThreadMessage/lib/mutationOptions/onMutate/index.ts
2135
+ var onMutate2 = function(param) {
2136
+ var queryClient = param.queryClient;
2137
+ return function() {
2138
+ var _ref = _async_to_generator(function(newThreadMessage) {
2139
+ var queryKey, prevThreadMessages;
2140
+ return _ts_generator(this, function(_state) {
2141
+ switch(_state.label){
2142
+ case 0:
2143
+ queryKey = [
2144
+ "threadMessages",
2145
+ (0, import_radash6.omit)(newThreadMessage, [
2146
+ "content"
2147
+ ])
2148
+ ];
2149
+ return [
2150
+ 4,
2151
+ queryClient.cancelQueries({
2152
+ queryKey: queryKey
2153
+ })
2154
+ ];
2155
+ case 1:
2156
+ _state.sent();
2157
+ prevThreadMessages = queryClient.getQueryData(queryKey);
2158
+ queryClient.setQueryData(queryKey, data2({
2159
+ newThreadMessage: newThreadMessage
2160
+ }));
2161
+ return [
2162
+ 2,
2163
+ {
2164
+ prevThreadMessages: prevThreadMessages,
2165
+ newThreadMessage: newThreadMessage
2166
+ }
2167
+ ];
2168
+ }
2169
+ });
2170
+ });
2171
+ return function(newThreadMessage) {
2172
+ return _ref.apply(this, arguments);
2173
+ };
2174
+ }();
2175
+ };
2176
+ // src/hooks/threadMessages/useCreateThreadMessage/lib/mutationOptions/onSettled.ts
2177
+ var import_radash7 = require("radash");
2178
+ var onSettled3 = function(param) {
2179
+ var queryClient = param.queryClient;
2180
+ return function() {
2181
+ var _ref = _async_to_generator(function(_data, _error, variables) {
2182
+ return _ts_generator(this, function(_state) {
2183
+ switch(_state.label){
2184
+ case 0:
2185
+ return [
2186
+ 4,
2187
+ queryClient.invalidateQueries({
2188
+ queryKey: [
2189
+ "threadMessages",
2190
+ (0, import_radash7.omit)(variables, [
2191
+ "content"
2192
+ ])
2193
+ ]
2194
+ })
2195
+ ];
2196
+ case 1:
2197
+ _state.sent();
2198
+ return [
2199
+ 4,
2200
+ queryClient.invalidateQueries({
2201
+ queryKey: [
2202
+ "runs",
2203
+ (0, import_radash7.omit)(variables, [
2204
+ "content"
2205
+ ])
2206
+ ]
2207
+ })
2208
+ ];
2209
+ case 2:
2210
+ _state.sent();
2211
+ return [
2212
+ 2
2213
+ ];
2214
+ }
2215
+ });
2216
+ });
2217
+ return function(_data, _error, variables) {
2218
+ return _ref.apply(this, arguments);
2219
+ };
2220
+ }();
2221
+ };
2222
+ // src/hooks/threadMessages/useCreateThreadMessage/index.ts
2223
+ var useCreateThreadMessage = function() {
2224
+ var queryClient = (0, import_react_query10.useQueryClient)();
2225
+ var superinterfaceContext = useSuperinterfaceContext();
2226
+ var threadContext = useSuperinterfaceContext();
2227
+ var props = (0, import_react_query10.useMutation)(_object_spread({
2228
+ onMutate: onMutate2({
2229
+ queryClient: queryClient
2230
+ }),
2231
+ onSettled: onSettled3({
2232
+ queryClient: queryClient
2233
+ })
2234
+ }, mutationOptions({
2235
+ mutationKeyBase: [
2236
+ "createThreadMessage"
2237
+ ],
2238
+ path: "/thread-messages",
2239
+ queryClient: queryClient,
2240
+ threadContext: threadContext,
2241
+ superinterfaceContext: superinterfaceContext
2242
+ })));
2243
+ return _object_spread_props(_object_spread({}, props), {
2244
+ createThreadMessage: (0, import_radash8.partob)(props.mutateAsync, threadContext.variables)
2245
+ });
2246
+ };
2247
+ // src/components/threadMessages/ThreadMessageForm/Submit/index.tsx
2248
+ var import_react_icons5 = require("@radix-ui/react-icons");
2249
+ var import_themes29 = require("@radix-ui/themes");
2250
+ // src/components/spinners/Spinner/index.tsx
2251
+ var import_jsx_runtime36 = require("react/jsx-runtime");
2252
+ var Spinner = function(props) {
2253
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("svg", _object_spread_props(_object_spread({
2254
+ xmlns: "http://www.w3.org/2000/svg",
2255
+ width: "24",
2256
+ height: "24",
2257
+ viewBox: "0 0 24 24",
2258
+ fill: "none",
2259
+ stroke: "currentColor",
2260
+ strokeWidth: "2",
2261
+ strokeLinecap: "round",
2262
+ strokeLinejoin: "round",
2263
+ style: {
2264
+ height: "var(--space-4)",
2265
+ width: "var(--space-4)",
2266
+ animation: "spin 1s linear infinite"
2267
+ }
2268
+ }, props), {
2269
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("path", {
2270
+ d: "M21 12a9 9 0 1 1-6.219-8.56"
2271
+ })
2272
+ }));
2273
+ };
2274
+ // src/components/threadMessages/ThreadMessageForm/Submit/index.tsx
2275
+ var import_jsx_runtime37 = require("react/jsx-runtime");
2276
+ var Submit = function(param) {
2277
+ var isLoading = param.isLoading, isDisabled = param.isDisabled;
2278
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_themes29.Button, {
2279
+ type: "submit",
2280
+ radius: "large",
2281
+ disabled: isDisabled,
2282
+ children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Spinner, {}) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react_icons5.ArrowUpIcon, {})
2283
+ });
2284
+ };
2285
+ // src/components/threadMessages/ThreadMessageForm/lib/useFormProps/index.ts
2286
+ var import_zod = require("zod");
2287
+ var import_zod2 = require("@hookform/resolvers/zod");
2288
+ var schema = import_zod.z.object({
2289
+ content: import_zod.z.string().min(1)
2290
+ });
2291
+ var useFormProps = {
2292
+ resolver: (0, import_zod2.zodResolver)(schema)
2293
+ };
2294
+ // src/components/threadMessages/ThreadMessageForm/index.tsx
2295
+ var import_jsx_runtime38 = require("react/jsx-runtime");
2296
+ var ThreadMessageForm = function() {
2297
+ var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, children = _ref.children, tmp = _ref.useFormProps, useFormProps2 = tmp === void 0 ? useFormProps : tmp, _ref_style = _ref.style, style = _ref_style === void 0 ? {} : _ref_style;
2298
+ var _ref1 = (0, import_react_hook_form.useForm)(useFormProps2), register = _ref1.register, handleSubmit = _ref1.handleSubmit, _ref_formState = _ref1.formState, errors = _ref_formState.errors, isSubmitting = _ref_formState.isSubmitting, reset = _ref1.reset;
2299
+ var _useIsRunActive = useIsRunActive(), isRunActive2 = _useIsRunActive.isRunActive;
2300
+ var isLoading = (0, import_react27.useMemo)(function() {
2301
+ return isRunActive2 || isSubmitting;
2302
+ }, [
2303
+ isRunActive2,
2304
+ isSubmitting
2305
+ ]);
2306
+ var createThreadMessage = useCreateThreadMessage().createThreadMessage;
2307
+ var onSubmit = function() {
2308
+ var _ref = _async_to_generator(function(data3) {
2309
+ return _ts_generator(this, function(_state) {
2310
+ switch(_state.label){
2311
+ case 0:
2312
+ reset();
2313
+ return [
2314
+ 4,
2315
+ createThreadMessage({
2316
+ content: data3.content
2317
+ })
2318
+ ];
2319
+ case 1:
2320
+ _state.sent();
2321
+ return [
2322
+ 2
2323
+ ];
2324
+ }
2325
+ });
2326
+ });
2327
+ return function onSubmit(data3) {
2328
+ return _ref.apply(this, arguments);
2329
+ };
2330
+ }();
2331
+ var latestThreadMessage = useLatestThreadMessage().latestThreadMessage;
2332
+ var isDisabled = (0, import_react27.useMemo)(function() {
2333
+ var // @ts-ignore-next-line
2334
+ _latestThreadMessage_metadata;
2335
+ return latestThreadMessage === null || latestThreadMessage === void 0 ? void 0 : (_latestThreadMessage_metadata = latestThreadMessage.metadata) === null || _latestThreadMessage_metadata === void 0 ? void 0 : _latestThreadMessage_metadata.isBlocking;
2336
+ }, [
2337
+ latestThreadMessage,
2338
+ isLoading
2339
+ ]);
2340
+ var isSubmitDisabled = (0, import_react27.useMemo)(function() {
2341
+ return isDisabled || isLoading;
2342
+ }, [
2343
+ isDisabled,
2344
+ isLoading
2345
+ ]);
2346
+ var isDisabledPrevious = (0, import_react_use2.usePrevious)(isDisabled);
2347
+ var textareaRef = (0, import_react27.useRef)(null);
2348
+ var textareaProps = register("content");
2349
+ (0, import_react27.useEffect)(function() {
2350
+ if (isDisabled) return;
2351
+ if (!isDisabledPrevious) return;
2352
+ if (!textareaRef.current) return;
2353
+ textareaRef.current.focus();
2354
+ }, [
2355
+ isDisabled,
2356
+ isDisabledPrevious,
2357
+ textareaProps
2358
+ ]);
2359
+ var assistantNameContext = (0, import_react27.useContext)(AssistantNameContext);
2360
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_themes30.Container, {
2361
+ size: "2",
2362
+ grow: "0",
2363
+ style: style,
2364
+ children: [
2365
+ children,
2366
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_themes30.Flex, {
2367
+ direction: "column",
2368
+ shrink: "0",
2369
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_themes30.Flex, {
2370
+ direction: "column",
2371
+ shrink: "0",
2372
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("form", {
2373
+ onSubmit: handleSubmit(onSubmit),
2374
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_themes30.Flex, {
2375
+ style: _object_spread({
2376
+ borderRadius: "var(--radius-2)",
2377
+ borderWidth: "1px",
2378
+ borderStyle: "solid",
2379
+ borderColor: errors.content ? "var(--red-9)" : "var(--gray-5)"
2380
+ }, errors.content ? {
2381
+ backgroundColor: "var(--red-2)"
2382
+ } : {}),
2383
+ p: "2",
2384
+ pl: "4",
2385
+ children: [
2386
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_themes30.Text, {
2387
+ size: "2",
2388
+ style: {
2389
+ flexGrow: 1
2390
+ },
2391
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_themes30.Flex, {
2392
+ grow: "1",
2393
+ direction: "column",
2394
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TextareaBase, _object_spread_props(_object_spread({
2395
+ minRows: 1,
2396
+ placeholder: "Message ".concat(assistantNameContext, "..."),
2397
+ disabled: isDisabled,
2398
+ onKeyDown: function(e) {
2399
+ if (e.key === "Enter" && !e.shiftKey) {
2400
+ e.preventDefault();
2401
+ if (isSubmitDisabled) return;
2402
+ handleSubmit(onSubmit)();
2403
+ }
2404
+ },
2405
+ autoFocus: true
2406
+ }, textareaProps), {
2407
+ ref: function(e) {
2408
+ textareaProps.ref(e);
2409
+ textareaRef.current = e;
2410
+ }
2411
+ }))
2412
+ })
2413
+ }),
2414
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_themes30.Flex, {
2415
+ shrink: "0",
2416
+ align: "end",
2417
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Submit, {
2418
+ isLoading: isLoading,
2419
+ isDisabled: isSubmitDisabled
2420
+ })
2421
+ })
2422
+ ]
2423
+ })
2424
+ })
2425
+ })
2426
+ })
2427
+ ]
2428
+ });
2429
+ };
2430
+ // src/components/threads/Thread/index.tsx
2431
+ var import_jsx_runtime39 = require("react/jsx-runtime");
2432
+ var Thread = function(props) {
2433
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SuperinterfaceProvider, _object_spread_props(_object_spread({}, props), {
2434
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_themes31.Flex, {
2435
+ direction: "column",
2436
+ grow: "1",
2437
+ children: [
2438
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ThreadMessages, {
2439
+ style: {
2440
+ padding: "var(--space-5)"
2441
+ }
2442
+ }),
2443
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ThreadMessageForm, {
2444
+ style: {
2445
+ paddingLeft: "var(--space-5)",
2446
+ paddingRight: "var(--space-5)",
2447
+ paddingBottom: "var(--space-5)"
2448
+ }
2449
+ })
2450
+ ]
2451
+ })
2452
+ }));
2453
+ };
2454
+ // src/components/threads/ThreadDialog/Root/index.tsx
2455
+ var import_themes32 = require("@radix-ui/themes");
2456
+ // src/components/threads/ThreadDialog/Provider/index.tsx
2457
+ var import_react30 = require("react");
2458
+ // src/contexts/threads/ThreadDialogContext/index.ts
2459
+ var import_react28 = require("react");
2460
+ var ThreadDialogContext = (0, import_react28.createContext)({
2461
+ isOpen: false,
2462
+ setIsOpen: function() {}
2463
+ });
2464
+ // src/hooks/threads/useThreadDialogContext/index.ts
2465
+ var import_react29 = require("react");
2466
+ var useThreadDialogContext = function() {
2467
+ return (0, import_react29.useContext)(ThreadDialogContext);
2468
+ };
2469
+ // src/components/threads/ThreadDialog/Provider/index.tsx
2470
+ var import_jsx_runtime40 = require("react/jsx-runtime");
2471
+ var Provider = function(param) {
2472
+ var children = param.children;
2473
+ var threadDialogContext = useThreadDialogContext();
2474
+ var _ref = _sliced_to_array((0, import_react30.useState)(threadDialogContext.isOpen), 2), isOpen = _ref[0], setIsOpen = _ref[1];
2475
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(ThreadDialogContext.Provider, {
2476
+ value: {
2477
+ isOpen: isOpen,
2478
+ setIsOpen: setIsOpen
2479
+ },
2480
+ children: children
2481
+ });
2482
+ };
2483
+ // src/components/threads/ThreadDialog/Root/index.tsx
2484
+ var import_jsx_runtime41 = require("react/jsx-runtime");
2485
+ var Root = function(param) {
2486
+ var children = param.children, _param_style = param.style, style = _param_style === void 0 ? {} : _param_style;
2487
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Provider, {
2488
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_themes32.Flex, {
2489
+ direction: "column",
2490
+ justify: "end",
2491
+ align: "end",
2492
+ position: "fixed",
2493
+ style: _object_spread({
2494
+ bottom: "24px",
2495
+ right: "24px",
2496
+ top: "24px",
2497
+ zIndex: 9999999999
2498
+ }, style),
2499
+ children: children
2500
+ })
2501
+ });
2502
+ };
2503
+ // src/components/threads/ThreadDialog/Trigger/index.tsx
2504
+ var import_themes33 = require("@radix-ui/themes");
2505
+ var import_jsx_runtime42 = require("react/jsx-runtime");
2506
+ var Trigger = function(param) {
2507
+ var children = param.children;
2508
+ var setIsOpen = useThreadDialogContext().setIsOpen;
2509
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_themes33.Flex, {
2510
+ onClick: function() {
2511
+ return setIsOpen(function(prev) {
2512
+ return !prev;
2513
+ });
2514
+ },
2515
+ direction: "column",
2516
+ shrink: "0",
2517
+ children: children
2518
+ });
2519
+ };
2520
+ // src/components/threads/ThreadDialog/Button/index.tsx
2521
+ var import_themes34 = require("@radix-ui/themes");
2522
+ var import_react_icons6 = require("@radix-ui/react-icons");
2523
+ var import_jsx_runtime43 = require("react/jsx-runtime");
2524
+ var Button3 = function() {
2525
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_themes34.IconButton, {
2526
+ size: "4",
2527
+ radius: "full",
2528
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_icons6.ChatBubbleIcon, {})
2529
+ });
2530
+ };
2531
+ // src/components/threads/ThreadDialog/Content/index.tsx
2532
+ var import_themes35 = require("@radix-ui/themes");
2533
+ var import_jsx_runtime44 = require("react/jsx-runtime");
2534
+ var Content4 = function(param) {
2535
+ var children = param.children;
2536
+ var isOpen = useThreadDialogContext().isOpen;
2537
+ if (!isOpen) return null;
2538
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, {
2539
+ children: [
2540
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("style", {
2541
+ children: ".superinterface-thread-dialog-card .rt-CardInner { display: flex; }"
2542
+ }),
2543
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_themes35.Card, {
2544
+ className: "superinterface-thread-dialog-card",
2545
+ mb: "3",
2546
+ style: {
2547
+ flexGrow: 1,
2548
+ width: "100vw",
2549
+ maxWidth: "400px",
2550
+ maxHeight: "720px"
2551
+ },
2552
+ children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_themes35.Inset, {
2553
+ clip: "padding-box",
2554
+ side: "all",
2555
+ pb: "current",
2556
+ style: {
2557
+ display: "flex",
2558
+ flexGrow: 1
2559
+ },
2560
+ children: children
2561
+ })
2562
+ })
2563
+ ]
2564
+ });
2565
+ };
2566
+ // src/components/threads/ThreadDialog/index.tsx
2567
+ var import_jsx_runtime45 = require("react/jsx-runtime");
2568
+ var ThreadDialog = function() {
2569
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Root, {
2570
+ children: [
2571
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Content4, {
2572
+ children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Thread, {})
2573
+ }),
2574
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Trigger, {
2575
+ children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Button3, {})
2576
+ })
2577
+ ]
2578
+ });
2579
+ };
2580
+ ThreadDialog.Root = Root;
2581
+ ThreadDialog.Trigger = Trigger;
2582
+ ThreadDialog.Button = Button3;
2583
+ ThreadDialog.Content = Content4;
2584
+ // src/components/threads/AudioThread/Root/index.tsx
2585
+ var import_runtime = require("regenerator-runtime/runtime");
2586
+ var import_react35 = require("react");
2587
+ var import_themes36 = require("@radix-ui/themes");
2588
+ var import_react_speech_recognition = __toESM(require("react-speech-recognition"), 1);
2589
+ // src/contexts/threads/AudioThreadContext/index.ts
2590
+ var import_react31 = require("react");
2591
+ var AudioThreadContext = (0, import_react31.createContext)({
2592
+ status: "idle",
2593
+ recorderProps: {
2594
+ status: "idle",
2595
+ start: /*#__PURE__*/ _async_to_generator(function() {
2596
+ return _ts_generator(this, function(_state) {
2597
+ return [
2598
+ 2
2599
+ ];
2600
+ });
2601
+ }),
2602
+ stop: /*#__PURE__*/ _async_to_generator(function() {
2603
+ return _ts_generator(this, function(_state) {
2604
+ return [
2605
+ 2
2606
+ ];
2607
+ });
2608
+ }),
2609
+ pause: /*#__PURE__*/ _async_to_generator(function() {
2610
+ return _ts_generator(this, function(_state) {
2611
+ return [
2612
+ 2
2613
+ ];
2614
+ });
2615
+ }),
2616
+ resume: /*#__PURE__*/ _async_to_generator(function() {
2617
+ return _ts_generator(this, function(_state) {
2618
+ return [
2619
+ 2
2620
+ ];
2621
+ });
2622
+ }),
2623
+ visualizationAnalyser: null
2624
+ },
2625
+ messageAudioProps: {
2626
+ visualizationAnalyser: null,
2627
+ playing: false,
2628
+ paused: false,
2629
+ isReady: false,
2630
+ play: /*#__PURE__*/ _async_to_generator(function() {
2631
+ return _ts_generator(this, function(_state) {
2632
+ return [
2633
+ 2
2634
+ ];
2635
+ });
2636
+ }),
2637
+ pause: /*#__PURE__*/ _async_to_generator(function() {
2638
+ return _ts_generator(this, function(_state) {
2639
+ return [
2640
+ 2
2641
+ ];
2642
+ });
2643
+ })
2644
+ }
2645
+ });
2646
+ // src/components/threads/AudioThread/Root/index.tsx
2647
+ var import_react_use4 = require("react-use");
2648
+ // src/hooks/audioThreads/useStatus/index.ts
2649
+ var import_react32 = require("react");
2650
+ var useStatus = function(param) {
2651
+ var messageAudioProps = param.messageAudioProps, recorderProps = param.recorderProps, createThreadMessageProps = param.createThreadMessageProps;
2652
+ var isRunActiveProps = useIsRunActive();
2653
+ var status = (0, import_react32.useMemo)(function() {
2654
+ if (recorderProps.status === "recording") return "recording";
2655
+ if (createThreadMessageProps.isPending) return "creatingMessage";
2656
+ if (isRunActiveProps.isRunActive) return "runActive";
2657
+ if (messageAudioProps.playing) return "playing";
2658
+ if (messageAudioProps.paused) return "playerPaused";
2659
+ if (!messageAudioProps.isReady) return "loading";
2660
+ if (recorderProps.status === "idle") return "idle";
2661
+ if (recorderProps.status === "paused") return "recorderPaused";
2662
+ return "loading";
2663
+ }, [
2664
+ messageAudioProps,
2665
+ recorderProps,
2666
+ createThreadMessageProps,
2667
+ isRunActiveProps
2668
+ ]);
2669
+ return {
2670
+ status: status
2671
+ };
2672
+ };
2673
+ // src/hooks/audioThreads/useRecorder/index.ts
2674
+ var import_dayjs = __toESM(require("dayjs"), 1);
2675
+ var import_use_audio_capture = require("use-audio-capture");
2676
+ var import_react33 = require("react");
2677
+ var import_react_use_audio_player = require("react-use-audio-player");
2678
+ var import_react_use3 = require("react-use");
2679
+ var useRecorder = function(param) {
2680
+ var isStopOnSilence = param.isStopOnSilence, onStart = param.onStart, onStop = param.onStop;
2681
+ var _ref = _sliced_to_array((0, import_react33.useState)(null), 2), silenceStart = _ref[0], setSilenceStart = _ref[1];
2682
+ var _ref1 = _sliced_to_array((0, import_react33.useState)(null), 2), noiseStart = _ref1[0], setNoiseStart = _ref1[1];
2683
+ var _ref2 = _sliced_to_array((0, import_react33.useState)(null), 2), mediaStream = _ref2[0], setMediaStream = _ref2[1];
2684
+ var _ref3 = _sliced_to_array((0, import_react33.useState)("idle"), 2), status = _ref3[0], setStatus = _ref3[1];
2685
+ var startAudioPlayer = (0, import_react_use_audio_player.useAudioPlayer)();
2686
+ var endAudioPlayer = (0, import_react_use_audio_player.useAudioPlayer)();
2687
+ var _ref4 = _sliced_to_array((0, import_react33.useState)(false), 2), isLoaded = _ref4[0], setIsLoaded = _ref4[1];
2688
+ (0, import_react33.useEffect)(function() {
2689
+ if (isLoaded) return;
2690
+ setIsLoaded(true);
2691
+ startAudioPlayer.load("/sounds/warning.wav", {
2692
+ html5: true
2693
+ });
2694
+ endAudioPlayer.load("/sounds/success.wav", {
2695
+ html5: true
2696
+ });
2697
+ }, [
2698
+ isLoaded,
2699
+ startAudioPlayer,
2700
+ endAudioPlayer
2701
+ ]);
2702
+ var audioCaptureProps = (0, import_use_audio_capture.useAudioCapture)({
2703
+ onStart: function(event, opts) {
2704
+ startAudioPlayer.play();
2705
+ setStatus("recording");
2706
+ setMediaStream(opts.mediaStream);
2707
+ isInited.current = false;
2708
+ if (onStart) onStart(event, opts);
2709
+ setSilenceStart(null);
2710
+ setNoiseStart(null);
2711
+ },
2712
+ onStop: /*#__PURE__*/ _async_to_generator(function() {
2713
+ var _len, args, _key;
2714
+ var _arguments = arguments;
2715
+ return _ts_generator(this, function(_state) {
2716
+ switch(_state.label){
2717
+ case 0:
2718
+ for(_len = _arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
2719
+ args[_key] = _arguments[_key];
2720
+ }
2721
+ endAudioPlayer.play();
2722
+ setStatus("stopped");
2723
+ if (!onStop) return [
2724
+ 3,
2725
+ 2
2726
+ ];
2727
+ return [
2728
+ 4,
2729
+ onStop.apply(void 0, _to_consumable_array(args))
2730
+ ];
2731
+ case 1:
2732
+ _state.sent();
2733
+ _state.label = 2;
2734
+ case 2:
2735
+ setSilenceStart(null);
2736
+ setNoiseStart(null);
2737
+ return [
2738
+ 2
2739
+ ];
2740
+ }
2741
+ });
2742
+ }),
2743
+ onPause: function() {
2744
+ setStatus("paused");
2745
+ setSilenceStart(null);
2746
+ setNoiseStart(null);
2747
+ },
2748
+ onResume: function() {
2749
+ setStatus("recording");
2750
+ setSilenceStart(null);
2751
+ setNoiseStart(null);
2752
+ }
2753
+ });
2754
+ var _ref5 = _sliced_to_array((0, import_react33.useState)(null), 2), audioEngine = _ref5[0], setAudioEngine = _ref5[1];
2755
+ var isInited = (0, import_react33.useRef)(false);
2756
+ (0, import_react33.useEffect)(function() {
2757
+ if (!mediaStream) return;
2758
+ if (isInited.current) return;
2759
+ isInited.current = true;
2760
+ var audioContext = new AudioContext();
2761
+ setAudioEngine({
2762
+ source: audioContext.createMediaStreamSource(mediaStream),
2763
+ audioContext: audioContext
2764
+ });
2765
+ }, [
2766
+ isInited,
2767
+ mediaStream
2768
+ ]);
2769
+ var visualizationAnalyser = (0, import_react33.useMemo)(function() {
2770
+ if (!audioEngine) return null;
2771
+ var result = audioEngine.audioContext.createAnalyser();
2772
+ audioEngine.source.connect(result);
2773
+ return result;
2774
+ }, [
2775
+ audioEngine
2776
+ ]);
2777
+ var silenceAnalyser = (0, import_react33.useMemo)(function() {
2778
+ if (!audioEngine) return null;
2779
+ var result = audioEngine.audioContext.createAnalyser();
2780
+ result.minDecibels = -45;
2781
+ audioEngine.source.connect(result);
2782
+ return result;
2783
+ }, [
2784
+ audioEngine
2785
+ ]);
2786
+ var handleSilence = (0, import_react33.useCallback)(function() {
2787
+ if (!silenceAnalyser) return;
2788
+ var frequencyData = new Uint8Array(silenceAnalyser.frequencyBinCount);
2789
+ silenceAnalyser.getByteFrequencyData(frequencyData);
2790
+ var isSilent = frequencyData.every(function(f) {
2791
+ return f === 0;
2792
+ });
2793
+ setSilenceStart(function(silenceStart2) {
2794
+ if (isSilent) return silenceStart2 || (0, import_dayjs.default)();
2795
+ return null;
2796
+ });
2797
+ setNoiseStart(function(noiseStart2) {
2798
+ if (isSilent) return noiseStart2;
2799
+ return noiseStart2 || (0, import_dayjs.default)();
2800
+ });
2801
+ requestAnimationFrame(function() {
2802
+ return handleSilence();
2803
+ });
2804
+ }, [
2805
+ silenceAnalyser,
2806
+ setNoiseStart,
2807
+ setSilenceStart
2808
+ ]);
2809
+ (0, import_react33.useEffect)(function() {
2810
+ if (!isStopOnSilence) return;
2811
+ requestAnimationFrame(function() {
2812
+ return handleSilence();
2813
+ });
2814
+ }, [
2815
+ handleSilence,
2816
+ isStopOnSilence
2817
+ ]);
2818
+ (0, import_react_use3.useInterval)(function() {
2819
+ if (!isStopOnSilence) return;
2820
+ if (status !== "recording") return;
2821
+ if (!silenceStart) return;
2822
+ if (!noiseStart) return;
2823
+ if (!silenceStart.isBefore((0, import_dayjs.default)().subtract(1, "second"))) return;
2824
+ audioCaptureProps.stop();
2825
+ }, 100);
2826
+ return _object_spread_props(_object_spread({}, audioCaptureProps), {
2827
+ status: status,
2828
+ visualizationAnalyser: visualizationAnalyser
2829
+ });
2830
+ };
2831
+ // src/hooks/audioThreads/useMessageAudio/index.ts
2832
+ var import_react34 = require("react");
2833
+ var import_howler = require("howler");
2834
+ var import_react_use_audio_player2 = require("react-use-audio-player");
2835
+ // src/hooks/audioThreads/useMessageAudio/lib/input.ts
2836
+ var import_radash9 = require("radash");
2837
+ var input = function(param) {
2838
+ var threadMessage = param.threadMessage;
2839
+ var textContents = threadMessage.content.filter(function(c) {
2840
+ return c.type === "text";
2841
+ });
2842
+ var result = textContents.map(function(c) {
2843
+ return c.text.value;
2844
+ }).join(" ");
2845
+ if ((0, import_radash9.isEmpty)(result)) return null;
2846
+ return result;
2847
+ };
2848
+ // src/hooks/audioThreads/useMessageAudio/lib/isHtmlAudioSupported.ts
2849
+ var import_detect_browser = require("detect-browser");
2850
+ var unsupportedNames = [
2851
+ "safari",
2852
+ "ios"
2853
+ ];
2854
+ var isHtmlAudioSupported = !unsupportedNames.includes(((_this = (0, import_detect_browser.detect)()) === null || _this === void 0 ? void 0 : _this.name) || "");
2855
+ // src/hooks/audioThreads/useMessageAudio/index.ts
2856
+ var useMessageAudio = function(param) {
2857
+ var onEnd = param.onEnd;
2858
+ var _ref = _sliced_to_array((0, import_react34.useState)([]), 2), playedMessageIds = _ref[0], setPlayedMessageIds = _ref[1];
2859
+ var audioPlayer = (0, import_react_use_audio_player2.useAudioPlayer)();
2860
+ var superinterfaceContext = useSuperinterfaceContext();
2861
+ var latestThreadMessageProps = useLatestThreadMessage();
2862
+ (0, import_react34.useEffect)(function() {
2863
+ if (audioPlayer.playing) return;
2864
+ if (!latestThreadMessageProps.latestThreadMessage) return;
2865
+ if (latestThreadMessageProps.latestThreadMessage.role !== "assistant") return;
2866
+ if (playedMessageIds.includes(latestThreadMessageProps.latestThreadMessage.id)) return;
2867
+ var input2 = input({
2868
+ threadMessage: latestThreadMessageProps.latestThreadMessage
2869
+ });
2870
+ if (!input2) return;
2871
+ setPlayedMessageIds(function(prev) {
2872
+ return _to_consumable_array(prev).concat([
2873
+ latestThreadMessageProps.latestThreadMessage.id
2874
+ ]);
2875
+ });
2876
+ audioPlayer.load("".concat(superinterfaceContext.baseUrl, "/tts?input=").concat(input2), {
2877
+ format: "mp3",
2878
+ autoplay: true,
2879
+ html5: isHtmlAudioSupported,
2880
+ onend: onEnd
2881
+ });
2882
+ }, [
2883
+ superinterfaceContext,
2884
+ latestThreadMessageProps,
2885
+ audioPlayer,
2886
+ playedMessageIds,
2887
+ onEnd
2888
+ ]);
2889
+ var isInited = (0, import_react34.useRef)(false);
2890
+ var _ref1 = _sliced_to_array((0, import_react34.useState)(null), 2), audioEngine = _ref1[0], setAudioEngine = _ref1[1];
2891
+ (0, import_react34.useEffect)(function() {
2892
+ if (!audioPlayer.playing) return;
2893
+ if (isInited.current) return;
2894
+ isInited.current = true;
2895
+ if (isHtmlAudioSupported) {
2896
+ var audioContext = new AudioContext();
2897
+ setAudioEngine({
2898
+ // @ts-ignore-next-line
2899
+ source: audioContext.createMediaElementSource(import_howler.Howler._howls[0]._sounds[0]._node),
2900
+ audioContext: audioContext
2901
+ });
2902
+ } else {
2903
+ setAudioEngine({
2904
+ source: import_howler.Howler.masterGain,
2905
+ audioContext: import_howler.Howler.ctx
2906
+ });
2907
+ }
2908
+ }, [
2909
+ audioPlayer,
2910
+ isInited
2911
+ ]);
2912
+ var visualizationAnalyser = (0, import_react34.useMemo)(function() {
2913
+ if (!audioEngine) return null;
2914
+ var result = audioEngine.audioContext.createAnalyser();
2915
+ audioEngine.source.connect(audioEngine.audioContext.destination);
2916
+ audioEngine.source.connect(result);
2917
+ return result;
2918
+ }, [
2919
+ audioEngine
2920
+ ]);
2921
+ return _object_spread_props(_object_spread({}, audioPlayer), {
2922
+ visualizationAnalyser: visualizationAnalyser
2923
+ });
2924
+ };
2925
+ // src/components/threads/AudioThread/Root/index.tsx
2926
+ var import_jsx_runtime46 = require("react/jsx-runtime");
2927
+ var Root2 = function(param) {
2928
+ var children = param.children;
2929
+ useThreadLifecycles();
2930
+ var createThreadMessageProps = useCreateThreadMessage();
2931
+ var _ref = (0, import_react_speech_recognition.useSpeechRecognition)(), transcript = _ref.transcript, listening = _ref.listening, resetTranscript = _ref.resetTranscript, browserSupportsSpeechRecognition = _ref.browserSupportsSpeechRecognition, rest = _object_without_properties(_ref, [
2932
+ "transcript",
2933
+ "listening",
2934
+ "resetTranscript",
2935
+ "browserSupportsSpeechRecognition"
2936
+ ]);
2937
+ var transcriptRef = (0, import_react35.useRef)(transcript);
2938
+ (0, import_react35.useEffect)(function() {
2939
+ transcriptRef.current = transcript;
2940
+ }, [
2941
+ transcript
2942
+ ]);
2943
+ var recorderProps = useRecorder({
2944
+ isStopOnSilence: true,
2945
+ onStart: /*#__PURE__*/ _async_to_generator(function() {
2946
+ return _ts_generator(this, function(_state) {
2947
+ console.log("start");
2948
+ resetTranscript();
2949
+ import_react_speech_recognition.default.default.startListening({
2950
+ continuous: true
2951
+ });
2952
+ return [
2953
+ 2
2954
+ ];
2955
+ });
2956
+ }),
2957
+ onStop: function() {
2958
+ var _ref = _async_to_generator(function(_event, chunks) {
2959
+ return _ts_generator(this, function(_state) {
2960
+ console.log({
2961
+ transcript: transcriptRef.current
2962
+ });
2963
+ return [
2964
+ 2,
2965
+ createThreadMessageProps.createThreadMessage({
2966
+ content: transcriptRef.current
2967
+ })
2968
+ ];
2969
+ });
2970
+ });
2971
+ return function(_event, chunks) {
2972
+ return _ref.apply(this, arguments);
2973
+ };
2974
+ }()
2975
+ });
2976
+ var microphonePermission = (0, import_react_use4.usePermission)({
2977
+ name: "microphone"
2978
+ });
2979
+ var messageAudioProps = useMessageAudio({
2980
+ onEnd: function() {
2981
+ if (microphonePermission === "granted") {
2982
+ recorderProps.start();
2983
+ }
2984
+ }
2985
+ });
2986
+ var status = useStatus({
2987
+ recorderProps: recorderProps,
2988
+ createThreadMessageProps: createThreadMessageProps,
2989
+ messageAudioProps: messageAudioProps
2990
+ }).status;
2991
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(AudioThreadContext.Provider, {
2992
+ value: {
2993
+ status: status,
2994
+ recorderProps: recorderProps,
2995
+ messageAudioProps: messageAudioProps
2996
+ },
2997
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_themes36.Flex, {
2998
+ direction: "column",
2999
+ grow: "1",
3000
+ p: "5",
3001
+ children: children
3002
+ })
3003
+ });
3004
+ };
3005
+ // src/components/threads/AudioThread/Visualization/index.tsx
3006
+ var import_themes37 = require("@radix-ui/themes");
3007
+ // src/hooks/threads/useAudioThreadContext/index.ts
3008
+ var import_react36 = require("react");
3009
+ var useAudioThreadContext = function() {
3010
+ return (0, import_react36.useContext)(AudioThreadContext);
3011
+ };
3012
+ // src/components/threads/AudioThread/Visualization/index.tsx
3013
+ var import_jsx_runtime47 = require("react/jsx-runtime");
3014
+ var Visualization = function() {
3015
+ var audioThreadContext = useAudioThreadContext();
3016
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_themes37.Flex, {
3017
+ direction: "column",
3018
+ align: "center",
3019
+ justify: "center",
3020
+ mb: "3",
3021
+ grow: "1",
3022
+ children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_themes37.Flex, {
3023
+ align: "center",
3024
+ justify: "center",
3025
+ style: {
3026
+ backgroundColor: "var(--".concat(audioThreadContext.status === "playing" ? "mint" : "gray", "-4)"),
3027
+ height: "200px",
3028
+ width: "200px",
3029
+ borderRadius: "9999px"
3030
+ }
3031
+ })
3032
+ });
3033
+ };
3034
+ // src/components/threads/AudioThread/Form/index.tsx
3035
+ var import_react_icons8 = require("@radix-ui/react-icons");
3036
+ var import_themes40 = require("@radix-ui/themes");
3037
+ // src/components/threads/AudioThread/Form/Visualizer/index.tsx
3038
+ var import_lodash7 = __toESM(require("lodash"), 1);
3039
+ var import_themes38 = require("@radix-ui/themes");
3040
+ var import_react37 = require("react");
3041
+ var import_radash10 = require("radash");
3042
+ var import_jsx_runtime48 = require("react/jsx-runtime");
3043
+ var barCount = 4;
3044
+ var Visualizer = function() {
3045
+ var audioThreadContext = useAudioThreadContext();
3046
+ var visualizationAnalyser = audioThreadContext.recorderProps.visualizationAnalyser;
3047
+ var _ref = _sliced_to_array((0, import_react37.useState)(function() {
3048
+ return new AudioContext().createAnalyser();
3049
+ }), 1), emptyVisualizer = _ref[0];
3050
+ var _ref1 = _sliced_to_array((0, import_react37.useState)([]), 2), barHeights = _ref1[0], setBarHeights = _ref1[1];
3051
+ var draw = (0, import_react37.useCallback)(function(param) {
3052
+ var visualizationAnalyser2 = param.visualizationAnalyser;
3053
+ var frequencyData = new Uint8Array(visualizationAnalyser2.frequencyBinCount / 15);
3054
+ visualizationAnalyser2.getByteFrequencyData(frequencyData);
3055
+ var clusteredFrequencyData = (0, import_radash10.cluster)(frequencyData, frequencyData.length / barCount);
3056
+ setBarHeights(clusteredFrequencyData.map(function(frequencyDataCluster) {
3057
+ return import_lodash7.default.mean(frequencyDataCluster) / 255 * 100;
3058
+ }));
3059
+ requestAnimationFrame(function() {
3060
+ return draw({
3061
+ visualizationAnalyser: visualizationAnalyser2
3062
+ });
3063
+ });
3064
+ }, []);
3065
+ (0, import_react37.useEffect)(function() {
3066
+ draw({
3067
+ visualizationAnalyser: visualizationAnalyser || emptyVisualizer
3068
+ });
3069
+ }, [
3070
+ draw,
3071
+ visualizationAnalyser,
3072
+ emptyVisualizer
3073
+ ]);
3074
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_themes38.Grid, {
3075
+ columns: "".concat(barCount),
3076
+ gap: "1",
3077
+ width: "auto",
3078
+ style: {
3079
+ // TODO not sure why we need this
3080
+ gridTemplateColumns: "repeat(4, minmax(0, 1fr))"
3081
+ },
3082
+ children: barHeights.map(function(barHeight, index) {
3083
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_themes38.Flex, {
3084
+ direction: "column",
3085
+ align: "center",
3086
+ justify: "center",
3087
+ style: {
3088
+ height: "20px"
3089
+ },
3090
+ children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_themes38.Flex, {
3091
+ style: {
3092
+ backgroundColor: "var(--".concat(audioThreadContext.status === "recording" ? "mint" : "gray", "-11)"),
3093
+ borderRadius: "var(--radius-6)",
3094
+ height: "".concat(barHeight + 20, "%"),
3095
+ minHeight: "50%",
3096
+ maxHeight: "100%",
3097
+ width: "12px"
3098
+ }
3099
+ })
3100
+ }, index);
3101
+ })
3102
+ });
3103
+ };
3104
+ // src/components/threads/AudioThread/Form/ActionButton/index.tsx
3105
+ var import_themes39 = require("@radix-ui/themes");
3106
+ var import_react_icons7 = require("@radix-ui/react-icons");
3107
+ var import_jsx_runtime49 = require("react/jsx-runtime");
3108
+ var ActionButton = function() {
3109
+ var audioThreadContext = useAudioThreadContext();
3110
+ if (audioThreadContext.status === "recording") {
3111
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_themes39.Flex, {
3112
+ align: "center",
3113
+ children: [
3114
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.Flex, {
3115
+ mr: "3",
3116
+ ml: "-7",
3117
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3118
+ onClick: audioThreadContext.recorderProps.pause,
3119
+ color: "gray",
3120
+ radius: "full",
3121
+ size: "1",
3122
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_icons7.PauseIcon, {})
3123
+ })
3124
+ }),
3125
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.Tooltip, {
3126
+ open: true,
3127
+ content: "Send your message",
3128
+ side: "bottom",
3129
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3130
+ onClick: audioThreadContext.recorderProps.stop,
3131
+ color: "gray",
3132
+ highContrast: true,
3133
+ radius: "full",
3134
+ size: "4",
3135
+ style: {
3136
+ border: "2px solid var(--gray-8)"
3137
+ },
3138
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_icons7.ArrowUpIcon, {})
3139
+ })
3140
+ })
3141
+ ]
3142
+ });
3143
+ }
3144
+ if (audioThreadContext.status === "recorderPaused") {
3145
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3146
+ onClick: audioThreadContext.recorderProps.resume,
3147
+ color: "red",
3148
+ radius: "full",
3149
+ size: "4",
3150
+ style: {
3151
+ border: "2px solid var(--gray-8)"
3152
+ },
3153
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_icons7.ResumeIcon, {})
3154
+ });
3155
+ }
3156
+ if (audioThreadContext.status === "idle") {
3157
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3158
+ onClick: function() {
3159
+ return audioThreadContext.recorderProps.start();
3160
+ },
3161
+ size: "4",
3162
+ color: "red",
3163
+ radius: "full",
3164
+ style: {
3165
+ border: "2px solid var(--gray-8)"
3166
+ }
3167
+ });
3168
+ }
3169
+ if (audioThreadContext.status === "playing") {
3170
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3171
+ onClick: function() {
3172
+ return audioThreadContext.messageAudioProps.pause();
3173
+ },
3174
+ size: "4",
3175
+ color: "gray",
3176
+ radius: "full",
3177
+ style: {
3178
+ border: "2px solid var(--gray-8)"
3179
+ },
3180
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_icons7.PauseIcon, {})
3181
+ });
3182
+ }
3183
+ if (audioThreadContext.status === "playerPaused") {
3184
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3185
+ onClick: function() {
3186
+ return audioThreadContext.messageAudioProps.play();
3187
+ },
3188
+ size: "4",
3189
+ color: "gray",
3190
+ radius: "full",
3191
+ style: {
3192
+ border: "2px solid var(--gray-8)"
3193
+ },
3194
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_icons7.ResumeIcon, {})
3195
+ });
3196
+ }
3197
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3198
+ size: "4",
3199
+ color: "red",
3200
+ radius: "full",
3201
+ disabled: true,
3202
+ style: {
3203
+ border: "2px solid var(--gray-8)"
3204
+ }
3205
+ });
3206
+ };
3207
+ // src/components/threads/AudioThread/Form/index.tsx
3208
+ var import_jsx_runtime50 = require("react/jsx-runtime");
3209
+ var Form = function() {
3210
+ var audioThreadContext = useAudioThreadContext();
3211
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_themes40.Flex, {
3212
+ direction: "column",
3213
+ align: "center",
3214
+ children: [
3215
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_themes40.Flex, {
3216
+ pb: "3",
3217
+ align: "center",
3218
+ children: [
3219
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_themes40.Flex, {
3220
+ ml: "-5",
3221
+ mr: "2",
3222
+ align: "center",
3223
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_icons8.SpeakerModerateIcon, {
3224
+ style: {
3225
+ color: "var(--".concat(audioThreadContext.status === "recording" ? "mint" : "gray", "-12)")
3226
+ }
3227
+ })
3228
+ }),
3229
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_themes40.Flex, {
3230
+ px: "2",
3231
+ py: "1",
3232
+ style: {
3233
+ backgroundColor: "var(--".concat(audioThreadContext.status === "recording" ? "mint" : "gray", "-4)"),
3234
+ borderRadius: "var(--radius-6)"
3235
+ },
3236
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Visualizer, {})
3237
+ })
3238
+ ]
3239
+ }),
3240
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ActionButton, {})
3241
+ ]
3242
+ });
3243
+ };
3244
+ // src/components/threads/AudioThread/index.tsx
3245
+ var import_jsx_runtime51 = require("react/jsx-runtime");
3246
+ var AudioThread = function(props) {
3247
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Root2, _object_spread_props(_object_spread({}, props), {
3248
+ children: [
3249
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Visualization, {}),
3250
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Form, {})
3251
+ ]
3252
+ }));
3253
+ };
3254
+ AudioThread.Root = Root2;
3255
+ AudioThread.Visualization = Visualization;
3256
+ AudioThread.Form = Form;
3257
+ // src/components/threads/AudioThreadDialog/index.tsx
3258
+ var import_jsx_runtime52 = require("react/jsx-runtime");
3259
+ var AudioThreadDialog = function() {
3260
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(Root, {
3261
+ children: [
3262
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Content4, {
3263
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(AudioThread, {})
3264
+ }),
3265
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Trigger, {
3266
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button3, {})
3267
+ })
3268
+ ]
3269
+ });
3270
+ };
3271
+ AudioThreadDialog.Root = Root;
3272
+ AudioThreadDialog.Trigger = Trigger;
3273
+ AudioThreadDialog.Button = Button3;
3274
+ AudioThreadDialog.Content = Content4;
3275
+ // src/components/suggestions/Suggestions/index.tsx
3276
+ var import_react38 = require("react");
3277
+ var import_themes42 = require("@radix-ui/themes");
3278
+ // src/components/suggestions/Suggestion/index.tsx
3279
+ var import_react_icons9 = require("@radix-ui/react-icons");
3280
+ var import_themes41 = require("@radix-ui/themes");
3281
+ var import_jsx_runtime53 = require("react/jsx-runtime");
3282
+ var Suggestion = function(param) {
3283
+ var suggestion = param.suggestion;
3284
+ var createThreadMessage = useCreateThreadMessage().createThreadMessage;
3285
+ var _useIsRunActive = useIsRunActive(), isRunActive2 = _useIsRunActive.isRunActive;
3286
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_themes41.Button, {
3287
+ variant: "soft",
3288
+ style: {
3289
+ justifyContent: "space-between"
3290
+ },
3291
+ onClick: function() {
3292
+ createThreadMessage({
3293
+ content: suggestion
3294
+ });
3295
+ },
3296
+ disabled: isRunActive2,
3297
+ children: [
3298
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_themes41.Text, {
3299
+ size: "1",
3300
+ weight: "regular",
3301
+ children: suggestion
3302
+ }),
3303
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_icons9.ArrowUpIcon, {})
3304
+ ]
3305
+ });
3306
+ };
3307
+ // src/components/suggestions/Suggestions/index.tsx
3308
+ var import_jsx_runtime54 = require("react/jsx-runtime");
3309
+ var Suggestions = function(param) {
3310
+ var _param_emptyStateSuggestions = param.emptyStateSuggestions, emptyStateSuggestions = _param_emptyStateSuggestions === void 0 ? [] : _param_emptyStateSuggestions, _param_suggestions = param.suggestions, suggestions = _param_suggestions === void 0 ? [] : _param_suggestions;
3311
+ var latestThreadMessageProps = useLatestThreadMessage();
3312
+ var isRunActiveProps = useIsRunActive();
3313
+ var isDisabled = (0, import_react38.useMemo)(function() {
3314
+ var // @ts-ignore-next-line
3315
+ _latestThreadMessageProps_latestThreadMessage_metadata, _latestThreadMessageProps_latestThreadMessage;
3316
+ return ((_latestThreadMessageProps_latestThreadMessage = latestThreadMessageProps.latestThreadMessage) === null || _latestThreadMessageProps_latestThreadMessage === void 0 ? void 0 : (_latestThreadMessageProps_latestThreadMessage_metadata = _latestThreadMessageProps_latestThreadMessage.metadata) === null || _latestThreadMessageProps_latestThreadMessage_metadata === void 0 ? void 0 : _latestThreadMessageProps_latestThreadMessage_metadata.isBlocking) || isRunActiveProps.isRunActive;
3317
+ }, [
3318
+ latestThreadMessageProps,
3319
+ isRunActiveProps
3320
+ ]);
3321
+ if (latestThreadMessageProps.isLoading) return null;
3322
+ if (isDisabled) return null;
3323
+ if (!latestThreadMessageProps.latestThreadMessage && emptyStateSuggestions.length > 0) {
3324
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes42.Flex, {
3325
+ gap: "2",
3326
+ py: "2",
3327
+ wrap: "wrap",
3328
+ children: emptyStateSuggestions.map(function(suggestion) {
3329
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Suggestion, {
3330
+ suggestion: suggestion
3331
+ }, suggestion);
3332
+ })
3333
+ });
3334
+ }
3335
+ if (latestThreadMessageProps.latestThreadMessage.role === "assistant") {
3336
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes42.Flex, {
3337
+ gap: "2",
3338
+ py: "2",
3339
+ wrap: "wrap",
3340
+ children: suggestions.map(function(suggestion) {
3341
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Suggestion, {
3342
+ suggestion: suggestion
3343
+ }, suggestion);
3344
+ })
3345
+ });
3346
+ }
3347
+ return null;
3348
+ };
3349
+ // src/hooks/markdown/useMarkdownContext/index.ts
3350
+ var import_react39 = require("react");
3351
+ var useMarkdownContext = function() {
3352
+ return (0, import_react39.useContext)(MarkdownContext);
3353
+ };
3354
+ // Annotate the CommonJS export names for ESM import in node:
3355
+ 0 && (module.exports = {
3356
+ AssistantAvatarContext: AssistantAvatarContext,
3357
+ AssistantNameContext: AssistantNameContext,
3358
+ AudioThread: AudioThread,
3359
+ AudioThreadDialog: AudioThreadDialog,
3360
+ FunctionBase: FunctionBase,
3361
+ FunctionComponentsContext: FunctionComponentsContext,
3362
+ MarkdownContext: MarkdownContext,
3363
+ Suggestion: Suggestion,
3364
+ Suggestions: Suggestions,
3365
+ SuperinterfaceProvider: SuperinterfaceProvider,
3366
+ Thread: Thread,
3367
+ ThreadDialog: ThreadDialog,
3368
+ ThreadMessageForm: ThreadMessageForm,
3369
+ ThreadMessages: ThreadMessages,
3370
+ ThreadProvider: ThreadProvider,
3371
+ useCreateRun: useCreateRun,
3372
+ useCreateThreadMessage: useCreateThreadMessage,
3373
+ useIsRunActive: useIsRunActive,
3374
+ useLatestRun: useLatestRun,
3375
+ useLatestThreadMessage: useLatestThreadMessage,
3376
+ useMarkdownContext: useMarkdownContext,
3377
+ useRuns: useRuns,
3378
+ useSuperinterfaceContext: useSuperinterfaceContext,
3379
+ useThreadContext: useThreadContext,
3380
+ useThreadLifecycles: useThreadLifecycles,
3381
+ useThreadMessages: useThreadMessages
3382
+ });
3383
+ //# sourceMappingURL=index.cjs.map