MCPcopy Index your code
hub / github.com/coder/coder / runChat

Method runChat

coderd/x/chatd/chatd.go:7099–8424  ·  view source on GitHub ↗
(
	ctx context.Context,
	chat database.Chat,
	generatedTitle *generatedChatTitle,
	logger slog.Logger,
)

Source from the content-addressed store, hash-verified

7097}
7098
7099func (p *Server) runChat(
7100 ctx context.Context,
7101 chat database.Chat,
7102 generatedTitle *generatedChatTitle,
7103 logger slog.Logger,
7104) (runChatResult, error) {
7105 result := runChatResult{}
7106 var (
7107 model fantasy.LanguageModel
7108 modelConfig database.ChatModelConfig
7109 providerKeys chatprovider.ProviderAPIKeys
7110 callConfig codersdk.ChatModelCallConfig
7111 messages []database.ChatMessage
7112 err error
7113 debugEnabled bool
7114 debugProvider string
7115 modelRoute resolvedModelRoute
7116 debugModel string
7117 )
7118
7119 messages, err = p.db.GetChatMessagesForPromptByChatID(ctx, chat.ID)
7120 if err != nil {
7121 return result, xerrors.Errorf("get chat messages: %w", err)
7122 }
7123 modelOpts := modelBuildOptionsFromMessages(messages)
7124 if modelOpts.ActiveAPIKeyID != "" {
7125 ctx = aibridge.WithDelegatedAPIKeyID(ctx, modelOpts.ActiveAPIKeyID)
7126 }
7127
7128 // Load MCP server configs and user tokens in parallel with model
7129 // resolution. These queries have no dependencies on each other and all
7130 // hit different tables.
7131 var (
7132 mcpConfigs []database.MCPServerConfig
7133 mcpTokens []database.MCPServerUserToken
7134 )
7135 var g errgroup.Group
7136 g.Go(func() error {
7137 var err error
7138 model, modelConfig, providerKeys, modelRoute, debugEnabled, debugProvider, debugModel, err = p.resolveChatModel(ctx, chat, modelOpts)
7139 if err != nil {
7140 return err
7141 }
7142 if len(modelConfig.Options) > 0 {
7143 if err := json.Unmarshal(modelConfig.Options, &callConfig); err != nil {
7144 return xerrors.Errorf("parse model call config: %w", err)
7145 }
7146 }
7147 return nil
7148 })
7149 if len(chat.MCPServerIDs) > 0 {
7150 g.Go(func() error {
7151 var err error
7152 mcpConfigs, err = p.db.GetMCPServerConfigsByIDs(
7153 ctx, chat.MCPServerIDs,
7154 )
7155 if err != nil {
7156 logger.Warn(ctx,

Callers 1

processChatMethod · 0.95

Calls 15

resolveChatModelMethod · 0.95
loadAdvisorConfigMethod · 0.95
newAdvisorRuntimeMethod · 0.95
existingDebugServiceMethod · 0.95
closeMethod · 0.95
getWorkspaceConnMethod · 0.95
getWorkspaceAgentMethod · 0.95
chatFileResolverMethod · 0.95

Tested by

no test coverage detected