@cogitator-ai/openai-compat 19.0.17 → 20.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -50
- package/dist/client/openai-adapter.d.ts +74 -37
- package/dist/client/openai-adapter.d.ts.map +1 -1
- package/dist/client/openai-adapter.js +416 -137
- package/dist/client/openai-adapter.js.map +1 -1
- package/dist/client/storage.d.ts +4 -0
- package/dist/client/storage.d.ts.map +1 -1
- package/dist/client/storage.js +80 -60
- package/dist/client/storage.js.map +1 -1
- package/dist/client/thread-manager.d.ts +45 -31
- package/dist/client/thread-manager.d.ts.map +1 -1
- package/dist/client/thread-manager.js +157 -115
- package/dist/client/thread-manager.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server/api-server.d.ts +23 -1
- package/dist/server/api-server.d.ts.map +1 -1
- package/dist/server/api-server.js +42 -23
- package/dist/server/api-server.js.map +1 -1
- package/dist/server/middleware/auth.d.ts +2 -0
- package/dist/server/middleware/auth.d.ts.map +1 -1
- package/dist/server/middleware/auth.js +25 -2
- package/dist/server/middleware/auth.js.map +1 -1
- package/dist/server/routes/assistants.d.ts.map +1 -1
- package/dist/server/routes/assistants.js +16 -26
- package/dist/server/routes/assistants.js.map +1 -1
- package/dist/server/routes/files.d.ts.map +1 -1
- package/dist/server/routes/files.js +60 -56
- package/dist/server/routes/files.js.map +1 -1
- package/dist/server/routes/runs.d.ts.map +1 -1
- package/dist/server/routes/runs.js +102 -105
- package/dist/server/routes/runs.js.map +1 -1
- package/dist/server/routes/shared.d.ts +27 -0
- package/dist/server/routes/shared.d.ts.map +1 -0
- package/dist/server/routes/shared.js +54 -0
- package/dist/server/routes/shared.js.map +1 -0
- package/dist/server/routes/threads.d.ts.map +1 -1
- package/dist/server/routes/threads.js +29 -16
- package/dist/server/routes/threads.js.map +1 -1
- package/package.json +18 -6
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import { nanoid } from 'nanoid';
|
|
2
2
|
import { InMemoryThreadStorage } from './storage.js';
|
|
3
|
+
const IMAGE_MIME_BY_EXTENSION = {
|
|
4
|
+
png: 'image/png',
|
|
5
|
+
jpg: 'image/jpeg',
|
|
6
|
+
jpeg: 'image/jpeg',
|
|
7
|
+
gif: 'image/gif',
|
|
8
|
+
webp: 'image/webp',
|
|
9
|
+
};
|
|
10
|
+
const ASSISTANT_UPDATABLE_FIELDS = [
|
|
11
|
+
'model',
|
|
12
|
+
'name',
|
|
13
|
+
'description',
|
|
14
|
+
'instructions',
|
|
15
|
+
'tools',
|
|
16
|
+
'metadata',
|
|
17
|
+
'temperature',
|
|
18
|
+
'top_p',
|
|
19
|
+
'response_format',
|
|
20
|
+
];
|
|
3
21
|
/**
|
|
4
22
|
* Manages threads, messages, and assistants with pluggable storage.
|
|
5
23
|
*
|
|
@@ -34,50 +52,73 @@ import { InMemoryThreadStorage } from './storage.js';
|
|
|
34
52
|
*/
|
|
35
53
|
export class ThreadManager {
|
|
36
54
|
storage;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
55
|
+
locks = new Map();
|
|
56
|
+
/**
|
|
57
|
+
* Storage is the single source of truth (no in-process cache), so several
|
|
58
|
+
* server instances can share Redis/PostgreSQL storage without serving stale
|
|
59
|
+
* data. Read-modify-write operations on one thread are serialized per process.
|
|
60
|
+
*/
|
|
42
61
|
constructor(storage) {
|
|
43
62
|
this.storage = storage ?? new InMemoryThreadStorage();
|
|
44
63
|
}
|
|
64
|
+
async withLock(key, fn) {
|
|
65
|
+
const previous = this.locks.get(key) ?? Promise.resolve();
|
|
66
|
+
let release;
|
|
67
|
+
const current = new Promise((resolve) => {
|
|
68
|
+
release = resolve;
|
|
69
|
+
});
|
|
70
|
+
const chained = previous.then(() => current);
|
|
71
|
+
this.locks.set(key, chained);
|
|
72
|
+
try {
|
|
73
|
+
await previous;
|
|
74
|
+
return await fn();
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
release();
|
|
78
|
+
if (this.locks.get(key) === chained) {
|
|
79
|
+
this.locks.delete(key);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
45
83
|
async createAssistant(params) {
|
|
46
84
|
const id = `asst_${nanoid()}`;
|
|
47
85
|
const assistant = {
|
|
48
86
|
id,
|
|
49
87
|
name: params.name ?? null,
|
|
88
|
+
description: params.description ?? null,
|
|
50
89
|
model: params.model,
|
|
51
90
|
instructions: params.instructions ?? null,
|
|
52
91
|
tools: params.tools ?? [],
|
|
53
92
|
metadata: params.metadata ?? {},
|
|
54
93
|
temperature: params.temperature,
|
|
94
|
+
top_p: params.top_p,
|
|
95
|
+
response_format: params.response_format,
|
|
55
96
|
created_at: Math.floor(Date.now() / 1000),
|
|
56
97
|
};
|
|
57
98
|
await this.storage.saveAssistant(id, assistant);
|
|
58
|
-
this.cache.assistants.set(id, assistant);
|
|
59
99
|
return assistant;
|
|
60
100
|
}
|
|
61
101
|
async getAssistant(id) {
|
|
62
|
-
if (this.cache.assistants.has(id)) {
|
|
63
|
-
return this.cache.assistants.get(id);
|
|
64
|
-
}
|
|
65
102
|
const assistant = await this.storage.loadAssistant(id);
|
|
66
|
-
if (assistant) {
|
|
67
|
-
this.cache.assistants.set(id, assistant);
|
|
68
|
-
}
|
|
69
103
|
return assistant ?? undefined;
|
|
70
104
|
}
|
|
71
105
|
async updateAssistant(id, updates) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
106
|
+
return this.withLock(`assistant:${id}`, async () => {
|
|
107
|
+
const assistant = await this.getAssistant(id);
|
|
108
|
+
if (!assistant)
|
|
109
|
+
return undefined;
|
|
110
|
+
const target = assistant;
|
|
111
|
+
const source = updates;
|
|
112
|
+
for (const field of ASSISTANT_UPDATABLE_FIELDS) {
|
|
113
|
+
if (source[field] !== undefined) {
|
|
114
|
+
target[field] = source[field];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
await this.storage.saveAssistant(id, assistant);
|
|
118
|
+
return assistant;
|
|
119
|
+
});
|
|
78
120
|
}
|
|
79
121
|
async deleteAssistant(id) {
|
|
80
|
-
this.cache.assistants.delete(id);
|
|
81
122
|
return this.storage.deleteAssistant(id);
|
|
82
123
|
}
|
|
83
124
|
async listAssistants() {
|
|
@@ -93,7 +134,6 @@ export class ThreadManager {
|
|
|
93
134
|
};
|
|
94
135
|
const stored = { thread, messages: [] };
|
|
95
136
|
await this.storage.saveThread(id, stored);
|
|
96
|
-
this.cache.threads.set(id, stored);
|
|
97
137
|
return thread;
|
|
98
138
|
}
|
|
99
139
|
async getThread(id) {
|
|
@@ -101,54 +141,49 @@ export class ThreadManager {
|
|
|
101
141
|
return stored?.thread;
|
|
102
142
|
}
|
|
103
143
|
async getStoredThread(id) {
|
|
104
|
-
if (this.cache.threads.has(id)) {
|
|
105
|
-
return this.cache.threads.get(id);
|
|
106
|
-
}
|
|
107
144
|
const stored = await this.storage.loadThread(id);
|
|
108
|
-
if (stored) {
|
|
109
|
-
this.cache.threads.set(id, stored);
|
|
110
|
-
}
|
|
111
145
|
return stored ?? undefined;
|
|
112
146
|
}
|
|
113
147
|
async updateThread(id, updates) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
148
|
+
return this.withLock(`thread:${id}`, async () => {
|
|
149
|
+
const stored = await this.getStoredThread(id);
|
|
150
|
+
if (!stored)
|
|
151
|
+
return undefined;
|
|
152
|
+
if (updates.metadata) {
|
|
153
|
+
stored.thread.metadata = { ...stored.thread.metadata, ...updates.metadata };
|
|
154
|
+
}
|
|
155
|
+
await this.storage.saveThread(id, stored);
|
|
156
|
+
return stored.thread;
|
|
157
|
+
});
|
|
122
158
|
}
|
|
123
159
|
async deleteThread(id) {
|
|
124
|
-
this.
|
|
125
|
-
return this.storage.deleteThread(id);
|
|
160
|
+
return this.withLock(`thread:${id}`, () => this.storage.deleteThread(id));
|
|
126
161
|
}
|
|
127
162
|
async addMessage(threadId, request) {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
163
|
+
return this.withLock(`thread:${threadId}`, async () => {
|
|
164
|
+
const stored = await this.getStoredThread(threadId);
|
|
165
|
+
if (!stored)
|
|
166
|
+
return undefined;
|
|
167
|
+
const now = Math.floor(Date.now() / 1000);
|
|
168
|
+
const message = {
|
|
169
|
+
id: `msg_${nanoid()}`,
|
|
170
|
+
object: 'thread.message',
|
|
171
|
+
created_at: now,
|
|
172
|
+
thread_id: threadId,
|
|
173
|
+
status: 'completed',
|
|
174
|
+
completed_at: now,
|
|
175
|
+
incomplete_at: null,
|
|
176
|
+
role: request.role,
|
|
177
|
+
content: this.normalizeContent(request.content),
|
|
178
|
+
assistant_id: null,
|
|
179
|
+
run_id: null,
|
|
180
|
+
attachments: request.attachments ?? null,
|
|
181
|
+
metadata: request.metadata ?? {},
|
|
182
|
+
};
|
|
183
|
+
stored.messages.push(message);
|
|
184
|
+
await this.storage.saveThread(threadId, stored);
|
|
185
|
+
return message;
|
|
186
|
+
});
|
|
152
187
|
}
|
|
153
188
|
async getMessage(threadId, messageId) {
|
|
154
189
|
const stored = await this.getStoredThread(threadId);
|
|
@@ -158,16 +193,10 @@ export class ThreadManager {
|
|
|
158
193
|
const stored = await this.getStoredThread(threadId);
|
|
159
194
|
if (!stored)
|
|
160
195
|
return [];
|
|
161
|
-
let messages = [...stored.messages];
|
|
196
|
+
let messages = options?.order === 'asc' ? [...stored.messages] : [...stored.messages].reverse();
|
|
162
197
|
if (options?.run_id) {
|
|
163
198
|
messages = messages.filter((m) => m.run_id === options.run_id);
|
|
164
199
|
}
|
|
165
|
-
if (options?.order === 'asc') {
|
|
166
|
-
messages.sort((a, b) => a.created_at - b.created_at);
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
messages.sort((a, b) => b.created_at - a.created_at);
|
|
170
|
-
}
|
|
171
200
|
if (options?.after) {
|
|
172
201
|
const idx = messages.findIndex((m) => m.id === options.after);
|
|
173
202
|
if (idx !== -1) {
|
|
@@ -190,72 +219,85 @@ export class ThreadManager {
|
|
|
190
219
|
*/
|
|
191
220
|
async getMessagesForLLM(threadId) {
|
|
192
221
|
const messages = await this.listMessages(threadId, { order: 'asc' });
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
222
|
+
const result = [];
|
|
223
|
+
for (const msg of messages) {
|
|
224
|
+
const images = await this.extractImages(msg.content);
|
|
225
|
+
result.push({
|
|
226
|
+
role: msg.role,
|
|
227
|
+
content: this.extractTextContent(msg.content),
|
|
228
|
+
...(images.length > 0 && { images }),
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
return result;
|
|
197
232
|
}
|
|
198
233
|
/**
|
|
199
|
-
* Add an assistant message (from LLM response)
|
|
234
|
+
* Add an assistant message (from LLM response).
|
|
235
|
+
* Pass `messageId` to keep the id already announced in stream events.
|
|
200
236
|
*/
|
|
201
|
-
async addAssistantMessage(threadId, content, assistantId, runId) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
run_id: runId,
|
|
227
|
-
attachments: null,
|
|
228
|
-
metadata: {},
|
|
229
|
-
};
|
|
230
|
-
stored.messages.push(message);
|
|
231
|
-
await this.storage.saveThread(threadId, stored);
|
|
232
|
-
return message;
|
|
237
|
+
async addAssistantMessage(threadId, content, assistantId, runId, messageId) {
|
|
238
|
+
return this.withLock(`thread:${threadId}`, async () => {
|
|
239
|
+
const stored = await this.getStoredThread(threadId);
|
|
240
|
+
if (!stored)
|
|
241
|
+
return undefined;
|
|
242
|
+
const now = Math.floor(Date.now() / 1000);
|
|
243
|
+
const message = {
|
|
244
|
+
id: messageId ?? `msg_${nanoid()}`,
|
|
245
|
+
object: 'thread.message',
|
|
246
|
+
created_at: now,
|
|
247
|
+
thread_id: threadId,
|
|
248
|
+
status: 'completed',
|
|
249
|
+
completed_at: now,
|
|
250
|
+
incomplete_at: null,
|
|
251
|
+
role: 'assistant',
|
|
252
|
+
content: [{ type: 'text', text: { value: content, annotations: [] } }],
|
|
253
|
+
assistant_id: assistantId,
|
|
254
|
+
run_id: runId,
|
|
255
|
+
attachments: null,
|
|
256
|
+
metadata: {},
|
|
257
|
+
};
|
|
258
|
+
stored.messages.push(message);
|
|
259
|
+
await this.storage.saveThread(threadId, stored);
|
|
260
|
+
return message;
|
|
261
|
+
});
|
|
233
262
|
}
|
|
234
|
-
async addFile(content, filename) {
|
|
263
|
+
async addFile(content, filename, purpose = 'assistants') {
|
|
235
264
|
const id = `file_${nanoid()}`;
|
|
236
265
|
const created_at = Math.floor(Date.now() / 1000);
|
|
237
|
-
const file = { id, content, filename, created_at };
|
|
266
|
+
const file = { id, content, filename, created_at, purpose };
|
|
238
267
|
await this.storage.saveFile(id, file);
|
|
239
|
-
|
|
240
|
-
return { id, filename, created_at };
|
|
268
|
+
return { id, filename, created_at, purpose };
|
|
241
269
|
}
|
|
242
270
|
async getFile(id) {
|
|
243
|
-
if (this.cache.files.has(id)) {
|
|
244
|
-
return this.cache.files.get(id);
|
|
245
|
-
}
|
|
246
271
|
const file = await this.storage.loadFile(id);
|
|
247
|
-
if (file) {
|
|
248
|
-
this.cache.files.set(id, file);
|
|
249
|
-
}
|
|
250
272
|
return file ?? undefined;
|
|
251
273
|
}
|
|
252
274
|
async deleteFile(id) {
|
|
253
|
-
this.cache.files.delete(id);
|
|
254
275
|
return this.storage.deleteFile(id);
|
|
255
276
|
}
|
|
256
277
|
async listFiles() {
|
|
257
278
|
return this.storage.listFiles();
|
|
258
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* Resolve image parts to Cogitator image inputs: URLs are passed through,
|
|
282
|
+
* uploaded image files are inlined as base64.
|
|
283
|
+
*/
|
|
284
|
+
async extractImages(content) {
|
|
285
|
+
const images = [];
|
|
286
|
+
for (const part of content) {
|
|
287
|
+
if (part.type === 'image_url') {
|
|
288
|
+
images.push(part.image_url.url);
|
|
289
|
+
}
|
|
290
|
+
else if (part.type === 'image_file') {
|
|
291
|
+
const file = await this.getFile(part.image_file.file_id);
|
|
292
|
+
const extension = file?.filename.split('.').pop()?.toLowerCase() ?? '';
|
|
293
|
+
const mimeType = IMAGE_MIME_BY_EXTENSION[extension];
|
|
294
|
+
if (file && mimeType) {
|
|
295
|
+
images.push({ data: file.content.toString('base64'), mimeType });
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return images;
|
|
300
|
+
}
|
|
259
301
|
normalizeContent(content) {
|
|
260
302
|
if (typeof content === 'string') {
|
|
261
303
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-manager.js","sourceRoot":"","sources":["../../src/client/thread-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thread-manager.js","sourceRoot":"","sources":["../../src/client/thread-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,10 +9,10 @@ export { OpenAIServer, createOpenAIServer } from './server/api-server.js';
|
|
|
9
9
|
export type { OpenAIServerConfig } from './server/api-server.js';
|
|
10
10
|
export { formatOpenAIError } from './server/middleware/error-handler.js';
|
|
11
11
|
export type { AuthConfig } from './server/middleware/auth.js';
|
|
12
|
-
export { OpenAIAdapter, createOpenAIAdapter } from './client/openai-adapter.js';
|
|
13
|
-
export type { StreamEventType, StreamEmitterEvents } from './client/openai-adapter.js';
|
|
12
|
+
export { OpenAIAdapter, createOpenAIAdapter, COGITATOR_MODEL_ID } from './client/openai-adapter.js';
|
|
13
|
+
export type { StreamEventType, StreamEventData, StreamEmitterEvents, RunStreamEvent, OpenAIAdapterOptions, } from './client/openai-adapter.js';
|
|
14
14
|
export { ThreadManager } from './client/thread-manager.js';
|
|
15
|
-
export type { StoredThread, StoredAssistant } from './client/thread-manager.js';
|
|
15
|
+
export type { StoredThread, StoredAssistant, LLMThreadMessage, CreateAssistantParams, UpdateAssistantParams, } from './client/thread-manager.js';
|
|
16
16
|
export { InMemoryThreadStorage, RedisThreadStorage, PostgresThreadStorage, createThreadStorage, } from './client/storage.js';
|
|
17
17
|
export type { ThreadStorage, StoredFile, RedisThreadStorageConfig, PostgresThreadStorageConfig, } from './client/storage.js';
|
|
18
18
|
export type { OpenAIError, ListResponse, Assistant, AssistantTool, FunctionDefinition, ResponseFormat, CreateAssistantRequest, UpdateAssistantRequest, Thread, ToolResources, CreateThreadRequest, Message, MessageContent, TextContent, TextAnnotation, Attachment, CreateMessageRequest, MessageContentPart, Run, RunStatus, RequiredAction, ToolCall, RunError, Usage, ToolChoice, CreateRunRequest, SubmitToolOutputsRequest, ToolOutput, RunStep, StepDetails, StepToolCall, FileObject, FilePurpose, UploadFileRequest, StreamEvent, MessageDelta, RunStepDelta, MessageContentDelta, ImageFileContent, ImageUrlContent, JsonSchema, IncompleteDetails, TruncationStrategy, } from './types/openai-types.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACjG,YAAY,EACV,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,aAAa,EACb,UAAU,EACV,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,WAAW,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,OAAO,EACP,cAAc,EACd,WAAW,EACX,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,GAAG,EACH,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EACxB,UAAU,EACV,OAAO,EACP,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { OpenAIServer, createOpenAIServer } from './server/api-server.js';
|
|
9
9
|
export { formatOpenAIError } from './server/middleware/error-handler.js';
|
|
10
|
-
export { OpenAIAdapter, createOpenAIAdapter } from './client/openai-adapter.js';
|
|
10
|
+
export { OpenAIAdapter, createOpenAIAdapter, COGITATOR_MODEL_ID } from './client/openai-adapter.js';
|
|
11
11
|
export { ThreadManager } from './client/thread-manager.js';
|
|
12
12
|
export { InMemoryThreadStorage, RedisThreadStorage, PostgresThreadStorage, createThreadStorage, } from './client/storage.js';
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAQjG,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AASxD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Exposes Cogitator as an OpenAI Assistants API compatible server.
|
|
5
5
|
*/
|
|
6
|
+
import { type FastifyInstance } from 'fastify';
|
|
6
7
|
import type { Cogitator } from '@cogitator-ai/core';
|
|
7
8
|
import type { Tool } from '@cogitator-ai/types';
|
|
9
|
+
import type { ThreadStorage } from '../client/storage.js';
|
|
8
10
|
import { OpenAIAdapter } from '../client/openai-adapter.js';
|
|
9
11
|
export interface OpenAIServerConfig {
|
|
10
12
|
/** Port to listen on */
|
|
@@ -15,6 +17,15 @@ export interface OpenAIServerConfig {
|
|
|
15
17
|
apiKeys?: string[];
|
|
16
18
|
/** Tools to make available */
|
|
17
19
|
tools?: Tool[];
|
|
20
|
+
/**
|
|
21
|
+
* Cogitator model used for assistants/runs that request the advertised
|
|
22
|
+
* `cogitator` model id (e.g. 'openai/gpt-4o', 'ollama/llama3.1')
|
|
23
|
+
*/
|
|
24
|
+
defaultModel?: string;
|
|
25
|
+
/** Maximum upload size for POST /v1/files in bytes (default: 512 MB) */
|
|
26
|
+
maxFileSize?: number;
|
|
27
|
+
/** Persistence backend (connect it before passing). Default: in-memory */
|
|
28
|
+
storage?: ThreadStorage;
|
|
18
29
|
/** Enable request logging */
|
|
19
30
|
logging?: boolean;
|
|
20
31
|
/** CORS configuration */
|
|
@@ -48,6 +59,8 @@ export declare class OpenAIServer {
|
|
|
48
59
|
private config;
|
|
49
60
|
private adapter;
|
|
50
61
|
private started;
|
|
62
|
+
private ready;
|
|
63
|
+
private boundPort?;
|
|
51
64
|
constructor(cogitator: Cogitator, config?: OpenAIServerConfig);
|
|
52
65
|
/**
|
|
53
66
|
* Set up the Fastify server
|
|
@@ -62,13 +75,22 @@ export declare class OpenAIServer {
|
|
|
62
75
|
*/
|
|
63
76
|
stop(): Promise<void>;
|
|
64
77
|
/**
|
|
65
|
-
* Get the server URL
|
|
78
|
+
* Get the server URL (uses the bound port, so `port: 0` works)
|
|
66
79
|
*/
|
|
67
80
|
getUrl(): string;
|
|
68
81
|
/**
|
|
69
82
|
* Get the OpenAI-compatible base URL
|
|
70
83
|
*/
|
|
71
84
|
getBaseUrl(): string;
|
|
85
|
+
/**
|
|
86
|
+
* Resolves once all routes and plugins are registered (start() awaits it).
|
|
87
|
+
* Useful for `fastify.inject`-style testing via {@link getFastify}.
|
|
88
|
+
*/
|
|
89
|
+
waitUntilReady(): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Get the underlying Fastify instance
|
|
92
|
+
*/
|
|
93
|
+
getFastify(): FastifyInstance;
|
|
72
94
|
/**
|
|
73
95
|
* Check if server is running
|
|
74
96
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-server.d.ts","sourceRoot":"","sources":["../../src/server/api-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"api-server.d.ts","sourceRoot":"","sources":["../../src/server/api-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAsB,MAAM,0BAA0B,CAAC;AAQ7E,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,yBAAyB;IACzB,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;QACrC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CACyC;IACvD,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,SAAS,EAAE,SAAS,EAAE,MAAM,GAAE,kBAAuB;IA2BjE;;OAEG;YACW,WAAW;IA4CzB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B;;OAEG;IACH,MAAM,IAAI,MAAM;IAOhB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrC;;OAEG;IACH,UAAU,IAAI,eAAe;IAI7B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,UAAU,IAAI,aAAa;CAG5B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EACpB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,YAAY,CAEd"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import Fastify from 'fastify';
|
|
7
7
|
import fastifyCors from '@fastify/cors';
|
|
8
|
-
import { OpenAIAdapter } from '../client/openai-adapter.js';
|
|
8
|
+
import { OpenAIAdapter, COGITATOR_MODEL_ID } from '../client/openai-adapter.js';
|
|
9
9
|
import { createAuthMiddleware } from './middleware/auth.js';
|
|
10
10
|
import { errorHandler, notFoundHandler } from './middleware/error-handler.js';
|
|
11
11
|
import { registerAssistantRoutes } from './routes/assistants.js';
|
|
@@ -37,31 +37,30 @@ export class OpenAIServer {
|
|
|
37
37
|
config;
|
|
38
38
|
adapter;
|
|
39
39
|
started = false;
|
|
40
|
+
ready;
|
|
41
|
+
boundPort;
|
|
40
42
|
constructor(cogitator, config = {}) {
|
|
41
43
|
this.config = {
|
|
42
44
|
port: config.port ?? 8080,
|
|
43
45
|
host: config.host ?? '0.0.0.0',
|
|
44
46
|
apiKeys: config.apiKeys ?? [],
|
|
45
47
|
tools: config.tools ?? [],
|
|
48
|
+
defaultModel: config.defaultModel,
|
|
49
|
+
storage: config.storage,
|
|
50
|
+
maxFileSize: config.maxFileSize ?? 512 * 1024 * 1024,
|
|
46
51
|
logging: config.logging ?? false,
|
|
47
52
|
cors: config.cors ?? { origin: true },
|
|
48
53
|
};
|
|
49
|
-
this.adapter = new OpenAIAdapter(cogitator, {
|
|
54
|
+
this.adapter = new OpenAIAdapter(cogitator, {
|
|
55
|
+
tools: this.config.tools,
|
|
56
|
+
defaultModel: this.config.defaultModel,
|
|
57
|
+
storage: this.config.storage,
|
|
58
|
+
});
|
|
50
59
|
this.fastify = Fastify({
|
|
51
|
-
logger: this.config.logging
|
|
52
|
-
? {
|
|
53
|
-
level: 'info',
|
|
54
|
-
transport: {
|
|
55
|
-
target: 'pino-pretty',
|
|
56
|
-
options: {
|
|
57
|
-
translateTime: 'HH:MM:ss Z',
|
|
58
|
-
ignore: 'pid,hostname',
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
}
|
|
62
|
-
: false,
|
|
60
|
+
logger: this.config.logging ? { level: 'info' } : false,
|
|
63
61
|
});
|
|
64
|
-
|
|
62
|
+
this.ready = this.setupServer();
|
|
63
|
+
this.ready.catch(() => { });
|
|
65
64
|
}
|
|
66
65
|
/**
|
|
67
66
|
* Set up the Fastify server
|
|
@@ -73,13 +72,14 @@ export class OpenAIServer {
|
|
|
73
72
|
});
|
|
74
73
|
await this.fastify.register(import('@fastify/multipart'), {
|
|
75
74
|
limits: {
|
|
76
|
-
fileSize:
|
|
75
|
+
fileSize: this.config.maxFileSize,
|
|
77
76
|
},
|
|
78
77
|
});
|
|
79
78
|
if (this.config.apiKeys.length > 0) {
|
|
80
79
|
const authConfig = {
|
|
81
80
|
apiKeys: this.config.apiKeys,
|
|
82
81
|
required: true,
|
|
82
|
+
publicPaths: ['/health'],
|
|
83
83
|
};
|
|
84
84
|
this.fastify.addHook('preHandler', createAuthMiddleware(authConfig));
|
|
85
85
|
}
|
|
@@ -90,7 +90,7 @@ export class OpenAIServer {
|
|
|
90
90
|
object: 'list',
|
|
91
91
|
data: [
|
|
92
92
|
{
|
|
93
|
-
id:
|
|
93
|
+
id: COGITATOR_MODEL_ID,
|
|
94
94
|
object: 'model',
|
|
95
95
|
created: Math.floor(Date.now() / 1000),
|
|
96
96
|
owned_by: 'cogitator',
|
|
@@ -109,13 +109,17 @@ export class OpenAIServer {
|
|
|
109
109
|
if (this.started) {
|
|
110
110
|
throw new Error('Server already started');
|
|
111
111
|
}
|
|
112
|
+
await this.ready;
|
|
112
113
|
await this.fastify.listen({
|
|
113
114
|
port: this.config.port,
|
|
114
115
|
host: this.config.host,
|
|
115
116
|
});
|
|
117
|
+
const address = this.fastify.server.address();
|
|
118
|
+
this.boundPort = typeof address === 'object' && address ? address.port : this.config.port;
|
|
116
119
|
this.started = true;
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
if (this.config.logging) {
|
|
121
|
+
this.fastify.log.info(`OpenAI-compatible API available at ${this.getBaseUrl()}`);
|
|
122
|
+
}
|
|
119
123
|
}
|
|
120
124
|
/**
|
|
121
125
|
* Stop the server
|
|
@@ -126,19 +130,34 @@ export class OpenAIServer {
|
|
|
126
130
|
}
|
|
127
131
|
await this.fastify.close();
|
|
128
132
|
this.started = false;
|
|
129
|
-
console.log('[OpenAI Server] Stopped');
|
|
130
133
|
}
|
|
131
134
|
/**
|
|
132
|
-
* Get the server URL
|
|
135
|
+
* Get the server URL (uses the bound port, so `port: 0` works)
|
|
133
136
|
*/
|
|
134
137
|
getUrl() {
|
|
135
|
-
|
|
138
|
+
const host = this.config.host === '0.0.0.0' || this.config.host === '::' ? 'localhost' : this.config.host;
|
|
139
|
+
const formattedHost = host.includes(':') ? `[${host}]` : host;
|
|
140
|
+
return `http://${formattedHost}:${this.boundPort ?? this.config.port}`;
|
|
136
141
|
}
|
|
137
142
|
/**
|
|
138
143
|
* Get the OpenAI-compatible base URL
|
|
139
144
|
*/
|
|
140
145
|
getBaseUrl() {
|
|
141
|
-
return
|
|
146
|
+
return `${this.getUrl()}/v1`;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Resolves once all routes and plugins are registered (start() awaits it).
|
|
150
|
+
* Useful for `fastify.inject`-style testing via {@link getFastify}.
|
|
151
|
+
*/
|
|
152
|
+
async waitUntilReady() {
|
|
153
|
+
await this.ready;
|
|
154
|
+
await this.fastify.ready();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get the underlying Fastify instance
|
|
158
|
+
*/
|
|
159
|
+
getFastify() {
|
|
160
|
+
return this.fastify;
|
|
142
161
|
}
|
|
143
162
|
/**
|
|
144
163
|
* Check if server is running
|