@probeo/anymodel 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +117 -10
  2. package/dist/batch/index.d.ts +4 -0
  3. package/dist/batch/index.d.ts.map +1 -0
  4. package/dist/batch/index.js +3 -0
  5. package/dist/batch/index.js.map +1 -0
  6. package/dist/batch/manager.d.ts +72 -0
  7. package/dist/batch/manager.d.ts.map +1 -0
  8. package/dist/batch/manager.js +328 -0
  9. package/dist/batch/manager.js.map +1 -0
  10. package/dist/batch/store.d.ts +54 -0
  11. package/dist/batch/store.d.ts.map +1 -0
  12. package/dist/batch/store.js +109 -0
  13. package/dist/batch/store.js.map +1 -0
  14. package/dist/cli.cjs +112 -19
  15. package/dist/cli.cjs.map +1 -1
  16. package/dist/cli.d.ts +2 -0
  17. package/dist/cli.d.ts.map +1 -0
  18. package/dist/cli.js +28 -1993
  19. package/dist/cli.js.map +1 -1
  20. package/dist/client.d.ts +42 -0
  21. package/dist/client.d.ts.map +1 -0
  22. package/dist/client.js +181 -0
  23. package/dist/client.js.map +1 -0
  24. package/dist/config.d.ts +6 -0
  25. package/dist/config.d.ts.map +1 -0
  26. package/dist/config.js +120 -0
  27. package/dist/config.js.map +1 -0
  28. package/dist/index.cjs +112 -19
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.d.cts +10 -0
  31. package/dist/index.d.ts +14 -538
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +15 -1972
  34. package/dist/index.js.map +1 -1
  35. package/dist/providers/adapter.d.ts +33 -0
  36. package/dist/providers/adapter.d.ts.map +1 -0
  37. package/dist/providers/adapter.js +2 -0
  38. package/dist/providers/adapter.js.map +1 -0
  39. package/dist/providers/anthropic-batch.d.ts +3 -0
  40. package/dist/providers/anthropic-batch.d.ts.map +1 -0
  41. package/dist/providers/anthropic-batch.js +228 -0
  42. package/dist/providers/anthropic-batch.js.map +1 -0
  43. package/dist/providers/anthropic.d.ts +3 -0
  44. package/dist/providers/anthropic.d.ts.map +1 -0
  45. package/dist/providers/anthropic.js +358 -0
  46. package/dist/providers/anthropic.js.map +1 -0
  47. package/dist/providers/custom.d.ts +8 -0
  48. package/dist/providers/custom.d.ts.map +1 -0
  49. package/dist/providers/custom.js +61 -0
  50. package/dist/providers/custom.js.map +1 -0
  51. package/dist/providers/google.d.ts +3 -0
  52. package/dist/providers/google.d.ts.map +1 -0
  53. package/dist/providers/google.js +331 -0
  54. package/dist/providers/google.js.map +1 -0
  55. package/dist/providers/index.d.ts +6 -0
  56. package/dist/providers/index.d.ts.map +1 -0
  57. package/dist/providers/index.js +5 -0
  58. package/dist/providers/index.js.map +1 -0
  59. package/dist/providers/openai-batch.d.ts +3 -0
  60. package/dist/providers/openai-batch.d.ts.map +1 -0
  61. package/dist/providers/openai-batch.js +208 -0
  62. package/dist/providers/openai-batch.js.map +1 -0
  63. package/dist/providers/openai.d.ts +3 -0
  64. package/dist/providers/openai.d.ts.map +1 -0
  65. package/dist/providers/openai.js +221 -0
  66. package/dist/providers/openai.js.map +1 -0
  67. package/dist/providers/registry.d.ts +10 -0
  68. package/dist/providers/registry.d.ts.map +1 -0
  69. package/dist/providers/registry.js +27 -0
  70. package/dist/providers/registry.js.map +1 -0
  71. package/dist/router.d.ts +29 -0
  72. package/dist/router.d.ts.map +1 -0
  73. package/dist/router.js +212 -0
  74. package/dist/router.js.map +1 -0
  75. package/dist/server.d.ts +10 -0
  76. package/dist/server.d.ts.map +1 -0
  77. package/dist/server.js +149 -0
  78. package/dist/server.js.map +1 -0
  79. package/dist/types.d.ts +283 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +21 -0
  82. package/dist/types.js.map +1 -0
  83. package/dist/utils/fs-io.d.ts +40 -0
  84. package/dist/utils/fs-io.d.ts.map +1 -0
  85. package/dist/utils/fs-io.js +203 -0
  86. package/dist/utils/fs-io.js.map +1 -0
  87. package/dist/utils/generation-stats.d.ts +25 -0
  88. package/dist/utils/generation-stats.d.ts.map +1 -0
  89. package/dist/utils/generation-stats.js +46 -0
  90. package/dist/utils/generation-stats.js.map +1 -0
  91. package/dist/utils/id.d.ts +2 -0
  92. package/dist/utils/id.d.ts.map +1 -0
  93. package/dist/utils/id.js +6 -0
  94. package/dist/utils/id.js.map +1 -0
  95. package/dist/utils/model-parser.d.ts +6 -0
  96. package/dist/utils/model-parser.d.ts.map +1 -0
  97. package/dist/utils/model-parser.js +21 -0
  98. package/dist/utils/model-parser.js.map +1 -0
  99. package/dist/utils/rate-limiter.d.ts +36 -0
  100. package/dist/utils/rate-limiter.d.ts.map +1 -0
  101. package/dist/utils/rate-limiter.js +80 -0
  102. package/dist/utils/rate-limiter.js.map +1 -0
  103. package/dist/utils/retry.d.ts +7 -0
  104. package/dist/utils/retry.d.ts.map +1 -0
  105. package/dist/utils/retry.js +54 -0
  106. package/dist/utils/retry.js.map +1 -0
  107. package/dist/utils/transforms.d.ts +7 -0
  108. package/dist/utils/transforms.d.ts.map +1 -0
  109. package/dist/utils/transforms.js +66 -0
  110. package/dist/utils/transforms.js.map +1 -0
  111. package/dist/utils/validate.d.ts +3 -0
  112. package/dist/utils/validate.d.ts.map +1 -0
  113. package/dist/utils/validate.js +31 -0
  114. package/dist/utils/validate.js.map +1 -0
  115. package/package.json +9 -2
package/dist/server.js ADDED
@@ -0,0 +1,149 @@
1
+ import { createServer } from 'node:http';
2
+ import { AnyModel } from './client.js';
3
+ function parseBody(req) {
4
+ return new Promise((resolve, reject) => {
5
+ const chunks = [];
6
+ req.on('data', (chunk) => chunks.push(chunk));
7
+ req.on('end', () => resolve(Buffer.concat(chunks).toString()));
8
+ req.on('error', reject);
9
+ });
10
+ }
11
+ function sendJSON(res, status, body) {
12
+ res.writeHead(status, { 'Content-Type': 'application/json' });
13
+ res.end(JSON.stringify(body));
14
+ }
15
+ function sendError(res, status, message) {
16
+ sendJSON(res, status, { error: { code: status, message, metadata: {} } });
17
+ }
18
+ async function sendSSE(res, stream) {
19
+ res.writeHead(200, {
20
+ 'Content-Type': 'text/event-stream',
21
+ 'Cache-Control': 'no-cache',
22
+ 'Connection': 'keep-alive',
23
+ });
24
+ for await (const chunk of stream) {
25
+ res.write(`data: ${JSON.stringify(chunk)}\n\n`);
26
+ }
27
+ res.write('data: [DONE]\n\n');
28
+ res.end();
29
+ }
30
+ export function createAnyModelServer(options = {}) {
31
+ const client = new AnyModel(options.config);
32
+ const basePath = '/api/v1';
33
+ const server = createServer(async (req, res) => {
34
+ const url = new URL(req.url || '/', `http://${req.headers.host}`);
35
+ const path = url.pathname;
36
+ // CORS headers
37
+ res.setHeader('Access-Control-Allow-Origin', '*');
38
+ res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
39
+ res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
40
+ if (req.method === 'OPTIONS') {
41
+ res.writeHead(204);
42
+ res.end();
43
+ return;
44
+ }
45
+ try {
46
+ // Health check
47
+ if (path === '/health' && req.method === 'GET') {
48
+ sendJSON(res, 200, { status: 'ok' });
49
+ return;
50
+ }
51
+ // Chat completions
52
+ if (path === `${basePath}/chat/completions` && req.method === 'POST') {
53
+ const body = JSON.parse(await parseBody(req));
54
+ if (body.stream) {
55
+ const stream = await client.chat.completions.create(body);
56
+ await sendSSE(res, stream);
57
+ }
58
+ else {
59
+ const response = await client.chat.completions.create(body);
60
+ sendJSON(res, 200, response);
61
+ }
62
+ return;
63
+ }
64
+ // Models list
65
+ if (path === `${basePath}/models` && req.method === 'GET') {
66
+ const provider = url.searchParams.get('provider') || undefined;
67
+ const models = await client.models.list({ provider });
68
+ sendJSON(res, 200, { object: 'list', data: models });
69
+ return;
70
+ }
71
+ // Generation stats
72
+ if (path.startsWith(`${basePath}/generation/`) && req.method === 'GET') {
73
+ const id = path.substring(`${basePath}/generation/`.length);
74
+ const stats = client.generation.get(id);
75
+ if (!stats) {
76
+ sendError(res, 404, `Generation ${id} not found`);
77
+ return;
78
+ }
79
+ sendJSON(res, 200, stats);
80
+ return;
81
+ }
82
+ // Batch endpoints
83
+ if (path === `${basePath}/batches` && req.method === 'POST') {
84
+ const body = JSON.parse(await parseBody(req));
85
+ const batch = await client.batches.create(body);
86
+ sendJSON(res, 201, batch);
87
+ return;
88
+ }
89
+ if (path === `${basePath}/batches` && req.method === 'GET') {
90
+ const batches = await client.batches.list();
91
+ sendJSON(res, 200, { object: 'list', data: batches });
92
+ return;
93
+ }
94
+ if (path.startsWith(`${basePath}/batches/`) && req.method === 'GET') {
95
+ const parts = path.substring(`${basePath}/batches/`.length).split('/');
96
+ const id = parts[0];
97
+ if (parts[1] === 'results') {
98
+ const results = await client.batches.results(id);
99
+ sendJSON(res, 200, results);
100
+ return;
101
+ }
102
+ const batch = await client.batches.get(id);
103
+ if (!batch) {
104
+ sendError(res, 404, `Batch ${id} not found`);
105
+ return;
106
+ }
107
+ sendJSON(res, 200, batch);
108
+ return;
109
+ }
110
+ if (path.startsWith(`${basePath}/batches/`) && req.method === 'POST') {
111
+ const parts = path.substring(`${basePath}/batches/`.length).split('/');
112
+ const id = parts[0];
113
+ if (parts[1] === 'cancel') {
114
+ const batch = await client.batches.cancel(id);
115
+ sendJSON(res, 200, batch);
116
+ return;
117
+ }
118
+ }
119
+ sendError(res, 404, `Not found: ${path}`);
120
+ }
121
+ catch (err) {
122
+ const code = err?.code || 500;
123
+ const message = err?.message || 'Internal server error';
124
+ sendError(res, code, message);
125
+ }
126
+ });
127
+ return server;
128
+ }
129
+ export function startServer(options = {}) {
130
+ const port = options.port ?? 4141;
131
+ const host = options.host ?? '0.0.0.0';
132
+ const server = createAnyModelServer(options);
133
+ server.listen(port, host, () => {
134
+ console.log(`@probeo/anymodel server running at http://${host}:${port}`);
135
+ console.log(`API base: http://${host}:${port}/api/v1`);
136
+ console.log('');
137
+ console.log('Endpoints:');
138
+ console.log(' POST /api/v1/chat/completions');
139
+ console.log(' GET /api/v1/models');
140
+ console.log(' GET /api/v1/generation/:id');
141
+ console.log(' POST /api/v1/batches');
142
+ console.log(' GET /api/v1/batches');
143
+ console.log(' GET /api/v1/batches/:id');
144
+ console.log(' GET /api/v1/batches/:id/results');
145
+ console.log(' POST /api/v1/batches/:id/cancel');
146
+ console.log(' GET /health');
147
+ });
148
+ }
149
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,283 @@
1
+ export type Role = 'system' | 'user' | 'assistant' | 'tool';
2
+ export interface Message {
3
+ role: Role;
4
+ content: string | ContentPart[];
5
+ name?: string;
6
+ tool_calls?: ToolCall[];
7
+ tool_call_id?: string;
8
+ }
9
+ export interface ContentPart {
10
+ type: 'text' | 'image_url';
11
+ text?: string;
12
+ image_url?: {
13
+ url: string;
14
+ detail?: 'auto' | 'low' | 'high';
15
+ };
16
+ }
17
+ export interface Tool {
18
+ type: 'function';
19
+ function: {
20
+ name: string;
21
+ description?: string;
22
+ parameters?: Record<string, unknown>;
23
+ };
24
+ }
25
+ export type ToolChoice = 'none' | 'auto' | 'required' | {
26
+ type: 'function';
27
+ function: {
28
+ name: string;
29
+ };
30
+ };
31
+ export interface ToolCall {
32
+ id: string;
33
+ type: 'function';
34
+ function: {
35
+ name: string;
36
+ arguments: string;
37
+ };
38
+ }
39
+ export type ResponseFormat = {
40
+ type: 'text';
41
+ } | {
42
+ type: 'json_object';
43
+ } | {
44
+ type: 'json_schema';
45
+ json_schema: {
46
+ name: string;
47
+ schema: Record<string, unknown>;
48
+ strict?: boolean;
49
+ };
50
+ };
51
+ export interface ProviderPreferences {
52
+ order?: string[];
53
+ only?: string[];
54
+ ignore?: string[];
55
+ allow_fallbacks?: boolean;
56
+ require_parameters?: boolean;
57
+ sort?: 'price' | 'throughput' | 'latency';
58
+ }
59
+ export interface ChatCompletionRequest {
60
+ model: string;
61
+ messages: Message[];
62
+ max_tokens?: number;
63
+ temperature?: number;
64
+ top_p?: number;
65
+ top_k?: number;
66
+ frequency_penalty?: number;
67
+ presence_penalty?: number;
68
+ repetition_penalty?: number;
69
+ seed?: number;
70
+ stop?: string | string[];
71
+ stream?: boolean;
72
+ logprobs?: boolean;
73
+ top_logprobs?: number;
74
+ response_format?: ResponseFormat;
75
+ tools?: Tool[];
76
+ tool_choice?: ToolChoice;
77
+ user?: string;
78
+ models?: string[];
79
+ route?: 'fallback';
80
+ transforms?: string[];
81
+ provider?: ProviderPreferences;
82
+ }
83
+ export type FinishReason = 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'error';
84
+ export interface Usage {
85
+ prompt_tokens: number;
86
+ completion_tokens: number;
87
+ total_tokens: number;
88
+ }
89
+ export interface ChatCompletionChoice {
90
+ index: number;
91
+ message: Message;
92
+ finish_reason: FinishReason;
93
+ logprobs?: unknown;
94
+ }
95
+ export interface ChatCompletion {
96
+ id: string;
97
+ object: 'chat.completion';
98
+ created: number;
99
+ model: string;
100
+ choices: ChatCompletionChoice[];
101
+ usage: Usage;
102
+ }
103
+ export interface ChunkDelta {
104
+ role?: Role;
105
+ content?: string;
106
+ tool_calls?: Partial<ToolCall>[];
107
+ }
108
+ export interface ChunkChoice {
109
+ index: number;
110
+ delta: ChunkDelta;
111
+ finish_reason: FinishReason | null;
112
+ logprobs?: unknown;
113
+ }
114
+ export interface ChatCompletionChunk {
115
+ id: string;
116
+ object: 'chat.completion.chunk';
117
+ created: number;
118
+ model: string;
119
+ choices: ChunkChoice[];
120
+ usage?: Usage;
121
+ }
122
+ export interface ModelPricing {
123
+ prompt: string;
124
+ completion: string;
125
+ }
126
+ export interface ModelArchitecture {
127
+ modality: string;
128
+ input_modalities: string[];
129
+ output_modalities: string[];
130
+ tokenizer: string;
131
+ }
132
+ export interface ModelTopProvider {
133
+ context_length: number;
134
+ max_completion_tokens: number;
135
+ is_moderated: boolean;
136
+ }
137
+ export interface ModelInfo {
138
+ id: string;
139
+ name: string;
140
+ created: number;
141
+ description: string;
142
+ context_length: number;
143
+ pricing: ModelPricing;
144
+ architecture: ModelArchitecture;
145
+ top_provider: ModelTopProvider;
146
+ supported_parameters: string[];
147
+ }
148
+ export interface GenerationStats {
149
+ id: string;
150
+ model: string;
151
+ provider_name: string;
152
+ total_cost: number;
153
+ tokens_prompt: number;
154
+ tokens_completion: number;
155
+ latency: number;
156
+ generation_time: number;
157
+ created_at: string;
158
+ finish_reason: FinishReason;
159
+ streamed: boolean;
160
+ }
161
+ export interface AnyModelErrorMetadata {
162
+ provider_name?: string;
163
+ raw?: unknown;
164
+ }
165
+ export declare class AnyModelError extends Error {
166
+ readonly code: number;
167
+ readonly metadata: AnyModelErrorMetadata;
168
+ constructor(code: number, message: string, metadata?: AnyModelErrorMetadata);
169
+ toJSON(): {
170
+ error: {
171
+ code: number;
172
+ message: string;
173
+ metadata: AnyModelErrorMetadata;
174
+ };
175
+ };
176
+ }
177
+ export type BatchStatus = 'pending' | 'processing' | 'completed' | 'failed' | 'cancelled';
178
+ export type BatchMode = 'native' | 'concurrent';
179
+ export interface BatchRequestItem {
180
+ custom_id: string;
181
+ messages: Message[];
182
+ max_tokens?: number;
183
+ temperature?: number;
184
+ top_p?: number;
185
+ top_k?: number;
186
+ stop?: string | string[];
187
+ response_format?: ResponseFormat;
188
+ tools?: Tool[];
189
+ tool_choice?: ToolChoice;
190
+ }
191
+ export interface BatchCreateRequest {
192
+ model: string;
193
+ requests: BatchRequestItem[];
194
+ options?: {
195
+ temperature?: number;
196
+ max_tokens?: number;
197
+ top_p?: number;
198
+ top_k?: number;
199
+ stop?: string | string[];
200
+ response_format?: ResponseFormat;
201
+ tools?: Tool[];
202
+ tool_choice?: ToolChoice;
203
+ };
204
+ webhook?: string;
205
+ }
206
+ export interface BatchObject {
207
+ id: string;
208
+ object: 'batch';
209
+ status: BatchStatus;
210
+ model: string;
211
+ provider_name: string;
212
+ batch_mode: BatchMode;
213
+ total: number;
214
+ completed: number;
215
+ failed: number;
216
+ created_at: string;
217
+ completed_at: string | null;
218
+ expires_at: string | null;
219
+ }
220
+ export interface BatchResultItem {
221
+ custom_id: string;
222
+ status: 'success' | 'error';
223
+ response: ChatCompletion | null;
224
+ error: {
225
+ code: number;
226
+ message: string;
227
+ } | null;
228
+ }
229
+ export interface BatchUsageSummary {
230
+ total_prompt_tokens: number;
231
+ total_completion_tokens: number;
232
+ estimated_cost: number;
233
+ }
234
+ export interface BatchResults {
235
+ id: string;
236
+ status: BatchStatus;
237
+ results: BatchResultItem[];
238
+ usage_summary: BatchUsageSummary;
239
+ }
240
+ export interface ProviderConfig {
241
+ apiKey?: string;
242
+ defaultModel?: string;
243
+ }
244
+ export interface CustomProviderConfig {
245
+ baseURL: string;
246
+ apiKey?: string;
247
+ models?: string[];
248
+ }
249
+ export interface AnyModelConfig {
250
+ anthropic?: ProviderConfig;
251
+ openai?: ProviderConfig;
252
+ google?: ProviderConfig;
253
+ mistral?: ProviderConfig;
254
+ groq?: ProviderConfig;
255
+ deepseek?: ProviderConfig;
256
+ xai?: ProviderConfig;
257
+ together?: ProviderConfig;
258
+ fireworks?: ProviderConfig;
259
+ perplexity?: ProviderConfig;
260
+ ollama?: ProviderConfig & {
261
+ baseURL?: string;
262
+ };
263
+ custom?: Record<string, CustomProviderConfig>;
264
+ aliases?: Record<string, string>;
265
+ defaults?: {
266
+ temperature?: number;
267
+ max_tokens?: number;
268
+ retries?: number;
269
+ timeout?: number;
270
+ transforms?: string[];
271
+ };
272
+ routing?: {
273
+ fallback_order?: string[];
274
+ allow_fallbacks?: boolean;
275
+ };
276
+ batch?: {
277
+ dir?: string;
278
+ pollInterval?: number;
279
+ concurrencyFallback?: number;
280
+ retentionDays?: number;
281
+ };
282
+ }
283
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,21 @@
1
+ // ─── Messages ────────────────────────────────────────────────────────────────
2
+ export class AnyModelError extends Error {
3
+ code;
4
+ metadata;
5
+ constructor(code, message, metadata = {}) {
6
+ super(message);
7
+ this.name = 'AnyModelError';
8
+ this.code = code;
9
+ this.metadata = metadata;
10
+ }
11
+ toJSON() {
12
+ return {
13
+ error: {
14
+ code: this.code,
15
+ message: this.message,
16
+ metadata: this.metadata,
17
+ },
18
+ };
19
+ }
20
+ }
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAqMhF,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,CAAS;IACb,QAAQ,CAAwB;IAEzC,YAAY,IAAY,EAAE,OAAe,EAAE,WAAkC,EAAE;QAC7E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Concurrency-limited filesystem helpers for high-volume file operations.
3
+ *
4
+ * Based on probeo-core/common/fs-io. Provides queued reads/writes,
5
+ * atomic durable writes, directory caching, and path memoization.
6
+ */
7
+ import type { Dirent, Stats } from 'node:fs';
8
+ export declare function ensureDir(dir: string): Promise<void>;
9
+ export declare function readFileQueued(filePath: string, encoding?: BufferEncoding | null): Promise<string | Buffer>;
10
+ export declare function readJsonQueued<T = unknown>(filePath: string): Promise<T>;
11
+ export declare function readDirQueued(dirPath: string): Promise<Dirent[]>;
12
+ export declare function statQueued(filePath: string): Promise<Stats>;
13
+ export declare function pathExistsQueued(p: string): Promise<boolean>;
14
+ export declare function fileExistsQueued(filePath: string): Promise<boolean>;
15
+ export declare function writeFileQueued(filePath: string, data: string | Buffer): Promise<void>;
16
+ export declare function appendFileQueued(filePath: string, data: string | Buffer): Promise<void>;
17
+ /**
18
+ * Atomically write a file with fsync to ensure data hits disk.
19
+ * Uses temp file + rename + directory fsync.
20
+ */
21
+ export declare function writeFileFlushedQueued(filePath: string, data: string | Buffer): Promise<void>;
22
+ /**
23
+ * Streamed write with durability: temp file → stream → fsync → atomic rename.
24
+ */
25
+ export declare function writeStreamFlushedQueued(filePath: string, producer: (stream: NodeJS.WritableStream) => Promise<void> | void): Promise<void>;
26
+ export declare function joinPath(...segments: string[]): string;
27
+ export declare function dirnameOf(p: string): string;
28
+ export declare function resolvePath(...segments: string[]): string;
29
+ export declare function getFsQueueStatus(): {
30
+ read: {
31
+ size: number;
32
+ pending: number;
33
+ };
34
+ write: {
35
+ size: number;
36
+ pending: number;
37
+ };
38
+ };
39
+ export declare function waitForFsQueuesIdle(): Promise<void>;
40
+ //# sourceMappingURL=fs-io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-io.d.ts","sourceRoot":"","sources":["../../src/utils/fs-io.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAmB7C,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1D;AAID,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,cAAc,GAAG,IAAa,GACvC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAI1B;AAED,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAG9E;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAItE;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAIjE;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASlE;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASzE;AAID,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM5F;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7F;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BnG;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAChE,OAAO,CAAC,IAAI,CAAC,CAyCf;AAID,wBAAgB,QAAQ,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAOtD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3C;AAED,wBAAgB,WAAW,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAOzD;AAID,wBAAgB,gBAAgB;;;;;;;;;EAK/B;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzD"}