@superinterface/react 2.4.5 → 2.6.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/runSteps/serializeRunStep.ts","../src/lib/messages/serializeMessage.ts","../src/lib/messages/messagesResponse/data/messages/index.ts","../src/lib/runSteps/getRunSteps/index.ts","../src/lib/messages/extendMessage.ts","../src/lib/messages/messagesResponse/data/messages/runMessages/index.ts","../src/lib/messages/messagesResponse/data/messages/runMessages/getLatestRun.ts","../src/lib/optimistic/optimisticId.ts","../src/lib/messages/messagesResponse/data/index.ts","../src/lib/messages/messagesResponse/limit.ts","../src/lib/messages/messagesResponse/hasNextPage.ts","../src/lib/messages/messagesResponse/index.ts","../src/lib/runs/serializeRun.ts","../src/lib/messages/createMessageResponse/actionsStream.ts","../src/lib/messages/createMessageResponse/handleStream.ts","../src/lib/messages/createMessageResponse/index.ts"],"names":["messagesResponse","pick","pMap"],"mappings":"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","sourcesContent":["import { pick } from 'radash'\nimport OpenAI from 'openai'\n\nexport const serializeRunStep = ({\n runStep,\n}: {\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}) => (\n pick(runStep, [\n 'id',\n 'run_id',\n 'step_details',\n 'completed_at',\n 'cancelled_at',\n 'failed_at',\n 'status',\n ])\n)\n","import OpenAI from 'openai'\nimport { serializeRunStep } from '@/lib/runSteps/serializeRunStep'\n\nexport const serializeMessage = ({\n message,\n}: {\n message: OpenAI.Beta.Threads.Messages.Message & {\n runSteps?: OpenAI.Beta.Threads.Runs.RunStep[]\n }\n}) => ({\n id: message.id,\n role: message.role,\n created_at: message.created_at,\n content: message.content,\n run_id: message.run_id,\n assistant_id: message.assistant_id,\n thread_id: message.thread_id,\n file_ids: message.file_ids,\n metadata: message.metadata,\n runSteps: (message.runSteps ?? []).map((runStep) => (\n serializeRunStep({ runStep })\n )),\n status: message.status,\n})\n","import OpenAI from 'openai'\nimport pMap from 'p-map'\nimport { extendMessage } from '@/lib/messages/extendMessage'\nimport { runMessages } from './runMessages'\n\nexport const messages = async ({\n messagesResponse,\n pageParam,\n threadId,\n client,\n}: {\n messagesResponse: OpenAI.CursorPage<OpenAI.Beta.Threads.Messages.Message>\n pageParam?: string\n threadId: string\n client: OpenAI\n}) => {\n const result = await pMap(messagesResponse.data, (message) => (\n extendMessage({\n client,\n message,\n })\n ))\n\n if (pageParam) {\n return result\n }\n\n return [\n ...await runMessages({\n result,\n threadId,\n client,\n }),\n ...result,\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.Message\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 dayjs from 'dayjs'\nimport OpenAI from 'openai'\nimport { getLatestRun } from './getLatestRun'\nimport { extendMessage } from '@/lib/messages/extendMessage'\nimport { optimisticId } from '@/lib/optimistic/optimisticId'\n\ntype Args = {\n result: OpenAI.Beta.Threads.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 result,\n threadId,\n client,\n}: Args) => {\n const latestRun = await getLatestRun({ threadId, client })\n\n if (!latestRun) {\n return []\n }\n\n const messageFromLatestRun = result.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.Message['role'],\n created_at: dayjs().unix(),\n object: 'thread.message' as OpenAI.Beta.Threads.Messages.Message['object'],\n incomplete_details: null,\n completed_at: dayjs().unix(),\n incomplete_at: null,\n status: 'completed',\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","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 { serializeMessage } from '@/lib/messages/serializeMessage'\nimport { messages } from './messages'\n\nexport const data = async ({\n messagesResponse,\n pageParam,\n threadId,\n client,\n}: {\n messagesResponse: OpenAI.CursorPage<OpenAI.Beta.Threads.Messages.Message>\n pageParam?: string\n threadId: string\n client: OpenAI\n}) => (\n (await messages({\n messagesResponse,\n pageParam,\n threadId,\n client,\n })).map((message) => (\n serializeMessage({ message })\n ))\n)\n","export const limit = 10\n","import OpenAI from 'openai'\nimport { limit } from './limit'\n\nexport const hasNextPage = ({\n messagesResponse,\n}: {\n messagesResponse: OpenAI.CursorPage<OpenAI.Beta.Threads.Messages.Message>\n}) => {\n if (messagesResponse.data.length < limit) return false\n\n return messagesResponse.hasNextPage()\n}\n","import _ from 'lodash'\nimport OpenAI from 'openai'\nimport { MessagesPage } from '@/types'\nimport { data } from './data'\nimport { limit } from './limit'\nimport { hasNextPage } from './hasNextPage'\n\ntype Args = {\n client: OpenAI\n threadId: string\n pageParam?: string\n}\n\nexport const messagesResponse = async ({\n client,\n threadId,\n pageParam,\n}: Args): Promise<MessagesPage> => {\n const messagesResponse = await client.beta.threads.messages.list(threadId, {\n ...(pageParam ? { after: pageParam } : {}),\n limit,\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 { pick } from 'radash'\nimport OpenAI from 'openai'\n\nexport const serializeRun = ({\n run\n}: {\n run: OpenAI.Beta.Threads.Runs.Run\n}) => (\n pick(run, [\n 'id',\n 'thread_id',\n 'assistant_id',\n 'created_at',\n ])\n)\n","import OpenAI from 'openai'\nimport pMap from 'p-map'\n\nexport const actionsStream = async ({\n client,\n run,\n handleToolCall,\n}: {\n client: any\n run: OpenAI.Beta.Threads.Runs.Run\n handleToolCall: any\n}) => {\n if (!run.required_action) {\n throw new Error('Run does not have a required action')\n }\n\n const toolCalls = run.required_action.submit_tool_outputs.tool_calls\n\n return client.beta.threads.runs.submitToolOutputsStream(\n run.thread_id,\n run.id,\n {\n tool_outputs: await pMap(toolCalls, (toolCall) => (\n handleToolCall({ toolCall, run }))\n ),\n },\n )\n}\n","import { serializeMessage } from '@/lib/messages/serializeMessage'\nimport { serializeRun } from '@/lib/runs/serializeRun'\nimport { serializeRunStep } from '@/lib/runSteps/serializeRunStep'\nimport { actionsStream } from './actionsStream'\n\nexport const handleStream = async ({\n client,\n stream,\n controller,\n handleToolCall,\n}: {\n client: any\n stream: ReadableStream\n controller: ReadableStreamDefaultController\n handleToolCall: any\n}) => {\n for await (const value of stream) {\n if (['thread.message.created', 'thread.message.completed'].includes(value.event)) {\n controller.enqueue(JSON.stringify({\n event: value.event,\n data: serializeMessage({\n message: value.data,\n }),\n }))\n } else if (['thread.message.delta', 'thread.run.step.delta'].includes(value.event)) {\n controller.enqueue(JSON.stringify(value))\n } else if (value.event === 'thread.run.created') {\n controller.enqueue(JSON.stringify({\n event: value.event,\n data: serializeRun({\n run: value.data,\n }),\n }))\n } else if (['thread.run.step.created', 'thread.run.step.completed'].includes(value.event)) {\n controller.enqueue(JSON.stringify({\n event: value.event,\n data: serializeRunStep({\n runStep: value.data,\n }),\n }))\n } else if (value.event === 'thread.run.requires_action') {\n controller.enqueue(JSON.stringify(value))\n\n console.log('starting to handle in handleStream')\n console.dir({ value }, { depth: null })\n await handleStream({\n client,\n stream: await actionsStream({\n client,\n run: value.data,\n handleToolCall,\n }),\n controller,\n handleToolCall,\n })\n } else {\n console.dir({ value }, { depth: null })\n }\n }\n}\n","import { handleStream } from './handleStream'\n\nexport const createMessageResponse = ({\n client,\n createRunStream,\n handleToolCall,\n}: {\n client: any\n createRunStream: any\n handleToolCall: any\n}) => (\n new ReadableStream({\n async start(controller) {\n await handleStream({\n client,\n stream: createRunStream,\n controller,\n handleToolCall,\n })\n\n console.log('Stream ended')\n controller.close()\n },\n })\n)\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA","sourcesContent":["import OpenAI from 'openai'\n\nexport type RunStep = OpenAI.Beta.Threads.Runs.RunStep\n\nexport type Message = OpenAI.Beta.Threads.Messages.Message & {\n runSteps: RunStep[]\n}\n\nexport type MessagesPage = {\n data: Message[]\n hasNextPage: boolean\n lastId: string\n}\n\nexport type RunStepsPage = {\n data: OpenAI.Beta.Threads.Runs.RunStep[]\n hasNextPage: boolean\n lastId: string\n}\n\nexport type MessageGroup = {\n id: string\n role: \"user\" | \"assistant\"\n messages: Message[]\n createdAt: number\n}\n\nexport type Run = OpenAI.Beta.Threads.Runs.Run\n\nexport type RunsPage = {\n data: Run[]\n hasNextPage: boolean\n lastId: string\n}\n\ntype Fn = (args: any) => Promise<string>\n\nexport type Functions = {\n [key: string]: Fn\n}\n\nexport type AudioEngine = {\n source: MediaStreamAudioSourceNode | GainNode\n audioContext: AudioContext\n}\n\nexport type Toast = {\n type: 'success' | 'error'\n message: string\n}\n"]}
1
+ {"version":3,"sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA","sourcesContent":["import OpenAI from 'openai'\n\nexport type SerializedRunStep = Pick<OpenAI.Beta.Threads.Runs.RunStep, 'id' | 'run_id' | 'step_details' | 'completed_at' | 'cancelled_at' | 'failed_at' | 'status'>\n\nexport type SerializedMessage = Pick<OpenAI.Beta.Threads.Messages.Message, 'id' | 'role' | 'created_at' | 'content' | 'run_id' | 'assistant_id' | 'thread_id' | 'file_ids' | 'metadata' | 'status'> & {\n runSteps: SerializedRunStep[]\n}\n\nexport type MessagesPage = {\n data: SerializedMessage[]\n hasNextPage: boolean\n lastId: string\n}\n\nexport type MessageGroup = {\n id: string\n role: \"user\" | \"assistant\"\n messages: SerializedMessage[]\n createdAt: number\n}\n\nexport type AudioEngine = {\n source: MediaStreamAudioSourceNode | GainNode\n audioContext: AudioContext\n}\n\nexport type Toast = {\n type: 'success' | 'error'\n message: string\n}\n\nexport type ThreadMessageCreatedEvent = OpenAI.Beta.Assistants.AssistantStreamEvent.ThreadMessageCreated & {\n data: SerializedMessage\n}\n\nexport type ThreadMessageCompletedEvent = OpenAI.Beta.Assistants.AssistantStreamEvent.ThreadMessageCompleted & {\n data: SerializedMessage\n}\n\nexport type ThreadRunStepDeltaEvent = OpenAI.Beta.Assistants.AssistantStreamEvent.ThreadRunStepDelta & {\n data: {\n run_id: string\n }\n}\n"]}
@@ -1,35 +1,20 @@
1
1
  import OpenAI from 'openai';
2
2
 
3
- type RunStep = OpenAI.Beta.Threads.Runs.RunStep;
4
- type Message = OpenAI.Beta.Threads.Messages.Message & {
5
- runSteps: RunStep[];
3
+ type SerializedRunStep = Pick<OpenAI.Beta.Threads.Runs.RunStep, 'id' | 'run_id' | 'step_details' | 'completed_at' | 'cancelled_at' | 'failed_at' | 'status'>;
4
+ type SerializedMessage = Pick<OpenAI.Beta.Threads.Messages.Message, 'id' | 'role' | 'created_at' | 'content' | 'run_id' | 'assistant_id' | 'thread_id' | 'file_ids' | 'metadata' | 'status'> & {
5
+ runSteps: SerializedRunStep[];
6
6
  };
7
7
  type MessagesPage = {
8
- data: Message[];
9
- hasNextPage: boolean;
10
- lastId: string;
11
- };
12
- type RunStepsPage = {
13
- data: OpenAI.Beta.Threads.Runs.RunStep[];
8
+ data: SerializedMessage[];
14
9
  hasNextPage: boolean;
15
10
  lastId: string;
16
11
  };
17
12
  type MessageGroup = {
18
13
  id: string;
19
14
  role: "user" | "assistant";
20
- messages: Message[];
15
+ messages: SerializedMessage[];
21
16
  createdAt: number;
22
17
  };
23
- type Run = OpenAI.Beta.Threads.Runs.Run;
24
- type RunsPage = {
25
- data: Run[];
26
- hasNextPage: boolean;
27
- lastId: string;
28
- };
29
- type Fn = (args: any) => Promise<string>;
30
- type Functions = {
31
- [key: string]: Fn;
32
- };
33
18
  type AudioEngine = {
34
19
  source: MediaStreamAudioSourceNode | GainNode;
35
20
  audioContext: AudioContext;
@@ -38,5 +23,16 @@ type Toast = {
38
23
  type: 'success' | 'error';
39
24
  message: string;
40
25
  };
26
+ type ThreadMessageCreatedEvent = OpenAI.Beta.Assistants.AssistantStreamEvent.ThreadMessageCreated & {
27
+ data: SerializedMessage;
28
+ };
29
+ type ThreadMessageCompletedEvent = OpenAI.Beta.Assistants.AssistantStreamEvent.ThreadMessageCompleted & {
30
+ data: SerializedMessage;
31
+ };
32
+ type ThreadRunStepDeltaEvent = OpenAI.Beta.Assistants.AssistantStreamEvent.ThreadRunStepDelta & {
33
+ data: {
34
+ run_id: string;
35
+ };
36
+ };
41
37
 
42
- export type { AudioEngine, Functions, Message, MessageGroup, MessagesPage, Run, RunStep, RunStepsPage, RunsPage, Toast };
38
+ export type { AudioEngine, MessageGroup, MessagesPage, SerializedMessage, SerializedRunStep, ThreadMessageCompletedEvent, ThreadMessageCreatedEvent, ThreadRunStepDeltaEvent, Toast };
@@ -1,35 +1,20 @@
1
1
  import OpenAI from 'openai';
2
2
 
3
- type RunStep = OpenAI.Beta.Threads.Runs.RunStep;
4
- type Message = OpenAI.Beta.Threads.Messages.Message & {
5
- runSteps: RunStep[];
3
+ type SerializedRunStep = Pick<OpenAI.Beta.Threads.Runs.RunStep, 'id' | 'run_id' | 'step_details' | 'completed_at' | 'cancelled_at' | 'failed_at' | 'status'>;
4
+ type SerializedMessage = Pick<OpenAI.Beta.Threads.Messages.Message, 'id' | 'role' | 'created_at' | 'content' | 'run_id' | 'assistant_id' | 'thread_id' | 'file_ids' | 'metadata' | 'status'> & {
5
+ runSteps: SerializedRunStep[];
6
6
  };
7
7
  type MessagesPage = {
8
- data: Message[];
9
- hasNextPage: boolean;
10
- lastId: string;
11
- };
12
- type RunStepsPage = {
13
- data: OpenAI.Beta.Threads.Runs.RunStep[];
8
+ data: SerializedMessage[];
14
9
  hasNextPage: boolean;
15
10
  lastId: string;
16
11
  };
17
12
  type MessageGroup = {
18
13
  id: string;
19
14
  role: "user" | "assistant";
20
- messages: Message[];
15
+ messages: SerializedMessage[];
21
16
  createdAt: number;
22
17
  };
23
- type Run = OpenAI.Beta.Threads.Runs.Run;
24
- type RunsPage = {
25
- data: Run[];
26
- hasNextPage: boolean;
27
- lastId: string;
28
- };
29
- type Fn = (args: any) => Promise<string>;
30
- type Functions = {
31
- [key: string]: Fn;
32
- };
33
18
  type AudioEngine = {
34
19
  source: MediaStreamAudioSourceNode | GainNode;
35
20
  audioContext: AudioContext;
@@ -38,5 +23,16 @@ type Toast = {
38
23
  type: 'success' | 'error';
39
24
  message: string;
40
25
  };
26
+ type ThreadMessageCreatedEvent = OpenAI.Beta.Assistants.AssistantStreamEvent.ThreadMessageCreated & {
27
+ data: SerializedMessage;
28
+ };
29
+ type ThreadMessageCompletedEvent = OpenAI.Beta.Assistants.AssistantStreamEvent.ThreadMessageCompleted & {
30
+ data: SerializedMessage;
31
+ };
32
+ type ThreadRunStepDeltaEvent = OpenAI.Beta.Assistants.AssistantStreamEvent.ThreadRunStepDelta & {
33
+ data: {
34
+ run_id: string;
35
+ };
36
+ };
41
37
 
42
- export type { AudioEngine, Functions, Message, MessageGroup, MessagesPage, Run, RunStep, RunStepsPage, RunsPage, Toast };
38
+ export type { AudioEngine, MessageGroup, MessagesPage, SerializedMessage, SerializedRunStep, ThreadMessageCompletedEvent, ThreadMessageCreatedEvent, ThreadRunStepDeltaEvent, Toast };
package/dist/utils.cjs CHANGED
@@ -1,180 +1,4 @@
1
1
  "use strict";
2
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
3
- try {
4
- var info = gen[key](arg);
5
- var value = info.value;
6
- } catch (error) {
7
- reject(error);
8
- return;
9
- }
10
- if (info.done) {
11
- resolve(value);
12
- } else {
13
- Promise.resolve(value).then(_next, _throw);
14
- }
15
- }
16
- function _async_to_generator(fn) {
17
- return function() {
18
- var self = this, args = arguments;
19
- return new Promise(function(resolve, reject) {
20
- var gen = fn.apply(self, args);
21
- function _next(value) {
22
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
23
- }
24
- function _throw(err) {
25
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
26
- }
27
- _next(undefined);
28
- });
29
- };
30
- }
31
- function _define_property(obj, key, value) {
32
- if (key in obj) {
33
- Object.defineProperty(obj, key, {
34
- value: value,
35
- enumerable: true,
36
- configurable: true,
37
- writable: true
38
- });
39
- } else {
40
- obj[key] = value;
41
- }
42
- return obj;
43
- }
44
- function _object_spread(target) {
45
- for(var i = 1; i < arguments.length; i++){
46
- var source = arguments[i] != null ? arguments[i] : {};
47
- var ownKeys = Object.keys(source);
48
- if (typeof Object.getOwnPropertySymbols === "function") {
49
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
50
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
51
- }));
52
- }
53
- ownKeys.forEach(function(key) {
54
- _define_property(target, key, source[key]);
55
- });
56
- }
57
- return target;
58
- }
59
- function ownKeys(object, enumerableOnly) {
60
- var keys = Object.keys(object);
61
- if (Object.getOwnPropertySymbols) {
62
- var symbols = Object.getOwnPropertySymbols(object);
63
- if (enumerableOnly) {
64
- symbols = symbols.filter(function(sym) {
65
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
66
- });
67
- }
68
- keys.push.apply(keys, symbols);
69
- }
70
- return keys;
71
- }
72
- function _object_spread_props(target, source) {
73
- source = source != null ? source : {};
74
- if (Object.getOwnPropertyDescriptors) {
75
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
76
- } else {
77
- ownKeys(Object(source)).forEach(function(key) {
78
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
79
- });
80
- }
81
- return target;
82
- }
83
- function _ts_generator(thisArg, body) {
84
- var f, y, t, g, _ = {
85
- label: 0,
86
- sent: function() {
87
- if (t[0] & 1) throw t[1];
88
- return t[1];
89
- },
90
- trys: [],
91
- ops: []
92
- };
93
- return g = {
94
- next: verb(0),
95
- "throw": verb(1),
96
- "return": verb(2)
97
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
98
- return this;
99
- }), g;
100
- function verb(n) {
101
- return function(v) {
102
- return step([
103
- n,
104
- v
105
- ]);
106
- };
107
- }
108
- function step(op) {
109
- if (f) throw new TypeError("Generator is already executing.");
110
- while(_)try {
111
- 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;
112
- if (y = 0, t) op = [
113
- op[0] & 2,
114
- t.value
115
- ];
116
- switch(op[0]){
117
- case 0:
118
- case 1:
119
- t = op;
120
- break;
121
- case 4:
122
- _.label++;
123
- return {
124
- value: op[1],
125
- done: false
126
- };
127
- case 5:
128
- _.label++;
129
- y = op[1];
130
- op = [
131
- 0
132
- ];
133
- continue;
134
- case 7:
135
- op = _.ops.pop();
136
- _.trys.pop();
137
- continue;
138
- default:
139
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
140
- _ = 0;
141
- continue;
142
- }
143
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
144
- _.label = op[1];
145
- break;
146
- }
147
- if (op[0] === 6 && _.label < t[1]) {
148
- _.label = t[1];
149
- t = op;
150
- break;
151
- }
152
- if (t && _.label < t[2]) {
153
- _.label = t[2];
154
- _.ops.push(op);
155
- break;
156
- }
157
- if (t[2]) _.ops.pop();
158
- _.trys.pop();
159
- continue;
160
- }
161
- op = body.call(thisArg, _);
162
- } catch (e) {
163
- op = [
164
- 6,
165
- e
166
- ];
167
- y = 0;
168
- } finally{
169
- f = t = 0;
170
- }
171
- if (op[0] & 5) throw op[1];
172
- return {
173
- value: op[0] ? op[1] : void 0,
174
- done: true
175
- };
176
- }
177
- }
178
2
  var __defProp = Object.defineProperty;
179
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
180
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -190,12 +14,12 @@ var __copyProps = function(to, from, except, desc) {
190
14
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
191
15
  try {
192
16
  var _loop = function() {
193
- var key = _step.value;
194
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
17
+ var key2 = _step.value;
18
+ if (!__hasOwnProp.call(to, key2) && key2 !== except) __defProp(to, key2, {
195
19
  get: function() {
196
- return from[key];
20
+ return from[key2];
197
21
  },
198
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
22
+ enumerable: !(desc = __getOwnPropDesc(from, key2)) || desc.enumerable
199
23
  });
200
24
  };
201
25
  for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
@@ -224,89 +48,67 @@ var __toCommonJS = function(mod) {
224
48
  // src/utils.ts
225
49
  var utils_exports = {};
226
50
  __export(utils_exports, {
227
- extendMessage: function() {
228
- return extendMessage;
229
- },
230
51
  optimisticId: function() {
231
52
  return optimisticId;
53
+ },
54
+ serializeMessage: function() {
55
+ return serializeMessage;
56
+ },
57
+ threadIdCookieKey: function() {
58
+ return key;
232
59
  }
233
60
  });
234
61
  module.exports = __toCommonJS(utils_exports);
235
- // src/lib/runSteps/getRunSteps/index.ts
236
- var getRunSteps = function() {
237
- var _ref = _async_to_generator(function(param) {
238
- var threadId, runId, client, runStepsResponse;
239
- return _ts_generator(this, function(_state) {
240
- switch(_state.label){
241
- case 0:
242
- threadId = param.threadId, runId = param.runId, client = param.client;
243
- return [
244
- 4,
245
- client.beta.threads.runs.steps.list(threadId, runId)
246
- ];
247
- case 1:
248
- runStepsResponse = _state.sent();
249
- return [
250
- 2,
251
- runStepsResponse.data
252
- ];
253
- }
254
- });
255
- });
256
- return function getRunSteps(_) {
257
- return _ref.apply(this, arguments);
258
- };
259
- }();
260
- // src/lib/messages/extendMessage.ts
261
- var extendMessage = function() {
262
- var _ref = _async_to_generator(function(param) {
263
- var message, client, _tmp, _tmp1;
264
- return _ts_generator(this, function(_state) {
265
- switch(_state.label){
266
- case 0:
267
- message = param.message, client = param.client;
268
- if (!message.run_id) {
269
- return [
270
- 2,
271
- _object_spread_props(_object_spread({}, message), {
272
- runSteps: []
273
- })
274
- ];
275
- }
276
- _tmp = [
277
- _object_spread({}, message)
278
- ];
279
- _tmp1 = {};
280
- return [
281
- 4,
282
- getRunSteps({
283
- threadId: message.thread_id,
284
- runId: message.run_id,
285
- client: client
286
- })
287
- ];
288
- case 1:
289
- return [
290
- 2,
291
- _object_spread_props.apply(void 0, _tmp.concat([
292
- (_tmp1.runSteps = _state.sent(), _tmp1)
293
- ]))
294
- ];
295
- }
296
- });
297
- });
298
- return function extendMessage(_) {
299
- return _ref.apply(this, arguments);
300
- };
301
- }();
302
62
  // src/lib/optimistic/optimisticId.ts
303
63
  var import_radash = require("radash");
304
64
  var optimisticId = function() {
305
65
  return "-".concat((0, import_radash.uid)(24));
306
66
  };
67
+ // src/lib/runSteps/serializeRunStep.ts
68
+ var import_radash2 = require("radash");
69
+ var serializeRunStep = function(param) {
70
+ var runStep = param.runStep;
71
+ return (0, import_radash2.pick)(runStep, [
72
+ "id",
73
+ "run_id",
74
+ "step_details",
75
+ "completed_at",
76
+ "cancelled_at",
77
+ "failed_at",
78
+ "status"
79
+ ]);
80
+ };
81
+ // src/lib/messages/serializeMessage.ts
82
+ var serializeMessage = function(param) {
83
+ var message = param.message;
84
+ var _message_runSteps;
85
+ return {
86
+ id: message.id,
87
+ role: message.role,
88
+ created_at: message.created_at,
89
+ content: message.content,
90
+ run_id: message.run_id,
91
+ assistant_id: message.assistant_id,
92
+ thread_id: message.thread_id,
93
+ file_ids: message.file_ids,
94
+ metadata: message.metadata,
95
+ runSteps: ((_message_runSteps = message.runSteps) !== null && _message_runSteps !== void 0 ? _message_runSteps : []).map(function(runStep) {
96
+ return serializeRunStep({
97
+ runStep: runStep
98
+ });
99
+ }),
100
+ status: message.status
101
+ };
102
+ };
103
+ // src/lib/threadIdCookies/key.ts
104
+ var key = function(param) {
105
+ var assistantId = param.assistantId;
106
+ return "superinterface-".concat(assistantId, "-threadId");
107
+ };
307
108
  // Annotate the CommonJS export names for ESM import in node:
308
109
  0 && (module.exports = {
309
- extendMessage: extendMessage,
310
- optimisticId: optimisticId
110
+ optimisticId: optimisticId,
111
+ serializeMessage: serializeMessage,
112
+ threadIdCookieKey: threadIdCookieKey
311
113
  });
312
114
  //# sourceMappingURL=utils.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.ts","../src/lib/runSteps/getRunSteps/index.ts","../src/lib/messages/extendMessage.ts","../src/lib/optimistic/optimisticId.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACQO,IAAM,cAAc,OAAO;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,MAAY;AACV,QAAM,mBAAmB,MAAM,OAAO,KAAK,QAAQ,KAAK,MAAM;AAAA,IAC5D;AAAA,IACA;AAAA,EACF;AAEA,SAAO,iBAAiB;AAC1B;;;ACXO,IAAM,gBAAgB,OAAO;AAAA,EAClC;AAAA,EACA;AACF,MAAY;AACV,MAAI,CAAC,QAAQ,QAAQ;AACnB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAU,MAAM,YAAY;AAAA,MAC1B,UAAU,QAAQ;AAAA,MAClB,OAAO,QAAQ;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AC3BA,oBAAoB;AAEb,IAAM,eAAe,MAC1B,QAAI,mBAAI,EAAE,CAAC","sourcesContent":["export { extendMessage } from '@/lib/messages/extendMessage'\nexport { optimisticId } from '@/lib/optimistic/optimisticId'\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.Message\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 { uid } from 'radash'\n\nexport const optimisticId = () => (\n `-${uid(24)}`\n)\n"]}
1
+ {"version":3,"sources":["../src/utils.ts","../src/lib/optimistic/optimisticId.ts","../src/lib/runSteps/serializeRunStep.ts","../src/lib/messages/serializeMessage.ts","../src/lib/threadIdCookies/key.ts"],"names":["import_radash"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAoB;AAEb,IAAM,eAAe,MAC1B,QAAI,mBAAI,EAAE,CAAC;;;ACHb,IAAAA,iBAAqB;AAGd,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AACF,UAGE,qBAAK,SAAS;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ACbI,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AACF,OAIO;AAAA,EACL,IAAI,QAAQ;AAAA,EACZ,MAAM,QAAQ;AAAA,EACd,YAAY,QAAQ;AAAA,EACpB,SAAS,QAAQ;AAAA,EACjB,QAAQ,QAAQ;AAAA,EAChB,cAAc,QAAQ;AAAA,EACtB,WAAW,QAAQ;AAAA,EACnB,UAAU,QAAQ;AAAA,EAClB,UAAU,QAAQ;AAAA,EAClB,WAAW,QAAQ,YAAY,CAAC,GAAG,IAAI,CAAC,YACtC,iBAAiB,EAAE,QAAQ,CAAC,CAC7B;AAAA,EACD,QAAQ,QAAQ;AAClB;;;ACvBO,IAAM,MAAM,CAAC;AAAA,EAClB;AACF,MAGE,kBAAkB,WAAW","sourcesContent":["export { optimisticId } from '@/lib/optimistic/optimisticId'\nexport { serializeMessage } from '@/lib/messages/serializeMessage'\nexport { key as threadIdCookieKey } from '@/lib/threadIdCookies/key'\n","import { uid } from 'radash'\n\nexport const optimisticId = () => (\n `-${uid(24)}`\n)\n","import { pick } from 'radash'\nimport OpenAI from 'openai'\n\nexport const serializeRunStep = ({\n runStep,\n}: {\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}) => (\n pick(runStep, [\n 'id',\n 'run_id',\n 'step_details',\n 'completed_at',\n 'cancelled_at',\n 'failed_at',\n 'status',\n ])\n)\n","import OpenAI from 'openai'\nimport { serializeRunStep } from '@/lib/runSteps/serializeRunStep'\n\nexport const serializeMessage = ({\n message,\n}: {\n message: OpenAI.Beta.Threads.Messages.Message & {\n runSteps?: OpenAI.Beta.Threads.Runs.RunStep[]\n }\n}) => ({\n id: message.id,\n role: message.role,\n created_at: message.created_at,\n content: message.content,\n run_id: message.run_id,\n assistant_id: message.assistant_id,\n thread_id: message.thread_id,\n file_ids: message.file_ids,\n metadata: message.metadata,\n runSteps: (message.runSteps ?? []).map((runStep) => (\n serializeRunStep({ runStep })\n )),\n status: message.status,\n})\n","export const key = ({\n assistantId,\n}: {\n assistantId: string\n}) => (\n `superinterface-${assistantId}-threadId`\n)\n"]}
package/dist/utils.d.cts CHANGED
@@ -1,27 +1,27 @@
1
1
  import OpenAI from 'openai';
2
2
 
3
- type Args = {
4
- message: OpenAI.Beta.Threads.Messages.Message;
5
- client: OpenAI;
6
- };
7
- declare const extendMessage: ({ message, client, }: Args) => Promise<{
8
- runSteps: OpenAI.Beta.Threads.Runs.Steps.RunStep[];
3
+ declare const optimisticId: () => string;
4
+
5
+ declare const serializeMessage: ({ message, }: {
6
+ message: OpenAI.Beta.Threads.Messages.Message & {
7
+ runSteps?: OpenAI.Beta.Threads.Runs.RunStep[];
8
+ };
9
+ }) => {
9
10
  id: string;
10
- assistant_id: string | null;
11
- completed_at: number | null;
12
- content: OpenAI.Beta.Threads.Messages.MessageContent[];
11
+ role: "user" | "assistant";
13
12
  created_at: number;
13
+ content: OpenAI.Beta.Threads.Messages.MessageContent[];
14
+ run_id: string | null;
15
+ assistant_id: string | null;
16
+ thread_id: string;
14
17
  file_ids: string[];
15
- incomplete_at: number | null;
16
- incomplete_details: OpenAI.Beta.Threads.Messages.Message.IncompleteDetails | null;
17
18
  metadata: unknown;
18
- object: "thread.message";
19
- role: "user" | "assistant";
20
- run_id: string | null;
19
+ runSteps: Pick<OpenAI.Beta.Threads.Runs.Steps.RunStep, "id" | "run_id" | "step_details" | "completed_at" | "cancelled_at" | "failed_at" | "status">[];
21
20
  status: "in_progress" | "incomplete" | "completed";
22
- thread_id: string;
23
- }>;
21
+ };
24
22
 
25
- declare const optimisticId: () => string;
23
+ declare const key: ({ assistantId, }: {
24
+ assistantId: string;
25
+ }) => string;
26
26
 
27
- export { extendMessage, optimisticId };
27
+ export { optimisticId, serializeMessage, key as threadIdCookieKey };
package/dist/utils.d.ts CHANGED
@@ -1,27 +1,27 @@
1
1
  import OpenAI from 'openai';
2
2
 
3
- type Args = {
4
- message: OpenAI.Beta.Threads.Messages.Message;
5
- client: OpenAI;
6
- };
7
- declare const extendMessage: ({ message, client, }: Args) => Promise<{
8
- runSteps: OpenAI.Beta.Threads.Runs.Steps.RunStep[];
3
+ declare const optimisticId: () => string;
4
+
5
+ declare const serializeMessage: ({ message, }: {
6
+ message: OpenAI.Beta.Threads.Messages.Message & {
7
+ runSteps?: OpenAI.Beta.Threads.Runs.RunStep[];
8
+ };
9
+ }) => {
9
10
  id: string;
10
- assistant_id: string | null;
11
- completed_at: number | null;
12
- content: OpenAI.Beta.Threads.Messages.MessageContent[];
11
+ role: "user" | "assistant";
13
12
  created_at: number;
13
+ content: OpenAI.Beta.Threads.Messages.MessageContent[];
14
+ run_id: string | null;
15
+ assistant_id: string | null;
16
+ thread_id: string;
14
17
  file_ids: string[];
15
- incomplete_at: number | null;
16
- incomplete_details: OpenAI.Beta.Threads.Messages.Message.IncompleteDetails | null;
17
18
  metadata: unknown;
18
- object: "thread.message";
19
- role: "user" | "assistant";
20
- run_id: string | null;
19
+ runSteps: Pick<OpenAI.Beta.Threads.Runs.Steps.RunStep, "id" | "run_id" | "step_details" | "completed_at" | "cancelled_at" | "failed_at" | "status">[];
21
20
  status: "in_progress" | "incomplete" | "completed";
22
- thread_id: string;
23
- }>;
21
+ };
24
22
 
25
- declare const optimisticId: () => string;
23
+ declare const key: ({ assistantId, }: {
24
+ assistantId: string;
25
+ }) => string;
26
26
 
27
- export { extendMessage, optimisticId };
27
+ export { optimisticId, serializeMessage, key as threadIdCookieKey };