| ... | ... | @@ -276,8 +276,10 @@ const makeProviderService = (options?: ProviderServiceLiveOptions) => |
| 276 | 276 | yield* upsertSessionBinding(session, threadId); |
| 277 | 277 | yield* analytics.record("provider.session.started", { |
| 278 | 278 | provider: session.provider, |
| 279 | | approvalPolicy: input.approvalPolicy, |
| 280 | | sandboxMode: input.sandboxMode, |
| 279 | runtimeMode: input.runtimeMode, |
| 280 | hasResumeCursor: session.resumeCursor !== undefined, |
| 281 | hasCwd: typeof input.cwd === "string" && input.cwd.trim().length > 0, |
| 282 | hasModel: typeof input.model === "string" && input.model.trim().length > 0, |
| 281 | 283 | }); |
| 282 | 284 | |
| 283 | 285 | return session; |
| ... | ... | @@ -321,7 +323,9 @@ const makeProviderService = (options?: ProviderServiceLiveOptions) => |
| 321 | 323 | yield* analytics.record("provider.turn.sent", { |
| 322 | 324 | provider: routed.adapter.provider, |
| 323 | 325 | model: input.model, |
| 324 | | effort: input.effort, |
| 326 | interactionMode: input.interactionMode, |
| 327 | attachmentCount: input.attachments.length, |
| 328 | hasInput: typeof input.input === "string" && input.input.trim().length > 0, |
| 325 | 329 | }); |
| 326 | 330 | return turn; |
| 327 | 331 | }); |
| ... | ... | @@ -376,7 +380,6 @@ const makeProviderService = (options?: ProviderServiceLiveOptions) => |
| 376 | 380 | allowRecovery: true, |
| 377 | 381 | }); |
| 378 | 382 | yield* routed.adapter.respondToUserInput(routed.threadId, input.requestId, input.answers); |
| 379 | | }); |
| 380 | 383 | }); |
| 381 | 384 | |
| 382 | 385 | const stopSession: ProviderServiceShape["stopSession"] = (rawInput) => |