CI / CI (pull_request) Successful in 2m55s
New internal/sessions package with Handler bridging 7 REST endpoints to: - POST /memory/ingest on poimen-memory:8080 (writes) - GraphQL hybridSearch/entity on poimen-graphql:8090 (reads) Adapter registration: X-Service: sessions with resources 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 (prevents key:value injection on user fields). Limit capped at 200. GraphQL error body detected and surfaced as 502. tracing.NewTransport wired for cross-service trace propagation. JWT forwarded to both upstreams for auth. 30 tests in handler_test.go covering all 7 handlers + EpisodeID helper. Closes #50
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
|
|
}
|
|
}
|