feat(gateway): register Hermes runtime provider #740
Reference in New Issue
Block a user
Delete Branch "fix/tess-m4-runtime-reachability"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
HermesRuntimeProviderinAGENT_RUNTIME_PROVIDER_REGISTRYduring gateway bootstrapVerification
TURBO_FORCE=true pnpm typecheckTURBO_FORCE=true pnpm lintTURBO_FORCE=true pnpm format:checkTURBO_FORCE=true pnpm testPart of M4-W wave 2 / #710.
REQUEST CHANGES reviewer-of-record [W-jarvis:reviewer] head
127a69ea11Verified at exact head
127a69ea11ccc36516c78c2007cbe52fbf63ad30; Woodpecker pipeline1767is green andapps/gateway/src/commands/command-authorization.service.tsis byte-identical toorigin/main(hasha9f829e7ecec721c6c585fe0da56fb5d6a6441e9).Blocker:
interaction.controller.test.tscallscontroller.transitionalCapabilities(...)directly and manually constructsRuntimeProviderService(createGatewayRuntimeProviderRegistry(), ...). That does verify the factory can create a registry containing Hermes and that the controller method can delegate to the service, but it does not exercise a liveGET /api/interaction/:agentName/transitional-capabilitiesrequest, Nest DI throughAgentModule, or theAuthGuardrequest path. The M4-V failure was an empty injected runtime registry at gateway reachability time; this test can pass even if the actual guarded route/module wiring is broken.Positive findings:
agent.module.tsdoes definecreateGatewayRuntimeProviderRegistry()and registersnew HermesRuntimeProvider(new GatewayHermesRuntimeTransport())forAGENT_RUNTIME_PROVIDER_REGISTRY.GatewayHermesRuntimeTransportis a concrete HTTP transport, enforces HTTPS except loopback, preserves configured path prefixes, forwards actor/tenant/channel/correlation headers, and does not include token values in its own error messages.Marker: ROR-740-REQUEST-CHANGES-127a69ea
VERIFIED APPROVE reviewer-of-record [W-jarvis:reviewer] head
a7e5d377e3Reviewed exact live head
a7e5d377e38b40275884a7df6ee35c55c5859e43; Woodpecker pipeline1768is SUCCESS for that commit.Findings:
apps/gateway/src/agent/hermes-runtime-reachability.e2e.test.tsboots a real Nest/Fastify app withAgentModule, exercises unauthenticated HTTP GET/api/interaction/Nova/transitional-capabilities?provider=runtime.hermesthrough realAuthGuard(401), then authenticated HTTP GET through the route/controller/service path (200) and returns all five Hermes transitional entries (kanban,skills,memory,tools,cron). The DI registry is also asserted to resolveruntime.hermesasHermesRuntimeProvider. Peripheral DB/queue-style dependencies are harness-replaced, but route/guard/DI/service/provider reachability is not mocked.agent.module.tsprovidesAGENT_RUNTIME_PROVIDER_REGISTRYviacreateGatewayRuntimeProviderRegistry(), which registersnew HermesRuntimeProvider(new GatewayHermesRuntimeTransport()); the injected registry is non-empty at bootstrap.GatewayHermesRuntimeTransportis a concrete server-configured HTTP transport, preserves configured path prefixes, enforces HTTPS except loopback, forwards actor/tenant/channel/correlation headers, and does not include service token values in its own errors/logging.apps/gateway/src/commands/command-authorization.service.tsis untouched/byte-identical toorigin/main; hash confirmeda9f829e7ecec721c6c585fe0da56fb5d6a6441e9.No merge performed by reviewer.
Marker: ROR-740-VERIFIED-APPROVE-a7e5d377