fix: enforce Claude CLI MCP admission and safe continuation

This commit is contained in:
amosblomqvist
2026-10-28 08:01:50 +02:00
parent 812ea23419
commit 6ca431644d
13 changed files with 534 additions and 201 deletions
+27
View File
@@ -0,0 +1,27 @@
import type { Api, Message, Model, TranscriptContext } from "@earendil-works/pi-ai";
import { getCurrentSystemPrompt, getCurrentTools } from "@earendil-works/pi-ai/utils/transcript";
/** Compare model-visible history, not app IDs, timestamps, usage, or Pi's added thinkingLevel. */
export function conversationForReuse(messages: Message[]): unknown[] {
return messages.flatMap((message): unknown[] => {
switch (message.role) {
case "system": return [];
case "user": return [{ role: message.role, content: message.content }];
case "assistant": return [{ role: message.role, content: message.content }];
case "toolResult": return [{
role: message.role,
toolCallId: message.toolCallId,
toolName: message.toolName,
content: message.content,
isError: message.isError,
}];
}
});
}
export function configurationForReuse(model: Model<Api>, context: TranscriptContext, effort: string): unknown {
const systemPrompt = getCurrentSystemPrompt(context.messages);
const tools = getCurrentTools(context.messages);
// The wire is JSON: TypeBox's schema symbols are not CLI configuration.
return JSON.parse(JSON.stringify({ model, effort, systemPrompt, tools })) as unknown;
}