From 838cfc7d349f754bae01c63aabc10bee3b5bb5e4 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Mon, 5 Feb 2024 18:36:37 +0100 Subject: [PATCH 01/18] WIP --- vscode/src/completions/logger.ts | 5 ++++- .../src/services/open-telemetry/OpenTelemetryService.node.ts | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/vscode/src/completions/logger.ts b/vscode/src/completions/logger.ts index a71c7ccb00..c2ac5d7dd7 100644 --- a/vscode/src/completions/logger.ts +++ b/vscode/src/completions/logger.ts @@ -6,7 +6,7 @@ import { isNetworkError, type BillingCategory, type BillingProduct } from '@sour import type { KnownString, TelemetryEventParameters } from '@sourcegraph/telemetry' import { getConfiguration } from '../configuration' -import { captureException, shouldErrorBeReported } from '../services/sentry/sentry' +import { captureException, getActiveSpan, shouldErrorBeReported } from '../services/sentry/sentry' import { getExtensionDetails, logPrefix, telemetryService } from '../services/telemetry' import { splitSafeMetadata, telemetryRecorder } from '../services/telemetry-v2' import type { CompletionIntent } from '../tree-sitter/query-sdk' @@ -19,6 +19,7 @@ import * as statistics from './statistics' import type { InlineCompletionItemWithAnalytics } from './text-processing/process-inline-completions' import { lines } from './text-processing/utils' import type { InlineCompletionItem } from './types' +import { trace } from '@opentelemetry/api' // A completion ID is a unique identifier for a specific completion text displayed at a specific // point in the document. A single completion can be suggested multiple times. @@ -432,6 +433,8 @@ export function create( id: null, } + trace.getActiveSpan()?.setAttributes(inputParams as any) + activeSuggestionRequests.set(id, { id, params, diff --git a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts index 1ae4ea78c4..af41f59626 100644 --- a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts +++ b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts @@ -3,7 +3,7 @@ import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http' import { HttpInstrumentation } from '@opentelemetry/instrumentation-http' import { Resource } from '@opentelemetry/resources' import { NodeSDK } from '@opentelemetry/sdk-node' -import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' +import { BatchSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base' import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' import { From ec04cfadefe1302b97d1a27306e0132582e2ca0b Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Tue, 6 Feb 2024 18:19:35 +0100 Subject: [PATCH 02/18] FINALLY some progress --- .../src/sourcegraph-api/graphql/client.ts | 20 +- lib/shared/src/tracing/index.ts | 26 +- pnpm-lock.yaml | 1302 ++++++++++++++++- vscode/package.json | 49 +- .../inline-completion-item-provider.ts | 16 +- vscode/src/completions/logger.ts | 2 +- .../suggested-autocomplete-items-cache.ts | 15 +- .../OpenTelemetryService.node.ts | 13 +- 8 files changed, 1358 insertions(+), 85 deletions(-) diff --git a/lib/shared/src/sourcegraph-api/graphql/client.ts b/lib/shared/src/sourcegraph-api/graphql/client.ts index 045162b8e2..da6fc376a8 100644 --- a/lib/shared/src/sourcegraph-api/graphql/client.ts +++ b/lib/shared/src/sourcegraph-api/graphql/client.ts @@ -769,7 +769,7 @@ export class SourcegraphGraphQLAPIClient { const queryName = query.match(QUERY_TO_NAME_REGEXP)?.[1] const url = buildGraphQLUrl({ request: query, baseUrl: this.config.serverEndpoint }) - return wrapInActiveSpan(`graphql.fetch${queryName ? `.${queryName}` : ''}`, () => + return ( fetch(url, { method: 'POST', body: JSON.stringify({ query, variables }), @@ -800,16 +800,14 @@ export class SourcegraphGraphQLAPIClient { const queryName = query.match(QUERY_TO_NAME_REGEXP)?.[1] - return wrapInActiveSpan(`graphql.dotcom.fetch${queryName ? `.${queryName}` : ''}`, () => - fetch(url, { - method: 'POST', - body: JSON.stringify({ query, variables }), - headers, - }) - .then(verifyResponseCode) - .then(response => response.json() as T) - .catch(error => new Error(`error fetching Sourcegraph GraphQL API: ${error} (${url})`)) - ) + return fetch(url, { + method: 'POST', + body: JSON.stringify({ query, variables }), + headers, + }) + .then(verifyResponseCode) + .then(response => response.json() as T) + .catch(error => new Error(`error fetching Sourcegraph GraphQL API: ${error} (${url})`)) } // make an anonymous request to the Testing API diff --git a/lib/shared/src/tracing/index.ts b/lib/shared/src/tracing/index.ts index c61ad0d9ca..13aa08459d 100644 --- a/lib/shared/src/tracing/index.ts +++ b/lib/shared/src/tracing/index.ts @@ -1,4 +1,10 @@ -import opentelemetry, { SpanStatusCode, context, propagation, type Exception } from '@opentelemetry/api' +import opentelemetry, { + SpanStatusCode, + context, + propagation, + type Exception, + Span, +} from '@opentelemetry/api' const INSTRUMENTATION_SCOPE_NAME = 'cody' const INSTRUMENTATION_SCOPE_VERSION = '0.1' @@ -17,23 +23,31 @@ export function getActiveTraceAndSpanId(): { traceId: string; spanId: string } | return undefined } -export function wrapInActiveSpan(name: string, fn: () => R): R { +export function wrapInActiveSpan(name: string, fn: (span: Span) => R): R { + let isSync = true return tracer.startActiveSpan(name, (span): R => { + const start = performance.now() const handleSuccess = (response: R): R => { + console.log('SUCCESS', name, performance.now() - start) span.setStatus({ code: SpanStatusCode.OK }) + span.end() return response } const catchError = (error: unknown): never => { + console.log('ERROR', name, performance.now() - start) span.recordException(error as Exception) span.setStatus({ code: SpanStatusCode.ERROR }) + span.end() throw error } try { - const response = fn() + const response = fn(span) - if (response instanceof Promise) { + if (typeof response === 'object' && response !== null && 'then' in response) { + isSync = false + // @ts-ignore Thenable, duh! return response.then(handleSuccess, catchError) as R } @@ -41,7 +55,9 @@ export function wrapInActiveSpan(name: string, fn: () => R): R { } catch (error) { return catchError(error) } finally { - span.end() + if (isSync) { + span.end() + } } }) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e76fcbc44..24ca99e08d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -239,6 +239,9 @@ importers: '@opentelemetry/api': specifier: ^1.7.0 version: 1.7.0 + '@opentelemetry/auto-instrumentations-node': + specifier: ^0.41.1 + version: 0.41.1(@opentelemetry/api@1.7.0) '@opentelemetry/core': specifier: ^1.18.1 version: 1.18.1(@opentelemetry/api@1.7.0) @@ -3750,6 +3753,69 @@ packages: protobufjs: 7.2.4 yargs: 17.7.2 + /@hapi/b64@5.0.0: + resolution: {integrity: sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: false + + /@hapi/boom@9.1.4: + resolution: {integrity: sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: false + + /@hapi/bourne@2.1.0: + resolution: {integrity: sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==} + dev: false + + /@hapi/cryptiles@5.1.0: + resolution: {integrity: sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA==} + engines: {node: '>=12.0.0'} + dependencies: + '@hapi/boom': 9.1.4 + dev: false + + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + dev: false + + /@hapi/iron@6.0.0: + resolution: {integrity: sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw==} + dependencies: + '@hapi/b64': 5.0.0 + '@hapi/boom': 9.1.4 + '@hapi/bourne': 2.1.0 + '@hapi/cryptiles': 5.1.0 + '@hapi/hoek': 9.3.0 + dev: false + + /@hapi/podium@4.1.3: + resolution: {integrity: sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/teamwork': 5.1.1 + '@hapi/validate': 1.1.3 + dev: false + + /@hapi/teamwork@5.1.1: + resolution: {integrity: sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg==} + engines: {node: '>=12.0.0'} + dev: false + + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: false + + /@hapi/validate@1.1.3: + resolution: {integrity: sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + dev: false + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -4086,10 +4152,73 @@ packages: '@opentelemetry/api': 1.7.0 dev: false + /@opentelemetry/api-logs@0.48.0: + resolution: {integrity: sha512-1/aMiU4Eqo3Zzpfwu51uXssp5pzvHFObk8S9pKAiXb1ne8pvg1qxBQitYL1XUiAMEXFzgjaidYG2V6624DRhhw==} + engines: {node: '>=14'} + dependencies: + '@opentelemetry/api': 1.7.0 + dev: false + /@opentelemetry/api@1.7.0: resolution: {integrity: sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==} engines: {node: '>=8.0.0'} + /@opentelemetry/auto-instrumentations-node@0.41.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-gQG0mHlPVBQveuemqNYkrL4IB3T6v2e5sMiDI6FQzFWeLzzFrC04R4fY6AE1YmkhOyteCDpHL/U6CULP2mkt8w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.4.1 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-amqplib': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-aws-lambda': 0.38.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-aws-sdk': 0.38.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-bunyan': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-cassandra-driver': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-connect': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-cucumber': 0.3.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-dataloader': 0.6.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-dns': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-express': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-fastify': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-fs': 0.9.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-generic-pool': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-graphql': 0.37.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-grpc': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-hapi': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-http': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-ioredis': 0.37.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-knex': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-koa': 0.37.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-memcached': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-mongodb': 0.39.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-mongoose': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-mysql': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-mysql2': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-nestjs-core': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-net': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-pg': 0.38.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-pino': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-redis': 0.36.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-redis-4': 0.36.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-restify': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-router': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-socket.io': 0.36.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-tedious': 0.7.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-winston': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resource-detector-alibaba-cloud': 0.28.6(@opentelemetry/api@1.7.0) + '@opentelemetry/resource-detector-aws': 1.3.6(@opentelemetry/api@1.7.0) + '@opentelemetry/resource-detector-container': 0.3.6(@opentelemetry/api@1.7.0) + '@opentelemetry/resource-detector-gcp': 0.29.6(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-node': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /@opentelemetry/context-async-hooks@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-HHfJR32NH2x0b69CACCwH8m1dpNALoCTtpgmIWMNkeMGNUeKT48d4AX4xsF4uIRuUoRTbTgtSBRvS+cF97qwCQ==} engines: {node: '>=14'} @@ -4099,6 +4228,15 @@ packages: '@opentelemetry/api': 1.7.0 dev: false + /@opentelemetry/context-async-hooks@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-t0iulGPiMjG/NrSjinPQoIf8ST/o9V0dGOJthfrFporJlNdlKIQPfC7lkrV+5s2dyBThfmSbJlp/4hO1eOcDXA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + dev: false + /@opentelemetry/core@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-kvnUqezHMhsQvdsnhnqTNfAJs3ox/isB0SVrM1dhVFw7SsB7TstuVa6fgWnN2GdPyilIFLUvvbTZoVRmx6eiRg==} engines: {node: '>=14'} @@ -4109,6 +4247,16 @@ packages: '@opentelemetry/semantic-conventions': 1.18.1 dev: false + /@opentelemetry/core@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-KP+OIweb3wYoP7qTYL/j5IpOlu52uxBv5M4+QhSmmUfLyTgu1OIS71msK3chFo1D6Y61BIH3wMiMYRCxJCQctA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/semantic-conventions': 1.21.0 + dev: false + /@opentelemetry/exporter-trace-otlp-grpc@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-c/Wrn6LUqPiRgKhvMydau6kPz4ih6b/uwospiavjXju98ZfVv+KjaIF13cblW+4cQ6ZR3lm7t66umQfXrGBhPQ==} engines: {node: '>=14'} @@ -4124,6 +4272,21 @@ packages: '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) dev: false + /@opentelemetry/exporter-trace-otlp-grpc@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-+qRQXUbdRW6aNRT5yWOG3G6My1VxxKeqgUyLkkdIjkT20lvymjiN2RpBfGMtAf/oqnuRknf9snFl9VSIO2gniw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@grpc/grpc-js': 1.8.20 + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + /@opentelemetry/exporter-trace-otlp-http@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-a6CGqSG66n5R1mghzLMzyzn3iGap1b0v+0PjKFjfYuwLtpHQBxh2PHxItu+m2mXSwnM4R0GJlk9oUW5sQkCE0w==} engines: {node: '>=14'} @@ -4138,6 +4301,20 @@ packages: '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) dev: false + /@opentelemetry/exporter-trace-otlp-http@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-QEZKbfWqXrbKVpr2PHd4KyKI0XVOhUYC+p2RPV8s+2K5QzZBE3+F9WlxxrXDfkrvGmpQAZytBoHQQYA3AGOtpw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + /@opentelemetry/exporter-trace-otlp-proto@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-8QI6QARxNP4y9RUpuQxXjw2HyRNyeuD9CWEhS5ON44Mt+XP7YbOZR3GLx2Ml2JZ8uzB5dd2EGlMgaMuZe36D5Q==} engines: {node: '>=14'} @@ -4153,6 +4330,21 @@ packages: '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) dev: false + /@opentelemetry/exporter-trace-otlp-proto@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-hVXr/8DYlAKAzQYMsCf3ZsGweS6NTK3IHIEqmLokJZYcvJQBEEazeAdISfrL/utWnapg1Qnpw8u+W6SpxNzmTw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-proto-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + /@opentelemetry/exporter-zipkin@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-RmoWVFXFhvIh3q4szUe8I+/vxuMR0HNsOm39zNxnWJcK7JDwnPra9cLY/M78u6bTgB6Fte8GKgU128vvDzz0Iw==} engines: {node: '>=14'} @@ -4166,6 +4358,240 @@ packages: '@opentelemetry/semantic-conventions': 1.18.1 dev: false + /@opentelemetry/exporter-zipkin@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-J0ejrOx52s1PqvjNalIHvY/4v9ZxR2r7XS7WZbwK3qpVYZlGVq5V1+iCNweqsKnb/miUt/4TFvJBc9f5Q/kGcA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + dev: false + + /@opentelemetry/instrumentation-amqplib@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-lVGRkyGnjFJv9O8oO/+uT40nrNj4UO+UN0k8708guy/toVgxsVpv4PtdWJTjbtu89UDk9gUxq62jpHxqrVaNnw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-aws-lambda@0.38.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-MIPvM8S4LqGKE+IAnYVCRUnEjaWbPsbqL4p2BnGcox08e6+JQe+0d16DI0cKVSFZOzV5T/or3ewQ/bB0lPm8yg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/propagator-aws-xray': 1.3.1(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + '@types/aws-lambda': 8.10.122 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-aws-sdk@0.38.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-/Tupb4UfVVkmcopq2H2nr2D/pHLF0riVw2biQQUJ/jGIkfrOgUMMKbShi2RQE4Zy8NFv3xaDn4/pNxzodLBy3w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/propagation-utils': 0.30.6(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-bunyan@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-bQ8OzV7nVTA+oGiTzLjUmRFAbnXi0U/Z4VJCpj+1DRsaAaMT17eRpAOh22LQR0JBnv2vBm8CvIQl4CcAnsB46g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.48.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@types/bunyan': 1.8.9 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-cassandra-driver@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-NlJkEiP37/WQvtSyYe4zxaBcaoweO/2+UtDssldk9NFmFutLHyMT/P5q5fe8i73ylmkPOAZnN8P48oHOhZHM1g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-connect@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-EAMmUC2/KfeZl4qNgUsiVqT5Jti0jDl4GHi4TpDg41VBEJkRX/0+JcPBWgdFUgEfeiZr0GPVQud4i8jAwJ+ORw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + '@types/connect': 3.4.36 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-cucumber@0.3.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-nM9BL0t2Nxwbb41MXxNXTDL0zq7FXhOX9F3OiAqYUJHqb7BHyzV9KoQ+Ao1BjqJR91hUm1OFNgHAk3y8uiuq4w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-dataloader@0.6.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-jkPdn83WV/TcnhQ5bOIoYcJGvMxXyYlCzbqfuB6HsMqf3CqpdgBQYlMuKi6qIfD4QWYt2R992yglNxPLuJ7xeg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-dns@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-QDJadJOQg9CLqMC79r4T5ugN4C4lb6eJYLmHgnLg3fh1JUGfyjQHtD3T7lH0P8251Mnt5m8zjDDbPKcqK2aGcw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-express@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-ZmSB4WMd88sSecOL7DlghzdBl56/8ymb02n+xEJ/6zUgONuw/1uoTh1TAaNPKfEWdNLoLKXQm+Gd2zBrUVOX0w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-fastify@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-sl3q9Mt+yM6GlZJKhfLUIRrVEYqfmI0hqYLha5OFG5rLrgnZCCZVy8ra4+Pa40ecH1409cvwwBPf7k9AHEQBTw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-fs@0.9.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Xp31lb2Sj50ppsJ393650HxSi5IJIgddXxrUeVljmsabdmECPUj0YAt/Wwb1oIHFn04iL9Tq4VkF/otlLaI9ww==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-generic-pool@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-QMSSOfIqMJhXqFryLVbAMsgRktNHdhMEpsOgEiHurLfvAJhyEOBcTTUuo6Laqt50IIzIm3YuHL9ZtEl9fve2ag==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-graphql@0.37.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-WL5Qn1aRudJDxVN0Ao73/yzXBGBJAH1Fd2tteuGXku/Qw9hYQ936CgoO66GWmSiq2lyjsojAk1t5f+HF9j3NXw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-grpc@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-MmJHkbqaulqfECjotRtco9AXOq+D1HLq53wI7UFeE8bl8kISP9iMkt+A7PrtPFpRGCglwFvSa0djId6EWsP0DQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-hapi@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-qUENVxwCYbRbJ8HBY54ZL1Z9q1guCEurW6tCFFJJKQFu/MKEw7GSFImy5DR2Mp8b5ggZO36lYFcx0QUxfy4GJg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + '@types/hapi__hapi': 20.0.13 + transitivePeerDependencies: + - supports-color + dev: false + /@opentelemetry/instrumentation-http@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-ph7kv38Lipg/ggvoNJrwc3RCceLnTkVZwRbE5iu6w7fGsMjjc9jwlSmaOXKxUJjIimil2hL1qBm8xg2lmOVwxg==} engines: {node: '>=14'} @@ -4181,90 +4607,539 @@ packages: - supports-color dev: false - /@opentelemetry/instrumentation@0.45.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-V1Cr0g8hSg35lpW3G/GYVZurrhHrQZJdmP68WyJ83f1FDn3iru+/Vnlto9kiOSm7PHhW+pZGdb9Fbv+mkQ31CA==} + /@opentelemetry/instrumentation-http@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-uXqOsLhW9WC3ZlGm6+PSX0xjSDTCfy4CMjfYj6TPWusOO8dtdx040trOriF24y+sZmS3M+5UQc6/3/ZxBJh4Mw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-ioredis@0.37.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-xBPfu03IIG8x1pmt1Dx+XrBO4ZB4UjEcrouGbp6eV3dLQ7eJPYZgfNXmsqkpsxgNQuVCi2a3WEAwZ5Wl2hk7Vw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/redis-common': 0.36.1 + '@opentelemetry/semantic-conventions': 1.18.1 + '@types/ioredis4': /@types/ioredis@4.28.10 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-knex@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-7L3Q8Yy5vY4W4zpRrjKEc0OpVPYyERtDz5dAumKjkJsEVPANr7E8Cc+No6VjZGeN+HgFFwEo+jcQCTWJzdxvRw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-koa@0.37.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-EfuGv1RJCSZh77dDc3PtvZXGwcsTufn9tU6T9VOTFcxovpyJ6w0og73eD0D02syR8R+kzv6rg1TeS8+lj7pyrQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + '@types/koa': 2.14.0 + '@types/koa__router': 12.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-lru-memoizer@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-m1kXrc11XNj7cC6sfcsYqd+kuCcN2wI9LXpB2l2BZCogqxHCgjuVoiXvT6K9LfO4tLefcvhoK0N8XuVJ8xyyOw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-memcached@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-TdGT5ytt8o7FTIsQvx010ykYbqu+IfGoOKA+IXLHdX1+l7vFWyv3ZOzQbRDmA4rxujJAAPf/n4/D7QECyedE/g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + '@types/memcached': 2.2.10 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mongodb@0.39.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-m9dMj39pcCshzlfCEn2lGrlNo7eV5fb9pGBnPyl/Am9Crh7Or8vOqvByCNd26Dgf5J978zTdLGF+6tM8j1WOew==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-metrics': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mongoose@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-gReBMWD2Oa/wBGRWyg6B2dbPHhgkpOqDio31gE3DbC4JaqCsMByyeix75rZSzZ71RQmVh3d4jRLsqUtNVBzcyg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mysql2@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-DI9NXYJBbQ72rjz1KCKerQFQE+Z4xRDoyYek6JpITv5BlhPboA8zKkltxyQLL06Y2RTFYslw1gvg+x9CWlRzJw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + '@opentelemetry/sql-common': 0.40.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mysql@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-QKRHd3aFA2vKOPzIZ9Q3UIxYeNPweB62HGlX2l3shOKrUhrtTg2/BzaKpHQBy2f2nO2mxTF/mOFeVEDeANnhig==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + '@types/mysql': 2.15.22 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-nestjs-core@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-HvbcCVAMZEIFrJ0Si9AfjxOr14KcH5h/lq5zLQ8AjZJpW0WaeO/ox5UgFi3J73Br91WbZHRgbXxMeodNycJJuA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-net@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-x6awrqF0YfEhGGNE2JtEWvB+zEls7mFvLDii54DnWxpQU69+AqKCW/ZwC91EDefOMGSYBckL0uEn6XNOgkTTbw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-pg@0.38.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Q7V/OJ1OZwaWYNOP/E9S6sfS03Z+PNU1SAjdAoXTj5j4u4iJSMSieLRWXFaHwsbefIOMkYvA00EBKF9IgbgbLA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + '@opentelemetry/sql-common': 0.40.0(@opentelemetry/api@1.7.0) + '@types/pg': 8.6.1 + '@types/pg-pool': 2.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-pino@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-gMfJ5Qy793mbaAGnQE3yp1Cb0y4np74rBPu20Oy/v8TTgPQOEV5PyNI0GNGggmZQIJSkdtYa8Ndb3huH3iZE5g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-redis-4@0.36.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-XO0EV2TxUsaRdcp79blyLGG5JWWl7NWVd/XNbU8vY7CuYUfRhWiTXYoM4PI+lwkAnUPvPtyiOzYs9px23GnibA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/redis-common': 0.36.1 + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-redis@0.36.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-rKFylIacEBwLxKFrPvxpVi8hHY9qXfQSybYnYNyF/VxUWMGYDPMpbCnTQkiVR5u+tIhwSvhSDG2YQEq6syHUIQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/redis-common': 0.36.1 + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-restify@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-0ghtxsGJxHEwJfIzxDN3FCbNiTXqwv2jV6ip716jyjWN3f6MuRHm7NPWI/KNvu+IjqDj16KRGZG7nUAEB1ojog==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-router@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-7LsonkdnQi35eF7CWl8394QDgyd811gCawJ6QuS8GbWNIvZ3S2f9j+Zy0fWSmFgO28ruW1pUG51ql8xdXWa8TA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-socket.io@0.36.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-c9Zc6WKxTZtMaOj01kmJGLKabEj805YgTav4l9vgojHrf6MH1fTlw+SGvOKhfPfzmu2QhNORAfqPAB1poDwqEQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-tedious@0.7.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-o/5my8ZOuxACPSzMaXdPnQiMpmOPIJoTj+DRcs4vEJxk+KwlVNucoafSMpWQEyTNNuq2JI87Ru6Di2mp5T20EQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + '@types/tedious': 4.0.14 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-winston@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Ejssv6Uih7ipoNGYQLXd+cKZdEfTfTJ/vzpUSeYiJZ36mVYER1f8fs9Kb7jTKjHD55g2s6cUJj9lifbDFI4EEw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation@0.45.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-V1Cr0g8hSg35lpW3G/GYVZurrhHrQZJdmP68WyJ83f1FDn3iru+/Vnlto9kiOSm7PHhW+pZGdb9Fbv+mkQ31CA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@types/shimmer': 1.0.5 + import-in-the-middle: 1.4.2 + require-in-the-middle: 7.2.0 + semver: 7.5.4 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-sjtZQB5PStIdCw5ovVTDGwnmQC+GGYArJNgIcydrDSqUTdYBnMrN9P4pwQZgS3vTGIp+TU1L8vMXGe51NVmIKQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@types/shimmer': 1.0.5 + import-in-the-middle: 1.7.1 + require-in-the-middle: 7.2.0 + semver: 7.5.4 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/otlp-exporter-base@0.45.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Jvd6x8EwWGKEPWF4tkP4LpTPXiIkkafMNMvMJUfJd5DyNAftL1vAz+48jmi3URL2LMPkGryrvWPz8Tdu917gQw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/otlp-exporter-base@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-T4LJND+Ugl87GUONoyoQzuV9qCn4BFIPOnCH1biYqdGhc2JahjuLqVD9aefwLzGBW638iLAo88Lh68h2F1FLiA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/otlp-grpc-exporter-base@0.45.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-81X4mlzaAFoQCSXCgvYoMFyTy3mBhf8DD3J8bjW6/PH/rGZPJJkyYW0/YzepMrmBZXqlKZpTOU1aJ8sebVvDvw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@grpc/grpc-js': 1.8.20 + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.45.1(@opentelemetry/api@1.7.0) + protobufjs: 7.2.4 + dev: false + + /@opentelemetry/otlp-grpc-exporter-base@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Vdp56RK9OU+Oeoy3YQC/UMOWglKQ9qvgGr49FgF4r8vk5DlcTUgVS0m3KG8pykmRPA+5ZKaDuqwPw5aTvWmHFw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@grpc/grpc-js': 1.8.20 + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + protobufjs: 7.2.4 + dev: false + + /@opentelemetry/otlp-proto-exporter-base@0.45.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-jtDkly6EW8TZHpbPpwJV9YT5PgbtL5B2UU8zcyGDiLT1wkIAYjFJZ1AqWmROIpydu8ohMq0dRwe4u0izNMdHpA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.45.1(@opentelemetry/api@1.7.0) + protobufjs: 7.2.4 + dev: false + + /@opentelemetry/otlp-proto-exporter-base@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-14GSTvPZPfrWsB54fYMGb8v+Uge5xGXyz0r2rf4SzcRnO2hXCPHEuL3yyL50emaKPAY+fj29Dm0bweawe8UA6A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + protobufjs: 7.2.4 + dev: false + + /@opentelemetry/otlp-transformer@0.45.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-FhIHgfC0b0XtoBrS5ISfva939yWffNl47ypXR8I7Ru+dunlySpmf2TLocKHYLHGcWiuoeSNO5O4dZCmSKOtpXw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.45.1 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-logs': 0.45.1(@opentelemetry/api-logs@0.45.1)(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-metrics': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/otlp-transformer@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-yuoS4cUumaTK/hhxW3JUy3wl2U4keMo01cFDrUOmjloAdSSXvv1zyQ920IIH4lymp5Xd21Dj2/jq2LOro56TJg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.48.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-logs': 0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-metrics': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/propagation-utils@0.30.6(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-qvnYee5I/xrBY5XClUlOASIOdoTbnFGNI6+ViKqdoErF2xKmhysXcmxlJNzQFNDK0muTfjvJMZcFyEielARk7g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + dev: false + + /@opentelemetry/propagator-aws-xray@1.3.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/propagator-b3@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-oSTUOsnt31JDx5SoEy27B5jE1/tiPvvE46w7CDKj0R5oZhCCfYH2bbSGa7NOOyDXDNqQDkgqU1DIV/xOd3f8pw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/propagator-b3@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-3ZTobj2VDIOzLsIvvYCdpw6tunxUVElPxDvog9lS49YX4hohHeD84A8u9Ns/6UYUcaN5GSoEf891lzhcBFiOLA==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 - '@types/shimmer': 1.0.5 - import-in-the-middle: 1.4.2 - require-in-the-middle: 7.2.0 - semver: 7.5.4 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) dev: false - /@opentelemetry/otlp-exporter-base@0.45.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Jvd6x8EwWGKEPWF4tkP4LpTPXiIkkafMNMvMJUfJd5DyNAftL1vAz+48jmi3URL2LMPkGryrvWPz8Tdu917gQw==} + /@opentelemetry/propagator-jaeger@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Kh4M1Qewv0Tbmts6D8LgNzx99IjdE18LCmY/utMkgVyU7Bg31Yuj+X6ZyoIRKPcD2EV4rVkuRI16WVMRuGbhWA==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.0.0 + '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) dev: false - /@opentelemetry/otlp-grpc-exporter-base@0.45.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-81X4mlzaAFoQCSXCgvYoMFyTy3mBhf8DD3J8bjW6/PH/rGZPJJkyYW0/YzepMrmBZXqlKZpTOU1aJ8sebVvDvw==} + /@opentelemetry/propagator-jaeger@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-8TQSwXjBmaDx7JkxRD7hdmBmRK2RGRgzHX1ArJfJhIc5trzlVweyorzqQrXOvqVEdEg+zxUMHkL5qbGH/HDTPA==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.0.0 + '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: - '@grpc/grpc-js': 1.8.20 '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.45.1(@opentelemetry/api@1.7.0) - protobufjs: 7.2.4 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) dev: false - /@opentelemetry/otlp-proto-exporter-base@0.45.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-jtDkly6EW8TZHpbPpwJV9YT5PgbtL5B2UU8zcyGDiLT1wkIAYjFJZ1AqWmROIpydu8ohMq0dRwe4u0izNMdHpA==} + /@opentelemetry/redis-common@0.36.1: + resolution: {integrity: sha512-YjfNEr7DK1Ymc5H0bzhmqVvMcCs+PUEUerzrpTFdHfZxj3HpnnjZTIFKx/gxiL/sajQ8dxycjlreoYTVYKBXlw==} + engines: {node: '>=14'} + dev: false + + /@opentelemetry/resource-detector-alibaba-cloud@0.28.6(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-VuJXc+oDQ/SYRHBCQbEshl0WJtEMvgfSkTDBq+WSxj6y9sKe0HCt55Sxeb5nLmBdtCYWMQFniHe2K4GLSjDZVw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.45.1(@opentelemetry/api@1.7.0) - protobufjs: 7.2.4 + '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 dev: false - /@opentelemetry/otlp-transformer@0.45.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-FhIHgfC0b0XtoBrS5ISfva939yWffNl47ypXR8I7Ru+dunlySpmf2TLocKHYLHGcWiuoeSNO5O4dZCmSKOtpXw==} + /@opentelemetry/resource-detector-aws@1.3.6(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-hFJ19yFwChqGCv1uMkXtjZU9BG8GcChe8cRCAkGWg1RZADse5S2ausf3D8pYw1cR3ktJtuAmRrGZniT6TDUPDw==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.8.0' + '@opentelemetry/api': ^1.0.0 dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/api-logs': 0.45.1 '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-logs': 0.45.1(@opentelemetry/api-logs@0.45.1)(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-metrics': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 dev: false - /@opentelemetry/propagator-b3@1.18.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-oSTUOsnt31JDx5SoEy27B5jE1/tiPvvE46w7CDKj0R5oZhCCfYH2bbSGa7NOOyDXDNqQDkgqU1DIV/xOd3f8pw==} + /@opentelemetry/resource-detector-container@0.3.6(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-psxtzQakVuZKFl/ukn+nPW4Ixn+KPHGsWJMYKndmXrsgdFri78X+MHR0wLOO41Zn79sc35DiSk+GdJ24cCylbg==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' + '@opentelemetry/api': ^1.0.0 dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 dev: false - /@opentelemetry/propagator-jaeger@1.18.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Kh4M1Qewv0Tbmts6D8LgNzx99IjdE18LCmY/utMkgVyU7Bg31Yuj+X6ZyoIRKPcD2EV4rVkuRI16WVMRuGbhWA==} + /@opentelemetry/resource-detector-gcp@0.29.6(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-cx03fXPknmiVW0hpWAJr0Nr8xwkwRB8VNWPvNrmP7UzJ8eEztY9lHnVke4ZVFaVGvm/4EFxk2y5hPNggbIezoA==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' + '@opentelemetry/api': ^1.0.0 dependencies: '@opentelemetry/api': 1.7.0 '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + gcp-metadata: 6.1.0 + transitivePeerDependencies: + - encoding + - supports-color dev: false /@opentelemetry/resources@1.18.1(@opentelemetry/api@1.7.0): @@ -4278,6 +5153,17 @@ packages: '@opentelemetry/semantic-conventions': 1.18.1 dev: false + /@opentelemetry/resources@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-1Z86FUxPKL6zWVy2LdhueEGl9AHDJcx+bvHStxomruz6Whd02mE3lNUMjVJ+FGRoktx/xYQcxccYb03DiUP6Yw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + dev: false + /@opentelemetry/sdk-logs@0.45.1(@opentelemetry/api-logs@0.45.1)(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-z0RRgW4LeKEKnhXS4F/HnqB6+7gsy63YK47F4XAJYHs4s1KKg8XnQ2RkbuL31i/a9nXkylttYtvsT50CGr487g==} engines: {node: '>=14'} @@ -4291,6 +5177,19 @@ packages: '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) dev: false + /@opentelemetry/sdk-logs@0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-lRcA5/qkSJuSh4ItWCddhdn/nNbVvnzM+cm9Fg1xpZUeTeozjJDBcHnmeKoOaWRnrGYBdz6UTY6bynZR9aBeAA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.8.0' + '@opentelemetry/api-logs': '>=0.39.1' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.48.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + /@opentelemetry/sdk-metrics@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-TEFgeNFhdULBYiCoHbz31Y4PDsfjjxRp8Wmdp6ybLQZPqMNEb+dRq+XN8Xw3ivIgTaf9gYsomgV5ensX99RuEQ==} engines: {node: '>=14'} @@ -4303,6 +5202,18 @@ packages: lodash.merge: 4.6.2 dev: false + /@opentelemetry/sdk-metrics@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-on1jTzIHc5DyWhRP+xpf+zrgrREXcHBH4EDAfaB5mIG7TWpKxNXooQ1JCylaPsswZUv4wGnVTinr4HrBdGARAQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + lodash.merge: 4.6.2 + dev: false + /@opentelemetry/sdk-node@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-VtYvlz2ydfJLuOUhCnGER69mz2KUYk3/kpbqI1FWlUP+kzTwivMuy7hIPPv6KmuOIMYWmW4lM+WyJACHqNvROw==} engines: {node: '>=14'} @@ -4327,6 +5238,30 @@ packages: - supports-color dev: false + /@opentelemetry/sdk-node@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-3o3GS6t+VLGVFCV5bqfGOcWIgOdkR/UE6Qz7hHksP5PXrVBeYsPqts7cPma5YXweaI3r3h26mydg9PqQIcqksg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.48.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/exporter-trace-otlp-http': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/exporter-trace-otlp-proto': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/exporter-zipkin': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-logs': 0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-metrics': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-node': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + /@opentelemetry/sdk-trace-base@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-tRHfDxN5dO+nop78EWJpzZwHsN1ewrZRVVwo03VJa3JQZxToRDH29/+MB24+yoa+IArerdr7INFJiX/iN4gjqg==} engines: {node: '>=14'} @@ -4339,6 +5274,18 @@ packages: '@opentelemetry/semantic-conventions': 1.18.1 dev: false + /@opentelemetry/sdk-trace-base@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-yrElGX5Fv0umzp8Nxpta/XqU71+jCAyaLk34GmBzNcrW43nqbrqvdPs4gj4MVy/HcTjr6hifCDCYA3rMkajxxA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + dev: false + /@opentelemetry/sdk-trace-node@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-ML0l9TNlfLoplLF1F8lb95NGKgdm6OezDS3Ymqav9sYxMd5bnH2LZVzd4xEF+ov5vpZJOGdWxJMs2nC9no7+xA==} engines: {node: '>=14'} @@ -4354,16 +5301,46 @@ packages: semver: 7.5.4 dev: false + /@opentelemetry/sdk-trace-node@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-1pdm8jnqs+LuJ0Bvx6sNL28EhC8Rv7NYV8rnoXq3GIQo7uOHBDAFSj7makAfbakrla7ecO1FRfI8emnR4WvhYA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/context-async-hooks': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/propagator-b3': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/propagator-jaeger': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + semver: 7.5.4 + dev: false + /@opentelemetry/semantic-conventions@1.18.1: resolution: {integrity: sha512-+NLGHr6VZwcgE/2lw8zDIufOCGnzsA5CbQIMleXZTrgkBd0TanCX+MiDYJ1TOS4KL/Tqk0nFRxawnaYr6pkZkA==} engines: {node: '>=14'} dev: false + /@opentelemetry/semantic-conventions@1.21.0: + resolution: {integrity: sha512-lkC8kZYntxVKr7b8xmjCVUgE0a8xgDakPyDo9uSWavXPyYqLgYYGdEd2j8NxihRyb6UwpX3G/hFUF4/9q2V+/g==} + engines: {node: '>=14'} + dev: false + /@opentelemetry/semantic-conventions@1.3.1: resolution: {integrity: sha512-wU5J8rUoo32oSef/rFpOT1HIjLjAv3qIDHkw1QIhODV3OpAVHi5oVzlouozg9obUmZKtbZ0qUe/m7FP0y0yBzA==} engines: {node: '>=8.12.0'} dev: true + /@opentelemetry/sql-common@0.40.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-vSqRJYUPJVjMFQpYkQS3ruexCPSZJ8esne3LazLwtCPaPRvzZ7WG3tX44RouAn7w4wMp8orKguBqtt+ng2UTnw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.1.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + dev: false + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -4796,6 +5773,20 @@ packages: tslib: 2.1.0 dev: false + /@sideway/address@4.1.5: + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: false + + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + dev: false + + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: false + /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true @@ -5780,6 +6771,16 @@ packages: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true + /@types/accepts@1.3.7: + resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} + dependencies: + '@types/node': 20.4.0 + dev: false + + /@types/aws-lambda@8.10.122: + resolution: {integrity: sha512-vBkIh9AY22kVOCEKo5CJlyCgmSWvasC+SWUxL/x/vOwRobMpI/HG1xp/Ae3AqmSiZeLUbOhW0FCD3ZjqqUxmXw==} + dev: false + /@types/axios@0.14.0: resolution: {integrity: sha512-KqQnQbdYE54D7oa/UmYVMZKq7CO4l8DEENzOKc4aBRwxCXSlJXGz83flFx5L7AWrOQnmuN3kVsRdt+GZPPjiVQ==} deprecated: This is a stub types definition for axios (https://github.com/mzabriskie/axios). axios provides its own type definitions, so you don't need @types/axios installed! @@ -5824,6 +6825,12 @@ packages: '@types/connect': 3.4.32 '@types/node': 20.4.0 + /@types/bunyan@1.8.9: + resolution: {integrity: sha512-ZqS9JGpBxVOvsawzmVt30sP++gSQMTejCkIAQ3VdadOcRE8izTyW66hufvwLeH+YEGP6Js2AW7Gz+RMyvrEbmw==} + dependencies: + '@types/node': 20.4.0 + dev: false + /@types/cheerio@0.22.31: resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==} dependencies: @@ -5835,6 +6842,25 @@ packages: dependencies: '@types/node': 20.4.0 + /@types/connect@3.4.36: + resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} + dependencies: + '@types/node': 20.4.0 + dev: false + + /@types/content-disposition@0.5.8: + resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} + dev: false + + /@types/cookies@0.9.0: + resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==} + dependencies: + '@types/connect': 3.4.32 + '@types/express': 4.17.17 + '@types/keygrip': 1.0.6 + '@types/node': 20.4.0 + dev: false + /@types/crypto-js@4.2.2: resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} dev: true @@ -5924,10 +6950,53 @@ packages: '@types/node': 20.4.0 dev: true + /@types/hapi__catbox@10.2.6: + resolution: {integrity: sha512-qdMHk4fBlwRfnBBDJaoaxb+fU9Ewi2xqkXD3mNjSPl2v/G/8IJbDpVRBuIcF7oXrcE8YebU5M8cCeKh1NXEn0w==} + dev: false + + /@types/hapi__hapi@20.0.13: + resolution: {integrity: sha512-LP4IPfhIO5ZPVOrJo7H8c8Slc0WYTFAUNQX1U0LBPKyXioXhH5H2TawIgxKujIyOhbwoBbpvOsBf6o5+ToJIrQ==} + dependencies: + '@hapi/boom': 9.1.4 + '@hapi/iron': 6.0.0 + '@hapi/podium': 4.1.3 + '@types/hapi__catbox': 10.2.6 + '@types/hapi__mimos': 4.1.4 + '@types/hapi__shot': 4.1.6 + '@types/node': 20.4.0 + joi: 17.12.1 + dev: false + + /@types/hapi__mimos@4.1.4: + resolution: {integrity: sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ==} + dependencies: + '@types/mime-db': 1.43.5 + dev: false + + /@types/hapi__shot@4.1.6: + resolution: {integrity: sha512-h33NBjx2WyOs/9JgcFeFhkxnioYWQAZxOHdmqDuoJ1Qjxpcs+JGvSjEEoDeWfcrF+1n47kKgqph5IpfmPOnzbg==} + dependencies: + '@types/node': 20.4.0 + dev: false + /@types/highlight.js@9.12.4: resolution: {integrity: sha512-t2szdkwmg2JJyuCM20e8kR2X59WCE5Zkl4bzm1u1Oukjm79zpbiAv+QjnwLnuuV0WHEcX2NgUItu0pAMKuOPww==} dev: true + /@types/http-assert@1.5.5: + resolution: {integrity: sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==} + dev: false + + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: false + + /@types/ioredis@4.28.10: + resolution: {integrity: sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==} + dependencies: + '@types/node': 20.4.0 + dev: false + /@types/isomorphic-fetch@0.0.39: resolution: {integrity: sha512-I0gou/ZdA1vMG7t7gMzL7VYu2xAKU78rW9U1l10MI0nn77pEHq3tQqHQ8hMmXdMpBlkxZOorjI4sO594Z3kKJw==} dev: true @@ -5957,6 +7026,35 @@ packages: dependencies: '@types/node': 20.4.0 + /@types/keygrip@1.0.6: + resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} + dev: false + + /@types/koa-compose@3.2.8: + resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} + dependencies: + '@types/koa': 2.14.0 + dev: false + + /@types/koa@2.14.0: + resolution: {integrity: sha512-DTDUyznHGNHAl+wd1n0z1jxNajduyTh8R53xoewuerdBzGo6Ogj6F2299BFtrexJw4NtgjsI5SMPCmV9gZwGXA==} + dependencies: + '@types/accepts': 1.3.7 + '@types/content-disposition': 0.5.8 + '@types/cookies': 0.9.0 + '@types/http-assert': 1.5.5 + '@types/http-errors': 2.0.4 + '@types/keygrip': 1.0.6 + '@types/koa-compose': 3.2.8 + '@types/node': 20.4.0 + dev: false + + /@types/koa__router@12.0.3: + resolution: {integrity: sha512-5YUJVv6NwM1z7m6FuYpKfNLTZ932Z6EF6xy2BbtpJSyn13DKNQEkXVffFVSnJHxvwwWh2SAeumpjAYUELqgjyw==} + dependencies: + '@types/koa': 2.14.0 + dev: false + /@types/linkify-it@3.0.2: resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} dev: true @@ -5987,6 +7085,16 @@ packages: resolution: {integrity: sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==} dev: true + /@types/memcached@2.2.10: + resolution: {integrity: sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==} + dependencies: + '@types/node': 20.4.0 + dev: false + + /@types/mime-db@1.43.5: + resolution: {integrity: sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==} + dev: false + /@types/mime-types@2.1.1: resolution: {integrity: sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==} dev: true @@ -6009,6 +7117,12 @@ packages: resolution: {integrity: sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==} dev: true + /@types/mysql@2.15.22: + resolution: {integrity: sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==} + dependencies: + '@types/node': 20.4.0 + dev: false + /@types/node-fetch@2.6.4: resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} dependencies: @@ -6035,6 +7149,20 @@ packages: resolution: {integrity: sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==} dev: true + /@types/pg-pool@2.0.4: + resolution: {integrity: sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ==} + dependencies: + '@types/pg': 8.6.1 + dev: false + + /@types/pg@8.6.1: + resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} + dependencies: + '@types/node': 20.4.0 + pg-protocol: 1.6.0 + pg-types: 2.2.0 + dev: false + /@types/pretty-hrtime@1.0.1: resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==} dev: true @@ -6116,6 +7244,12 @@ packages: '@types/node': 20.4.0 dev: false + /@types/tedious@4.0.14: + resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} + dependencies: + '@types/node': 20.4.0 + dev: false + /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: true @@ -6847,7 +7981,6 @@ packages: /bignumber.js@9.1.1: resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==} - dev: true /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} @@ -8443,7 +9576,6 @@ packages: /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true /extglob@2.0.4: resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} @@ -8880,6 +10012,19 @@ packages: - supports-color dev: true + /gaxios@6.2.0: + resolution: {integrity: sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ==} + engines: {node: '>=14'} + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.2 + is-stream: 2.0.0 + node-fetch: 2.6.11 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /gcp-metadata@5.3.0: resolution: {integrity: sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==} engines: {node: '>=12'} @@ -8891,6 +10036,17 @@ packages: - supports-color dev: true + /gcp-metadata@6.1.0: + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} + dependencies: + gaxios: 6.2.0 + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -9424,7 +10580,6 @@ packages: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - dev: true /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} @@ -9492,6 +10647,15 @@ packages: module-details-from-path: 1.0.3 dev: false + /import-in-the-middle@1.7.1: + resolution: {integrity: sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==} + dependencies: + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + cjs-module-lexer: 1.2.3 + module-details-from-path: 1.0.3 + dev: false + /import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} @@ -9782,7 +10946,6 @@ packages: /is-stream@2.0.0: resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} engines: {node: '>=8'} - dev: true /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -9975,6 +11138,16 @@ packages: hasBin: true dev: true + /joi@17.12.1: + resolution: {integrity: sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + dev: false + /js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} @@ -10139,7 +11312,6 @@ packages: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} dependencies: bignumber.js: 9.1.1 - dev: true /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -11755,6 +12927,26 @@ packages: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true + /pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + dev: false + + /pg-protocol@1.6.0: + resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} + dev: false + + /pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + dev: false + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -11908,6 +13100,28 @@ packages: source-map-js: 1.0.2 dev: true + /postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + dev: false + + /postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + dependencies: + xtend: 4.0.2 + dev: false + /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} diff --git a/vscode/package.json b/vscode/package.json index 3e2348e2ca..0dddbb0449 100644 --- a/vscode/package.json +++ b/vscode/package.json @@ -38,7 +38,12 @@ "test:unit:tree-sitter-queries": "vitest ./src/tree-sitter/query-tests/*.test.ts", "github-changelog": "ts-node-transpile-only ./scripts/github-changelog.ts" }, - "categories": ["Programming Languages", "Machine Learning", "Snippets", "Education"], + "categories": [ + "Programming Languages", + "Machine Learning", + "Snippets", + "Education" + ], "keywords": [ "ai", "openai", @@ -89,7 +94,11 @@ }, "main": "./dist/extension.node.js", "browser": "./dist/extension.web.js", - "activationEvents": ["onLanguage", "onStartupFinished", "onWebviewPanel:cody.chatPanel"], + "activationEvents": [ + "onLanguage", + "onStartupFinished", + "onWebviewPanel:cody.chatPanel" + ], "contributes": { "walkthroughs": [ { @@ -744,7 +753,12 @@ "cody.useContext": { "order": 99, "type": "string", - "enum": ["embeddings", "keyword", "blended", "none"], + "enum": [ + "embeddings", + "keyword", + "blended", + "none" + ], "default": "blended", "markdownDescription": "Controls which context providers Cody uses for chat, commands and inline edits. Use 'blended' for best results. For debugging other context sources, 'embeddings' will use an embeddings-based index if available. 'keyword' will use a search-based index. 'none' will not use embeddings or search-based indexes." }, @@ -808,7 +822,9 @@ "order": 6, "type": "string", "markdownDescription": "A custom instruction to be included at the start of all chat messages. (E.g., \"Answer all my questions in Spanish.\")", - "examples": ["Answer all my questions in Spanish."] + "examples": [ + "Answer all my questions in Spanish." + ] }, "cody.codeActions.enabled": { "order": 11, @@ -866,7 +882,10 @@ "cody.telemetry.level": { "order": 99, "type": "string", - "enum": ["all", "off"], + "enum": [ + "all", + "off" + ], "enumDescriptions": [ "Sends usage data and errors.", "Disables all extension telemetry." @@ -877,7 +896,13 @@ "cody.autocomplete.advanced.provider": { "type": "string", "default": null, - "enum": [null, "anthropic", "fireworks", "unstable-openai", "unstable-ollama"], + "enum": [ + null, + "anthropic", + "fireworks", + "unstable-openai", + "unstable-ollama" + ], "markdownDescription": "The provider used for code autocomplete. Most providers other than `anthropic` require the `cody.autocomplete.advanced.serverEndpoint` and `cody.autocomplete.advanced.accessToken` settings to also be set. Check the Cody output channel for error messages if autocomplete is not working as expected." }, "cody.autocomplete.advanced.serverEndpoint": { @@ -916,7 +941,10 @@ }, "cody.experimental.foldingRanges": { "type": "string", - "enum": ["lsp", "indentation-based"], + "enum": [ + "lsp", + "indentation-based" + ], "enumDescriptions": [ "Use folding ranges that are enabled by default in VS Code, and are usually powered by LSP", "Use custom implementation of folding ranges that is indentation based. This is the implementation that is used by other Cody clients like the JetBrains plugin" @@ -947,7 +975,11 @@ "cody.autocomplete.experimental.graphContext": { "type": "string", "default": null, - "enum": [null, "bfg", "bfg-mixed"], + "enum": [ + null, + "bfg", + "bfg-mixed" + ], "markdownDescription": "Use the code graph to retrieve context for autocomplete requests." }, "cody.autocomplete.experimental.ollamaOptions": { @@ -1040,6 +1072,7 @@ "dependencies": { "@anthropic-ai/sdk": "^0.4.2", "@opentelemetry/api": "^1.7.0", + "@opentelemetry/auto-instrumentations-node": "^0.41.1", "@opentelemetry/core": "^1.18.1", "@opentelemetry/exporter-trace-otlp-http": "^0.45.1", "@opentelemetry/instrumentation-http": "^0.45.1", diff --git a/vscode/src/completions/inline-completion-item-provider.ts b/vscode/src/completions/inline-completion-item-provider.ts index 71999608df..7d888e190a 100644 --- a/vscode/src/completions/inline-completion-item-provider.ts +++ b/vscode/src/completions/inline-completion-item-provider.ts @@ -191,7 +191,10 @@ export class InlineCompletionItemProvider return null } - return wrapInActiveSpan('autocomplete.provideInlineCompletionItems', async () => { + return wrapInActiveSpan('autocomplete.provideInlineCompletionItems', async span => { + console.log('IDIDIDIDID') + console.log(span.spanContext().traceId) + console.log('ENDNENDNENED') // Update the last request const lastCompletionRequest = this.lastCompletionRequest const completionRequest: CompletionRequest = { @@ -209,10 +212,7 @@ export class InlineCompletionItemProvider // the error banner for autocomplete config turned off throw new Error('AutocompleteConfigTurnedOff') } - } catch (error) { - this.onError(error as Error) - throw error - } + } catch (error) {} const start = performance.now() if (!this.lastCompletionRequestTimestamp) { @@ -406,7 +406,8 @@ export class InlineCompletionItemProvider docContext, position, visibleItems, - context + context, + span ) // Store the log ID for each completion item so that we can later map to the selected @@ -514,13 +515,14 @@ export class InlineCompletionItemProvider * same name, it's prefixed with `unstable_` to avoid a clash when the new API goes GA. */ public unstable_handleDidShowCompletionItem( - completionOrItemId: Pick | CompletionItemID + completionOrItemId: Pick | CompletionItemID ): void { const completion = suggestedAutocompleteItemsCache.get(completionOrItemId) if (!completion) { return } + completion.span?.addEvent('suggested') CompletionLogger.suggested(completion.logId) } diff --git a/vscode/src/completions/logger.ts b/vscode/src/completions/logger.ts index c2ac5d7dd7..167b65fb11 100644 --- a/vscode/src/completions/logger.ts +++ b/vscode/src/completions/logger.ts @@ -6,7 +6,7 @@ import { isNetworkError, type BillingCategory, type BillingProduct } from '@sour import type { KnownString, TelemetryEventParameters } from '@sourcegraph/telemetry' import { getConfiguration } from '../configuration' -import { captureException, getActiveSpan, shouldErrorBeReported } from '../services/sentry/sentry' +import { captureException, shouldErrorBeReported } from '../services/sentry/sentry' import { getExtensionDetails, logPrefix, telemetryService } from '../services/telemetry' import { splitSafeMetadata, telemetryRecorder } from '../services/telemetry-v2' import type { CompletionIntent } from '../tree-sitter/query-sdk' diff --git a/vscode/src/completions/suggested-autocomplete-items-cache.ts b/vscode/src/completions/suggested-autocomplete-items-cache.ts index e6df005906..bd11e564ed 100644 --- a/vscode/src/completions/suggested-autocomplete-items-cache.ts +++ b/vscode/src/completions/suggested-autocomplete-items-cache.ts @@ -6,6 +6,7 @@ import type { DocumentContext } from './get-current-doc-context' import type { CompletionItemID, CompletionLogID } from './logger' import type { RequestParams } from './request-manager' import type { InlineCompletionItemWithAnalytics } from './text-processing/process-inline-completions' +import type { Span } from '@opentelemetry/api' interface AutocompleteItemParams { insertText: string | vscode.SnippetString @@ -15,6 +16,7 @@ interface AutocompleteItemParams { requestParams: RequestParams completionItem: InlineCompletionItemWithAnalytics command?: vscode.Command + span?: Span } export class AutocompleteItem extends vscode.InlineCompletionItem { @@ -52,8 +54,14 @@ export class AutocompleteItem extends vscode.InlineCompletionItem { */ public analyticsItem: InlineCompletionItemWithAnalytics + /** + * Eventual Open Telemetry span associated with the completion request + */ + public span: Span | undefined + constructor(params: AutocompleteItemParams) { - const { insertText, logId, range, trackedRange, requestParams, completionItem, command } = params + const { insertText, logId, range, trackedRange, requestParams, completionItem, command, span } = + params super(insertText, range, command) @@ -62,6 +70,7 @@ export class AutocompleteItem extends vscode.InlineCompletionItem { this.trackedRange = trackedRange this.requestParams = requestParams this.analyticsItem = completionItem + this.span = span } } @@ -103,7 +112,8 @@ export function analyticsItemToAutocompleteItem( docContext: DocumentContext, position: vscode.Position, items: InlineCompletionItemWithAnalytics[], - context: vscode.InlineCompletionContext + context: vscode.InlineCompletionContext, + span: Span ): AutocompleteItem[] { return items.map(item => { const { insertText, range } = item @@ -144,6 +154,7 @@ export function analyticsItemToAutocompleteItem( requestParams, completionItem: item, command, + span, }) command.arguments[0].codyCompletion = autocompleteItem diff --git a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts index af41f59626..c78f9c5088 100644 --- a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts +++ b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts @@ -3,8 +3,9 @@ import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http' import { HttpInstrumentation } from '@opentelemetry/instrumentation-http' import { Resource } from '@opentelemetry/resources' import { NodeSDK } from '@opentelemetry/sdk-node' -import { BatchSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base' +import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' +import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' import { FeatureFlag, @@ -62,13 +63,11 @@ export class OpenTelemetryService { [SemanticResourceAttributes.SERVICE_VERSION]: version, }), instrumentations: [new HttpInstrumentation()], - traceExporter: new OTLPTraceExporter({ - url: traceUrl, - }), + traceExporter: new OTLPTraceExporter({ url: traceUrl }), - ...(process.env.NODE_ENV === 'development' && { - spanProcessor: new BatchSpanProcessor(new ConsoleBatchSpanExporter()), - }), + // ...(process.env.NODE_ENV === 'development' && { + // spanProcessor: new BatchSpanProcessor(new ConsoleBatchSpanExporter()), + // }), }) this.sdk.start() } From f2b29ede73178e08952c20e3541a7d41f4488260 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Wed, 7 Feb 2024 17:22:08 +0100 Subject: [PATCH 03/18] stuff --- lib/shared/src/experimentation/FeatureFlagProvider.ts | 4 ++++ vscode/src/completions/inline-completion-item-provider.ts | 3 +++ vscode/src/completions/providers/fireworks.ts | 4 ++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/shared/src/experimentation/FeatureFlagProvider.ts b/lib/shared/src/experimentation/FeatureFlagProvider.ts index 2369a79de8..1510dac598 100644 --- a/lib/shared/src/experimentation/FeatureFlagProvider.ts +++ b/lib/shared/src/experimentation/FeatureFlagProvider.ts @@ -68,6 +68,10 @@ export class FeatureFlagProvider { return this.featureFlags[endpoint]?.[flagName] } + public getExposedExperiments(endpoint: string = this.apiClient.endpoint): Record { + return this.featureFlags[endpoint] || {} + } + public async evaluateFeatureFlag(flagName: FeatureFlag): Promise { const endpoint = this.apiClient.endpoint if (process.env.BENCHMARK_DISABLE_FEATURE_FLAGS) { diff --git a/vscode/src/completions/inline-completion-item-provider.ts b/vscode/src/completions/inline-completion-item-provider.ts index 7d888e190a..1b47bb9ce3 100644 --- a/vscode/src/completions/inline-completion-item-provider.ts +++ b/vscode/src/completions/inline-completion-item-provider.ts @@ -365,6 +365,8 @@ export class InlineCompletionItemProvider ) } + span.addEvent('computed', { source: result.source }) + const visibleItems = result.items.filter(item => isCompletionVisible( item, @@ -523,6 +525,7 @@ export class InlineCompletionItemProvider } completion.span?.addEvent('suggested') + completion.span?.addEvent('exposed_experiments', featureFlagProvider.getExposedExperiments()) CompletionLogger.suggested(completion.logId) } diff --git a/vscode/src/completions/providers/fireworks.ts b/vscode/src/completions/providers/fireworks.ts index 338b45e1c9..474d6fb0f4 100644 --- a/vscode/src/completions/providers/fireworks.ts +++ b/vscode/src/completions/providers/fireworks.ts @@ -129,8 +129,8 @@ class FireworksProvider extends Provider { this.options.fastPath && config.accessToken && // Require the upstream to be dotcom - this.authStatus.isDotCom && - // The fast path client only supports Node.js style response streams + // this.authStatus.isDotCom && + // The fast path client only suppor ts Node.js style response streams isNode ? dotcomTokenToGatewayToken(config.accessToken) : undefined From 115ee9bfc8856e6a14d24366fd7a7abc804151db Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Wed, 7 Feb 2024 18:09:18 +0100 Subject: [PATCH 04/18] Make this pretty --- .../src/sourcegraph-api/graphql/client.ts | 18 +- lib/shared/src/tracing/index.ts | 17 +- pnpm-lock.yaml | 1324 +---------------- .../inline-completion-item-provider.ts | 9 +- vscode/src/completions/logger.ts | 19 +- 5 files changed, 84 insertions(+), 1303 deletions(-) diff --git a/lib/shared/src/sourcegraph-api/graphql/client.ts b/lib/shared/src/sourcegraph-api/graphql/client.ts index da6fc376a8..2d797795da 100644 --- a/lib/shared/src/sourcegraph-api/graphql/client.ts +++ b/lib/shared/src/sourcegraph-api/graphql/client.ts @@ -800,14 +800,16 @@ export class SourcegraphGraphQLAPIClient { const queryName = query.match(QUERY_TO_NAME_REGEXP)?.[1] - return fetch(url, { - method: 'POST', - body: JSON.stringify({ query, variables }), - headers, - }) - .then(verifyResponseCode) - .then(response => response.json() as T) - .catch(error => new Error(`error fetching Sourcegraph GraphQL API: ${error} (${url})`)) + return wrapInActiveSpan(`graphql.fetch${queryName ? `.${queryName}` : ''}`, () => + fetch(url, { + method: 'POST', + body: JSON.stringify({ query, variables }), + headers, + }) + .then(verifyResponseCode) + .then(response => response.json() as T) + .catch(error => new Error(`error fetching Sourcegraph GraphQL API: ${error} (${url})`)) + ) } // make an anonymous request to the Testing API diff --git a/lib/shared/src/tracing/index.ts b/lib/shared/src/tracing/index.ts index 13aa08459d..133c5bca9f 100644 --- a/lib/shared/src/tracing/index.ts +++ b/lib/shared/src/tracing/index.ts @@ -24,18 +24,14 @@ export function getActiveTraceAndSpanId(): { traceId: string; spanId: string } | } export function wrapInActiveSpan(name: string, fn: (span: Span) => R): R { - let isSync = true return tracer.startActiveSpan(name, (span): R => { - const start = performance.now() const handleSuccess = (response: R): R => { - console.log('SUCCESS', name, performance.now() - start) span.setStatus({ code: SpanStatusCode.OK }) span.end() return response } - const catchError = (error: unknown): never => { - console.log('ERROR', name, performance.now() - start) + const handleError = (error: unknown): never => { span.recordException(error as Exception) span.setStatus({ code: SpanStatusCode.ERROR }) span.end() @@ -46,18 +42,13 @@ export function wrapInActiveSpan(name: string, fn: (span: Span) => R): R { const response = fn(span) if (typeof response === 'object' && response !== null && 'then' in response) { - isSync = false - // @ts-ignore Thenable, duh! - return response.then(handleSuccess, catchError) as R + // @ts-ignore Response seems to be a Thenable + return response.then(handleSuccess, handleError) as R } return handleSuccess(response) } catch (error) { - return catchError(error) - } finally { - if (isSync) { - span.end() - } + return handleError(error) } }) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24ca99e08d..6e76fcbc44 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -239,9 +239,6 @@ importers: '@opentelemetry/api': specifier: ^1.7.0 version: 1.7.0 - '@opentelemetry/auto-instrumentations-node': - specifier: ^0.41.1 - version: 0.41.1(@opentelemetry/api@1.7.0) '@opentelemetry/core': specifier: ^1.18.1 version: 1.18.1(@opentelemetry/api@1.7.0) @@ -3753,69 +3750,6 @@ packages: protobufjs: 7.2.4 yargs: 17.7.2 - /@hapi/b64@5.0.0: - resolution: {integrity: sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@hapi/boom@9.1.4: - resolution: {integrity: sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@hapi/bourne@2.1.0: - resolution: {integrity: sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==} - dev: false - - /@hapi/cryptiles@5.1.0: - resolution: {integrity: sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA==} - engines: {node: '>=12.0.0'} - dependencies: - '@hapi/boom': 9.1.4 - dev: false - - /@hapi/hoek@9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - dev: false - - /@hapi/iron@6.0.0: - resolution: {integrity: sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw==} - dependencies: - '@hapi/b64': 5.0.0 - '@hapi/boom': 9.1.4 - '@hapi/bourne': 2.1.0 - '@hapi/cryptiles': 5.1.0 - '@hapi/hoek': 9.3.0 - dev: false - - /@hapi/podium@4.1.3: - resolution: {integrity: sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g==} - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/teamwork': 5.1.1 - '@hapi/validate': 1.1.3 - dev: false - - /@hapi/teamwork@5.1.1: - resolution: {integrity: sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg==} - engines: {node: '>=12.0.0'} - dev: false - - /@hapi/topo@5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@hapi/validate@1.1.3: - resolution: {integrity: sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA==} - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - dev: false - /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -4152,73 +4086,10 @@ packages: '@opentelemetry/api': 1.7.0 dev: false - /@opentelemetry/api-logs@0.48.0: - resolution: {integrity: sha512-1/aMiU4Eqo3Zzpfwu51uXssp5pzvHFObk8S9pKAiXb1ne8pvg1qxBQitYL1XUiAMEXFzgjaidYG2V6624DRhhw==} - engines: {node: '>=14'} - dependencies: - '@opentelemetry/api': 1.7.0 - dev: false - /@opentelemetry/api@1.7.0: resolution: {integrity: sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==} engines: {node: '>=8.0.0'} - /@opentelemetry/auto-instrumentations-node@0.41.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-gQG0mHlPVBQveuemqNYkrL4IB3T6v2e5sMiDI6FQzFWeLzzFrC04R4fY6AE1YmkhOyteCDpHL/U6CULP2mkt8w==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.4.1 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-amqplib': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-aws-lambda': 0.38.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-aws-sdk': 0.38.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-bunyan': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-cassandra-driver': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-connect': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-cucumber': 0.3.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-dataloader': 0.6.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-dns': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-express': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-fastify': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-fs': 0.9.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-generic-pool': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-graphql': 0.37.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-grpc': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-hapi': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-http': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-ioredis': 0.37.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-knex': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-koa': 0.37.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-lru-memoizer': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-memcached': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-mongodb': 0.39.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-mongoose': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-mysql': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-mysql2': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-nestjs-core': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-net': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-pg': 0.38.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-pino': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-redis': 0.36.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-redis-4': 0.36.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-restify': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-router': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-socket.io': 0.36.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-tedious': 0.7.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-winston': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resource-detector-alibaba-cloud': 0.28.6(@opentelemetry/api@1.7.0) - '@opentelemetry/resource-detector-aws': 1.3.6(@opentelemetry/api@1.7.0) - '@opentelemetry/resource-detector-container': 0.3.6(@opentelemetry/api@1.7.0) - '@opentelemetry/resource-detector-gcp': 0.29.6(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-node': 0.48.0(@opentelemetry/api@1.7.0) - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /@opentelemetry/context-async-hooks@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-HHfJR32NH2x0b69CACCwH8m1dpNALoCTtpgmIWMNkeMGNUeKT48d4AX4xsF4uIRuUoRTbTgtSBRvS+cF97qwCQ==} engines: {node: '>=14'} @@ -4228,15 +4099,6 @@ packages: '@opentelemetry/api': 1.7.0 dev: false - /@opentelemetry/context-async-hooks@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-t0iulGPiMjG/NrSjinPQoIf8ST/o9V0dGOJthfrFporJlNdlKIQPfC7lkrV+5s2dyBThfmSbJlp/4hO1eOcDXA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - dev: false - /@opentelemetry/core@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-kvnUqezHMhsQvdsnhnqTNfAJs3ox/isB0SVrM1dhVFw7SsB7TstuVa6fgWnN2GdPyilIFLUvvbTZoVRmx6eiRg==} engines: {node: '>=14'} @@ -4247,16 +4109,6 @@ packages: '@opentelemetry/semantic-conventions': 1.18.1 dev: false - /@opentelemetry/core@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-KP+OIweb3wYoP7qTYL/j5IpOlu52uxBv5M4+QhSmmUfLyTgu1OIS71msK3chFo1D6Y61BIH3wMiMYRCxJCQctA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/semantic-conventions': 1.21.0 - dev: false - /@opentelemetry/exporter-trace-otlp-grpc@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-c/Wrn6LUqPiRgKhvMydau6kPz4ih6b/uwospiavjXju98ZfVv+KjaIF13cblW+4cQ6ZR3lm7t66umQfXrGBhPQ==} engines: {node: '>=14'} @@ -4272,21 +4124,6 @@ packages: '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) dev: false - /@opentelemetry/exporter-trace-otlp-grpc@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-+qRQXUbdRW6aNRT5yWOG3G6My1VxxKeqgUyLkkdIjkT20lvymjiN2RpBfGMtAf/oqnuRknf9snFl9VSIO2gniw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@grpc/grpc-js': 1.8.20 - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) - dev: false - /@opentelemetry/exporter-trace-otlp-http@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-a6CGqSG66n5R1mghzLMzyzn3iGap1b0v+0PjKFjfYuwLtpHQBxh2PHxItu+m2mXSwnM4R0GJlk9oUW5sQkCE0w==} engines: {node: '>=14'} @@ -4301,20 +4138,6 @@ packages: '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) dev: false - /@opentelemetry/exporter-trace-otlp-http@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-QEZKbfWqXrbKVpr2PHd4KyKI0XVOhUYC+p2RPV8s+2K5QzZBE3+F9WlxxrXDfkrvGmpQAZytBoHQQYA3AGOtpw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) - dev: false - /@opentelemetry/exporter-trace-otlp-proto@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-8QI6QARxNP4y9RUpuQxXjw2HyRNyeuD9CWEhS5ON44Mt+XP7YbOZR3GLx2Ml2JZ8uzB5dd2EGlMgaMuZe36D5Q==} engines: {node: '>=14'} @@ -4330,21 +4153,6 @@ packages: '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) dev: false - /@opentelemetry/exporter-trace-otlp-proto@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-hVXr/8DYlAKAzQYMsCf3ZsGweS6NTK3IHIEqmLokJZYcvJQBEEazeAdISfrL/utWnapg1Qnpw8u+W6SpxNzmTw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-proto-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) - dev: false - /@opentelemetry/exporter-zipkin@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-RmoWVFXFhvIh3q4szUe8I+/vxuMR0HNsOm39zNxnWJcK7JDwnPra9cLY/M78u6bTgB6Fte8GKgU128vvDzz0Iw==} engines: {node: '>=14'} @@ -4358,836 +4166,129 @@ packages: '@opentelemetry/semantic-conventions': 1.18.1 dev: false - /@opentelemetry/exporter-zipkin@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-J0ejrOx52s1PqvjNalIHvY/4v9ZxR2r7XS7WZbwK3qpVYZlGVq5V1+iCNweqsKnb/miUt/4TFvJBc9f5Q/kGcA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 - dev: false - - /@opentelemetry/instrumentation-amqplib@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-lVGRkyGnjFJv9O8oO/+uT40nrNj4UO+UN0k8708guy/toVgxsVpv4PtdWJTjbtu89UDk9gUxq62jpHxqrVaNnw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-aws-lambda@0.38.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-MIPvM8S4LqGKE+IAnYVCRUnEjaWbPsbqL4p2BnGcox08e6+JQe+0d16DI0cKVSFZOzV5T/or3ewQ/bB0lPm8yg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/propagator-aws-xray': 1.3.1(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - '@types/aws-lambda': 8.10.122 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-aws-sdk@0.38.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-/Tupb4UfVVkmcopq2H2nr2D/pHLF0riVw2biQQUJ/jGIkfrOgUMMKbShi2RQE4Zy8NFv3xaDn4/pNxzodLBy3w==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/propagation-utils': 0.30.6(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-bunyan@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-bQ8OzV7nVTA+oGiTzLjUmRFAbnXi0U/Z4VJCpj+1DRsaAaMT17eRpAOh22LQR0JBnv2vBm8CvIQl4CcAnsB46g==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/api-logs': 0.48.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@types/bunyan': 1.8.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-cassandra-driver@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-NlJkEiP37/WQvtSyYe4zxaBcaoweO/2+UtDssldk9NFmFutLHyMT/P5q5fe8i73ylmkPOAZnN8P48oHOhZHM1g==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-connect@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-EAMmUC2/KfeZl4qNgUsiVqT5Jti0jDl4GHi4TpDg41VBEJkRX/0+JcPBWgdFUgEfeiZr0GPVQud4i8jAwJ+ORw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - '@types/connect': 3.4.36 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-cucumber@0.3.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-nM9BL0t2Nxwbb41MXxNXTDL0zq7FXhOX9F3OiAqYUJHqb7BHyzV9KoQ+Ao1BjqJR91hUm1OFNgHAk3y8uiuq4w==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-dataloader@0.6.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-jkPdn83WV/TcnhQ5bOIoYcJGvMxXyYlCzbqfuB6HsMqf3CqpdgBQYlMuKi6qIfD4QWYt2R992yglNxPLuJ7xeg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-dns@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-QDJadJOQg9CLqMC79r4T5ugN4C4lb6eJYLmHgnLg3fh1JUGfyjQHtD3T7lH0P8251Mnt5m8zjDDbPKcqK2aGcw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-express@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-ZmSB4WMd88sSecOL7DlghzdBl56/8ymb02n+xEJ/6zUgONuw/1uoTh1TAaNPKfEWdNLoLKXQm+Gd2zBrUVOX0w==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-fastify@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-sl3q9Mt+yM6GlZJKhfLUIRrVEYqfmI0hqYLha5OFG5rLrgnZCCZVy8ra4+Pa40ecH1409cvwwBPf7k9AHEQBTw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-fs@0.9.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Xp31lb2Sj50ppsJ393650HxSi5IJIgddXxrUeVljmsabdmECPUj0YAt/Wwb1oIHFn04iL9Tq4VkF/otlLaI9ww==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-generic-pool@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-QMSSOfIqMJhXqFryLVbAMsgRktNHdhMEpsOgEiHurLfvAJhyEOBcTTUuo6Laqt50IIzIm3YuHL9ZtEl9fve2ag==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-graphql@0.37.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-WL5Qn1aRudJDxVN0Ao73/yzXBGBJAH1Fd2tteuGXku/Qw9hYQ936CgoO66GWmSiq2lyjsojAk1t5f+HF9j3NXw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-grpc@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-MmJHkbqaulqfECjotRtco9AXOq+D1HLq53wI7UFeE8bl8kISP9iMkt+A7PrtPFpRGCglwFvSa0djId6EWsP0DQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-hapi@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-qUENVxwCYbRbJ8HBY54ZL1Z9q1guCEurW6tCFFJJKQFu/MKEw7GSFImy5DR2Mp8b5ggZO36lYFcx0QUxfy4GJg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - '@types/hapi__hapi': 20.0.13 - transitivePeerDependencies: - - supports-color - dev: false - /@opentelemetry/instrumentation-http@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-ph7kv38Lipg/ggvoNJrwc3RCceLnTkVZwRbE5iu6w7fGsMjjc9jwlSmaOXKxUJjIimil2hL1qBm8xg2lmOVwxg==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.45.1(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-http@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-uXqOsLhW9WC3ZlGm6+PSX0xjSDTCfy4CMjfYj6TPWusOO8dtdx040trOriF24y+sZmS3M+5UQc6/3/ZxBJh4Mw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-ioredis@0.37.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-xBPfu03IIG8x1pmt1Dx+XrBO4ZB4UjEcrouGbp6eV3dLQ7eJPYZgfNXmsqkpsxgNQuVCi2a3WEAwZ5Wl2hk7Vw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/redis-common': 0.36.1 - '@opentelemetry/semantic-conventions': 1.18.1 - '@types/ioredis4': /@types/ioredis@4.28.10 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-knex@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-7L3Q8Yy5vY4W4zpRrjKEc0OpVPYyERtDz5dAumKjkJsEVPANr7E8Cc+No6VjZGeN+HgFFwEo+jcQCTWJzdxvRw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-koa@0.37.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-EfuGv1RJCSZh77dDc3PtvZXGwcsTufn9tU6T9VOTFcxovpyJ6w0og73eD0D02syR8R+kzv6rg1TeS8+lj7pyrQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - '@types/koa': 2.14.0 - '@types/koa__router': 12.0.3 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-lru-memoizer@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-m1kXrc11XNj7cC6sfcsYqd+kuCcN2wI9LXpB2l2BZCogqxHCgjuVoiXvT6K9LfO4tLefcvhoK0N8XuVJ8xyyOw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-memcached@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-TdGT5ytt8o7FTIsQvx010ykYbqu+IfGoOKA+IXLHdX1+l7vFWyv3ZOzQbRDmA4rxujJAAPf/n4/D7QECyedE/g==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - '@types/memcached': 2.2.10 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-mongodb@0.39.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-m9dMj39pcCshzlfCEn2lGrlNo7eV5fb9pGBnPyl/Am9Crh7Or8vOqvByCNd26Dgf5J978zTdLGF+6tM8j1WOew==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-metrics': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-mongoose@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-gReBMWD2Oa/wBGRWyg6B2dbPHhgkpOqDio31gE3DbC4JaqCsMByyeix75rZSzZ71RQmVh3d4jRLsqUtNVBzcyg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-mysql2@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-DI9NXYJBbQ72rjz1KCKerQFQE+Z4xRDoyYek6JpITv5BlhPboA8zKkltxyQLL06Y2RTFYslw1gvg+x9CWlRzJw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - '@opentelemetry/sql-common': 0.40.0(@opentelemetry/api@1.7.0) - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-mysql@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-QKRHd3aFA2vKOPzIZ9Q3UIxYeNPweB62HGlX2l3shOKrUhrtTg2/BzaKpHQBy2f2nO2mxTF/mOFeVEDeANnhig==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - '@types/mysql': 2.15.22 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-nestjs-core@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-HvbcCVAMZEIFrJ0Si9AfjxOr14KcH5h/lq5zLQ8AjZJpW0WaeO/ox5UgFi3J73Br91WbZHRgbXxMeodNycJJuA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-net@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-x6awrqF0YfEhGGNE2JtEWvB+zEls7mFvLDii54DnWxpQU69+AqKCW/ZwC91EDefOMGSYBckL0uEn6XNOgkTTbw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-pg@0.38.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Q7V/OJ1OZwaWYNOP/E9S6sfS03Z+PNU1SAjdAoXTj5j4u4iJSMSieLRWXFaHwsbefIOMkYvA00EBKF9IgbgbLA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - '@opentelemetry/sql-common': 0.40.0(@opentelemetry/api@1.7.0) - '@types/pg': 8.6.1 - '@types/pg-pool': 2.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-pino@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-gMfJ5Qy793mbaAGnQE3yp1Cb0y4np74rBPu20Oy/v8TTgPQOEV5PyNI0GNGggmZQIJSkdtYa8Ndb3huH3iZE5g==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-redis-4@0.36.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-XO0EV2TxUsaRdcp79blyLGG5JWWl7NWVd/XNbU8vY7CuYUfRhWiTXYoM4PI+lwkAnUPvPtyiOzYs9px23GnibA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/redis-common': 0.36.1 - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-redis@0.36.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-rKFylIacEBwLxKFrPvxpVi8hHY9qXfQSybYnYNyF/VxUWMGYDPMpbCnTQkiVR5u+tIhwSvhSDG2YQEq6syHUIQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/redis-common': 0.36.1 - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-restify@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-0ghtxsGJxHEwJfIzxDN3FCbNiTXqwv2jV6ip716jyjWN3f6MuRHm7NPWI/KNvu+IjqDj16KRGZG7nUAEB1ojog==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-router@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-7LsonkdnQi35eF7CWl8394QDgyd811gCawJ6QuS8GbWNIvZ3S2f9j+Zy0fWSmFgO28ruW1pUG51ql8xdXWa8TA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-socket.io@0.36.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-c9Zc6WKxTZtMaOj01kmJGLKabEj805YgTav4l9vgojHrf6MH1fTlw+SGvOKhfPfzmu2QhNORAfqPAB1poDwqEQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-tedious@0.7.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-o/5my8ZOuxACPSzMaXdPnQiMpmOPIJoTj+DRcs4vEJxk+KwlVNucoafSMpWQEyTNNuq2JI87Ru6Di2mp5T20EQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - '@types/tedious': 4.0.14 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-winston@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Ejssv6Uih7ipoNGYQLXd+cKZdEfTfTJ/vzpUSeYiJZ36mVYER1f8fs9Kb7jTKjHD55g2s6cUJj9lifbDFI4EEw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation@0.45.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-V1Cr0g8hSg35lpW3G/GYVZurrhHrQZJdmP68WyJ83f1FDn3iru+/Vnlto9kiOSm7PHhW+pZGdb9Fbv+mkQ31CA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@types/shimmer': 1.0.5 - import-in-the-middle: 1.4.2 - require-in-the-middle: 7.2.0 - semver: 7.5.4 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-sjtZQB5PStIdCw5ovVTDGwnmQC+GGYArJNgIcydrDSqUTdYBnMrN9P4pwQZgS3vTGIp+TU1L8vMXGe51NVmIKQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@types/shimmer': 1.0.5 - import-in-the-middle: 1.7.1 - require-in-the-middle: 7.2.0 - semver: 7.5.4 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/otlp-exporter-base@0.45.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Jvd6x8EwWGKEPWF4tkP4LpTPXiIkkafMNMvMJUfJd5DyNAftL1vAz+48jmi3URL2LMPkGryrvWPz8Tdu917gQw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - dev: false - - /@opentelemetry/otlp-exporter-base@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-T4LJND+Ugl87GUONoyoQzuV9qCn4BFIPOnCH1biYqdGhc2JahjuLqVD9aefwLzGBW638iLAo88Lh68h2F1FLiA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - dev: false - - /@opentelemetry/otlp-grpc-exporter-base@0.45.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-81X4mlzaAFoQCSXCgvYoMFyTy3mBhf8DD3J8bjW6/PH/rGZPJJkyYW0/YzepMrmBZXqlKZpTOU1aJ8sebVvDvw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@grpc/grpc-js': 1.8.20 - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.45.1(@opentelemetry/api@1.7.0) - protobufjs: 7.2.4 - dev: false - - /@opentelemetry/otlp-grpc-exporter-base@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Vdp56RK9OU+Oeoy3YQC/UMOWglKQ9qvgGr49FgF4r8vk5DlcTUgVS0m3KG8pykmRPA+5ZKaDuqwPw5aTvWmHFw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@grpc/grpc-js': 1.8.20 - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) - protobufjs: 7.2.4 - dev: false - - /@opentelemetry/otlp-proto-exporter-base@0.45.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-jtDkly6EW8TZHpbPpwJV9YT5PgbtL5B2UU8zcyGDiLT1wkIAYjFJZ1AqWmROIpydu8ohMq0dRwe4u0izNMdHpA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.45.1(@opentelemetry/api@1.7.0) - protobufjs: 7.2.4 - dev: false - - /@opentelemetry/otlp-proto-exporter-base@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-14GSTvPZPfrWsB54fYMGb8v+Uge5xGXyz0r2rf4SzcRnO2hXCPHEuL3yyL50emaKPAY+fj29Dm0bweawe8UA6A==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) - protobufjs: 7.2.4 - dev: false - - /@opentelemetry/otlp-transformer@0.45.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-FhIHgfC0b0XtoBrS5ISfva939yWffNl47ypXR8I7Ru+dunlySpmf2TLocKHYLHGcWiuoeSNO5O4dZCmSKOtpXw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/api-logs': 0.45.1 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-logs': 0.45.1(@opentelemetry/api-logs@0.45.1)(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-metrics': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) - dev: false - - /@opentelemetry/otlp-transformer@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-yuoS4cUumaTK/hhxW3JUy3wl2U4keMo01cFDrUOmjloAdSSXvv1zyQ920IIH4lymp5Xd21Dj2/jq2LOro56TJg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/api-logs': 0.48.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-logs': 0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-metrics': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) - dev: false - - /@opentelemetry/propagation-utils@0.30.6(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-qvnYee5I/xrBY5XClUlOASIOdoTbnFGNI6+ViKqdoErF2xKmhysXcmxlJNzQFNDK0muTfjvJMZcFyEielARk7g==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.7.0 - dev: false - - /@opentelemetry/propagator-aws-xray@1.3.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - dev: false - - /@opentelemetry/propagator-b3@1.18.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-oSTUOsnt31JDx5SoEy27B5jE1/tiPvvE46w7CDKj0R5oZhCCfYH2bbSGa7NOOyDXDNqQDkgqU1DIV/xOd3f8pw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - dev: false - - /@opentelemetry/propagator-b3@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-3ZTobj2VDIOzLsIvvYCdpw6tunxUVElPxDvog9lS49YX4hohHeD84A8u9Ns/6UYUcaN5GSoEf891lzhcBFiOLA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - dev: false - - /@opentelemetry/propagator-jaeger@1.18.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Kh4M1Qewv0Tbmts6D8LgNzx99IjdE18LCmY/utMkgVyU7Bg31Yuj+X6ZyoIRKPcD2EV4rVkuRI16WVMRuGbhWA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' + '@opentelemetry/api': ^1.3.0 dependencies: '@opentelemetry/api': 1.7.0 '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.45.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color dev: false - /@opentelemetry/propagator-jaeger@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-8TQSwXjBmaDx7JkxRD7hdmBmRK2RGRgzHX1ArJfJhIc5trzlVweyorzqQrXOvqVEdEg+zxUMHkL5qbGH/HDTPA==} + /@opentelemetry/instrumentation@0.45.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-V1Cr0g8hSg35lpW3G/GYVZurrhHrQZJdmP68WyJ83f1FDn3iru+/Vnlto9kiOSm7PHhW+pZGdb9Fbv+mkQ31CA==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' + '@opentelemetry/api': ^1.3.0 dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - dev: false - - /@opentelemetry/redis-common@0.36.1: - resolution: {integrity: sha512-YjfNEr7DK1Ymc5H0bzhmqVvMcCs+PUEUerzrpTFdHfZxj3HpnnjZTIFKx/gxiL/sajQ8dxycjlreoYTVYKBXlw==} - engines: {node: '>=14'} + '@types/shimmer': 1.0.5 + import-in-the-middle: 1.4.2 + require-in-the-middle: 7.2.0 + semver: 7.5.4 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color dev: false - /@opentelemetry/resource-detector-alibaba-cloud@0.28.6(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-VuJXc+oDQ/SYRHBCQbEshl0WJtEMvgfSkTDBq+WSxj6y9sKe0HCt55Sxeb5nLmBdtCYWMQFniHe2K4GLSjDZVw==} + /@opentelemetry/otlp-exporter-base@0.45.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Jvd6x8EwWGKEPWF4tkP4LpTPXiIkkafMNMvMJUfJd5DyNAftL1vAz+48jmi3URL2LMPkGryrvWPz8Tdu917gQw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) dev: false - /@opentelemetry/resource-detector-aws@1.3.6(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-hFJ19yFwChqGCv1uMkXtjZU9BG8GcChe8cRCAkGWg1RZADse5S2ausf3D8pYw1cR3ktJtuAmRrGZniT6TDUPDw==} + /@opentelemetry/otlp-grpc-exporter-base@0.45.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-81X4mlzaAFoQCSXCgvYoMFyTy3mBhf8DD3J8bjW6/PH/rGZPJJkyYW0/YzepMrmBZXqlKZpTOU1aJ8sebVvDvw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: + '@grpc/grpc-js': 1.8.20 '@opentelemetry/api': 1.7.0 '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 + '@opentelemetry/otlp-exporter-base': 0.45.1(@opentelemetry/api@1.7.0) + protobufjs: 7.2.4 dev: false - /@opentelemetry/resource-detector-container@0.3.6(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-psxtzQakVuZKFl/ukn+nPW4Ixn+KPHGsWJMYKndmXrsgdFri78X+MHR0wLOO41Zn79sc35DiSk+GdJ24cCylbg==} + /@opentelemetry/otlp-proto-exporter-base@0.45.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-jtDkly6EW8TZHpbPpwJV9YT5PgbtL5B2UU8zcyGDiLT1wkIAYjFJZ1AqWmROIpydu8ohMq0dRwe4u0izNMdHpA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.45.1(@opentelemetry/api@1.7.0) + protobufjs: 7.2.4 dev: false - /@opentelemetry/resource-detector-gcp@0.29.6(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-cx03fXPknmiVW0hpWAJr0Nr8xwkwRB8VNWPvNrmP7UzJ8eEztY9lHnVke4ZVFaVGvm/4EFxk2y5hPNggbIezoA==} + /@opentelemetry/otlp-transformer@0.45.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-FhIHgfC0b0XtoBrS5ISfva939yWffNl47ypXR8I7Ru+dunlySpmf2TLocKHYLHGcWiuoeSNO5O4dZCmSKOtpXw==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.0.0 + '@opentelemetry/api': '>=1.3.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.45.1 '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 - gcp-metadata: 6.1.0 - transitivePeerDependencies: - - encoding - - supports-color + '@opentelemetry/sdk-logs': 0.45.1(@opentelemetry/api-logs@0.45.1)(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-metrics': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) dev: false - /@opentelemetry/resources@1.18.1(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-JjbcQLYMttXcIabflLRuaw5oof5gToYV9fuXbcsoOeQ0BlbwUn6DAZi++PNsSz2jjPeASfDls10iaO/8BRIPRA==} + /@opentelemetry/propagator-b3@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-oSTUOsnt31JDx5SoEy27B5jE1/tiPvvE46w7CDKj0R5oZhCCfYH2bbSGa7NOOyDXDNqQDkgqU1DIV/xOd3f8pw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 dev: false - /@opentelemetry/resources@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-1Z86FUxPKL6zWVy2LdhueEGl9AHDJcx+bvHStxomruz6Whd02mE3lNUMjVJ+FGRoktx/xYQcxccYb03DiUP6Yw==} + /@opentelemetry/propagator-jaeger@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Kh4M1Qewv0Tbmts6D8LgNzx99IjdE18LCmY/utMkgVyU7Bg31Yuj+X6ZyoIRKPcD2EV4rVkuRI16WVMRuGbhWA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) dev: false - /@opentelemetry/sdk-logs@0.45.1(@opentelemetry/api-logs@0.45.1)(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-z0RRgW4LeKEKnhXS4F/HnqB6+7gsy63YK47F4XAJYHs4s1KKg8XnQ2RkbuL31i/a9nXkylttYtvsT50CGr487g==} + /@opentelemetry/resources@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-JjbcQLYMttXcIabflLRuaw5oof5gToYV9fuXbcsoOeQ0BlbwUn6DAZi++PNsSz2jjPeASfDls10iaO/8BRIPRA==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.4.0 <1.8.0' - '@opentelemetry/api-logs': '>=0.39.1' + '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/api-logs': 0.45.1 '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 dev: false - /@opentelemetry/sdk-logs@0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-lRcA5/qkSJuSh4ItWCddhdn/nNbVvnzM+cm9Fg1xpZUeTeozjJDBcHnmeKoOaWRnrGYBdz6UTY6bynZR9aBeAA==} + /@opentelemetry/sdk-logs@0.45.1(@opentelemetry/api-logs@0.45.1)(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-z0RRgW4LeKEKnhXS4F/HnqB6+7gsy63YK47F4XAJYHs4s1KKg8XnQ2RkbuL31i/a9nXkylttYtvsT50CGr487g==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.4.0 <1.8.0' '@opentelemetry/api-logs': '>=0.39.1' dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/api-logs': 0.48.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api-logs': 0.45.1 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) dev: false /@opentelemetry/sdk-metrics@1.18.1(@opentelemetry/api@1.7.0): @@ -5202,18 +4303,6 @@ packages: lodash.merge: 4.6.2 dev: false - /@opentelemetry/sdk-metrics@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-on1jTzIHc5DyWhRP+xpf+zrgrREXcHBH4EDAfaB5mIG7TWpKxNXooQ1JCylaPsswZUv4wGnVTinr4HrBdGARAQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - lodash.merge: 4.6.2 - dev: false - /@opentelemetry/sdk-node@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-VtYvlz2ydfJLuOUhCnGER69mz2KUYk3/kpbqI1FWlUP+kzTwivMuy7hIPPv6KmuOIMYWmW4lM+WyJACHqNvROw==} engines: {node: '>=14'} @@ -5238,30 +4327,6 @@ packages: - supports-color dev: false - /@opentelemetry/sdk-node@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-3o3GS6t+VLGVFCV5bqfGOcWIgOdkR/UE6Qz7hHksP5PXrVBeYsPqts7cPma5YXweaI3r3h26mydg9PqQIcqksg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/api-logs': 0.48.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/exporter-trace-otlp-grpc': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/exporter-trace-otlp-http': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/exporter-trace-otlp-proto': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/exporter-zipkin': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-logs': 0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-metrics': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-node': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 - transitivePeerDependencies: - - supports-color - dev: false - /@opentelemetry/sdk-trace-base@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-tRHfDxN5dO+nop78EWJpzZwHsN1ewrZRVVwo03VJa3JQZxToRDH29/+MB24+yoa+IArerdr7INFJiX/iN4gjqg==} engines: {node: '>=14'} @@ -5274,18 +4339,6 @@ packages: '@opentelemetry/semantic-conventions': 1.18.1 dev: false - /@opentelemetry/sdk-trace-base@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-yrElGX5Fv0umzp8Nxpta/XqU71+jCAyaLk34GmBzNcrW43nqbrqvdPs4gj4MVy/HcTjr6hifCDCYA3rMkajxxA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 - dev: false - /@opentelemetry/sdk-trace-node@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-ML0l9TNlfLoplLF1F8lb95NGKgdm6OezDS3Ymqav9sYxMd5bnH2LZVzd4xEF+ov5vpZJOGdWxJMs2nC9no7+xA==} engines: {node: '>=14'} @@ -5301,46 +4354,16 @@ packages: semver: 7.5.4 dev: false - /@opentelemetry/sdk-trace-node@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-1pdm8jnqs+LuJ0Bvx6sNL28EhC8Rv7NYV8rnoXq3GIQo7uOHBDAFSj7makAfbakrla7ecO1FRfI8emnR4WvhYA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/context-async-hooks': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/propagator-b3': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/propagator-jaeger': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) - semver: 7.5.4 - dev: false - /@opentelemetry/semantic-conventions@1.18.1: resolution: {integrity: sha512-+NLGHr6VZwcgE/2lw8zDIufOCGnzsA5CbQIMleXZTrgkBd0TanCX+MiDYJ1TOS4KL/Tqk0nFRxawnaYr6pkZkA==} engines: {node: '>=14'} dev: false - /@opentelemetry/semantic-conventions@1.21.0: - resolution: {integrity: sha512-lkC8kZYntxVKr7b8xmjCVUgE0a8xgDakPyDo9uSWavXPyYqLgYYGdEd2j8NxihRyb6UwpX3G/hFUF4/9q2V+/g==} - engines: {node: '>=14'} - dev: false - /@opentelemetry/semantic-conventions@1.3.1: resolution: {integrity: sha512-wU5J8rUoo32oSef/rFpOT1HIjLjAv3qIDHkw1QIhODV3OpAVHi5oVzlouozg9obUmZKtbZ0qUe/m7FP0y0yBzA==} engines: {node: '>=8.12.0'} dev: true - /@opentelemetry/sql-common@0.40.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-vSqRJYUPJVjMFQpYkQS3ruexCPSZJ8esne3LazLwtCPaPRvzZ7WG3tX44RouAn7w4wMp8orKguBqtt+ng2UTnw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.1.0 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) - dev: false - /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -5773,20 +4796,6 @@ packages: tslib: 2.1.0 dev: false - /@sideway/address@4.1.5: - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@sideway/formula@3.0.1: - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - dev: false - - /@sideway/pinpoint@2.0.0: - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - dev: false - /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true @@ -6771,16 +5780,6 @@ packages: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true - /@types/accepts@1.3.7: - resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} - dependencies: - '@types/node': 20.4.0 - dev: false - - /@types/aws-lambda@8.10.122: - resolution: {integrity: sha512-vBkIh9AY22kVOCEKo5CJlyCgmSWvasC+SWUxL/x/vOwRobMpI/HG1xp/Ae3AqmSiZeLUbOhW0FCD3ZjqqUxmXw==} - dev: false - /@types/axios@0.14.0: resolution: {integrity: sha512-KqQnQbdYE54D7oa/UmYVMZKq7CO4l8DEENzOKc4aBRwxCXSlJXGz83flFx5L7AWrOQnmuN3kVsRdt+GZPPjiVQ==} deprecated: This is a stub types definition for axios (https://github.com/mzabriskie/axios). axios provides its own type definitions, so you don't need @types/axios installed! @@ -6825,12 +5824,6 @@ packages: '@types/connect': 3.4.32 '@types/node': 20.4.0 - /@types/bunyan@1.8.9: - resolution: {integrity: sha512-ZqS9JGpBxVOvsawzmVt30sP++gSQMTejCkIAQ3VdadOcRE8izTyW66hufvwLeH+YEGP6Js2AW7Gz+RMyvrEbmw==} - dependencies: - '@types/node': 20.4.0 - dev: false - /@types/cheerio@0.22.31: resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==} dependencies: @@ -6842,25 +5835,6 @@ packages: dependencies: '@types/node': 20.4.0 - /@types/connect@3.4.36: - resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} - dependencies: - '@types/node': 20.4.0 - dev: false - - /@types/content-disposition@0.5.8: - resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} - dev: false - - /@types/cookies@0.9.0: - resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==} - dependencies: - '@types/connect': 3.4.32 - '@types/express': 4.17.17 - '@types/keygrip': 1.0.6 - '@types/node': 20.4.0 - dev: false - /@types/crypto-js@4.2.2: resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} dev: true @@ -6950,53 +5924,10 @@ packages: '@types/node': 20.4.0 dev: true - /@types/hapi__catbox@10.2.6: - resolution: {integrity: sha512-qdMHk4fBlwRfnBBDJaoaxb+fU9Ewi2xqkXD3mNjSPl2v/G/8IJbDpVRBuIcF7oXrcE8YebU5M8cCeKh1NXEn0w==} - dev: false - - /@types/hapi__hapi@20.0.13: - resolution: {integrity: sha512-LP4IPfhIO5ZPVOrJo7H8c8Slc0WYTFAUNQX1U0LBPKyXioXhH5H2TawIgxKujIyOhbwoBbpvOsBf6o5+ToJIrQ==} - dependencies: - '@hapi/boom': 9.1.4 - '@hapi/iron': 6.0.0 - '@hapi/podium': 4.1.3 - '@types/hapi__catbox': 10.2.6 - '@types/hapi__mimos': 4.1.4 - '@types/hapi__shot': 4.1.6 - '@types/node': 20.4.0 - joi: 17.12.1 - dev: false - - /@types/hapi__mimos@4.1.4: - resolution: {integrity: sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ==} - dependencies: - '@types/mime-db': 1.43.5 - dev: false - - /@types/hapi__shot@4.1.6: - resolution: {integrity: sha512-h33NBjx2WyOs/9JgcFeFhkxnioYWQAZxOHdmqDuoJ1Qjxpcs+JGvSjEEoDeWfcrF+1n47kKgqph5IpfmPOnzbg==} - dependencies: - '@types/node': 20.4.0 - dev: false - /@types/highlight.js@9.12.4: resolution: {integrity: sha512-t2szdkwmg2JJyuCM20e8kR2X59WCE5Zkl4bzm1u1Oukjm79zpbiAv+QjnwLnuuV0WHEcX2NgUItu0pAMKuOPww==} dev: true - /@types/http-assert@1.5.5: - resolution: {integrity: sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==} - dev: false - - /@types/http-errors@2.0.4: - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - dev: false - - /@types/ioredis@4.28.10: - resolution: {integrity: sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==} - dependencies: - '@types/node': 20.4.0 - dev: false - /@types/isomorphic-fetch@0.0.39: resolution: {integrity: sha512-I0gou/ZdA1vMG7t7gMzL7VYu2xAKU78rW9U1l10MI0nn77pEHq3tQqHQ8hMmXdMpBlkxZOorjI4sO594Z3kKJw==} dev: true @@ -7026,35 +5957,6 @@ packages: dependencies: '@types/node': 20.4.0 - /@types/keygrip@1.0.6: - resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} - dev: false - - /@types/koa-compose@3.2.8: - resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} - dependencies: - '@types/koa': 2.14.0 - dev: false - - /@types/koa@2.14.0: - resolution: {integrity: sha512-DTDUyznHGNHAl+wd1n0z1jxNajduyTh8R53xoewuerdBzGo6Ogj6F2299BFtrexJw4NtgjsI5SMPCmV9gZwGXA==} - dependencies: - '@types/accepts': 1.3.7 - '@types/content-disposition': 0.5.8 - '@types/cookies': 0.9.0 - '@types/http-assert': 1.5.5 - '@types/http-errors': 2.0.4 - '@types/keygrip': 1.0.6 - '@types/koa-compose': 3.2.8 - '@types/node': 20.4.0 - dev: false - - /@types/koa__router@12.0.3: - resolution: {integrity: sha512-5YUJVv6NwM1z7m6FuYpKfNLTZ932Z6EF6xy2BbtpJSyn13DKNQEkXVffFVSnJHxvwwWh2SAeumpjAYUELqgjyw==} - dependencies: - '@types/koa': 2.14.0 - dev: false - /@types/linkify-it@3.0.2: resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} dev: true @@ -7085,16 +5987,6 @@ packages: resolution: {integrity: sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==} dev: true - /@types/memcached@2.2.10: - resolution: {integrity: sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==} - dependencies: - '@types/node': 20.4.0 - dev: false - - /@types/mime-db@1.43.5: - resolution: {integrity: sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==} - dev: false - /@types/mime-types@2.1.1: resolution: {integrity: sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==} dev: true @@ -7117,12 +6009,6 @@ packages: resolution: {integrity: sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==} dev: true - /@types/mysql@2.15.22: - resolution: {integrity: sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==} - dependencies: - '@types/node': 20.4.0 - dev: false - /@types/node-fetch@2.6.4: resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} dependencies: @@ -7149,20 +6035,6 @@ packages: resolution: {integrity: sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==} dev: true - /@types/pg-pool@2.0.4: - resolution: {integrity: sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ==} - dependencies: - '@types/pg': 8.6.1 - dev: false - - /@types/pg@8.6.1: - resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} - dependencies: - '@types/node': 20.4.0 - pg-protocol: 1.6.0 - pg-types: 2.2.0 - dev: false - /@types/pretty-hrtime@1.0.1: resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==} dev: true @@ -7244,12 +6116,6 @@ packages: '@types/node': 20.4.0 dev: false - /@types/tedious@4.0.14: - resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} - dependencies: - '@types/node': 20.4.0 - dev: false - /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: true @@ -7981,6 +6847,7 @@ packages: /bignumber.js@9.1.1: resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==} + dev: true /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} @@ -9576,6 +8443,7 @@ packages: /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true /extglob@2.0.4: resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} @@ -10012,19 +8880,6 @@ packages: - supports-color dev: true - /gaxios@6.2.0: - resolution: {integrity: sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ==} - engines: {node: '>=14'} - dependencies: - extend: 3.0.2 - https-proxy-agent: 7.0.2 - is-stream: 2.0.0 - node-fetch: 2.6.11 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /gcp-metadata@5.3.0: resolution: {integrity: sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==} engines: {node: '>=12'} @@ -10036,17 +8891,6 @@ packages: - supports-color dev: true - /gcp-metadata@6.1.0: - resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} - engines: {node: '>=14'} - dependencies: - gaxios: 6.2.0 - json-bigint: 1.0.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -10580,6 +9424,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color + dev: true /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} @@ -10647,15 +9492,6 @@ packages: module-details-from-path: 1.0.3 dev: false - /import-in-the-middle@1.7.1: - resolution: {integrity: sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==} - dependencies: - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - cjs-module-lexer: 1.2.3 - module-details-from-path: 1.0.3 - dev: false - /import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} @@ -10946,6 +9782,7 @@ packages: /is-stream@2.0.0: resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} engines: {node: '>=8'} + dev: true /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -11138,16 +9975,6 @@ packages: hasBin: true dev: true - /joi@17.12.1: - resolution: {integrity: sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==} - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.5 - '@sideway/formula': 3.0.1 - '@sideway/pinpoint': 2.0.0 - dev: false - /js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} @@ -11312,6 +10139,7 @@ packages: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} dependencies: bignumber.js: 9.1.1 + dev: true /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -12927,26 +11755,6 @@ packages: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true - /pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - dev: false - - /pg-protocol@1.6.0: - resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} - dev: false - - /pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - dev: false - /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -13100,28 +11908,6 @@ packages: source-map-js: 1.0.2 dev: true - /postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - dev: false - - /postgres-bytea@1.0.0: - resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} - engines: {node: '>=0.10.0'} - dev: false - - /postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} - dev: false - - /postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} - dependencies: - xtend: 4.0.2 - dev: false - /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} diff --git a/vscode/src/completions/inline-completion-item-provider.ts b/vscode/src/completions/inline-completion-item-provider.ts index 1b47bb9ce3..19dd4b8191 100644 --- a/vscode/src/completions/inline-completion-item-provider.ts +++ b/vscode/src/completions/inline-completion-item-provider.ts @@ -192,9 +192,6 @@ export class InlineCompletionItemProvider } return wrapInActiveSpan('autocomplete.provideInlineCompletionItems', async span => { - console.log('IDIDIDIDID') - console.log(span.spanContext().traceId) - console.log('ENDNENDNENED') // Update the last request const lastCompletionRequest = this.lastCompletionRequest const completionRequest: CompletionRequest = { @@ -365,8 +362,6 @@ export class InlineCompletionItemProvider ) } - span.addEvent('computed', { source: result.source }) - const visibleItems = result.items.filter(item => isCompletionVisible( item, @@ -524,9 +519,7 @@ export class InlineCompletionItemProvider return } - completion.span?.addEvent('suggested') - completion.span?.addEvent('exposed_experiments', featureFlagProvider.getExposedExperiments()) - CompletionLogger.suggested(completion.logId) + CompletionLogger.suggested(completion.logId, completion.span) } /** diff --git a/vscode/src/completions/logger.ts b/vscode/src/completions/logger.ts index 167b65fb11..e26c5b2f97 100644 --- a/vscode/src/completions/logger.ts +++ b/vscode/src/completions/logger.ts @@ -2,7 +2,12 @@ import { LRUCache } from 'lru-cache' import * as uuid from 'uuid' import * as vscode from 'vscode' -import { isNetworkError, type BillingCategory, type BillingProduct } from '@sourcegraph/cody-shared' +import { + isNetworkError, + type BillingCategory, + type BillingProduct, + featureFlagProvider, +} from '@sourcegraph/cody-shared' import type { KnownString, TelemetryEventParameters } from '@sourcegraph/telemetry' import { getConfiguration } from '../configuration' @@ -19,7 +24,7 @@ import * as statistics from './statistics' import type { InlineCompletionItemWithAnalytics } from './text-processing/process-inline-completions' import { lines } from './text-processing/utils' import type { InlineCompletionItem } from './types' -import { trace } from '@opentelemetry/api' +import { Span, trace } from '@opentelemetry/api' // A completion ID is a unique identifier for a specific completion text displayed at a specific // point in the document. A single completion can be suggested multiple times. @@ -433,8 +438,6 @@ export function create( id: null, } - trace.getActiveSpan()?.setAttributes(inputParams as any) - activeSuggestionRequests.set(id, { id, params, @@ -508,7 +511,7 @@ export function loaded( // // For statistics logging we start a timeout matching the READ_TIMEOUT_MS so we can increment the // suggested completion count as soon as we count it as such. -export function suggested(id: CompletionLogID): void { +export function suggested(id: CompletionLogID, span?: Span): void { const event = activeSuggestionRequests.get(id) if (!event) { return @@ -522,6 +525,12 @@ export function suggested(id: CompletionLogID): void { if (!event.suggestedAt) { event.suggestedAt = performance.now() + // Add exposed experiments at the very end to make sure we include experiments that the user + // is being exposed to while the completion was generated + span?.setAttributes(featureFlagProvider.getExposedExperiments()) + span?.setAttributes(getSharedParams(event) as any) + span?.addEvent('suggested') + setTimeout(() => { const event = activeSuggestionRequests.get(id) if (!event) { From fa43d61a2675976b21898a1c693b9ff2efd96b5e Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Wed, 7 Feb 2024 18:15:49 +0100 Subject: [PATCH 05/18] Make this even prettier --- .../src/sourcegraph-api/graphql/client.ts | 9 +- vscode/package.json | 2284 ++++++++--------- .../inline-completion-item-provider.ts | 14 +- vscode/src/completions/providers/fireworks.ts | 4 +- .../OpenTelemetryService.node.ts | 6 +- 5 files changed, 1142 insertions(+), 1175 deletions(-) diff --git a/lib/shared/src/sourcegraph-api/graphql/client.ts b/lib/shared/src/sourcegraph-api/graphql/client.ts index 2d797795da..ac62d53788 100644 --- a/lib/shared/src/sourcegraph-api/graphql/client.ts +++ b/lib/shared/src/sourcegraph-api/graphql/client.ts @@ -769,18 +769,13 @@ export class SourcegraphGraphQLAPIClient { const queryName = query.match(QUERY_TO_NAME_REGEXP)?.[1] const url = buildGraphQLUrl({ request: query, baseUrl: this.config.serverEndpoint }) - return ( + return wrapInActiveSpan(`graphql.fetch${queryName ? `.${queryName}` : ''}`, () => fetch(url, { method: 'POST', body: JSON.stringify({ query, variables }), headers, }) .then(verifyResponseCode) - //.then(response => response.text()) - //.then(text => { - // console.log('fetched:', text) - // return JSON.parse(text) as T - //}) .then(response => response.json() as T) .catch(error => { return new Error(`accessing Sourcegraph GraphQL API: ${error} (${url})`) @@ -800,7 +795,7 @@ export class SourcegraphGraphQLAPIClient { const queryName = query.match(QUERY_TO_NAME_REGEXP)?.[1] - return wrapInActiveSpan(`graphql.fetch${queryName ? `.${queryName}` : ''}`, () => + return wrapInActiveSpan(`graphql.dotcom.fetch${queryName ? `.${queryName}` : ''}`, () => fetch(url, { method: 'POST', body: JSON.stringify({ query, variables }), diff --git a/vscode/package.json b/vscode/package.json index 0dddbb0449..60d59e9ceb 100644 --- a/vscode/package.json +++ b/vscode/package.json @@ -1,1157 +1,1129 @@ { - "name": "cody-ai", - "private": true, - "displayName": "Cody AI", - "version": "1.2.2", - "publisher": "sourcegraph", - "license": "Apache-2.0", - "icon": "resources/cody.png", - "description": "Code AI with codebase context", - "scripts": { - "postinstall": "pnpm download-wasm", - "dev": "pnpm run -s dev:desktop", - "dev:insiders": "pnpm run -s dev:desktop:insiders", - "start:dev:desktop": "NODE_ENV=development code --extensionDevelopmentPath=$PWD --disable-extension=sourcegraph.cody-ai --disable-extension=github.copilot --inspect-extensions=9333 --new-window . --goto ./src/completions/inline-completion-item-provider.ts:16:5", - "dev:desktop": "pnpm run -s build:dev:desktop && pnpm run start:dev:desktop", - "dev:desktop:insiders": "pnpm run -s build:dev:desktop && NODE_ENV=development code-insiders --extensionDevelopmentPath=$PWD --disable-extension=sourcegraph.cody-ai --disable-extension=github.copilot --inspect-extensions=9333 --new-window . --goto ./src/completions/inline-completion-item-provider.ts:16:5", - "dev:web": "pnpm run -s build:dev:web && pnpm run -s _dev:vscode-test-web --browserType none", - "watch:dev:web": "concurrently \"pnpm run -s watch:build:dev:web\" \"pnpm run -s _dev:vscode-test-web --browserType none\"", - "_dev:vscode-test-web": "vscode-test-web --extensionDevelopmentPath=. ${WORKSPACE-test/fixtures/workspace}", - "build": "tsc --build && pnpm run -s _build:esbuild:desktop && pnpm run -s _build:esbuild:web && pnpm run -s _build:webviews --mode production", - "_build:desktop": "pnpm run -s _build:esbuild:desktop && pnpm run -s _build:webviews --mode production", - "_build:web": "pnpm run -s _build:esbuild:web && pnpm run -s _build:webviews --mode production", - "build:dev:desktop": "concurrently \"pnpm run -s _build:esbuild:desktop --alias:@sourcegraph/cody-shared=@sourcegraph/cody-shared/src/index --alias:@sourcegraph/cody-shared/src=@sourcegraph/cody-shared/src --alias:@sourcegraph/cody-ui=@sourcegraph/cody-ui/src/index --alias:@sourcegraph/cody-ui/src=@sourcegraph/cody-ui/src\" \"pnpm run -s _build:webviews --mode development\"", - "build:dev:web": "concurrently \"pnpm run -s _build:esbuild:web --alias:@sourcegraph/cody-shared=@sourcegraph/cody-shared/src/index --alias:@sourcegraph/cody-shared/src=@sourcegraph/cody-shared/src --alias:@sourcegraph/cody-ui=@sourcegraph/cody-ui/src/index --alias:@sourcegraph/cody-ui/src=@sourcegraph/cody-ui/src\" \"pnpm run -s _build:webviews --mode development\"", - "watch:build:dev:web": "concurrently \"pnpm run -s _build:esbuild:web --watch\" \"pnpm run -s _build:webviews --mode development --watch\"", - "watch:build:dev:desktop": "concurrently \"pnpm run -s _build:esbuild:desktop --watch\" \"pnpm run -s _build:webviews --mode development --watch\"", - "_build:esbuild:desktop": "pnpm download-wasm && esbuild ./src/extension.node.ts --bundle --outfile=dist/extension.node.js --external:vscode --format=cjs --platform=node --sourcemap", - "_build:esbuild:web": "esbuild ./src/extension.web.ts --platform=browser --bundle --outfile=dist/extension.web.js --alias:path=path-browserify --alias:os=os-browserify --external:vscode --define:process='{\"env\":{}}' --define:window=self --format=cjs --sourcemap", - "_build:webviews": "vite -c webviews/vite.config.ts build", - "release": "ts-node-transpile-only ./scripts/release.ts", - "download-wasm": "ts-node-transpile-only ./scripts/download-wasm-modules.ts", - "release:dry-run": "pnpm run download-wasm && CODY_RELEASE_DRY_RUN=1 ts-node ./scripts/release.ts", - "storybook": "storybook dev -p 6007 --no-open --no-version-updates --no-release-notes", - "test:e2e": "tsc --build && node dist/tsc/test/e2e/install-deps.js && pnpm run -s build:dev:desktop && playwright test", - "test:integration": "tsc --build ./test/integration && pnpm run -s build:dev:desktop && node --inspect -r ts-node/register dist/tsc/test/integration/main.js", - "test:unit": "vitest", - "vscode:prepublish": "pnpm -s run build", - "test:unit:tree-sitter-queries": "vitest ./src/tree-sitter/query-tests/*.test.ts", - "github-changelog": "ts-node-transpile-only ./scripts/github-changelog.ts" - }, - "categories": [ - "Programming Languages", - "Machine Learning", - "Snippets", - "Education" - ], - "keywords": [ - "ai", - "openai", - "anthropic", - "assistant", - "chatbot", - "chat", - "refactor", - "documentation", - "test", - "sourcegraph", - "codey", - "llm", - "codegen", - "autocomplete", - "bot", - "model", - "typescript", - "javascript", - "python", - "golang", - "go", - "html", - "css", - "java", - "php", - "swift", - "kotlin" - ], - "repository": { - "type": "git", - "url": "https://github.com/sourcegraph/cody", - "directory": "vscode" - }, - "bugs": { - "url": "https://github.com/sourcegraph/cody/issues" - }, - "homepage": "https://sourcegraph.com/docs/cody", - "badges": [ - { - "url": "https://img.shields.io/discord/969688426372825169?color=5765F2", - "href": "https://srcgr.ph/discord", - "description": "Discord" - } - ], - "engines": { - "vscode": "^1.79.0" - }, - "main": "./dist/extension.node.js", - "browser": "./dist/extension.web.js", - "activationEvents": [ - "onLanguage", - "onStartupFinished", - "onWebviewPanel:cody.chatPanel" - ], - "contributes": { - "walkthroughs": [ - { - "id": "welcome", - "title": "Getting Started with Cody", - "description": "Discover how Cody can help you write, understand and fix code faster", - "steps": [ - { - "id": "autocomplete", - "title": "Code Autocomplete", - "description": "Start writing code and Cody will complete the line (or the entire function) for you. Hit tab to accept the suggestion.", - "media": { - "markdown": "walkthroughs/autocomplete.md" - } - }, - { - "id": "chat", - "title": "Cody Chat", - "description": "Answer questions about general programming topics, or specific to your codebase, with Cody chat.\n[Open Chat](command:cody.walkthrough.showChat)", - "media": { - "markdown": "walkthroughs/chat.md" - } - }, - { - "id": "edit", - "title": "Edit Code", - "description": "Ask Cody to perform code edits with your instructions.", - "media": { - "markdown": "walkthroughs/edit.md" - } - }, - { - "id": "fix", - "title": "Fix Code", - "description": "Use Cody to fix or explain problems in your code.", - "media": { - "markdown": "walkthroughs/fix.md" - } - }, - { - "id": "commands", - "title": "Cody Commands", - "description": "Discover all the built-in Cody commands, and create your own custom commands.\n[Show Commands](command:cody.commands.tree.view.focus)", - "media": { - "markdown": "walkthroughs/commands.md" - } - }, - { - "id": "search", - "title": "Natural Language Search (Beta)", - "description": "Easily find what you're looking for with Cody Natural Language Search.\n[Show Search](command:cody.search.focus)", - "media": { - "markdown": "walkthroughs/search.md" - } - } - ] - } - ], - "colors": [ - { - "id": "cody.fixup.conflictBackground", - "description": "The background of text Cody will edit where there is a specific conflict with your changes.", - "defaults": { - "light": "mergeEditor.conflictingLines.background", - "dark": "mergeEditor.conflictingLines.background" - } - }, - { - "id": "cody.fixup.conflictBorder", - "description": "The border of text Cody will edit, if there is a conflict with your changes.", - "defaults": { - "light": "mergeEditor.conflict.unhandledFocused.border", - "dark": "mergeEditor.conflict.unhandledFocused.border" - } - }, - { - "id": "cody.fixup.conflictedBackground", - "description": "The background of text Cody will edit, if there is a conflict with your changes.", - "defaults": { - "light": "#ffffff00", - "dark": "#00000000" - } - }, - { - "id": "cody.fixup.conflictedBorder", - "description": "The border of text Cody will edit, if there is a conflict with your changes.", - "defaults": { - "light": "mergeEditor.conflict.unhandledUnfocused.border", - "dark": "mergeEditor.conflict.unhandledUnfocused.border" - } - }, - { - "id": "cody.fixup.incomingBackground", - "description": "The background of text Cody will edit.", - "defaults": { - "light": "merge.incomingContentBackground", - "dark": "merge.incomingContentBackground" - } - }, - { - "id": "cody.fixup.incomingBorder", - "description": "The border around text Cody will edit.", - "defaults": { - "light": "#436EB1", - "dark": "#436EB1" - } - } - ], - "viewsContainers": { - "activitybar": [ - { - "id": "cody", - "title": "Cody", - "icon": "resources/cody.svg" - } - ] - }, - "views": { - "cody": [ - { - "type": "webview", - "id": "cody.chat", - "name": "Chat", - "when": "!cody.activated" - }, - { - "id": "cody.commands.tree.view", - "name": "Commands", - "when": "cody.activated" - }, - { - "id": "cody.chat.tree.view", - "name": "Chats", - "when": "cody.activated" - }, - { - "type": "webview", - "id": "cody.search", - "name": "Natural Language Search (Beta)", - "visibility": "visible", - "when": "cody.activated" - }, - { - "id": "cody.support.tree.view", - "name": "Settings & Support", - "when": "cody.activated" - } - ] - }, - "viewsWelcome": [ - { - "view": "cody.chat.tree.view", - "contents": "Chat alongside your code, attach files, add additional context, and try different chat models.\n[New Chat](command:cody.chat.panel.new)", - "when": "cody.activated" - } - ], - "commands": [ - { - "command": "cody.welcome", - "title": "Getting Started Guide", - "category": "Cody", - "group": "Cody", - "icon": "$(book)" - }, - { - "command": "cody.feedback", - "title": "Feedback", - "category": "Cody", - "group": "Cody", - "icon": "$(feedback)" - }, - { - "command": "cody.command.explain-output", - "title": "Ask Cody to Explain", - "category": "Cody Command", - "icon": "$(cody-logo)" - }, - { - "command": "cody.command.edit-code", - "category": "Cody Command", - "title": "Edit Code", - "when": "cody.activated && editorTextFocus", - "icon": "$(wand)" - }, - { - "command": "cody.command.explain-code", - "category": "Cody Command", - "title": "Explain Code", - "icon": "$(output)", - "when": "cody.activated && editorFocus" - }, - { - "command": "cody.command.unit-tests", - "category": "Cody Command", - "title": "Generate Unit Tests", - "icon": "$(package)", - "when": "cody.activated && editorTextFocus" - }, - { - "command": "cody.command.document-code", - "category": "Cody Command", - "title": "Document Code", - "icon": "$(book)", - "when": "cody.activated && editorTextFocus" - }, - { - "command": "cody.command.smell-code", - "category": "Cody Command", - "title": "Find Code Smells", - "icon": "$(checklist)", - "when": "cody.activated && editorFocus" - }, - { - "command": "cody.menu.custom-commands", - "category": "Cody Command", - "title": "Custom Commands", - "icon": "$(tools)", - "when": "cody.activated && workspaceFolderCount > 0" - }, - { - "command": "cody.command.context-search", - "category": "Cody", - "title": "Codebase Context Search", - "when": "cody.activated && workspaceFolderCount > 0" - }, - { - "command": "cody.auth.signout", - "category": "Cody", - "title": "Sign Out", - "icon": "$(sign-out)" - }, - { - "command": "cody.auth.signin", - "category": "Cody", - "title": "Switch Account…" - }, - { - "command": "cody.settings.extension", - "category": "Cody", - "title": "Extension Settings", - "group": "Cody", - "icon": "$(gear)" - }, - { - "command": "cody.settings.extension.chat", - "category": "Cody", - "title": "Chat Settings", - "group": "Cody", - "icon": "$(gear)" - }, - { - "command": "cody.focus", - "category": "Cody", - "title": "Sign In" - }, - { - "command": "cody.status-bar.interacted", - "category": "Cody", - "title": "Cody Settings", - "group": "Cody", - "icon": "$(settings-gear)", - "when": "cody.activated" - }, - { - "command": "cody.show-page", - "category": "Cody", - "title": "Open Account Page", - "group": "Cody", - "when": "cody.activated" - }, - { - "command": "cody.show-rate-limit-modal", - "category": "Cody", - "title": "Show Rate Limit Modal", - "group": "Cody", - "when": "cody.activated" - }, - { - "command": "cody.guardrails.debug", - "category": "Cody", - "title": "Guardrails Debug Attribution", - "enablement": "config.cody.experimental.guardrails && editorHasSelection" - }, - { - "command": "cody.menu.commands", - "category": "Cody", - "title": "Commands", - "when": "cody.activated", - "icon": "$(cody-logo)" - }, - { - "command": "cody.autocomplete.openTraceView", - "category": "Cody", - "title": "Open Autocomplete Trace View", - "when": "cody.activated && config.cody.autocomplete && config.cody.debug.enable && editorHasFocus && !editorReadonly" - }, - { - "command": "cody.autocomplete.manual-trigger", - "category": "Cody", - "title": "Trigger Autocomplete at Cursor", - "when": "cody.activated && config.cody.autocomplete && editorHasFocus && !editorReadonly && !editorHasSelection && !inlineSuggestionsVisible" - }, - { - "command": "cody.chat.panel.new", - "category": "Cody", - "title": "New Chat Panel", - "when": "cody.activated", - "group": "Cody", - "icon": "$(new-comment-icon)" - }, - { - "command": "cody.chat.tree.view.focus", - "category": "Cody", - "title": "Open Cody Sidebar", - "group": "Cody", - "icon": "$(layout-sidebar-left)" - }, - { - "command": "cody.chat.history.edit", - "category": "Cody", - "title": "Rename Chat", - "group": "Cody", - "icon": "$(edit)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.chat.history.clear", - "category": "Cody", - "title": "Delete All Chats", - "group": "Cody", - "icon": "$(trash)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.chat.history.delete", - "category": "Cody", - "title": "Delete Chat", - "group": "Cody", - "icon": "$(trash)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.chat.history.export", - "category": "Cody", - "title": "Export Chats as JSON", - "group": "Cody", - "icon": "$(arrow-circle-down)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.chat.history.panel", - "category": "Cody", - "title": "Chat History", - "group": "Cody", - "icon": "$(list-unordered)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.search.index-update", - "category": "Cody", - "group": "Cody", - "title": "Update search index for current workspace folder", - "icon": "$(refresh)", - "when": "cody.activated" - }, - { - "command": "cody.search.index-update-all", - "category": "Cody", - "group": "Cody", - "title": "Update search indices for all workspace folders", - "icon": "$(sync)", - "when": "cody.activated" - }, - { - "command": "cody.chat.panel.reset", - "category": "Cody", - "title": "New Chat Session", - "group": "Cody", - "icon": "$(clear-all)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.embeddings.resolveIssue", - "title": "Cody Embeddings", - "when": "cody.embeddings.hasIssue" - } - ], - "keybindings": [ - { - "command": "cody.chat.focus", - "key": "alt+/", - "when": "!cody.activated" - }, - { - "command": "cody.chat.tree.view.focus", - "key": "alt+f1", - "when": "cody.activated" - }, - { - "command": "cody.chat.panel.new", - "key": "alt+/", - "when": "cody.activated" - }, - { - "command": "cody.chat.panel.new", - "key": "alt+l", - "when": "cody.activated" - }, - { - "command": "cody.command.edit-code", - "key": "ctrl+shift+v", - "mac": "shift+cmd+v", - "when": "cody.activated && !editorReadonly" - }, - { - "command": "cody.command.edit-code", - "key": "alt+k", - "when": "cody.activated && !editorReadonly" - }, - { - "command": "cody.menu.commands", - "key": "alt+c", - "mac": "alt+c", - "when": "cody.activated" - }, - { - "command": "-github.copilot.generate", - "key": "ctrl+enter" - }, - { - "command": "cody.autocomplete.manual-trigger", - "key": "alt+\\", - "when": "editorTextFocus && !editorHasSelection && config.cody.autocomplete.enabled && !inlineSuggestionsVisible" - } - ], - "submenus": [ - { - "label": "Cody", - "id": "cody.submenu" - } - ], - "menus": { - "commandPalette": [ - { - "command": "cody.command.edit-code", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.command.explain-code", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.command.context-search", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.command.smell-code", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.command.unit-tests", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.command.document-code", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.menu.custom-commands", - "when": "cody.activated" - }, - { - "command": "cody.embeddings.resolveIssue", - "when": "false" - }, - { - "command": "cody.focus", - "title": "Cody: Sign In", - "when": "!cody.activated" - }, - { - "command": "cody.guardrails.debug", - "when": "config.cody.experimental.guardrails && editorHasSelection" - }, - { - "command": "cody.show-page", - "when": "false" - }, - { - "command": "cody.show-rate-limit-modal", - "when": "false" - } - ], - "editor/context": [ - { - "submenu": "cody.submenu", - "group": "0_cody" - } - ], - "cody.submenu": [ - { - "command": "cody.chat.panel.new", - "when": "cody.activated", - "group": "ask" - }, - { - "command": "cody.command.explain-code", - "when": "cody.activated", - "group": "command" - }, - { - "command": "cody.command.edit-code", - "when": "cody.activated", - "group": "ask" - }, - { - "command": "cody.command.unit-tests", - "when": "cody.activated", - "group": "command" - }, - { - "command": "cody.command.document-code", - "when": "cody.activated", - "group": "command" - }, - { - "command": "cody.command.smell-code", - "when": "cody.activated", - "group": "command" - }, - { - "command": "cody.menu.custom-commands", - "when": "cody.activated", - "group": "custom-commands" - }, - { - "command": "cody.focus", - "when": "!cody.activated", - "group": "other" - }, - { - "command": "cody.guardrails.debug", - "when": "cody.activated && config.cody.experimental.guardrails && editorHasSelection", - "group": "other" - } - ], - "view/title": [ - { - "command": "cody.chat.panel.new", - "when": "view == cody.chat.tree.view && cody.activated", - "group": "navigation@1" - }, - { - "command": "cody.chat.history.clear", - "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory", - "enablement": "cody.hasChatHistory", - "group": "navigation@2" - }, - { - "command": "cody.chat.history.export", - "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory", - "enablement": "cody.hasChatHistory", - "group": "navigation@3" - }, - { - "command": "cody.welcome", - "when": "view == cody.support.tree.view", - "group": "7_cody@0" - }, - { - "command": "cody.search.index-update", - "when": "view == cody.search && cody.activated", - "group": "navigation@1" - }, - { - "command": "cody.search.index-update-all", - "when": "view == cody.search && cody.activated", - "group": "navigation@2" - } - ], - "editor/title": [ - { - "command": "cody.menu.commands", - "when": "cody.activated && config.cody.editorTitleCommandIcon && !editorReadonly && (resourceScheme == file || activeWebviewPanelId == cody.chatPanel)", - "group": "navigation", - "visibility": "visible" - }, - { - "command": "cody.chat.panel.new", - "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", - "group": "navigation@1", - "visibility": "visible" - }, - { - "command": "cody.chat.history.panel", - "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", - "group": "navigation@2", - "visibility": "visible" - }, - { - "command": "cody.settings.extension.chat", - "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", - "group": "navigation@3", - "visibility": "visible" - } - ], - "view/item/context": [ - { - "command": "cody.chat.history.edit", - "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory && viewItem == cody.chats", - "group": "inline@1" - }, - { - "command": "cody.chat.history.delete", - "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory && viewItem == cody.chats", - "group": "inline@2" - } - ], - "terminal/context": [ - { - "command": "cody.command.explain-output", - "group": "0_cody", - "when": "cody.activated" - } - ] - }, - "configuration": { - "type": "object", - "title": "Cody", - "properties": { - "cody.serverEndpoint": { - "order": 1, - "type": "string", - "description": "URL to the Sourcegraph instance.", - "examples": "https://example.sourcegraph.com", - "markdownDeprecationMessage": "**Deprecated**: Please sign in via the UI instead. If you are already signed in, you can empty this field to remove this warning.", - "deprecationMessage": "Deprecated: Please sign in via the UI instead." - }, - "cody.proxy": { - "type": "string", - "markdownDeprecationMessage": "The SOCKS proxy endpoint to access server endpoint. This is only supported with some autocomplete providers and only for use with the Cody Agent (for instance with JetBrains plugin). For VS Code please use http.proxy instead." - }, - "cody.codebase": { - "order": 2, - "type": "string", - "markdownDescription": "A Git repository URL to use instead of allowing Cody to infer the Git repository from the workspace.", - "examples": [ - "https://github.com/sourcegraph/cody", - "ssh://git@github.com/sourcegraph/cody" - ] - }, - "cody.useContext": { - "order": 99, - "type": "string", - "enum": [ - "embeddings", - "keyword", - "blended", - "none" - ], - "default": "blended", - "markdownDescription": "Controls which context providers Cody uses for chat, commands and inline edits. Use 'blended' for best results. For debugging other context sources, 'embeddings' will use an embeddings-based index if available. 'keyword' will use a search-based index. 'none' will not use embeddings or search-based indexes." - }, - "cody.customHeaders": { - "order": 4, - "type": "object", - "markdownDescription": "Adds custom HTTP headers to all network requests to the Sourcegraph endpoint. Defining required headers here ensures requests are properly forwarded through intermediary proxy servers, which may mandate certain custom headers for internal or external communication.", - "default": {}, - "examples": [ - { - "Cache-Control": "no-cache", - "Proxy-Authenticate": "Basic" - } - ] - }, - "cody.autocomplete.enabled": { - "order": 5, - "type": "boolean", - "markdownDescription": "Enables code autocompletions.", - "default": true - }, - "cody.autocomplete.languages": { - "order": 5, - "type": "object", - "markdownDescription": "Enables or disables code autocompletions for specified [language ids](https://code.visualstudio.com/docs/languages/identifiers). `\"*\"` is the default fallback if no language-specific setting is found.\n\nThe default setting: \n\n```json\n{\n \"*\": true\n}\n```\n\nTo disable autocomplete for a given [language id](https://code.visualstudio.com/docs/languages/identifiers#_known-language-identifiers) set its value to `false`, for example:\n\n```json\n{\n \"*\": true,\n \"plaintext\": false\n}\n```", - "default": { - "*": true - }, - "examples": [ - { - "*": true, - "plaintext": false - } - ] - }, - "cody.editorTitleCommandIcon": { - "order": 7, - "type": "boolean", - "markdownDescription": "Adds a Cody icon to the editor title menu for quick access to Cody commands.", - "default": true - }, - "cody.commandCodeLenses": { - "order": 8, - "type": "boolean", - "markdownDescription": "Adds code lenses to current file for quick access to Cody commands.", - "default": false - }, - "cody.experimental.guardrails": { - "order": 9, - "type": "boolean", - "markdownDescription": "Experimental feature for internal use.", - "default": false - }, - "cody.experimental.localSymbols": { - "order": 9, - "type": "boolean", - "default": false, - "markdownDescription": "Experimental feature for internal use." - }, - "cody.chat.preInstruction": { - "order": 6, - "type": "string", - "markdownDescription": "A custom instruction to be included at the start of all chat messages. (E.g., \"Answer all my questions in Spanish.\")", - "examples": [ - "Answer all my questions in Spanish." - ] - }, - "cody.codeActions.enabled": { - "order": 11, - "title": "Cody Code Actions", - "type": "boolean", - "markdownDescription": "Add Cody options to Quick Fix menus for fixing, explaining, documenting, and editing code.", - "default": true - }, - "cody.commandHints.enabled": { - "order": 12, - "title": "Cody Command Hints", - "type": "boolean", - "markdownDescription": "Enable hints for Edit and Chat shortcuts, displayed alongside editor selections.", - "default": false - }, - "cody.experimental.simpleChatContext": { - "order": 99, - "type": "boolean", - "markdownDescription": "Uses the new simplifed chat context fetcher", - "default": true - }, - "cody.experimental.symfContext": { - "order": 99, - "type": "boolean", - "markdownDescription": "Enable symf code search context for chat", - "default": true - }, - "cody.experimental.symf.path": { - "order": 99, - "type": "string", - "markdownDescription": "Path to symf binary", - "default": "" - }, - "cody.experimental.tracing": { - "order": 99, - "type": "boolean", - "markdownDescription": "Enable OpenTelemetry tracing", - "default": false - }, - "cody.debug.enable": { - "order": 99, - "type": "boolean", - "markdownDescription": "Turns on debug output (visible in the VS Code Output panel under \"Cody by Sourcegraph\")" - }, - "cody.debug.verbose": { - "order": 99, - "type": "boolean", - "markdownDescription": "Enables verbose debug output. Debug messages may contain more details if the invocation includes verbose information." - }, - "cody.debug.filter": { - "order": 99, - "type": "string", - "markdownDescription": "Regular expression to filter debug output. If empty, defaults to '.*', which prints all messages." - }, - "cody.telemetry.level": { - "order": 99, - "type": "string", - "enum": [ - "all", - "off" - ], - "enumDescriptions": [ - "Sends usage data and errors.", - "Disables all extension telemetry." - ], - "markdownDescription": "Controls the telemetry about Cody usage and errors. See [Cody usage and privacy notice](https://about.sourcegraph.com/terms/cody-notice).", - "default": "all" - }, - "cody.autocomplete.advanced.provider": { - "type": "string", - "default": null, - "enum": [ - null, - "anthropic", - "fireworks", - "unstable-openai", - "unstable-ollama" - ], - "markdownDescription": "The provider used for code autocomplete. Most providers other than `anthropic` require the `cody.autocomplete.advanced.serverEndpoint` and `cody.autocomplete.advanced.accessToken` settings to also be set. Check the Cody output channel for error messages if autocomplete is not working as expected." - }, - "cody.autocomplete.advanced.serverEndpoint": { - "type": "string", - "markdownDescription": "The server endpoint used for code autocomplete. This is only supported with a provider other than `anthropic`." - }, - "cody.autocomplete.advanced.accessToken": { - "type": "string", - "markdownDescription": "The access token used for code autocomplete. This is only supported with a provider other than `anthropic`." - }, - "cody.autocomplete.advanced.model": { - "type": "string", - "default": null, - "enum": [ - null, - "starcoder-16b", - "starcoder-7b", - "starcoder-3b", - "starcoder-1b", - "llama-code-7b", - "llama-code-13b", - "llama-code-13b-instruct", - "mistral-7b-instruct-4k" - ], - "markdownDescription": "Overwrite the model used for code autocompletion inference. This is only supported with the `fireworks` provider" - }, - "cody.autocomplete.completeSuggestWidgetSelection": { - "type": "boolean", - "default": true, - "markdownDescription": "Autocomplete based on the currently selection in the suggest widget. Requires the VS Code user setting `editor.inlineSuggest.suppressSuggestions` set to true and will change it to true in user settings if it is not true." - }, - "cody.autocomplete.formatOnAccept": { - "type": "boolean", - "default": false, - "markdownDescription": "Format completions on accept using [the default document formatter](https://code.visualstudio.com/docs/editor/codebasics#_formatting)." - }, - "cody.experimental.foldingRanges": { - "type": "string", - "enum": [ - "lsp", - "indentation-based" - ], - "enumDescriptions": [ - "Use folding ranges that are enabled by default in VS Code, and are usually powered by LSP", - "Use custom implementation of folding ranges that is indentation based. This is the implementation that is used by other Cody clients like the JetBrains plugin" - ], - "markdownDescription": "Determines the algorithm Cody uses to detect folding ranges. Cody uses folding ranges for several features like the 'Document code' command", - "default": "all" - }, - "cody.autocomplete.experimental.syntacticPostProcessing": { - "type": "boolean", - "default": true, - "markdownDescription": "Rank autocomplete results with tree-sitter." - }, - "cody.autocomplete.experimental.dynamicMultilineCompletions": { - "type": "boolean", - "default": false, - "markdownDescription": "Dynamically switch from singleline to multiline completion based on the first completion line." - }, - "cody.autocomplete.experimental.hotStreak": { - "type": "boolean", - "default": false, - "markdownDescription": "Preload follow-up completions" - }, - "cody.autocomplete.experimental.fastPath": { - "type": "boolean", - "default": false, - "markdownDescription": "Routes code completion requests directly to our Cody Gateway instance. Only works when connected to the Cody community edition and when using the default StarCoder model." - }, - "cody.autocomplete.experimental.graphContext": { - "type": "string", - "default": null, - "enum": [ - null, - "bfg", - "bfg-mixed" - ], - "markdownDescription": "Use the code graph to retrieve context for autocomplete requests." - }, - "cody.autocomplete.experimental.ollamaOptions": { - "type": "object", - "markdownDescription": "Options for the [Ollama](https://ollama.ai/) experimental autocomplete provider.", - "default": { - "url": "http://localhost:11434", - "model": "deepseek-coder:6.7b-base-q4_K_M" - }, - "properties": { - "url": { - "type": "string", - "description": "The URL of the Ollama API.", - "default": "http://localhost:11434" - }, - "model": { - "type": "string", - "default": "deepseek-coder:6.7b-base-q4_K_M", - "examples": [ - "codellama:7b-code", - "codellama:13b-code", - "deepseek-coder:6.7b-base-q4_K_M" - ] - }, - "parameters": { - "type": "object", - "description": "Parameters for how Ollama will run the model. See Ollama [PARAMETER documentation](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-request-with-options).", - "properties": { - "num_ctx": "number", - "temperature": "number", - "top_k": "number", - "top_p": "number" - } - } - } - }, - "cody.internal.unstable": { - "order": 999, - "type": "boolean", - "markdownDescription": "[INTERNAL ONLY] Enable all unstable experimental features.", - "default": false - } - } - }, - "icons": { - "cody-logo": { - "description": "Cody logo", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0041" - } - }, - "cody-logo-heavy": { - "description": "Cody logo heavy", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0042" - } - }, - "anthropic-logo": { - "description": "Anthropic logo", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0043" - } - }, - "openai-logo": { - "description": "OpenAI logo", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0044" - } - }, - "mistral-logo": { - "description": "Mistral logo", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0045" - } - }, - "new-comment-icon": { - "description": "Cody logo heavy", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0048" - } - } - } - }, - "dependencies": { - "@anthropic-ai/sdk": "^0.4.2", - "@opentelemetry/api": "^1.7.0", - "@opentelemetry/auto-instrumentations-node": "^0.41.1", - "@opentelemetry/core": "^1.18.1", - "@opentelemetry/exporter-trace-otlp-http": "^0.45.1", - "@opentelemetry/instrumentation-http": "^0.45.1", - "@opentelemetry/resources": "^1.18.1", - "@opentelemetry/sdk-node": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.18.1", - "@opentelemetry/semantic-conventions": "^1.18.1", - "@sentry/browser": "^7.66.0", - "@sentry/core": "^7.66.0", - "@sentry/node": "^7.66.0", - "@sourcegraph/cody-shared": "workspace:*", - "@sourcegraph/cody-ui": "workspace:*", - "@sourcegraph/telemetry": "^0.16.0", - "@storybook/preview-api": "^7.6.2", - "@vscode/codicons": "^0.0.35", - "@vscode/webview-ui-toolkit": "^1.2.2", - "async-mutex": "^0.4.0", - "axios": "^1.3.6", - "classnames": "^2.3.2", - "crypto-js": "^4.2.0", - "detect-indent": "^7.0.1", - "fast-xml-parser": "^4.3.2", - "glob": "^7.2.3", - "isomorphic-fetch": "^3.0.0", - "js-levenshtein": "^1.1.6", - "lodash": "^4.17.21", - "lru-cache": "^10.0.0", - "mkdirp": "^3.0.1", - "os-browserify": "^0.3.0", - "socks-proxy-agent": "^8.0.1", - "unzipper": "^0.10.14", - "uuid": "^9.0.0", - "vscode-languageserver-textdocument": "^1.0.8", - "vscode-uri": "^3.0.7", - "web-tree-sitter": "^0.20.8", - "wink-nlp-utils": "^2.1.0" - }, - "devDependencies": { - "@google-cloud/pubsub": "^3.7.3", - "@playwright/test": "1.39.0", - "@pollyjs/adapter-node-http": "^6.0.6", - "@pollyjs/core": "^6.0.6", - "@pollyjs/persister": "^6.0.6", - "@pollyjs/persister-fs": "^6.0.6", - "@types/axios": "^0.14.0", - "@types/blueimp-md5": "^2.18.2", - "@types/crypto-js": "^4.2.2", - "@types/dedent": "^0.7.0", - "@types/express": "^4.17.17", - "@types/fs-extra": "^11.0.4", - "@types/glob": "^8.0.0", - "@types/isomorphic-fetch": "^0.0.39", - "@types/js-levenshtein": "^1.1.1", - "@types/lodash": "^4.14.195", - "@types/mocha": "^10.0.1", - "@types/pako": "^2.0.3", - "@types/progress": "^2.0.5", - "@types/semver": "^7.5.0", - "@types/unzipper": "^0.10.7", - "@types/uuid": "^9.0.2", - "@types/vscode": "^1.79.0", - "@types/yaml": "^1.9.7", - "@vscode/test-electron": "^2.3.8", - "@vscode/test-web": "^0.0.47", - "@vscode/vsce": "^2.22.0", - "blueimp-md5": "^2.19.0", - "concurrently": "^8.2.0", - "dedent": "^0.7.0", - "express": "^4.18.2", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^11.2.0", - "fuzzysort": "^2.0.4", - "mocha": "^10.2.0", - "ovsx": "^0.8.2", - "pako": "^2.1.0", - "path-browserify": "^1.0.1", - "playwright": "1.39.0", - "progress": "^2.0.3", - "semver": "^7.5.4", - "yaml": "^2.3.4" - } -} + "name": "cody-ai", + "private": true, + "displayName": "Cody AI", + "version": "1.2.2", + "publisher": "sourcegraph", + "license": "Apache-2.0", + "icon": "resources/cody.png", + "description": "Code AI with codebase context", + "scripts": { + "postinstall": "pnpm download-wasm", + "dev": "pnpm run -s dev:desktop", + "dev:insiders": "pnpm run -s dev:desktop:insiders", + "start:dev:desktop": "NODE_ENV=development code --extensionDevelopmentPath=$PWD --disable-extension=sourcegraph.cody-ai --disable-extension=github.copilot --inspect-extensions=9333 --new-window . --goto ./src/completions/inline-completion-item-provider.ts:16:5", + "dev:desktop": "pnpm run -s build:dev:desktop && pnpm run start:dev:desktop", + "dev:desktop:insiders": "pnpm run -s build:dev:desktop && NODE_ENV=development code-insiders --extensionDevelopmentPath=$PWD --disable-extension=sourcegraph.cody-ai --disable-extension=github.copilot --inspect-extensions=9333 --new-window . --goto ./src/completions/inline-completion-item-provider.ts:16:5", + "dev:web": "pnpm run -s build:dev:web && pnpm run -s _dev:vscode-test-web --browserType none", + "watch:dev:web": "concurrently \"pnpm run -s watch:build:dev:web\" \"pnpm run -s _dev:vscode-test-web --browserType none\"", + "_dev:vscode-test-web": "vscode-test-web --extensionDevelopmentPath=. ${WORKSPACE-test/fixtures/workspace}", + "build": "tsc --build && pnpm run -s _build:esbuild:desktop && pnpm run -s _build:esbuild:web && pnpm run -s _build:webviews --mode production", + "_build:desktop": "pnpm run -s _build:esbuild:desktop && pnpm run -s _build:webviews --mode production", + "_build:web": "pnpm run -s _build:esbuild:web && pnpm run -s _build:webviews --mode production", + "build:dev:desktop": "concurrently \"pnpm run -s _build:esbuild:desktop --alias:@sourcegraph/cody-shared=@sourcegraph/cody-shared/src/index --alias:@sourcegraph/cody-shared/src=@sourcegraph/cody-shared/src --alias:@sourcegraph/cody-ui=@sourcegraph/cody-ui/src/index --alias:@sourcegraph/cody-ui/src=@sourcegraph/cody-ui/src\" \"pnpm run -s _build:webviews --mode development\"", + "build:dev:web": "concurrently \"pnpm run -s _build:esbuild:web --alias:@sourcegraph/cody-shared=@sourcegraph/cody-shared/src/index --alias:@sourcegraph/cody-shared/src=@sourcegraph/cody-shared/src --alias:@sourcegraph/cody-ui=@sourcegraph/cody-ui/src/index --alias:@sourcegraph/cody-ui/src=@sourcegraph/cody-ui/src\" \"pnpm run -s _build:webviews --mode development\"", + "watch:build:dev:web": "concurrently \"pnpm run -s _build:esbuild:web --watch\" \"pnpm run -s _build:webviews --mode development --watch\"", + "watch:build:dev:desktop": "concurrently \"pnpm run -s _build:esbuild:desktop --watch\" \"pnpm run -s _build:webviews --mode development --watch\"", + "_build:esbuild:desktop": "pnpm download-wasm && esbuild ./src/extension.node.ts --bundle --outfile=dist/extension.node.js --external:vscode --format=cjs --platform=node --sourcemap", + "_build:esbuild:web": "esbuild ./src/extension.web.ts --platform=browser --bundle --outfile=dist/extension.web.js --alias:path=path-browserify --alias:os=os-browserify --external:vscode --define:process='{\"env\":{}}' --define:window=self --format=cjs --sourcemap", + "_build:webviews": "vite -c webviews/vite.config.ts build", + "release": "ts-node-transpile-only ./scripts/release.ts", + "download-wasm": "ts-node-transpile-only ./scripts/download-wasm-modules.ts", + "release:dry-run": "pnpm run download-wasm && CODY_RELEASE_DRY_RUN=1 ts-node ./scripts/release.ts", + "storybook": "storybook dev -p 6007 --no-open --no-version-updates --no-release-notes", + "test:e2e": "tsc --build && node dist/tsc/test/e2e/install-deps.js && pnpm run -s build:dev:desktop && playwright test", + "test:integration": "tsc --build ./test/integration && pnpm run -s build:dev:desktop && node --inspect -r ts-node/register dist/tsc/test/integration/main.js", + "test:unit": "vitest", + "vscode:prepublish": "pnpm -s run build", + "test:unit:tree-sitter-queries": "vitest ./src/tree-sitter/query-tests/*.test.ts", + "github-changelog": "ts-node-transpile-only ./scripts/github-changelog.ts" + }, + "categories": ["Programming Languages", "Machine Learning", "Snippets", "Education"], + "keywords": [ + "ai", + "openai", + "anthropic", + "assistant", + "chatbot", + "chat", + "refactor", + "documentation", + "test", + "sourcegraph", + "codey", + "llm", + "codegen", + "autocomplete", + "bot", + "model", + "typescript", + "javascript", + "python", + "golang", + "go", + "html", + "css", + "java", + "php", + "swift", + "kotlin" + ], + "repository": { + "type": "git", + "url": "https://github.com/sourcegraph/cody", + "directory": "vscode" + }, + "bugs": { + "url": "https://github.com/sourcegraph/cody/issues" + }, + "homepage": "https://sourcegraph.com/docs/cody", + "badges": [ + { + "url": "https://img.shields.io/discord/969688426372825169?color=5765F2", + "href": "https://srcgr.ph/discord", + "description": "Discord" + } + ], + "engines": { + "vscode": "^1.79.0" + }, + "main": "./dist/extension.node.js", + "browser": "./dist/extension.web.js", + "activationEvents": ["onLanguage", "onStartupFinished", "onWebviewPanel:cody.chatPanel"], + "contributes": { + "walkthroughs": [ + { + "id": "welcome", + "title": "Getting Started with Cody", + "description": "Discover how Cody can help you write, understand and fix code faster", + "steps": [ + { + "id": "autocomplete", + "title": "Code Autocomplete", + "description": "Start writing code and Cody will complete the line (or the entire function) for you. Hit tab to accept the suggestion.", + "media": { + "markdown": "walkthroughs/autocomplete.md" + } + }, + { + "id": "chat", + "title": "Cody Chat", + "description": "Answer questions about general programming topics, or specific to your codebase, with Cody chat.\n[Open Chat](command:cody.walkthrough.showChat)", + "media": { + "markdown": "walkthroughs/chat.md" + } + }, + { + "id": "edit", + "title": "Edit Code", + "description": "Ask Cody to perform code edits with your instructions.", + "media": { + "markdown": "walkthroughs/edit.md" + } + }, + { + "id": "fix", + "title": "Fix Code", + "description": "Use Cody to fix or explain problems in your code.", + "media": { + "markdown": "walkthroughs/fix.md" + } + }, + { + "id": "commands", + "title": "Cody Commands", + "description": "Discover all the built-in Cody commands, and create your own custom commands.\n[Show Commands](command:cody.commands.tree.view.focus)", + "media": { + "markdown": "walkthroughs/commands.md" + } + }, + { + "id": "search", + "title": "Natural Language Search (Beta)", + "description": "Easily find what you're looking for with Cody Natural Language Search.\n[Show Search](command:cody.search.focus)", + "media": { + "markdown": "walkthroughs/search.md" + } + } + ] + } + ], + "colors": [ + { + "id": "cody.fixup.conflictBackground", + "description": "The background of text Cody will edit where there is a specific conflict with your changes.", + "defaults": { + "light": "mergeEditor.conflictingLines.background", + "dark": "mergeEditor.conflictingLines.background" + } + }, + { + "id": "cody.fixup.conflictBorder", + "description": "The border of text Cody will edit, if there is a conflict with your changes.", + "defaults": { + "light": "mergeEditor.conflict.unhandledFocused.border", + "dark": "mergeEditor.conflict.unhandledFocused.border" + } + }, + { + "id": "cody.fixup.conflictedBackground", + "description": "The background of text Cody will edit, if there is a conflict with your changes.", + "defaults": { + "light": "#ffffff00", + "dark": "#00000000" + } + }, + { + "id": "cody.fixup.conflictedBorder", + "description": "The border of text Cody will edit, if there is a conflict with your changes.", + "defaults": { + "light": "mergeEditor.conflict.unhandledUnfocused.border", + "dark": "mergeEditor.conflict.unhandledUnfocused.border" + } + }, + { + "id": "cody.fixup.incomingBackground", + "description": "The background of text Cody will edit.", + "defaults": { + "light": "merge.incomingContentBackground", + "dark": "merge.incomingContentBackground" + } + }, + { + "id": "cody.fixup.incomingBorder", + "description": "The border around text Cody will edit.", + "defaults": { + "light": "#436EB1", + "dark": "#436EB1" + } + } + ], + "viewsContainers": { + "activitybar": [ + { + "id": "cody", + "title": "Cody", + "icon": "resources/cody.svg" + } + ] + }, + "views": { + "cody": [ + { + "type": "webview", + "id": "cody.chat", + "name": "Chat", + "when": "!cody.activated" + }, + { + "id": "cody.commands.tree.view", + "name": "Commands", + "when": "cody.activated" + }, + { + "id": "cody.chat.tree.view", + "name": "Chats", + "when": "cody.activated" + }, + { + "type": "webview", + "id": "cody.search", + "name": "Natural Language Search (Beta)", + "visibility": "visible", + "when": "cody.activated" + }, + { + "id": "cody.support.tree.view", + "name": "Settings & Support", + "when": "cody.activated" + } + ] + }, + "viewsWelcome": [ + { + "view": "cody.chat.tree.view", + "contents": "Chat alongside your code, attach files, add additional context, and try different chat models.\n[New Chat](command:cody.chat.panel.new)", + "when": "cody.activated" + } + ], + "commands": [ + { + "command": "cody.welcome", + "title": "Getting Started Guide", + "category": "Cody", + "group": "Cody", + "icon": "$(book)" + }, + { + "command": "cody.feedback", + "title": "Feedback", + "category": "Cody", + "group": "Cody", + "icon": "$(feedback)" + }, + { + "command": "cody.command.explain-output", + "title": "Ask Cody to Explain", + "category": "Cody Command", + "icon": "$(cody-logo)" + }, + { + "command": "cody.command.edit-code", + "category": "Cody Command", + "title": "Edit Code", + "when": "cody.activated && editorTextFocus", + "icon": "$(wand)" + }, + { + "command": "cody.command.explain-code", + "category": "Cody Command", + "title": "Explain Code", + "icon": "$(output)", + "when": "cody.activated && editorFocus" + }, + { + "command": "cody.command.unit-tests", + "category": "Cody Command", + "title": "Generate Unit Tests", + "icon": "$(package)", + "when": "cody.activated && editorTextFocus" + }, + { + "command": "cody.command.document-code", + "category": "Cody Command", + "title": "Document Code", + "icon": "$(book)", + "when": "cody.activated && editorTextFocus" + }, + { + "command": "cody.command.smell-code", + "category": "Cody Command", + "title": "Find Code Smells", + "icon": "$(checklist)", + "when": "cody.activated && editorFocus" + }, + { + "command": "cody.menu.custom-commands", + "category": "Cody Command", + "title": "Custom Commands", + "icon": "$(tools)", + "when": "cody.activated && workspaceFolderCount > 0" + }, + { + "command": "cody.command.context-search", + "category": "Cody", + "title": "Codebase Context Search", + "when": "cody.activated && workspaceFolderCount > 0" + }, + { + "command": "cody.auth.signout", + "category": "Cody", + "title": "Sign Out", + "icon": "$(sign-out)" + }, + { + "command": "cody.auth.signin", + "category": "Cody", + "title": "Switch Account…" + }, + { + "command": "cody.settings.extension", + "category": "Cody", + "title": "Extension Settings", + "group": "Cody", + "icon": "$(gear)" + }, + { + "command": "cody.settings.extension.chat", + "category": "Cody", + "title": "Chat Settings", + "group": "Cody", + "icon": "$(gear)" + }, + { + "command": "cody.focus", + "category": "Cody", + "title": "Sign In" + }, + { + "command": "cody.status-bar.interacted", + "category": "Cody", + "title": "Cody Settings", + "group": "Cody", + "icon": "$(settings-gear)", + "when": "cody.activated" + }, + { + "command": "cody.show-page", + "category": "Cody", + "title": "Open Account Page", + "group": "Cody", + "when": "cody.activated" + }, + { + "command": "cody.show-rate-limit-modal", + "category": "Cody", + "title": "Show Rate Limit Modal", + "group": "Cody", + "when": "cody.activated" + }, + { + "command": "cody.guardrails.debug", + "category": "Cody", + "title": "Guardrails Debug Attribution", + "enablement": "config.cody.experimental.guardrails && editorHasSelection" + }, + { + "command": "cody.menu.commands", + "category": "Cody", + "title": "Commands", + "when": "cody.activated", + "icon": "$(cody-logo)" + }, + { + "command": "cody.autocomplete.openTraceView", + "category": "Cody", + "title": "Open Autocomplete Trace View", + "when": "cody.activated && config.cody.autocomplete && config.cody.debug.enable && editorHasFocus && !editorReadonly" + }, + { + "command": "cody.autocomplete.manual-trigger", + "category": "Cody", + "title": "Trigger Autocomplete at Cursor", + "when": "cody.activated && config.cody.autocomplete && editorHasFocus && !editorReadonly && !editorHasSelection && !inlineSuggestionsVisible" + }, + { + "command": "cody.chat.panel.new", + "category": "Cody", + "title": "New Chat Panel", + "when": "cody.activated", + "group": "Cody", + "icon": "$(new-comment-icon)" + }, + { + "command": "cody.chat.tree.view.focus", + "category": "Cody", + "title": "Open Cody Sidebar", + "group": "Cody", + "icon": "$(layout-sidebar-left)" + }, + { + "command": "cody.chat.history.edit", + "category": "Cody", + "title": "Rename Chat", + "group": "Cody", + "icon": "$(edit)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.chat.history.clear", + "category": "Cody", + "title": "Delete All Chats", + "group": "Cody", + "icon": "$(trash)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.chat.history.delete", + "category": "Cody", + "title": "Delete Chat", + "group": "Cody", + "icon": "$(trash)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.chat.history.export", + "category": "Cody", + "title": "Export Chats as JSON", + "group": "Cody", + "icon": "$(arrow-circle-down)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.chat.history.panel", + "category": "Cody", + "title": "Chat History", + "group": "Cody", + "icon": "$(list-unordered)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.search.index-update", + "category": "Cody", + "group": "Cody", + "title": "Update search index for current workspace folder", + "icon": "$(refresh)", + "when": "cody.activated" + }, + { + "command": "cody.search.index-update-all", + "category": "Cody", + "group": "Cody", + "title": "Update search indices for all workspace folders", + "icon": "$(sync)", + "when": "cody.activated" + }, + { + "command": "cody.chat.panel.reset", + "category": "Cody", + "title": "New Chat Session", + "group": "Cody", + "icon": "$(clear-all)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.embeddings.resolveIssue", + "title": "Cody Embeddings", + "when": "cody.embeddings.hasIssue" + } + ], + "keybindings": [ + { + "command": "cody.chat.focus", + "key": "alt+/", + "when": "!cody.activated" + }, + { + "command": "cody.chat.tree.view.focus", + "key": "alt+f1", + "when": "cody.activated" + }, + { + "command": "cody.chat.panel.new", + "key": "alt+/", + "when": "cody.activated" + }, + { + "command": "cody.chat.panel.new", + "key": "alt+l", + "when": "cody.activated" + }, + { + "command": "cody.command.edit-code", + "key": "ctrl+shift+v", + "mac": "shift+cmd+v", + "when": "cody.activated && !editorReadonly" + }, + { + "command": "cody.command.edit-code", + "key": "alt+k", + "when": "cody.activated && !editorReadonly" + }, + { + "command": "cody.menu.commands", + "key": "alt+c", + "mac": "alt+c", + "when": "cody.activated" + }, + { + "command": "-github.copilot.generate", + "key": "ctrl+enter" + }, + { + "command": "cody.autocomplete.manual-trigger", + "key": "alt+\\", + "when": "editorTextFocus && !editorHasSelection && config.cody.autocomplete.enabled && !inlineSuggestionsVisible" + } + ], + "submenus": [ + { + "label": "Cody", + "id": "cody.submenu" + } + ], + "menus": { + "commandPalette": [ + { + "command": "cody.command.edit-code", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.command.explain-code", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.command.context-search", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.command.smell-code", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.command.unit-tests", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.command.document-code", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.menu.custom-commands", + "when": "cody.activated" + }, + { + "command": "cody.embeddings.resolveIssue", + "when": "false" + }, + { + "command": "cody.focus", + "title": "Cody: Sign In", + "when": "!cody.activated" + }, + { + "command": "cody.guardrails.debug", + "when": "config.cody.experimental.guardrails && editorHasSelection" + }, + { + "command": "cody.show-page", + "when": "false" + }, + { + "command": "cody.show-rate-limit-modal", + "when": "false" + } + ], + "editor/context": [ + { + "submenu": "cody.submenu", + "group": "0_cody" + } + ], + "cody.submenu": [ + { + "command": "cody.chat.panel.new", + "when": "cody.activated", + "group": "ask" + }, + { + "command": "cody.command.explain-code", + "when": "cody.activated", + "group": "command" + }, + { + "command": "cody.command.edit-code", + "when": "cody.activated", + "group": "ask" + }, + { + "command": "cody.command.unit-tests", + "when": "cody.activated", + "group": "command" + }, + { + "command": "cody.command.document-code", + "when": "cody.activated", + "group": "command" + }, + { + "command": "cody.command.smell-code", + "when": "cody.activated", + "group": "command" + }, + { + "command": "cody.menu.custom-commands", + "when": "cody.activated", + "group": "custom-commands" + }, + { + "command": "cody.focus", + "when": "!cody.activated", + "group": "other" + }, + { + "command": "cody.guardrails.debug", + "when": "cody.activated && config.cody.experimental.guardrails && editorHasSelection", + "group": "other" + } + ], + "view/title": [ + { + "command": "cody.chat.panel.new", + "when": "view == cody.chat.tree.view && cody.activated", + "group": "navigation@1" + }, + { + "command": "cody.chat.history.clear", + "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory", + "enablement": "cody.hasChatHistory", + "group": "navigation@2" + }, + { + "command": "cody.chat.history.export", + "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory", + "enablement": "cody.hasChatHistory", + "group": "navigation@3" + }, + { + "command": "cody.welcome", + "when": "view == cody.support.tree.view", + "group": "7_cody@0" + }, + { + "command": "cody.search.index-update", + "when": "view == cody.search && cody.activated", + "group": "navigation@1" + }, + { + "command": "cody.search.index-update-all", + "when": "view == cody.search && cody.activated", + "group": "navigation@2" + } + ], + "editor/title": [ + { + "command": "cody.menu.commands", + "when": "cody.activated && config.cody.editorTitleCommandIcon && !editorReadonly && (resourceScheme == file || activeWebviewPanelId == cody.chatPanel)", + "group": "navigation", + "visibility": "visible" + }, + { + "command": "cody.chat.panel.new", + "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", + "group": "navigation@1", + "visibility": "visible" + }, + { + "command": "cody.chat.history.panel", + "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", + "group": "navigation@2", + "visibility": "visible" + }, + { + "command": "cody.settings.extension.chat", + "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", + "group": "navigation@3", + "visibility": "visible" + } + ], + "view/item/context": [ + { + "command": "cody.chat.history.edit", + "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory && viewItem == cody.chats", + "group": "inline@1" + }, + { + "command": "cody.chat.history.delete", + "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory && viewItem == cody.chats", + "group": "inline@2" + } + ], + "terminal/context": [ + { + "command": "cody.command.explain-output", + "group": "0_cody", + "when": "cody.activated" + } + ] + }, + "configuration": { + "type": "object", + "title": "Cody", + "properties": { + "cody.serverEndpoint": { + "order": 1, + "type": "string", + "description": "URL to the Sourcegraph instance.", + "examples": "https://example.sourcegraph.com", + "markdownDeprecationMessage": "**Deprecated**: Please sign in via the UI instead. If you are already signed in, you can empty this field to remove this warning.", + "deprecationMessage": "Deprecated: Please sign in via the UI instead." + }, + "cody.proxy": { + "type": "string", + "markdownDeprecationMessage": "The SOCKS proxy endpoint to access server endpoint. This is only supported with some autocomplete providers and only for use with the Cody Agent (for instance with JetBrains plugin). For VS Code please use http.proxy instead." + }, + "cody.codebase": { + "order": 2, + "type": "string", + "markdownDescription": "A Git repository URL to use instead of allowing Cody to infer the Git repository from the workspace.", + "examples": [ + "https://github.com/sourcegraph/cody", + "ssh://git@github.com/sourcegraph/cody" + ] + }, + "cody.useContext": { + "order": 99, + "type": "string", + "enum": ["embeddings", "keyword", "blended", "none"], + "default": "blended", + "markdownDescription": "Controls which context providers Cody uses for chat, commands and inline edits. Use 'blended' for best results. For debugging other context sources, 'embeddings' will use an embeddings-based index if available. 'keyword' will use a search-based index. 'none' will not use embeddings or search-based indexes." + }, + "cody.customHeaders": { + "order": 4, + "type": "object", + "markdownDescription": "Adds custom HTTP headers to all network requests to the Sourcegraph endpoint. Defining required headers here ensures requests are properly forwarded through intermediary proxy servers, which may mandate certain custom headers for internal or external communication.", + "default": {}, + "examples": [ + { + "Cache-Control": "no-cache", + "Proxy-Authenticate": "Basic" + } + ] + }, + "cody.autocomplete.enabled": { + "order": 5, + "type": "boolean", + "markdownDescription": "Enables code autocompletions.", + "default": true + }, + "cody.autocomplete.languages": { + "order": 5, + "type": "object", + "markdownDescription": "Enables or disables code autocompletions for specified [language ids](https://code.visualstudio.com/docs/languages/identifiers). `\"*\"` is the default fallback if no language-specific setting is found.\n\nThe default setting: \n\n```json\n{\n \"*\": true\n}\n```\n\nTo disable autocomplete for a given [language id](https://code.visualstudio.com/docs/languages/identifiers#_known-language-identifiers) set its value to `false`, for example:\n\n```json\n{\n \"*\": true,\n \"plaintext\": false\n}\n```", + "default": { + "*": true + }, + "examples": [ + { + "*": true, + "plaintext": false + } + ] + }, + "cody.editorTitleCommandIcon": { + "order": 7, + "type": "boolean", + "markdownDescription": "Adds a Cody icon to the editor title menu for quick access to Cody commands.", + "default": true + }, + "cody.commandCodeLenses": { + "order": 8, + "type": "boolean", + "markdownDescription": "Adds code lenses to current file for quick access to Cody commands.", + "default": false + }, + "cody.experimental.guardrails": { + "order": 9, + "type": "boolean", + "markdownDescription": "Experimental feature for internal use.", + "default": false + }, + "cody.experimental.localSymbols": { + "order": 9, + "type": "boolean", + "default": false, + "markdownDescription": "Experimental feature for internal use." + }, + "cody.chat.preInstruction": { + "order": 6, + "type": "string", + "markdownDescription": "A custom instruction to be included at the start of all chat messages. (E.g., \"Answer all my questions in Spanish.\")", + "examples": ["Answer all my questions in Spanish."] + }, + "cody.codeActions.enabled": { + "order": 11, + "title": "Cody Code Actions", + "type": "boolean", + "markdownDescription": "Add Cody options to Quick Fix menus for fixing, explaining, documenting, and editing code.", + "default": true + }, + "cody.commandHints.enabled": { + "order": 12, + "title": "Cody Command Hints", + "type": "boolean", + "markdownDescription": "Enable hints for Edit and Chat shortcuts, displayed alongside editor selections.", + "default": false + }, + "cody.experimental.simpleChatContext": { + "order": 99, + "type": "boolean", + "markdownDescription": "Uses the new simplifed chat context fetcher", + "default": true + }, + "cody.experimental.symfContext": { + "order": 99, + "type": "boolean", + "markdownDescription": "Enable symf code search context for chat", + "default": true + }, + "cody.experimental.symf.path": { + "order": 99, + "type": "string", + "markdownDescription": "Path to symf binary", + "default": "" + }, + "cody.experimental.tracing": { + "order": 99, + "type": "boolean", + "markdownDescription": "Enable OpenTelemetry tracing", + "default": false + }, + "cody.debug.enable": { + "order": 99, + "type": "boolean", + "markdownDescription": "Turns on debug output (visible in the VS Code Output panel under \"Cody by Sourcegraph\")" + }, + "cody.debug.verbose": { + "order": 99, + "type": "boolean", + "markdownDescription": "Enables verbose debug output. Debug messages may contain more details if the invocation includes verbose information." + }, + "cody.debug.filter": { + "order": 99, + "type": "string", + "markdownDescription": "Regular expression to filter debug output. If empty, defaults to '.*', which prints all messages." + }, + "cody.telemetry.level": { + "order": 99, + "type": "string", + "enum": ["all", "off"], + "enumDescriptions": [ + "Sends usage data and errors.", + "Disables all extension telemetry." + ], + "markdownDescription": "Controls the telemetry about Cody usage and errors. See [Cody usage and privacy notice](https://about.sourcegraph.com/terms/cody-notice).", + "default": "all" + }, + "cody.autocomplete.advanced.provider": { + "type": "string", + "default": null, + "enum": [null, "anthropic", "fireworks", "unstable-openai", "unstable-ollama"], + "markdownDescription": "The provider used for code autocomplete. Most providers other than `anthropic` require the `cody.autocomplete.advanced.serverEndpoint` and `cody.autocomplete.advanced.accessToken` settings to also be set. Check the Cody output channel for error messages if autocomplete is not working as expected." + }, + "cody.autocomplete.advanced.serverEndpoint": { + "type": "string", + "markdownDescription": "The server endpoint used for code autocomplete. This is only supported with a provider other than `anthropic`." + }, + "cody.autocomplete.advanced.accessToken": { + "type": "string", + "markdownDescription": "The access token used for code autocomplete. This is only supported with a provider other than `anthropic`." + }, + "cody.autocomplete.advanced.model": { + "type": "string", + "default": null, + "enum": [ + null, + "starcoder-16b", + "starcoder-7b", + "starcoder-3b", + "starcoder-1b", + "llama-code-7b", + "llama-code-13b", + "llama-code-13b-instruct", + "mistral-7b-instruct-4k" + ], + "markdownDescription": "Overwrite the model used for code autocompletion inference. This is only supported with the `fireworks` provider" + }, + "cody.autocomplete.completeSuggestWidgetSelection": { + "type": "boolean", + "default": true, + "markdownDescription": "Autocomplete based on the currently selection in the suggest widget. Requires the VS Code user setting `editor.inlineSuggest.suppressSuggestions` set to true and will change it to true in user settings if it is not true." + }, + "cody.autocomplete.formatOnAccept": { + "type": "boolean", + "default": false, + "markdownDescription": "Format completions on accept using [the default document formatter](https://code.visualstudio.com/docs/editor/codebasics#_formatting)." + }, + "cody.autocomplete.disableInsideComments": { + "type": "boolean", + "default": false, + "markdownDescription": "Prevent autocomplete requests while inside code comments." + }, + "cody.experimental.foldingRanges": { + "type": "string", + "enum": ["lsp", "indentation-based"], + "enumDescriptions": [ + "Use folding ranges that are enabled by default in VS Code, and are usually powered by LSP", + "Use custom implementation of folding ranges that is indentation based. This is the implementation that is used by other Cody clients like the JetBrains plugin" + ], + "markdownDescription": "Determines the algorithm Cody uses to detect folding ranges. Cody uses folding ranges for several features like the 'Document code' command", + "default": "all" + }, + "cody.autocomplete.experimental.syntacticPostProcessing": { + "type": "boolean", + "default": true, + "markdownDescription": "Rank autocomplete results with tree-sitter." + }, + "cody.autocomplete.experimental.dynamicMultilineCompletions": { + "type": "boolean", + "default": false, + "markdownDescription": "Dynamically switch from singleline to multiline completion based on the first completion line." + }, + "cody.autocomplete.experimental.hotStreak": { + "type": "boolean", + "default": false, + "markdownDescription": "Preload follow-up completions" + }, + "cody.autocomplete.experimental.fastPath": { + "type": "boolean", + "default": false, + "markdownDescription": "Routes code completion requests directly to our Cody Gateway instance. Only works when connected to the Cody community edition and when using the default StarCoder model." + }, + "cody.autocomplete.experimental.graphContext": { + "type": "string", + "default": null, + "enum": [null, "bfg", "bfg-mixed"], + "markdownDescription": "Use the code graph to retrieve context for autocomplete requests." + }, + "cody.autocomplete.experimental.ollamaOptions": { + "type": "object", + "markdownDescription": "Options for the [Ollama](https://ollama.ai/) experimental autocomplete provider.", + "default": { + "url": "http://localhost:11434", + "model": "deepseek-coder:6.7b-base-q4_K_M" + }, + "properties": { + "url": { + "type": "string", + "description": "The URL of the Ollama API.", + "default": "http://localhost:11434" + }, + "model": { + "type": "string", + "default": "deepseek-coder:6.7b-base-q4_K_M", + "examples": [ + "codellama:7b-code", + "codellama:13b-code", + "deepseek-coder:6.7b-base-q4_K_M" + ] + }, + "parameters": { + "type": "object", + "description": "Parameters for how Ollama will run the model. See Ollama [PARAMETER documentation](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-request-with-options).", + "properties": { + "num_ctx": "number", + "temperature": "number", + "top_k": "number", + "top_p": "number" + } + } + } + }, + "cody.internal.unstable": { + "order": 999, + "type": "boolean", + "markdownDescription": "[INTERNAL ONLY] Enable all unstable experimental features.", + "default": false + } + } + }, + "icons": { + "cody-logo": { + "description": "Cody logo", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0041" + } + }, + "cody-logo-heavy": { + "description": "Cody logo heavy", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0042" + } + }, + "anthropic-logo": { + "description": "Anthropic logo", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0043" + } + }, + "openai-logo": { + "description": "OpenAI logo", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0044" + } + }, + "mistral-logo": { + "description": "Mistral logo", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0045" + } + }, + "new-comment-icon": { + "description": "Cody logo heavy", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0048" + } + } + } + }, + "dependencies": { + "@anthropic-ai/sdk": "^0.4.2", + "@opentelemetry/api": "^1.7.0", + "@opentelemetry/core": "^1.18.1", + "@opentelemetry/exporter-trace-otlp-http": "^0.45.1", + "@opentelemetry/instrumentation-http": "^0.45.1", + "@opentelemetry/resources": "^1.18.1", + "@opentelemetry/sdk-node": "^0.45.1", + "@opentelemetry/sdk-trace-base": "^1.18.1", + "@opentelemetry/semantic-conventions": "^1.18.1", + "@sentry/browser": "^7.66.0", + "@sentry/core": "^7.66.0", + "@sentry/node": "^7.66.0", + "@sourcegraph/cody-shared": "workspace:*", + "@sourcegraph/cody-ui": "workspace:*", + "@sourcegraph/telemetry": "^0.16.0", + "@storybook/preview-api": "^7.6.2", + "@vscode/codicons": "^0.0.35", + "@vscode/webview-ui-toolkit": "^1.2.2", + "async-mutex": "^0.4.0", + "axios": "^1.3.6", + "classnames": "^2.3.2", + "crypto-js": "^4.2.0", + "detect-indent": "^7.0.1", + "fast-xml-parser": "^4.3.2", + "glob": "^7.2.3", + "isomorphic-fetch": "^3.0.0", + "js-levenshtein": "^1.1.6", + "lodash": "^4.17.21", + "lru-cache": "^10.0.0", + "mkdirp": "^3.0.1", + "os-browserify": "^0.3.0", + "socks-proxy-agent": "^8.0.1", + "unzipper": "^0.10.14", + "uuid": "^9.0.0", + "vscode-languageserver-textdocument": "^1.0.8", + "vscode-uri": "^3.0.7", + "web-tree-sitter": "^0.20.8", + "wink-nlp-utils": "^2.1.0" + }, + "devDependencies": { + "@google-cloud/pubsub": "^3.7.3", + "@playwright/test": "1.39.0", + "@pollyjs/adapter-node-http": "^6.0.6", + "@pollyjs/core": "^6.0.6", + "@pollyjs/persister": "^6.0.6", + "@pollyjs/persister-fs": "^6.0.6", + "@types/axios": "^0.14.0", + "@types/blueimp-md5": "^2.18.2", + "@types/crypto-js": "^4.2.2", + "@types/dedent": "^0.7.0", + "@types/express": "^4.17.17", + "@types/fs-extra": "^11.0.4", + "@types/glob": "^8.0.0", + "@types/isomorphic-fetch": "^0.0.39", + "@types/js-levenshtein": "^1.1.1", + "@types/lodash": "^4.14.195", + "@types/mocha": "^10.0.1", + "@types/pako": "^2.0.3", + "@types/progress": "^2.0.5", + "@types/semver": "^7.5.0", + "@types/unzipper": "^0.10.7", + "@types/uuid": "^9.0.2", + "@types/vscode": "^1.79.0", + "@types/yaml": "^1.9.7", + "@vscode/test-electron": "^2.3.8", + "@vscode/test-web": "^0.0.47", + "@vscode/vsce": "^2.22.0", + "blueimp-md5": "^2.19.0", + "concurrently": "^8.2.0", + "dedent": "^0.7.0", + "express": "^4.18.2", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^11.2.0", + "fuzzysort": "^2.0.4", + "mocha": "^10.2.0", + "ovsx": "^0.8.2", + "pako": "^2.1.0", + "path-browserify": "^1.0.1", + "playwright": "1.39.0", + "progress": "^2.0.3", + "semver": "^7.5.4", + "yaml": "^2.3.4" + } +} \ No newline at end of file diff --git a/vscode/src/completions/inline-completion-item-provider.ts b/vscode/src/completions/inline-completion-item-provider.ts index 19dd4b8191..e136e7ed70 100644 --- a/vscode/src/completions/inline-completion-item-provider.ts +++ b/vscode/src/completions/inline-completion-item-provider.ts @@ -203,13 +203,13 @@ export class InlineCompletionItemProvider const configFeatures = await ConfigFeaturesSingleton.getInstance().getConfigFeatures() - try { - if (!configFeatures.autoComplete) { - // If Configfeatures exists and autocomplete is disabled then raise - // the error banner for autocomplete config turned off - throw new Error('AutocompleteConfigTurnedOff') - } - } catch (error) {} + if (!configFeatures.autoComplete) { + // If Configfeatures exists and autocomplete is disabled then raise + // the error banner for autocomplete config turned off + const error = new Error('AutocompleteConfigTurnedOff') + this.onError(error) + throw error + } const start = performance.now() if (!this.lastCompletionRequestTimestamp) { diff --git a/vscode/src/completions/providers/fireworks.ts b/vscode/src/completions/providers/fireworks.ts index 474d6fb0f4..338b45e1c9 100644 --- a/vscode/src/completions/providers/fireworks.ts +++ b/vscode/src/completions/providers/fireworks.ts @@ -129,8 +129,8 @@ class FireworksProvider extends Provider { this.options.fastPath && config.accessToken && // Require the upstream to be dotcom - // this.authStatus.isDotCom && - // The fast path client only suppor ts Node.js style response streams + this.authStatus.isDotCom && + // The fast path client only supports Node.js style response streams isNode ? dotcomTokenToGatewayToken(config.accessToken) : undefined diff --git a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts index c78f9c5088..04ab01c95a 100644 --- a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts +++ b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts @@ -65,9 +65,9 @@ export class OpenTelemetryService { instrumentations: [new HttpInstrumentation()], traceExporter: new OTLPTraceExporter({ url: traceUrl }), - // ...(process.env.NODE_ENV === 'development' && { - // spanProcessor: new BatchSpanProcessor(new ConsoleBatchSpanExporter()), - // }), + ...(process.env.NODE_ENV === 'development' && { + spanProcessor: new BatchSpanProcessor(new ConsoleBatchSpanExporter()), + }), }) this.sdk.start() } From 3028b695baabf20214d15a22b7ed9e1a9eef82e3 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Wed, 7 Feb 2024 18:20:41 +0100 Subject: [PATCH 06/18] revert all pkg.json changes --- vscode/package.json | 2256 +++++++++++++++++++++---------------------- 1 file changed, 1128 insertions(+), 1128 deletions(-) diff --git a/vscode/package.json b/vscode/package.json index 60d59e9ceb..7fff26bf4d 100644 --- a/vscode/package.json +++ b/vscode/package.json @@ -1,1129 +1,1129 @@ { - "name": "cody-ai", - "private": true, - "displayName": "Cody AI", - "version": "1.2.2", - "publisher": "sourcegraph", - "license": "Apache-2.0", - "icon": "resources/cody.png", - "description": "Code AI with codebase context", - "scripts": { - "postinstall": "pnpm download-wasm", - "dev": "pnpm run -s dev:desktop", - "dev:insiders": "pnpm run -s dev:desktop:insiders", - "start:dev:desktop": "NODE_ENV=development code --extensionDevelopmentPath=$PWD --disable-extension=sourcegraph.cody-ai --disable-extension=github.copilot --inspect-extensions=9333 --new-window . --goto ./src/completions/inline-completion-item-provider.ts:16:5", - "dev:desktop": "pnpm run -s build:dev:desktop && pnpm run start:dev:desktop", - "dev:desktop:insiders": "pnpm run -s build:dev:desktop && NODE_ENV=development code-insiders --extensionDevelopmentPath=$PWD --disable-extension=sourcegraph.cody-ai --disable-extension=github.copilot --inspect-extensions=9333 --new-window . --goto ./src/completions/inline-completion-item-provider.ts:16:5", - "dev:web": "pnpm run -s build:dev:web && pnpm run -s _dev:vscode-test-web --browserType none", - "watch:dev:web": "concurrently \"pnpm run -s watch:build:dev:web\" \"pnpm run -s _dev:vscode-test-web --browserType none\"", - "_dev:vscode-test-web": "vscode-test-web --extensionDevelopmentPath=. ${WORKSPACE-test/fixtures/workspace}", - "build": "tsc --build && pnpm run -s _build:esbuild:desktop && pnpm run -s _build:esbuild:web && pnpm run -s _build:webviews --mode production", - "_build:desktop": "pnpm run -s _build:esbuild:desktop && pnpm run -s _build:webviews --mode production", - "_build:web": "pnpm run -s _build:esbuild:web && pnpm run -s _build:webviews --mode production", - "build:dev:desktop": "concurrently \"pnpm run -s _build:esbuild:desktop --alias:@sourcegraph/cody-shared=@sourcegraph/cody-shared/src/index --alias:@sourcegraph/cody-shared/src=@sourcegraph/cody-shared/src --alias:@sourcegraph/cody-ui=@sourcegraph/cody-ui/src/index --alias:@sourcegraph/cody-ui/src=@sourcegraph/cody-ui/src\" \"pnpm run -s _build:webviews --mode development\"", - "build:dev:web": "concurrently \"pnpm run -s _build:esbuild:web --alias:@sourcegraph/cody-shared=@sourcegraph/cody-shared/src/index --alias:@sourcegraph/cody-shared/src=@sourcegraph/cody-shared/src --alias:@sourcegraph/cody-ui=@sourcegraph/cody-ui/src/index --alias:@sourcegraph/cody-ui/src=@sourcegraph/cody-ui/src\" \"pnpm run -s _build:webviews --mode development\"", - "watch:build:dev:web": "concurrently \"pnpm run -s _build:esbuild:web --watch\" \"pnpm run -s _build:webviews --mode development --watch\"", - "watch:build:dev:desktop": "concurrently \"pnpm run -s _build:esbuild:desktop --watch\" \"pnpm run -s _build:webviews --mode development --watch\"", - "_build:esbuild:desktop": "pnpm download-wasm && esbuild ./src/extension.node.ts --bundle --outfile=dist/extension.node.js --external:vscode --format=cjs --platform=node --sourcemap", - "_build:esbuild:web": "esbuild ./src/extension.web.ts --platform=browser --bundle --outfile=dist/extension.web.js --alias:path=path-browserify --alias:os=os-browserify --external:vscode --define:process='{\"env\":{}}' --define:window=self --format=cjs --sourcemap", - "_build:webviews": "vite -c webviews/vite.config.ts build", - "release": "ts-node-transpile-only ./scripts/release.ts", - "download-wasm": "ts-node-transpile-only ./scripts/download-wasm-modules.ts", - "release:dry-run": "pnpm run download-wasm && CODY_RELEASE_DRY_RUN=1 ts-node ./scripts/release.ts", - "storybook": "storybook dev -p 6007 --no-open --no-version-updates --no-release-notes", - "test:e2e": "tsc --build && node dist/tsc/test/e2e/install-deps.js && pnpm run -s build:dev:desktop && playwright test", - "test:integration": "tsc --build ./test/integration && pnpm run -s build:dev:desktop && node --inspect -r ts-node/register dist/tsc/test/integration/main.js", - "test:unit": "vitest", - "vscode:prepublish": "pnpm -s run build", - "test:unit:tree-sitter-queries": "vitest ./src/tree-sitter/query-tests/*.test.ts", - "github-changelog": "ts-node-transpile-only ./scripts/github-changelog.ts" - }, - "categories": ["Programming Languages", "Machine Learning", "Snippets", "Education"], - "keywords": [ - "ai", - "openai", - "anthropic", - "assistant", - "chatbot", - "chat", - "refactor", - "documentation", - "test", - "sourcegraph", - "codey", - "llm", - "codegen", - "autocomplete", - "bot", - "model", - "typescript", - "javascript", - "python", - "golang", - "go", - "html", - "css", - "java", - "php", - "swift", - "kotlin" - ], - "repository": { - "type": "git", - "url": "https://github.com/sourcegraph/cody", - "directory": "vscode" - }, - "bugs": { - "url": "https://github.com/sourcegraph/cody/issues" - }, - "homepage": "https://sourcegraph.com/docs/cody", - "badges": [ - { - "url": "https://img.shields.io/discord/969688426372825169?color=5765F2", - "href": "https://srcgr.ph/discord", - "description": "Discord" - } - ], - "engines": { - "vscode": "^1.79.0" - }, - "main": "./dist/extension.node.js", - "browser": "./dist/extension.web.js", - "activationEvents": ["onLanguage", "onStartupFinished", "onWebviewPanel:cody.chatPanel"], - "contributes": { - "walkthroughs": [ - { - "id": "welcome", - "title": "Getting Started with Cody", - "description": "Discover how Cody can help you write, understand and fix code faster", - "steps": [ - { - "id": "autocomplete", - "title": "Code Autocomplete", - "description": "Start writing code and Cody will complete the line (or the entire function) for you. Hit tab to accept the suggestion.", - "media": { - "markdown": "walkthroughs/autocomplete.md" - } - }, - { - "id": "chat", - "title": "Cody Chat", - "description": "Answer questions about general programming topics, or specific to your codebase, with Cody chat.\n[Open Chat](command:cody.walkthrough.showChat)", - "media": { - "markdown": "walkthroughs/chat.md" - } - }, - { - "id": "edit", - "title": "Edit Code", - "description": "Ask Cody to perform code edits with your instructions.", - "media": { - "markdown": "walkthroughs/edit.md" - } - }, - { - "id": "fix", - "title": "Fix Code", - "description": "Use Cody to fix or explain problems in your code.", - "media": { - "markdown": "walkthroughs/fix.md" - } - }, - { - "id": "commands", - "title": "Cody Commands", - "description": "Discover all the built-in Cody commands, and create your own custom commands.\n[Show Commands](command:cody.commands.tree.view.focus)", - "media": { - "markdown": "walkthroughs/commands.md" - } - }, - { - "id": "search", - "title": "Natural Language Search (Beta)", - "description": "Easily find what you're looking for with Cody Natural Language Search.\n[Show Search](command:cody.search.focus)", - "media": { - "markdown": "walkthroughs/search.md" - } - } - ] - } - ], - "colors": [ - { - "id": "cody.fixup.conflictBackground", - "description": "The background of text Cody will edit where there is a specific conflict with your changes.", - "defaults": { - "light": "mergeEditor.conflictingLines.background", - "dark": "mergeEditor.conflictingLines.background" - } - }, - { - "id": "cody.fixup.conflictBorder", - "description": "The border of text Cody will edit, if there is a conflict with your changes.", - "defaults": { - "light": "mergeEditor.conflict.unhandledFocused.border", - "dark": "mergeEditor.conflict.unhandledFocused.border" - } - }, - { - "id": "cody.fixup.conflictedBackground", - "description": "The background of text Cody will edit, if there is a conflict with your changes.", - "defaults": { - "light": "#ffffff00", - "dark": "#00000000" - } - }, - { - "id": "cody.fixup.conflictedBorder", - "description": "The border of text Cody will edit, if there is a conflict with your changes.", - "defaults": { - "light": "mergeEditor.conflict.unhandledUnfocused.border", - "dark": "mergeEditor.conflict.unhandledUnfocused.border" - } - }, - { - "id": "cody.fixup.incomingBackground", - "description": "The background of text Cody will edit.", - "defaults": { - "light": "merge.incomingContentBackground", - "dark": "merge.incomingContentBackground" - } - }, - { - "id": "cody.fixup.incomingBorder", - "description": "The border around text Cody will edit.", - "defaults": { - "light": "#436EB1", - "dark": "#436EB1" - } - } - ], - "viewsContainers": { - "activitybar": [ - { - "id": "cody", - "title": "Cody", - "icon": "resources/cody.svg" - } - ] - }, - "views": { - "cody": [ - { - "type": "webview", - "id": "cody.chat", - "name": "Chat", - "when": "!cody.activated" - }, - { - "id": "cody.commands.tree.view", - "name": "Commands", - "when": "cody.activated" - }, - { - "id": "cody.chat.tree.view", - "name": "Chats", - "when": "cody.activated" - }, - { - "type": "webview", - "id": "cody.search", - "name": "Natural Language Search (Beta)", - "visibility": "visible", - "when": "cody.activated" - }, - { - "id": "cody.support.tree.view", - "name": "Settings & Support", - "when": "cody.activated" - } - ] - }, - "viewsWelcome": [ - { - "view": "cody.chat.tree.view", - "contents": "Chat alongside your code, attach files, add additional context, and try different chat models.\n[New Chat](command:cody.chat.panel.new)", - "when": "cody.activated" - } - ], - "commands": [ - { - "command": "cody.welcome", - "title": "Getting Started Guide", - "category": "Cody", - "group": "Cody", - "icon": "$(book)" - }, - { - "command": "cody.feedback", - "title": "Feedback", - "category": "Cody", - "group": "Cody", - "icon": "$(feedback)" - }, - { - "command": "cody.command.explain-output", - "title": "Ask Cody to Explain", - "category": "Cody Command", - "icon": "$(cody-logo)" - }, - { - "command": "cody.command.edit-code", - "category": "Cody Command", - "title": "Edit Code", - "when": "cody.activated && editorTextFocus", - "icon": "$(wand)" - }, - { - "command": "cody.command.explain-code", - "category": "Cody Command", - "title": "Explain Code", - "icon": "$(output)", - "when": "cody.activated && editorFocus" - }, - { - "command": "cody.command.unit-tests", - "category": "Cody Command", - "title": "Generate Unit Tests", - "icon": "$(package)", - "when": "cody.activated && editorTextFocus" - }, - { - "command": "cody.command.document-code", - "category": "Cody Command", - "title": "Document Code", - "icon": "$(book)", - "when": "cody.activated && editorTextFocus" - }, - { - "command": "cody.command.smell-code", - "category": "Cody Command", - "title": "Find Code Smells", - "icon": "$(checklist)", - "when": "cody.activated && editorFocus" - }, - { - "command": "cody.menu.custom-commands", - "category": "Cody Command", - "title": "Custom Commands", - "icon": "$(tools)", - "when": "cody.activated && workspaceFolderCount > 0" - }, - { - "command": "cody.command.context-search", - "category": "Cody", - "title": "Codebase Context Search", - "when": "cody.activated && workspaceFolderCount > 0" - }, - { - "command": "cody.auth.signout", - "category": "Cody", - "title": "Sign Out", - "icon": "$(sign-out)" - }, - { - "command": "cody.auth.signin", - "category": "Cody", - "title": "Switch Account…" - }, - { - "command": "cody.settings.extension", - "category": "Cody", - "title": "Extension Settings", - "group": "Cody", - "icon": "$(gear)" - }, - { - "command": "cody.settings.extension.chat", - "category": "Cody", - "title": "Chat Settings", - "group": "Cody", - "icon": "$(gear)" - }, - { - "command": "cody.focus", - "category": "Cody", - "title": "Sign In" - }, - { - "command": "cody.status-bar.interacted", - "category": "Cody", - "title": "Cody Settings", - "group": "Cody", - "icon": "$(settings-gear)", - "when": "cody.activated" - }, - { - "command": "cody.show-page", - "category": "Cody", - "title": "Open Account Page", - "group": "Cody", - "when": "cody.activated" - }, - { - "command": "cody.show-rate-limit-modal", - "category": "Cody", - "title": "Show Rate Limit Modal", - "group": "Cody", - "when": "cody.activated" - }, - { - "command": "cody.guardrails.debug", - "category": "Cody", - "title": "Guardrails Debug Attribution", - "enablement": "config.cody.experimental.guardrails && editorHasSelection" - }, - { - "command": "cody.menu.commands", - "category": "Cody", - "title": "Commands", - "when": "cody.activated", - "icon": "$(cody-logo)" - }, - { - "command": "cody.autocomplete.openTraceView", - "category": "Cody", - "title": "Open Autocomplete Trace View", - "when": "cody.activated && config.cody.autocomplete && config.cody.debug.enable && editorHasFocus && !editorReadonly" - }, - { - "command": "cody.autocomplete.manual-trigger", - "category": "Cody", - "title": "Trigger Autocomplete at Cursor", - "when": "cody.activated && config.cody.autocomplete && editorHasFocus && !editorReadonly && !editorHasSelection && !inlineSuggestionsVisible" - }, - { - "command": "cody.chat.panel.new", - "category": "Cody", - "title": "New Chat Panel", - "when": "cody.activated", - "group": "Cody", - "icon": "$(new-comment-icon)" - }, - { - "command": "cody.chat.tree.view.focus", - "category": "Cody", - "title": "Open Cody Sidebar", - "group": "Cody", - "icon": "$(layout-sidebar-left)" - }, - { - "command": "cody.chat.history.edit", - "category": "Cody", - "title": "Rename Chat", - "group": "Cody", - "icon": "$(edit)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.chat.history.clear", - "category": "Cody", - "title": "Delete All Chats", - "group": "Cody", - "icon": "$(trash)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.chat.history.delete", - "category": "Cody", - "title": "Delete Chat", - "group": "Cody", - "icon": "$(trash)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.chat.history.export", - "category": "Cody", - "title": "Export Chats as JSON", - "group": "Cody", - "icon": "$(arrow-circle-down)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.chat.history.panel", - "category": "Cody", - "title": "Chat History", - "group": "Cody", - "icon": "$(list-unordered)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.search.index-update", - "category": "Cody", - "group": "Cody", - "title": "Update search index for current workspace folder", - "icon": "$(refresh)", - "when": "cody.activated" - }, - { - "command": "cody.search.index-update-all", - "category": "Cody", - "group": "Cody", - "title": "Update search indices for all workspace folders", - "icon": "$(sync)", - "when": "cody.activated" - }, - { - "command": "cody.chat.panel.reset", - "category": "Cody", - "title": "New Chat Session", - "group": "Cody", - "icon": "$(clear-all)", - "when": "cody.activated && cody.hasChatHistory" - }, - { - "command": "cody.embeddings.resolveIssue", - "title": "Cody Embeddings", - "when": "cody.embeddings.hasIssue" - } - ], - "keybindings": [ - { - "command": "cody.chat.focus", - "key": "alt+/", - "when": "!cody.activated" - }, - { - "command": "cody.chat.tree.view.focus", - "key": "alt+f1", - "when": "cody.activated" - }, - { - "command": "cody.chat.panel.new", - "key": "alt+/", - "when": "cody.activated" - }, - { - "command": "cody.chat.panel.new", - "key": "alt+l", - "when": "cody.activated" - }, - { - "command": "cody.command.edit-code", - "key": "ctrl+shift+v", - "mac": "shift+cmd+v", - "when": "cody.activated && !editorReadonly" - }, - { - "command": "cody.command.edit-code", - "key": "alt+k", - "when": "cody.activated && !editorReadonly" - }, - { - "command": "cody.menu.commands", - "key": "alt+c", - "mac": "alt+c", - "when": "cody.activated" - }, - { - "command": "-github.copilot.generate", - "key": "ctrl+enter" - }, - { - "command": "cody.autocomplete.manual-trigger", - "key": "alt+\\", - "when": "editorTextFocus && !editorHasSelection && config.cody.autocomplete.enabled && !inlineSuggestionsVisible" - } - ], - "submenus": [ - { - "label": "Cody", - "id": "cody.submenu" - } - ], - "menus": { - "commandPalette": [ - { - "command": "cody.command.edit-code", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.command.explain-code", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.command.context-search", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.command.smell-code", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.command.unit-tests", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.command.document-code", - "when": "cody.activated && editorIsOpen" - }, - { - "command": "cody.menu.custom-commands", - "when": "cody.activated" - }, - { - "command": "cody.embeddings.resolveIssue", - "when": "false" - }, - { - "command": "cody.focus", - "title": "Cody: Sign In", - "when": "!cody.activated" - }, - { - "command": "cody.guardrails.debug", - "when": "config.cody.experimental.guardrails && editorHasSelection" - }, - { - "command": "cody.show-page", - "when": "false" - }, - { - "command": "cody.show-rate-limit-modal", - "when": "false" - } - ], - "editor/context": [ - { - "submenu": "cody.submenu", - "group": "0_cody" - } - ], - "cody.submenu": [ - { - "command": "cody.chat.panel.new", - "when": "cody.activated", - "group": "ask" - }, - { - "command": "cody.command.explain-code", - "when": "cody.activated", - "group": "command" - }, - { - "command": "cody.command.edit-code", - "when": "cody.activated", - "group": "ask" - }, - { - "command": "cody.command.unit-tests", - "when": "cody.activated", - "group": "command" - }, - { - "command": "cody.command.document-code", - "when": "cody.activated", - "group": "command" - }, - { - "command": "cody.command.smell-code", - "when": "cody.activated", - "group": "command" - }, - { - "command": "cody.menu.custom-commands", - "when": "cody.activated", - "group": "custom-commands" - }, - { - "command": "cody.focus", - "when": "!cody.activated", - "group": "other" - }, - { - "command": "cody.guardrails.debug", - "when": "cody.activated && config.cody.experimental.guardrails && editorHasSelection", - "group": "other" - } - ], - "view/title": [ - { - "command": "cody.chat.panel.new", - "when": "view == cody.chat.tree.view && cody.activated", - "group": "navigation@1" - }, - { - "command": "cody.chat.history.clear", - "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory", - "enablement": "cody.hasChatHistory", - "group": "navigation@2" - }, - { - "command": "cody.chat.history.export", - "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory", - "enablement": "cody.hasChatHistory", - "group": "navigation@3" - }, - { - "command": "cody.welcome", - "when": "view == cody.support.tree.view", - "group": "7_cody@0" - }, - { - "command": "cody.search.index-update", - "when": "view == cody.search && cody.activated", - "group": "navigation@1" - }, - { - "command": "cody.search.index-update-all", - "when": "view == cody.search && cody.activated", - "group": "navigation@2" - } - ], - "editor/title": [ - { - "command": "cody.menu.commands", - "when": "cody.activated && config.cody.editorTitleCommandIcon && !editorReadonly && (resourceScheme == file || activeWebviewPanelId == cody.chatPanel)", - "group": "navigation", - "visibility": "visible" - }, - { - "command": "cody.chat.panel.new", - "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", - "group": "navigation@1", - "visibility": "visible" - }, - { - "command": "cody.chat.history.panel", - "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", - "group": "navigation@2", - "visibility": "visible" - }, - { - "command": "cody.settings.extension.chat", - "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", - "group": "navigation@3", - "visibility": "visible" - } - ], - "view/item/context": [ - { - "command": "cody.chat.history.edit", - "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory && viewItem == cody.chats", - "group": "inline@1" - }, - { - "command": "cody.chat.history.delete", - "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory && viewItem == cody.chats", - "group": "inline@2" - } - ], - "terminal/context": [ - { - "command": "cody.command.explain-output", - "group": "0_cody", - "when": "cody.activated" - } - ] - }, - "configuration": { - "type": "object", - "title": "Cody", - "properties": { - "cody.serverEndpoint": { - "order": 1, - "type": "string", - "description": "URL to the Sourcegraph instance.", - "examples": "https://example.sourcegraph.com", - "markdownDeprecationMessage": "**Deprecated**: Please sign in via the UI instead. If you are already signed in, you can empty this field to remove this warning.", - "deprecationMessage": "Deprecated: Please sign in via the UI instead." - }, - "cody.proxy": { - "type": "string", - "markdownDeprecationMessage": "The SOCKS proxy endpoint to access server endpoint. This is only supported with some autocomplete providers and only for use with the Cody Agent (for instance with JetBrains plugin). For VS Code please use http.proxy instead." - }, - "cody.codebase": { - "order": 2, - "type": "string", - "markdownDescription": "A Git repository URL to use instead of allowing Cody to infer the Git repository from the workspace.", - "examples": [ - "https://github.com/sourcegraph/cody", - "ssh://git@github.com/sourcegraph/cody" - ] - }, - "cody.useContext": { - "order": 99, - "type": "string", - "enum": ["embeddings", "keyword", "blended", "none"], - "default": "blended", - "markdownDescription": "Controls which context providers Cody uses for chat, commands and inline edits. Use 'blended' for best results. For debugging other context sources, 'embeddings' will use an embeddings-based index if available. 'keyword' will use a search-based index. 'none' will not use embeddings or search-based indexes." - }, - "cody.customHeaders": { - "order": 4, - "type": "object", - "markdownDescription": "Adds custom HTTP headers to all network requests to the Sourcegraph endpoint. Defining required headers here ensures requests are properly forwarded through intermediary proxy servers, which may mandate certain custom headers for internal or external communication.", - "default": {}, - "examples": [ - { - "Cache-Control": "no-cache", - "Proxy-Authenticate": "Basic" - } - ] - }, - "cody.autocomplete.enabled": { - "order": 5, - "type": "boolean", - "markdownDescription": "Enables code autocompletions.", - "default": true - }, - "cody.autocomplete.languages": { - "order": 5, - "type": "object", - "markdownDescription": "Enables or disables code autocompletions for specified [language ids](https://code.visualstudio.com/docs/languages/identifiers). `\"*\"` is the default fallback if no language-specific setting is found.\n\nThe default setting: \n\n```json\n{\n \"*\": true\n}\n```\n\nTo disable autocomplete for a given [language id](https://code.visualstudio.com/docs/languages/identifiers#_known-language-identifiers) set its value to `false`, for example:\n\n```json\n{\n \"*\": true,\n \"plaintext\": false\n}\n```", - "default": { - "*": true - }, - "examples": [ - { - "*": true, - "plaintext": false - } - ] - }, - "cody.editorTitleCommandIcon": { - "order": 7, - "type": "boolean", - "markdownDescription": "Adds a Cody icon to the editor title menu for quick access to Cody commands.", - "default": true - }, - "cody.commandCodeLenses": { - "order": 8, - "type": "boolean", - "markdownDescription": "Adds code lenses to current file for quick access to Cody commands.", - "default": false - }, - "cody.experimental.guardrails": { - "order": 9, - "type": "boolean", - "markdownDescription": "Experimental feature for internal use.", - "default": false - }, - "cody.experimental.localSymbols": { - "order": 9, - "type": "boolean", - "default": false, - "markdownDescription": "Experimental feature for internal use." - }, - "cody.chat.preInstruction": { - "order": 6, - "type": "string", - "markdownDescription": "A custom instruction to be included at the start of all chat messages. (E.g., \"Answer all my questions in Spanish.\")", - "examples": ["Answer all my questions in Spanish."] - }, - "cody.codeActions.enabled": { - "order": 11, - "title": "Cody Code Actions", - "type": "boolean", - "markdownDescription": "Add Cody options to Quick Fix menus for fixing, explaining, documenting, and editing code.", - "default": true - }, - "cody.commandHints.enabled": { - "order": 12, - "title": "Cody Command Hints", - "type": "boolean", - "markdownDescription": "Enable hints for Edit and Chat shortcuts, displayed alongside editor selections.", - "default": false - }, - "cody.experimental.simpleChatContext": { - "order": 99, - "type": "boolean", - "markdownDescription": "Uses the new simplifed chat context fetcher", - "default": true - }, - "cody.experimental.symfContext": { - "order": 99, - "type": "boolean", - "markdownDescription": "Enable symf code search context for chat", - "default": true - }, - "cody.experimental.symf.path": { - "order": 99, - "type": "string", - "markdownDescription": "Path to symf binary", - "default": "" - }, - "cody.experimental.tracing": { - "order": 99, - "type": "boolean", - "markdownDescription": "Enable OpenTelemetry tracing", - "default": false - }, - "cody.debug.enable": { - "order": 99, - "type": "boolean", - "markdownDescription": "Turns on debug output (visible in the VS Code Output panel under \"Cody by Sourcegraph\")" - }, - "cody.debug.verbose": { - "order": 99, - "type": "boolean", - "markdownDescription": "Enables verbose debug output. Debug messages may contain more details if the invocation includes verbose information." - }, - "cody.debug.filter": { - "order": 99, - "type": "string", - "markdownDescription": "Regular expression to filter debug output. If empty, defaults to '.*', which prints all messages." - }, - "cody.telemetry.level": { - "order": 99, - "type": "string", - "enum": ["all", "off"], - "enumDescriptions": [ - "Sends usage data and errors.", - "Disables all extension telemetry." - ], - "markdownDescription": "Controls the telemetry about Cody usage and errors. See [Cody usage and privacy notice](https://about.sourcegraph.com/terms/cody-notice).", - "default": "all" - }, - "cody.autocomplete.advanced.provider": { - "type": "string", - "default": null, - "enum": [null, "anthropic", "fireworks", "unstable-openai", "unstable-ollama"], - "markdownDescription": "The provider used for code autocomplete. Most providers other than `anthropic` require the `cody.autocomplete.advanced.serverEndpoint` and `cody.autocomplete.advanced.accessToken` settings to also be set. Check the Cody output channel for error messages if autocomplete is not working as expected." - }, - "cody.autocomplete.advanced.serverEndpoint": { - "type": "string", - "markdownDescription": "The server endpoint used for code autocomplete. This is only supported with a provider other than `anthropic`." - }, - "cody.autocomplete.advanced.accessToken": { - "type": "string", - "markdownDescription": "The access token used for code autocomplete. This is only supported with a provider other than `anthropic`." - }, - "cody.autocomplete.advanced.model": { - "type": "string", - "default": null, - "enum": [ - null, - "starcoder-16b", - "starcoder-7b", - "starcoder-3b", - "starcoder-1b", - "llama-code-7b", - "llama-code-13b", - "llama-code-13b-instruct", - "mistral-7b-instruct-4k" - ], - "markdownDescription": "Overwrite the model used for code autocompletion inference. This is only supported with the `fireworks` provider" - }, - "cody.autocomplete.completeSuggestWidgetSelection": { - "type": "boolean", - "default": true, - "markdownDescription": "Autocomplete based on the currently selection in the suggest widget. Requires the VS Code user setting `editor.inlineSuggest.suppressSuggestions` set to true and will change it to true in user settings if it is not true." - }, - "cody.autocomplete.formatOnAccept": { - "type": "boolean", - "default": false, - "markdownDescription": "Format completions on accept using [the default document formatter](https://code.visualstudio.com/docs/editor/codebasics#_formatting)." - }, - "cody.autocomplete.disableInsideComments": { - "type": "boolean", - "default": false, - "markdownDescription": "Prevent autocomplete requests while inside code comments." - }, - "cody.experimental.foldingRanges": { - "type": "string", - "enum": ["lsp", "indentation-based"], - "enumDescriptions": [ - "Use folding ranges that are enabled by default in VS Code, and are usually powered by LSP", - "Use custom implementation of folding ranges that is indentation based. This is the implementation that is used by other Cody clients like the JetBrains plugin" - ], - "markdownDescription": "Determines the algorithm Cody uses to detect folding ranges. Cody uses folding ranges for several features like the 'Document code' command", - "default": "all" - }, - "cody.autocomplete.experimental.syntacticPostProcessing": { - "type": "boolean", - "default": true, - "markdownDescription": "Rank autocomplete results with tree-sitter." - }, - "cody.autocomplete.experimental.dynamicMultilineCompletions": { - "type": "boolean", - "default": false, - "markdownDescription": "Dynamically switch from singleline to multiline completion based on the first completion line." - }, - "cody.autocomplete.experimental.hotStreak": { - "type": "boolean", - "default": false, - "markdownDescription": "Preload follow-up completions" - }, - "cody.autocomplete.experimental.fastPath": { - "type": "boolean", - "default": false, - "markdownDescription": "Routes code completion requests directly to our Cody Gateway instance. Only works when connected to the Cody community edition and when using the default StarCoder model." - }, - "cody.autocomplete.experimental.graphContext": { - "type": "string", - "default": null, - "enum": [null, "bfg", "bfg-mixed"], - "markdownDescription": "Use the code graph to retrieve context for autocomplete requests." - }, - "cody.autocomplete.experimental.ollamaOptions": { - "type": "object", - "markdownDescription": "Options for the [Ollama](https://ollama.ai/) experimental autocomplete provider.", - "default": { - "url": "http://localhost:11434", - "model": "deepseek-coder:6.7b-base-q4_K_M" - }, - "properties": { - "url": { - "type": "string", - "description": "The URL of the Ollama API.", - "default": "http://localhost:11434" - }, - "model": { - "type": "string", - "default": "deepseek-coder:6.7b-base-q4_K_M", - "examples": [ - "codellama:7b-code", - "codellama:13b-code", - "deepseek-coder:6.7b-base-q4_K_M" - ] - }, - "parameters": { - "type": "object", - "description": "Parameters for how Ollama will run the model. See Ollama [PARAMETER documentation](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-request-with-options).", - "properties": { - "num_ctx": "number", - "temperature": "number", - "top_k": "number", - "top_p": "number" - } - } - } - }, - "cody.internal.unstable": { - "order": 999, - "type": "boolean", - "markdownDescription": "[INTERNAL ONLY] Enable all unstable experimental features.", - "default": false - } - } - }, - "icons": { - "cody-logo": { - "description": "Cody logo", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0041" - } - }, - "cody-logo-heavy": { - "description": "Cody logo heavy", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0042" - } - }, - "anthropic-logo": { - "description": "Anthropic logo", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0043" - } - }, - "openai-logo": { - "description": "OpenAI logo", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0044" - } - }, - "mistral-logo": { - "description": "Mistral logo", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0045" - } - }, - "new-comment-icon": { - "description": "Cody logo heavy", - "default": { - "fontPath": "resources/cody-icons.woff", - "fontCharacter": "\\0048" - } - } - } - }, - "dependencies": { - "@anthropic-ai/sdk": "^0.4.2", - "@opentelemetry/api": "^1.7.0", - "@opentelemetry/core": "^1.18.1", - "@opentelemetry/exporter-trace-otlp-http": "^0.45.1", - "@opentelemetry/instrumentation-http": "^0.45.1", - "@opentelemetry/resources": "^1.18.1", - "@opentelemetry/sdk-node": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.18.1", - "@opentelemetry/semantic-conventions": "^1.18.1", - "@sentry/browser": "^7.66.0", - "@sentry/core": "^7.66.0", - "@sentry/node": "^7.66.0", - "@sourcegraph/cody-shared": "workspace:*", - "@sourcegraph/cody-ui": "workspace:*", - "@sourcegraph/telemetry": "^0.16.0", - "@storybook/preview-api": "^7.6.2", - "@vscode/codicons": "^0.0.35", - "@vscode/webview-ui-toolkit": "^1.2.2", - "async-mutex": "^0.4.0", - "axios": "^1.3.6", - "classnames": "^2.3.2", - "crypto-js": "^4.2.0", - "detect-indent": "^7.0.1", - "fast-xml-parser": "^4.3.2", - "glob": "^7.2.3", - "isomorphic-fetch": "^3.0.0", - "js-levenshtein": "^1.1.6", - "lodash": "^4.17.21", - "lru-cache": "^10.0.0", - "mkdirp": "^3.0.1", - "os-browserify": "^0.3.0", - "socks-proxy-agent": "^8.0.1", - "unzipper": "^0.10.14", - "uuid": "^9.0.0", - "vscode-languageserver-textdocument": "^1.0.8", - "vscode-uri": "^3.0.7", - "web-tree-sitter": "^0.20.8", - "wink-nlp-utils": "^2.1.0" - }, - "devDependencies": { - "@google-cloud/pubsub": "^3.7.3", - "@playwright/test": "1.39.0", - "@pollyjs/adapter-node-http": "^6.0.6", - "@pollyjs/core": "^6.0.6", - "@pollyjs/persister": "^6.0.6", - "@pollyjs/persister-fs": "^6.0.6", - "@types/axios": "^0.14.0", - "@types/blueimp-md5": "^2.18.2", - "@types/crypto-js": "^4.2.2", - "@types/dedent": "^0.7.0", - "@types/express": "^4.17.17", - "@types/fs-extra": "^11.0.4", - "@types/glob": "^8.0.0", - "@types/isomorphic-fetch": "^0.0.39", - "@types/js-levenshtein": "^1.1.1", - "@types/lodash": "^4.14.195", - "@types/mocha": "^10.0.1", - "@types/pako": "^2.0.3", - "@types/progress": "^2.0.5", - "@types/semver": "^7.5.0", - "@types/unzipper": "^0.10.7", - "@types/uuid": "^9.0.2", - "@types/vscode": "^1.79.0", - "@types/yaml": "^1.9.7", - "@vscode/test-electron": "^2.3.8", - "@vscode/test-web": "^0.0.47", - "@vscode/vsce": "^2.22.0", - "blueimp-md5": "^2.19.0", - "concurrently": "^8.2.0", - "dedent": "^0.7.0", - "express": "^4.18.2", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^11.2.0", - "fuzzysort": "^2.0.4", - "mocha": "^10.2.0", - "ovsx": "^0.8.2", - "pako": "^2.1.0", - "path-browserify": "^1.0.1", - "playwright": "1.39.0", - "progress": "^2.0.3", - "semver": "^7.5.4", - "yaml": "^2.3.4" - } -} \ No newline at end of file + "name": "cody-ai", + "private": true, + "displayName": "Cody AI", + "version": "1.2.2", + "publisher": "sourcegraph", + "license": "Apache-2.0", + "icon": "resources/cody.png", + "description": "Code AI with codebase context", + "scripts": { + "postinstall": "pnpm download-wasm", + "dev": "pnpm run -s dev:desktop", + "dev:insiders": "pnpm run -s dev:desktop:insiders", + "start:dev:desktop": "NODE_ENV=development code --extensionDevelopmentPath=$PWD --disable-extension=sourcegraph.cody-ai --disable-extension=github.copilot --inspect-extensions=9333 --new-window . --goto ./src/completions/inline-completion-item-provider.ts:16:5", + "dev:desktop": "pnpm run -s build:dev:desktop && pnpm run start:dev:desktop", + "dev:desktop:insiders": "pnpm run -s build:dev:desktop && NODE_ENV=development code-insiders --extensionDevelopmentPath=$PWD --disable-extension=sourcegraph.cody-ai --disable-extension=github.copilot --inspect-extensions=9333 --new-window . --goto ./src/completions/inline-completion-item-provider.ts:16:5", + "dev:web": "pnpm run -s build:dev:web && pnpm run -s _dev:vscode-test-web --browserType none", + "watch:dev:web": "concurrently \"pnpm run -s watch:build:dev:web\" \"pnpm run -s _dev:vscode-test-web --browserType none\"", + "_dev:vscode-test-web": "vscode-test-web --extensionDevelopmentPath=. ${WORKSPACE-test/fixtures/workspace}", + "build": "tsc --build && pnpm run -s _build:esbuild:desktop && pnpm run -s _build:esbuild:web && pnpm run -s _build:webviews --mode production", + "_build:desktop": "pnpm run -s _build:esbuild:desktop && pnpm run -s _build:webviews --mode production", + "_build:web": "pnpm run -s _build:esbuild:web && pnpm run -s _build:webviews --mode production", + "build:dev:desktop": "concurrently \"pnpm run -s _build:esbuild:desktop --alias:@sourcegraph/cody-shared=@sourcegraph/cody-shared/src/index --alias:@sourcegraph/cody-shared/src=@sourcegraph/cody-shared/src --alias:@sourcegraph/cody-ui=@sourcegraph/cody-ui/src/index --alias:@sourcegraph/cody-ui/src=@sourcegraph/cody-ui/src\" \"pnpm run -s _build:webviews --mode development\"", + "build:dev:web": "concurrently \"pnpm run -s _build:esbuild:web --alias:@sourcegraph/cody-shared=@sourcegraph/cody-shared/src/index --alias:@sourcegraph/cody-shared/src=@sourcegraph/cody-shared/src --alias:@sourcegraph/cody-ui=@sourcegraph/cody-ui/src/index --alias:@sourcegraph/cody-ui/src=@sourcegraph/cody-ui/src\" \"pnpm run -s _build:webviews --mode development\"", + "watch:build:dev:web": "concurrently \"pnpm run -s _build:esbuild:web --watch\" \"pnpm run -s _build:webviews --mode development --watch\"", + "watch:build:dev:desktop": "concurrently \"pnpm run -s _build:esbuild:desktop --watch\" \"pnpm run -s _build:webviews --mode development --watch\"", + "_build:esbuild:desktop": "pnpm download-wasm && esbuild ./src/extension.node.ts --bundle --outfile=dist/extension.node.js --external:vscode --format=cjs --platform=node --sourcemap", + "_build:esbuild:web": "esbuild ./src/extension.web.ts --platform=browser --bundle --outfile=dist/extension.web.js --alias:path=path-browserify --alias:os=os-browserify --external:vscode --define:process='{\"env\":{}}' --define:window=self --format=cjs --sourcemap", + "_build:webviews": "vite -c webviews/vite.config.ts build", + "release": "ts-node-transpile-only ./scripts/release.ts", + "download-wasm": "ts-node-transpile-only ./scripts/download-wasm-modules.ts", + "release:dry-run": "pnpm run download-wasm && CODY_RELEASE_DRY_RUN=1 ts-node ./scripts/release.ts", + "storybook": "storybook dev -p 6007 --no-open --no-version-updates --no-release-notes", + "test:e2e": "tsc --build && node dist/tsc/test/e2e/install-deps.js && pnpm run -s build:dev:desktop && playwright test", + "test:integration": "tsc --build ./test/integration && pnpm run -s build:dev:desktop && node --inspect -r ts-node/register dist/tsc/test/integration/main.js", + "test:unit": "vitest", + "vscode:prepublish": "pnpm -s run build", + "test:unit:tree-sitter-queries": "vitest ./src/tree-sitter/query-tests/*.test.ts", + "github-changelog": "ts-node-transpile-only ./scripts/github-changelog.ts" + }, + "categories": ["Programming Languages", "Machine Learning", "Snippets", "Education"], + "keywords": [ + "ai", + "openai", + "anthropic", + "assistant", + "chatbot", + "chat", + "refactor", + "documentation", + "test", + "sourcegraph", + "codey", + "llm", + "codegen", + "autocomplete", + "bot", + "model", + "typescript", + "javascript", + "python", + "golang", + "go", + "html", + "css", + "java", + "php", + "swift", + "kotlin" + ], + "repository": { + "type": "git", + "url": "https://github.com/sourcegraph/cody", + "directory": "vscode" + }, + "bugs": { + "url": "https://github.com/sourcegraph/cody/issues" + }, + "homepage": "https://sourcegraph.com/docs/cody", + "badges": [ + { + "url": "https://img.shields.io/discord/969688426372825169?color=5765F2", + "href": "https://srcgr.ph/discord", + "description": "Discord" + } + ], + "engines": { + "vscode": "^1.79.0" + }, + "main": "./dist/extension.node.js", + "browser": "./dist/extension.web.js", + "activationEvents": ["onLanguage", "onStartupFinished", "onWebviewPanel:cody.chatPanel"], + "contributes": { + "walkthroughs": [ + { + "id": "welcome", + "title": "Getting Started with Cody", + "description": "Discover how Cody can help you write, understand and fix code faster", + "steps": [ + { + "id": "autocomplete", + "title": "Code Autocomplete", + "description": "Start writing code and Cody will complete the line (or the entire function) for you. Hit tab to accept the suggestion.", + "media": { + "markdown": "walkthroughs/autocomplete.md" + } + }, + { + "id": "chat", + "title": "Cody Chat", + "description": "Answer questions about general programming topics, or specific to your codebase, with Cody chat.\n[Open Chat](command:cody.walkthrough.showChat)", + "media": { + "markdown": "walkthroughs/chat.md" + } + }, + { + "id": "edit", + "title": "Edit Code", + "description": "Ask Cody to perform code edits with your instructions.", + "media": { + "markdown": "walkthroughs/edit.md" + } + }, + { + "id": "fix", + "title": "Fix Code", + "description": "Use Cody to fix or explain problems in your code.", + "media": { + "markdown": "walkthroughs/fix.md" + } + }, + { + "id": "commands", + "title": "Cody Commands", + "description": "Discover all the built-in Cody commands, and create your own custom commands.\n[Show Commands](command:cody.commands.tree.view.focus)", + "media": { + "markdown": "walkthroughs/commands.md" + } + }, + { + "id": "search", + "title": "Natural Language Search (Beta)", + "description": "Easily find what you're looking for with Cody Natural Language Search.\n[Show Search](command:cody.search.focus)", + "media": { + "markdown": "walkthroughs/search.md" + } + } + ] + } + ], + "colors": [ + { + "id": "cody.fixup.conflictBackground", + "description": "The background of text Cody will edit where there is a specific conflict with your changes.", + "defaults": { + "light": "mergeEditor.conflictingLines.background", + "dark": "mergeEditor.conflictingLines.background" + } + }, + { + "id": "cody.fixup.conflictBorder", + "description": "The border of text Cody will edit, if there is a conflict with your changes.", + "defaults": { + "light": "mergeEditor.conflict.unhandledFocused.border", + "dark": "mergeEditor.conflict.unhandledFocused.border" + } + }, + { + "id": "cody.fixup.conflictedBackground", + "description": "The background of text Cody will edit, if there is a conflict with your changes.", + "defaults": { + "light": "#ffffff00", + "dark": "#00000000" + } + }, + { + "id": "cody.fixup.conflictedBorder", + "description": "The border of text Cody will edit, if there is a conflict with your changes.", + "defaults": { + "light": "mergeEditor.conflict.unhandledUnfocused.border", + "dark": "mergeEditor.conflict.unhandledUnfocused.border" + } + }, + { + "id": "cody.fixup.incomingBackground", + "description": "The background of text Cody will edit.", + "defaults": { + "light": "merge.incomingContentBackground", + "dark": "merge.incomingContentBackground" + } + }, + { + "id": "cody.fixup.incomingBorder", + "description": "The border around text Cody will edit.", + "defaults": { + "light": "#436EB1", + "dark": "#436EB1" + } + } + ], + "viewsContainers": { + "activitybar": [ + { + "id": "cody", + "title": "Cody", + "icon": "resources/cody.svg" + } + ] + }, + "views": { + "cody": [ + { + "type": "webview", + "id": "cody.chat", + "name": "Chat", + "when": "!cody.activated" + }, + { + "id": "cody.commands.tree.view", + "name": "Commands", + "when": "cody.activated" + }, + { + "id": "cody.chat.tree.view", + "name": "Chats", + "when": "cody.activated" + }, + { + "type": "webview", + "id": "cody.search", + "name": "Natural Language Search (Beta)", + "visibility": "visible", + "when": "cody.activated" + }, + { + "id": "cody.support.tree.view", + "name": "Settings & Support", + "when": "cody.activated" + } + ] + }, + "viewsWelcome": [ + { + "view": "cody.chat.tree.view", + "contents": "Chat alongside your code, attach files, add additional context, and try different chat models.\n[New Chat](command:cody.chat.panel.new)", + "when": "cody.activated" + } + ], + "commands": [ + { + "command": "cody.welcome", + "title": "Getting Started Guide", + "category": "Cody", + "group": "Cody", + "icon": "$(book)" + }, + { + "command": "cody.feedback", + "title": "Feedback", + "category": "Cody", + "group": "Cody", + "icon": "$(feedback)" + }, + { + "command": "cody.command.explain-output", + "title": "Ask Cody to Explain", + "category": "Cody Command", + "icon": "$(cody-logo)" + }, + { + "command": "cody.command.edit-code", + "category": "Cody Command", + "title": "Edit Code", + "when": "cody.activated && editorTextFocus", + "icon": "$(wand)" + }, + { + "command": "cody.command.explain-code", + "category": "Cody Command", + "title": "Explain Code", + "icon": "$(output)", + "when": "cody.activated && editorFocus" + }, + { + "command": "cody.command.unit-tests", + "category": "Cody Command", + "title": "Generate Unit Tests", + "icon": "$(package)", + "when": "cody.activated && editorTextFocus" + }, + { + "command": "cody.command.document-code", + "category": "Cody Command", + "title": "Document Code", + "icon": "$(book)", + "when": "cody.activated && editorTextFocus" + }, + { + "command": "cody.command.smell-code", + "category": "Cody Command", + "title": "Find Code Smells", + "icon": "$(checklist)", + "when": "cody.activated && editorFocus" + }, + { + "command": "cody.menu.custom-commands", + "category": "Cody Command", + "title": "Custom Commands", + "icon": "$(tools)", + "when": "cody.activated && workspaceFolderCount > 0" + }, + { + "command": "cody.command.context-search", + "category": "Cody", + "title": "Codebase Context Search", + "when": "cody.activated && workspaceFolderCount > 0" + }, + { + "command": "cody.auth.signout", + "category": "Cody", + "title": "Sign Out", + "icon": "$(sign-out)" + }, + { + "command": "cody.auth.signin", + "category": "Cody", + "title": "Switch Account…" + }, + { + "command": "cody.settings.extension", + "category": "Cody", + "title": "Extension Settings", + "group": "Cody", + "icon": "$(gear)" + }, + { + "command": "cody.settings.extension.chat", + "category": "Cody", + "title": "Chat Settings", + "group": "Cody", + "icon": "$(gear)" + }, + { + "command": "cody.focus", + "category": "Cody", + "title": "Sign In" + }, + { + "command": "cody.status-bar.interacted", + "category": "Cody", + "title": "Cody Settings", + "group": "Cody", + "icon": "$(settings-gear)", + "when": "cody.activated" + }, + { + "command": "cody.show-page", + "category": "Cody", + "title": "Open Account Page", + "group": "Cody", + "when": "cody.activated" + }, + { + "command": "cody.show-rate-limit-modal", + "category": "Cody", + "title": "Show Rate Limit Modal", + "group": "Cody", + "when": "cody.activated" + }, + { + "command": "cody.guardrails.debug", + "category": "Cody", + "title": "Guardrails Debug Attribution", + "enablement": "config.cody.experimental.guardrails && editorHasSelection" + }, + { + "command": "cody.menu.commands", + "category": "Cody", + "title": "Commands", + "when": "cody.activated", + "icon": "$(cody-logo)" + }, + { + "command": "cody.autocomplete.openTraceView", + "category": "Cody", + "title": "Open Autocomplete Trace View", + "when": "cody.activated && config.cody.autocomplete && config.cody.debug.enable && editorHasFocus && !editorReadonly" + }, + { + "command": "cody.autocomplete.manual-trigger", + "category": "Cody", + "title": "Trigger Autocomplete at Cursor", + "when": "cody.activated && config.cody.autocomplete && editorHasFocus && !editorReadonly && !editorHasSelection && !inlineSuggestionsVisible" + }, + { + "command": "cody.chat.panel.new", + "category": "Cody", + "title": "New Chat Panel", + "when": "cody.activated", + "group": "Cody", + "icon": "$(new-comment-icon)" + }, + { + "command": "cody.chat.tree.view.focus", + "category": "Cody", + "title": "Open Cody Sidebar", + "group": "Cody", + "icon": "$(layout-sidebar-left)" + }, + { + "command": "cody.chat.history.edit", + "category": "Cody", + "title": "Rename Chat", + "group": "Cody", + "icon": "$(edit)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.chat.history.clear", + "category": "Cody", + "title": "Delete All Chats", + "group": "Cody", + "icon": "$(trash)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.chat.history.delete", + "category": "Cody", + "title": "Delete Chat", + "group": "Cody", + "icon": "$(trash)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.chat.history.export", + "category": "Cody", + "title": "Export Chats as JSON", + "group": "Cody", + "icon": "$(arrow-circle-down)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.chat.history.panel", + "category": "Cody", + "title": "Chat History", + "group": "Cody", + "icon": "$(list-unordered)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.search.index-update", + "category": "Cody", + "group": "Cody", + "title": "Update search index for current workspace folder", + "icon": "$(refresh)", + "when": "cody.activated" + }, + { + "command": "cody.search.index-update-all", + "category": "Cody", + "group": "Cody", + "title": "Update search indices for all workspace folders", + "icon": "$(sync)", + "when": "cody.activated" + }, + { + "command": "cody.chat.panel.reset", + "category": "Cody", + "title": "New Chat Session", + "group": "Cody", + "icon": "$(clear-all)", + "when": "cody.activated && cody.hasChatHistory" + }, + { + "command": "cody.embeddings.resolveIssue", + "title": "Cody Embeddings", + "when": "cody.embeddings.hasIssue" + } + ], + "keybindings": [ + { + "command": "cody.chat.focus", + "key": "alt+/", + "when": "!cody.activated" + }, + { + "command": "cody.chat.tree.view.focus", + "key": "alt+f1", + "when": "cody.activated" + }, + { + "command": "cody.chat.panel.new", + "key": "alt+/", + "when": "cody.activated" + }, + { + "command": "cody.chat.panel.new", + "key": "alt+l", + "when": "cody.activated" + }, + { + "command": "cody.command.edit-code", + "key": "ctrl+shift+v", + "mac": "shift+cmd+v", + "when": "cody.activated && !editorReadonly" + }, + { + "command": "cody.command.edit-code", + "key": "alt+k", + "when": "cody.activated && !editorReadonly" + }, + { + "command": "cody.menu.commands", + "key": "alt+c", + "mac": "alt+c", + "when": "cody.activated" + }, + { + "command": "-github.copilot.generate", + "key": "ctrl+enter" + }, + { + "command": "cody.autocomplete.manual-trigger", + "key": "alt+\\", + "when": "editorTextFocus && !editorHasSelection && config.cody.autocomplete.enabled && !inlineSuggestionsVisible" + } + ], + "submenus": [ + { + "label": "Cody", + "id": "cody.submenu" + } + ], + "menus": { + "commandPalette": [ + { + "command": "cody.command.edit-code", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.command.explain-code", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.command.context-search", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.command.smell-code", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.command.unit-tests", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.command.document-code", + "when": "cody.activated && editorIsOpen" + }, + { + "command": "cody.menu.custom-commands", + "when": "cody.activated" + }, + { + "command": "cody.embeddings.resolveIssue", + "when": "false" + }, + { + "command": "cody.focus", + "title": "Cody: Sign In", + "when": "!cody.activated" + }, + { + "command": "cody.guardrails.debug", + "when": "config.cody.experimental.guardrails && editorHasSelection" + }, + { + "command": "cody.show-page", + "when": "false" + }, + { + "command": "cody.show-rate-limit-modal", + "when": "false" + } + ], + "editor/context": [ + { + "submenu": "cody.submenu", + "group": "0_cody" + } + ], + "cody.submenu": [ + { + "command": "cody.chat.panel.new", + "when": "cody.activated", + "group": "ask" + }, + { + "command": "cody.command.explain-code", + "when": "cody.activated", + "group": "command" + }, + { + "command": "cody.command.edit-code", + "when": "cody.activated", + "group": "ask" + }, + { + "command": "cody.command.unit-tests", + "when": "cody.activated", + "group": "command" + }, + { + "command": "cody.command.document-code", + "when": "cody.activated", + "group": "command" + }, + { + "command": "cody.command.smell-code", + "when": "cody.activated", + "group": "command" + }, + { + "command": "cody.menu.custom-commands", + "when": "cody.activated", + "group": "custom-commands" + }, + { + "command": "cody.focus", + "when": "!cody.activated", + "group": "other" + }, + { + "command": "cody.guardrails.debug", + "when": "cody.activated && config.cody.experimental.guardrails && editorHasSelection", + "group": "other" + } + ], + "view/title": [ + { + "command": "cody.chat.panel.new", + "when": "view == cody.chat.tree.view && cody.activated", + "group": "navigation@1" + }, + { + "command": "cody.chat.history.clear", + "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory", + "enablement": "cody.hasChatHistory", + "group": "navigation@2" + }, + { + "command": "cody.chat.history.export", + "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory", + "enablement": "cody.hasChatHistory", + "group": "navigation@3" + }, + { + "command": "cody.welcome", + "when": "view == cody.support.tree.view", + "group": "7_cody@0" + }, + { + "command": "cody.search.index-update", + "when": "view == cody.search && cody.activated", + "group": "navigation@1" + }, + { + "command": "cody.search.index-update-all", + "when": "view == cody.search && cody.activated", + "group": "navigation@2" + } + ], + "editor/title": [ + { + "command": "cody.menu.commands", + "when": "cody.activated && config.cody.editorTitleCommandIcon && !editorReadonly && (resourceScheme == file || activeWebviewPanelId == cody.chatPanel)", + "group": "navigation", + "visibility": "visible" + }, + { + "command": "cody.chat.panel.new", + "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", + "group": "navigation@1", + "visibility": "visible" + }, + { + "command": "cody.chat.history.panel", + "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", + "group": "navigation@2", + "visibility": "visible" + }, + { + "command": "cody.settings.extension.chat", + "when": "activeWebviewPanelId == cody.chatPanel && cody.activated", + "group": "navigation@3", + "visibility": "visible" + } + ], + "view/item/context": [ + { + "command": "cody.chat.history.edit", + "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory && viewItem == cody.chats", + "group": "inline@1" + }, + { + "command": "cody.chat.history.delete", + "when": "view == cody.chat.tree.view && cody.activated && cody.hasChatHistory && viewItem == cody.chats", + "group": "inline@2" + } + ], + "terminal/context": [ + { + "command": "cody.command.explain-output", + "group": "0_cody", + "when": "cody.activated" + } + ] + }, + "configuration": { + "type": "object", + "title": "Cody", + "properties": { + "cody.serverEndpoint": { + "order": 1, + "type": "string", + "description": "URL to the Sourcegraph instance.", + "examples": "https://example.sourcegraph.com", + "markdownDeprecationMessage": "**Deprecated**: Please sign in via the UI instead. If you are already signed in, you can empty this field to remove this warning.", + "deprecationMessage": "Deprecated: Please sign in via the UI instead." + }, + "cody.proxy": { + "type": "string", + "markdownDeprecationMessage": "The SOCKS proxy endpoint to access server endpoint. This is only supported with some autocomplete providers and only for use with the Cody Agent (for instance with JetBrains plugin). For VS Code please use http.proxy instead." + }, + "cody.codebase": { + "order": 2, + "type": "string", + "markdownDescription": "A Git repository URL to use instead of allowing Cody to infer the Git repository from the workspace.", + "examples": [ + "https://github.com/sourcegraph/cody", + "ssh://git@github.com/sourcegraph/cody" + ] + }, + "cody.useContext": { + "order": 99, + "type": "string", + "enum": ["embeddings", "keyword", "blended", "none"], + "default": "blended", + "markdownDescription": "Controls which context providers Cody uses for chat, commands and inline edits. Use 'blended' for best results. For debugging other context sources, 'embeddings' will use an embeddings-based index if available. 'keyword' will use a search-based index. 'none' will not use embeddings or search-based indexes." + }, + "cody.customHeaders": { + "order": 4, + "type": "object", + "markdownDescription": "Adds custom HTTP headers to all network requests to the Sourcegraph endpoint. Defining required headers here ensures requests are properly forwarded through intermediary proxy servers, which may mandate certain custom headers for internal or external communication.", + "default": {}, + "examples": [ + { + "Cache-Control": "no-cache", + "Proxy-Authenticate": "Basic" + } + ] + }, + "cody.autocomplete.enabled": { + "order": 5, + "type": "boolean", + "markdownDescription": "Enables code autocompletions.", + "default": true + }, + "cody.autocomplete.languages": { + "order": 5, + "type": "object", + "markdownDescription": "Enables or disables code autocompletions for specified [language ids](https://code.visualstudio.com/docs/languages/identifiers). `\"*\"` is the default fallback if no language-specific setting is found.\n\nThe default setting: \n\n```json\n{\n \"*\": true\n}\n```\n\nTo disable autocomplete for a given [language id](https://code.visualstudio.com/docs/languages/identifiers#_known-language-identifiers) set its value to `false`, for example:\n\n```json\n{\n \"*\": true,\n \"plaintext\": false\n}\n```", + "default": { + "*": true + }, + "examples": [ + { + "*": true, + "plaintext": false + } + ] + }, + "cody.editorTitleCommandIcon": { + "order": 7, + "type": "boolean", + "markdownDescription": "Adds a Cody icon to the editor title menu for quick access to Cody commands.", + "default": true + }, + "cody.commandCodeLenses": { + "order": 8, + "type": "boolean", + "markdownDescription": "Adds code lenses to current file for quick access to Cody commands.", + "default": false + }, + "cody.experimental.guardrails": { + "order": 9, + "type": "boolean", + "markdownDescription": "Experimental feature for internal use.", + "default": false + }, + "cody.experimental.localSymbols": { + "order": 9, + "type": "boolean", + "default": false, + "markdownDescription": "Experimental feature for internal use." + }, + "cody.chat.preInstruction": { + "order": 6, + "type": "string", + "markdownDescription": "A custom instruction to be included at the start of all chat messages. (E.g., \"Answer all my questions in Spanish.\")", + "examples": ["Answer all my questions in Spanish."] + }, + "cody.codeActions.enabled": { + "order": 11, + "title": "Cody Code Actions", + "type": "boolean", + "markdownDescription": "Add Cody options to Quick Fix menus for fixing, explaining, documenting, and editing code.", + "default": true + }, + "cody.commandHints.enabled": { + "order": 12, + "title": "Cody Command Hints", + "type": "boolean", + "markdownDescription": "Enable hints for Edit and Chat shortcuts, displayed alongside editor selections.", + "default": false + }, + "cody.experimental.simpleChatContext": { + "order": 99, + "type": "boolean", + "markdownDescription": "Uses the new simplifed chat context fetcher", + "default": true + }, + "cody.experimental.symfContext": { + "order": 99, + "type": "boolean", + "markdownDescription": "Enable symf code search context for chat", + "default": true + }, + "cody.experimental.symf.path": { + "order": 99, + "type": "string", + "markdownDescription": "Path to symf binary", + "default": "" + }, + "cody.experimental.tracing": { + "order": 99, + "type": "boolean", + "markdownDescription": "Enable OpenTelemetry tracing", + "default": false + }, + "cody.debug.enable": { + "order": 99, + "type": "boolean", + "markdownDescription": "Turns on debug output (visible in the VS Code Output panel under \"Cody by Sourcegraph\")" + }, + "cody.debug.verbose": { + "order": 99, + "type": "boolean", + "markdownDescription": "Enables verbose debug output. Debug messages may contain more details if the invocation includes verbose information." + }, + "cody.debug.filter": { + "order": 99, + "type": "string", + "markdownDescription": "Regular expression to filter debug output. If empty, defaults to '.*', which prints all messages." + }, + "cody.telemetry.level": { + "order": 99, + "type": "string", + "enum": ["all", "off"], + "enumDescriptions": [ + "Sends usage data and errors.", + "Disables all extension telemetry." + ], + "markdownDescription": "Controls the telemetry about Cody usage and errors. See [Cody usage and privacy notice](https://about.sourcegraph.com/terms/cody-notice).", + "default": "all" + }, + "cody.autocomplete.advanced.provider": { + "type": "string", + "default": null, + "enum": [null, "anthropic", "fireworks", "unstable-openai", "unstable-ollama"], + "markdownDescription": "The provider used for code autocomplete. Most providers other than `anthropic` require the `cody.autocomplete.advanced.serverEndpoint` and `cody.autocomplete.advanced.accessToken` settings to also be set. Check the Cody output channel for error messages if autocomplete is not working as expected." + }, + "cody.autocomplete.advanced.serverEndpoint": { + "type": "string", + "markdownDescription": "The server endpoint used for code autocomplete. This is only supported with a provider other than `anthropic`." + }, + "cody.autocomplete.advanced.accessToken": { + "type": "string", + "markdownDescription": "The access token used for code autocomplete. This is only supported with a provider other than `anthropic`." + }, + "cody.autocomplete.advanced.model": { + "type": "string", + "default": null, + "enum": [ + null, + "starcoder-16b", + "starcoder-7b", + "starcoder-3b", + "starcoder-1b", + "llama-code-7b", + "llama-code-13b", + "llama-code-13b-instruct", + "mistral-7b-instruct-4k" + ], + "markdownDescription": "Overwrite the model used for code autocompletion inference. This is only supported with the `fireworks` provider" + }, + "cody.autocomplete.completeSuggestWidgetSelection": { + "type": "boolean", + "default": true, + "markdownDescription": "Autocomplete based on the currently selection in the suggest widget. Requires the VS Code user setting `editor.inlineSuggest.suppressSuggestions` set to true and will change it to true in user settings if it is not true." + }, + "cody.autocomplete.formatOnAccept": { + "type": "boolean", + "default": false, + "markdownDescription": "Format completions on accept using [the default document formatter](https://code.visualstudio.com/docs/editor/codebasics#_formatting)." + }, + "cody.autocomplete.disableInsideComments": { + "type": "boolean", + "default": false, + "markdownDescription": "Prevent autocomplete requests while inside code comments." + }, + "cody.experimental.foldingRanges": { + "type": "string", + "enum": ["lsp", "indentation-based"], + "enumDescriptions": [ + "Use folding ranges that are enabled by default in VS Code, and are usually powered by LSP", + "Use custom implementation of folding ranges that is indentation based. This is the implementation that is used by other Cody clients like the JetBrains plugin" + ], + "markdownDescription": "Determines the algorithm Cody uses to detect folding ranges. Cody uses folding ranges for several features like the 'Document code' command", + "default": "all" + }, + "cody.autocomplete.experimental.syntacticPostProcessing": { + "type": "boolean", + "default": true, + "markdownDescription": "Rank autocomplete results with tree-sitter." + }, + "cody.autocomplete.experimental.dynamicMultilineCompletions": { + "type": "boolean", + "default": false, + "markdownDescription": "Dynamically switch from singleline to multiline completion based on the first completion line." + }, + "cody.autocomplete.experimental.hotStreak": { + "type": "boolean", + "default": false, + "markdownDescription": "Preload follow-up completions" + }, + "cody.autocomplete.experimental.fastPath": { + "type": "boolean", + "default": false, + "markdownDescription": "Routes code completion requests directly to our Cody Gateway instance. Only works when connected to the Cody community edition and when using the default StarCoder model." + }, + "cody.autocomplete.experimental.graphContext": { + "type": "string", + "default": null, + "enum": [null, "bfg", "bfg-mixed"], + "markdownDescription": "Use the code graph to retrieve context for autocomplete requests." + }, + "cody.autocomplete.experimental.ollamaOptions": { + "type": "object", + "markdownDescription": "Options for the [Ollama](https://ollama.ai/) experimental autocomplete provider.", + "default": { + "url": "http://localhost:11434", + "model": "deepseek-coder:6.7b-base-q4_K_M" + }, + "properties": { + "url": { + "type": "string", + "description": "The URL of the Ollama API.", + "default": "http://localhost:11434" + }, + "model": { + "type": "string", + "default": "deepseek-coder:6.7b-base-q4_K_M", + "examples": [ + "codellama:7b-code", + "codellama:13b-code", + "deepseek-coder:6.7b-base-q4_K_M" + ] + }, + "parameters": { + "type": "object", + "description": "Parameters for how Ollama will run the model. See Ollama [PARAMETER documentation](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-request-with-options).", + "properties": { + "num_ctx": "number", + "temperature": "number", + "top_k": "number", + "top_p": "number" + } + } + } + }, + "cody.internal.unstable": { + "order": 999, + "type": "boolean", + "markdownDescription": "[INTERNAL ONLY] Enable all unstable experimental features.", + "default": false + } + } + }, + "icons": { + "cody-logo": { + "description": "Cody logo", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0041" + } + }, + "cody-logo-heavy": { + "description": "Cody logo heavy", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0042" + } + }, + "anthropic-logo": { + "description": "Anthropic logo", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0043" + } + }, + "openai-logo": { + "description": "OpenAI logo", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0044" + } + }, + "mistral-logo": { + "description": "Mistral logo", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0045" + } + }, + "new-comment-icon": { + "description": "Cody logo heavy", + "default": { + "fontPath": "resources/cody-icons.woff", + "fontCharacter": "\\0048" + } + } + } + }, + "dependencies": { + "@anthropic-ai/sdk": "^0.4.2", + "@opentelemetry/api": "^1.7.0", + "@opentelemetry/core": "^1.18.1", + "@opentelemetry/exporter-trace-otlp-http": "^0.45.1", + "@opentelemetry/instrumentation-http": "^0.45.1", + "@opentelemetry/resources": "^1.18.1", + "@opentelemetry/sdk-node": "^0.45.1", + "@opentelemetry/sdk-trace-base": "^1.18.1", + "@opentelemetry/semantic-conventions": "^1.18.1", + "@sentry/browser": "^7.66.0", + "@sentry/core": "^7.66.0", + "@sentry/node": "^7.66.0", + "@sourcegraph/cody-shared": "workspace:*", + "@sourcegraph/cody-ui": "workspace:*", + "@sourcegraph/telemetry": "^0.16.0", + "@storybook/preview-api": "^7.6.2", + "@vscode/codicons": "^0.0.35", + "@vscode/webview-ui-toolkit": "^1.2.2", + "async-mutex": "^0.4.0", + "axios": "^1.3.6", + "classnames": "^2.3.2", + "crypto-js": "^4.2.0", + "detect-indent": "^7.0.1", + "fast-xml-parser": "^4.3.2", + "glob": "^7.2.3", + "isomorphic-fetch": "^3.0.0", + "js-levenshtein": "^1.1.6", + "lodash": "^4.17.21", + "lru-cache": "^10.0.0", + "mkdirp": "^3.0.1", + "os-browserify": "^0.3.0", + "socks-proxy-agent": "^8.0.1", + "unzipper": "^0.10.14", + "uuid": "^9.0.0", + "vscode-languageserver-textdocument": "^1.0.8", + "vscode-uri": "^3.0.7", + "web-tree-sitter": "^0.20.8", + "wink-nlp-utils": "^2.1.0" + }, + "devDependencies": { + "@google-cloud/pubsub": "^3.7.3", + "@playwright/test": "1.39.0", + "@pollyjs/adapter-node-http": "^6.0.6", + "@pollyjs/core": "^6.0.6", + "@pollyjs/persister": "^6.0.6", + "@pollyjs/persister-fs": "^6.0.6", + "@types/axios": "^0.14.0", + "@types/blueimp-md5": "^2.18.2", + "@types/crypto-js": "^4.2.2", + "@types/dedent": "^0.7.0", + "@types/express": "^4.17.17", + "@types/fs-extra": "^11.0.4", + "@types/glob": "^8.0.0", + "@types/isomorphic-fetch": "^0.0.39", + "@types/js-levenshtein": "^1.1.1", + "@types/lodash": "^4.14.195", + "@types/mocha": "^10.0.1", + "@types/pako": "^2.0.3", + "@types/progress": "^2.0.5", + "@types/semver": "^7.5.0", + "@types/unzipper": "^0.10.7", + "@types/uuid": "^9.0.2", + "@types/vscode": "^1.79.0", + "@types/yaml": "^1.9.7", + "@vscode/test-electron": "^2.3.8", + "@vscode/test-web": "^0.0.47", + "@vscode/vsce": "^2.22.0", + "blueimp-md5": "^2.19.0", + "concurrently": "^8.2.0", + "dedent": "^0.7.0", + "express": "^4.18.2", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^11.2.0", + "fuzzysort": "^2.0.4", + "mocha": "^10.2.0", + "ovsx": "^0.8.2", + "pako": "^2.1.0", + "path-browserify": "^1.0.1", + "playwright": "1.39.0", + "progress": "^2.0.3", + "semver": "^7.5.4", + "yaml": "^2.3.4" + } +} From 77bf6b54c335c432bfc292f9fcbfe6ffc4c92d5e Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Wed, 7 Feb 2024 18:24:21 +0100 Subject: [PATCH 07/18] remove unuse import --- vscode/src/services/open-telemetry/OpenTelemetryService.node.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts index 04ab01c95a..949a74c7d2 100644 --- a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts +++ b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts @@ -5,7 +5,6 @@ import { Resource } from '@opentelemetry/resources' import { NodeSDK } from '@opentelemetry/sdk-node' import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' -import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' import { FeatureFlag, From 91d3655eb4a960c11e16e4ba5e9cf1713342cb35 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Wed, 7 Feb 2024 18:41:34 +0100 Subject: [PATCH 08/18] Fix imports --- vscode/src/completions/logger.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vscode/src/completions/logger.ts b/vscode/src/completions/logger.ts index e26c5b2f97..d4e38eee9d 100644 --- a/vscode/src/completions/logger.ts +++ b/vscode/src/completions/logger.ts @@ -24,7 +24,7 @@ import * as statistics from './statistics' import type { InlineCompletionItemWithAnalytics } from './text-processing/process-inline-completions' import { lines } from './text-processing/utils' import type { InlineCompletionItem } from './types' -import { Span, trace } from '@opentelemetry/api' +import type { Span } from '@opentelemetry/api' // A completion ID is a unique identifier for a specific completion text displayed at a specific // point in the document. A single completion can be suggested multiple times. From 83719deb2b06cb6a14d78bb6c1fdbec9b077b2dc Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Wed, 7 Feb 2024 18:43:35 +0100 Subject: [PATCH 09/18] Fix imports 2 --- lib/shared/src/tracing/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/shared/src/tracing/index.ts b/lib/shared/src/tracing/index.ts index 133c5bca9f..f1046ef878 100644 --- a/lib/shared/src/tracing/index.ts +++ b/lib/shared/src/tracing/index.ts @@ -3,7 +3,7 @@ import opentelemetry, { context, propagation, type Exception, - Span, + type Span, } from '@opentelemetry/api' const INSTRUMENTATION_SCOPE_NAME = 'cody' From 61fe9a2ec4b755fcbf69640b96e39f80c1d54985 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Thu, 8 Feb 2024 14:07:36 +0100 Subject: [PATCH 10/18] More granular http tracing and sampling on the client --- .vscode/launch.json | 2 + lib/shared/src/tracing/index.ts | 5 +- .../inline-completion-item-provider.ts | 34 ++- vscode/src/completions/logger.ts | 3 - vscode/src/completions/providers/fireworks.ts | 254 ++++++++++-------- .../OpenTelemetryService.node.ts | 3 + 6 files changed, 185 insertions(+), 116 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index d89acdf341..a9cdbc5811 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -15,6 +15,8 @@ "CODY_DEBUG_ENABLE": "true" // Enable the Node debug protocol for the TypeScript server: // "TSS_DEBUG": "5859" + // Let extension behave like you're on dotcom when connected locally: + // "TESTING_DOTCOM_URL": "https://sourcegraph.test:3443" } }, { diff --git a/lib/shared/src/tracing/index.ts b/lib/shared/src/tracing/index.ts index f1046ef878..b4d6ba34cf 100644 --- a/lib/shared/src/tracing/index.ts +++ b/lib/shared/src/tracing/index.ts @@ -9,7 +9,10 @@ import opentelemetry, { const INSTRUMENTATION_SCOPE_NAME = 'cody' const INSTRUMENTATION_SCOPE_VERSION = '0.1' -const tracer = opentelemetry.trace.getTracer(INSTRUMENTATION_SCOPE_NAME, INSTRUMENTATION_SCOPE_VERSION) +export const tracer = opentelemetry.trace.getTracer( + INSTRUMENTATION_SCOPE_NAME, + INSTRUMENTATION_SCOPE_VERSION +) export function getActiveTraceAndSpanId(): { traceId: string; spanId: string } | undefined { const activeSpan = opentelemetry.trace.getActiveSpan() diff --git a/vscode/src/completions/inline-completion-item-provider.ts b/vscode/src/completions/inline-completion-item-provider.ts index 48b5e69b7d..660ef4c671 100644 --- a/vscode/src/completions/inline-completion-item-provider.ts +++ b/vscode/src/completions/inline-completion-item-provider.ts @@ -13,7 +13,7 @@ import type { AuthStatus } from '../chat/protocol' import { logDebug } from '../log' import { localStorage } from '../services/LocalStorageProvider' import type { CodyStatusBar } from '../services/StatusBar' -import { telemetryService } from '../services/telemetry' +import { getExtensionDetails, telemetryService } from '../services/telemetry' import { getArtificialDelay, resetArtificialDelay, type LatencyFeatureFlags } from './artificial-delay' import { ContextMixer } from './context/context-mixer' @@ -46,6 +46,9 @@ import { import type { ProvideInlineCompletionItemsTracer, ProvideInlineCompletionsItemTraceData } from './tracer' import { isLocalCompletionsProvider } from './providers/unstable-ollama' import { completionProviderConfig } from './completion-provider-config' +import { Span } from '@opentelemetry/api' +import { version } from '../version' +import { getConfiguration } from '../configuration' interface AutocompleteResult extends vscode.InlineCompletionList { logId: CompletionLogID @@ -300,9 +303,10 @@ export class InlineCompletionItemProvider return null } - const latencyFeatureFlags: LatencyFeatureFlags = { - user: await userLatencyPromise, - } + const [latencyFeatureFlags, tracingFlagEnabled] = await Promise.all([ + userLatencyPromise.then(user => ({ user }) as LatencyFeatureFlags), + featureFlagProvider.evaluateFeatureFlag(FeatureFlag.CodyAutocompleteTracing), + ]) const artificialDelay = getArtificialDelay( latencyFeatureFlags, @@ -434,6 +438,12 @@ export class InlineCompletionItemProvider this.unstable_handleDidShowCompletionItem(autocompleteItems[0]) } + // If the completion callbacks makes it this far, it is going to be displayed on the + // client (for VS Code we have already run the did show handler). However, since we + // are still inside the callback, we can add some final data to the span and decide + // wether to sample it or not. + markSpanAsSampled(span, result.source, tracingFlagEnabled) + return autocompleteResult } catch (error) { this.onError(error as Error) @@ -775,3 +785,19 @@ function onlyCompletionWidgetSelectionChanged( return prevSelectedCompletionInfo.text !== nextSelectedCompletionInfo.text } + +function markSpanAsSampled( + span: Span, + source: InlineCompletionsResultSource, + tracingFlagEnabled: boolean +): void { + // Add exposed experiments at the very end to make sure we include experiments that the user is + // being exposed to while the completion was generated + span.setAttributes(featureFlagProvider.getExposedExperiments()) + span.setAttributes(getExtensionDetails(getConfiguration(vscode.workspace.getConfiguration())) as any) + + const shouldSample = tracingFlagEnabled && source !== InlineCompletionsResultSource.HotStreak + if (shouldSample) { + span.setAttribute('sampled', true) + } +} diff --git a/vscode/src/completions/logger.ts b/vscode/src/completions/logger.ts index d4e38eee9d..a995e1e3ac 100644 --- a/vscode/src/completions/logger.ts +++ b/vscode/src/completions/logger.ts @@ -525,9 +525,6 @@ export function suggested(id: CompletionLogID, span?: Span): void { if (!event.suggestedAt) { event.suggestedAt = performance.now() - // Add exposed experiments at the very end to make sure we include experiments that the user - // is being exposed to while the completion was generated - span?.setAttributes(featureFlagProvider.getExposedExperiments()) span?.setAttributes(getSharedParams(event) as any) span?.addEvent('suggested') diff --git a/vscode/src/completions/providers/fireworks.ts b/vscode/src/completions/providers/fireworks.ts index 338b45e1c9..123aa25f35 100644 --- a/vscode/src/completions/providers/fireworks.ts +++ b/vscode/src/completions/providers/fireworks.ts @@ -18,6 +18,7 @@ import { addTraceparent, type ConfigurationWithAccessToken, CompletionStopReason, + BrowserOrNodeResponse, } from '@sourcegraph/cody-shared' import { getLanguageConfig } from '../../tree-sitter/language' @@ -40,6 +41,8 @@ import { } from './provider' import { createRateLimitErrorFromResponse, createSSEIterator } from '../client' import type { AuthStatus } from '../../chat/protocol' +import { type Span, SpanStatusCode } from '@opentelemetry/api' +import { tracer } from '@sourcegraph/cody-shared/src/tracing' export interface FireworksOptions { model: FireworksModel @@ -311,7 +314,7 @@ ${intro}${infillPrefix}${OPENING_CODE_TAG}${CLOSING_CODE_TAG}${infillSuffix} // Note: This client assumes that it is run inside a Node.js environment and will always use // streaming to simplify the logic. Environments that do not support that should fall back to // the default client. - private async *createFastPathClient( + private createFastPathClient( requestParams: CodeCompletionsParams, abortController: AbortController ): CompletionResponseGenerator { @@ -325,129 +328,154 @@ ${intro}${infillPrefix}${OPENING_CODE_TAG}${CLOSING_CODE_TAG}${infillSuffix} const url = `${gatewayUrl}/v1/completions/fireworks` const log = this.client.logger?.startCompletion(requestParams, url) - // Convert the SG instance messages array back to the original prompt - const prompt = requestParams.messages[0]!.text! - - // c.f. https://readme.fireworks.ai/reference/createcompletion - const fireworksRequest = { - model: requestParams.model?.replace(/^fireworks\//, ''), - prompt, - max_tokens: requestParams.maxTokensToSample, - echo: false, - temperature: requestParams.temperature, - top_p: requestParams.topP, - top_k: requestParams.topK, - stop: requestParams.stopSequences, - stream: true, - } - - const headers = new Headers() - // Force HTTP connection reuse to reduce latency. - // c.f. https://github.com/microsoft/vscode/issues/173861 - headers.set('Connection', 'keep-alive') - headers.set('Content-Type', 'application/json; charset=utf-8') - headers.set('Authorization', `Bearer ${this.fastPathAccessToken}`) - headers.set('X-Sourcegraph-Feature', 'code_completions') - addTraceparent(headers) - - const response = await fetch(url, { - method: 'POST', - body: JSON.stringify(fireworksRequest), - headers, - signal: abortController.signal, - }) - - const traceId = getActiveTraceAndSpanId()?.traceId - - // When rate-limiting occurs, the response is an error message The response here is almost - // identical to the SG instance response but does not contain information on whether a user - // is eligible to upgrade to the pro plan. We get this from the authState instead. - if (response.status === 429) { - const upgradeIsAvailable = this.authStatus.userCanUpgrade - throw await createRateLimitErrorFromResponse(response, upgradeIsAvailable) - } - - if (!response.ok) { - throw new NetworkError( - response, - (await response.text()) + (isLocalInstance ? '\nIs Cody Gateway running locally?' : ''), - traceId - ) - } - - if (response.body === null) { - throw new TracedError('No response body', traceId) - } - - const isStreamingResponse = response.headers.get('content-type')?.startsWith('text/event-stream') - if (!isStreamingResponse || !isNodeResponse(response)) { - throw new TracedError('No streaming response given', traceId) - } - - let lastResponse: CompletionResponse | undefined - try { - const iterator = createSSEIterator(response.body) - let chunkIndex = 0 - - for await (const { event, data } of iterator) { - if (event === 'error') { - throw new TracedError(data, traceId) + // The async generator can not use arrow function syntax so we close over the context + const self = this + + return tracer.startActiveSpan( + `POST ${url}`, + async function* (span): CompletionResponseGenerator { + // Convert the SG instance messages array back to the original prompt + const prompt = requestParams.messages[0]!.text! + + // c.f. https://readme.fireworks.ai/reference/createcompletion + const fireworksRequest = { + model: requestParams.model?.replace(/^fireworks\//, ''), + prompt, + max_tokens: requestParams.maxTokensToSample, + echo: false, + temperature: requestParams.temperature, + top_p: requestParams.topP, + top_k: requestParams.topK, + stop: requestParams.stopSequences, + stream: true, } - if (abortController.signal.aborted) { - if (lastResponse) { - lastResponse.stopReason = CompletionStopReason.RequestAborted - } - break + const headers = new Headers() + // Force HTTP connection reuse to reduce latency. + // c.f. https://github.com/microsoft/vscode/issues/173861 + headers.set('Connection', 'keep-alive') + headers.set('Content-Type', 'application/json; charset=utf-8') + headers.set('Authorization', `Bearer ${self.fastPathAccessToken}`) + headers.set('X-Sourcegraph-Feature', 'code_completions') + addTraceparent(headers) + + const response = await fetch(url, { + method: 'POST', + body: JSON.stringify(fireworksRequest), + headers, + signal: abortController.signal, + }) + + logResponse(span, response) + + const traceId = getActiveTraceAndSpanId()?.traceId + + // When rate-limiting occurs, the response is an error message The response here is almost + // identical to the SG instance response but does not contain information on whether a user + // is eligible to upgrade to the pro plan. We get this from the authState instead. + if (response.status === 429) { + const upgradeIsAvailable = self.authStatus.userCanUpgrade + throw await createRateLimitErrorFromResponse(response, upgradeIsAvailable) } - // [DONE] is a special non-JSON message to indicate the end of the stream - if (data === '[DONE]') { - break + if (!response.ok) { + throw new NetworkError( + response, + (await response.text()) + + (isLocalInstance ? '\nIs Cody Gateway running locally?' : ''), + traceId + ) } - const parsed = JSON.parse(data) as FireworksSSEData - const choice = parsed.choices[0] - - if (!choice) { - continue + if (response.body === null) { + throw new TracedError('No response body', traceId) } - lastResponse = { - completion: (lastResponse ? lastResponse.completion : '') + choice.text, - stopReason: - choice.finish_reason ?? - (lastResponse ? lastResponse.stopReason : CompletionStopReason.StreamingChunk), + const isStreamingResponse = response.headers + .get('content-type') + ?.startsWith('text/event-stream') + if (!isStreamingResponse || !isNodeResponse(response)) { + throw new TracedError('No streaming response given', traceId) } - yield lastResponse + let lastResponse: CompletionResponse | undefined + try { + const iterator = createSSEIterator(response.body) + let chunkIndex = 0 + + for await (const { event, data } of iterator) { + if (event === 'error') { + throw new TracedError(data, traceId) + } + + if (abortController.signal.aborted) { + if (lastResponse) { + lastResponse.stopReason = CompletionStopReason.RequestAborted + } + break + } + + // [DONE] is a special non-JSON message to indicate the end of the stream + if (data === '[DONE]') { + break + } + + const parsed = JSON.parse(data) as FireworksSSEData + const choice = parsed.choices[0] + + if (!choice) { + continue + } + + lastResponse = { + completion: (lastResponse ? lastResponse.completion : '') + choice.text, + stopReason: + choice.finish_reason ?? + (lastResponse + ? lastResponse.stopReason + : CompletionStopReason.StreamingChunk), + } + + span.addEvent('yield', { stopReason: lastResponse.stopReason }) + yield lastResponse + + chunkIndex += 1 + } - chunkIndex += 1 - } + if (lastResponse === undefined) { + throw new TracedError('No completion response received', traceId) + } - if (lastResponse === undefined) { - throw new TracedError('No completion response received', traceId) - } + if (!lastResponse.stopReason) { + lastResponse.stopReason = CompletionStopReason.RequestFinished + } - if (!lastResponse.stopReason) { - lastResponse.stopReason = CompletionStopReason.RequestFinished - } + log?.onComplete(lastResponse) + span.addEvent('return', { stopReason: lastResponse.stopReason }) + span.setStatus({ code: SpanStatusCode.OK }) + span.end() - log?.onComplete(lastResponse) + return lastResponse + } catch (error) { + if (isAbortError(error as Error) && lastResponse) { + log?.onComplete(lastResponse) + return + } - return lastResponse - } catch (error) { - if (isRateLimitError(error as Error)) { - throw error - } - if (isAbortError(error as Error) && lastResponse) { - log?.onComplete(lastResponse) - } + span.recordException(error as Error) + span.setStatus({ code: SpanStatusCode.ERROR }) + span.end() - const message = `error parsing streaming CodeCompletionResponse: ${error}` - log?.onError(message, error) - throw new TracedError(message, traceId) - } + if (isRateLimitError(error as Error)) { + throw error + } + + const message = `error parsing streaming CodeCompletionResponse: ${error}` + log?.onError(message, error) + throw new TracedError(message, traceId) + } + } + ) } } @@ -538,3 +566,13 @@ function dotcomTokenToGatewayToken(dotcomToken: string): string | undefined { const gatewayTokenBytes = SHA256(SHA256(accessTokenBytes)).toString() return 'sgd_' + gatewayTokenBytes } +function logResponse(span: Span, response: BrowserOrNodeResponse) { + const responseHeaders: Record = {} + response.headers.forEach((value, key) => { + responseHeaders[key] = value + }) + span.addEvent('response', { + ...responseHeaders, + status: response.status, + }) +} diff --git a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts index 949a74c7d2..5d18b8563e 100644 --- a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts +++ b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts @@ -64,6 +64,9 @@ export class OpenTelemetryService { instrumentations: [new HttpInstrumentation()], traceExporter: new OTLPTraceExporter({ url: traceUrl }), + // Disable default process logging. We do not care about the VS Code extension process + autoDetectResources: false, + ...(process.env.NODE_ENV === 'development' && { spanProcessor: new BatchSpanProcessor(new ConsoleBatchSpanExporter()), }), From de919158a96a8e3ca04a59349d6c178eea820861 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Thu, 8 Feb 2024 14:11:44 +0100 Subject: [PATCH 11/18] Biome do your thing --- vscode/src/completions/inline-completion-item-provider.ts | 3 +-- vscode/src/completions/logger.ts | 7 +------ vscode/src/completions/providers/fireworks.ts | 2 +- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/vscode/src/completions/inline-completion-item-provider.ts b/vscode/src/completions/inline-completion-item-provider.ts index 16e5bca7af..13ed499df5 100644 --- a/vscode/src/completions/inline-completion-item-provider.ts +++ b/vscode/src/completions/inline-completion-item-provider.ts @@ -46,8 +46,7 @@ import { import type { ProvideInlineCompletionItemsTracer, ProvideInlineCompletionsItemTraceData } from './tracer' import { isLocalCompletionsProvider } from './providers/experimental-ollama' import { completionProviderConfig } from './completion-provider-config' -import { Span } from '@opentelemetry/api' -import { version } from '../version' +import type { Span } from '@opentelemetry/api' import { getConfiguration } from '../configuration' interface AutocompleteResult extends vscode.InlineCompletionList { diff --git a/vscode/src/completions/logger.ts b/vscode/src/completions/logger.ts index a995e1e3ac..11eb5da3d6 100644 --- a/vscode/src/completions/logger.ts +++ b/vscode/src/completions/logger.ts @@ -2,12 +2,7 @@ import { LRUCache } from 'lru-cache' import * as uuid from 'uuid' import * as vscode from 'vscode' -import { - isNetworkError, - type BillingCategory, - type BillingProduct, - featureFlagProvider, -} from '@sourcegraph/cody-shared' +import { isNetworkError, type BillingCategory, type BillingProduct } from '@sourcegraph/cody-shared' import type { KnownString, TelemetryEventParameters } from '@sourcegraph/telemetry' import { getConfiguration } from '../configuration' diff --git a/vscode/src/completions/providers/fireworks.ts b/vscode/src/completions/providers/fireworks.ts index 4833c8301a..288301fc5d 100644 --- a/vscode/src/completions/providers/fireworks.ts +++ b/vscode/src/completions/providers/fireworks.ts @@ -18,7 +18,7 @@ import { addTraceparent, type ConfigurationWithAccessToken, CompletionStopReason, - BrowserOrNodeResponse, + type BrowserOrNodeResponse, } from '@sourcegraph/cody-shared' import { getLanguageConfig } from '../../tree-sitter/language' From 09eb00135d664fe1c73ef911163eeb564186d801 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Thu, 8 Feb 2024 14:13:28 +0100 Subject: [PATCH 12/18] changelog --- vscode/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/vscode/CHANGELOG.md b/vscode/CHANGELOG.md index fe1e7a95eb..f74f311709 100644 --- a/vscode/CHANGELOG.md +++ b/vscode/CHANGELOG.md @@ -13,6 +13,7 @@ This is a log of all notable changes to Cody for VS Code. [Unreleased] changes a ### Changed - Custom Command: The `description` field is now optional and will default to use the command prompt. [pull/3025](https://github.com/sourcegraph/cody/pull/3025) +- Autocomplete: Improve client side tracing to get a better understanding of the E2E latency. [pull/3034](https://github.com/sourcegraph/cody/pull/3034) ## [1.4.0] From 3ee52dd125a25edf11b365345f8d79b480d5b3de Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Thu, 8 Feb 2024 18:07:16 +0100 Subject: [PATCH 13/18] Add tracing for feature flag stuff --- .../experimentation/FeatureFlagProvider.ts | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/lib/shared/src/experimentation/FeatureFlagProvider.ts b/lib/shared/src/experimentation/FeatureFlagProvider.ts index 1510dac598..c994810d74 100644 --- a/lib/shared/src/experimentation/FeatureFlagProvider.ts +++ b/lib/shared/src/experimentation/FeatureFlagProvider.ts @@ -1,4 +1,5 @@ import { graphqlClient, type SourcegraphGraphQLAPIClient } from '../sourcegraph-api/graphql' +import { wrapInActiveSpan } from '../tracing' import { isError } from '../utils' export enum FeatureFlag { @@ -73,22 +74,24 @@ export class FeatureFlagProvider { } public async evaluateFeatureFlag(flagName: FeatureFlag): Promise { - const endpoint = this.apiClient.endpoint - if (process.env.BENCHMARK_DISABLE_FEATURE_FLAGS) { - return false - } - - const cachedValue = this.getFromCache(flagName, endpoint) - if (cachedValue !== undefined) { - return cachedValue - } - - const value = await this.apiClient.evaluateFeatureFlag(flagName) - if (!this.featureFlags[endpoint]) { - this.featureFlags[endpoint] = {} - } - this.featureFlags[endpoint][flagName] = value === null || isError(value) ? false : value - return this.featureFlags[endpoint][flagName] + return wrapInActiveSpan(`FeatureFlagProvider.evaluateFeatureFlag.${flagName}`, async () => { + const endpoint = this.apiClient.endpoint + if (process.env.BENCHMARK_DISABLE_FEATURE_FLAGS) { + return false + } + + const cachedValue = this.getFromCache(flagName, endpoint) + if (cachedValue !== undefined) { + return cachedValue + } + + const value = await this.apiClient.evaluateFeatureFlag(flagName) + if (!this.featureFlags[endpoint]) { + this.featureFlags[endpoint] = {} + } + this.featureFlags[endpoint][flagName] = value === null || isError(value) ? false : value + return this.featureFlags[endpoint][flagName] + }) } public async syncAuthStatus(): Promise { @@ -97,10 +100,12 @@ export class FeatureFlagProvider { } private async refreshFeatureFlags(): Promise { - const endpoint = this.apiClient.endpoint - const data = await this.apiClient.getEvaluatedFeatureFlags() - this.featureFlags[endpoint] = isError(data) ? {} : data - this.lastUpdated = Date.now() + return wrapInActiveSpan('FeatureFlagProvider.refreshFeatureFlags', async () => { + const endpoint = this.apiClient.endpoint + const data = await this.apiClient.getEvaluatedFeatureFlags() + this.featureFlags[endpoint] = isError(data) ? {} : data + this.lastUpdated = Date.now() + }) } } From ed14333a0377cc293c9a6caf035cdb03549bdef0 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Fri, 9 Feb 2024 15:37:03 +0100 Subject: [PATCH 14/18] Fixes --- vscode/src/completions/inline-completion-item-provider.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/vscode/src/completions/inline-completion-item-provider.ts b/vscode/src/completions/inline-completion-item-provider.ts index 4b2e0e9b15..a7044b14d1 100644 --- a/vscode/src/completions/inline-completion-item-provider.ts +++ b/vscode/src/completions/inline-completion-item-provider.ts @@ -3,6 +3,7 @@ import * as vscode from 'vscode' import { ConfigFeaturesSingleton, FeatureFlag, + featureFlagProvider, isCodyIgnoredFile, RateLimitError, wrapInActiveSpan, From 228e7624ea5bce21db0fd775ffb112c0d3e6f042 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Fri, 9 Feb 2024 15:54:41 +0100 Subject: [PATCH 15/18] Unify logging for request handlers --- lib/shared/src/tracing/index.ts | 7 + vscode/src/completions/client.ts | 295 ++++++++++-------- vscode/src/completions/providers/fireworks.ts | 59 ++-- 3 files changed, 202 insertions(+), 159 deletions(-) diff --git a/lib/shared/src/tracing/index.ts b/lib/shared/src/tracing/index.ts index b4d6ba34cf..29ed2ead9f 100644 --- a/lib/shared/src/tracing/index.ts +++ b/lib/shared/src/tracing/index.ts @@ -67,3 +67,10 @@ export function addTraceparent(headers: Headers): void { }, }) } + +export function recordSpanWithError(span: Span, error: Error): Error { + span.recordException(error) + span.setStatus({ code: SpanStatusCode.ERROR }) + span.end() + return error +} diff --git a/vscode/src/completions/client.ts b/vscode/src/completions/client.ts index 912e805f3a..af970b3862 100644 --- a/vscode/src/completions/client.ts +++ b/vscode/src/completions/client.ts @@ -20,6 +20,8 @@ import { } from '@sourcegraph/cody-shared' import { fetch } from '../fetch' +import { recordSpanWithError, tracer } from '@sourcegraph/cody-shared/src/tracing' +import { Span, SpanStatusCode } from '@opentelemetry/api' /** * Access the code completion LLM APIs via a Sourcegraph server instance. @@ -28,7 +30,7 @@ export function createClient( config: CompletionsClientConfig, logger?: CompletionLogger ): CodeCompletionsClient { - async function* complete( + function complete( params: CodeCompletionsParams, abortController: AbortController ): CompletionResponseGenerator { @@ -36,154 +38,178 @@ export function createClient( const log = logger?.startCompletion(params, url) const { signal } = abortController - const tracingFlagEnabled = await featureFlagProvider.evaluateFeatureFlag( - FeatureFlag.CodyAutocompleteTracing - ) - - const headers = new Headers(config.customHeaders) - // Force HTTP connection reuse to reduce latency. - // c.f. https://github.com/microsoft/vscode/issues/173861 - headers.set('Connection', 'keep-alive') - headers.set('Content-Type', 'application/json; charset=utf-8') - if (config.accessToken) { - headers.set('Authorization', `token ${config.accessToken}`) - } - if (tracingFlagEnabled) { - headers.set('X-Sourcegraph-Should-Trace', '1') + return tracer.startActiveSpan( + `POST ${url}`, + async function* (span): CompletionResponseGenerator { + const tracingFlagEnabled = await featureFlagProvider.evaluateFeatureFlag( + FeatureFlag.CodyAutocompleteTracing + ) + + const headers = new Headers(config.customHeaders) + // Force HTTP connection reuse to reduce latency. + // c.f. https://github.com/microsoft/vscode/issues/173861 + headers.set('Connection', 'keep-alive') + headers.set('Content-Type', 'application/json; charset=utf-8') + if (config.accessToken) { + headers.set('Authorization', `token ${config.accessToken}`) + } + if (tracingFlagEnabled) { + headers.set('X-Sourcegraph-Should-Trace', '1') - addTraceparent(headers) - } + addTraceparent(headers) + } - // We enable streaming only for Node environments right now because it's hard to make - // the polyfilled fetch API work the same as it does in the browser. - // - // TODO(philipp-spiess): Feature test if the response is a Node or a browser stream and - // implement SSE parsing for both. - const isNode = typeof process !== 'undefined' - const enableStreaming = !!isNode - - // Disable gzip compression since the sg instance will start to batch - // responses afterwards. - if (enableStreaming) { - headers.set('Accept-Encoding', 'gzip;q=0') - } + // We enable streaming only for Node environments right now because it's hard to make + // the polyfilled fetch API work the same as it does in the browser. + // + // TODO(philipp-spiess): Feature test if the response is a Node or a browser stream and + // implement SSE parsing for both. + const isNode = typeof process !== 'undefined' + const enableStreaming = !!isNode + span.setAttribute('enableStreaming', enableStreaming) + + // Disable gzip compression since the sg instance will start to batch + // responses afterwards. + if (enableStreaming) { + headers.set('Accept-Encoding', 'gzip;q=0') + } - const response = await fetch(url, { - method: 'POST', - body: JSON.stringify({ - ...params, - stream: enableStreaming, - }), - headers, - signal, - }) - - const traceId = getActiveTraceAndSpanId()?.traceId - - // When rate-limiting occurs, the response is an error message - if (response.status === 429) { - // Check for explicit false, because if the header is not set, there is no upgrade - // available. - // - // Note: This header is added only via the Sourcegraph instance and thus not added by - // the helper function. - const upgradeIsAvailable = - response.headers.get('x-is-cody-pro-user') === 'false' && - typeof response.headers.get('x-is-cody-pro-user') !== 'undefined' - throw await createRateLimitErrorFromResponse(response, upgradeIsAvailable) - } + const response = await fetch(url, { + method: 'POST', + body: JSON.stringify({ + ...params, + stream: enableStreaming, + }), + headers, + signal, + }) + + logResponseHeadersToSpan(span, response) + + const traceId = getActiveTraceAndSpanId()?.traceId + + // When rate-limiting occurs, the response is an error message + if (response.status === 429) { + // Check for explicit false, because if the header is not set, there is no upgrade + // available. + // + // Note: This header is added only via the Sourcegraph instance and thus not added by + // the helper function. + const upgradeIsAvailable = + response.headers.get('x-is-cody-pro-user') === 'false' && + typeof response.headers.get('x-is-cody-pro-user') !== 'undefined' + throw recordSpanWithError( + span, + await createRateLimitErrorFromResponse(response, upgradeIsAvailable) + ) + } - if (!response.ok) { - throw new NetworkError(response, await response.text(), traceId) - } + if (!response.ok) { + throw recordSpanWithError( + span, + new NetworkError(response, await response.text(), traceId) + ) + } - if (response.body === null) { - throw new TracedError('No response body', traceId) - } + if (response.body === null) { + throw recordSpanWithError(span, new TracedError('No response body', traceId)) + } - // For backward compatibility, we have to check if the response is an SSE stream or a - // regular JSON payload. This ensures that the request also works against older backends - const isStreamingResponse = response.headers.get('content-type') === 'text/event-stream' + // For backward compatibility, we have to check if the response is an SSE stream or a + // regular JSON payload. This ensures that the request also works against older backends + const isStreamingResponse = response.headers.get('content-type') === 'text/event-stream' + + let completionResponse: CompletionResponse | undefined = undefined + + try { + if (isStreamingResponse && isNodeResponse(response)) { + const iterator = createSSEIterator(response.body, { + aggregatedCompletionEvent: true, + }) + let chunkIndex = 0 + + for await (const { event, data } of iterator) { + if (event === 'error') { + throw new TracedError(data, traceId) + } + + if (signal.aborted) { + if (completionResponse) { + completionResponse.stopReason = CompletionStopReason.RequestAborted + } + + break + } + + if (event === 'completion') { + completionResponse = JSON.parse(data) as CompletionResponse + const stopReason = + completionResponse.stopReason || CompletionStopReason.StreamingChunk + span.addEvent('yield', { stopReason }) + yield { + completion: completionResponse.completion, + stopReason, + } + } + + chunkIndex += 1 + } - let completionResponse: CompletionResponse | undefined = undefined + if (completionResponse === undefined) { + throw new TracedError('No completion response received', traceId) + } - try { - if (isStreamingResponse && isNodeResponse(response)) { - const iterator = createSSEIterator(response.body, { aggregatedCompletionEvent: true }) - let chunkIndex = 0 + if (!completionResponse.stopReason) { + completionResponse.stopReason = CompletionStopReason.RequestFinished + } - for await (const { event, data } of iterator) { - if (event === 'error') { - throw new TracedError(data, traceId) + return completionResponse } - if (signal.aborted) { - if (completionResponse) { - completionResponse.stopReason = CompletionStopReason.RequestAborted - } - - break + // Handle non-streaming response + const result = await response.text() + completionResponse = JSON.parse(result) as CompletionResponse + + if ( + typeof completionResponse.completion !== 'string' || + typeof completionResponse.stopReason !== 'string' + ) { + const message = `response does not satisfy CodeCompletionResponse: ${result}` + log?.onError(message) + throw new TracedError(message, traceId) } - if (event === 'completion') { - completionResponse = JSON.parse(data) as CompletionResponse + return completionResponse + } catch (error) { + // Shared error handling for both streaming and non-streaming requests. - yield { - completion: completionResponse.completion, - stopReason: - completionResponse.stopReason || CompletionStopReason.StreamingChunk, - } + // In case of the abort error and non-empty completion response, we can + // consider the completion partially completed and want to log it to + // the Cody output channel via `log.onComplete()` instead of erroring. + if (isAbortError(error as Error) && completionResponse) { + completionResponse.stopReason = CompletionStopReason.RequestAborted + return } - chunkIndex += 1 - } + recordSpanWithError(span, error as Error) - if (completionResponse === undefined) { - throw new TracedError('No completion response received', traceId) - } + if (isRateLimitError(error as Error)) { + throw error + } - if (!completionResponse.stopReason) { - completionResponse.stopReason = CompletionStopReason.RequestFinished + const message = `error parsing CodeCompletionResponse: ${error}` + log?.onError(message, error) + throw new TracedError(message, traceId) + } finally { + if (completionResponse) { + span.addEvent('return', { stopReason: completionResponse.stopReason }) + span.setStatus({ code: SpanStatusCode.OK }) + span.end() + log?.onComplete(completionResponse) + } } - - return completionResponse - } - - // Handle non-streaming response - const result = await response.text() - completionResponse = JSON.parse(result) as CompletionResponse - - if ( - typeof completionResponse.completion !== 'string' || - typeof completionResponse.stopReason !== 'string' - ) { - const message = `response does not satisfy CodeCompletionResponse: ${result}` - log?.onError(message) - throw new TracedError(message, traceId) } - - return completionResponse - } catch (error) { - // Shared error handling for both streaming and non-streaming requests. - if (isRateLimitError(error as Error)) { - throw error - } - - // In case of the abort error and non-empty completion response, we can - // consider the completion partially completed and want to log it to - // the Cody output channel via `log.onComplete()` instead of erroring. - if (isAbortError(error as Error) && completionResponse) { - completionResponse.stopReason = CompletionStopReason.RequestAborted - } else { - const message = `error parsing CodeCompletionResponse: ${error}` - log?.onError(message, error) - throw new TracedError(message, traceId) - } - } finally { - if (completionResponse) { - log?.onComplete(completionResponse) - } - } + ) } return { @@ -278,3 +304,14 @@ export async function createRateLimitErrorFromResponse( retryAfter ) } + +export function logResponseHeadersToSpan(span: Span, response: BrowserOrNodeResponse) { + const responseHeaders: Record = {} + response.headers.forEach((value, key) => { + responseHeaders[key] = value + }) + span.addEvent('response', { + ...responseHeaders, + status: response.status, + }) +} diff --git a/vscode/src/completions/providers/fireworks.ts b/vscode/src/completions/providers/fireworks.ts index c096e03534..039e6370d1 100644 --- a/vscode/src/completions/providers/fireworks.ts +++ b/vscode/src/completions/providers/fireworks.ts @@ -39,10 +39,10 @@ import { type ProviderConfig, type ProviderOptions, } from './provider' -import { createRateLimitErrorFromResponse, createSSEIterator } from '../client' +import { createRateLimitErrorFromResponse, createSSEIterator, logResponseHeadersToSpan } from '../client' import type { AuthStatus } from '../../chat/protocol' import { type Span, SpanStatusCode } from '@opentelemetry/api' -import { tracer } from '@sourcegraph/cody-shared/src/tracing' +import { recordSpanWithError, tracer } from '@sourcegraph/cody-shared/src/tracing' export interface FireworksOptions { model: FireworksModel @@ -366,7 +366,7 @@ ${intro}${infillPrefix}${OPENING_CODE_TAG}${CLOSING_CODE_TAG}${infillSuffix} signal: abortController.signal, }) - logResponse(span, response) + logResponseHeadersToSpan(span, response) const traceId = getActiveTraceAndSpanId()?.traceId @@ -375,27 +375,37 @@ ${intro}${infillPrefix}${OPENING_CODE_TAG}${CLOSING_CODE_TAG}${infillSuffix} // is eligible to upgrade to the pro plan. We get this from the authState instead. if (response.status === 429) { const upgradeIsAvailable = self.authStatus.userCanUpgrade - throw await createRateLimitErrorFromResponse(response, upgradeIsAvailable) + + throw recordSpanWithError( + span, + await createRateLimitErrorFromResponse(response, upgradeIsAvailable) + ) } if (!response.ok) { - throw new NetworkError( - response, - (await response.text()) + - (isLocalInstance ? '\nIs Cody Gateway running locally?' : ''), - traceId + throw recordSpanWithError( + span, + new NetworkError( + response, + (await response.text()) + + (isLocalInstance ? '\nIs Cody Gateway running locally?' : ''), + traceId + ) ) } if (response.body === null) { - throw new TracedError('No response body', traceId) + throw recordSpanWithError(span, new TracedError('No response body', traceId)) } const isStreamingResponse = response.headers .get('content-type') ?.startsWith('text/event-stream') if (!isStreamingResponse || !isNodeResponse(response)) { - throw new TracedError('No streaming response given', traceId) + throw recordSpanWithError( + span, + new TracedError('No streaming response given', traceId) + ) } let lastResponse: CompletionResponse | undefined @@ -450,21 +460,17 @@ ${intro}${infillPrefix}${OPENING_CODE_TAG}${CLOSING_CODE_TAG}${infillSuffix} lastResponse.stopReason = CompletionStopReason.RequestFinished } - log?.onComplete(lastResponse) - span.addEvent('return', { stopReason: lastResponse.stopReason }) - span.setStatus({ code: SpanStatusCode.OK }) - span.end() - return lastResponse } catch (error) { + // In case of the abort error and non-empty completion response, we can + // consider the completion partially completed and want to log it to + // the Cody output channel via `log.onComplete()` instead of erroring. if (isAbortError(error as Error) && lastResponse) { - log?.onComplete(lastResponse) + lastResponse.stopReason = CompletionStopReason.RequestAborted return } - span.recordException(error as Error) - span.setStatus({ code: SpanStatusCode.ERROR }) - span.end() + recordSpanWithError(span, error as Error) if (isRateLimitError(error as Error)) { throw error @@ -475,6 +481,9 @@ ${intro}${infillPrefix}${OPENING_CODE_TAG}${CLOSING_CODE_TAG}${infillSuffix} throw new TracedError(message, traceId) } finally { if (lastResponse) { + span.addEvent('return', { stopReason: lastResponse.stopReason }) + span.setStatus({ code: SpanStatusCode.OK }) + span.end() log?.onComplete(lastResponse) } } @@ -570,13 +579,3 @@ function dotcomTokenToGatewayToken(dotcomToken: string): string | undefined { const gatewayTokenBytes = SHA256(SHA256(accessTokenBytes)).toString() return 'sgd_' + gatewayTokenBytes } -function logResponse(span: Span, response: BrowserOrNodeResponse) { - const responseHeaders: Record = {} - response.headers.forEach((value, key) => { - responseHeaders[key] = value - }) - span.addEvent('response', { - ...responseHeaders, - status: response.status, - }) -} From 52fb677da05c543cfd97534797c41080aa66adf7 Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Fri, 9 Feb 2024 16:21:19 +0100 Subject: [PATCH 16/18] Fix bugs --- vscode/src/completions/client.ts | 2 +- vscode/src/completions/providers/fireworks.ts | 3 +-- vscode/src/completions/utils.ts | 25 ++++++++++++------- .../OpenTelemetryService.node.ts | 9 +++---- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/vscode/src/completions/client.ts b/vscode/src/completions/client.ts index af970b3862..3b51b4e5d5 100644 --- a/vscode/src/completions/client.ts +++ b/vscode/src/completions/client.ts @@ -21,7 +21,7 @@ import { import { fetch } from '../fetch' import { recordSpanWithError, tracer } from '@sourcegraph/cody-shared/src/tracing' -import { Span, SpanStatusCode } from '@opentelemetry/api' +import { type Span, SpanStatusCode } from '@opentelemetry/api' /** * Access the code completion LLM APIs via a Sourcegraph server instance. diff --git a/vscode/src/completions/providers/fireworks.ts b/vscode/src/completions/providers/fireworks.ts index 039e6370d1..a55d5b226b 100644 --- a/vscode/src/completions/providers/fireworks.ts +++ b/vscode/src/completions/providers/fireworks.ts @@ -18,7 +18,6 @@ import { addTraceparent, type ConfigurationWithAccessToken, CompletionStopReason, - type BrowserOrNodeResponse, } from '@sourcegraph/cody-shared' import { getLanguageConfig } from '../../tree-sitter/language' @@ -41,7 +40,7 @@ import { } from './provider' import { createRateLimitErrorFromResponse, createSSEIterator, logResponseHeadersToSpan } from '../client' import type { AuthStatus } from '../../chat/protocol' -import { type Span, SpanStatusCode } from '@opentelemetry/api' +import { SpanStatusCode } from '@opentelemetry/api' import { recordSpanWithError, tracer } from '@sourcegraph/cody-shared/src/tracing' export interface FireworksOptions { diff --git a/vscode/src/completions/utils.ts b/vscode/src/completions/utils.ts index fc9fd7d153..4610ac2421 100644 --- a/vscode/src/completions/utils.ts +++ b/vscode/src/completions/utils.ts @@ -72,17 +72,24 @@ export async function* generatorWithErrorObserver( generator: AsyncGenerator, errorObserver: (error: unknown) => void ): AsyncGenerator { - while (true) { - try { - const res = await generator.next() - if (res.done) { - return + try { + while (true) { + try { + const res = await generator.next() + if (res.done) { + return + } + yield res.value + } catch (error: unknown) { + errorObserver(error) + throw error } - yield res.value - } catch (error: unknown) { - errorObserver(error) - throw error } + } finally { + // The return value is optional according to MDN + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator/return + // @ts-ignore + generator.return() } } diff --git a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts index 5d18b8563e..ae8d6ad964 100644 --- a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts +++ b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts @@ -3,7 +3,6 @@ import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http' import { HttpInstrumentation } from '@opentelemetry/instrumentation-http' import { Resource } from '@opentelemetry/resources' import { NodeSDK } from '@opentelemetry/sdk-node' -import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' import { @@ -14,8 +13,6 @@ import { import { version } from '../../version' -import { ConsoleBatchSpanExporter } from './console-batch-span-exporter' - type OpenTelemetryServiceConfig = Pick< ConfigurationWithAccessToken, 'serverEndpoint' | 'experimentalTracing' @@ -67,9 +64,9 @@ export class OpenTelemetryService { // Disable default process logging. We do not care about the VS Code extension process autoDetectResources: false, - ...(process.env.NODE_ENV === 'development' && { - spanProcessor: new BatchSpanProcessor(new ConsoleBatchSpanExporter()), - }), + // ...(process.env.NODE_ENV === 'development' && { + // spanProcessor: new BatchSpanProcessor(new ConsoleBatchSpanExporter()), + // }), }) this.sdk.start() } From 1ba453c1f977592649072dabc1b9877c96146b0d Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Fri, 9 Feb 2024 16:21:36 +0100 Subject: [PATCH 17/18] Fix bugs --- .../services/open-telemetry/OpenTelemetryService.node.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts index ae8d6ad964..3eab19cf66 100644 --- a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts +++ b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts @@ -64,9 +64,9 @@ export class OpenTelemetryService { // Disable default process logging. We do not care about the VS Code extension process autoDetectResources: false, - // ...(process.env.NODE_ENV === 'development' && { - // spanProcessor: new BatchSpanProcessor(new ConsoleBatchSpanExporter()), - // }), + ...(process.env.NODE_ENV === 'development' && { + spanProcessor: new BatchSpanProcessor(new ConsoleBatchSpanExporter()), + }), }) this.sdk.start() } From b16451738d07fc513005072fc9d1ed2f1b32222a Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Fri, 9 Feb 2024 16:32:23 +0100 Subject: [PATCH 18/18] Fixes --- vscode/src/services/open-telemetry/OpenTelemetryService.node.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts index 3eab19cf66..aa2594aeef 100644 --- a/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts +++ b/vscode/src/services/open-telemetry/OpenTelemetryService.node.ts @@ -12,6 +12,8 @@ import { } from '@sourcegraph/cody-shared' import { version } from '../../version' +import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' +import { ConsoleBatchSpanExporter } from './console-batch-span-exporter' type OpenTelemetryServiceConfig = Pick< ConfigurationWithAccessToken,