peerbench 0.0.1 → 0.0.2-alpha-dev.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 +332 -2
- package/dist/abstract-Dec9Sc5O.d.ts +12 -0
- package/dist/aggregators/index.d.ts +67 -0
- package/dist/aggregators/index.js +46 -0
- package/dist/aggregators/index.js.map +1 -0
- package/dist/benchmarks/index.d.ts +1041 -0
- package/dist/benchmarks/index.js +458 -0
- package/dist/benchmarks/index.js.map +1 -0
- package/dist/chunk-4UBK6452.js +128 -0
- package/dist/chunk-4UBK6452.js.map +1 -0
- package/dist/chunk-ERALDEZY.js +112 -0
- package/dist/chunk-ERALDEZY.js.map +1 -0
- package/dist/chunk-HMQYGCKI.js +11 -0
- package/dist/chunk-HMQYGCKI.js.map +1 -0
- package/dist/chunk-NUEOE3K5.js +8 -0
- package/dist/chunk-NUEOE3K5.js.map +1 -0
- package/dist/chunk-OQE6TQXZ.js +42 -0
- package/dist/chunk-OQE6TQXZ.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-Q6GSOHOP.js +44 -0
- package/dist/chunk-Q6GSOHOP.js.map +1 -0
- package/dist/chunk-QY5MPNNB.js +28 -0
- package/dist/chunk-QY5MPNNB.js.map +1 -0
- package/dist/chunk-R76XA2K6.js +229 -0
- package/dist/chunk-R76XA2K6.js.map +1 -0
- package/dist/chunk-TRNCF2BG.js +35 -0
- package/dist/chunk-TRNCF2BG.js.map +1 -0
- package/dist/chunk-UHHHSYVE.js +11 -0
- package/dist/chunk-UHHHSYVE.js.map +1 -0
- package/dist/chunk-YY33MNMV.js +65 -0
- package/dist/chunk-YY33MNMV.js.map +1 -0
- package/dist/chunk-ZEWI24CV.js +365 -0
- package/dist/chunk-ZEWI24CV.js.map +1 -0
- package/dist/index-BAioQhp2.d.ts +27 -0
- package/dist/index.d.ts +59 -3841
- package/dist/index.js +31 -3545
- package/dist/index.js.map +1 -1
- package/dist/json-file-ZwzLUbje.d.ts +73 -0
- package/dist/llm-DNj_tp2T.d.ts +22 -0
- package/dist/llm-judge-QThCZ9TQ.d.ts +67 -0
- package/dist/provider-BDjGp2y-.d.ts +10 -0
- package/dist/providers/index.d.ts +69 -0
- package/dist/providers/index.js +18 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/rate-limiter-CSmVIRsM.d.ts +60 -0
- package/dist/schemas/extensions/index.d.ts +28 -0
- package/dist/schemas/extensions/index.js +19 -0
- package/dist/schemas/extensions/index.js.map +1 -0
- package/dist/schemas/index.d.ts +200 -0
- package/dist/schemas/index.js +24 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/llm/index.d.ts +116 -0
- package/dist/schemas/llm/index.js +15 -0
- package/dist/schemas/llm/index.js.map +1 -0
- package/dist/scorers/index.d.ts +64 -0
- package/dist/scorers/index.js +16 -0
- package/dist/scorers/index.js.map +1 -0
- package/dist/storages/index.d.ts +69 -0
- package/dist/storages/index.js +98 -0
- package/dist/storages/index.js.map +1 -0
- package/package.json +46 -22
- package/LICENSE +0 -21
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { W as WidenZodObject, I as IdGenerator } from '../../index-BAioQhp2.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import '../../provider-BDjGp2y-.js';
|
|
4
|
+
import '../../abstract-Dec9Sc5O.js';
|
|
5
|
+
|
|
6
|
+
declare const BaseSystemPromptSchemaV1: z.ZodObject<{
|
|
7
|
+
id: z.ZodString;
|
|
8
|
+
namespace: z.ZodString;
|
|
9
|
+
kind: z.ZodString;
|
|
10
|
+
schemaVersion: z.ZodNumber;
|
|
11
|
+
version: z.ZodNumber;
|
|
12
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
type BaseSystemPromptV1 = z.infer<typeof BaseSystemPromptSchemaV1>;
|
|
15
|
+
declare const defineSystemPromptSchema: <TBaseSchema extends WidenZodObject<z.ZodObject<{
|
|
16
|
+
id: z.ZodString;
|
|
17
|
+
namespace: z.ZodString;
|
|
18
|
+
kind: z.ZodString;
|
|
19
|
+
schemaVersion: z.ZodNumber;
|
|
20
|
+
version: z.ZodNumber;
|
|
21
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
22
|
+
}, z.core.$strip>>, TNamespace extends string | undefined = undefined, TKind extends string | undefined = undefined, TSchemaVersion extends number | undefined = undefined, TFields extends Readonly<{
|
|
23
|
+
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
24
|
+
}> = {}>(config: {
|
|
25
|
+
baseSchema: TBaseSchema;
|
|
26
|
+
namespace?: TNamespace | undefined;
|
|
27
|
+
kind?: TKind | undefined;
|
|
28
|
+
schemaVersion?: TSchemaVersion | undefined;
|
|
29
|
+
fields?: TFields | undefined;
|
|
30
|
+
}) => (TBaseSchema extends z.ZodObject<infer U extends Readonly<{
|
|
31
|
+
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
32
|
+
}>, z.core.$strip> ? z.ZodObject<Omit<U, "kind" | "namespace" | "schemaVersion"> & TFields & {
|
|
33
|
+
namespace: TNamespace extends undefined ? U["namespace"] : z.ZodLiteral<TNamespace>;
|
|
34
|
+
kind: TKind extends undefined ? U["kind"] : z.ZodLiteral<`${TKind}.sys-prompt`>;
|
|
35
|
+
schemaVersion: TSchemaVersion extends undefined ? U["schemaVersion"] : z.ZodLiteral<TSchemaVersion>;
|
|
36
|
+
}, z.core.$strip> : never) & {
|
|
37
|
+
new: (input: Omit<z.core.output<TBaseSchema extends z.ZodObject<infer U extends Readonly<{
|
|
38
|
+
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
39
|
+
}>, z.core.$strip> ? z.ZodObject<Omit<U, "kind" | "namespace" | "schemaVersion"> & TFields & {
|
|
40
|
+
namespace: TNamespace extends undefined ? U["namespace"] : z.ZodLiteral<TNamespace>;
|
|
41
|
+
kind: TKind extends undefined ? U["kind"] : z.ZodLiteral<`${TKind}.sys-prompt`>;
|
|
42
|
+
schemaVersion: TSchemaVersion extends undefined ? U["schemaVersion"] : z.ZodLiteral<TSchemaVersion>;
|
|
43
|
+
}, z.core.$strip> : never>, "kind" | "namespace" | "schemaVersion">) => z.core.output<TBaseSchema extends z.ZodObject<infer U extends Readonly<{
|
|
44
|
+
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
45
|
+
}>, z.core.$strip> ? z.ZodObject<Omit<U, "kind" | "namespace" | "schemaVersion"> & TFields & {
|
|
46
|
+
namespace: TNamespace extends undefined ? U["namespace"] : z.ZodLiteral<TNamespace>;
|
|
47
|
+
kind: TKind extends undefined ? U["kind"] : z.ZodLiteral<`${TKind}.sys-prompt`>;
|
|
48
|
+
schemaVersion: TSchemaVersion extends undefined ? U["schemaVersion"] : z.ZodLiteral<TSchemaVersion>;
|
|
49
|
+
}, z.core.$strip> : never>;
|
|
50
|
+
newWithId(input: Omit<z.core.output<TBaseSchema extends z.ZodObject<infer U extends Readonly<{
|
|
51
|
+
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
52
|
+
}>, z.core.$strip> ? z.ZodObject<Omit<U, "kind" | "namespace" | "schemaVersion"> & TFields & {
|
|
53
|
+
namespace: TNamespace extends undefined ? U["namespace"] : z.ZodLiteral<TNamespace>;
|
|
54
|
+
kind: TKind extends undefined ? U["kind"] : z.ZodLiteral<`${TKind}.sys-prompt`>;
|
|
55
|
+
schemaVersion: TSchemaVersion extends undefined ? U["schemaVersion"] : z.ZodLiteral<TSchemaVersion>;
|
|
56
|
+
}, z.core.$strip> : never>, "id" | "kind" | "namespace" | "schemaVersion">, generator: IdGenerator): Promise<z.core.output<TBaseSchema extends z.ZodObject<infer U extends Readonly<{
|
|
57
|
+
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
58
|
+
}>, z.core.$strip> ? z.ZodObject<Omit<U, "kind" | "namespace" | "schemaVersion"> & TFields & {
|
|
59
|
+
namespace: TNamespace extends undefined ? U["namespace"] : z.ZodLiteral<TNamespace>;
|
|
60
|
+
kind: TKind extends undefined ? U["kind"] : z.ZodLiteral<`${TKind}.sys-prompt`>;
|
|
61
|
+
schemaVersion: TSchemaVersion extends undefined ? U["schemaVersion"] : z.ZodLiteral<TSchemaVersion>;
|
|
62
|
+
}, z.core.$strip> : never>>;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
declare const SimpleSystemPromptSchemaV1: z.ZodObject<Omit<{
|
|
66
|
+
id: z.ZodString;
|
|
67
|
+
namespace: z.ZodString;
|
|
68
|
+
kind: z.ZodString;
|
|
69
|
+
schemaVersion: z.ZodNumber;
|
|
70
|
+
version: z.ZodNumber;
|
|
71
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
72
|
+
}, "kind" | "namespace" | "schemaVersion"> & {
|
|
73
|
+
content: z.ZodString;
|
|
74
|
+
} & {
|
|
75
|
+
namespace: z.ZodLiteral<"peerbench.ai">;
|
|
76
|
+
kind: z.ZodLiteral<`${string}/simple.sys-prompt`>;
|
|
77
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
78
|
+
}, z.core.$strip> & {
|
|
79
|
+
new: (input: Omit<{
|
|
80
|
+
id: string;
|
|
81
|
+
version: number;
|
|
82
|
+
content: string;
|
|
83
|
+
namespace: "peerbench.ai";
|
|
84
|
+
kind: `${string}/simple.sys-prompt`;
|
|
85
|
+
schemaVersion: 1;
|
|
86
|
+
metadata?: Record<string, unknown> | undefined;
|
|
87
|
+
}, "kind" | "namespace" | "schemaVersion">) => {
|
|
88
|
+
id: string;
|
|
89
|
+
version: number;
|
|
90
|
+
content: string;
|
|
91
|
+
namespace: "peerbench.ai";
|
|
92
|
+
kind: `${string}/simple.sys-prompt`;
|
|
93
|
+
schemaVersion: 1;
|
|
94
|
+
metadata?: Record<string, unknown> | undefined;
|
|
95
|
+
};
|
|
96
|
+
newWithId(input: Omit<{
|
|
97
|
+
id: string;
|
|
98
|
+
version: number;
|
|
99
|
+
content: string;
|
|
100
|
+
namespace: "peerbench.ai";
|
|
101
|
+
kind: `${string}/simple.sys-prompt`;
|
|
102
|
+
schemaVersion: 1;
|
|
103
|
+
metadata?: Record<string, unknown> | undefined;
|
|
104
|
+
}, "id" | "kind" | "namespace" | "schemaVersion">, generator: IdGenerator): Promise<{
|
|
105
|
+
id: string;
|
|
106
|
+
version: number;
|
|
107
|
+
content: string;
|
|
108
|
+
namespace: "peerbench.ai";
|
|
109
|
+
kind: `${string}/simple.sys-prompt`;
|
|
110
|
+
schemaVersion: 1;
|
|
111
|
+
metadata?: Record<string, unknown> | undefined;
|
|
112
|
+
}>;
|
|
113
|
+
};
|
|
114
|
+
type SimpleSystemPromptV1 = z.infer<typeof SimpleSystemPromptSchemaV1>;
|
|
115
|
+
|
|
116
|
+
export { BaseSystemPromptSchemaV1, type BaseSystemPromptV1, SimpleSystemPromptSchemaV1, type SimpleSystemPromptV1, defineSystemPromptSchema };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BaseSystemPromptSchemaV1,
|
|
3
|
+
SimpleSystemPromptSchemaV1,
|
|
4
|
+
defineSystemPromptSchema
|
|
5
|
+
} from "../../chunk-Q6GSOHOP.js";
|
|
6
|
+
import "../../chunk-OQE6TQXZ.js";
|
|
7
|
+
import "../../chunk-UHHHSYVE.js";
|
|
8
|
+
import "../../chunk-NUEOE3K5.js";
|
|
9
|
+
import "../../chunk-PZ5AY32C.js";
|
|
10
|
+
export {
|
|
11
|
+
BaseSystemPromptSchemaV1,
|
|
12
|
+
SimpleSystemPromptSchemaV1,
|
|
13
|
+
defineSystemPromptSchema
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { A as AbstractScorer } from '../abstract-Dec9Sc5O.js';
|
|
2
|
+
export { B as BaseScorerResult } from '../abstract-Dec9Sc5O.js';
|
|
3
|
+
export { b as LLMAsAJudgeCriterion, c as LLMAsAJudgeScoreParams, L as LLMAsAJudgeScorer, a as MCQScorer, M as MCQScorerParams } from '../llm-judge-QThCZ9TQ.js';
|
|
4
|
+
import '../llm-DNj_tp2T.js';
|
|
5
|
+
import '../provider-BDjGp2y-.js';
|
|
6
|
+
import 'openai/resources/shared';
|
|
7
|
+
import 'openai/resources/chat/completions';
|
|
8
|
+
import '../rate-limiter-CSmVIRsM.js';
|
|
9
|
+
import 'zod';
|
|
10
|
+
|
|
11
|
+
type RegexPattern = {
|
|
12
|
+
/**
|
|
13
|
+
* The regex pattern to match against the response
|
|
14
|
+
*/
|
|
15
|
+
regex: RegExp;
|
|
16
|
+
/**
|
|
17
|
+
* The index of the capture group to extract (1-based, like match[1])
|
|
18
|
+
* If not provided, defaults to 1 (first capture group)
|
|
19
|
+
*/
|
|
20
|
+
captureGroupIndex?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Optional function to transform the extracted value before validation
|
|
23
|
+
*/
|
|
24
|
+
transform?: (value: string) => string | undefined;
|
|
25
|
+
};
|
|
26
|
+
type RegexScorerParams = {
|
|
27
|
+
/**
|
|
28
|
+
* The input text to score
|
|
29
|
+
*/
|
|
30
|
+
input: string;
|
|
31
|
+
/**
|
|
32
|
+
* Array of regex patterns to try (in order, first match wins)
|
|
33
|
+
*/
|
|
34
|
+
patterns: RegexPattern[];
|
|
35
|
+
/**
|
|
36
|
+
* Expected value(s) to match against. Can be a record of expected values for named groups, or a validation function
|
|
37
|
+
*/
|
|
38
|
+
expectedValue: Record<string, string> | ((groupName: string, match: string) => boolean);
|
|
39
|
+
/**
|
|
40
|
+
* Optional: Which match to use when multiple matches are found
|
|
41
|
+
* Defaults to "last" (uses the last match found)
|
|
42
|
+
*/
|
|
43
|
+
matchPreference?: "first" | "last";
|
|
44
|
+
/**
|
|
45
|
+
* Optional: If true, allows partial scoring based on how many groups match
|
|
46
|
+
* For example, if 2 groups are expected and only 1 matches, score would be 0.5
|
|
47
|
+
* Defaults to false (all-or-nothing scoring)
|
|
48
|
+
*/
|
|
49
|
+
allowPartialScoring?: boolean;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Generic Regex scorer. It scores the given input against a set of regex patterns.
|
|
53
|
+
*/
|
|
54
|
+
declare class RegexScorer extends AbstractScorer {
|
|
55
|
+
readonly kind: "peerbench.ai/regex";
|
|
56
|
+
score(params: RegexScorerParams): Promise<{
|
|
57
|
+
value: number;
|
|
58
|
+
extractedAnswers: {
|
|
59
|
+
[k: string]: string;
|
|
60
|
+
};
|
|
61
|
+
}>;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export { AbstractScorer, type RegexPattern, RegexScorer, type RegexScorerParams };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AbstractScorer,
|
|
3
|
+
LLMAsAJudgeScorer,
|
|
4
|
+
MCQScorer,
|
|
5
|
+
RegexScorer
|
|
6
|
+
} from "../chunk-ZEWI24CV.js";
|
|
7
|
+
import "../chunk-UHHHSYVE.js";
|
|
8
|
+
import "../chunk-4UBK6452.js";
|
|
9
|
+
import "../chunk-PZ5AY32C.js";
|
|
10
|
+
export {
|
|
11
|
+
AbstractScorer,
|
|
12
|
+
LLMAsAJudgeScorer,
|
|
13
|
+
MCQScorer,
|
|
14
|
+
RegexScorer
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { A as AbstractStorage } from '../json-file-ZwzLUbje.js';
|
|
2
|
+
export { c as AbstractFileStorageCodec, F as FileStorage, b as FileStorageFileHandle, J as JSONFileStorage, a as JSONFileStorageCodec } from '../json-file-ZwzLUbje.js';
|
|
3
|
+
import * as better_sqlite3 from 'better-sqlite3';
|
|
4
|
+
import 'node:fs/promises';
|
|
5
|
+
import 'zod';
|
|
6
|
+
|
|
7
|
+
declare class HttpStorage<TObject> extends AbstractStorage<TObject> {
|
|
8
|
+
protected readonly url: string;
|
|
9
|
+
protected readonly codec: AbstractHttpStorageCodec<TObject>;
|
|
10
|
+
protected readonly fetchFn: typeof fetch;
|
|
11
|
+
constructor(config: {
|
|
12
|
+
url: string;
|
|
13
|
+
codec: AbstractHttpStorageCodec<TObject>;
|
|
14
|
+
fetchFn?: typeof fetch;
|
|
15
|
+
});
|
|
16
|
+
init(_params?: unknown): Promise<void>;
|
|
17
|
+
read(_key: string, _params?: unknown): Promise<TObject | null>;
|
|
18
|
+
readAll(params?: unknown): Promise<TObject[]>;
|
|
19
|
+
write(_key: string, _value: TObject, _params?: unknown): Promise<unknown>;
|
|
20
|
+
}
|
|
21
|
+
declare abstract class AbstractHttpStorageCodec<TObject> {
|
|
22
|
+
abstract readAll(params: {
|
|
23
|
+
url: string;
|
|
24
|
+
response: Response;
|
|
25
|
+
params?: unknown;
|
|
26
|
+
}): Promise<TObject[]>;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
declare class SQLiteStorage<TObject> extends AbstractStorage<TObject> {
|
|
30
|
+
protected readonly path: string;
|
|
31
|
+
protected readonly codec: AbstractSQLiteStorageCodec<TObject>;
|
|
32
|
+
protected db: SQLiteDatabase | undefined;
|
|
33
|
+
constructor(config: {
|
|
34
|
+
path: string;
|
|
35
|
+
codec: AbstractSQLiteStorageCodec<TObject>;
|
|
36
|
+
});
|
|
37
|
+
init(params?: unknown): Promise<void>;
|
|
38
|
+
read(key: string, params?: unknown): Promise<TObject | null>;
|
|
39
|
+
readAll(params?: unknown): Promise<TObject[]>;
|
|
40
|
+
write(key: string, value: TObject, params?: unknown): Promise<unknown>;
|
|
41
|
+
close(): void;
|
|
42
|
+
protected assertInitialized(): asserts this is this & {
|
|
43
|
+
db: SQLiteDatabase;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
declare abstract class AbstractSQLiteStorageCodec<TObject> {
|
|
47
|
+
init?(params: {
|
|
48
|
+
db: SQLiteDatabase;
|
|
49
|
+
params?: unknown;
|
|
50
|
+
}): Promise<void> | void;
|
|
51
|
+
abstract read(params: {
|
|
52
|
+
db: SQLiteDatabase;
|
|
53
|
+
key: string;
|
|
54
|
+
params?: unknown;
|
|
55
|
+
}): Promise<TObject | null>;
|
|
56
|
+
abstract readAll(params: {
|
|
57
|
+
db: SQLiteDatabase;
|
|
58
|
+
params?: unknown;
|
|
59
|
+
}): Promise<TObject[]>;
|
|
60
|
+
abstract write(params: {
|
|
61
|
+
db: SQLiteDatabase;
|
|
62
|
+
key: string;
|
|
63
|
+
value: TObject;
|
|
64
|
+
params?: unknown;
|
|
65
|
+
}): Promise<unknown>;
|
|
66
|
+
}
|
|
67
|
+
type SQLiteDatabase = better_sqlite3.Database;
|
|
68
|
+
|
|
69
|
+
export { AbstractHttpStorageCodec, AbstractSQLiteStorageCodec, AbstractStorage, HttpStorage, SQLiteStorage };
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AbstractFileStorageCodec,
|
|
3
|
+
AbstractStorage,
|
|
4
|
+
FileStorage,
|
|
5
|
+
JSONFileStorage,
|
|
6
|
+
JSONFileStorageCodec
|
|
7
|
+
} from "../chunk-ERALDEZY.js";
|
|
8
|
+
import "../chunk-4UBK6452.js";
|
|
9
|
+
import "../chunk-PZ5AY32C.js";
|
|
10
|
+
|
|
11
|
+
// src/storages/http.ts
|
|
12
|
+
var HttpStorage = class extends AbstractStorage {
|
|
13
|
+
url;
|
|
14
|
+
codec;
|
|
15
|
+
fetchFn;
|
|
16
|
+
constructor(config) {
|
|
17
|
+
super();
|
|
18
|
+
this.url = config.url;
|
|
19
|
+
this.codec = config.codec;
|
|
20
|
+
this.fetchFn = config.fetchFn ?? fetch;
|
|
21
|
+
}
|
|
22
|
+
async init(_params) {
|
|
23
|
+
}
|
|
24
|
+
async read(_key, _params) {
|
|
25
|
+
throw new Error("Not implemented");
|
|
26
|
+
}
|
|
27
|
+
async readAll(params) {
|
|
28
|
+
const response = await this.fetchFn(this.url, {
|
|
29
|
+
method: "GET",
|
|
30
|
+
headers: {
|
|
31
|
+
Accept: "application/json, text/plain, */*"
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
if (!response.ok) {
|
|
35
|
+
throw new Error(
|
|
36
|
+
`HTTP storage request failed: ${response.status} ${response.statusText}`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
return await this.codec.readAll({ url: this.url, response, params });
|
|
40
|
+
}
|
|
41
|
+
async write(_key, _value, _params) {
|
|
42
|
+
throw new Error("Not implemented");
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
var AbstractHttpStorageCodec = class {
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// src/storages/sqlite.ts
|
|
49
|
+
import Database from "better-sqlite3";
|
|
50
|
+
var SQLiteStorage = class extends AbstractStorage {
|
|
51
|
+
path;
|
|
52
|
+
codec;
|
|
53
|
+
db;
|
|
54
|
+
constructor(config) {
|
|
55
|
+
super();
|
|
56
|
+
this.path = config.path;
|
|
57
|
+
this.codec = config.codec;
|
|
58
|
+
}
|
|
59
|
+
async init(params) {
|
|
60
|
+
this.db = new Database(this.path);
|
|
61
|
+
await this.codec.init?.({ db: this.db, params });
|
|
62
|
+
}
|
|
63
|
+
async read(key, params) {
|
|
64
|
+
this.assertInitialized();
|
|
65
|
+
return await this.codec.read({ db: this.db, key, params });
|
|
66
|
+
}
|
|
67
|
+
async readAll(params) {
|
|
68
|
+
this.assertInitialized();
|
|
69
|
+
return await this.codec.readAll({ db: this.db, params });
|
|
70
|
+
}
|
|
71
|
+
async write(key, value, params) {
|
|
72
|
+
this.assertInitialized();
|
|
73
|
+
return await this.codec.write({ db: this.db, key, value, params });
|
|
74
|
+
}
|
|
75
|
+
close() {
|
|
76
|
+
this.db?.close();
|
|
77
|
+
this.db = void 0;
|
|
78
|
+
}
|
|
79
|
+
assertInitialized() {
|
|
80
|
+
if (!this.db) {
|
|
81
|
+
throw new Error("SQLite database is not initialized");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
var AbstractSQLiteStorageCodec = class {
|
|
86
|
+
};
|
|
87
|
+
export {
|
|
88
|
+
AbstractFileStorageCodec,
|
|
89
|
+
AbstractHttpStorageCodec,
|
|
90
|
+
AbstractSQLiteStorageCodec,
|
|
91
|
+
AbstractStorage,
|
|
92
|
+
FileStorage,
|
|
93
|
+
HttpStorage,
|
|
94
|
+
JSONFileStorage,
|
|
95
|
+
JSONFileStorageCodec,
|
|
96
|
+
SQLiteStorage
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/storages/http.ts","../../src/storages/sqlite.ts"],"sourcesContent":["import { AbstractStorage } from \"@/storages/abstract\";\n\nexport class HttpStorage<TObject> extends AbstractStorage<TObject> {\n protected readonly url: string;\n protected readonly codec: AbstractHttpStorageCodec<TObject>;\n protected readonly fetchFn: typeof fetch;\n\n constructor(config: {\n url: string;\n codec: AbstractHttpStorageCodec<TObject>;\n fetchFn?: typeof fetch;\n }) {\n super();\n this.url = config.url;\n this.codec = config.codec;\n this.fetchFn = config.fetchFn ?? fetch;\n }\n\n override async init(_params?: unknown): Promise<void> {\n // Nothing to do here\n }\n\n override async read(\n _key: string,\n _params?: unknown\n ): Promise<TObject | null> {\n // TODO: Implement `read(key)` with codec support (e.g. query params / path templating).\n throw new Error(\"Not implemented\");\n }\n\n override async readAll(params?: unknown): Promise<TObject[]> {\n const response = await this.fetchFn(this.url, {\n method: \"GET\",\n headers: {\n Accept: \"application/json, text/plain, */*\",\n },\n });\n\n if (!response.ok) {\n throw new Error(\n `HTTP storage request failed: ${response.status} ${response.statusText}`\n );\n }\n\n return await this.codec.readAll({ url: this.url, response, params });\n }\n\n override async write(\n _key: string,\n _value: TObject,\n _params?: unknown\n ): Promise<unknown> {\n // TODO: Implement `write(key, value)` for HTTP storage if needed (PUT/POST/PATCH).\n throw new Error(\"Not implemented\");\n }\n}\n\nexport abstract class AbstractHttpStorageCodec<TObject> {\n abstract readAll(params: {\n url: string;\n response: Response;\n params?: unknown;\n }): Promise<TObject[]>;\n}\n","import Database from \"better-sqlite3\";\nimport { AbstractStorage } from \"@/storages/abstract\";\n\nexport class SQLiteStorage<TObject> extends AbstractStorage<TObject> {\n protected readonly path: string;\n protected readonly codec: AbstractSQLiteStorageCodec<TObject>;\n\n protected db: SQLiteDatabase | undefined;\n\n constructor(config: {\n path: string;\n codec: AbstractSQLiteStorageCodec<TObject>;\n }) {\n super();\n this.path = config.path;\n this.codec = config.codec;\n }\n\n async init(params?: unknown): Promise<void> {\n this.db = new Database(this.path);\n await this.codec.init?.({ db: this.db, params });\n }\n\n override async read(key: string, params?: unknown): Promise<TObject | null> {\n this.assertInitialized();\n return await this.codec.read({ db: this.db, key, params });\n }\n\n override async readAll(params?: unknown): Promise<TObject[]> {\n this.assertInitialized();\n return await this.codec.readAll({ db: this.db, params });\n }\n\n override async write(\n key: string,\n value: TObject,\n params?: unknown\n ): Promise<unknown> {\n this.assertInitialized();\n return await this.codec.write({ db: this.db, key, value, params });\n }\n\n close(): void {\n this.db?.close();\n this.db = undefined;\n }\n\n protected assertInitialized(): asserts this is this & { db: SQLiteDatabase } {\n if (!this.db) {\n throw new Error(\"SQLite database is not initialized\");\n }\n }\n}\n\nexport abstract class AbstractSQLiteStorageCodec<TObject> {\n init?(params: { db: SQLiteDatabase; params?: unknown }): Promise<void> | void;\n\n abstract read(params: {\n db: SQLiteDatabase;\n key: string;\n params?: unknown;\n }): Promise<TObject | null>;\n\n abstract readAll(params: {\n db: SQLiteDatabase;\n params?: unknown;\n }): Promise<TObject[]>;\n\n abstract write(params: {\n db: SQLiteDatabase;\n key: string;\n value: TObject;\n params?: unknown;\n }): Promise<unknown>;\n}\n\ntype SQLiteDatabase = import(\"better-sqlite3\").Database;\n"],"mappings":";;;;;;;;;;;AAEO,IAAM,cAAN,cAAmC,gBAAyB;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EAEnB,YAAY,QAIT;AACD,UAAM;AACN,SAAK,MAAM,OAAO;AAClB,SAAK,QAAQ,OAAO;AACpB,SAAK,UAAU,OAAO,WAAW;AAAA,EACnC;AAAA,EAEA,MAAe,KAAK,SAAkC;AAAA,EAEtD;AAAA,EAEA,MAAe,KACb,MACA,SACyB;AAEzB,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AAAA,EAEA,MAAe,QAAQ,QAAsC;AAC3D,UAAM,WAAW,MAAM,KAAK,QAAQ,KAAK,KAAK;AAAA,MAC5C,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,QAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,gCAAgC,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,MACxE;AAAA,IACF;AAEA,WAAO,MAAM,KAAK,MAAM,QAAQ,EAAE,KAAK,KAAK,KAAK,UAAU,OAAO,CAAC;AAAA,EACrE;AAAA,EAEA,MAAe,MACb,MACA,QACA,SACkB;AAElB,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AACF;AAEO,IAAe,2BAAf,MAAiD;AAMxD;;;AC/DA,OAAO,cAAc;AAGd,IAAM,gBAAN,cAAqC,gBAAyB;AAAA,EAChD;AAAA,EACA;AAAA,EAET;AAAA,EAEV,YAAY,QAGT;AACD,UAAM;AACN,SAAK,OAAO,OAAO;AACnB,SAAK,QAAQ,OAAO;AAAA,EACtB;AAAA,EAEA,MAAM,KAAK,QAAiC;AAC1C,SAAK,KAAK,IAAI,SAAS,KAAK,IAAI;AAChC,UAAM,KAAK,MAAM,OAAO,EAAE,IAAI,KAAK,IAAI,OAAO,CAAC;AAAA,EACjD;AAAA,EAEA,MAAe,KAAK,KAAa,QAA2C;AAC1E,SAAK,kBAAkB;AACvB,WAAO,MAAM,KAAK,MAAM,KAAK,EAAE,IAAI,KAAK,IAAI,KAAK,OAAO,CAAC;AAAA,EAC3D;AAAA,EAEA,MAAe,QAAQ,QAAsC;AAC3D,SAAK,kBAAkB;AACvB,WAAO,MAAM,KAAK,MAAM,QAAQ,EAAE,IAAI,KAAK,IAAI,OAAO,CAAC;AAAA,EACzD;AAAA,EAEA,MAAe,MACb,KACA,OACA,QACkB;AAClB,SAAK,kBAAkB;AACvB,WAAO,MAAM,KAAK,MAAM,MAAM,EAAE,IAAI,KAAK,IAAI,KAAK,OAAO,OAAO,CAAC;AAAA,EACnE;AAAA,EAEA,QAAc;AACZ,SAAK,IAAI,MAAM;AACf,SAAK,KAAK;AAAA,EACZ;AAAA,EAEU,oBAAmE;AAC3E,QAAI,CAAC,KAAK,IAAI;AACZ,YAAM,IAAI,MAAM,oCAAoC;AAAA,IACtD;AAAA,EACF;AACF;AAEO,IAAe,6BAAf,MAAmD;AAoB1D;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "peerbench",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2-alpha-dev.0",
|
|
4
4
|
"description": "Tooling help work with AI benchmarking data and create trustworthy AI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -28,6 +28,38 @@
|
|
|
28
28
|
".": {
|
|
29
29
|
"types": "./dist/index.d.ts",
|
|
30
30
|
"import": "./dist/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./benchmarks": {
|
|
33
|
+
"types": "./dist/benchmarks/index.d.ts",
|
|
34
|
+
"import": "./dist/benchmarks/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./providers": {
|
|
37
|
+
"types": "./dist/providers/index.d.ts",
|
|
38
|
+
"import": "./dist/providers/index.js"
|
|
39
|
+
},
|
|
40
|
+
"./schemas": {
|
|
41
|
+
"types": "./dist/schemas/index.d.ts",
|
|
42
|
+
"import": "./dist/schemas/index.js"
|
|
43
|
+
},
|
|
44
|
+
"./schemas/llm": {
|
|
45
|
+
"types": "./dist/schemas/llm/index.d.ts",
|
|
46
|
+
"import": "./dist/schemas/llm/index.js"
|
|
47
|
+
},
|
|
48
|
+
"./schemas/extensions": {
|
|
49
|
+
"types": "./dist/schemas/extensions/index.d.ts",
|
|
50
|
+
"import": "./dist/schemas/extensions/index.js"
|
|
51
|
+
},
|
|
52
|
+
"./scorers": {
|
|
53
|
+
"types": "./dist/scorers/index.d.ts",
|
|
54
|
+
"import": "./dist/scorers/index.js"
|
|
55
|
+
},
|
|
56
|
+
"./storages": {
|
|
57
|
+
"types": "./dist/storages/index.d.ts",
|
|
58
|
+
"import": "./dist/storages/index.js"
|
|
59
|
+
},
|
|
60
|
+
"./aggregators": {
|
|
61
|
+
"types": "./dist/aggregators/index.d.ts",
|
|
62
|
+
"import": "./dist/aggregators/index.js"
|
|
31
63
|
}
|
|
32
64
|
},
|
|
33
65
|
"files": [
|
|
@@ -35,46 +67,38 @@
|
|
|
35
67
|
],
|
|
36
68
|
"scripts": {
|
|
37
69
|
"lint": "tsc && eslint",
|
|
38
|
-
"dev": "
|
|
39
|
-
"watch": "tsup --silent --watch --onSuccess 'tsc-alias -p tsconfig.json -f'",
|
|
70
|
+
"dev": "tsup --silent --watch --onSuccess 'tsc-alias -p tsconfig.json -f'",
|
|
40
71
|
"build": "tsup --onSuccess 'tsc-alias -p tsconfig.json -f'",
|
|
72
|
+
"test": "vitest run",
|
|
41
73
|
"clean": "rm -rf dist"
|
|
42
74
|
},
|
|
43
75
|
"dependencies": {
|
|
44
|
-
"@
|
|
45
|
-
"@supabase/supabase-js": "^2.56.0",
|
|
46
|
-
"@types/sbd": "^1.0.5",
|
|
47
|
-
"abort-controller": "^3.0.0",
|
|
48
|
-
"ansis": "^3.17.0",
|
|
76
|
+
"@mastra/client-js": "^0.17.2",
|
|
49
77
|
"axios": "^1.11.0",
|
|
78
|
+
"better-sqlite3": "^12.6.0",
|
|
50
79
|
"cheerio": "^1.1.2",
|
|
51
|
-
"commander": "^13.1.0",
|
|
52
|
-
"csv": "^6.3.11",
|
|
53
80
|
"decimal.js": "^10.6.0",
|
|
54
|
-
"
|
|
55
|
-
"glob": "^11.0.2",
|
|
81
|
+
"handlebars": "^4.7.8",
|
|
56
82
|
"hyparquet": "^1.11.0",
|
|
57
|
-
"json-stable-stringify": "^1.3.0",
|
|
58
83
|
"jsonrepair": "^3.13.0",
|
|
59
84
|
"multiformats": "^13.3.2",
|
|
60
|
-
"openai": "^
|
|
61
|
-
"
|
|
62
|
-
"table": "^6.9.0",
|
|
85
|
+
"openai": "^6.15.0",
|
|
86
|
+
"safe-stable-stringify": "^2.5.0",
|
|
63
87
|
"uuid": "^11.1.0",
|
|
64
|
-
"
|
|
65
|
-
"winston": "^3.17.0",
|
|
66
|
-
"yaml": "^2.7.1",
|
|
67
|
-
"zod": "^3.24.2"
|
|
88
|
+
"zod": "^4.2.1"
|
|
68
89
|
},
|
|
69
90
|
"devDependencies": {
|
|
70
91
|
"@dotenvx/dotenvx": "^1.49.0",
|
|
71
92
|
"@eslint/js": "^9.24.0",
|
|
93
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
72
94
|
"@types/node": "^22.14.0",
|
|
73
95
|
"eslint": "^9.24.0",
|
|
96
|
+
"prettier": "^3.7.1",
|
|
74
97
|
"tsc-alias": "^1.8.13",
|
|
75
|
-
"tsup": "^8.
|
|
98
|
+
"tsup": "^8.5.1",
|
|
76
99
|
"tsx": "^4.19.3",
|
|
77
100
|
"typescript": "^5.8.3",
|
|
78
|
-
"typescript-eslint": "^8.29.0"
|
|
101
|
+
"typescript-eslint": "^8.29.0",
|
|
102
|
+
"vitest": "^4.0.16"
|
|
79
103
|
}
|
|
80
104
|
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 peerBench
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|