mlld
Version:
mlld: llm scripting language
1 lines • 86.2 kB
Source Map (JSON)
{"version":3,"sources":["../interpreter/utils/array-operations/slice/SliceHandler.ts","../interpreter/utils/array-operations/filter/DurationComparator.ts","../interpreter/utils/array-operations/filter/FieldAccessor.ts","../interpreter/utils/array-operations/filter/FilterEvaluator.ts","../interpreter/utils/array-operations/filter/FilterHandler.ts","../interpreter/utils/array-operations/metadata/MetadataPreserver.ts","../interpreter/utils/array-operations/ArrayOperationsHandler.ts","../interpreter/utils/field-access.ts"],"names":["SliceHandler","perform","items","start","end","len","length","actualStart","normalizeIndex","actualEnd","slice","index","defaultValue","undefined","Math","max","min","DurationComparator","compare","fieldValue","operator","duration","fieldDate","Date","isNaN","getTime","console","warn","now","ageInMs","durationInMs","durationToMs","abs","value","unit","FieldAccessor","get","item","field","getSimpleField","current","key","obj","FilterEvaluator","durationComparator","fieldAccessor","evaluate","condition","env","isTruthy","compareValue","resolveCompareValue","isTimeDurationNode","compareValues","type","variable","getVariable","identifier","resolveVariable","ResolutionContext","Equality","left","op","right","equalityCompare","containsCompare","numericCompare","isFalsy","leftStr","String","rightStr","includes","leftNum","Number","rightNum","FilterHandler","evaluator","results","passed","push","MetadataPreserver","preserveType","arrayData","transformed","preserveArrayVariable","original","wrapper","wrapStructured","JSON","stringify","mx","internal","createArrayVariable","name","isComplex","source","transformedBy","ArrayOperationsHandler","filter","preserver","handle","extractArrayData","handleSlice","handleFilter","node","resolveSliceIndex","sliced","isVariableReferenceNode","Error","resolved","resolveValue","StringInterpolation","isVariable","filtered","isStructuredValue","data","asData","Array","isArray","getObjectField","fieldName","entries","entry","properties","hasObjectField","some","isObjectAST","every","Boolean","isPlainObjectValue","isLoadContentResult","proto","Object","getPrototypeOf","prototype","createObjectUtilityMxView","keys","view","create","defineProperty","enumerable","configurable","map","STRING_JSON_ACCESSORS","Set","STRING_TEXT_ACCESSORS","accessField","options","parentVariable","__variable","rawValue","structuredWrapper","structuredCtx","CORE_METADATA","metadataValue","baseMx","preserveContext","accessPath","parentPath","GUARD_QUANTIFIERS","fieldExistsInData","process","MLLD_DEBUG","log","isVar","rawValueType","rawValueKeys","rawValueTypeField","accessedValue","MLLD_DEBUG_FIX","error","rawType","rawKeys","preview","first","sample","inspect","depth","breakLength","fs","appendFileSync","asText","keepStructured","metadata","MLLD_DEBUG_STRUCTURED","debugKeys","dataKeys","hasStructuredWrapper","has","trimmed","trim","parse","chain","FieldAccessError","baseValue","fieldAccessChain","failedAtIndex","failedKey","sourceLocation","startsWith","endsWith","isJsonString","msg","result","json","jsonData","text","actualValue","returnUndefinedForMissing","itemsPreview","hasField","availableKeys","numKey","from","_","i","arrayOps","evaluateDataValue","indexNode","valueType","indexValue","resolvedField","provenanceSource","inheritExpressionProvenance","resultIsVariable","accessFields","fields","path","parentVar","shouldPreserveContext","createFieldAccessVariable","internalSource","join","fieldAccess"],"mappings":"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","file":"chunk-3VW6WZGZ.mjs","sourcesContent":["export class SliceHandler {\n perform(items: any[], start?: number | null, end?: number | null): any[] {\n const len = items.length;\n\n // Handle negative indices and null values\n const actualStart = this.normalizeIndex(start, len, 0);\n const actualEnd = this.normalizeIndex(end, len, len);\n\n // Ensure valid range\n if (actualStart >= actualEnd) {\n return [];\n }\n\n // Slice preserves object references (including LoadContentResult)\n return items.slice(actualStart, actualEnd);\n }\n\n private normalizeIndex(\n index: number | null | undefined,\n length: number,\n defaultValue: number\n ): number {\n if (index === null || index === undefined) {\n return defaultValue;\n }\n\n if (index < 0) {\n // Negative index: count from end\n return Math.max(0, length + index);\n }\n\n // Positive index: clamp to array bounds\n return Math.min(index, length);\n }\n}","import { TimeDurationNode } from '@core/types/primitives';\n\nexport class DurationComparator {\n compare(\n fieldValue: any,\n operator: string,\n duration: TimeDurationNode\n ): boolean {\n // Parse field as date\n const fieldDate = new Date(fieldValue);\n if (isNaN(fieldDate.getTime())) {\n console.warn(`Invalid date value for duration comparison: ${fieldValue}`);\n return false;\n }\n\n // Calculate age from now\n const now = new Date();\n const ageInMs = now.getTime() - fieldDate.getTime();\n const durationInMs = this.durationToMs(duration);\n\n // Compare age against duration\n // >7d means \"older than 7 days\" (age > duration)\n // <7d means \"newer than 7 days\" (age < duration)\n switch (operator) {\n case '>': return ageInMs > durationInMs;\n case '>=': return ageInMs >= durationInMs;\n case '<': return ageInMs < durationInMs;\n case '<=': return ageInMs <= durationInMs;\n case '==': return Math.abs(ageInMs - durationInMs) < 60000; // Within 1 minute\n case '!=': return Math.abs(ageInMs - durationInMs) >= 60000;\n default:\n console.warn(`Invalid operator for duration comparison: ${operator}`);\n return false;\n }\n }\n\n private durationToMs(duration: TimeDurationNode): number {\n const value = duration.value;\n switch (duration.unit) {\n case 'seconds': return value * 1000;\n case 'minutes': return value * 60 * 1000;\n case 'hours': return value * 60 * 60 * 1000;\n case 'days': return value * 24 * 60 * 60 * 1000;\n case 'weeks': return value * 7 * 24 * 60 * 60 * 1000;\n case 'years': return value * 365 * 24 * 60 * 60 * 1000;\n default:\n console.warn(`Unknown duration unit: ${duration.unit}`);\n return 0;\n }\n }\n}","export class FieldAccessor {\n get(item: any, field: string | string[]): any {\n if (typeof field === 'string') {\n return this.getSimpleField(item, field);\n }\n\n // Navigate nested path\n let current = item;\n for (const key of field) {\n if (current == null) {\n return undefined;\n }\n current = this.getSimpleField(current, key);\n }\n return current;\n }\n\n private getSimpleField(obj: any, field: string): any {\n if (obj == null) {\n return undefined;\n }\n\n // Direct property access works for both LoadContentResult and plain objects\n // LoadContentResult getters (like .fm, .filename) work automatically\n if (typeof obj === 'object') {\n return obj[field];\n }\n\n // Can't access fields on primitives\n return undefined;\n }\n}","import { FilterCondition } from '@core/types/primitives';\nimport { Environment } from '@interpreter/env/Environment';\nimport { DurationComparator } from './DurationComparator';\nimport { FieldAccessor } from './FieldAccessor';\nimport { isTimeDurationNode } from '@core/types/guards';\n\nexport class FilterEvaluator {\n private durationComparator = new DurationComparator();\n private fieldAccessor = new FieldAccessor();\n\n async evaluate(\n item: any, // Can be LoadContentResult or plain object\n condition: FilterCondition,\n env: Environment\n ): Promise<boolean> {\n // Extract field value (works with LoadContentResult or plain objects)\n const fieldValue = this.fieldAccessor.get(item, condition.field);\n\n // No operator = existence/truthiness check\n if (!condition.operator) {\n return this.isTruthy(fieldValue);\n }\n\n // Resolve comparison value (may be a variable reference)\n const compareValue = await this.resolveCompareValue(condition.value, env);\n\n // Special handling for time duration comparisons\n if (isTimeDurationNode(compareValue)) {\n return this.durationComparator.compare(\n fieldValue,\n condition.operator,\n compareValue\n );\n }\n\n // Standard comparisons\n return this.compareValues(fieldValue, condition.operator, compareValue);\n }\n\n private async resolveCompareValue(value: any, env: Environment): Promise<any> {\n // Check if it's a variable reference that needs resolution\n if (value?.type === 'VariableReference') {\n const variable = env.getVariable(value.identifier);\n if (!variable) {\n console.warn(`Variable not found in filter: ${value.identifier}`);\n return undefined;\n }\n const { resolveVariable, ResolutionContext } = await import('@interpreter/utils/variable-resolution');\n return await resolveVariable(variable, env, ResolutionContext.Equality);\n }\n\n // Pass through literals and TimeDuration nodes\n return value;\n }\n\n private compareValues(left: any, op: string, right: any): boolean {\n switch (op) {\n case '==':\n return this.equalityCompare(left, right);\n case '!=':\n return !this.equalityCompare(left, right);\n case '~':\n return this.containsCompare(left, right);\n case '>':\n return this.numericCompare(left, '>', right);\n case '>=':\n return this.numericCompare(left, '>=', right);\n case '<':\n return this.numericCompare(left, '<', right);\n case '<=':\n return this.numericCompare(left, '<=', right);\n default:\n console.warn(`Unknown filter operator: ${op}`);\n return false;\n }\n }\n\n private equalityCompare(left: any, right: any): boolean {\n // mlld-specific equality: \"false\" === false\n if (this.isFalsy(left) && this.isFalsy(right)) {\n return true;\n }\n // Use JavaScript loose equality\n return left == right;\n }\n\n private containsCompare(left: any, right: any): boolean {\n const leftStr = String(left);\n const rightStr = String(right);\n return leftStr.includes(rightStr);\n }\n\n private numericCompare(left: any, op: string, right: any): boolean {\n // Try numeric comparison first\n const leftNum = Number(left);\n const rightNum = Number(right);\n\n if (!isNaN(leftNum) && !isNaN(rightNum)) {\n switch (op) {\n case '>': return leftNum > rightNum;\n case '>=': return leftNum >= rightNum;\n case '<': return leftNum < rightNum;\n case '<=': return leftNum <= rightNum;\n }\n }\n\n // Fall back to string comparison\n const leftStr = String(left);\n const rightStr = String(right);\n switch (op) {\n case '>': return leftStr > rightStr;\n case '>=': return leftStr >= rightStr;\n case '<': return leftStr < rightStr;\n case '<=': return leftStr <= rightStr;\n }\n\n return false;\n }\n\n private isTruthy(value: any): boolean {\n // mlld-specific truthiness\n if (value === undefined || value === null) return false;\n if (value === false || value === 'false') return false;\n if (value === '' || value === 0) return false;\n return true;\n }\n\n private isFalsy(value: any): boolean {\n return !this.isTruthy(value);\n }\n}\n","import { FilterCondition } from '@core/types/primitives';\nimport { Environment } from '@interpreter/env/Environment';\nimport { FilterEvaluator } from './FilterEvaluator';\n\nexport class FilterHandler {\n private evaluator = new FilterEvaluator();\n\n async perform(\n items: any[],\n condition: FilterCondition,\n env: Environment\n ): Promise<any[]> {\n const results: any[] = [];\n\n for (const item of items) {\n // Pass full objects (including LoadContentResult) to evaluator\n const passed = await this.evaluator.evaluate(item, condition, env);\n if (passed) {\n results.push(item); // Preserve the original object\n }\n }\n\n return results;\n }\n}","import { Variable, ArrayVariable, createArrayVariable } from '@core/types/variable';\nimport { isVariable } from '@interpreter/utils/variable-resolution';\nimport { ArrayData } from '../ArrayOperationsHandler';\nimport { wrapStructured } from '../../structured-value';\n\nexport class MetadataPreserver {\n preserveType(arrayData: ArrayData, transformed: any[]): any {\n switch (arrayData.type) {\n case 'array-variable':\n return this.preserveArrayVariable(\n arrayData.original as ArrayVariable,\n transformed\n );\n\n case 'ast-array':\n return {\n type: 'array',\n items: transformed\n };\n\n case 'structured-value': {\n const wrapper = arrayData.original;\n return wrapStructured(\n transformed,\n (wrapper && wrapper.type) || 'array',\n JSON.stringify(transformed),\n wrapper?.mx,\n wrapper?.internal\n );\n }\n\n case 'plain-array':\n default:\n return transformed;\n }\n }\n\n private preserveArrayVariable(\n original: ArrayVariable,\n transformed: any[]\n ): ArrayVariable {\n return createArrayVariable(\n original.name,\n transformed,\n original.isComplex || false,\n original.source,\n {\n mx: { ...original.mx },\n internal: { ...original.internal, transformedBy: 'array-operation' }\n }\n );\n }\n}\n","import { Environment } from '@interpreter/env/Environment';\nimport { FieldAccessNode, ArraySliceNode, ArrayFilterNode, SliceIndex } from '@core/types/primitives';\nimport { isVariableReferenceNode } from '@core/types/guards';\nimport { SliceHandler } from './slice/SliceHandler';\nimport { FilterHandler } from './filter/FilterHandler';\nimport { MetadataPreserver } from './metadata/MetadataPreserver';\nimport { isVariable, resolveValue, ResolutionContext } from '@interpreter/utils/variable-resolution';\nimport { asData, isStructuredValue } from '../structured-value';\n\nexport class ArrayOperationsHandler {\n private slice = new SliceHandler();\n private filter = new FilterHandler();\n private preserver = new MetadataPreserver();\n\n async handle(\n value: any,\n field: FieldAccessNode,\n env: Environment\n ): Promise<any> {\n // Extract array data while preserving LoadContentResult objects\n const arrayData = this.extractArrayData(value);\n if (!arrayData) {\n console.warn(`Array operation ${field.type} on non-array value`);\n return field.type === 'arraySlice' ? [] : value;\n }\n\n switch (field.type) {\n case 'arraySlice':\n return await this.handleSlice(arrayData, field as ArraySliceNode, env);\n\n case 'arrayFilter':\n return await this.handleFilter(arrayData, field as ArrayFilterNode, env);\n\n default:\n return null;\n }\n }\n\n private async handleSlice(arrayData: ArrayData, node: ArraySliceNode, env: Environment): Promise<any> {\n // Resolve variable references in slice indices\n const start = await this.resolveSliceIndex(node.start, env);\n const end = await this.resolveSliceIndex(node.end, env);\n\n const sliced = this.slice.perform(arrayData.items, start, end);\n return this.preserver.preserveType(arrayData, sliced);\n }\n\n private async resolveSliceIndex(index: SliceIndex | null, env: Environment): Promise<number | null> {\n if (index === null || index === undefined) {\n return null;\n }\n\n if (typeof index === 'number') {\n return index;\n }\n\n // Handle variable reference\n if (isVariableReferenceNode(index)) {\n const variable = env.getVariable(index.identifier);\n if (!variable) {\n throw new Error(`Variable not found for slice index: @${index.identifier}`);\n }\n\n const resolved = await resolveValue(variable, env, ResolutionContext.StringInterpolation);\n const value = isVariable(resolved) ? resolved.value : resolved;\n\n if (typeof value !== 'number') {\n throw new Error(`Slice index must resolve to a number, got ${typeof value} from @${index.identifier}`);\n }\n\n return value;\n }\n\n // Unknown index type\n throw new Error(`Invalid slice index type: ${typeof index}`);\n }\n\n private async handleFilter(\n arrayData: ArrayData,\n node: ArrayFilterNode,\n env: Environment\n ): Promise<any> {\n // Pass full objects to filter, not unwrapped content\n const filtered = await this.filter.perform(\n arrayData.items,\n node.condition,\n env\n );\n return this.preserver.preserveType(arrayData, filtered);\n }\n\n private extractArrayData(value: any): ArrayData | null {\n // StructuredValue array - keep wrapper intact for metadata preservation\n if (isStructuredValue(value) && value.type === 'array') {\n const data = asData(value);\n if (Array.isArray(data)) {\n return {\n type: 'structured-value',\n items: data,\n original: value\n };\n }\n }\n\n // Variable containing array\n if (isVariable(value) && value.type === 'array') {\n return {\n type: 'array-variable',\n items: value.value,\n original: value\n };\n }\n\n // Plain JavaScript array\n if (Array.isArray(value)) {\n return {\n type: 'plain-array',\n items: value,\n original: value\n };\n }\n\n // Handle normalized AST arrays\n if (value?.type === 'array' && value.items) {\n return {\n type: 'ast-array',\n items: value.items,\n original: value\n };\n }\n\n return null;\n }\n}\n\nexport interface ArrayData {\n type: 'array-variable' | 'plain-array' | 'ast-array' | 'structured-value';\n items: any[];\n original: any;\n}\n","/**\n * Utility for accessing fields on objects/arrays\n */\n\nimport * as fs from 'fs';\nimport * as util from 'util';\nimport { FieldAccessNode } from '@core/types/primitives';\nimport { FieldAccessError } from '@core/errors';\nimport { isLoadContentResult, isLoadContentResultURL } from '@core/types/load-content';\nimport type { Variable } from '@core/types/variable/VariableTypes';\nimport { isVariable } from './variable-resolution';\nimport { ArrayOperationsHandler } from './array-operations';\nimport { Environment } from '@interpreter/env/Environment';\nimport { asData, asText, isStructuredValue } from './structured-value';\nimport { inheritExpressionProvenance } from '@core/types/provenance/ExpressionProvenance';\nimport type { DataObjectValue } from '@core/types/var';\n\n/**\n * Helper to get a field from an object AST node.\n * Handles both new entries format and old properties format.\n */\nfunction getObjectField(obj: any, fieldName: string): any | undefined {\n // New format: entries array\n if (obj.entries && Array.isArray(obj.entries)) {\n for (const entry of obj.entries) {\n if (entry.type === 'pair' && entry.key === fieldName) {\n return entry.value;\n }\n }\n return undefined;\n }\n\n // Old format: properties record (shouldn't happen with new grammar, but keep for safety)\n if (obj.properties && typeof obj.properties === 'object') {\n return obj.properties[fieldName];\n }\n\n return undefined;\n}\n\n/**\n * Helper to check if an object AST node has a specific field.\n */\nfunction hasObjectField(obj: any, fieldName: string): boolean {\n // New format: entries array\n if (obj.entries && Array.isArray(obj.entries)) {\n return obj.entries.some((entry: any) => entry.type === 'pair' && entry.key === fieldName);\n }\n\n // Old format: properties record\n if (obj.properties && typeof obj.properties === 'object') {\n return fieldName in obj.properties;\n }\n\n return false;\n}\n\n/**\n * Helper to check if a value is an object AST node.\n */\nfunction isObjectAST(value: any): boolean {\n if (!value || typeof value !== 'object' || value.type !== 'object') {\n return false;\n }\n\n if (Array.isArray(value.entries)) {\n return value.entries.every(\n (entry: any) =>\n entry &&\n typeof entry === 'object' &&\n ((entry.type === 'pair' && typeof entry.key === 'string' && 'value' in entry) ||\n (entry.type === 'spread' && 'value' in entry))\n );\n }\n\n return Boolean(value.properties && typeof value.properties === 'object');\n}\n\nfunction isPlainObjectValue(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== 'object') {\n return false;\n }\n if (Array.isArray(value)) {\n return false;\n }\n if (isObjectAST(value)) {\n return false;\n }\n if (isLoadContentResult(value)) {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\nfunction createObjectUtilityMxView(\n mx: unknown,\n data: unknown\n): unknown {\n if (!mx || typeof mx !== 'object') {\n return mx;\n }\n if (!isPlainObjectValue(data)) {\n return mx;\n }\n\n const obj = data as Record<string, unknown>;\n const keys = Object.keys(obj);\n const view = Object.create(mx as object) as Record<string, unknown>;\n Object.defineProperty(view, 'keys', {\n value: keys,\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(view, 'values', {\n value: keys.map(key => obj[key]),\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(view, 'entries', {\n value: keys.map(key => [key, obj[key]]),\n enumerable: true,\n configurable: true\n });\n return view;\n}\n\nconst STRING_JSON_ACCESSORS = new Set(['data', 'json']);\nconst STRING_TEXT_ACCESSORS = new Set(['text', 'content']);\n\n/**\n * Result of field access that preserves context\n */\nexport interface FieldAccessResult {\n /** The accessed value */\n value: any;\n /** The parent Variable if available */\n parentVariable?: Variable;\n /** The access path taken */\n accessPath: string[];\n /** Whether the value itself is a Variable */\n isVariable: boolean;\n}\n\n/**\n * Options for field access\n */\nexport interface FieldAccessOptions {\n /** Whether to preserve context and return FieldAccessResult */\n preserveContext?: boolean;\n /** Parent path for building access path */\n parentPath?: string[];\n /** Whether to return undefined for missing fields instead of throwing */\n returnUndefinedForMissing?: boolean;\n /** Environment for async operations like filters */\n env?: Environment;\n /** Optional source location for better error reporting */\n sourceLocation?: SourceLocation;\n}\n\n/**\n * Access a field on an object or array.\n * Handles dot notation (object.field), numeric fields (obj.123), \n * array indexing (array[0]), string indexing (obj[\"key\"]),\n * array slicing (array[0:5]), and array filtering (array[?field>100])\n * \n * Phase 2: Handle normalized AST objects\n * Phase 5: Consolidated with enhanced field access for Variable preservation\n * Phase 6: Added array operations (slice and filter)\n */\nexport async function accessField(value: any, field: FieldAccessNode, options?: FieldAccessOptions): Promise<any | FieldAccessResult> {\n // CRITICAL: Variable metadata properties whitelist\n // Only these properties access the Variable itself, not its value\n const VARIABLE_METADATA_PROPS = [\n 'type',\n 'isComplex',\n 'source',\n 'metadata',\n 'internal',\n 'mx',\n 'any',\n 'all',\n 'none',\n 'raw',\n 'totalTokens',\n 'maxTokens'\n ];\n\n // Check if the input is a Variable\n const parentVariable = isVariable(value) ? value : (value as any)?.__variable;\n\n // Extract the raw value if we have a Variable (do this BEFORE metadata check)\n let rawValue = isVariable(value) ? value.value : value;\n const structuredWrapper = isStructuredValue(rawValue) ? rawValue : undefined;\n const structuredCtx = (structuredWrapper?.mx ?? undefined) as Record<string, unknown> | undefined;\n if (structuredWrapper) {\n rawValue = structuredWrapper.data;\n }\n\n // Special handling for Variable metadata properties\n // IMPORTANT: Check metadata for core properties (.type, .mx, etc.),\n // but allow data precedence for guard quantifiers (.all, .any, .none)\n if (isVariable(value) && field.type === 'field') {\n const fieldName = String(field.value);\n\n // Core metadata properties always come from Variable, never from data\n const CORE_METADATA = ['type', 'isComplex', 'source', 'metadata', 'internal', 'mx', 'raw', 'totalTokens', 'maxTokens'];\n\n if (CORE_METADATA.includes(fieldName)) {\n const metadataValue = (() => {\n if (fieldName !== 'mx') {\n return value[fieldName as keyof typeof value];\n }\n\n const baseMx =\n structuredCtx ??\n (isLoadContentResult(rawValue) ? (rawValue as any).mx : undefined) ??\n (value as any).mx;\n\n return createObjectUtilityMxView(baseMx, rawValue);\n })();\n\n if (options?.preserveContext) {\n return {\n value: metadataValue,\n parentVariable: value,\n accessPath: [...(options.parentPath || []), fieldName],\n isVariable: false\n };\n }\n return metadataValue;\n }\n\n // Guard quantifiers (.all, .any, .none) - allow data to override\n const GUARD_QUANTIFIERS = ['all', 'any', 'none'];\n if (GUARD_QUANTIFIERS.includes(fieldName)) {\n // Check if this field exists in the actual data first\n const fieldExistsInData = rawValue && typeof rawValue === 'object' && fieldName in rawValue;\n\n if (!fieldExistsInData) {\n // Field doesn't exist in data, so return metadata property\n const metadataValue = value[fieldName as keyof typeof value];\n\n if (options?.preserveContext) {\n return {\n value: metadataValue,\n parentVariable: value,\n accessPath: [...(options.parentPath || []), fieldName],\n isVariable: false\n };\n }\n return metadataValue;\n }\n }\n }\n const fieldValue = field.value;\n \n // DEBUG: Log what we're working with\n if (process.env.MLLD_DEBUG === 'true' && String(fieldValue) === 'try') {\n console.log('🔍 FIELD ACCESS PRE-CHECK:', {\n isVar: isVariable(value),\n rawValueType: typeof rawValue,\n rawValueKeys: Object.keys(rawValue || {}),\n rawValueTypeField: rawValue?.type,\n isObjectAST: isObjectAST(rawValue)\n });\n }\n \n // Perform the actual field access\n let accessedValue: any;\n const fieldName = String(fieldValue);\n \n switch (field.type) {\n case 'field':\n case 'stringIndex':\n case 'bracketAccess': {\n // All handle string-based property access\n const name = String(fieldValue);\n if (process.env.MLLD_DEBUG_FIX === 'true' && name === 'length') {\n console.error('[field-access] length access', {\n isVariable: isVariable(value),\n rawType: typeof rawValue,\n rawKeys: rawValue && typeof rawValue === 'object' ? Object.keys(rawValue) : null,\n rawValueTypeField: (rawValue as any)?.type\n });\n try {\n const preview =\n Array.isArray(rawValue) && rawValue.length > 0\n ? { isArray: true, length: rawValue.length, first: rawValue[0] }\n : rawValue && typeof rawValue === 'object'\n ? {\n isArray: Array.isArray(rawValue),\n sample: util.inspect(rawValue, { depth: 2, breakLength: 120 })\n }\n : rawValue;\n fs.appendFileSync(\n '/tmp/mlld-debug.log',\n JSON.stringify({\n source: 'field-access',\n field: name,\n isVariable: isVariable(value),\n rawType: typeof rawValue,\n rawKeys: rawValue && typeof rawValue === 'object' ? Object.keys(rawValue) : null,\n rawValueTypeField: (rawValue as any)?.type,\n preview\n }) + '\\n'\n );\n } catch {}\n }\n if (structuredWrapper) {\n if (name === 'text') {\n if (\n rawValue &&\n typeof rawValue === 'object' &&\n name in (rawValue as any) &&\n structuredWrapper.mx?.source !== 'load-content'\n ) {\n accessedValue = (rawValue as any)[name];\n } else {\n accessedValue = asText(structuredWrapper);\n }\n break;\n }\n if (name === 'data') {\n if (rawValue && typeof rawValue === 'object' && name in (rawValue as any)) {\n accessedValue = (rawValue as any)[name];\n } else {\n accessedValue = asData(structuredWrapper);\n }\n break;\n }\n if (name === 'keepStructured') {\n if (structuredWrapper.internal) {\n (structuredWrapper.internal as Record<string, unknown>).keepStructured = true;\n } else {\n (structuredWrapper as Record<string, unknown>).internal = { keepStructured: true };\n }\n accessedValue = structuredWrapper;\n break;\n }\n if (name === 'keep') {\n if (structuredWrapper.internal) {\n (structuredWrapper.internal as Record<string, unknown>).keepStructured = true;\n } else {\n (structuredWrapper as Record<string, unknown>).internal = { keepStructured: true };\n }\n accessedValue = structuredWrapper;\n break;\n }\n if (name === 'type') {\n accessedValue = structuredWrapper.type;\n break;\n }\n if (name === 'metadata') {\n accessedValue = structuredWrapper.metadata;\n break;\n }\n if (name === 'mx') {\n accessedValue = createObjectUtilityMxView(structuredWrapper.mx, rawValue);\n break;\n }\n if (\n structuredCtx &&\n typeof structuredCtx === 'object' &&\n name in structuredCtx &&\n structuredCtx[name] !== undefined\n ) {\n accessedValue = structuredCtx[name];\n break;\n }\n }\n if (process.env.MLLD_DEBUG_STRUCTURED === 'true') {\n const debugKeys = typeof rawValue === 'object' && rawValue !== null ? Object.keys(rawValue) : undefined;\n const dataKeys = structuredWrapper && structuredWrapper.data && typeof structuredWrapper.data === 'object'\n ? Object.keys(structuredWrapper.data as Record<string, unknown>)\n : undefined;\n console.error('[field-access]', {\n name,\n rawValueType: typeof rawValue,\n hasStructuredWrapper: Boolean(structuredWrapper),\n keys: debugKeys,\n dataKeys\n });\n }\n if (typeof rawValue === 'string') {\n if (STRING_JSON_ACCESSORS.has(name)) {\n const trimmed = rawValue.trim();\n try {\n accessedValue = JSON.parse(trimmed);\n break;\n } catch {\n const chain = [...(options?.parentPath || []), name];\n throw new FieldAccessError(`String value cannot be parsed as JSON for accessor \"${name}\"`, {\n baseValue: rawValue,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: name\n }, { sourceLocation: options?.sourceLocation, env: options?.env });\n }\n }\n\n if (STRING_TEXT_ACCESSORS.has(name)) {\n accessedValue = rawValue;\n break;\n }\n\n // Support .length on strings (like JavaScript)\n if (name === 'length') {\n accessedValue = rawValue.length;\n break;\n }\n\n // Check if this looks like a JSON string - provide helpful error\n const trimmed = rawValue.trim();\n if ((trimmed.startsWith('{') && trimmed.endsWith('}')) ||\n (trimmed.startsWith('[') && trimmed.endsWith(']'))) {\n const chain = [...(options?.parentPath || []), name];\n throw new FieldAccessError(\n `Cannot access field \"${name}\" on JSON string. Use \\`.data.${name}\\` or pipe through \\`| @json\\` first.`,\n {\n baseValue: rawValue,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: name,\n isJsonString: true\n },\n { sourceLocation: options?.sourceLocation, env: options?.env }\n );\n }\n }\n\n if (typeof rawValue !== 'object' || rawValue === null) {\n if (\n structuredCtx &&\n typeof structuredCtx === 'object' &&\n name in structuredCtx &&\n structuredCtx[name] !== undefined\n ) {\n accessedValue = structuredCtx[name];\n break;\n }\n const chain = [...(options?.parentPath || []), name];\n const msg = `Cannot access field \"${name}\" on non-object value (${typeof rawValue})`;\n throw new FieldAccessError(msg, {\n baseValue: rawValue,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: name\n }, { sourceLocation: options?.sourceLocation, env: options?.env });\n }\n \n // Handle LoadContentResult objects - access metadata properties\n if (isLoadContentResult(rawValue)) {\n // First check if it's a metadata property that exists directly on LoadContentResult\n if (name in rawValue) {\n const result = (rawValue as any)[name];\n if (result !== undefined) {\n accessedValue = result;\n break;\n }\n }\n \n // For JSON files, try to access properties in the parsed JSON\n if (rawValue.json !== undefined) {\n const jsonData = rawValue.json;\n if (jsonData && typeof jsonData === 'object' && name in jsonData) {\n accessedValue = jsonData[name];\n break;\n }\n }\n \n {\n const chain = [...(options?.parentPath || []), name];\n const msg = `Field \"${name}\" not found in LoadContentResult`;\n throw new FieldAccessError(msg, {\n baseValue: rawValue,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: name\n }, { sourceLocation: options?.sourceLocation, env: options?.env });\n }\n }\n \n // Handle StructuredValue arrays - special case for .content and .length\n if (structuredWrapper && structuredWrapper.type === 'array') {\n // For .content/.text, return the pre-joined text\n if (name === 'content' || name === 'text') {\n accessedValue = structuredWrapper.text;\n break;\n }\n // For .length, use the array data\n if (name === 'length') {\n accessedValue = (structuredWrapper.data as any[]).length;\n break;\n }\n // For other properties, try to access on the array itself\n const result = (rawValue as any)[name];\n if (result !== undefined) {\n accessedValue = result;\n break;\n }\n // If property not found, fall through to error handling below\n }\n \n // Handle Variable objects with type 'object' and value field\n if (rawValue.type === 'object' && rawValue.value && !isObjectAST(rawValue)) {\n // This is a Variable object, access fields in the value\n const actualValue = rawValue.value;\n if (!(name in actualValue)) {\n if (options?.returnUndefinedForMissing) {\n accessedValue = undefined;\n break;\n }\n {\n const chain = [...(options?.parentPath || []), name];\n const msg = `Field \"${name}\" not found in object`;\n throw new FieldAccessError(msg, {\n baseValue: actualValue,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: name\n }, { sourceLocation: options?.sourceLocation, env: options?.env });\n }\n }\n accessedValue = actualValue[name];\n break;\n }\n\n // Handle normalized AST objects (with entries or properties)\n if (isObjectAST(rawValue)) {\n // Access the field using helper that handles both formats\n if (!hasObjectField(rawValue, name)) {\n if (options?.returnUndefinedForMissing) {\n accessedValue = undefined;\n break;\n }\n {\n const chain = [...(options?.parentPath || []), name];\n const msg = `Field \"${name}\" not found in object`;\n throw new FieldAccessError(msg, {\n baseValue: rawValue,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: name\n }, { sourceLocation: options?.sourceLocation, env: options?.env });\n }\n }\n accessedValue = getObjectField(rawValue, name);\n break;\n }\n\n // Handle normalized AST arrays with direct length access\n if (rawValue && typeof rawValue === 'object' && rawValue.type === 'array' && Array.isArray(rawValue.items)) {\n if (name === 'length') {\n if (process.env.MLLD_DEBUG_FIX === 'true') {\n console.error('[field-access] AST array length', {\n length: rawValue.items.length,\n itemsPreview: rawValue.items.slice(0, 2)\n });\n }\n accessedValue = rawValue.items.length;\n break;\n }\n }\n \n // DEBUG: Log what we're checking\n if (process.env.MLLD_DEBUG === 'true' && name === 'try') {\n console.log('🔍 FIELD ACCESS DEBUG:', {\n fieldName: name,\n rawValueType: typeof rawValue,\n rawValueKeys: Object.keys(rawValue || {}),\n hasField: name in rawValue,\n fieldValue: rawValue?.[name]\n });\n }\n \n // Handle regular objects (including Variables with type: 'object')\n if (!(name in rawValue)) {\n if (\n structuredCtx &&\n typeof structuredCtx === 'object' &&\n name in structuredCtx &&\n structuredCtx[name] !== undefined\n ) {\n accessedValue = structuredCtx[name];\n break;\n }\n if (options?.returnUndefinedForMissing) {\n accessedValue = undefined;\n break;\n }\n const chain = [...(options?.parentPath || []), name];\n const availableKeys = rawValue && typeof rawValue === 'object' ? Object.keys(rawValue) : [];\n throw new FieldAccessError(`Field \"${name}\" not found in object`, {\n baseValue: rawValue,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: name,\n accessPath: chain,\n availableKeys\n }, { sourceLocation: options?.sourceLocation, env: options?.env });\n }\n \n accessedValue = rawValue[name];\n break;\n }\n \n case 'numericField': {\n // Handle numeric property access (obj.123)\n const numKey = String(fieldValue);\n \n if (typeof rawValue !== 'object' || rawValue === null) {\n const chain = [...(options?.parentPath || []), numKey];\n throw new FieldAccessError(`Cannot access numeric field \"${numKey}\" on non-object value`, {\n baseValue: rawValue,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: numKey,\n accessPath: chain\n });\n }\n \n // Deprecation warning: dot-notation numeric access on arrays (e.g., arr.1)\n // Recommend bracket access instead (arr[1])\n // Historically this path emitted a deprecation warning for array access\n // like obj.0. Property style access is now supported, so we skip the warning.\n\n // Handle normalized AST objects (with entries or properties)\n if (isObjectAST(rawValue)) {\n if (!hasObjectField(rawValue, numKey)) {\n if (options?.returnUndefinedForMissing) {\n accessedValue = undefined;\n break;\n }\n const chain = [...(options?.parentPath || []), numKey];\n throw new FieldAccessError(`Numeric field \"${numKey}\" not found in object`, {\n baseValue: rawValue,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: numKey,\n accessPath: chain\n });\n }\n accessedValue = getObjectField(rawValue, numKey);\n break;\n }\n \n // Handle regular objects\n if (!(numKey in rawValue)) {\n if (options?.returnUndefinedForMissing) {\n accessedValue = undefined;\n break;\n }\n const chain = [...(options?.parentPath || []), numKey];\n throw new FieldAccessError(`Numeric field \"${numKey}\" not found in object`, {\n baseValue: rawValue,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: numKey,\n accessPath: chain\n });\n }\n \n accessedValue = rawValue[numKey];\n break;\n }\n \n case 'arrayIndex': {\n // Handle array index access (arr[0])\n const index = Number(fieldValue);\n \n // Handle normalized AST arrays\n if (rawValue && typeof rawValue === 'object' && rawValue.type === 'array' && rawValue.items) {\n const items = rawValue.items;\n if (index < 0 || index >= items.length) {\n const chain = [...(options?.parentPath || []), String(index)];\n throw new FieldAccessError(`Array index ${index} out of bounds (array length: ${items.length})`, {\n baseValue: rawValue,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: index,\n accessPath: chain,\n availableKeys: Array.from({ length: items.length }, (_, i) => String(i))\n });\n }\n accessedValue = items[index];\n break;\n }\n \n // Handle regular arrays\n // CRITICAL: rawValue might itself be a StructuredValue (nested wrapping)\n // We need to unwrap it before array operations\n const arrayData = isStructuredValue(rawValue) ? asData(rawValue) : rawValue;\n\n if (!Array.isArray(arrayData)) {\n // Try object access with numeric key as fallback\n const numKey = String(fieldValue);\n if (typeof arrayData === 'object' && arrayData !== null) {\n // Handle normalized AST objects (with entries or properties)\n if (isObjectAST(arrayData)) {\n if (hasObjectField(arrayData, numKey)) {\n accessedValue = getObjectField(arrayData, numKey);\n break;\n }\n } else if (numKey in arrayData) {\n accessedValue = arrayData[numKey];\n break;\n }\n }\n {\n const chain = [...(options?.parentPath || []), String(index)];\n const msg = `Cannot access index ${index} on non-array value (${typeof arrayData})`;\n throw new FieldAccessError(msg, {\n baseValue: arrayData,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: index\n });\n }\n }\n\n if (index < 0 || index >= arrayData.length) {\n const chain = [...(options?.parentPath || []), String(index)];\n const msg = `Array index ${index} out of bounds (length: ${arrayData.length})`;\n throw new FieldAccessError(msg, {\n baseValue: arrayData,\n fieldAccessChain: [],\n failedAtIndex: Math.max(0, chain.length - 1),\n failedKey: index\n });\n }\n\n accessedValue = arrayData[index];\n break;\n }\n \n case 'arraySlice':\n case 'arrayFilter': {\n // Handle array operations (slice and filter)\n const arrayOps = new ArrayOperationsHandler();\n \n // Use the full value (including Variable wrapper if present) for array operations\n // This allows the handler to properly extract and preserve metadata\n const env = options?.env;\n if (!env && field.type === 'arrayFilter') {\n throw new FieldAccessError('Environment required for array filter operations', {\n baseValue: value,\n fieldAccessChain: options?.parentPath || [],\n failedAtIndex: options?.parentPath ? options.parentPath.length : 0,\n failedKey: 'arrayFilter'\n });\n }\n \n accessedValue = await arrayOps.handle(value, field, env!);\n break;\n }\n\n case 'variableIndex': {\n const env = options?.env;\n if (!env) {\n throw new FieldAccessError('Environment required for variable index resolution', {\n baseValue: value,\n fieldAccessChain: options?.parentPath || [],\n failedAtIndex: options?.parentPath ? options.parentPath.length : 0,\n failedKey: field.value\n });\n }\n\n const { evaluateDataValue } = await import('../eval/data-value-evaluator');\n // Build a VariableReference node when only an identifier string is provided\n const indexNode =\n typeof field.value === 'object'\n ? (field.value as any)\n : {\n type: 'VariableReference',\n valueType: 'varIdentifier',\n identifier: String(field.value)\n };\n\n const indexValue = await evaluateDataValue(indexNode as any, env);\n const resolvedField = { type: 'bracketAccess' as const, value: indexValue };\n return accessField(value, resolvedField, options);\n }\n \n default:\n throw new FieldAccessError(`Unknown field access type: ${(field as any).type}`, {\n baseValue: value,\n fieldAccessChain: options?.parentPath || [],\n failedAtIndex: options?.parentPath ? options.parentPath.length : 0,\n failedKey: String((field as any).type || 'unknown')\n });\n }\n\n const provenanceSource = parentVariable ?? structuredWrapper ?? value;\n if (provenanceSource) {\n inheritExpressionProvenance(accessedValue, provenanceSource);\n }\n \n // Check if we need to return context-preserving result\n if (options?.preserveContext) {\n const accessPath = [...(options.parentPath || []), fieldName];\n const resultIsVariable = isVariable(accessedValue);\n \n return {\n value: accessedValue,\n parentVariable,\n accessPath,\n isVariable: resultIsVariable\n };\n }\n \n // Return raw value for backward compatibility\n return accessedValue;\n}\n\n/**\n * Access multiple fields in sequence, preserving context\n */\nexport async function accessFields(\n value: any,\n fields: FieldAccessNode[],\n options?: FieldAccessOptions\n): Promise<any | FieldAccessResult> {\n let current = value;\n let path = options?.parentPath || [];\n let parentVar = isVariable(value) ? value : undefined;\n \n const shouldPreserveContext = options?.preserveContext !== false;\n \n for (const field of fields) {\n const result = await accessField(current, field, {\n preserveContext: shouldPreserveContext,\n parentPath: path,\n returnUndefinedForMissing: options?.returnUndefinedForMissing,\n env: options?.env,\n sourceLocation: options?.sourceLocation\n });\n \n if (shouldPreserveContext) {\n // Update tracking variables\n current = (result as FieldAccessResult).value;\n path = (result as FieldAccessResult).accessPath;\n \n // Update parent variable if we accessed through a Variable\n if ((result as FieldAccessResult).isVariable && isVariable((result as FieldAccessResult).value)) {\n parentVar = (result as FieldAccessResult).value;\n }\n } else {\n // Simple mode - just get the value\n current = result;\n }\n }\n \n if (shouldPreserveContext) {\n return {\n value: current,\n parentVariable: parentVar,\n accessPath: path,\n isVariable: isVariable(current)\n };\n }\n\n return current;\n}\n\n/**\n * Create a Variable wrapper for field access results when needed\n */\nexport function createFieldAccessVariable(\n result: FieldAccessResult,\n source: any\n): Variable {\n // If the result is already a Variable, return it\n if (result.isVariable && isVariable(result.value)) {\n return result.value;\n }\n const internalSource = source ?? result.parentVariable?.source;\n // Create a computed Variable to preserve context\n return {\n type: 'computed',\n name: result.accessPath.join('.'),\n value: result.value,\n internal: {\n source: internalSource,\n parentVariable: result.parentVariable,\n accessPath: result.accessPath,\n fieldAccess: true\n }\n } as Variable;\n}\n"]}