Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -2227,11 +2227,14 @@ Dependency: `io.opentelemetry:opentelemetry-api`
| Option | Node.js | Python | Go | Rust | Java | .NET | Description |
|---|---|---|---|---|---|---|---|
| OTLP endpoint | `otlpEndpoint` | `otlp_endpoint` | `OTLPEndpoint` | `otlp_endpoint` | `otlpEndpoint` | `OtlpEndpoint` | OTLP HTTP endpoint URL |
| OTLP protocol | `otlpProtocol` | `otlp_protocol` | `OTLPProtocol` | `otlp_protocol` | `otlpProtocol` | `OtlpProtocol` | OTLP HTTP protocol for all signals: `"http/json"` or `"http/protobuf"` |
| File path | `filePath` | `file_path` | `FilePath` | `file_path` | `filePath` | `FilePath` | File path for JSON-lines trace output |
| Exporter type | `exporterType` | `exporter_type` | `ExporterType` | `exporter_type` | `exporterType` | `ExporterType` | `"otlp-http"` or `"file"` |
| Source name | `sourceName` | `source_name` | `SourceName` | `source_name` | `sourceName` | `SourceName` | Instrumentation scope name |
| Capture content | `captureContent` | `capture_content` | `CaptureContent` | `capture_content` | `captureContent` | `CaptureContent` | Whether to capture message content |

The OTLP protocol field configures the CLI's `"otlp-http"` exporter for all signals. Leave it unset to use the CLI default, or set it to `"http/protobuf"` to export protobuf over HTTP.

### File export

To write traces to a local file instead of an OTLP endpoint:
Expand Down
3 changes: 3 additions & 0 deletions docs/observability/opentelemetry.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,14 @@ let client = Client::start(ClientOptions::new()
| Option | Node.js | Python | Go | .NET | Java | Rust | Description |
|---|---|---|---|---|---|---|---|
| OTLP endpoint | `otlpEndpoint` | `otlp_endpoint` | `OTLPEndpoint` | `OtlpEndpoint` | `otlpEndpoint` | `otlp_endpoint` | OTLP HTTP endpoint URL |
| OTLP protocol | `otlpProtocol` | `otlp_protocol` | `OTLPProtocol` | `OtlpProtocol` | `otlpProtocol` | `otlp_protocol` | OTLP HTTP protocol for all signals: `"http/json"` or `"http/protobuf"` |
| File path | `filePath` | `file_path` | `FilePath` | `FilePath` | `filePath` | `file_path` | File path for JSON-lines trace output |
| Exporter type | `exporterType` | `exporter_type` | `ExporterType` | `ExporterType` | `exporterType` | `exporter_type` | `"otlp-http"` or `"file"` |
| Source name | `sourceName` | `source_name` | `SourceName` | `SourceName` | `sourceName` | `source_name` | Instrumentation scope name |
| Capture content | `captureContent` | `capture_content` | `CaptureContent` | `CaptureContent` | `captureContent` | `capture_content` | Whether to capture message content |

The OTLP protocol field configures the CLI's `"otlp-http"` exporter for all signals. Leave it unset to use the CLI default, or set it to `"http/protobuf"` to export protobuf over HTTP.

### Trace context propagation

> **Most users don't need this.** The `TelemetryConfig` above is all you need to collect traces from the CLI. The trace context propagation described in this section is an **advanced feature** for applications that create their own OpenTelemetry spans and want them to appear in the **same distributed trace** as the CLI's spans.
Expand Down
1 change: 1 addition & 0 deletions dotnet/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -738,6 +738,7 @@ var client = new CopilotClient(new CopilotClientOptions
**TelemetryConfig properties:**

- `OtlpEndpoint` - OTLP HTTP endpoint URL
- `OtlpProtocol` - OTLP HTTP protocol for all signals (`"http/json"` or `"http/protobuf"`)
- `FilePath` - File path for JSON-lines trace output
- `ExporterType` - `"otlp-http"` or `"file"`
- `SourceName` - Instrumentation scope name
Expand Down
1 change: 1 addition & 0 deletions dotnet/src/Client.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1805,6 +1805,7 @@ private static bool IsUnsupportedConnectMethod(RemoteRpcException ex)
{
startInfo.Environment["COPILOT_OTEL_ENABLED"] = "true";
if (telemetry.OtlpEndpoint is not null) startInfo.Environment["OTEL_EXPORTER_OTLP_ENDPOINT"] = telemetry.OtlpEndpoint;
if (telemetry.OtlpProtocol is not null) startInfo.Environment["OTEL_EXPORTER_OTLP_PROTOCOL"] = telemetry.OtlpProtocol;
if (telemetry.FilePath is not null) startInfo.Environment["COPILOT_OTEL_FILE_EXPORTER_PATH"] = telemetry.FilePath;
if (telemetry.ExporterType is not null) startInfo.Environment["COPILOT_OTEL_EXPORTER_TYPE"] = telemetry.ExporterType;
if (telemetry.SourceName is not null) startInfo.Environment["COPILOT_OTEL_SOURCE_NAME"] = telemetry.SourceName;
Expand Down
8 changes: 8 additions & 0 deletions dotnet/src/Types.cs
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,14 @@ public sealed class TelemetryConfig
/// </remarks>
public string? OtlpEndpoint { get; set; }

/// <summary>
/// OTLP HTTP protocol for all signals (<c>"http/json"</c> or <c>"http/protobuf"</c>).
/// </summary>
/// <remarks>
/// Maps to the <c>OTEL_EXPORTER_OTLP_PROTOCOL</c> environment variable.
/// </remarks>
public string? OtlpProtocol { get; set; }

/// <summary>
/// File path for the file exporter.
/// </summary>
Expand Down
3 changes: 3 additions & 0 deletions dotnet/test/E2E/ClientOptionsE2ETests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ public async Task Should_Propagate_Process_Options_To_Spawned_Cli()
Telemetry = new TelemetryConfig
{
OtlpEndpoint = "http://127.0.0.1:4318",
OtlpProtocol = "http/protobuf",
FilePath = telemetryPath,
ExporterType = "file",
SourceName = "dotnet-sdk-e2e",
Expand All @@ -104,6 +105,7 @@ public async Task Should_Propagate_Process_Options_To_Spawned_Cli()
Assert.Equal("process-option-token", capturedEnv.GetProperty("COPILOT_SDK_AUTH_TOKEN").GetString());
Assert.Equal("true", capturedEnv.GetProperty("COPILOT_OTEL_ENABLED").GetString());
Assert.Equal("http://127.0.0.1:4318", capturedEnv.GetProperty("OTEL_EXPORTER_OTLP_ENDPOINT").GetString());
Assert.Equal("http/protobuf", capturedEnv.GetProperty("OTEL_EXPORTER_OTLP_PROTOCOL").GetString());
Assert.Equal(telemetryPath, capturedEnv.GetProperty("COPILOT_OTEL_FILE_EXPORTER_PATH").GetString());
Assert.Equal("file", capturedEnv.GetProperty("COPILOT_OTEL_EXPORTER_TYPE").GetString());
Assert.Equal("dotnet-sdk-e2e", capturedEnv.GetProperty("COPILOT_OTEL_SOURCE_NAME").GetString());
Expand Down Expand Up @@ -642,6 +644,7 @@ function saveCapture() {
COPILOT_SDK_AUTH_TOKEN: process.env.COPILOT_SDK_AUTH_TOKEN,
COPILOT_OTEL_ENABLED: process.env.COPILOT_OTEL_ENABLED,
OTEL_EXPORTER_OTLP_ENDPOINT: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
OTEL_EXPORTER_OTLP_PROTOCOL: process.env.OTEL_EXPORTER_OTLP_PROTOCOL,
COPILOT_OTEL_FILE_EXPORTER_PATH: process.env.COPILOT_OTEL_FILE_EXPORTER_PATH,
COPILOT_OTEL_EXPORTER_TYPE: process.env.COPILOT_OTEL_EXPORTER_TYPE,
COPILOT_OTEL_SOURCE_NAME: process.env.COPILOT_OTEL_SOURCE_NAME,
Expand Down
3 changes: 3 additions & 0 deletions dotnet/test/Unit/TelemetryTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public void TelemetryConfig_DefaultValues_AreNull()
var config = new TelemetryConfig();

Assert.Null(config.OtlpEndpoint);
Assert.Null(config.OtlpProtocol);
Assert.Null(config.FilePath);
Assert.Null(config.ExporterType);
Assert.Null(config.SourceName);
Expand All @@ -28,13 +29,15 @@ public void TelemetryConfig_CanSetAllProperties()
var config = new TelemetryConfig
{
OtlpEndpoint = "http://localhost:4318",
OtlpProtocol = "http/protobuf",
FilePath = "/tmp/traces.json",
ExporterType = "otlp-http",
SourceName = "my-app",
CaptureContent = true
};

Assert.Equal("http://localhost:4318", config.OtlpEndpoint);
Assert.Equal("http/protobuf", config.OtlpProtocol);
Assert.Equal("/tmp/traces.json", config.FilePath);
Assert.Equal("otlp-http", config.ExporterType);
Assert.Equal("my-app", config.SourceName);
Expand Down
1 change: 1 addition & 0 deletions go/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -573,6 +573,7 @@ client, err := copilot.NewClient(copilot.ClientOptions{
**TelemetryConfig fields:**

- `OTLPEndpoint` (string): OTLP HTTP endpoint URL
- `OTLPProtocol` (string): OTLP HTTP protocol for all signals (`"http/json"` or `"http/protobuf"`)
- `FilePath` (string): File path for JSON-lines trace output
- `ExporterType` (string): `"otlp-http"` or `"file"`
- `SourceName` (string): Instrumentation scope name
Expand Down
3 changes: 3 additions & 0 deletions go/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -1695,6 +1695,9 @@ func (c *Client) startCLIServer(ctx context.Context) error {
if t.OTLPEndpoint != "" {
c.process.Env = setEnvValue(c.process.Env, "OTEL_EXPORTER_OTLP_ENDPOINT", t.OTLPEndpoint)
}
if t.OTLPProtocol != "" {
c.process.Env = setEnvValue(c.process.Env, "OTEL_EXPORTER_OTLP_PROTOCOL", t.OTLPProtocol)
}
if t.FilePath != "" {
c.process.Env = setEnvValue(c.process.Env, "COPILOT_OTEL_FILE_EXPORTER_PATH", t.FilePath)
}
Expand Down
4 changes: 4 additions & 0 deletions go/internal/e2e/client_options_e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ func TestClientOptionsE2E(t *testing.T) {
opts.SessionIdleTimeoutSeconds = 17
opts.Telemetry = &copilot.TelemetryConfig{
OTLPEndpoint: "http://127.0.0.1:4318",
OTLPProtocol: "http/protobuf",
FilePath: telemetryPath,
ExporterType: "file",
SourceName: "go-sdk-e2e",
Expand Down Expand Up @@ -147,6 +148,7 @@ func TestClientOptionsE2E(t *testing.T) {
"COPILOT_SDK_AUTH_TOKEN": "process-option-token",
"COPILOT_OTEL_ENABLED": "true",
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://127.0.0.1:4318",
"OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",
"COPILOT_OTEL_FILE_EXPORTER_PATH": telemetryPath,
"COPILOT_OTEL_EXPORTER_TYPE": "file",
"COPILOT_OTEL_SOURCE_NAME": "go-sdk-e2e",
Expand Down Expand Up @@ -195,6 +197,7 @@ func TestClientOptionsE2E(t *testing.T) {
t.Errorf("Expected session.create.params.includeSubAgentStreamingEvents=false, got %v", params["includeSubAgentStreamingEvents"])
}
})

}

// ---------------------------------------------------------------------------
Expand Down Expand Up @@ -372,6 +375,7 @@ function saveCapture() {
COPILOT_SDK_AUTH_TOKEN: process.env.COPILOT_SDK_AUTH_TOKEN,
COPILOT_OTEL_ENABLED: process.env.COPILOT_OTEL_ENABLED,
OTEL_EXPORTER_OTLP_ENDPOINT: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
OTEL_EXPORTER_OTLP_PROTOCOL: process.env.OTEL_EXPORTER_OTLP_PROTOCOL,
COPILOT_OTEL_FILE_EXPORTER_PATH: process.env.COPILOT_OTEL_FILE_EXPORTER_PATH,
COPILOT_OTEL_EXPORTER_TYPE: process.env.COPILOT_OTEL_EXPORTER_TYPE,
COPILOT_OTEL_SOURCE_NAME: process.env.COPILOT_OTEL_SOURCE_NAME,
Expand Down
7 changes: 7 additions & 0 deletions go/internal/e2e/telemetry_e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,9 @@ func TestTelemetryConfigUnit(t *testing.T) {
if cfg.OTLPEndpoint != "" {
t.Errorf("Expected empty OTLPEndpoint, got %q", cfg.OTLPEndpoint)
}
if cfg.OTLPProtocol != "" {
t.Errorf("Expected empty OTLPProtocol, got %q", cfg.OTLPProtocol)
}
if cfg.FilePath != "" {
t.Errorf("Expected empty FilePath, got %q", cfg.FilePath)
}
Expand All @@ -325,6 +328,7 @@ func TestTelemetryConfigUnit(t *testing.T) {
// Mirrors: TelemetryConfig_CanSetAllProperties
cfg := copilot.TelemetryConfig{
OTLPEndpoint: "http://localhost:4318",
OTLPProtocol: "http/protobuf",
FilePath: "/tmp/traces.json",
ExporterType: "otlp-http",
SourceName: "my-app",
Expand All @@ -333,6 +337,9 @@ func TestTelemetryConfigUnit(t *testing.T) {
if cfg.OTLPEndpoint != "http://localhost:4318" {
t.Errorf("OTLPEndpoint mismatch: %q", cfg.OTLPEndpoint)
}
if cfg.OTLPProtocol != "http/protobuf" {
t.Errorf("OTLPProtocol mismatch: %q", cfg.OTLPProtocol)
}
if cfg.FilePath != "/tmp/traces.json" {
t.Errorf("FilePath mismatch: %q", cfg.FilePath)
}
Expand Down
4 changes: 4 additions & 0 deletions go/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,10 @@ type TelemetryConfig struct {
// Sets OTEL_EXPORTER_OTLP_ENDPOINT.
OTLPEndpoint string

// OTLPProtocol is the OTLP HTTP protocol for all signals.
// Sets OTEL_EXPORTER_OTLP_PROTOCOL.
OTLPProtocol string

// FilePath is the file path for JSON-lines trace output.
// Sets COPILOT_OTEL_FILE_EXPORTER_PATH.
FilePath string
Expand Down
3 changes: 3 additions & 0 deletions java/src/main/java/com/github/copilot/CliServerManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,9 @@ ProcessInfo startCliServer() throws IOException, InterruptedException {
if (telemetry.getOtlpEndpoint() != null) {
pb.environment().put("OTEL_EXPORTER_OTLP_ENDPOINT", telemetry.getOtlpEndpoint());
}
if (telemetry.getOtlpProtocol() != null) {
pb.environment().put("OTEL_EXPORTER_OTLP_PROTOCOL", telemetry.getOtlpProtocol());
}
if (telemetry.getFilePath() != null) {
pb.environment().put("COPILOT_OTEL_FILE_EXPORTER_PATH", telemetry.getFilePath());
}
Expand Down
24 changes: 24 additions & 0 deletions java/src/main/java/com/github/copilot/rpc/TelemetryConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
public class TelemetryConfig {

private String otlpEndpoint;
private String otlpProtocol;
private String filePath;
private String exporterType;
private String sourceName;
Expand Down Expand Up @@ -58,6 +59,29 @@ public TelemetryConfig setOtlpEndpoint(String otlpEndpoint) {
return this;
}

/**
* Gets the OTLP HTTP protocol for all signals.
* <p>
* Maps to the {@code OTEL_EXPORTER_OTLP_PROTOCOL} environment variable.
*
* @return the OTLP HTTP protocol, or {@code null}
*/
public String getOtlpProtocol() {
return otlpProtocol;
}

/**
* Sets the OTLP HTTP protocol for all signals.
*
* @param otlpProtocol
* the protocol ({@code "http/json"} or {@code "http/protobuf"})
* @return this config for method chaining
*/
public TelemetryConfig setOtlpProtocol(String otlpProtocol) {
this.otlpProtocol = otlpProtocol;
return this;
}

/**
* Gets the file path for the file exporter.
* <p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,8 +231,9 @@ void startCliServerWithNullCliPath() throws Exception {
void startCliServerWithTelemetryAllOptions() throws Exception {
// The telemetry env vars are applied before ProcessBuilder.start()
// so even with a nonexistent CLI path, the telemetry code path is exercised
var telemetry = new TelemetryConfig().setOtlpEndpoint("http://localhost:4318").setFilePath("/tmp/telemetry.log")
.setExporterType("otlp-http").setSourceName("test-app").setCaptureContent(true);
var telemetry = new TelemetryConfig().setOtlpEndpoint("http://localhost:4318").setOtlpProtocol("http/protobuf")
.setFilePath("/tmp/telemetry.log").setExporterType("otlp-http").setSourceName("test-app")
.setCaptureContent(true);
var options = new CopilotClientOptions().setCliPath(NONEXISTENT_CLI).setTelemetry(telemetry).setUseStdio(true);
var manager = new CliServerManager(options);

Expand Down
14 changes: 12 additions & 2 deletions java/src/test/java/com/github/copilot/TelemetryConfigTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class TelemetryConfigTest {
void defaultValuesAreNull() {
var config = new TelemetryConfig();
assertNull(config.getOtlpEndpoint());
assertNull(config.getOtlpProtocol());
assertNull(config.getFilePath());
assertNull(config.getExporterType());
assertNull(config.getSourceName());
Expand All @@ -32,6 +33,13 @@ void otlpEndpointGetterSetter() {
assertEquals("http://localhost:4318", config.getOtlpEndpoint());
}

@Test
void otlpProtocolGetterSetter() {
var config = new TelemetryConfig();
config.setOtlpProtocol("http/protobuf");
assertEquals("http/protobuf", config.getOtlpProtocol());
}

@Test
void filePathGetterSetter() {
var config = new TelemetryConfig();
Expand Down Expand Up @@ -65,10 +73,12 @@ void captureContentGetterSetter() {

@Test
void fluentChainingReturnsThis() {
var config = new TelemetryConfig().setOtlpEndpoint("http://localhost:4318").setFilePath("/tmp/spans.json")
.setExporterType("file").setSourceName("sdk-test").setCaptureContent(true);
var config = new TelemetryConfig().setOtlpEndpoint("http://localhost:4318").setOtlpProtocol("http/protobuf")
.setFilePath("/tmp/spans.json").setExporterType("file").setSourceName("sdk-test")
.setCaptureContent(true);

assertEquals("http://localhost:4318", config.getOtlpEndpoint());
assertEquals("http/protobuf", config.getOtlpProtocol());
assertEquals("/tmp/spans.json", config.getFilePath());
assertEquals("file", config.getExporterType());
assertEquals("sdk-test", config.getSourceName());
Expand Down
1 change: 1 addition & 0 deletions nodejs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -786,6 +786,7 @@ With just this configuration, the CLI emits spans for every session, message, an
**TelemetryConfig options:**

- `otlpEndpoint?: string` - OTLP HTTP endpoint URL
- `otlpProtocol?: "http/json" | "http/protobuf"` - OTLP HTTP protocol for all signals
- `filePath?: string` - File path for JSON-lines trace output
- `exporterType?: string` - `"otlp-http"` or `"file"`
- `sourceName?: string` - Instrumentation scope name
Expand Down
2 changes: 2 additions & 0 deletions nodejs/src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1929,6 +1929,8 @@ export class CopilotClient {
envWithoutNodeDebug.COPILOT_OTEL_ENABLED = "true";
if (t.otlpEndpoint !== undefined)
envWithoutNodeDebug.OTEL_EXPORTER_OTLP_ENDPOINT = t.otlpEndpoint;
if (t.otlpProtocol !== undefined)
envWithoutNodeDebug.OTEL_EXPORTER_OTLP_PROTOCOL = t.otlpProtocol;
if (t.filePath !== undefined)
envWithoutNodeDebug.COPILOT_OTEL_FILE_EXPORTER_PATH = t.filePath;
if (t.exporterType !== undefined)
Expand Down
2 changes: 2 additions & 0 deletions nodejs/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ export type TraceContextProvider = () => TraceContext | Promise<TraceContext>;
export interface TelemetryConfig {
/** OTLP HTTP endpoint URL for trace/metric export. Sets OTEL_EXPORTER_OTLP_ENDPOINT. */
otlpEndpoint?: string;
/** OTLP HTTP protocol for all signals. Sets OTEL_EXPORTER_OTLP_PROTOCOL. */
otlpProtocol?: "http/json" | "http/protobuf";
/** File path for JSON-lines trace output. Sets COPILOT_OTEL_FILE_EXPORTER_PATH. */
filePath?: string;
/** Exporter backend type: "otlp-http" or "file". Sets COPILOT_OTEL_EXPORTER_TYPE. */
Expand Down
3 changes: 3 additions & 0 deletions nodejs/test/e2e/client_options.e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ function saveCapture() {
COPILOT_SDK_AUTH_TOKEN: process.env.COPILOT_SDK_AUTH_TOKEN,
COPILOT_OTEL_ENABLED: process.env.COPILOT_OTEL_ENABLED,
OTEL_EXPORTER_OTLP_ENDPOINT: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
OTEL_EXPORTER_OTLP_PROTOCOL: process.env.OTEL_EXPORTER_OTLP_PROTOCOL,
COPILOT_OTEL_FILE_EXPORTER_PATH: process.env.COPILOT_OTEL_FILE_EXPORTER_PATH,
COPILOT_OTEL_EXPORTER_TYPE: process.env.COPILOT_OTEL_EXPORTER_TYPE,
COPILOT_OTEL_SOURCE_NAME: process.env.COPILOT_OTEL_SOURCE_NAME,
Expand Down Expand Up @@ -247,6 +248,7 @@ describe("Client options", async () => {
sessionIdleTimeoutSeconds: 17,
telemetry: {
otlpEndpoint: "http://127.0.0.1:4318",
otlpProtocol: "http/protobuf",
filePath: telemetryPath,
exporterType: "file",
sourceName: "ts-sdk-e2e",
Expand Down Expand Up @@ -283,6 +285,7 @@ describe("Client options", async () => {
expect(capture.env.COPILOT_SDK_AUTH_TOKEN).toBe("process-option-token");
expect(capture.env.COPILOT_OTEL_ENABLED).toBe("true");
expect(capture.env.OTEL_EXPORTER_OTLP_ENDPOINT).toBe("http://127.0.0.1:4318");
expect(capture.env.OTEL_EXPORTER_OTLP_PROTOCOL).toBe("http/protobuf");
expect(capture.env.COPILOT_OTEL_FILE_EXPORTER_PATH).toBe(telemetryPath);
expect(capture.env.COPILOT_OTEL_EXPORTER_TYPE).toBe("file");
expect(capture.env.COPILOT_OTEL_SOURCE_NAME).toBe("ts-sdk-e2e");
Expand Down
Loading
Loading