feat(table): expose position parameter for row insertion via copilot (#4326)

* feat(table): expose position parameter for row insertion via copilot

* fix(table): validate positions length matches rows before service call

* chore(table): regenerate tool types from updated copilot contract

* fix(table): validate no duplicate positions in batch_insert_rows

* chore(table): regenerate tool types with integer position schema
This commit is contained in:
Waleed
2026-04-28 17:30:29 -07:00
committed by GitHub
parent 3784f5465a
commit ed206ed7d8
3 changed files with 141 additions and 91 deletions
@@ -957,7 +957,7 @@ export const EditWorkflow: ToolCatalogEntry = {
params: {
type: 'object',
description:
'Parameters for the operation. \nFor edit: {"inputs": {"temperature": 0.5}} NOT {"subBlocks": {"temperature": {"value": 0.5}}}\nFor add: {"type": "agent", "name": "My Agent", "inputs": {"model": "gpt-4o"}}\nFor delete: {} (empty object)',
'Parameters for the operation. \nFor edit: {"inputs": {"temperature": 0.5}} NOT {"subBlocks": {"temperature": {"value": 0.5}}}\nFor add: {"type": "agent", "name": "My Agent", "inputs": {"model": "claude-sonnet-4-6"}}\nFor delete: {} (empty object)',
},
},
required: ['operation_type', 'block_id', 'params'],
@@ -2868,6 +2868,17 @@ export const UserTable: ToolCatalogEntry = {
description:
'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.',
},
position: {
type: 'integer',
description:
'Zero-based index at which to insert the row (optional, insert_row only). Rows at and below that index shift down. Omit to append at the end.',
},
positions: {
type: 'array',
description:
'Per-row insertion indices for batch_insert_rows (optional). Must be the same length as rows and contain no duplicates. Values are final positions in the resulting table — lower-index shifts are applied automatically. Omit to append all rows at the end.',
items: { type: 'integer' },
},
rowId: {
type: 'string',
description: 'Row ID (required for get_row, update_row, delete_row)',
+101 -88
View File
@@ -10,7 +10,7 @@ export interface ToolRuntimeSchemaEntry {
}
export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
agent: {
['agent']: {
parameters: {
properties: {
request: {
@@ -23,7 +23,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
auth: {
['auth']: {
parameters: {
properties: {
request: {
@@ -36,7 +36,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
check_deployment_status: {
['check_deployment_status']: {
parameters: {
type: 'object',
properties: {
@@ -48,7 +48,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
complete_job: {
['complete_job']: {
parameters: {
type: 'object',
properties: {
@@ -61,7 +61,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
context_write: {
['context_write']: {
parameters: {
type: 'object',
properties: {
@@ -78,7 +78,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
crawl_website: {
['crawl_website']: {
parameters: {
type: 'object',
properties: {
@@ -113,7 +113,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
create_file: {
['create_file']: {
parameters: {
type: 'object',
properties: {
@@ -149,7 +149,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
required: ['success', 'message'],
},
},
create_folder: {
['create_folder']: {
parameters: {
type: 'object',
properties: {
@@ -170,7 +170,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
create_job: {
['create_job']: {
parameters: {
type: 'object',
properties: {
@@ -220,7 +220,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
create_workflow: {
['create_workflow']: {
parameters: {
type: 'object',
properties: {
@@ -245,7 +245,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
create_workspace_mcp_server: {
['create_workspace_mcp_server']: {
parameters: {
type: 'object',
properties: {
@@ -266,7 +266,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
debug: {
['debug']: {
parameters: {
properties: {
context: {
@@ -285,7 +285,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
delete_file: {
['delete_file']: {
parameters: {
type: 'object',
properties: {
@@ -314,7 +314,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
required: ['success', 'message'],
},
},
delete_folder: {
['delete_folder']: {
parameters: {
type: 'object',
properties: {
@@ -330,7 +330,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
delete_workflow: {
['delete_workflow']: {
parameters: {
type: 'object',
properties: {
@@ -346,7 +346,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
delete_workspace_mcp_server: {
['delete_workspace_mcp_server']: {
parameters: {
type: 'object',
properties: {
@@ -359,7 +359,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
deploy: {
['deploy']: {
parameters: {
properties: {
request: {
@@ -373,7 +373,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
deploy_api: {
['deploy_api']: {
parameters: {
type: 'object',
properties: {
@@ -447,7 +447,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
],
},
},
deploy_chat: {
['deploy_chat']: {
parameters: {
type: 'object',
properties: {
@@ -595,7 +595,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
],
},
},
deploy_mcp: {
['deploy_mcp']: {
parameters: {
type: 'object',
properties: {
@@ -711,7 +711,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
required: ['deploymentType', 'deploymentStatus'],
},
},
download_to_workspace_file: {
['download_to_workspace_file']: {
parameters: {
type: 'object',
properties: {
@@ -730,7 +730,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
edit_content: {
['edit_content']: {
parameters: {
type: 'object',
properties: {
@@ -762,7 +762,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
required: ['success', 'message'],
},
},
edit_workflow: {
['edit_workflow']: {
parameters: {
type: 'object',
properties: {
@@ -785,7 +785,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
params: {
type: 'object',
description:
'Parameters for the operation. \nFor edit: {"inputs": {"temperature": 0.5}} NOT {"subBlocks": {"temperature": {"value": 0.5}}}\nFor add: {"type": "agent", "name": "My Agent", "inputs": {"model": "gpt-4o"}}\nFor delete: {} (empty object)',
'Parameters for the operation. \nFor edit: {"inputs": {"temperature": 0.5}} NOT {"subBlocks": {"temperature": {"value": 0.5}}}\nFor add: {"type": "agent", "name": "My Agent", "inputs": {"model": "claude-sonnet-4-6"}}\nFor delete: {} (empty object)',
},
},
required: ['operation_type', 'block_id', 'params'],
@@ -801,13 +801,13 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
file: {
['file']: {
parameters: {
type: 'object',
},
resultSchema: undefined,
},
function_execute: {
['function_execute']: {
parameters: {
type: 'object',
properties: {
@@ -868,7 +868,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
generate_api_key: {
['generate_api_key']: {
parameters: {
type: 'object',
properties: {
@@ -886,7 +886,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
generate_image: {
['generate_image']: {
parameters: {
type: 'object',
properties: {
@@ -923,7 +923,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
generate_visualization: {
['generate_visualization']: {
parameters: {
type: 'object',
properties: {
@@ -963,7 +963,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
get_block_outputs: {
['get_block_outputs']: {
parameters: {
type: 'object',
properties: {
@@ -984,7 +984,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
get_block_upstream_references: {
['get_block_upstream_references']: {
parameters: {
type: 'object',
properties: {
@@ -1006,7 +1006,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
get_deployed_workflow_state: {
['get_deployed_workflow_state']: {
parameters: {
type: 'object',
properties: {
@@ -1019,7 +1019,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
get_deployment_version: {
['get_deployment_version']: {
parameters: {
type: 'object',
properties: {
@@ -1036,7 +1036,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
get_execution_summary: {
['get_execution_summary']: {
parameters: {
type: 'object',
properties: {
@@ -1063,7 +1063,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
get_job_logs: {
['get_job_logs']: {
parameters: {
type: 'object',
properties: {
@@ -1088,7 +1088,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
get_page_contents: {
['get_page_contents']: {
parameters: {
type: 'object',
properties: {
@@ -1116,14 +1116,14 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
get_platform_actions: {
['get_platform_actions']: {
parameters: {
type: 'object',
properties: {},
},
resultSchema: undefined,
},
get_workflow_data: {
['get_workflow_data']: {
parameters: {
type: 'object',
properties: {
@@ -1142,7 +1142,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
get_workflow_logs: {
['get_workflow_logs']: {
parameters: {
type: 'object',
properties: {
@@ -1168,7 +1168,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
glob: {
['glob']: {
parameters: {
type: 'object',
properties: {
@@ -1187,7 +1187,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
grep: {
['grep']: {
parameters: {
type: 'object',
properties: {
@@ -1234,7 +1234,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
job: {
['job']: {
parameters: {
properties: {
request: {
@@ -1247,7 +1247,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
knowledge: {
['knowledge']: {
parameters: {
properties: {
request: {
@@ -1260,7 +1260,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
knowledge_base: {
['knowledge_base']: {
parameters: {
type: 'object',
properties: {
@@ -1452,7 +1452,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
required: ['success', 'message'],
},
},
list_folders: {
['list_folders']: {
parameters: {
type: 'object',
properties: {
@@ -1464,14 +1464,14 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
list_user_workspaces: {
['list_user_workspaces']: {
parameters: {
type: 'object',
properties: {},
},
resultSchema: undefined,
},
list_workspace_mcp_servers: {
['list_workspace_mcp_servers']: {
parameters: {
type: 'object',
properties: {
@@ -1483,7 +1483,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
manage_credential: {
['manage_credential']: {
parameters: {
type: 'object',
properties: {
@@ -1512,7 +1512,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
manage_custom_tool: {
['manage_custom_tool']: {
parameters: {
type: 'object',
properties: {
@@ -1591,7 +1591,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
manage_job: {
['manage_job']: {
parameters: {
type: 'object',
properties: {
@@ -1661,7 +1661,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
manage_mcp_tool: {
['manage_mcp_tool']: {
parameters: {
type: 'object',
properties: {
@@ -1712,7 +1712,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
manage_skill: {
['manage_skill']: {
parameters: {
type: 'object',
properties: {
@@ -1744,7 +1744,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
materialize_file: {
['materialize_file']: {
parameters: {
type: 'object',
properties: {
@@ -1778,7 +1778,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
move_folder: {
['move_folder']: {
parameters: {
type: 'object',
properties: {
@@ -1796,7 +1796,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
move_workflow: {
['move_workflow']: {
parameters: {
type: 'object',
properties: {
@@ -1816,7 +1816,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
oauth_get_auth_link: {
['oauth_get_auth_link']: {
parameters: {
type: 'object',
properties: {
@@ -1830,7 +1830,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
oauth_request_access: {
['oauth_request_access']: {
parameters: {
type: 'object',
properties: {
@@ -1844,7 +1844,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
open_resource: {
['open_resource']: {
parameters: {
type: 'object',
properties: {
@@ -1872,7 +1872,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
read: {
['read']: {
parameters: {
type: 'object',
properties: {
@@ -1899,7 +1899,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
redeploy: {
['redeploy']: {
parameters: {
type: 'object',
properties: {
@@ -1967,7 +1967,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
],
},
},
rename_file: {
['rename_file']: {
parameters: {
type: 'object',
properties: {
@@ -2002,7 +2002,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
required: ['success', 'message'],
},
},
rename_workflow: {
['rename_workflow']: {
parameters: {
type: 'object',
properties: {
@@ -2019,7 +2019,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
research: {
['research']: {
parameters: {
properties: {
topic: {
@@ -2032,7 +2032,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
respond: {
['respond']: {
parameters: {
additionalProperties: true,
properties: {
@@ -2055,7 +2055,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
restore_resource: {
['restore_resource']: {
parameters: {
type: 'object',
properties: {
@@ -2073,7 +2073,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
revert_to_version: {
['revert_to_version']: {
parameters: {
type: 'object',
properties: {
@@ -2090,7 +2090,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
run: {
['run']: {
parameters: {
properties: {
context: {
@@ -2107,7 +2107,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
run_block: {
['run_block']: {
parameters: {
type: 'object',
properties: {
@@ -2139,7 +2139,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
run_from_block: {
['run_from_block']: {
parameters: {
type: 'object',
properties: {
@@ -2171,7 +2171,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
run_workflow: {
['run_workflow']: {
parameters: {
type: 'object',
properties: {
@@ -2199,7 +2199,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
run_workflow_until_block: {
['run_workflow_until_block']: {
parameters: {
type: 'object',
properties: {
@@ -2231,7 +2231,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
scrape_page: {
['scrape_page']: {
parameters: {
type: 'object',
properties: {
@@ -2252,7 +2252,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
search_documentation: {
['search_documentation']: {
parameters: {
type: 'object',
properties: {
@@ -2269,7 +2269,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
search_library_docs: {
['search_library_docs']: {
parameters: {
type: 'object',
properties: {
@@ -2290,7 +2290,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
search_online: {
['search_online']: {
parameters: {
type: 'object',
properties: {
@@ -2331,7 +2331,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
search_patterns: {
['search_patterns']: {
parameters: {
type: 'object',
properties: {
@@ -2353,7 +2353,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
set_block_enabled: {
['set_block_enabled']: {
parameters: {
type: 'object',
properties: {
@@ -2375,7 +2375,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
set_environment_variables: {
['set_environment_variables']: {
parameters: {
type: 'object',
properties: {
@@ -2409,7 +2409,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
set_global_workflow_variables: {
['set_global_workflow_variables']: {
parameters: {
type: 'object',
properties: {
@@ -2447,7 +2447,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
superagent: {
['superagent']: {
parameters: {
properties: {
task: {
@@ -2461,7 +2461,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
table: {
['table']: {
parameters: {
properties: {
request: {
@@ -2474,7 +2474,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
tool_search_tool_regex: {
['tool_search_tool_regex']: {
parameters: {
properties: {
case_insensitive: {
@@ -2495,7 +2495,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
update_job_history: {
['update_job_history']: {
parameters: {
type: 'object',
properties: {
@@ -2513,7 +2513,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
update_workspace_mcp_server: {
['update_workspace_mcp_server']: {
parameters: {
type: 'object',
properties: {
@@ -2538,7 +2538,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
user_memory: {
['user_memory']: {
parameters: {
type: 'object',
properties: {
@@ -2586,7 +2586,7 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
},
resultSchema: undefined,
},
user_table: {
['user_table']: {
parameters: {
type: 'object',
properties: {
@@ -2679,6 +2679,19 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
description:
'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.',
},
position: {
type: 'integer',
description:
'Zero-based index at which to insert the row (optional, insert_row only). Rows at and below that index shift down. Omit to append at the end.',
},
positions: {
type: 'array',
description:
'Per-row insertion indices for batch_insert_rows (optional). Must be the same length as rows and contain no duplicates. Values are final positions in the resulting table — lower-index shifts are applied automatically. Omit to append all rows at the end.',
items: {
type: 'integer',
},
},
rowId: {
type: 'string',
description: 'Row ID (required for get_row, update_row, delete_row)',
@@ -2777,13 +2790,13 @@ export const TOOL_RUNTIME_SCHEMAS: Record<string, ToolRuntimeSchemaEntry> = {
required: ['success', 'message'],
},
},
workflow: {
['workflow']: {
parameters: {
type: 'object',
},
resultSchema: undefined,
},
workspace_file: {
['workspace_file']: {
parameters: {
type: 'object',
properties: {
@@ -309,7 +309,13 @@ export const userTableServerTool: BaseServerTool<UserTableArgs, UserTableResult>
const requestId = generateId().slice(0, 8)
assertNotAborted()
const row = await insertRow(
{ tableId: args.tableId, data: args.data, workspaceId, userId: context.userId },
{
tableId: args.tableId,
data: args.data,
workspaceId,
userId: context.userId,
position: args.position as number | undefined,
},
table,
requestId
)
@@ -332,6 +338,20 @@ export const userTableServerTool: BaseServerTool<UserTableArgs, UserTableResult>
return { success: false, message: 'Workspace ID is required' }
}
const positions = args.positions as number[] | undefined
if (positions !== undefined && positions.length !== args.rows.length) {
return {
success: false,
message: `positions length (${positions.length}) must match rows length (${args.rows.length})`,
}
}
if (positions !== undefined && new Set(positions).size !== positions.length) {
return {
success: false,
message: 'positions must not contain duplicate values',
}
}
const table = await getTableById(args.tableId)
if (!table) {
return { success: false, message: `Table not found: ${args.tableId}` }
@@ -340,7 +360,13 @@ export const userTableServerTool: BaseServerTool<UserTableArgs, UserTableResult>
const requestId = generateId().slice(0, 8)
assertNotAborted()
const rows = await batchInsertRows(
{ tableId: args.tableId, rows: args.rows, workspaceId, userId: context.userId },
{
tableId: args.tableId,
rows: args.rows,
workspaceId,
userId: context.userId,
positions,
},
table,
requestId
)