MCPcopy Index your code
hub / github.com/Dimillian/CodexMonitor / mergeUserInputQuestions

Function mergeUserInputQuestions

src/utils/threadItems.listOps.ts:4–26  ·  view source on GitHub ↗
(
  existing: Extract<ConversationItem, { kind: "userInput" }>["questions"],
  incoming: Extract<ConversationItem, { kind: "userInput" }>["questions"],
)

Source from the content-addressed store, hash-verified

2import { normalizeThreadTimestamp } from "./threadItems.shared";
3
4function mergeUserInputQuestions(
5 existing: Extract<ConversationItem, { kind: "userInput" }>["questions"],
6 incoming: Extract<ConversationItem, { kind: "userInput" }>["questions"],
7) {
8 const existingById = new Map(existing.map((question) => [question.id, question]));
9 const merged = incoming.map((question) => {
10 const prior = existingById.get(question.id);
11 if (!prior) {
12 return question;
13 }
14 const incomingHasAnswers = question.answers.length > 0;
15 return {
16 ...prior,
17 ...question,
18 header: question.header.trim() ? question.header : prior.header,
19 question: question.question.trim() ? question.question : prior.question,
20 answers: incomingHasAnswers ? question.answers : prior.answers,
21 };
22 });
23 const incomingIds = new Set(incoming.map((question) => question.id));
24 const missingExisting = existing.filter((question) => !incomingIds.has(question.id));
25 return [...merged, ...missingExisting];
26}
27
28export function upsertItem(list: ConversationItem[], item: ConversationItem) {
29 const index = list.findIndex((entry) => entry.id === item.id);

Callers 1

upsertItemFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected