fix(chat): hide raw permission metadata
Agent CI/CD / docker-image (push) Successful in 2m38s
Agent CI/CD / deploy-fallback-log (push) Has been skipped

This commit is contained in:
2026-06-08 20:12:08 +08:00
parent 60b9080c47
commit 8ed73b1da6
4 changed files with 20 additions and 6 deletions
+16 -2
View File
@@ -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(),
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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,
+2 -2
View File
@@ -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>);
}); });