Skip to content

Commit 10c66b7

Browse files
committed
add new tools to rename, create, delete folders
1 parent 52942ef commit 10c66b7

4 files changed

Lines changed: 711 additions & 116 deletions

File tree

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

Lines changed: 144 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ export interface ToolCatalogEntry {
1313
| 'context_write'
1414
| 'crawl_website'
1515
| 'create_file'
16+
| 'create_file_folder'
1617
| 'create_folder'
1718
| 'create_job'
1819
| 'create_workflow'
1920
| 'create_workspace_mcp_server'
2021
| 'debug'
2122
| 'delete_file'
23+
| 'delete_file_folder'
2224
| 'delete_folder'
2325
| 'delete_workflow'
2426
| 'delete_workspace_mcp_server'
@@ -49,6 +51,7 @@ export interface ToolCatalogEntry {
4951
| 'job'
5052
| 'knowledge'
5153
| 'knowledge_base'
54+
| 'list_file_folders'
5255
| 'list_folders'
5356
| 'list_user_workspaces'
5457
| 'list_workspace_mcp_servers'
@@ -58,6 +61,8 @@ export interface ToolCatalogEntry {
5861
| 'manage_mcp_tool'
5962
| 'manage_skill'
6063
| 'materialize_file'
64+
| 'move_file'
65+
| 'move_file_folder'
6166
| 'move_folder'
6267
| 'move_workflow'
6368
| 'oauth_get_auth_link'
@@ -66,6 +71,7 @@ export interface ToolCatalogEntry {
6671
| 'read'
6772
| 'redeploy'
6873
| 'rename_file'
74+
| 'rename_file_folder'
6975
| 'rename_workflow'
7076
| 'research'
7177
| 'respond'
@@ -103,12 +109,14 @@ export interface ToolCatalogEntry {
103109
| 'context_write'
104110
| 'crawl_website'
105111
| 'create_file'
112+
| 'create_file_folder'
106113
| 'create_folder'
107114
| 'create_job'
108115
| 'create_workflow'
109116
| 'create_workspace_mcp_server'
110117
| 'debug'
111118
| 'delete_file'
119+
| 'delete_file_folder'
112120
| 'delete_folder'
113121
| 'delete_workflow'
114122
| 'delete_workspace_mcp_server'
@@ -139,6 +147,7 @@ export interface ToolCatalogEntry {
139147
| 'job'
140148
| 'knowledge'
141149
| 'knowledge_base'
150+
| 'list_file_folders'
142151
| 'list_folders'
143152
| 'list_user_workspaces'
144153
| 'list_workspace_mcp_servers'
@@ -148,6 +157,8 @@ export interface ToolCatalogEntry {
148157
| 'manage_mcp_tool'
149158
| 'manage_skill'
150159
| 'materialize_file'
160+
| 'move_file'
161+
| 'move_file_folder'
151162
| 'move_folder'
152163
| 'move_workflow'
153164
| 'oauth_get_auth_link'
@@ -156,6 +167,7 @@ export interface ToolCatalogEntry {
156167
| 'read'
157168
| 'redeploy'
158169
| 'rename_file'
170+
| 'rename_file_folder'
159171
| 'rename_workflow'
160172
| 'research'
161173
| 'respond'
@@ -184,7 +196,7 @@ export interface ToolCatalogEntry {
184196
| 'workflow'
185197
| 'workspace_file'
186198
parameters: unknown
187-
requiredPermission?: 'admin' | 'write'
199+
requiredPermission?: 'admin' | 'read' | 'write'
188200
requiresConfirmation?: boolean
189201
resultSchema?: unknown
190202
route: 'client' | 'go' | 'sim' | 'subagent'
@@ -326,7 +338,7 @@ export const CreateFile: ToolCatalogEntry = {
326338
fileName: {
327339
type: 'string',
328340
description:
329-
'Plain workspace filename including extension, e.g. "main.py" or "report.md". Must not contain slashes.',
341+
'Workspace filename or slash-separated file path including extension, e.g. "main.py", "report.md", or "Reports/2026/report.md".',
330342
},
331343
},
332344
required: ['fileName'],
@@ -343,6 +355,26 @@ export const CreateFile: ToolCatalogEntry = {
343355
requiredPermission: 'write',
344356
}
345357

358+
export const CreateFileFolder: ToolCatalogEntry = {
359+
id: 'create_file_folder',
360+
name: 'create_file_folder',
361+
route: 'sim',
362+
mode: 'async',
363+
parameters: {
364+
type: 'object',
365+
properties: {
366+
name: { type: 'string', description: 'Folder name.' },
367+
parentId: { type: 'string', description: 'Optional parent file-folder ID.' },
368+
workspaceId: {
369+
type: 'string',
370+
description: 'Optional workspace ID. Defaults to the current workspace.',
371+
},
372+
},
373+
required: ['name'],
374+
},
375+
requiredPermission: 'write',
376+
}
377+
346378
export const CreateFolder: ToolCatalogEntry = {
347379
id: 'create_folder',
348380
name: 'create_folder',
@@ -502,6 +534,26 @@ export const DeleteFile: ToolCatalogEntry = {
502534
requiredPermission: 'write',
503535
}
504536

537+
export const DeleteFileFolder: ToolCatalogEntry = {
538+
id: 'delete_file_folder',
539+
name: 'delete_file_folder',
540+
route: 'sim',
541+
mode: 'async',
542+
parameters: {
543+
type: 'object',
544+
properties: {
545+
folderIds: {
546+
type: 'array',
547+
description: 'The workspace file-folder IDs to delete.',
548+
items: { type: 'string' },
549+
},
550+
},
551+
required: ['folderIds'],
552+
},
553+
requiresConfirmation: true,
554+
requiredPermission: 'write',
555+
}
556+
505557
export const DeleteFolder: ToolCatalogEntry = {
506558
id: 'delete_folder',
507559
name: 'delete_folder',
@@ -1000,7 +1052,7 @@ export const FunctionExecute: ToolCatalogEntry = {
10001052
inputFiles: {
10011053
type: 'array',
10021054
description:
1003-
'Canonical workspace file IDs to mount in the sandbox. Discover IDs via read("files/{name}/meta.json") or glob("files/by-id/*/meta.json"). Mounted path: /home/user/files/{fileId}/{originalName}. Example: ["wf_123"]',
1055+
'Canonical workspace file IDs to mount in the sandbox. Discover IDs via read("files/{path}/{name}/meta.json") or glob("files/**/meta.json") / glob("files/by-id/*/meta.json"). Mounted path: /home/user/files/{fileId}/{originalName}. Example: ["wf_123"]',
10041056
items: { type: 'string' },
10051057
},
10061058
inputTables: {
@@ -1028,7 +1080,7 @@ export const FunctionExecute: ToolCatalogEntry = {
10281080
outputPath: {
10291081
type: 'string',
10301082
description:
1031-
'Pipe output directly to a NEW workspace file instead of returning in context. ALWAYS use this instead of a separate workspace_file write call. Use a flat path like "files/result.json" — nested paths are not supported.',
1083+
'Pipe output directly to a NEW workspace file instead of returning in context. ALWAYS use this instead of a separate workspace_file write call. Use a root path like "files/result.json" — nested output paths are not supported.',
10321084
},
10331085
outputSandboxPath: {
10341086
type: 'string',
@@ -1040,11 +1092,6 @@ export const FunctionExecute: ToolCatalogEntry = {
10401092
description:
10411093
'Table ID to overwrite with the code\'s return value. Code MUST return an array of objects where keys match column names. All existing rows are replaced. Example: "tbl_abc123"',
10421094
},
1043-
timeout: {
1044-
type: 'number',
1045-
description:
1046-
'Optional maximum execution time in seconds. If omitted, Copilot sends 10 seconds by default. Override when needed; capped at the default execution limit.',
1047-
},
10481095
},
10491096
required: ['code'],
10501097
},
@@ -1090,7 +1137,7 @@ export const GenerateImage: ToolCatalogEntry = {
10901137
fileName: {
10911138
type: 'string',
10921139
description:
1093-
'Output file name. Defaults to "generated-image.png". Workspace files are flat, so pass a plain file name, not a nested path.',
1140+
'Output file name. Defaults to "generated-image.png". New generated images currently create root workspace files, so pass a plain file name, not a nested path.',
10941141
},
10951142
overwriteFileId: {
10961143
type: 'string',
@@ -1130,12 +1177,12 @@ export const GenerateVisualization: ToolCatalogEntry = {
11301177
fileName: {
11311178
type: 'string',
11321179
description:
1133-
'Output file name. Defaults to "chart.png". Workspace files are flat, so pass a plain file name, not a nested path.',
1180+
'Output file name. Defaults to "chart.png". New visualization outputs currently create root workspace files, so pass a plain file name, not a nested path.',
11341181
},
11351182
inputFiles: {
11361183
type: 'array',
11371184
description:
1138-
'Canonical workspace file IDs to mount in the sandbox. Discover IDs via read("files/{name}/meta.json") or glob("files/by-id/*/meta.json"). Mounted path: /home/user/files/{fileId}/{originalName}.',
1185+
'Canonical workspace file IDs to mount in the sandbox. Discover IDs via read("files/{path}/{name}/meta.json") or glob("files/**/meta.json") / glob("files/by-id/*/meta.json"). Mounted path: /home/user/files/{fileId}/{originalName}.',
11391186
items: { type: 'string' },
11401187
},
11411188
inputTables: {
@@ -1634,6 +1681,23 @@ export const KnowledgeBase: ToolCatalogEntry = {
16341681
requiresConfirmation: true,
16351682
}
16361683

1684+
export const ListFileFolders: ToolCatalogEntry = {
1685+
id: 'list_file_folders',
1686+
name: 'list_file_folders',
1687+
route: 'sim',
1688+
mode: 'async',
1689+
parameters: {
1690+
type: 'object',
1691+
properties: {
1692+
workspaceId: {
1693+
type: 'string',
1694+
description: 'Optional workspace ID. Defaults to the current workspace.',
1695+
},
1696+
},
1697+
},
1698+
requiredPermission: 'read',
1699+
}
1700+
16371701
export const ListFolders: ToolCatalogEntry = {
16381702
id: 'list_folders',
16391703
name: 'list_folders',
@@ -1949,6 +2013,49 @@ export const MaterializeFile: ToolCatalogEntry = {
19492013
requiredPermission: 'write',
19502014
}
19512015

2016+
export const MoveFile: ToolCatalogEntry = {
2017+
id: 'move_file',
2018+
name: 'move_file',
2019+
route: 'sim',
2020+
mode: 'async',
2021+
parameters: {
2022+
type: 'object',
2023+
properties: {
2024+
fileIds: {
2025+
type: 'array',
2026+
description: 'Canonical workspace file IDs to move.',
2027+
items: { type: 'string' },
2028+
},
2029+
folderId: {
2030+
type: 'string',
2031+
description: 'Target file-folder ID. Omit or pass empty string to move to workspace root.',
2032+
},
2033+
},
2034+
required: ['fileIds'],
2035+
},
2036+
requiredPermission: 'write',
2037+
}
2038+
2039+
export const MoveFileFolder: ToolCatalogEntry = {
2040+
id: 'move_file_folder',
2041+
name: 'move_file_folder',
2042+
route: 'sim',
2043+
mode: 'async',
2044+
parameters: {
2045+
type: 'object',
2046+
properties: {
2047+
folderId: { type: 'string', description: 'The workspace file-folder ID to move.' },
2048+
parentId: {
2049+
type: 'string',
2050+
description:
2051+
'Target parent file-folder ID. Omit or pass empty string to move to workspace root.',
2052+
},
2053+
},
2054+
required: ['folderId'],
2055+
},
2056+
requiredPermission: 'write',
2057+
}
2058+
19522059
export const MoveFolder: ToolCatalogEntry = {
19532060
id: 'move_folder',
19542061
name: 'move_folder',
@@ -2160,7 +2267,7 @@ export const RenameFile: ToolCatalogEntry = {
21602267
newName: {
21612268
type: 'string',
21622269
description:
2163-
'New filename including extension, e.g. "draft_v2.md". Must not contain slashes.',
2270+
'New filename including extension, e.g. "draft_v2.md". Use move_file to move files between folders.',
21642271
},
21652272
},
21662273
required: ['fileId', 'newName'],
@@ -2177,6 +2284,22 @@ export const RenameFile: ToolCatalogEntry = {
21772284
requiredPermission: 'write',
21782285
}
21792286

2287+
export const RenameFileFolder: ToolCatalogEntry = {
2288+
id: 'rename_file_folder',
2289+
name: 'rename_file_folder',
2290+
route: 'sim',
2291+
mode: 'async',
2292+
parameters: {
2293+
type: 'object',
2294+
properties: {
2295+
folderId: { type: 'string', description: 'The workspace file-folder ID to rename.' },
2296+
name: { type: 'string', description: 'New folder name.' },
2297+
},
2298+
required: ['folderId', 'name'],
2299+
},
2300+
requiredPermission: 'write',
2301+
}
2302+
21802303
export const RenameWorkflow: ToolCatalogEntry = {
21812304
id: 'rename_workflow',
21822305
name: 'rename_workflow',
@@ -2841,7 +2964,7 @@ export const UserTable: ToolCatalogEntry = {
28412964
fileId: {
28422965
type: 'string',
28432966
description:
2844-
'Canonical workspace file ID for create_from_file/import_file. Discover via read("files/{name}/meta.json") or glob("files/by-id/*/meta.json").',
2967+
'Canonical workspace file ID for create_from_file/import_file. Discover via read("files/{path}/{name}/meta.json") or glob("files/**/meta.json") / glob("files/by-id/*/meta.json").',
28452968
},
28462969
filePath: {
28472970
type: 'string',
@@ -2922,7 +3045,7 @@ export const UserTable: ToolCatalogEntry = {
29223045
outputPath: {
29233046
type: 'string',
29243047
description:
2925-
'Pipe query_rows results directly to a NEW workspace file. The format is auto-inferred from the file extension: .csv → CSV, .json → JSON, .md → Markdown, etc. Use .csv for tabular exports. Use a flat path like "files/export.csv" — nested paths are not supported.',
3048+
'Pipe query_rows results directly to a NEW workspace file. The format is auto-inferred from the file extension: .csv → CSV, .json → JSON, .md → Markdown, etc. Use a root output path like "files/export.csv" — nested output paths are not supported.',
29263049
},
29273050
outputs: {
29283051
type: 'array',
@@ -3466,12 +3589,14 @@ export const TOOL_CATALOG: Record<string, ToolCatalogEntry> = {
34663589
[ContextWrite.id]: ContextWrite,
34673590
[CrawlWebsite.id]: CrawlWebsite,
34683591
[CreateFile.id]: CreateFile,
3592+
[CreateFileFolder.id]: CreateFileFolder,
34693593
[CreateFolder.id]: CreateFolder,
34703594
[CreateJob.id]: CreateJob,
34713595
[CreateWorkflow.id]: CreateWorkflow,
34723596
[CreateWorkspaceMcpServer.id]: CreateWorkspaceMcpServer,
34733597
[Debug.id]: Debug,
34743598
[DeleteFile.id]: DeleteFile,
3599+
[DeleteFileFolder.id]: DeleteFileFolder,
34753600
[DeleteFolder.id]: DeleteFolder,
34763601
[DeleteWorkflow.id]: DeleteWorkflow,
34773602
[DeleteWorkspaceMcpServer.id]: DeleteWorkspaceMcpServer,
@@ -3502,6 +3627,7 @@ export const TOOL_CATALOG: Record<string, ToolCatalogEntry> = {
35023627
[Job.id]: Job,
35033628
[Knowledge.id]: Knowledge,
35043629
[KnowledgeBase.id]: KnowledgeBase,
3630+
[ListFileFolders.id]: ListFileFolders,
35053631
[ListFolders.id]: ListFolders,
35063632
[ListUserWorkspaces.id]: ListUserWorkspaces,
35073633
[ListWorkspaceMcpServers.id]: ListWorkspaceMcpServers,
@@ -3511,6 +3637,8 @@ export const TOOL_CATALOG: Record<string, ToolCatalogEntry> = {
35113637
[ManageMcpTool.id]: ManageMcpTool,
35123638
[ManageSkill.id]: ManageSkill,
35133639
[MaterializeFile.id]: MaterializeFile,
3640+
[MoveFile.id]: MoveFile,
3641+
[MoveFileFolder.id]: MoveFileFolder,
35143642
[MoveFolder.id]: MoveFolder,
35153643
[MoveWorkflow.id]: MoveWorkflow,
35163644
[OauthGetAuthLink.id]: OauthGetAuthLink,
@@ -3519,6 +3647,7 @@ export const TOOL_CATALOG: Record<string, ToolCatalogEntry> = {
35193647
[Read.id]: Read,
35203648
[Redeploy.id]: Redeploy,
35213649
[RenameFile.id]: RenameFile,
3650+
[RenameFileFolder.id]: RenameFileFolder,
35223651
[RenameWorkflow.id]: RenameWorkflow,
35233652
[Research.id]: Research,
35243653
[Respond.id]: Respond,

0 commit comments

Comments
 (0)