diff --git a/backend/ee-repo-ref.txt b/backend/ee-repo-ref.txt
index e6df7f7752..99c1bc506d 100644
--- a/backend/ee-repo-ref.txt
+++ b/backend/ee-repo-ref.txt
@@ -1 +1 @@
-4c6cbb234019db102c44a91ada36c4a197721aa4
+cc8e28e80bb352269c576ff82b8e679d7a505444
diff --git a/frontend/src/lib/components/copilot/chat/DatatableCreationPolicy.svelte b/frontend/src/lib/components/copilot/chat/DatatableCreationPolicy.svelte
index 65abb0e1c5..6c89e79525 100644
--- a/frontend/src/lib/components/copilot/chat/DatatableCreationPolicy.svelte
+++ b/frontend/src/lib/components/copilot/chat/DatatableCreationPolicy.svelte
@@ -6,7 +6,10 @@
const aiChatManager = getAiChatManager()
import DefaultDatabaseSelector from '$lib/components/raw_apps/DefaultDatabaseSelector.svelte'
import { workspaceStore } from '$lib/stores'
- import { createDatatablesResource } from '$lib/components/raw_apps/datatableUtils.svelte'
+ import {
+ createDatatablesResource,
+ roleAfterDatatableChange
+ } from '$lib/components/raw_apps/datatableUtils.svelte'
// Load available datatables from workspace using shared utility
const datatables = createDatatablesResource(() => $workspaceStore)
@@ -37,8 +40,10 @@
}
function handleDefaultChange(datatable: string | undefined, schema: string | undefined) {
- aiChatManager.datatableCreationPolicy.datatable = datatable
- aiChatManager.datatableCreationPolicy.schema = schema
+ const policy = aiChatManager.datatableCreationPolicy
+ policy.role = roleAfterDatatableChange(policy.datatable, datatable, policy.role)
+ policy.datatable = datatable
+ policy.schema = schema
}
@@ -67,6 +72,7 @@
diff --git a/frontend/src/lib/components/raw_apps/DefaultDatabaseSelector.svelte b/frontend/src/lib/components/raw_apps/DefaultDatabaseSelector.svelte
index 66e3ab0355..16ca39841f 100644
--- a/frontend/src/lib/components/raw_apps/DefaultDatabaseSelector.svelte
+++ b/frontend/src/lib/components/raw_apps/DefaultDatabaseSelector.svelte
@@ -4,8 +4,8 @@
import Select from '$lib/components/select/Select.svelte'
import { workspaceStore } from '$lib/stores'
import {
+ createDatatableAccessResource,
createDatatablesResource,
- createSchemasResource,
toDatatableItems,
toSchemaItems
} from './datatableUtils.svelte'
@@ -20,6 +20,9 @@
datatable: string | undefined
/** Currently selected schema */
schema: string | undefined
+ /** The data table role the app's queries run as, if it names one. What a
+ * role may see is what the schema list has to be read as. */
+ role?: string | undefined
/** Callback when either value changes */
onChange?: (datatable: string | undefined, schema: string | undefined) => void
/** Description text to show in the popover */
@@ -29,19 +32,21 @@
let {
datatable,
schema,
+ role = undefined,
onChange,
description = 'Set the default datatable and schema for new tables. This is where AI will create new tables when needed.'
}: Props = $props()
// Load available datatables and schemas using shared utilities
const datatables = createDatatablesResource(() => opWs)
- const schemas = createSchemasResource(
+ const access = createDatatableAccessResource(
() => datatable,
+ () => role,
() => opWs
)
const datatableItems = $derived(toDatatableItems(datatables.current))
- const schemaItems = $derived(toSchemaItems(schemas.current))
+ const schemaItems = $derived(toSchemaItems(access.current.schemas))
// Track datatable changes to reset schema
let previousDatatable = $state(undefined)
diff --git a/frontend/src/lib/components/raw_apps/RawAppDataTableList.svelte b/frontend/src/lib/components/raw_apps/RawAppDataTableList.svelte
index b874f37d17..a985ae410b 100644
--- a/frontend/src/lib/components/raw_apps/RawAppDataTableList.svelte
+++ b/frontend/src/lib/components/raw_apps/RawAppDataTableList.svelte
@@ -16,6 +16,8 @@
defaultDatatable?: string | undefined
/** Default schema for new tables */
defaultSchema?: string | undefined
+ /** The data table role the app's queries run as, if it names one. */
+ defaultRole?: string | undefined
onAdd?: () => void
onRemove?: (index: number) => void
onSelect?: (ref: DataTableRef, index: number) => void
@@ -31,6 +33,7 @@
dataTableRefs = [],
defaultDatatable = undefined,
defaultSchema = undefined,
+ defaultRole = undefined,
onAdd,
onRemove,
onSelect,
@@ -95,6 +98,7 @@
{/if}
diff --git a/frontend/src/lib/components/raw_apps/RawAppEditor.svelte b/frontend/src/lib/components/raw_apps/RawAppEditor.svelte
index 2b8f3b464f..43242dcd0d 100644
--- a/frontend/src/lib/components/raw_apps/RawAppEditor.svelte
+++ b/frontend/src/lib/components/raw_apps/RawAppEditor.svelte
@@ -1,4 +1,5 @@