fix(chat): hide raw permission metadata
This commit is contained in:
@@ -24,6 +24,7 @@ import {
|
||||
isPermissionV2AskedEvent,
|
||||
isPermissionV2RepliedEvent,
|
||||
isQuestionAskedEvent,
|
||||
isObjectRecord,
|
||||
isQuestionRejectedEvent,
|
||||
isQuestionRepliedEvent,
|
||||
isQuestionV2AskedEvent,
|
||||
@@ -84,6 +85,19 @@ type ProgressPayload = {
|
||||
detail?: string;
|
||||
};
|
||||
|
||||
const getPermissionTarget = (metadata: unknown) => {
|
||||
if (!isObjectRecord(metadata)) {
|
||||
return undefined;
|
||||
}
|
||||
for (const key of ["command", "path", "file", "filepath", "directory"]) {
|
||||
const value = metadata[key];
|
||||
if (typeof value === "string" && value.trim()) {
|
||||
return value.trim();
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
|
||||
const toRuntimeModel = (model?: SupportedModel) => {
|
||||
if (!model) {
|
||||
return undefined;
|
||||
@@ -398,7 +412,7 @@ export const streamPromptResponse = async ({
|
||||
request_id: event.properties.id,
|
||||
permission: event.properties.permission,
|
||||
patterns: event.properties.patterns,
|
||||
metadata: event.properties.metadata,
|
||||
target: getPermissionTarget(event.properties.metadata),
|
||||
always: event.properties.always,
|
||||
tool: event.properties.tool,
|
||||
created_at: Date.now(),
|
||||
@@ -443,7 +457,7 @@ export const streamPromptResponse = async ({
|
||||
request_id: event.properties.id,
|
||||
permission: event.properties.action,
|
||||
patterns: event.properties.resources,
|
||||
metadata: event.properties.metadata ?? {},
|
||||
target: getPermissionTarget(event.properties.metadata),
|
||||
always: event.properties.save ?? [],
|
||||
tool: undefined,
|
||||
created_at: Date.now(),
|
||||
|
||||
@@ -8,7 +8,7 @@ export type PermissionRequestPayload = {
|
||||
request_id: string;
|
||||
permission: string;
|
||||
patterns: string[];
|
||||
metadata: Record<string, unknown>;
|
||||
target?: string;
|
||||
always: string[];
|
||||
tool?: {
|
||||
messageID: string;
|
||||
|
||||
@@ -204,7 +204,7 @@ export const toFrontendPermission = (
|
||||
sessionId: payload.session_id,
|
||||
permission: payload.permission,
|
||||
patterns: payload.patterns,
|
||||
metadata: payload.metadata,
|
||||
target: payload.target,
|
||||
always: payload.always,
|
||||
tool: payload.tool,
|
||||
createdAt: payload.created_at,
|
||||
|
||||
@@ -56,7 +56,7 @@ describe("streamPromptResponse", () => {
|
||||
request_id: "perm-1",
|
||||
permission: "bash",
|
||||
patterns: ["rm *"],
|
||||
metadata: { command: "rm tmp.txt" },
|
||||
target: "rm tmp.txt",
|
||||
always: ["rm *"],
|
||||
} satisfies Partial<PermissionRequestPayload>);
|
||||
});
|
||||
@@ -157,7 +157,7 @@ describe("streamPromptResponse", () => {
|
||||
request_id: "perm-v2-1",
|
||||
permission: "external_directory",
|
||||
patterns: ["/tmp"],
|
||||
metadata: { path: "/tmp" },
|
||||
target: "/tmp",
|
||||
always: ["/tmp"],
|
||||
} satisfies Partial<PermissionRequestPayload>);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user