feat: harden plugin system wiring and add developer diagnostics
Fix critical wiring bugs that prevented plugin-provided implementations from being used at runtime. All CRUD operations, fork/checkout/clear, batch embedding, neural APIs, and VFS path resolution now properly dispatch through the plugin registry. Changes: - Wire graphIndex to storage for getVerbsBySource() fast path - Replace instanceof checks with duck-typing (indexIsTypeAware flag) so plugin HNSW indexes work in add/update/delete/search - Add createIndex() shared helper for plugin HNSW factory - Fix fork/checkout/clear to use plugin factories for metadataIndex, graphIndex, and HNSW instead of hardcoding JS constructors - Add three-tier embedBatch priority: embedBatch > embeddings > WASM - Skip WASM warmup/eagerEmbeddings when plugin provides embeddings - Fix PathResolver metadataIndex access (was looking on storage) - Use global UnifiedCache in SemanticPathResolver - Wire plugin distance function through neural APIs - Add diagnostics() method and CLI command for provider inspection - Add requireProviders() for production fail-fast assertions - Add init-time provider summary log - Add plugin developer documentation (docs/PLUGINS.md) - Export DiagnosticsResult type
This commit is contained in:
parent
3a21bf62b7
commit
401e300ff2
12 changed files with 705 additions and 77 deletions
|
|
@ -201,9 +201,8 @@ export class PathResolver {
|
|||
* Falls back to graph traversal if MetadataIndex unavailable
|
||||
*/
|
||||
private async resolveWithMetadataIndex(path: string): Promise<string> {
|
||||
// Access MetadataIndexManager from brain's storage
|
||||
const storage = (this.brain as any).storage
|
||||
const metadataIndex = storage?.metadataIndex
|
||||
// Access MetadataIndexManager from brain instance (not storage — metadataIndex lives on Brainy)
|
||||
const metadataIndex = (this.brain as any).metadataIndex
|
||||
|
||||
if (!metadataIndex) {
|
||||
// MetadataIndex not available, use graph traversal
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import { PathResolver } from '../PathResolver.js'
|
|||
import { VFSEntity, VFSError, VFSErrorCode } from '../types.js'
|
||||
import { SemanticPathParser, ParsedSemanticPath } from './SemanticPathParser.js'
|
||||
import { ProjectionRegistry } from './ProjectionRegistry.js'
|
||||
import { UnifiedCache } from '../../utils/unifiedCache.js'
|
||||
import { getGlobalCache, UnifiedCache } from '../../utils/unifiedCache.js'
|
||||
|
||||
/**
|
||||
* Semantic Path Resolver
|
||||
|
|
@ -44,12 +44,8 @@ export class SemanticPathResolver {
|
|||
this.registry = registry
|
||||
this.parser = new SemanticPathParser()
|
||||
|
||||
// Use Brainy's UnifiedCache for semantic path caching
|
||||
// Zero-config: Uses 2GB default from UnifiedCache
|
||||
this.cache = new UnifiedCache({
|
||||
enableRequestCoalescing: true,
|
||||
enableFairnessCheck: true
|
||||
})
|
||||
// Use global UnifiedCache (picks up plugin-provided cache when available)
|
||||
this.cache = getGlobalCache()
|
||||
|
||||
// Create traditional path resolver (uses its own optimized cache with defaults)
|
||||
this.pathResolver = new PathResolver(brain, rootEntityId)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue