MCPcopy Create free account
hub / github.com/FIND-Lab/AgentWard / buildJudgeInput

Function buildJudgeInput

layers/decision-alignment.ts:68–98  ·  view source on GitHub ↗
(state: SessionState, assistantMessage: unknown)

Source from the content-addressed store, hash-verified

66}
67
68function buildJudgeInput(state: SessionState, assistantMessage: unknown): string {
69 const messages = [...(state.historyMessages ?? []), ...(state.currentMessages ?? [])]
70 .map(asMessage)
71 .filter((message): message is Record<string, unknown> => message !== null);
72
73 let userIntent = "No clear user request found.";
74 for (let i = messages.length - 1; i >= 0; i--) {
75 if (messages[i].role === "user") {
76 userIntent = shortText(messages[i].content);
77 break;
78 }
79 }
80
81 const recentContext = messages.length === 0
82 ? "- none"
83 : messages.slice(-MAX_CONTEXT_MESSAGES).map((message) => `- ${summarizeMessage(message)}`).join("\n");
84
85 const target = asMessage(assistantMessage);
86 const targetSummary = target ? summarizeMessage(target) : `assistant: ${shortText(assistantMessage)}`;
87
88 return [
89 "Current user intent:",
90 userIntent,
91 "",
92 "Recent context:",
93 recentContext,
94 "",
95 "Last assistant message to judge:",
96 targetSummary,
97 ].join("\n");
98}
99
100function normalizeJudgeResponse(response: string): { blocked: boolean; text: string } {
101 const verdict = response.match(/VERDICT\s*:\s*(OK|BLOCKED)/i)?.[1]?.toUpperCase() ?? "OK";

Callers 1

decisionAlignmentDetectFunction · 0.85

Calls 3

shortTextFunction · 0.85
summarizeMessageFunction · 0.85
asMessageFunction · 0.85

Tested by

no test coverage detected