@yeshwanthyk/ai 0.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.
- package/README.md +1142 -0
- package/dist/agent/agent-loop.d.ts +16 -0
- package/dist/agent/agent-loop.d.ts.map +1 -0
- package/dist/agent/agent-loop.js +307 -0
- package/dist/agent/agent-loop.js.map +1 -0
- package/dist/agent/index.d.ts +4 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +3 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/tools/calculate.d.ts +15 -0
- package/dist/agent/tools/calculate.d.ts.map +1 -0
- package/dist/agent/tools/calculate.js +23 -0
- package/dist/agent/tools/calculate.js.map +1 -0
- package/dist/agent/tools/get-current-time.d.ts +15 -0
- package/dist/agent/tools/get-current-time.d.ts.map +1 -0
- package/dist/agent/tools/get-current-time.js +38 -0
- package/dist/agent/tools/get-current-time.js.map +1 -0
- package/dist/agent/tools/index.d.ts +3 -0
- package/dist/agent/tools/index.d.ts.map +1 -0
- package/dist/agent/tools/index.js +3 -0
- package/dist/agent/tools/index.js.map +1 -0
- package/dist/agent/types.d.ts +69 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +2 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/models.d.ts +11 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.generated.d.ts +7406 -0
- package/dist/models.generated.d.ts.map +1 -0
- package/dist/models.generated.js +7268 -0
- package/dist/models.generated.js.map +1 -0
- package/dist/models.js +35 -0
- package/dist/models.js.map +1 -0
- package/dist/providers/anthropic.d.ts +12 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +538 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/google.d.ts +12 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +427 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/openai-completions.d.ts +12 -0
- package/dist/providers/openai-completions.d.ts.map +1 -0
- package/dist/providers/openai-completions.js +540 -0
- package/dist/providers/openai-completions.js.map +1 -0
- package/dist/providers/openai-responses.d.ts +14 -0
- package/dist/providers/openai-responses.d.ts.map +1 -0
- package/dist/providers/openai-responses.js +553 -0
- package/dist/providers/openai-responses.js.map +1 -0
- package/dist/providers/transform-messages.d.ts +3 -0
- package/dist/providers/transform-messages.d.ts.map +1 -0
- package/dist/providers/transform-messages.js +111 -0
- package/dist/providers/transform-messages.js.map +1 -0
- package/dist/stream.d.ts +11 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +204 -0
- package/dist/stream.js.map +1 -0
- package/dist/types.d.ts +203 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/event-stream.d.ts +19 -0
- package/dist/utils/event-stream.d.ts.map +1 -0
- package/dist/utils/event-stream.js +77 -0
- package/dist/utils/event-stream.js.map +1 -0
- package/dist/utils/json-parse.d.ts +9 -0
- package/dist/utils/json-parse.d.ts.map +1 -0
- package/dist/utils/json-parse.js +29 -0
- package/dist/utils/json-parse.js.map +1 -0
- package/dist/utils/oauth/anthropic.d.ts +20 -0
- package/dist/utils/oauth/anthropic.d.ts.map +1 -0
- package/dist/utils/oauth/anthropic.js +103 -0
- package/dist/utils/oauth/anthropic.js.map +1 -0
- package/dist/utils/overflow.d.ts +51 -0
- package/dist/utils/overflow.d.ts.map +1 -0
- package/dist/utils/overflow.js +106 -0
- package/dist/utils/overflow.js.map +1 -0
- package/dist/utils/sanitize-unicode.d.ts +22 -0
- package/dist/utils/sanitize-unicode.d.ts.map +1 -0
- package/dist/utils/sanitize-unicode.js +26 -0
- package/dist/utils/sanitize-unicode.js.map +1 -0
- package/dist/utils/typebox-helpers.d.ts +17 -0
- package/dist/utils/typebox-helpers.d.ts.map +1 -0
- package/dist/utils/typebox-helpers.js +21 -0
- package/dist/utils/typebox-helpers.js.map +1 -0
- package/dist/utils/validation.d.ts +18 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +69 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize tool call ID for GitHub Copilot cross-API compatibility.
|
|
3
|
+
* OpenAI Responses API generates IDs that are 450+ chars with special characters like `|`.
|
|
4
|
+
* Other APIs (Claude, etc.) require max 40 chars and only alphanumeric + underscore + hyphen.
|
|
5
|
+
*/
|
|
6
|
+
function normalizeCopilotToolCallId(id) {
|
|
7
|
+
return id.replace(/[^a-zA-Z0-9_-]/g, "").slice(0, 40);
|
|
8
|
+
}
|
|
9
|
+
export function transformMessages(messages, model) {
|
|
10
|
+
// Build a map of original tool call IDs to normalized IDs for github-copilot cross-API switches
|
|
11
|
+
const toolCallIdMap = new Map();
|
|
12
|
+
return messages
|
|
13
|
+
.map((msg) => {
|
|
14
|
+
// User messages pass through unchanged
|
|
15
|
+
if (msg.role === "user") {
|
|
16
|
+
return msg;
|
|
17
|
+
}
|
|
18
|
+
// Handle toolResult messages - normalize toolCallId if we have a mapping
|
|
19
|
+
if (msg.role === "toolResult") {
|
|
20
|
+
const normalizedId = toolCallIdMap.get(msg.toolCallId);
|
|
21
|
+
if (normalizedId && normalizedId !== msg.toolCallId) {
|
|
22
|
+
return { ...msg, toolCallId: normalizedId };
|
|
23
|
+
}
|
|
24
|
+
return msg;
|
|
25
|
+
}
|
|
26
|
+
// Assistant messages need transformation check
|
|
27
|
+
if (msg.role === "assistant") {
|
|
28
|
+
const assistantMsg = msg;
|
|
29
|
+
// If message is from the same provider and API, keep as is
|
|
30
|
+
if (assistantMsg.provider === model.provider && assistantMsg.api === model.api) {
|
|
31
|
+
return msg;
|
|
32
|
+
}
|
|
33
|
+
// Check if we need to normalize tool call IDs (github-copilot cross-API)
|
|
34
|
+
const needsToolCallIdNormalization = assistantMsg.provider === "github-copilot" &&
|
|
35
|
+
model.provider === "github-copilot" &&
|
|
36
|
+
assistantMsg.api !== model.api;
|
|
37
|
+
// Transform message from different provider/model
|
|
38
|
+
const transformedContent = assistantMsg.content.map((block) => {
|
|
39
|
+
if (block.type === "thinking") {
|
|
40
|
+
// Convert thinking block to text block with <thinking> tags
|
|
41
|
+
return {
|
|
42
|
+
type: "text",
|
|
43
|
+
text: `<thinking>\n${block.thinking}\n</thinking>`,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// Normalize tool call IDs for github-copilot cross-API switches
|
|
47
|
+
if (block.type === "toolCall" && needsToolCallIdNormalization) {
|
|
48
|
+
const toolCall = block;
|
|
49
|
+
const normalizedId = normalizeCopilotToolCallId(toolCall.id);
|
|
50
|
+
if (normalizedId !== toolCall.id) {
|
|
51
|
+
toolCallIdMap.set(toolCall.id, normalizedId);
|
|
52
|
+
return { ...toolCall, id: normalizedId };
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// All other blocks pass through unchanged
|
|
56
|
+
return block;
|
|
57
|
+
});
|
|
58
|
+
// Return transformed assistant message
|
|
59
|
+
return {
|
|
60
|
+
...assistantMsg,
|
|
61
|
+
content: transformedContent,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return msg;
|
|
65
|
+
})
|
|
66
|
+
.map((msg, index, allMessages) => {
|
|
67
|
+
// Second pass: filter out tool calls without corresponding tool results
|
|
68
|
+
if (msg.role !== "assistant") {
|
|
69
|
+
return msg;
|
|
70
|
+
}
|
|
71
|
+
const assistantMsg = msg;
|
|
72
|
+
const isLastMessage = index === allMessages.length - 1;
|
|
73
|
+
// If this is the last message, keep all tool calls (ongoing turn)
|
|
74
|
+
if (isLastMessage) {
|
|
75
|
+
return msg;
|
|
76
|
+
}
|
|
77
|
+
// Extract tool call IDs from this message
|
|
78
|
+
const toolCallIds = assistantMsg.content
|
|
79
|
+
.filter((block) => block.type === "toolCall")
|
|
80
|
+
.map((block) => (block.type === "toolCall" ? block.id : ""));
|
|
81
|
+
// If no tool calls, return as is
|
|
82
|
+
if (toolCallIds.length === 0) {
|
|
83
|
+
return msg;
|
|
84
|
+
}
|
|
85
|
+
// Scan forward through subsequent messages to find matching tool results
|
|
86
|
+
const matchedToolCallIds = new Set();
|
|
87
|
+
for (let i = index + 1; i < allMessages.length; i++) {
|
|
88
|
+
const nextMsg = allMessages[i];
|
|
89
|
+
// Stop scanning when we hit another assistant message
|
|
90
|
+
if (nextMsg.role === "assistant") {
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
// Check tool result messages for matching IDs
|
|
94
|
+
if (nextMsg.role === "toolResult") {
|
|
95
|
+
matchedToolCallIds.add(nextMsg.toolCallId);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Filter out tool calls that don't have corresponding results
|
|
99
|
+
const filteredContent = assistantMsg.content.filter((block) => {
|
|
100
|
+
if (block.type === "toolCall") {
|
|
101
|
+
return matchedToolCallIds.has(block.id);
|
|
102
|
+
}
|
|
103
|
+
return true; // Keep all non-toolCall blocks
|
|
104
|
+
});
|
|
105
|
+
return {
|
|
106
|
+
...assistantMsg,
|
|
107
|
+
content: filteredContent,
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=transform-messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-messages.js","sourceRoot":"","sources":["../../src/providers/transform-messages.ts"],"names":[],"mappings":"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"}
|
package/dist/stream.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AssistantMessageEventStream } from "./utils/event-stream.js";
|
|
2
|
+
import type { Api, AssistantMessage, Context, KnownProvider, Model, OptionsForApi, SimpleStreamOptions } from "./types.js";
|
|
3
|
+
export declare function setApiKey(provider: KnownProvider, key: string): void;
|
|
4
|
+
export declare function setApiKey(provider: string, key: string): void;
|
|
5
|
+
export declare function getApiKey(provider: KnownProvider): string | undefined;
|
|
6
|
+
export declare function getApiKey(provider: string): string | undefined;
|
|
7
|
+
export declare function stream<TApi extends Api>(model: Model<TApi>, context: Context, options?: OptionsForApi<TApi>): AssistantMessageEventStream;
|
|
8
|
+
export declare function complete<TApi extends Api>(model: Model<TApi>, context: Context, options?: OptionsForApi<TApi>): Promise<AssistantMessage>;
|
|
9
|
+
export declare function streamSimple<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;
|
|
10
|
+
export declare function completeSimple<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): Promise<AssistantMessage>;
|
|
11
|
+
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EACX,GAAG,EACH,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,KAAK,EACL,aAAa,EAGb,mBAAmB,EACnB,MAAM,YAAY,CAAC;AAIpB,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;AACtE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;AAK/D,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AACvE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAiChE,wBAAgB,MAAM,CAAC,IAAI,SAAS,GAAG,EACtC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAC3B,2BAA2B,CA2C7B;AAED,wBAAsB,QAAQ,CAAC,IAAI,SAAS,GAAG,EAC9C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED,wBAAgB,YAAY,CAAC,IAAI,SAAS,GAAG,EAC5C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,2BAA2B,CAQ7B;AAED,wBAAsB,cAAc,CAAC,IAAI,SAAS,GAAG,EACpD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAG3B"}
|
package/dist/stream.js
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { ThinkingLevel } from "@google/genai";
|
|
2
|
+
import { streamAnthropic, } from "./providers/anthropic.js";
|
|
3
|
+
import { streamGoogle } from "./providers/google.js";
|
|
4
|
+
import { streamOpenAICompletions, } from "./providers/openai-completions.js";
|
|
5
|
+
import { streamOpenAIResponses, } from "./providers/openai-responses.js";
|
|
6
|
+
const apiKeys = new Map();
|
|
7
|
+
export function setApiKey(provider, key) {
|
|
8
|
+
apiKeys.set(provider, key);
|
|
9
|
+
}
|
|
10
|
+
export function getApiKey(provider) {
|
|
11
|
+
// Check explicit keys first
|
|
12
|
+
const key = apiKeys.get(provider);
|
|
13
|
+
if (key)
|
|
14
|
+
return key;
|
|
15
|
+
// Fall back to environment variables
|
|
16
|
+
if (provider === "github-copilot") {
|
|
17
|
+
return (process.env.COPILOT_GITHUB_TOKEN ||
|
|
18
|
+
process.env.GH_TOKEN ||
|
|
19
|
+
process.env.GITHUB_TOKEN);
|
|
20
|
+
}
|
|
21
|
+
const envMap = {
|
|
22
|
+
openai: "OPENAI_API_KEY",
|
|
23
|
+
anthropic: "ANTHROPIC_API_KEY",
|
|
24
|
+
google: "GEMINI_API_KEY",
|
|
25
|
+
groq: "GROQ_API_KEY",
|
|
26
|
+
cerebras: "CEREBRAS_API_KEY",
|
|
27
|
+
xai: "XAI_API_KEY",
|
|
28
|
+
openrouter: "OPENROUTER_API_KEY",
|
|
29
|
+
zai: "ZAI_API_KEY",
|
|
30
|
+
mistral: "MISTRAL_API_KEY",
|
|
31
|
+
minimax: "MINIMAX_API_KEY",
|
|
32
|
+
opencode: "ZEN_API_KEY",
|
|
33
|
+
};
|
|
34
|
+
const envVar = envMap[provider];
|
|
35
|
+
return envVar ? process.env[envVar] : undefined;
|
|
36
|
+
}
|
|
37
|
+
export function stream(model, context, options) {
|
|
38
|
+
const apiKey = options?.apiKey || getApiKey(model.provider);
|
|
39
|
+
if (!apiKey) {
|
|
40
|
+
throw new Error(`No API key for provider: ${model.provider}`);
|
|
41
|
+
}
|
|
42
|
+
const providerOptions = { ...options, apiKey };
|
|
43
|
+
const api = model.api;
|
|
44
|
+
switch (api) {
|
|
45
|
+
case "anthropic-messages":
|
|
46
|
+
return streamAnthropic(model, context, providerOptions);
|
|
47
|
+
case "openai-completions":
|
|
48
|
+
return streamOpenAICompletions(model, context, providerOptions);
|
|
49
|
+
case "openai-responses":
|
|
50
|
+
return streamOpenAIResponses(model, context, providerOptions);
|
|
51
|
+
case "google-generative-ai":
|
|
52
|
+
return streamGoogle(model, context, providerOptions);
|
|
53
|
+
default: {
|
|
54
|
+
// This should never be reached if all Api cases are handled
|
|
55
|
+
const _exhaustive = api;
|
|
56
|
+
throw new Error(`Unhandled API: ${_exhaustive}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export async function complete(model, context, options) {
|
|
61
|
+
const s = stream(model, context, options);
|
|
62
|
+
return s.result();
|
|
63
|
+
}
|
|
64
|
+
export function streamSimple(model, context, options) {
|
|
65
|
+
const apiKey = options?.apiKey || getApiKey(model.provider);
|
|
66
|
+
if (!apiKey) {
|
|
67
|
+
throw new Error(`No API key for provider: ${model.provider}`);
|
|
68
|
+
}
|
|
69
|
+
const providerOptions = mapOptionsForApi(model, options, apiKey);
|
|
70
|
+
return stream(model, context, providerOptions);
|
|
71
|
+
}
|
|
72
|
+
export async function completeSimple(model, context, options) {
|
|
73
|
+
const s = streamSimple(model, context, options);
|
|
74
|
+
return s.result();
|
|
75
|
+
}
|
|
76
|
+
function mapOptionsForApi(model, options, apiKey) {
|
|
77
|
+
const resolvedApiKey = apiKey ?? options?.apiKey;
|
|
78
|
+
if (!resolvedApiKey) {
|
|
79
|
+
throw new Error(`No API key for provider: ${model.provider}`);
|
|
80
|
+
}
|
|
81
|
+
const baseMaxTokens = options?.maxTokens ?? Math.min(model.maxTokens, 32000);
|
|
82
|
+
const base = {
|
|
83
|
+
maxTokens: baseMaxTokens,
|
|
84
|
+
apiKey: resolvedApiKey,
|
|
85
|
+
};
|
|
86
|
+
if (options?.temperature !== undefined) {
|
|
87
|
+
base.temperature = options.temperature;
|
|
88
|
+
}
|
|
89
|
+
if (options?.signal) {
|
|
90
|
+
base.signal = options.signal;
|
|
91
|
+
}
|
|
92
|
+
// Helper to clamp xhigh to high for providers that don't support it
|
|
93
|
+
const clampReasoning = (effort) => effort === "xhigh" ? "high" : effort;
|
|
94
|
+
switch (model.api) {
|
|
95
|
+
case "anthropic-messages": {
|
|
96
|
+
// Explicitly disable thinking when reasoning is not specified
|
|
97
|
+
if (!options?.reasoning) {
|
|
98
|
+
return { ...base, thinkingEnabled: false };
|
|
99
|
+
}
|
|
100
|
+
const anthropicBudgets = {
|
|
101
|
+
minimal: 1024,
|
|
102
|
+
low: 2048,
|
|
103
|
+
medium: 8192,
|
|
104
|
+
high: 16384,
|
|
105
|
+
};
|
|
106
|
+
return {
|
|
107
|
+
...base,
|
|
108
|
+
thinkingEnabled: true,
|
|
109
|
+
thinkingBudgetTokens: anthropicBudgets[clampReasoning(options.reasoning)],
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
case "openai-completions": {
|
|
113
|
+
const reasoningEffort = options?.reasoning;
|
|
114
|
+
return {
|
|
115
|
+
...base,
|
|
116
|
+
...(reasoningEffort !== undefined ? { reasoningEffort } : {}),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
case "openai-responses": {
|
|
120
|
+
const reasoningEffort = options?.reasoning;
|
|
121
|
+
return {
|
|
122
|
+
...base,
|
|
123
|
+
...(reasoningEffort !== undefined ? { reasoningEffort } : {}),
|
|
124
|
+
...(options?.fetch ? { fetch: options.fetch } : {}),
|
|
125
|
+
...(options?.instructions !== undefined ? { instructions: options.instructions } : {}),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
case "google-generative-ai": {
|
|
129
|
+
// Explicitly disable thinking when reasoning is not specified
|
|
130
|
+
// This is needed because Gemini has "dynamic thinking" enabled by default
|
|
131
|
+
if (!options?.reasoning) {
|
|
132
|
+
return {
|
|
133
|
+
...base,
|
|
134
|
+
thinking: { enabled: false },
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const googleModel = model;
|
|
138
|
+
const effort = clampReasoning(options.reasoning);
|
|
139
|
+
// Gemini 3 Pro models use thinkingLevel exclusively instead of thinkingBudget.
|
|
140
|
+
// https://ai.google.dev/gemini-api/docs/thinking#set-budget
|
|
141
|
+
if (isGemini3ProModel(googleModel)) {
|
|
142
|
+
return {
|
|
143
|
+
...base,
|
|
144
|
+
thinking: {
|
|
145
|
+
enabled: true,
|
|
146
|
+
level: getGoogleThinkingLevel(effort),
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
...base,
|
|
152
|
+
thinking: {
|
|
153
|
+
enabled: true,
|
|
154
|
+
budgetTokens: getGoogleBudget(googleModel, effort),
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
default: {
|
|
159
|
+
// Exhaustiveness check
|
|
160
|
+
const _exhaustive = model.api;
|
|
161
|
+
throw new Error(`Unhandled API in mapOptionsForApi: ${_exhaustive}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function isGemini3ProModel(model) {
|
|
166
|
+
// Covers gemini-3-pro, gemini-3-pro-preview, and possible other prefixed ids in the future
|
|
167
|
+
return model.id.includes("3-pro");
|
|
168
|
+
}
|
|
169
|
+
function getGoogleThinkingLevel(effort) {
|
|
170
|
+
// Gemini 3 Pro only supports LOW/HIGH (for now)
|
|
171
|
+
switch (effort) {
|
|
172
|
+
case "minimal":
|
|
173
|
+
case "low":
|
|
174
|
+
return ThinkingLevel.LOW;
|
|
175
|
+
case "medium":
|
|
176
|
+
case "high":
|
|
177
|
+
return ThinkingLevel.HIGH;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function getGoogleBudget(model, effort) {
|
|
181
|
+
// See https://ai.google.dev/gemini-api/docs/thinking#set-budget
|
|
182
|
+
if (model.id.includes("2.5-pro")) {
|
|
183
|
+
const budgets = {
|
|
184
|
+
minimal: 128,
|
|
185
|
+
low: 2048,
|
|
186
|
+
medium: 8192,
|
|
187
|
+
high: 32768,
|
|
188
|
+
};
|
|
189
|
+
return budgets[effort];
|
|
190
|
+
}
|
|
191
|
+
if (model.id.includes("2.5-flash")) {
|
|
192
|
+
// Covers 2.5-flash-lite as well
|
|
193
|
+
const budgets = {
|
|
194
|
+
minimal: 128,
|
|
195
|
+
low: 2048,
|
|
196
|
+
medium: 8192,
|
|
197
|
+
high: 24576,
|
|
198
|
+
};
|
|
199
|
+
return budgets[effort];
|
|
200
|
+
}
|
|
201
|
+
// Unknown model - use dynamic
|
|
202
|
+
return -1;
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import type { AnthropicOptions } from "./providers/anthropic.js";
|
|
2
|
+
import type { GoogleOptions } from "./providers/google.js";
|
|
3
|
+
import type { OpenAICompletionsOptions } from "./providers/openai-completions.js";
|
|
4
|
+
import type { OpenAIResponsesOptions } from "./providers/openai-responses.js";
|
|
5
|
+
import type { AssistantMessageEventStream } from "./utils/event-stream.js";
|
|
6
|
+
export type Api = "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
|
|
7
|
+
export interface ApiOptionsMap {
|
|
8
|
+
"anthropic-messages": AnthropicOptions;
|
|
9
|
+
"openai-completions": OpenAICompletionsOptions;
|
|
10
|
+
"openai-responses": OpenAIResponsesOptions;
|
|
11
|
+
"google-generative-ai": GoogleOptions;
|
|
12
|
+
}
|
|
13
|
+
export type OptionsForApi<TApi extends Api> = ApiOptionsMap[TApi];
|
|
14
|
+
export type KnownProvider = "anthropic" | "google" | "openai" | "codex" | "github-copilot" | "xai" | "groq" | "cerebras" | "openrouter" | "zai" | "mistral" | "opencode";
|
|
15
|
+
export type Provider = KnownProvider | string;
|
|
16
|
+
export type ReasoningEffort = "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
17
|
+
export interface StreamOptions {
|
|
18
|
+
temperature?: number;
|
|
19
|
+
maxTokens?: number;
|
|
20
|
+
signal?: AbortSignal;
|
|
21
|
+
apiKey?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Custom fetch function type (compatible with standard fetch signature) */
|
|
24
|
+
export type FetchFunction = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
25
|
+
export interface SimpleStreamOptions extends StreamOptions {
|
|
26
|
+
reasoning?: ReasoningEffort;
|
|
27
|
+
/** Custom fetch for OAuth/proxy scenarios */
|
|
28
|
+
fetch?: FetchFunction;
|
|
29
|
+
/** Instructions for Codex API (top-level, replaces system message) */
|
|
30
|
+
instructions?: string;
|
|
31
|
+
}
|
|
32
|
+
export type StreamFunction<TApi extends Api> = (model: Model<TApi>, context: Context, options: OptionsForApi<TApi>) => AssistantMessageEventStream;
|
|
33
|
+
export interface TextContent {
|
|
34
|
+
type: "text";
|
|
35
|
+
text: string;
|
|
36
|
+
textSignature?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface ThinkingContent {
|
|
39
|
+
type: "thinking";
|
|
40
|
+
thinking: string;
|
|
41
|
+
thinkingSignature?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface ImageContent {
|
|
44
|
+
type: "image";
|
|
45
|
+
data: string;
|
|
46
|
+
mimeType: string;
|
|
47
|
+
}
|
|
48
|
+
export interface ToolCall {
|
|
49
|
+
type: "toolCall";
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
arguments: Record<string, any>;
|
|
53
|
+
thoughtSignature?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface Usage {
|
|
56
|
+
input: number;
|
|
57
|
+
output: number;
|
|
58
|
+
cacheRead: number;
|
|
59
|
+
cacheWrite: number;
|
|
60
|
+
totalTokens: number;
|
|
61
|
+
cost: {
|
|
62
|
+
input: number;
|
|
63
|
+
output: number;
|
|
64
|
+
cacheRead: number;
|
|
65
|
+
cacheWrite: number;
|
|
66
|
+
total: number;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export type StopReason = "stop" | "length" | "toolUse" | "error" | "aborted";
|
|
70
|
+
export interface UserMessage {
|
|
71
|
+
role: "user";
|
|
72
|
+
content: string | (TextContent | ImageContent)[];
|
|
73
|
+
timestamp: number;
|
|
74
|
+
}
|
|
75
|
+
export interface AssistantMessage {
|
|
76
|
+
role: "assistant";
|
|
77
|
+
content: (TextContent | ThinkingContent | ToolCall)[];
|
|
78
|
+
api: Api;
|
|
79
|
+
provider: Provider;
|
|
80
|
+
model: string;
|
|
81
|
+
usage: Usage;
|
|
82
|
+
stopReason: StopReason;
|
|
83
|
+
errorMessage?: string;
|
|
84
|
+
timestamp: number;
|
|
85
|
+
}
|
|
86
|
+
export interface ToolResultMessage<TDetails = any> {
|
|
87
|
+
role: "toolResult";
|
|
88
|
+
toolCallId: string;
|
|
89
|
+
toolName: string;
|
|
90
|
+
content: (TextContent | ImageContent)[];
|
|
91
|
+
details?: TDetails;
|
|
92
|
+
isError: boolean;
|
|
93
|
+
timestamp: number;
|
|
94
|
+
}
|
|
95
|
+
export type Message = UserMessage | AssistantMessage | ToolResultMessage;
|
|
96
|
+
import type { TSchema } from "@sinclair/typebox";
|
|
97
|
+
export interface Tool<TParameters extends TSchema = TSchema> {
|
|
98
|
+
name: string;
|
|
99
|
+
description: string;
|
|
100
|
+
parameters: TParameters;
|
|
101
|
+
}
|
|
102
|
+
export interface Context {
|
|
103
|
+
systemPrompt?: string;
|
|
104
|
+
messages: Message[];
|
|
105
|
+
tools?: Tool[];
|
|
106
|
+
}
|
|
107
|
+
export type AssistantMessageEvent = {
|
|
108
|
+
type: "start";
|
|
109
|
+
partial: AssistantMessage;
|
|
110
|
+
} | {
|
|
111
|
+
type: "text_start";
|
|
112
|
+
contentIndex: number;
|
|
113
|
+
partial: AssistantMessage;
|
|
114
|
+
} | {
|
|
115
|
+
type: "text_delta";
|
|
116
|
+
contentIndex: number;
|
|
117
|
+
delta: string;
|
|
118
|
+
partial: AssistantMessage;
|
|
119
|
+
} | {
|
|
120
|
+
type: "text_end";
|
|
121
|
+
contentIndex: number;
|
|
122
|
+
content: string;
|
|
123
|
+
partial: AssistantMessage;
|
|
124
|
+
} | {
|
|
125
|
+
type: "thinking_start";
|
|
126
|
+
contentIndex: number;
|
|
127
|
+
partial: AssistantMessage;
|
|
128
|
+
} | {
|
|
129
|
+
type: "thinking_delta";
|
|
130
|
+
contentIndex: number;
|
|
131
|
+
delta: string;
|
|
132
|
+
partial: AssistantMessage;
|
|
133
|
+
} | {
|
|
134
|
+
type: "thinking_end";
|
|
135
|
+
contentIndex: number;
|
|
136
|
+
content: string;
|
|
137
|
+
partial: AssistantMessage;
|
|
138
|
+
} | {
|
|
139
|
+
type: "toolcall_start";
|
|
140
|
+
contentIndex: number;
|
|
141
|
+
partial: AssistantMessage;
|
|
142
|
+
} | {
|
|
143
|
+
type: "toolcall_delta";
|
|
144
|
+
contentIndex: number;
|
|
145
|
+
delta: string;
|
|
146
|
+
partial: AssistantMessage;
|
|
147
|
+
} | {
|
|
148
|
+
type: "toolcall_end";
|
|
149
|
+
contentIndex: number;
|
|
150
|
+
toolCall: ToolCall;
|
|
151
|
+
partial: AssistantMessage;
|
|
152
|
+
} | {
|
|
153
|
+
type: "done";
|
|
154
|
+
reason: Extract<StopReason, "stop" | "length" | "toolUse">;
|
|
155
|
+
message: AssistantMessage;
|
|
156
|
+
} | {
|
|
157
|
+
type: "error";
|
|
158
|
+
reason: Extract<StopReason, "aborted" | "error">;
|
|
159
|
+
error: AssistantMessage;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Compatibility settings for openai-completions API.
|
|
163
|
+
* Use this to override URL-based auto-detection for custom providers.
|
|
164
|
+
*/
|
|
165
|
+
export interface OpenAICompat {
|
|
166
|
+
/** Whether the provider supports the `store` field. Default: auto-detected from URL. */
|
|
167
|
+
supportsStore?: boolean;
|
|
168
|
+
/** Whether the provider supports the `developer` role (vs `system`). Default: auto-detected from URL. */
|
|
169
|
+
supportsDeveloperRole?: boolean;
|
|
170
|
+
/** Whether the provider supports `reasoning_effort`. Default: auto-detected from URL. */
|
|
171
|
+
supportsReasoningEffort?: boolean;
|
|
172
|
+
/** Which field to use for max tokens. Default: auto-detected from URL. */
|
|
173
|
+
maxTokensField?: "max_completion_tokens" | "max_tokens";
|
|
174
|
+
/** Whether tool results require the `name` field. Default: auto-detected from URL. */
|
|
175
|
+
requiresToolResultName?: boolean;
|
|
176
|
+
/** Whether a user message after tool results requires an assistant message in between. Default: auto-detected from URL. */
|
|
177
|
+
requiresAssistantAfterToolResult?: boolean;
|
|
178
|
+
/** Whether thinking blocks must be converted to text blocks with <thinking> delimiters. Default: auto-detected from URL. */
|
|
179
|
+
requiresThinkingAsText?: boolean;
|
|
180
|
+
/** Whether tool call IDs must be normalized to Mistral format (exactly 9 alphanumeric chars). Default: auto-detected from URL. */
|
|
181
|
+
requiresMistralToolIds?: boolean;
|
|
182
|
+
}
|
|
183
|
+
export interface Model<TApi extends Api> {
|
|
184
|
+
id: string;
|
|
185
|
+
name: string;
|
|
186
|
+
api: TApi;
|
|
187
|
+
provider: Provider;
|
|
188
|
+
baseUrl: string;
|
|
189
|
+
reasoning: boolean;
|
|
190
|
+
input: ("text" | "image")[];
|
|
191
|
+
cost: {
|
|
192
|
+
input: number;
|
|
193
|
+
output: number;
|
|
194
|
+
cacheRead: number;
|
|
195
|
+
cacheWrite: number;
|
|
196
|
+
};
|
|
197
|
+
contextWindow: number;
|
|
198
|
+
maxTokens: number;
|
|
199
|
+
headers?: Record<string, string>;
|
|
200
|
+
/** Compatibility overrides for openai-completions API. If not set, auto-detected from baseUrl. */
|
|
201
|
+
compat?: TApi extends "openai-completions" ? OpenAICompat : never;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,GAAqB,IAAI,CAAC;AAC3C,KAAK,WAAW,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AssistantMessage, AssistantMessageEvent } from "../types.js";
|
|
2
|
+
export declare class EventStream<T, R = T> implements AsyncIterable<T> {
|
|
3
|
+
private isComplete;
|
|
4
|
+
private extractResult;
|
|
5
|
+
private queue;
|
|
6
|
+
private waiting;
|
|
7
|
+
private done;
|
|
8
|
+
private finalResultPromise;
|
|
9
|
+
private resolveFinalResult;
|
|
10
|
+
constructor(isComplete: (event: T) => boolean, extractResult: (event: T) => R);
|
|
11
|
+
push(event: T): void;
|
|
12
|
+
end(result?: R): void;
|
|
13
|
+
[Symbol.asyncIterator](): AsyncIterator<T>;
|
|
14
|
+
result(): Promise<R>;
|
|
15
|
+
}
|
|
16
|
+
export declare class AssistantMessageEventStream extends EventStream<AssistantMessageEvent, AssistantMessage> {
|
|
17
|
+
constructor();
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=event-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-stream.d.ts","sourceRoot":"","sources":["../../src/utils/event-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAG3E,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAQ5D,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IARtB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,OAAO,CAA8C;IAC7D,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,kBAAkB,CAAuB;IAEjD,YACS,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,EACjC,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAKtC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAenB;IAED,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAUpB;IAEM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAYhD;IAED,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAEnB;CACD;AAED,qBAAa,2BAA4B,SAAQ,WAAW,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;IACpG,cAYC;CACD"}
|