(row: {
readonly slug?: unknown;
readonly grant?: unknown;
readonly resource?: unknown;
readonly origin_kind?: unknown;
readonly origin_integration?: unknown;
})
| 351 | }; |
| 352 | |
| 353 | const parseOAuthClientOrigin = (row: { |
| 354 | readonly slug?: unknown; |
| 355 | readonly grant?: unknown; |
| 356 | readonly resource?: unknown; |
| 357 | readonly origin_kind?: unknown; |
| 358 | readonly origin_integration?: unknown; |
| 359 | }): OAuthClientOrigin => { |
| 360 | // Shared DCR classification (explicit origin_kind OR the legacy MCP-shaped |
| 361 | // heuristic) lives in `oauth-gc` so the runtime and the GC/backfill |
| 362 | // migrations agree exactly on what counts as a DCR row. |
| 363 | if (!isDcrClassifiedRow(row)) { |
| 364 | return { |
| 365 | kind: "manual", |
| 366 | integration: |
| 367 | row.origin_integration == null |
| 368 | ? null |
| 369 | : IntegrationSlug.make(String(row.origin_integration)), |
| 370 | }; |
| 371 | } |
| 372 | // An explicit-origin DCR row carries its requesting integration; a |
| 373 | // heuristic-classified legacy row (null origin_kind) has none. |
| 374 | return { |
| 375 | kind: "dynamic_client_registration", |
| 376 | integration: |
| 377 | row.origin_kind === "dynamic_client_registration" && row.origin_integration != null |
| 378 | ? IntegrationSlug.make(String(row.origin_integration)) |
| 379 | : null, |
| 380 | }; |
| 381 | }; |
| 382 | |
| 383 | interface LoadedOAuthClient { |
| 384 | readonly slug: string; |
no test coverage detected