@chenchaolong/plugin-mineru 1.1.4 → 1.1.6
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mineru.client.d.ts","sourceRoot":"","sources":["../../src/lib/mineru.client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mineru.client.d.ts","sourceRoot":"","sources":["../../src/lib/mineru.client.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { getErrorMessage } from '@xpert-ai/plugin-sdk';
|
|
|
3
3
|
import axios from 'axios';
|
|
4
4
|
import FormData from 'form-data';
|
|
5
5
|
import { randomUUID } from 'crypto';
|
|
6
|
-
import { basename, isAbsolute } from 'path';
|
|
6
|
+
import { basename, isAbsolute, join as pathJoin } from 'path';
|
|
7
7
|
import fs from 'fs';
|
|
8
8
|
import { ENV_MINERU_API_BASE_URL, ENV_MINERU_API_TOKEN, ENV_MINERU_SERVER_TYPE, } from './types.js';
|
|
9
9
|
const DEFAULT_OFFICIAL_BASE_URL = 'https://mineru.net/api/v4';
|
|
@@ -311,20 +311,94 @@ export class MinerUClient {
|
|
|
311
311
|
}
|
|
312
312
|
}
|
|
313
313
|
catch (error) {
|
|
314
|
-
|
|
314
|
+
// If file not found in the resolved path, try to find it in common alternative locations
|
|
315
|
+
// 如果文件在解析路径中未找到,尝试在常见的替代位置查找
|
|
316
|
+
// This handles two scenarios:
|
|
317
|
+
// 1. StorageFile: files/{tenantId}/filename -> apps/api/public/files/{tenantId}/filename (already tried above)
|
|
318
|
+
// 2. VolumeClient: folder/filename or filename -> ~/data/folder/filename or ~/data/filename
|
|
319
|
+
// 这处理两种情况:
|
|
320
|
+
// 1. StorageFile: files/{tenantId}/filename -> apps/api/public/files/{tenantId}/filename(上面已尝试)
|
|
321
|
+
// 2. VolumeClient: folder/filename 或 filename -> ~/data/folder/filename 或 ~/data/filename
|
|
322
|
+
if (error instanceof Error && error.code === 'ENOENT') {
|
|
323
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE;
|
|
324
|
+
const originalFilePath = options.filePath;
|
|
325
|
+
const fileName = basename(originalFilePath);
|
|
326
|
+
// Build alternative paths for VolumeClient storage
|
|
327
|
+
// 构建 VolumeClient 存储的替代路径
|
|
328
|
+
const alternativePaths = [];
|
|
329
|
+
// If original path contains directory separators, try both full path and just filename
|
|
330
|
+
// 如果原始路径包含目录分隔符,尝试完整路径和仅文件名
|
|
331
|
+
if (originalFilePath.includes('/') || originalFilePath.includes('\\')) {
|
|
332
|
+
// Try full path in ~/data/
|
|
333
|
+
// 尝试 ~/data/ 下的完整路径
|
|
334
|
+
alternativePaths.push(pathJoin(homeDir || '', 'data', originalFilePath));
|
|
335
|
+
// Try just filename in ~/data/ (for VolumeClient files stored directly in root)
|
|
336
|
+
// 尝试 ~/data/ 下的仅文件名(用于直接存储在根目录的 VolumeClient 文件)
|
|
337
|
+
alternativePaths.push(pathJoin(homeDir || '', 'data', fileName));
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
// If original path is just a filename, try in ~/data/ root
|
|
341
|
+
// 如果原始路径只是文件名,尝试 ~/data/ 根目录
|
|
342
|
+
alternativePaths.push(pathJoin(homeDir || '', 'data', originalFilePath));
|
|
343
|
+
}
|
|
344
|
+
// Also try in knowledge base specific paths if we can determine knowledgebaseId
|
|
345
|
+
// 如果能够确定 knowledgebaseId,也尝试知识库特定路径
|
|
346
|
+
// Note: We don't have direct access to knowledgebaseId here, but files might be in knowledges subdirectory
|
|
347
|
+
// 注意:这里无法直接访问 knowledgebaseId,但文件可能在 knowledges 子目录中
|
|
348
|
+
const resolvedPath = this.fileSystem.fullPath(originalFilePath);
|
|
349
|
+
if (resolvedPath.includes('apps/api/public')) {
|
|
350
|
+
// This looks like a StorageFile path, but file not found
|
|
351
|
+
// Try VolumeClient paths as fallback
|
|
352
|
+
// 这看起来像 StorageFile 路径,但文件未找到
|
|
353
|
+
// 尝试 VolumeClient 路径作为后备
|
|
354
|
+
this.logger.debug(`File not found in StorageFile path, trying VolumeClient paths...`);
|
|
355
|
+
}
|
|
356
|
+
let foundPath = null;
|
|
357
|
+
for (const altPath of alternativePaths) {
|
|
358
|
+
try {
|
|
359
|
+
await fs.promises.access(altPath, fs.constants.F_OK | fs.constants.R_OK);
|
|
360
|
+
const stats = await fs.promises.stat(altPath);
|
|
361
|
+
this.logger.debug(`Found file in alternative location: ${altPath}, size: ${stats.size} bytes`);
|
|
362
|
+
foundPath = altPath;
|
|
363
|
+
if (stats.size === 0) {
|
|
364
|
+
throw new Error(`File is empty: ${foundPath}`);
|
|
365
|
+
}
|
|
366
|
+
break; // File found, exit loop
|
|
367
|
+
}
|
|
368
|
+
catch (altError) {
|
|
369
|
+
// Continue to next alternative path
|
|
370
|
+
continue;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// If file found in alternative location, use it
|
|
374
|
+
// 如果在替代位置找到文件,使用它
|
|
375
|
+
if (foundPath) {
|
|
376
|
+
filePath = foundPath;
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
// If still not found after trying alternatives, throw original error
|
|
380
|
+
// 如果尝试替代路径后仍未找到,抛出原始错误
|
|
381
|
+
const basePath = this.fileSystem ? this.fileSystem.basePath : 'N/A';
|
|
382
|
+
this.logger.error(`File not found or not readable. ` +
|
|
383
|
+
`Original path: ${originalFilePath}, ` +
|
|
384
|
+
`Resolved path: ${filePath}, ` +
|
|
385
|
+
`Base path: ${basePath}, ` +
|
|
386
|
+
`Tried alternative paths: ${alternativePaths.join(', ')}`, error instanceof Error ? error.stack : error);
|
|
387
|
+
throw new Error(`File not found or not readable: ${filePath}. ` +
|
|
388
|
+
`Original path: ${originalFilePath}, ` +
|
|
389
|
+
`Base path: ${basePath}. ` +
|
|
390
|
+
`Tried alternative locations: ${alternativePaths.join(', ')}`);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
else if (error instanceof Error && error.message.includes('empty')) {
|
|
315
394
|
this.logger.error(`File is empty: ${filePath}`);
|
|
316
395
|
throw error;
|
|
317
396
|
}
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
`Resolved path: ${filePath}, ` +
|
|
324
|
-
`Base path: ${basePath}`, error instanceof Error ? error.stack : error);
|
|
325
|
-
throw new Error(`File not found or not readable: ${filePath}. ` +
|
|
326
|
-
`Original path: ${options.filePath}, ` +
|
|
327
|
-
`Base path: ${basePath}`);
|
|
397
|
+
else {
|
|
398
|
+
// Re-throw other errors
|
|
399
|
+
// 重新抛出其他错误
|
|
400
|
+
throw error;
|
|
401
|
+
}
|
|
328
402
|
}
|
|
329
403
|
const taskId = randomUUID();
|
|
330
404
|
const result = await this.invokeSelfHostedParse(filePath, options.fileName || basename(filePath), options);
|