mirror of
https://github.com/simstudioai/sim.git
synced 2026-01-24 14:27:56 -05:00
Improvements
This commit is contained in:
@@ -1426,7 +1426,9 @@ function RunSkipButtons({
|
||||
setButtonsHidden(true)
|
||||
try {
|
||||
// Add to auto-allowed list - this also executes all pending integration tools of this type
|
||||
console.log('[RunSkipButtons] Always Allow clicked for tool:', toolCall.name)
|
||||
await addAutoAllowedTool(toolCall.name)
|
||||
console.log('[RunSkipButtons] addAutoAllowedTool completed for:', toolCall.name)
|
||||
// For client tools with interrupts (not integration tools), we still need to call handleRun
|
||||
// since executeIntegrationTool only works for server-side tools
|
||||
if (!isIntegrationTool(toolCall.name)) {
|
||||
@@ -1526,7 +1528,11 @@ export function ToolCall({
|
||||
toolCall.name === 'user_memory' ||
|
||||
toolCall.name === 'edit_respond' ||
|
||||
toolCall.name === 'debug_respond' ||
|
||||
toolCall.name === 'plan_respond'
|
||||
toolCall.name === 'plan_respond' ||
|
||||
toolCall.name === 'research_respond' ||
|
||||
toolCall.name === 'info_respond' ||
|
||||
toolCall.name === 'deploy_respond' ||
|
||||
toolCall.name === 'superagent_respond'
|
||||
)
|
||||
return null
|
||||
|
||||
|
||||
@@ -2116,6 +2116,24 @@ const subAgentSSEHandlers: Record<string, SSEHandler> = {
|
||||
})
|
||||
})
|
||||
}
|
||||
} else {
|
||||
// Check if this is an integration tool (server-side) that should be auto-executed
|
||||
const isIntegrationTool = !CLASS_TOOL_METADATA[name]
|
||||
if (isIntegrationTool && isSubAgentAutoAllowed) {
|
||||
logger.info('[SubAgent] Auto-executing integration tool (auto-allowed)', {
|
||||
id,
|
||||
name,
|
||||
})
|
||||
// Execute integration tool via the store method
|
||||
const { executeIntegrationTool } = get()
|
||||
executeIntegrationTool(id).catch((err) => {
|
||||
logger.error('[SubAgent] Integration tool auto-execution failed', {
|
||||
id,
|
||||
name,
|
||||
error: err?.message || err,
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e: any) {
|
||||
@@ -3923,11 +3941,16 @@ export const useCopilotStore = create<CopilotStore>()(
|
||||
|
||||
loadAutoAllowedTools: async () => {
|
||||
try {
|
||||
logger.info('[AutoAllowedTools] Loading from API...')
|
||||
const res = await fetch('/api/copilot/auto-allowed-tools')
|
||||
logger.info('[AutoAllowedTools] Load response', { status: res.status, ok: res.ok })
|
||||
if (res.ok) {
|
||||
const data = await res.json()
|
||||
set({ autoAllowedTools: data.autoAllowedTools || [] })
|
||||
logger.info('[AutoAllowedTools] Loaded', { tools: data.autoAllowedTools })
|
||||
const tools = data.autoAllowedTools || []
|
||||
set({ autoAllowedTools: tools })
|
||||
logger.info('[AutoAllowedTools] Loaded successfully', { count: tools.length, tools })
|
||||
} else {
|
||||
logger.warn('[AutoAllowedTools] Load failed with status', { status: res.status })
|
||||
}
|
||||
} catch (err) {
|
||||
logger.error('[AutoAllowedTools] Failed to load', { error: err })
|
||||
@@ -3936,15 +3959,18 @@ export const useCopilotStore = create<CopilotStore>()(
|
||||
|
||||
addAutoAllowedTool: async (toolId: string) => {
|
||||
try {
|
||||
logger.info('[AutoAllowedTools] Adding tool...', { toolId })
|
||||
const res = await fetch('/api/copilot/auto-allowed-tools', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ toolId }),
|
||||
})
|
||||
logger.info('[AutoAllowedTools] API response', { toolId, status: res.status, ok: res.ok })
|
||||
if (res.ok) {
|
||||
const data = await res.json()
|
||||
logger.info('[AutoAllowedTools] API returned', { toolId, tools: data.autoAllowedTools })
|
||||
set({ autoAllowedTools: data.autoAllowedTools || [] })
|
||||
logger.info('[AutoAllowedTools] Added tool', { toolId })
|
||||
logger.info('[AutoAllowedTools] Added tool to store', { toolId })
|
||||
|
||||
// Auto-execute all pending tools of the same type
|
||||
const { toolCallsById, executeIntegrationTool } = get()
|
||||
|
||||
Reference in New Issue
Block a user