@cogitator-ai/openai-compat 8.0.0 → 10.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 CHANGED
@@ -13,6 +13,8 @@ pnpm add @cogitator-ai/openai-compat
13
13
  - **OpenAI Server** - Expose Cogitator as OpenAI-compatible REST API
14
14
  - **OpenAI Adapter** - In-process adapter for programmatic access
15
15
  - **Thread Manager** - Manage conversations, messages, and assistants
16
+ - **Persistent Storage** - Pluggable backends: In-memory, Redis, PostgreSQL
17
+ - **SSE Streaming** - Real-time token streaming with OpenAI-compatible events
16
18
  - **File Operations** - Upload and manage files for assistants
17
19
  - **Full Assistants API** - Create, update, delete assistants
18
20
  - **Run Management** - Execute runs with tool support
@@ -173,7 +175,7 @@ const adapter = createOpenAIAdapter(cogitator, {
173
175
  ### Assistant Management
174
176
 
175
177
  ```typescript
176
- const assistant = adapter.createAssistant({
178
+ const assistant = await adapter.createAssistant({
177
179
  model: 'openai/gpt-4o',
178
180
  name: 'Code Helper',
179
181
  instructions: 'You help write code',
@@ -182,32 +184,32 @@ const assistant = adapter.createAssistant({
182
184
  metadata: { category: 'development' },
183
185
  });
184
186
 
185
- const fetched = adapter.getAssistant(assistant.id);
187
+ const fetched = await adapter.getAssistant(assistant.id);
186
188
 
187
- const updated = adapter.updateAssistant(assistant.id, {
189
+ const updated = await adapter.updateAssistant(assistant.id, {
188
190
  name: 'Code Expert',
189
191
  temperature: 0.5,
190
192
  });
191
193
 
192
- const all = adapter.listAssistants();
194
+ const all = await adapter.listAssistants();
193
195
 
194
- const deleted = adapter.deleteAssistant(assistant.id);
196
+ const deleted = await adapter.deleteAssistant(assistant.id);
195
197
  ```
196
198
 
197
199
  ### Thread Operations
198
200
 
199
201
  ```typescript
200
- const thread = adapter.createThread({ project: 'demo' });
202
+ const thread = await adapter.createThread({ project: 'demo' });
201
203
 
202
- const fetched = adapter.getThread(thread.id);
204
+ const fetched = await adapter.getThread(thread.id);
203
205
 
204
- const message = adapter.addMessage(thread.id, {
206
+ const message = await adapter.addMessage(thread.id, {
205
207
  role: 'user',
206
208
  content: 'Hello, how are you?',
207
209
  metadata: { source: 'web' },
208
210
  });
209
211
 
210
- const messages = adapter.listMessages(thread.id, {
212
+ const messages = await adapter.listMessages(thread.id, {
211
213
  limit: 20,
212
214
  order: 'asc',
213
215
  after: 'msg_abc123',
@@ -215,9 +217,9 @@ const messages = adapter.listMessages(thread.id, {
215
217
  run_id: 'run_123',
216
218
  });
217
219
 
218
- const msg = adapter.getMessage(thread.id, 'msg_abc123');
220
+ const msg = await adapter.getMessage(thread.id, 'msg_abc123');
219
221
 
220
- adapter.deleteThread(thread.id);
222
+ await adapter.deleteThread(thread.id);
221
223
  ```
222
224
 
223
225
  ### Run Execution
@@ -284,54 +286,235 @@ interface StoredAssistant {
284
286
  created_at: number;
285
287
  }
286
288
 
287
- const assistant = manager.createAssistant({
289
+ const assistant = await manager.createAssistant({
288
290
  model: 'gpt-4o',
289
291
  name: 'Helper',
290
292
  instructions: 'Be helpful',
291
293
  });
292
294
 
293
- const fetched = manager.getAssistant(assistant.id);
294
- const updated = manager.updateAssistant(assistant.id, { name: 'Expert' });
295
- const all = manager.listAssistants();
296
- manager.deleteAssistant(assistant.id);
295
+ const fetched = await manager.getAssistant(assistant.id);
296
+ const updated = await manager.updateAssistant(assistant.id, { name: 'Expert' });
297
+ const all = await manager.listAssistants();
298
+ await manager.deleteAssistant(assistant.id);
297
299
  ```
298
300
 
299
301
  ### Thread Storage
300
302
 
301
303
  ```typescript
302
- const thread = manager.createThread({ key: 'value' });
303
- const fetched = manager.getThread(thread.id);
304
- manager.deleteThread(thread.id);
304
+ const thread = await manager.createThread({ key: 'value' });
305
+ const fetched = await manager.getThread(thread.id);
306
+ await manager.deleteThread(thread.id);
305
307
  ```
306
308
 
307
309
  ### Message Operations
308
310
 
309
311
  ```typescript
310
- const message = manager.addMessage(thread.id, {
312
+ const message = await manager.addMessage(thread.id, {
311
313
  role: 'user',
312
314
  content: 'Hello!',
313
315
  });
314
316
 
315
- const assistantMsg = manager.addAssistantMessage(thread.id, 'Hi there!', assistant.id, run.id);
317
+ const assistantMsg = await manager.addAssistantMessage(
318
+ thread.id,
319
+ 'Hi there!',
320
+ assistant.id,
321
+ run.id
322
+ );
316
323
 
317
- const messages = manager.listMessages(thread.id, {
324
+ const messages = await manager.listMessages(thread.id, {
318
325
  limit: 50,
319
326
  order: 'desc',
320
327
  });
321
328
 
322
- const llmMessages = manager.getMessagesForLLM(thread.id);
329
+ const llmMessages = await manager.getMessagesForLLM(thread.id);
323
330
  ```
324
331
 
325
332
  ### File Management
326
333
 
327
334
  ```typescript
328
- const file = manager.addFile(Buffer.from('file content'), 'document.txt');
335
+ const file = await manager.addFile(Buffer.from('file content'), 'document.txt');
329
336
 
330
- const fetched = manager.getFile(file.id);
337
+ const fetched = await manager.getFile(file.id);
331
338
 
332
- const all = manager.listFiles();
339
+ const all = await manager.listFiles();
333
340
 
334
- manager.deleteFile(file.id);
341
+ await manager.deleteFile(file.id);
342
+ ```
343
+
344
+ ---
345
+
346
+ ## Persistent Storage
347
+
348
+ By default, ThreadManager uses in-memory storage. For production, use Redis or PostgreSQL backends.
349
+
350
+ ### Storage Backends
351
+
352
+ ```typescript
353
+ import {
354
+ ThreadManager,
355
+ InMemoryThreadStorage,
356
+ RedisThreadStorage,
357
+ PostgresThreadStorage,
358
+ createThreadStorage,
359
+ } from '@cogitator-ai/openai-compat';
360
+ ```
361
+
362
+ ### In-Memory (Default)
363
+
364
+ ```typescript
365
+ const manager = new ThreadManager();
366
+ // or explicitly:
367
+ const manager = new ThreadManager(new InMemoryThreadStorage());
368
+ ```
369
+
370
+ ### Redis Storage
371
+
372
+ Requires `ioredis` peer dependency:
373
+
374
+ ```bash
375
+ pnpm add ioredis
376
+ ```
377
+
378
+ ```typescript
379
+ const storage = new RedisThreadStorage({
380
+ host: 'localhost',
381
+ port: 6379,
382
+ prefix: 'cogitator:', // optional, default: 'cogitator:'
383
+ });
384
+ await storage.connect();
385
+
386
+ const manager = new ThreadManager(storage);
387
+
388
+ // When done:
389
+ await storage.disconnect();
390
+ ```
391
+
392
+ With connection URL:
393
+
394
+ ```typescript
395
+ const storage = new RedisThreadStorage({
396
+ url: 'redis://user:pass@localhost:6379/0',
397
+ });
398
+ ```
399
+
400
+ ### PostgreSQL Storage
401
+
402
+ Requires `pg` peer dependency:
403
+
404
+ ```bash
405
+ pnpm add pg
406
+ ```
407
+
408
+ ```typescript
409
+ const storage = new PostgresThreadStorage({
410
+ host: 'localhost',
411
+ port: 5432,
412
+ database: 'cogitator',
413
+ user: 'postgres',
414
+ password: 'secret',
415
+ tableName: 'cogitator_storage', // optional
416
+ });
417
+ await storage.connect();
418
+
419
+ const manager = new ThreadManager(storage);
420
+
421
+ // When done:
422
+ await storage.disconnect();
423
+ ```
424
+
425
+ With connection string:
426
+
427
+ ```typescript
428
+ const storage = new PostgresThreadStorage({
429
+ connectionString: 'postgresql://user:pass@localhost:5432/db',
430
+ });
431
+ ```
432
+
433
+ ### Factory Function
434
+
435
+ ```typescript
436
+ // In-memory
437
+ const storage = createThreadStorage('memory');
438
+
439
+ // Redis
440
+ const storage = createThreadStorage('redis', {
441
+ host: 'localhost',
442
+ port: 6379,
443
+ });
444
+
445
+ // PostgreSQL
446
+ const storage = createThreadStorage('postgres', {
447
+ connectionString: 'postgresql://localhost/db',
448
+ });
449
+ ```
450
+
451
+ ### Using with OpenAI Server
452
+
453
+ ```typescript
454
+ import { OpenAIServer, RedisThreadStorage } from '@cogitator-ai/openai-compat';
455
+ import { Cogitator } from '@cogitator-ai/core';
456
+
457
+ const storage = new RedisThreadStorage({ host: 'localhost' });
458
+ await storage.connect();
459
+
460
+ const cogitator = new Cogitator({ defaultModel: 'openai/gpt-4o' });
461
+
462
+ // Create adapter with custom storage
463
+ const adapter = new OpenAIAdapter(cogitator, { tools: [] });
464
+ // Note: To use custom storage, create ThreadManager separately:
465
+ const manager = new ThreadManager(storage);
466
+
467
+ const server = new OpenAIServer(cogitator, {
468
+ port: 8080,
469
+ adapter, // pass custom adapter
470
+ });
471
+
472
+ await server.start();
473
+ ```
474
+
475
+ ### ThreadStorage Interface
476
+
477
+ All storage backends implement this interface:
478
+
479
+ ```typescript
480
+ interface ThreadStorage {
481
+ // Threads
482
+ saveThread(id: string, thread: StoredThread): Promise<void>;
483
+ loadThread(id: string): Promise<StoredThread | null>;
484
+ deleteThread(id: string): Promise<boolean>;
485
+ listThreads(): Promise<StoredThread[]>;
486
+
487
+ // Assistants
488
+ saveAssistant(id: string, assistant: StoredAssistant): Promise<void>;
489
+ loadAssistant(id: string): Promise<StoredAssistant | null>;
490
+ deleteAssistant(id: string): Promise<boolean>;
491
+ listAssistants(): Promise<StoredAssistant[]>;
492
+
493
+ // Files
494
+ saveFile(id: string, file: StoredFile): Promise<void>;
495
+ loadFile(id: string): Promise<StoredFile | null>;
496
+ deleteFile(id: string): Promise<boolean>;
497
+ listFiles(): Promise<StoredFile[]>;
498
+
499
+ // Lifecycle (optional)
500
+ connect?(): Promise<void>;
501
+ disconnect?(): Promise<void>;
502
+ }
503
+ ```
504
+
505
+ ### Custom Storage Implementation
506
+
507
+ ```typescript
508
+ import type { ThreadStorage } from '@cogitator-ai/openai-compat';
509
+
510
+ class MyCustomStorage implements ThreadStorage {
511
+ async saveThread(id: string, thread: StoredThread): Promise<void> {
512
+ // Your implementation
513
+ }
514
+ // ... implement all methods
515
+ }
516
+
517
+ const manager = new ThreadManager(new MyCustomStorage());
335
518
  ```
336
519
 
337
520
  ---
@@ -484,13 +667,54 @@ async function waitForRun(openai: OpenAI, threadId: string, runId: string): Prom
484
667
 
485
668
  ---
486
669
 
487
- ## Stream Events
670
+ ## SSE Streaming
671
+
672
+ Real-time streaming support with Server-Sent Events (SSE). Streams tokens as they are generated for immediate feedback.
673
+
674
+ ### Streaming with OpenAI SDK
675
+
676
+ ```typescript
677
+ const run = await openai.beta.threads.runs.create(threadId, {
678
+ assistant_id: assistant.id,
679
+ stream: true, // Enable streaming
680
+ });
681
+
682
+ // Handle streaming events
683
+ for await (const event of run) {
684
+ if (event.event === 'thread.message.delta') {
685
+ const delta = event.data.delta;
686
+ if (delta.content) {
687
+ for (const content of delta.content) {
688
+ if (content.type === 'text' && content.text?.value) {
689
+ process.stdout.write(content.text.value);
690
+ }
691
+ }
692
+ }
693
+ }
694
+ }
695
+ ```
696
+
697
+ ### Create Thread and Run with Streaming
698
+
699
+ ```typescript
700
+ const run = await openai.beta.threads.createAndRun({
701
+ assistant_id: assistant.id,
702
+ thread: {
703
+ messages: [{ role: 'user', content: 'Hello!' }],
704
+ },
705
+ stream: true,
706
+ });
707
+
708
+ // Process stream
709
+ for await (const event of run) {
710
+ console.log(event.event, event.data);
711
+ }
712
+ ```
488
713
 
489
- The package defines stream event types for future streaming support:
714
+ ### Stream Events
490
715
 
491
716
  ```typescript
492
717
  type StreamEvent =
493
- | { event: 'thread.created'; data: Thread }
494
718
  | { event: 'thread.run.created'; data: Run }
495
719
  | { event: 'thread.run.queued'; data: Run }
496
720
  | { event: 'thread.run.in_progress'; data: Run }
@@ -499,11 +723,70 @@ type StreamEvent =
499
723
  | { event: 'thread.run.failed'; data: Run }
500
724
  | { event: 'thread.run.cancelled'; data: Run }
501
725
  | { event: 'thread.message.created'; data: Message }
726
+ | { event: 'thread.message.in_progress'; data: Message }
502
727
  | { event: 'thread.message.delta'; data: MessageDelta }
503
728
  | { event: 'thread.message.completed'; data: Message }
504
729
  | { event: 'done'; data: '[DONE]' };
505
730
  ```
506
731
 
732
+ ### Message Delta Format
733
+
734
+ ```typescript
735
+ interface MessageDelta {
736
+ id: string;
737
+ object: 'thread.message.delta';
738
+ delta: {
739
+ content?: {
740
+ index: number;
741
+ type: 'text';
742
+ text?: { value?: string };
743
+ }[];
744
+ };
745
+ }
746
+ ```
747
+
748
+ ### Raw SSE Endpoint
749
+
750
+ For non-SDK usage, the SSE stream is available at:
751
+
752
+ ```
753
+ POST /v1/threads/{thread_id}/runs
754
+ Content-Type: application/json
755
+
756
+ {
757
+ "assistant_id": "asst_xxx",
758
+ "stream": true
759
+ }
760
+ ```
761
+
762
+ Response format (Server-Sent Events):
763
+
764
+ ```
765
+ event: thread.run.created
766
+ data: {"id":"run_xxx","status":"queued",...}
767
+
768
+ event: thread.run.in_progress
769
+ data: {"id":"run_xxx","status":"in_progress",...}
770
+
771
+ event: thread.message.created
772
+ data: {"id":"msg_xxx","status":"in_progress",...}
773
+
774
+ event: thread.message.delta
775
+ data: {"id":"msg_xxx","delta":{"content":[{"index":0,"type":"text","text":{"value":"Hello"}}]}}
776
+
777
+ event: thread.message.delta
778
+ data: {"id":"msg_xxx","delta":{"content":[{"index":1,"type":"text","text":{"value":" world"}}]}}
779
+
780
+ event: thread.message.completed
781
+ data: {"id":"msg_xxx","status":"completed",...}
782
+
783
+ event: thread.run.completed
784
+ data: {"id":"run_xxx","status":"completed",...}
785
+
786
+ event: done
787
+ data: [DONE]
788
+ ```
789
+
507
790
  ---
508
791
 
509
792
  ## Type Reference
@@ -579,6 +862,26 @@ import type { FileObject, FilePurpose, UploadFileRequest } from '@cogitator-ai/o
579
862
  import type { StreamEvent, MessageDelta, RunStepDelta } from '@cogitator-ai/openai-compat';
580
863
  ```
581
864
 
865
+ ### Storage Types
866
+
867
+ ```typescript
868
+ import type {
869
+ ThreadStorage,
870
+ StoredThread,
871
+ StoredAssistant,
872
+ StoredFile,
873
+ RedisThreadStorageConfig,
874
+ PostgresThreadStorageConfig,
875
+ } from '@cogitator-ai/openai-compat';
876
+
877
+ import {
878
+ InMemoryThreadStorage,
879
+ RedisThreadStorage,
880
+ PostgresThreadStorage,
881
+ createThreadStorage,
882
+ } from '@cogitator-ai/openai-compat';
883
+ ```
884
+
582
885
  ---
583
886
 
584
887
  ## Examples
@@ -6,8 +6,15 @@
6
6
  */
7
7
  import { type Cogitator } from '@cogitator-ai/core';
8
8
  import type { Tool } from '@cogitator-ai/types';
9
+ import { EventEmitter } from 'events';
9
10
  import { ThreadManager } from './thread-manager';
10
- import type { Assistant, AssistantTool, Run, CreateRunRequest, SubmitToolOutputsRequest } from '../types/openai-types';
11
+ import type { Assistant, AssistantTool, Run, RunStep, Message, MessageDelta, CreateRunRequest, SubmitToolOutputsRequest } from '../types/openai-types';
12
+ export type StreamEventType = 'thread.run.created' | 'thread.run.queued' | 'thread.run.in_progress' | 'thread.run.completed' | 'thread.run.failed' | 'thread.run.cancelled' | 'thread.run.step.created' | 'thread.run.step.in_progress' | 'thread.run.step.completed' | 'thread.message.created' | 'thread.message.in_progress' | 'thread.message.delta' | 'thread.message.completed' | 'done' | 'error';
13
+ export interface StreamEmitterEvents {
14
+ event: [type: StreamEventType, data: Run | RunStep | Message | MessageDelta | string];
15
+ error: [error: Error];
16
+ end: [];
17
+ }
11
18
  /**
12
19
  * OpenAI SDK Adapter
13
20
  *
@@ -51,8 +58,8 @@ export declare class OpenAIAdapter {
51
58
  tools?: AssistantTool[];
52
59
  metadata?: Record<string, string>;
53
60
  temperature?: number;
54
- }): Assistant;
55
- getAssistant(id: string): Assistant | undefined;
61
+ }): Promise<Assistant>;
62
+ getAssistant(id: string): Promise<Assistant | undefined>;
56
63
  updateAssistant(id: string, updates: Partial<{
57
64
  model: string;
58
65
  name: string;
@@ -60,26 +67,26 @@ export declare class OpenAIAdapter {
60
67
  tools: AssistantTool[];
61
68
  metadata: Record<string, string>;
62
69
  temperature: number;
63
- }>): Assistant | undefined;
64
- deleteAssistant(id: string): boolean;
65
- listAssistants(): Assistant[];
70
+ }>): Promise<Assistant | undefined>;
71
+ deleteAssistant(id: string): Promise<boolean>;
72
+ listAssistants(): Promise<Assistant[]>;
66
73
  private toAssistant;
67
- createThread(metadata?: Record<string, string>): import("..").Thread;
68
- getThread(id: string): import("..").Thread | undefined;
69
- deleteThread(id: string): boolean;
74
+ createThread(metadata?: Record<string, string>): Promise<import("..").Thread>;
75
+ getThread(id: string): Promise<import("..").Thread | undefined>;
76
+ deleteThread(id: string): Promise<boolean>;
70
77
  addMessage(threadId: string, params: {
71
78
  role: 'user' | 'assistant';
72
79
  content: string;
73
80
  metadata?: Record<string, string>;
74
- }): import("..").Message | undefined;
75
- getMessage(threadId: string, messageId: string): import("..").Message | undefined;
81
+ }): Promise<Message | undefined>;
82
+ getMessage(threadId: string, messageId: string): Promise<Message | undefined>;
76
83
  listMessages(threadId: string, options?: {
77
84
  limit?: number;
78
85
  order?: 'asc' | 'desc';
79
86
  after?: string;
80
87
  before?: string;
81
88
  run_id?: string;
82
- }): import("..").Message[];
89
+ }): Promise<Message[]>;
83
90
  /**
84
91
  * Create and execute a run
85
92
  */
@@ -96,6 +103,10 @@ export declare class OpenAIAdapter {
96
103
  * Submit tool outputs for a run that requires action
97
104
  */
98
105
  submitToolOutputs(threadId: string, runId: string, request: SubmitToolOutputsRequest): Promise<Run | undefined>;
106
+ /**
107
+ * Get the stream emitter for a streaming run
108
+ */
109
+ getStreamEmitter(runId: string): EventEmitter<StreamEmitterEvents> | undefined;
99
110
  private executeRun;
100
111
  }
101
112
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"openai-adapter.d.ts","sourceRoot":"","sources":["../../src/client/openai-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-adapter.d.ts","sourceRoot":"","sources":["../../src/client/openai-adapter.ts"],"names":[],"mappings":"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"}