+ {toolParameters && Object.keys(toolParameters).length > 0 && (
+
+
+ {t('tools:toolApproval.parameters')}
+
+
+
+ {JSON.stringify(toolParameters, null, 2)}
+
+
+
+ )}
+
+
{t('tools:toolApproval.securityNotice')}
@@ -80,7 +93,7 @@ export default function ToolApproval() {
>
{t('tools:toolApproval.allowOnce')}
-
diff --git a/web-app/src/hooks/useToolApproval.ts b/web-app/src/hooks/useToolApproval.ts
index 0428c8ca43..5edc5dddc7 100644
--- a/web-app/src/hooks/useToolApproval.ts
+++ b/web-app/src/hooks/useToolApproval.ts
@@ -5,6 +5,7 @@ import { localStorageKey } from '@/constants/localStorage'
export type ToolApprovalModalProps = {
toolName: string
threadId: string
+ toolParameters?: object
onApprove: (allowOnce: boolean) => void
onDeny: () => void
}
@@ -21,7 +22,7 @@ type ToolApprovalState = {
// Actions
approveToolForThread: (threadId: string, toolName: string) => void
isToolApproved: (threadId: string, toolName: string) => boolean
- showApprovalModal: (toolName: string, threadId: string) => Promise
+ showApprovalModal: (toolName: string, threadId: string, toolParameters?: object) => Promise
closeModal: () => void
setModalOpen: (open: boolean) => void
setAllowAllMCPPermissions: (allow: boolean) => void
@@ -52,7 +53,7 @@ export const useToolApproval = create()(
return state.approvedTools[threadId]?.includes(toolName) || false
},
- showApprovalModal: (toolName: string, threadId: string) => {
+ showApprovalModal: (toolName: string, threadId: string, toolParameters?: object) => {
return new Promise((resolve) => {
// Check if tool is already approved for this thread
const state = get()
@@ -66,6 +67,7 @@ export const useToolApproval = create()(
modalProps: {
toolName,
threadId,
+ toolParameters,
onApprove: (allowOnce: boolean) => {
if (!allowOnce) {
// If not "allow once", add to approved tools for this thread
diff --git a/web-app/src/lib/completion.ts b/web-app/src/lib/completion.ts
index 5f5bb5c1c7..22ac724e97 100644
--- a/web-app/src/lib/completion.ts
+++ b/web-app/src/lib/completion.ts
@@ -329,7 +329,11 @@ export const postMessageProcessing = async (
message: ThreadMessage,
abortController: AbortController,
approvedTools: Record = {},
- showModal?: (toolName: string, threadId: string) => Promise,
+ showModal?: (
+ toolName: string,
+ threadId: string,
+ toolParameters?: object
+ ) => Promise,
allowAllMCPPermissions: boolean = false
) => {
// Handle completed tool calls
@@ -358,11 +362,23 @@ export const postMessageProcessing = async (
}
// Check if tool is approved or show modal for approval
+ let toolParameters = {}
+ if (toolCall.function.arguments.length) {
+ try {
+ toolParameters = JSON.parse(toolCall.function.arguments)
+ } catch (error) {
+ console.error('Failed to parse tool arguments:', error)
+ }
+ }
const approved =
allowAllMCPPermissions ||
approvedTools[message.thread_id]?.includes(toolCall.function.name) ||
(showModal
- ? await showModal(toolCall.function.name, message.thread_id)
+ ? await showModal(
+ toolCall.function.name,
+ message.thread_id,
+ toolParameters
+ )
: true)
let result = approved
diff --git a/web-app/src/locales/de-DE/tool-approval.json b/web-app/src/locales/de-DE/tool-approval.json
index b90c345a00..3303abaadd 100644
--- a/web-app/src/locales/de-DE/tool-approval.json
+++ b/web-app/src/locales/de-DE/tool-approval.json
@@ -7,5 +7,6 @@
"alwaysAllow": "Immer erlauben",
"permissions": "Berechtigungen",
"approve": "Genehmigen",
- "reject": "Ablehnen"
+ "reject": "Ablehnen",
+ "parameters": "Werkzeug-Parameter"
}
diff --git a/web-app/src/locales/de-DE/tools.json b/web-app/src/locales/de-DE/tools.json
index 7c678c94fb..4e7ebe2a45 100644
--- a/web-app/src/locales/de-DE/tools.json
+++ b/web-app/src/locales/de-DE/tools.json
@@ -5,6 +5,7 @@
"securityNotice": "Dieses Werkzeug möchte eine Aktion ausführen. Bitte überprüfen und genehmigen oder Ablehnen.",
"deny": "Ablehnen",
"allowOnce": "Einmal erlauben",
- "alwaysAllow": "Immer erlauben"
+ "alwaysAllow": "Immer erlauben",
+ "parameters": "Werkzeug-Parameter"
}
}
diff --git a/web-app/src/locales/en/tool-approval.json b/web-app/src/locales/en/tool-approval.json
index a954164256..f15e30c9b0 100644
--- a/web-app/src/locales/en/tool-approval.json
+++ b/web-app/src/locales/en/tool-approval.json
@@ -7,5 +7,6 @@
"alwaysAllow": "Always Allow",
"permissions": "Permissions",
"approve": "Approve",
- "reject": "Reject"
+ "reject": "Reject",
+ "parameters": "Tool Parameters"
}
\ No newline at end of file
diff --git a/web-app/src/locales/en/tools.json b/web-app/src/locales/en/tools.json
index da7f6ad66b..0a4691ea49 100644
--- a/web-app/src/locales/en/tools.json
+++ b/web-app/src/locales/en/tools.json
@@ -5,6 +5,7 @@
"securityNotice": "Malicious tools or conversation content could potentially trick the assistant into attempting harmful actions. Review each tool call carefully before approving.",
"deny": "Deny",
"allowOnce": "Allow Once",
- "alwaysAllow": "Always Allow"
+ "alwaysAllow": "Always Allow",
+ "parameters": "Tool Parameters"
}
}
diff --git a/web-app/src/locales/id/tool-approval.json b/web-app/src/locales/id/tool-approval.json
index 05714e9f08..3353b7626e 100644
--- a/web-app/src/locales/id/tool-approval.json
+++ b/web-app/src/locales/id/tool-approval.json
@@ -7,5 +7,6 @@
"alwaysAllow": "Selalu Izinkan",
"permissions": "Izin",
"approve": "Setujui",
- "reject": "Tolak"
+ "reject": "Tolak",
+ "parameters": "Parameter Alat"
}
\ No newline at end of file
diff --git a/web-app/src/locales/id/tools.json b/web-app/src/locales/id/tools.json
index 5f0eb382c6..1e001afc64 100644
--- a/web-app/src/locales/id/tools.json
+++ b/web-app/src/locales/id/tools.json
@@ -5,6 +5,7 @@
"deny": "Tolak",
"allowOnce": "Izinkan Sekali",
"alwaysAllow": "Selalu Izinkan",
- "description": "Asisten ingin menggunakan {{toolName}}"
+ "description": "Asisten ingin menggunakan {{toolName}}",
+ "parameters": "Parameter Alat"
}
}
diff --git a/web-app/src/locales/vn/tool-approval.json b/web-app/src/locales/vn/tool-approval.json
index e154e9849d..bbe388d7eb 100644
--- a/web-app/src/locales/vn/tool-approval.json
+++ b/web-app/src/locales/vn/tool-approval.json
@@ -7,5 +7,6 @@
"alwaysAllow": "Luôn cho phép",
"permissions": "Quyền",
"approve": "Phê duyệt",
- "reject": "Từ chối"
+ "reject": "Từ chối",
+ "parameters": "Tham số công cụ"
}
\ No newline at end of file
diff --git a/web-app/src/locales/vn/tools.json b/web-app/src/locales/vn/tools.json
index f14553888d..63306479fe 100644
--- a/web-app/src/locales/vn/tools.json
+++ b/web-app/src/locales/vn/tools.json
@@ -5,6 +5,7 @@
"deny": "Từ chối",
"allowOnce": "Cho phép một lần",
"alwaysAllow": "Luôn cho phép",
- "description": "Trợ lý muốn sử dụng {{toolName}}"
+ "description": "Trợ lý muốn sử dụng {{toolName}}",
+ "parameters": "Tham số công cụ"
}
}
diff --git a/web-app/src/locales/zh-CN/tool-approval.json b/web-app/src/locales/zh-CN/tool-approval.json
index 3cfca11ce5..d1f60d5b14 100644
--- a/web-app/src/locales/zh-CN/tool-approval.json
+++ b/web-app/src/locales/zh-CN/tool-approval.json
@@ -7,5 +7,6 @@
"alwaysAllow": "始终允许",
"permissions": "权限",
"approve": "批准",
- "reject": "拒绝"
+ "reject": "拒绝",
+ "parameters": "工具参数"
}
\ No newline at end of file
diff --git a/web-app/src/locales/zh-CN/tools.json b/web-app/src/locales/zh-CN/tools.json
index 1812261bb7..332ffc6ecb 100644
--- a/web-app/src/locales/zh-CN/tools.json
+++ b/web-app/src/locales/zh-CN/tools.json
@@ -5,6 +5,7 @@
"deny": "拒绝",
"allowOnce": "允许一次",
"alwaysAllow": "始终允许",
- "description": "助手想要使用 {{toolName}}"
+ "description": "助手想要使用 {{toolName}}",
+ "parameters": "工具参数"
}
}
diff --git a/web-app/src/locales/zh-TW/tool-approval.json b/web-app/src/locales/zh-TW/tool-approval.json
index 5a5a295e81..1d1dcd19b3 100644
--- a/web-app/src/locales/zh-TW/tool-approval.json
+++ b/web-app/src/locales/zh-TW/tool-approval.json
@@ -7,5 +7,6 @@
"alwaysAllow": "一律允許",
"permissions": "權限",
"approve": "核准",
- "reject": "拒絕"
+ "reject": "拒絕",
+ "parameters": "工具參數"
}
\ No newline at end of file
diff --git a/web-app/src/locales/zh-TW/tools.json b/web-app/src/locales/zh-TW/tools.json
index aae5fb21a6..64ed15e8df 100644
--- a/web-app/src/locales/zh-TW/tools.json
+++ b/web-app/src/locales/zh-TW/tools.json
@@ -5,6 +5,7 @@
"deny": "拒絕",
"allowOnce": "允許一次",
"alwaysAllow": "一律允許",
- "description": "助理想要使用 {{toolName}}"
+ "description": "助理想要使用 {{toolName}}",
+ "parameters": "工具參數"
}
}