@superinterface/react 2.0.3 → 2.0.5
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-Dp6WTBGJ.d.cts +12 -0
- package/dist/index-Dp6WTBGJ.d.ts +12 -0
- package/dist/index.cjs +731 -541
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +41 -29
- package/dist/index.d.ts +41 -29
- package/dist/index.js +679 -493
- package/dist/index.js.map +1 -1
- package/dist/queryFns.cjs +163 -1
- package/dist/queryFns.cjs.map +1 -1
- package/dist/queryFns.d.cts +25 -1
- package/dist/queryFns.d.ts +25 -1
- package/dist/queryFns.js +155 -1
- package/dist/queryFns.js.map +1 -1
- package/package.json +5 -3
package/dist/queryFns.cjs
CHANGED
|
@@ -4,6 +4,9 @@ function _array_like_to_array(arr, len) {
|
|
|
4
4
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
5
5
|
return arr2;
|
|
6
6
|
}
|
|
7
|
+
function _array_with_holes(arr) {
|
|
8
|
+
if (Array.isArray(arr)) return arr;
|
|
9
|
+
}
|
|
7
10
|
function _array_without_holes(arr) {
|
|
8
11
|
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
9
12
|
}
|
|
@@ -52,6 +55,33 @@ function _define_property(obj, key, value) {
|
|
|
52
55
|
function _iterable_to_array(iter) {
|
|
53
56
|
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
54
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
|
+
}
|
|
55
85
|
function _non_iterable_spread() {
|
|
56
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.");
|
|
57
87
|
}
|
|
@@ -94,6 +124,9 @@ function _object_spread_props(target, source) {
|
|
|
94
124
|
}
|
|
95
125
|
return target;
|
|
96
126
|
}
|
|
127
|
+
function _sliced_to_array(arr, i) {
|
|
128
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
129
|
+
}
|
|
97
130
|
function _to_consumable_array(arr) {
|
|
98
131
|
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
99
132
|
}
|
|
@@ -264,8 +297,14 @@ __export(queryFns_exports, {
|
|
|
264
297
|
messagesQueryFn: function() {
|
|
265
298
|
return messagesQueryFn;
|
|
266
299
|
},
|
|
300
|
+
messagesQueryOptions: function() {
|
|
301
|
+
return messagesQueryOptions;
|
|
302
|
+
},
|
|
267
303
|
runsQueryFn: function() {
|
|
268
304
|
return runsQueryFn;
|
|
305
|
+
},
|
|
306
|
+
runsQueryOptions: function() {
|
|
307
|
+
return runsQueryOptions;
|
|
269
308
|
}
|
|
270
309
|
});
|
|
271
310
|
module.exports = __toCommonJS(queryFns_exports);
|
|
@@ -376,6 +415,12 @@ var optimisticId = function() {
|
|
|
376
415
|
return "-".concat((0, import_radash.uid)(24));
|
|
377
416
|
};
|
|
378
417
|
// src/lib/messages/messagesQueryFn/data/runMessages/index.ts
|
|
418
|
+
var progressStatuses = [
|
|
419
|
+
"queued",
|
|
420
|
+
"in_progress",
|
|
421
|
+
"requires_action",
|
|
422
|
+
"cancelling"
|
|
423
|
+
];
|
|
379
424
|
var runMessages = function() {
|
|
380
425
|
var _ref = _async_to_generator(function(param) {
|
|
381
426
|
var messages, threadId, client, latestRun, messageFromLatestRun;
|
|
@@ -407,6 +452,12 @@ var runMessages = function() {
|
|
|
407
452
|
[]
|
|
408
453
|
];
|
|
409
454
|
}
|
|
455
|
+
if (!progressStatuses.includes(latestRun.status)) {
|
|
456
|
+
return [
|
|
457
|
+
2,
|
|
458
|
+
[]
|
|
459
|
+
];
|
|
460
|
+
}
|
|
410
461
|
return [
|
|
411
462
|
4,
|
|
412
463
|
extendMessage({
|
|
@@ -537,6 +588,102 @@ var messagesQueryFn = function() {
|
|
|
537
588
|
return _ref.apply(this, arguments);
|
|
538
589
|
};
|
|
539
590
|
}();
|
|
591
|
+
// src/lib/threads/queryOptions/index.ts
|
|
592
|
+
var import_react_query = require("@tanstack/react-query");
|
|
593
|
+
var queryOptions = function(param) {
|
|
594
|
+
var queryKeyBase = param.queryKeyBase, path = param.path, queryClient = param.queryClient, threadContext = param.threadContext, superinterfaceContext = param.superinterfaceContext;
|
|
595
|
+
var queryKey = _to_consumable_array(queryKeyBase).concat([
|
|
596
|
+
threadContext.variables
|
|
597
|
+
]);
|
|
598
|
+
return (0, import_react_query.infiniteQueryOptions)(_object_spread_props(_object_spread({
|
|
599
|
+
// @ts-ignore-next-line
|
|
600
|
+
queryFn: function() {
|
|
601
|
+
var _ref = _async_to_generator(function(param) {
|
|
602
|
+
var pageParam, queryKey2, _queryKey2, _key, variables, params;
|
|
603
|
+
return _ts_generator(this, function(_state) {
|
|
604
|
+
pageParam = param.pageParam, queryKey2 = param.queryKey;
|
|
605
|
+
_queryKey2 = _sliced_to_array(queryKey2, 2), _key = _queryKey2[0], variables = _queryKey2[1];
|
|
606
|
+
params = new URLSearchParams(_object_spread({}, pageParam ? {
|
|
607
|
+
pageParam: pageParam
|
|
608
|
+
} : {}, variables));
|
|
609
|
+
return [
|
|
610
|
+
2,
|
|
611
|
+
fetch("".concat(superinterfaceContext.baseUrl).concat(path, "?").concat(params), _object_spread({
|
|
612
|
+
credentials: "include"
|
|
613
|
+
}, superinterfaceContext.publicApiKey ? {
|
|
614
|
+
headers: {
|
|
615
|
+
Authorization: "Bearer ".concat(superinterfaceContext.publicApiKey)
|
|
616
|
+
}
|
|
617
|
+
} : {})).then(function() {
|
|
618
|
+
var _ref = _async_to_generator(function(response) {
|
|
619
|
+
var errorResponse, error;
|
|
620
|
+
return _ts_generator(this, function(_state) {
|
|
621
|
+
switch(_state.label){
|
|
622
|
+
case 0:
|
|
623
|
+
if (!(response.status !== 200)) return [
|
|
624
|
+
3,
|
|
625
|
+
4
|
|
626
|
+
];
|
|
627
|
+
_state.label = 1;
|
|
628
|
+
case 1:
|
|
629
|
+
_state.trys.push([
|
|
630
|
+
1,
|
|
631
|
+
3,
|
|
632
|
+
,
|
|
633
|
+
4
|
|
634
|
+
]);
|
|
635
|
+
return [
|
|
636
|
+
4,
|
|
637
|
+
response.json()
|
|
638
|
+
];
|
|
639
|
+
case 2:
|
|
640
|
+
errorResponse = _state.sent();
|
|
641
|
+
throw new Error(errorResponse.error);
|
|
642
|
+
case 3:
|
|
643
|
+
error = _state.sent();
|
|
644
|
+
throw new Error("Failed to fetch");
|
|
645
|
+
case 4:
|
|
646
|
+
return [
|
|
647
|
+
2,
|
|
648
|
+
response.json()
|
|
649
|
+
];
|
|
650
|
+
}
|
|
651
|
+
});
|
|
652
|
+
});
|
|
653
|
+
return function(response) {
|
|
654
|
+
return _ref.apply(this, arguments);
|
|
655
|
+
};
|
|
656
|
+
}())
|
|
657
|
+
];
|
|
658
|
+
});
|
|
659
|
+
});
|
|
660
|
+
return function(_) {
|
|
661
|
+
return _ref.apply(this, arguments);
|
|
662
|
+
};
|
|
663
|
+
}(),
|
|
664
|
+
initialPageParam: void 0,
|
|
665
|
+
getNextPageParam: function(lastPage) {
|
|
666
|
+
if (!lastPage.hasNextPage) return null;
|
|
667
|
+
return lastPage.lastId;
|
|
668
|
+
},
|
|
669
|
+
limit: 10
|
|
670
|
+
}, threadContext.defaultOptions.queries, queryClient.getQueryDefaults(queryKey)), {
|
|
671
|
+
queryKey: queryKey
|
|
672
|
+
}));
|
|
673
|
+
};
|
|
674
|
+
// src/lib/messages/messagesQueryOptions.ts
|
|
675
|
+
var messagesQueryOptions = function(param) {
|
|
676
|
+
var queryClient = param.queryClient, threadContext = param.threadContext, superinterfaceContext = param.superinterfaceContext;
|
|
677
|
+
return queryOptions({
|
|
678
|
+
queryKeyBase: [
|
|
679
|
+
"messages"
|
|
680
|
+
],
|
|
681
|
+
path: "/messages",
|
|
682
|
+
queryClient: queryClient,
|
|
683
|
+
threadContext: threadContext,
|
|
684
|
+
superinterfaceContext: superinterfaceContext
|
|
685
|
+
});
|
|
686
|
+
};
|
|
540
687
|
// src/lib/runs/runsQueryFn.ts
|
|
541
688
|
var runsQueryFn = function() {
|
|
542
689
|
var _ref = _async_to_generator(function(param) {
|
|
@@ -570,9 +717,24 @@ var runsQueryFn = function() {
|
|
|
570
717
|
return _ref.apply(this, arguments);
|
|
571
718
|
};
|
|
572
719
|
}();
|
|
720
|
+
// src/lib/runs/runsQueryOptions.ts
|
|
721
|
+
var runsQueryOptions = function(param) {
|
|
722
|
+
var queryClient = param.queryClient, threadContext = param.threadContext, superinterfaceContext = param.superinterfaceContext;
|
|
723
|
+
return queryOptions({
|
|
724
|
+
queryKeyBase: [
|
|
725
|
+
"runs"
|
|
726
|
+
],
|
|
727
|
+
path: "/runs",
|
|
728
|
+
queryClient: queryClient,
|
|
729
|
+
threadContext: threadContext,
|
|
730
|
+
superinterfaceContext: superinterfaceContext
|
|
731
|
+
});
|
|
732
|
+
};
|
|
573
733
|
// Annotate the CommonJS export names for ESM import in node:
|
|
574
734
|
0 && (module.exports = {
|
|
575
735
|
messagesQueryFn: messagesQueryFn,
|
|
576
|
-
|
|
736
|
+
messagesQueryOptions: messagesQueryOptions,
|
|
737
|
+
runsQueryFn: runsQueryFn,
|
|
738
|
+
runsQueryOptions: runsQueryOptions
|
|
577
739
|
});
|
|
578
740
|
//# sourceMappingURL=queryFns.cjs.map
|
package/dist/queryFns.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/queryFns.ts","../src/lib/ai/index.ts","../src/lib/messages/messagesQueryFn/data/index.ts","../src/lib/runSteps/getRunSteps/index.ts","../src/lib/messages/extendMessage.ts","../src/lib/messages/messagesQueryFn/data/runMessages/getLatestRun.ts","../src/lib/optimistic/optimisticId.ts","../src/lib/messages/messagesQueryFn/data/runMessages/index.ts","../src/lib/messages/messagesQueryFn/messagesLimit.ts","../src/lib/messages/messagesQueryFn/hasNextPage.ts","../src/lib/messages/messagesQueryFn/index.ts","../src/lib/runs/runsQueryFn.ts"],"names":["OpenAI","pMap"],"mappings":"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","sourcesContent":["export { messagesQueryFn } from '@/lib/messages/messagesQueryFn'\nexport { runsQueryFn } from '@/lib/runs/runsQueryFn'\n","import OpenAI from 'openai'\n\nexport const defaultClient = new OpenAI({\n apiKey: process.env.OPENAI_API_KEY!,\n})\n","import OpenAI from 'openai'\nimport pMap from 'p-map'\nimport { extendMessage } from '@/lib/messages/extendMessage'\nimport { runMessages } from './runMessages'\n\nexport const data = async ({\n messagesResponse,\n pageParam,\n threadId,\n client,\n}: {\n messagesResponse: OpenAI.CursorPage<OpenAI.Beta.Threads.Messages.ThreadMessage>\n pageParam?: string\n threadId: string\n client: OpenAI\n}) => {\n const messages = await pMap(messagesResponse.data, (message) => (\n extendMessage({\n client,\n message,\n })\n ))\n\n if (pageParam) {\n return messages\n }\n\n return [\n ...await runMessages({\n messages,\n threadId,\n client,\n }),\n ...messages,\n ]\n}\n","import OpenAI from 'openai'\n\ntype Args = {\n threadId: string\n runId: string\n client: OpenAI\n}\n\nexport const getRunSteps = async ({\n threadId,\n runId,\n client,\n}: Args) => {\n const runStepsResponse = await client.beta.threads.runs.steps.list(\n threadId,\n runId,\n )\n\n return runStepsResponse.data\n}\n","import OpenAI from 'openai'\nimport { getRunSteps } from '@/lib/runSteps/getRunSteps'\n\ntype Args = {\n message: OpenAI.Beta.Threads.Messages.ThreadMessage\n client: OpenAI\n}\n\nexport const extendMessage = async ({\n message,\n client,\n}: Args) => {\n if (!message.run_id) {\n return {\n ...message,\n runSteps: [],\n }\n }\n\n return {\n ...message,\n runSteps: await getRunSteps({\n threadId: message.thread_id,\n runId: message.run_id,\n client,\n }),\n }\n}\n","import OpenAI from 'openai'\n\ntype Args = {\n threadId: string\n client: OpenAI\n}\n\nexport const getLatestRun = async ({\n threadId,\n client,\n}: Args) => {\n const runsResponse = await client.beta.threads.runs.list(threadId, {\n limit: 1,\n })\n\n return runsResponse.data[0]\n}\n","import { uid } from 'radash'\n\nexport const optimisticId = () => (\n `-${uid(24)}`\n)\n","import OpenAI from 'openai'\nimport { Message } from '@/types'\nimport { getLatestRun } from './getLatestRun'\nimport { extendMessage } from '@/lib/messages/extendMessage'\nimport { optimisticId } from '@/lib/optimistic/optimisticId'\n\ntype Args = {\n messages: Message[]\n threadId: string\n client: OpenAI\n}\n\nexport const runMessages = async ({\n messages,\n threadId,\n client,\n}: Args) => {\n const latestRun = await getLatestRun({ threadId, client })\n\n if (!latestRun) {\n return []\n }\n\n const messageFromLatestRun = messages.find(m => m.run_id === latestRun.id)\n\n if (messageFromLatestRun) {\n return []\n }\n\n return [\n await extendMessage({\n message: {\n id: optimisticId(),\n role: 'assistant' as OpenAI.Beta.Threads.Messages.ThreadMessage['role'],\n created_at: +new Date(),\n object: 'thread.message' as OpenAI.Beta.Threads.Messages.ThreadMessage['object'],\n content: [],\n run_id: latestRun.id,\n assistant_id: latestRun.assistant_id,\n thread_id: latestRun.thread_id,\n file_ids: [],\n metadata: {},\n },\n client,\n }),\n ]\n}\n","export const messagesLimit = 10\n","import OpenAI from 'openai'\nimport { messagesLimit } from './messagesLimit'\n\nexport const hasNextPage = ({\n messagesResponse,\n}: {\n messagesResponse: OpenAI.CursorPage<OpenAI.Beta.Threads.Messages.ThreadMessage>\n}) => {\n if (messagesResponse.data.length < messagesLimit) return false\n\n return messagesResponse.hasNextPage()\n}\n","import _ from 'lodash'\nimport { defaultClient } from '@/lib/ai'\nimport { MessagesPage } from '@/types'\nimport { data } from './data'\nimport { messagesLimit } from './messagesLimit'\nimport { hasNextPage } from './hasNextPage'\n\ntype Args = {\n client?: typeof defaultClient\n threadId: string\n pageParam?: string\n}\n\nexport const messagesQueryFn = async ({\n client = defaultClient,\n threadId,\n pageParam,\n}: Args): Promise<MessagesPage> => {\n const messagesResponse = await client.beta.threads.messages.list(threadId, {\n ...(pageParam ? { after: pageParam } : {}),\n limit: messagesLimit,\n })\n\n return {\n data: await data({\n client,\n messagesResponse,\n pageParam,\n threadId,\n }),\n hasNextPage: hasNextPage({ messagesResponse }),\n // @ts-ignore-next-line\n lastId: messagesResponse.body.last_id,\n }\n}\n","import { RunsPage } from '@/types'\nimport { defaultClient } from '@/lib/ai'\n\ntype Args = {\n client?: typeof defaultClient\n threadId: string\n}\n\nexport const runsQueryFn = async ({\n client = defaultClient,\n threadId,\n}: Args): Promise<RunsPage> => {\n const response = await client.beta.threads.runs.list(threadId, {\n limit: 1,\n })\n\n return {\n // @ts-ignore-next-line\n data: response.data,\n hasNextPage: response.hasNextPage(),\n // @ts-ignore-next-line\n lastId: response.body.last_id,\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/queryFns.ts","../src/lib/ai/index.ts","../src/lib/messages/messagesQueryFn/data/index.ts","../src/lib/runSteps/getRunSteps/index.ts","../src/lib/messages/extendMessage.ts","../src/lib/messages/messagesQueryFn/data/runMessages/getLatestRun.ts","../src/lib/optimistic/optimisticId.ts","../src/lib/messages/messagesQueryFn/data/runMessages/index.ts","../src/lib/messages/messagesQueryFn/messagesLimit.ts","../src/lib/messages/messagesQueryFn/hasNextPage.ts","../src/lib/messages/messagesQueryFn/index.ts","../src/lib/threads/queryOptions/index.ts","../src/lib/messages/messagesQueryOptions.ts","../src/lib/runs/runsQueryFn.ts","../src/lib/runs/runsQueryOptions.ts"],"names":["OpenAI","pMap","queryKey"],"mappings":"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","sourcesContent":["export { messagesQueryFn } from '@/lib/messages/messagesQueryFn'\nexport { messagesQueryOptions } from '@/lib/messages/messagesQueryOptions'\nexport { runsQueryFn } from '@/lib/runs/runsQueryFn'\nexport { runsQueryOptions } from '@/lib/runs/runsQueryOptions'\n","import OpenAI from 'openai'\n\nexport const defaultClient = new OpenAI({\n apiKey: process.env.OPENAI_API_KEY!,\n})\n","import OpenAI from 'openai'\nimport pMap from 'p-map'\nimport { extendMessage } from '@/lib/messages/extendMessage'\nimport { runMessages } from './runMessages'\n\nexport const data = async ({\n messagesResponse,\n pageParam,\n threadId,\n client,\n}: {\n messagesResponse: OpenAI.CursorPage<OpenAI.Beta.Threads.Messages.ThreadMessage>\n pageParam?: string\n threadId: string\n client: OpenAI\n}) => {\n const messages = await pMap(messagesResponse.data, (message) => (\n extendMessage({\n client,\n message,\n })\n ))\n\n if (pageParam) {\n return messages\n }\n\n return [\n ...await runMessages({\n messages,\n threadId,\n client,\n }),\n ...messages,\n ]\n}\n","import OpenAI from 'openai'\n\ntype Args = {\n threadId: string\n runId: string\n client: OpenAI\n}\n\nexport const getRunSteps = async ({\n threadId,\n runId,\n client,\n}: Args) => {\n const runStepsResponse = await client.beta.threads.runs.steps.list(\n threadId,\n runId,\n )\n\n return runStepsResponse.data\n}\n","import OpenAI from 'openai'\nimport { getRunSteps } from '@/lib/runSteps/getRunSteps'\n\ntype Args = {\n message: OpenAI.Beta.Threads.Messages.ThreadMessage\n client: OpenAI\n}\n\nexport const extendMessage = async ({\n message,\n client,\n}: Args) => {\n if (!message.run_id) {\n return {\n ...message,\n runSteps: [],\n }\n }\n\n return {\n ...message,\n runSteps: await getRunSteps({\n threadId: message.thread_id,\n runId: message.run_id,\n client,\n }),\n }\n}\n","import OpenAI from 'openai'\n\ntype Args = {\n threadId: string\n client: OpenAI\n}\n\nexport const getLatestRun = async ({\n threadId,\n client,\n}: Args) => {\n const runsResponse = await client.beta.threads.runs.list(threadId, {\n limit: 1,\n })\n\n return runsResponse.data[0]\n}\n","import { uid } from 'radash'\n\nexport const optimisticId = () => (\n `-${uid(24)}`\n)\n","import OpenAI from 'openai'\nimport { Message } from '@/types'\nimport { getLatestRun } from './getLatestRun'\nimport { extendMessage } from '@/lib/messages/extendMessage'\nimport { optimisticId } from '@/lib/optimistic/optimisticId'\n\ntype Args = {\n messages: Message[]\n threadId: string\n client: OpenAI\n}\n\nconst progressStatuses = [\n 'queued',\n 'in_progress',\n 'requires_action',\n 'cancelling',\n]\n\nexport const runMessages = async ({\n messages,\n threadId,\n client,\n}: Args) => {\n const latestRun = await getLatestRun({ threadId, client })\n\n if (!latestRun) {\n return []\n }\n\n const messageFromLatestRun = messages.find(m => m.run_id === latestRun.id)\n\n if (messageFromLatestRun) {\n return []\n }\n\n if (!progressStatuses.includes(latestRun.status)) {\n return []\n }\n\n return [\n await extendMessage({\n message: {\n id: optimisticId(),\n role: 'assistant' as OpenAI.Beta.Threads.Messages.ThreadMessage['role'],\n created_at: +new Date(),\n object: 'thread.message' as OpenAI.Beta.Threads.Messages.ThreadMessage['object'],\n content: [],\n run_id: latestRun.id,\n assistant_id: latestRun.assistant_id,\n thread_id: latestRun.thread_id,\n file_ids: [],\n metadata: {},\n },\n client,\n }),\n ]\n}\n","export const messagesLimit = 10\n","import OpenAI from 'openai'\nimport { messagesLimit } from './messagesLimit'\n\nexport const hasNextPage = ({\n messagesResponse,\n}: {\n messagesResponse: OpenAI.CursorPage<OpenAI.Beta.Threads.Messages.ThreadMessage>\n}) => {\n if (messagesResponse.data.length < messagesLimit) return false\n\n return messagesResponse.hasNextPage()\n}\n","import _ from 'lodash'\nimport { defaultClient } from '@/lib/ai'\nimport { MessagesPage } from '@/types'\nimport { data } from './data'\nimport { messagesLimit } from './messagesLimit'\nimport { hasNextPage } from './hasNextPage'\n\ntype Args = {\n client?: typeof defaultClient\n threadId: string\n pageParam?: string\n}\n\nexport const messagesQueryFn = async ({\n client = defaultClient,\n threadId,\n pageParam,\n}: Args): Promise<MessagesPage> => {\n const messagesResponse = await client.beta.threads.messages.list(threadId, {\n ...(pageParam ? { after: pageParam } : {}),\n limit: messagesLimit,\n })\n\n return {\n data: await data({\n client,\n messagesResponse,\n pageParam,\n threadId,\n }),\n hasNextPage: hasNextPage({ messagesResponse }),\n // @ts-ignore-next-line\n lastId: messagesResponse.body.last_id,\n }\n}\n","import {\n useQueryClient,\n infiniteQueryOptions,\n} from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { useThreadContext } from '@/hooks/threads/useThreadContext'\nimport { MessagesPage } from '@/types'\n\ntype QueryFunctionArgs = {\n queryKey: Readonly<[string, { [key: string]: any }]>\n pageParam?: string\n}\n\nexport const queryOptions = ({\n queryKeyBase,\n path,\n queryClient,\n threadContext,\n superinterfaceContext,\n}: {\n queryKeyBase: string[]\n path: string,\n queryClient: ReturnType<typeof useQueryClient>,\n threadContext: ReturnType<typeof useThreadContext>,\n superinterfaceContext: ReturnType<typeof useSuperinterfaceContext>,\n}) => {\n const queryKey = [...queryKeyBase, threadContext.variables]\n\n return infiniteQueryOptions<MessagesPage>({\n // @ts-ignore-next-line\n queryFn: async ({\n pageParam,\n queryKey,\n }: QueryFunctionArgs) => {\n const [_key, variables] = queryKey\n const params = new URLSearchParams({\n ...(pageParam ? { pageParam } : {}),\n ...variables,\n })\n\n return fetch(`${superinterfaceContext.baseUrl}${path}?${params}`, {\n credentials: 'include',\n ...(superinterfaceContext.publicApiKey ? {\n headers: {\n Authorization: `Bearer ${superinterfaceContext.publicApiKey}`,\n },\n } : {}),\n })\n .then(async (response) => {\n if (response.status !== 200) {\n try {\n const errorResponse = await response.json() as { error: string }\n throw new Error(errorResponse.error)\n } catch (error) {\n throw new Error('Failed to fetch')\n }\n }\n\n return response.json() as Promise<MessagesPage>\n })\n },\n initialPageParam: undefined,\n getNextPageParam: (lastPage: MessagesPage) => {\n if (!lastPage.hasNextPage) return null\n\n return lastPage.lastId\n },\n limit: 10,\n ...threadContext.defaultOptions.queries,\n ...queryClient.getQueryDefaults(queryKey),\n queryKey,\n })\n}\n","import { useQueryClient } from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { useThreadContext } from '@/hooks/threads/useThreadContext'\nimport { queryOptions } from '@/lib/threads/queryOptions'\n\nexport const messagesQueryOptions = ({\n queryClient,\n threadContext,\n superinterfaceContext,\n}: {\n queryClient: ReturnType<typeof useQueryClient>,\n threadContext: ReturnType<typeof useThreadContext>,\n superinterfaceContext: ReturnType<typeof useSuperinterfaceContext>,\n}) => (\n queryOptions({\n queryKeyBase: ['messages'],\n path: '/messages',\n queryClient,\n threadContext,\n superinterfaceContext,\n })\n)\n","import { RunsPage } from '@/types'\nimport { defaultClient } from '@/lib/ai'\n\ntype Args = {\n client?: typeof defaultClient\n threadId: string\n}\n\nexport const runsQueryFn = async ({\n client = defaultClient,\n threadId,\n}: Args): Promise<RunsPage> => {\n const response = await client.beta.threads.runs.list(threadId, {\n limit: 1,\n })\n\n return {\n // @ts-ignore-next-line\n data: response.data,\n hasNextPage: response.hasNextPage(),\n // @ts-ignore-next-line\n lastId: response.body.last_id,\n }\n}\n","import { useQueryClient } from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { useThreadContext } from '@/hooks/threads/useThreadContext'\nimport { queryOptions } from '@/lib/threads/queryOptions'\n\nexport const runsQueryOptions = ({\n queryClient,\n threadContext,\n superinterfaceContext,\n}: {\n queryClient: ReturnType<typeof useQueryClient>,\n threadContext: ReturnType<typeof useThreadContext>,\n superinterfaceContext: ReturnType<typeof useSuperinterfaceContext>,\n}) => (\n queryOptions({\n queryKeyBase: ['runs'],\n path: '/runs',\n queryClient,\n threadContext,\n superinterfaceContext,\n })\n)\n"]}
|
package/dist/queryFns.d.cts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { d as defaultClient } from './index-CGpJFXMu.cjs';
|
|
2
2
|
import { MessagesPage, RunsPage } from './types/index.cjs';
|
|
3
|
+
import * as _tanstack_react_query_build_legacy_types from '@tanstack/react-query/build/legacy/types';
|
|
4
|
+
import * as _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw from '@tanstack/query-core/build/legacy/queryClient-Ho-z40Sw';
|
|
5
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
6
|
+
import { u as useSuperinterfaceContext } from './index-Dp6WTBGJ.cjs';
|
|
3
7
|
import 'openai';
|
|
4
8
|
|
|
5
9
|
type Args$1 = {
|
|
@@ -9,10 +13,30 @@ type Args$1 = {
|
|
|
9
13
|
};
|
|
10
14
|
declare const messagesQueryFn: ({ client, threadId, pageParam, }: Args$1) => Promise<MessagesPage>;
|
|
11
15
|
|
|
16
|
+
declare const messagesQueryOptions: ({ queryClient, threadContext, superinterfaceContext, }: {
|
|
17
|
+
queryClient: ReturnType<typeof useQueryClient>;
|
|
18
|
+
threadContext: ReturnType<typeof useSuperinterfaceContext>;
|
|
19
|
+
superinterfaceContext: ReturnType<typeof useSuperinterfaceContext>;
|
|
20
|
+
}) => _tanstack_react_query_build_legacy_types.UseInfiniteQueryOptions<MessagesPage, Error, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.B<TQueryFnData, unknown>, MessagesPage, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.s, unknown> & {
|
|
21
|
+
initialData?: undefined;
|
|
22
|
+
} & {
|
|
23
|
+
queryKey: _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.u<_tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.s, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.B<MessagesPage, unknown>>;
|
|
24
|
+
};
|
|
25
|
+
|
|
12
26
|
type Args = {
|
|
13
27
|
client?: typeof defaultClient;
|
|
14
28
|
threadId: string;
|
|
15
29
|
};
|
|
16
30
|
declare const runsQueryFn: ({ client, threadId, }: Args) => Promise<RunsPage>;
|
|
17
31
|
|
|
18
|
-
|
|
32
|
+
declare const runsQueryOptions: ({ queryClient, threadContext, superinterfaceContext, }: {
|
|
33
|
+
queryClient: ReturnType<typeof useQueryClient>;
|
|
34
|
+
threadContext: ReturnType<typeof useSuperinterfaceContext>;
|
|
35
|
+
superinterfaceContext: ReturnType<typeof useSuperinterfaceContext>;
|
|
36
|
+
}) => _tanstack_react_query_build_legacy_types.UseInfiniteQueryOptions<MessagesPage, Error, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.B<TQueryFnData, unknown>, MessagesPage, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.s, unknown> & {
|
|
37
|
+
initialData?: undefined;
|
|
38
|
+
} & {
|
|
39
|
+
queryKey: _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.u<_tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.s, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.B<MessagesPage, unknown>>;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export { messagesQueryFn, messagesQueryOptions, runsQueryFn, runsQueryOptions };
|
package/dist/queryFns.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { d as defaultClient } from './index-CGpJFXMu.js';
|
|
2
2
|
import { MessagesPage, RunsPage } from './types/index.js';
|
|
3
|
+
import * as _tanstack_react_query_build_legacy_types from '@tanstack/react-query/build/legacy/types';
|
|
4
|
+
import * as _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw from '@tanstack/query-core/build/legacy/queryClient-Ho-z40Sw';
|
|
5
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
6
|
+
import { u as useSuperinterfaceContext } from './index-Dp6WTBGJ.js';
|
|
3
7
|
import 'openai';
|
|
4
8
|
|
|
5
9
|
type Args$1 = {
|
|
@@ -9,10 +13,30 @@ type Args$1 = {
|
|
|
9
13
|
};
|
|
10
14
|
declare const messagesQueryFn: ({ client, threadId, pageParam, }: Args$1) => Promise<MessagesPage>;
|
|
11
15
|
|
|
16
|
+
declare const messagesQueryOptions: ({ queryClient, threadContext, superinterfaceContext, }: {
|
|
17
|
+
queryClient: ReturnType<typeof useQueryClient>;
|
|
18
|
+
threadContext: ReturnType<typeof useSuperinterfaceContext>;
|
|
19
|
+
superinterfaceContext: ReturnType<typeof useSuperinterfaceContext>;
|
|
20
|
+
}) => _tanstack_react_query_build_legacy_types.UseInfiniteQueryOptions<MessagesPage, Error, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.B<TQueryFnData, unknown>, MessagesPage, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.s, unknown> & {
|
|
21
|
+
initialData?: undefined;
|
|
22
|
+
} & {
|
|
23
|
+
queryKey: _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.u<_tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.s, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.B<MessagesPage, unknown>>;
|
|
24
|
+
};
|
|
25
|
+
|
|
12
26
|
type Args = {
|
|
13
27
|
client?: typeof defaultClient;
|
|
14
28
|
threadId: string;
|
|
15
29
|
};
|
|
16
30
|
declare const runsQueryFn: ({ client, threadId, }: Args) => Promise<RunsPage>;
|
|
17
31
|
|
|
18
|
-
|
|
32
|
+
declare const runsQueryOptions: ({ queryClient, threadContext, superinterfaceContext, }: {
|
|
33
|
+
queryClient: ReturnType<typeof useQueryClient>;
|
|
34
|
+
threadContext: ReturnType<typeof useSuperinterfaceContext>;
|
|
35
|
+
superinterfaceContext: ReturnType<typeof useSuperinterfaceContext>;
|
|
36
|
+
}) => _tanstack_react_query_build_legacy_types.UseInfiniteQueryOptions<MessagesPage, Error, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.B<TQueryFnData, unknown>, MessagesPage, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.s, unknown> & {
|
|
37
|
+
initialData?: undefined;
|
|
38
|
+
} & {
|
|
39
|
+
queryKey: _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.u<_tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.s, _tanstack_query_core_build_legacy_queryClient_Ho_z40Sw.B<MessagesPage, unknown>>;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export { messagesQueryFn, messagesQueryOptions, runsQueryFn, runsQueryOptions };
|
package/dist/queryFns.js
CHANGED
|
@@ -4,6 +4,9 @@ function _array_like_to_array(arr, len) {
|
|
|
4
4
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
5
5
|
return arr2;
|
|
6
6
|
}
|
|
7
|
+
function _array_with_holes(arr) {
|
|
8
|
+
if (Array.isArray(arr)) return arr;
|
|
9
|
+
}
|
|
7
10
|
function _array_without_holes(arr) {
|
|
8
11
|
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
9
12
|
}
|
|
@@ -52,6 +55,33 @@ function _define_property(obj, key, value) {
|
|
|
52
55
|
function _iterable_to_array(iter) {
|
|
53
56
|
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
54
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
|
+
}
|
|
55
85
|
function _non_iterable_spread() {
|
|
56
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.");
|
|
57
87
|
}
|
|
@@ -94,6 +124,9 @@ function _object_spread_props(target, source) {
|
|
|
94
124
|
}
|
|
95
125
|
return target;
|
|
96
126
|
}
|
|
127
|
+
function _sliced_to_array(arr, i) {
|
|
128
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
129
|
+
}
|
|
97
130
|
function _to_consumable_array(arr) {
|
|
98
131
|
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
99
132
|
}
|
|
@@ -306,6 +339,12 @@ var optimisticId = function() {
|
|
|
306
339
|
return "-".concat(uid(24));
|
|
307
340
|
};
|
|
308
341
|
// src/lib/messages/messagesQueryFn/data/runMessages/index.ts
|
|
342
|
+
var progressStatuses = [
|
|
343
|
+
"queued",
|
|
344
|
+
"in_progress",
|
|
345
|
+
"requires_action",
|
|
346
|
+
"cancelling"
|
|
347
|
+
];
|
|
309
348
|
var runMessages = function() {
|
|
310
349
|
var _ref = _async_to_generator(function(param) {
|
|
311
350
|
var messages, threadId, client, latestRun, messageFromLatestRun;
|
|
@@ -337,6 +376,12 @@ var runMessages = function() {
|
|
|
337
376
|
[]
|
|
338
377
|
];
|
|
339
378
|
}
|
|
379
|
+
if (!progressStatuses.includes(latestRun.status)) {
|
|
380
|
+
return [
|
|
381
|
+
2,
|
|
382
|
+
[]
|
|
383
|
+
];
|
|
384
|
+
}
|
|
340
385
|
return [
|
|
341
386
|
4,
|
|
342
387
|
extendMessage({
|
|
@@ -467,6 +512,102 @@ var messagesQueryFn = function() {
|
|
|
467
512
|
return _ref.apply(this, arguments);
|
|
468
513
|
};
|
|
469
514
|
}();
|
|
515
|
+
// src/lib/threads/queryOptions/index.ts
|
|
516
|
+
import { infiniteQueryOptions } from "@tanstack/react-query";
|
|
517
|
+
var queryOptions = function(param) {
|
|
518
|
+
var queryKeyBase = param.queryKeyBase, path = param.path, queryClient = param.queryClient, threadContext = param.threadContext, superinterfaceContext = param.superinterfaceContext;
|
|
519
|
+
var queryKey = _to_consumable_array(queryKeyBase).concat([
|
|
520
|
+
threadContext.variables
|
|
521
|
+
]);
|
|
522
|
+
return infiniteQueryOptions(_object_spread_props(_object_spread({
|
|
523
|
+
// @ts-ignore-next-line
|
|
524
|
+
queryFn: function() {
|
|
525
|
+
var _ref = _async_to_generator(function(param) {
|
|
526
|
+
var pageParam, queryKey2, _queryKey2, _key, variables, params;
|
|
527
|
+
return _ts_generator(this, function(_state) {
|
|
528
|
+
pageParam = param.pageParam, queryKey2 = param.queryKey;
|
|
529
|
+
_queryKey2 = _sliced_to_array(queryKey2, 2), _key = _queryKey2[0], variables = _queryKey2[1];
|
|
530
|
+
params = new URLSearchParams(_object_spread({}, pageParam ? {
|
|
531
|
+
pageParam: pageParam
|
|
532
|
+
} : {}, variables));
|
|
533
|
+
return [
|
|
534
|
+
2,
|
|
535
|
+
fetch("".concat(superinterfaceContext.baseUrl).concat(path, "?").concat(params), _object_spread({
|
|
536
|
+
credentials: "include"
|
|
537
|
+
}, superinterfaceContext.publicApiKey ? {
|
|
538
|
+
headers: {
|
|
539
|
+
Authorization: "Bearer ".concat(superinterfaceContext.publicApiKey)
|
|
540
|
+
}
|
|
541
|
+
} : {})).then(function() {
|
|
542
|
+
var _ref = _async_to_generator(function(response) {
|
|
543
|
+
var errorResponse, error;
|
|
544
|
+
return _ts_generator(this, function(_state) {
|
|
545
|
+
switch(_state.label){
|
|
546
|
+
case 0:
|
|
547
|
+
if (!(response.status !== 200)) return [
|
|
548
|
+
3,
|
|
549
|
+
4
|
|
550
|
+
];
|
|
551
|
+
_state.label = 1;
|
|
552
|
+
case 1:
|
|
553
|
+
_state.trys.push([
|
|
554
|
+
1,
|
|
555
|
+
3,
|
|
556
|
+
,
|
|
557
|
+
4
|
|
558
|
+
]);
|
|
559
|
+
return [
|
|
560
|
+
4,
|
|
561
|
+
response.json()
|
|
562
|
+
];
|
|
563
|
+
case 2:
|
|
564
|
+
errorResponse = _state.sent();
|
|
565
|
+
throw new Error(errorResponse.error);
|
|
566
|
+
case 3:
|
|
567
|
+
error = _state.sent();
|
|
568
|
+
throw new Error("Failed to fetch");
|
|
569
|
+
case 4:
|
|
570
|
+
return [
|
|
571
|
+
2,
|
|
572
|
+
response.json()
|
|
573
|
+
];
|
|
574
|
+
}
|
|
575
|
+
});
|
|
576
|
+
});
|
|
577
|
+
return function(response) {
|
|
578
|
+
return _ref.apply(this, arguments);
|
|
579
|
+
};
|
|
580
|
+
}())
|
|
581
|
+
];
|
|
582
|
+
});
|
|
583
|
+
});
|
|
584
|
+
return function(_) {
|
|
585
|
+
return _ref.apply(this, arguments);
|
|
586
|
+
};
|
|
587
|
+
}(),
|
|
588
|
+
initialPageParam: void 0,
|
|
589
|
+
getNextPageParam: function(lastPage) {
|
|
590
|
+
if (!lastPage.hasNextPage) return null;
|
|
591
|
+
return lastPage.lastId;
|
|
592
|
+
},
|
|
593
|
+
limit: 10
|
|
594
|
+
}, threadContext.defaultOptions.queries, queryClient.getQueryDefaults(queryKey)), {
|
|
595
|
+
queryKey: queryKey
|
|
596
|
+
}));
|
|
597
|
+
};
|
|
598
|
+
// src/lib/messages/messagesQueryOptions.ts
|
|
599
|
+
var messagesQueryOptions = function(param) {
|
|
600
|
+
var queryClient = param.queryClient, threadContext = param.threadContext, superinterfaceContext = param.superinterfaceContext;
|
|
601
|
+
return queryOptions({
|
|
602
|
+
queryKeyBase: [
|
|
603
|
+
"messages"
|
|
604
|
+
],
|
|
605
|
+
path: "/messages",
|
|
606
|
+
queryClient: queryClient,
|
|
607
|
+
threadContext: threadContext,
|
|
608
|
+
superinterfaceContext: superinterfaceContext
|
|
609
|
+
});
|
|
610
|
+
};
|
|
470
611
|
// src/lib/runs/runsQueryFn.ts
|
|
471
612
|
var runsQueryFn = function() {
|
|
472
613
|
var _ref = _async_to_generator(function(param) {
|
|
@@ -500,5 +641,18 @@ var runsQueryFn = function() {
|
|
|
500
641
|
return _ref.apply(this, arguments);
|
|
501
642
|
};
|
|
502
643
|
}();
|
|
503
|
-
|
|
644
|
+
// src/lib/runs/runsQueryOptions.ts
|
|
645
|
+
var runsQueryOptions = function(param) {
|
|
646
|
+
var queryClient = param.queryClient, threadContext = param.threadContext, superinterfaceContext = param.superinterfaceContext;
|
|
647
|
+
return queryOptions({
|
|
648
|
+
queryKeyBase: [
|
|
649
|
+
"runs"
|
|
650
|
+
],
|
|
651
|
+
path: "/runs",
|
|
652
|
+
queryClient: queryClient,
|
|
653
|
+
threadContext: threadContext,
|
|
654
|
+
superinterfaceContext: superinterfaceContext
|
|
655
|
+
});
|
|
656
|
+
};
|
|
657
|
+
export { messagesQueryFn, messagesQueryOptions, runsQueryFn, runsQueryOptions };
|
|
504
658
|
//# sourceMappingURL=queryFns.js.map
|
package/dist/queryFns.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/ai/index.ts","../src/lib/messages/messagesQueryFn/data/index.ts","../src/lib/runSteps/getRunSteps/index.ts","../src/lib/messages/extendMessage.ts","../src/lib/messages/messagesQueryFn/data/runMessages/getLatestRun.ts","../src/lib/optimistic/optimisticId.ts","../src/lib/messages/messagesQueryFn/data/runMessages/index.ts","../src/lib/messages/messagesQueryFn/messagesLimit.ts","../src/lib/messages/messagesQueryFn/hasNextPage.ts","../src/lib/messages/messagesQueryFn/index.ts","../src/lib/runs/runsQueryFn.ts"],"names":[],"mappings":"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","sourcesContent":["import OpenAI from 'openai'\n\nexport const defaultClient = new OpenAI({\n apiKey: process.env.OPENAI_API_KEY!,\n})\n","import OpenAI from 'openai'\nimport pMap from 'p-map'\nimport { extendMessage } from '@/lib/messages/extendMessage'\nimport { runMessages } from './runMessages'\n\nexport const data = async ({\n messagesResponse,\n pageParam,\n threadId,\n client,\n}: {\n messagesResponse: OpenAI.CursorPage<OpenAI.Beta.Threads.Messages.ThreadMessage>\n pageParam?: string\n threadId: string\n client: OpenAI\n}) => {\n const messages = await pMap(messagesResponse.data, (message) => (\n extendMessage({\n client,\n message,\n })\n ))\n\n if (pageParam) {\n return messages\n }\n\n return [\n ...await runMessages({\n messages,\n threadId,\n client,\n }),\n ...messages,\n ]\n}\n","import OpenAI from 'openai'\n\ntype Args = {\n threadId: string\n runId: string\n client: OpenAI\n}\n\nexport const getRunSteps = async ({\n threadId,\n runId,\n client,\n}: Args) => {\n const runStepsResponse = await client.beta.threads.runs.steps.list(\n threadId,\n runId,\n )\n\n return runStepsResponse.data\n}\n","import OpenAI from 'openai'\nimport { getRunSteps } from '@/lib/runSteps/getRunSteps'\n\ntype Args = {\n message: OpenAI.Beta.Threads.Messages.ThreadMessage\n client: OpenAI\n}\n\nexport const extendMessage = async ({\n message,\n client,\n}: Args) => {\n if (!message.run_id) {\n return {\n ...message,\n runSteps: [],\n }\n }\n\n return {\n ...message,\n runSteps: await getRunSteps({\n threadId: message.thread_id,\n runId: message.run_id,\n client,\n }),\n }\n}\n","import OpenAI from 'openai'\n\ntype Args = {\n threadId: string\n client: OpenAI\n}\n\nexport const getLatestRun = async ({\n threadId,\n client,\n}: Args) => {\n const runsResponse = await client.beta.threads.runs.list(threadId, {\n limit: 1,\n })\n\n return runsResponse.data[0]\n}\n","import { uid } from 'radash'\n\nexport const optimisticId = () => (\n `-${uid(24)}`\n)\n","import OpenAI from 'openai'\nimport { Message } from '@/types'\nimport { getLatestRun } from './getLatestRun'\nimport { extendMessage } from '@/lib/messages/extendMessage'\nimport { optimisticId } from '@/lib/optimistic/optimisticId'\n\ntype Args = {\n messages: Message[]\n threadId: string\n client: OpenAI\n}\n\nexport const runMessages = async ({\n messages,\n threadId,\n client,\n}: Args) => {\n const latestRun = await getLatestRun({ threadId, client })\n\n if (!latestRun) {\n return []\n }\n\n const messageFromLatestRun = messages.find(m => m.run_id === latestRun.id)\n\n if (messageFromLatestRun) {\n return []\n }\n\n return [\n await extendMessage({\n message: {\n id: optimisticId(),\n role: 'assistant' as OpenAI.Beta.Threads.Messages.ThreadMessage['role'],\n created_at: +new Date(),\n object: 'thread.message' as OpenAI.Beta.Threads.Messages.ThreadMessage['object'],\n content: [],\n run_id: latestRun.id,\n assistant_id: latestRun.assistant_id,\n thread_id: latestRun.thread_id,\n file_ids: [],\n metadata: {},\n },\n client,\n }),\n ]\n}\n","export const messagesLimit = 10\n","import OpenAI from 'openai'\nimport { messagesLimit } from './messagesLimit'\n\nexport const hasNextPage = ({\n messagesResponse,\n}: {\n messagesResponse: OpenAI.CursorPage<OpenAI.Beta.Threads.Messages.ThreadMessage>\n}) => {\n if (messagesResponse.data.length < messagesLimit) return false\n\n return messagesResponse.hasNextPage()\n}\n","import _ from 'lodash'\nimport { defaultClient } from '@/lib/ai'\nimport { MessagesPage } from '@/types'\nimport { data } from './data'\nimport { messagesLimit } from './messagesLimit'\nimport { hasNextPage } from './hasNextPage'\n\ntype Args = {\n client?: typeof defaultClient\n threadId: string\n pageParam?: string\n}\n\nexport const messagesQueryFn = async ({\n client = defaultClient,\n threadId,\n pageParam,\n}: Args): Promise<MessagesPage> => {\n const messagesResponse = await client.beta.threads.messages.list(threadId, {\n ...(pageParam ? { after: pageParam } : {}),\n limit: messagesLimit,\n })\n\n return {\n data: await data({\n client,\n messagesResponse,\n pageParam,\n threadId,\n }),\n hasNextPage: hasNextPage({ messagesResponse }),\n // @ts-ignore-next-line\n lastId: messagesResponse.body.last_id,\n }\n}\n","import { RunsPage } from '@/types'\nimport { defaultClient } from '@/lib/ai'\n\ntype Args = {\n client?: typeof defaultClient\n threadId: string\n}\n\nexport const runsQueryFn = async ({\n client = defaultClient,\n threadId,\n}: Args): Promise<RunsPage> => {\n const response = await client.beta.threads.runs.list(threadId, {\n limit: 1,\n })\n\n return {\n // @ts-ignore-next-line\n data: response.data,\n hasNextPage: response.hasNextPage(),\n // @ts-ignore-next-line\n lastId: response.body.last_id,\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/ai/index.ts","../src/lib/messages/messagesQueryFn/data/index.ts","../src/lib/runSteps/getRunSteps/index.ts","../src/lib/messages/extendMessage.ts","../src/lib/messages/messagesQueryFn/data/runMessages/getLatestRun.ts","../src/lib/optimistic/optimisticId.ts","../src/lib/messages/messagesQueryFn/data/runMessages/index.ts","../src/lib/messages/messagesQueryFn/messagesLimit.ts","../src/lib/messages/messagesQueryFn/hasNextPage.ts","../src/lib/messages/messagesQueryFn/index.ts","../src/lib/threads/queryOptions/index.ts","../src/lib/messages/messagesQueryOptions.ts","../src/lib/runs/runsQueryFn.ts","../src/lib/runs/runsQueryOptions.ts"],"names":["queryKey"],"mappings":"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","sourcesContent":["import OpenAI from 'openai'\n\nexport const defaultClient = new OpenAI({\n apiKey: process.env.OPENAI_API_KEY!,\n})\n","import OpenAI from 'openai'\nimport pMap from 'p-map'\nimport { extendMessage } from '@/lib/messages/extendMessage'\nimport { runMessages } from './runMessages'\n\nexport const data = async ({\n messagesResponse,\n pageParam,\n threadId,\n client,\n}: {\n messagesResponse: OpenAI.CursorPage<OpenAI.Beta.Threads.Messages.ThreadMessage>\n pageParam?: string\n threadId: string\n client: OpenAI\n}) => {\n const messages = await pMap(messagesResponse.data, (message) => (\n extendMessage({\n client,\n message,\n })\n ))\n\n if (pageParam) {\n return messages\n }\n\n return [\n ...await runMessages({\n messages,\n threadId,\n client,\n }),\n ...messages,\n ]\n}\n","import OpenAI from 'openai'\n\ntype Args = {\n threadId: string\n runId: string\n client: OpenAI\n}\n\nexport const getRunSteps = async ({\n threadId,\n runId,\n client,\n}: Args) => {\n const runStepsResponse = await client.beta.threads.runs.steps.list(\n threadId,\n runId,\n )\n\n return runStepsResponse.data\n}\n","import OpenAI from 'openai'\nimport { getRunSteps } from '@/lib/runSteps/getRunSteps'\n\ntype Args = {\n message: OpenAI.Beta.Threads.Messages.ThreadMessage\n client: OpenAI\n}\n\nexport const extendMessage = async ({\n message,\n client,\n}: Args) => {\n if (!message.run_id) {\n return {\n ...message,\n runSteps: [],\n }\n }\n\n return {\n ...message,\n runSteps: await getRunSteps({\n threadId: message.thread_id,\n runId: message.run_id,\n client,\n }),\n }\n}\n","import OpenAI from 'openai'\n\ntype Args = {\n threadId: string\n client: OpenAI\n}\n\nexport const getLatestRun = async ({\n threadId,\n client,\n}: Args) => {\n const runsResponse = await client.beta.threads.runs.list(threadId, {\n limit: 1,\n })\n\n return runsResponse.data[0]\n}\n","import { uid } from 'radash'\n\nexport const optimisticId = () => (\n `-${uid(24)}`\n)\n","import OpenAI from 'openai'\nimport { Message } from '@/types'\nimport { getLatestRun } from './getLatestRun'\nimport { extendMessage } from '@/lib/messages/extendMessage'\nimport { optimisticId } from '@/lib/optimistic/optimisticId'\n\ntype Args = {\n messages: Message[]\n threadId: string\n client: OpenAI\n}\n\nconst progressStatuses = [\n 'queued',\n 'in_progress',\n 'requires_action',\n 'cancelling',\n]\n\nexport const runMessages = async ({\n messages,\n threadId,\n client,\n}: Args) => {\n const latestRun = await getLatestRun({ threadId, client })\n\n if (!latestRun) {\n return []\n }\n\n const messageFromLatestRun = messages.find(m => m.run_id === latestRun.id)\n\n if (messageFromLatestRun) {\n return []\n }\n\n if (!progressStatuses.includes(latestRun.status)) {\n return []\n }\n\n return [\n await extendMessage({\n message: {\n id: optimisticId(),\n role: 'assistant' as OpenAI.Beta.Threads.Messages.ThreadMessage['role'],\n created_at: +new Date(),\n object: 'thread.message' as OpenAI.Beta.Threads.Messages.ThreadMessage['object'],\n content: [],\n run_id: latestRun.id,\n assistant_id: latestRun.assistant_id,\n thread_id: latestRun.thread_id,\n file_ids: [],\n metadata: {},\n },\n client,\n }),\n ]\n}\n","export const messagesLimit = 10\n","import OpenAI from 'openai'\nimport { messagesLimit } from './messagesLimit'\n\nexport const hasNextPage = ({\n messagesResponse,\n}: {\n messagesResponse: OpenAI.CursorPage<OpenAI.Beta.Threads.Messages.ThreadMessage>\n}) => {\n if (messagesResponse.data.length < messagesLimit) return false\n\n return messagesResponse.hasNextPage()\n}\n","import _ from 'lodash'\nimport { defaultClient } from '@/lib/ai'\nimport { MessagesPage } from '@/types'\nimport { data } from './data'\nimport { messagesLimit } from './messagesLimit'\nimport { hasNextPage } from './hasNextPage'\n\ntype Args = {\n client?: typeof defaultClient\n threadId: string\n pageParam?: string\n}\n\nexport const messagesQueryFn = async ({\n client = defaultClient,\n threadId,\n pageParam,\n}: Args): Promise<MessagesPage> => {\n const messagesResponse = await client.beta.threads.messages.list(threadId, {\n ...(pageParam ? { after: pageParam } : {}),\n limit: messagesLimit,\n })\n\n return {\n data: await data({\n client,\n messagesResponse,\n pageParam,\n threadId,\n }),\n hasNextPage: hasNextPage({ messagesResponse }),\n // @ts-ignore-next-line\n lastId: messagesResponse.body.last_id,\n }\n}\n","import {\n useQueryClient,\n infiniteQueryOptions,\n} from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { useThreadContext } from '@/hooks/threads/useThreadContext'\nimport { MessagesPage } from '@/types'\n\ntype QueryFunctionArgs = {\n queryKey: Readonly<[string, { [key: string]: any }]>\n pageParam?: string\n}\n\nexport const queryOptions = ({\n queryKeyBase,\n path,\n queryClient,\n threadContext,\n superinterfaceContext,\n}: {\n queryKeyBase: string[]\n path: string,\n queryClient: ReturnType<typeof useQueryClient>,\n threadContext: ReturnType<typeof useThreadContext>,\n superinterfaceContext: ReturnType<typeof useSuperinterfaceContext>,\n}) => {\n const queryKey = [...queryKeyBase, threadContext.variables]\n\n return infiniteQueryOptions<MessagesPage>({\n // @ts-ignore-next-line\n queryFn: async ({\n pageParam,\n queryKey,\n }: QueryFunctionArgs) => {\n const [_key, variables] = queryKey\n const params = new URLSearchParams({\n ...(pageParam ? { pageParam } : {}),\n ...variables,\n })\n\n return fetch(`${superinterfaceContext.baseUrl}${path}?${params}`, {\n credentials: 'include',\n ...(superinterfaceContext.publicApiKey ? {\n headers: {\n Authorization: `Bearer ${superinterfaceContext.publicApiKey}`,\n },\n } : {}),\n })\n .then(async (response) => {\n if (response.status !== 200) {\n try {\n const errorResponse = await response.json() as { error: string }\n throw new Error(errorResponse.error)\n } catch (error) {\n throw new Error('Failed to fetch')\n }\n }\n\n return response.json() as Promise<MessagesPage>\n })\n },\n initialPageParam: undefined,\n getNextPageParam: (lastPage: MessagesPage) => {\n if (!lastPage.hasNextPage) return null\n\n return lastPage.lastId\n },\n limit: 10,\n ...threadContext.defaultOptions.queries,\n ...queryClient.getQueryDefaults(queryKey),\n queryKey,\n })\n}\n","import { useQueryClient } from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { useThreadContext } from '@/hooks/threads/useThreadContext'\nimport { queryOptions } from '@/lib/threads/queryOptions'\n\nexport const messagesQueryOptions = ({\n queryClient,\n threadContext,\n superinterfaceContext,\n}: {\n queryClient: ReturnType<typeof useQueryClient>,\n threadContext: ReturnType<typeof useThreadContext>,\n superinterfaceContext: ReturnType<typeof useSuperinterfaceContext>,\n}) => (\n queryOptions({\n queryKeyBase: ['messages'],\n path: '/messages',\n queryClient,\n threadContext,\n superinterfaceContext,\n })\n)\n","import { RunsPage } from '@/types'\nimport { defaultClient } from '@/lib/ai'\n\ntype Args = {\n client?: typeof defaultClient\n threadId: string\n}\n\nexport const runsQueryFn = async ({\n client = defaultClient,\n threadId,\n}: Args): Promise<RunsPage> => {\n const response = await client.beta.threads.runs.list(threadId, {\n limit: 1,\n })\n\n return {\n // @ts-ignore-next-line\n data: response.data,\n hasNextPage: response.hasNextPage(),\n // @ts-ignore-next-line\n lastId: response.body.last_id,\n }\n}\n","import { useQueryClient } from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { useThreadContext } from '@/hooks/threads/useThreadContext'\nimport { queryOptions } from '@/lib/threads/queryOptions'\n\nexport const runsQueryOptions = ({\n queryClient,\n threadContext,\n superinterfaceContext,\n}: {\n queryClient: ReturnType<typeof useQueryClient>,\n threadContext: ReturnType<typeof useThreadContext>,\n superinterfaceContext: ReturnType<typeof useSuperinterfaceContext>,\n}) => (\n queryOptions({\n queryKeyBase: ['runs'],\n path: '/runs',\n queryClient,\n threadContext,\n superinterfaceContext,\n })\n)\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@superinterface/react",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"openai": "^4.28.0",
|
|
29
29
|
"p-map": "^7.0.1",
|
|
30
30
|
"radash": "^12.0.0",
|
|
31
|
+
"react-children-utilities": "^2.10.0",
|
|
31
32
|
"react-hook-form": "^7.50.1",
|
|
32
33
|
"react-intersection-observer": "^9.8.0",
|
|
33
34
|
"react-remark": "^2.1.0",
|
|
@@ -36,16 +37,17 @@
|
|
|
36
37
|
"react-use": "^17.5.0",
|
|
37
38
|
"react-use-audio-player": "^2.2.0",
|
|
38
39
|
"regenerator-runtime": "^0.14.1",
|
|
40
|
+
"sonner": "^1.4.3",
|
|
39
41
|
"use-audio-capture": "^0.0.7",
|
|
40
42
|
"zod": "^3.22.4"
|
|
41
43
|
},
|
|
42
44
|
"peerDependencies": {
|
|
45
|
+
"@radix-ui/themes": "3.0.0-rc.13-patch.1",
|
|
43
46
|
"@tanstack/query-core": ">=5.0.0",
|
|
44
47
|
"@tanstack/react-query": ">=5.0.0",
|
|
45
48
|
"@types/react": "*",
|
|
46
49
|
"@types/react-dom": "*",
|
|
47
|
-
"react": ">=18.0.0"
|
|
48
|
-
"@radix-ui/themes": "3.0.0-rc.13-patch.1"
|
|
50
|
+
"react": ">=18.0.0"
|
|
49
51
|
},
|
|
50
52
|
"devDependencies": {
|
|
51
53
|
"@tanstack/react-query": ">=5.0.0",
|