feat(protocol): add DiffPreview type and wire into can_use_tool emission (#1151)

Co-authored-by: Letta <noreply@letta.com>
This commit is contained in:
Charles Packer
2026-02-25 18:44:54 -08:00
committed by GitHub
parent c8fb2cc3b1
commit 3b2b9ca776
4 changed files with 434 additions and 0 deletions

View File

@@ -73,6 +73,7 @@ import {
validateRegistryHandleOrThrow,
} from "./cli/startupFlagValidation";
import { SYSTEM_REMINDER_CLOSE, SYSTEM_REMINDER_OPEN } from "./constants";
import { computeDiffPreviews } from "./helpers/diffPreview";
import {
mergeQueuedTurnInput,
type QueuedTurnInput,
@@ -2548,6 +2549,9 @@ async function runBidirectionalMode(
}> {
const requestId = `perm-${toolCallId}`;
// Compute diff previews for file-modifying tools
const diffs = await computeDiffPreviews(toolName, toolInput);
// Build can_use_tool control request (Claude SDK format)
const canUseToolRequest: CanUseToolControlRequest = {
subtype: "can_use_tool",
@@ -2556,6 +2560,7 @@ async function runBidirectionalMode(
tool_call_id: toolCallId, // Letta-specific
permission_suggestions: [], // TODO: not implemented
blocked_path: null, // TODO: not implemented
...(diffs.length > 0 ? { diffs } : {}),
};
const controlRequest: ControlRequest = {