Skip to content
653 changes: 135 additions & 518 deletions go/client.go

Large diffs are not rendered by default.

23 changes: 9 additions & 14 deletions go/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,20 @@ func TestClient_HandleToolCallRequest(t *testing.T) {
t.Fatalf("Failed to create session: %v", err)
}

params := map[string]any{
"sessionId": session.SessionID,
"toolCallId": "123",
"toolName": "missing_tool",
"arguments": map[string]any{},
params := toolCallRequest{
SessionID: session.SessionID,
ToolCallID: "123",
ToolName: "missing_tool",
Arguments: map[string]any{},
}
response, _ := client.handleToolCallRequest(params)

result, ok := response["result"].(ToolResult)
if !ok {
t.Fatalf("Expected result to be ToolResult, got %T", response["result"])
if response.Result.ResultType != "failure" {
t.Errorf("Expected resultType to be 'failure', got %q", response.Result.ResultType)
}

if result.ResultType != "failure" {
t.Errorf("Expected resultType to be 'failure', got %q", result.ResultType)
}

if result.Error != "tool 'missing_tool' not supported" {
t.Errorf("Expected error to be \"tool 'missing_tool' not supported\", got %q", result.Error)
if response.Result.Error != "tool 'missing_tool' not supported" {
t.Errorf("Expected error to be \"tool 'missing_tool' not supported\", got %q", response.Result.Error)
}
})
}
Expand Down
3 changes: 3 additions & 0 deletions go/internal/e2e/compaction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,9 @@ func TestCompaction(t *testing.T) {
if err != nil {
t.Fatalf("Failed to send verification message: %v", err)
}
if answer == nil {
t.Fatalf("Expected an answer, got nil")
}
if answer.Data.Content == nil || !strings.Contains(strings.ToLower(*answer.Data.Content), "dragon") {
t.Errorf("Expected answer to contain 'dragon', got %v", answer.Data.Content)
}
Expand Down
29 changes: 17 additions & 12 deletions go/internal/e2e/mcp_and_agents_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,15 @@ func TestMCPServers(t *testing.T) {
}

// Simple interaction to verify session works
_, err = session.Send(t.Context(), copilot.MessageOptions{
message, err := session.SendAndWait(t.Context(), copilot.MessageOptions{
Prompt: "What is 2+2?",
})
if err != nil {
t.Fatalf("Failed to send message: %v", err)
}

message, err := testharness.GetFinalAssistantMessage(t.Context(), session)
if err != nil {
t.Fatalf("Failed to get final message: %v", err)
if message == nil {
t.Fatal("Expected a message, got nil")
}

if message.Data.Content == nil || !strings.Contains(*message.Data.Content, "4") {
Expand Down Expand Up @@ -97,6 +96,10 @@ func TestMCPServers(t *testing.T) {
t.Fatalf("Failed to send message: %v", err)
}

if message == nil {
t.Fatalf("Expected a message, got nil")
}

if message.Data.Content == nil || !strings.Contains(*message.Data.Content, "6") {
t.Errorf("Expected message to contain '6', got: %v", message.Data.Content)
}
Expand Down Expand Up @@ -168,16 +171,15 @@ func TestCustomAgents(t *testing.T) {
}

// Simple interaction to verify session works
_, err = session.Send(t.Context(), copilot.MessageOptions{
message, err := session.SendAndWait(t.Context(), copilot.MessageOptions{
Prompt: "What is 5+5?",
})
if err != nil {
t.Fatalf("Failed to send message: %v", err)
}

message, err := testharness.GetFinalAssistantMessage(t.Context(), session)
if err != nil {
t.Fatalf("Failed to get final message: %v", err)
if message == nil {
t.Fatal("Expected a message, got nil")
}

if message.Data.Content == nil || !strings.Contains(*message.Data.Content, "10") {
Expand Down Expand Up @@ -228,6 +230,10 @@ func TestCustomAgents(t *testing.T) {
t.Fatalf("Failed to send message: %v", err)
}

if message == nil {
t.Fatalf("Expected a message, got nil")
}

if message.Data.Content == nil || !strings.Contains(*message.Data.Content, "12") {
t.Errorf("Expected message to contain '12', got: %v", message.Data.Content)
}
Expand Down Expand Up @@ -373,16 +379,15 @@ func TestCombinedConfiguration(t *testing.T) {
t.Error("Expected non-empty session ID")
}

_, err = session.Send(t.Context(), copilot.MessageOptions{
message, err := session.SendAndWait(t.Context(), copilot.MessageOptions{
Prompt: "What is 7+7?",
})
if err != nil {
t.Fatalf("Failed to send message: %v", err)
}

message, err := testharness.GetFinalAssistantMessage(t.Context(), session)
if err != nil {
t.Fatalf("Failed to get final message: %v", err)
if message == nil {
t.Fatalf("Expected a message, got nil")
}

if message.Data.Content == nil || !strings.Contains(*message.Data.Content, "14") {
Expand Down
14 changes: 4 additions & 10 deletions go/internal/e2e/permissions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,18 +134,13 @@ func TestPermissions(t *testing.T) {
t.Fatalf("Failed to write test file: %v", err)
}

_, err = session.Send(t.Context(), copilot.MessageOptions{
_, err = session.SendAndWait(t.Context(), copilot.MessageOptions{
Prompt: "Edit protected.txt and replace 'protected' with 'hacked'.",
})
if err != nil {
t.Fatalf("Failed to send message: %v", err)
}

_, err = testharness.GetFinalAssistantMessage(t.Context(), session)
if err != nil {
t.Fatalf("Failed to get final message: %v", err)
}

// Verify the file was NOT modified
content, err := os.ReadFile(testFile)
if err != nil {
Expand All @@ -165,14 +160,13 @@ func TestPermissions(t *testing.T) {
t.Fatalf("Failed to create session: %v", err)
}

_, err = session.Send(t.Context(), copilot.MessageOptions{Prompt: "What is 2+2?"})
message, err := session.SendAndWait(t.Context(), copilot.MessageOptions{Prompt: "What is 2+2?"})
if err != nil {
t.Fatalf("Failed to send message: %v", err)
}

message, err := testharness.GetFinalAssistantMessage(t.Context(), session)
if err != nil {
t.Fatalf("Failed to get final message: %v", err)
if message == nil {
t.Fatal("Expected a message, got nil")
}

if message.Data.Content == nil || !strings.Contains(*message.Data.Content, "4") {
Expand Down
Loading
Loading