@paean-ai/harness-model-pricing 0.1.1-rc.17
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/LICENSE +21 -0
- package/README.i18n.yaml +46 -0
- package/README.md +127 -0
- package/README.zh.md +127 -0
- package/lib/client.js +436 -0
- package/lib/index.js +280 -0
- package/lib/types/calculate.d.ts +52 -0
- package/lib/types/client/ModelPricing.d.ts +26 -0
- package/lib/types/client/index.d.ts +11 -0
- package/lib/types/client/locales.d.ts +68 -0
- package/lib/types/defaults.d.ts +5 -0
- package/lib/types/index.d.ts +263 -0
- package/lib/types/projection.d.ts +158 -0
- package/lib/types/types.d.ts +69 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +86 -0
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/** DSH function plugin owning editable market prices and a request-usage projection. */
|
|
2
|
+
import type { Context, Volatile } from '@deepseek-ai/cordis';
|
|
3
|
+
import z from '@deepseek-ai/schemastery';
|
|
4
|
+
import type { PriceSheet } from './types.ts';
|
|
5
|
+
export type * from './types.ts';
|
|
6
|
+
/** Cordis plugin identity. */
|
|
7
|
+
export declare const name = "paean-model-pricing";
|
|
8
|
+
/** Services own configuration delivery and whole-log projection delivery. */
|
|
9
|
+
export declare const inject: string[];
|
|
10
|
+
/** Live price-sheet configuration; edits revalue usage without rewriting history. */
|
|
11
|
+
export interface Config {
|
|
12
|
+
/** Editable market rates and alias mappings; updates revalue existing usage. */
|
|
13
|
+
sheet: Volatile<PriceSheet>;
|
|
14
|
+
}
|
|
15
|
+
/** Validated market rates and protocol-specific mappings, served by the standard Settings API. */
|
|
16
|
+
export declare const Config: z<Schemastery.ObjectS<NoInfer<{
|
|
17
|
+
sheet: z<NoInfer<Schemastery.ObjectS<NoInfer<{
|
|
18
|
+
verifiedOn: z<string, string, "defined">;
|
|
19
|
+
cards: z<({
|
|
20
|
+
longContext?: ({
|
|
21
|
+
above?: number | null;
|
|
22
|
+
rates?: ({
|
|
23
|
+
input?: number | null;
|
|
24
|
+
output?: number | null;
|
|
25
|
+
cacheRead?: number | null;
|
|
26
|
+
cacheWrite?: number | null;
|
|
27
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null;
|
|
28
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null | undefined;
|
|
29
|
+
input?: number | null;
|
|
30
|
+
output?: number | null;
|
|
31
|
+
cacheRead?: number | null;
|
|
32
|
+
cacheWrite?: number | null;
|
|
33
|
+
id?: string | null;
|
|
34
|
+
name?: string | null;
|
|
35
|
+
source?: string | null;
|
|
36
|
+
} & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<NoInfer<{
|
|
37
|
+
longContext: z<({
|
|
38
|
+
above?: number | null;
|
|
39
|
+
rates?: ({
|
|
40
|
+
input?: number | null;
|
|
41
|
+
output?: number | null;
|
|
42
|
+
cacheRead?: number | null;
|
|
43
|
+
cacheWrite?: number | null;
|
|
44
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null;
|
|
45
|
+
} & import("@deepseek-ai/cosmokit").Dict) | undefined, Schemastery.ObjectT<NoInfer<{
|
|
46
|
+
above: z<number, number, "defined">;
|
|
47
|
+
rates: z<Schemastery.ObjectS<NoInfer<{
|
|
48
|
+
input: z<number, number, "defined">;
|
|
49
|
+
output: z<number, number, "defined">;
|
|
50
|
+
cacheRead: z<number, number, "defined">;
|
|
51
|
+
cacheWrite: z<number, number, "defined">;
|
|
52
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
53
|
+
input: z<number, number, "defined">;
|
|
54
|
+
output: z<number, number, "defined">;
|
|
55
|
+
cacheRead: z<number, number, "defined">;
|
|
56
|
+
cacheWrite: z<number, number, "defined">;
|
|
57
|
+
}>>, "defined">;
|
|
58
|
+
}>> | undefined, "plain">;
|
|
59
|
+
input: z<number, number, "defined">;
|
|
60
|
+
output: z<number, number, "defined">;
|
|
61
|
+
cacheRead: z<number, number, "defined">;
|
|
62
|
+
cacheWrite: z<number, number, "defined">;
|
|
63
|
+
id: z<string, string, "defined">;
|
|
64
|
+
name: z<string, string, "defined">;
|
|
65
|
+
source: z<string, string, "defined">;
|
|
66
|
+
}>>[], "defined">;
|
|
67
|
+
routes: z<({
|
|
68
|
+
provider?: string | null;
|
|
69
|
+
model?: string | null;
|
|
70
|
+
card?: string | null;
|
|
71
|
+
} & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<NoInfer<{
|
|
72
|
+
provider: z<string, string, "defined">;
|
|
73
|
+
model: z<string, string, "defined">;
|
|
74
|
+
card: z<string, string, "defined">;
|
|
75
|
+
}>>[], "defined">;
|
|
76
|
+
}>>>, NoInfer<Schemastery.ObjectT<NoInfer<{
|
|
77
|
+
verifiedOn: z<string, string, "defined">;
|
|
78
|
+
cards: z<({
|
|
79
|
+
longContext?: ({
|
|
80
|
+
above?: number | null;
|
|
81
|
+
rates?: ({
|
|
82
|
+
input?: number | null;
|
|
83
|
+
output?: number | null;
|
|
84
|
+
cacheRead?: number | null;
|
|
85
|
+
cacheWrite?: number | null;
|
|
86
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null;
|
|
87
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null | undefined;
|
|
88
|
+
input?: number | null;
|
|
89
|
+
output?: number | null;
|
|
90
|
+
cacheRead?: number | null;
|
|
91
|
+
cacheWrite?: number | null;
|
|
92
|
+
id?: string | null;
|
|
93
|
+
name?: string | null;
|
|
94
|
+
source?: string | null;
|
|
95
|
+
} & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<NoInfer<{
|
|
96
|
+
longContext: z<({
|
|
97
|
+
above?: number | null;
|
|
98
|
+
rates?: ({
|
|
99
|
+
input?: number | null;
|
|
100
|
+
output?: number | null;
|
|
101
|
+
cacheRead?: number | null;
|
|
102
|
+
cacheWrite?: number | null;
|
|
103
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null;
|
|
104
|
+
} & import("@deepseek-ai/cosmokit").Dict) | undefined, Schemastery.ObjectT<NoInfer<{
|
|
105
|
+
above: z<number, number, "defined">;
|
|
106
|
+
rates: z<Schemastery.ObjectS<NoInfer<{
|
|
107
|
+
input: z<number, number, "defined">;
|
|
108
|
+
output: z<number, number, "defined">;
|
|
109
|
+
cacheRead: z<number, number, "defined">;
|
|
110
|
+
cacheWrite: z<number, number, "defined">;
|
|
111
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
112
|
+
input: z<number, number, "defined">;
|
|
113
|
+
output: z<number, number, "defined">;
|
|
114
|
+
cacheRead: z<number, number, "defined">;
|
|
115
|
+
cacheWrite: z<number, number, "defined">;
|
|
116
|
+
}>>, "defined">;
|
|
117
|
+
}>> | undefined, "plain">;
|
|
118
|
+
input: z<number, number, "defined">;
|
|
119
|
+
output: z<number, number, "defined">;
|
|
120
|
+
cacheRead: z<number, number, "defined">;
|
|
121
|
+
cacheWrite: z<number, number, "defined">;
|
|
122
|
+
id: z<string, string, "defined">;
|
|
123
|
+
name: z<string, string, "defined">;
|
|
124
|
+
source: z<string, string, "defined">;
|
|
125
|
+
}>>[], "defined">;
|
|
126
|
+
routes: z<({
|
|
127
|
+
provider?: string | null;
|
|
128
|
+
model?: string | null;
|
|
129
|
+
card?: string | null;
|
|
130
|
+
} & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<NoInfer<{
|
|
131
|
+
provider: z<string, string, "defined">;
|
|
132
|
+
model: z<string, string, "defined">;
|
|
133
|
+
card: z<string, string, "defined">;
|
|
134
|
+
}>>[], "defined">;
|
|
135
|
+
}>>>, "volatile-defined">;
|
|
136
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
137
|
+
sheet: z<NoInfer<Schemastery.ObjectS<NoInfer<{
|
|
138
|
+
verifiedOn: z<string, string, "defined">;
|
|
139
|
+
cards: z<({
|
|
140
|
+
longContext?: ({
|
|
141
|
+
above?: number | null;
|
|
142
|
+
rates?: ({
|
|
143
|
+
input?: number | null;
|
|
144
|
+
output?: number | null;
|
|
145
|
+
cacheRead?: number | null;
|
|
146
|
+
cacheWrite?: number | null;
|
|
147
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null;
|
|
148
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null | undefined;
|
|
149
|
+
input?: number | null;
|
|
150
|
+
output?: number | null;
|
|
151
|
+
cacheRead?: number | null;
|
|
152
|
+
cacheWrite?: number | null;
|
|
153
|
+
id?: string | null;
|
|
154
|
+
name?: string | null;
|
|
155
|
+
source?: string | null;
|
|
156
|
+
} & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<NoInfer<{
|
|
157
|
+
longContext: z<({
|
|
158
|
+
above?: number | null;
|
|
159
|
+
rates?: ({
|
|
160
|
+
input?: number | null;
|
|
161
|
+
output?: number | null;
|
|
162
|
+
cacheRead?: number | null;
|
|
163
|
+
cacheWrite?: number | null;
|
|
164
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null;
|
|
165
|
+
} & import("@deepseek-ai/cosmokit").Dict) | undefined, Schemastery.ObjectT<NoInfer<{
|
|
166
|
+
above: z<number, number, "defined">;
|
|
167
|
+
rates: z<Schemastery.ObjectS<NoInfer<{
|
|
168
|
+
input: z<number, number, "defined">;
|
|
169
|
+
output: z<number, number, "defined">;
|
|
170
|
+
cacheRead: z<number, number, "defined">;
|
|
171
|
+
cacheWrite: z<number, number, "defined">;
|
|
172
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
173
|
+
input: z<number, number, "defined">;
|
|
174
|
+
output: z<number, number, "defined">;
|
|
175
|
+
cacheRead: z<number, number, "defined">;
|
|
176
|
+
cacheWrite: z<number, number, "defined">;
|
|
177
|
+
}>>, "defined">;
|
|
178
|
+
}>> | undefined, "plain">;
|
|
179
|
+
input: z<number, number, "defined">;
|
|
180
|
+
output: z<number, number, "defined">;
|
|
181
|
+
cacheRead: z<number, number, "defined">;
|
|
182
|
+
cacheWrite: z<number, number, "defined">;
|
|
183
|
+
id: z<string, string, "defined">;
|
|
184
|
+
name: z<string, string, "defined">;
|
|
185
|
+
source: z<string, string, "defined">;
|
|
186
|
+
}>>[], "defined">;
|
|
187
|
+
routes: z<({
|
|
188
|
+
provider?: string | null;
|
|
189
|
+
model?: string | null;
|
|
190
|
+
card?: string | null;
|
|
191
|
+
} & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<NoInfer<{
|
|
192
|
+
provider: z<string, string, "defined">;
|
|
193
|
+
model: z<string, string, "defined">;
|
|
194
|
+
card: z<string, string, "defined">;
|
|
195
|
+
}>>[], "defined">;
|
|
196
|
+
}>>>, NoInfer<Schemastery.ObjectT<NoInfer<{
|
|
197
|
+
verifiedOn: z<string, string, "defined">;
|
|
198
|
+
cards: z<({
|
|
199
|
+
longContext?: ({
|
|
200
|
+
above?: number | null;
|
|
201
|
+
rates?: ({
|
|
202
|
+
input?: number | null;
|
|
203
|
+
output?: number | null;
|
|
204
|
+
cacheRead?: number | null;
|
|
205
|
+
cacheWrite?: number | null;
|
|
206
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null;
|
|
207
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null | undefined;
|
|
208
|
+
input?: number | null;
|
|
209
|
+
output?: number | null;
|
|
210
|
+
cacheRead?: number | null;
|
|
211
|
+
cacheWrite?: number | null;
|
|
212
|
+
id?: string | null;
|
|
213
|
+
name?: string | null;
|
|
214
|
+
source?: string | null;
|
|
215
|
+
} & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<NoInfer<{
|
|
216
|
+
longContext: z<({
|
|
217
|
+
above?: number | null;
|
|
218
|
+
rates?: ({
|
|
219
|
+
input?: number | null;
|
|
220
|
+
output?: number | null;
|
|
221
|
+
cacheRead?: number | null;
|
|
222
|
+
cacheWrite?: number | null;
|
|
223
|
+
} & import("@deepseek-ai/cosmokit").Dict) | null;
|
|
224
|
+
} & import("@deepseek-ai/cosmokit").Dict) | undefined, Schemastery.ObjectT<NoInfer<{
|
|
225
|
+
above: z<number, number, "defined">;
|
|
226
|
+
rates: z<Schemastery.ObjectS<NoInfer<{
|
|
227
|
+
input: z<number, number, "defined">;
|
|
228
|
+
output: z<number, number, "defined">;
|
|
229
|
+
cacheRead: z<number, number, "defined">;
|
|
230
|
+
cacheWrite: z<number, number, "defined">;
|
|
231
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
232
|
+
input: z<number, number, "defined">;
|
|
233
|
+
output: z<number, number, "defined">;
|
|
234
|
+
cacheRead: z<number, number, "defined">;
|
|
235
|
+
cacheWrite: z<number, number, "defined">;
|
|
236
|
+
}>>, "defined">;
|
|
237
|
+
}>> | undefined, "plain">;
|
|
238
|
+
input: z<number, number, "defined">;
|
|
239
|
+
output: z<number, number, "defined">;
|
|
240
|
+
cacheRead: z<number, number, "defined">;
|
|
241
|
+
cacheWrite: z<number, number, "defined">;
|
|
242
|
+
id: z<string, string, "defined">;
|
|
243
|
+
name: z<string, string, "defined">;
|
|
244
|
+
source: z<string, string, "defined">;
|
|
245
|
+
}>>[], "defined">;
|
|
246
|
+
routes: z<({
|
|
247
|
+
provider?: string | null;
|
|
248
|
+
model?: string | null;
|
|
249
|
+
card?: string | null;
|
|
250
|
+
} & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<NoInfer<{
|
|
251
|
+
provider: z<string, string, "defined">;
|
|
252
|
+
model: z<string, string, "defined">;
|
|
253
|
+
card: z<string, string, "defined">;
|
|
254
|
+
}>>[], "defined">;
|
|
255
|
+
}>>>, "volatile-defined">;
|
|
256
|
+
}>>, "plain">;
|
|
257
|
+
/**
|
|
258
|
+
* Register the measured-usage fold and editable settings, both owned by this fiber.
|
|
259
|
+
* @param ctx - injected projection and Settings services.
|
|
260
|
+
* @param _config - live price sheet exposed to the browser through Settings.
|
|
261
|
+
*/
|
|
262
|
+
export declare function apply(ctx: Context, _config: Config): void;
|
|
263
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/** Whole-log usage attribution; prices remain read-side configuration, never durable billing facts. */
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import type { PricedRequest } from './types.ts';
|
|
4
|
+
declare const stateSchema: z.ZodObject<{
|
|
5
|
+
view: z.ZodObject<{
|
|
6
|
+
requests: z.ZodArray<z.ZodObject<{
|
|
7
|
+
provider: z.ZodString;
|
|
8
|
+
model: z.ZodString;
|
|
9
|
+
purpose: z.ZodEnum<{
|
|
10
|
+
assistant: "assistant";
|
|
11
|
+
compaction: "compaction";
|
|
12
|
+
}>;
|
|
13
|
+
usage: z.ZodNullable<z.ZodObject<{
|
|
14
|
+
inputTokens: z.ZodNumber;
|
|
15
|
+
outputTokens: z.ZodNumber;
|
|
16
|
+
cacheReadTokens: z.ZodDefault<z.ZodNumber>;
|
|
17
|
+
cacheWriteTokens: z.ZodDefault<z.ZodNumber>;
|
|
18
|
+
}, z.core.$strict>>;
|
|
19
|
+
}, z.core.$strict>>;
|
|
20
|
+
}, z.core.$strict>;
|
|
21
|
+
route: z.ZodNullable<z.ZodObject<{
|
|
22
|
+
provider: z.ZodString;
|
|
23
|
+
model: z.ZodString;
|
|
24
|
+
}, z.core.$strip>>;
|
|
25
|
+
}, z.core.$strict>;
|
|
26
|
+
type State = z.infer<typeof stateSchema>;
|
|
27
|
+
declare module '@deepseek-ai/dsh-session-projection/types' {
|
|
28
|
+
interface SessionProjectionStateMap {
|
|
29
|
+
paeanPricingUsage: State;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Accept normalized SDK buckets, with omitted zero cache buckets and no reasoning surcharge.
|
|
34
|
+
* @param value - measured usage from the durable SDK stream.
|
|
35
|
+
* @returns disjoint buckets, or null for absent, invalid, or inconsistent evidence.
|
|
36
|
+
*/
|
|
37
|
+
export declare function measuredUsage(value: unknown): PricedRequest['usage'];
|
|
38
|
+
/** Compact, whole-log request facts survive paging, compaction and price-sheet updates. */
|
|
39
|
+
export declare const pricingUsageProjection: {
|
|
40
|
+
key: "paeanPricingUsage";
|
|
41
|
+
stateVersion: number;
|
|
42
|
+
stateSchema: z.ZodObject<{
|
|
43
|
+
view: z.ZodObject<{
|
|
44
|
+
requests: z.ZodArray<z.ZodObject<{
|
|
45
|
+
provider: z.ZodString;
|
|
46
|
+
model: z.ZodString;
|
|
47
|
+
purpose: z.ZodEnum<{
|
|
48
|
+
assistant: "assistant";
|
|
49
|
+
compaction: "compaction";
|
|
50
|
+
}>;
|
|
51
|
+
usage: z.ZodNullable<z.ZodObject<{
|
|
52
|
+
inputTokens: z.ZodNumber;
|
|
53
|
+
outputTokens: z.ZodNumber;
|
|
54
|
+
cacheReadTokens: z.ZodDefault<z.ZodNumber>;
|
|
55
|
+
cacheWriteTokens: z.ZodDefault<z.ZodNumber>;
|
|
56
|
+
}, z.core.$strict>>;
|
|
57
|
+
}, z.core.$strict>>;
|
|
58
|
+
}, z.core.$strict>;
|
|
59
|
+
route: z.ZodNullable<z.ZodObject<{
|
|
60
|
+
provider: z.ZodString;
|
|
61
|
+
model: z.ZodString;
|
|
62
|
+
}, z.core.$strip>>;
|
|
63
|
+
}, z.core.$strict>;
|
|
64
|
+
init: () => {
|
|
65
|
+
view: {
|
|
66
|
+
requests: never[];
|
|
67
|
+
};
|
|
68
|
+
route: null;
|
|
69
|
+
};
|
|
70
|
+
apply: (state: NoInfer<{
|
|
71
|
+
view: {
|
|
72
|
+
requests: {
|
|
73
|
+
provider: string;
|
|
74
|
+
model: string;
|
|
75
|
+
purpose: "assistant" | "compaction";
|
|
76
|
+
usage: {
|
|
77
|
+
inputTokens: number;
|
|
78
|
+
outputTokens: number;
|
|
79
|
+
cacheReadTokens: number;
|
|
80
|
+
cacheWriteTokens: number;
|
|
81
|
+
} | null;
|
|
82
|
+
}[];
|
|
83
|
+
};
|
|
84
|
+
route: {
|
|
85
|
+
provider: string;
|
|
86
|
+
model: string;
|
|
87
|
+
} | null;
|
|
88
|
+
}>, event: import("@deepseek-ai/dsh-session").SessionEvent) => {
|
|
89
|
+
view: {
|
|
90
|
+
requests: {
|
|
91
|
+
provider: string;
|
|
92
|
+
model: string;
|
|
93
|
+
purpose: "assistant" | "compaction";
|
|
94
|
+
usage: {
|
|
95
|
+
inputTokens: number;
|
|
96
|
+
outputTokens: number;
|
|
97
|
+
cacheReadTokens: number;
|
|
98
|
+
cacheWriteTokens: number;
|
|
99
|
+
} | null;
|
|
100
|
+
}[];
|
|
101
|
+
};
|
|
102
|
+
route: {
|
|
103
|
+
provider: string;
|
|
104
|
+
model: string;
|
|
105
|
+
} | null;
|
|
106
|
+
};
|
|
107
|
+
wire: {
|
|
108
|
+
viewSchema: z.ZodObject<{
|
|
109
|
+
requests: z.ZodArray<z.ZodObject<{
|
|
110
|
+
provider: z.ZodString;
|
|
111
|
+
model: z.ZodString;
|
|
112
|
+
purpose: z.ZodEnum<{
|
|
113
|
+
assistant: "assistant";
|
|
114
|
+
compaction: "compaction";
|
|
115
|
+
}>;
|
|
116
|
+
usage: z.ZodNullable<z.ZodObject<{
|
|
117
|
+
inputTokens: z.ZodNumber;
|
|
118
|
+
outputTokens: z.ZodNumber;
|
|
119
|
+
cacheReadTokens: z.ZodDefault<z.ZodNumber>;
|
|
120
|
+
cacheWriteTokens: z.ZodDefault<z.ZodNumber>;
|
|
121
|
+
}, z.core.$strict>>;
|
|
122
|
+
}, z.core.$strict>>;
|
|
123
|
+
}, z.core.$strict>;
|
|
124
|
+
view: (state: NoInfer<{
|
|
125
|
+
view: {
|
|
126
|
+
requests: {
|
|
127
|
+
provider: string;
|
|
128
|
+
model: string;
|
|
129
|
+
purpose: "assistant" | "compaction";
|
|
130
|
+
usage: {
|
|
131
|
+
inputTokens: number;
|
|
132
|
+
outputTokens: number;
|
|
133
|
+
cacheReadTokens: number;
|
|
134
|
+
cacheWriteTokens: number;
|
|
135
|
+
} | null;
|
|
136
|
+
}[];
|
|
137
|
+
};
|
|
138
|
+
route: {
|
|
139
|
+
provider: string;
|
|
140
|
+
model: string;
|
|
141
|
+
} | null;
|
|
142
|
+
}>) => {
|
|
143
|
+
requests: {
|
|
144
|
+
provider: string;
|
|
145
|
+
model: string;
|
|
146
|
+
purpose: "assistant" | "compaction";
|
|
147
|
+
usage: {
|
|
148
|
+
inputTokens: number;
|
|
149
|
+
outputTokens: number;
|
|
150
|
+
cacheReadTokens: number;
|
|
151
|
+
cacheWriteTokens: number;
|
|
152
|
+
} | null;
|
|
153
|
+
}[];
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
export {};
|
|
158
|
+
//# sourceMappingURL=projection.d.ts.map
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** Public, browser-safe contracts for market-price estimates. */
|
|
2
|
+
/** USD per million tokens; all four token buckets are disjoint. */
|
|
3
|
+
export interface Rates {
|
|
4
|
+
/** Uncached input price in USD per million tokens. */
|
|
5
|
+
input: number;
|
|
6
|
+
/** Output price in USD per million tokens, including reasoning tokens. */
|
|
7
|
+
output: number;
|
|
8
|
+
/** Cache-read price in USD per million tokens. */
|
|
9
|
+
cacheRead: number;
|
|
10
|
+
/** Cache-write price in USD per million tokens. */
|
|
11
|
+
cacheWrite: number;
|
|
12
|
+
}
|
|
13
|
+
/** One public tariff and its source; long-context rates apply to the entire request. */
|
|
14
|
+
export interface PriceCard extends Rates {
|
|
15
|
+
/** Unique tariff identity referenced by route mappings. */
|
|
16
|
+
id: string;
|
|
17
|
+
/** Upstream model name displayed in the price list. */
|
|
18
|
+
name: string;
|
|
19
|
+
/** HTTPS URL of the public pricing source. */
|
|
20
|
+
source: string;
|
|
21
|
+
/** Optional higher rates for requests exceeding the prompt-token threshold. */
|
|
22
|
+
longContext?: {
|
|
23
|
+
/** Exclusive threshold counting uncached input, cache reads and cache writes. */
|
|
24
|
+
above: number;
|
|
25
|
+
/** Rates applied to every token bucket of a request above the threshold. */
|
|
26
|
+
rates: Rates;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** An explicit protocol/provider alias mapped to its estimated upstream tariff. */
|
|
30
|
+
export interface PriceRoute {
|
|
31
|
+
/** Recorded provider identity, distinguishing the two protocol providers. */
|
|
32
|
+
provider: string;
|
|
33
|
+
/** Recorded model alias selected in Harness. */
|
|
34
|
+
model: string;
|
|
35
|
+
/** Identity of the price card used for this alias. */
|
|
36
|
+
card: string;
|
|
37
|
+
}
|
|
38
|
+
/** Editable price-sheet data, independent of account permissions and model routing. */
|
|
39
|
+
export interface PriceSheet {
|
|
40
|
+
/** Date when these public rates were verified, in YYYY-MM-DD form. */
|
|
41
|
+
verifiedOn: string;
|
|
42
|
+
/** Public model tariffs available to route mappings. */
|
|
43
|
+
cards: PriceCard[];
|
|
44
|
+
/** Explicit provider and model mappings, shared by all accounts for estimation. */
|
|
45
|
+
routes: PriceRoute[];
|
|
46
|
+
}
|
|
47
|
+
/** Provider-reported usage of one settled request; null denotes unavailable usage. */
|
|
48
|
+
export interface PricedRequest {
|
|
49
|
+
provider: string;
|
|
50
|
+
model: string;
|
|
51
|
+
purpose: 'assistant' | 'compaction';
|
|
52
|
+
usage: {
|
|
53
|
+
inputTokens: number;
|
|
54
|
+
outputTokens: number;
|
|
55
|
+
cacheReadTokens: number;
|
|
56
|
+
cacheWriteTokens: number;
|
|
57
|
+
} | null;
|
|
58
|
+
}
|
|
59
|
+
/** Whole-log request facts; no monetary value is persisted in session history. */
|
|
60
|
+
export interface PricingUsage {
|
|
61
|
+
requests: PricedRequest[];
|
|
62
|
+
}
|
|
63
|
+
declare module '@deepseek-ai/dsh-session-projection/types' {
|
|
64
|
+
interface SessionProjectionMap {
|
|
65
|
+
/** Request-attributed measured usage for the independent price presentation. */
|
|
66
|
+
paeanPricingUsage: PricingUsage;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=types.d.ts.map
|
package/locale/en.json
ADDED
package/locale/zh.json
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@paean-ai/harness-model-pricing",
|
|
3
|
+
"description": "Editable market-price estimates for protocol-specific Praxis models and measured session usage",
|
|
4
|
+
"version": "0.1.1-rc.17",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/a8e-ai/paean-harness.git",
|
|
11
|
+
"directory": "packages/paean/paean-model-pricing"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "lib/index.js",
|
|
15
|
+
"types": "lib/types/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./lib/types/index.d.ts",
|
|
19
|
+
"default": "./lib/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./client": {
|
|
22
|
+
"types": "./lib/types/client/index.d.ts",
|
|
23
|
+
"default": "./lib/client.js"
|
|
24
|
+
},
|
|
25
|
+
"./src/*": "./src/*",
|
|
26
|
+
"./package.json": "./package.json",
|
|
27
|
+
"./locale/*.json": "./locale/*.json"
|
|
28
|
+
},
|
|
29
|
+
"dsh": {
|
|
30
|
+
"client": {
|
|
31
|
+
"inject": [
|
|
32
|
+
"@deepseek-ai/dsh-client-locale",
|
|
33
|
+
"@deepseek-ai/dsh-client-ui-conversation",
|
|
34
|
+
"@deepseek-ai/dsh-client-ui-settings"
|
|
35
|
+
],
|
|
36
|
+
"platform": "web"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"@deepseek-ai/cordis": "~4.0.4"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@testing-library/react": "^16.1.0",
|
|
45
|
+
"@types/react": "~18.3.1",
|
|
46
|
+
"@types/react-dom": "~18.3.0",
|
|
47
|
+
"react": "^18.2.0",
|
|
48
|
+
"react-dom": "^18.2.0",
|
|
49
|
+
"@deepseek-ai/dsh-client-locale": "0.2.0-rc.2",
|
|
50
|
+
"@deepseek-ai/cordis": "~4.0.4",
|
|
51
|
+
"@deepseek-ai/dsh-client-ui-chat": "0.2.0-rc.2",
|
|
52
|
+
"@deepseek-ai/dsh-client-test-runtime": "0.2.0-rc.2",
|
|
53
|
+
"@deepseek-ai/dsh-client-ui-layout": "0.2.0-rc.2",
|
|
54
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2",
|
|
55
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.2",
|
|
56
|
+
"@deepseek-ai/dsh-client-ui-theme": "0.2.0-rc.2",
|
|
57
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2",
|
|
58
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2",
|
|
59
|
+
"@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.2",
|
|
60
|
+
"@deepseek-ai/dsh-settings": "0.2.0-rc.2",
|
|
61
|
+
"@deepseek-ai/dsh-session": "0.2.0-rc.2",
|
|
62
|
+
"@deepseek-ai/dsh-session-projection": "0.2.0-rc.2",
|
|
63
|
+
"@deepseek-ai/dsh-llm-retry": "0.2.0-rc.2",
|
|
64
|
+
"@deepseek-ai/dsh-compaction": "0.2.0-rc.2",
|
|
65
|
+
"@deepseek-ai/dsh-llm": "0.2.0-rc.2",
|
|
66
|
+
"@deepseek-ai/cordis-plugin-loader": "~1.0.5",
|
|
67
|
+
"@deepseek-ai/cordis-plugin-include": "~1.0.9",
|
|
68
|
+
"@deepseek-ai/dsh-app-boot": "0.2.0-rc.2",
|
|
69
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.2.0-rc.2",
|
|
70
|
+
"@deepseek-ai/dsh-config-editor": "0.2.0-rc.2"
|
|
71
|
+
},
|
|
72
|
+
"files": [
|
|
73
|
+
"lib/index.js",
|
|
74
|
+
"lib/client.js",
|
|
75
|
+
"lib/types/**/*.d.ts",
|
|
76
|
+
"locale/*.json"
|
|
77
|
+
],
|
|
78
|
+
"dependencies": {
|
|
79
|
+
"zod": "^4.4.3",
|
|
80
|
+
"@deepseek-ai/schemastery": "~3.18.4"
|
|
81
|
+
},
|
|
82
|
+
"scripts": {
|
|
83
|
+
"bundle": "tsdown",
|
|
84
|
+
"watch": "tsdown --watch"
|
|
85
|
+
}
|
|
86
|
+
}
|