@animalabs/membrane 0.5.50 → 0.5.52

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 (123) hide show
  1. package/dist/context/index.d.ts +12 -0
  2. package/dist/context/index.js +11 -0
  3. package/dist/context/index.js.map +1 -0
  4. package/dist/context/process.d.ts +43 -0
  5. package/dist/context/process.js +381 -0
  6. package/dist/context/process.js.map +1 -0
  7. package/dist/context/types.d.ts +164 -0
  8. package/dist/context/types.js +61 -0
  9. package/dist/context/types.js.map +1 -0
  10. package/dist/formatters/anthropic-xml.d.ts +63 -0
  11. package/dist/formatters/anthropic-xml.js +417 -0
  12. package/dist/formatters/anthropic-xml.js.map +1 -0
  13. package/dist/formatters/completions.d.ts +68 -0
  14. package/dist/formatters/completions.js +261 -0
  15. package/dist/formatters/completions.js.map +1 -0
  16. package/dist/formatters/index.d.ts +8 -0
  17. package/dist/formatters/index.js +7 -0
  18. package/dist/formatters/index.js.map +1 -0
  19. package/dist/formatters/native.d.ts +35 -0
  20. package/dist/formatters/native.js +336 -0
  21. package/dist/formatters/native.js.map +1 -0
  22. package/dist/formatters/types.d.ts +167 -0
  23. package/dist/formatters/types.js +7 -0
  24. package/dist/formatters/types.js.map +1 -0
  25. package/dist/index.d.ts +13 -0
  26. package/dist/index.js +20 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/membrane.d.ts +155 -0
  29. package/dist/providers/anthropic.d.ts +36 -0
  30. package/dist/providers/bedrock.d.ts +43 -0
  31. package/dist/providers/gemini.d.ts +68 -0
  32. package/dist/providers/gemini.js +538 -0
  33. package/dist/providers/gemini.js.map +1 -0
  34. package/dist/providers/index.d.ts +13 -0
  35. package/dist/providers/index.js +13 -0
  36. package/dist/providers/index.js.map +1 -0
  37. package/dist/providers/mock.d.ts +90 -0
  38. package/dist/providers/mock.d.ts.map +1 -0
  39. package/dist/providers/mock.js +210 -0
  40. package/dist/providers/mock.js.map +1 -0
  41. package/dist/providers/openai-compatible.d.ts +82 -0
  42. package/dist/providers/openai-compatible.js +480 -0
  43. package/dist/providers/openai-compatible.js.map +1 -0
  44. package/dist/providers/openai-completions.d.ts +89 -0
  45. package/dist/providers/openai-completions.js +347 -0
  46. package/dist/providers/openai-completions.js.map +1 -0
  47. package/dist/providers/openai-responses.d.ts +77 -0
  48. package/dist/providers/openai-responses.js +333 -0
  49. package/dist/providers/openai-responses.js.map +1 -0
  50. package/dist/providers/openai.d.ts +77 -0
  51. package/dist/providers/openai.js +533 -0
  52. package/dist/providers/openai.js.map +1 -0
  53. package/dist/providers/openrouter.d.ts +82 -0
  54. package/dist/providers/openrouter.js +556 -0
  55. package/dist/providers/openrouter.js.map +1 -0
  56. package/dist/providers/utils.d.ts +44 -0
  57. package/dist/providers/utils.d.ts.map +1 -0
  58. package/dist/providers/utils.js +100 -0
  59. package/dist/providers/utils.js.map +1 -0
  60. package/dist/registry/default-pricing.d.ts +3 -0
  61. package/dist/registry/default-pricing.d.ts.map +1 -0
  62. package/dist/registry/default-pricing.js +75 -0
  63. package/dist/registry/default-pricing.js.map +1 -0
  64. package/dist/transforms/chat.d.ts +52 -0
  65. package/dist/transforms/chat.js +136 -0
  66. package/dist/transforms/chat.js.map +1 -0
  67. package/dist/transforms/index.d.ts +5 -0
  68. package/dist/transforms/index.js +7 -0
  69. package/dist/transforms/index.js.map +1 -0
  70. package/dist/types/config.d.ts +110 -0
  71. package/dist/types/config.js +21 -0
  72. package/dist/types/config.js.map +1 -0
  73. package/dist/types/content.d.ts +87 -0
  74. package/dist/types/content.d.ts.map +1 -0
  75. package/dist/types/content.js +40 -0
  76. package/dist/types/content.js.map +1 -0
  77. package/dist/types/errors.d.ts +50 -0
  78. package/dist/types/errors.d.ts.map +1 -0
  79. package/dist/types/errors.js +253 -0
  80. package/dist/types/errors.js.map +1 -0
  81. package/dist/types/index.d.ts +20 -0
  82. package/dist/types/index.js +10 -0
  83. package/dist/types/index.js.map +1 -0
  84. package/dist/types/message.d.ts +52 -0
  85. package/dist/types/message.d.ts.map +1 -0
  86. package/dist/types/message.js +38 -0
  87. package/dist/types/message.js.map +1 -0
  88. package/dist/types/provider.d.ts +169 -0
  89. package/dist/types/provider.d.ts.map +1 -0
  90. package/dist/types/provider.js +5 -0
  91. package/dist/types/provider.js.map +1 -0
  92. package/dist/types/request.d.ts +116 -0
  93. package/dist/types/request.d.ts.map +1 -0
  94. package/dist/types/request.js +5 -0
  95. package/dist/types/request.js.map +1 -0
  96. package/dist/types/response.d.ts +131 -0
  97. package/dist/types/response.d.ts.map +1 -0
  98. package/dist/types/response.js +7 -0
  99. package/dist/types/response.js.map +1 -0
  100. package/dist/types/streaming.d.ts +194 -0
  101. package/dist/types/streaming.js +5 -0
  102. package/dist/types/streaming.js.map +1 -0
  103. package/dist/types/tools.d.ts +71 -0
  104. package/dist/types/tools.d.ts.map +1 -0
  105. package/dist/types/tools.js +5 -0
  106. package/dist/types/tools.js.map +1 -0
  107. package/dist/utils/cost.d.ts +10 -0
  108. package/dist/utils/cost.d.ts.map +1 -0
  109. package/dist/utils/cost.js +19 -0
  110. package/dist/utils/cost.js.map +1 -0
  111. package/dist/utils/index.d.ts +7 -0
  112. package/dist/utils/index.js +6 -0
  113. package/dist/utils/index.js.map +1 -0
  114. package/dist/utils/stream-parser.d.ts +84 -0
  115. package/dist/utils/stream-parser.js +418 -0
  116. package/dist/utils/stream-parser.js.map +1 -0
  117. package/dist/utils/tool-parser.d.ts +134 -0
  118. package/dist/utils/tool-parser.js +600 -0
  119. package/dist/utils/tool-parser.js.map +1 -0
  120. package/dist/yielding-stream.d.ts +60 -0
  121. package/dist/yielding-stream.js +206 -0
  122. package/dist/yielding-stream.js.map +1 -0
  123. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/formatters/native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Prefill Formatter Types
3
+ *
4
+ * Interfaces for pluggable prefill formatting and parsing.
5
+ */
6
+ import type { NormalizedMessage, ContentBlock, ToolDefinition, ToolCall, ToolResult, BlockEvent } from '../types/index.js';
7
+ import type { ChunkMeta, MembraneBlockType } from '../types/streaming.js';
8
+ import type { StreamEmission, ProcessChunkResult } from '../utils/stream-parser.js';
9
+ export type { BlockEvent, ChunkMeta, MembraneBlockType, StreamEmission };
10
+ /** Block type alias for formatter contexts */
11
+ export type BlockType = MembraneBlockType;
12
+ export interface FormatterConfig {
13
+ /** How to handle unsupported media (images, etc.). Default: 'error' */
14
+ unsupportedMedia?: 'error' | 'strip';
15
+ /** Warn when stripping content. Default: true */
16
+ warnOnStrip?: boolean;
17
+ }
18
+ export interface BuildOptions {
19
+ /** How to handle multiple participants */
20
+ participantMode: 'simple' | 'multiuser';
21
+ /** Name of the assistant participant */
22
+ assistantParticipant: string;
23
+ /** Name of the human participant (for simple mode) */
24
+ humanParticipant?: string;
25
+ /** Tool definitions to include */
26
+ tools?: ToolDefinition[];
27
+ /** Whether thinking is enabled */
28
+ thinking?: {
29
+ enabled: boolean;
30
+ budgetTokens?: number;
31
+ };
32
+ /** System prompt content */
33
+ systemPrompt?: string | ContentBlock[];
34
+ /** Enable prompt caching (Anthropic-specific) */
35
+ promptCaching?: boolean;
36
+ /** Cache TTL for Anthropic prompt caching - '5m' (default) or '1h' for extended */
37
+ cacheTtl?: '5m' | '1h';
38
+ /** Additional stop sequences to include */
39
+ additionalStopSequences?: string[];
40
+ /** Maximum participants to include in stop sequences */
41
+ maxParticipantsForStop?: number;
42
+ /** Context prefix for simulacrum seeding (injected as first cached assistant message) */
43
+ contextPrefix?: string;
44
+ /** Custom content for the synthetic user message when first message is assistant role.
45
+ * In prefill formatters: defaults to '<cmd>cat untitled.txt</cmd>' with a CLI simulation
46
+ * system prompt when no system prompt is configured, or '[Start]' when a system prompt is set. */
47
+ prefillUserMessage?: string;
48
+ /**
49
+ * Function to check if a message has a cache marker.
50
+ * When provided, content before the marked message gets cache_control.
51
+ * This enables per-message cache boundaries in the conversation.
52
+ */
53
+ hasCacheMarker?: (message: NormalizedMessage, index: number) => boolean;
54
+ }
55
+ export interface BuildResult {
56
+ /** Messages in provider format */
57
+ messages: ProviderMessage[];
58
+ /** System content (if separate from messages) */
59
+ systemContent?: unknown;
60
+ /** Assistant prefill content (appended to last assistant message) */
61
+ assistantPrefill?: string;
62
+ /** Stop sequences for this format */
63
+ stopSequences: string[];
64
+ /** Tool definitions for API (if using native tools) */
65
+ nativeTools?: unknown[];
66
+ /** Number of cache control markers applied (for Anthropic prompt caching) */
67
+ cacheMarkersApplied?: number;
68
+ }
69
+ export interface ProviderMessage {
70
+ role: 'user' | 'assistant';
71
+ content: unknown;
72
+ }
73
+ /** Parse result from processing a chunk */
74
+ export type ParseResult = ProcessChunkResult;
75
+ export interface StreamParser {
76
+ /**
77
+ * Process a chunk of streamed content.
78
+ * Returns parsed events (text, blocks, etc.)
79
+ */
80
+ processChunk(chunk: string): ParseResult;
81
+ /**
82
+ * Flush any buffered content at end of stream.
83
+ */
84
+ flush(): ParseResult;
85
+ /**
86
+ * Get full accumulated content.
87
+ */
88
+ getAccumulated(): string;
89
+ /**
90
+ * Reset parser state completely.
91
+ */
92
+ reset(): void;
93
+ /**
94
+ * Push content without emitting (for prefill initialization).
95
+ */
96
+ push(content: string): void;
97
+ /**
98
+ * Get current block type being parsed.
99
+ */
100
+ getCurrentBlockType(): BlockType;
101
+ /**
102
+ * Get current block index.
103
+ */
104
+ getBlockIndex(): number;
105
+ /**
106
+ * Increment block index (for external block tracking).
107
+ */
108
+ incrementBlockIndex(): void;
109
+ /**
110
+ * Check if parser is inside a block (e.g., unclosed XML tag).
111
+ * Used for false-positive stop sequence detection.
112
+ */
113
+ isInsideBlock(): boolean;
114
+ /**
115
+ * Get current nesting depths for each block type.
116
+ * Used to compare against prefill baseline for false-positive detection.
117
+ */
118
+ getDepths(): {
119
+ functionCalls: number;
120
+ functionResults: number;
121
+ thinking: number;
122
+ };
123
+ /**
124
+ * Reset streaming state for a new API iteration.
125
+ * Keeps accumulated text and block depth state, but resets
126
+ * per-stream tracking so processChunk works correctly.
127
+ */
128
+ resetForNewIteration(): void;
129
+ }
130
+ export interface PrefillFormatter {
131
+ /** Formatter name for identification */
132
+ readonly name: string;
133
+ /** Whether this formatter uses prefill (vs native pass-through) */
134
+ readonly usesPrefill: boolean;
135
+ /**
136
+ * Transform normalized messages into provider-ready format.
137
+ */
138
+ buildMessages(messages: NormalizedMessage[], options: BuildOptions): BuildResult;
139
+ /**
140
+ * Format tool results for continuation request.
141
+ * Called when injecting tool results back into the conversation.
142
+ */
143
+ formatToolResults(results: ToolResult[], options?: {
144
+ thinking?: boolean;
145
+ }): string;
146
+ /**
147
+ * Create a stream parser for this format.
148
+ * Parser tracks state across chunks (e.g., XML depth, token boundaries).
149
+ */
150
+ createStreamParser(): StreamParser;
151
+ /**
152
+ * Parse tool calls from accumulated content.
153
+ * Returns empty array if no tool calls detected.
154
+ */
155
+ parseToolCalls(content: string): ToolCall[];
156
+ /**
157
+ * Check if content indicates tool use.
158
+ * Used to determine stop reason.
159
+ */
160
+ hasToolUse(content: string): boolean;
161
+ /**
162
+ * Parse content blocks from accumulated response.
163
+ * Extracts text, thinking, tool_use blocks, etc.
164
+ */
165
+ parseContentBlocks(content: string): ContentBlock[];
166
+ }
167
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Prefill Formatter Types
3
+ *
4
+ * Interfaces for pluggable prefill formatting and parsing.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/formatters/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Membrane - LLM middleware
3
+ *
4
+ * A selective boundary that transforms what passes through.
5
+ */
6
+ export { Membrane } from './membrane.js';
7
+ export * from './types/index.js';
8
+ export * from './transforms/index.js';
9
+ export * from './providers/index.js';
10
+ export * from './utils/index.js';
11
+ export * from './formatters/index.js';
12
+ export * from './context/index.js';
13
+ //# sourceMappingURL=index.d.ts.map
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Membrane - LLM middleware
3
+ *
4
+ * A selective boundary that transforms what passes through.
5
+ */
6
+ // Core class
7
+ export { Membrane } from './membrane.js';
8
+ // Types
9
+ export * from './types/index.js';
10
+ // Transforms
11
+ export * from './transforms/index.js';
12
+ // Providers
13
+ export * from './providers/index.js';
14
+ // Utilities
15
+ export * from './utils/index.js';
16
+ // Formatters
17
+ export * from './formatters/index.js';
18
+ // Context management
19
+ export * from './context/index.js';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,aAAa;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,aAAa;AACb,cAAc,uBAAuB,CAAC;AAEtC,YAAY;AACZ,cAAc,sBAAsB,CAAC;AAErC,YAAY;AACZ,cAAc,kBAAkB,CAAC;AAEjC,aAAa;AACb,cAAc,uBAAuB,CAAC;AAEtC,qBAAqB;AACrB,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Membrane - LLM middleware core class
3
+ *
4
+ * A selective boundary that transforms what passes through.
5
+ */
6
+ import type { NormalizedRequest, NormalizedResponse, AbortedResponse, ProviderAdapter, MembraneConfig, StreamOptions, CompleteOptions } from './types/index.js';
7
+ import type { YieldingStream, YieldingStreamOptions } from './types/yielding-stream.js';
8
+ export declare class Membrane {
9
+ private adapter;
10
+ private registry?;
11
+ private retryConfig;
12
+ private config;
13
+ private formatter;
14
+ constructor(adapter: ProviderAdapter, config?: MembraneConfig);
15
+ /**
16
+ * Complete a request (non-streaming)
17
+ */
18
+ complete(request: NormalizedRequest, options?: CompleteOptions): Promise<NormalizedResponse>;
19
+ /**
20
+ * Stream a request with inline tool execution.
21
+ *
22
+ * Returns either a complete NormalizedResponse or an AbortedResponse
23
+ * if the request was cancelled via the abort signal. Use `isAbortedResponse()`
24
+ * to check which type was returned.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const result = await membrane.stream(request, { signal: controller.signal });
29
+ * if (isAbortedResponse(result)) {
30
+ * console.log('Aborted:', result.rawAssistantText);
31
+ * // Use rawAssistantText as prefill to continue, or toolCalls/toolResults to rebuild state
32
+ * } else {
33
+ * console.log('Complete:', result.content);
34
+ * }
35
+ * ```
36
+ */
37
+ stream(request: NormalizedRequest, options?: StreamOptions): Promise<NormalizedResponse | AbortedResponse>;
38
+ /**
39
+ * Determine the effective tool mode
40
+ */
41
+ private resolveToolMode;
42
+ /**
43
+ * Stream with XML-based tool execution (prefill mode)
44
+ *
45
+ * Uses IncrementalXmlParser to track XML nesting depth for:
46
+ * - False-positive stop sequence detection (e.g., "\nUser:" inside tool results)
47
+ * - Structured block events for UI
48
+ */
49
+ private streamWithXmlTools;
50
+ /**
51
+ * Stream with native API tool execution
52
+ */
53
+ private streamWithNativeTools;
54
+ /**
55
+ * Build a provider request with native tool support
56
+ */
57
+ private buildNativeToolRequest;
58
+ /**
59
+ * Parse provider response content into normalized blocks
60
+ */
61
+ private parseProviderContent;
62
+ /**
63
+ * Apply the configured `beforeRequest` hook to a provider-format request.
64
+ * Returns the (possibly modified) request, or the original if no hook is
65
+ * configured. This is the single point that all request-build sites should
66
+ * route through before invoking the adapter, so observers / mutators
67
+ * (logging, redaction, model rewriting) see every API call regardless of
68
+ * whether it came from `complete()`, `stream()`, or `streamYielding()`.
69
+ */
70
+ private applyBeforeRequestHook;
71
+ /**
72
+ * Extract base provider params from config, with thinking temperature enforcement.
73
+ * Used by transformRequest, buildContinuationRequest, and buildContinuationRequestWithImages.
74
+ */
75
+ private getBaseProviderParams;
76
+ /**
77
+ * Transform a normalized request into provider format using the formatter
78
+ */
79
+ private transformRequest;
80
+ private streamOnce;
81
+ private buildContinuationRequest;
82
+ /**
83
+ * Build continuation request with split-turn image injection.
84
+ *
85
+ * When tool results contain images in prefill mode, we must:
86
+ * 1. End assistant turn mid-XML (after text content, inside <function_results>)
87
+ * 2. Insert user turn with only image content
88
+ * 3. Continue with assistant prefill containing closing XML tags
89
+ *
90
+ * This is required because Anthropic API only allows images in user turns.
91
+ *
92
+ * Structure:
93
+ * ```
94
+ * Assistant: "...response..." + <function_results><result>text content
95
+ * User: [image blocks]
96
+ * Assistant (prefill): </result></function_results>
97
+ * ```
98
+ */
99
+ private buildContinuationRequestWithImages;
100
+ private transformResponse;
101
+ private buildFinalResponse;
102
+ private mapStopReason;
103
+ private calculateCacheHitRatio;
104
+ private resolvePricing;
105
+ /** Resolve pricing + calculate cost in one call (for one-shot use outside loops). */
106
+ private estimateCost;
107
+ private calculateRetryDelay;
108
+ private attachRawRequest;
109
+ private sleep;
110
+ /**
111
+ * Check if an error is an abort error
112
+ */
113
+ private isAbortError;
114
+ /**
115
+ * Build an AbortedResponse from current execution state
116
+ */
117
+ private buildAbortedResponse;
118
+ /**
119
+ * Stream inference with yielding control for tool execution.
120
+ *
121
+ * Unlike `stream()` which uses callbacks for tool execution, this method
122
+ * returns an async iterator that yields control back to the caller when
123
+ * tool calls are detected. The caller provides results via `provideToolResults()`.
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * const stream = membrane.streamYielding(request, options);
128
+ *
129
+ * for await (const event of stream) {
130
+ * switch (event.type) {
131
+ * case 'tokens':
132
+ * process.stdout.write(event.content);
133
+ * break;
134
+ * case 'tool-calls':
135
+ * const results = await executeTools(event.calls);
136
+ * stream.provideToolResults(results);
137
+ * break;
138
+ * case 'complete':
139
+ * console.log('Done:', event.response);
140
+ * break;
141
+ * }
142
+ * }
143
+ * ```
144
+ */
145
+ streamYielding(request: NormalizedRequest, options?: YieldingStreamOptions): YieldingStream;
146
+ /**
147
+ * Run XML-based tool execution with yielding stream.
148
+ */
149
+ private runXmlToolsYielding;
150
+ /**
151
+ * Run native tool execution with yielding stream.
152
+ */
153
+ private runNativeToolsYielding;
154
+ }
155
+ //# sourceMappingURL=membrane.d.ts.map
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Anthropic provider adapter
3
+ */
4
+ import Anthropic from '@anthropic-ai/sdk';
5
+ import type { ProviderAdapter, ProviderRequest, ProviderRequestOptions, ProviderResponse, StreamCallbacks, ContentBlock } from '../types/index.js';
6
+ export interface AnthropicAdapterConfig {
7
+ /** API key (defaults to ANTHROPIC_API_KEY env var) */
8
+ apiKey?: string;
9
+ /** Base URL override */
10
+ baseURL?: string;
11
+ /** Default max tokens */
12
+ defaultMaxTokens?: number;
13
+ }
14
+ export declare class AnthropicAdapter implements ProviderAdapter {
15
+ readonly name = "anthropic";
16
+ private client;
17
+ private defaultMaxTokens;
18
+ constructor(config?: AnthropicAdapterConfig);
19
+ supportsModel(modelId: string): boolean;
20
+ complete(request: ProviderRequest, options?: ProviderRequestOptions): Promise<ProviderResponse>;
21
+ stream(request: ProviderRequest, callbacks: StreamCallbacks, options?: ProviderRequestOptions): Promise<ProviderResponse>;
22
+ private buildRequest;
23
+ private parseResponse;
24
+ private handleError;
25
+ private parseRetryAfter;
26
+ }
27
+ /**
28
+ * Convert normalized content blocks to Anthropic format
29
+ * Preserves cache_control for prompt caching
30
+ */
31
+ export declare function toAnthropicContent(blocks: ContentBlock[]): Anthropic.ContentBlockParam[];
32
+ /**
33
+ * Convert Anthropic response content to normalized format
34
+ */
35
+ export declare function fromAnthropicContent(blocks: Anthropic.ContentBlock[]): ContentBlock[];
36
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1,43 @@
1
+ /**
2
+ * AWS Bedrock provider adapter for Anthropic Claude models
3
+ *
4
+ * Uses the Anthropic Messages API format through AWS Bedrock.
5
+ */
6
+ import type { ProviderAdapter, ProviderRequest, ProviderRequestOptions, ProviderResponse, StreamCallbacks } from '../types/index.js';
7
+ export interface BedrockAdapterConfig {
8
+ /** AWS access key ID */
9
+ accessKeyId?: string;
10
+ /** AWS secret access key */
11
+ secretAccessKey?: string;
12
+ /** AWS region (defaults to us-west-2) */
13
+ region?: string;
14
+ /** AWS session token (for temporary credentials) */
15
+ sessionToken?: string;
16
+ /** Default max tokens */
17
+ defaultMaxTokens?: number;
18
+ /** Anthropic API version header (defaults to 2023-06-01) */
19
+ anthropicVersion?: string;
20
+ }
21
+ export declare class BedrockAdapter implements ProviderAdapter {
22
+ readonly name = "bedrock";
23
+ private accessKeyId;
24
+ private secretAccessKey;
25
+ private sessionToken?;
26
+ private region;
27
+ private defaultMaxTokens;
28
+ private anthropicVersion;
29
+ constructor(config?: BedrockAdapterConfig);
30
+ supportsModel(modelId: string): boolean;
31
+ /**
32
+ * Convert a standard Claude model ID to Bedrock format if needed
33
+ */
34
+ private toBedrockModelId;
35
+ complete(request: ProviderRequest, options?: ProviderRequestOptions): Promise<ProviderResponse>;
36
+ stream(request: ProviderRequest, callbacks: StreamCallbacks, options?: ProviderRequestOptions): Promise<ProviderResponse>;
37
+ private buildRequest;
38
+ private invokeModel;
39
+ private invokeModelWithStream;
40
+ private parseResponse;
41
+ private handleError;
42
+ }
43
+ //# sourceMappingURL=bedrock.d.ts.map
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Google Gemini provider adapter
3
+ *
4
+ * Direct adapter for Google's Generative AI REST API.
5
+ * Supports Gemini 2.x, 2.5, 3.x models with:
6
+ * - Text and image input
7
+ * - Tool/function calling
8
+ * - Streaming via SSE
9
+ *
10
+ * Auth: API key passed as query parameter (?key=...)
11
+ * Endpoint: generativelanguage.googleapis.com/v1beta
12
+ */
13
+ import type { ProviderAdapter, ProviderRequest, ProviderRequestOptions, ProviderResponse, StreamCallbacks, ContentBlock } from '../types/index.js';
14
+ interface GeminiPart {
15
+ text?: string;
16
+ inlineData?: {
17
+ mimeType: string;
18
+ data: string;
19
+ };
20
+ functionCall?: {
21
+ name: string;
22
+ args: Record<string, unknown>;
23
+ };
24
+ functionResponse?: {
25
+ name: string;
26
+ response: Record<string, unknown>;
27
+ };
28
+ }
29
+ export interface GeminiAdapterConfig {
30
+ /** Google AI API key */
31
+ apiKey?: string;
32
+ /** Base URL (default: https://generativelanguage.googleapis.com/v1beta) */
33
+ baseURL?: string;
34
+ /** Default max output tokens */
35
+ defaultMaxTokens?: number;
36
+ }
37
+ export declare class GeminiAdapter implements ProviderAdapter {
38
+ readonly name = "gemini";
39
+ private apiKey;
40
+ private baseURL;
41
+ private defaultMaxTokens;
42
+ constructor(config?: GeminiAdapterConfig);
43
+ supportsModel(modelId: string): boolean;
44
+ complete(request: ProviderRequest, options?: ProviderRequestOptions): Promise<ProviderResponse>;
45
+ stream(request: ProviderRequest, callbacks: StreamCallbacks, options?: ProviderRequestOptions): Promise<ProviderResponse>;
46
+ private buildRequest;
47
+ private convertMessages;
48
+ /**
49
+ * Gemini requires strictly alternating user/model messages.
50
+ * Merge consecutive messages with the same role into one.
51
+ */
52
+ private mergeConsecutiveRoles;
53
+ private convertTools;
54
+ private parseResponse;
55
+ private buildContentBlocks;
56
+ private mapFinishReason;
57
+ private handleError;
58
+ }
59
+ /**
60
+ * Convert normalized content blocks to Gemini parts
61
+ */
62
+ export declare function toGeminiParts(blocks: ContentBlock[]): GeminiPart[];
63
+ /**
64
+ * Convert Gemini parts to normalized content blocks
65
+ */
66
+ export declare function fromGeminiParts(parts: GeminiPart[]): ContentBlock[];
67
+ export {};
68
+ //# sourceMappingURL=gemini.d.ts.map