Skip to content

Commit 397de49

Browse files
committed
fix: resolve provider metrics reporting 'unknown' and remove unused withMetricAttributes export
- Hoist resolveRoutableSession calls above the inner Effect.gen in interruptTurn, respondToRequest, respondToUserInput, stopSession, and rollbackConversation so the resolved provider is available for providerMetricAttributes instead of hardcoding 'unknown'. - Remove unused withMetricAttributes re-export from Metrics.ts.
1 parent aa65f06 commit 397de49

File tree

2 files changed

+30
-32
lines changed

2 files changed

+30
-32
lines changed

apps/server/src/observability/Metrics.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ export const metricAttributes = (
7474
attributes: Readonly<Record<string, unknown>>,
7575
): ReadonlyArray<[string, string]> => Object.entries(compactMetricAttributes(attributes));
7676

77-
export const withMetricAttributes = Metric.withAttributes;
78-
7977
export const increment = (
8078
metric: Metric.Metric<number, unknown>,
8179
attributes: Readonly<Record<string, unknown>>,

apps/server/src/provider/Layers/ProviderService.ts

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -460,12 +460,12 @@ const makeProviderService = Effect.fn("makeProviderService")(function* (
460460
schema: ProviderInterruptTurnInput,
461461
payload: rawInput,
462462
});
463+
const routed = yield* resolveRoutableSession({
464+
threadId: input.threadId,
465+
operation: "ProviderService.interruptTurn",
466+
allowRecovery: true,
467+
});
463468
return yield* Effect.gen(function* () {
464-
const routed = yield* resolveRoutableSession({
465-
threadId: input.threadId,
466-
operation: "ProviderService.interruptTurn",
467-
allowRecovery: true,
468-
});
469469
yield* Effect.annotateCurrentSpan({
470470
"provider.operation": "interrupt-turn",
471471
"provider.kind": routed.adapter.provider,
@@ -479,7 +479,7 @@ const makeProviderService = Effect.fn("makeProviderService")(function* (
479479
}).pipe(
480480
withMetrics({
481481
counter: providerTurnsTotal,
482-
attributes: providerMetricAttributes("unknown", {
482+
attributes: providerMetricAttributes(routed.adapter.provider, {
483483
operation: "interrupt",
484484
}),
485485
}),
@@ -494,12 +494,12 @@ const makeProviderService = Effect.fn("makeProviderService")(function* (
494494
schema: ProviderRespondToRequestInput,
495495
payload: rawInput,
496496
});
497+
const routed = yield* resolveRoutableSession({
498+
threadId: input.threadId,
499+
operation: "ProviderService.respondToRequest",
500+
allowRecovery: true,
501+
});
497502
return yield* Effect.gen(function* () {
498-
const routed = yield* resolveRoutableSession({
499-
threadId: input.threadId,
500-
operation: "ProviderService.respondToRequest",
501-
allowRecovery: true,
502-
});
503503
yield* Effect.annotateCurrentSpan({
504504
"provider.operation": "respond-to-request",
505505
"provider.kind": routed.adapter.provider,
@@ -514,7 +514,7 @@ const makeProviderService = Effect.fn("makeProviderService")(function* (
514514
}).pipe(
515515
withMetrics({
516516
counter: providerTurnsTotal,
517-
attributes: providerMetricAttributes("unknown", {
517+
attributes: providerMetricAttributes(routed.adapter.provider, {
518518
operation: "approval-response",
519519
}),
520520
}),
@@ -530,12 +530,12 @@ const makeProviderService = Effect.fn("makeProviderService")(function* (
530530
schema: ProviderRespondToUserInputInput,
531531
payload: rawInput,
532532
});
533+
const routed = yield* resolveRoutableSession({
534+
threadId: input.threadId,
535+
operation: "ProviderService.respondToUserInput",
536+
allowRecovery: true,
537+
});
533538
return yield* Effect.gen(function* () {
534-
const routed = yield* resolveRoutableSession({
535-
threadId: input.threadId,
536-
operation: "ProviderService.respondToUserInput",
537-
allowRecovery: true,
538-
});
539539
yield* Effect.annotateCurrentSpan({
540540
"provider.operation": "respond-to-user-input",
541541
"provider.kind": routed.adapter.provider,
@@ -546,7 +546,7 @@ const makeProviderService = Effect.fn("makeProviderService")(function* (
546546
}).pipe(
547547
withMetrics({
548548
counter: providerTurnsTotal,
549-
attributes: providerMetricAttributes("unknown", {
549+
attributes: providerMetricAttributes(routed.adapter.provider, {
550550
operation: "user-input-response",
551551
}),
552552
}),
@@ -560,12 +560,12 @@ const makeProviderService = Effect.fn("makeProviderService")(function* (
560560
schema: ProviderStopSessionInput,
561561
payload: rawInput,
562562
});
563+
const routed = yield* resolveRoutableSession({
564+
threadId: input.threadId,
565+
operation: "ProviderService.stopSession",
566+
allowRecovery: false,
567+
});
563568
return yield* Effect.gen(function* () {
564-
const routed = yield* resolveRoutableSession({
565-
threadId: input.threadId,
566-
operation: "ProviderService.stopSession",
567-
allowRecovery: false,
568-
});
569569
yield* Effect.annotateCurrentSpan({
570570
"provider.operation": "stop-session",
571571
"provider.kind": routed.adapter.provider,
@@ -581,7 +581,7 @@ const makeProviderService = Effect.fn("makeProviderService")(function* (
581581
}).pipe(
582582
withMetrics({
583583
counter: providerSessionsTotal,
584-
attributes: providerMetricAttributes("unknown", {
584+
attributes: providerMetricAttributes(routed.adapter.provider, {
585585
operation: "stop",
586586
}),
587587
}),
@@ -651,12 +651,12 @@ const makeProviderService = Effect.fn("makeProviderService")(function* (
651651
if (input.numTurns === 0) {
652652
return;
653653
}
654+
const routed = yield* resolveRoutableSession({
655+
threadId: input.threadId,
656+
operation: "ProviderService.rollbackConversation",
657+
allowRecovery: true,
658+
});
654659
return yield* Effect.gen(function* () {
655-
const routed = yield* resolveRoutableSession({
656-
threadId: input.threadId,
657-
operation: "ProviderService.rollbackConversation",
658-
allowRecovery: true,
659-
});
660660
yield* Effect.annotateCurrentSpan({
661661
"provider.operation": "rollback-conversation",
662662
"provider.kind": routed.adapter.provider,
@@ -671,7 +671,7 @@ const makeProviderService = Effect.fn("makeProviderService")(function* (
671671
}).pipe(
672672
withMetrics({
673673
counter: providerTurnsTotal,
674-
attributes: providerMetricAttributes("unknown", {
674+
attributes: providerMetricAttributes(routed.adapter.provider, {
675675
operation: "rollback",
676676
}),
677677
}),

0 commit comments

Comments
 (0)