Overview
The@oneglanse/services package contains business logic and data access functions used by both the web app and agent worker. It provides a shared, type-safe interface for interacting with PostgreSQL, ClickHouse, Redis, and external APIs.
Purpose
The services layer serves as:- Shared Business Logic - Reusable functions across web and agent
- Data Access Abstraction - Centralized database queries
- Type Safety - Enforced input/output types with Zod
- Error Handling - Consistent error patterns
- External Integrations - LLM APIs, Redis, queue management
Package Structure
Key Services
Agent Services
Submit Agent Job Group
Submits a job to run prompts across all enabled providers:packages/services/src/agent/jobs.ts
packages/services/src/agent/jobs.ts
packages/services/src/agent/jobs.ts:18-72
Queue Management
Each provider has a dedicated BullMQ queue:packages/services/src/agent/queue.ts
packages/services/src/agent/queue.ts
packages/services/src/agent/queue.ts:5-33
Analysis Services
Run Analysis
Analyzes a prompt response for brand mentions using GPT-4:packages/services/src/analysis/runAnalysis.ts
packages/services/src/analysis/runAnalysis.ts
packages/services/src/analysis/runAnalysis.ts:6-64
Fetch Analysed Prompts
Retrieves analyzed prompt responses for a workspace:Prompt Services
Fetch User Prompts
Retrieves all prompts for a workspace:packages/services/src/prompt/fetchUserPromptsForWorkspace.ts
Fetch Prompt Responses
Retrieves all prompt responses for a workspace:packages/services/src/prompt/fetchPromptResponsesForWorkspace.ts
packages/services/src/prompt/fetchPromptResponsesForWorkspace.ts
packages/services/src/prompt/fetchPromptResponsesForWorkspace.ts:7-24
Fetch Prompt Sources
Retrieves aggregated source citations:Workspace Services
Get Workspace by ID
Retrieves a single workspace:packages/services/src/workspace/query.ts
packages/services/src/workspace/query.ts
packages/services/src/workspace/query.ts:19-44
Get Workspaces for User
Retrieves all workspaces a user has access to:packages/services/src/workspace/query.ts
packages/services/src/workspace/query.ts:46-85
How Apps Use Services
Web App (tRPC)
The web app calls services through tRPC routers:apps/web/src/server/api/routers/prompt/prompt.ts
apps/web/src/server/api/routers/prompt/prompt.ts:14-54
Agent Worker
The agent worker calls services directly:apps/agent/src/worker/jobHandler.ts
Error Handling
Services use typed errors from@oneglanse/errors:
Type Safety
All services have strict input/output types:Testing Services
Services can be tested independently:Development Commands
Related Documentation
- Web App - How tRPC routers use services
- Agent Worker - How workers use services
- Database - Database schemas and clients