@ank1015/providers 0.0.1
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 +453 -0
- package/biome.json +43 -0
- package/dist/agent/agent-loop.d.ts +5 -0
- package/dist/agent/agent-loop.d.ts.map +1 -0
- package/dist/agent/agent-loop.js +219 -0
- package/dist/agent/agent-loop.js.map +1 -0
- package/dist/agent/types.d.ts +67 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +3 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/models.d.ts +3 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.generated.d.ts +247 -0
- package/dist/models.generated.d.ts.map +1 -0
- package/dist/models.generated.js +315 -0
- package/dist/models.generated.js.map +1 -0
- package/dist/models.js +41 -0
- package/dist/models.js.map +1 -0
- package/dist/providers/convert.d.ts +6 -0
- package/dist/providers/convert.d.ts.map +1 -0
- package/dist/providers/convert.js +207 -0
- package/dist/providers/convert.js.map +1 -0
- package/dist/providers/google.d.ts +26 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +434 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/openai.d.ts +17 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +396 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/stream.d.ts +4 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +40 -0
- package/dist/stream.js.map +1 -0
- package/dist/test-google-agent-loop.d.ts +2 -0
- package/dist/test-google-agent-loop.d.ts.map +1 -0
- package/dist/test-google-agent-loop.js +186 -0
- package/dist/test-google-agent-loop.js.map +1 -0
- package/dist/test-google.d.ts +2 -0
- package/dist/test-google.d.ts.map +1 -0
- package/dist/test-google.js +41 -0
- package/dist/test-google.js.map +1 -0
- package/dist/types.d.ts +187 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/event-stream.d.ts +16 -0
- package/dist/utils/event-stream.d.ts.map +1 -0
- package/dist/utils/event-stream.js +61 -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 +32 -0
- package/dist/utils/json-parse.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 +29 -0
- package/dist/utils/sanitize-unicode.js.map +1 -0
- package/dist/utils/validation.d.ts +11 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +61 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +33 -0
- package/src/agent/agent-loop.ts +275 -0
- package/src/agent/types.ts +80 -0
- package/src/index.ts +72 -0
- package/src/models.generated.ts +314 -0
- package/src/models.ts +45 -0
- package/src/providers/convert.ts +222 -0
- package/src/providers/google.ts +496 -0
- package/src/providers/openai.ts +437 -0
- package/src/stream.ts +60 -0
- package/src/types.ts +198 -0
- package/src/utils/event-stream.ts +60 -0
- package/src/utils/json-parse.ts +28 -0
- package/src/utils/sanitize-unicode.ts +25 -0
- package/src/utils/validation.ts +69 -0
- package/test/core/agent-loop.test.ts +958 -0
- package/test/core/stream.test.ts +409 -0
- package/test/data/red-circle.png +0 -0
- package/test/data/superintelligentwill.pdf +0 -0
- package/test/edge-cases/general.test.ts +565 -0
- package/test/integration/e2e.test.ts +530 -0
- package/test/models/cost.test.ts +499 -0
- package/test/models/registry.test.ts +298 -0
- package/test/providers/convert.test.ts +846 -0
- package/test/providers/google-schema.test.ts +666 -0
- package/test/providers/google-stream.test.ts +369 -0
- package/test/providers/openai-stream.test.ts +251 -0
- package/test/utils/event-stream.test.ts +289 -0
- package/test/utils/json-parse.test.ts +344 -0
- package/test/utils/sanitize-unicode.test.ts +329 -0
- package/test/utils/validation.test.ts +614 -0
- package/tsconfig.json +21 -0
- package/vitest.config.ts +9 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.agentLoop = agentLoop;
|
|
4
|
+
const event_stream_1 = require("../utils/event-stream");
|
|
5
|
+
const stream_1 = require("../stream");
|
|
6
|
+
const validation_1 = require("../utils/validation");
|
|
7
|
+
// Main prompt function - returns a stream of events
|
|
8
|
+
function agentLoop(prompt, context, config, signal) {
|
|
9
|
+
// Convert AgentContext to Context for stream
|
|
10
|
+
// Use a copy of messages to avoid mutating the original context
|
|
11
|
+
const stream = new event_stream_1.EventStream();
|
|
12
|
+
// Run the prompt async
|
|
13
|
+
(async () => {
|
|
14
|
+
// Track new messages generated during this prompt
|
|
15
|
+
const newMessages = [];
|
|
16
|
+
// Create user message for the prompt
|
|
17
|
+
const messages = [...context.messages, prompt];
|
|
18
|
+
newMessages.push(prompt);
|
|
19
|
+
stream.push({ type: "agent_start" });
|
|
20
|
+
stream.push({ type: "turn_start" });
|
|
21
|
+
stream.push({ type: "message_start", message: prompt });
|
|
22
|
+
stream.push({ type: "message_end", message: prompt });
|
|
23
|
+
// Update context with new messages
|
|
24
|
+
const currentContext = {
|
|
25
|
+
...context,
|
|
26
|
+
messages,
|
|
27
|
+
};
|
|
28
|
+
// Keep looping while we have tool calls or queued messages
|
|
29
|
+
let hasMoreToolCalls = true;
|
|
30
|
+
let firstTurn = true;
|
|
31
|
+
let queuedMessages = [];
|
|
32
|
+
// Safely get queued messages, handling any errors
|
|
33
|
+
try {
|
|
34
|
+
queuedMessages = (await config.getQueuedMessages?.()) || [];
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.warn("Error getting queued messages:", error instanceof Error ? error.message : String(error));
|
|
38
|
+
// Continue with empty queued messages
|
|
39
|
+
}
|
|
40
|
+
while (hasMoreToolCalls || queuedMessages.length > 0) {
|
|
41
|
+
if (!firstTurn) {
|
|
42
|
+
stream.push({ type: "turn_start" });
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
firstTurn = false;
|
|
46
|
+
}
|
|
47
|
+
// Process queued messages first (inject before next assistant response)
|
|
48
|
+
if (queuedMessages.length > 0) {
|
|
49
|
+
for (const { original, llm } of queuedMessages) {
|
|
50
|
+
stream.push({ type: "message_start", message: original });
|
|
51
|
+
stream.push({ type: "message_end", message: original });
|
|
52
|
+
if (llm) {
|
|
53
|
+
currentContext.messages.push(llm);
|
|
54
|
+
newMessages.push(llm);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
queuedMessages = [];
|
|
58
|
+
}
|
|
59
|
+
// Stream assistant response
|
|
60
|
+
const { finalAssistantMessage, finalMessage } = await streamAssistantResponse(currentContext, config, signal, stream);
|
|
61
|
+
newMessages.push(finalMessage);
|
|
62
|
+
currentContext.messages.push(finalMessage); // ✅ Add to context so LLM sees its previous responses!
|
|
63
|
+
// Check if assistant message is valid
|
|
64
|
+
if (!finalAssistantMessage) {
|
|
65
|
+
// This should never happen, but handle it gracefully
|
|
66
|
+
stream.push({ type: "agent_end", messages: newMessages, status: "error" });
|
|
67
|
+
stream.end(newMessages);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (finalAssistantMessage.stopReason === 'aborted' || finalAssistantMessage.stopReason === "error") {
|
|
71
|
+
stream.push({ type: "turn_end", message: finalAssistantMessage, toolResults: [] });
|
|
72
|
+
stream.push({
|
|
73
|
+
type: "agent_end",
|
|
74
|
+
messages: newMessages,
|
|
75
|
+
status: finalAssistantMessage.stopReason === 'aborted' ? "aborted" : "error"
|
|
76
|
+
});
|
|
77
|
+
stream.end(newMessages);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// Check for tool calls
|
|
81
|
+
const toolCalls = finalAssistantMessage.content.filter((c) => c.type === "toolCall");
|
|
82
|
+
hasMoreToolCalls = toolCalls.length > 0;
|
|
83
|
+
const toolResults = [];
|
|
84
|
+
if (hasMoreToolCalls) {
|
|
85
|
+
// Execute tool calls
|
|
86
|
+
toolResults.push(...(await executeToolCalls(currentContext.tools, finalAssistantMessage, signal, stream)));
|
|
87
|
+
currentContext.messages.push(...toolResults);
|
|
88
|
+
newMessages.push(...toolResults);
|
|
89
|
+
}
|
|
90
|
+
stream.push({ type: "turn_end", message: finalAssistantMessage, toolResults: toolResults });
|
|
91
|
+
// Get queued messages after turn completes
|
|
92
|
+
try {
|
|
93
|
+
queuedMessages = (await config.getQueuedMessages?.()) || [];
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.warn("Error getting queued messages:", error instanceof Error ? error.message : String(error));
|
|
97
|
+
queuedMessages = [];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
stream.push({ type: "agent_end", messages: newMessages, status: "completed" });
|
|
101
|
+
stream.end(newMessages);
|
|
102
|
+
})();
|
|
103
|
+
return stream;
|
|
104
|
+
}
|
|
105
|
+
// Helper functions
|
|
106
|
+
async function streamAssistantResponse(context, config, signal, stream) {
|
|
107
|
+
// Convert AgentContext to Context for stream
|
|
108
|
+
// Use a copy of messages to avoid mutating the original context
|
|
109
|
+
const processedMessages = config.preprocessor
|
|
110
|
+
? await config.preprocessor(context.messages, signal)
|
|
111
|
+
: [...context.messages];
|
|
112
|
+
const processedContext = {
|
|
113
|
+
systemPrompt: context.systemPrompt,
|
|
114
|
+
messages: [...processedMessages],
|
|
115
|
+
tools: context.tools
|
|
116
|
+
};
|
|
117
|
+
const response = (0, stream_1.stream)(config.model, processedContext, { ...config.providerOptions, signal });
|
|
118
|
+
let partialMessage = null;
|
|
119
|
+
let addedPartial = false;
|
|
120
|
+
for await (const event of response) {
|
|
121
|
+
switch (event.type) {
|
|
122
|
+
case "start":
|
|
123
|
+
partialMessage = event.partial;
|
|
124
|
+
// context.messages.push(partialMessage);
|
|
125
|
+
addedPartial = true;
|
|
126
|
+
stream.push({ type: "message_start", message: { ...partialMessage } });
|
|
127
|
+
break;
|
|
128
|
+
case "text_start":
|
|
129
|
+
case "text_delta":
|
|
130
|
+
case "text_end":
|
|
131
|
+
case "thinking_start":
|
|
132
|
+
case "thinking_delta":
|
|
133
|
+
case "thinking_end":
|
|
134
|
+
case "toolcall_start":
|
|
135
|
+
case "toolcall_delta":
|
|
136
|
+
case "toolcall_end":
|
|
137
|
+
if (partialMessage) {
|
|
138
|
+
partialMessage = event.partial;
|
|
139
|
+
// context.messages[context.messages.length - 1] = partialMessage;
|
|
140
|
+
stream.push({ type: "message_update", assistantMessageEvent: event, message: { ...partialMessage } });
|
|
141
|
+
}
|
|
142
|
+
break;
|
|
143
|
+
case "done":
|
|
144
|
+
case "error": {
|
|
145
|
+
const finalAssistantMessage = event.type === 'error' ? event.error : event.message;
|
|
146
|
+
if (!addedPartial) {
|
|
147
|
+
stream.push({ type: "message_start", message: { ...finalAssistantMessage } });
|
|
148
|
+
}
|
|
149
|
+
stream.push({ type: "message_end", message: finalAssistantMessage });
|
|
150
|
+
const finalMessage = await response.result();
|
|
151
|
+
return { finalMessage, finalAssistantMessage };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const finalMessage = await response.result();
|
|
156
|
+
return { finalAssistantMessage: partialMessage, finalMessage };
|
|
157
|
+
}
|
|
158
|
+
async function executeToolCalls(tools, assistantMessage, signal, stream) {
|
|
159
|
+
const toolCalls = assistantMessage.content.filter((c) => c.type === "toolCall");
|
|
160
|
+
const results = [];
|
|
161
|
+
for (const toolCall of toolCalls) {
|
|
162
|
+
const tool = tools?.find((t) => t.name === toolCall.name);
|
|
163
|
+
stream.push({
|
|
164
|
+
type: "tool_execution_start",
|
|
165
|
+
toolCallId: toolCall.id,
|
|
166
|
+
toolName: toolCall.name,
|
|
167
|
+
args: toolCall.arguments,
|
|
168
|
+
});
|
|
169
|
+
let resultOrError;
|
|
170
|
+
let isError = false;
|
|
171
|
+
let errorDetails;
|
|
172
|
+
try {
|
|
173
|
+
if (!tool) {
|
|
174
|
+
const availableTools = tools?.map((t) => t.name).join(", ") || "none";
|
|
175
|
+
throw new Error(`Tool "${toolCall.name}" not found. Available tools: ${availableTools}`);
|
|
176
|
+
}
|
|
177
|
+
// Validate arguments using shared validation function
|
|
178
|
+
const validatedArgs = (0, validation_1.validateToolArguments)(tool, toolCall);
|
|
179
|
+
// Execute with validated, typed arguments
|
|
180
|
+
resultOrError = await tool.execute(toolCall.id, validatedArgs, signal);
|
|
181
|
+
}
|
|
182
|
+
catch (e) {
|
|
183
|
+
resultOrError = e instanceof Error ? e.message : String(e);
|
|
184
|
+
isError = true;
|
|
185
|
+
// Preserve full error details for debugging
|
|
186
|
+
if (e instanceof Error) {
|
|
187
|
+
errorDetails = {
|
|
188
|
+
message: e.message,
|
|
189
|
+
name: e.name,
|
|
190
|
+
stack: e.stack,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
stream.push({
|
|
195
|
+
type: "tool_execution_end",
|
|
196
|
+
toolCallId: toolCall.id,
|
|
197
|
+
toolName: toolCall.name,
|
|
198
|
+
result: resultOrError,
|
|
199
|
+
isError,
|
|
200
|
+
});
|
|
201
|
+
// Convert result to content blocks
|
|
202
|
+
const content = typeof resultOrError === "string" ? [{ type: "text", content: resultOrError }] : resultOrError.content;
|
|
203
|
+
const toolResultMessage = {
|
|
204
|
+
role: "toolResult",
|
|
205
|
+
toolCallId: toolCall.id,
|
|
206
|
+
toolName: toolCall.name,
|
|
207
|
+
content,
|
|
208
|
+
details: typeof resultOrError === "string" ? {} : resultOrError.details,
|
|
209
|
+
isError,
|
|
210
|
+
error: errorDetails,
|
|
211
|
+
timestamp: Date.now(),
|
|
212
|
+
};
|
|
213
|
+
results.push(toolResultMessage);
|
|
214
|
+
stream.push({ type: "message_start", message: toolResultMessage });
|
|
215
|
+
stream.push({ type: "message_end", message: toolResultMessage });
|
|
216
|
+
}
|
|
217
|
+
return results;
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=agent-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../src/agent/agent-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Message, Tool, UserTextContent, UserImageContent, UserFileContent, ToolResultMessage, AssistantMessageEvent, AssistantMessage, Model, OptionsForApi, Api, UserMessage } from "../types";
|
|
2
|
+
import type { Static, TSchema } from "@sinclair/typebox";
|
|
3
|
+
export interface AgentToolResult<T> {
|
|
4
|
+
content: (UserTextContent | UserImageContent | UserFileContent)[];
|
|
5
|
+
details: T;
|
|
6
|
+
}
|
|
7
|
+
export interface AgentTool<TParameters extends TSchema = TSchema, TDetails = any> extends Tool<TParameters> {
|
|
8
|
+
label: string;
|
|
9
|
+
execute: (toolCallId: string, params: Static<TParameters>, signal?: AbortSignal) => Promise<AgentToolResult<TDetails>>;
|
|
10
|
+
}
|
|
11
|
+
export interface AgentContext {
|
|
12
|
+
systemPrompt?: string;
|
|
13
|
+
messages: Message[];
|
|
14
|
+
tools?: readonly AgentTool<any>[];
|
|
15
|
+
}
|
|
16
|
+
export type AgentEvent = {
|
|
17
|
+
type: "agent_start";
|
|
18
|
+
} | {
|
|
19
|
+
type: "turn_start";
|
|
20
|
+
} | {
|
|
21
|
+
type: "message_start";
|
|
22
|
+
message: AssistantMessage | UserMessage | ToolResultMessage;
|
|
23
|
+
} | {
|
|
24
|
+
type: "message_update";
|
|
25
|
+
assistantMessageEvent: AssistantMessageEvent;
|
|
26
|
+
message: AssistantMessage;
|
|
27
|
+
} | {
|
|
28
|
+
type: "message_end";
|
|
29
|
+
message: AssistantMessage | UserMessage | ToolResultMessage;
|
|
30
|
+
} | {
|
|
31
|
+
type: "tool_execution_start";
|
|
32
|
+
toolCallId: string;
|
|
33
|
+
toolName: string;
|
|
34
|
+
args: any;
|
|
35
|
+
} | {
|
|
36
|
+
type: "tool_execution_end";
|
|
37
|
+
toolCallId: string;
|
|
38
|
+
toolName: string;
|
|
39
|
+
result: AgentToolResult<any> | string;
|
|
40
|
+
isError: boolean;
|
|
41
|
+
} | {
|
|
42
|
+
type: "turn_end";
|
|
43
|
+
message: AssistantMessage;
|
|
44
|
+
toolResults: ToolResultMessage[];
|
|
45
|
+
} | {
|
|
46
|
+
type: "agent_end";
|
|
47
|
+
messages: AgentContext["messages"];
|
|
48
|
+
status: "completed" | "aborted" | "error";
|
|
49
|
+
};
|
|
50
|
+
export interface QueuedMessage<TApp = Message> {
|
|
51
|
+
original: TApp;
|
|
52
|
+
llm?: Message;
|
|
53
|
+
}
|
|
54
|
+
export type ReasoningEffort = "minimal" | "low" | "medium" | "high";
|
|
55
|
+
export interface SimpleProviderOptions {
|
|
56
|
+
reasoning?: ReasoningEffort;
|
|
57
|
+
signal?: AbortSignal;
|
|
58
|
+
apiKey?: string;
|
|
59
|
+
maxTokens?: number;
|
|
60
|
+
}
|
|
61
|
+
export interface AgentLoopConfig<TApi extends Api> {
|
|
62
|
+
model: Model<TApi>;
|
|
63
|
+
preprocessor?: (messages: AgentContext["messages"], signal?: AbortSignal) => Promise<AgentContext["messages"]>;
|
|
64
|
+
providerOptions: OptionsForApi<TApi>;
|
|
65
|
+
getQueuedMessages?: <T>() => Promise<QueuedMessage<T>[]>;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { stream } from "./stream";
|
|
2
|
+
export { agentLoop } from "./agent/agent-loop";
|
|
3
|
+
export type { Message, UserMessage, ToolResultMessage, NativeAssistantMessage, NativeOpenAIMessage, UserTextContent, UserImageContent, UserFileContent, AssistantTextContent, AssistantThinkingContent, AssistantToolCall, AbstractedImageContent, Context, Tool, Api, Model, AssistantMessage, AssistantMessageEvent, Usage, StopReason, OptionsForApi, StreamFunction, } from "./types";
|
|
4
|
+
export type { AgentContext, AgentTool, AgentToolResult, AgentEvent, AgentLoopConfig, QueuedMessage, } from "./agent/types";
|
|
5
|
+
export { MODELS } from "./models.generated";
|
|
6
|
+
export { calculateCost } from "./models";
|
|
7
|
+
export { defineTool } from "./types";
|
|
8
|
+
export type { ToolName, ToolNames } from "./types";
|
|
9
|
+
export { EventStream, AssistantMessageEventStream } from "./utils/event-stream";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,YAAY,EAEX,OAAO,EACP,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EAGnB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EAGtB,OAAO,EACP,IAAI,EACJ,GAAG,EACH,KAAK,EAGL,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,EACL,UAAU,EAGV,aAAa,EACb,cAAc,GACd,MAAM,SAAS,CAAC;AAKjB,YAAY,EAEX,YAAY,EACZ,SAAS,EACT,eAAe,EACf,UAAU,EACV,eAAe,EACf,aAAa,GACb,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKnD,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AssistantMessageEventStream = exports.EventStream = exports.defineTool = exports.calculateCost = exports.MODELS = exports.agentLoop = exports.stream = void 0;
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// Main Functions
|
|
6
|
+
// ============================================================================
|
|
7
|
+
var stream_1 = require("./stream");
|
|
8
|
+
Object.defineProperty(exports, "stream", { enumerable: true, get: function () { return stream_1.stream; } });
|
|
9
|
+
var agent_loop_1 = require("./agent/agent-loop");
|
|
10
|
+
Object.defineProperty(exports, "agentLoop", { enumerable: true, get: function () { return agent_loop_1.agentLoop; } });
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Models and Registry
|
|
13
|
+
// ============================================================================
|
|
14
|
+
var models_generated_1 = require("./models.generated");
|
|
15
|
+
Object.defineProperty(exports, "MODELS", { enumerable: true, get: function () { return models_generated_1.MODELS; } });
|
|
16
|
+
var models_1 = require("./models");
|
|
17
|
+
Object.defineProperty(exports, "calculateCost", { enumerable: true, get: function () { return models_1.calculateCost; } });
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Utilities
|
|
20
|
+
// ============================================================================
|
|
21
|
+
var types_1 = require("./types");
|
|
22
|
+
Object.defineProperty(exports, "defineTool", { enumerable: true, get: function () { return types_1.defineTool; } });
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Event Streams
|
|
25
|
+
// ============================================================================
|
|
26
|
+
var event_stream_1 = require("./utils/event-stream");
|
|
27
|
+
Object.defineProperty(exports, "EventStream", { enumerable: true, get: function () { return event_stream_1.EventStream; } });
|
|
28
|
+
Object.defineProperty(exports, "AssistantMessageEventStream", { enumerable: true, get: function () { return event_stream_1.AssistantMessageEventStream; } });
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAC/E,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,iDAA+C;AAAtC,uGAAA,SAAS,OAAA;AAoDlB,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAC/E,uDAA4C;AAAnC,0GAAA,MAAM,OAAA;AACf,mCAAyC;AAAhC,uGAAA,aAAa,OAAA;AAEtB,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAC/E,iCAAqC;AAA5B,mGAAA,UAAU,OAAA;AAGnB,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAC/E,qDAAgF;AAAvE,2GAAA,WAAW,OAAA;AAAE,2HAAA,2BAA2B,OAAA"}
|
package/dist/models.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAoCpD,wBAAgB,aAAa,CAAC,IAAI,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAO/F"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
export declare const MODELS: {
|
|
2
|
+
readonly google: {
|
|
3
|
+
readonly "gemini-2.5-flash-preview-05-20": {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
api: "google";
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
reasoning: true;
|
|
9
|
+
input: ("text" | "image")[];
|
|
10
|
+
cost: {
|
|
11
|
+
input: number;
|
|
12
|
+
output: number;
|
|
13
|
+
cacheRead: number;
|
|
14
|
+
cacheWrite: number;
|
|
15
|
+
};
|
|
16
|
+
contextWindow: number;
|
|
17
|
+
maxTokens: number;
|
|
18
|
+
};
|
|
19
|
+
readonly "gemini-flash-lite-latest": {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
api: "google";
|
|
23
|
+
baseUrl: string;
|
|
24
|
+
reasoning: true;
|
|
25
|
+
input: ("text" | "image" | "file")[];
|
|
26
|
+
cost: {
|
|
27
|
+
input: number;
|
|
28
|
+
output: number;
|
|
29
|
+
cacheRead: number;
|
|
30
|
+
cacheWrite: number;
|
|
31
|
+
};
|
|
32
|
+
contextWindow: number;
|
|
33
|
+
maxTokens: number;
|
|
34
|
+
};
|
|
35
|
+
readonly "gemini-3-pro-preview": {
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
api: "google";
|
|
39
|
+
baseUrl: string;
|
|
40
|
+
reasoning: true;
|
|
41
|
+
input: ("text" | "image" | "file")[];
|
|
42
|
+
cost: {
|
|
43
|
+
input: number;
|
|
44
|
+
output: number;
|
|
45
|
+
cacheRead: number;
|
|
46
|
+
cacheWrite: number;
|
|
47
|
+
};
|
|
48
|
+
contextWindow: number;
|
|
49
|
+
maxTokens: number;
|
|
50
|
+
};
|
|
51
|
+
readonly "gemini-2.5-flash": {
|
|
52
|
+
id: string;
|
|
53
|
+
name: string;
|
|
54
|
+
api: "google";
|
|
55
|
+
baseUrl: string;
|
|
56
|
+
reasoning: true;
|
|
57
|
+
input: ("text" | "image" | "file")[];
|
|
58
|
+
cost: {
|
|
59
|
+
input: number;
|
|
60
|
+
output: number;
|
|
61
|
+
cacheRead: number;
|
|
62
|
+
cacheWrite: number;
|
|
63
|
+
};
|
|
64
|
+
contextWindow: number;
|
|
65
|
+
maxTokens: number;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
readonly openai: {
|
|
69
|
+
readonly "gpt-5.1-codex": {
|
|
70
|
+
id: string;
|
|
71
|
+
name: string;
|
|
72
|
+
api: "openai";
|
|
73
|
+
baseUrl: string;
|
|
74
|
+
reasoning: true;
|
|
75
|
+
input: ("text" | "image" | "file")[];
|
|
76
|
+
cost: {
|
|
77
|
+
input: number;
|
|
78
|
+
output: number;
|
|
79
|
+
cacheRead: number;
|
|
80
|
+
cacheWrite: number;
|
|
81
|
+
};
|
|
82
|
+
contextWindow: number;
|
|
83
|
+
maxTokens: number;
|
|
84
|
+
};
|
|
85
|
+
readonly "gpt-5.1-codex-mini": {
|
|
86
|
+
id: string;
|
|
87
|
+
name: string;
|
|
88
|
+
api: "openai";
|
|
89
|
+
baseUrl: string;
|
|
90
|
+
reasoning: true;
|
|
91
|
+
input: ("text" | "image" | "file")[];
|
|
92
|
+
cost: {
|
|
93
|
+
input: number;
|
|
94
|
+
output: number;
|
|
95
|
+
cacheRead: number;
|
|
96
|
+
cacheWrite: number;
|
|
97
|
+
};
|
|
98
|
+
contextWindow: number;
|
|
99
|
+
maxTokens: number;
|
|
100
|
+
};
|
|
101
|
+
readonly "gpt-5.1": {
|
|
102
|
+
id: string;
|
|
103
|
+
name: string;
|
|
104
|
+
api: "openai";
|
|
105
|
+
baseUrl: string;
|
|
106
|
+
reasoning: true;
|
|
107
|
+
input: ("text" | "image" | "file")[];
|
|
108
|
+
cost: {
|
|
109
|
+
input: number;
|
|
110
|
+
output: number;
|
|
111
|
+
cacheRead: number;
|
|
112
|
+
cacheWrite: number;
|
|
113
|
+
};
|
|
114
|
+
contextWindow: number;
|
|
115
|
+
maxTokens: number;
|
|
116
|
+
};
|
|
117
|
+
readonly "codex-mini-latest": {
|
|
118
|
+
id: string;
|
|
119
|
+
name: string;
|
|
120
|
+
api: "openai";
|
|
121
|
+
baseUrl: string;
|
|
122
|
+
reasoning: true;
|
|
123
|
+
input: "text"[];
|
|
124
|
+
cost: {
|
|
125
|
+
input: number;
|
|
126
|
+
output: number;
|
|
127
|
+
cacheRead: number;
|
|
128
|
+
cacheWrite: number;
|
|
129
|
+
};
|
|
130
|
+
contextWindow: number;
|
|
131
|
+
maxTokens: number;
|
|
132
|
+
};
|
|
133
|
+
readonly "gpt-5-nano": {
|
|
134
|
+
id: string;
|
|
135
|
+
name: string;
|
|
136
|
+
api: "openai";
|
|
137
|
+
baseUrl: string;
|
|
138
|
+
reasoning: true;
|
|
139
|
+
input: ("text" | "image" | "file")[];
|
|
140
|
+
cost: {
|
|
141
|
+
input: number;
|
|
142
|
+
output: number;
|
|
143
|
+
cacheRead: number;
|
|
144
|
+
cacheWrite: number;
|
|
145
|
+
};
|
|
146
|
+
contextWindow: number;
|
|
147
|
+
maxTokens: number;
|
|
148
|
+
};
|
|
149
|
+
readonly "gpt-5-codex": {
|
|
150
|
+
id: string;
|
|
151
|
+
name: string;
|
|
152
|
+
api: "openai";
|
|
153
|
+
baseUrl: string;
|
|
154
|
+
reasoning: true;
|
|
155
|
+
input: ("text" | "image" | "file")[];
|
|
156
|
+
cost: {
|
|
157
|
+
input: number;
|
|
158
|
+
output: number;
|
|
159
|
+
cacheRead: number;
|
|
160
|
+
cacheWrite: number;
|
|
161
|
+
};
|
|
162
|
+
contextWindow: number;
|
|
163
|
+
maxTokens: number;
|
|
164
|
+
};
|
|
165
|
+
readonly "gpt-5-mini": {
|
|
166
|
+
id: string;
|
|
167
|
+
name: string;
|
|
168
|
+
api: "openai";
|
|
169
|
+
baseUrl: string;
|
|
170
|
+
reasoning: true;
|
|
171
|
+
input: ("text" | "image" | "file")[];
|
|
172
|
+
cost: {
|
|
173
|
+
input: number;
|
|
174
|
+
output: number;
|
|
175
|
+
cacheRead: number;
|
|
176
|
+
cacheWrite: number;
|
|
177
|
+
};
|
|
178
|
+
contextWindow: number;
|
|
179
|
+
maxTokens: number;
|
|
180
|
+
};
|
|
181
|
+
readonly "gpt-5.1-codex-max": {
|
|
182
|
+
id: string;
|
|
183
|
+
name: string;
|
|
184
|
+
api: "openai";
|
|
185
|
+
baseUrl: string;
|
|
186
|
+
reasoning: true;
|
|
187
|
+
input: ("text" | "image" | "file")[];
|
|
188
|
+
cost: {
|
|
189
|
+
input: number;
|
|
190
|
+
output: number;
|
|
191
|
+
cacheRead: number;
|
|
192
|
+
cacheWrite: number;
|
|
193
|
+
};
|
|
194
|
+
contextWindow: number;
|
|
195
|
+
maxTokens: number;
|
|
196
|
+
};
|
|
197
|
+
readonly "gpt-5": {
|
|
198
|
+
id: string;
|
|
199
|
+
name: string;
|
|
200
|
+
api: "openai";
|
|
201
|
+
baseUrl: string;
|
|
202
|
+
reasoning: true;
|
|
203
|
+
input: ("text" | "image" | "file")[];
|
|
204
|
+
cost: {
|
|
205
|
+
input: number;
|
|
206
|
+
output: number;
|
|
207
|
+
cacheRead: number;
|
|
208
|
+
cacheWrite: number;
|
|
209
|
+
};
|
|
210
|
+
contextWindow: number;
|
|
211
|
+
maxTokens: number;
|
|
212
|
+
};
|
|
213
|
+
readonly "gpt-5-pro": {
|
|
214
|
+
id: string;
|
|
215
|
+
name: string;
|
|
216
|
+
api: "openai";
|
|
217
|
+
baseUrl: string;
|
|
218
|
+
reasoning: true;
|
|
219
|
+
input: ("text" | "image" | "file")[];
|
|
220
|
+
cost: {
|
|
221
|
+
input: number;
|
|
222
|
+
output: number;
|
|
223
|
+
cacheRead: number;
|
|
224
|
+
cacheWrite: number;
|
|
225
|
+
};
|
|
226
|
+
contextWindow: number;
|
|
227
|
+
maxTokens: number;
|
|
228
|
+
};
|
|
229
|
+
readonly "gpt-5.1-chat-latest": {
|
|
230
|
+
id: string;
|
|
231
|
+
name: string;
|
|
232
|
+
api: "openai";
|
|
233
|
+
baseUrl: string;
|
|
234
|
+
reasoning: true;
|
|
235
|
+
input: ("text" | "image" | "file")[];
|
|
236
|
+
cost: {
|
|
237
|
+
input: number;
|
|
238
|
+
output: number;
|
|
239
|
+
cacheRead: number;
|
|
240
|
+
cacheWrite: number;
|
|
241
|
+
};
|
|
242
|
+
contextWindow: number;
|
|
243
|
+
maxTokens: number;
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=models.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.generated.d.ts","sourceRoot":"","sources":["../src/models.generated.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoTT,CAAC"}
|