chore(8.0): final pre-RC1 sweep — API consistency, named errors, orphans, zero-cast codebase
This commit is contained in:
parent
970e08c466
commit
1f7e365a4e
237 changed files with 1951 additions and 49413 deletions
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
import { Brainy } from '../brainy.js'
|
||||
import { FormatDetector, SupportedFormat } from './FormatDetector.js'
|
||||
import { ImportHistory } from './ImportHistory.js'
|
||||
import { ImportHistory, type ImportHistoryEntry } from './ImportHistory.js'
|
||||
import { BackgroundDeduplicator } from './BackgroundDeduplicator.js'
|
||||
import { SmartExcelImporter } from '../importers/SmartExcelImporter.js'
|
||||
import { SmartPDFImporter } from '../importers/SmartPDFImporter.js'
|
||||
|
|
@ -489,7 +489,13 @@ export class ImportCoordinator {
|
|||
await this.history.recordImport(
|
||||
importId,
|
||||
{
|
||||
type: normalizedSource.type === 'path' ? 'file' : normalizedSource.type as any,
|
||||
// 'url' sources were already converted to 'buffer' by
|
||||
// normalizeSource() → fetchUrl(), so only history-recordable
|
||||
// source types remain here after the 'path' → 'file' mapping.
|
||||
type:
|
||||
normalizedSource.type === 'path'
|
||||
? 'file'
|
||||
: (normalizedSource.type as ImportHistoryEntry['source']['type']),
|
||||
filename: normalizedSource.filename,
|
||||
format: detection.format
|
||||
},
|
||||
|
|
@ -699,11 +705,25 @@ export class ImportCoordinator {
|
|||
format: SupportedFormat,
|
||||
options: ImportOptions
|
||||
): Promise<any> {
|
||||
// Check if IntelligentImportAugmentation already extracted data
|
||||
if ((options as any)._intelligentImport && (options as any)._extractedData) {
|
||||
const extractedData = (options as any)._extractedData
|
||||
// Check if IntelligentImportAugmentation already extracted data.
|
||||
// Typed boundary: the intelligent-import pre-processing path smuggles its
|
||||
// results onto ImportOptions via these underscore-prefixed private fields —
|
||||
// they are not part of the public ImportOptions contract.
|
||||
const intelligentOptions = options as ImportOptions & {
|
||||
_intelligentImport?: boolean
|
||||
_extractedData?: Array<{
|
||||
id?: string
|
||||
name?: string
|
||||
type?: string
|
||||
description?: string
|
||||
metadata?: Record<string, unknown>
|
||||
}>
|
||||
_metadata?: { intelligentImport?: Record<string, unknown> }
|
||||
}
|
||||
if (intelligentOptions._intelligentImport && intelligentOptions._extractedData) {
|
||||
const extractedData = intelligentOptions._extractedData
|
||||
// Convert extracted data to ExtractedRow format
|
||||
const rows = extractedData.map((item: any) => ({
|
||||
const rows = extractedData.map((item) => ({
|
||||
entity: {
|
||||
id: item.id || `entity-${Date.now()}-${Math.random()}`,
|
||||
name: item.name || item.type || 'Unnamed',
|
||||
|
|
@ -719,7 +739,7 @@ export class ImportCoordinator {
|
|||
rows,
|
||||
entities: extractedData,
|
||||
relationships: [],
|
||||
metadata: (options as any)._metadata?.intelligentImport || {},
|
||||
metadata: intelligentOptions._metadata?.intelligentImport || {},
|
||||
stats: {
|
||||
byType: {},
|
||||
byConfidence: {}
|
||||
|
|
@ -811,7 +831,7 @@ export class ImportCoordinator {
|
|||
entity: {
|
||||
id: imageId,
|
||||
name: imageName,
|
||||
type: 'media' as any,
|
||||
type: 'media',
|
||||
description: '',
|
||||
confidence: 1.0,
|
||||
metadata: { subtype: 'image' }
|
||||
|
|
@ -864,7 +884,18 @@ export class ImportCoordinator {
|
|||
provenanceCount?: number
|
||||
}> {
|
||||
const entities: Array<{ id: string; name: string; type: NounType; vfsPath?: string; metadata?: Record<string, any> }> = []
|
||||
const relationships: Array<{ id: string; from: string; to: string; type: VerbType }> = []
|
||||
// Wider than the declared return type: confidence/weight/metadata are
|
||||
// collected per relationship for the relateMany() batch below; callers of
|
||||
// createGraphEntities() only see the narrower {id, from, to, type} rows.
|
||||
const relationships: Array<{
|
||||
id: string
|
||||
from: string
|
||||
to: string
|
||||
type: VerbType
|
||||
confidence?: number
|
||||
weight?: number
|
||||
metadata?: { evidence?: string; [key: string]: unknown }
|
||||
}> = []
|
||||
let mergedCount = 0
|
||||
let newCount = 0
|
||||
|
||||
|
|
@ -1227,7 +1258,7 @@ export class ImportCoordinator {
|
|||
...trackingContext.customMetadata
|
||||
})
|
||||
}
|
||||
} as any)
|
||||
})
|
||||
} catch (error) {
|
||||
// Skip relationship collection errors (entity might not exist, etc.)
|
||||
continue
|
||||
|
|
@ -1314,7 +1345,7 @@ export class ImportCoordinator {
|
|||
verbType = this.inferRelationshipType(
|
||||
sourceEntity.type,
|
||||
targetEntity.type,
|
||||
(rel as any).metadata?.evidence
|
||||
rel.metadata?.evidence
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -1323,7 +1354,7 @@ export class ImportCoordinator {
|
|||
to: rel.to,
|
||||
type: verbType, // Enhanced type
|
||||
metadata: {
|
||||
...((rel as any).metadata || {}),
|
||||
...(rel.metadata || {}),
|
||||
relationshipType: 'semantic', // Distinguish from VFS/provenance
|
||||
inferredType: verbType !== rel.type, // Track if type was enhanced
|
||||
originalType: rel.type
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue