Skip to content

Commit 064b52c

Browse files
committed
refactor(mothership): one display-activity check, and omit for stripping it
1 parent 7fd7228 commit 064b52c

2 files changed

Lines changed: 9 additions & 10 deletions

File tree

‎apps/sim/lib/mothership/request/handlers/tool.ts‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,8 @@ async function handleCallPhase(
579579
existing.activityDescription ??= activityDescription
580580
}
581581
/** Persist visible labels even when the introducing discovery call is omitted from the transcript. */
582-
const suppliedActivity = readToolActivity(args) ?? readToolActivity(existing?.params)
582+
const argsActivity = readToolActivity(args)
583+
const suppliedActivity = argsActivity ?? readToolActivity(existing?.params)
583584
const activity = suppliedActivity?.completedTitle
584585
? suppliedActivity
585586
: suppliedActivity &&
@@ -588,7 +589,7 @@ async function handleCallPhase(
588589
.map((tool) => readToolActivity(tool.params))
589590
.find((candidate) => candidate?.id === suppliedActivity.id && candidate.completedTitle)
590591
// A tool's own `activity` argument (any value that is not a display label) is never replaced.
591-
const ownsActivity = args?.activity !== undefined && !readToolActivity(args)
592+
const ownsActivity = args?.activity !== undefined && !argsActivity
592593
const displayArgs = activity && !ownsActivity ? { ...args, activity } : args
593594
const isSubagent = scope === 'subagent'
594595
const ui = getToolCallUI(data)

‎apps/sim/lib/mothership/tool-executor/executor.ts‎

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { createLogger } from '@sim/logger'
22
import { type PermissionType, permissionSatisfies } from '@sim/platform-authz/workspace'
33
import { toError } from '@sim/utils/errors'
4+
import { omit } from '@sim/utils/object'
45
import { openResourceInputSchema } from '@/lib/api/contracts/mothership-resource-tools'
56
import { observeContentDelivery } from '@/lib/core/application'
67
import { withWorkspaceInvocationScope } from '@/lib/core/application/workspace-invocation-scope'
@@ -11,8 +12,8 @@ import { createRegistryContentGate } from '@/lib/mothership/content-delivery'
1112
import { prepareCopilotEnvironmentContext } from '@/lib/mothership/environment-context'
1213
import { isSearchIntegrationToolsEnabled } from '@/lib/mothership/feature-flags'
1314
import { isOwnerScopedFile } from '@/lib/mothership/file-owners'
14-
import { ToolActivity } from '@/lib/mothership/generated/protocol'
1515
import { projectToolErrorMessageForCopilot } from '@/lib/mothership/request/tools/resolved-secret-result'
16+
import { readToolActivity } from '@/lib/mothership/tools/activity'
1617
import { recordSecretUsage } from '@/lib/secrets/usage/record'
1718
import { executeTool as executeAppTool } from '@/tools'
1819
import { getToolMetadata, getToolParams } from '@/tools/metadata'
@@ -294,8 +295,7 @@ async function executeGatedTool(
294295
}
295296

296297
try {
297-
const { activity: _activity, ...executionParams } = params
298-
return await handler(executionParams, context)
298+
return await handler(omit(params, ['activity']), context)
299299
} catch (error) {
300300
const message = toError(error).message
301301
logger.error('Tool execution failed', {
@@ -341,11 +341,9 @@ function withoutDisplayActivity(
341341
toolId: string,
342342
params: Record<string, unknown>
343343
): Record<string, unknown> {
344-
if (!ToolActivity.safeParse(params.activity).success || getToolParams(toolId)?.activity) {
345-
return params
346-
}
347-
const { activity: _activity, ...rest } = params
348-
return rest
344+
return readToolActivity(params) && !getToolParams(toolId)?.activity
345+
? omit(params, ['activity'])
346+
: params
349347
}
350348

351349
function buildAppToolParams(

0 commit comments

Comments
 (0)