@@ -48,7 +48,7 @@ func (c *agent) handleTitleGeneration(ctx context.Context, sessionID, content st
51− session, err := c.Sessions.Get(sessionID)
51+ session, err := c.Sessions.Get(ctx, sessionID)
52 if err != nil {
52 if err != nil {
@@ -56,12 +56,12 @@ func (c *agent) handleTitleGeneration(ctx context.Context, sessionID, content st
56 session.Title = response.Content
56 session.Title = response.Content
57 session.Title = strings.TrimSpace(session.Title)
57 session.Title = strings.TrimSpace(session.Title)
58 session.Title = strings.ReplaceAll(session.Title, "\n", " ")
58 session.Title = strings.ReplaceAll(session.Title, "\n", " ")
59− c.Sessions.Save(session)
59+ c.Sessions.Save(ctx, session)
63−func (c *agent) TrackUsage(sessionID string, model models.Model, usage provider.TokenUsage) error {
63+func (c *agent) TrackUsage(ctx context.Context, sessionID string, model models.Model, usage provider.TokenUsage) error {
64− session, err := c.Sessions.Get(sessionID)
64+ session, err := c.Sessions.Get(ctx, sessionID)
65 if err != nil {
65 if err != nil {
66 return err
66 return err
@@ -75,11 +75,12 @@ func (c *agent) TrackUsage(sessionID string, model models.Model, usage provider.
75 session.CompletionTokens += usage.OutputTokens
75 session.CompletionTokens += usage.OutputTokens
76 session.PromptTokens += usage.InputTokens
76 session.PromptTokens += usage.InputTokens
78− _, err = c.Sessions.Save(session)
78+ _, err = c.Sessions.Save(ctx, session)
79 return err
79 return err
82func (c *agent) processEvent(
82func (c *agent) processEvent(
83 sessionID string,
84 sessionID string,
84 assistantMsg *message.Message,
85 assistantMsg *message.Message,
85 event provider.ProviderEvent,
86 event provider.ProviderEvent,
@@ -87,10 +88,10 @@ func (c *agent) processEvent(
87 switch event.Type {
88 switch event.Type {
88 case provider.EventThinkingDelta:
89 case provider.EventThinkingDelta:
89 assistantMsg.AppendReasoningContent(event.Content)
90 assistantMsg.AppendReasoningContent(event.Content)
90− return c.Messages.Update(*assistantMsg)
91+ return c.Messages.Update(ctx, *assistantMsg)
91 case provider.EventContentDelta:
92 case provider.EventContentDelta:
92 assistantMsg.AppendContent(event.Content)
93 assistantMsg.AppendContent(event.Content)
93− return c.Messages.Update(*assistantMsg)
94+ return c.Messages.Update(ctx, *assistantMsg)
94 case provider.EventError:
95 case provider.EventError:
95 if errors.Is(event.Error, context.Canceled) {
96 if errors.Is(event.Error, context.Canceled) {
96 return nil
97 return nil
@@ -105,11 +106,11 @@ func (c *agent) processEvent(
105 case provider.EventComplete:
106 case provider.EventComplete:
106 assistantMsg.SetToolCalls(event.Response.ToolCalls)
107 assistantMsg.SetToolCalls(event.Response.ToolCalls)
107 assistantMsg.AddFinish(event.Response.FinishReason)
108 assistantMsg.AddFinish(event.Response.FinishReason)
108− err := c.Messages.Update(*assistantMsg)
109+ err := c.Messages.Update(ctx, *assistantMsg)
109 if err != nil {
110 if err != nil {
110 return err
111 return err
112− return c.TrackUsage(sessionID, c.model, event.Response.Usage)
113+ return c.TrackUsage(ctx, sessionID, c.model, event.Response.Usage)
115 return nil
116 return nil
@@ -237,7 +238,7 @@ func (c *agent) handleToolExecution(
237 for _, toolResult := range toolResults {
238 for _, toolResult := range toolResults {
238 parts = append(parts, toolResult)
239 parts = append(parts, toolResult)
240− msg, err := c.Messages.Create(assistantMsg.SessionID, message.CreateMessageParams{
241+ msg, err := c.Messages.Create(ctx, assistantMsg.SessionID, message.CreateMessageParams{
241 Role: message.Tool,
242 Role: message.Tool,
242 Parts: parts,
243 Parts: parts,
@@ -247,7 +248,7 @@ func (c *agent) handleToolExecution(
248func (c *agent) generate(ctx context.Context, sessionID string, content string) error {
249func (c *agent) generate(ctx context.Context, sessionID string, content string) error {
249 ctx = context.WithValue(ctx, tools.SessionIDContextKey, sessionID)
250 ctx = context.WithValue(ctx, tools.SessionIDContextKey, sessionID)
250− messages, err := c.Messages.List(sessionID)
251+ messages, err := c.Messages.List(ctx, sessionID)
251 if err != nil {
252 if err != nil {
252 return err
253 return err
@@ -256,7 +257,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
256 go c.handleTitleGeneration(ctx, sessionID, content)
257 go c.handleTitleGeneration(ctx, sessionID, content)
259− userMsg, err := c.Messages.Create(sessionID, message.CreateMessageParams{
260+ userMsg, err := c.Messages.Create(ctx, sessionID, message.CreateMessageParams{
260 Role: message.User,
261 Role: message.User,
261 Parts: []message.ContentPart{
262 Parts: []message.ContentPart{
262 message.TextContent{
263 message.TextContent{
@@ -272,7 +273,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
274 case <-ctx.Done():
275 case <-ctx.Done():
275− assistantMsg, err := c.Messages.Create(sessionID, message.CreateMessageParams{
276+ assistantMsg, err := c.Messages.Create(ctx, sessionID, message.CreateMessageParams{
276 Role: message.Assistant,
277 Role: message.Assistant,
277 Parts: []message.ContentPart{},
278 Parts: []message.ContentPart{},
@@ -280,7 +281,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
280 return err
281 return err
282 assistantMsg.AddFinish("canceled")
283 assistantMsg.AddFinish("canceled")
283− c.Messages.Update(assistantMsg)
284+ c.Messages.Update(ctx, assistantMsg)
284 return context.Canceled
285 return context.Canceled
286 // Continue processing
287 // Continue processing
@@ -289,7 +290,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
289 eventChan, err := c.agent.StreamResponse(ctx, messages, c.tools)
290 eventChan, err := c.agent.StreamResponse(ctx, messages, c.tools)
290 if err != nil {
291 if err != nil {
291 if errors.Is(err, context.Canceled) {
292 if errors.Is(err, context.Canceled) {
292− assistantMsg, err := c.Messages.Create(sessionID, message.CreateMessageParams{
293+ assistantMsg, err := c.Messages.Create(ctx, sessionID, message.CreateMessageParams{
293 Role: message.Assistant,
294 Role: message.Assistant,
294 Parts: []message.ContentPart{},
295 Parts: []message.ContentPart{},
@@ -297,13 +298,13 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
297 return err
298 return err
299 assistantMsg.AddFinish("canceled")
300 assistantMsg.AddFinish("canceled")
300− c.Messages.Update(assistantMsg)
301+ c.Messages.Update(ctx, assistantMsg)
301 return context.Canceled
302 return context.Canceled
303 return err
304 return err
306− assistantMsg, err := c.Messages.Create(sessionID, message.CreateMessageParams{
307+ assistantMsg, err := c.Messages.Create(ctx, sessionID, message.CreateMessageParams{
307 Role: message.Assistant,
308 Role: message.Assistant,
308 Parts: []message.ContentPart{},
309 Parts: []message.ContentPart{},
309 Model: c.model.ID,
310 Model: c.model.ID,
@@ -314,22 +315,22 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
315 ctx = context.WithValue(ctx, tools.MessageIDContextKey, assistantMsg.ID)
316 ctx = context.WithValue(ctx, tools.MessageIDContextKey, assistantMsg.ID)
316 for event := range eventChan {
317 for event := range eventChan {
317− err = c.processEvent(sessionID, &assistantMsg, event)
318+ err = c.processEvent(ctx, sessionID, &assistantMsg, event)
318 if err != nil {
319 if err != nil {
319 if errors.Is(err, context.Canceled) {
320 if errors.Is(err, context.Canceled) {
320 assistantMsg.AddFinish("canceled")
321 assistantMsg.AddFinish("canceled")
321− c.Messages.Update(assistantMsg)
322+ c.Messages.Update(ctx, assistantMsg)
322 return context.Canceled
323 return context.Canceled
324 assistantMsg.AddFinish("error:" + err.Error())
325 assistantMsg.AddFinish("error:" + err.Error())
325− c.Messages.Update(assistantMsg)
326+ c.Messages.Update(ctx, assistantMsg)
326 return err
327 return err
330 case <-ctx.Done():
331 case <-ctx.Done():
331 assistantMsg.AddFinish("canceled")
332 assistantMsg.AddFinish("canceled")
332− c.Messages.Update(assistantMsg)
333+ c.Messages.Update(ctx, assistantMsg)
333 return context.Canceled
334 return context.Canceled
@@ -339,7 +340,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
340 case <-ctx.Done():
341 case <-ctx.Done():
341 assistantMsg.AddFinish("canceled")
342 assistantMsg.AddFinish("canceled")
342− c.Messages.Update(assistantMsg)
343+ c.Messages.Update(ctx, assistantMsg)
343 return context.Canceled
344 return context.Canceled
345 // Continue processing
346 // Continue processing
@@ -349,13 +350,13 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
349 if err != nil {
350 if err != nil {
350 if errors.Is(err, context.Canceled) {
351 if errors.Is(err, context.Canceled) {
351 assistantMsg.AddFinish("canceled")
352 assistantMsg.AddFinish("canceled")
352− c.Messages.Update(assistantMsg)
353+ c.Messages.Update(ctx, assistantMsg)
353 return context.Canceled
354 return context.Canceled
355 return err
356 return err
358− c.Messages.Update(assistantMsg)
359+ c.Messages.Update(ctx, assistantMsg)
360 if len(assistantMsg.ToolCalls()) == 0 {
361 if len(assistantMsg.ToolCalls()) == 0 {
@@ -370,7 +371,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
371 case <-ctx.Done():
372 case <-ctx.Done():
372 assistantMsg.AddFinish("canceled")
373 assistantMsg.AddFinish("canceled")
373− c.Messages.Update(assistantMsg)
374+ c.Messages.Update(ctx, assistantMsg)
374 return context.Canceled
375 return context.Canceled
376 // Continue processing
377 // Continue processing
@@ -383,7 +384,7 @@ func getAgentProviders(ctx context.Context, model models.Model) (provider.Provid
383 maxTokens := config.Get().Model.CoderMaxTokens
384 maxTokens := config.Get().Model.CoderMaxTokens
385 providerConfig, ok := config.Get().Providers[model.Provider]
386 providerConfig, ok := config.Get().Providers[model.Provider]
386− if !ok || !providerConfig.Enabled {
387+ if !ok || providerConfig.Disabled {
387 return nil, nil, errors.New("provider is not enabled")
388 return nil, nil, errors.New("provider is not enabled")
389 var agentProvider provider.Provider
390 var agentProvider provider.Provider