getsentry / getsentry/sentry-javascript
AI integration deep proxies return new function references on every property access
- 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
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