Commit Graph

10 Commits

Author SHA1 Message Date
-Puter
4e7ed3c280 fix: use strict rq_score in roleplay contract 2026-07-14 18:15:16 +05:30
sai karthik
1d37456084 docs: finish RQ Score agent rename 2026-07-14 15:32:42 +05:30
sai karthik
340557dd56 test: enforce RQ Score API contract 2026-07-14 15:31:59 +05:30
-Puter
ac7bdca912 feat(backend): REST-authoritative qscore pipeline with Redis opt-in
- Gate both Redis ingestion paths (canonical + legacy) behind separate
  default-off flags (GROW_EVENTS_REDIS_ENABLED, LEGACY_SERVICE_REDIS_ENABLED).
  The redis module is never imported when both flags are off.
- Sever legacy URL cascade: interview/roleplay/resume/courses Redis URLs
  resolve ONLY from their own explicit env vars, never from REDIS_URL or
  GROW_EVENTS_REDIS_URL.
- Export resolveRedisConfig() pure resolver for testability.
- Fix onboarding signal ID from 'onboarding.completed_baseline' to
  'onboarding.completed' (registry-valid in all v2 formula JSONs).
- Ensure interview/roleplay completed events emit at least a single
  completion signal when session_count/scenario_count is absent (default 1).
- Extract computeStreakFromDays() into streak-utils.ts (pure, no DB dep)
  with defensive dedup so duplicate days never inflate streaks.
- Add focused tests: redis-gating, signal-registry membership, count
  fallback, streak policy (current/longest/duplicate/gap/recovery/7-day),
  service-ingest projector behavior.
- typecheck: 80 pre-existing errors unchanged, 0 new.
2026-07-10 20:12:13 +05:30
-Puter
b7d61944b4 changes 2026-06-04 14:25:20 +05:30
-Puter
a84f323cd5 update documentation (7 files) 2026-06-01 23:03:20 +05:30
-Puter
3663fb91b0 merge: pull origin/main into chore/release (resolve conflicts) 2026-06-01 21:51:57 +05:30
488fc1aeca growqr-backend: route service sessions to workflows dashboard (#4)
## Summary

  This PR updates backend service-session orchestration so
  interview, roleplay, resume, and matchmaking flows integrate with
  the shipped `workflows--dashboard` frontend instead of the old
  GrowQR app demo UI.

  ## Changes

  - Added `WORKFLOWS_DASHBOARD_URL` config with fallback to
  `FRONTEND_ORIGIN`.
  - Updated service session URL generation to point to dashboard-
  owned routes:
    - `/v2/service-sessions/interview`
    - `/v2/service-sessions/roleplay`
    - `/v2/service-sessions/resume`
  - Preserved session query params, including `session_id`, service
  id, and user-facing metadata.
  - Updated chat route handling so returned service cards include
  dashboard session URLs.
  - Added/updated matchmaking service integration wiring.
  - Documented the dashboard-owned session route behavior in

  ## Validation

  - `npm run build` passed for `growqr-backend`.

Reviewed-on: puter/growqr-backend#4
Co-authored-by: NinjasPyajamas <divyansh242805@gmail.com>
Co-committed-by: NinjasPyajamas <divyansh242805@gmail.com>
2026-06-01 16:19:12 +00:00
-Puter
be486e12e3 update documentation (8 files) 2026-06-01 20:58:55 +05:30
9ddbb4a8e5 feat: wire real service agents into chat with LLM tool dispatch + Rivet proxy fix (#3)
# 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>
2026-06-01 09:26:19 +00:00