@retab/node 0.0.0-reserved → 0.0.42
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 +293 -2
- package/dist/api/client.d.ts +15 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +16 -0
- package/dist/api/consensus/client.d.ts +7 -0
- package/dist/api/consensus/client.d.ts.map +1 -0
- package/dist/api/consensus/client.js +14 -0
- package/dist/api/deployments/client.d.ts +20 -0
- package/dist/api/deployments/client.d.ts.map +1 -0
- package/dist/api/deployments/client.js +23 -0
- package/dist/api/documents/client.d.ts +10 -0
- package/dist/api/documents/client.d.ts.map +1 -0
- package/dist/api/documents/client.js +35 -0
- package/dist/api/models/client.d.ts +17 -0
- package/dist/api/models/client.d.ts.map +1 -0
- package/dist/api/models/client.js +15 -0
- package/dist/api/schemas/client.d.ts +12 -0
- package/dist/api/schemas/client.d.ts.map +1 -0
- package/dist/api/schemas/client.js +14 -0
- package/dist/client.d.ts +50 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +135 -0
- package/dist/errors.d.ts +34 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +53 -0
- package/dist/generated_types.d.ts +64373 -0
- package/dist/generated_types.d.ts.map +1 -0
- package/dist/generated_types.js +2267 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/mime.d.ts +5 -0
- package/dist/mime.d.ts.map +1 -0
- package/dist/mime.js +66 -0
- package/dist/resource.d.ts +12 -0
- package/dist/resource.d.ts.map +1 -0
- package/dist/resource.js +19 -0
- package/dist/resources/consensus/completions.d.ts +66 -0
- package/dist/resources/consensus/completions.d.ts.map +1 -0
- package/dist/resources/consensus/completions.js +84 -0
- package/dist/resources/consensus/index.d.ts +72 -0
- package/dist/resources/consensus/index.d.ts.map +1 -0
- package/dist/resources/consensus/index.js +76 -0
- package/dist/resources/consensus/responses.d.ts +69 -0
- package/dist/resources/consensus/responses.d.ts.map +1 -0
- package/dist/resources/consensus/responses.js +99 -0
- package/dist/resources/documents/extractions.d.ts +74 -0
- package/dist/resources/documents/extractions.d.ts.map +1 -0
- package/dist/resources/documents/extractions.js +196 -0
- package/dist/resources/documents/index.d.ts +21 -0
- package/dist/resources/documents/index.d.ts.map +1 -0
- package/dist/resources/documents/index.js +55 -0
- package/dist/resources/evaluations/documents.d.ts +40 -0
- package/dist/resources/evaluations/documents.d.ts.map +1 -0
- package/dist/resources/evaluations/documents.js +123 -0
- package/dist/resources/evaluations/index.d.ts +14 -0
- package/dist/resources/evaluations/index.d.ts.map +1 -0
- package/dist/resources/evaluations/index.js +17 -0
- package/dist/resources/evaluations/iterations.d.ts +50 -0
- package/dist/resources/evaluations/iterations.d.ts.map +1 -0
- package/dist/resources/evaluations/iterations.js +156 -0
- package/dist/resources/files.d.ts +82 -0
- package/dist/resources/files.d.ts.map +1 -0
- package/dist/resources/files.js +150 -0
- package/dist/resources/finetuning.d.ts +105 -0
- package/dist/resources/finetuning.d.ts.map +1 -0
- package/dist/resources/finetuning.js +181 -0
- package/dist/resources/index.d.ts +11 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +10 -0
- package/dist/resources/models.d.ts +57 -0
- package/dist/resources/models.d.ts.map +1 -0
- package/dist/resources/models.js +72 -0
- package/dist/resources/processors/automations/endpoints.d.ts +90 -0
- package/dist/resources/processors/automations/endpoints.d.ts.map +1 -0
- package/dist/resources/processors/automations/endpoints.js +145 -0
- package/dist/resources/processors/automations/index.d.ts +7 -0
- package/dist/resources/processors/automations/index.d.ts.map +1 -0
- package/dist/resources/processors/automations/index.js +6 -0
- package/dist/resources/processors/automations/links.d.ts +90 -0
- package/dist/resources/processors/automations/links.d.ts.map +1 -0
- package/dist/resources/processors/automations/links.js +149 -0
- package/dist/resources/processors/automations/logs.d.ts +35 -0
- package/dist/resources/processors/automations/logs.d.ts.map +1 -0
- package/dist/resources/processors/automations/logs.js +60 -0
- package/dist/resources/processors/automations/mailboxes.d.ts +102 -0
- package/dist/resources/processors/automations/mailboxes.d.ts.map +1 -0
- package/dist/resources/processors/automations/mailboxes.js +157 -0
- package/dist/resources/processors/automations/outlook.d.ts +114 -0
- package/dist/resources/processors/automations/outlook.d.ts.map +1 -0
- package/dist/resources/processors/automations/outlook.js +170 -0
- package/dist/resources/processors/automations/tests.d.ts +58 -0
- package/dist/resources/processors/automations/tests.d.ts.map +1 -0
- package/dist/resources/processors/automations/tests.js +90 -0
- package/dist/resources/processors/index.d.ts +303 -0
- package/dist/resources/processors/index.d.ts.map +1 -0
- package/dist/resources/processors/index.js +261 -0
- package/dist/resources/schemas.d.ts +63 -0
- package/dist/resources/schemas.d.ts.map +1 -0
- package/dist/resources/schemas.js +183 -0
- package/dist/resources/secrets/external_api_keys.d.ts +61 -0
- package/dist/resources/secrets/external_api_keys.d.ts.map +1 -0
- package/dist/resources/secrets/external_api_keys.js +120 -0
- package/dist/resources/secrets/index.d.ts +14 -0
- package/dist/resources/secrets/index.d.ts.map +1 -0
- package/dist/resources/secrets/index.js +17 -0
- package/dist/resources/secrets/webhooks.d.ts +73 -0
- package/dist/resources/secrets/webhooks.d.ts.map +1 -0
- package/dist/resources/secrets/webhooks.js +145 -0
- package/dist/resources/usage.d.ts +223 -0
- package/dist/resources/usage.d.ts.map +1 -0
- package/dist/resources/usage.js +310 -0
- package/dist/types/ai_models.d.ts +389 -0
- package/dist/types/ai_models.d.ts.map +1 -0
- package/dist/types/ai_models.js +145 -0
- package/dist/types/automations/cron.d.ts +28 -0
- package/dist/types/automations/cron.d.ts.map +1 -0
- package/dist/types/automations/cron.js +1 -0
- package/dist/types/automations/endpoints.d.ts +13 -0
- package/dist/types/automations/endpoints.d.ts.map +1 -0
- package/dist/types/automations/endpoints.js +1 -0
- package/dist/types/automations/index.d.ts +7 -0
- package/dist/types/automations/index.d.ts.map +1 -0
- package/dist/types/automations/index.js +6 -0
- package/dist/types/automations/links.d.ts +15 -0
- package/dist/types/automations/links.d.ts.map +1 -0
- package/dist/types/automations/links.js +1 -0
- package/dist/types/automations/mailboxes.d.ts +18 -0
- package/dist/types/automations/mailboxes.d.ts.map +1 -0
- package/dist/types/automations/mailboxes.js +1 -0
- package/dist/types/automations/outlook.d.ts +37 -0
- package/dist/types/automations/outlook.d.ts.map +1 -0
- package/dist/types/automations/outlook.js +1 -0
- package/dist/types/automations/webhooks.d.ts +13 -0
- package/dist/types/automations/webhooks.d.ts.map +1 -0
- package/dist/types/automations/webhooks.js +1 -0
- package/dist/types/browser_canvas.d.ts +4 -0
- package/dist/types/browser_canvas.d.ts.map +1 -0
- package/dist/types/browser_canvas.js +2 -0
- package/dist/types/chat.d.ts +99 -0
- package/dist/types/chat.d.ts.map +1 -0
- package/dist/types/chat.js +20 -0
- package/dist/types/consensus.d.ts +10 -0
- package/dist/types/consensus.d.ts.map +1 -0
- package/dist/types/consensus.js +1 -0
- package/dist/types/db/annotations.d.ts +108 -0
- package/dist/types/db/annotations.d.ts.map +1 -0
- package/dist/types/db/annotations.js +6 -0
- package/dist/types/db/files.d.ts +133 -0
- package/dist/types/db/files.d.ts.map +1 -0
- package/dist/types/db/files.js +5 -0
- package/dist/types/documents/extractions.d.ts +1849 -0
- package/dist/types/documents/extractions.d.ts.map +1 -0
- package/dist/types/documents/extractions.js +211 -0
- package/dist/types/documents/processing.d.ts +249 -0
- package/dist/types/documents/processing.d.ts.map +1 -0
- package/dist/types/documents/processing.js +6 -0
- package/dist/types/evaluations/iterations.d.ts +41 -0
- package/dist/types/evaluations/iterations.d.ts.map +1 -0
- package/dist/types/evaluations/iterations.js +1 -0
- package/dist/types/jobs/base.d.ts +162 -0
- package/dist/types/jobs/base.d.ts.map +1 -0
- package/dist/types/jobs/base.js +6 -0
- package/dist/types/jobs/specialized.d.ts +200 -0
- package/dist/types/jobs/specialized.d.ts.map +1 -0
- package/dist/types/jobs/specialized.js +37 -0
- package/dist/types/logs.d.ts +92 -0
- package/dist/types/logs.d.ts.map +1 -0
- package/dist/types/logs.js +1 -0
- package/dist/types/mime.d.ts +426 -0
- package/dist/types/mime.d.ts.map +1 -0
- package/dist/types/mime.js +48 -0
- package/dist/types/modalities.d.ts +31 -0
- package/dist/types/modalities.d.ts.map +1 -0
- package/dist/types/modalities.js +109 -0
- package/dist/types/pagination.d.ts +5 -0
- package/dist/types/pagination.d.ts.map +1 -0
- package/dist/types/pagination.js +1 -0
- package/dist/types/schemas/enhancement.d.ts +250 -0
- package/dist/types/schemas/enhancement.d.ts.map +1 -0
- package/dist/types/schemas/enhancement.js +6 -0
- package/dist/types/schemas/generate.d.ts +160 -0
- package/dist/types/schemas/generate.d.ts.map +1 -0
- package/dist/types/schemas/generate.js +19 -0
- package/dist/types/schemas/object.d.ts +116 -0
- package/dist/types/schemas/object.d.ts.map +1 -0
- package/dist/types/schemas/object.js +861 -0
- package/dist/types/secrets/external_api_keys.d.ts +27 -0
- package/dist/types/secrets/external_api_keys.d.ts.map +1 -0
- package/dist/types/secrets/external_api_keys.js +11 -0
- package/dist/types/secrets/index.d.ts +2 -0
- package/dist/types/secrets/index.d.ts.map +1 -0
- package/dist/types/secrets/index.js +1 -0
- package/dist/types/standards.d.ts +37 -0
- package/dist/types/standards.d.ts.map +1 -0
- package/dist/types/standards.js +1 -0
- package/dist/types.d.ts +276 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +85 -0
- package/dist/utils/ai_models.d.ts +10 -0
- package/dist/utils/ai_models.d.ts.map +1 -0
- package/dist/utils/ai_models.js +183 -0
- package/dist/utils/batch_processing.d.ts +227 -0
- package/dist/utils/batch_processing.d.ts.map +1 -0
- package/dist/utils/batch_processing.js +268 -0
- package/dist/utils/benchmarking.d.ts +115 -0
- package/dist/utils/benchmarking.d.ts.map +1 -0
- package/dist/utils/benchmarking.js +355 -0
- package/dist/utils/chat.d.ts +70 -0
- package/dist/utils/chat.d.ts.map +1 -0
- package/dist/utils/chat.js +79 -0
- package/dist/utils/cost_calculation.d.ts +26 -0
- package/dist/utils/cost_calculation.d.ts.map +1 -0
- package/dist/utils/cost_calculation.js +99 -0
- package/dist/utils/datasets.d.ts +135 -0
- package/dist/utils/datasets.d.ts.map +1 -0
- package/dist/utils/datasets.js +359 -0
- package/dist/utils/display.d.ts +108 -0
- package/dist/utils/display.d.ts.map +1 -0
- package/dist/utils/display.js +244 -0
- package/dist/utils/hash.d.ts +18 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +31 -0
- package/dist/utils/hashing.d.ts +18 -0
- package/dist/utils/hashing.d.ts.map +1 -0
- package/dist/utils/hashing.js +28 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/json_schema.d.ts +18 -0
- package/dist/utils/json_schema.d.ts.map +1 -0
- package/dist/utils/json_schema.js +334 -0
- package/dist/utils/json_schema_utils.d.ts +42 -0
- package/dist/utils/json_schema_utils.d.ts.map +1 -0
- package/dist/utils/json_schema_utils.js +212 -0
- package/dist/utils/jsonl.d.ts +60 -0
- package/dist/utils/jsonl.d.ts.map +1 -0
- package/dist/utils/jsonl.js +259 -0
- package/dist/utils/mime.d.ts +6 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +129 -0
- package/dist/utils/model_cards.d.ts +219 -0
- package/dist/utils/model_cards.d.ts.map +1 -0
- package/dist/utils/model_cards.js +462 -0
- package/dist/utils/prompt_optimization.d.ts +96 -0
- package/dist/utils/prompt_optimization.d.ts.map +1 -0
- package/dist/utils/prompt_optimization.js +275 -0
- package/dist/utils/responses.d.ts +35 -0
- package/dist/utils/responses.d.ts.map +1 -0
- package/dist/utils/responses.js +37 -0
- package/dist/utils/stream.d.ts +13 -0
- package/dist/utils/stream.d.ts.map +1 -0
- package/dist/utils/stream.js +64 -0
- package/dist/utils/stream_context_managers.d.ts +147 -0
- package/dist/utils/stream_context_managers.d.ts.map +1 -0
- package/dist/utils/stream_context_managers.js +380 -0
- package/dist/utils/usage.d.ts +57 -0
- package/dist/utils/usage.d.ts.map +1 -0
- package/dist/utils/usage.js +97 -0
- package/dist/utils/webhook_secrets.d.ts +59 -0
- package/dist/utils/webhook_secrets.d.ts.map +1 -0
- package/dist/utils/webhook_secrets.js +107 -0
- package/dist/utils/zod_to_json_schema.d.ts +11 -0
- package/dist/utils/zod_to_json_schema.d.ts.map +1 -0
- package/dist/utils/zod_to_json_schema.js +123 -0
- package/dist/utils.d.ts +19 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +1 -0
- package/package.json +62 -6
- package/index.js +0 -7
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { createReadStream, createWriteStream } from 'fs';
|
|
3
|
+
import { createInterface } from 'readline';
|
|
4
|
+
import { pipeline } from 'stream/promises';
|
|
5
|
+
import { Transform } from 'stream';
|
|
6
|
+
/**
|
|
7
|
+
* Read JSONL file and return array of parsed objects
|
|
8
|
+
*/
|
|
9
|
+
export async function readJSONL(filePath, options = {}) {
|
|
10
|
+
const { encoding = 'utf8' } = options;
|
|
11
|
+
const results = [];
|
|
12
|
+
const fileStream = createReadStream(filePath, { encoding });
|
|
13
|
+
const rl = createInterface({
|
|
14
|
+
input: fileStream,
|
|
15
|
+
crlfDelay: Infinity, // Handle Windows line endings
|
|
16
|
+
});
|
|
17
|
+
for await (const line of rl) {
|
|
18
|
+
const trimmedLine = line.trim();
|
|
19
|
+
if (trimmedLine) {
|
|
20
|
+
try {
|
|
21
|
+
results.push(JSON.parse(trimmedLine));
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
throw new Error(`Invalid JSON on line ${results.length + 1}: ${error instanceof Error ? error.message : String(error)}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return results;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Write array of objects to JSONL file
|
|
32
|
+
*/
|
|
33
|
+
export async function writeJSONL(filePath, data, options = {}) {
|
|
34
|
+
const { encoding = 'utf8' } = options;
|
|
35
|
+
const writeStream = createWriteStream(filePath, { encoding });
|
|
36
|
+
for (const item of data) {
|
|
37
|
+
const jsonLine = JSON.stringify(item) + '\n';
|
|
38
|
+
writeStream.write(jsonLine);
|
|
39
|
+
}
|
|
40
|
+
writeStream.end();
|
|
41
|
+
return new Promise((resolve, reject) => {
|
|
42
|
+
writeStream.on('finish', resolve);
|
|
43
|
+
writeStream.on('error', reject);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Append single object to JSONL file
|
|
48
|
+
*/
|
|
49
|
+
export async function appendJSONL(filePath, data, options = {}) {
|
|
50
|
+
const { encoding = 'utf8' } = options;
|
|
51
|
+
const jsonLine = JSON.stringify(data) + '\n';
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
fs.appendFile(filePath, jsonLine, { encoding }, (error) => {
|
|
54
|
+
if (error) {
|
|
55
|
+
reject(error);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
resolve();
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Stream JSONL file processing with transformation
|
|
65
|
+
*/
|
|
66
|
+
export async function streamJSONL(inputPath, outputPath, transform, options = {}) {
|
|
67
|
+
const { encoding = 'utf8' } = options;
|
|
68
|
+
const inputStream = createReadStream(inputPath, { encoding });
|
|
69
|
+
const outputStream = createWriteStream(outputPath, { encoding });
|
|
70
|
+
const transformStream = new Transform({
|
|
71
|
+
objectMode: true,
|
|
72
|
+
async transform(chunk, _encoding, callback) {
|
|
73
|
+
try {
|
|
74
|
+
const line = chunk.toString().trim();
|
|
75
|
+
if (line) {
|
|
76
|
+
const parsed = JSON.parse(line);
|
|
77
|
+
const transformed = await transform(parsed);
|
|
78
|
+
const jsonLine = JSON.stringify(transformed) + '\n';
|
|
79
|
+
callback(null, jsonLine);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
callback();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
callback(error instanceof Error ? error : new Error(String(error)));
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
const rl = createInterface({
|
|
91
|
+
input: inputStream,
|
|
92
|
+
crlfDelay: Infinity,
|
|
93
|
+
});
|
|
94
|
+
for await (const line of rl) {
|
|
95
|
+
transformStream.write(line);
|
|
96
|
+
}
|
|
97
|
+
transformStream.end();
|
|
98
|
+
await pipeline(transformStream, outputStream);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Validate JSONL file format
|
|
102
|
+
*/
|
|
103
|
+
export async function validateJSONL(filePath) {
|
|
104
|
+
const errors = [];
|
|
105
|
+
let lineNumber = 0;
|
|
106
|
+
try {
|
|
107
|
+
const fileStream = createReadStream(filePath, { encoding: 'utf8' });
|
|
108
|
+
const rl = createInterface({
|
|
109
|
+
input: fileStream,
|
|
110
|
+
crlfDelay: Infinity,
|
|
111
|
+
});
|
|
112
|
+
for await (const line of rl) {
|
|
113
|
+
lineNumber++;
|
|
114
|
+
const trimmedLine = line.trim();
|
|
115
|
+
if (trimmedLine) {
|
|
116
|
+
try {
|
|
117
|
+
JSON.parse(trimmedLine);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
errors.push(`Line ${lineNumber}: Invalid JSON - ${error instanceof Error ? error.message : String(error)}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
errors.push(`File reading error: ${error instanceof Error ? error.message : String(error)}`);
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
valid: errors.length === 0,
|
|
130
|
+
errors,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Count lines in JSONL file
|
|
135
|
+
*/
|
|
136
|
+
export async function countJSONL(filePath) {
|
|
137
|
+
let count = 0;
|
|
138
|
+
const fileStream = createReadStream(filePath, { encoding: 'utf8' });
|
|
139
|
+
const rl = createInterface({
|
|
140
|
+
input: fileStream,
|
|
141
|
+
crlfDelay: Infinity,
|
|
142
|
+
});
|
|
143
|
+
for await (const line of rl) {
|
|
144
|
+
if (line.trim()) {
|
|
145
|
+
count++;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return count;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Split JSONL file into chunks
|
|
152
|
+
*/
|
|
153
|
+
export async function splitJSONL(inputPath, outputDir, chunkSize, options = {}) {
|
|
154
|
+
const { encoding = 'utf8' } = options;
|
|
155
|
+
const outputFiles = [];
|
|
156
|
+
let currentChunk = 0;
|
|
157
|
+
let currentCount = 0;
|
|
158
|
+
let currentStream = null;
|
|
159
|
+
const getOutputPath = (chunk) => {
|
|
160
|
+
const outputPath = `${outputDir}/chunk_${chunk.toString().padStart(3, '0')}.jsonl`;
|
|
161
|
+
outputFiles.push(outputPath);
|
|
162
|
+
return outputPath;
|
|
163
|
+
};
|
|
164
|
+
const fileStream = createReadStream(inputPath, { encoding });
|
|
165
|
+
const rl = createInterface({
|
|
166
|
+
input: fileStream,
|
|
167
|
+
crlfDelay: Infinity,
|
|
168
|
+
});
|
|
169
|
+
for await (const line of rl) {
|
|
170
|
+
const trimmedLine = line.trim();
|
|
171
|
+
if (trimmedLine) {
|
|
172
|
+
if (currentCount === 0) {
|
|
173
|
+
if (currentStream) {
|
|
174
|
+
currentStream.end();
|
|
175
|
+
}
|
|
176
|
+
currentStream = createWriteStream(getOutputPath(currentChunk), { encoding });
|
|
177
|
+
currentChunk++;
|
|
178
|
+
}
|
|
179
|
+
currentStream.write(trimmedLine + '\n');
|
|
180
|
+
currentCount++;
|
|
181
|
+
if (currentCount >= chunkSize) {
|
|
182
|
+
currentCount = 0;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (currentStream) {
|
|
187
|
+
currentStream.end();
|
|
188
|
+
}
|
|
189
|
+
return outputFiles;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Merge multiple JSONL files
|
|
193
|
+
*/
|
|
194
|
+
export async function mergeJSONL(inputPaths, outputPath, options = {}) {
|
|
195
|
+
const { encoding = 'utf8' } = options;
|
|
196
|
+
const outputStream = createWriteStream(outputPath, { encoding });
|
|
197
|
+
for (const inputPath of inputPaths) {
|
|
198
|
+
const fileStream = createReadStream(inputPath, { encoding });
|
|
199
|
+
const rl = createInterface({
|
|
200
|
+
input: fileStream,
|
|
201
|
+
crlfDelay: Infinity,
|
|
202
|
+
});
|
|
203
|
+
for await (const line of rl) {
|
|
204
|
+
const trimmedLine = line.trim();
|
|
205
|
+
if (trimmedLine) {
|
|
206
|
+
outputStream.write(trimmedLine + '\n');
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
outputStream.end();
|
|
211
|
+
return new Promise((resolve, reject) => {
|
|
212
|
+
outputStream.on('finish', resolve);
|
|
213
|
+
outputStream.on('error', reject);
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Filter JSONL file based on predicate
|
|
218
|
+
*/
|
|
219
|
+
export async function filterJSONL(inputPath, outputPath, predicate, options = {}) {
|
|
220
|
+
const { encoding = 'utf8' } = options;
|
|
221
|
+
let filteredCount = 0;
|
|
222
|
+
const outputStream = createWriteStream(outputPath, { encoding });
|
|
223
|
+
const fileStream = createReadStream(inputPath, { encoding });
|
|
224
|
+
const rl = createInterface({
|
|
225
|
+
input: fileStream,
|
|
226
|
+
crlfDelay: Infinity,
|
|
227
|
+
});
|
|
228
|
+
for await (const line of rl) {
|
|
229
|
+
const trimmedLine = line.trim();
|
|
230
|
+
if (trimmedLine) {
|
|
231
|
+
try {
|
|
232
|
+
const parsed = JSON.parse(trimmedLine);
|
|
233
|
+
if (await predicate(parsed)) {
|
|
234
|
+
outputStream.write(trimmedLine + '\n');
|
|
235
|
+
filteredCount++;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
// Skip invalid JSON lines
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
outputStream.end();
|
|
244
|
+
return new Promise((resolve, reject) => {
|
|
245
|
+
outputStream.on('finish', () => resolve(filteredCount));
|
|
246
|
+
outputStream.on('error', reject);
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
export default {
|
|
250
|
+
readJSONL,
|
|
251
|
+
writeJSONL,
|
|
252
|
+
appendJSONL,
|
|
253
|
+
streamJSONL,
|
|
254
|
+
validateJSONL,
|
|
255
|
+
countJSONL,
|
|
256
|
+
splitJSONL,
|
|
257
|
+
mergeJSONL,
|
|
258
|
+
filterJSONL,
|
|
259
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { MIMEData } from '../types/mime.js';
|
|
2
|
+
export declare function prepareMimeDocument(document: string | Buffer | MIMEData): MIMEData;
|
|
3
|
+
export declare function prepareMimeDocumentList(documents: Array<string | Buffer | MIMEData>): MIMEData[];
|
|
4
|
+
export declare function getMimeType(filePath: string): string;
|
|
5
|
+
export declare function validateMimeData(data: any): MIMEData;
|
|
6
|
+
//# sourceMappingURL=mime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mime.d.ts","sourceRoot":"","sources":["../../src/utils/mime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAE5D,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CA6ClF;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAEhG;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwEpD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,GAAG,QAAQ,CAEpD"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { MIMEDataSchema } from '../types/mime.js';
|
|
4
|
+
export function prepareMimeDocument(document) {
|
|
5
|
+
if (typeof document === 'string') {
|
|
6
|
+
// If it's a file path, read the file
|
|
7
|
+
if (fs.existsSync(document)) {
|
|
8
|
+
const filename = path.basename(document);
|
|
9
|
+
const content = fs.readFileSync(document);
|
|
10
|
+
const base64Content = content.toString('base64');
|
|
11
|
+
const mimeType = getMimeType(document);
|
|
12
|
+
return {
|
|
13
|
+
id: 'doc_' + Date.now(),
|
|
14
|
+
extension: path.extname(filename).slice(1) || 'unknown',
|
|
15
|
+
content: base64Content,
|
|
16
|
+
mime_type: mimeType,
|
|
17
|
+
unique_filename: filename,
|
|
18
|
+
size: content.length,
|
|
19
|
+
filename,
|
|
20
|
+
url: `data:${mimeType};base64,${base64Content}`,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
// Otherwise treat as text content
|
|
24
|
+
const base64Content = Buffer.from(document).toString('base64');
|
|
25
|
+
return {
|
|
26
|
+
id: 'doc_' + Date.now(),
|
|
27
|
+
extension: 'txt',
|
|
28
|
+
content: base64Content,
|
|
29
|
+
mime_type: 'text/plain',
|
|
30
|
+
unique_filename: 'content.txt',
|
|
31
|
+
size: Buffer.byteLength(document),
|
|
32
|
+
filename: 'content.txt',
|
|
33
|
+
url: `data:text/plain;base64,${base64Content}`,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
else if (Buffer.isBuffer(document)) {
|
|
37
|
+
const base64Content = document.toString('base64');
|
|
38
|
+
return {
|
|
39
|
+
id: 'doc_' + Date.now(),
|
|
40
|
+
extension: 'bin',
|
|
41
|
+
content: base64Content,
|
|
42
|
+
mime_type: 'application/octet-stream',
|
|
43
|
+
unique_filename: 'content.bin',
|
|
44
|
+
size: document.length,
|
|
45
|
+
filename: 'content.bin',
|
|
46
|
+
url: `data:application/octet-stream;base64,${base64Content}`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return document;
|
|
50
|
+
}
|
|
51
|
+
export function prepareMimeDocumentList(documents) {
|
|
52
|
+
return documents.map(doc => prepareMimeDocument(doc));
|
|
53
|
+
}
|
|
54
|
+
export function getMimeType(filePath) {
|
|
55
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
56
|
+
const mimeTypes = {
|
|
57
|
+
'.pdf': 'application/pdf',
|
|
58
|
+
'.jpg': 'image/jpeg',
|
|
59
|
+
'.jpeg': 'image/jpeg',
|
|
60
|
+
'.png': 'image/png',
|
|
61
|
+
'.gif': 'image/gif',
|
|
62
|
+
'.bmp': 'image/bmp',
|
|
63
|
+
'.tiff': 'image/tiff',
|
|
64
|
+
'.webp': 'image/webp',
|
|
65
|
+
'.txt': 'text/plain',
|
|
66
|
+
'.json': 'application/json',
|
|
67
|
+
'.html': 'text/html',
|
|
68
|
+
'.htm': 'text/html',
|
|
69
|
+
'.xml': 'application/xml',
|
|
70
|
+
'.csv': 'text/csv',
|
|
71
|
+
'.tsv': 'text/tab-separated-values',
|
|
72
|
+
'.md': 'text/markdown',
|
|
73
|
+
'.log': 'text/plain',
|
|
74
|
+
'.yaml': 'application/x-yaml',
|
|
75
|
+
'.yml': 'application/x-yaml',
|
|
76
|
+
'.rtf': 'application/rtf',
|
|
77
|
+
'.ini': 'text/plain',
|
|
78
|
+
'.conf': 'text/plain',
|
|
79
|
+
'.cfg': 'text/plain',
|
|
80
|
+
'.nfo': 'text/plain',
|
|
81
|
+
'.srt': 'text/plain',
|
|
82
|
+
'.sql': 'text/plain',
|
|
83
|
+
'.sh': 'text/x-shellscript',
|
|
84
|
+
'.bat': 'text/plain',
|
|
85
|
+
'.ps1': 'text/plain',
|
|
86
|
+
'.js': 'text/javascript',
|
|
87
|
+
'.jsx': 'text/javascript',
|
|
88
|
+
'.ts': 'text/typescript',
|
|
89
|
+
'.tsx': 'text/typescript',
|
|
90
|
+
'.py': 'text/x-python',
|
|
91
|
+
'.java': 'text/x-java-source',
|
|
92
|
+
'.c': 'text/x-c',
|
|
93
|
+
'.cpp': 'text/x-c++',
|
|
94
|
+
'.cs': 'text/x-csharp',
|
|
95
|
+
'.rb': 'text/x-ruby',
|
|
96
|
+
'.php': 'text/x-php',
|
|
97
|
+
'.swift': 'text/x-swift',
|
|
98
|
+
'.kt': 'text/x-kotlin',
|
|
99
|
+
'.go': 'text/x-go',
|
|
100
|
+
'.rs': 'text/x-rust',
|
|
101
|
+
'.pl': 'text/x-perl',
|
|
102
|
+
'.r': 'text/x-r',
|
|
103
|
+
'.m': 'text/x-objc',
|
|
104
|
+
'.scala': 'text/x-scala',
|
|
105
|
+
'.xls': 'application/vnd.ms-excel',
|
|
106
|
+
'.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
107
|
+
'.ods': 'application/vnd.oasis.opendocument.spreadsheet',
|
|
108
|
+
'.doc': 'application/msword',
|
|
109
|
+
'.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
110
|
+
'.odt': 'application/vnd.oasis.opendocument.text',
|
|
111
|
+
'.ppt': 'application/vnd.ms-powerpoint',
|
|
112
|
+
'.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
113
|
+
'.odp': 'application/vnd.oasis.opendocument.presentation',
|
|
114
|
+
'.mhtml': 'message/rfc822',
|
|
115
|
+
'.eml': 'message/rfc822',
|
|
116
|
+
'.msg': 'application/vnd.ms-outlook',
|
|
117
|
+
'.mp3': 'audio/mpeg',
|
|
118
|
+
'.mp4': 'video/mp4',
|
|
119
|
+
'.mpeg': 'video/mpeg',
|
|
120
|
+
'.mpga': 'audio/mpeg',
|
|
121
|
+
'.m4a': 'audio/mp4',
|
|
122
|
+
'.wav': 'audio/wav',
|
|
123
|
+
'.webm': 'video/webm',
|
|
124
|
+
};
|
|
125
|
+
return mimeTypes[ext] || 'application/octet-stream';
|
|
126
|
+
}
|
|
127
|
+
export function validateMimeData(data) {
|
|
128
|
+
return MIMEDataSchema.parse(data);
|
|
129
|
+
}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model cards and AI provider configuration management
|
|
3
|
+
* Equivalent to Python's utils/_model_cards/ directory
|
|
4
|
+
*/
|
|
5
|
+
export interface ModelCard {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
provider: 'openai' | 'anthropic' | 'xai' | 'gemini' | 'custom';
|
|
9
|
+
model_family: string;
|
|
10
|
+
version: string;
|
|
11
|
+
description: string;
|
|
12
|
+
capabilities: ModelCapabilities;
|
|
13
|
+
limitations: ModelLimitations;
|
|
14
|
+
pricing: ModelPricing;
|
|
15
|
+
performance_benchmarks: PerformanceBenchmarks;
|
|
16
|
+
technical_specs: TechnicalSpecs;
|
|
17
|
+
usage_guidelines: UsageGuidelines;
|
|
18
|
+
supported_features: string[];
|
|
19
|
+
deprecated: boolean;
|
|
20
|
+
deprecation_date?: Date;
|
|
21
|
+
replacement_model?: string;
|
|
22
|
+
created_at: Date;
|
|
23
|
+
updated_at: Date;
|
|
24
|
+
}
|
|
25
|
+
export interface ModelCapabilities {
|
|
26
|
+
text_generation: boolean;
|
|
27
|
+
text_analysis: boolean;
|
|
28
|
+
document_extraction: boolean;
|
|
29
|
+
image_understanding: boolean;
|
|
30
|
+
function_calling: boolean;
|
|
31
|
+
json_mode: boolean;
|
|
32
|
+
streaming: boolean;
|
|
33
|
+
batch_processing: boolean;
|
|
34
|
+
fine_tuning: boolean;
|
|
35
|
+
embedding_generation: boolean;
|
|
36
|
+
reasoning: boolean;
|
|
37
|
+
code_generation: boolean;
|
|
38
|
+
multilingual: boolean;
|
|
39
|
+
supported_languages?: string[];
|
|
40
|
+
max_context_window: number;
|
|
41
|
+
max_output_tokens: number;
|
|
42
|
+
}
|
|
43
|
+
export interface ModelLimitations {
|
|
44
|
+
rate_limits: {
|
|
45
|
+
requests_per_minute: number;
|
|
46
|
+
tokens_per_minute: number;
|
|
47
|
+
requests_per_day?: number;
|
|
48
|
+
};
|
|
49
|
+
content_restrictions: string[];
|
|
50
|
+
geographical_restrictions?: string[];
|
|
51
|
+
knowledge_cutoff_date?: Date;
|
|
52
|
+
training_data_cutoff?: Date;
|
|
53
|
+
known_biases?: string[];
|
|
54
|
+
accuracy_limitations?: string[];
|
|
55
|
+
performance_degradation_scenarios?: string[];
|
|
56
|
+
}
|
|
57
|
+
export interface ModelPricing {
|
|
58
|
+
input_tokens_per_1k: number;
|
|
59
|
+
output_tokens_per_1k: number;
|
|
60
|
+
image_tokens_per_1k?: number;
|
|
61
|
+
fine_tuning_training_per_1k?: number;
|
|
62
|
+
fine_tuning_usage_per_1k?: number;
|
|
63
|
+
batch_discount_percentage?: number;
|
|
64
|
+
currency: 'USD' | 'EUR' | 'GBP';
|
|
65
|
+
billing_unit: 'token' | 'request' | 'minute';
|
|
66
|
+
minimum_charge?: number;
|
|
67
|
+
free_tier?: {
|
|
68
|
+
requests_per_month: number;
|
|
69
|
+
tokens_per_month: number;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export interface PerformanceBenchmarks {
|
|
73
|
+
accuracy_scores: {
|
|
74
|
+
general_text: number;
|
|
75
|
+
document_extraction: number;
|
|
76
|
+
reasoning: number;
|
|
77
|
+
code_generation: number;
|
|
78
|
+
multilingual: number;
|
|
79
|
+
};
|
|
80
|
+
speed_metrics: {
|
|
81
|
+
average_latency_ms: number;
|
|
82
|
+
tokens_per_second: number;
|
|
83
|
+
throughput_requests_per_minute: number;
|
|
84
|
+
};
|
|
85
|
+
reliability_metrics: {
|
|
86
|
+
uptime_percentage: number;
|
|
87
|
+
error_rate_percentage: number;
|
|
88
|
+
consistency_score: number;
|
|
89
|
+
};
|
|
90
|
+
cost_efficiency: {
|
|
91
|
+
cost_per_accurate_response: number;
|
|
92
|
+
cost_performance_ratio: number;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export interface TechnicalSpecs {
|
|
96
|
+
architecture: string;
|
|
97
|
+
parameter_count?: string;
|
|
98
|
+
training_data_size?: string;
|
|
99
|
+
training_compute?: string;
|
|
100
|
+
inference_hardware: string[];
|
|
101
|
+
optimization_techniques: string[];
|
|
102
|
+
supported_formats: {
|
|
103
|
+
input: string[];
|
|
104
|
+
output: string[];
|
|
105
|
+
};
|
|
106
|
+
api_compatibility: {
|
|
107
|
+
openai_compatible: boolean;
|
|
108
|
+
custom_endpoints: boolean;
|
|
109
|
+
webhook_support: boolean;
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
export interface UsageGuidelines {
|
|
113
|
+
recommended_use_cases: string[];
|
|
114
|
+
not_recommended_for: string[];
|
|
115
|
+
best_practices: string[];
|
|
116
|
+
prompt_engineering_tips: string[];
|
|
117
|
+
parameter_recommendations: {
|
|
118
|
+
temperature: {
|
|
119
|
+
creative_tasks: number;
|
|
120
|
+
analytical_tasks: number;
|
|
121
|
+
extraction_tasks: number;
|
|
122
|
+
};
|
|
123
|
+
top_p?: number;
|
|
124
|
+
frequency_penalty?: number;
|
|
125
|
+
presence_penalty?: number;
|
|
126
|
+
};
|
|
127
|
+
context_window_optimization: string[];
|
|
128
|
+
}
|
|
129
|
+
export interface ProviderConfig {
|
|
130
|
+
provider_id: 'openai' | 'anthropic' | 'xai' | 'gemini' | 'custom';
|
|
131
|
+
provider_name: string;
|
|
132
|
+
api_base_url: string;
|
|
133
|
+
authentication: {
|
|
134
|
+
type: 'api_key' | 'oauth' | 'bearer_token' | 'custom';
|
|
135
|
+
header_name: string;
|
|
136
|
+
header_prefix?: string;
|
|
137
|
+
};
|
|
138
|
+
rate_limiting: {
|
|
139
|
+
default_rpm: number;
|
|
140
|
+
default_tpm: number;
|
|
141
|
+
burst_allowance: number;
|
|
142
|
+
backoff_strategy: 'exponential' | 'linear' | 'fixed';
|
|
143
|
+
};
|
|
144
|
+
request_format: {
|
|
145
|
+
content_type: string;
|
|
146
|
+
encoding: string;
|
|
147
|
+
supports_streaming: boolean;
|
|
148
|
+
supports_batch: boolean;
|
|
149
|
+
};
|
|
150
|
+
response_format: {
|
|
151
|
+
content_type: string;
|
|
152
|
+
error_format: 'openai' | 'anthropic' | 'custom';
|
|
153
|
+
streaming_format?: string;
|
|
154
|
+
};
|
|
155
|
+
supported_models: string[];
|
|
156
|
+
model_aliases?: Record<string, string>;
|
|
157
|
+
default_parameters: Record<string, any>;
|
|
158
|
+
health_check: {
|
|
159
|
+
endpoint: string;
|
|
160
|
+
method: 'GET' | 'POST';
|
|
161
|
+
expected_status: number;
|
|
162
|
+
timeout_ms: number;
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
export interface ModelSelectionCriteria {
|
|
166
|
+
task_type: 'extraction' | 'generation' | 'analysis' | 'classification' | 'reasoning';
|
|
167
|
+
accuracy_priority: 'low' | 'medium' | 'high' | 'critical';
|
|
168
|
+
speed_priority: 'low' | 'medium' | 'high' | 'critical';
|
|
169
|
+
cost_priority: 'low' | 'medium' | 'high' | 'critical';
|
|
170
|
+
context_length_required: number;
|
|
171
|
+
output_length_required: number;
|
|
172
|
+
supports_images: boolean;
|
|
173
|
+
supports_function_calling: boolean;
|
|
174
|
+
supports_json_mode: boolean;
|
|
175
|
+
language_requirements?: string[];
|
|
176
|
+
compliance_requirements?: string[];
|
|
177
|
+
geographical_restrictions?: string[];
|
|
178
|
+
}
|
|
179
|
+
export interface ModelRecommendation {
|
|
180
|
+
model_id: string;
|
|
181
|
+
model_name: string;
|
|
182
|
+
provider: string;
|
|
183
|
+
confidence_score: number;
|
|
184
|
+
rationale: string[];
|
|
185
|
+
expected_performance: {
|
|
186
|
+
accuracy: number;
|
|
187
|
+
latency_ms: number;
|
|
188
|
+
cost_per_request: number;
|
|
189
|
+
};
|
|
190
|
+
trade_offs: string[];
|
|
191
|
+
alternative_models: Array<{
|
|
192
|
+
model_id: string;
|
|
193
|
+
reason: string;
|
|
194
|
+
trade_off: string;
|
|
195
|
+
}>;
|
|
196
|
+
}
|
|
197
|
+
export declare const modelCards: Record<string, ModelCard>;
|
|
198
|
+
export declare const providerConfigs: Record<string, ProviderConfig>;
|
|
199
|
+
export declare class ModelCardManager {
|
|
200
|
+
private static instance;
|
|
201
|
+
private cards;
|
|
202
|
+
private configs;
|
|
203
|
+
constructor();
|
|
204
|
+
static getInstance(): ModelCardManager;
|
|
205
|
+
getModelCard(modelId: string): ModelCard | undefined;
|
|
206
|
+
getProviderConfig(providerId: string): ProviderConfig | undefined;
|
|
207
|
+
getAllModels(): ModelCard[];
|
|
208
|
+
getModelsByProvider(providerId: string): ModelCard[];
|
|
209
|
+
recommendModel(criteria: ModelSelectionCriteria): ModelRecommendation[];
|
|
210
|
+
addModelCard(card: ModelCard): void;
|
|
211
|
+
updateModelCard(modelId: string, updates: Partial<ModelCard>): void;
|
|
212
|
+
}
|
|
213
|
+
declare const _default: {
|
|
214
|
+
ModelCardManager: typeof ModelCardManager;
|
|
215
|
+
modelCards: Record<string, ModelCard>;
|
|
216
|
+
providerConfigs: Record<string, ProviderConfig>;
|
|
217
|
+
};
|
|
218
|
+
export default _default;
|
|
219
|
+
//# sourceMappingURL=model_cards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model_cards.d.ts","sourceRoot":"","sources":["../../src/utils/model_cards.ts"],"names":[],"mappings":"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"}
|