MCPcopy Create free account
hub / github.com/coder/coder / CollectContextPartsFromMessages

Function CollectContextPartsFromMessages

coderd/x/chatd/contextparts.go:50–78  ·  view source on GitHub ↗

CollectContextPartsFromMessages unmarshals chat message content and collects the context-file and skill parts it contains. When keepEmptyContextFiles is false, empty context-file parts are skipped. When it is true, empty context-file parts are included in the result.

(
	ctx context.Context,
	logger slog.Logger,
	messages []database.ChatMessage,
	keepEmptyContextFiles bool,
)

Source from the content-addressed store, hash-verified

48// keepEmptyContextFiles is false, empty context-file parts are skipped.
49// When it is true, empty context-file parts are included in the result.
50func CollectContextPartsFromMessages(
51 ctx context.Context,
52 logger slog.Logger,
53 messages []database.ChatMessage,
54 keepEmptyContextFiles bool,
55) ([]codersdk.ChatMessagePart, error) {
56 var collected []codersdk.ChatMessagePart
57 for _, msg := range messages {
58 if !msg.Content.Valid {
59 continue
60 }
61
62 var parts []codersdk.ChatMessagePart
63 if err := json.Unmarshal(msg.Content.RawMessage, &parts); err != nil {
64 logger.Warn(ctx, "skipping malformed chat context message",
65 slog.F("chat_message_id", msg.ID),
66 slog.Error(err),
67 )
68 continue
69 }
70
71 collected = append(
72 collected,
73 FilterContextParts(parts, keepEmptyContextFiles)...,
74 )
75 }
76
77 return collected, nil
78}
79
80func latestContextAgentIDFromParts(parts []codersdk.ChatMessagePart) (uuid.UUID, bool) {
81 var lastID uuid.UUID

Calls 3

FilterContextPartsFunction · 0.85
UnmarshalMethod · 0.45
ErrorMethod · 0.45