ai.matey.frontend 0.2.0 → 0.3.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/cjs/adapters/anthropic.js +156 -16
  3. package/dist/cjs/adapters/anthropic.js.map +1 -1
  4. package/dist/cjs/adapters/chrome-ai.js +58 -0
  5. package/dist/cjs/adapters/chrome-ai.js.map +1 -1
  6. package/dist/cjs/adapters/gemini.js +57 -0
  7. package/dist/cjs/adapters/gemini.js.map +1 -1
  8. package/dist/cjs/adapters/generic.js +56 -4
  9. package/dist/cjs/adapters/generic.js.map +1 -1
  10. package/dist/cjs/adapters/mistral.js +59 -0
  11. package/dist/cjs/adapters/mistral.js.map +1 -1
  12. package/dist/cjs/adapters/ollama.js +59 -0
  13. package/dist/cjs/adapters/ollama.js.map +1 -1
  14. package/dist/cjs/adapters/openai.js +199 -32
  15. package/dist/cjs/adapters/openai.js.map +1 -1
  16. package/dist/esm/adapters/anthropic.js +156 -16
  17. package/dist/esm/adapters/anthropic.js.map +1 -1
  18. package/dist/esm/adapters/chrome-ai.js +58 -0
  19. package/dist/esm/adapters/chrome-ai.js.map +1 -1
  20. package/dist/esm/adapters/gemini.js +57 -0
  21. package/dist/esm/adapters/gemini.js.map +1 -1
  22. package/dist/esm/adapters/generic.js +56 -4
  23. package/dist/esm/adapters/generic.js.map +1 -1
  24. package/dist/esm/adapters/mistral.js +59 -0
  25. package/dist/esm/adapters/mistral.js.map +1 -1
  26. package/dist/esm/adapters/ollama.js +59 -0
  27. package/dist/esm/adapters/ollama.js.map +1 -1
  28. package/dist/esm/adapters/openai.js +199 -32
  29. package/dist/esm/adapters/openai.js.map +1 -1
  30. package/dist/types/adapters/anthropic.d.ts +254 -8
  31. package/dist/types/adapters/anthropic.d.ts.map +1 -1
  32. package/dist/types/adapters/chrome-ai.d.ts +95 -0
  33. package/dist/types/adapters/chrome-ai.d.ts.map +1 -1
  34. package/dist/types/adapters/gemini.d.ts +170 -0
  35. package/dist/types/adapters/gemini.d.ts.map +1 -1
  36. package/dist/types/adapters/generic.d.ts +56 -4
  37. package/dist/types/adapters/generic.d.ts.map +1 -1
  38. package/dist/types/adapters/mistral.d.ts +143 -0
  39. package/dist/types/adapters/mistral.d.ts.map +1 -1
  40. package/dist/types/adapters/ollama.d.ts +132 -0
  41. package/dist/types/adapters/ollama.d.ts.map +1 -1
  42. package/dist/types/adapters/openai.d.ts +252 -8
  43. package/dist/types/adapters/openai.d.ts.map +1 -1
  44. package/package.json +2 -3
@@ -10,7 +10,32 @@ import type { FrontendAdapter, AdapterMetadata } from 'ai.matey.types';
10
10
  import type { IRChatRequest, IRChatResponse, IRChatStream } from 'ai.matey.types';
11
11
  import type { StreamConversionOptions } from 'ai.matey.types';
12
12
  /**
13
- * OpenAI message content.
13
+ * OpenAI message content type supporting text and multimodal inputs.
14
+ *
15
+ * Can be either a simple string for text-only messages, or an array of content
16
+ * blocks for multimodal messages that include images. The array form supports
17
+ * mixing text and images in a single message.
18
+ *
19
+ * @see OpenAIMessage
20
+ * @see https://platform.openai.com/docs/api-reference/chat/create#chat-create-messages
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // Simple text
25
+ * const textContent: OpenAIMessageContent = "Hello, world!";
26
+ *
27
+ * // Multimodal with image
28
+ * const multimodalContent: OpenAIMessageContent = [
29
+ * { type: 'text', text: 'What is in this image?' },
30
+ * {
31
+ * type: 'image_url',
32
+ * image_url: {
33
+ * url: 'https://example.com/photo.jpg',
34
+ * detail: 'high'
35
+ * }
36
+ * }
37
+ * ];
38
+ * ```
14
39
  */
15
40
  export type OpenAIMessageContent = string | Array<{
16
41
  type: 'text';
@@ -23,63 +48,226 @@ export type OpenAIMessageContent = string | Array<{
23
48
  };
24
49
  }>;
25
50
  /**
26
- * OpenAI message.
51
+ * OpenAI chat message structure.
52
+ *
53
+ * Represents a single message in a conversation with role-based content.
54
+ * Supports text, multimodal content, and tool-related messages.
55
+ *
56
+ * @see OpenAIMessageContent
57
+ * @see OpenAIRequest
27
58
  */
28
59
  export interface OpenAIMessage {
60
+ /** Message role: system (instructions), user (input), assistant (AI response), or tool (function results) */
29
61
  role: 'system' | 'user' | 'assistant' | 'tool';
62
+ /** Message content - can be text string or array of content blocks for multimodal */
30
63
  content: OpenAIMessageContent;
64
+ /** Optional name for the message author (useful for multi-user or tool messages) */
31
65
  name?: string;
66
+ /** Tool call ID when role is 'tool' - links tool results to the original tool call */
32
67
  tool_call_id?: string;
68
+ /** Tool calls requested by the assistant (role 'assistant' only) */
69
+ tool_calls?: Array<{
70
+ id: string;
71
+ type: 'function';
72
+ function: {
73
+ name: string;
74
+ arguments: string;
75
+ };
76
+ }>;
33
77
  }
34
78
  /**
35
- * OpenAI Chat Completions API request.
79
+ * OpenAI Chat Completions API request structure.
80
+ *
81
+ * Defines all parameters for making a chat completion request to OpenAI's API.
82
+ * This matches the official OpenAI API specification and is compatible with
83
+ * OpenAI-compatible endpoints (Azure OpenAI, local models, etc.).
84
+ *
85
+ * @see OpenAIMessage
86
+ * @see OpenAIResponse
87
+ * @see https://platform.openai.com/docs/api-reference/chat/create
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * const request: OpenAIRequest = {
92
+ * model: 'gpt-4',
93
+ * messages: [
94
+ * { role: 'system', content: 'You are a helpful assistant.' },
95
+ * { role: 'user', content: 'Hello!' }
96
+ * ],
97
+ * temperature: 0.7,
98
+ * max_tokens: 150
99
+ * };
100
+ * ```
36
101
  */
37
102
  export interface OpenAIRequest {
103
+ /** Model ID (e.g., 'gpt-4', 'gpt-3.5-turbo') */
38
104
  model: string;
105
+ /** Array of conversation messages */
39
106
  messages: OpenAIMessage[];
107
+ /** Sampling temperature 0-2. Higher = more random. Default 1 */
40
108
  temperature?: number;
109
+ /** Maximum tokens to generate in the response */
41
110
  max_tokens?: number;
111
+ /** Nucleus sampling parameter 0-1. Alternative to temperature */
42
112
  top_p?: number;
113
+ /** Penalty for token frequency -2 to 2. Reduces repetition */
43
114
  frequency_penalty?: number;
115
+ /** Penalty for token presence -2 to 2. Encourages new topics */
44
116
  presence_penalty?: number;
117
+ /** Stop sequence(s) - generation stops when encountered */
45
118
  stop?: string | string[];
119
+ /** Enable streaming responses via Server-Sent Events */
46
120
  stream?: boolean;
121
+ /** Unique user identifier for abuse monitoring */
47
122
  user?: string;
123
+ /** Deterministic sampling seed for reproducible outputs */
48
124
  seed?: number;
125
+ /** Tools (functions) the model may call */
126
+ tools?: Array<{
127
+ type: 'function';
128
+ function: {
129
+ name: string;
130
+ description?: string;
131
+ parameters?: Record<string, unknown>;
132
+ };
133
+ }>;
134
+ /** Controls which (if any) tool the model must call */
135
+ tool_choice?: 'auto' | 'none' | 'required' | {
136
+ type: 'function';
137
+ function: {
138
+ name: string;
139
+ };
140
+ };
49
141
  }
50
142
  /**
51
- * OpenAI Chat Completions API response.
143
+ * OpenAI Chat Completions API response structure.
144
+ *
145
+ * Contains the complete response from OpenAI's API including the generated
146
+ * message, finish reason, and token usage statistics.
147
+ *
148
+ * @see OpenAIRequest
149
+ * @see OpenAIMessage
150
+ * @see https://platform.openai.com/docs/api-reference/chat/object
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * const response: OpenAIResponse = {
155
+ * id: 'chatcmpl-123',
156
+ * object: 'chat.completion',
157
+ * created: 1677652288,
158
+ * model: 'gpt-4',
159
+ * choices: [{
160
+ * index: 0,
161
+ * message: {
162
+ * role: 'assistant',
163
+ * content: 'Hello! How can I help you today?'
164
+ * },
165
+ * finish_reason: 'stop'
166
+ * }],
167
+ * usage: {
168
+ * prompt_tokens: 9,
169
+ * completion_tokens: 12,
170
+ * total_tokens: 21
171
+ * }
172
+ * };
173
+ * ```
52
174
  */
53
175
  export interface OpenAIResponse {
176
+ /** Unique identifier for this completion */
54
177
  id: string;
178
+ /** Object type - always 'chat.completion' for non-streaming */
55
179
  object: 'chat.completion';
180
+ /** Unix timestamp when the response was created */
56
181
  created: number;
182
+ /** Model used for generating the response */
57
183
  model: string;
184
+ /** Array of completion choices (usually just one) */
58
185
  choices: Array<{
186
+ /** Choice index in the array */
59
187
  index: number;
188
+ /** Generated message from the assistant */
60
189
  message: OpenAIMessage;
190
+ /** Reason why generation stopped: 'stop' (natural), 'length' (max tokens), 'tool_calls', 'content_filter', or null */
61
191
  finish_reason: 'stop' | 'length' | 'tool_calls' | 'content_filter' | null;
62
192
  }>;
193
+ /** Token usage statistics for billing and monitoring */
63
194
  usage?: {
195
+ /** Number of tokens in the prompt */
64
196
  prompt_tokens: number;
197
+ /** Number of tokens in the completion */
65
198
  completion_tokens: number;
199
+ /** Total tokens used (prompt + completion) */
66
200
  total_tokens: number;
67
201
  };
68
202
  }
69
203
  /**
70
- * OpenAI streaming chunk.
204
+ * OpenAI streaming response chunk structure.
205
+ *
206
+ * Represents a single chunk in a Server-Sent Events (SSE) stream. Each chunk
207
+ * contains incremental content (delta) that should be appended to build the
208
+ * complete message. The stream ends when finish_reason is non-null.
209
+ *
210
+ * @see OpenAIRequest
211
+ * @see OpenAIResponse
212
+ * @see https://platform.openai.com/docs/api-reference/chat/streaming
213
+ *
214
+ * @example
215
+ * ```typescript
216
+ * // Content chunk during streaming
217
+ * const chunk: OpenAIStreamChunk = {
218
+ * id: 'chatcmpl-123',
219
+ * object: 'chat.completion.chunk',
220
+ * created: 1677652288,
221
+ * model: 'gpt-4',
222
+ * choices: [{
223
+ * index: 0,
224
+ * delta: { content: 'Hello' },
225
+ * finish_reason: null
226
+ * }]
227
+ * };
228
+ *
229
+ * // Final chunk signaling completion
230
+ * const finalChunk: OpenAIStreamChunk = {
231
+ * ...chunk,
232
+ * choices: [{
233
+ * index: 0,
234
+ * delta: {},
235
+ * finish_reason: 'stop'
236
+ * }]
237
+ * };
238
+ * ```
71
239
  */
72
240
  export interface OpenAIStreamChunk {
241
+ /** Unique identifier for this stream */
73
242
  id: string;
243
+ /** Object type - always 'chat.completion.chunk' for streaming */
74
244
  object: 'chat.completion.chunk';
245
+ /** Unix timestamp when the chunk was created */
75
246
  created: number;
247
+ /** Model generating the stream */
76
248
  model: string;
249
+ /** Array of delta choices (usually just one) */
77
250
  choices: Array<{
251
+ /** Choice index in the array */
78
252
  index: number;
253
+ /** Incremental content delta - append to previous content */
79
254
  delta: {
255
+ /** Role (only in first chunk, usually 'assistant') */
80
256
  role?: 'assistant';
257
+ /** Incremental text content to append */
81
258
  content?: string;
259
+ /** Incremental tool-call deltas (id/name on first chunk per index) */
260
+ tool_calls?: Array<{
261
+ index: number;
262
+ id?: string;
263
+ type?: 'function';
264
+ function?: {
265
+ name?: string;
266
+ arguments?: string;
267
+ };
268
+ }>;
82
269
  };
270
+ /** Non-null when stream is complete. Indicates why generation stopped */
83
271
  finish_reason: 'stop' | 'length' | 'tool_calls' | 'content_filter' | null;
84
272
  }>;
85
273
  }
@@ -89,21 +277,77 @@ export interface OpenAIStreamChunk {
89
277
  export declare class OpenAIFrontendAdapter implements FrontendAdapter<OpenAIRequest, OpenAIResponse, OpenAIStreamChunk> {
90
278
  readonly metadata: AdapterMetadata;
91
279
  /**
92
- * Convert OpenAI request to Universal IR.
280
+ * Convert OpenAI Chat Completions API request to Universal IR format.
281
+ *
282
+ * This method transforms an OpenAI-formatted request into the standardized
283
+ * Intermediate Representation (IR) format used across all AI Matey adapters.
284
+ * Since OpenAI's format is similar to IR, this is largely a pass-through
285
+ * with field name mapping.
286
+ *
287
+ * @param request - OpenAI Chat Completions API request
288
+ * @returns Promise resolving to IR chat request
289
+ * @throws {AdapterConversionError} If conversion fails
290
+ *
291
+ * @example
292
+ * ```typescript
293
+ * const adapter = new OpenAIFrontendAdapter();
294
+ * const irRequest = await adapter.toIR({
295
+ * model: 'gpt-4',
296
+ * messages: [{ role: 'user', content: 'Hello!' }],
297
+ * temperature: 0.7
298
+ * });
299
+ * ```
93
300
  */
94
301
  toIR(request: OpenAIRequest): Promise<IRChatRequest>;
95
302
  /**
96
- * Convert Universal IR response to OpenAI format.
303
+ * Convert Universal IR response back to OpenAI Chat Completions API format.
304
+ *
305
+ * This method transforms the standardized IR response into the format
306
+ * expected by OpenAI's Chat Completions API. It handles message conversion,
307
+ * finish reason mapping, and usage statistics formatting.
308
+ *
309
+ * @param response - Universal IR chat response
310
+ * @returns Promise resolving to OpenAI Chat Completions response
311
+ * @throws {AdapterConversionError} If conversion fails
312
+ *
313
+ * @example
314
+ * ```typescript
315
+ * const adapter = new OpenAIFrontendAdapter();
316
+ * const openaiResponse = await adapter.fromIR(irResponse);
317
+ * console.log(openaiResponse.choices[0].message.content);
318
+ * ```
97
319
  */
98
320
  fromIR(response: IRChatResponse): Promise<OpenAIResponse>;
99
321
  /**
100
- * Convert Universal IR stream to OpenAI SSE format.
322
+ * Convert Universal IR stream to OpenAI Server-Sent Events (SSE) format.
323
+ *
324
+ * This async generator method transforms a stream of IR chunks into
325
+ * OpenAI-formatted streaming chunks. It handles stream mode conversion
326
+ * (delta/full/text), tracks message metadata, and emits properly
327
+ * formatted SSE events compatible with OpenAI's streaming API.
328
+ *
329
+ * @param stream - Universal IR chat stream
330
+ * @param options - Optional stream conversion options (stream mode, etc.)
331
+ * @yields OpenAI-formatted streaming chunks
332
+ * @throws {AdapterConversionError} If stream conversion fails
333
+ *
334
+ * @example
335
+ * ```typescript
336
+ * const adapter = new OpenAIFrontendAdapter();
337
+ * for await (const chunk of adapter.fromIRStream(irStream)) {
338
+ * console.log(chunk.choices[0].delta.content);
339
+ * }
340
+ * ```
101
341
  */
102
342
  fromIRStream(stream: IRChatStream, options?: StreamConversionOptions): AsyncGenerator<OpenAIStreamChunk, void, undefined>;
103
343
  /**
104
344
  * Convert OpenAI message to IR message.
105
345
  */
106
346
  private convertMessageToIR;
347
+ /**
348
+ * Parse tool-call arguments defensively (malformed JSON degrades to {}).
349
+ */
350
+ private parseToolArguments;
107
351
  /**
108
352
  * Convert IR message to OpenAI message.
109
353
  */
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/adapters/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/adapters/openai.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai.matey.frontend",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Frontend adapters for AI Matey - Universal AI Adapter System",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -109,8 +109,7 @@
109
109
  "dependencies": {
110
110
  "ai.matey.types": "*",
111
111
  "ai.matey.errors": "*",
112
- "ai.matey.utils": "*",
113
- "ai.matey.backend": "*"
112
+ "ai.matey.utils": "*"
114
113
  },
115
114
  "devDependencies": {
116
115
  "ai.matey.testing": "*",