- A
+
+
+
+
+ Settings
+
+
+ Providers
+
+
+
+
+
+
+
+
+
+ {{ provider.name }}
+
+
+
+
+
+
+
diff --git a/apps/stage-web/src/pages/settings/providers/openrouter.vue b/apps/stage-web/src/pages/settings/providers/openrouter.vue
new file mode 100644
index 000000000..e1e2b42c6
--- /dev/null
+++ b/apps/stage-web/src/pages/settings/providers/openrouter.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+ Provider
+
+
+ OpenRouter
+
+
+
+
+
+
diff --git a/apps/stage-web/src/pages/settings/themes/index.vue b/apps/stage-web/src/pages/settings/themes/index.vue
new file mode 100644
index 000000000..691d43896
--- /dev/null
+++ b/apps/stage-web/src/pages/settings/themes/index.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+ Settings
+
+
+ Themes
+
+
+
+
+
+
+
+meta:
+ stageTransition:
+ name: slide
+
diff --git a/packages/stage-ui/src/stores/providers.ts b/packages/stage-ui/src/stores/providers.ts
index 21d7a8c1d..a1ced1740 100644
--- a/packages/stage-ui/src/stores/providers.ts
+++ b/packages/stage-ui/src/stores/providers.ts
@@ -1,5 +1,6 @@
import { useLocalStorage } from '@vueuse/core'
import { defineStore } from 'pinia'
+import { computed } from 'vue'
export const useProvidersStore = defineStore('providers', () => {
const providers = useLocalStorage
>>('settings/credentials/providers', {})
@@ -7,9 +8,24 @@ export const useProvidersStore = defineStore('providers', () => {
const coreControllerProvider = useLocalStorage('settings/credentials/coreControllerProvider', 'openai')
const audioSynthesisProvider = useLocalStorage('settings/credentials/audioSynthesisProvider', 'elevenlabs')
+ const configuredForOpenRouter = computed(() => {
+ return !!providers.value['openrouter-ai'].baseUrl && !!providers.value['openrouter-ai'].apiKey
+ })
+
+ function configuredFor(provider: string): boolean {
+ switch (provider) {
+ case 'openrouter-ai':
+ return configuredForOpenRouter.value
+ default:
+ return false
+ }
+ }
+
return {
providers,
coreControllerProvider,
audioSynthesisProvider,
+ configuredForOpenRouter,
+ configuredFor,
}
})
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8f306dbae..a0a7a9371 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -680,6 +680,9 @@ importers:
'@iconify-json/svg-spinners':
specifier: ^1.2.2
version: 1.2.2
+ '@iconify-json/vscode-icons':
+ specifier: ^1.2.16
+ version: 1.2.16
'@iconify/utils':
specifier: ^2.3.0
version: 2.3.0
@@ -3093,6 +3096,9 @@ packages:
'@iconify-json/svg-spinners@1.2.2':
resolution: {integrity: sha512-DIErwfBWWzLfmAG2oQnbUOSqZhDxlXvr8941itMCrxQoMB0Hiv8Ww6Bln/zIgxwjDvSem2dKJtap+yKKwsB/2A==}
+ '@iconify-json/vscode-icons@1.2.16':
+ resolution: {integrity: sha512-hstc2yVq2UJ6v6FrgjftzXRvphGZBsKxvSeXoFLP1Hgx89TPZKrGE5SV6vqsoeIlLYaQ7OZbXmAoVGroTfGmVQ==}
+
'@iconify/tools@4.1.1':
resolution: {integrity: sha512-Hybu/HGhv6T8nLQhiG9rKx+ekF7NNpPOEQAy7JRSKht3s3dcFSsPccYzk24Znc9MTxrR6Gak3cg6CPP5dyvS2Q==}
@@ -13732,6 +13738,10 @@ snapshots:
dependencies:
'@iconify/types': 2.0.0
+ '@iconify-json/vscode-icons@1.2.16':
+ dependencies:
+ '@iconify/types': 2.0.0
+
'@iconify/tools@4.1.1':
dependencies:
'@iconify/types': 2.0.0