Skip to content

Commit 0dd1ee0

Browse files
committed
Folder tools
1 parent c52d633 commit 0dd1ee0

4 files changed

Lines changed: 72 additions & 2 deletions

File tree

apps/sim/app/workspace/[workspaceId]/home/components/user-message-content/user-message-content.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,16 @@ function MentionHighlight({ context }: { context: ChatMessageContext }) {
6565
}
6666

6767
export function UserMessageContent({ content, contexts }: UserMessageContentProps) {
68+
const trimmed = content.trim()
69+
6870
if (!contexts || contexts.length === 0) {
69-
return <p className={USER_MESSAGE_CLASSES}>{content}</p>
71+
return <p className={USER_MESSAGE_CLASSES}>{trimmed}</p>
7072
}
7173

7274
const ranges = computeMentionRanges(content, contexts)
7375

7476
if (ranges.length === 0) {
75-
return <p className={USER_MESSAGE_CLASSES}>{content}</p>
77+
return <p className={USER_MESSAGE_CLASSES}>{trimmed}</p>
7678
}
7779

7880
const elements: React.ReactNode[] = []

apps/sim/app/workspace/[workspaceId]/home/hooks/use-chat.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,18 @@ import {
2020
MothershipStreamV1ToolPhase,
2121
} from '@/lib/copilot/generated/mothership-stream-v1'
2222
import {
23+
CreateFolder,
24+
DeleteFolder,
25+
DeleteWorkflow,
2326
DeployApi,
2427
DeployChat,
2528
DeployMcp,
2629
FileWrite,
30+
MoveFolder,
31+
MoveWorkflow,
2732
Read as ReadTool,
2833
Redeploy,
34+
RenameWorkflow,
2935
ToolSearchToolRegex,
3036
WorkspaceFile,
3137
} from '@/lib/copilot/generated/tool-catalog-v1'
@@ -54,6 +60,7 @@ import {
5460
useChatHistory,
5561
} from '@/hooks/queries/tasks'
5662
import { getFolderMap } from '@/hooks/queries/utils/folder-cache'
63+
import { folderKeys } from '@/hooks/queries/utils/folder-keys'
5764
import { invalidateWorkflowSelectors } from '@/hooks/queries/utils/invalidate-workflow-lists'
5865
import { getTopInsertionSortOrder } from '@/hooks/queries/utils/top-insertion-sort-order'
5966
import { getWorkflowById, getWorkflows } from '@/hooks/queries/utils/workflow-cache'
@@ -106,6 +113,14 @@ const DEPLOY_TOOL_NAMES: Set<string> = new Set([
106113
DeployMcp.id,
107114
Redeploy.id,
108115
])
116+
117+
const FOLDER_TOOL_NAMES: Set<string> = new Set([CreateFolder.id, DeleteFolder.id, MoveFolder.id])
118+
119+
const WORKFLOW_MUTATION_TOOL_NAMES: Set<string> = new Set([
120+
MoveWorkflow.id,
121+
RenameWorkflow.id,
122+
DeleteWorkflow.id,
123+
])
109124
const RECONNECT_TAIL_ERROR =
110125
'Live reconnect failed before the stream finished. The latest response may be incomplete.'
111126
const MAX_RECONNECT_ATTEMPTS = 10
@@ -982,6 +997,17 @@ export function useChat(
982997
}
983998
}
984999

1000+
if (FOLDER_TOOL_NAMES.has(tc.name) && tc.status === 'success') {
1001+
queryClient.invalidateQueries({
1002+
queryKey: folderKeys.list(workspaceId),
1003+
})
1004+
}
1005+
if (WORKFLOW_MUTATION_TOOL_NAMES.has(tc.name) && tc.status === 'success') {
1006+
queryClient.invalidateQueries({
1007+
queryKey: workflowKeys.list(workspaceId),
1008+
})
1009+
}
1010+
9851011
const extractedResources =
9861012
tc.status === 'success' && isResourceToolName(tc.name)
9871013
? extractResourcesFromToolResult(

apps/sim/lib/copilot/generated/tool-catalog-v1.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,14 @@ export interface ToolCatalogEntry {
5656
| 'manage_mcp_tool'
5757
| 'manage_skill'
5858
| 'materialize_file'
59+
| 'move_folder'
60+
| 'move_workflow'
5961
| 'oauth_get_auth_link'
6062
| 'oauth_request_access'
6163
| 'open_resource'
6264
| 'read'
6365
| 'redeploy'
66+
| 'rename_workflow'
6467
| 'research'
6568
| 'respond'
6669
| 'revert_to_version'
@@ -137,11 +140,14 @@ export interface ToolCatalogEntry {
137140
| 'manage_mcp_tool'
138141
| 'manage_skill'
139142
| 'materialize_file'
143+
| 'move_folder'
144+
| 'move_workflow'
140145
| 'oauth_get_auth_link'
141146
| 'oauth_request_access'
142147
| 'open_resource'
143148
| 'read'
144149
| 'redeploy'
150+
| 'rename_workflow'
145151
| 'research'
146152
| 'respond'
147153
| 'revert_to_version'
@@ -573,6 +579,22 @@ export const MaterializeFile: ToolCatalogEntry = {
573579
requiredPermission: 'write',
574580
}
575581

582+
export const MoveFolder: ToolCatalogEntry = {
583+
id: 'move_folder',
584+
name: 'move_folder',
585+
executor: 'sim',
586+
mode: 'async',
587+
requiredPermission: 'write',
588+
}
589+
590+
export const MoveWorkflow: ToolCatalogEntry = {
591+
id: 'move_workflow',
592+
name: 'move_workflow',
593+
executor: 'sim',
594+
mode: 'async',
595+
requiredPermission: 'write',
596+
}
597+
576598
export const OauthGetAuthLink: ToolCatalogEntry = {
577599
id: 'oauth_get_auth_link',
578600
name: 'oauth_get_auth_link',
@@ -611,6 +633,14 @@ export const Redeploy: ToolCatalogEntry = {
611633
requiredPermission: 'admin',
612634
}
613635

636+
export const RenameWorkflow: ToolCatalogEntry = {
637+
id: 'rename_workflow',
638+
name: 'rename_workflow',
639+
executor: 'sim',
640+
mode: 'async',
641+
requiredPermission: 'write',
642+
}
643+
614644
export const Research: ToolCatalogEntry = {
615645
id: 'research',
616646
name: 'research',
@@ -859,11 +889,14 @@ export const TOOL_CATALOG: Record<string, ToolCatalogEntry> = {
859889
[ManageMcpTool.id]: ManageMcpTool,
860890
[ManageSkill.id]: ManageSkill,
861891
[MaterializeFile.id]: MaterializeFile,
892+
[MoveFolder.id]: MoveFolder,
893+
[MoveWorkflow.id]: MoveWorkflow,
862894
[OauthGetAuthLink.id]: OauthGetAuthLink,
863895
[OauthRequestAccess.id]: OauthRequestAccess,
864896
[OpenResource.id]: OpenResource,
865897
[Read.id]: Read,
866898
[Redeploy.id]: Redeploy,
899+
[RenameWorkflow.id]: RenameWorkflow,
867900
[Research.id]: Research,
868901
[Respond.id]: Respond,
869902
[RevertToVersion.id]: RevertToVersion,

apps/sim/lib/copilot/tool-executor/register-handlers.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,14 @@ import {
3131
ManageMcpTool,
3232
ManageSkill,
3333
MaterializeFile,
34+
MoveFolder,
35+
MoveWorkflow,
3436
OauthGetAuthLink,
3537
OauthRequestAccess,
3638
OpenResource,
3739
Read as ReadTool,
3840
Redeploy,
41+
RenameWorkflow,
3942
RevertToVersion,
4043
RunBlock,
4144
RunFromBlock,
@@ -84,6 +87,9 @@ import {
8487
executeDeleteFolder,
8588
executeDeleteWorkflow,
8689
executeGenerateApiKey,
90+
executeMoveFolder,
91+
executeMoveWorkflow,
92+
executeRenameWorkflow,
8793
executeRunBlock,
8894
executeRunFromBlock,
8995
executeRunWorkflow,
@@ -132,6 +138,9 @@ function buildHandlerMap(): Record<string, ToolHandler> {
132138
[CreateFolder.id]: h(executeCreateFolder),
133139
[DeleteWorkflow.id]: h(executeDeleteWorkflow),
134140
[DeleteFolder.id]: h(executeDeleteFolder),
141+
[RenameWorkflow.id]: h(executeRenameWorkflow),
142+
[MoveWorkflow.id]: h(executeMoveWorkflow),
143+
[MoveFolder.id]: h(executeMoveFolder),
135144
[RunWorkflow.id]: h(executeRunWorkflow),
136145
[RunWorkflowUntilBlock.id]: h(executeRunWorkflowUntilBlock),
137146
[RunFromBlock.id]: h(executeRunFromBlock),

0 commit comments

Comments
 (0)