Files
2026-05-27 23:29:53 +01:00

2.4 KiB

OpenSpec Change: enterprise-gaming-api-plugin-game-server

  • Change ID: enterprise-gaming-api-plugin-game-server
  • Package: @suaveplan/api-plugin-game-server
  • Category: gaming/server
  • Target path: gaming/server/api-plugin-game-server
  • Status: PROPOSED
  • Date: 2026-04-24
  • Reference spec: /mnt/s/web/suaveplan/enterprise/api-plugin-game-server.md

Summary

Deliver @suaveplan/api-plugin-game-server on the genesis branch from scratch at enterprise quality. The package wraps @suaveplan/game-server's SessionManager in a Hono HTTP plugin. Routes expose session lifecycle (create, list, join, leave, heartbeat, terminate), player management (add/remove/list), and server health. A definePlugin() factory registers the SessionManager as an injectable service. Genesis adds Zod request/response schemas, structured errors, OTel route instrumentation, and 100% coverage with Hono test client integration tests.


Current-state audit (genesis)

Package does not exist on genesis yet — fresh build.


Available workspace deps on genesis

Package Role
@suaveplan/error (workspace:^) HTTP error mapping
@suaveplan/game-server (workspace:^) SessionManager, Session core logic
@suaveplan/events (workspace:^) Session event forwarding
zod (catalog:forms) Request/response schemas
@opentelemetry/api (catalog:observability) Route span instrumentation

HTTP Routes

Method Path Description
POST /sessions Create session
GET /sessions List sessions
GET /sessions/:id Get session
DELETE /sessions/:id Terminate session
POST /sessions/:id/join Player join
POST /sessions/:id/leave Player leave
POST /sessions/:id/heartbeat Update heartbeat
GET /sessions/:id/players List players
GET /health Session manager health

File layout

gaming/server/api-plugin-game-server/
  package.json
  tsconfig.json
  vitest.config.ts
  src/
    index.ts
    error-codes.ts
    types/common.ts
    types/common.md
    routes/
      sessions.ts
      sessions.md
      players.ts
      health.ts
    plugin.ts
    plugin.md
  tests/
    integration.test.ts

Impact

Downstream: @suaveplan/api-plugin-matchmaking posts to this to assign matches. Prerequisites: @suaveplan/error, @suaveplan/game-server, @suaveplan/events.