Skip to content

Commit a3683b5

Browse files
committed
fix(databricks): preserve blank input and validation semantics
1 parent 4fc10e4 commit a3683b5

3 files changed

Lines changed: 13 additions & 9 deletions

File tree

‎apps/sim/tools/databricks/cancel_all_runs.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { filterUndefined } from '@sim/utils/object'
2+
import { UserFailure } from '@/lib/core/errors/user-failure'
23
import type {
34
DatabricksCancelAllRunsParams,
45
DatabricksSuccessResponse,
@@ -42,7 +43,7 @@ export const cancelAllRunsTool: ToolConfig<
4243
}),
4344
body: (params) => {
4445
if (params.jobId == null && params.allQueuedRuns !== true) {
45-
throw new Error(
46+
throw new UserFailure(
4647
'Provide jobId or set allQueuedRuns to true to cancel queued workspace runs'
4748
)
4849
}

‎apps/sim/tools/databricks/databricks.test.ts‎

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { jsonResponse } from '@sim/testing/helpers/http'
33
import { partialToolRegistry } from '@sim/testing/mocks/tool-registry.mock'
44
import { getErrorMessage } from '@sim/utils/errors'
55
import { describe, expect, it, vi } from 'vitest'
6+
import { adoptToolFailure, classifyFailure } from '@/lib/core/errors/failure-log'
67

78
vi.mock('@/lib/core/security/input-validation.server', () => inputValidationMock)
89

@@ -64,17 +65,19 @@ describe('Databricks mutation intent', () => {
6465

6566
expect(update('')).toEqual({ description: '' })
6667
expect(update()).not.toHaveProperty('description')
68+
expect(update(' \n\t ')).not.toHaveProperty('description')
6769
})
6870

6971
it.each([undefined, false])(
7072
'rejects cancellation without a job or explicit queued scope (%s)',
71-
(allQueuedRuns) => {
72-
expect(() =>
73-
prepareToolRequest(databricksTools.databricksCancelAllRunsTool, {
74-
...credentials,
75-
allQueuedRuns,
76-
})
77-
).toThrow('Provide jobId or set allQueuedRuns to true')
73+
async (allQueuedRuns) => {
74+
const result = await executeTool('databricks_cancel_all_runs', {
75+
...credentials,
76+
allQueuedRuns,
77+
})
78+
expect(result.success).toBe(false)
79+
expect(result.error).toContain('Provide jobId or set allQueuedRuns to true')
80+
expect(classifyFailure(adoptToolFailure(new Error(result.error), result))).toBe('user')
7881
}
7982
)
8083

‎apps/sim/tools/databricks/genie_update_space.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export const genieUpdateSpaceTool: ToolConfig<
8787
return filterUndefined({
8888
serialized_space: optionalDatabricksString(params.serializedSpace),
8989
title: optionalDatabricksString(params.title),
90-
description: params.description?.trim(),
90+
description: params.description === '' ? '' : optionalDatabricksString(params.description),
9191
warehouse_id: optionalDatabricksString(params.warehouseId),
9292
etag: optionalDatabricksString(params.etag),
9393
parent_path: optionalDatabricksString(params.parentPath),

0 commit comments

Comments
 (0)