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