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

Function prepareRequestWithMemberTools

server/src/routes/addie-chat.ts:445–654  ·  view source on GitHub ↗
(
  sanitizedInput: string,
  userId: string | undefined,
  threadExternalId: string,
  isAuthenticated: boolean,
  threadId?: string
)

Source from the content-addressed store, hash-verified

443 * Also retrieves relevant SI agents for RAG-style context injection
444 */
445export async function prepareRequestWithMemberTools(
446 sanitizedInput: string,
447 userId: string | undefined,
448 threadExternalId: string,
449 isAuthenticated: boolean,
450 threadId?: string
451): Promise<PreparedRequest> {
452 const messageToProcess = sanitizedInput;
453 let memberContext: MemberContext | null = null;
454 let siRetrievalTimeMs: number | null = null;
455
456 // Run member context fetch and SI retrieval in parallel
457 const [memberContextResult, siRetrievalResult] = await Promise.all([
458 // Get member context
459 (async () => {
460 try {
461 if (userId) {
462 return await getWebMemberContext(userId);
463 }
464 return null;
465 } catch (error) {
466 logger.warn({ error, userId }, "Addie Chat: Failed to get member context");
467 return null;
468 }
469 })(),
470 // Retrieve relevant SI agents
471 siRetriever.retrieve(sanitizedInput),
472 ]);
473
474 memberContext = memberContextResult;
475 siRetrievalTimeMs = siRetrievalResult.retrieval_time_ms;
476
477 // Build per-request context for system prompt (member info, SI agents)
478 const contextSections: string[] = [];
479
480 if (memberContext) {
481 const memberContextText = formatMemberContextForPrompt(memberContext, 'web');
482 if (memberContextText) {
483 contextSections.push(memberContextText);
484 logger.debug(
485 { userId, hasContext: true, orgName: memberContext.organization?.name },
486 "Addie Chat: Added member context"
487 );
488 }
489 } else {
490 const anonymousContext = { is_mapped: false, is_member: false, slack_linked: false };
491 const memberContextText = formatMemberContextForPrompt(anonymousContext, 'web');
492 if (memberContextText) {
493 contextSections.push(memberContextText);
494 logger.debug("Addie Chat: Added anonymous web context");
495 }
496 }
497
498 // Include SI agent context if relevant agents were found
499 if (siRetrievalResult.agents.length > 0) {
500 const siContext = siRetriever.formatContext(siRetrievalResult.agents);
501 contextSections.push(siContext);
502 logger.debug(

Callers 2

createAddieChatRouterFunction · 0.85
handleEmailConversationFunction · 0.85

Calls 15

getWebMemberContextFunction · 0.85
createMemberToolHandlersFunction · 0.85
createSiHostToolHandlersFunction · 0.85
createAdcpToolHandlersFunction · 0.85
createImageToolHandlersFunction · 0.85
isWebUserAAOAdminFunction · 0.85

Tested by

no test coverage detected