@jeffusion/bungee-llms 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -0
- package/dist/adapter.d.ts +1 -0
- package/dist/core/adapter.d.ts +10 -0
- package/dist/core/conversion-service.d.ts +14 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/registry.d.ts +10 -0
- package/dist/core/types.d.ts +40 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +6597 -0
- package/dist/openai/index.d.ts +1 -0
- package/dist/openai/openai-protocol-conversion.d.ts +1 -0
- package/dist/openai-anthropic/index.d.ts +1 -0
- package/dist/openai-anthropic/openai-to-anthropic-request-conversion.d.ts +1 -0
- package/dist/plugin-api.d.ts +4 -0
- package/dist/plugin-api.js +6596 -0
- package/dist/protocol-converters/anthropic-to-gemini.converter.d.ts +62 -0
- package/dist/protocol-converters/anthropic-to-openai.converter.d.ts +105 -0
- package/dist/protocol-converters/base.d.ts +27 -0
- package/dist/protocol-converters/default-registry.d.ts +1 -0
- package/dist/protocol-converters/gemini-to-anthropic.converter.d.ts +57 -0
- package/dist/protocol-converters/gemini-to-openai.converter.d.ts +31 -0
- package/dist/protocol-converters/index.d.ts +10 -0
- package/dist/protocol-converters/openai-to-anthropic.converter.d.ts +27 -0
- package/dist/protocol-converters/openai-to-gemini.converter.d.ts +32 -0
- package/dist/protocol-converters/registry.d.ts +9 -0
- package/dist/protocol-converters/utils.d.ts +71 -0
- package/dist/providers/anthropic/anthropic-adapter.d.ts +16 -0
- package/dist/providers/anthropic/index.d.ts +1 -0
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/openai/index.d.ts +3 -0
- package/dist/providers/openai/messages-compat-normalization.d.ts +42 -0
- package/dist/providers/openai/openai-adapter.d.ts +16 -0
- package/dist/providers/openai/protocol-conversion.d.ts +27 -0
- package/dist/providers/openai-anthropic/index.d.ts +1 -0
- package/dist/providers/openai-anthropic/request-conversion.d.ts +20 -0
- package/dist/providers/provider-catalog.d.ts +26 -0
- package/dist/registry.d.ts +1 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/llms-runtime.d.ts +30 -0
- package/dist/service.d.ts +1 -0
- package/dist/types.d.ts +1 -0
- package/package.json +76 -0
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# @jeffusion/bungee-llms
|
|
2
|
+
|
|
3
|
+
Independent LLM adapters and protocol conversion package for Bungee.
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
- Provider-agnostic protocol conversion abstractions
|
|
8
|
+
- Adapter registry and conversion service
|
|
9
|
+
- Provider catalog and runtime container
|
|
10
|
+
- OpenAI/Anthropic/Gemini protocol converters (request/response/stream) centralized in `src/protocol-converters`
|
|
11
|
+
- Runtime registration helper `registerDefaultProtocolConverters()` for plugin/wrapper layers
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import {
|
|
17
|
+
LLMProtocolAdapterRegistry,
|
|
18
|
+
LLMProtocolConversionService,
|
|
19
|
+
LLMSRuntime,
|
|
20
|
+
registerDefaultProtocolConverters
|
|
21
|
+
} from '@jeffusion/bungee-llms';
|
|
22
|
+
|
|
23
|
+
registerDefaultProtocolConverters();
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Plugin/Wrapper Stable Facade
|
|
27
|
+
|
|
28
|
+
For plugin and wrapper layers, prefer the dedicated stable entrypoint to reduce coupling to internal file layout:
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import {
|
|
32
|
+
type AIConverter,
|
|
33
|
+
ProtocolTransformerRegistry,
|
|
34
|
+
registerDefaultProtocolConverters,
|
|
35
|
+
OpenAIProtocolConversion,
|
|
36
|
+
OpenAIMessagesCompatibilityNormalizer
|
|
37
|
+
} from '@jeffusion/bungee-llms/plugin-api';
|
|
38
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './core/adapter';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CanonicalRequest, CanonicalResponse, CanonicalStreamEvent, ConversionContext, LLMProvider } from './types';
|
|
2
|
+
export interface LLMProtocolAdapter<ProviderRequest = unknown, ProviderResponse = unknown, ProviderStreamEvent = unknown> {
|
|
3
|
+
readonly provider: LLMProvider;
|
|
4
|
+
toCanonicalRequest(request: ProviderRequest, context: ConversionContext): CanonicalRequest;
|
|
5
|
+
fromCanonicalRequest(request: CanonicalRequest, context: ConversionContext): ProviderRequest;
|
|
6
|
+
toCanonicalResponse(response: ProviderResponse, context: ConversionContext): CanonicalResponse;
|
|
7
|
+
fromCanonicalResponse(response: CanonicalResponse, context: ConversionContext): ProviderResponse;
|
|
8
|
+
toCanonicalStreamEvent?(event: ProviderStreamEvent, context: ConversionContext): CanonicalStreamEvent | null;
|
|
9
|
+
fromCanonicalStreamEvent?(event: CanonicalStreamEvent, context: ConversionContext): ProviderStreamEvent | null;
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { LLMProtocolAdapter } from './adapter';
|
|
2
|
+
import { LLMProtocolAdapterRegistry } from './registry';
|
|
3
|
+
import type { CanonicalStreamEvent, LLMProvider } from './types';
|
|
4
|
+
export declare class LLMProtocolConversionService {
|
|
5
|
+
private readonly registry;
|
|
6
|
+
constructor(registry?: LLMProtocolAdapterRegistry);
|
|
7
|
+
registerAdapter(adapter: LLMProtocolAdapter): void;
|
|
8
|
+
unregisterAdapter(provider: LLMProvider): void;
|
|
9
|
+
convertRequest<T = unknown>(from: LLMProvider, to: LLMProvider, request: unknown, metadata?: Record<string, unknown>): T;
|
|
10
|
+
convertResponse<T = unknown>(from: LLMProvider, to: LLMProvider, response: unknown, metadata?: Record<string, unknown>): T;
|
|
11
|
+
convertStreamEvent<T = unknown>(from: LLMProvider, to: LLMProvider, event: unknown, metadata?: Record<string, unknown>): T | null;
|
|
12
|
+
getRegisteredProviders(): string[];
|
|
13
|
+
createPassthroughStreamEvent(type: string, payload: unknown): CanonicalStreamEvent;
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LLMProtocolAdapter } from './adapter';
|
|
2
|
+
import type { LLMProvider } from './types';
|
|
3
|
+
export declare class LLMProtocolAdapterRegistry {
|
|
4
|
+
private readonly adapters;
|
|
5
|
+
register(adapter: LLMProtocolAdapter): void;
|
|
6
|
+
unregister(provider: LLMProvider): void;
|
|
7
|
+
get(provider: LLMProvider): LLMProtocolAdapter | undefined;
|
|
8
|
+
require(provider: LLMProvider): LLMProtocolAdapter;
|
|
9
|
+
listProviders(): string[];
|
|
10
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type LLMProvider = 'openai' | 'anthropic' | 'gemini' | (string & {});
|
|
2
|
+
export type CanonicalRole = 'system' | 'developer' | 'user' | 'assistant' | 'tool';
|
|
3
|
+
export interface CanonicalToolDefinition {
|
|
4
|
+
name: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
parameters?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface CanonicalToolCall {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
arguments: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CanonicalMessage {
|
|
14
|
+
role: CanonicalRole;
|
|
15
|
+
content: unknown;
|
|
16
|
+
toolCalls?: CanonicalToolCall[];
|
|
17
|
+
toolCallId?: string;
|
|
18
|
+
metadata?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface CanonicalRequest {
|
|
21
|
+
model?: string;
|
|
22
|
+
messages: CanonicalMessage[];
|
|
23
|
+
tools?: CanonicalToolDefinition[];
|
|
24
|
+
toolChoice?: unknown;
|
|
25
|
+
metadata?: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
export interface CanonicalResponse {
|
|
28
|
+
message?: CanonicalMessage;
|
|
29
|
+
messages?: CanonicalMessage[];
|
|
30
|
+
metadata?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
export interface CanonicalStreamEvent {
|
|
33
|
+
type: string;
|
|
34
|
+
payload: unknown;
|
|
35
|
+
}
|
|
36
|
+
export interface ConversionContext {
|
|
37
|
+
from: LLMProvider;
|
|
38
|
+
to: LLMProvider;
|
|
39
|
+
metadata?: Record<string, unknown>;
|
|
40
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './core';
|
|
2
|
+
export * from './providers';
|
|
3
|
+
export * from './runtime';
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './adapter';
|
|
6
|
+
export * from './registry';
|
|
7
|
+
export * from './service';
|
|
8
|
+
export * from './openai';
|
|
9
|
+
export * from './openai-anthropic';
|
|
10
|
+
export * from './protocol-converters';
|