mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-10-21 09:32:24 +00:00
🧤 feat: Enforce Safe BYOM Tool Approvals (#15503)
* feat: add safe default approvals for BYOM code * fix: preserve safe BYOM approval baseline
This commit is contained in:
parent
434fa377c0
commit
b1c56239f9
7 changed files with 314 additions and 19 deletions
|
|
@ -49,7 +49,10 @@ const {
|
|||
getAgentCheckpointer,
|
||||
hasDurableAgentInterruptCheckpoint,
|
||||
isHITLEnabled,
|
||||
resolveToolApprovalPolicy,
|
||||
buildToolApprovalHooks,
|
||||
collectAttachedCodeEnvironmentAgentIds,
|
||||
createAttachedCodeEnvironmentPolicyHook,
|
||||
agentRunUsesCheckpointer,
|
||||
canAgentGraphPause,
|
||||
getPluginHookSource,
|
||||
|
|
@ -3786,7 +3789,14 @@ class AgentClient extends BaseClient {
|
|||
* spending on provider work. */
|
||||
/** @type {AppConfig['endpoints']['agents']} */
|
||||
const agentsEConfig = appConfig.endpoints?.[EModelEndpoint.agents];
|
||||
const resolvedToolApprovalHooks = isHITLEnabled(agentsEConfig?.toolApproval)
|
||||
const topLevelAgents = [this.options.agent, ...(this.agentConfigs?.values() ?? [])];
|
||||
const attachedCodeEnvironmentAgentIds =
|
||||
collectAttachedCodeEnvironmentAgentIds(topLevelAgents);
|
||||
const effectiveToolApprovalPolicy = resolveToolApprovalPolicy({
|
||||
endpoint: agentsEConfig?.toolApproval,
|
||||
attachedCodeEnvironment: attachedCodeEnvironmentAgentIds.size > 0,
|
||||
});
|
||||
const resolvedToolApprovalHooks = isHITLEnabled(effectiveToolApprovalPolicy)
|
||||
? buildToolApprovalHooks({
|
||||
userId: this.options.req?.user?.id,
|
||||
conversationId: this.conversationId,
|
||||
|
|
@ -3794,19 +3804,28 @@ class AgentClient extends BaseClient {
|
|||
appConfig,
|
||||
})
|
||||
: undefined;
|
||||
const topLevelAgents = [this.options.agent, ...(this.agentConfigs?.values() ?? [])];
|
||||
const admissionToolApprovalHooks = [
|
||||
...(resolvedToolApprovalHooks ?? []),
|
||||
...(attachedCodeEnvironmentAgentIds.size > 0
|
||||
? [
|
||||
{
|
||||
hook: createAttachedCodeEnvironmentPolicyHook(attachedCodeEnvironmentAgentIds),
|
||||
},
|
||||
]
|
||||
: []),
|
||||
];
|
||||
const askUserQuestionAdminDisabled = isAskUserQuestionAdminDisabled(appConfig);
|
||||
const runCanPause = canAgentGraphPause({
|
||||
policy: agentsEConfig?.toolApproval,
|
||||
policy: effectiveToolApprovalPolicy,
|
||||
agents: topLevelAgents,
|
||||
hostGeneratedToolNames:
|
||||
this.options.subagentTasks == null ? undefined : [Constants.CHECK_BACKGROUND_TASK],
|
||||
resolvedProgrammaticHooks: resolvedToolApprovalHooks,
|
||||
resolvedProgrammaticHooks: admissionToolApprovalHooks,
|
||||
pluginHookSource: getPluginHookSource(),
|
||||
askUserQuestionAdminDisabled,
|
||||
});
|
||||
const runUsesCheckpointer = agentRunUsesCheckpointer({
|
||||
policy: agentsEConfig?.toolApproval,
|
||||
policy: effectiveToolApprovalPolicy,
|
||||
agents: topLevelAgents,
|
||||
askUserQuestionAdminDisabled,
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue