mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-28 05:12:26 +00:00
When `jarvis serve` runs with an API key configured, AuthMiddleware 401s every /v1 and /api request that lacks a Bearer token. The frontend never sent one, so telemetry, managed-agents, savings, etc. all failed (#266). - Add getApiKey() (reads settings.apiKey, with optional VITE_OPENJARVIS_API_KEY build-time override) and authHeaders() to api.ts, plus an apiFetch() wrapper that prepends getBase() and injects the Bearer header on every local-server call. Route all /v1 + /api fetches through it so none can omit auth. - Add `apiKey` to the Settings model (store.ts) and a password field in Settings → Connection so users can enter it. Keyless local servers are unaffected: with no key, no Authorization header is sent (byte-for-byte unchanged). The Supabase savings path keeps its own anon key — not conflated with the local key. Bootstraps vitest (no prior frontend test runner) + a `test` script, and adds api.auth.test.ts covering getApiKey/authHeaders. Verified: tsc --noEmit clean, vitest 6/6, vite build succeeds. Deferred (not in scope): WebSocket auth (browsers can't set WS headers) and Tauri auto-injecting a generated key. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
62 lines
1.6 KiB
JSON
62 lines
1.6 KiB
JSON
{
|
|
"name": "openjarvis-chat",
|
|
"private": true,
|
|
"version": "1.0.1",
|
|
"type": "module",
|
|
"engines": {
|
|
"node": ">=20"
|
|
},
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc -b && vite build",
|
|
"build:tauri": "tsc -b && vite build --outDir dist",
|
|
"preview": "vite preview",
|
|
"tauri": "tauri",
|
|
"test": "vitest run"
|
|
},
|
|
"dependencies": {
|
|
"@base-ui/react": "^1.3.0",
|
|
"@fontsource-variable/geist": "^5.2.8",
|
|
"@tailwindcss/vite": "^4.2.1",
|
|
"@tauri-apps/api": "^2",
|
|
"@tauri-apps/plugin-autostart": "^2",
|
|
"@tauri-apps/plugin-dialog": "^2.7.0",
|
|
"@tauri-apps/plugin-global-shortcut": "^2",
|
|
"@tauri-apps/plugin-notification": "^2",
|
|
"@tauri-apps/plugin-process": "^2",
|
|
"@tauri-apps/plugin-shell": "^2",
|
|
"@tauri-apps/plugin-updater": "^2",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"katex": "^0.16.38",
|
|
"lucide-react": "^0.576.0",
|
|
"motion": "^12.38.0",
|
|
"posthog-js": "^1.373.2",
|
|
"react": "^19.0.0",
|
|
"react-dom": "^19.0.0",
|
|
"react-markdown": "^10.1.0",
|
|
"react-router": "^7.13.1",
|
|
"recharts": "^3.7.0",
|
|
"rehype-highlight": "^7.0.2",
|
|
"rehype-katex": "^7.0.1",
|
|
"remark-gfm": "^4.0.1",
|
|
"remark-math": "^6.0.0",
|
|
"shadcn": "^4.0.7",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^3.5.0",
|
|
"tailwindcss": "^4.2.1",
|
|
"tw-animate-css": "^1.4.0",
|
|
"zustand": "^5.0.11"
|
|
},
|
|
"devDependencies": {
|
|
"@tauri-apps/cli": "^2",
|
|
"@types/react": "^19.0.0",
|
|
"@types/react-dom": "^19.0.0",
|
|
"@vitejs/plugin-react": "^4.3.4",
|
|
"typescript": "~5.7.0",
|
|
"vite": "^6.0.0",
|
|
"vite-plugin-pwa": "^1.2.0",
|
|
"vitest": "^3.2.6"
|
|
}
|
|
}
|