notdiamond 2.0.0-rc2 → 2.0.0-rc4

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 (167) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +14 -16
  3. package/client.d.mts +21 -35
  4. package/client.d.mts.map +1 -1
  5. package/client.d.ts +21 -35
  6. package/client.d.ts.map +1 -1
  7. package/client.js +23 -39
  8. package/client.js.map +1 -1
  9. package/client.mjs +23 -39
  10. package/client.mjs.map +1 -1
  11. package/internal/tslib.js +17 -17
  12. package/internal/utils/env.d.mts.map +1 -1
  13. package/internal/utils/env.d.ts.map +1 -1
  14. package/internal/utils/env.js +4 -2
  15. package/internal/utils/env.js.map +1 -1
  16. package/internal/utils/env.mjs +4 -2
  17. package/internal/utils/env.mjs.map +1 -1
  18. package/package.json +10 -11
  19. package/resources/index.d.mts +6 -6
  20. package/resources/index.d.mts.map +1 -1
  21. package/resources/index.d.ts +6 -6
  22. package/resources/index.d.ts.map +1 -1
  23. package/resources/index.js +8 -8
  24. package/resources/index.js.map +1 -1
  25. package/resources/index.mjs +4 -4
  26. package/resources/index.mjs.map +1 -1
  27. package/resources/model-router.d.mts +311 -0
  28. package/resources/model-router.d.mts.map +1 -0
  29. package/resources/model-router.d.ts +311 -0
  30. package/resources/model-router.d.ts.map +1 -0
  31. package/resources/model-router.js +97 -0
  32. package/resources/model-router.js.map +1 -0
  33. package/resources/model-router.mjs +93 -0
  34. package/resources/model-router.mjs.map +1 -0
  35. package/resources/models.d.mts +50 -25
  36. package/resources/models.d.mts.map +1 -1
  37. package/resources/models.d.ts +50 -25
  38. package/resources/models.d.ts.map +1 -1
  39. package/resources/models.js +5 -0
  40. package/resources/models.js.map +1 -1
  41. package/resources/models.mjs +5 -0
  42. package/resources/models.mjs.map +1 -1
  43. package/resources/preferences.d.mts +49 -47
  44. package/resources/preferences.d.mts.map +1 -1
  45. package/resources/preferences.d.ts +49 -47
  46. package/resources/preferences.d.ts.map +1 -1
  47. package/resources/preferences.js +30 -33
  48. package/resources/preferences.js.map +1 -1
  49. package/resources/preferences.mjs +30 -33
  50. package/resources/preferences.mjs.map +1 -1
  51. package/resources/prompt/adapt.d.mts +352 -0
  52. package/resources/prompt/adapt.d.mts.map +1 -0
  53. package/resources/prompt/adapt.d.ts +352 -0
  54. package/resources/prompt/adapt.d.ts.map +1 -0
  55. package/resources/prompt/adapt.js +154 -0
  56. package/resources/prompt/adapt.js.map +1 -0
  57. package/resources/prompt/adapt.mjs +150 -0
  58. package/resources/prompt/adapt.mjs.map +1 -0
  59. package/resources/prompt/index.d.mts +3 -0
  60. package/resources/prompt/index.d.mts.map +1 -0
  61. package/resources/prompt/index.d.ts +3 -0
  62. package/resources/prompt/index.d.ts.map +1 -0
  63. package/resources/prompt/index.js +9 -0
  64. package/resources/prompt/index.js.map +1 -0
  65. package/resources/prompt/index.mjs +4 -0
  66. package/resources/prompt/index.mjs.map +1 -0
  67. package/resources/prompt/prompt.d.mts +338 -0
  68. package/resources/prompt/prompt.d.mts.map +1 -0
  69. package/resources/prompt/prompt.d.ts +338 -0
  70. package/resources/prompt/prompt.d.ts.map +1 -0
  71. package/resources/prompt/prompt.js +128 -0
  72. package/resources/prompt/prompt.js.map +1 -0
  73. package/resources/prompt/prompt.mjs +123 -0
  74. package/resources/prompt/prompt.mjs.map +1 -0
  75. package/resources/prompt.d.mts +2 -0
  76. package/resources/prompt.d.mts.map +1 -0
  77. package/resources/prompt.d.ts +2 -0
  78. package/resources/prompt.d.ts.map +1 -0
  79. package/resources/prompt.js +6 -0
  80. package/resources/prompt.js.map +1 -0
  81. package/resources/prompt.mjs +3 -0
  82. package/resources/prompt.mjs.map +1 -0
  83. package/resources/pzn.d.mts +225 -0
  84. package/resources/pzn.d.mts.map +1 -0
  85. package/resources/pzn.d.ts +225 -0
  86. package/resources/pzn.d.ts.map +1 -0
  87. package/resources/{routing.js → pzn.js} +26 -69
  88. package/resources/pzn.js.map +1 -0
  89. package/resources/{routing.mjs → pzn.mjs} +24 -67
  90. package/resources/pzn.mjs.map +1 -0
  91. package/resources/report/index.d.mts +3 -0
  92. package/resources/report/index.d.mts.map +1 -0
  93. package/resources/report/index.d.ts +3 -0
  94. package/resources/report/index.d.ts.map +1 -0
  95. package/resources/report/index.js +9 -0
  96. package/resources/report/index.js.map +1 -0
  97. package/resources/report/index.mjs +4 -0
  98. package/resources/report/index.mjs.map +1 -0
  99. package/resources/report/metrics.d.mts +87 -0
  100. package/resources/report/metrics.d.mts.map +1 -0
  101. package/resources/report/metrics.d.ts +87 -0
  102. package/resources/report/metrics.d.ts.map +1 -0
  103. package/resources/report/metrics.js +57 -0
  104. package/resources/report/metrics.js.map +1 -0
  105. package/resources/report/metrics.mjs +53 -0
  106. package/resources/report/metrics.mjs.map +1 -0
  107. package/resources/report/report.d.mts +10 -0
  108. package/resources/report/report.d.mts.map +1 -0
  109. package/resources/report/report.d.ts +10 -0
  110. package/resources/report/report.d.ts.map +1 -0
  111. package/resources/report/report.js +17 -0
  112. package/resources/report/report.js.map +1 -0
  113. package/resources/report/report.mjs +12 -0
  114. package/resources/report/report.mjs.map +1 -0
  115. package/resources/report.d.mts +1 -244
  116. package/resources/report.d.mts.map +1 -1
  117. package/resources/report.d.ts +1 -244
  118. package/resources/report.d.ts.map +1 -1
  119. package/resources/report.js +2 -82
  120. package/resources/report.js.map +1 -1
  121. package/resources/report.mjs +1 -80
  122. package/resources/report.mjs.map +1 -1
  123. package/src/client.ts +71 -120
  124. package/src/internal/utils/env.ts +4 -2
  125. package/src/resources/index.ts +24 -34
  126. package/src/resources/model-router.ts +356 -0
  127. package/src/resources/models.ts +55 -32
  128. package/src/resources/preferences.ts +61 -70
  129. package/src/resources/prompt/adapt.ts +402 -0
  130. package/src/resources/prompt/index.ts +16 -0
  131. package/src/resources/prompt/prompt.ts +398 -0
  132. package/src/resources/prompt.ts +3 -0
  133. package/src/resources/pzn.ts +273 -0
  134. package/src/resources/report/index.ts +4 -0
  135. package/src/resources/report/metrics.ts +99 -0
  136. package/src/resources/report/report.ts +19 -0
  137. package/src/resources/report.ts +1 -298
  138. package/src/version.ts +1 -1
  139. package/version.d.mts +1 -1
  140. package/version.d.ts +1 -1
  141. package/version.js +1 -1
  142. package/version.mjs +1 -1
  143. package/resources/admin.d.mts +0 -4
  144. package/resources/admin.d.mts.map +0 -1
  145. package/resources/admin.d.ts +0 -4
  146. package/resources/admin.d.ts.map +0 -1
  147. package/resources/admin.js +0 -9
  148. package/resources/admin.js.map +0 -1
  149. package/resources/admin.mjs +0 -5
  150. package/resources/admin.mjs.map +0 -1
  151. package/resources/prompt-adaptation.d.mts +0 -581
  152. package/resources/prompt-adaptation.d.mts.map +0 -1
  153. package/resources/prompt-adaptation.d.ts +0 -581
  154. package/resources/prompt-adaptation.d.ts.map +0 -1
  155. package/resources/prompt-adaptation.js +0 -289
  156. package/resources/prompt-adaptation.js.map +0 -1
  157. package/resources/prompt-adaptation.mjs +0 -285
  158. package/resources/prompt-adaptation.mjs.map +0 -1
  159. package/resources/routing.d.mts +0 -391
  160. package/resources/routing.d.mts.map +0 -1
  161. package/resources/routing.d.ts +0 -391
  162. package/resources/routing.d.ts.map +0 -1
  163. package/resources/routing.js.map +0 -1
  164. package/resources/routing.mjs.map +0 -1
  165. package/src/resources/admin.ts +0 -5
  166. package/src/resources/prompt-adaptation.ts +0 -707
  167. package/src/resources/routing.ts +0 -476
@@ -0,0 +1,356 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../core/resource';
4
+ import * as AdaptAPI from './prompt/adapt';
5
+ import { APIPromise } from '../core/api-promise';
6
+ import { RequestOptions } from '../internal/request-options';
7
+
8
+ export class ModelRouter extends APIResource {
9
+ /**
10
+ * Openhands Model Select
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const response = await client.modelRouter.openHandsSelect({
15
+ * llm_providers: [
16
+ * { model: 'gpt-4o', provider: 'openai' },
17
+ * {
18
+ * model: 'claude-sonnet-4-5-20250929',
19
+ * provider: 'anthropic',
20
+ * },
21
+ * { model: 'gemini-1.5-pro', provider: 'google' },
22
+ * ],
23
+ * messages: [
24
+ * {
25
+ * content: 'You are a helpful assistant.',
26
+ * role: 'system',
27
+ * },
28
+ * { content: 'Explain quantum computing', role: 'user' },
29
+ * ],
30
+ * });
31
+ * ```
32
+ */
33
+ openHandsSelect(body: ModelRouterOpenHandsSelectParams, options?: RequestOptions): APIPromise<unknown> {
34
+ return this._client.post('/v2/modelRouter/openHandsRouter', { body, ...options });
35
+ }
36
+
37
+ /**
38
+ * Select the optimal LLM to handle your query based on Not Diamond's routing
39
+ * algorithm.
40
+ *
41
+ * This endpoint analyzes your messages and returns the best-suited model from your
42
+ * specified providers. The router considers factors like query complexity, model
43
+ * capabilities, cost, and latency based on your preferences.
44
+ *
45
+ * **Key Features:**
46
+ *
47
+ * - Intelligent routing across multiple LLM providers
48
+ * - Support for custom routers trained on your evaluation data
49
+ * - Optional cost/latency optimization
50
+ * - Function calling support for compatible models
51
+ * - Privacy-preserving content hashing
52
+ *
53
+ * **Usage:**
54
+ *
55
+ * 1. Pass your messages in OpenAI format (array of objects with 'role' and
56
+ * 'content')
57
+ * 2. Specify which LLM providers you want to route between
58
+ * 3. Optionally provide a preference_id for personalized routing
59
+ * 4. Receive a recommended model and session_id
60
+ * 5. Use the session_id to submit feedback and improve routing
61
+ *
62
+ * **Related Endpoints:**
63
+ *
64
+ * - `POST /v2/preferences/userPreferenceCreate` - Create a preference ID for
65
+ * personalized routing
66
+ * - `POST /v2/report/metrics/feedback` - Submit feedback on routing decisions
67
+ * - `POST /v2/pzn/trainCustomRouter` - Train a custom router on your evaluation
68
+ * data
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const response = await client.modelRouter.selectModel({
73
+ * llm_providers: [
74
+ * { provider: 'openai', model: 'gpt-4o' },
75
+ * {
76
+ * provider: 'anthropic',
77
+ * model: 'claude-sonnet-4-5-20250929',
78
+ * },
79
+ * { provider: 'google', model: 'gemini-1.5-pro' },
80
+ * ],
81
+ * messages: [
82
+ * {
83
+ * role: 'system',
84
+ * content: 'You are a helpful assistant.',
85
+ * },
86
+ * {
87
+ * role: 'user',
88
+ * content: 'Explain quantum computing in simple terms',
89
+ * },
90
+ * ],
91
+ * });
92
+ * ```
93
+ */
94
+ selectModel(
95
+ params: ModelRouterSelectModelParams,
96
+ options?: RequestOptions,
97
+ ): APIPromise<ModelRouterSelectModelResponse> {
98
+ const { type, ...body } = params;
99
+ return this._client.post('/v2/modelRouter/modelSelect', { query: { type }, body, ...options });
100
+ }
101
+ }
102
+
103
+ export type ModelRouterOpenHandsSelectResponse = unknown;
104
+
105
+ /**
106
+ * Response from model selection endpoint.
107
+ */
108
+ export interface ModelRouterSelectModelResponse {
109
+ /**
110
+ * List containing the selected provider
111
+ */
112
+ providers: Array<ModelRouterSelectModelResponse.Provider>;
113
+
114
+ /**
115
+ * Unique session ID for this routing decision
116
+ */
117
+ session_id: string;
118
+ }
119
+
120
+ export namespace ModelRouterSelectModelResponse {
121
+ /**
122
+ * Selected LLM provider information from model selection endpoints.
123
+ *
124
+ * Part of ModelSelectResponse. Contains the provider and model that Not Diamond's
125
+ * routing algorithm selected as optimal for your query. Use these values to make
126
+ * your LLM API call to the recommended model.
127
+ */
128
+ export interface Provider {
129
+ /**
130
+ * Model identifier for the selected model (e.g., 'gpt-4o',
131
+ * 'claude-3-opus-20240229')
132
+ */
133
+ model: string;
134
+
135
+ /**
136
+ * Provider name for the selected model (e.g., 'openai', 'anthropic', 'google')
137
+ */
138
+ provider: string;
139
+ }
140
+ }
141
+
142
+ export interface ModelRouterOpenHandsSelectParams {
143
+ /**
144
+ * List of LLM providers to route between. Specify at least one provider in format
145
+ * {provider, model}
146
+ */
147
+ llm_providers: Array<AdaptAPI.RequestProvider | ModelRouterOpenHandsSelectParams.OpenRouterProvider>;
148
+
149
+ /**
150
+ * Array of message objects in OpenAI format (with 'role' and 'content' keys)
151
+ */
152
+ messages: Array<{ [key: string]: string | Array<unknown> }> | string;
153
+
154
+ /**
155
+ * Whether to hash message content for privacy
156
+ */
157
+ hash_content?: boolean;
158
+
159
+ /**
160
+ * Maximum number of models to consider for routing. If not specified, considers
161
+ * all provided models
162
+ */
163
+ max_model_depth?: number | null;
164
+
165
+ /**
166
+ * Optimization metric for model selection
167
+ */
168
+ metric?: string;
169
+
170
+ /**
171
+ * Preference ID for personalized routing. Create one via POST
172
+ * /v2/preferences/userPreferenceCreate
173
+ */
174
+ preference_id?: string | null;
175
+
176
+ /**
177
+ * Previous session ID to link related requests
178
+ */
179
+ previous_session?: string | null;
180
+
181
+ /**
182
+ * OpenAI-format function calling tools
183
+ */
184
+ tools?: Array<{ [key: string]: unknown }> | null;
185
+
186
+ /**
187
+ * Optimization tradeoff strategy. Use 'cost' to prioritize cost savings or
188
+ * 'latency' to prioritize speed
189
+ */
190
+ tradeoff?: string | null;
191
+ }
192
+
193
+ export namespace ModelRouterOpenHandsSelectParams {
194
+ /**
195
+ * Model for specifying an LLM provider using OpenRouter format.
196
+ *
197
+ * Used in model routing requests when you want to specify providers using the
198
+ * OpenRouter naming convention (combined 'provider/model' format). This is an
199
+ * alternative to the standard RequestProvider which uses separate provider and
200
+ * model fields.
201
+ *
202
+ * **When to use:**
203
+ *
204
+ * - When working with OpenRouter-compatible systems
205
+ * - When you prefer the unified 'provider/model' format
206
+ * - For models accessed via OpenRouter proxy
207
+ */
208
+ export interface OpenRouterProvider {
209
+ /**
210
+ * OpenRouter model identifier in 'provider/model' format (e.g., 'openai/gpt-4o',
211
+ * 'anthropic/claude-sonnet-4-5-20250929')
212
+ */
213
+ model: string;
214
+
215
+ /**
216
+ * Maximum context length for the model (required for custom models)
217
+ */
218
+ context_length?: number | null;
219
+
220
+ /**
221
+ * Input token price per million tokens in USD (required for custom models)
222
+ */
223
+ input_price?: number | null;
224
+
225
+ /**
226
+ * Whether this is a custom model not in Not Diamond's supported model list
227
+ */
228
+ is_custom?: boolean;
229
+
230
+ /**
231
+ * Average latency in seconds (required for custom models)
232
+ */
233
+ latency?: number | null;
234
+
235
+ /**
236
+ * Output token price per million tokens in USD (required for custom models)
237
+ */
238
+ output_price?: number | null;
239
+ }
240
+ }
241
+
242
+ export interface ModelRouterSelectModelParams {
243
+ /**
244
+ * Body param: List of LLM providers to route between. Specify at least one
245
+ * provider in format {provider, model}
246
+ */
247
+ llm_providers: Array<AdaptAPI.RequestProvider | ModelRouterSelectModelParams.OpenRouterProvider>;
248
+
249
+ /**
250
+ * Body param: Array of message objects in OpenAI format (with 'role' and 'content'
251
+ * keys)
252
+ */
253
+ messages: Array<{ [key: string]: string | Array<unknown> }> | string;
254
+
255
+ /**
256
+ * Query param: Optional format type. Use 'openrouter' to accept and return
257
+ * OpenRouter-format model identifiers
258
+ */
259
+ type?: string | null;
260
+
261
+ /**
262
+ * Body param: Whether to hash message content for privacy
263
+ */
264
+ hash_content?: boolean;
265
+
266
+ /**
267
+ * Body param: Maximum number of models to consider for routing. If not specified,
268
+ * considers all provided models
269
+ */
270
+ max_model_depth?: number | null;
271
+
272
+ /**
273
+ * Body param: Optimization metric for model selection
274
+ */
275
+ metric?: string;
276
+
277
+ /**
278
+ * Body param: Preference ID for personalized routing. Create one via POST
279
+ * /v2/preferences/userPreferenceCreate
280
+ */
281
+ preference_id?: string | null;
282
+
283
+ /**
284
+ * Body param: Previous session ID to link related requests
285
+ */
286
+ previous_session?: string | null;
287
+
288
+ /**
289
+ * Body param: OpenAI-format function calling tools
290
+ */
291
+ tools?: Array<{ [key: string]: unknown }> | null;
292
+
293
+ /**
294
+ * Body param: Optimization tradeoff strategy. Use 'cost' to prioritize cost
295
+ * savings or 'latency' to prioritize speed
296
+ */
297
+ tradeoff?: string | null;
298
+ }
299
+
300
+ export namespace ModelRouterSelectModelParams {
301
+ /**
302
+ * Model for specifying an LLM provider using OpenRouter format.
303
+ *
304
+ * Used in model routing requests when you want to specify providers using the
305
+ * OpenRouter naming convention (combined 'provider/model' format). This is an
306
+ * alternative to the standard RequestProvider which uses separate provider and
307
+ * model fields.
308
+ *
309
+ * **When to use:**
310
+ *
311
+ * - When working with OpenRouter-compatible systems
312
+ * - When you prefer the unified 'provider/model' format
313
+ * - For models accessed via OpenRouter proxy
314
+ */
315
+ export interface OpenRouterProvider {
316
+ /**
317
+ * OpenRouter model identifier in 'provider/model' format (e.g., 'openai/gpt-4o',
318
+ * 'anthropic/claude-sonnet-4-5-20250929')
319
+ */
320
+ model: string;
321
+
322
+ /**
323
+ * Maximum context length for the model (required for custom models)
324
+ */
325
+ context_length?: number | null;
326
+
327
+ /**
328
+ * Input token price per million tokens in USD (required for custom models)
329
+ */
330
+ input_price?: number | null;
331
+
332
+ /**
333
+ * Whether this is a custom model not in Not Diamond's supported model list
334
+ */
335
+ is_custom?: boolean;
336
+
337
+ /**
338
+ * Average latency in seconds (required for custom models)
339
+ */
340
+ latency?: number | null;
341
+
342
+ /**
343
+ * Output token price per million tokens in USD (required for custom models)
344
+ */
345
+ output_price?: number | null;
346
+ }
347
+ }
348
+
349
+ export declare namespace ModelRouter {
350
+ export {
351
+ type ModelRouterOpenHandsSelectResponse as ModelRouterOpenHandsSelectResponse,
352
+ type ModelRouterSelectModelResponse as ModelRouterSelectModelResponse,
353
+ type ModelRouterOpenHandsSelectParams as ModelRouterOpenHandsSelectParams,
354
+ type ModelRouterSelectModelParams as ModelRouterSelectModelParams,
355
+ };
356
+ }
@@ -36,6 +36,11 @@ export class Models extends APIResource {
36
36
  * **Caching:**
37
37
  *
38
38
  * - Response is cacheable for 1 hour (model list rarely changes)
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * const models = await client.models.list();
43
+ * ```
39
44
  */
40
45
  list(
41
46
  query: ModelListParams | null | undefined = {},
@@ -46,50 +51,64 @@ export class Models extends APIResource {
46
51
  }
47
52
 
48
53
  /**
49
- * Response for models list endpoint.
54
+ * Response model for a single LLM model from GET /v2/models endpoint.
55
+ *
56
+ * Contains metadata about a supported text generation model including pricing,
57
+ * context limits, and availability information.
50
58
  */
51
- export interface ModelListResponse {
52
- deprecated_models: Array<ModelListResponse.DeprecatedModel>;
53
-
54
- models: Array<ModelListResponse.Model>;
55
-
56
- total: number;
57
- }
58
-
59
- export namespace ModelListResponse {
59
+ export interface Model {
60
60
  /**
61
- * Response model for a single LLM provider.
61
+ * Maximum context window size in tokens
62
62
  */
63
- export interface DeprecatedModel {
64
- context_length: number;
65
-
66
- input_price: number;
63
+ context_length: number;
67
64
 
68
- model: string;
69
-
70
- output_price: number;
71
-
72
- provider: string;
65
+ /**
66
+ * Price per million input tokens in USD
67
+ */
68
+ input_price: number;
73
69
 
74
- openrouter_model?: string | null;
75
- }
70
+ /**
71
+ * Model identifier (e.g., 'gpt-4', 'claude-3-opus-20240229')
72
+ */
73
+ model: string;
76
74
 
77
75
  /**
78
- * Response model for a single LLM provider.
76
+ * Price per million output tokens in USD
79
77
  */
80
- export interface Model {
81
- context_length: number;
78
+ output_price: number;
82
79
 
83
- input_price: number;
80
+ /**
81
+ * Provider name (e.g., 'openai', 'anthropic', 'google')
82
+ */
83
+ provider: string;
84
84
 
85
- model: string;
85
+ /**
86
+ * OpenRouter model identifier if available, null if not supported via OpenRouter
87
+ */
88
+ openrouter_model?: string | null;
89
+ }
86
90
 
87
- output_price: number;
91
+ /**
92
+ * Response model for GET /v2/models endpoint.
93
+ *
94
+ * Returns a list of all supported text generation models with their metadata,
95
+ * separated into active and deprecated models.
96
+ */
97
+ export interface ModelListResponse {
98
+ /**
99
+ * List of deprecated models that are no longer recommended but may still work
100
+ */
101
+ deprecated_models: Array<Model>;
88
102
 
89
- provider: string;
103
+ /**
104
+ * List of active/supported text generation models with their metadata
105
+ */
106
+ models: Array<Model>;
90
107
 
91
- openrouter_model?: string | null;
92
- }
108
+ /**
109
+ * Total count of active models in the response
110
+ */
111
+ total: number;
93
112
  }
94
113
 
95
114
  export interface ModelListParams {
@@ -106,5 +125,9 @@ export interface ModelListParams {
106
125
  }
107
126
 
108
127
  export declare namespace Models {
109
- export { type ModelListResponse as ModelListResponse, type ModelListParams as ModelListParams };
128
+ export {
129
+ type Model as Model,
130
+ type ModelListResponse as ModelListResponse,
131
+ type ModelListParams as ModelListParams,
132
+ };
110
133
  }
@@ -7,29 +7,6 @@ import { RequestOptions } from '../internal/request-options';
7
7
  import { path } from '../internal/utils/path';
8
8
 
9
9
  export class Preferences extends APIResource {
10
- /**
11
- * Get User Preference By Id
12
- *
13
- * @example
14
- * ```ts
15
- * const preference = await client.preferences.retrieve(
16
- * 'preference_id',
17
- * { user_id: 'user_id', 'x-token': 'x-token' },
18
- * );
19
- * ```
20
- */
21
- retrieve(
22
- preferenceID: string,
23
- params: PreferenceRetrieveParams,
24
- options?: RequestOptions,
25
- ): APIPromise<unknown> {
26
- const { user_id, 'x-token': xToken } = params;
27
- return this._client.get(path`/v2/preferences/${user_id}/${preferenceID}`, {
28
- ...options,
29
- headers: buildHeaders([{ 'x-token': xToken }, options?.headers]),
30
- });
31
- }
32
-
33
10
  /**
34
11
  * Create a new preference ID for personalized LLM routing.
35
12
  *
@@ -58,30 +35,30 @@ export class Preferences extends APIResource {
58
35
  *
59
36
  * @example
60
37
  * ```ts
61
- * const response =
62
- * await client.preferences.createUserPreference();
38
+ * const preference = await client.preferences.create();
63
39
  * ```
64
40
  */
65
- createUserPreference(
66
- body: PreferenceCreateUserPreferenceParams,
67
- options?: RequestOptions,
68
- ): APIPromise<PreferenceCreateUserPreferenceResponse> {
41
+ create(body: PreferenceCreateParams, options?: RequestOptions): APIPromise<PreferenceCreateResponse> {
69
42
  return this._client.post('/v2/preferences/userPreferenceCreate', { body, ...options });
70
43
  }
71
44
 
72
45
  /**
73
- * Delete User Preference
46
+ * Get User Preference
74
47
  *
75
48
  * @example
76
49
  * ```ts
77
- * const response =
78
- * await client.preferences.deleteUserPreference(
79
- * 'preference_id',
80
- * );
50
+ * const preference = await client.preferences.retrieve(
51
+ * 'user_id',
52
+ * { 'x-token': 'x-token' },
53
+ * );
81
54
  * ```
82
55
  */
83
- deleteUserPreference(preferenceID: string, options?: RequestOptions): APIPromise<unknown> {
84
- return this._client.delete(path`/v2/preferences/userPreferenceDelete/${preferenceID}`, options);
56
+ retrieve(userID: string, params: PreferenceRetrieveParams, options?: RequestOptions): APIPromise<unknown> {
57
+ const { 'x-token': xToken } = params;
58
+ return this._client.get(path`/v2/preferences/${userID}`, {
59
+ ...options,
60
+ headers: buildHeaders([{ 'x-token': xToken }, options?.headers]),
61
+ });
85
62
  }
86
63
 
87
64
  /**
@@ -89,57 +66,71 @@ export class Preferences extends APIResource {
89
66
  *
90
67
  * @example
91
68
  * ```ts
92
- * const response =
93
- * await client.preferences.updateUserPreference({
94
- * preference_id: 'preference_id',
95
- * });
69
+ * const preference = await client.preferences.update({
70
+ * preference_id: 'preference_id',
71
+ * });
96
72
  * ```
97
73
  */
98
- updateUserPreference(
99
- body: PreferenceUpdateUserPreferenceParams,
100
- options?: RequestOptions,
101
- ): APIPromise<unknown> {
74
+ update(body: PreferenceUpdateParams, options?: RequestOptions): APIPromise<unknown> {
102
75
  return this._client.put('/v2/preferences/userPreferenceUpdate', { body, ...options });
103
76
  }
104
- }
105
77
 
106
- export type PreferenceRetrieveResponse = unknown;
78
+ /**
79
+ * Delete User Preference
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * const preference = await client.preferences.delete(
84
+ * 'preference_id',
85
+ * );
86
+ * ```
87
+ */
88
+ delete(preferenceID: string, options?: RequestOptions): APIPromise<unknown> {
89
+ return this._client.delete(path`/v2/preferences/userPreferenceDelete/${preferenceID}`, options);
90
+ }
91
+ }
107
92
 
108
93
  /**
109
- * Response from preference creation endpoint.
94
+ * Response model for POST /v2/preferences/userPreferenceCreate endpoint.
95
+ *
96
+ * Returns the newly created preference ID which can be used to enable personalized
97
+ * LLM routing. Store this ID and include it in subsequent model_select() calls to
98
+ * activate personalized routing based on your feedback and usage patterns.
99
+ *
100
+ * **Next steps after creation:**
101
+ *
102
+ * 1. Use the preference_id in POST /v2/modelRouter/modelSelect requests
103
+ * 2. Submit feedback on routing decisions to improve accuracy
104
+ * 3. Optionally train a custom router using your evaluation data
110
105
  */
111
- export interface PreferenceCreateUserPreferenceResponse {
106
+ export interface PreferenceCreateResponse {
112
107
  /**
113
- * The newly created preference ID. Use this in model_select() calls for
114
- * personalized routing
108
+ * Unique identifier for the newly created preference. Use this in the
109
+ * 'preference_id' parameter of model_select() calls to enable personalized routing
115
110
  */
116
111
  preference_id: string;
117
112
  }
118
113
 
119
- export type PreferenceDeleteUserPreferenceResponse = unknown;
114
+ export type PreferenceRetrieveResponse = unknown;
120
115
 
121
- export type PreferenceUpdateUserPreferenceResponse = unknown;
116
+ export type PreferenceUpdateResponse = unknown;
122
117
 
123
- export interface PreferenceRetrieveParams {
124
- /**
125
- * Path param:
126
- */
127
- user_id: string;
118
+ export type PreferenceDeleteResponse = unknown;
128
119
 
120
+ export interface PreferenceCreateParams {
129
121
  /**
130
- * Header param:
122
+ * Optional name for the preference. If not provided, an auto-generated timestamp
123
+ * will be used. Use descriptive names like 'Production API' or 'Customer Support
124
+ * Bot' for easy identification
131
125
  */
132
- 'x-token': string;
126
+ name?: string | null;
133
127
  }
134
128
 
135
- export interface PreferenceCreateUserPreferenceParams {
136
- /**
137
- * Optional name for the preference
138
- */
139
- name?: string | null;
129
+ export interface PreferenceRetrieveParams {
130
+ 'x-token': string;
140
131
  }
141
132
 
142
- export interface PreferenceUpdateUserPreferenceParams {
133
+ export interface PreferenceUpdateParams {
143
134
  preference_id: string;
144
135
 
145
136
  name?: string | null;
@@ -147,12 +138,12 @@ export interface PreferenceUpdateUserPreferenceParams {
147
138
 
148
139
  export declare namespace Preferences {
149
140
  export {
141
+ type PreferenceCreateResponse as PreferenceCreateResponse,
150
142
  type PreferenceRetrieveResponse as PreferenceRetrieveResponse,
151
- type PreferenceCreateUserPreferenceResponse as PreferenceCreateUserPreferenceResponse,
152
- type PreferenceDeleteUserPreferenceResponse as PreferenceDeleteUserPreferenceResponse,
153
- type PreferenceUpdateUserPreferenceResponse as PreferenceUpdateUserPreferenceResponse,
143
+ type PreferenceUpdateResponse as PreferenceUpdateResponse,
144
+ type PreferenceDeleteResponse as PreferenceDeleteResponse,
145
+ type PreferenceCreateParams as PreferenceCreateParams,
154
146
  type PreferenceRetrieveParams as PreferenceRetrieveParams,
155
- type PreferenceCreateUserPreferenceParams as PreferenceCreateUserPreferenceParams,
156
- type PreferenceUpdateUserPreferenceParams as PreferenceUpdateUserPreferenceParams,
147
+ type PreferenceUpdateParams as PreferenceUpdateParams,
157
148
  };
158
149
  }