getsentry / getsentry/sentry-javascript

AI integration deep proxies return new function references on every property access

Aberta
#22,355 5 comentários 2 reações 0 responsáveis Ver no GitHub
agents javascript Task Tech Debt Type: Improvement
Linguagem predominante
TypeScript
Estrelas
8.7k
Forks
1.8k
Merge médio
1d 18h
PRs com merge (30d)
541

Descrição

The `get` trap in AI integration deep proxies always returns a different value instead of memoizing bound/instrumented methods.

For example, `console.log(ai.run === ai.run)` prints `false` because each access creates a new function via `instrumentMethod(...)` or `value.bind(obj)`.

This pattern exists across multiple AI integrations:

- `packages/core/src/tracing/openai/index.ts` (`createDeepProxy`)
- `packages/core/src/tracing/anthropic-ai/index.ts` (`createDeepProxy`)
- `packages/core/src/tracing/google-genai/index.ts` (`createDeepProxy`)

Suggested fix: keep a `Map` in the closure to store bound/instrumented methods, rather than creating a new value on every `get`.

> Originally posted by @isaacs in https://github.com/getsentry/sentry-javascript/pull/22119#discussion_r3581015061

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Comece em createDeepProxy em packages/core/src/tracing/openai/index.ts, packages/core/src/tracing/anthropic-ai/index.ts e packages/core/src/tracing/google-genai/index.ts. Rastreie o get trap e os caminhos de instrumentMethod ou bind e, em seguida, verifique se acessos repetidos ao mesmo método retornam a mesma referência, preservando o comportamento de instrumentação.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
typescript
Domínio
observability
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Pouca atividade
Clareza
Razoavelmente clara
Facilidade para iniciantes
68/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.