@superinterface/react 2.1.1 → 2.2.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.
@@ -80,33 +80,6 @@ function _object_spread_props(target, source) {
80
80
  }
81
81
  return target;
82
82
  }
83
- function _object_without_properties(source, excluded) {
84
- if (source == null) return {};
85
- var target = _object_without_properties_loose(source, excluded);
86
- var key, i;
87
- if (Object.getOwnPropertySymbols) {
88
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
89
- for(i = 0; i < sourceSymbolKeys.length; i++){
90
- key = sourceSymbolKeys[i];
91
- if (excluded.indexOf(key) >= 0) continue;
92
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
93
- target[key] = source[key];
94
- }
95
- }
96
- return target;
97
- }
98
- function _object_without_properties_loose(source, excluded) {
99
- if (source == null) return {};
100
- var target = {};
101
- var sourceKeys = Object.keys(source);
102
- var key, i;
103
- for(i = 0; i < sourceKeys.length; i++){
104
- key = sourceKeys[i];
105
- if (excluded.indexOf(key) >= 0) continue;
106
- target[key] = source[key];
107
- }
108
- return target;
109
- }
110
83
  function _ts_generator(thisArg, body) {
111
84
  var f, y, t, g, _ = {
112
85
  label: 0,
@@ -265,12 +238,6 @@ var mutationFns_exports = {};
265
238
  __export(mutationFns_exports, {
266
239
  createMessageMutationFn: function() {
267
240
  return createMessageMutationFn;
268
- },
269
- createRunMutationFn: function() {
270
- return createRunMutationFn;
271
- },
272
- handleActionMutationFn: function() {
273
- return handleActionMutationFn;
274
241
  }
275
242
  });
276
243
  module.exports = __toCommonJS(mutationFns_exports);
@@ -383,135 +350,8 @@ var createMessageMutationFn = function() {
383
350
  return _ref.apply(this, arguments);
384
351
  };
385
352
  }();
386
- // src/lib/runs/createRunMutationFn.ts
387
- var createRunMutationFn = function() {
388
- var _ref = _async_to_generator(function(_param) {
389
- var _param_client, client, threadId, assistantId, rest, run;
390
- return _ts_generator(this, function(_state) {
391
- switch(_state.label){
392
- case 0:
393
- _param_client = _param.client, client = _param_client === void 0 ? defaultClient : _param_client, threadId = _param.threadId, assistantId = _param.assistantId, rest = _object_without_properties(_param, [
394
- "client",
395
- "threadId",
396
- "assistantId"
397
- ]);
398
- return [
399
- 4,
400
- client.beta.threads.runs.create(threadId, _object_spread_props(_object_spread({}, rest), {
401
- assistant_id: assistantId
402
- }))
403
- ];
404
- case 1:
405
- run = _state.sent();
406
- return [
407
- 2,
408
- {
409
- run: run
410
- }
411
- ];
412
- }
413
- });
414
- });
415
- return function createRunMutationFn(_param) {
416
- return _ref.apply(this, arguments);
417
- };
418
- }();
419
- // src/lib/actions/handleActionMutationFn/index.ts
420
- var import_p_map = __toESM(require("p-map"), 1);
421
- // src/lib/actions/handleActionMutationFn/toolOutput/index.ts
422
- var toolOutput = function() {
423
- var _ref = _async_to_generator(function(param) {
424
- var toolCall, latestRun, functions, fn, _tmp;
425
- return _ts_generator(this, function(_state) {
426
- switch(_state.label){
427
- case 0:
428
- toolCall = param.toolCall, latestRun = param.latestRun, functions = param.functions;
429
- fn = functions[toolCall.function.name];
430
- if (!fn) {
431
- console.log({
432
- toolCall: toolCall
433
- });
434
- throw new Error("No function for ".concat(toolCall.function.name));
435
- }
436
- _tmp = {
437
- tool_call_id: toolCall.id
438
- };
439
- return [
440
- 4,
441
- fn({
442
- toolCall: toolCall,
443
- latestRun: latestRun
444
- })
445
- ];
446
- case 1:
447
- return [
448
- 2,
449
- (_tmp.output = _state.sent(), _tmp)
450
- ];
451
- }
452
- });
453
- });
454
- return function toolOutput(_) {
455
- return _ref.apply(this, arguments);
456
- };
457
- }();
458
- // src/lib/actions/handleActionMutationFn/index.ts
459
- var handleActionMutationFn = function() {
460
- var _ref = _async_to_generator(function(param) {
461
- var _param_client, client, latestRun, _param_functions, functions, toolCalls, run, _, _1, _tmp, _tmp1;
462
- return _ts_generator(this, function(_state) {
463
- switch(_state.label){
464
- case 0:
465
- _param_client = param.client, client = _param_client === void 0 ? defaultClient : _param_client, latestRun = param.latestRun, _param_functions = param.functions, functions = _param_functions === void 0 ? {} : _param_functions;
466
- if (!latestRun.required_action) {
467
- throw new Error("No required_action for run ${latestRun.id} with status ${latestRun.status}");
468
- }
469
- console.log("handleActions", {
470
- latestRun: latestRun
471
- });
472
- toolCalls = latestRun.required_action.submit_tool_outputs.tool_calls;
473
- _1 = (_ = client.beta.threads.runs).submitToolOutputs;
474
- _tmp = [
475
- latestRun.thread_id,
476
- latestRun.id
477
- ];
478
- _tmp1 = {};
479
- return [
480
- 4,
481
- (0, import_p_map.default)(toolCalls, function(toolCall) {
482
- return toolOutput({
483
- toolCall: toolCall,
484
- latestRun: latestRun,
485
- functions: functions
486
- });
487
- })
488
- ];
489
- case 1:
490
- return [
491
- 4,
492
- _1.apply(_, _tmp.concat([
493
- (_tmp1.tool_outputs = _state.sent(), _tmp1)
494
- ]))
495
- ];
496
- case 2:
497
- run = _state.sent();
498
- return [
499
- 2,
500
- {
501
- run: run
502
- }
503
- ];
504
- }
505
- });
506
- });
507
- return function handleActionMutationFn(_) {
508
- return _ref.apply(this, arguments);
509
- };
510
- }();
511
353
  // Annotate the CommonJS export names for ESM import in node:
512
354
  0 && (module.exports = {
513
- createMessageMutationFn: createMessageMutationFn,
514
- createRunMutationFn: createRunMutationFn,
515
- handleActionMutationFn: handleActionMutationFn
355
+ createMessageMutationFn: createMessageMutationFn
516
356
  });
517
357
  //# sourceMappingURL=mutationFns.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mutationFns.ts","../src/lib/ai/index.ts","../src/lib/runSteps/getRunSteps/index.ts","../src/lib/messages/extendMessage.ts","../src/lib/messages/createMessageMutationFn.ts","../src/lib/runs/createRunMutationFn.ts","../src/lib/actions/handleActionMutationFn/index.ts","../src/lib/actions/handleActionMutationFn/toolOutput/index.ts"],"names":["OpenAI","pMap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAmB;AAEZ,IAAM,gBAAgB,IAAI,cAAAA,QAAO;AAAA,EACtC,QAAQ,QAAQ,IAAI;AACtB,CAAC;;;ACIM,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;;;ACbO,IAAM,0BAA0B,OAAO;AAAA,EAC5C,SAAS;AAAA,EACT;AAAA,EACA;AACF,MAA+B;AAC7B,QAAM,UAAU,MAAM,OAAO,KAAK,QAAQ,SAAS,OAAO,UAAU;AAAA,IAClE;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AAED,SAAO;AAAA,IACL,SAAS,MAAM,cAAc;AAAA,MAC3B;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AChBO,IAAM,sBAAsB,OAAO;AAAA,EACxC,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA+B;AAC7B,QAAM,MAAM,MAAM,OAAO,KAAK,QAAQ,KAAK,OAAO,UAAU;AAAA,IAC1D,GAAG;AAAA,IACH,cAAc;AAAA,EAChB,CAAC;AAED,SAAO;AAAA,IACL;AAAA,EACF;AACF;;;AC3BA,mBAAiB;;;ACQV,IAAM,aAAa,OAAO;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,MAAY;AACV,QAAM,KAAK,UAAU,SAAS,SAAS,IAAI;AAE3C,MAAI,CAAC,IAAI;AACP,YAAQ,IAAI,EAAE,SAAS,CAAC;AACxB,UAAM,IAAI,MAAM,mBAAmB,SAAS,SAAS,IAAI,EAAE;AAAA,EAC7D;AAEA,SAAO;AAAA,IACL,cAAc,SAAS;AAAA,IACvB,QAAQ,MAAM,GAAG;AAAA,MACf;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ADbO,IAAM,yBAAyB,OAAO;AAAA,EAC3C,SAAS;AAAA,EACT;AAAA,EACA,YAAY,CAAC;AACf,MAA+B;AAC7B,MAAI,CAAC,UAAU,iBAAiB;AAC9B,UAAM,IAAI,MAAM,4EAA4E;AAAA,EAC9F;AAEA,UAAQ,IAAI,iBAAiB,EAAE,UAAU,CAAC;AAE1C,QAAM,YAAY,UAAU,gBAAgB,oBAAoB;AAEhE,QAAM,MAAM,MAAM,OAAO,KAAK,QAAQ,KAAK;AAAA,IACzC,UAAU;AAAA,IACV,UAAU;AAAA,IACV;AAAA,MACE,cAAc,UAAM,aAAAC,SAAK,WAAW,CAAC,aAAa,WAAW,EAAE,UAAU,WAAW,UAAU,CAAC,CAAC;AAAA,IAClG;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,EACF;AACF","sourcesContent":["export { createMessageMutationFn } from '@/lib/messages/createMessageMutationFn'\nexport { createRunMutationFn } from '@/lib/runs/createRunMutationFn'\nexport { handleActionMutationFn } from '@/lib/actions/handleActionMutationFn'\n","import OpenAI from 'openai'\n\nexport const defaultClient = new OpenAI({\n apiKey: process.env.OPENAI_API_KEY!,\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 { defaultClient } from '@/lib/ai'\nimport { Message } from '@/types'\nimport { extendMessage } from '@/lib/messages/extendMessage'\n\nexport type Args = {\n client?: typeof defaultClient\n content: string\n threadId: string\n}\n\nexport type Response = {\n message: Message\n}\n\nexport const createMessageMutationFn = async ({\n client = defaultClient,\n content,\n threadId,\n}: Args): Promise<Response> => {\n const message = await client.beta.threads.messages.create(threadId, {\n content: content,\n role: 'user',\n })\n\n return {\n message: await extendMessage({\n message,\n client,\n }),\n }\n}\n","import OpenAI from 'openai'\nimport { Run } from '@/types'\nimport { defaultClient } from '@/lib/ai'\n\nexport type Args = {\n client?: typeof defaultClient\n threadId: string\n assistantId: string\n} & (OpenAI.Beta.Threads.Runs.RunCreateParams | {})\n\nexport type Response = {\n run: Run\n}\n\nexport const createRunMutationFn = async ({\n client = defaultClient,\n threadId,\n assistantId,\n ...rest\n}: Args): Promise<Response> => {\n const run = await client.beta.threads.runs.create(threadId, {\n ...rest,\n assistant_id: assistantId,\n })\n\n return {\n run,\n }\n}\n","import { Run, Functions } from '@/types'\nimport pMap from 'p-map'\nimport { defaultClient } from '@/lib/ai'\nimport { toolOutput } from './toolOutput'\n\nexport type Args = {\n client?: typeof defaultClient\n latestRun: Run\n functions?: Functions\n}\n\nexport type Response = {\n run: Run\n}\n\nexport const handleActionMutationFn = async ({\n client = defaultClient,\n latestRun,\n functions = {},\n}: Args): Promise<Response> => {\n if (!latestRun.required_action) {\n throw new Error('No required_action for run ${latestRun.id} with status ${latestRun.status}')\n }\n\n console.log('handleActions', { latestRun })\n\n const toolCalls = latestRun.required_action.submit_tool_outputs.tool_calls\n\n const run = await client.beta.threads.runs.submitToolOutputs(\n latestRun.thread_id,\n latestRun.id,\n {\n tool_outputs: await pMap(toolCalls, (toolCall) => toolOutput({ toolCall, latestRun, functions })),\n },\n )\n\n return {\n run,\n }\n}\n","import OpenAI from 'openai'\nimport { Functions } from '@/types'\n\ntype Args = {\n toolCall: OpenAI.Beta.Threads.Runs.RequiredActionFunctionToolCall\n latestRun: OpenAI.Beta.Threads.Runs.Run\n functions: Functions\n}\n\nexport const toolOutput = async ({\n toolCall,\n latestRun,\n functions,\n}: Args) => {\n const fn = functions[toolCall.function.name]\n\n if (!fn) {\n console.log({ toolCall })\n throw new Error(`No function for ${toolCall.function.name}`)\n }\n\n return {\n tool_call_id: toolCall.id,\n output: await fn({\n toolCall,\n latestRun,\n }),\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/mutationFns.ts","../src/lib/ai/index.ts","../src/lib/runSteps/getRunSteps/index.ts","../src/lib/messages/extendMessage.ts","../src/lib/messages/createMessageMutationFn.ts"],"names":["OpenAI"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAmB;AAEZ,IAAM,gBAAgB,IAAI,cAAAA,QAAO;AAAA,EACtC,QAAQ,QAAQ,IAAI;AACtB,CAAC;;;ACIM,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;;;ACbO,IAAM,0BAA0B,OAAO;AAAA,EAC5C,SAAS;AAAA,EACT;AAAA,EACA;AACF,MAA+B;AAC7B,QAAM,UAAU,MAAM,OAAO,KAAK,QAAQ,SAAS,OAAO,UAAU;AAAA,IAClE;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AAED,SAAO;AAAA,IACL,SAAS,MAAM,cAAc;AAAA,MAC3B;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF","sourcesContent":["export { createMessageMutationFn } from '@/lib/messages/createMessageMutationFn'\n","import OpenAI from 'openai'\n\nexport const defaultClient = new OpenAI({\n apiKey: process.env.OPENAI_API_KEY!,\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 { defaultClient } from '@/lib/ai'\nimport { Message } from '@/types'\nimport { extendMessage } from '@/lib/messages/extendMessage'\n\nexport type Args = {\n client?: typeof defaultClient\n content: string\n threadId: string\n}\n\nexport type Response = {\n message: Message\n}\n\nexport const createMessageMutationFn = async ({\n client = defaultClient,\n content,\n threadId,\n}: Args): Promise<Response> => {\n const message = await client.beta.threads.messages.create(threadId, {\n content: content,\n role: 'user',\n })\n\n return {\n message: await extendMessage({\n message,\n client,\n }),\n }\n}\n"]}
@@ -1,35 +1,15 @@
1
1
  import { d as defaultClient } from './index-CGpJFXMu.cjs';
2
- import { Message, Run, Functions } from './types/index.cjs';
3
- import OpenAI from 'openai';
2
+ import { Message } from './types/index.cjs';
3
+ import 'openai';
4
4
 
5
- type Args$2 = {
5
+ type Args = {
6
6
  client?: typeof defaultClient;
7
7
  content: string;
8
8
  threadId: string;
9
9
  };
10
- type Response$2 = {
11
- message: Message;
12
- };
13
- declare const createMessageMutationFn: ({ client, content, threadId, }: Args$2) => Promise<Response$2>;
14
-
15
- type Args$1 = {
16
- client?: typeof defaultClient;
17
- threadId: string;
18
- assistantId: string;
19
- } & (OpenAI.Beta.Threads.Runs.RunCreateParams | {});
20
- type Response$1 = {
21
- run: Run;
22
- };
23
- declare const createRunMutationFn: ({ client, threadId, assistantId, ...rest }: Args$1) => Promise<Response$1>;
24
-
25
- type Args = {
26
- client?: typeof defaultClient;
27
- latestRun: Run;
28
- functions?: Functions;
29
- };
30
10
  type Response = {
31
- run: Run;
11
+ message: Message;
32
12
  };
33
- declare const handleActionMutationFn: ({ client, latestRun, functions, }: Args) => Promise<Response>;
13
+ declare const createMessageMutationFn: ({ client, content, threadId, }: Args) => Promise<Response>;
34
14
 
35
- export { createMessageMutationFn, createRunMutationFn, handleActionMutationFn };
15
+ export { createMessageMutationFn };
@@ -1,35 +1,15 @@
1
1
  import { d as defaultClient } from './index-CGpJFXMu.js';
2
- import { Message, Run, Functions } from './types/index.js';
3
- import OpenAI from 'openai';
2
+ import { Message } from './types/index.js';
3
+ import 'openai';
4
4
 
5
- type Args$2 = {
5
+ type Args = {
6
6
  client?: typeof defaultClient;
7
7
  content: string;
8
8
  threadId: string;
9
9
  };
10
- type Response$2 = {
11
- message: Message;
12
- };
13
- declare const createMessageMutationFn: ({ client, content, threadId, }: Args$2) => Promise<Response$2>;
14
-
15
- type Args$1 = {
16
- client?: typeof defaultClient;
17
- threadId: string;
18
- assistantId: string;
19
- } & (OpenAI.Beta.Threads.Runs.RunCreateParams | {});
20
- type Response$1 = {
21
- run: Run;
22
- };
23
- declare const createRunMutationFn: ({ client, threadId, assistantId, ...rest }: Args$1) => Promise<Response$1>;
24
-
25
- type Args = {
26
- client?: typeof defaultClient;
27
- latestRun: Run;
28
- functions?: Functions;
29
- };
30
10
  type Response = {
31
- run: Run;
11
+ message: Message;
32
12
  };
33
- declare const handleActionMutationFn: ({ client, latestRun, functions, }: Args) => Promise<Response>;
13
+ declare const createMessageMutationFn: ({ client, content, threadId, }: Args) => Promise<Response>;
34
14
 
35
- export { createMessageMutationFn, createRunMutationFn, handleActionMutationFn };
15
+ export { createMessageMutationFn };
@@ -80,33 +80,6 @@ function _object_spread_props(target, source) {
80
80
  }
81
81
  return target;
82
82
  }
83
- function _object_without_properties(source, excluded) {
84
- if (source == null) return {};
85
- var target = _object_without_properties_loose(source, excluded);
86
- var key, i;
87
- if (Object.getOwnPropertySymbols) {
88
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
89
- for(i = 0; i < sourceSymbolKeys.length; i++){
90
- key = sourceSymbolKeys[i];
91
- if (excluded.indexOf(key) >= 0) continue;
92
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
93
- target[key] = source[key];
94
- }
95
- }
96
- return target;
97
- }
98
- function _object_without_properties_loose(source, excluded) {
99
- if (source == null) return {};
100
- var target = {};
101
- var sourceKeys = Object.keys(source);
102
- var key, i;
103
- for(i = 0; i < sourceKeys.length; i++){
104
- key = sourceKeys[i];
105
- if (excluded.indexOf(key) >= 0) continue;
106
- target[key] = source[key];
107
- }
108
- return target;
109
- }
110
83
  function _ts_generator(thisArg, body) {
111
84
  var f, y, t, g, _ = {
112
85
  label: 0,
@@ -310,130 +283,5 @@ var createMessageMutationFn = function() {
310
283
  return _ref.apply(this, arguments);
311
284
  };
312
285
  }();
313
- // src/lib/runs/createRunMutationFn.ts
314
- var createRunMutationFn = function() {
315
- var _ref = _async_to_generator(function(_param) {
316
- var _param_client, client, threadId, assistantId, rest, run;
317
- return _ts_generator(this, function(_state) {
318
- switch(_state.label){
319
- case 0:
320
- _param_client = _param.client, client = _param_client === void 0 ? defaultClient : _param_client, threadId = _param.threadId, assistantId = _param.assistantId, rest = _object_without_properties(_param, [
321
- "client",
322
- "threadId",
323
- "assistantId"
324
- ]);
325
- return [
326
- 4,
327
- client.beta.threads.runs.create(threadId, _object_spread_props(_object_spread({}, rest), {
328
- assistant_id: assistantId
329
- }))
330
- ];
331
- case 1:
332
- run = _state.sent();
333
- return [
334
- 2,
335
- {
336
- run: run
337
- }
338
- ];
339
- }
340
- });
341
- });
342
- return function createRunMutationFn(_param) {
343
- return _ref.apply(this, arguments);
344
- };
345
- }();
346
- // src/lib/actions/handleActionMutationFn/index.ts
347
- import pMap from "p-map";
348
- // src/lib/actions/handleActionMutationFn/toolOutput/index.ts
349
- var toolOutput = function() {
350
- var _ref = _async_to_generator(function(param) {
351
- var toolCall, latestRun, functions, fn, _tmp;
352
- return _ts_generator(this, function(_state) {
353
- switch(_state.label){
354
- case 0:
355
- toolCall = param.toolCall, latestRun = param.latestRun, functions = param.functions;
356
- fn = functions[toolCall.function.name];
357
- if (!fn) {
358
- console.log({
359
- toolCall: toolCall
360
- });
361
- throw new Error("No function for ".concat(toolCall.function.name));
362
- }
363
- _tmp = {
364
- tool_call_id: toolCall.id
365
- };
366
- return [
367
- 4,
368
- fn({
369
- toolCall: toolCall,
370
- latestRun: latestRun
371
- })
372
- ];
373
- case 1:
374
- return [
375
- 2,
376
- (_tmp.output = _state.sent(), _tmp)
377
- ];
378
- }
379
- });
380
- });
381
- return function toolOutput(_) {
382
- return _ref.apply(this, arguments);
383
- };
384
- }();
385
- // src/lib/actions/handleActionMutationFn/index.ts
386
- var handleActionMutationFn = function() {
387
- var _ref = _async_to_generator(function(param) {
388
- var _param_client, client, latestRun, _param_functions, functions, toolCalls, run, _, _1, _tmp, _tmp1;
389
- return _ts_generator(this, function(_state) {
390
- switch(_state.label){
391
- case 0:
392
- _param_client = param.client, client = _param_client === void 0 ? defaultClient : _param_client, latestRun = param.latestRun, _param_functions = param.functions, functions = _param_functions === void 0 ? {} : _param_functions;
393
- if (!latestRun.required_action) {
394
- throw new Error("No required_action for run ${latestRun.id} with status ${latestRun.status}");
395
- }
396
- console.log("handleActions", {
397
- latestRun: latestRun
398
- });
399
- toolCalls = latestRun.required_action.submit_tool_outputs.tool_calls;
400
- _1 = (_ = client.beta.threads.runs).submitToolOutputs;
401
- _tmp = [
402
- latestRun.thread_id,
403
- latestRun.id
404
- ];
405
- _tmp1 = {};
406
- return [
407
- 4,
408
- pMap(toolCalls, function(toolCall) {
409
- return toolOutput({
410
- toolCall: toolCall,
411
- latestRun: latestRun,
412
- functions: functions
413
- });
414
- })
415
- ];
416
- case 1:
417
- return [
418
- 4,
419
- _1.apply(_, _tmp.concat([
420
- (_tmp1.tool_outputs = _state.sent(), _tmp1)
421
- ]))
422
- ];
423
- case 2:
424
- run = _state.sent();
425
- return [
426
- 2,
427
- {
428
- run: run
429
- }
430
- ];
431
- }
432
- });
433
- });
434
- return function handleActionMutationFn(_) {
435
- return _ref.apply(this, arguments);
436
- };
437
- }();
438
- export { createMessageMutationFn, createRunMutationFn, handleActionMutationFn };
286
+ export { createMessageMutationFn };
439
287
  //# sourceMappingURL=mutationFns.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/ai/index.ts","../src/lib/runSteps/getRunSteps/index.ts","../src/lib/messages/extendMessage.ts","../src/lib/messages/createMessageMutationFn.ts","../src/lib/runs/createRunMutationFn.ts","../src/lib/actions/handleActionMutationFn/index.ts","../src/lib/actions/handleActionMutationFn/toolOutput/index.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY;AAEZ,IAAM,gBAAgB,IAAI,OAAO;AAAA,EACtC,QAAQ,QAAQ,IAAI;AACtB,CAAC;;;ACIM,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;;;ACbO,IAAM,0BAA0B,OAAO;AAAA,EAC5C,SAAS;AAAA,EACT;AAAA,EACA;AACF,MAA+B;AAC7B,QAAM,UAAU,MAAM,OAAO,KAAK,QAAQ,SAAS,OAAO,UAAU;AAAA,IAClE;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AAED,SAAO;AAAA,IACL,SAAS,MAAM,cAAc;AAAA,MAC3B;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AChBO,IAAM,sBAAsB,OAAO;AAAA,EACxC,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA+B;AAC7B,QAAM,MAAM,MAAM,OAAO,KAAK,QAAQ,KAAK,OAAO,UAAU;AAAA,IAC1D,GAAG;AAAA,IACH,cAAc;AAAA,EAChB,CAAC;AAED,SAAO;AAAA,IACL;AAAA,EACF;AACF;;;AC3BA,OAAO,UAAU;;;ACQV,IAAM,aAAa,OAAO;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,MAAY;AACV,QAAM,KAAK,UAAU,SAAS,SAAS,IAAI;AAE3C,MAAI,CAAC,IAAI;AACP,YAAQ,IAAI,EAAE,SAAS,CAAC;AACxB,UAAM,IAAI,MAAM,mBAAmB,SAAS,SAAS,IAAI,EAAE;AAAA,EAC7D;AAEA,SAAO;AAAA,IACL,cAAc,SAAS;AAAA,IACvB,QAAQ,MAAM,GAAG;AAAA,MACf;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ADbO,IAAM,yBAAyB,OAAO;AAAA,EAC3C,SAAS;AAAA,EACT;AAAA,EACA,YAAY,CAAC;AACf,MAA+B;AAC7B,MAAI,CAAC,UAAU,iBAAiB;AAC9B,UAAM,IAAI,MAAM,4EAA4E;AAAA,EAC9F;AAEA,UAAQ,IAAI,iBAAiB,EAAE,UAAU,CAAC;AAE1C,QAAM,YAAY,UAAU,gBAAgB,oBAAoB;AAEhE,QAAM,MAAM,MAAM,OAAO,KAAK,QAAQ,KAAK;AAAA,IACzC,UAAU;AAAA,IACV,UAAU;AAAA,IACV;AAAA,MACE,cAAc,MAAM,KAAK,WAAW,CAAC,aAAa,WAAW,EAAE,UAAU,WAAW,UAAU,CAAC,CAAC;AAAA,IAClG;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,EACF;AACF","sourcesContent":["import OpenAI from 'openai'\n\nexport const defaultClient = new OpenAI({\n apiKey: process.env.OPENAI_API_KEY!,\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 { defaultClient } from '@/lib/ai'\nimport { Message } from '@/types'\nimport { extendMessage } from '@/lib/messages/extendMessage'\n\nexport type Args = {\n client?: typeof defaultClient\n content: string\n threadId: string\n}\n\nexport type Response = {\n message: Message\n}\n\nexport const createMessageMutationFn = async ({\n client = defaultClient,\n content,\n threadId,\n}: Args): Promise<Response> => {\n const message = await client.beta.threads.messages.create(threadId, {\n content: content,\n role: 'user',\n })\n\n return {\n message: await extendMessage({\n message,\n client,\n }),\n }\n}\n","import OpenAI from 'openai'\nimport { Run } from '@/types'\nimport { defaultClient } from '@/lib/ai'\n\nexport type Args = {\n client?: typeof defaultClient\n threadId: string\n assistantId: string\n} & (OpenAI.Beta.Threads.Runs.RunCreateParams | {})\n\nexport type Response = {\n run: Run\n}\n\nexport const createRunMutationFn = async ({\n client = defaultClient,\n threadId,\n assistantId,\n ...rest\n}: Args): Promise<Response> => {\n const run = await client.beta.threads.runs.create(threadId, {\n ...rest,\n assistant_id: assistantId,\n })\n\n return {\n run,\n }\n}\n","import { Run, Functions } from '@/types'\nimport pMap from 'p-map'\nimport { defaultClient } from '@/lib/ai'\nimport { toolOutput } from './toolOutput'\n\nexport type Args = {\n client?: typeof defaultClient\n latestRun: Run\n functions?: Functions\n}\n\nexport type Response = {\n run: Run\n}\n\nexport const handleActionMutationFn = async ({\n client = defaultClient,\n latestRun,\n functions = {},\n}: Args): Promise<Response> => {\n if (!latestRun.required_action) {\n throw new Error('No required_action for run ${latestRun.id} with status ${latestRun.status}')\n }\n\n console.log('handleActions', { latestRun })\n\n const toolCalls = latestRun.required_action.submit_tool_outputs.tool_calls\n\n const run = await client.beta.threads.runs.submitToolOutputs(\n latestRun.thread_id,\n latestRun.id,\n {\n tool_outputs: await pMap(toolCalls, (toolCall) => toolOutput({ toolCall, latestRun, functions })),\n },\n )\n\n return {\n run,\n }\n}\n","import OpenAI from 'openai'\nimport { Functions } from '@/types'\n\ntype Args = {\n toolCall: OpenAI.Beta.Threads.Runs.RequiredActionFunctionToolCall\n latestRun: OpenAI.Beta.Threads.Runs.Run\n functions: Functions\n}\n\nexport const toolOutput = async ({\n toolCall,\n latestRun,\n functions,\n}: Args) => {\n const fn = functions[toolCall.function.name]\n\n if (!fn) {\n console.log({ toolCall })\n throw new Error(`No function for ${toolCall.function.name}`)\n }\n\n return {\n tool_call_id: toolCall.id,\n output: await fn({\n toolCall,\n latestRun,\n }),\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/ai/index.ts","../src/lib/runSteps/getRunSteps/index.ts","../src/lib/messages/extendMessage.ts","../src/lib/messages/createMessageMutationFn.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY;AAEZ,IAAM,gBAAgB,IAAI,OAAO;AAAA,EACtC,QAAQ,QAAQ,IAAI;AACtB,CAAC;;;ACIM,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;;;ACbO,IAAM,0BAA0B,OAAO;AAAA,EAC5C,SAAS;AAAA,EACT;AAAA,EACA;AACF,MAA+B;AAC7B,QAAM,UAAU,MAAM,OAAO,KAAK,QAAQ,SAAS,OAAO,UAAU;AAAA,IAClE;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AAED,SAAO;AAAA,IACL,SAAS,MAAM,cAAc;AAAA,MAC3B;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF","sourcesContent":["import OpenAI from 'openai'\n\nexport const defaultClient = new OpenAI({\n apiKey: process.env.OPENAI_API_KEY!,\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 { defaultClient } from '@/lib/ai'\nimport { Message } from '@/types'\nimport { extendMessage } from '@/lib/messages/extendMessage'\n\nexport type Args = {\n client?: typeof defaultClient\n content: string\n threadId: string\n}\n\nexport type Response = {\n message: Message\n}\n\nexport const createMessageMutationFn = async ({\n client = defaultClient,\n content,\n threadId,\n}: Args): Promise<Response> => {\n const message = await client.beta.threads.messages.create(threadId, {\n content: content,\n role: 'user',\n })\n\n return {\n message: await extendMessage({\n message,\n client,\n }),\n }\n}\n"]}
package/dist/queryFns.cjs CHANGED
@@ -299,12 +299,6 @@ __export(queryFns_exports, {
299
299
  },
300
300
  messagesQueryOptions: function() {
301
301
  return messagesQueryOptions;
302
- },
303
- runsQueryFn: function() {
304
- return runsQueryFn;
305
- },
306
- runsQueryOptions: function() {
307
- return runsQueryOptions;
308
302
  }
309
303
  });
310
304
  module.exports = __toCommonJS(queryFns_exports);
@@ -382,6 +376,8 @@ var extendMessage = function() {
382
376
  return _ref.apply(this, arguments);
383
377
  };
384
378
  }();
379
+ // src/lib/messages/messagesQueryFn/data/runMessages/index.ts
380
+ var import_dayjs = __toESM(require("dayjs"), 1);
385
381
  // src/lib/messages/messagesQueryFn/data/runMessages/getLatestRun.ts
386
382
  var getLatestRun = function() {
387
383
  var _ref = _async_to_generator(function(param) {
@@ -464,8 +460,12 @@ var runMessages = function() {
464
460
  message: {
465
461
  id: optimisticId(),
466
462
  role: "assistant",
467
- created_at: +/* @__PURE__ */ new Date(),
463
+ created_at: (0, import_dayjs.default)().unix(),
468
464
  object: "thread.message",
465
+ incomplete_details: null,
466
+ completed_at: (0, import_dayjs.default)().unix(),
467
+ incomplete_at: null,
468
+ status: "completed",
469
469
  content: [],
470
470
  run_id: latestRun.id,
471
471
  assistant_id: latestRun.assistant_id,
@@ -684,57 +684,9 @@ var messagesQueryOptions = function(param) {
684
684
  superinterfaceContext: superinterfaceContext
685
685
  });
686
686
  };
687
- // src/lib/runs/runsQueryFn.ts
688
- var runsQueryFn = function() {
689
- var _ref = _async_to_generator(function(param) {
690
- var _param_client, client, threadId, response;
691
- return _ts_generator(this, function(_state) {
692
- switch(_state.label){
693
- case 0:
694
- _param_client = param.client, client = _param_client === void 0 ? defaultClient : _param_client, threadId = param.threadId;
695
- return [
696
- 4,
697
- client.beta.threads.runs.list(threadId, {
698
- limit: 1
699
- })
700
- ];
701
- case 1:
702
- response = _state.sent();
703
- return [
704
- 2,
705
- {
706
- // @ts-ignore-next-line
707
- data: response.data,
708
- hasNextPage: response.hasNextPage(),
709
- // @ts-ignore-next-line
710
- lastId: response.body.last_id
711
- }
712
- ];
713
- }
714
- });
715
- });
716
- return function runsQueryFn(_) {
717
- return _ref.apply(this, arguments);
718
- };
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
- };
733
687
  // Annotate the CommonJS export names for ESM import in node:
734
688
  0 && (module.exports = {
735
689
  messagesQueryFn: messagesQueryFn,
736
- messagesQueryOptions: messagesQueryOptions,
737
- runsQueryFn: runsQueryFn,
738
- runsQueryOptions: runsQueryOptions
690
+ messagesQueryOptions: messagesQueryOptions
739
691
  });
740
692
  //# sourceMappingURL=queryFns.cjs.map
@@ -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/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"]}
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/index.ts","../src/lib/messages/messagesQueryFn/data/runMessages/getLatestRun.ts","../src/lib/optimistic/optimisticId.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"],"names":["OpenAI","dayjs","pMap","queryKey"],"mappings":"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","sourcesContent":["export { messagesQueryFn } from '@/lib/messages/messagesQueryFn'\nexport { messagesQueryOptions } from '@/lib/messages/messagesQueryOptions'\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.Message>\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.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 { 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.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","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.Message>\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"]}