mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore: move chat methods to ExperimentalClient (#23441)
- Changes all 41 chat method receivers in `codersdk/chats.go` from `*Client` to `*ExperimentalClient` to ensure that callers are aware that these reference potentially unstable `/api/experimental` endpoints. > 🤖 This PR was created with the help of Coder Agents, and has been reviewed by my human. 🧑💻
This commit is contained in:
+17
-14
@@ -111,6 +111,7 @@ func TestSubagentChatExcludesWorkspaceProvisioningTools(t *testing.T) {
|
||||
IncludeProvisionerDaemon: true,
|
||||
})
|
||||
user := coderdtest.CreateFirstUser(t, client)
|
||||
expClient := codersdk.NewExperimentalClient(client)
|
||||
|
||||
agentToken := uuid.NewString()
|
||||
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
|
||||
@@ -161,7 +162,7 @@ func TestSubagentChatExcludesWorkspaceProvisioningTools(t *testing.T) {
|
||||
)
|
||||
})
|
||||
|
||||
_, err := client.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
_, err := expClient.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "openai-compat",
|
||||
APIKey: "test-api-key",
|
||||
BaseURL: openAIURL,
|
||||
@@ -170,7 +171,7 @@ func TestSubagentChatExcludesWorkspaceProvisioningTools(t *testing.T) {
|
||||
|
||||
contextLimit := int64(4096)
|
||||
isDefault := true
|
||||
_, err = client.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
_, err = expClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
Provider: "openai-compat",
|
||||
Model: "gpt-4o-mini",
|
||||
ContextLimit: &contextLimit,
|
||||
@@ -179,7 +180,7 @@ func TestSubagentChatExcludesWorkspaceProvisioningTools(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// Create a root chat whose first model call will spawn a subagent.
|
||||
chat, err := client.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := expClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{
|
||||
{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
@@ -193,7 +194,7 @@ func TestSubagentChatExcludesWorkspaceProvisioningTools(t *testing.T) {
|
||||
// The root chat finishes first, then the chatd server
|
||||
// picks up and runs the child (subagent) chat.
|
||||
require.Eventually(t, func() bool {
|
||||
got, getErr := client.GetChat(ctx, chat.ID)
|
||||
got, getErr := expClient.GetChat(ctx, chat.ID)
|
||||
if getErr != nil {
|
||||
return false
|
||||
}
|
||||
@@ -1844,6 +1845,7 @@ func TestCreateWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
IncludeProvisionerDaemon: true,
|
||||
})
|
||||
user := coderdtest.CreateFirstUser(t, client)
|
||||
expClient := codersdk.NewExperimentalClient(client)
|
||||
|
||||
agentToken := uuid.NewString()
|
||||
// Add a startup script so the agent spends time in the
|
||||
@@ -1898,7 +1900,7 @@ func TestCreateWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
)
|
||||
})
|
||||
|
||||
_, err := client.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
_, err := expClient.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "openai-compat",
|
||||
APIKey: "test-api-key",
|
||||
BaseURL: openAIURL,
|
||||
@@ -1907,7 +1909,7 @@ func TestCreateWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
|
||||
contextLimit := int64(4096)
|
||||
isDefault := true
|
||||
_, err = client.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
_, err = expClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
Provider: "openai-compat",
|
||||
Model: "gpt-4o-mini",
|
||||
ContextLimit: &contextLimit,
|
||||
@@ -1915,7 +1917,7 @@ func TestCreateWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
chat, err := client.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := expClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{
|
||||
{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
@@ -1927,7 +1929,7 @@ func TestCreateWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
|
||||
var chatResult codersdk.Chat
|
||||
require.Eventually(t, func() bool {
|
||||
got, getErr := client.GetChat(ctx, chat.ID)
|
||||
got, getErr := expClient.GetChat(ctx, chat.ID)
|
||||
if getErr != nil {
|
||||
return false
|
||||
}
|
||||
@@ -1949,7 +1951,7 @@ func TestCreateWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, workspaceName, workspace.Name)
|
||||
|
||||
chatMsgs, err := client.GetChatMessages(ctx, chat.ID, nil)
|
||||
chatMsgs, err := expClient.GetChatMessages(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
var foundCreateWorkspaceResult bool
|
||||
@@ -2023,6 +2025,7 @@ func TestStartWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
IncludeProvisionerDaemon: true,
|
||||
})
|
||||
user := coderdtest.CreateFirstUser(t, client)
|
||||
expClient := codersdk.NewExperimentalClient(client)
|
||||
|
||||
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
|
||||
Parse: echo.ParseComplete,
|
||||
@@ -2067,7 +2070,7 @@ func TestStartWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
)
|
||||
})
|
||||
|
||||
_, err := client.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
_, err := expClient.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "openai-compat",
|
||||
APIKey: "test-api-key",
|
||||
BaseURL: openAIURL,
|
||||
@@ -2076,7 +2079,7 @@ func TestStartWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
|
||||
contextLimit := int64(4096)
|
||||
isDefault := true
|
||||
_, err = client.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
_, err = expClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
Provider: "openai-compat",
|
||||
Model: "gpt-4o-mini",
|
||||
ContextLimit: &contextLimit,
|
||||
@@ -2085,7 +2088,7 @@ func TestStartWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// Create a chat with the stopped workspace pre-associated.
|
||||
chat, err := client.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := expClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{
|
||||
{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
@@ -2098,7 +2101,7 @@ func TestStartWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
|
||||
var chatResult codersdk.Chat
|
||||
require.Eventually(t, func() bool {
|
||||
got, getErr := client.GetChat(ctx, chat.ID)
|
||||
got, getErr := expClient.GetChat(ctx, chat.ID)
|
||||
if getErr != nil {
|
||||
return false
|
||||
}
|
||||
@@ -2120,7 +2123,7 @@ func TestStartWorkspaceTool_EndToEnd(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, codersdk.WorkspaceTransitionStart, updatedWorkspace.LatestBuild.Transition)
|
||||
|
||||
chatMsgs, err := client.GetChatMessages(ctx, chat.ID, nil)
|
||||
chatMsgs, err := expClient.GetChatMessages(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Verify start_workspace tool result exists in the chat messages.
|
||||
|
||||
@@ -42,9 +42,10 @@ func TestAnthropicWebSearchRoundTrip(t *testing.T) {
|
||||
DeploymentValues: deploymentValues,
|
||||
})
|
||||
_ = coderdtest.CreateFirstUser(t, client)
|
||||
expClient := codersdk.NewExperimentalClient(client)
|
||||
|
||||
// Configure an Anthropic provider with the real API key.
|
||||
_, err := client.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
_, err := expClient.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "anthropic",
|
||||
APIKey: apiKey,
|
||||
BaseURL: baseURL,
|
||||
@@ -54,7 +55,7 @@ func TestAnthropicWebSearchRoundTrip(t *testing.T) {
|
||||
// Create a model config that enables web_search.
|
||||
contextLimit := int64(200000)
|
||||
isDefault := true
|
||||
_, err = client.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
_, err = expClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
Provider: "anthropic",
|
||||
Model: "claude-sonnet-4-20250514",
|
||||
ContextLimit: &contextLimit,
|
||||
@@ -71,7 +72,7 @@ func TestAnthropicWebSearchRoundTrip(t *testing.T) {
|
||||
|
||||
// --- Step 1: Send a message that triggers web_search ---
|
||||
t.Log("Creating chat with web search query...")
|
||||
chat, err := client.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := expClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{
|
||||
{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
@@ -83,16 +84,16 @@ func TestAnthropicWebSearchRoundTrip(t *testing.T) {
|
||||
t.Logf("Chat created: %s (status=%s)", chat.ID, chat.Status)
|
||||
|
||||
// Stream events until the chat reaches a terminal status.
|
||||
events, closer, err := client.StreamChat(ctx, chat.ID, nil)
|
||||
events, closer, err := expClient.StreamChat(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
defer closer.Close()
|
||||
|
||||
waitForChatDone(ctx, t, events, "step 1")
|
||||
|
||||
// Verify the chat completed and messages were persisted.
|
||||
chatData, err := client.GetChat(ctx, chat.ID)
|
||||
chatData, err := expClient.GetChat(ctx, chat.ID)
|
||||
require.NoError(t, err)
|
||||
chatMsgs, err := client.GetChatMessages(ctx, chat.ID, nil)
|
||||
chatMsgs, err := expClient.GetChatMessages(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
t.Logf("Chat status after step 1: %s, messages: %d",
|
||||
chatData.Status, len(chatMsgs.Messages))
|
||||
@@ -133,7 +134,7 @@ func TestAnthropicWebSearchRoundTrip(t *testing.T) {
|
||||
// by Anthropic because server_tool_use has no matching
|
||||
// web_search_tool_result.
|
||||
t.Log("Sending follow-up message...")
|
||||
_, err = client.CreateChatMessage(ctx, chat.ID,
|
||||
_, err = expClient.CreateChatMessage(ctx, chat.ID,
|
||||
codersdk.CreateChatMessageRequest{
|
||||
Content: []codersdk.ChatInputPart{
|
||||
{
|
||||
@@ -145,16 +146,16 @@ func TestAnthropicWebSearchRoundTrip(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// Stream the follow-up response.
|
||||
events2, closer2, err := client.StreamChat(ctx, chat.ID, nil)
|
||||
events2, closer2, err := expClient.StreamChat(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
defer closer2.Close()
|
||||
|
||||
waitForChatDone(ctx, t, events2, "step 2")
|
||||
|
||||
// Verify the follow-up completed and produced content.
|
||||
chatData2, err := client.GetChat(ctx, chat.ID)
|
||||
chatData2, err := expClient.GetChat(ctx, chat.ID)
|
||||
require.NoError(t, err)
|
||||
chatMsgs2, err := client.GetChatMessages(ctx, chat.ID, nil)
|
||||
chatMsgs2, err := expClient.GetChatMessages(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
t.Logf("Chat status after step 2: %s, messages: %d",
|
||||
chatData2.Status, len(chatMsgs2.Messages))
|
||||
@@ -301,9 +302,10 @@ func TestOpenAIReasoningRoundTrip(t *testing.T) {
|
||||
DeploymentValues: deploymentValues,
|
||||
})
|
||||
_ = coderdtest.CreateFirstUser(t, client)
|
||||
expClient := codersdk.NewExperimentalClient(client)
|
||||
|
||||
// Configure an OpenAI provider with the real API key.
|
||||
_, err := client.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
_, err := expClient.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "openai",
|
||||
APIKey: apiKey,
|
||||
BaseURL: baseURL,
|
||||
@@ -316,7 +318,7 @@ func TestOpenAIReasoningRoundTrip(t *testing.T) {
|
||||
contextLimit := int64(200000)
|
||||
isDefault := true
|
||||
reasoningSummary := "auto"
|
||||
_, err = client.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
_, err = expClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
Provider: "openai",
|
||||
Model: "o4-mini",
|
||||
ContextLimit: &contextLimit,
|
||||
@@ -334,7 +336,7 @@ func TestOpenAIReasoningRoundTrip(t *testing.T) {
|
||||
|
||||
// --- Step 1: Send a message that triggers reasoning ---
|
||||
t.Log("Creating chat with reasoning query...")
|
||||
chat, err := client.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := expClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{
|
||||
{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
@@ -346,16 +348,16 @@ func TestOpenAIReasoningRoundTrip(t *testing.T) {
|
||||
t.Logf("Chat created: %s (status=%s)", chat.ID, chat.Status)
|
||||
|
||||
// Stream events until the chat reaches a terminal status.
|
||||
events, closer, err := client.StreamChat(ctx, chat.ID, nil)
|
||||
events, closer, err := expClient.StreamChat(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
defer closer.Close()
|
||||
|
||||
waitForChatDone(ctx, t, events, "step 1")
|
||||
|
||||
// Verify the chat completed and messages were persisted.
|
||||
chatData, err := client.GetChat(ctx, chat.ID)
|
||||
chatData, err := expClient.GetChat(ctx, chat.ID)
|
||||
require.NoError(t, err)
|
||||
chatMsgs, err := client.GetChatMessages(ctx, chat.ID, nil)
|
||||
chatMsgs, err := expClient.GetChatMessages(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
t.Logf("Chat status after step 1: %s, messages: %d",
|
||||
chatData.Status, len(chatMsgs.Messages))
|
||||
@@ -382,7 +384,7 @@ func TestOpenAIReasoningRoundTrip(t *testing.T) {
|
||||
// Item 'rs_xxx' of type 'reasoning' was provided without its
|
||||
// required following item.
|
||||
t.Log("Sending follow-up message...")
|
||||
_, err = client.CreateChatMessage(ctx, chat.ID,
|
||||
_, err = expClient.CreateChatMessage(ctx, chat.ID,
|
||||
codersdk.CreateChatMessageRequest{
|
||||
Content: []codersdk.ChatInputPart{
|
||||
{
|
||||
@@ -394,16 +396,16 @@ func TestOpenAIReasoningRoundTrip(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// Stream the follow-up response.
|
||||
events2, closer2, err := client.StreamChat(ctx, chat.ID, nil)
|
||||
events2, closer2, err := expClient.StreamChat(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
defer closer2.Close()
|
||||
|
||||
waitForChatDone(ctx, t, events2, "step 2")
|
||||
|
||||
// Verify the follow-up completed and produced content.
|
||||
chatData2, err := client.GetChat(ctx, chat.ID)
|
||||
chatData2, err := expClient.GetChat(ctx, chat.ID)
|
||||
require.NoError(t, err)
|
||||
chatMsgs2, err := client.GetChatMessages(ctx, chat.ID, nil)
|
||||
chatMsgs2, err := expClient.GetChatMessages(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
t.Logf("Chat status after step 2: %s, messages: %d",
|
||||
chatData2.Status, len(chatMsgs2.Messages))
|
||||
@@ -454,9 +456,10 @@ func TestOpenAIReasoningRoundTripStoreFalse(t *testing.T) {
|
||||
DeploymentValues: deploymentValues,
|
||||
})
|
||||
_ = coderdtest.CreateFirstUser(t, client)
|
||||
expClient := codersdk.NewExperimentalClient(client)
|
||||
|
||||
// Configure an OpenAI provider with the real API key.
|
||||
_, err := client.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
_, err := expClient.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "openai",
|
||||
APIKey: apiKey,
|
||||
BaseURL: baseURL,
|
||||
@@ -468,7 +471,7 @@ func TestOpenAIReasoningRoundTripStoreFalse(t *testing.T) {
|
||||
contextLimit := int64(200000)
|
||||
isDefault := true
|
||||
reasoningSummary := "auto"
|
||||
_, err = client.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
_, err = expClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
Provider: "openai",
|
||||
Model: "o4-mini",
|
||||
ContextLimit: &contextLimit,
|
||||
@@ -486,7 +489,7 @@ func TestOpenAIReasoningRoundTripStoreFalse(t *testing.T) {
|
||||
|
||||
// --- Step 1: Send a message that triggers reasoning ---
|
||||
t.Log("Creating chat with reasoning query...")
|
||||
chat, err := client.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := expClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{
|
||||
{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
@@ -498,16 +501,16 @@ func TestOpenAIReasoningRoundTripStoreFalse(t *testing.T) {
|
||||
t.Logf("Chat created: %s (status=%s)", chat.ID, chat.Status)
|
||||
|
||||
// Stream events until the chat reaches a terminal status.
|
||||
events, closer, err := client.StreamChat(ctx, chat.ID, nil)
|
||||
events, closer, err := expClient.StreamChat(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
defer closer.Close()
|
||||
|
||||
waitForChatDone(ctx, t, events, "step 1")
|
||||
|
||||
// Verify the chat completed and messages were persisted.
|
||||
chatData, err := client.GetChat(ctx, chat.ID)
|
||||
chatData, err := expClient.GetChat(ctx, chat.ID)
|
||||
require.NoError(t, err)
|
||||
chatMsgs, err := client.GetChatMessages(ctx, chat.ID, nil)
|
||||
chatMsgs, err := expClient.GetChatMessages(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
t.Logf("Chat status after step 1: %s, messages: %d",
|
||||
chatData.Status, len(chatMsgs.Messages))
|
||||
@@ -531,7 +534,7 @@ func TestOpenAIReasoningRoundTripStoreFalse(t *testing.T) {
|
||||
// This is the critical test: when Store is false, item IDs are
|
||||
// ephemeral and cannot be looked up from OpenAI later.
|
||||
t.Log("Sending follow-up message...")
|
||||
_, err = client.CreateChatMessage(ctx, chat.ID,
|
||||
_, err = expClient.CreateChatMessage(ctx, chat.ID,
|
||||
codersdk.CreateChatMessageRequest{
|
||||
Content: []codersdk.ChatInputPart{
|
||||
{
|
||||
@@ -548,16 +551,16 @@ func TestOpenAIReasoningRoundTripStoreFalse(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// Stream the follow-up response.
|
||||
events2, closer2, err := client.StreamChat(ctx, chat.ID, nil)
|
||||
events2, closer2, err := expClient.StreamChat(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
defer closer2.Close()
|
||||
|
||||
waitForChatDone(ctx, t, events2, "step 2")
|
||||
|
||||
// Verify the follow-up completed and produced content.
|
||||
chatData2, err := client.GetChat(ctx, chat.ID)
|
||||
chatData2, err := expClient.GetChat(ctx, chat.ID)
|
||||
require.NoError(t, err)
|
||||
chatMsgs2, err := client.GetChatMessages(ctx, chat.ID, nil)
|
||||
chatMsgs2, err := expClient.GetChatMessages(ctx, chat.ID, nil)
|
||||
require.NoError(t, err)
|
||||
t.Logf("Chat status after step 2: %s, messages: %d",
|
||||
chatData2.Status, len(chatMsgs2.Messages))
|
||||
|
||||
+207
-183
File diff suppressed because it is too large
Load Diff
+6
-4
@@ -437,14 +437,16 @@ func TestChatWithMCPServerIDs(t *testing.T) {
|
||||
client := newMCPClient(t)
|
||||
_ = coderdtest.CreateFirstUser(t, client)
|
||||
|
||||
expClient := codersdk.NewExperimentalClient(client)
|
||||
|
||||
// Create the chat model config required for creating a chat.
|
||||
_ = createChatModelConfigForMCP(t, client)
|
||||
_ = createChatModelConfigForMCP(t, expClient)
|
||||
|
||||
// Create an enabled MCP server config.
|
||||
mcpConfig := createMCPServerConfig(t, client, "chat-mcp-server", true)
|
||||
|
||||
// Create a chat referencing the MCP server.
|
||||
chat, err := client.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := expClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{
|
||||
{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
@@ -458,7 +460,7 @@ func TestChatWithMCPServerIDs(t *testing.T) {
|
||||
require.Contains(t, chat.MCPServerIDs, mcpConfig.ID)
|
||||
|
||||
// Fetch the chat and verify the MCP server IDs persist.
|
||||
fetched, err := client.GetChat(ctx, chat.ID)
|
||||
fetched, err := expClient.GetChat(ctx, chat.ID)
|
||||
require.NoError(t, err)
|
||||
require.Contains(t, fetched.MCPServerIDs, mcpConfig.ID)
|
||||
}
|
||||
@@ -466,7 +468,7 @@ func TestChatWithMCPServerIDs(t *testing.T) {
|
||||
// createChatModelConfigForMCP sets up a chat provider and model
|
||||
// config so that CreateChat succeeds. This mirrors the helper in
|
||||
// chats_test.go but is defined here to avoid coupling.
|
||||
func createChatModelConfigForMCP(t testing.TB, client *codersdk.Client) codersdk.ChatModelConfig {
|
||||
func createChatModelConfigForMCP(t testing.TB, client *codersdk.ExperimentalClient) codersdk.ChatModelConfig {
|
||||
t.Helper()
|
||||
|
||||
ctx := testutil.Context(t, testutil.WaitLong)
|
||||
|
||||
+41
-41
@@ -1084,7 +1084,7 @@ type ListChatsOptions struct {
|
||||
}
|
||||
|
||||
// ListChats returns all chats for the authenticated user.
|
||||
func (c *Client) ListChats(ctx context.Context, opts *ListChatsOptions) ([]Chat, error) {
|
||||
func (c *ExperimentalClient) ListChats(ctx context.Context, opts *ListChatsOptions) ([]Chat, error) {
|
||||
var reqOpts []RequestOption
|
||||
if opts != nil {
|
||||
reqOpts = append(reqOpts, opts.Pagination.asRequestOption())
|
||||
@@ -1109,7 +1109,7 @@ func (c *Client) ListChats(ctx context.Context, opts *ListChatsOptions) ([]Chat,
|
||||
}
|
||||
|
||||
// ListChatModels returns the available chat model catalog.
|
||||
func (c *Client) ListChatModels(ctx context.Context) (ChatModelsResponse, error) {
|
||||
func (c *ExperimentalClient) ListChatModels(ctx context.Context) (ChatModelsResponse, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, "/api/experimental/chats/models", nil)
|
||||
if err != nil {
|
||||
return ChatModelsResponse{}, err
|
||||
@@ -1124,7 +1124,7 @@ func (c *Client) ListChatModels(ctx context.Context) (ChatModelsResponse, error)
|
||||
}
|
||||
|
||||
// ListChatProviders returns admin-managed chat provider configs.
|
||||
func (c *Client) ListChatProviders(ctx context.Context) ([]ChatProviderConfig, error) {
|
||||
func (c *ExperimentalClient) ListChatProviders(ctx context.Context) ([]ChatProviderConfig, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, "/api/experimental/chats/providers", nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1139,7 +1139,7 @@ func (c *Client) ListChatProviders(ctx context.Context) ([]ChatProviderConfig, e
|
||||
}
|
||||
|
||||
// CreateChatProvider creates an admin-managed chat provider config.
|
||||
func (c *Client) CreateChatProvider(ctx context.Context, req CreateChatProviderConfigRequest) (ChatProviderConfig, error) {
|
||||
func (c *ExperimentalClient) CreateChatProvider(ctx context.Context, req CreateChatProviderConfigRequest) (ChatProviderConfig, error) {
|
||||
res, err := c.Request(ctx, http.MethodPost, "/api/experimental/chats/providers", req)
|
||||
if err != nil {
|
||||
return ChatProviderConfig{}, err
|
||||
@@ -1154,7 +1154,7 @@ func (c *Client) CreateChatProvider(ctx context.Context, req CreateChatProviderC
|
||||
}
|
||||
|
||||
// UpdateChatProvider updates an admin-managed chat provider config.
|
||||
func (c *Client) UpdateChatProvider(ctx context.Context, providerID uuid.UUID, req UpdateChatProviderConfigRequest) (ChatProviderConfig, error) {
|
||||
func (c *ExperimentalClient) UpdateChatProvider(ctx context.Context, providerID uuid.UUID, req UpdateChatProviderConfigRequest) (ChatProviderConfig, error) {
|
||||
res, err := c.Request(ctx, http.MethodPatch, fmt.Sprintf("/api/experimental/chats/providers/%s", providerID), req)
|
||||
if err != nil {
|
||||
return ChatProviderConfig{}, err
|
||||
@@ -1169,7 +1169,7 @@ func (c *Client) UpdateChatProvider(ctx context.Context, providerID uuid.UUID, r
|
||||
}
|
||||
|
||||
// DeleteChatProvider deletes an admin-managed chat provider config.
|
||||
func (c *Client) DeleteChatProvider(ctx context.Context, providerID uuid.UUID) error {
|
||||
func (c *ExperimentalClient) DeleteChatProvider(ctx context.Context, providerID uuid.UUID) error {
|
||||
res, err := c.Request(ctx, http.MethodDelete, fmt.Sprintf("/api/experimental/chats/providers/%s", providerID), nil)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1182,7 +1182,7 @@ func (c *Client) DeleteChatProvider(ctx context.Context, providerID uuid.UUID) e
|
||||
}
|
||||
|
||||
// ListChatModelConfigs returns admin-managed chat model configs.
|
||||
func (c *Client) ListChatModelConfigs(ctx context.Context) ([]ChatModelConfig, error) {
|
||||
func (c *ExperimentalClient) ListChatModelConfigs(ctx context.Context) ([]ChatModelConfig, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, "/api/experimental/chats/model-configs", nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1197,7 +1197,7 @@ func (c *Client) ListChatModelConfigs(ctx context.Context) ([]ChatModelConfig, e
|
||||
}
|
||||
|
||||
// CreateChatModelConfig creates an admin-managed chat model config.
|
||||
func (c *Client) CreateChatModelConfig(ctx context.Context, req CreateChatModelConfigRequest) (ChatModelConfig, error) {
|
||||
func (c *ExperimentalClient) CreateChatModelConfig(ctx context.Context, req CreateChatModelConfigRequest) (ChatModelConfig, error) {
|
||||
res, err := c.Request(ctx, http.MethodPost, "/api/experimental/chats/model-configs", req)
|
||||
if err != nil {
|
||||
return ChatModelConfig{}, err
|
||||
@@ -1212,7 +1212,7 @@ func (c *Client) CreateChatModelConfig(ctx context.Context, req CreateChatModelC
|
||||
}
|
||||
|
||||
// UpdateChatModelConfig updates an admin-managed chat model config.
|
||||
func (c *Client) UpdateChatModelConfig(ctx context.Context, modelConfigID uuid.UUID, req UpdateChatModelConfigRequest) (ChatModelConfig, error) {
|
||||
func (c *ExperimentalClient) UpdateChatModelConfig(ctx context.Context, modelConfigID uuid.UUID, req UpdateChatModelConfigRequest) (ChatModelConfig, error) {
|
||||
res, err := c.Request(ctx, http.MethodPatch, fmt.Sprintf("/api/experimental/chats/model-configs/%s", modelConfigID), req)
|
||||
if err != nil {
|
||||
return ChatModelConfig{}, err
|
||||
@@ -1227,7 +1227,7 @@ func (c *Client) UpdateChatModelConfig(ctx context.Context, modelConfigID uuid.U
|
||||
}
|
||||
|
||||
// DeleteChatModelConfig deletes an admin-managed chat model config.
|
||||
func (c *Client) DeleteChatModelConfig(ctx context.Context, modelConfigID uuid.UUID) error {
|
||||
func (c *ExperimentalClient) DeleteChatModelConfig(ctx context.Context, modelConfigID uuid.UUID) error {
|
||||
res, err := c.Request(ctx, http.MethodDelete, fmt.Sprintf("/api/experimental/chats/model-configs/%s", modelConfigID), nil)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1243,7 +1243,7 @@ func (c *Client) DeleteChatModelConfig(ctx context.Context, modelConfigID uuid.U
|
||||
// user. Zero-valued StartDate or EndDate fields are omitted from the
|
||||
// request, letting the server apply its own defaults (typically the last
|
||||
// 30 days).
|
||||
func (c *Client) GetChatCostSummary(ctx context.Context, user string, opts ChatCostSummaryOptions) (ChatCostSummary, error) {
|
||||
func (c *ExperimentalClient) GetChatCostSummary(ctx context.Context, user string, opts ChatCostSummaryOptions) (ChatCostSummary, error) {
|
||||
qp := url.Values{}
|
||||
if !opts.StartDate.IsZero() {
|
||||
qp.Set("start_date", opts.StartDate.Format(time.RFC3339))
|
||||
@@ -1271,7 +1271,7 @@ func (c *Client) GetChatCostSummary(ctx context.Context, user string, opts ChatC
|
||||
// (admin only). Zero-valued StartDate or EndDate fields are omitted from
|
||||
// the request, letting the server apply its own defaults (typically the
|
||||
// last 30 days).
|
||||
func (c *Client) GetChatCostUsers(ctx context.Context, opts ChatCostUsersOptions) (ChatCostUsersResponse, error) {
|
||||
func (c *ExperimentalClient) GetChatCostUsers(ctx context.Context, opts ChatCostUsersOptions) (ChatCostUsersResponse, error) {
|
||||
qp := url.Values{}
|
||||
if !opts.StartDate.IsZero() {
|
||||
qp.Set("start_date", opts.StartDate.Format(time.RFC3339))
|
||||
@@ -1305,7 +1305,7 @@ func (c *Client) GetChatCostUsers(ctx context.Context, opts ChatCostUsersOptions
|
||||
}
|
||||
|
||||
// GetChatSystemPrompt returns the deployment-wide chat system prompt.
|
||||
func (c *Client) GetChatSystemPrompt(ctx context.Context) (ChatSystemPrompt, error) {
|
||||
func (c *ExperimentalClient) GetChatSystemPrompt(ctx context.Context) (ChatSystemPrompt, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, "/api/experimental/chats/config/system-prompt", nil)
|
||||
if err != nil {
|
||||
return ChatSystemPrompt{}, err
|
||||
@@ -1319,7 +1319,7 @@ func (c *Client) GetChatSystemPrompt(ctx context.Context) (ChatSystemPrompt, err
|
||||
}
|
||||
|
||||
// UpdateChatSystemPrompt updates the deployment-wide chat system prompt.
|
||||
func (c *Client) UpdateChatSystemPrompt(ctx context.Context, req ChatSystemPrompt) error {
|
||||
func (c *ExperimentalClient) UpdateChatSystemPrompt(ctx context.Context, req ChatSystemPrompt) error {
|
||||
res, err := c.Request(ctx, http.MethodPut, "/api/experimental/chats/config/system-prompt", req)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1332,7 +1332,7 @@ func (c *Client) UpdateChatSystemPrompt(ctx context.Context, req ChatSystemPromp
|
||||
}
|
||||
|
||||
// GetUserChatCustomPrompt fetches the user's custom chat prompt.
|
||||
func (c *Client) GetUserChatCustomPrompt(ctx context.Context) (UserChatCustomPrompt, error) {
|
||||
func (c *ExperimentalClient) GetUserChatCustomPrompt(ctx context.Context) (UserChatCustomPrompt, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, "/api/experimental/chats/config/user-prompt", nil)
|
||||
if err != nil {
|
||||
return UserChatCustomPrompt{}, err
|
||||
@@ -1346,7 +1346,7 @@ func (c *Client) GetUserChatCustomPrompt(ctx context.Context) (UserChatCustomPro
|
||||
}
|
||||
|
||||
// GetChatDesktopEnabled returns the deployment-wide desktop setting.
|
||||
func (c *Client) GetChatDesktopEnabled(ctx context.Context) (ChatDesktopEnabledResponse, error) {
|
||||
func (c *ExperimentalClient) GetChatDesktopEnabled(ctx context.Context) (ChatDesktopEnabledResponse, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, "/api/experimental/chats/config/desktop-enabled", nil)
|
||||
if err != nil {
|
||||
return ChatDesktopEnabledResponse{}, err
|
||||
@@ -1360,7 +1360,7 @@ func (c *Client) GetChatDesktopEnabled(ctx context.Context) (ChatDesktopEnabledR
|
||||
}
|
||||
|
||||
// UpdateChatDesktopEnabled updates the deployment-wide desktop setting.
|
||||
func (c *Client) UpdateChatDesktopEnabled(ctx context.Context, req UpdateChatDesktopEnabledRequest) error {
|
||||
func (c *ExperimentalClient) UpdateChatDesktopEnabled(ctx context.Context, req UpdateChatDesktopEnabledRequest) error {
|
||||
res, err := c.Request(ctx, http.MethodPut, "/api/experimental/chats/config/desktop-enabled", req)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1373,7 +1373,7 @@ func (c *Client) UpdateChatDesktopEnabled(ctx context.Context, req UpdateChatDes
|
||||
}
|
||||
|
||||
// GetChatWorkspaceTTL returns the configured chat workspace TTL.
|
||||
func (c *Client) GetChatWorkspaceTTL(ctx context.Context) (ChatWorkspaceTTLResponse, error) {
|
||||
func (c *ExperimentalClient) GetChatWorkspaceTTL(ctx context.Context) (ChatWorkspaceTTLResponse, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, "/api/experimental/chats/config/workspace-ttl", nil)
|
||||
if err != nil {
|
||||
return ChatWorkspaceTTLResponse{}, err
|
||||
@@ -1387,7 +1387,7 @@ func (c *Client) GetChatWorkspaceTTL(ctx context.Context) (ChatWorkspaceTTLRespo
|
||||
}
|
||||
|
||||
// UpdateChatWorkspaceTTL updates the chat workspace TTL setting.
|
||||
func (c *Client) UpdateChatWorkspaceTTL(ctx context.Context, req UpdateChatWorkspaceTTLRequest) error {
|
||||
func (c *ExperimentalClient) UpdateChatWorkspaceTTL(ctx context.Context, req UpdateChatWorkspaceTTLRequest) error {
|
||||
res, err := c.Request(ctx, http.MethodPut, "/api/experimental/chats/config/workspace-ttl", req)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1400,7 +1400,7 @@ func (c *Client) UpdateChatWorkspaceTTL(ctx context.Context, req UpdateChatWorks
|
||||
}
|
||||
|
||||
// UpdateUserChatCustomPrompt updates the user's custom chat prompt.
|
||||
func (c *Client) UpdateUserChatCustomPrompt(ctx context.Context, req UserChatCustomPrompt) (UserChatCustomPrompt, error) {
|
||||
func (c *ExperimentalClient) UpdateUserChatCustomPrompt(ctx context.Context, req UserChatCustomPrompt) (UserChatCustomPrompt, error) {
|
||||
res, err := c.Request(ctx, http.MethodPut, "/api/experimental/chats/config/user-prompt", req)
|
||||
if err != nil {
|
||||
return UserChatCustomPrompt{}, err
|
||||
@@ -1414,7 +1414,7 @@ func (c *Client) UpdateUserChatCustomPrompt(ctx context.Context, req UserChatCus
|
||||
}
|
||||
|
||||
// CreateChat creates a new chat.
|
||||
func (c *Client) CreateChat(ctx context.Context, req CreateChatRequest) (Chat, error) {
|
||||
func (c *ExperimentalClient) CreateChat(ctx context.Context, req CreateChatRequest) (Chat, error) {
|
||||
res, err := c.Request(ctx, http.MethodPost, "/api/experimental/chats", req)
|
||||
if err != nil {
|
||||
return Chat{}, err
|
||||
@@ -1441,7 +1441,7 @@ type StreamChatOptions struct {
|
||||
// The returned channel includes initial snapshot events first, followed by
|
||||
// live updates. Callers must close the returned io.Closer to release the
|
||||
// websocket connection when done.
|
||||
func (c *Client) StreamChat(ctx context.Context, chatID uuid.UUID, opts *StreamChatOptions) (<-chan ChatStreamEvent, io.Closer, error) {
|
||||
func (c *ExperimentalClient) StreamChat(ctx context.Context, chatID uuid.UUID, opts *StreamChatOptions) (<-chan ChatStreamEvent, io.Closer, error) {
|
||||
path := fmt.Sprintf("/api/experimental/chats/%s/stream", chatID)
|
||||
if opts != nil && opts.AfterID != nil {
|
||||
path += fmt.Sprintf("?after_id=%d", *opts.AfterID)
|
||||
@@ -1564,7 +1564,7 @@ func (c *Client) StreamChat(ctx context.Context, chatID uuid.UUID, opts *StreamC
|
||||
}
|
||||
|
||||
// GetChat returns a chat by ID.
|
||||
func (c *Client) GetChat(ctx context.Context, chatID uuid.UUID) (Chat, error) {
|
||||
func (c *ExperimentalClient) GetChat(ctx context.Context, chatID uuid.UUID) (Chat, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, fmt.Sprintf("/api/experimental/chats/%s", chatID), nil)
|
||||
if err != nil {
|
||||
return Chat{}, err
|
||||
@@ -1586,7 +1586,7 @@ type ChatMessagesPaginationOptions struct {
|
||||
}
|
||||
|
||||
// GetChatMessages returns the messages and queued messages for a chat.
|
||||
func (c *Client) GetChatMessages(ctx context.Context, chatID uuid.UUID, opts *ChatMessagesPaginationOptions) (ChatMessagesResponse, error) {
|
||||
func (c *ExperimentalClient) GetChatMessages(ctx context.Context, chatID uuid.UUID, opts *ChatMessagesPaginationOptions) (ChatMessagesResponse, error) {
|
||||
reqOpts := []RequestOption{}
|
||||
if opts != nil {
|
||||
reqOpts = append(reqOpts, func(r *http.Request) {
|
||||
@@ -1613,7 +1613,7 @@ func (c *Client) GetChatMessages(ctx context.Context, chatID uuid.UUID, opts *Ch
|
||||
}
|
||||
|
||||
// UpdateChat patches a chat resource.
|
||||
func (c *Client) UpdateChat(ctx context.Context, chatID uuid.UUID, req UpdateChatRequest) error {
|
||||
func (c *ExperimentalClient) UpdateChat(ctx context.Context, chatID uuid.UUID, req UpdateChatRequest) error {
|
||||
res, err := c.Request(ctx, http.MethodPatch, fmt.Sprintf("/api/experimental/chats/%s", chatID), req)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1626,7 +1626,7 @@ func (c *Client) UpdateChat(ctx context.Context, chatID uuid.UUID, req UpdateCha
|
||||
}
|
||||
|
||||
// CreateChatMessage adds a message to a chat.
|
||||
func (c *Client) CreateChatMessage(ctx context.Context, chatID uuid.UUID, req CreateChatMessageRequest) (CreateChatMessageResponse, error) {
|
||||
func (c *ExperimentalClient) CreateChatMessage(ctx context.Context, chatID uuid.UUID, req CreateChatMessageRequest) (CreateChatMessageResponse, error) {
|
||||
res, err := c.Request(ctx, http.MethodPost, fmt.Sprintf("/api/experimental/chats/%s/messages", chatID), req)
|
||||
if err != nil {
|
||||
return CreateChatMessageResponse{}, err
|
||||
@@ -1640,7 +1640,7 @@ func (c *Client) CreateChatMessage(ctx context.Context, chatID uuid.UUID, req Cr
|
||||
}
|
||||
|
||||
// EditChatMessage edits an existing user message in a chat and re-runs from there.
|
||||
func (c *Client) EditChatMessage(
|
||||
func (c *ExperimentalClient) EditChatMessage(
|
||||
ctx context.Context,
|
||||
chatID uuid.UUID,
|
||||
messageID int64,
|
||||
@@ -1664,7 +1664,7 @@ func (c *Client) EditChatMessage(
|
||||
}
|
||||
|
||||
// InterruptChat cancels an in-flight chat run and leaves it waiting.
|
||||
func (c *Client) InterruptChat(ctx context.Context, chatID uuid.UUID) (Chat, error) {
|
||||
func (c *ExperimentalClient) InterruptChat(ctx context.Context, chatID uuid.UUID) (Chat, error) {
|
||||
res, err := c.Request(ctx, http.MethodPost, fmt.Sprintf("/api/experimental/chats/%s/interrupt", chatID), nil)
|
||||
if err != nil {
|
||||
return Chat{}, err
|
||||
@@ -1678,7 +1678,7 @@ func (c *Client) InterruptChat(ctx context.Context, chatID uuid.UUID) (Chat, err
|
||||
}
|
||||
|
||||
// GetChatGitChanges returns git changes for a chat.
|
||||
func (c *Client) GetChatGitChanges(ctx context.Context, chatID uuid.UUID) ([]ChatGitChange, error) {
|
||||
func (c *ExperimentalClient) GetChatGitChanges(ctx context.Context, chatID uuid.UUID) ([]ChatGitChange, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, fmt.Sprintf("/api/experimental/chats/%s/git-changes", chatID), nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1692,7 +1692,7 @@ func (c *Client) GetChatGitChanges(ctx context.Context, chatID uuid.UUID) ([]Cha
|
||||
}
|
||||
|
||||
// GetChatDiffContents returns resolved diff contents for a chat.
|
||||
func (c *Client) GetChatDiffContents(ctx context.Context, chatID uuid.UUID) (ChatDiffContents, error) {
|
||||
func (c *ExperimentalClient) GetChatDiffContents(ctx context.Context, chatID uuid.UUID) (ChatDiffContents, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, fmt.Sprintf("/api/experimental/chats/%s/diff", chatID), nil)
|
||||
if err != nil {
|
||||
return ChatDiffContents{}, err
|
||||
@@ -1706,7 +1706,7 @@ func (c *Client) GetChatDiffContents(ctx context.Context, chatID uuid.UUID) (Cha
|
||||
}
|
||||
|
||||
// UploadChatFile uploads a file for use in chat messages.
|
||||
func (c *Client) UploadChatFile(ctx context.Context, organizationID uuid.UUID, contentType string, filename string, rd io.Reader) (UploadChatFileResponse, error) {
|
||||
func (c *ExperimentalClient) UploadChatFile(ctx context.Context, organizationID uuid.UUID, contentType string, filename string, rd io.Reader) (UploadChatFileResponse, error) {
|
||||
res, err := c.Request(ctx, http.MethodPost, fmt.Sprintf("/api/experimental/chats/files?organization=%s", organizationID), rd, func(r *http.Request) {
|
||||
r.Header.Set("Content-Type", contentType)
|
||||
if filename != "" {
|
||||
@@ -1725,7 +1725,7 @@ func (c *Client) UploadChatFile(ctx context.Context, organizationID uuid.UUID, c
|
||||
}
|
||||
|
||||
// GetChatFile retrieves a previously uploaded chat file by ID.
|
||||
func (c *Client) GetChatFile(ctx context.Context, fileID uuid.UUID) ([]byte, string, error) {
|
||||
func (c *ExperimentalClient) GetChatFile(ctx context.Context, fileID uuid.UUID) ([]byte, string, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, fmt.Sprintf("/api/experimental/chats/files/%s", fileID), nil)
|
||||
if err != nil {
|
||||
return nil, "", err
|
||||
@@ -1742,7 +1742,7 @@ func (c *Client) GetChatFile(ctx context.Context, fileID uuid.UUID) ([]byte, str
|
||||
}
|
||||
|
||||
// GetChatUsageLimitConfig returns the deployment-wide chat usage limit config.
|
||||
func (c *Client) GetChatUsageLimitConfig(ctx context.Context) (ChatUsageLimitConfigResponse, error) {
|
||||
func (c *ExperimentalClient) GetChatUsageLimitConfig(ctx context.Context) (ChatUsageLimitConfigResponse, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, "/api/experimental/chats/usage-limits", nil)
|
||||
if err != nil {
|
||||
return ChatUsageLimitConfigResponse{}, err
|
||||
@@ -1756,7 +1756,7 @@ func (c *Client) GetChatUsageLimitConfig(ctx context.Context) (ChatUsageLimitCon
|
||||
}
|
||||
|
||||
// UpdateChatUsageLimitConfig updates the deployment-wide usage limit config.
|
||||
func (c *Client) UpdateChatUsageLimitConfig(ctx context.Context, req ChatUsageLimitConfig) (ChatUsageLimitConfig, error) {
|
||||
func (c *ExperimentalClient) UpdateChatUsageLimitConfig(ctx context.Context, req ChatUsageLimitConfig) (ChatUsageLimitConfig, error) {
|
||||
res, err := c.Request(ctx, http.MethodPut, "/api/experimental/chats/usage-limits", req)
|
||||
if err != nil {
|
||||
return ChatUsageLimitConfig{}, err
|
||||
@@ -1770,7 +1770,7 @@ func (c *Client) UpdateChatUsageLimitConfig(ctx context.Context, req ChatUsageLi
|
||||
}
|
||||
|
||||
// UpsertChatUsageLimitOverride creates or updates a per-user usage limit override.
|
||||
func (c *Client) UpsertChatUsageLimitOverride(ctx context.Context, userID uuid.UUID, req UpsertChatUsageLimitOverrideRequest) (ChatUsageLimitOverride, error) {
|
||||
func (c *ExperimentalClient) UpsertChatUsageLimitOverride(ctx context.Context, userID uuid.UUID, req UpsertChatUsageLimitOverrideRequest) (ChatUsageLimitOverride, error) {
|
||||
res, err := c.Request(ctx, http.MethodPut, fmt.Sprintf("/api/experimental/chats/usage-limits/overrides/%s", userID), req)
|
||||
if err != nil {
|
||||
return ChatUsageLimitOverride{}, err
|
||||
@@ -1784,12 +1784,12 @@ func (c *Client) UpsertChatUsageLimitOverride(ctx context.Context, userID uuid.U
|
||||
}
|
||||
|
||||
// UpdateChatUserUsageLimitOverride creates or updates a per-user usage limit override.
|
||||
func (c *Client) UpdateChatUserUsageLimitOverride(ctx context.Context, userID uuid.UUID, req UpdateChatUsageLimitOverrideRequest) (ChatUsageLimitOverride, error) {
|
||||
func (c *ExperimentalClient) UpdateChatUserUsageLimitOverride(ctx context.Context, userID uuid.UUID, req UpdateChatUsageLimitOverrideRequest) (ChatUsageLimitOverride, error) {
|
||||
return c.UpsertChatUsageLimitOverride(ctx, userID, req)
|
||||
}
|
||||
|
||||
// DeleteChatUsageLimitOverride removes a per-user usage limit override.
|
||||
func (c *Client) DeleteChatUsageLimitOverride(ctx context.Context, userID uuid.UUID) error {
|
||||
func (c *ExperimentalClient) DeleteChatUsageLimitOverride(ctx context.Context, userID uuid.UUID) error {
|
||||
res, err := c.Request(ctx, http.MethodDelete, fmt.Sprintf("/api/experimental/chats/usage-limits/overrides/%s", userID), nil)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1802,13 +1802,13 @@ func (c *Client) DeleteChatUsageLimitOverride(ctx context.Context, userID uuid.U
|
||||
}
|
||||
|
||||
// DeleteChatUserUsageLimitOverride removes a per-user usage limit override.
|
||||
func (c *Client) DeleteChatUserUsageLimitOverride(ctx context.Context, userID uuid.UUID) error {
|
||||
func (c *ExperimentalClient) DeleteChatUserUsageLimitOverride(ctx context.Context, userID uuid.UUID) error {
|
||||
return c.DeleteChatUsageLimitOverride(ctx, userID)
|
||||
}
|
||||
|
||||
// UpsertChatUsageLimitGroupOverride creates or updates a group-level
|
||||
// spend limit override. EXPERIMENTAL: This API is subject to change.
|
||||
func (c *Client) UpsertChatUsageLimitGroupOverride(ctx context.Context, groupID uuid.UUID, req UpsertChatUsageLimitGroupOverrideRequest) (ChatUsageLimitGroupOverride, error) {
|
||||
func (c *ExperimentalClient) UpsertChatUsageLimitGroupOverride(ctx context.Context, groupID uuid.UUID, req UpsertChatUsageLimitGroupOverrideRequest) (ChatUsageLimitGroupOverride, error) {
|
||||
res, err := c.Request(ctx, http.MethodPut,
|
||||
fmt.Sprintf("/api/experimental/chats/usage-limits/group-overrides/%s", groupID),
|
||||
req,
|
||||
@@ -1826,7 +1826,7 @@ func (c *Client) UpsertChatUsageLimitGroupOverride(ctx context.Context, groupID
|
||||
|
||||
// DeleteChatUsageLimitGroupOverride removes a group-level spend limit
|
||||
// override. EXPERIMENTAL: This API is subject to change.
|
||||
func (c *Client) DeleteChatUsageLimitGroupOverride(ctx context.Context, groupID uuid.UUID) error {
|
||||
func (c *ExperimentalClient) DeleteChatUsageLimitGroupOverride(ctx context.Context, groupID uuid.UUID) error {
|
||||
res, err := c.Request(ctx, http.MethodDelete,
|
||||
fmt.Sprintf("/api/experimental/chats/usage-limits/group-overrides/%s", groupID),
|
||||
nil,
|
||||
@@ -1842,7 +1842,7 @@ func (c *Client) DeleteChatUsageLimitGroupOverride(ctx context.Context, groupID
|
||||
}
|
||||
|
||||
// GetMyChatUsageLimitStatus returns the current user's chat usage limit status.
|
||||
func (c *Client) GetMyChatUsageLimitStatus(ctx context.Context) (ChatUsageLimitStatus, error) {
|
||||
func (c *ExperimentalClient) GetMyChatUsageLimitStatus(ctx context.Context) (ChatUsageLimitStatus, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, "/api/experimental/chats/usage-limits/status", nil)
|
||||
if err != nil {
|
||||
return ChatUsageLimitStatus{}, err
|
||||
|
||||
@@ -87,7 +87,7 @@ func TestChatUsageLimitExceededFrom(t *testing.T) {
|
||||
serverURL, err := url.Parse(srv.URL)
|
||||
require.NoError(t, err)
|
||||
|
||||
client := codersdk.New(serverURL)
|
||||
client := codersdk.NewExperimentalClient(codersdk.New(serverURL))
|
||||
_, err = client.CreateChat(context.Background(), codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
@@ -121,7 +121,7 @@ func TestChatUsageLimitExceededFrom(t *testing.T) {
|
||||
serverURL, err := url.Parse(srv.URL)
|
||||
require.NoError(t, err)
|
||||
|
||||
client := codersdk.New(serverURL)
|
||||
client := codersdk.NewExperimentalClient(codersdk.New(serverURL))
|
||||
_, err = client.CreateChat(context.Background(), codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
|
||||
@@ -445,7 +445,8 @@ func dialRelay(
|
||||
token: extractSessionToken(requestHeader),
|
||||
replicaID: replicaID,
|
||||
}
|
||||
sourceEvents, sourceStream, err := sdkClient.StreamChat(relayCtx, chatID, &codersdk.StreamChatOptions{
|
||||
expClient := codersdk.NewExperimentalClient(sdkClient)
|
||||
sourceEvents, sourceStream, err := expClient.StreamChat(relayCtx, chatID, &codersdk.StreamChatOptions{
|
||||
AfterID: ptr.Ref(int64(math.MaxInt64)),
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
@@ -73,7 +73,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
})
|
||||
|
||||
//nolint:gocritic // Test uses owner client to configure chat providers.
|
||||
provider, err := firstClient.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
provider, err := codersdk.NewExperimentalClient(firstClient).CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "openai",
|
||||
DisplayName: "OpenAI",
|
||||
APIKey: "test",
|
||||
@@ -82,7 +82,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, codersdk.ChatProviderConfigSourceDatabase, provider.Source)
|
||||
|
||||
model, err := firstClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
model, err := codersdk.NewExperimentalClient(firstClient).CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
Provider: provider.Provider,
|
||||
Model: "gpt-4",
|
||||
DisplayName: "GPT-4",
|
||||
@@ -92,7 +92,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// Create a chat on the first replica
|
||||
chat, err := firstClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := codersdk.NewExperimentalClient(firstClient).CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
Text: "Test chat for relay",
|
||||
@@ -115,15 +115,15 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
return true
|
||||
}, testutil.WaitLong, testutil.IntervalFast)
|
||||
|
||||
var localClient *codersdk.Client
|
||||
var relayClient *codersdk.Client
|
||||
var localClient *codersdk.ExperimentalClient
|
||||
var relayClient *codersdk.ExperimentalClient
|
||||
switch runningChat.WorkerID.UUID {
|
||||
case firstReplicaID:
|
||||
localClient = firstClient
|
||||
relayClient = secondClient
|
||||
localClient = codersdk.NewExperimentalClient(firstClient)
|
||||
relayClient = codersdk.NewExperimentalClient(secondClient)
|
||||
case secondReplicaID:
|
||||
localClient = secondClient
|
||||
relayClient = firstClient
|
||||
localClient = codersdk.NewExperimentalClient(secondClient)
|
||||
relayClient = codersdk.NewExperimentalClient(firstClient)
|
||||
default:
|
||||
require.FailNowf(
|
||||
t,
|
||||
@@ -263,7 +263,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
})
|
||||
|
||||
//nolint:gocritic // Test uses owner client to configure chat providers.
|
||||
provider, err := firstClient.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
provider, err := codersdk.NewExperimentalClient(firstClient).CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "openai",
|
||||
DisplayName: "OpenAI",
|
||||
APIKey: "test",
|
||||
@@ -271,7 +271,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
model, err := firstClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
model, err := codersdk.NewExperimentalClient(firstClient).CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
Provider: provider.Provider,
|
||||
Model: "gpt-4",
|
||||
DisplayName: "GPT-4",
|
||||
@@ -281,7 +281,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// Create a chat on the first replica.
|
||||
chat, err := firstClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := codersdk.NewExperimentalClient(firstClient).CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
Text: "Test chat for TLS relay",
|
||||
@@ -304,15 +304,15 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
return true
|
||||
}, testutil.WaitLong, testutil.IntervalFast)
|
||||
|
||||
var localClient *codersdk.Client
|
||||
var relayClient *codersdk.Client
|
||||
var localClient *codersdk.ExperimentalClient
|
||||
var relayClient *codersdk.ExperimentalClient
|
||||
switch runningChat.WorkerID.UUID {
|
||||
case firstReplicaID:
|
||||
localClient = firstClient
|
||||
relayClient = secondClient
|
||||
localClient = codersdk.NewExperimentalClient(firstClient)
|
||||
relayClient = codersdk.NewExperimentalClient(secondClient)
|
||||
case secondReplicaID:
|
||||
localClient = secondClient
|
||||
relayClient = firstClient
|
||||
localClient = codersdk.NewExperimentalClient(secondClient)
|
||||
relayClient = codersdk.NewExperimentalClient(firstClient)
|
||||
default:
|
||||
require.FailNowf(
|
||||
t,
|
||||
@@ -434,7 +434,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
})
|
||||
|
||||
//nolint:gocritic // Test uses owner client to configure providers.
|
||||
provider, err := firstClient.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
provider, err := codersdk.NewExperimentalClient(firstClient).CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "openai",
|
||||
DisplayName: "OpenAI",
|
||||
APIKey: "test",
|
||||
@@ -442,7 +442,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
model, err := firstClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
model, err := codersdk.NewExperimentalClient(firstClient).CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
Provider: provider.Provider,
|
||||
Model: "gpt-4",
|
||||
DisplayName: "GPT-4",
|
||||
@@ -451,7 +451,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
chat, err := firstClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := codersdk.NewExperimentalClient(firstClient).CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
Text: "Test cookie-only relay",
|
||||
@@ -474,15 +474,15 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
return true
|
||||
}, testutil.WaitLong, testutil.IntervalFast)
|
||||
|
||||
var localClient *codersdk.Client
|
||||
var relayClient *codersdk.Client
|
||||
var localClient *codersdk.ExperimentalClient
|
||||
var relayClient *codersdk.ExperimentalClient
|
||||
switch runningChat.WorkerID.UUID {
|
||||
case firstReplicaID:
|
||||
localClient = firstClient
|
||||
relayClient = secondClient
|
||||
localClient = codersdk.NewExperimentalClient(firstClient)
|
||||
relayClient = codersdk.NewExperimentalClient(secondClient)
|
||||
case secondReplicaID:
|
||||
localClient = secondClient
|
||||
relayClient = firstClient
|
||||
localClient = codersdk.NewExperimentalClient(secondClient)
|
||||
relayClient = codersdk.NewExperimentalClient(firstClient)
|
||||
default:
|
||||
require.FailNowf(
|
||||
t,
|
||||
@@ -606,7 +606,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
})
|
||||
|
||||
//nolint:gocritic // Test uses owner client to configure providers.
|
||||
provider, err := firstClient.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
provider, err := codersdk.NewExperimentalClient(firstClient).CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "openai",
|
||||
DisplayName: "OpenAI",
|
||||
APIKey: "test",
|
||||
@@ -614,7 +614,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
model, err := firstClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
model, err := codersdk.NewExperimentalClient(firstClient).CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
Provider: provider.Provider,
|
||||
Model: "gpt-4",
|
||||
DisplayName: "GPT-4",
|
||||
@@ -623,7 +623,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
chat, err := firstClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := codersdk.NewExperimentalClient(firstClient).CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
Text: "Test host-prefix relay",
|
||||
@@ -646,15 +646,15 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
return true
|
||||
}, testutil.WaitLong, testutil.IntervalFast)
|
||||
|
||||
var localClient *codersdk.Client
|
||||
var relayClient *codersdk.Client
|
||||
var localClient *codersdk.ExperimentalClient
|
||||
var relayClient *codersdk.ExperimentalClient
|
||||
switch runningChat.WorkerID.UUID {
|
||||
case firstReplicaID:
|
||||
localClient = firstClient
|
||||
relayClient = secondClient
|
||||
localClient = codersdk.NewExperimentalClient(firstClient)
|
||||
relayClient = codersdk.NewExperimentalClient(secondClient)
|
||||
case secondReplicaID:
|
||||
localClient = secondClient
|
||||
relayClient = firstClient
|
||||
localClient = codersdk.NewExperimentalClient(secondClient)
|
||||
relayClient = codersdk.NewExperimentalClient(firstClient)
|
||||
default:
|
||||
require.FailNowf(
|
||||
t,
|
||||
@@ -753,7 +753,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
})
|
||||
|
||||
//nolint:gocritic // Test uses owner client to configure chat providers.
|
||||
provider, err := firstClient.CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
provider, err := codersdk.NewExperimentalClient(firstClient).CreateChatProvider(ctx, codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "openai",
|
||||
DisplayName: "OpenAI",
|
||||
APIKey: "test",
|
||||
@@ -761,7 +761,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
model, err := firstClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
model, err := codersdk.NewExperimentalClient(firstClient).CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{
|
||||
Provider: provider.Provider,
|
||||
Model: "gpt-4",
|
||||
DisplayName: "GPT-4",
|
||||
@@ -771,7 +771,7 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// Create a chat on the first replica.
|
||||
chat, err := firstClient.CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
chat, err := codersdk.NewExperimentalClient(firstClient).CreateChat(ctx, codersdk.CreateChatRequest{
|
||||
Content: []codersdk.ChatInputPart{{
|
||||
Type: codersdk.ChatInputPartTypeText,
|
||||
Text: "Test chat for buffered relay",
|
||||
@@ -794,15 +794,15 @@ func TestChatStreamRelay(t *testing.T) {
|
||||
return true
|
||||
}, testutil.WaitLong, testutil.IntervalFast)
|
||||
|
||||
var localClient *codersdk.Client
|
||||
var relayClient *codersdk.Client
|
||||
var localClient *codersdk.ExperimentalClient
|
||||
var relayClient *codersdk.ExperimentalClient
|
||||
switch runningChat.WorkerID.UUID {
|
||||
case firstReplicaID:
|
||||
localClient = firstClient
|
||||
relayClient = secondClient
|
||||
localClient = codersdk.NewExperimentalClient(firstClient)
|
||||
relayClient = codersdk.NewExperimentalClient(secondClient)
|
||||
case secondReplicaID:
|
||||
localClient = secondClient
|
||||
relayClient = firstClient
|
||||
localClient = codersdk.NewExperimentalClient(secondClient)
|
||||
relayClient = codersdk.NewExperimentalClient(firstClient)
|
||||
default:
|
||||
require.FailNowf(
|
||||
t,
|
||||
@@ -950,9 +950,10 @@ func TestChatModelConfigDefault(t *testing.T) {
|
||||
ctx := testutil.Context(t, testutil.WaitLong)
|
||||
|
||||
client, _ := coderdenttest.New(t, nil)
|
||||
expClient := codersdk.NewExperimentalClient(client)
|
||||
|
||||
//nolint:gocritic // Test uses owner client to configure chat providers.
|
||||
provider, err := client.CreateChatProvider(
|
||||
provider, err := expClient.CreateChatProvider(
|
||||
ctx,
|
||||
codersdk.CreateChatProviderConfigRequest{
|
||||
Provider: "openai",
|
||||
@@ -968,7 +969,7 @@ func TestChatModelConfigDefault(t *testing.T) {
|
||||
trueValue := true
|
||||
falseValue := false
|
||||
|
||||
firstModel, err := client.CreateChatModelConfig(
|
||||
firstModel, err := expClient.CreateChatModelConfig(
|
||||
ctx,
|
||||
codersdk.CreateChatModelConfigRequest{
|
||||
Provider: provider.Provider,
|
||||
@@ -982,7 +983,7 @@ func TestChatModelConfigDefault(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.True(t, firstModel.IsDefault)
|
||||
|
||||
secondModel, err := client.CreateChatModelConfig(
|
||||
secondModel, err := expClient.CreateChatModelConfig(
|
||||
ctx,
|
||||
codersdk.CreateChatModelConfigRequest{
|
||||
Provider: provider.Provider,
|
||||
@@ -996,14 +997,14 @@ func TestChatModelConfigDefault(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.True(t, secondModel.IsDefault)
|
||||
|
||||
modelConfigs, err := client.ListChatModelConfigs(ctx)
|
||||
modelConfigs, err := expClient.ListChatModelConfigs(ctx)
|
||||
require.NoError(t, err)
|
||||
firstStored := findChatModelConfigByID(t, modelConfigs, firstModel.ID)
|
||||
secondStored := findChatModelConfigByID(t, modelConfigs, secondModel.ID)
|
||||
require.False(t, firstStored.IsDefault)
|
||||
require.True(t, secondStored.IsDefault)
|
||||
|
||||
updatedFirst, err := client.UpdateChatModelConfig(
|
||||
updatedFirst, err := expClient.UpdateChatModelConfig(
|
||||
ctx,
|
||||
firstModel.ID,
|
||||
codersdk.UpdateChatModelConfigRequest{
|
||||
@@ -1013,14 +1014,14 @@ func TestChatModelConfigDefault(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.True(t, updatedFirst.IsDefault)
|
||||
|
||||
modelConfigs, err = client.ListChatModelConfigs(ctx)
|
||||
modelConfigs, err = expClient.ListChatModelConfigs(ctx)
|
||||
require.NoError(t, err)
|
||||
firstStored = findChatModelConfigByID(t, modelConfigs, firstModel.ID)
|
||||
secondStored = findChatModelConfigByID(t, modelConfigs, secondModel.ID)
|
||||
require.True(t, firstStored.IsDefault)
|
||||
require.False(t, secondStored.IsDefault)
|
||||
|
||||
updatedFirst, err = client.UpdateChatModelConfig(
|
||||
updatedFirst, err = expClient.UpdateChatModelConfig(
|
||||
ctx,
|
||||
firstModel.ID,
|
||||
codersdk.UpdateChatModelConfigRequest{
|
||||
@@ -1030,7 +1031,7 @@ func TestChatModelConfigDefault(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.False(t, updatedFirst.IsDefault)
|
||||
|
||||
modelConfigs, err = client.ListChatModelConfigs(ctx)
|
||||
modelConfigs, err = expClient.ListChatModelConfigs(ctx)
|
||||
require.NoError(t, err)
|
||||
firstStored = findChatModelConfigByID(t, modelConfigs, firstModel.ID)
|
||||
secondStored = findChatModelConfigByID(t, modelConfigs, secondModel.ID)
|
||||
|
||||
Reference in New Issue
Block a user