From a839c40e735964ff8820b796c8c665208b2ea3fd Mon Sep 17 00:00:00 2001 From: Flamki <9833ayush@gmail.com> Date: Thu, 12 Feb 2026 01:31:10 +0530 Subject: [PATCH 1/7] Expose app version info in settings - merge main features (mcp + system route, Application + MCP settings cards) --- .env.example | 5 +++ .github/workflows/docker.yml | 3 ++ Dockerfile | 7 +++ README.md | 2 - apps/backend/src/agents/tools/execute-sql.ts | 3 +- apps/backend/src/env.ts | 4 ++ apps/backend/src/trpc/router.ts | 2 + apps/backend/src/trpc/system.routes.ts | 10 +++++ .../_sidebar-layout.settings.project.tsx | 45 ++++++++++++++++++- 9 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 apps/backend/src/trpc/system.routes.ts diff --git a/.env.example b/.env.example index 13aa605..f5fed3a 100644 --- a/.env.example +++ b/.env.example @@ -26,6 +26,11 @@ SLACK_SIGNING_SECRET= # Context folder (to change for your setup) NAO_DEFAULT_PROJECT_PATH=/Users/blef/Work/naolabs/chat/example +# Build metadata (optional) +APP_VERSION=dev +APP_COMMIT=unknown +APP_BUILD_DATE= + # SMTP server Configuration SMTP_HOST= # smtp.yourservice.com SMTP_SSL=false diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 84aea57..b386cae 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -59,6 +59,9 @@ jobs: cache-to: type=gha,mode=max build-args: | GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} + APP_VERSION=${{ steps.sha.outputs.short_sha }} + APP_COMMIT=${{ github.sha }} + APP_BUILD_DATE=${{ github.event.head_commit.timestamp }} - name: Update Docker Hub description if: github.event_name != 'pull_request' diff --git a/Dockerfile b/Dockerfile index 1b27423..81c1ca6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -73,6 +73,10 @@ RUN uv pip install --system . # ============================================================================= FROM python:3.12-slim AS runtime +ARG APP_VERSION=dev +ARG APP_COMMIT=unknown +ARG APP_BUILD_DATE= + # Install Node.js, Bun, git, and supervisor RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ @@ -128,6 +132,9 @@ ENV MODE=prod ENV NODE_ENV=production ENV BETTER_AUTH_URL=http://localhost:5005 ENV FASTAPI_PORT=8005 +ENV APP_VERSION=$APP_VERSION +ENV APP_COMMIT=$APP_COMMIT +ENV APP_BUILD_DATE=$APP_BUILD_DATE ENV NAO_DEFAULT_PROJECT_PATH=/app/example ENV NAO_CONTEXT_SOURCE=local diff --git a/README.md b/README.md index 6ce5cae..b734c17 100644 --- a/README.md +++ b/README.md @@ -170,8 +170,6 @@ docker run -d \ -e BETTER_AUTH_URL=http://localhost:5005 \ -v /path/to/your/nao-project:/app/project \ -e NAO_DEFAULT_PROJECT_PATH=/app/project \ - getnao/nao:latest -``` Access the UI at http://localhost:5005 diff --git a/apps/backend/src/agents/tools/execute-sql.ts b/apps/backend/src/agents/tools/execute-sql.ts index be918ce..3099abe 100644 --- a/apps/backend/src/agents/tools/execute-sql.ts +++ b/apps/backend/src/agents/tools/execute-sql.ts @@ -19,8 +19,9 @@ export default tool({ export async function executeQuery({ sql_query, database_id }: executeSql.Input): Promise { const naoProjectFolder = getProjectFolder(); + const executeSqlUrl = new URL('/execute_sql', `http://127.0.0.1:${env.FASTAPI_PORT}`).toString(); - const response = await fetch(`http://localhost:${env.FASTAPI_PORT}/execute_sql`, { + const response = await fetch(executeSqlUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/apps/backend/src/env.ts b/apps/backend/src/env.ts index 9b010ef..eaefbf0 100644 --- a/apps/backend/src/env.ts +++ b/apps/backend/src/env.ts @@ -33,6 +33,10 @@ const envSchema = z.object({ FASTAPI_PORT: z.coerce.number().default(8005), + APP_VERSION: z.string().default('dev'), + APP_COMMIT: z.string().default('unknown'), + APP_BUILD_DATE: z.string().default(''), + NAO_DEFAULT_PROJECT_PATH: z.string().optional(), MCP_JSON_FILE_PATH: z.string().optional(), diff --git a/apps/backend/src/trpc/router.ts b/apps/backend/src/trpc/router.ts index 6326867..50f526c 100644 --- a/apps/backend/src/trpc/router.ts +++ b/apps/backend/src/trpc/router.ts @@ -5,6 +5,7 @@ import { googleRoutes } from './google.routes'; import { mcpRoutes } from './mcp.routes'; import { posthogRoutes } from './posthog.routes'; import { projectRoutes } from './project.routes'; +import { systemRoutes } from './system.routes'; import { router } from './trpc'; import { usageRoutes } from './usage.routes'; import { userRoutes } from './user.routes'; @@ -19,6 +20,7 @@ export const trpcRouter = router({ google: googleRoutes, account: accountRoutes, mcp: mcpRoutes, + system: systemRoutes, }); export type TrpcRouter = typeof trpcRouter; diff --git a/apps/backend/src/trpc/system.routes.ts b/apps/backend/src/trpc/system.routes.ts new file mode 100644 index 0000000..dc9c529 --- /dev/null +++ b/apps/backend/src/trpc/system.routes.ts @@ -0,0 +1,10 @@ +import { env } from '../env'; +import { adminProtectedProcedure } from './trpc'; + +export const systemRoutes = { + version: adminProtectedProcedure.query(() => ({ + version: env.APP_VERSION, + commit: env.APP_COMMIT, + buildDate: env.APP_BUILD_DATE, + })), +}; diff --git a/apps/frontend/src/routes/_sidebar-layout.settings.project.tsx b/apps/frontend/src/routes/_sidebar-layout.settings.project.tsx index 2002656..0ddcc09 100644 --- a/apps/frontend/src/routes/_sidebar-layout.settings.project.tsx +++ b/apps/frontend/src/routes/_sidebar-layout.settings.project.tsx @@ -40,8 +40,11 @@ function ProjectPage() { const { tab } = Route.useSearch(); const activeTab = tab ?? 'project'; const project = useQuery(trpc.project.getCurrent.queryOptions()); - const isAdmin = project.data?.userRole === 'admin'; + const appVersion = useQuery({ + ...trpc.system.version.queryOptions(), + enabled: isAdmin, + }); return (
@@ -90,6 +93,46 @@ function ProjectPage() { + + {isAdmin && ( + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ )}
)} From 3c1f4931b651471c4ed45a59df5a280c7641e8d3 Mon Sep 17 00:00:00 2001 From: Flamki <9833ayush@gmail.com> Date: Thu, 12 Feb 2026 17:29:40 +0530 Subject: [PATCH 2/7] chore: format files with Prettier (fix CI format check) --- README.md | 1 + .../routes/_sidebar-layout.settings.project.tsx | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b734c17..a272e9a 100644 --- a/README.md +++ b/README.md @@ -214,3 +214,4 @@ nao Labs is a proud Y Combinator company! ## 📄 License This project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details. +``` diff --git a/apps/frontend/src/routes/_sidebar-layout.settings.project.tsx b/apps/frontend/src/routes/_sidebar-layout.settings.project.tsx index 0ddcc09..e5fc206 100644 --- a/apps/frontend/src/routes/_sidebar-layout.settings.project.tsx +++ b/apps/frontend/src/routes/_sidebar-layout.settings.project.tsx @@ -98,7 +98,10 @@ function ProjectPage() {
-
-
-