Skip to content

Commit c74c4a9

Browse files
committed
Restore and mass delete tools
1 parent 2156f49 commit c74c4a9

File tree

15 files changed

+932
-371
lines changed

15 files changed

+932
-371
lines changed

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

Lines changed: 116 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export interface ToolCatalogEntry {
7070
| 'rename_workflow'
7171
| 'research'
7272
| 'respond'
73+
| 'restore_resource'
7374
| 'revert_to_version'
7475
| 'run'
7576
| 'run_block'
@@ -158,6 +159,7 @@ export interface ToolCatalogEntry {
158159
| 'rename_workflow'
159160
| 'research'
160161
| 'respond'
162+
| 'restore_resource'
161163
| 'revert_to_version'
162164
| 'run'
163165
| 'run_block'
@@ -479,9 +481,13 @@ export const DeleteFile: ToolCatalogEntry = {
479481
parameters: {
480482
type: 'object',
481483
properties: {
482-
fileId: { type: 'string', description: 'Canonical workspace file ID of the file to delete.' },
484+
fileIds: {
485+
type: 'array',
486+
description: 'Canonical workspace file IDs of the files to delete.',
487+
items: { type: 'string' },
488+
},
483489
},
484-
required: ['fileId'],
490+
required: ['fileIds'],
485491
},
486492
resultSchema: {
487493
type: 'object',
@@ -501,8 +507,14 @@ export const DeleteFolder: ToolCatalogEntry = {
501507
mode: 'async',
502508
parameters: {
503509
type: 'object',
504-
properties: { folderId: { type: 'string', description: 'The folder ID to delete.' } },
505-
required: ['folderId'],
510+
properties: {
511+
folderIds: {
512+
type: 'array',
513+
description: 'The folder IDs to delete.',
514+
items: { type: 'string' },
515+
},
516+
},
517+
required: ['folderIds'],
506518
},
507519
requiresConfirmation: true,
508520
requiredPermission: 'write',
@@ -515,8 +527,14 @@ export const DeleteWorkflow: ToolCatalogEntry = {
515527
mode: 'async',
516528
parameters: {
517529
type: 'object',
518-
properties: { workflowId: { type: 'string', description: 'The workflow ID to delete.' } },
519-
required: ['workflowId'],
530+
properties: {
531+
workflowIds: {
532+
type: 'array',
533+
description: 'The workflow IDs to delete.',
534+
items: { type: 'string' },
535+
},
536+
},
537+
required: ['workflowIds'],
520538
},
521539
requiresConfirmation: true,
522540
requiredPermission: 'write',
@@ -1176,7 +1194,7 @@ export const Glob: ToolCatalogEntry = {
11761194
'Optional target-only UI phrase for the search row. The UI verb is supplied for you, so pass text like "workflow configs" or "knowledge bases", not a full sentence like "Finding workflow configs".',
11771195
},
11781196
},
1179-
required: ['pattern'],
1197+
required: ['pattern', 'toolTitle'],
11801198
},
11811199
}
11821200

@@ -1221,7 +1239,7 @@ export const Grep: ToolCatalogEntry = {
12211239
'Optional target-only UI phrase for the search row. The UI verb is supplied for you, so pass text like "Slack integrations" or "deployed workflows", not a full sentence like "Searching for Slack integrations".',
12221240
},
12231241
},
1224-
required: ['pattern'],
1242+
required: ['pattern', 'toolTitle'],
12251243
},
12261244
}
12271245

@@ -1322,22 +1340,21 @@ export const KnowledgeBase: ToolCatalogEntry = {
13221340
description:
13231341
'Tag definition IDs to opt out of (optional for add_connector). See tagDefinitions in the connector schema.',
13241342
},
1325-
documentId: {
1326-
type: 'string',
1327-
description: 'Document ID (required for delete_document, update_document)',
1343+
documentId: { type: 'string', description: 'Document ID (required for update_document)' },
1344+
documentIds: {
1345+
type: 'array',
1346+
description: 'Document IDs (for batch delete_document)',
1347+
items: { type: 'string' },
13281348
},
13291349
enabled: {
13301350
type: 'boolean',
13311351
description: 'Enable/disable a document (optional for update_document)',
13321352
},
1333-
fileId: {
1334-
type: 'string',
1353+
fileIds: {
1354+
type: 'array',
13351355
description:
1336-
'Canonical workspace file ID to add as a document (preferred for add_file). Discover via read("files/{name}/meta.json") or glob("files/by-id/*/meta.json").',
1337-
},
1338-
filePath: {
1339-
type: 'string',
1340-
description: 'Legacy workspace file reference for add_file. Prefer fileId.',
1356+
'Canonical workspace file IDs to add as documents (for add_file). Discover via read("files/{name}/meta.json") or glob("files/by-id/*/meta.json").',
1357+
items: { type: 'string' },
13411358
},
13421359
filename: {
13431360
type: 'string',
@@ -1348,6 +1365,11 @@ export const KnowledgeBase: ToolCatalogEntry = {
13481365
description:
13491366
'Knowledge base ID (required for get, query, add_file, list_tags, create_tag, get_tag_usage)',
13501367
},
1368+
knowledgeBaseIds: {
1369+
type: 'array',
1370+
description: 'Knowledge base IDs (for batch delete)',
1371+
items: { type: 'string' },
1372+
},
13511373
name: {
13521374
type: 'string',
13531375
description: "Name of the knowledge base (required for 'create')",
@@ -1470,9 +1492,11 @@ export const ManageCredential: ToolCatalogEntry = {
14701492
parameters: {
14711493
type: 'object',
14721494
properties: {
1473-
credentialId: {
1474-
type: 'string',
1475-
description: 'The credential ID (from environment/credentials.json)',
1495+
credentialId: { type: 'string', description: 'The credential ID (required for rename)' },
1496+
credentialIds: {
1497+
type: 'array',
1498+
description: 'Array of credential IDs (for batch delete)',
1499+
items: { type: 'string' },
14761500
},
14771501
displayName: { type: 'string', description: 'New display name (required for rename)' },
14781502
operation: {
@@ -1481,7 +1505,7 @@ export const ManageCredential: ToolCatalogEntry = {
14811505
enum: ['rename', 'delete'],
14821506
},
14831507
},
1484-
required: ['operation', 'credentialId'],
1508+
required: ['operation'],
14851509
},
14861510
requiresConfirmation: true,
14871511
requiredPermission: 'admin',
@@ -1542,7 +1566,12 @@ export const ManageCustomTool: ToolCatalogEntry = {
15421566
toolId: {
15431567
type: 'string',
15441568
description:
1545-
"The ID of the custom tool (required for edit/delete). Must be the exact toolId from the get_workflow_data custom tool response - do not guess or construct it. DO NOT PROVIDE THE TOOL ID IF THE OPERATION IS 'ADD'.",
1569+
"The ID of the custom tool (required for edit). Must be the exact toolId from the get_workflow_data custom tool response - do not guess or construct it. DO NOT PROVIDE THE TOOL ID IF THE OPERATION IS 'ADD'.",
1570+
},
1571+
toolIds: {
1572+
type: 'array',
1573+
description: 'Array of custom tool IDs (for batch delete)',
1574+
items: { type: 'string' },
15461575
},
15471576
},
15481577
required: ['operation'],
@@ -1564,7 +1593,12 @@ export const ManageJob: ToolCatalogEntry = {
15641593
'Operation-specific arguments. For create: {title, prompt, cron?, time?, timezone?, lifecycle?, successCondition?, maxRuns?}. For get/delete: {jobId}. For update: {jobId, title?, prompt?, cron?, timezone?, status?, lifecycle?, successCondition?, maxRuns?}. For list: no args needed.',
15651594
properties: {
15661595
cron: { type: 'string', description: 'Cron expression for recurring jobs' },
1567-
jobId: { type: 'string', description: 'Job ID (required for get, update, delete)' },
1596+
jobId: { type: 'string', description: 'Job ID (required for get, update)' },
1597+
jobIds: {
1598+
type: 'array',
1599+
description: 'Array of job IDs (for batch delete)',
1600+
items: { type: 'string' },
1601+
},
15681602
lifecycle: {
15691603
type: 'string',
15701604
description:
@@ -1702,9 +1736,11 @@ export const MaterializeFile: ToolCatalogEntry = {
17021736
parameters: {
17031737
type: 'object',
17041738
properties: {
1705-
fileName: {
1706-
type: 'string',
1707-
description: 'The name of the uploaded file to materialize (e.g. "report.pdf")',
1739+
fileNames: {
1740+
type: 'array',
1741+
description:
1742+
'The names of the uploaded files to materialize (e.g. ["report.pdf", "data.csv"])',
1743+
items: { type: 'string' },
17081744
},
17091745
knowledgeBaseId: {
17101746
type: 'string',
@@ -1724,7 +1760,7 @@ export const MaterializeFile: ToolCatalogEntry = {
17241760
'Custom name for the table (only used with operation "table"). Defaults to the file name without extension.',
17251761
},
17261762
},
1727-
required: ['fileName'],
1763+
required: ['fileNames'],
17281764
},
17291765
requiredPermission: 'write',
17301766
}
@@ -1761,9 +1797,13 @@ export const MoveWorkflow: ToolCatalogEntry = {
17611797
type: 'string',
17621798
description: 'Target folder ID. Omit or pass empty string to move to workspace root.',
17631799
},
1764-
workflowId: { type: 'string', description: 'The workflow ID to move.' },
1800+
workflowIds: {
1801+
type: 'array',
1802+
description: 'The workflow IDs to move.',
1803+
items: { type: 'string' },
1804+
},
17651805
},
1766-
required: ['workflowId'],
1806+
required: ['workflowIds'],
17671807
},
17681808
requiredPermission: 'write',
17691809
}
@@ -1813,14 +1853,24 @@ export const OpenResource: ToolCatalogEntry = {
18131853
parameters: {
18141854
type: 'object',
18151855
properties: {
1816-
id: { type: 'string', description: 'The resource ID to open.' },
1817-
type: {
1818-
type: 'string',
1819-
description: 'The resource type to open.',
1820-
enum: ['workflow', 'table', 'knowledgebase', 'file'],
1856+
resources: {
1857+
type: 'array',
1858+
description: 'Array of resources to open. Each item must have type and id.',
1859+
items: {
1860+
type: 'object',
1861+
properties: {
1862+
id: { type: 'string', description: 'The resource ID.' },
1863+
type: {
1864+
type: 'string',
1865+
description: 'The resource type.',
1866+
enum: ['workflow', 'table', 'knowledgebase', 'file'],
1867+
},
1868+
},
1869+
required: ['type', 'id'],
1870+
},
18211871
},
18221872
},
1823-
required: ['type', 'id'],
1873+
required: ['resources'],
18241874
},
18251875
}
18261876

@@ -1948,6 +1998,27 @@ export const Respond: ToolCatalogEntry = {
19481998
hidden: true,
19491999
}
19502000

2001+
export const RestoreResource: ToolCatalogEntry = {
2002+
id: 'restore_resource',
2003+
name: 'restore_resource',
2004+
executor: 'sim',
2005+
mode: 'async',
2006+
parameters: {
2007+
type: 'object',
2008+
properties: {
2009+
id: { type: 'string', description: 'The canonical resource ID to restore.' },
2010+
type: {
2011+
type: 'string',
2012+
description: 'The resource type to restore.',
2013+
enum: ['workflow', 'table', 'file', 'knowledgebase', 'folder'],
2014+
},
2015+
},
2016+
required: ['type', 'id'],
2017+
},
2018+
requiresConfirmation: true,
2019+
requiredPermission: 'admin',
2020+
}
2021+
19512022
export const RevertToVersion: ToolCatalogEntry = {
19522023
id: 'revert_to_version',
19532024
name: 'revert_to_version',
@@ -2208,7 +2279,7 @@ export const SearchOnline: ToolCatalogEntry = {
22082279
'Optional target-only UI phrase for the search row. The UI verb is supplied for you, so pass text like "pricing changes" or "Slack webhook docs", not a full sentence like "Searching online for pricing changes".',
22092280
},
22102281
},
2211-
required: ['query'],
2282+
required: ['query', 'toolTitle'],
22122283
},
22132284
}
22142285

@@ -2534,7 +2605,13 @@ export const UserTable: ToolCatalogEntry = {
25342605
},
25352606
tableId: {
25362607
type: 'string',
2537-
description: "Table ID (required for most operations except 'create')",
2608+
description:
2609+
"Table ID (required for most operations except 'create' and batch 'delete')",
2610+
},
2611+
tableIds: {
2612+
type: 'array',
2613+
description: 'Array of table IDs (for batch delete)',
2614+
items: { type: 'string' },
25382615
},
25392616
unique: {
25402617
type: 'boolean',
@@ -3030,6 +3107,7 @@ export const TOOL_CATALOG: Record<string, ToolCatalogEntry> = {
30303107
[RenameWorkflow.id]: RenameWorkflow,
30313108
[Research.id]: Research,
30323109
[Respond.id]: Respond,
3110+
[RestoreResource.id]: RestoreResource,
30333111
[RevertToVersion.id]: RevertToVersion,
30343112
[Run.id]: Run,
30353113
[RunBlock.id]: RunBlock,

0 commit comments

Comments
 (0)