feat(service): P6.3 route REST + approve/deny → execute to sandbox

RouteService (createBinding/listBindings/simulate/listDecisions/approve/deny/
execute/flushDigest); approve REVIEW→ALLOW + route.approved event → execute via
P5 OutboundService (sandbox, idempotent per decision); deny never executes.
7 route endpoints; PORTAL adapter registered. 5 route tests green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-01 14:40:08 +05:30
parent 7ed3c11891
commit 968a90bdb9
7 changed files with 268 additions and 3 deletions
@@ -28,7 +28,7 @@ export class AdapterRegistry {
orgId: process.env.ADAPTER_ORG ?? 'org_portal-demo',
appId: process.env.ADAPTER_APP ?? 'portal-demo',
};
for (const channelType of ['WEBHOOK', 'EMAIL', 'WHATSAPP']) {
for (const channelType of ['WEBHOOK', 'EMAIL', 'WHATSAPP', 'PORTAL']) {
this.adapters.set(channelType, {
adapter: new WebhookAdapter(channelType),
config: { secret: secrets[channelType] ?? 'dev-adapter-secret', scope },