@tyvm/knowhow 0.0.121 → 0.0.122

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tyvm/knowhow",
3
- "version": "0.0.121",
3
+ "version": "0.0.122",
4
4
  "description": "ai cli with plugins and agents",
5
5
  "main": "ts_build/src/index.js",
6
6
  "bin": {
@@ -3,6 +3,7 @@ import {
3
3
  GenericClient,
4
4
  CompletionOptions,
5
5
  CompletionResponse,
6
+ StreamChunk,
6
7
  EmbeddingOptions,
7
8
  EmbeddingResponse,
8
9
  } from "./types";
@@ -91,6 +92,17 @@ export class HttpClient implements GenericClient {
91
92
  this.pricingMap = pricingMap;
92
93
  }
93
94
 
95
+ /**
96
+ * Returns the pricing entry for a specific model, or all pricing entries if no model is given.
97
+ * Returns undefined for a specific model if no pricing is known.
98
+ */
99
+ getPricing(model?: string): ModelPricing | Record<string, ModelPricing> | undefined {
100
+ if (model !== undefined) {
101
+ return this.pricingMap[model];
102
+ }
103
+ return this.pricingMap;
104
+ }
105
+
94
106
  /**
95
107
  * Calculate USD cost for a completion/embedding call from token usage.
96
108
  * Returns undefined if no pricing entry exists for the model.
@@ -186,6 +198,88 @@ export class HttpClient implements GenericClient {
186
198
  });
187
199
  }
188
200
 
201
+ /**
202
+ * Streams a chat completion via OpenAI-compatible SSE (`stream: true`).
203
+ * Parses `data: {...}` lines and yields token deltas, then a final done chunk.
204
+ */
205
+ async *createChatCompletionStream(
206
+ options: CompletionOptions
207
+ ): AsyncGenerator<StreamChunk> {
208
+ const body = {
209
+ ...options,
210
+ model: options.model,
211
+ messages: options.messages,
212
+ max_tokens: options.max_tokens || 4000,
213
+ ...this.extra_body,
214
+ stream: true,
215
+ stream_options: { include_usage: true },
216
+ ...(options.tools && {
217
+ tools: options.tools,
218
+ tool_choice: "auto",
219
+ }),
220
+ };
221
+
222
+ const response = await fetch(`${this.baseUrl}/v1/chat/completions`, {
223
+ method: "POST",
224
+ headers: {
225
+ ...(this.headers as Record<string, string>),
226
+ "Content-Type": "application/json",
227
+ "Accept": "text/event-stream",
228
+ },
229
+ body: JSON.stringify(body),
230
+ signal: options.signal,
231
+ });
232
+
233
+ if (!response.ok) {
234
+ const text = await response.text().catch(() => "");
235
+ throw new Error(`HTTP ${response.status}: ${text}`);
236
+ }
237
+
238
+ if (!response.body) {
239
+ throw new Error("No response body for streaming request");
240
+ }
241
+
242
+ const reader = response.body.getReader();
243
+ const decoder = new TextDecoder();
244
+ let buffer = "";
245
+ let usage: StreamChunk["usage"] | undefined;
246
+
247
+ while (true) {
248
+ const { done, value } = await reader.read();
249
+ if (done) break;
250
+
251
+ buffer += decoder.decode(value, { stream: true });
252
+ const lines = buffer.split("\n");
253
+ buffer = lines.pop() ?? "";
254
+
255
+ for (const line of lines) {
256
+ const trimmed = line.trim();
257
+ if (!trimmed || !trimmed.startsWith("data: ")) continue;
258
+ const jsonStr = trimmed.slice(6);
259
+ if (jsonStr === "[DONE]") continue;
260
+ try {
261
+ const chunk = JSON.parse(jsonStr);
262
+ const delta = chunk.choices?.[0]?.delta?.content;
263
+ if (delta) {
264
+ yield { delta, done: false };
265
+ }
266
+ if (chunk.usage) {
267
+ usage = {
268
+ prompt_tokens: chunk.usage.prompt_tokens ?? 0,
269
+ completion_tokens: chunk.usage.completion_tokens ?? 0,
270
+ total_tokens: chunk.usage.total_tokens,
271
+ };
272
+ }
273
+ } catch {
274
+ // Ignore malformed SSE lines
275
+ }
276
+ }
277
+ }
278
+
279
+ const usdCost = this.calculateCost(options.model, usage);
280
+ yield { done: true, usage, usd_cost: usdCost };
281
+ }
282
+
189
283
  /**
190
284
  * Creates a completion using the Responses API (/v1/responses).
191
285
  * Compatible with providers that implement the OpenAI Responses API spec
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  CompletionOptions,
3
3
  CompletionResponse,
4
+ StreamChunk,
4
5
  EmbeddingOptions,
5
6
  EmbeddingResponse,
6
7
  GenericClient,
@@ -34,6 +35,7 @@ import { OpenAiTextPricing } from "./pricing/openai";
34
35
  import { AnthropicTextPricing } from "./pricing/anthropic";
35
36
  import { GeminiPricing } from "./pricing/google";
36
37
  import { withRetry } from "./withRetry";
38
+ import { FireworksTextPricing } from "./pricing/fireworks";
37
39
  import {
38
40
  XaiTextPricing,
39
41
  XaiImagePricing,
@@ -683,6 +685,31 @@ export class AIClient {
683
685
  );
684
686
  }
685
687
 
688
+ async *createCompletionStream(
689
+ provider: string,
690
+ options: CompletionOptions
691
+ ): AsyncGenerator<StreamChunk> {
692
+ const { client, model } = this.getClient(provider, options.model);
693
+ if (!model || !client) {
694
+ throw new Error(
695
+ `provider: ${provider} does not have ${
696
+ options.model
697
+ } model registered. Try using ${JSON.stringify(this.listAllModels())}`
698
+ );
699
+ }
700
+ if (client.createChatCompletionStream) {
701
+ yield* client.createChatCompletionStream({ ...options, model });
702
+ } else {
703
+ // Fallback: non-streaming clients — call normal completion and yield as single chunk
704
+ const result = await withRetry(
705
+ (signal) => client.createChatCompletion({ ...options, model, signal }),
706
+ options
707
+ );
708
+ yield { delta: result.choices[0]?.message?.content ?? "", done: false };
709
+ yield { done: true, usage: result.usage, usd_cost: result.usd_cost };
710
+ }
711
+ }
712
+
686
713
  async createEmbedding(
687
714
  provider: string,
688
715
  options: EmbeddingOptions
@@ -832,12 +859,24 @@ export class AIClient {
832
859
  return this.clientModels;
833
860
  }
834
861
 
835
- listAllModelsWithProvider() {
836
- return Object.entries(this.listAllModels())
837
- .map(([provider, models]) =>
838
- models.map((m) => ({ id: `${provider}/${m}` }))
839
- )
840
- .flat();
862
+ /**
863
+ * Filters a provider→models map to only include models that have known pricing.
864
+ * For HttpClient-based providers with getPricing(), only priced models are kept.
865
+ * For other providers (no getPricing()), all models pass through unchanged.
866
+ */
867
+ private _filterByPricing(models: Record<string, string[]>): Record<string, string[]> {
868
+ const result: Record<string, string[]> = {};
869
+ for (const [provider, ids] of Object.entries(models)) {
870
+ const client = this.clients[provider];
871
+ if (client?.getPricing) {
872
+ const pricingMap = client.getPricing() as Record<string, ModelPricing>;
873
+ const priced = ids.filter((id) => !!pricingMap[id]);
874
+ if (priced.length > 0) result[provider] = priced;
875
+ } else {
876
+ result[provider] = ids;
877
+ }
878
+ }
879
+ return result;
841
880
  }
842
881
 
843
882
  /*
@@ -890,11 +929,8 @@ export class AIClient {
890
929
  return providerModels;
891
930
  }
892
931
 
893
- listAllEmbeddingModels() {
894
- return this.embeddingModels;
895
- }
896
-
897
- listAllCompletionModels() {
932
+ listAllCompletionModels(options?: { pricing?: boolean }) {
933
+ if (options?.pricing) return this._filterByPricing(this.completionModels);
898
934
  return this.completionModels;
899
935
  }
900
936
 
@@ -902,18 +938,33 @@ export class AIClient {
902
938
  return Object.keys(this.clientModels);
903
939
  }
904
940
 
905
- listAllImageModels() {
941
+ listAllEmbeddingModels(options?: { pricing?: boolean }) {
942
+ if (options?.pricing) return this._filterByPricing(this.embeddingModels);
943
+ return this.embeddingModels;
944
+ }
945
+
946
+ listAllImageModels(options?: { pricing?: boolean }) {
947
+ if (options?.pricing) return this._filterByPricing(this.imageModels);
906
948
  return this.imageModels;
907
949
  }
908
950
 
909
- listAllAudioModels() {
951
+ listAllAudioModels(options?: { pricing?: boolean }) {
952
+ if (options?.pricing) return this._filterByPricing(this.audioModels);
910
953
  return this.audioModels;
911
954
  }
912
955
 
913
- listAllVideoModels() {
956
+ listAllVideoModels(options?: { pricing?: boolean }) {
957
+ if (options?.pricing) return this._filterByPricing(this.videoModels);
914
958
  return this.videoModels;
915
959
  }
916
960
 
961
+ listAllModelsWithProvider(options?: { pricing?: boolean }) {
962
+ const models = options?.pricing ? this._filterByPricing(this.clientModels) : this.clientModels;
963
+ return Object.entries(models)
964
+ .map(([provider, ids]) => ids.map((m) => ({ id: `${provider}/${m}` })))
965
+ .flat();
966
+ }
967
+
917
968
  /**
918
969
  * Returns the context window limit (in tokens) for a given model.
919
970
  * Delegates to the registered client's getContextLimit() if available.
@@ -969,6 +1020,7 @@ export class AIClient {
969
1020
  ...AnthropicTextPricing,
970
1021
  ...GeminiPricing,
971
1022
  ...XaiTextPricing,
1023
+ ...FireworksTextPricing,
972
1024
  };
973
1025
  const allImagePricing: Record<string, ModelPricing> = {
974
1026
  ...XaiImagePricing,
@@ -190,6 +190,64 @@ export class GenericOpenAiClient implements GenericClient {
190
190
  usd_cost: usdCost,
191
191
  };
192
192
  }
193
+
194
+ /**
195
+ * Streams a chat completion token-by-token.
196
+ * Yields delta content strings as they arrive, then yields a final
197
+ * CompletionResponse with usage info when the stream ends.
198
+ */
199
+ async *createChatCompletionStream(
200
+ options: CompletionOptions
201
+ ): AsyncGenerator<{ delta?: string; done: boolean; usage?: CompletionResponse['usage']; usd_cost?: number }> {
202
+ if (OpenAiResponsesOnlyModels.includes(options.model)) {
203
+ // Fallback: non-streaming for Responses-only models
204
+ const result = await this.createChatCompletion(options);
205
+ yield { delta: result.choices[0]?.message?.content ?? "", done: false };
206
+ yield { done: true, usage: result.usage, usd_cost: result.usd_cost };
207
+ return;
208
+ }
209
+
210
+ const openaiMessages = options.messages.map((msg) => {
211
+ if (msg.role === "tool") {
212
+ return {
213
+ ...msg,
214
+ content: msg.content || "",
215
+ role: "tool",
216
+ tool_call_id: msg.tool_call_id,
217
+ } as ChatCompletionToolMessageParam;
218
+ }
219
+ return msg as ChatCompletionMessageParam;
220
+ });
221
+
222
+ const stream = await this.client.chat.completions.create({
223
+ model: options.model,
224
+ messages: openaiMessages,
225
+ max_tokens: options.max_tokens,
226
+ stream: true,
227
+ stream_options: { include_usage: true },
228
+ ...(options.tools && { tools: options.tools, tool_choice: "auto" }),
229
+ }, { signal: options.signal });
230
+
231
+ let usage: CompletionResponse['usage'] | undefined;
232
+ for await (const chunk of stream) {
233
+ const delta = chunk.choices[0]?.delta?.content;
234
+ if (delta) {
235
+ yield { delta, done: false };
236
+ }
237
+ if (chunk.usage) {
238
+ usage = {
239
+ prompt_tokens: chunk.usage.prompt_tokens ?? 0,
240
+ completion_tokens: chunk.usage.completion_tokens ?? 0,
241
+ total_tokens: chunk.usage.total_tokens ?? 0,
242
+ };
243
+ }
244
+ }
245
+ const usdCost = usage
246
+ ? this.calculateCost(options.model, usage as OpenAI.ChatCompletion["usage"])
247
+ : undefined;
248
+ yield { done: true, usage, usd_cost: usdCost };
249
+ }
250
+
193
251
  /**
194
252
  * Creates a completion using the OpenAI Responses API.
195
253
  * Used for models that only support the Responses API (e.g. gpt-5.3-codex, gpt-5.4).
@@ -136,6 +136,16 @@ export interface CompletionResponse {
136
136
  usd_cost?: number;
137
137
  }
138
138
 
139
+ /** A single chunk yielded by a streaming completion. */
140
+ export interface StreamChunk {
141
+ /** Incremental text token(s). Only present on intermediate chunks. */
142
+ delta?: string;
143
+ /** True on the final chunk (no delta, but usage/cost available). */
144
+ done: boolean;
145
+ usage?: TokenUsage;
146
+ usd_cost?: number;
147
+ }
148
+
139
149
  export interface EmbeddingOptions extends RetryOptions {
140
150
  input: string;
141
151
  model?: string;
@@ -305,6 +315,8 @@ export interface FileDownloadResponse {
305
315
  export interface GenericClient {
306
316
  setKey(key: string): void;
307
317
  createChatCompletion(options: CompletionOptions): Promise<CompletionResponse>;
318
+ /** Optional streaming variant — yields incremental tokens then a final done chunk. */
319
+ createChatCompletionStream?(options: CompletionOptions): AsyncGenerator<StreamChunk>;
308
320
  createEmbedding(options: EmbeddingOptions): Promise<EmbeddingResponse>;
309
321
  createAudioTranscription?(
310
322
  options: AudioTranscriptionOptions
@@ -343,4 +355,10 @@ export interface GenericClient {
343
355
  getContextLimit?(
344
356
  model: string
345
357
  ): { contextLimit: number; threshold: number } | undefined;
358
+ /**
359
+ * Returns the pricing entry for a specific model, or the entire pricing map if no model is given.
360
+ * Returns undefined for a specific model if no pricing is known.
361
+ * Only implemented by HttpClient-based providers that have been given a pricing map via setPrices().
362
+ */
363
+ getPricing?(model?: string): import("./pricing/types").ModelPricing | Record<string, import("./pricing/types").ModelPricing> | undefined;
346
364
  }
@@ -116,9 +116,11 @@ describe("AIClient", () => {
116
116
  aiClient.registerClient("fake", fakeClient);
117
117
  aiClient.registerModels("fake", ["fake-model-1"]);
118
118
 
119
- expect(() => {
120
- aiClient.getClient("fake", "non-existent-model");
121
- }).toThrow("Model non-existent-model not registered for provider fake.");
119
+ // getClient now warns instead of throws for unregistered models,
120
+ // so the API itself can accept/reject the model (e.g. newly-released models)
121
+ const result = aiClient.getClient("fake", "non-existent-model");
122
+ expect(result.provider).toBe("fake");
123
+ expect(result.model).toBe("non-existent-model");
122
124
  });
123
125
  });
124
126
  describe("detectProviderModel", () => {
@@ -644,13 +644,19 @@ describe("CustomVariables", () => {
644
644
  ];
645
645
 
646
646
  const processor = customVariables.createProcessor();
647
- const modifiedMessages = [...toolCallMessages];
648
- await processor(toolCallMessages, modifiedMessages);
649
647
 
650
- // Both tool calls should have the full JWT
648
+ // Simulate two agent turns: each turn calls processor with growing message array
649
+ // Turn 1: only message[0] is present
650
+ const modifiedMessages: Message[] = [{ ...toolCallMessages[0] }];
651
+ await processor(toolCallMessages.slice(0, 1), modifiedMessages);
652
+
653
+ // Turn 2: message[1] is added as the new latest message
654
+ modifiedMessages.push({ ...toolCallMessages[1] });
655
+ await processor(toolCallMessages.slice(0, 2), modifiedMessages);
656
+
657
+ // Both tool calls should have the full JWT after their respective turns
651
658
  const args1 = JSON.parse(modifiedMessages[0].tool_calls![0].function.arguments);
652
659
  const args2 = JSON.parse(modifiedMessages[1].tool_calls![0].function.arguments);
653
-
654
660
  expect(args1.command).toContain(LONG_JWT);
655
661
  expect(args2.command).toContain(LONG_JWT);
656
662
 
@@ -796,10 +802,14 @@ describe("CustomVariables", () => {
796
802
  },
797
803
  ];
798
804
 
799
- const modifiedMessages = [...curlMessages];
800
- await processor(curlMessages, modifiedMessages);
805
+ // Simulate two agent turns: each turn calls processor with growing message array
806
+ const modifiedMessages: Message[] = [{ ...curlMessages[0] }];
807
+ await processor(curlMessages.slice(0, 1), modifiedMessages);
808
+
809
+ modifiedMessages.push({ ...curlMessages[1] });
810
+ await processor(curlMessages.slice(0, 2), modifiedMessages);
801
811
 
802
- // Both calls get the real JWT injected
812
+ // Both calls get the real JWT injected after their respective turns
803
813
  const args1 = JSON.parse(modifiedMessages[0].tool_calls![0].function.arguments);
804
814
  const args2 = JSON.parse(modifiedMessages[1].tool_calls![0].function.arguments);
805
815
  expect(args1.command).toContain(fakeSecret);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tyvm/knowhow",
3
- "version": "0.0.121",
3
+ "version": "0.0.122",
4
4
  "description": "ai cli with plugins and agents",
5
5
  "main": "ts_build/src/index.js",
6
6
  "bin": {
@@ -1,4 +1,4 @@
1
- import { GenericClient, CompletionOptions, CompletionResponse, EmbeddingOptions, EmbeddingResponse } from "./types";
1
+ import { GenericClient, CompletionOptions, CompletionResponse, StreamChunk, EmbeddingOptions, EmbeddingResponse } from "./types";
2
2
  import { ModelPricing } from "./pricing/types";
3
3
  export interface HttpClientOptions {
4
4
  headers?: Record<string, string>;
@@ -17,6 +17,7 @@ export declare class HttpClient implements GenericClient {
17
17
  setBaseUrl(baseUrl: string): void;
18
18
  setKey(key: string): void;
19
19
  setPrices(pricingMap: Record<string, ModelPricing>): void;
20
+ getPricing(model?: string): ModelPricing | Record<string, ModelPricing> | undefined;
20
21
  calculateCost(model: string, usage: {
21
22
  prompt_tokens?: number;
22
23
  completion_tokens?: number;
@@ -29,6 +30,7 @@ export declare class HttpClient implements GenericClient {
29
30
  }): void;
30
31
  loadJwtFile(filePath: string): void;
31
32
  createChatCompletion(options: CompletionOptions): Promise<CompletionResponse>;
33
+ createChatCompletionStream(options: CompletionOptions): AsyncGenerator<StreamChunk>;
32
34
  createResponse(options: CompletionOptions, store?: boolean): Promise<CompletionResponse>;
33
35
  createEmbedding(options: EmbeddingOptions): Promise<EmbeddingResponse>;
34
36
  getModels(type?: string): Promise<any>;
@@ -64,6 +64,12 @@ class HttpClient {
64
64
  setPrices(pricingMap) {
65
65
  this.pricingMap = pricingMap;
66
66
  }
67
+ getPricing(model) {
68
+ if (model !== undefined) {
69
+ return this.pricingMap[model];
70
+ }
71
+ return this.pricingMap;
72
+ }
67
73
  calculateCost(model, usage) {
68
74
  if (!usage)
69
75
  return undefined;
@@ -132,6 +138,76 @@ class HttpClient {
132
138
  };
133
139
  });
134
140
  }
141
+ async *createChatCompletionStream(options) {
142
+ const body = {
143
+ ...options,
144
+ model: options.model,
145
+ messages: options.messages,
146
+ max_tokens: options.max_tokens || 4000,
147
+ ...this.extra_body,
148
+ stream: true,
149
+ stream_options: { include_usage: true },
150
+ ...(options.tools && {
151
+ tools: options.tools,
152
+ tool_choice: "auto",
153
+ }),
154
+ };
155
+ const response = await fetch(`${this.baseUrl}/v1/chat/completions`, {
156
+ method: "POST",
157
+ headers: {
158
+ ...this.headers,
159
+ "Content-Type": "application/json",
160
+ "Accept": "text/event-stream",
161
+ },
162
+ body: JSON.stringify(body),
163
+ signal: options.signal,
164
+ });
165
+ if (!response.ok) {
166
+ const text = await response.text().catch(() => "");
167
+ throw new Error(`HTTP ${response.status}: ${text}`);
168
+ }
169
+ if (!response.body) {
170
+ throw new Error("No response body for streaming request");
171
+ }
172
+ const reader = response.body.getReader();
173
+ const decoder = new TextDecoder();
174
+ let buffer = "";
175
+ let usage;
176
+ while (true) {
177
+ const { done, value } = await reader.read();
178
+ if (done)
179
+ break;
180
+ buffer += decoder.decode(value, { stream: true });
181
+ const lines = buffer.split("\n");
182
+ buffer = lines.pop() ?? "";
183
+ for (const line of lines) {
184
+ const trimmed = line.trim();
185
+ if (!trimmed || !trimmed.startsWith("data: "))
186
+ continue;
187
+ const jsonStr = trimmed.slice(6);
188
+ if (jsonStr === "[DONE]")
189
+ continue;
190
+ try {
191
+ const chunk = JSON.parse(jsonStr);
192
+ const delta = chunk.choices?.[0]?.delta?.content;
193
+ if (delta) {
194
+ yield { delta, done: false };
195
+ }
196
+ if (chunk.usage) {
197
+ usage = {
198
+ prompt_tokens: chunk.usage.prompt_tokens ?? 0,
199
+ completion_tokens: chunk.usage.completion_tokens ?? 0,
200
+ total_tokens: chunk.usage.total_tokens,
201
+ };
202
+ }
203
+ }
204
+ catch {
205
+ }
206
+ }
207
+ }
208
+ const usdCost = this.calculateCost(options.model, usage);
209
+ yield { done: true, usage, usd_cost: usdCost };
210
+ }
135
211
  async createResponse(options, store = false) {
136
212
  return this.withRetry(async () => {
137
213
  const systemMessages = options.messages.filter((m) => m.role === "system");
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/clients/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/clients/http.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CompletionOptions, CompletionResponse, EmbeddingOptions, EmbeddingResponse, GenericClient, AudioTranscriptionOptions, AudioTranscriptionResponse, AudioGenerationOptions, AudioGenerationResponse, ImageGenerationOptions, ImageGenerationResponse, VideoGenerationOptions, VideoGenerationResponse, VideoStatusOptions, VideoStatusResponse, FileUploadOptions, FileUploadResponse, FileDownloadOptions, FileDownloadResponse } from "./types";
1
+ import { CompletionOptions, CompletionResponse, StreamChunk, EmbeddingOptions, EmbeddingResponse, GenericClient, AudioTranscriptionOptions, AudioTranscriptionResponse, AudioGenerationOptions, AudioGenerationResponse, ImageGenerationOptions, ImageGenerationResponse, VideoGenerationOptions, VideoGenerationResponse, VideoStatusOptions, VideoStatusResponse, FileUploadOptions, FileUploadResponse, FileDownloadOptions, FileDownloadResponse } from "./types";
2
2
  import { ModelProvider } from "../types";
3
3
  import { OpenAiTextPricing } from "./pricing/openai";
4
4
  import { AnthropicTextPricing } from "./pricing/anthropic";
@@ -52,6 +52,7 @@ export declare class AIClient {
52
52
  } | undefined;
53
53
  detectProviderModel(provider: string, model?: string): any;
54
54
  createCompletion(provider: string, options: CompletionOptions): Promise<CompletionResponse>;
55
+ createCompletionStream(provider: string, options: CompletionOptions): AsyncGenerator<StreamChunk>;
55
56
  createEmbedding(provider: string, options: EmbeddingOptions): Promise<EmbeddingResponse>;
56
57
  createAudioTranscription(provider: string, options: AudioTranscriptionOptions): Promise<AudioTranscriptionResponse>;
57
58
  createAudioGeneration(provider: string, options: AudioGenerationOptions): Promise<AudioGenerationResponse>;
@@ -63,16 +64,29 @@ export declare class AIClient {
63
64
  downloadFile(provider: string, options: FileDownloadOptions): Promise<FileDownloadResponse>;
64
65
  getRegisteredModels(provider: string): string[];
65
66
  listAllModels(): Record<string, string[]>;
66
- listAllModelsWithProvider(): {
67
- id: string;
68
- }[];
67
+ private _filterByPricing;
69
68
  parseProviderPrefixedModels(client: GenericClient, knownProvider?: string): Promise<Record<string, string[]>>;
70
- listAllEmbeddingModels(): Record<string, string[]>;
71
- listAllCompletionModels(): Record<string, string[]>;
69
+ listAllCompletionModels(options?: {
70
+ pricing?: boolean;
71
+ }): Record<string, string[]>;
72
72
  listAllProviders(): string[];
73
- listAllImageModels(): Record<string, string[]>;
74
- listAllAudioModels(): Record<string, string[]>;
75
- listAllVideoModels(): Record<string, string[]>;
73
+ listAllEmbeddingModels(options?: {
74
+ pricing?: boolean;
75
+ }): Record<string, string[]>;
76
+ listAllImageModels(options?: {
77
+ pricing?: boolean;
78
+ }): Record<string, string[]>;
79
+ listAllAudioModels(options?: {
80
+ pricing?: boolean;
81
+ }): Record<string, string[]>;
82
+ listAllVideoModels(options?: {
83
+ pricing?: boolean;
84
+ }): Record<string, string[]>;
85
+ listAllModelsWithProvider(options?: {
86
+ pricing?: boolean;
87
+ }): {
88
+ id: string;
89
+ }[];
76
90
  getContextLimit(provider: string, model: string): {
77
91
  contextLimit: number;
78
92
  threshold: number;