CI / CI (push) Successful in 3m15s
Closes #50 ## Changes - `internal/sessions/handler.go` — new Handler; 7 endpoints dispatched via `X-Upstream-Path`; writes to `poimen-memory` via `/memory/ingest`; reads from `poimen-graphql` via GraphQL `hybridSearch`/`entity` - `internal/serviceadapter/session_adapter.go` — `NewSessionAdapter()` + `GetSessionSpec()` with 5 resources - `cmd/gateway/main.go` — register sessions adapter after memory adapter - `internal/serviceadapter/adapters.go` — add `sessions` case to factory - `internal/sessions/handler_test.go` — 30 tests, all pass ## Design - `X-Service: sessions` + `X-Resource: <sessions|session|milestones|episodes|episode>` - IDs via query params (`?session_id=`, `?episode_id=`) — dispatcher does not substitute path params - `episode_id = sha256(session_id+milestone_id+attempt)` per §4.14 Q6 - Content JSON-encoded (injection-safe) - `tracing.NewTransport` wired for cross-service trace propagation - GraphQL `errors` array detected, surfaced as 502 - limit capped at 200 --------- Co-authored-by: Admin Bot <[email protected]> Reviewed-on: #51
38 lines
865 B
Go
38 lines
865 B
Go
package serviceadapter
|
|
|
|
// SQSAdapter handles X-Service: sqs requests.
|
|
type SQSAdapter struct{}
|
|
|
|
// S3Adapter handles X-Service: s3 requests.
|
|
type S3Adapter struct{}
|
|
|
|
// IAMAdapter handles X-Service: iam requests.
|
|
type IAMAdapter struct{}
|
|
|
|
// MemoryAdapter handles X-Service: memory requests (core + extended).
|
|
type MemoryAdapter struct{
|
|
// Extended resources: notes, context, nodes (git-aware)
|
|
// Requires M3.5.6+, M3.7.7+, M3.7.8+, M3.5.9
|
|
}
|
|
|
|
// AdapterFactory creates adapters by type.
|
|
func AdapterFactory(serviceName string) interface{} {
|
|
switch serviceName {
|
|
case "workflow":
|
|
return &WorkflowAdapter{}
|
|
case "sqs":
|
|
return &SQSAdapter{}
|
|
case "s3":
|
|
return &S3Adapter{}
|
|
case "iam":
|
|
return &IAMAdapter{}
|
|
case "memory":
|
|
return &MemoryAdapter{}
|
|
case "sessions":
|
|
// code-registered; see NewSessionAdapter()
|
|
return nil
|
|
default:
|
|
return nil
|
|
}
|
|
}
|