diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 0700504ab0..ee1a974346 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -22988,10 +22988,9 @@ components: - flow - job AssetUsageAccessType: - oneOf: - - type: string - enum: [r, w, rw] - - type: 'null' + type: string + enum: [r, w, rw] + nullable: true AssetKind: type: string enum: diff --git a/cli/windmill-utils-internal/src/path-utils/path-assigner.ts b/cli/windmill-utils-internal/src/path-utils/path-assigner.ts index 4b67e06abf..3fedbd8d37 100644 --- a/cli/windmill-utils-internal/src/path-utils/path-assigner.ts +++ b/cli/windmill-utils-internal/src/path-utils/path-assigner.ts @@ -34,6 +34,7 @@ export const LANGUAGE_EXTENSIONS: Record = { java: "java", duckdb: "duckdb.sql", bunnative: "ts", + ruby: "rb", // for related places search: ADD_NEW_LANG }; @@ -82,6 +83,7 @@ export const EXTENSION_TO_LANGUAGE: Record = { "playbook.yml": "ansible", "java": "java", "duckdb.sql": "duckdb", + "rb": "ruby", // Plain .ts defaults to bun (will be overridden by defaultTs setting) "ts": "bun", }; diff --git a/frontend/src/lib/components/assets/lib.ts b/frontend/src/lib/components/assets/lib.ts index c991ecc46b..2dacedbae3 100644 --- a/frontend/src/lib/components/assets/lib.ts +++ b/frontend/src/lib/components/assets/lib.ts @@ -9,9 +9,9 @@ import type { import { capitalize } from '$lib/utils' export type Asset = _Asset export type AssetKind = _AssetKind -export type AssetWithAccessType = Asset & { access_type?: AssetUsageAccessType } +export type AssetWithAccessType = Asset & { access_type?: AssetUsageAccessType | null } export type AssetWithAltAccessType = AssetWithAccessType & { - alt_access_type?: AssetUsageAccessType + alt_access_type?: AssetUsageAccessType | null columns?: Record } export type AssetUsage = ListAssetsResponse['assets'][number]['usages'][number] diff --git a/frontend/src/lib/components/copilot/chat/AIChatManager.svelte.ts b/frontend/src/lib/components/copilot/chat/AIChatManager.svelte.ts index 2e0d05ee0f..8ba95e0dac 100644 --- a/frontend/src/lib/components/copilot/chat/AIChatManager.svelte.ts +++ b/frontend/src/lib/components/copilot/chat/AIChatManager.svelte.ts @@ -538,6 +538,7 @@ class AIChatManager { console.log('chatRequest error', err) console.error('chatRequest error', err) callbacks.onMessageEnd() + this.cancelLoadingTools() if (!abortController.signal.aborted) { throw err } @@ -835,18 +836,7 @@ class AIChatManager { abortController: this.abortController }) this.abortController?.abort(cancelReason) - // Mark all tool messages in loading state as canceled - this.displayMessages = this.displayMessages.map((message) => { - if (message.role === 'tool' && message.isLoading) { - return { - ...message, - isLoading: false, - content: 'Canceled', - error: 'Canceled' - } - } - return message - }) + this.cancelLoadingTools() } cancelInlineRequest = (reason?: string) => { @@ -1202,6 +1192,20 @@ class AIChatManager { this.cachedDatatables = [] } } + + cancelLoadingTools = () => { + this.displayMessages = this.displayMessages.map((message) => { + if (message.role === 'tool' && message.isLoading) { + return { + ...message, + isLoading: false, + content: 'Canceled', + error: 'Canceled' + } + } + return message + }) + } } export const aiChatManager = new AIChatManager() diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index 1c0346db2d..feb67b413c 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -653,13 +653,15 @@ components: - ducklake - datatable access_type: - type: [string, "null"] + type: string + nullable: true description: Access level for this asset - enum: [r, w, rw, null] + enum: [r, w, rw] alt_access_type: - type: [string, "null"] + type: string + nullable: true description: Alternative access level - enum: [r, w, rw, null] + enum: [r, w, rw] required: - type - content