mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: chatd refactor (#26270)
Implements the chatd stabilization RFC. Combines: - https://github.com/coder/coder/pull/25908 - https://github.com/coder/coder/pull/25923 - https://github.com/coder/coder/pull/26109 - https://github.com/coder/coder/pull/26110 - https://github.com/coder/coder/pull/26111 - https://github.com/coder/coder/pull/26112
This commit is contained in:
@@ -11063,10 +11063,12 @@ func TestInsertChatMessages(t *testing.T) {
|
||||
|
||||
insertMessage := func(t *testing.T, store database.Store, ctx context.Context, chatID, userID, modelConfigID uuid.UUID, content string) {
|
||||
t.Helper()
|
||||
apiKey, _ := dbgen.APIKey(t, store, database.APIKey{ID: uuid.NewString(), UserID: userID})
|
||||
|
||||
_, err := store.InsertChatMessages(ctx, database.InsertChatMessagesParams{
|
||||
ChatID: chatID,
|
||||
CreatedBy: []uuid.UUID{userID},
|
||||
APIKeyID: []string{apiKey.ID},
|
||||
ModelConfigID: []uuid.UUID{modelConfigID},
|
||||
Role: []database.ChatMessageRole{database.ChatMessageRoleUser},
|
||||
ContentVersion: []int16{chatprompt.CurrentContentVersion},
|
||||
@@ -11125,10 +11127,12 @@ func TestInsertChatMessages(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
store, ctx, user, chat, _, modelConfigA := setupChat(t)
|
||||
apiKey, _ := dbgen.APIKey(t, store, database.APIKey{ID: uuid.NewString(), UserID: user.ID})
|
||||
|
||||
msgs, err := store.InsertChatMessages(ctx, database.InsertChatMessagesParams{
|
||||
ChatID: chat.ID,
|
||||
CreatedBy: []uuid.UUID{user.ID, uuid.Nil, uuid.Nil},
|
||||
APIKeyID: []string{apiKey.ID, "", ""},
|
||||
ModelConfigID: []uuid.UUID{modelConfigA.ID, modelConfigA.ID, modelConfigA.ID},
|
||||
Role: []database.ChatMessageRole{database.ChatMessageRoleUser, database.ChatMessageRoleAssistant, database.ChatMessageRoleTool},
|
||||
ContentVersion: []int16{chatprompt.CurrentContentVersion, chatprompt.CurrentContentVersion, chatprompt.CurrentContentVersion},
|
||||
@@ -12744,9 +12748,9 @@ func TestUpdateChatLastTurnSummary(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
affected, err := db.UpdateChatLastTurnSummary(ctx, database.UpdateChatLastTurnSummaryParams{
|
||||
ID: chat.ID,
|
||||
ExpectedUpdatedAt: chat.UpdatedAt,
|
||||
LastTurnSummary: sql.NullString{String: "resolved the issue", Valid: true},
|
||||
ID: chat.ID,
|
||||
ExpectedHistoryVersion: chat.HistoryVersion,
|
||||
LastTurnSummary: sql.NullString{String: "resolved the issue", Valid: true},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.EqualValues(t, 1, affected)
|
||||
@@ -12757,9 +12761,9 @@ func TestUpdateChatLastTurnSummary(t *testing.T) {
|
||||
require.Equal(t, chat.UpdatedAt, fetched.UpdatedAt)
|
||||
|
||||
affected, err = db.UpdateChatLastTurnSummary(ctx, database.UpdateChatLastTurnSummaryParams{
|
||||
ID: chat.ID,
|
||||
ExpectedUpdatedAt: chat.UpdatedAt,
|
||||
LastTurnSummary: sql.NullString{String: " \n\t ", Valid: true},
|
||||
ID: chat.ID,
|
||||
ExpectedHistoryVersion: chat.HistoryVersion,
|
||||
LastTurnSummary: sql.NullString{String: " \n\t ", Valid: true},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.EqualValues(t, 1, affected)
|
||||
@@ -12770,9 +12774,9 @@ func TestUpdateChatLastTurnSummary(t *testing.T) {
|
||||
require.Equal(t, chat.UpdatedAt, fetched.UpdatedAt)
|
||||
|
||||
affected, err = db.UpdateChatLastTurnSummary(ctx, database.UpdateChatLastTurnSummaryParams{
|
||||
ID: chat.ID,
|
||||
ExpectedUpdatedAt: chat.UpdatedAt,
|
||||
LastTurnSummary: sql.NullString{String: "fresh summary", Valid: true},
|
||||
ID: chat.ID,
|
||||
ExpectedHistoryVersion: chat.HistoryVersion,
|
||||
LastTurnSummary: sql.NullString{String: "fresh summary", Valid: true},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.EqualValues(t, 1, affected)
|
||||
@@ -12786,17 +12790,54 @@ func TestUpdateChatLastTurnSummary(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
affected, err = db.UpdateChatLastTurnSummary(ctx, database.UpdateChatLastTurnSummaryParams{
|
||||
ID: chat.ID,
|
||||
ExpectedUpdatedAt: chat.UpdatedAt,
|
||||
LastTurnSummary: sql.NullString{String: "stale summary", Valid: true},
|
||||
ID: chat.ID,
|
||||
ExpectedHistoryVersion: chat.HistoryVersion,
|
||||
LastTurnSummary: sql.NullString{String: "still fresh summary", Valid: true},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.EqualValues(t, 1, affected)
|
||||
|
||||
fetched, err = db.GetChatByID(ctx, chat.ID)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, sql.NullString{String: "still fresh summary", Valid: true}, fetched.LastTurnSummary)
|
||||
require.Equal(t, advancedUpdatedAt, fetched.UpdatedAt)
|
||||
|
||||
_, err = db.LockChatAndBumpSnapshotVersion(ctx, chat.ID)
|
||||
require.NoError(t, err)
|
||||
_, err = db.InsertChatMessages(ctx, database.InsertChatMessagesParams{
|
||||
ChatID: chat.ID,
|
||||
CreatedBy: []uuid.UUID{owner.ID},
|
||||
ModelConfigID: []uuid.UUID{modelCfg.ID},
|
||||
Role: []database.ChatMessageRole{database.ChatMessageRoleUser},
|
||||
Content: []string{`[{"type":"text","text":"new request"}]`},
|
||||
ContentVersion: []int16{chatprompt.CurrentContentVersion},
|
||||
Visibility: []database.ChatMessageVisibility{database.ChatMessageVisibilityBoth},
|
||||
InputTokens: []int64{0},
|
||||
OutputTokens: []int64{0},
|
||||
TotalTokens: []int64{0},
|
||||
ReasoningTokens: []int64{0},
|
||||
CacheCreationTokens: []int64{0},
|
||||
CacheReadTokens: []int64{0},
|
||||
ContextLimit: []int64{0},
|
||||
Compressed: []bool{false},
|
||||
TotalCostMicros: []int64{0},
|
||||
RuntimeMs: []int64{0},
|
||||
ProviderResponseID: []string{""},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
affected, err = db.UpdateChatLastTurnSummary(ctx, database.UpdateChatLastTurnSummaryParams{
|
||||
ID: chat.ID,
|
||||
ExpectedHistoryVersion: chat.HistoryVersion,
|
||||
LastTurnSummary: sql.NullString{String: "stale summary", Valid: true},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.Zero(t, affected)
|
||||
|
||||
fetched, err = db.GetChatByID(ctx, chat.ID)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, sql.NullString{String: "fresh summary", Valid: true}, fetched.LastTurnSummary)
|
||||
require.Equal(t, advancedUpdatedAt, fetched.UpdatedAt)
|
||||
require.Equal(t, sql.NullString{String: "still fresh summary", Valid: true}, fetched.LastTurnSummary)
|
||||
require.NotEqual(t, chat.HistoryVersion, fetched.HistoryVersion)
|
||||
}
|
||||
|
||||
func TestDeleteChatDebugDataAfterMessageIDIncludesTriggeredRuns(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user