@node-llm/core 0.8.0 → 1.1.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 (110) hide show
  1. package/README.md +0 -167
  2. package/dist/aliases.json +126 -0
  3. package/dist/chat/Chat.d.ts +7 -3
  4. package/dist/chat/Chat.d.ts.map +1 -1
  5. package/dist/chat/Chat.js +6 -7
  6. package/dist/chat/ChatStream.d.ts +25 -0
  7. package/dist/chat/ChatStream.d.ts.map +1 -0
  8. package/dist/chat/ChatStream.js +93 -0
  9. package/dist/config.d.ts +5 -3
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +2 -0
  12. package/dist/embedding/Embedding.d.ts +1 -1
  13. package/dist/embedding/Embedding.d.ts.map +1 -1
  14. package/dist/errors/index.d.ts +22 -0
  15. package/dist/errors/index.d.ts.map +1 -1
  16. package/dist/errors/index.js +32 -0
  17. package/dist/index.d.ts +10 -15
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +10 -9
  20. package/dist/llm.d.ts +4 -3
  21. package/dist/llm.d.ts.map +1 -1
  22. package/dist/llm.js +44 -37
  23. package/dist/model_aliases.d.ts +3 -0
  24. package/dist/model_aliases.d.ts.map +1 -0
  25. package/dist/model_aliases.js +20 -0
  26. package/dist/models/ModelRegistry.d.ts +4 -0
  27. package/dist/models/ModelRegistry.d.ts.map +1 -1
  28. package/dist/models/ModelRegistry.js +15 -0
  29. package/dist/models/models.d.ts +729 -60
  30. package/dist/models/models.d.ts.map +1 -1
  31. package/dist/models/models.js +24375 -2312
  32. package/dist/models/types.d.ts +3 -3
  33. package/dist/models/types.d.ts.map +1 -1
  34. package/dist/models/types.js +3 -0
  35. package/dist/providers/BaseProvider.d.ts +23 -0
  36. package/dist/providers/BaseProvider.d.ts.map +1 -0
  37. package/dist/providers/BaseProvider.js +31 -0
  38. package/dist/providers/Provider.d.ts +17 -1
  39. package/dist/providers/Provider.d.ts.map +1 -1
  40. package/dist/providers/anthropic/AnthropicProvider.d.ts +6 -7
  41. package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
  42. package/dist/providers/anthropic/AnthropicProvider.js +16 -13
  43. package/dist/providers/anthropic/Streaming.d.ts +1 -1
  44. package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
  45. package/dist/providers/anthropic/Streaming.js +80 -54
  46. package/dist/providers/deepseek/Capabilities.js +1 -1
  47. package/dist/providers/deepseek/DeepSeekProvider.d.ts +5 -1
  48. package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
  49. package/dist/providers/deepseek/DeepSeekProvider.js +15 -1
  50. package/dist/providers/deepseek/Streaming.d.ts +1 -1
  51. package/dist/providers/deepseek/Streaming.d.ts.map +1 -1
  52. package/dist/providers/deepseek/Streaming.js +80 -48
  53. package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
  54. package/dist/providers/gemini/Embeddings.d.ts +1 -1
  55. package/dist/providers/gemini/Embeddings.d.ts.map +1 -1
  56. package/dist/providers/gemini/GeminiProvider.d.ts +6 -4
  57. package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
  58. package/dist/providers/gemini/GeminiProvider.js +14 -4
  59. package/dist/providers/gemini/Streaming.d.ts +1 -1
  60. package/dist/providers/gemini/Streaming.d.ts.map +1 -1
  61. package/dist/providers/gemini/Streaming.js +62 -39
  62. package/dist/providers/gemini/index.d.ts +1 -1
  63. package/dist/providers/gemini/index.js +1 -1
  64. package/dist/providers/ollama/Capabilities.d.ts.map +1 -1
  65. package/dist/providers/ollama/Capabilities.js +5 -1
  66. package/dist/providers/ollama/OllamaProvider.d.ts +1 -0
  67. package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
  68. package/dist/providers/ollama/OllamaProvider.js +3 -0
  69. package/dist/providers/ollama/index.d.ts +1 -1
  70. package/dist/providers/ollama/index.js +1 -1
  71. package/dist/providers/openai/Embedding.d.ts +1 -1
  72. package/dist/providers/openai/Embedding.d.ts.map +1 -1
  73. package/dist/providers/openai/OpenAIProvider.d.ts +6 -3
  74. package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
  75. package/dist/providers/openai/OpenAIProvider.js +15 -1
  76. package/dist/providers/openai/Streaming.d.ts +1 -1
  77. package/dist/providers/openai/Streaming.d.ts.map +1 -1
  78. package/dist/providers/openai/Streaming.js +75 -43
  79. package/dist/providers/openai/index.d.ts +1 -1
  80. package/dist/providers/openai/index.js +1 -1
  81. package/dist/providers/openrouter/Capabilities.d.ts +13 -0
  82. package/dist/providers/openrouter/Capabilities.d.ts.map +1 -0
  83. package/dist/providers/openrouter/Capabilities.js +67 -0
  84. package/dist/providers/openrouter/Models.d.ts +11 -0
  85. package/dist/providers/openrouter/Models.d.ts.map +1 -0
  86. package/dist/providers/openrouter/Models.js +88 -0
  87. package/dist/providers/openrouter/OpenRouterProvider.d.ts +21 -0
  88. package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -0
  89. package/dist/providers/openrouter/OpenRouterProvider.js +24 -0
  90. package/dist/providers/openrouter/index.d.ts +11 -0
  91. package/dist/providers/openrouter/index.d.ts.map +1 -0
  92. package/dist/providers/openrouter/index.js +26 -0
  93. package/dist/providers/registry.d.ts +11 -1
  94. package/dist/providers/registry.d.ts.map +1 -1
  95. package/dist/providers/registry.js +15 -1
  96. package/dist/streaming/Stream.d.ts +29 -0
  97. package/dist/streaming/Stream.d.ts.map +1 -0
  98. package/dist/streaming/Stream.js +67 -0
  99. package/dist/utils/FileLoader.d.ts.map +1 -1
  100. package/dist/utils/FileLoader.js +34 -3
  101. package/dist/utils/logger.d.ts +13 -0
  102. package/dist/utils/logger.d.ts.map +1 -0
  103. package/dist/utils/logger.js +24 -0
  104. package/package.json +2 -2
  105. package/dist/chat/Stream.d.ts +0 -21
  106. package/dist/chat/Stream.d.ts.map +0 -1
  107. package/dist/chat/Stream.js +0 -73
  108. package/dist/providers/Embedding.d.ts +0 -20
  109. package/dist/providers/Embedding.d.ts.map +0 -1
  110. package/dist/providers/Embedding.js +0 -1
@@ -1,7 +1,7 @@
1
1
  export interface Model {
2
2
  id: string;
3
3
  name: string;
4
- provider: 'openai' | 'anthropic' | 'gemini' | 'deepseek';
4
+ provider: ProviderName;
5
5
  family?: string | null;
6
6
  created_at?: string | null;
7
7
  context_window?: number | null;
@@ -44,7 +44,7 @@ export interface Model {
44
44
  };
45
45
  metadata?: Record<string, any>;
46
46
  }
47
- export type ProviderName = 'openai' | 'anthropic' | 'gemini' | 'deepseek';
48
- export type ModelCapability = 'streaming' | 'function_calling' | 'structured_output' | 'predicted_outputs' | 'distillation' | 'fine_tuning' | 'batch' | 'realtime' | 'image_generation' | 'speech_generation' | 'transcription' | 'translation' | 'citations' | 'reasoning' | 'caching' | 'moderation' | 'json_mode' | 'vision';
47
+ export type ProviderName = 'openai' | 'anthropic' | 'gemini' | 'deepseek' | 'openrouter' | 'ollama';
48
+ export type ModelCapability = 'streaming' | 'function_calling' | 'structured_output' | 'predicted_outputs' | 'distillation' | 'fine_tuning' | 'batch' | 'realtime' | 'image_generation' | 'speech_generation' | 'transcription' | 'translation' | 'citations' | 'reasoning' | 'caching' | 'moderation' | 'json_mode' | 'vision' | 'chat' | 'tools';
49
49
  export type ModelModality = 'text' | 'image' | 'audio' | 'pdf' | 'video' | 'file' | 'embeddings' | 'moderation';
50
50
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE;YACZ,QAAQ,CAAC,EAAE;gBACT,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;gBAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;gBAC5B,4BAA4B,CAAC,EAAE,MAAM,CAAC;aACvC,CAAC;YACF,KAAK,CAAC,EAAE;gBACN,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;aAC7B,CAAC;SACH,CAAC;QACF,MAAM,CAAC,EAAE;YACP,QAAQ,CAAC,EAAE;gBACT,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC;YACF,KAAK,CAAC,EAAE;gBACN,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC;SACH,CAAC;QACF,YAAY,CAAC,EAAE;YACb,QAAQ,CAAC,EAAE;gBACT,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;aAC7B,CAAC;SACH,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE1E,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,GACd,aAAa,GACb,OAAO,GACP,UAAU,GACV,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,GACf,aAAa,GACb,WAAW,GACX,WAAW,GACX,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,OAAO,GACP,OAAO,GACP,KAAK,GACL,OAAO,GACP,MAAM,GACN,YAAY,GACZ,YAAY,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE;YACZ,QAAQ,CAAC,EAAE;gBACT,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;gBAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;gBAC5B,4BAA4B,CAAC,EAAE,MAAM,CAAC;aACvC,CAAC;YACF,KAAK,CAAC,EAAE;gBACN,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;aAC7B,CAAC;SACH,CAAC;QACF,MAAM,CAAC,EAAE;YACP,QAAQ,CAAC,EAAE;gBACT,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC;YACF,KAAK,CAAC,EAAE;gBACN,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC;SACH,CAAC;QACF,YAAY,CAAC,EAAE;YACb,QAAQ,CAAC,EAAE;gBACT,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;aAC7B,CAAC;SACH,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEpG,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,GACd,aAAa,GACb,OAAO,GACP,UAAU,GACV,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,GACf,aAAa,GACb,WAAW,GACX,WAAW,GACX,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,OAAO,GACP,OAAO,GACP,KAAK,GACL,OAAO,GACP,MAAM,GACN,YAAY,GACZ,YAAY,CAAC"}
@@ -1 +1,4 @@
1
+ bitumen: 102;
2
+ bitumen: 102;
3
+ bitumen: 102;
1
4
  export {};
@@ -0,0 +1,23 @@
1
+ import { Provider, ChatRequest, ChatResponse, ChatChunk, ModelInfo, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, ModerationRequest, ModerationResponse, EmbeddingRequest, EmbeddingResponse } from "./Provider.js";
2
+ /**
3
+ * Abstract base class for all NodeLLM providers.
4
+ * Provides common functionality and default implementations for unsupported features.
5
+ * Each provider must implement the abstract methods and can override default implementations.
6
+ */
7
+ export declare abstract class BaseProvider implements Provider {
8
+ abstract apiBase(): string;
9
+ abstract headers(): Record<string, string>;
10
+ abstract headers(): Record<string, string>;
11
+ protected abstract providerName(): string;
12
+ get id(): string;
13
+ protected throwUnsupportedError(feature: string): never;
14
+ abstract chat(request: ChatRequest): Promise<ChatResponse>;
15
+ abstract capabilities?: any;
16
+ stream?(request: ChatRequest): AsyncIterable<ChatChunk>;
17
+ listModels?(): Promise<ModelInfo[]>;
18
+ paint?(request: ImageRequest): Promise<ImageResponse>;
19
+ transcribe?(request: TranscriptionRequest): Promise<TranscriptionResponse>;
20
+ moderate?(request: ModerationRequest): Promise<ModerationResponse>;
21
+ embed?(request: EmbeddingRequest): Promise<EmbeddingResponse>;
22
+ }
23
+ //# sourceMappingURL=BaseProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseProvider.d.ts","sourceRoot":"","sources":["../../src/providers/BaseProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,8BAAsB,YAAa,YAAW,QAAQ;aACpC,OAAO,IAAI,MAAM;aACjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;aACjC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,MAAM;IAEzC,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK;IAIvD,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC;IAErB,MAAM,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC;IAIxD,UAAU,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAInC,KAAK,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIrD,UAAU,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI1E,QAAQ,CAAC,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIlE,KAAK,CAAC,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGpE"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Abstract base class for all NodeLLM providers.
3
+ * Provides common functionality and default implementations for unsupported features.
4
+ * Each provider must implement the abstract methods and can override default implementations.
5
+ */
6
+ export class BaseProvider {
7
+ get id() {
8
+ return this.providerName();
9
+ }
10
+ throwUnsupportedError(feature) {
11
+ throw new Error(`${this.providerName()} does not support ${feature}`);
12
+ }
13
+ async *stream(request) {
14
+ this.throwUnsupportedError("stream");
15
+ }
16
+ async listModels() {
17
+ this.throwUnsupportedError("listModels");
18
+ }
19
+ async paint(request) {
20
+ this.throwUnsupportedError("paint");
21
+ }
22
+ async transcribe(request) {
23
+ this.throwUnsupportedError("transcribe");
24
+ }
25
+ async moderate(request) {
26
+ this.throwUnsupportedError("moderate");
27
+ }
28
+ async embed(request) {
29
+ this.throwUnsupportedError("embed");
30
+ }
31
+ }
@@ -1,6 +1,5 @@
1
1
  import { Message } from "../chat/Message.js";
2
2
  import { Tool, ToolCall } from "../chat/Tool.js";
3
- import { EmbeddingRequest, EmbeddingResponse } from "./Embedding.js";
4
3
  export interface ChatRequest {
5
4
  model: string;
6
5
  messages: Message[];
@@ -107,7 +106,24 @@ export interface ModerationResponse {
107
106
  model: string;
108
107
  results: ModerationResult[];
109
108
  }
109
+ export interface EmbeddingRequest {
110
+ input: string | string[];
111
+ model?: string;
112
+ dimensions?: number;
113
+ user?: string;
114
+ }
115
+ export interface EmbeddingVector {
116
+ embedding: number[];
117
+ index: number;
118
+ }
119
+ export interface EmbeddingResponse {
120
+ vectors: number[][];
121
+ model: string;
122
+ input_tokens: number;
123
+ dimensions: number;
124
+ }
110
125
  export interface Provider {
126
+ id: string;
111
127
  chat(request: ChatRequest): Promise<ChatResponse>;
112
128
  stream?(request: ChatRequest): AsyncIterable<ChatChunk>;
113
129
  listModels?(): Promise<ModelInfo[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../src/providers/Provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../src/providers/Provider.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { Provider, ChatRequest, ChatResponse, ModelInfo, ChatChunk, ImageRequest, ImageResponse, ModerationRequest, ModerationResponse, TranscriptionRequest, TranscriptionResponse } from "../Provider.js";
2
- import { EmbeddingRequest, EmbeddingResponse } from "../Embedding.js";
1
+ import { Provider, ChatRequest, ChatResponse, ModelInfo, ChatChunk } from "../Provider.js";
2
+ import { BaseProvider } from "../BaseProvider.js";
3
3
  export interface AnthropicProviderOptions {
4
4
  apiKey: string;
5
5
  baseUrl?: string;
6
6
  }
7
- export declare class AnthropicProvider implements Provider {
7
+ export declare class AnthropicProvider extends BaseProvider implements Provider {
8
8
  private readonly options;
9
9
  private readonly baseUrl;
10
10
  private readonly chatHandler;
@@ -22,12 +22,11 @@ export declare class AnthropicProvider implements Provider {
22
22
  getContextWindow: (model: string) => number | null;
23
23
  };
24
24
  constructor(options: AnthropicProviderOptions);
25
+ apiBase(): string;
26
+ headers(): Record<string, string>;
27
+ protected providerName(): string;
25
28
  chat(request: ChatRequest): Promise<ChatResponse>;
26
29
  stream(request: ChatRequest): AsyncGenerator<ChatChunk>;
27
30
  listModels(): Promise<ModelInfo[]>;
28
- paint(_request: ImageRequest): Promise<ImageResponse>;
29
- transcribe(_request: TranscriptionRequest): Promise<TranscriptionResponse>;
30
- moderate(_request: ModerationRequest): Promise<ModerationResponse>;
31
- embed(_request: EmbeddingRequest): Promise<EmbeddingResponse>;
32
31
  }
33
32
  //# sourceMappingURL=AnthropicProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnthropicProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/AnthropicProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5M,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAMtE,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,YAAW,QAAQ;IAkBpC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;IAEzC,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;qCACX,MAAM;0CACD,MAAM;wCACR,MAAM;qCACT,MAAM;oCACP,MAAM;kCACR,MAAM;MAChC;gBAE2B,OAAO,EAAE,wBAAwB;IAOxD,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAIlC,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIrD,UAAU,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI1E,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIlE,KAAK,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGpE"}
1
+ {"version":3,"file":"AnthropicProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/AnthropicProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAwJ,MAAM,gBAAgB,CAAC;AACjP,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,SAAQ,YAAa,YAAW,QAAQ;IAkBzD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;IAEzC,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;qCACX,MAAM;0CACD,MAAM;wCACR,MAAM;qCACT,MAAM;oCACP,MAAM;kCACR,MAAM;MAChC;gBAE2B,OAAO,EAAE,wBAAwB;IAQvD,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAI1B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAKzC"}
@@ -1,8 +1,9 @@
1
+ import { BaseProvider } from "../BaseProvider.js";
1
2
  import { Capabilities } from "./Capabilities.js";
2
3
  import { AnthropicChat } from "./Chat.js";
3
4
  import { AnthropicStreaming } from "./Streaming.js";
4
5
  import { AnthropicModels } from "./Models.js";
5
- export class AnthropicProvider {
6
+ export class AnthropicProvider extends BaseProvider {
6
7
  options;
7
8
  baseUrl;
8
9
  chatHandler;
@@ -20,12 +21,26 @@ export class AnthropicProvider {
20
21
  getContextWindow: (model) => Capabilities.getContextWindow(model),
21
22
  };
22
23
  constructor(options) {
24
+ super();
23
25
  this.options = options;
24
26
  this.baseUrl = options.baseUrl ?? "https://api.anthropic.com/v1";
25
27
  this.chatHandler = new AnthropicChat(this.baseUrl, options.apiKey);
26
28
  this.streamHandler = new AnthropicStreaming(this.baseUrl, options.apiKey);
27
29
  this.modelsHandler = new AnthropicModels(this.baseUrl, options.apiKey);
28
30
  }
31
+ apiBase() {
32
+ return this.baseUrl;
33
+ }
34
+ headers() {
35
+ return {
36
+ "x-api-key": this.options.apiKey,
37
+ "anthropic-version": "2023-06-01",
38
+ "Content-Type": "application/json",
39
+ };
40
+ }
41
+ providerName() {
42
+ return "Anthropic";
43
+ }
29
44
  async chat(request) {
30
45
  return this.chatHandler.execute(request);
31
46
  }
@@ -35,16 +50,4 @@ export class AnthropicProvider {
35
50
  async listModels() {
36
51
  return this.modelsHandler.execute();
37
52
  }
38
- async paint(_request) {
39
- throw new Error("Anthropic doesn't support image generation");
40
- }
41
- async transcribe(_request) {
42
- throw new Error("Anthropic doesn't support transcription");
43
- }
44
- async moderate(_request) {
45
- throw new Error("Anthropic doesn't support moderation");
46
- }
47
- async embed(_request) {
48
- throw new Error("Anthropic doesn't support embeddings");
49
- }
50
53
  }
@@ -3,6 +3,6 @@ export declare class AnthropicStreaming {
3
3
  private readonly baseUrl;
4
4
  private readonly apiKey;
5
5
  constructor(baseUrl: string, apiKey: string);
6
- execute(request: ChatRequest): AsyncGenerator<ChatChunk>;
6
+ execute(request: ChatRequest, controller?: AbortController): AsyncGenerator<ChatChunk>;
7
7
  }
8
8
  //# sourceMappingURL=Streaming.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMxD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEtE,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;CA0HhE"}
1
+ {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMxD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEtE,OAAO,CACZ,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,eAAe,GAC3B,cAAc,CAAC,SAAS,CAAC;CAqJ7B"}
@@ -8,7 +8,8 @@ export class AnthropicStreaming {
8
8
  this.baseUrl = baseUrl;
9
9
  this.apiKey = apiKey;
10
10
  }
11
- async *execute(request) {
11
+ async *execute(request, controller) {
12
+ const abortController = controller || new AbortController();
12
13
  const model = request.model;
13
14
  const maxTokens = request.max_tokens || Capabilities.getMaxOutputTokens(model) || 4096;
14
15
  const systemPrompt = formatSystemPrompt(request.messages);
@@ -50,63 +51,88 @@ export class AnthropicStreaming {
50
51
  if (hasPdf) {
51
52
  headers["anthropic-beta"] = "pdfs-2024-09-25";
52
53
  }
53
- const response = await fetch(`${this.baseUrl}/messages`, {
54
- method: "POST",
55
- headers: headers,
56
- body: JSON.stringify(body),
57
- });
58
- if (!response.ok) {
59
- await handleAnthropicError(response, model);
60
- }
61
- if (!response.body) {
62
- throw new Error("No response body for streaming");
63
- }
64
- const reader = response.body.getReader();
65
- const decoder = new TextDecoder();
66
- let buffer = "";
67
- while (true) {
68
- const { value, done } = await reader.read();
69
- if (done)
70
- break;
71
- const chunk = decoder.decode(value, { stream: true });
72
- buffer += chunk;
73
- const lines = buffer.split("\n\n");
74
- buffer = lines.pop() || "";
75
- for (const line of lines) {
76
- const trimmed = line.trim();
77
- if (!trimmed.startsWith("event: "))
78
- continue;
79
- // Format is:
80
- // event: type
81
- // data: json
82
- const parts = trimmed.split("\n");
83
- const eventLine = parts[0];
84
- const dataLine = parts.find(p => p.startsWith("data: "));
85
- if (!dataLine || !eventLine)
86
- continue;
87
- const eventType = eventLine.replace("event: ", "").trim();
88
- const dataStr = dataLine.replace("data: ", "").trim();
89
- try {
90
- const data = JSON.parse(dataStr);
91
- // Handle different event types from Anthropic
92
- if (eventType === "content_block_delta") {
93
- if (data.delta && data.delta.type === "text_delta") {
94
- yield { content: data.delta.text };
95
- }
96
- }
97
- else if (eventType === "message_start") {
98
- // Could extract initial usage here
54
+ let done = false;
55
+ try {
56
+ const response = await fetch(`${this.baseUrl}/messages`, {
57
+ method: "POST",
58
+ headers: headers,
59
+ body: JSON.stringify(body),
60
+ signal: abortController.signal,
61
+ });
62
+ if (!response.ok) {
63
+ await handleAnthropicError(response, model);
64
+ }
65
+ if (!response.body) {
66
+ throw new Error("No response body for streaming");
67
+ }
68
+ const reader = response.body.getReader();
69
+ const decoder = new TextDecoder();
70
+ let buffer = "";
71
+ while (true) {
72
+ const { value, done: readerDone } = await reader.read();
73
+ if (readerDone)
74
+ break;
75
+ const chunk = decoder.decode(value, { stream: true });
76
+ buffer += chunk;
77
+ const lines = buffer.split("\n\n");
78
+ buffer = lines.pop() || "";
79
+ for (const line of lines) {
80
+ let trimmed = line.trim();
81
+ // Handle carriage returns
82
+ if (trimmed.endsWith('\r')) {
83
+ trimmed = trimmed.substring(0, trimmed.length - 1);
99
84
  }
100
- else if (eventType === "message_delta") {
101
- // Update usage or stop reason
85
+ if (!trimmed.startsWith("event: "))
86
+ continue;
87
+ // Format is:
88
+ // event: type
89
+ // data: json
90
+ const parts = trimmed.split("\n");
91
+ const eventLine = parts[0];
92
+ const dataLine = parts.find(p => p.startsWith("data: "));
93
+ if (!dataLine || !eventLine)
94
+ continue;
95
+ const eventType = eventLine.replace("event: ", "").trim();
96
+ const dataStr = dataLine.replace("data: ", "").trim();
97
+ try {
98
+ const data = JSON.parse(dataStr);
99
+ // Handle different event types from Anthropic
100
+ if (eventType === "content_block_delta") {
101
+ if (data.delta && data.delta.type === "text_delta") {
102
+ yield { content: data.delta.text };
103
+ }
104
+ }
105
+ else if (eventType === "message_start") {
106
+ // Could extract initial usage here
107
+ }
108
+ else if (eventType === "message_delta") {
109
+ // Update usage or stop reason
110
+ }
111
+ else if (eventType === "error") {
112
+ throw new Error(`Stream error: ${data.error?.message}`);
113
+ }
102
114
  }
103
- else if (eventType === "error") {
104
- throw new Error(`Stream error: ${data.error?.message}`);
115
+ catch (e) {
116
+ // Re-throw errors
117
+ if (e instanceof Error && e.message.startsWith("Stream error"))
118
+ throw e;
119
+ // Ignore parse errors
105
120
  }
106
121
  }
107
- catch (e) {
108
- // console.warn("Parse error", e);
109
- }
122
+ }
123
+ done = true;
124
+ }
125
+ catch (e) {
126
+ // Graceful exit on abort
127
+ if (e instanceof Error && e.name === 'AbortError') {
128
+ return;
129
+ }
130
+ throw e;
131
+ }
132
+ finally {
133
+ // Cleanup: abort if user breaks early
134
+ if (!done) {
135
+ abortController.abort();
110
136
  }
111
137
  }
112
138
  }
@@ -15,7 +15,7 @@ export class Capabilities {
15
15
  if (val)
16
16
  return val;
17
17
  if (/deepseek-(?:chat|reasoner)/.test(modelId)) {
18
- return 64_000;
18
+ return 128_000;
19
19
  }
20
20
  return 32_768;
21
21
  }
@@ -1,9 +1,10 @@
1
1
  import { Provider, ChatRequest, ChatResponse, ModelInfo, ChatChunk } from "../Provider.js";
2
+ import { BaseProvider } from "../BaseProvider.js";
2
3
  export interface DeepSeekProviderOptions {
3
4
  apiKey: string;
4
5
  baseUrl?: string;
5
6
  }
6
- export declare class DeepSeekProvider implements Provider {
7
+ export declare class DeepSeekProvider extends BaseProvider implements Provider {
7
8
  private readonly options;
8
9
  private readonly baseUrl;
9
10
  private readonly chatHandler;
@@ -21,6 +22,9 @@ export declare class DeepSeekProvider implements Provider {
21
22
  getContextWindow: (model: string) => number | null;
22
23
  };
23
24
  constructor(options: DeepSeekProviderOptions);
25
+ apiBase(): string;
26
+ headers(): Record<string, string>;
27
+ protected providerName(): string;
24
28
  chat(request: ChatRequest): Promise<ChatResponse>;
25
29
  stream(request: ChatRequest): AsyncGenerator<ChatChunk>;
26
30
  listModels(): Promise<ModelInfo[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"DeepSeekProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM3F,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,YAAW,QAAQ;IAkBnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAExC,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;oCACZ,MAAM;yCACD,MAAM;uCACR,MAAM;oCACT,MAAM;mCACP,MAAM;kCACP,MAAM;MAChC;gBAE2B,OAAO,EAAE,uBAAuB;IAOvD,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAGzC"}
1
+ {"version":3,"file":"DeepSeekProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,QAAQ;IAkBxD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAExC,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;oCACZ,MAAM;yCACD,MAAM;uCACR,MAAM;oCACT,MAAM;mCACP,MAAM;kCACP,MAAM;MAChC;gBAE2B,OAAO,EAAE,uBAAuB;IAQtD,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAI1B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAKzC"}
@@ -1,8 +1,9 @@
1
+ import { BaseProvider } from "../BaseProvider.js";
1
2
  import { DeepSeekChat } from "./Chat.js";
2
3
  import { DeepSeekModels } from "./Models.js";
3
4
  import { DeepSeekStreaming } from "./Streaming.js";
4
5
  import { Capabilities } from "./Capabilities.js";
5
- export class DeepSeekProvider {
6
+ export class DeepSeekProvider extends BaseProvider {
6
7
  options;
7
8
  baseUrl;
8
9
  chatHandler;
@@ -20,12 +21,25 @@ export class DeepSeekProvider {
20
21
  getContextWindow: (model) => Capabilities.getContextWindow(model),
21
22
  };
22
23
  constructor(options) {
24
+ super();
23
25
  this.options = options;
24
26
  this.baseUrl = options.baseUrl ?? "https://api.deepseek.com";
25
27
  this.chatHandler = new DeepSeekChat(this.baseUrl, options.apiKey);
26
28
  this.streamingHandler = new DeepSeekStreaming(this.baseUrl, options.apiKey);
27
29
  this.modelsHandler = new DeepSeekModels(this.baseUrl, options.apiKey);
28
30
  }
31
+ apiBase() {
32
+ return this.baseUrl;
33
+ }
34
+ headers() {
35
+ return {
36
+ "Authorization": `Bearer ${this.options.apiKey}`,
37
+ "Content-Type": "application/json",
38
+ };
39
+ }
40
+ providerName() {
41
+ return "DeepSeek";
42
+ }
29
43
  async chat(request) {
30
44
  return this.chatHandler.execute(request);
31
45
  }
@@ -3,6 +3,6 @@ export declare class DeepSeekStreaming {
3
3
  private readonly baseUrl;
4
4
  private readonly apiKey;
5
5
  constructor(baseUrl: string, apiKey: string);
6
- execute(request: ChatRequest): AsyncGenerator<ChatChunk>;
6
+ execute(request: ChatRequest, controller?: AbortController): AsyncGenerator<ChatChunk>;
7
7
  }
8
8
  //# sourceMappingURL=Streaming.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExD,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEtE,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;CAwEhE"}
1
+ {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGxD,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEtE,OAAO,CACZ,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,eAAe,GAC3B,cAAc,CAAC,SAAS,CAAC;CA8G7B"}