# Wire All 4 Microservice Agents Into Chat
Wires all 4 microservice-backed agents into the chat so the LLM can call real services and return session URLs.
---
## Changes
### New
* `src/routes/chat.ts`
* Added a direct HTTP chat endpoint.
* When the LLM calls:
* `start_interview_session`
* `analyze_resume`
* `start_roleplay_session`
* `compute_qscore`
* The route executes real service probes and returns live session URLs.
---
### Fixed
* `src/index.ts`
* Rivet proxy now forwards requests to the engine at `localhost:6420`
instead of using `registry.handler()`.
* Prevents the:
```txt
Runtime already started as runner
```
conflict.
* `src/actors/user-actor.ts`
* `receiveMessage()` now returns:
```ts
{
reply,
sessions: []
}
```
* Includes per-module session URLs in responses.
* `docker-compose.yml`
* Fixed:
* Gitea health check port
* Port mapping
* `A2A_ALLOWED_KEY` default value
* `src/config.ts`
* Added:
```ts
resumeServiceUrl
```
* Configured to use port `8002`.
---
### Rewritten
* `prompts/system.txt`
* Reworked into a conversational step-by-step flow.
* Added explicit rule:
> CALL THE TOOL IMMEDIATELY
---
### Updated
* `agents/*.md` (6 files)
* Updated:
* Domain descriptions
* Trigger phrases
* Agent boundaries
---
## Verified
| Agent | Service | Result |
| ------------- | ------------------------ | --------------------------- |
| Resume (Mira) | `resume-builder:8002` | Real analysis |
| Sara | `interview-service:8007` | Real Gemini session + URL |
| Emily | `roleplay-service:8008` | Real roleplay session + URL |
| Quinn | `qscore-service:8000` | Real Q-Score (~84) |
---
## Outcome
The chat system can now:
* Trigger real backend agent services directly from LLM tool calls
* Return live session URLs
* Maintain structured multi-agent responses
* Avoid Rivet runtime conflicts
* Support end-to-end conversational workflows across all 4 agents
Reviewed-on: puter/growqr-backend#3
Co-authored-by: NinjasPyajamas <divyansh242805@gmail.com>
Co-committed-by: NinjasPyajamas <divyansh242805@gmail.com>
32 lines
1.7 KiB
Markdown
32 lines
1.7 KiB
Markdown
---
|
|
id: sara
|
|
name: Sara
|
|
role: Interview Agent
|
|
service: interview-service
|
|
tools:
|
|
- start_interview_session
|
|
---
|
|
|
|
## Domain
|
|
Sara is the **Interview Agent**. She only handles job interview preparation and practice. Her focus is behavioral interviews, technical interviews, mock sessions, and interview feedback.
|
|
|
|
## When to use this agent (trigger phrases)
|
|
Use `start_interview_session` when the user:
|
|
- Wants to practice interviews: "mock interview", "interview prep", "practice interview", "rehearse interview"
|
|
- Has behavioral questions: "STAR method", "tell me about yourself", "behavioral questions", "common interview questions"
|
|
- Has technical interview needs: "coding interview", "system design", "technical screen", "whiteboard"
|
|
- Has an upcoming interview: "interview tomorrow", "interview next week", "upcoming interview", "phone screen", "onsite", "final round", "panel interview"
|
|
- Wants interview feedback: "how did I do", "improve my answers", "interview confidence", "nervous about interview"
|
|
- Asks about specific question types: "case interview", "product sense", "estimation questions", "leadership questions"
|
|
- Mentions any FAANG/tech company in interview context: Google, Meta, Amazon, Apple, Netflix, Microsoft, Stripe, Airbnb, Uber, etc.
|
|
|
|
## What Sara NEVER does
|
|
- Resume writing or optimization → Resume Agent
|
|
- Roleplay scenarios, negotiation, salary talk → Emily
|
|
- Job searching or matching → Job Search Agent
|
|
- Q-Score analysis → Quinn
|
|
- Career switching advice → general chat
|
|
|
|
## How it works
|
|
Calls `POST /api/v1/configure` on the interview-service with user_id, interview_type, duration, and target role. Creates a real Gemini Live-powered interview session with audio streaming. Returns a session_id that the user can open to start practicing.
|