UNPKG

mlld

Version:

mlld: llm scripting language

1 lines 86.2 kB
{"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"]}