diff --git a/packages/chat-client/src/api/orchestration.js b/packages/chat-client/src/api/orchestration.js
index 86843e6..23bc2f9 100644
--- a/packages/chat-client/src/api/orchestration.js
+++ b/packages/chat-client/src/api/orchestration.js
@@ -194,4 +194,10 @@ export async function getServiceHealth() {
const res = await fetch(`${BASE_URL}/health/services`);
if (!res.ok) throw new Error(`Failed to fetch health: ${res.status}`);
return res.json();
+}
+
+export async function getModelProps() {
+ const res = await fetch(`${BASE_URL}/models/props`);
+ if (!res.ok) throw new Error('Failed to fetch model props');
+ return res.json();
}
\ No newline at end of file
diff --git a/packages/chat-client/src/components/SettingsView.jsx b/packages/chat-client/src/components/SettingsView.jsx
index 187c015..bbc93ab 100644
--- a/packages/chat-client/src/components/SettingsView.jsx
+++ b/packages/chat-client/src/components/SettingsView.jsx
@@ -2,6 +2,7 @@ import React, { useState, useEffect, useCallback } from 'react';
import { useSettings } from '../hooks/useSettings';
import { getServiceHealth } from '../api/orchestration';
import { useModels } from '../hooks/useModels';
+import { getModelProps } from '../api/orchestration';
export default function SettingsView({ onNavigate }) {
const { settings, saveSetting, saving } = useSettings();
@@ -243,6 +244,11 @@ function ModelsSection({ onNavigate }) {
const [selectedInfo, setSelectedInfo] = useState(null);
const {settings, saveSetting, saving} = useSettings();
+ const [modelProps, setModelProps] = useState(null);
+ useEffect(() => {
+ getModelProps().then(setModelProps).catch(() => {});
+ }, []);
+
// Sync info panel when selection changes
useEffect(() => {
const m = models.find(m => m.value === selectedModel);
@@ -325,6 +331,15 @@ function ModelsSection({ onNavigate }) {
{selectedInfo.description && (
Model loading and parameter configuration coming soon diff --git a/packages/orchestration-service/src/routes/models.js b/packages/orchestration-service/src/routes/models.js index 8c360c3..17e266e 100644 --- a/packages/orchestration-service/src/routes/models.js +++ b/packages/orchestration-service/src/routes/models.js @@ -4,6 +4,9 @@ const fs = require('fs'); const path = require('path'); const appSettings = require('../config/settings'); +const { getEnv, SERVICES } = require('@nexusai/shared'); +const INFERENCE_SERVICE_URL = getEnv('INFERENCE_SERVICE_URL', SERVICES.INFERENCE_URL); + router.get('/', (req, res) => { const { modelsFolderPath } = appSettings.load(); @@ -40,6 +43,21 @@ router.get('/', (req, res) => { } }); +router.get('/props', async (req, res) => { + try { + const response = await fetch(`${INFERENCE_SERVICE_URL}/props`); + if (!response.ok) throw new Error(`Inference service error: ${response.status}`); + const data = await response.json(); + res.json({ + contextWindow: data.n_ctx, + modelAlias: data.model_alias, + }); + } catch (err) { + console.error('[models/props]', err.message); + res.status(503).json({ error: 'Could not reach inference service' }); + } +}); + function getFileSizeMB(filepath) { try { const bytes = fs.statSync(filepath).size;