@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 @@
|
|
|
1
|
+
{"version":3,"file":"test-google-agent-loop.js","sourceRoot":"","sources":["../src/test-google-agent-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-google.d.ts","sourceRoot":"","sources":["../src/test-google.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const google_1 = require("./providers/google");
|
|
4
|
+
const models_generated_1 = require("./models.generated");
|
|
5
|
+
const genai_1 = require("@google/genai");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const typebox_1 = require("@sinclair/typebox");
|
|
8
|
+
const schema = typebox_1.Type.Object({
|
|
9
|
+
sign: typebox_1.Type.String({ description: "An astrological sign like Taurus or Aquarius" }),
|
|
10
|
+
});
|
|
11
|
+
const getHoroscope = {
|
|
12
|
+
name: "get_horoscope",
|
|
13
|
+
description: "Get today's horoscope for an astrological sign.",
|
|
14
|
+
parameters: schema
|
|
15
|
+
};
|
|
16
|
+
const main = async () => {
|
|
17
|
+
const context = {
|
|
18
|
+
systemPrompt: 'Be a helpful assistant',
|
|
19
|
+
messages: [{
|
|
20
|
+
role: 'user',
|
|
21
|
+
content: [{
|
|
22
|
+
type: 'text',
|
|
23
|
+
content: 'What is my horoscope? I am an Aquarius. Use the tool'
|
|
24
|
+
}],
|
|
25
|
+
timestamp: 0
|
|
26
|
+
}],
|
|
27
|
+
tools: [getHoroscope]
|
|
28
|
+
};
|
|
29
|
+
const stream = (0, google_1.streamGoogle)(models_generated_1.MODELS.google["gemini-3-pro-preview"], context, {
|
|
30
|
+
thinkingConfig: {
|
|
31
|
+
thinkingLevel: genai_1.ThinkingLevel.LOW
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
for await (const chunk of stream) {
|
|
35
|
+
(0, fs_1.appendFileSync)('/Users/notacoder/Desktop/frontier-agents/providers/assistant.txt', JSON.stringify(chunk, null, 2) + '\n');
|
|
36
|
+
}
|
|
37
|
+
const finalResp = await stream.result();
|
|
38
|
+
(0, fs_1.appendFileSync)('/Users/notacoder/Desktop/frontier-agents/providers/finalResp.txt', JSON.stringify(finalResp, null, 2) + '\n');
|
|
39
|
+
};
|
|
40
|
+
main();
|
|
41
|
+
//# sourceMappingURL=test-google.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-google.js","sourceRoot":"","sources":["../src/test-google.ts"],"names":[],"mappings":";;AAAA,+CAAkD;AAClD,yDAA0C;AAE1C,yCAA8C;AAC9C,2BAAoC;AACpC,+CAAyC;AAEzC,MAAM,MAAM,GAAG,cAAI,CAAC,MAAM,CAAC;IAC1B,IAAI,EAAE,cAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;CAClF,CAAC,CAAC;AAEH,MAAM,YAAY,GAAS;IACvB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,iDAAiD;IAC9D,UAAU,EAAE,MAAM;CACrB,CAAA;AAED,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IAEpB,MAAM,OAAO,GAAY;QACrB,YAAY,EAAE,wBAAwB;QACtC,QAAQ,EAAE,CAAC;gBACP,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,CAAC;wBACN,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,sDAAsD;qBAClE,CAAC;gBACF,SAAS,EAAE,CAAC;aACf,CAAC;QACF,KAAK,EAAE,CAAC,YAAY,CAAC;KACxB,CAAA;IAED,MAAM,MAAM,GAAG,IAAA,qBAAY,EACvB,yBAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,EACrC,OAAO,EACP;QACI,cAAc,EAAE;YACZ,aAAa,EAAE,qBAAa,CAAC,GAAG;SACnC;KACJ,CACJ,CAAA;IAED,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAC,CAAC;QAC9B,IAAA,mBAAc,EAAC,kEAAkE,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9H,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IACxC,IAAA,mBAAc,EAAC,kEAAkE,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAClI,CAAC,CAAA;AAED,IAAI,EAAE,CAAA"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { Response } from "openai/resources/responses/responses.js";
|
|
2
|
+
import type { TSchema } from "@sinclair/typebox";
|
|
3
|
+
import { OpenAIProviderOptions } from "./providers/openai";
|
|
4
|
+
import { AssistantMessageEventStream } from "./utils/event-stream";
|
|
5
|
+
import { GoogleProviderOptions } from "./providers/google";
|
|
6
|
+
import type { GenerateContentResponse } from "@google/genai";
|
|
7
|
+
export type Api = 'openai' | 'google';
|
|
8
|
+
export interface Model<TApi extends Api> {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
api: TApi;
|
|
12
|
+
baseUrl: string;
|
|
13
|
+
reasoning: boolean;
|
|
14
|
+
input: ("text" | "image" | "file")[];
|
|
15
|
+
cost: {
|
|
16
|
+
input: number;
|
|
17
|
+
output: number;
|
|
18
|
+
cacheRead: number;
|
|
19
|
+
cacheWrite: number;
|
|
20
|
+
};
|
|
21
|
+
contextWindow: number;
|
|
22
|
+
maxTokens: number;
|
|
23
|
+
headers?: Record<string, string>;
|
|
24
|
+
}
|
|
25
|
+
export interface UserMessage {
|
|
26
|
+
role: "user";
|
|
27
|
+
timestamp: number;
|
|
28
|
+
content: (UserTextContent | UserImageContent | UserFileContent)[];
|
|
29
|
+
}
|
|
30
|
+
export interface ToolResultMessage<TDetails = any> {
|
|
31
|
+
role: "toolResult";
|
|
32
|
+
toolName: string;
|
|
33
|
+
toolCallId?: string;
|
|
34
|
+
content: (UserTextContent | UserImageContent | UserFileContent)[];
|
|
35
|
+
details?: TDetails;
|
|
36
|
+
isError: boolean;
|
|
37
|
+
error?: {
|
|
38
|
+
message: string;
|
|
39
|
+
name?: string;
|
|
40
|
+
stack?: string;
|
|
41
|
+
};
|
|
42
|
+
timestamp: number;
|
|
43
|
+
}
|
|
44
|
+
export interface UserImageContent {
|
|
45
|
+
type: "image";
|
|
46
|
+
data: string;
|
|
47
|
+
mimeType: string;
|
|
48
|
+
}
|
|
49
|
+
export interface UserFileContent {
|
|
50
|
+
type: "file";
|
|
51
|
+
data: string;
|
|
52
|
+
mimeType: string;
|
|
53
|
+
}
|
|
54
|
+
export interface UserTextContent {
|
|
55
|
+
type: 'text';
|
|
56
|
+
content: string;
|
|
57
|
+
}
|
|
58
|
+
export interface NativeOpenAIMessage {
|
|
59
|
+
role: "assistant";
|
|
60
|
+
_provider: 'openai';
|
|
61
|
+
message: Response;
|
|
62
|
+
}
|
|
63
|
+
export interface NativeGoogleMessage {
|
|
64
|
+
role: "assistant";
|
|
65
|
+
_provider: 'google';
|
|
66
|
+
message: GenerateContentResponse;
|
|
67
|
+
}
|
|
68
|
+
export type NativeAssistantMessage = NativeOpenAIMessage | NativeGoogleMessage;
|
|
69
|
+
export type Message = UserMessage | NativeAssistantMessage | ToolResultMessage;
|
|
70
|
+
export interface Tool<TParameters extends TSchema = TSchema, TName extends string = string> {
|
|
71
|
+
name: TName;
|
|
72
|
+
description: string;
|
|
73
|
+
parameters: TParameters;
|
|
74
|
+
}
|
|
75
|
+
export type ToolName<TTool extends Tool> = TTool["name"];
|
|
76
|
+
export type ToolNames<TTools extends readonly Tool[]> = TTools[number]["name"];
|
|
77
|
+
export declare function defineTool<TParameters extends TSchema, TName extends string>(tool: Tool<TParameters, TName>): Tool<TParameters, TName>;
|
|
78
|
+
export interface Context<TTools extends readonly Tool[] = readonly Tool[]> {
|
|
79
|
+
messages: Message[];
|
|
80
|
+
systemPrompt?: string;
|
|
81
|
+
tools?: TTools;
|
|
82
|
+
}
|
|
83
|
+
export interface Usage {
|
|
84
|
+
input: number;
|
|
85
|
+
output: number;
|
|
86
|
+
cacheRead: number;
|
|
87
|
+
cacheWrite: number;
|
|
88
|
+
totalTokens: number;
|
|
89
|
+
cost: {
|
|
90
|
+
input: number;
|
|
91
|
+
output: number;
|
|
92
|
+
cacheRead: number;
|
|
93
|
+
cacheWrite: number;
|
|
94
|
+
total: number;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export type StopReason = "stop" | "length" | "toolUse" | "error" | "aborted";
|
|
98
|
+
export interface AssistantMessage {
|
|
99
|
+
role: "assistant";
|
|
100
|
+
content: (AssistantTextContent | AssistantThinkingContent | AssistantToolCall | AbstractedImageContent)[];
|
|
101
|
+
api: Api;
|
|
102
|
+
model: string;
|
|
103
|
+
usage: Usage;
|
|
104
|
+
stopReason: StopReason;
|
|
105
|
+
errorMessage?: string;
|
|
106
|
+
timestamp: number;
|
|
107
|
+
}
|
|
108
|
+
export interface AssistantTextContent {
|
|
109
|
+
type: 'text';
|
|
110
|
+
text: string;
|
|
111
|
+
}
|
|
112
|
+
export interface AssistantThinkingContent {
|
|
113
|
+
type: 'thinking';
|
|
114
|
+
thinking: string;
|
|
115
|
+
}
|
|
116
|
+
export interface AssistantToolCall {
|
|
117
|
+
type: "toolCall";
|
|
118
|
+
name: string;
|
|
119
|
+
arguments: Record<string, any>;
|
|
120
|
+
id?: string;
|
|
121
|
+
}
|
|
122
|
+
export interface AbstractedImageContent {
|
|
123
|
+
type: "image";
|
|
124
|
+
data: string;
|
|
125
|
+
mimeType: string;
|
|
126
|
+
}
|
|
127
|
+
export type AssistantMessageEvent = {
|
|
128
|
+
type: "start";
|
|
129
|
+
partial: AssistantMessage;
|
|
130
|
+
} | {
|
|
131
|
+
type: "text_start";
|
|
132
|
+
contentIndex: number;
|
|
133
|
+
partial: AssistantMessage;
|
|
134
|
+
} | {
|
|
135
|
+
type: "text_delta";
|
|
136
|
+
contentIndex: number;
|
|
137
|
+
delta: string;
|
|
138
|
+
partial: AssistantMessage;
|
|
139
|
+
} | {
|
|
140
|
+
type: "text_end";
|
|
141
|
+
contentIndex: number;
|
|
142
|
+
content: string;
|
|
143
|
+
partial: AssistantMessage;
|
|
144
|
+
} | {
|
|
145
|
+
type: "thinking_start";
|
|
146
|
+
contentIndex: number;
|
|
147
|
+
partial: AssistantMessage;
|
|
148
|
+
} | {
|
|
149
|
+
type: "thinking_delta";
|
|
150
|
+
contentIndex: number;
|
|
151
|
+
delta: string;
|
|
152
|
+
partial: AssistantMessage;
|
|
153
|
+
} | {
|
|
154
|
+
type: "thinking_end";
|
|
155
|
+
contentIndex: number;
|
|
156
|
+
content: string;
|
|
157
|
+
partial: AssistantMessage;
|
|
158
|
+
} | {
|
|
159
|
+
type: "toolcall_start";
|
|
160
|
+
contentIndex: number;
|
|
161
|
+
partial: AssistantMessage;
|
|
162
|
+
} | {
|
|
163
|
+
type: "toolcall_delta";
|
|
164
|
+
contentIndex: number;
|
|
165
|
+
delta: string;
|
|
166
|
+
partial: AssistantMessage;
|
|
167
|
+
} | {
|
|
168
|
+
type: "toolcall_end";
|
|
169
|
+
contentIndex: number;
|
|
170
|
+
toolCall: AssistantToolCall;
|
|
171
|
+
partial: AssistantMessage;
|
|
172
|
+
} | {
|
|
173
|
+
type: "done";
|
|
174
|
+
reason: Extract<StopReason, "stop" | "length" | "toolUse">;
|
|
175
|
+
message: AssistantMessage;
|
|
176
|
+
} | {
|
|
177
|
+
type: "error";
|
|
178
|
+
reason: Extract<StopReason, "aborted" | "error">;
|
|
179
|
+
error: AssistantMessage;
|
|
180
|
+
};
|
|
181
|
+
export interface ApiOptionsMap {
|
|
182
|
+
"openai": OpenAIProviderOptions;
|
|
183
|
+
"google": GoogleProviderOptions;
|
|
184
|
+
}
|
|
185
|
+
export type OptionsForApi<TApi extends Api> = ApiOptionsMap[TApi];
|
|
186
|
+
export type StreamFunction<TApi extends Api> = (model: Model<TApi>, context: Context, options: OptionsForApi<TApi>) => AssistantMessageEventStream;
|
|
187
|
+
//# 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,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineTool = defineTool;
|
|
4
|
+
// Helper function to create a tool with better type inference
|
|
5
|
+
// Use 'as const' on the tool array for best autocomplete:
|
|
6
|
+
// const tools = [defineTool({ name: "calculator", ... }), ...] as const
|
|
7
|
+
function defineTool(tool) {
|
|
8
|
+
return tool;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AAqGA,gCAIC;AAPD,8DAA8D;AAC9D,0DAA0D;AAC1D,wEAAwE;AACxE,SAAgB,UAAU,CACzB,IAA8B;IAE9B,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NativeAssistantMessage, AssistantMessageEvent } from "../types";
|
|
2
|
+
export declare class EventStream<T, R = T> implements AsyncIterable<T> {
|
|
3
|
+
private queue;
|
|
4
|
+
private waiting;
|
|
5
|
+
private done;
|
|
6
|
+
private finalResultPromise;
|
|
7
|
+
private resolveFinalResult;
|
|
8
|
+
constructor();
|
|
9
|
+
push(event: T): void;
|
|
10
|
+
end(result: R): void;
|
|
11
|
+
[Symbol.asyncIterator](): AsyncIterator<T>;
|
|
12
|
+
result(): Promise<R>;
|
|
13
|
+
}
|
|
14
|
+
export declare class AssistantMessageEventStream extends EventStream<AssistantMessageEvent, NativeAssistantMessage> {
|
|
15
|
+
}
|
|
16
|
+
//# 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,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGzE,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,OAAO,CAA8C;IAC7D,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,kBAAkB,CAAuB;;IAQjD,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAYpB,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI;IAYb,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;IAcjD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;CAGpB;AAED,qBAAa,2BAA4B,SAAQ,WAAW,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;CAAG"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AssistantMessageEventStream = exports.EventStream = void 0;
|
|
4
|
+
// Generic event stream class for async iteration
|
|
5
|
+
class EventStream {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.queue = [];
|
|
8
|
+
this.waiting = [];
|
|
9
|
+
this.done = false;
|
|
10
|
+
this.finalResultPromise = new Promise((resolve) => {
|
|
11
|
+
this.resolveFinalResult = resolve;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
push(event) {
|
|
15
|
+
if (this.done)
|
|
16
|
+
return;
|
|
17
|
+
// Deliver to waiting consumer or queue it
|
|
18
|
+
const waiter = this.waiting.shift();
|
|
19
|
+
if (waiter) {
|
|
20
|
+
waiter({ value: event, done: false });
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.queue.push(event);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
end(result) {
|
|
27
|
+
this.done = true;
|
|
28
|
+
// Always resolve the final result to prevent deadlock
|
|
29
|
+
this.resolveFinalResult(result);
|
|
30
|
+
// Notify all waiting consumers that we're done
|
|
31
|
+
while (this.waiting.length > 0) {
|
|
32
|
+
const waiter = this.waiting.shift();
|
|
33
|
+
// When done is true, value type is the return type (void for async generators)
|
|
34
|
+
waiter({ done: true, value: undefined });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async *[Symbol.asyncIterator]() {
|
|
38
|
+
while (true) {
|
|
39
|
+
if (this.queue.length > 0) {
|
|
40
|
+
yield this.queue.shift();
|
|
41
|
+
}
|
|
42
|
+
else if (this.done) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const result = await new Promise((resolve) => this.waiting.push(resolve));
|
|
47
|
+
if (result.done)
|
|
48
|
+
return;
|
|
49
|
+
yield result.value;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
result() {
|
|
54
|
+
return this.finalResultPromise;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.EventStream = EventStream;
|
|
58
|
+
class AssistantMessageEventStream extends EventStream {
|
|
59
|
+
}
|
|
60
|
+
exports.AssistantMessageEventStream = AssistantMessageEventStream;
|
|
61
|
+
//# sourceMappingURL=event-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-stream.js","sourceRoot":"","sources":["../../src/utils/event-stream.ts"],"names":[],"mappings":";;;AAEA,iDAAiD;AACjD,MAAa,WAAW;IAOvB;QANQ,UAAK,GAAQ,EAAE,CAAC;QAChB,YAAO,GAA2C,EAAE,CAAC;QACrD,SAAI,GAAG,KAAK,CAAC;QAKpB,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACjD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAQ;QACZ,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QAEtB,0CAA0C;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;IAED,GAAG,CAAC,MAAS;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,sDAAsD;QACtD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAChC,+CAA+C;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAG,CAAC;YACrC,+EAA+E;YAC/E,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAU,EAAE,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC5B,OAAO,IAAI,EAAE,CAAC;YACb,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;YAC3B,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACtB,OAAO;YACR,CAAC;iBAAM,CAAC;gBACP,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7F,IAAI,MAAM,CAAC,IAAI;oBAAE,OAAO;gBACxB,MAAM,MAAM,CAAC,KAAK,CAAC;YACpB,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,kBAAkB,CAAC;IAChC,CAAC;CACD;AAtDD,kCAsDC;AAED,MAAa,2BAA4B,SAAQ,WAA0D;CAAG;AAA9G,kEAA8G"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attempts to parse potentially incomplete JSON during streaming.
|
|
3
|
+
* Always returns a valid object, even if the JSON is incomplete.
|
|
4
|
+
*
|
|
5
|
+
* @param partialJson The partial JSON string from streaming
|
|
6
|
+
* @returns Parsed object or empty object if parsing fails
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseStreamingJson<T = any>(partialJson: string | undefined): T;
|
|
9
|
+
//# sourceMappingURL=json-parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-parse.d.ts","sourceRoot":"","sources":["../../src/utils/json-parse.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,CAkB9E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseStreamingJson = parseStreamingJson;
|
|
4
|
+
const partial_json_1 = require("partial-json");
|
|
5
|
+
/**
|
|
6
|
+
* Attempts to parse potentially incomplete JSON during streaming.
|
|
7
|
+
* Always returns a valid object, even if the JSON is incomplete.
|
|
8
|
+
*
|
|
9
|
+
* @param partialJson The partial JSON string from streaming
|
|
10
|
+
* @returns Parsed object or empty object if parsing fails
|
|
11
|
+
*/
|
|
12
|
+
function parseStreamingJson(partialJson) {
|
|
13
|
+
if (!partialJson || partialJson.trim() === "") {
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
// Try standard parsing first (fastest for complete JSON)
|
|
17
|
+
try {
|
|
18
|
+
return JSON.parse(partialJson);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// Try partial-json for incomplete JSON
|
|
22
|
+
try {
|
|
23
|
+
const result = (0, partial_json_1.parse)(partialJson);
|
|
24
|
+
return (result ?? {});
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// If all parsing fails, return empty object
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=json-parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-parse.js","sourceRoot":"","sources":["../../src/utils/json-parse.ts"],"names":[],"mappings":";;AASA,gDAkBC;AA3BD,+CAAqD;AAErD;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAU,WAA+B;IAC1E,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,OAAO,EAAO,CAAC;IAChB,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAM,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACR,uCAAuC;QACvC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,WAAW,CAAC,CAAC;YACzC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAM,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACR,4CAA4C;YAC5C,OAAO,EAAO,CAAC;QAChB,CAAC;IACF,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Removes unpaired Unicode surrogate characters from a string.
|
|
3
|
+
*
|
|
4
|
+
* Unpaired surrogates (high surrogates 0xD800-0xDBFF without matching low surrogates 0xDC00-0xDFFF,
|
|
5
|
+
* or vice versa) cause JSON serialization errors in many API providers.
|
|
6
|
+
*
|
|
7
|
+
* Valid emoji and other characters outside the Basic Multilingual Plane use properly paired
|
|
8
|
+
* surrogates and will NOT be affected by this function.
|
|
9
|
+
*
|
|
10
|
+
* @param text - The text to sanitize
|
|
11
|
+
* @returns The sanitized text with unpaired surrogates removed
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // Valid emoji (properly paired surrogates) are preserved
|
|
15
|
+
* sanitizeSurrogates("Hello 🙈 World") // => "Hello 🙈 World"
|
|
16
|
+
*
|
|
17
|
+
* // Unpaired high surrogate is removed
|
|
18
|
+
* const unpaired = String.fromCharCode(0xD83D); // high surrogate without low
|
|
19
|
+
* sanitizeSurrogates(`Text ${unpaired} here`) // => "Text here"
|
|
20
|
+
*/
|
|
21
|
+
export declare function sanitizeSurrogates(text: string): string;
|
|
22
|
+
//# sourceMappingURL=sanitize-unicode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-unicode.d.ts","sourceRoot":"","sources":["../../src/utils/sanitize-unicode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIvD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sanitizeSurrogates = sanitizeSurrogates;
|
|
4
|
+
/**
|
|
5
|
+
* Removes unpaired Unicode surrogate characters from a string.
|
|
6
|
+
*
|
|
7
|
+
* Unpaired surrogates (high surrogates 0xD800-0xDBFF without matching low surrogates 0xDC00-0xDFFF,
|
|
8
|
+
* or vice versa) cause JSON serialization errors in many API providers.
|
|
9
|
+
*
|
|
10
|
+
* Valid emoji and other characters outside the Basic Multilingual Plane use properly paired
|
|
11
|
+
* surrogates and will NOT be affected by this function.
|
|
12
|
+
*
|
|
13
|
+
* @param text - The text to sanitize
|
|
14
|
+
* @returns The sanitized text with unpaired surrogates removed
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // Valid emoji (properly paired surrogates) are preserved
|
|
18
|
+
* sanitizeSurrogates("Hello 🙈 World") // => "Hello 🙈 World"
|
|
19
|
+
*
|
|
20
|
+
* // Unpaired high surrogate is removed
|
|
21
|
+
* const unpaired = String.fromCharCode(0xD83D); // high surrogate without low
|
|
22
|
+
* sanitizeSurrogates(`Text ${unpaired} here`) // => "Text here"
|
|
23
|
+
*/
|
|
24
|
+
function sanitizeSurrogates(text) {
|
|
25
|
+
// Replace unpaired high surrogates (0xD800-0xDBFF not followed by low surrogate)
|
|
26
|
+
// Replace unpaired low surrogates (0xDC00-0xDFFF not preceded by high surrogate)
|
|
27
|
+
return text.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g, "");
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=sanitize-unicode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-unicode.js","sourceRoot":"","sources":["../../src/utils/sanitize-unicode.ts"],"names":[],"mappings":";;AAoBA,gDAIC;AAxBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC9C,iFAAiF;IACjF,iFAAiF;IACjF,OAAO,IAAI,CAAC,OAAO,CAAC,yEAAyE,EAAE,EAAE,CAAC,CAAC;AACpG,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Tool, AssistantToolCall } from "../types.js";
|
|
2
|
+
import type { TSchema, Static } from "@sinclair/typebox";
|
|
3
|
+
/**
|
|
4
|
+
* Validates tool call arguments against the tool's TypeBox schema
|
|
5
|
+
* @param tool The tool definition with TypeBox schema
|
|
6
|
+
* @param toolCall The tool call from the LLM
|
|
7
|
+
* @returns The validated arguments with proper typing
|
|
8
|
+
* @throws Error with formatted message if validation fails
|
|
9
|
+
*/
|
|
10
|
+
export declare function validateToolArguments<TParameters extends TSchema>(tool: Tool<TParameters>, toolCall: AssistantToolCall): Static<TParameters>;
|
|
11
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAsBzD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,SAAS,OAAO,EAChE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,EACvB,QAAQ,EAAE,iBAAiB,GACzB,MAAM,CAAC,WAAW,CAAC,CA4BrB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validateToolArguments = validateToolArguments;
|
|
7
|
+
const ajv_1 = __importDefault(require("ajv"));
|
|
8
|
+
const ajv_formats_1 = __importDefault(require("ajv-formats"));
|
|
9
|
+
// Handle both default and named exports
|
|
10
|
+
const Ajv = ajv_1.default.default || ajv_1.default;
|
|
11
|
+
const addFormats = ajv_formats_1.default.default || ajv_formats_1.default;
|
|
12
|
+
// Detect if we're in a browser extension environment with strict CSP
|
|
13
|
+
// Chrome extensions with Manifest V3 don't allow eval/Function constructor
|
|
14
|
+
const isBrowserExtension = typeof globalThis !== "undefined" && globalThis.chrome?.runtime?.id !== undefined;
|
|
15
|
+
// Create a singleton AJV instance with formats (only if not in browser extension)
|
|
16
|
+
// AJV requires 'unsafe-eval' CSP which is not allowed in Manifest V3
|
|
17
|
+
let ajv = null;
|
|
18
|
+
if (!isBrowserExtension) {
|
|
19
|
+
try {
|
|
20
|
+
ajv = new Ajv({
|
|
21
|
+
allErrors: true,
|
|
22
|
+
strict: false,
|
|
23
|
+
});
|
|
24
|
+
addFormats(ajv);
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
// AJV initialization failed (likely CSP restriction)
|
|
28
|
+
console.warn("AJV validation disabled due to CSP restrictions");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Validates tool call arguments against the tool's TypeBox schema
|
|
33
|
+
* @param tool The tool definition with TypeBox schema
|
|
34
|
+
* @param toolCall The tool call from the LLM
|
|
35
|
+
* @returns The validated arguments with proper typing
|
|
36
|
+
* @throws Error with formatted message if validation fails
|
|
37
|
+
*/
|
|
38
|
+
function validateToolArguments(tool, toolCall) {
|
|
39
|
+
// Skip validation in browser extension environment (CSP restrictions prevent AJV from working)
|
|
40
|
+
if (!ajv || isBrowserExtension) {
|
|
41
|
+
// Trust the LLM's output without validation
|
|
42
|
+
// Browser extensions can't use AJV due to Manifest V3 CSP restrictions
|
|
43
|
+
return toolCall.arguments;
|
|
44
|
+
}
|
|
45
|
+
// Compile the schema
|
|
46
|
+
const validate = ajv.compile(tool.parameters);
|
|
47
|
+
// Validate the arguments
|
|
48
|
+
if (validate(toolCall.arguments)) {
|
|
49
|
+
return toolCall.arguments;
|
|
50
|
+
}
|
|
51
|
+
// Format validation errors nicely
|
|
52
|
+
const errors = validate.errors
|
|
53
|
+
?.map((err) => {
|
|
54
|
+
const path = err.instancePath ? err.instancePath.substring(1) : err.params.missingProperty || "root";
|
|
55
|
+
return ` - ${path}: ${err.message}`;
|
|
56
|
+
})
|
|
57
|
+
.join("\n") || "Unknown validation error";
|
|
58
|
+
const errorMessage = `Validation failed for tool "${toolCall.name}":\n${errors}\n\nReceived arguments:\n${JSON.stringify(toolCall.arguments, null, 2)}`;
|
|
59
|
+
throw new Error(errorMessage);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":";;;;;AAqCA,sDA+BC;AApED,8CAA4B;AAC5B,8DAA2C;AAE3C,wCAAwC;AACxC,MAAM,GAAG,GAAI,aAAiB,CAAC,OAAO,IAAI,aAAS,CAAC;AACpD,MAAM,UAAU,GAAI,qBAAwB,CAAC,OAAO,IAAI,qBAAgB,CAAC;AAKzE,qEAAqE;AACrE,2EAA2E;AAC3E,MAAM,kBAAkB,GAAG,OAAO,UAAU,KAAK,WAAW,IAAK,UAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,SAAS,CAAC;AAEtH,kFAAkF;AAClF,qEAAqE;AACrE,IAAI,GAAG,GAAQ,IAAI,CAAC;AACpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACzB,IAAI,CAAC;QACJ,GAAG,GAAG,IAAI,GAAG,CAAC;YACb,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK;SACb,CAAC,CAAC;QACH,UAAU,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,qDAAqD;QACrD,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CACpC,IAAuB,EACvB,QAA2B;IAE3B,+FAA+F;IAC/F,IAAI,CAAC,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAChC,4CAA4C;QAC5C,uEAAuE;QACvE,OAAO,QAAQ,CAAC,SAAgC,CAAC;IAClD,CAAC;IAED,qBAAqB;IACrB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE9C,yBAAyB;IACzB,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC,SAAgC,CAAC;IAClD,CAAC;IAED,kCAAkC;IAClC,MAAM,MAAM,GACX,QAAQ,CAAC,MAAM;QACd,EAAE,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;QAClB,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC;QACrG,OAAO,OAAO,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC;IAE5C,MAAM,YAAY,GAAG,+BAA+B,QAAQ,CAAC,IAAI,OAAO,MAAM,4BAA4B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAExJ,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAC/B,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ank1015/providers",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "LLM providers",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"dev": "tsc --watch",
|
|
10
|
+
"start": "node dist/index.js",
|
|
11
|
+
"clean": "rm -rf dist",
|
|
12
|
+
"check": "biome check --write . && tsc --noEmit",
|
|
13
|
+
"test": "vitest --run"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [],
|
|
16
|
+
"author": "",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@anthropic-ai/sdk": "^0.71.0",
|
|
20
|
+
"@biomejs/biome": "^2.3.8",
|
|
21
|
+
"@google/genai": "^1.30.0",
|
|
22
|
+
"@sinclair/typebox": "^0.34.41",
|
|
23
|
+
"ajv": "^8.17.1",
|
|
24
|
+
"ajv-formats": "^3.0.1",
|
|
25
|
+
"openai": "^6.9.1",
|
|
26
|
+
"partial-json": "^0.1.7",
|
|
27
|
+
"typescript": "^5.9.3"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^24.10.1",
|
|
31
|
+
"vitest": "^4.0.14"
|
|
32
|
+
}
|
|
33
|
+
}
|