/** * Safe Expression Evaluator — substitui `new Function(...)` para avaliar * condições de grafo (`GraphNode.condition`) e validators de benchmark * (`BenchmarkValidator.check`). * * Esses dois pontos avaliam expressões que podem vir de dados carregados do * disco (ex.: `.agents/benchmarks/*.json` de terceiros via BenchmarkRegistry), * então `new Function`/`eval` equivalem a execução de código arbitrário sobre * conteúdo não confiável. Este avaliador interpreta um subconjunto pequeno e * fixo de JS (o mesmo usado em src/runtime/benchmarks/definitions.ts) via um * parser próprio — nunca gera nem executa código JS dinâmico. * * Gramática suportada: * expr := or * or := and ('||' and)* * and := equality ('&&' equality)* * equality := relational (('===' | '!==' | '==' | '!=') relational)* * relational:= unary (('<=' | '>=' | '<' | '>') unary)* * unary := '!' unary | postfix * postfix := primary ('.' IDENT ('(' args ')')?)* * primary := NUMBER | STRING | 'true' | 'false' | IDENT | '(' expr ')' * * Métodos permitidos em strings: includes, startsWith, endsWith, toLowerCase, * toUpperCase, trim. Propriedade permitida em strings/arrays: length. Acesso * a membros de objetos comuns (dados de estado) é permitido; `__proto__`, * `constructor` e `prototype` são sempre bloqueados. */ /** * Avalia uma expressão restrita contra um contexto de variáveis. * Nunca gera nem executa código JS — apenas interpreta o AST. */ export declare function safeEvaluate(expr: string, context: Record): unknown; //# sourceMappingURL=safe-eval.d.ts.map