(t *testing.T)
| 90 | } |
| 91 | |
| 92 | func TestShouldActivateChainMode(t *testing.T) { |
| 93 | t.Parallel() |
| 94 | |
| 95 | modelConfigID := uuid.New() |
| 96 | baseInfo := chatopenai.ResolveChainMode([]database.ChatMessage{ |
| 97 | chainModeSystemMessage(), |
| 98 | chainModeUserMessage("prior user message"), |
| 99 | chainModeAssistantMessage(modelConfigID, nil), |
| 100 | chainModeUserMessage("latest user message"), |
| 101 | }) |
| 102 | |
| 103 | localCall := codersdk.ChatMessageToolCall( |
| 104 | "call-local", |
| 105 | "read_file", |
| 106 | json.RawMessage(`{"path":"main.go"}`), |
| 107 | ) |
| 108 | unresolvedLocalInfo := chatopenai.ResolveChainMode([]database.ChatMessage{ |
| 109 | chainModeSystemMessage(), |
| 110 | chainModeUserMessage("prior user message"), |
| 111 | chainModeAssistantMessage(modelConfigID, []codersdk.ChatMessagePart{localCall}), |
| 112 | chainModeUserMessage("latest user message"), |
| 113 | }) |
| 114 | localResult := codersdk.ChatMessageToolResult( |
| 115 | "call-local", |
| 116 | "read_file", |
| 117 | json.RawMessage(`{"ok":true}`), |
| 118 | false, |
| 119 | false, |
| 120 | ) |
| 121 | missingToolResultsInfo := chatopenai.ResolveChainMode([]database.ChatMessage{ |
| 122 | chainModeSystemMessage(), |
| 123 | chainModeUserMessage("prior user message"), |
| 124 | chainModeAssistantMessage(modelConfigID, []codersdk.ChatMessagePart{localCall}), |
| 125 | chainModeToolMessage([]codersdk.ChatMessagePart{localResult}), |
| 126 | chainModeUserMessage("latest user message"), |
| 127 | }) |
| 128 | skillOnlyInfo := chatopenai.ResolveChainMode([]database.ChatMessage{ |
| 129 | chainModeSystemMessage(), |
| 130 | chainModeUserMessage("prior user message"), |
| 131 | chainModeAssistantMessage(modelConfigID, nil), |
| 132 | chainModeSkillOnlyUserMessage(), |
| 133 | }) |
| 134 | missingResponseInfo := chatopenai.ResolveChainMode([]database.ChatMessage{ |
| 135 | chainModeSystemMessage(), |
| 136 | chainModeUserMessage("prior user message"), |
| 137 | chainModeAssistantMessageWithoutResponse(modelConfigID), |
| 138 | chainModeUserMessage("latest user message"), |
| 139 | }) |
| 140 | |
| 141 | tests := []struct { |
| 142 | name string |
| 143 | providerOpts fantasy.ProviderOptions |
| 144 | info chatopenai.ChainModeInfo |
| 145 | modelConfigID uuid.UUID |
| 146 | isPlanModeTurn bool |
| 147 | want bool |
| 148 | }{ |
| 149 | { |
nothing calls this directly
no test coverage detected