@superinterface/server 1.0.23 → 1.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/eslint/.cache_btwyo7 +1 -1
  5. package/.next/fallback-build-manifest.json +2 -2
  6. package/.next/server/app/_not-found.html +1 -1
  7. package/.next/server/app/_not-found.rsc +1 -1
  8. package/.next/server/app/api/files/[fileId]/contents/route.js +3 -3
  9. package/.next/server/app/api/files/[fileId]/contents/route.js.nft.json +1 -1
  10. package/.next/server/app/api/files/route.js +3 -3
  11. package/.next/server/app/api/files/route.js.nft.json +1 -1
  12. package/.next/server/app/api/messages/route.js +6 -6
  13. package/.next/server/app/api/messages/route.js.nft.json +1 -1
  14. package/.next/server/app/api/tasks/callback/route.js +6 -7
  15. package/.next/server/app/api/tasks/callback/route.js.nft.json +1 -1
  16. package/.next/server/app/api/threads/runs/submit-client-tool-outputs/route.js +1 -1
  17. package/.next/server/app/api/threads/runs/submit-client-tool-outputs/route.js.nft.json +1 -1
  18. package/.next/server/app/index.html +1 -1
  19. package/.next/server/app/index.rsc +1 -1
  20. package/.next/server/chunks/[root-of-the-server]__0c1bc5ed._.js +1 -1
  21. package/.next/server/chunks/[root-of-the-server]__0c1bc5ed._.js.map +1 -1
  22. package/.next/server/chunks/[root-of-the-server]__228bff78._.js +10 -10
  23. package/.next/server/chunks/[root-of-the-server]__228bff78._.js.map +1 -1
  24. package/.next/server/chunks/[root-of-the-server]__25ee13bc._.js +1 -1
  25. package/.next/server/chunks/[root-of-the-server]__25ee13bc._.js.map +1 -1
  26. package/.next/server/chunks/[root-of-the-server]__2945c9e9._.js +1 -1
  27. package/.next/server/chunks/[root-of-the-server]__2945c9e9._.js.map +1 -1
  28. package/.next/server/chunks/[root-of-the-server]__29635e8e._.js +1 -1
  29. package/.next/server/chunks/[root-of-the-server]__29635e8e._.js.map +1 -1
  30. package/.next/server/chunks/[root-of-the-server]__29b43490._.js +1 -1
  31. package/.next/server/chunks/[root-of-the-server]__29b43490._.js.map +1 -1
  32. package/.next/server/chunks/[root-of-the-server]__315f084a._.js +1 -1
  33. package/.next/server/chunks/[root-of-the-server]__315f084a._.js.map +1 -1
  34. package/.next/server/chunks/[root-of-the-server]__3307123c._.js +10 -10
  35. package/.next/server/chunks/[root-of-the-server]__3307123c._.js.map +1 -1
  36. package/.next/server/chunks/[root-of-the-server]__40ab45eb._.js +3 -0
  37. package/.next/server/chunks/[root-of-the-server]__40ab45eb._.js.map +1 -0
  38. package/.next/server/chunks/[root-of-the-server]__441cee00._.js +1 -1
  39. package/.next/server/chunks/[root-of-the-server]__441cee00._.js.map +1 -1
  40. package/.next/server/chunks/[root-of-the-server]__464a4377._.js +1 -1
  41. package/.next/server/chunks/[root-of-the-server]__464a4377._.js.map +1 -1
  42. package/.next/server/chunks/[root-of-the-server]__4e536bc0._.js +1 -1
  43. package/.next/server/chunks/[root-of-the-server]__4e536bc0._.js.map +1 -1
  44. package/.next/server/chunks/[root-of-the-server]__50c5f12c._.js +10 -10
  45. package/.next/server/chunks/[root-of-the-server]__50c5f12c._.js.map +1 -1
  46. package/.next/server/chunks/[root-of-the-server]__583a7f1c._.js +1 -1
  47. package/.next/server/chunks/[root-of-the-server]__583a7f1c._.js.map +1 -1
  48. package/.next/server/chunks/[root-of-the-server]__5abf1160._.js +1 -1
  49. package/.next/server/chunks/[root-of-the-server]__5abf1160._.js.map +1 -1
  50. package/.next/server/chunks/[root-of-the-server]__5d09614a._.js +1 -1
  51. package/.next/server/chunks/[root-of-the-server]__5d09614a._.js.map +1 -1
  52. package/.next/server/chunks/[root-of-the-server]__62d958e7._.js +1 -1
  53. package/.next/server/chunks/[root-of-the-server]__62d958e7._.js.map +1 -1
  54. package/.next/server/chunks/[root-of-the-server]__676affb1._.js +3 -0
  55. package/.next/server/chunks/[root-of-the-server]__676affb1._.js.map +1 -0
  56. package/.next/server/chunks/[root-of-the-server]__6b8ba839._.js +10 -10
  57. package/.next/server/chunks/[root-of-the-server]__6b8ba839._.js.map +1 -1
  58. package/.next/server/chunks/[root-of-the-server]__72b72b9e._.js +3 -0
  59. package/.next/server/chunks/[root-of-the-server]__72b72b9e._.js.map +1 -0
  60. package/.next/server/chunks/[root-of-the-server]__83461316._.js +1 -1
  61. package/.next/server/chunks/[root-of-the-server]__83461316._.js.map +1 -1
  62. package/.next/server/chunks/[root-of-the-server]__9a611d42._.js +1 -1
  63. package/.next/server/chunks/[root-of-the-server]__9a611d42._.js.map +1 -1
  64. package/.next/server/chunks/[root-of-the-server]__a878c913._.js +3 -0
  65. package/.next/server/chunks/[root-of-the-server]__a878c913._.js.map +1 -0
  66. package/.next/server/chunks/[root-of-the-server]__b10ec83e._.js +1 -1
  67. package/.next/server/chunks/[root-of-the-server]__b10ec83e._.js.map +1 -1
  68. package/.next/server/chunks/[root-of-the-server]__c1629392._.js +1 -1
  69. package/.next/server/chunks/[root-of-the-server]__c1629392._.js.map +1 -1
  70. package/.next/server/chunks/[root-of-the-server]__dd176cb5._.js +1 -1
  71. package/.next/server/chunks/[root-of-the-server]__dd176cb5._.js.map +1 -1
  72. package/.next/server/chunks/[root-of-the-server]__e7819e95._.js +10 -10
  73. package/.next/server/chunks/[root-of-the-server]__e7819e95._.js.map +1 -1
  74. package/.next/server/chunks/[root-of-the-server]__eb816e13._.js +1 -1
  75. package/.next/server/chunks/[root-of-the-server]__eb816e13._.js.map +1 -1
  76. package/.next/server/chunks/[root-of-the-server]__f0dfab03._.js +10 -10
  77. package/.next/server/chunks/[root-of-the-server]__f0dfab03._.js.map +1 -1
  78. package/.next/server/chunks/[root-of-the-server]__f845ef25._.js +3 -0
  79. package/.next/server/chunks/[root-of-the-server]__f845ef25._.js.map +1 -0
  80. package/.next/server/chunks/[root-of-the-server]__ff90af03._.js +10 -10
  81. package/.next/server/chunks/[root-of-the-server]__ff90af03._.js.map +1 -1
  82. package/.next/server/chunks/c4f00_next_dist_esm_build_templates_app-route_cb746cf4.js +1 -1
  83. package/.next/server/chunks/c4f00_next_dist_esm_build_templates_app-route_cb746cf4.js.map +1 -1
  84. package/.next/server/chunks/c4f00_next_dist_esm_build_templates_app-route_f952d9ab.js +1 -1
  85. package/.next/server/chunks/c4f00_next_dist_esm_build_templates_app-route_f952d9ab.js.map +1 -1
  86. package/.next/server/chunks/supercorp_superinterface_bebd2c96._.js +3 -3
  87. package/.next/server/chunks/supercorp_superinterface_bebd2c96._.js.map +1 -1
  88. package/.next/server/pages/404.html +1 -1
  89. package/.next/server/pages/500.html +1 -1
  90. package/.next/trace +1 -1
  91. package/dist/app/api/api-keys/[apiKeyId]/route.d.ts +3 -48
  92. package/dist/app/api/api-keys/[apiKeyId]/route.d.ts.map +1 -1
  93. package/dist/app/api/api-keys/[apiKeyId]/route.js +3 -3
  94. package/dist/app/api/api-keys/route.d.ts +2 -24
  95. package/dist/app/api/api-keys/route.d.ts.map +1 -1
  96. package/dist/app/api/api-keys/route.js +2 -2
  97. package/dist/app/api/assistants/[assistantId]/functions/[functionId]/route.d.ts +3 -165
  98. package/dist/app/api/assistants/[assistantId]/functions/[functionId]/route.d.ts.map +1 -1
  99. package/dist/app/api/assistants/[assistantId]/functions/[functionId]/route.js +3 -3
  100. package/dist/app/api/assistants/[assistantId]/functions/route.d.ts +2 -108
  101. package/dist/app/api/assistants/[assistantId]/functions/route.d.ts.map +1 -1
  102. package/dist/app/api/assistants/[assistantId]/functions/route.js +2 -2
  103. package/dist/app/api/assistants/[assistantId]/initial-messages/route.d.ts +2 -34
  104. package/dist/app/api/assistants/[assistantId]/initial-messages/route.d.ts.map +1 -1
  105. package/dist/app/api/assistants/[assistantId]/initial-messages/route.js +2 -2
  106. package/dist/app/api/assistants/[assistantId]/mcp-servers/[mcpServerId]/route.d.ts +3 -87
  107. package/dist/app/api/assistants/[assistantId]/mcp-servers/[mcpServerId]/route.d.ts.map +1 -1
  108. package/dist/app/api/assistants/[assistantId]/mcp-servers/[mcpServerId]/route.js +3 -3
  109. package/dist/app/api/assistants/[assistantId]/mcp-servers/route.d.ts +2 -56
  110. package/dist/app/api/assistants/[assistantId]/mcp-servers/route.d.ts.map +1 -1
  111. package/dist/app/api/assistants/[assistantId]/mcp-servers/route.js +2 -2
  112. package/dist/app/api/assistants/[assistantId]/route.d.ts +4 -117
  113. package/dist/app/api/assistants/[assistantId]/route.d.ts.map +1 -1
  114. package/dist/app/api/assistants/[assistantId]/route.js +3 -3
  115. package/dist/app/api/assistants/route.d.ts +2 -54
  116. package/dist/app/api/assistants/route.d.ts.map +1 -1
  117. package/dist/app/api/assistants/route.js +2 -2
  118. package/dist/app/api/files/[fileId]/contents/route.d.ts +1 -5
  119. package/dist/app/api/files/[fileId]/contents/route.d.ts.map +1 -1
  120. package/dist/app/api/files/[fileId]/contents/route.js +1 -1
  121. package/dist/app/api/files/route.d.ts +1 -7
  122. package/dist/app/api/files/route.d.ts.map +1 -1
  123. package/dist/app/api/files/route.js +1 -1
  124. package/dist/app/api/messages/lib/initialMessagesResponse.d.ts.map +1 -1
  125. package/dist/app/api/messages/lib/initialMessagesResponse.js +2 -3
  126. package/dist/app/api/messages/route.d.ts +2 -20
  127. package/dist/app/api/messages/route.d.ts.map +1 -1
  128. package/dist/app/api/messages/route.js +2 -2
  129. package/dist/app/api/providers/[modelProviderId]/assistants/route.d.ts +1 -16
  130. package/dist/app/api/providers/[modelProviderId]/assistants/route.d.ts.map +1 -1
  131. package/dist/app/api/providers/[modelProviderId]/assistants/route.js +1 -1
  132. package/dist/app/api/providers/[modelProviderId]/models/route.d.ts +1 -11
  133. package/dist/app/api/providers/[modelProviderId]/models/route.d.ts.map +1 -1
  134. package/dist/app/api/providers/[modelProviderId]/models/route.js +1 -1
  135. package/dist/app/api/providers/[modelProviderId]/route.d.ts +3 -57
  136. package/dist/app/api/providers/[modelProviderId]/route.d.ts.map +1 -1
  137. package/dist/app/api/providers/[modelProviderId]/route.js +3 -3
  138. package/dist/app/api/providers/route.d.ts +2 -30
  139. package/dist/app/api/providers/route.d.ts.map +1 -1
  140. package/dist/app/api/providers/route.js +2 -2
  141. package/dist/app/api/tasks/[taskId]/route.d.ts +3 -54
  142. package/dist/app/api/tasks/[taskId]/route.d.ts.map +1 -1
  143. package/dist/app/api/tasks/[taskId]/route.js +3 -3
  144. package/dist/app/api/tasks/callback/route.d.ts.map +1 -1
  145. package/dist/app/api/tasks/callback/route.js +2 -3
  146. package/dist/app/api/tasks/route.d.ts +2 -28
  147. package/dist/app/api/tasks/route.d.ts.map +1 -1
  148. package/dist/app/api/tasks/route.js +2 -2
  149. package/dist/app/api/threads/runs/submit-client-tool-outputs/route.d.ts +1 -5
  150. package/dist/app/api/threads/runs/submit-client-tool-outputs/route.d.ts.map +1 -1
  151. package/dist/app/api/threads/runs/submit-client-tool-outputs/route.js +3 -4
  152. package/dist/app/api/workspaces/[workspaceId]/route.d.ts +2 -28
  153. package/dist/app/api/workspaces/[workspaceId]/route.d.ts.map +1 -1
  154. package/dist/app/api/workspaces/[workspaceId]/route.js +2 -2
  155. package/dist/app/api/workspaces/route.d.ts +2 -20
  156. package/dist/app/api/workspaces/route.d.ts.map +1 -1
  157. package/dist/app/api/workspaces/route.js +2 -2
  158. package/dist/lib/functions/handleFunction/handleAssistant.d.ts.map +1 -1
  159. package/dist/lib/functions/handleFunction/handleAssistant.js +2 -3
  160. package/dist/lib/mcpServers/getToolCallMcpServer.d.ts.map +1 -1
  161. package/dist/lib/mcpServers/getToolCallMcpServer.js +5 -6
  162. package/dist/lib/prisma/index.d.ts.map +1 -1
  163. package/dist/lib/prisma/index.js +19 -5
  164. package/dist/lib/tools/tools/index.d.ts.map +1 -1
  165. package/dist/lib/tools/tools/index.js +2 -3
  166. package/package.json +11 -4
  167. package/.next/server/chunks/[root-of-the-server]__19865527._.js +0 -3
  168. package/.next/server/chunks/[root-of-the-server]__19865527._.js.map +0 -1
  169. package/.next/server/chunks/[root-of-the-server]__27aadac9._.js +0 -3
  170. package/.next/server/chunks/[root-of-the-server]__27aadac9._.js.map +0 -1
  171. package/.next/server/chunks/[root-of-the-server]__3ba06f7c._.js +0 -3
  172. package/.next/server/chunks/[root-of-the-server]__3ba06f7c._.js.map +0 -1
  173. package/.next/server/chunks/[root-of-the-server]__51977f30._.js +0 -3
  174. package/.next/server/chunks/[root-of-the-server]__51977f30._.js.map +0 -1
  175. package/.next/server/chunks/[root-of-the-server]__7f9ca1e3._.js +0 -3
  176. package/.next/server/chunks/[root-of-the-server]__7f9ca1e3._.js.map +0 -1
  177. package/.next/server/chunks/[root-of-the-server]__a135e388._.js +0 -3
  178. package/.next/server/chunks/[root-of-the-server]__a135e388._.js.map +0 -1
  179. package/dist/app/messages/lib/getWorkspaceId.d.ts +0 -6
  180. package/dist/app/messages/lib/getWorkspaceId.d.ts.map +0 -1
  181. package/dist/app/messages/lib/getWorkspaceId.js +0 -3
  182. package/dist/app/messages/lib/initialMessagesResponse.d.ts +0 -26
  183. package/dist/app/messages/lib/initialMessagesResponse.d.ts.map +0 -1
  184. package/dist/app/messages/lib/initialMessagesResponse.js +0 -59
  185. package/dist/app/messages/lib/serializeThread.d.ts +0 -18
  186. package/dist/app/messages/lib/serializeThread.d.ts.map +0 -1
  187. package/dist/app/messages/lib/serializeThread.js +0 -8
  188. package/dist/app/messages/route.d.ts +0 -31
  189. package/dist/app/messages/route.d.ts.map +0 -1
  190. package/dist/app/messages/route.js +0 -585
  191. package/dist/lib/prismaClient.d.ts +0 -5
  192. package/dist/lib/prismaClient.d.ts.map +0 -1
  193. package/dist/lib/prismaClient.js +0 -4
  194. /package/.next/static/{yTXEit1RwJfgpDwrdt6oQ → jt8inwg6nWaLQZ4qpiSJ-}/_buildManifest.js +0 -0
  195. /package/.next/static/{yTXEit1RwJfgpDwrdt6oQ → jt8inwg6nWaLQZ4qpiSJ-}/_clientMiddlewareManifest.json +0 -0
  196. /package/.next/static/{yTXEit1RwJfgpDwrdt6oQ → jt8inwg6nWaLQZ4qpiSJ-}/_ssgManifest.js +0 -0
@@ -1,585 +0,0 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import { NextResponse } from 'next/server';
13
- import { LogRequestMethod, LogRequestRoute, LogLevel } from '@prisma/client';
14
- import { messagesResponse, createMessageResponse, } from '@superinterface/react/server';
15
- import { enqueueJson } from '@superinterface/react/utils';
16
- import { cacheHeaders } from '../../lib/cache/cacheHeaders';
17
- import { z } from 'zod';
18
- import { storageThreadId as getStorageThreadId } from '../../lib/threads/storageThreadId';
19
- import { assistantClientAdapter } from '../../lib/assistants/assistantClientAdapter';
20
- import { content as getContent } from '../../lib/messages/content';
21
- import { workspaceAccessWhere as getWorkspaceAccessWhere } from '../../lib/apiKeys/workspaceAccessWhere';
22
- import { initialMessagesResponse } from './lib/initialMessagesResponse';
23
- import { createRunOpts } from '../../lib/runs/createRunOpts';
24
- import { handleToolCall } from '../../lib/toolCalls/handleToolCall';
25
- import { createThread } from '../../lib/threads/createThread';
26
- import { managedOpenaiThreadId } from '../../lib/threads/managedOpenaiThreadId';
27
- import { prisma } from '../../lib/prisma';
28
- import { createLog } from '../../lib/logs/createLog';
29
- import { serializeThread } from './lib/serializeThread';
30
- import { getWorkspaceId } from './lib/getWorkspaceId';
31
- import { validThreadId } from '../../lib/threads/validThreadId';
32
- import { isOpenaiAssistantsStorageProvider } from '../../lib/storageProviders/isOpenaiAssistantsStorageProvider';
33
- import { serializeMetadata } from '../../lib/metadata/serializeMetadata';
34
- import { isResponsesStorageProvider } from '../../lib/storageProviders/isResponsesStorageProvider';
35
- import { serializeError } from '../../lib/errors/serializeError';
36
- export const maxDuration = 800;
37
- export const GET = async (request) => {
38
- var _a;
39
- const paramsResult = z
40
- .object({
41
- publicApiKey: z.string().optional(),
42
- assistantId: z.string().optional(),
43
- threadId: z.string().optional(),
44
- pageParam: z.string().optional(),
45
- })
46
- .parse(Object.fromEntries(request.nextUrl.searchParams.entries()));
47
- const workspaceAccessWhere = await getWorkspaceAccessWhere({
48
- publicApiKey: (_a = paramsResult.publicApiKey) !== null && _a !== void 0 ? _a : null,
49
- });
50
- if (!workspaceAccessWhere) {
51
- return NextResponse.json({ error: 'Invalid api key' }, { status: 400 });
52
- }
53
- const assistantId = paramsResult.assistantId;
54
- if (!assistantId) {
55
- createLog({
56
- log: {
57
- requestMethod: LogRequestMethod.POST,
58
- requestRoute: LogRequestRoute.MESSAGES,
59
- level: LogLevel.ERROR,
60
- status: 400,
61
- message: 'No assistantId found.',
62
- workspaceId: await getWorkspaceId({ workspaceAccessWhere, prisma }),
63
- },
64
- });
65
- return NextResponse.json({ error: 'No assistant id found' }, { status: 400 });
66
- }
67
- const { threadId, pageParam } = paramsResult;
68
- const assistant = await prisma.assistant.findFirst({
69
- where: {
70
- id: assistantId,
71
- workspace: workspaceAccessWhere,
72
- },
73
- include: {
74
- threads: {
75
- where: {
76
- id: validThreadId({ threadId: threadId !== null && threadId !== void 0 ? threadId : null }),
77
- },
78
- take: 1,
79
- include: {
80
- assistant: {
81
- select: {
82
- storageProviderType: true,
83
- },
84
- },
85
- },
86
- },
87
- workspace: {
88
- include: {
89
- modelProviders: true,
90
- },
91
- },
92
- modelProvider: true,
93
- initialMessages: {
94
- orderBy: {
95
- orderNumber: 'desc',
96
- },
97
- },
98
- mcpServers: {
99
- include: {
100
- computerUseTool: true,
101
- stdioTransport: true,
102
- sseTransport: true,
103
- httpTransport: true,
104
- },
105
- },
106
- tools: {
107
- include: {
108
- fileSearchTool: true,
109
- webSearchTool: true,
110
- imageGenerationTool: true,
111
- codeInterpreterTool: true,
112
- computerUseTool: true,
113
- },
114
- },
115
- functions: true,
116
- },
117
- });
118
- if (!assistant) {
119
- createLog({
120
- log: {
121
- requestMethod: LogRequestMethod.POST,
122
- requestRoute: LogRequestRoute.MESSAGES,
123
- level: LogLevel.ERROR,
124
- status: 400,
125
- message: 'No assistant found.',
126
- workspaceId: await getWorkspaceId({ workspaceAccessWhere, prisma }),
127
- },
128
- });
129
- return NextResponse.json({ error: 'No assistant found' }, { status: 400 });
130
- }
131
- if (!threadId) {
132
- return NextResponse.json(await initialMessagesResponse({ assistant }), {
133
- headers: cacheHeaders,
134
- });
135
- }
136
- const thread = assistant.threads[0];
137
- if (!thread) {
138
- return NextResponse.json(await initialMessagesResponse({ assistant }), {
139
- headers: cacheHeaders,
140
- });
141
- }
142
- const client = assistantClientAdapter({ assistant, prisma, thread });
143
- const storageThreadId = getStorageThreadId({
144
- thread,
145
- });
146
- if (!storageThreadId) {
147
- return NextResponse.json(await initialMessagesResponse({ assistant }), {
148
- headers: cacheHeaders,
149
- });
150
- }
151
- try {
152
- return NextResponse.json(await messagesResponse(Object.assign({ threadId: storageThreadId, client }, (pageParam ? { pageParam } : {}))), {
153
- headers: cacheHeaders,
154
- });
155
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
156
- }
157
- catch (error) {
158
- console.dir({ error }, { depth: null });
159
- createLog({
160
- log: {
161
- requestMethod: LogRequestMethod.GET,
162
- requestRoute: LogRequestRoute.MESSAGES,
163
- level: LogLevel.ERROR,
164
- status: 500,
165
- message: `Failed to load messages: ${error.message}`,
166
- workspaceId: assistant.workspaceId,
167
- assistantId: assistant.id,
168
- threadId: thread.id,
169
- },
170
- });
171
- return NextResponse.json({ error: 'Failed to load messages.' }, { status: 500 });
172
- }
173
- };
174
- export const buildPOST = ({ onSuccessCreateThread = () => void 0, }) => async (request) => {
175
- var _a;
176
- const bodyResult = z
177
- .object({
178
- audioContent: z.any().optional(),
179
- content: z.any().optional(),
180
- attachments: z.array(z.any()).optional(),
181
- assistantId: z.string().optional(),
182
- publicApiKey: z.string().optional(),
183
- threadId: z.string().optional(),
184
- })
185
- .passthrough()
186
- .parse(await request.json());
187
- const { audioContent, content: textContent, attachments, assistantId, publicApiKey } = bodyResult, variables = __rest(bodyResult, ["audioContent", "content", "attachments", "assistantId", "publicApiKey"]);
188
- const workspaceAccessWhere = await getWorkspaceAccessWhere({
189
- publicApiKey: publicApiKey !== null && publicApiKey !== void 0 ? publicApiKey : null,
190
- });
191
- if (!workspaceAccessWhere) {
192
- return NextResponse.json({ error: 'Invalid api key' }, { status: 400 });
193
- }
194
- if (!assistantId) {
195
- createLog({
196
- log: {
197
- requestMethod: LogRequestMethod.POST,
198
- requestRoute: LogRequestRoute.MESSAGES,
199
- level: LogLevel.ERROR,
200
- status: 400,
201
- message: 'No assistantId found.',
202
- workspaceId: await getWorkspaceId({ workspaceAccessWhere, prisma }),
203
- },
204
- });
205
- return NextResponse.json({ error: 'No assistantId found.' }, { status: 400 });
206
- }
207
- if (!textContent && !audioContent && !(attachments === null || attachments === void 0 ? void 0 : attachments.length)) {
208
- createLog({
209
- log: {
210
- requestMethod: LogRequestMethod.POST,
211
- requestRoute: LogRequestRoute.MESSAGES,
212
- level: LogLevel.ERROR,
213
- status: 400,
214
- message: 'No content found.',
215
- workspaceId: await getWorkspaceId({ workspaceAccessWhere, prisma }),
216
- },
217
- });
218
- return NextResponse.json({ error: 'No content found.' }, { status: 400 });
219
- }
220
- const assistant = await prisma.assistant.findFirst({
221
- where: {
222
- id: assistantId,
223
- workspace: workspaceAccessWhere,
224
- },
225
- include: {
226
- threads: {
227
- where: {
228
- id: validThreadId({ threadId: (_a = bodyResult.threadId) !== null && _a !== void 0 ? _a : null }),
229
- },
230
- include: {
231
- assistant: {
232
- select: {
233
- storageProviderType: true,
234
- },
235
- },
236
- },
237
- take: 1,
238
- },
239
- workspace: {
240
- include: {
241
- modelProviders: true,
242
- },
243
- },
244
- mcpServers: {
245
- include: {
246
- computerUseTool: true,
247
- stdioTransport: true,
248
- sseTransport: true,
249
- httpTransport: true,
250
- },
251
- },
252
- tools: {
253
- include: {
254
- fileSearchTool: true,
255
- webSearchTool: true,
256
- imageGenerationTool: true,
257
- codeInterpreterTool: true,
258
- computerUseTool: {
259
- include: {
260
- mcpServer: {
261
- include: {
262
- stdioTransport: true,
263
- sseTransport: true,
264
- httpTransport: true,
265
- },
266
- },
267
- },
268
- },
269
- },
270
- },
271
- functions: {
272
- include: {
273
- handler: {
274
- include: {
275
- requestHandler: true,
276
- firecrawlHandler: true,
277
- replicateHandler: true,
278
- clientToolHandler: true,
279
- assistantHandler: true,
280
- createTaskHandler: true,
281
- listTasksHandler: true,
282
- updateTaskHandler: true,
283
- deleteTaskHandler: true,
284
- },
285
- },
286
- },
287
- },
288
- modelProvider: true,
289
- initialMessages: {
290
- orderBy: {
291
- orderNumber: 'asc',
292
- },
293
- },
294
- },
295
- });
296
- if (!assistant) {
297
- createLog({
298
- log: {
299
- requestMethod: LogRequestMethod.POST,
300
- requestRoute: LogRequestRoute.MESSAGES,
301
- level: LogLevel.ERROR,
302
- status: 400,
303
- message: 'No assistant found.',
304
- workspaceId: await getWorkspaceId({ workspaceAccessWhere, prisma }),
305
- },
306
- });
307
- return NextResponse.json({ error: 'No assistant found.' }, { status: 400 });
308
- }
309
- if (isOpenaiAssistantsStorageProvider({
310
- storageProviderType: assistant.storageProviderType,
311
- }) &&
312
- !assistant.openaiAssistantId) {
313
- createLog({
314
- log: {
315
- requestMethod: LogRequestMethod.POST,
316
- requestRoute: LogRequestRoute.MESSAGES,
317
- level: LogLevel.ERROR,
318
- status: 400,
319
- message: 'Assistant setup is not done.',
320
- workspaceId: assistant.workspaceId,
321
- assistantId: assistant.id,
322
- },
323
- });
324
- return NextResponse.json({ error: 'Assistant setup is not done.' }, { status: 400 });
325
- }
326
- let thread = assistant.threads[0];
327
- let isThreadCreated = false;
328
- if (!thread) {
329
- const createThreadClient = assistantClientAdapter({ assistant, prisma });
330
- try {
331
- thread = await createThread({
332
- client: createThreadClient,
333
- assistant,
334
- prisma,
335
- variables: variables,
336
- });
337
- onSuccessCreateThread({ thread });
338
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
339
- }
340
- catch (error) {
341
- console.error(error);
342
- createLog({
343
- log: {
344
- requestMethod: LogRequestMethod.POST,
345
- requestRoute: LogRequestRoute.MESSAGES,
346
- level: LogLevel.ERROR,
347
- status: 500,
348
- message: `Failed to create thread: ${error.message}`,
349
- workspaceId: assistant.workspaceId,
350
- assistantId: assistant.id,
351
- },
352
- });
353
- return NextResponse.json({ error: 'Failed to create thread.' }, { status: 500 });
354
- }
355
- isThreadCreated = true;
356
- }
357
- let storageThreadId;
358
- try {
359
- storageThreadId = getStorageThreadId({
360
- thread,
361
- });
362
- }
363
- catch (error) {
364
- console.error(error);
365
- createLog({
366
- log: {
367
- requestMethod: LogRequestMethod.POST,
368
- requestRoute: LogRequestRoute.MESSAGES,
369
- level: LogLevel.ERROR,
370
- status: 500,
371
- message: 'Failed to get storage thread id.',
372
- workspaceId: assistant.workspaceId,
373
- assistantId: assistant.id,
374
- threadId: thread.id,
375
- },
376
- });
377
- return NextResponse.json({ error: 'Failed to get storage thread id.' }, { status: 500 });
378
- }
379
- if (!storageThreadId &&
380
- (isOpenaiAssistantsStorageProvider({
381
- storageProviderType: assistant.storageProviderType,
382
- }) ||
383
- isResponsesStorageProvider({
384
- storageProviderType: assistant.storageProviderType,
385
- }))) {
386
- try {
387
- storageThreadId = await managedOpenaiThreadId({
388
- assistant,
389
- threadId: thread.id,
390
- });
391
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
392
- }
393
- catch (error) {
394
- createLog({
395
- log: {
396
- requestMethod: LogRequestMethod.POST,
397
- requestRoute: LogRequestRoute.MESSAGES,
398
- level: LogLevel.ERROR,
399
- status: 500,
400
- message: `Failed to get managed openai thread id: ${error.message}`,
401
- workspaceId: assistant.workspaceId,
402
- assistantId: assistant.id,
403
- threadId: thread.id,
404
- },
405
- });
406
- return NextResponse.json({ error: 'Failed to get managed openai thread id.' }, { status: 500 });
407
- }
408
- }
409
- if (!storageThreadId) {
410
- createLog({
411
- log: {
412
- requestMethod: LogRequestMethod.POST,
413
- requestRoute: LogRequestRoute.MESSAGES,
414
- level: LogLevel.ERROR,
415
- status: 500,
416
- message: 'Invalid thread configuration.',
417
- workspaceId: assistant.workspaceId,
418
- assistantId: assistant.id,
419
- threadId: thread.id,
420
- },
421
- });
422
- return NextResponse.json({ error: 'Invalid thread configuration.' }, { status: 500 });
423
- }
424
- let content;
425
- try {
426
- content = await getContent({
427
- audioContent,
428
- textContent,
429
- assistant,
430
- });
431
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
432
- }
433
- catch (error) {
434
- console.error(error);
435
- createLog({
436
- log: {
437
- requestMethod: LogRequestMethod.POST,
438
- requestRoute: LogRequestRoute.MESSAGES,
439
- level: LogLevel.ERROR,
440
- status: 500,
441
- message: `Failed to get content: ${error.message}`,
442
- workspaceId: assistant.workspaceId,
443
- assistantId: assistant.id,
444
- threadId: thread.id,
445
- },
446
- });
447
- return NextResponse.json({ error: 'Failed to get content.' }, { status: 500 });
448
- }
449
- const client = assistantClientAdapter({
450
- assistant,
451
- prisma,
452
- thread,
453
- });
454
- try {
455
- await client.beta.threads.messages.create(storageThreadId, Object.assign(Object.assign({ role: 'user', content }, ((attachments === null || attachments === void 0 ? void 0 : attachments.length) ? { attachments } : {})), { metadata: serializeMetadata({
456
- variables,
457
- workspaceId: assistant.workspaceId,
458
- }) }));
459
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
460
- }
461
- catch (error) {
462
- console.log({ error });
463
- createLog({
464
- log: {
465
- requestMethod: LogRequestMethod.POST,
466
- requestRoute: LogRequestRoute.MESSAGES,
467
- level: LogLevel.ERROR,
468
- status: 500,
469
- message: `Failed to create message: ${error.message}`,
470
- workspaceId: assistant.workspaceId,
471
- assistantId: assistant.id,
472
- threadId: thread.id,
473
- },
474
- });
475
- return NextResponse.json({ error: 'Failed to create message.' }, { status: 500 });
476
- }
477
- let createRunStream;
478
- try {
479
- createRunStream = await client.beta.threads.runs.create(storageThreadId, await createRunOpts({ assistant, thread }));
480
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
481
- }
482
- catch (error) {
483
- console.error(error);
484
- createLog({
485
- log: {
486
- requestMethod: LogRequestMethod.POST,
487
- requestRoute: LogRequestRoute.MESSAGES,
488
- level: LogLevel.ERROR,
489
- status: 500,
490
- message: `Failed to create run stream: ${serializeError({ error })}`,
491
- workspaceId: assistant.workspaceId,
492
- assistantId: assistant.id,
493
- threadId: thread.id,
494
- },
495
- });
496
- return NextResponse.json({ error: 'Failed to create run stream.' }, { status: 500 });
497
- }
498
- let latestInProgressRunData = null;
499
- let latestCompletedRunData = null;
500
- return new Response(createMessageResponse({
501
- client,
502
- createRunStream,
503
- handleToolCall: handleToolCall({ assistant, thread }),
504
- onStart: ({ controller, }) => {
505
- if (!isThreadCreated)
506
- return;
507
- return enqueueJson({
508
- controller,
509
- value: {
510
- event: 'thread.created',
511
- data: serializeThread({
512
- thread,
513
- }),
514
- },
515
- });
516
- },
517
- onError: async ({ error }) => {
518
- if (request.signal.aborted)
519
- return;
520
- createLog({
521
- log: {
522
- requestMethod: LogRequestMethod.POST,
523
- requestRoute: LogRequestRoute.MESSAGES,
524
- level: LogLevel.ERROR,
525
- status: 500,
526
- message: `Thread Run failed: ${error.message}`,
527
- workspaceId: assistant.workspaceId,
528
- assistantId: assistant.id,
529
- threadId: thread.id,
530
- },
531
- });
532
- // if (latestInProgressRunData) {
533
- // await client.beta.threads.runs.cancel(
534
- // latestInProgressRunData.thread_id,
535
- // latestInProgressRunData.id,
536
- // )
537
- // }
538
- },
539
- onEvent: ({ event, data }) => {
540
- var _a;
541
- if (event === 'thread.run.failed') {
542
- createLog({
543
- log: {
544
- requestMethod: LogRequestMethod.POST,
545
- requestRoute: LogRequestRoute.MESSAGES,
546
- level: LogLevel.ERROR,
547
- status: 500,
548
- message: `Thread Run failed: ${(_a = data.last_error) === null || _a === void 0 ? void 0 : _a.message}`,
549
- workspaceId: assistant.workspaceId,
550
- assistantId: assistant.id,
551
- threadId: thread.id,
552
- },
553
- });
554
- }
555
- else if (event === 'thread.run.in_progress') {
556
- latestInProgressRunData = data;
557
- }
558
- else if (event === 'thread.run.completed') {
559
- latestCompletedRunData = data;
560
- }
561
- },
562
- onClose: async () => {
563
- if (latestCompletedRunData)
564
- return;
565
- if (!isOpenaiAssistantsStorageProvider({
566
- storageProviderType: assistant.storageProviderType,
567
- }))
568
- return;
569
- if (latestInProgressRunData) {
570
- await client.beta.threads.runs.cancel(latestInProgressRunData.id, {
571
- thread_id: latestInProgressRunData.thread_id,
572
- });
573
- }
574
- },
575
- }), {
576
- status: 200,
577
- headers: {
578
- 'Content-Type': 'application/json; charset=utf-8',
579
- },
580
- });
581
- };
582
- export const POST = buildPOST({});
583
- export const OPTIONS = () => NextResponse.json({}, {
584
- headers: cacheHeaders,
585
- });
@@ -1,5 +0,0 @@
1
- import { PrismaClient } from '../../generated/prisma/index';
2
- export * from '../../generated/prisma/index';
3
- export { PrismaClient };
4
- export default PrismaClient;
5
- //# sourceMappingURL=prismaClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prismaClient.d.ts","sourceRoot":"","sources":["../../src/lib/prismaClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE3D,cAAc,8BAA8B,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,eAAe,YAAY,CAAA"}
@@ -1,4 +0,0 @@
1
- import { PrismaClient } from '../../generated/prisma/index';
2
- export * from '../../generated/prisma/index';
3
- export { PrismaClient };
4
- export default PrismaClient;