MCPcopy Create free account
hub / github.com/adcontextprotocol/adcp / buildThreadContext

Function buildThreadContext

server/src/routes/tavus.ts:175–197  ·  view source on GitHub ↗

* Build conversation context from OpenAI-format message history. * Skips system messages — Addie uses her own DB-sourced system prompt.

(
  messages: RawMessage[]
)

Source from the content-addressed store, hash-verified

173 * Skips system messages — Addie uses her own DB-sourced system prompt.
174 */
175function buildThreadContext(
176 messages: RawMessage[]
177): { currentMessage: string; threadContext: Array<{ user: string; text: string }> } | null {
178 const chatMessages = messages
179 .filter((m) => m.role === "user" || m.role === "assistant")
180 .map((m) => ({ role: m.role, content: extractText(m.content) }));
181
182 let lastUserIdx = -1;
183 for (let i = chatMessages.length - 1; i >= 0; i--) {
184 if (chatMessages[i].role === "user") { lastUserIdx = i; break; }
185 }
186 if (lastUserIdx === -1) return null;
187
188 const currentMessage = chatMessages[lastUserIdx].content;
189 const history = chatMessages.slice(0, lastUserIdx);
190
191 const threadContext = history.slice(-10).map((m) => ({
192 user: m.role === "user" ? "User" : "Addie",
193 text: m.content,
194 }));
195
196 return { currentMessage, threadContext };
197}
198
199/**
200 * Build user-scoped tools for a voice call, matching the web chat tool set.

Callers 1

createTavusRouterFunction · 0.85

Calls 1

extractTextFunction · 0.70

Tested by

no test coverage detected