@tyvm/knowhow 0.0.103 → 0.0.104
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/package.json +1 -1
- package/src/clients/pricing/catalog.ts +287 -0
- package/src/clients/pricing/index.ts +2 -0
- package/src/fileSync.ts +15 -2
- package/src/hashes.ts +33 -0
- package/src/services/AgentSyncFs.ts +20 -12
- package/ts_build/package.json +1 -1
- package/ts_build/src/clients/pricing/catalog.d.ts +28 -0
- package/ts_build/src/clients/pricing/catalog.js +179 -0
- package/ts_build/src/clients/pricing/catalog.js.map +1 -0
- package/ts_build/src/clients/pricing/index.d.ts +2 -0
- package/ts_build/src/clients/pricing/index.js +8 -1
- package/ts_build/src/clients/pricing/index.js.map +1 -1
- package/ts_build/src/fileSync.js +8 -1
- package/ts_build/src/fileSync.js.map +1 -1
- package/ts_build/src/hashes.d.ts +2 -0
- package/ts_build/src/hashes.js +23 -0
- package/ts_build/src/hashes.js.map +1 -1
- package/ts_build/src/services/AgentSyncFs.d.ts +5 -3
- package/ts_build/src/services/AgentSyncFs.js +17 -11
- package/ts_build/src/services/AgentSyncFs.js.map +1 -1
package/package.json
CHANGED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model catalog: a single source of truth for all supported AI models,
|
|
3
|
+
* their providers, types, display names, and pricing.
|
|
4
|
+
*
|
|
5
|
+
* Pricing is in USD per 1M tokens (or per-image / per-second for media models).
|
|
6
|
+
* This is exported so the Knowhow backend (and other consumers) can import
|
|
7
|
+
* model/pricing data without duplicating it.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { Models, EmbeddingModels } from "../../types";
|
|
11
|
+
import { OpenAiTextPricing } from "./openai";
|
|
12
|
+
import { AnthropicTextPricing } from "./anthropic";
|
|
13
|
+
import { GeminiPricing } from "./google";
|
|
14
|
+
import { XaiTextPricing, XaiImagePricing, XaiVideoPricing } from "./xai";
|
|
15
|
+
|
|
16
|
+
export type ModelType =
|
|
17
|
+
| "completion"
|
|
18
|
+
| "embedding"
|
|
19
|
+
| "image"
|
|
20
|
+
| "audio"
|
|
21
|
+
| "video"
|
|
22
|
+
| "transaction";
|
|
23
|
+
|
|
24
|
+
export interface ModelPricing {
|
|
25
|
+
input: number;
|
|
26
|
+
output: number;
|
|
27
|
+
cached_input?: number;
|
|
28
|
+
cache_write?: number;
|
|
29
|
+
cache_hit?: number;
|
|
30
|
+
input_audio?: number;
|
|
31
|
+
output_audio?: number;
|
|
32
|
+
input_gt_200k?: number;
|
|
33
|
+
output_gt_200k?: number;
|
|
34
|
+
image_generation?: number;
|
|
35
|
+
video_generation?: number;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface ModelCatalogEntry {
|
|
39
|
+
id: string;
|
|
40
|
+
provider: string;
|
|
41
|
+
type: ModelType;
|
|
42
|
+
displayName: string;
|
|
43
|
+
pricing: ModelPricing;
|
|
44
|
+
/** Markup applied on top of base pricing (as a fraction, e.g. 0.025 = 2.5%) */
|
|
45
|
+
markupPercent: number;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// ─── Platform markup ──────────────────────────────────────────────────────────
|
|
49
|
+
|
|
50
|
+
/** 2.5% platform markup applied on top of all provider base rates */
|
|
51
|
+
export const USAGE_MARKUP_PERCENT = 2.5 / 100;
|
|
52
|
+
|
|
53
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
54
|
+
|
|
55
|
+
function completion(
|
|
56
|
+
id: string,
|
|
57
|
+
provider: string,
|
|
58
|
+
displayName: string,
|
|
59
|
+
pricingOverride?: Partial<ModelPricing>
|
|
60
|
+
): ModelCatalogEntry {
|
|
61
|
+
const base =
|
|
62
|
+
(OpenAiTextPricing as Record<string, Partial<ModelPricing>>)[id] ||
|
|
63
|
+
(AnthropicTextPricing as Record<string, Partial<ModelPricing>>)[id] ||
|
|
64
|
+
(GeminiPricing as Record<string, Partial<ModelPricing>>)[id] ||
|
|
65
|
+
(XaiTextPricing as Record<string, Partial<ModelPricing>>)[id] ||
|
|
66
|
+
{};
|
|
67
|
+
return {
|
|
68
|
+
id,
|
|
69
|
+
provider,
|
|
70
|
+
type: "completion",
|
|
71
|
+
displayName,
|
|
72
|
+
markupPercent: USAGE_MARKUP_PERCENT,
|
|
73
|
+
pricing: {
|
|
74
|
+
input: 0,
|
|
75
|
+
output: 0,
|
|
76
|
+
...base,
|
|
77
|
+
...pricingOverride,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function embedding(
|
|
83
|
+
id: string,
|
|
84
|
+
provider: string,
|
|
85
|
+
displayName: string,
|
|
86
|
+
input: number
|
|
87
|
+
): ModelCatalogEntry {
|
|
88
|
+
return {
|
|
89
|
+
id,
|
|
90
|
+
provider,
|
|
91
|
+
type: "embedding",
|
|
92
|
+
displayName,
|
|
93
|
+
markupPercent: USAGE_MARKUP_PERCENT,
|
|
94
|
+
pricing: { input, output: 0 },
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function image(
|
|
99
|
+
id: string,
|
|
100
|
+
provider: string,
|
|
101
|
+
displayName: string,
|
|
102
|
+
pricing: Partial<ModelPricing>
|
|
103
|
+
): ModelCatalogEntry {
|
|
104
|
+
return {
|
|
105
|
+
id,
|
|
106
|
+
provider,
|
|
107
|
+
type: "image",
|
|
108
|
+
displayName,
|
|
109
|
+
markupPercent: USAGE_MARKUP_PERCENT,
|
|
110
|
+
pricing: { input: 0, output: 0, ...pricing },
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function video(
|
|
115
|
+
id: string,
|
|
116
|
+
provider: string,
|
|
117
|
+
displayName: string,
|
|
118
|
+
video_generation: number
|
|
119
|
+
): ModelCatalogEntry {
|
|
120
|
+
return {
|
|
121
|
+
id,
|
|
122
|
+
provider,
|
|
123
|
+
type: "video",
|
|
124
|
+
displayName,
|
|
125
|
+
markupPercent: USAGE_MARKUP_PERCENT,
|
|
126
|
+
pricing: { input: 0, output: 0, video_generation },
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function audio(
|
|
131
|
+
id: string,
|
|
132
|
+
provider: string,
|
|
133
|
+
displayName: string,
|
|
134
|
+
pricing: Partial<ModelPricing>
|
|
135
|
+
): ModelCatalogEntry {
|
|
136
|
+
return {
|
|
137
|
+
id,
|
|
138
|
+
provider,
|
|
139
|
+
type: "audio",
|
|
140
|
+
displayName,
|
|
141
|
+
markupPercent: USAGE_MARKUP_PERCENT,
|
|
142
|
+
pricing: { input: 0, output: 0, ...pricing },
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function transaction(
|
|
147
|
+
id: string,
|
|
148
|
+
provider: string,
|
|
149
|
+
displayName: string,
|
|
150
|
+
pricing: Partial<ModelPricing>
|
|
151
|
+
): ModelCatalogEntry {
|
|
152
|
+
return {
|
|
153
|
+
id,
|
|
154
|
+
provider,
|
|
155
|
+
type: "transaction",
|
|
156
|
+
displayName,
|
|
157
|
+
markupPercent: USAGE_MARKUP_PERCENT,
|
|
158
|
+
pricing: { input: 0, output: 0, ...pricing },
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// ─── OpenAI ───────────────────────────────────────────────────────────────────
|
|
163
|
+
|
|
164
|
+
export const OPENAI_MODEL_CATALOG: ModelCatalogEntry[] = [
|
|
165
|
+
// Completion
|
|
166
|
+
completion(Models.openai.GPT_4o, "openai", "GPT-4o"),
|
|
167
|
+
completion(Models.openai.GPT_4o_Mini, "openai", "GPT-4o Mini"),
|
|
168
|
+
completion(Models.openai.GPT_41, "openai", "GPT-4.1"),
|
|
169
|
+
completion(Models.openai.GPT_41_Mini, "openai", "GPT-4.1 Mini"),
|
|
170
|
+
completion(Models.openai.GPT_41_Nano, "openai", "GPT-4.1 Nano"),
|
|
171
|
+
completion(Models.openai.GPT_45, "openai", "GPT-4.5 Preview"),
|
|
172
|
+
completion(Models.openai.o1, "openai", "o1"),
|
|
173
|
+
completion(Models.openai.o1_Mini, "openai", "o1 Mini"),
|
|
174
|
+
completion(Models.openai.o3, "openai", "o3"),
|
|
175
|
+
completion(Models.openai.o3_Mini, "openai", "o3 Mini"),
|
|
176
|
+
completion(Models.openai.o4_Mini, "openai", "o4 Mini"),
|
|
177
|
+
// Embedding
|
|
178
|
+
embedding(EmbeddingModels.openai.EmbeddingAda2, "openai", "Embedding Ada 002", OpenAiTextPricing[EmbeddingModels.openai.EmbeddingAda2]?.input ?? 0.1),
|
|
179
|
+
embedding(EmbeddingModels.openai.EmbeddingLarge3, "openai", "Embedding 3 Large", OpenAiTextPricing[EmbeddingModels.openai.EmbeddingLarge3]?.input ?? 0.13),
|
|
180
|
+
embedding(EmbeddingModels.openai.EmbeddingSmall3, "openai", "Embedding 3 Small", OpenAiTextPricing[EmbeddingModels.openai.EmbeddingSmall3]?.input ?? 0.02),
|
|
181
|
+
// Image generation
|
|
182
|
+
image(Models.openai.DALL_E_3, "openai", "DALL-E 3", { image_generation: 0.04 }),
|
|
183
|
+
image(Models.openai.DALL_E_2, "openai", "DALL-E 2", { image_generation: 0.02 }),
|
|
184
|
+
image(Models.openai.GPT_Image_15, "openai", "GPT Image 1.5", { input: OpenAiTextPricing[Models.openai.GPT_Image_15]?.input ?? 5.0, output: OpenAiTextPricing[Models.openai.GPT_Image_15]?.output ?? 10.0 }),
|
|
185
|
+
image(Models.openai.GPT_Image_1_Mini, "openai", "GPT Image 1 Mini", { input: OpenAiTextPricing[Models.openai.GPT_Image_1_Mini]?.input ?? 2.0 }),
|
|
186
|
+
// Video generation
|
|
187
|
+
video(Models.openai.Sora, "openai", "Sora", 0.012),
|
|
188
|
+
video(Models.openai.Sora_2, "openai", "Sora 2", 0.015),
|
|
189
|
+
// Audio
|
|
190
|
+
audio(Models.openai.TTS_1, "openai", "TTS-1", { input: 15.0 }),
|
|
191
|
+
audio(Models.openai.Whisper_1, "openai", "Whisper 1", { input: 0.006 }),
|
|
192
|
+
// Transaction / Search
|
|
193
|
+
transaction(Models.openai.GPT_4o_Mini_Search, "openai", "GPT-4o Mini Search", { input: OpenAiTextPricing[Models.openai.GPT_4o_Mini_Search]?.input ?? 0.15, output: OpenAiTextPricing[Models.openai.GPT_4o_Mini_Search]?.output ?? 0.6 }),
|
|
194
|
+
transaction(Models.openai.GPT_4o_Search, "openai", "GPT-4o Search", { input: OpenAiTextPricing[Models.openai.GPT_4o_Search]?.input ?? 2.5, output: OpenAiTextPricing[Models.openai.GPT_4o_Search]?.output ?? 10.0 }),
|
|
195
|
+
];
|
|
196
|
+
|
|
197
|
+
// ─── Anthropic ────────────────────────────────────────────────────────────────
|
|
198
|
+
|
|
199
|
+
export const ANTHROPIC_MODEL_CATALOG: ModelCatalogEntry[] = [
|
|
200
|
+
completion(Models.anthropic.Opus4_5, "anthropic", "Claude Opus 4.5"),
|
|
201
|
+
completion(Models.anthropic.Sonnet4_5, "anthropic", "Claude Sonnet 4.5"),
|
|
202
|
+
completion(Models.anthropic.Opus4, "anthropic", "Claude Opus 4"),
|
|
203
|
+
completion(Models.anthropic.Sonnet4, "anthropic", "Claude Sonnet 4"),
|
|
204
|
+
completion(Models.anthropic.Haiku4_5, "anthropic", "Claude Haiku 4.5"),
|
|
205
|
+
completion(Models.anthropic.Sonnet3_7, "anthropic", "Claude Sonnet 3.7"),
|
|
206
|
+
completion(Models.anthropic.Sonnet3_5, "anthropic", "Claude Sonnet 3.5"),
|
|
207
|
+
completion(Models.anthropic.Haiku3, "anthropic", "Claude Haiku 3"),
|
|
208
|
+
completion(Models.anthropic.Opus3, "anthropic", "Claude Opus 3"),
|
|
209
|
+
];
|
|
210
|
+
|
|
211
|
+
// ─── Google ───────────────────────────────────────────────────────────────────
|
|
212
|
+
|
|
213
|
+
export const GOOGLE_MODEL_CATALOG: ModelCatalogEntry[] = [
|
|
214
|
+
// Completion
|
|
215
|
+
completion(Models.google.Gemini_25_Pro, "google", "Gemini 2.5 Pro"),
|
|
216
|
+
completion(Models.google.Gemini_25_Flash, "google", "Gemini 2.5 Flash"),
|
|
217
|
+
completion(Models.google.Gemini_25_Flash_Lite, "google", "Gemini 2.5 Flash Lite"),
|
|
218
|
+
completion(Models.google.Gemini_20_Flash, "google", "Gemini 2.0 Flash"),
|
|
219
|
+
completion(Models.google.Gemini_15_Pro, "google", "Gemini 1.5 Pro"),
|
|
220
|
+
completion(Models.google.Gemini_15_Flash, "google", "Gemini 1.5 Flash"),
|
|
221
|
+
completion(Models.google.Gemini_15_Flash_8B, "google", "Gemini 1.5 Flash 8B"),
|
|
222
|
+
// Embedding
|
|
223
|
+
embedding(EmbeddingModels.google.Gemini_Embedding, "google", "Gemini Embedding", GeminiPricing[EmbeddingModels.google.Gemini_Embedding]?.input ?? 0),
|
|
224
|
+
// Image generation
|
|
225
|
+
image(Models.google.Gemini_20_Flash_Preview_Image_Generation, "google", "Gemini 2.0 Flash Image", {
|
|
226
|
+
input: GeminiPricing[Models.google.Gemini_20_Flash_Preview_Image_Generation]?.input ?? 0.1,
|
|
227
|
+
output: GeminiPricing[Models.google.Gemini_20_Flash_Preview_Image_Generation]?.output ?? 0.4,
|
|
228
|
+
image_generation: GeminiPricing[Models.google.Gemini_20_Flash_Preview_Image_Generation]?.image_generation ?? 0.039,
|
|
229
|
+
}),
|
|
230
|
+
image(Models.google.Gemini_25_Flash_Image, "google", "Gemini 2.5 Flash Image", {
|
|
231
|
+
input: GeminiPricing[Models.google.Gemini_25_Flash_Image]?.input ?? 0.3,
|
|
232
|
+
output: GeminiPricing[Models.google.Gemini_25_Flash_Image]?.output ?? 0.039,
|
|
233
|
+
image_generation: GeminiPricing[Models.google.Gemini_25_Flash_Image]?.image_generation ?? 0.039,
|
|
234
|
+
}),
|
|
235
|
+
image(Models.google.Gemini_31_Flash_Image_Preview, "google", "Gemini 3.1 Flash Image", {
|
|
236
|
+
input: GeminiPricing[Models.google.Gemini_31_Flash_Image_Preview]?.input ?? 0.5,
|
|
237
|
+
output: GeminiPricing[Models.google.Gemini_31_Flash_Image_Preview]?.output ?? 3.0,
|
|
238
|
+
image_generation: GeminiPricing[Models.google.Gemini_31_Flash_Image_Preview]?.image_generation ?? 0.045,
|
|
239
|
+
}),
|
|
240
|
+
image(Models.google.Gemini_3_Pro_Image_Preview, "google", "Gemini 3 Pro Image", {
|
|
241
|
+
input: GeminiPricing[Models.google.Gemini_3_Pro_Image_Preview]?.input ?? 2.0,
|
|
242
|
+
output: GeminiPricing[Models.google.Gemini_3_Pro_Image_Preview]?.output ?? 12.0,
|
|
243
|
+
image_generation: GeminiPricing[Models.google.Gemini_3_Pro_Image_Preview]?.image_generation ?? 0.134,
|
|
244
|
+
}),
|
|
245
|
+
image(Models.google.Imagen_3, "google", "Imagen 4", { image_generation: GeminiPricing[Models.google.Imagen_3]?.image_generation ?? 0.04 }),
|
|
246
|
+
image(Models.google.Imagen_4_Fast, "google", "Imagen 4 Fast", { image_generation: GeminiPricing[Models.google.Imagen_4_Fast]?.image_generation ?? 0.02 }),
|
|
247
|
+
image(Models.google.Imagen_4_Ultra, "google", "Imagen 4 Ultra", { image_generation: GeminiPricing[Models.google.Imagen_4_Ultra]?.image_generation ?? 0.06 }),
|
|
248
|
+
// Video generation
|
|
249
|
+
video(Models.google.Veo_2, "google", "Veo 2", GeminiPricing[Models.google.Veo_2]?.video_generation ?? 0.35),
|
|
250
|
+
video(Models.google.Veo_3, "google", "Veo 3", GeminiPricing[Models.google.Veo_3]?.video_generation ?? 0.4),
|
|
251
|
+
video(Models.google.Veo_3_Fast, "google", "Veo 3 Fast", GeminiPricing[Models.google.Veo_3_Fast]?.video_generation ?? 0.1),
|
|
252
|
+
// Audio (TTS)
|
|
253
|
+
audio(Models.google.Gemini_25_Flash_TTS, "google", "Gemini 2.5 Flash TTS", {
|
|
254
|
+
input: GeminiPricing[Models.google.Gemini_25_Flash_TTS]?.input ?? 0.5,
|
|
255
|
+
output_audio: GeminiPricing[Models.google.Gemini_25_Flash_TTS]?.output_audio ?? 10.0,
|
|
256
|
+
output: GeminiPricing[Models.google.Gemini_25_Flash_TTS]?.output_audio ?? 10.0,
|
|
257
|
+
}),
|
|
258
|
+
audio(Models.google.Gemini_25_Pro_TTS, "google", "Gemini 2.5 Pro TTS", {
|
|
259
|
+
input: GeminiPricing[Models.google.Gemini_25_Pro_TTS]?.input ?? 1.0,
|
|
260
|
+
output_audio: GeminiPricing[Models.google.Gemini_25_Pro_TTS]?.output_audio ?? 20.0,
|
|
261
|
+
output: GeminiPricing[Models.google.Gemini_25_Pro_TTS]?.output_audio ?? 20.0,
|
|
262
|
+
}),
|
|
263
|
+
];
|
|
264
|
+
|
|
265
|
+
// ─── xAI ──────────────────────────────────────────────────────────────────────
|
|
266
|
+
|
|
267
|
+
export const XAI_MODEL_CATALOG: ModelCatalogEntry[] = [
|
|
268
|
+
completion(Models.xai.Grok4, "xai", "Grok 4"),
|
|
269
|
+
completion(Models.xai.Grok3Beta, "xai", "Grok 3 Beta"),
|
|
270
|
+
completion(Models.xai.Grok3MiniBeta, "xai", "Grok 3 Mini Beta"),
|
|
271
|
+
completion(Models.xai.Grok3FastBeta, "xai", "Grok 3 Fast Beta"),
|
|
272
|
+
completion(Models.xai.Grok21212, "xai", "Grok 2"),
|
|
273
|
+
// Image generation
|
|
274
|
+
image(Models.xai.GrokImagineImage, "xai", "Grok Imagine Image", { image_generation: XaiImagePricing["grok-imagine-image"] ?? 0.02 }),
|
|
275
|
+
image("grok-2-image-1212", "xai", "Grok 2 Image", { image_generation: XaiImagePricing["grok-2-image-1212"] ?? 0.07 }),
|
|
276
|
+
// Video generation
|
|
277
|
+
video(Models.xai.GrokImagineVideo, "xai", "Grok Imagine Video", XaiVideoPricing["grok-imagine-video"] ?? 0.05),
|
|
278
|
+
];
|
|
279
|
+
|
|
280
|
+
// ─── Combined catalog ─────────────────────────────────────────────────────────
|
|
281
|
+
|
|
282
|
+
export const ALL_MODEL_CATALOG: ModelCatalogEntry[] = [
|
|
283
|
+
...OPENAI_MODEL_CATALOG,
|
|
284
|
+
...ANTHROPIC_MODEL_CATALOG,
|
|
285
|
+
...GOOGLE_MODEL_CATALOG,
|
|
286
|
+
...XAI_MODEL_CATALOG,
|
|
287
|
+
];
|
|
@@ -2,3 +2,5 @@ export { OpenAiTextPricing } from "./openai";
|
|
|
2
2
|
export { GeminiTextPricing } from "./google";
|
|
3
3
|
export { AnthropicTextPricing } from "./anthropic";
|
|
4
4
|
export { XaiTextPricing, XaiImagePricing, XaiVideoPricing } from "./xai";
|
|
5
|
+
export { ALL_MODEL_CATALOG, OPENAI_MODEL_CATALOG, ANTHROPIC_MODEL_CATALOG, GOOGLE_MODEL_CATALOG, XAI_MODEL_CATALOG, USAGE_MARKUP_PERCENT } from "./catalog";
|
|
6
|
+
export type { ModelCatalogEntry, ModelType, ModelPricing as CatalogModelPricing } from "./catalog";
|
package/src/fileSync.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { loadJwt } from "./login";
|
|
|
5
5
|
import { getConfig } from "./config";
|
|
6
6
|
import { services } from "./services";
|
|
7
7
|
import { S3Service } from "./services/S3";
|
|
8
|
-
import { getHashes, hasFileChangedSinceUpload, saveUploadHash, isLocalFileMatchingRemote } from "./hashes";
|
|
8
|
+
import { getHashes, hasFileChangedSinceUpload, saveUploadHash, isLocalFileMatchingRemote, isLocalFileMatchingDownloadHash, saveDownloadHash } from "./hashes";
|
|
9
9
|
|
|
10
10
|
export interface FileSyncOptions {
|
|
11
11
|
upload?: boolean;
|
|
@@ -145,12 +145,21 @@ async function downloadFile(
|
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
try {
|
|
148
|
+
// Fast-path: check stored download hash before hitting the API
|
|
149
|
+
const hashes = await getHashes();
|
|
150
|
+
if (await isLocalFileMatchingDownloadHash(localPath, hashes)) {
|
|
151
|
+
console.log(` ✓ Skipping ${localPath} (matches stored download hash)`);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
148
155
|
// Get presigned download URL + remote checksum
|
|
149
156
|
const { downloadUrl, checksumSHA256 } = await client.getOrgFilePresignedDownloadUrl(remotePath);
|
|
150
157
|
|
|
151
158
|
// Skip if local file matches remote checksum
|
|
152
159
|
if (isLocalFileMatchingRemote(localPath, checksumSHA256)) {
|
|
153
160
|
console.log(` ✓ Skipping ${localPath} (matches remote checksum)`);
|
|
161
|
+
// Store the hash so future syncs can skip without hitting the API
|
|
162
|
+
await saveDownloadHash(localPath);
|
|
154
163
|
return;
|
|
155
164
|
}
|
|
156
165
|
|
|
@@ -163,6 +172,9 @@ async function downloadFile(
|
|
|
163
172
|
// Download file using presigned URL
|
|
164
173
|
await s3Service.downloadFromPresignedUrl(downloadUrl, localPath);
|
|
165
174
|
|
|
175
|
+
// Save download hash so we can skip unchanged files next time
|
|
176
|
+
await saveDownloadHash(localPath);
|
|
177
|
+
|
|
166
178
|
// Get file size for logging
|
|
167
179
|
const stats = fs.statSync(localPath);
|
|
168
180
|
console.log(` ✓ Downloaded ${stats.size} bytes`);
|
|
@@ -284,7 +296,8 @@ async function downloadDirectory(
|
|
|
284
296
|
const fullPath = f.folderPath.endsWith("/")
|
|
285
297
|
? f.folderPath + f.fileName
|
|
286
298
|
: f.folderPath + "/" + f.fileName;
|
|
287
|
-
|
|
299
|
+
// Exclude directory placeholder entries (empty fileName) and only include real files
|
|
300
|
+
return f.fileName !== "" && fullPath.startsWith(remoteDir);
|
|
288
301
|
});
|
|
289
302
|
|
|
290
303
|
if (matchingFiles.length === 0) {
|
package/src/hashes.ts
CHANGED
|
@@ -73,6 +73,8 @@ export async function saveAllFileHashes(files: string[], promptHash: string) {
|
|
|
73
73
|
|
|
74
74
|
const UPLOAD_KEY = "upload";
|
|
75
75
|
|
|
76
|
+
const DOWNLOAD_KEY = "download";
|
|
77
|
+
|
|
76
78
|
/**
|
|
77
79
|
* Returns true if the file has changed since the last successful upload
|
|
78
80
|
* (or if it has never been uploaded before)
|
|
@@ -101,6 +103,37 @@ export async function saveUploadHash(localPath: string) {
|
|
|
101
103
|
await saveHashes(hashes);
|
|
102
104
|
}
|
|
103
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Returns true if the local file already matches the hash stored from
|
|
108
|
+
* the last successful download, meaning we can skip the download.
|
|
109
|
+
*/
|
|
110
|
+
export async function isLocalFileMatchingDownloadHash(
|
|
111
|
+
localPath: string,
|
|
112
|
+
hashes: any
|
|
113
|
+
): Promise<boolean> {
|
|
114
|
+
if (!fs.existsSync(localPath)) return false;
|
|
115
|
+
const storedHash = hashes[localPath]?.[DOWNLOAD_KEY];
|
|
116
|
+
if (!storedHash) return false;
|
|
117
|
+
const content = fs.readFileSync(localPath);
|
|
118
|
+
const currentHash = crypto.createHash("sha256").update(content).digest("base64");
|
|
119
|
+
return storedHash === currentHash;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Saves the SHA-256 hash of the file after a successful download so we can
|
|
124
|
+
* skip unchanged files on the next sync.
|
|
125
|
+
*/
|
|
126
|
+
export async function saveDownloadHash(localPath: string) {
|
|
127
|
+
const hashes = await getHashes();
|
|
128
|
+
const content = fs.readFileSync(localPath);
|
|
129
|
+
const currentHash = crypto.createHash("sha256").update(content).digest("base64");
|
|
130
|
+
if (!hashes[localPath]) {
|
|
131
|
+
hashes[localPath] = { fileHash: currentHash, promptHash: "" };
|
|
132
|
+
}
|
|
133
|
+
hashes[localPath][DOWNLOAD_KEY] = currentHash;
|
|
134
|
+
await saveHashes(hashes);
|
|
135
|
+
}
|
|
136
|
+
|
|
104
137
|
/**
|
|
105
138
|
* Compute SHA-256 of a local file, returned as base64 (matches S3 encoding)
|
|
106
139
|
*/
|
|
@@ -18,13 +18,17 @@ export interface FsSyncOptions {
|
|
|
18
18
|
* Creates files in .knowhow/processes/agents/{taskId}/ for status and input
|
|
19
19
|
*/
|
|
20
20
|
export class AgentSyncFs {
|
|
21
|
+
/** Shared cleanup interval across all instances to avoid duplicate cleanup runs */
|
|
22
|
+
private static sharedCleanupInterval: NodeJS.Timeout | null = null;
|
|
23
|
+
private static sharedBasePath: string = ".knowhow/processes/agents";
|
|
24
|
+
private static cleanupStarted: boolean = false;
|
|
25
|
+
|
|
21
26
|
private taskId: string | undefined;
|
|
22
27
|
private basePath: string = ".knowhow/processes/agents";
|
|
23
28
|
private taskPath: string | undefined;
|
|
24
29
|
private eventHandlersSetup: boolean = false;
|
|
25
30
|
private watcher: ReturnType<typeof watch> | null = null;
|
|
26
31
|
private lastInputContent: string = "";
|
|
27
|
-
private cleanupInterval: NodeJS.Timeout | null = null;
|
|
28
32
|
private finalizationPromise: Promise<void> | null = null;
|
|
29
33
|
private agent: BaseAgent | undefined;
|
|
30
34
|
private threadUpdateHandler: ((...args: any[]) => void) | undefined;
|
|
@@ -38,7 +42,7 @@ export class AgentSyncFs {
|
|
|
38
42
|
|
|
39
43
|
constructor() {
|
|
40
44
|
// Start cleanup process when created
|
|
41
|
-
|
|
45
|
+
AgentSyncFs.startSharedCleanupProcess();
|
|
42
46
|
}
|
|
43
47
|
|
|
44
48
|
/**
|
|
@@ -372,9 +376,9 @@ export class AgentSyncFs {
|
|
|
372
376
|
/**
|
|
373
377
|
* Clean up old task directories (older than 3 days)
|
|
374
378
|
*/
|
|
375
|
-
private async cleanupOldTasks(): Promise<void> {
|
|
379
|
+
private static async cleanupOldTasks(): Promise<void> {
|
|
376
380
|
try {
|
|
377
|
-
const agentsPath =
|
|
381
|
+
const agentsPath = AgentSyncFs.sharedBasePath;
|
|
378
382
|
|
|
379
383
|
// Check if directory exists
|
|
380
384
|
try {
|
|
@@ -414,23 +418,27 @@ export class AgentSyncFs {
|
|
|
414
418
|
/**
|
|
415
419
|
* Start periodic cleanup process
|
|
416
420
|
*/
|
|
417
|
-
private
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
+
private static startSharedCleanupProcess(): void {
|
|
422
|
+
if (AgentSyncFs.cleanupStarted) return;
|
|
423
|
+
AgentSyncFs.cleanupStarted = true;
|
|
424
|
+
|
|
425
|
+
// Run cleanup every hour (shared across all instances)
|
|
426
|
+
AgentSyncFs.sharedCleanupInterval = setInterval(() => {
|
|
427
|
+
AgentSyncFs.cleanupOldTasks();
|
|
421
428
|
}, 60 * 60 * 1000);
|
|
422
429
|
|
|
423
430
|
// Also run once on startup
|
|
424
|
-
|
|
431
|
+
AgentSyncFs.cleanupOldTasks();
|
|
425
432
|
}
|
|
426
433
|
|
|
427
434
|
/**
|
|
428
435
|
* Stop cleanup process
|
|
429
436
|
*/
|
|
430
437
|
stopCleanup(): void {
|
|
431
|
-
if (
|
|
432
|
-
clearInterval(
|
|
433
|
-
|
|
438
|
+
if (AgentSyncFs.sharedCleanupInterval) {
|
|
439
|
+
clearInterval(AgentSyncFs.sharedCleanupInterval);
|
|
440
|
+
AgentSyncFs.sharedCleanupInterval = null;
|
|
441
|
+
AgentSyncFs.cleanupStarted = false;
|
|
434
442
|
}
|
|
435
443
|
}
|
|
436
444
|
|
package/ts_build/package.json
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type ModelType = "completion" | "embedding" | "image" | "audio" | "video" | "transaction";
|
|
2
|
+
export interface ModelPricing {
|
|
3
|
+
input: number;
|
|
4
|
+
output: number;
|
|
5
|
+
cached_input?: number;
|
|
6
|
+
cache_write?: number;
|
|
7
|
+
cache_hit?: number;
|
|
8
|
+
input_audio?: number;
|
|
9
|
+
output_audio?: number;
|
|
10
|
+
input_gt_200k?: number;
|
|
11
|
+
output_gt_200k?: number;
|
|
12
|
+
image_generation?: number;
|
|
13
|
+
video_generation?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ModelCatalogEntry {
|
|
16
|
+
id: string;
|
|
17
|
+
provider: string;
|
|
18
|
+
type: ModelType;
|
|
19
|
+
displayName: string;
|
|
20
|
+
pricing: ModelPricing;
|
|
21
|
+
markupPercent: number;
|
|
22
|
+
}
|
|
23
|
+
export declare const USAGE_MARKUP_PERCENT: number;
|
|
24
|
+
export declare const OPENAI_MODEL_CATALOG: ModelCatalogEntry[];
|
|
25
|
+
export declare const ANTHROPIC_MODEL_CATALOG: ModelCatalogEntry[];
|
|
26
|
+
export declare const GOOGLE_MODEL_CATALOG: ModelCatalogEntry[];
|
|
27
|
+
export declare const XAI_MODEL_CATALOG: ModelCatalogEntry[];
|
|
28
|
+
export declare const ALL_MODEL_CATALOG: ModelCatalogEntry[];
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ALL_MODEL_CATALOG = exports.XAI_MODEL_CATALOG = exports.GOOGLE_MODEL_CATALOG = exports.ANTHROPIC_MODEL_CATALOG = exports.OPENAI_MODEL_CATALOG = exports.USAGE_MARKUP_PERCENT = void 0;
|
|
4
|
+
const types_1 = require("../../types");
|
|
5
|
+
const openai_1 = require("./openai");
|
|
6
|
+
const anthropic_1 = require("./anthropic");
|
|
7
|
+
const google_1 = require("./google");
|
|
8
|
+
const xai_1 = require("./xai");
|
|
9
|
+
exports.USAGE_MARKUP_PERCENT = 2.5 / 100;
|
|
10
|
+
function completion(id, provider, displayName, pricingOverride) {
|
|
11
|
+
const base = openai_1.OpenAiTextPricing[id] ||
|
|
12
|
+
anthropic_1.AnthropicTextPricing[id] ||
|
|
13
|
+
google_1.GeminiPricing[id] ||
|
|
14
|
+
xai_1.XaiTextPricing[id] ||
|
|
15
|
+
{};
|
|
16
|
+
return {
|
|
17
|
+
id,
|
|
18
|
+
provider,
|
|
19
|
+
type: "completion",
|
|
20
|
+
displayName,
|
|
21
|
+
markupPercent: exports.USAGE_MARKUP_PERCENT,
|
|
22
|
+
pricing: {
|
|
23
|
+
input: 0,
|
|
24
|
+
output: 0,
|
|
25
|
+
...base,
|
|
26
|
+
...pricingOverride,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function embedding(id, provider, displayName, input) {
|
|
31
|
+
return {
|
|
32
|
+
id,
|
|
33
|
+
provider,
|
|
34
|
+
type: "embedding",
|
|
35
|
+
displayName,
|
|
36
|
+
markupPercent: exports.USAGE_MARKUP_PERCENT,
|
|
37
|
+
pricing: { input, output: 0 },
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function image(id, provider, displayName, pricing) {
|
|
41
|
+
return {
|
|
42
|
+
id,
|
|
43
|
+
provider,
|
|
44
|
+
type: "image",
|
|
45
|
+
displayName,
|
|
46
|
+
markupPercent: exports.USAGE_MARKUP_PERCENT,
|
|
47
|
+
pricing: { input: 0, output: 0, ...pricing },
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function video(id, provider, displayName, video_generation) {
|
|
51
|
+
return {
|
|
52
|
+
id,
|
|
53
|
+
provider,
|
|
54
|
+
type: "video",
|
|
55
|
+
displayName,
|
|
56
|
+
markupPercent: exports.USAGE_MARKUP_PERCENT,
|
|
57
|
+
pricing: { input: 0, output: 0, video_generation },
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function audio(id, provider, displayName, pricing) {
|
|
61
|
+
return {
|
|
62
|
+
id,
|
|
63
|
+
provider,
|
|
64
|
+
type: "audio",
|
|
65
|
+
displayName,
|
|
66
|
+
markupPercent: exports.USAGE_MARKUP_PERCENT,
|
|
67
|
+
pricing: { input: 0, output: 0, ...pricing },
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function transaction(id, provider, displayName, pricing) {
|
|
71
|
+
return {
|
|
72
|
+
id,
|
|
73
|
+
provider,
|
|
74
|
+
type: "transaction",
|
|
75
|
+
displayName,
|
|
76
|
+
markupPercent: exports.USAGE_MARKUP_PERCENT,
|
|
77
|
+
pricing: { input: 0, output: 0, ...pricing },
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
exports.OPENAI_MODEL_CATALOG = [
|
|
81
|
+
completion(types_1.Models.openai.GPT_4o, "openai", "GPT-4o"),
|
|
82
|
+
completion(types_1.Models.openai.GPT_4o_Mini, "openai", "GPT-4o Mini"),
|
|
83
|
+
completion(types_1.Models.openai.GPT_41, "openai", "GPT-4.1"),
|
|
84
|
+
completion(types_1.Models.openai.GPT_41_Mini, "openai", "GPT-4.1 Mini"),
|
|
85
|
+
completion(types_1.Models.openai.GPT_41_Nano, "openai", "GPT-4.1 Nano"),
|
|
86
|
+
completion(types_1.Models.openai.GPT_45, "openai", "GPT-4.5 Preview"),
|
|
87
|
+
completion(types_1.Models.openai.o1, "openai", "o1"),
|
|
88
|
+
completion(types_1.Models.openai.o1_Mini, "openai", "o1 Mini"),
|
|
89
|
+
completion(types_1.Models.openai.o3, "openai", "o3"),
|
|
90
|
+
completion(types_1.Models.openai.o3_Mini, "openai", "o3 Mini"),
|
|
91
|
+
completion(types_1.Models.openai.o4_Mini, "openai", "o4 Mini"),
|
|
92
|
+
embedding(types_1.EmbeddingModels.openai.EmbeddingAda2, "openai", "Embedding Ada 002", openai_1.OpenAiTextPricing[types_1.EmbeddingModels.openai.EmbeddingAda2]?.input ?? 0.1),
|
|
93
|
+
embedding(types_1.EmbeddingModels.openai.EmbeddingLarge3, "openai", "Embedding 3 Large", openai_1.OpenAiTextPricing[types_1.EmbeddingModels.openai.EmbeddingLarge3]?.input ?? 0.13),
|
|
94
|
+
embedding(types_1.EmbeddingModels.openai.EmbeddingSmall3, "openai", "Embedding 3 Small", openai_1.OpenAiTextPricing[types_1.EmbeddingModels.openai.EmbeddingSmall3]?.input ?? 0.02),
|
|
95
|
+
image(types_1.Models.openai.DALL_E_3, "openai", "DALL-E 3", { image_generation: 0.04 }),
|
|
96
|
+
image(types_1.Models.openai.DALL_E_2, "openai", "DALL-E 2", { image_generation: 0.02 }),
|
|
97
|
+
image(types_1.Models.openai.GPT_Image_15, "openai", "GPT Image 1.5", { input: openai_1.OpenAiTextPricing[types_1.Models.openai.GPT_Image_15]?.input ?? 5.0, output: openai_1.OpenAiTextPricing[types_1.Models.openai.GPT_Image_15]?.output ?? 10.0 }),
|
|
98
|
+
image(types_1.Models.openai.GPT_Image_1_Mini, "openai", "GPT Image 1 Mini", { input: openai_1.OpenAiTextPricing[types_1.Models.openai.GPT_Image_1_Mini]?.input ?? 2.0 }),
|
|
99
|
+
video(types_1.Models.openai.Sora, "openai", "Sora", 0.012),
|
|
100
|
+
video(types_1.Models.openai.Sora_2, "openai", "Sora 2", 0.015),
|
|
101
|
+
audio(types_1.Models.openai.TTS_1, "openai", "TTS-1", { input: 15.0 }),
|
|
102
|
+
audio(types_1.Models.openai.Whisper_1, "openai", "Whisper 1", { input: 0.006 }),
|
|
103
|
+
transaction(types_1.Models.openai.GPT_4o_Mini_Search, "openai", "GPT-4o Mini Search", { input: openai_1.OpenAiTextPricing[types_1.Models.openai.GPT_4o_Mini_Search]?.input ?? 0.15, output: openai_1.OpenAiTextPricing[types_1.Models.openai.GPT_4o_Mini_Search]?.output ?? 0.6 }),
|
|
104
|
+
transaction(types_1.Models.openai.GPT_4o_Search, "openai", "GPT-4o Search", { input: openai_1.OpenAiTextPricing[types_1.Models.openai.GPT_4o_Search]?.input ?? 2.5, output: openai_1.OpenAiTextPricing[types_1.Models.openai.GPT_4o_Search]?.output ?? 10.0 }),
|
|
105
|
+
];
|
|
106
|
+
exports.ANTHROPIC_MODEL_CATALOG = [
|
|
107
|
+
completion(types_1.Models.anthropic.Opus4_5, "anthropic", "Claude Opus 4.5"),
|
|
108
|
+
completion(types_1.Models.anthropic.Sonnet4_5, "anthropic", "Claude Sonnet 4.5"),
|
|
109
|
+
completion(types_1.Models.anthropic.Opus4, "anthropic", "Claude Opus 4"),
|
|
110
|
+
completion(types_1.Models.anthropic.Sonnet4, "anthropic", "Claude Sonnet 4"),
|
|
111
|
+
completion(types_1.Models.anthropic.Haiku4_5, "anthropic", "Claude Haiku 4.5"),
|
|
112
|
+
completion(types_1.Models.anthropic.Sonnet3_7, "anthropic", "Claude Sonnet 3.7"),
|
|
113
|
+
completion(types_1.Models.anthropic.Sonnet3_5, "anthropic", "Claude Sonnet 3.5"),
|
|
114
|
+
completion(types_1.Models.anthropic.Haiku3, "anthropic", "Claude Haiku 3"),
|
|
115
|
+
completion(types_1.Models.anthropic.Opus3, "anthropic", "Claude Opus 3"),
|
|
116
|
+
];
|
|
117
|
+
exports.GOOGLE_MODEL_CATALOG = [
|
|
118
|
+
completion(types_1.Models.google.Gemini_25_Pro, "google", "Gemini 2.5 Pro"),
|
|
119
|
+
completion(types_1.Models.google.Gemini_25_Flash, "google", "Gemini 2.5 Flash"),
|
|
120
|
+
completion(types_1.Models.google.Gemini_25_Flash_Lite, "google", "Gemini 2.5 Flash Lite"),
|
|
121
|
+
completion(types_1.Models.google.Gemini_20_Flash, "google", "Gemini 2.0 Flash"),
|
|
122
|
+
completion(types_1.Models.google.Gemini_15_Pro, "google", "Gemini 1.5 Pro"),
|
|
123
|
+
completion(types_1.Models.google.Gemini_15_Flash, "google", "Gemini 1.5 Flash"),
|
|
124
|
+
completion(types_1.Models.google.Gemini_15_Flash_8B, "google", "Gemini 1.5 Flash 8B"),
|
|
125
|
+
embedding(types_1.EmbeddingModels.google.Gemini_Embedding, "google", "Gemini Embedding", google_1.GeminiPricing[types_1.EmbeddingModels.google.Gemini_Embedding]?.input ?? 0),
|
|
126
|
+
image(types_1.Models.google.Gemini_20_Flash_Preview_Image_Generation, "google", "Gemini 2.0 Flash Image", {
|
|
127
|
+
input: google_1.GeminiPricing[types_1.Models.google.Gemini_20_Flash_Preview_Image_Generation]?.input ?? 0.1,
|
|
128
|
+
output: google_1.GeminiPricing[types_1.Models.google.Gemini_20_Flash_Preview_Image_Generation]?.output ?? 0.4,
|
|
129
|
+
image_generation: google_1.GeminiPricing[types_1.Models.google.Gemini_20_Flash_Preview_Image_Generation]?.image_generation ?? 0.039,
|
|
130
|
+
}),
|
|
131
|
+
image(types_1.Models.google.Gemini_25_Flash_Image, "google", "Gemini 2.5 Flash Image", {
|
|
132
|
+
input: google_1.GeminiPricing[types_1.Models.google.Gemini_25_Flash_Image]?.input ?? 0.3,
|
|
133
|
+
output: google_1.GeminiPricing[types_1.Models.google.Gemini_25_Flash_Image]?.output ?? 0.039,
|
|
134
|
+
image_generation: google_1.GeminiPricing[types_1.Models.google.Gemini_25_Flash_Image]?.image_generation ?? 0.039,
|
|
135
|
+
}),
|
|
136
|
+
image(types_1.Models.google.Gemini_31_Flash_Image_Preview, "google", "Gemini 3.1 Flash Image", {
|
|
137
|
+
input: google_1.GeminiPricing[types_1.Models.google.Gemini_31_Flash_Image_Preview]?.input ?? 0.5,
|
|
138
|
+
output: google_1.GeminiPricing[types_1.Models.google.Gemini_31_Flash_Image_Preview]?.output ?? 3.0,
|
|
139
|
+
image_generation: google_1.GeminiPricing[types_1.Models.google.Gemini_31_Flash_Image_Preview]?.image_generation ?? 0.045,
|
|
140
|
+
}),
|
|
141
|
+
image(types_1.Models.google.Gemini_3_Pro_Image_Preview, "google", "Gemini 3 Pro Image", {
|
|
142
|
+
input: google_1.GeminiPricing[types_1.Models.google.Gemini_3_Pro_Image_Preview]?.input ?? 2.0,
|
|
143
|
+
output: google_1.GeminiPricing[types_1.Models.google.Gemini_3_Pro_Image_Preview]?.output ?? 12.0,
|
|
144
|
+
image_generation: google_1.GeminiPricing[types_1.Models.google.Gemini_3_Pro_Image_Preview]?.image_generation ?? 0.134,
|
|
145
|
+
}),
|
|
146
|
+
image(types_1.Models.google.Imagen_3, "google", "Imagen 4", { image_generation: google_1.GeminiPricing[types_1.Models.google.Imagen_3]?.image_generation ?? 0.04 }),
|
|
147
|
+
image(types_1.Models.google.Imagen_4_Fast, "google", "Imagen 4 Fast", { image_generation: google_1.GeminiPricing[types_1.Models.google.Imagen_4_Fast]?.image_generation ?? 0.02 }),
|
|
148
|
+
image(types_1.Models.google.Imagen_4_Ultra, "google", "Imagen 4 Ultra", { image_generation: google_1.GeminiPricing[types_1.Models.google.Imagen_4_Ultra]?.image_generation ?? 0.06 }),
|
|
149
|
+
video(types_1.Models.google.Veo_2, "google", "Veo 2", google_1.GeminiPricing[types_1.Models.google.Veo_2]?.video_generation ?? 0.35),
|
|
150
|
+
video(types_1.Models.google.Veo_3, "google", "Veo 3", google_1.GeminiPricing[types_1.Models.google.Veo_3]?.video_generation ?? 0.4),
|
|
151
|
+
video(types_1.Models.google.Veo_3_Fast, "google", "Veo 3 Fast", google_1.GeminiPricing[types_1.Models.google.Veo_3_Fast]?.video_generation ?? 0.1),
|
|
152
|
+
audio(types_1.Models.google.Gemini_25_Flash_TTS, "google", "Gemini 2.5 Flash TTS", {
|
|
153
|
+
input: google_1.GeminiPricing[types_1.Models.google.Gemini_25_Flash_TTS]?.input ?? 0.5,
|
|
154
|
+
output_audio: google_1.GeminiPricing[types_1.Models.google.Gemini_25_Flash_TTS]?.output_audio ?? 10.0,
|
|
155
|
+
output: google_1.GeminiPricing[types_1.Models.google.Gemini_25_Flash_TTS]?.output_audio ?? 10.0,
|
|
156
|
+
}),
|
|
157
|
+
audio(types_1.Models.google.Gemini_25_Pro_TTS, "google", "Gemini 2.5 Pro TTS", {
|
|
158
|
+
input: google_1.GeminiPricing[types_1.Models.google.Gemini_25_Pro_TTS]?.input ?? 1.0,
|
|
159
|
+
output_audio: google_1.GeminiPricing[types_1.Models.google.Gemini_25_Pro_TTS]?.output_audio ?? 20.0,
|
|
160
|
+
output: google_1.GeminiPricing[types_1.Models.google.Gemini_25_Pro_TTS]?.output_audio ?? 20.0,
|
|
161
|
+
}),
|
|
162
|
+
];
|
|
163
|
+
exports.XAI_MODEL_CATALOG = [
|
|
164
|
+
completion(types_1.Models.xai.Grok4, "xai", "Grok 4"),
|
|
165
|
+
completion(types_1.Models.xai.Grok3Beta, "xai", "Grok 3 Beta"),
|
|
166
|
+
completion(types_1.Models.xai.Grok3MiniBeta, "xai", "Grok 3 Mini Beta"),
|
|
167
|
+
completion(types_1.Models.xai.Grok3FastBeta, "xai", "Grok 3 Fast Beta"),
|
|
168
|
+
completion(types_1.Models.xai.Grok21212, "xai", "Grok 2"),
|
|
169
|
+
image(types_1.Models.xai.GrokImagineImage, "xai", "Grok Imagine Image", { image_generation: xai_1.XaiImagePricing["grok-imagine-image"] ?? 0.02 }),
|
|
170
|
+
image("grok-2-image-1212", "xai", "Grok 2 Image", { image_generation: xai_1.XaiImagePricing["grok-2-image-1212"] ?? 0.07 }),
|
|
171
|
+
video(types_1.Models.xai.GrokImagineVideo, "xai", "Grok Imagine Video", xai_1.XaiVideoPricing["grok-imagine-video"] ?? 0.05),
|
|
172
|
+
];
|
|
173
|
+
exports.ALL_MODEL_CATALOG = [
|
|
174
|
+
...exports.OPENAI_MODEL_CATALOG,
|
|
175
|
+
...exports.ANTHROPIC_MODEL_CATALOG,
|
|
176
|
+
...exports.GOOGLE_MODEL_CATALOG,
|
|
177
|
+
...exports.XAI_MODEL_CATALOG,
|
|
178
|
+
];
|
|
179
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../../src/clients/pricing/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,3 +2,5 @@ export { OpenAiTextPricing } from "./openai";
|
|
|
2
2
|
export { GeminiTextPricing } from "./google";
|
|
3
3
|
export { AnthropicTextPricing } from "./anthropic";
|
|
4
4
|
export { XaiTextPricing, XaiImagePricing, XaiVideoPricing } from "./xai";
|
|
5
|
+
export { ALL_MODEL_CATALOG, OPENAI_MODEL_CATALOG, ANTHROPIC_MODEL_CATALOG, GOOGLE_MODEL_CATALOG, XAI_MODEL_CATALOG, USAGE_MARKUP_PERCENT } from "./catalog";
|
|
6
|
+
export type { ModelCatalogEntry, ModelType, ModelPricing as CatalogModelPricing } from "./catalog";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.XaiVideoPricing = exports.XaiImagePricing = exports.XaiTextPricing = exports.AnthropicTextPricing = exports.GeminiTextPricing = exports.OpenAiTextPricing = void 0;
|
|
3
|
+
exports.USAGE_MARKUP_PERCENT = exports.XAI_MODEL_CATALOG = exports.GOOGLE_MODEL_CATALOG = exports.ANTHROPIC_MODEL_CATALOG = exports.OPENAI_MODEL_CATALOG = exports.ALL_MODEL_CATALOG = exports.XaiVideoPricing = exports.XaiImagePricing = exports.XaiTextPricing = exports.AnthropicTextPricing = exports.GeminiTextPricing = exports.OpenAiTextPricing = void 0;
|
|
4
4
|
var openai_1 = require("./openai");
|
|
5
5
|
Object.defineProperty(exports, "OpenAiTextPricing", { enumerable: true, get: function () { return openai_1.OpenAiTextPricing; } });
|
|
6
6
|
var google_1 = require("./google");
|
|
@@ -11,4 +11,11 @@ var xai_1 = require("./xai");
|
|
|
11
11
|
Object.defineProperty(exports, "XaiTextPricing", { enumerable: true, get: function () { return xai_1.XaiTextPricing; } });
|
|
12
12
|
Object.defineProperty(exports, "XaiImagePricing", { enumerable: true, get: function () { return xai_1.XaiImagePricing; } });
|
|
13
13
|
Object.defineProperty(exports, "XaiVideoPricing", { enumerable: true, get: function () { return xai_1.XaiVideoPricing; } });
|
|
14
|
+
var catalog_1 = require("./catalog");
|
|
15
|
+
Object.defineProperty(exports, "ALL_MODEL_CATALOG", { enumerable: true, get: function () { return catalog_1.ALL_MODEL_CATALOG; } });
|
|
16
|
+
Object.defineProperty(exports, "OPENAI_MODEL_CATALOG", { enumerable: true, get: function () { return catalog_1.OPENAI_MODEL_CATALOG; } });
|
|
17
|
+
Object.defineProperty(exports, "ANTHROPIC_MODEL_CATALOG", { enumerable: true, get: function () { return catalog_1.ANTHROPIC_MODEL_CATALOG; } });
|
|
18
|
+
Object.defineProperty(exports, "GOOGLE_MODEL_CATALOG", { enumerable: true, get: function () { return catalog_1.GOOGLE_MODEL_CATALOG; } });
|
|
19
|
+
Object.defineProperty(exports, "XAI_MODEL_CATALOG", { enumerable: true, get: function () { return catalog_1.XAI_MODEL_CATALOG; } });
|
|
20
|
+
Object.defineProperty(exports, "USAGE_MARKUP_PERCENT", { enumerable: true, get: function () { return catalog_1.USAGE_MARKUP_PERCENT; } });
|
|
14
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/clients/pricing/index.ts"],"names":[],"mappings":";;;AAAA,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAC1B,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAC1B,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAC7B,6BAAyE;AAAhE,qGAAA,cAAc,OAAA;AAAE,sGAAA,eAAe,OAAA;AAAE,sGAAA,eAAe,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/clients/pricing/index.ts"],"names":[],"mappings":";;;AAAA,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAC1B,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAC1B,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAC7B,6BAAyE;AAAhE,qGAAA,cAAc,OAAA;AAAE,sGAAA,eAAe,OAAA;AAAE,sGAAA,eAAe,OAAA;AACzD,qCAA4J;AAAnJ,4GAAA,iBAAiB,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AAAE,+GAAA,oBAAoB,OAAA"}
|
package/ts_build/src/fileSync.js
CHANGED
|
@@ -128,9 +128,15 @@ async function downloadFile(client, s3Service, remotePath, localPath, dryRun) {
|
|
|
128
128
|
return;
|
|
129
129
|
}
|
|
130
130
|
try {
|
|
131
|
+
const hashes = await (0, hashes_1.getHashes)();
|
|
132
|
+
if (await (0, hashes_1.isLocalFileMatchingDownloadHash)(localPath, hashes)) {
|
|
133
|
+
console.log(` ✓ Skipping ${localPath} (matches stored download hash)`);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
131
136
|
const { downloadUrl, checksumSHA256 } = await client.getOrgFilePresignedDownloadUrl(remotePath);
|
|
132
137
|
if ((0, hashes_1.isLocalFileMatchingRemote)(localPath, checksumSHA256)) {
|
|
133
138
|
console.log(` ✓ Skipping ${localPath} (matches remote checksum)`);
|
|
139
|
+
await (0, hashes_1.saveDownloadHash)(localPath);
|
|
134
140
|
return;
|
|
135
141
|
}
|
|
136
142
|
const dir = path.dirname(localPath);
|
|
@@ -138,6 +144,7 @@ async function downloadFile(client, s3Service, remotePath, localPath, dryRun) {
|
|
|
138
144
|
fs.mkdirSync(dir, { recursive: true });
|
|
139
145
|
}
|
|
140
146
|
await s3Service.downloadFromPresignedUrl(downloadUrl, localPath);
|
|
147
|
+
await (0, hashes_1.saveDownloadHash)(localPath);
|
|
141
148
|
const stats = fs.statSync(localPath);
|
|
142
149
|
console.log(` ✓ Downloaded ${stats.size} bytes`);
|
|
143
150
|
}
|
|
@@ -201,7 +208,7 @@ async function downloadDirectory(client, s3Service, remotePath, localPath, dryRu
|
|
|
201
208
|
const fullPath = f.folderPath.endsWith("/")
|
|
202
209
|
? f.folderPath + f.fileName
|
|
203
210
|
: f.folderPath + "/" + f.fileName;
|
|
204
|
-
return fullPath.startsWith(remoteDir);
|
|
211
|
+
return f.fileName !== "" && fullPath.startsWith(remoteDir);
|
|
205
212
|
});
|
|
206
213
|
if (matchingFiles.length === 0) {
|
|
207
214
|
console.log(` ⚠️ No remote files found under ${remoteDir}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileSync.js","sourceRoot":"","sources":["../../src/fileSync.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,4BA+EC;
|
|
1
|
+
{"version":3,"file":"fileSync.js","sourceRoot":"","sources":["../../src/fileSync.ts"],"names":[],"mappings":"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"}
|
package/ts_build/src/hashes.d.ts
CHANGED
|
@@ -6,5 +6,7 @@ export declare function checkNoFilesChanged(files: string[], promptHash: string,
|
|
|
6
6
|
export declare function saveAllFileHashes(files: string[], promptHash: string): Promise<void>;
|
|
7
7
|
export declare function hasFileChangedSinceUpload(localPath: string, hashes: any): Promise<boolean>;
|
|
8
8
|
export declare function saveUploadHash(localPath: string): Promise<void>;
|
|
9
|
+
export declare function isLocalFileMatchingDownloadHash(localPath: string, hashes: any): Promise<boolean>;
|
|
10
|
+
export declare function saveDownloadHash(localPath: string): Promise<void>;
|
|
9
11
|
export declare function computeSHA256Base64(filePath: string): string;
|
|
10
12
|
export declare function isLocalFileMatchingRemote(localPath: string, remoteChecksumSHA256: string | null): boolean;
|
package/ts_build/src/hashes.js
CHANGED
|
@@ -43,6 +43,8 @@ exports.checkNoFilesChanged = checkNoFilesChanged;
|
|
|
43
43
|
exports.saveAllFileHashes = saveAllFileHashes;
|
|
44
44
|
exports.hasFileChangedSinceUpload = hasFileChangedSinceUpload;
|
|
45
45
|
exports.saveUploadHash = saveUploadHash;
|
|
46
|
+
exports.isLocalFileMatchingDownloadHash = isLocalFileMatchingDownloadHash;
|
|
47
|
+
exports.saveDownloadHash = saveDownloadHash;
|
|
46
48
|
exports.computeSHA256Base64 = computeSHA256Base64;
|
|
47
49
|
exports.isLocalFileMatchingRemote = isLocalFileMatchingRemote;
|
|
48
50
|
const fs_1 = __importDefault(require("fs"));
|
|
@@ -96,6 +98,7 @@ async function saveAllFileHashes(files, promptHash) {
|
|
|
96
98
|
await saveHashes(hashes);
|
|
97
99
|
}
|
|
98
100
|
const UPLOAD_KEY = "upload";
|
|
101
|
+
const DOWNLOAD_KEY = "download";
|
|
99
102
|
async function hasFileChangedSinceUpload(localPath, hashes) {
|
|
100
103
|
if (!fs_1.default.existsSync(localPath))
|
|
101
104
|
return true;
|
|
@@ -113,6 +116,26 @@ async function saveUploadHash(localPath) {
|
|
|
113
116
|
hashes[localPath][UPLOAD_KEY] = currentHash;
|
|
114
117
|
await saveHashes(hashes);
|
|
115
118
|
}
|
|
119
|
+
async function isLocalFileMatchingDownloadHash(localPath, hashes) {
|
|
120
|
+
if (!fs_1.default.existsSync(localPath))
|
|
121
|
+
return false;
|
|
122
|
+
const storedHash = hashes[localPath]?.[DOWNLOAD_KEY];
|
|
123
|
+
if (!storedHash)
|
|
124
|
+
return false;
|
|
125
|
+
const content = fs_1.default.readFileSync(localPath);
|
|
126
|
+
const currentHash = crypto.createHash("sha256").update(content).digest("base64");
|
|
127
|
+
return storedHash === currentHash;
|
|
128
|
+
}
|
|
129
|
+
async function saveDownloadHash(localPath) {
|
|
130
|
+
const hashes = await getHashes();
|
|
131
|
+
const content = fs_1.default.readFileSync(localPath);
|
|
132
|
+
const currentHash = crypto.createHash("sha256").update(content).digest("base64");
|
|
133
|
+
if (!hashes[localPath]) {
|
|
134
|
+
hashes[localPath] = { fileHash: currentHash, promptHash: "" };
|
|
135
|
+
}
|
|
136
|
+
hashes[localPath][DOWNLOAD_KEY] = currentHash;
|
|
137
|
+
await saveHashes(hashes);
|
|
138
|
+
}
|
|
116
139
|
function computeSHA256Base64(filePath) {
|
|
117
140
|
const content = fs_1.default.readFileSync(filePath);
|
|
118
141
|
return crypto.createHash("sha256").update(content).digest("base64");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashes.js","sourceRoot":"","sources":["../../src/hashes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,8BAGC;AAED,gCAEC;AAED,0BAEC;AAED,kDAiCC;AAED,8CAiBC;
|
|
1
|
+
{"version":3,"file":"hashes.js","sourceRoot":"","sources":["../../src/hashes.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,15 @@ export interface FsSyncOptions {
|
|
|
5
5
|
agentName?: string;
|
|
6
6
|
}
|
|
7
7
|
export declare class AgentSyncFs {
|
|
8
|
+
private static sharedCleanupInterval;
|
|
9
|
+
private static sharedBasePath;
|
|
10
|
+
private static cleanupStarted;
|
|
8
11
|
private taskId;
|
|
9
12
|
private basePath;
|
|
10
13
|
private taskPath;
|
|
11
14
|
private eventHandlersSetup;
|
|
12
15
|
private watcher;
|
|
13
16
|
private lastInputContent;
|
|
14
|
-
private cleanupInterval;
|
|
15
17
|
private finalizationPromise;
|
|
16
18
|
private agent;
|
|
17
19
|
private threadUpdateHandler;
|
|
@@ -32,8 +34,8 @@ export declare class AgentSyncFs {
|
|
|
32
34
|
private setupEventHandlers;
|
|
33
35
|
waitForFinalization(): Promise<void>;
|
|
34
36
|
cleanup(): Promise<void>;
|
|
35
|
-
private cleanupOldTasks;
|
|
36
|
-
private
|
|
37
|
+
private static cleanupOldTasks;
|
|
38
|
+
private static startSharedCleanupProcess;
|
|
37
39
|
stopCleanup(): void;
|
|
38
40
|
reset(): void;
|
|
39
41
|
}
|
|
@@ -38,20 +38,22 @@ const fs_1 = require("fs");
|
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
const fs_2 = require("fs");
|
|
40
40
|
class AgentSyncFs {
|
|
41
|
+
static sharedCleanupInterval = null;
|
|
42
|
+
static sharedBasePath = ".knowhow/processes/agents";
|
|
43
|
+
static cleanupStarted = false;
|
|
41
44
|
taskId;
|
|
42
45
|
basePath = ".knowhow/processes/agents";
|
|
43
46
|
taskPath;
|
|
44
47
|
eventHandlersSetup = false;
|
|
45
48
|
watcher = null;
|
|
46
49
|
lastInputContent = "";
|
|
47
|
-
cleanupInterval = null;
|
|
48
50
|
finalizationPromise = null;
|
|
49
51
|
agent;
|
|
50
52
|
threadUpdateHandler;
|
|
51
53
|
doneHandler;
|
|
52
54
|
pendingThreadUpdatePromise = null;
|
|
53
55
|
constructor() {
|
|
54
|
-
|
|
56
|
+
AgentSyncFs.startSharedCleanupProcess();
|
|
55
57
|
}
|
|
56
58
|
async createTask(options) {
|
|
57
59
|
this.taskId = options.taskId;
|
|
@@ -295,9 +297,9 @@ class AgentSyncFs {
|
|
|
295
297
|
this.watcher = null;
|
|
296
298
|
}
|
|
297
299
|
}
|
|
298
|
-
async cleanupOldTasks() {
|
|
300
|
+
static async cleanupOldTasks() {
|
|
299
301
|
try {
|
|
300
|
-
const agentsPath =
|
|
302
|
+
const agentsPath = AgentSyncFs.sharedBasePath;
|
|
301
303
|
try {
|
|
302
304
|
await fs_1.promises.access(agentsPath);
|
|
303
305
|
}
|
|
@@ -328,16 +330,20 @@ class AgentSyncFs {
|
|
|
328
330
|
console.error(`❌ Error during cleanup:`, error);
|
|
329
331
|
}
|
|
330
332
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
333
|
+
static startSharedCleanupProcess() {
|
|
334
|
+
if (AgentSyncFs.cleanupStarted)
|
|
335
|
+
return;
|
|
336
|
+
AgentSyncFs.cleanupStarted = true;
|
|
337
|
+
AgentSyncFs.sharedCleanupInterval = setInterval(() => {
|
|
338
|
+
AgentSyncFs.cleanupOldTasks();
|
|
334
339
|
}, 60 * 60 * 1000);
|
|
335
|
-
|
|
340
|
+
AgentSyncFs.cleanupOldTasks();
|
|
336
341
|
}
|
|
337
342
|
stopCleanup() {
|
|
338
|
-
if (
|
|
339
|
-
clearInterval(
|
|
340
|
-
|
|
343
|
+
if (AgentSyncFs.sharedCleanupInterval) {
|
|
344
|
+
clearInterval(AgentSyncFs.sharedCleanupInterval);
|
|
345
|
+
AgentSyncFs.sharedCleanupInterval = null;
|
|
346
|
+
AgentSyncFs.cleanupStarted = false;
|
|
341
347
|
}
|
|
342
348
|
}
|
|
343
349
|
reset() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentSyncFs.js","sourceRoot":"","sources":["../../../src/services/AgentSyncFs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgentSyncFs.js","sourceRoot":"","sources":["../../../src/services/AgentSyncFs.ts"],"names":[],"mappings":"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"}
|