Spaces:
Sleeping
Sleeping
Commit History
-
fix: admins bypass RBAC channel filter for doc search
Hardcoded admin session has a single default channel_id which incorrectly restricts search to only chunks tagged with that channel. Admins (role=admin or org_admin) should see the full knowledge base, so pass empty allowed_channel_ids to trigger the broad team_id filter instead.244e03f -
fix: use SameSite=None; Secure on HF Spaces to allow cross-site iframe cookies
HF Spaces embeds the app in an iframe on huggingface.co. SameSite=Lax cookies are silently dropped for cross-site iframes, causing every request after login to return 401. Auto-detect HF via SPACE_ID env var and switch to SameSite=None; Secure=True which browsers allow for third-party contexts.7e328e2
-
fix: in-memory session fallback when Redis is unreachable
Upstash free tier can pause after inactivity. Rather than returning 503, fall back to a module-level dict so login works on single-process deploys like HuggingFace Spaces. Redis is still tried first.e68bb19 -
fix: add timeouts to Redis and Supabase DB calls in login endpoint
Socket timeout prevents Redis from hanging indefinitely on Upstash. DB auth wrapped in run_in_executor+wait_for so a slow Supabase call cannot block the async event loop.f79d4f9 -
fix: build React frontend in Docker and serve from FastAPI
Add Node.js 20 + npm to Docker build, build frontend/dist during image build so FastAPI can serve the SPA via the existing catch-all route in main.py. Also remove frontend/src from .dockerignore so source files are available.36ecfa1 -
fix: add celery back to deploy requirements
Celery was accidentally excluded from requirements.deploy.txt but is imported at startup via src/confluence_agent/tasks.py → ingestion/jobs/celery_app.py, causing ModuleNotFoundError on HuggingFace.36f35e5 -
fix: use deploy requirements without docling/celery to resolve huggingface-hub conflict
5b040fc -
fix: downgrade langchain-openai to 0.3.x to resolve langchain-core conflict
f078f9e -
fix: add HuggingFace Space metadata
89253f1 -
feat: add confluence/slack search tools, chat history, cloud Qdrant support, sync trigger fixes
68af3c5 -
fix: valid HuggingFace color values
cef4843 -
fix: add HuggingFace Space metadata to README
ff88985
-
feat: implement NL-to-SQL agent with PostgreSQL integration and enhance related documentation
Ananth Shyam825e852 -
Implement anomaly detection and forecasting features
Ananth Shyam- Added new documentation for Area 4: Anomaly Detection & Forecasting, detailing its purpose, implementation, and design principles. - Created the anomaly detection module with the following components: - `src/anomaly/__init__.py`: Initialization file for the anomaly module. - `src/anomaly/db.py`: Supabase persistence layer for anomaly signals and query events. - `src/anomaly/notifier.py`: In-process WebSocket broadcast bridge for real-time notifications of critical/high anomaly signals. - `src/anomaly/router.py`: FastAPI router for the anomaly detection API endpoints. - `src/anomaly/tasks.py`: Celery tasks for running anomaly detection algorithms, including Z-score detection, staleness scoring, and dependency risk modeling. - Developed SQL migration script (`supabase/anomaly_migration.sql`) to create necessary tables for storing query events and anomaly signals.451d52a -
fix: update user roles to include 'org_admin' in Sidebar and UserInvite types
Ananth Shyamb391fb0 -
fix: enhance admin functionality and error handling in ingestion and analytics processes
Ananth Shyame646563 -
feat: enhance analytics API with freshness computation and coverage gaps endpoint
Ananth Shyame69f4cf
-
feat: channel RBAC through ingest, graph stream, admin endpoints, email invite
e8b3591 -
fix: use DO block to add team_id column if teams table has wrong schema
1361870 -
fix: rbac_migration — create teams table if schema.sql was skipped
6bc4034 -
fix: type errors, merge OAuth branch, upgrade BM25Store
e2766a5
-
feat: implement Google OAuth2 SSO integration with user management and callback handling
Ananth Shyamd128756
-
User Settings (/settings) — 3 tabs:
Profile — name, email (read-only), password change (collapsible) Preferences — dark mode, notifications, query settings API Keys — add/list/revoke with provider selector (GitHub, OpenAI, Claude, custom) Admin Workspace — 4-tab panel (role-gated for admin/manager): Users — add single user + bulk CSV/Excel import, user table Channels — create channels with sensitivity badges (🌐 Public, 🔒 Internal, 🔐 Confidential, 🚫 Restricted) Audit Log — filter by action + target type, expandable metadata, CSV export Workspace Settings — name, slug, limits, delete workspace Navigation: Settings link added to NavBar, route at /settings with auth guard. All components wired with TanStack Query + react-hook-form stubs awaiting backend endpoints. Knowledge Graph: No UI changes needed — backend already filters nodes/edges by user's allowed_channel_ids.83c125e -
feat: enhance UI state management with graph collapse functionality and improve error handling in API requests
9bb34f8 -
Fix rbac_migration: upsert default team before channel FK insert
e32f628 -
feat: RBAC foundation — workspaces, channels, role-based access
- supabase/rbac_migration.sql: workspaces, users, channels, channel_role_grants, user_channel_permissions, rbac_audit_log tables; backfills existing data into default workspace + General channel; RLS policies - src/auth/db.py: DB-backed user lookup + channel resolution (role grants + per-user overrides merged, explicit revokes subtracted) - src/auth/deps.py: get_current_user FastAPI dependency + require_role() factory - src/auth/router.py: login tries Supabase DB first, falls back to hardcoded dev creds; always includes allowed_channel_ids in the session payload - src/config.py: add supabase_url/supabase_key to main Settings - agent/models.py: QueryInput gains allowed_channel_ids (server-side only) - agent/api.py: query endpoint validates session via get_current_user; overwrites team_id and allowed_channel_ids from auth — client body values are ignored - agent/tools/doc_search.py: Qdrant filter uses channel_ids when set; falls back to team_id for legacy points without chann…a8e67fc
-
feat: implement sidebar component with navigation and recent queries
- Added Sidebar component for navigation with links to Home, Ask, History, and Analytics. - Integrated recent queries fetching and display in the sidebar. - Included theme toggle and user account section with sign-out functionality. - Enhanced UI responsiveness for sidebar expansion and collapse. - Updated routing and notification handling within the sidebar.c0b5012 -
Fix force-graph mount: use ForceGraph2D()(element) not ForceGraph2D(element)
Kapsule (force-graph's base) uses a two-call pattern: first call creates the instance, second call with a DOM element mounts it. Passing the element to the first call treated it as options — the canvas was never attached to the DOM so nothing rendered. Also set explicit width/height.57fa65c -
Fix inline code rendering in Answer: distinguish inline vs block code
Single-backtick agent names like `doc_search` were rendering as full bordered code blocks. Now inline code gets compact pill styling and only fenced triple-backtick blocks get the full CodeBlock treatment.e735b1b -
Fix graph panel race: push pending data after force-graph async init
Dynamic import('force-graph') resolves after WebSocket nodes arrive and set state. The [nodes, edges] effect runs with data but graphRef is null, then force-graph loads but nodes haven't changed so effect never re-runs. Fix: store latest data in pendingRef and push it inside the then() callback.017116e -
Fix WebSocket reconnect loop and SSE false 'incomplete' error
- useGraphStream: set activeRef=false on 'done' so server-initiated close after streaming doesn't trigger reconnect attempts - useSSEStream: track completion via ref (not state) to avoid stale closure causing false 'connection dropped' after a clean done eventbeac0a3 -
Fix team_id: use 'default' to match ingested data
Auth router was hardcoding 'team-default' while all data in Qdrant/Neo4j was indexed with team_id='default', causing all doc_search queries to return empty results.6c457eb -
Fix CSS @import order: move highlight.js import before @tailwind directives
4bc8463 -
Fix npm install: remove non-existent radix badge pkg; fix nullish coalescing syntax error; fix pydantic extra fields
ca17cdd -
Fix pydantic extra fields error in IntegrationSettings and Settings
a0eda55
-
feat: enhance agent event structure and improve SearchBox functionality
8900d0e -
feat: add Zustand stores for filters and UI state management
- Implemented `filterStore` for managing date range and filters. - Created `uiStore` for handling theme, sidebar state, and toast notifications. style: add global styles with Tailwind CSS - Introduced `globals.css` for base styles, skeleton loading animations, and code block copy button styles. test: setup testing environment - Added Jest DOM for improved testing capabilities. feat: define API types for better type safety - Created `api.ts` for various API request and response types. - Added `errors.ts` for standardized error handling. - Defined user-related types in `user.ts`. chore: configure TypeScript settings - Added `tsconfig.json` for TypeScript compiler options. feat: implement admin API for data source management - Developed endpoints for listing and patching data sources using Redis. feat: create analytics API for query events and knowledge health - Implemented endpoints for retrieving query statistics, topics, and knowledge health metrics. feat: add authenticati…9dfccd9 -
Merge branch 'main' of https://github.com/samyuktha2004/Godspeed
5ac5995 -
Add user flow documentation and initialize frontend configuration files
- Created USERFLOW.md to define user journeys and UI flows for Engineer, Manager, and Admin roles. - Initialized package.json for frontend dependencies. - Added Tailwind CSS configuration file. - Created Vite configuration file for frontend build setup.ab4c955 -
Fix WebSocket stream: use result.data() instead of async for to match working traverse pattern
459131a -
Use fresh Neo4j driver per request; create driver after Gemini extraction to avoid idle timeout
4056ec9 -
Add retry-on-SessionExpired for ingest writes; fix WebSocket driver init error handling
b2158c9 -
Fix chunk relationship injection and WebSocket close handling
69402ec -
Fix defunct Neo4j connection: add keep-alive, liveness check, retry on SessionExpired
cf1b61a -
Fix Gemini INVALID_ARGUMENT: remove empty string from notion filter_type enum
54f37d0 -
Fix lazy token loading in tools, add github_list_commits tool, load_dotenv in main
ed33951 -
Switch tools agent to Gemini primary, OpenAI fallback
2d6f17a -
Integrate tools agent (GitHub/Slack/Notion) into main app under /tools prefix
7eb57e9 -
Merge branch 'add-tools-folder' of https://github.com/samyuktha2004/Godspeed
af72f4d -
Add Neo4j graph stream WebSocket endpoint for live visualization
6a4e71a