UNPKG

packfs-core

Version:

Semantic filesystem operations for LLM agent frameworks with natural language understanding. See LLM_AGENT_GUIDE.md for copy-paste examples.

55 lines 1.86 kB
"use strict"; /** * Base compression strategy interface for PackFS * Part of the proposed compression system for @yarnpkg/fslib */ Object.defineProperty(exports, "__esModule", { value: true }); exports.StrategyRegistry = exports.CompressionStrategy = void 0; class CompressionStrategy { } exports.CompressionStrategy = CompressionStrategy; /** * Registry for compression strategies */ class StrategyRegistry { constructor() { this.strategies = new Map(); } register(strategy) { this.strategies.set(strategy.name, strategy); } get(name) { return this.strategies.get(name); } getOptimal(data, hints) { const candidates = Array.from(this.strategies.values()) .filter(strategy => strategy.shouldUse(data, hints)) .sort((a, b) => { // Sort by priority and estimated performance const aPriority = this.getPriorityScore(a.priority); const bPriority = this.getPriorityScore(b.priority); if (hints.isHot) { // For hot files, prefer speed return aPriority === 3 ? -1 : bPriority === 3 ? 1 : 0; } // For cold files, prefer compression ratio const aRatio = a.estimateRatio(data, hints); const bRatio = b.estimateRatio(data, hints); return bRatio - aRatio; }); return candidates[0] || this.getDefault(); } getPriorityScore(priority) { switch (priority) { case 'speed': return 3; case 'balanced': return 2; case 'size': return 1; default: return 0; } } getDefault() { return this.strategies.get('lz4') || Array.from(this.strategies.values())[0]; } } exports.StrategyRegistry = StrategyRegistry; //# sourceMappingURL=CompressionStrategy.js.map