diff --git a/.env b/.env index 84c99344..7d3e6836 100644 --- a/.env +++ b/.env @@ -24,4 +24,4 @@ PUBLIC_AUTH_ENABLE_SSO=true PUBLIC_AUTH_ENABLE_FIND_PWD=true PUBLIC_ENVIRONMENTS=[] PUBLIC_PRIMARY_COLOR="#556ee6" -PUBLIC_SECONDARY_COLOR= \ No newline at end of file +PUBLIC_SECONDARY_COLOR="" \ No newline at end of file diff --git a/src/lib/helpers/http.js b/src/lib/helpers/http.js index 0071dfc9..a748dc6c 100644 --- a/src/lib/helpers/http.js +++ b/src/lib/helpers/http.js @@ -234,7 +234,6 @@ function skipLoader(config) { new RegExp('http(s*)://(.*?)/agent/tasks', 'g'), new RegExp('http(s*)://(.*?)/agent/(.*?)/code-scripts', 'g'), new RegExp('http(s*)://(.*?)/rule/triggers', 'g'), - new RegExp('http(s*)://(.*?)/rule/config/options', 'g'), new RegExp('http(s*)://(.*?)/conversation/state/keys', 'g'), new RegExp('http(s*)://(.*?)/conversation/(.*?)/files/(.*?)', 'g'), new RegExp('http(s*)://(.*?)/llm-configs', 'g'), diff --git a/src/lib/scss/_variables-dark.scss b/src/lib/scss/_variables-dark.scss index 9926b3ad..17bb9366 100644 --- a/src/lib/scss/_variables-dark.scss +++ b/src/lib/scss/_variables-dark.scss @@ -101,7 +101,7 @@ $footer-color-dark: #a6b0cf; /* Horizontal nav */ $topnav-bg-dark: #282e3f; $menu-item-color-dark: #a6b0cf; -$menu-item-active-color-dark: #556ee6; +$menu-item-active-color-dark: var(--#{$prefix}primary); $boxed-body-bg-dark: #32394f; diff --git a/src/lib/scss/_variables.scss b/src/lib/scss/_variables.scss index 2896d8e5..6fbacbc6 100644 --- a/src/lib/scss/_variables.scss +++ b/src/lib/scss/_variables.scss @@ -10,7 +10,7 @@ $sidebar-menu-item-color: #545a6d; $sidebar-menu-sub-item-color: #545a6d; $sidebar-menu-item-icon-color: #7f8387; $sidebar-menu-item-hover-color: #383c40; -$sidebar-menu-item-active-color: #556ee6; +$sidebar-menu-item-active-color: var(--#{$prefix}primary); $sidebar-width: 250px; $sidebar-collapsed-width: 70px; $sidebar-width-sm: 160px; @@ -44,7 +44,7 @@ $footer-color: #74788d; $topnav-bg: $white; $menu-item-color: #545a6d; -$menu-item-active-color: #556ee6; +$menu-item-active-color: var(--#{$prefix}primary); /* Right Sidebar */ $rightbar-width: 280px; @@ -138,8 +138,17 @@ $colors: ( /* scss-docs-end colors-map */ /* scss-docs-start theme-color-variables */ -$primary: $purple; -$secondary: $gray-600; +/* `env-vars` is a virtual partial served by a custom Sass importer in */ +/* vite.config.js. It exposes PUBLIC_PRIMARY_COLOR / PUBLIC_SECONDARY_COLOR */ +/* from .env as `$env-primary` / `$env-secondary`. When the env vars are */ +/* empty the import yields nothing and the `!default` fallbacks below */ +/* preserve the original theme. */ +@import "env-vars"; +$env-primary: $purple !default; +$env-secondary: $gray-600 !default; + +$primary: $env-primary; +$secondary: $env-secondary; $success: $green; $info: $cyan; $warning: $yellow; diff --git a/src/lib/scss/custom/pages/_chat.scss b/src/lib/scss/custom/pages/_chat.scss index 140facf8..dac2910a 100644 --- a/src/lib/scss/custom/pages/_chat.scss +++ b/src/lib/scss/custom/pages/_chat.scss @@ -670,7 +670,7 @@ } .state-delete { - flex: 0.1; + flex: 0.05; color: var(--bs-danger); font-size: 12px; } diff --git a/src/lib/services/agent-service.js b/src/lib/services/agent-service.js index 8aa5b277..7b7fb522 100644 --- a/src/lib/services/agent-service.js +++ b/src/lib/services/agent-service.js @@ -126,15 +126,6 @@ export async function getAgentRuleOptionsById(agentId) { return response.data; } -/** - * Get agent rule config options - * @returns {Promise} - */ -export async function getAgentRuleConfigOptions() { - const url = endpoints.agentRuleConfigOptionsUrl; - const response = await axios.get(url); - return response.data; -} /** * Get agent labels diff --git a/src/lib/services/api-endpoints.js b/src/lib/services/api-endpoints.js index ff75973d..fd89b888 100644 --- a/src/lib/services/api-endpoints.js +++ b/src/lib/services/api-endpoints.js @@ -41,7 +41,6 @@ export const endpoints = { agentUtilityOptionsUrl: `${host}/agent/utility/options`, agentRuleOptionsUrl: `${host}/rule/triggers`, agentRuleOptionsByIdUrl: `${host}/rule/triggers/{agentId}`, - agentRuleConfigOptionsUrl: `${host}/rule/config/options`, agentLabelsUrl: `${host}/agent/labels`, // agent code script: diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index b760cab1..5b70cdf8 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -5,10 +5,6 @@ import '$lib/scss/icons.scss'; import { addMessages, init, getLocaleFromNavigator } from 'svelte-i18n'; import en from '$lib/langs/en.json'; - import { - PUBLIC_PRIMARY_COLOR, - PUBLIC_SECONDARY_COLOR - } from '$env/static/public'; addMessages('en', en); @@ -16,32 +12,7 @@ fallbackLocale: 'en', initialLocale: getLocaleFromNavigator() }); - - /** @type {Record} */ - const colorOverrides = { - ...(PUBLIC_PRIMARY_COLOR ? { '--bs-primary': PUBLIC_PRIMARY_COLOR, '--bs-primary-rgb': hexToRgb(PUBLIC_PRIMARY_COLOR) } : {}), - ...(PUBLIC_SECONDARY_COLOR ? { '--bs-secondary': PUBLIC_SECONDARY_COLOR, '--bs-secondary-rgb': hexToRgb(PUBLIC_SECONDARY_COLOR) } : {}), - }; - - const styleOverride = Object.entries(colorOverrides).map(([k, v]) => `${k}:${v}`).join(';'); - - /** - * Convert a hex color string to an "r, g, b" string for Bootstrap's rgb variables. - * @param {string} hex - * @returns {string} - */ - function hexToRgb(hex) { - const h = hex.replace('#', ''); - const n = parseInt(h, 16); - return `${(n >> 16) & 255}, ${(n >> 8) & 255}, ${n & 255}`; - } - - {#if styleOverride} - {@html ``} - {/if} - - diff --git a/src/routes/page/agent/[agentId]/+page.svelte b/src/routes/page/agent/[agentId]/+page.svelte index 84d0d2d6..4ef0d71c 100644 --- a/src/routes/page/agent/[agentId]/+page.svelte +++ b/src/routes/page/agent/[agentId]/+page.svelte @@ -11,7 +11,6 @@ import { AgentExtensions } from '$lib/helpers/utils/agent'; import { globalEventStore } from '$lib/helpers/store'; import { GlobalEvent } from '$lib/helpers/enums'; - import { myInfo } from '$lib/services/auth-service'; import AgentInstruction from './agent-components/agent-instruction.svelte'; import AgentOverview from './agent-components/agent-overview.svelte'; import AgentTemplate from './agent-components/templates/agent-template.svelte'; @@ -28,8 +27,6 @@ let agentTemplateCmp = $state(null); /** @type {any} */ let agentTabsCmp = $state(null); - /** @type {import('$userTypes').UserModel} */ - let user = $state(/** @type {any} */ (undefined)); /** @type {any} */ let unsubscriber; @@ -54,8 +51,6 @@ } onMount(async () => { - user = await myInfo(); - unsubscriber = globalEventStore.subscribe((/** @type {import('$commonTypes').GlobalEvent} */ event) => { if (event.name !== GlobalEvent.Search) return; @@ -214,7 +209,6 @@ diff --git a/src/routes/page/agent/[agentId]/agent-components/rules/agent-rule-item.svelte b/src/routes/page/agent/[agentId]/agent-components/rules/agent-rule-item.svelte index e71779ee..ba2ee3df 100644 --- a/src/routes/page/agent/[agentId]/agent-components/rules/agent-rule-item.svelte +++ b/src/routes/page/agent/[agentId]/agent-components/rules/agent-rule-item.svelte @@ -1,40 +1,30 @@
@@ -138,22 +122,6 @@
{/if} - - {#if ADMIN_ROLES.includes(user?.role || '') && !!rule.trigger_name && rule.config?.topology_name} -
- {}} - onclick={() => toggleConfig()} - > -
- {/if}
@@ -181,36 +149,4 @@
- - {#if !collapsed} -
-
-
-
-
-
- {'Topology'} -
-
-
-
-
-
- -
-
-
-
-
-
- {/if} \ No newline at end of file diff --git a/src/routes/page/agent/[agentId]/agent-components/rules/agent-rule.svelte b/src/routes/page/agent/[agentId]/agent-components/rules/agent-rule.svelte index b8671324..7225ba35 100644 --- a/src/routes/page/agent/[agentId]/agent-components/rules/agent-rule.svelte +++ b/src/routes/page/agent/[agentId]/agent-components/rules/agent-rule.svelte @@ -1,22 +1,19 @@ @@ -335,18 +248,6 @@ {errorText} /> -{#if isOpenConfigModal} - isOpenConfigModal = !isOpenConfigModal} - > - - -{/if} -
@@ -360,14 +261,11 @@ rule={rule} ruleIndex={uid} collapsed={!rule.expanded} - user={user} ruleOptions={ruleOptions} - configOptions={configOptions} windowWidth={windowWidth} ontoggle={data => toggleRule(data, uid)} ondelete={data => deleteRule(data, uid)} onchange={data => changeRule(data, uid)} - onconfig={data => openRuleConfigModal(data, uid)} oncollapse={data => toggleCollapse(data, uid)} /> {/each} diff --git a/src/routes/page/agent/[agentId]/agent-tabs.svelte b/src/routes/page/agent/[agentId]/agent-tabs.svelte index a7c7cf79..128e037d 100644 --- a/src/routes/page/agent/[agentId]/agent-tabs.svelte +++ b/src/routes/page/agent/[agentId]/agent-tabs.svelte @@ -11,13 +11,11 @@ /** * @type {{ * agent: import('$agentTypes').AgentModel, - * user: import('$userTypes').UserModel, * handleAgentChange?: () => void * }} */ let { agent, - user, handleAgentChange = () => {} } = $props(); @@ -100,7 +98,7 @@
- +
diff --git a/vite.config.js b/vite.config.js index 6174f8a9..60aae59d 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,44 +1,72 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; -import { defineConfig } from 'vite'; +import { defineConfig, loadEnv } from 'vite'; -export default defineConfig({ - // @ts-ignore - plugins: [tailwindcss(), sveltekit(), AutoRefreshHmr()], - ssr: { - noExternal: ['@popperjs/core'] - }, - optimizeDeps: { - include: [ - 'svelte', - '@popperjs/core', // Add @popperjs/core to the list of dependencies to include - "overlayscrollbars-svelte", - "svelte-select", - 'lodash.get', 'lodash.isequal', 'lodash.clonedeep' - ], - exclude: [ - "svelte-codemirror-editor", - "codemirror", - "@codemirror/lang-python", - "@codemirror/view", - "@codemirror/state", - "@codemirror/language", - "@codemirror/commands", - "@codemirror/theme-one-dark" - ] - }, - css: { - preprocessorOptions: { - scss: { - silenceDeprecations: ['import', 'legacy-js-api'], - loadPaths: ['node_modules'] +// @ts-ignore +export default defineConfig(({ mode }) => { + // Materialize PUBLIC_PRIMARY_COLOR / PUBLIC_SECONDARY_COLOR from .env into + // an in-memory SCSS partial served by a custom Sass importer. `_variables.scss` + // resolves these by doing `@import "env-vars";`. Nothing is written to disk. + const env = loadEnv(mode, process.cwd(), 'PUBLIC_'); + const primary = (env.PUBLIC_PRIMARY_COLOR || '').replace(/^"|"$/g, ''); + const secondary = (env.PUBLIC_SECONDARY_COLOR || '').replace(/^"|"$/g, ''); + const scssEnv = + (primary ? `$env-primary: ${primary};\n` : '') + + (secondary ? `$env-secondary: ${secondary};\n` : ''); + + return { + // @ts-ignore + plugins: [tailwindcss(), sveltekit(), AutoRefreshHmr()], + ssr: { + noExternal: ['@popperjs/core'] + }, + optimizeDeps: { + include: [ + 'svelte', + '@popperjs/core', // Add @popperjs/core to the list of dependencies to include + "overlayscrollbars-svelte", + "svelte-select", + 'lodash.get', 'lodash.isequal', 'lodash.clonedeep' + ], + exclude: [ + "svelte-codemirror-editor", + "codemirror", + "@codemirror/lang-python", + "@codemirror/view", + "@codemirror/state", + "@codemirror/language", + "@codemirror/commands", + "@codemirror/theme-one-dark" + ] + }, + css: { + preprocessorOptions: { + scss: { + silenceDeprecations: ['import', 'legacy-js-api'], + loadPaths: ['node_modules'], + importers: [ + { + /** @param {string} url */ + canonicalize(url) { + return url === 'env-vars' ? new URL('sass-virtual:env-vars') : null; + }, + /** @param {URL} canonicalUrl */ + load(canonicalUrl) { + if (canonicalUrl.protocol === 'sass-virtual:') { + return { contents: scssEnv, syntax: 'scss' }; + } + return null; + } + } + ] + } } + }, + server: { + port: 5015, + host: "0.0.0.0", } - }, - server: { - port: 5015, - host: "0.0.0.0", - } + }; }); function AutoRefreshHmr() {