feat: add gRPC-Web client service layer for OrchestratorService

- Create src/lib/services/orchestrator.ts with Connect-Web transport
- Typed processRequest() async generator for server-streaming RPC
- OrchestratorError class mapping gRPC status codes to app errors
- Configurable endpoint with resetTransport() for reconfiguration

Closes #4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
shahondin1624
2026-03-12 11:22:15 +01:00
parent 46e1a54379
commit d011447190
4 changed files with 115 additions and 0 deletions

View File

@@ -5,3 +5,4 @@
| #1 | Project scaffolding: SvelteKit + Tailwind + TypeScript | COMPLETED | [issue-001.md](issue-001.md) |
| #2 | Proto codegen pipeline for TypeScript gRPC-Web stubs | COMPLETED | [issue-002.md](issue-002.md) |
| #3 | Configure Caddy for gRPC-Web support | COMPLETED | [issue-003.md](issue-003.md) |
| #4 | gRPC-Web client service layer | COMPLETED | [issue-004.md](issue-004.md) |

View File

@@ -0,0 +1,25 @@
---
---
# Issue #4: gRPC-Web client service layer
**Status:** COMPLETED
**Issue:** https://git.shahondin1624.de/llm-multiverse/llm-multiverse-ui/issues/4
**Branch:** `feature/issue-4-grpc-web-client`
## Summary
Create `src/lib/services/orchestrator.ts` wrapping Connect-Web client for the OrchestratorService, with typed `processRequest()` async generator and error mapping.
## Acceptance Criteria
- [x] `src/lib/services/orchestrator.ts` module created
- [x] Wraps generated gRPC-Web stubs with typed interface
- [x] Connection setup with configurable endpoint
- [x] Error mapping from gRPC status codes to application errors
- [x] `processRequest()` returns an async iterator of `ProcessRequestResponse`
- [x] Handles streaming responses correctly
## Deviations
None.