| 1 | /** |
| 2 | * BUILT_IN_DRIVERS — the static set of `ProviderDriver`s this build ships |
| 3 | * with. |
| 4 | * |
| 5 | * Every driver that the server knows how to instantiate from settings is |
| 6 | * listed here. The `ProviderInstanceRegistry` iterates this array when |
| 7 | * resolving `providerInstances` entries; anything not in the array surfaces |
| 8 | * as an `"unavailable"` shadow snapshot at runtime (see |
| 9 | * `buildUnavailableProviderSnapshot`). |
| 10 | * |
| 11 | * Adding a new first-party driver means: |
| 12 | * 1. implement `ProviderDriver` in a sibling `Drivers/<Name>Driver.ts`, |
| 13 | * 2. add it to this array, |
| 14 | * 3. ensure the runtime layer satisfies its declared `R`. |
| 15 | * |
| 16 | * The aggregated `BuiltInDriversEnv` type is the union of every driver's |
| 17 | * env requirement — the registry layer's `R` is this type, and the runtime |
| 18 | * layer (ChildProcessSpawner, FileSystem, Path, ServerConfig, |
| 19 | * OpenCodeRuntime, …) must satisfy it. |
| 20 | * |
| 21 | * @module provider/builtInDrivers |
| 22 | */ |
| 23 | import { |
| 24 | AcpRegistryDriver, |
| 25 | type AcpRegistryDriverEnv, |
| 26 | } from "@t3tools/provider-acp-registry/server"; |
| 27 | import { AntigravityDriver, type AntigravityDriverEnv } from "./Drivers/AntigravityDriver.ts"; |
| 28 | import { ClaudeDriver, type ClaudeDriverEnv } from "./Drivers/ClaudeDriver.ts"; |
| 29 | import { CodexDriver, type CodexDriverEnv } from "./Drivers/CodexDriver.ts"; |
| 30 | import { CursorDriver, type CursorDriverEnv } from "@t3tools/provider-cursor/server"; |
| 31 | import { GrokDriver, type GrokDriverEnv } from "@t3tools/provider-grok/server"; |
| 32 | import { OpenCodeDriver, type OpenCodeDriverEnv } from "@t3tools/provider-opencode/server"; |
| 33 | import { MuseDriver, type MuseDriverEnv } from "@t3tools/provider-muse/server"; |
| 34 | import { PiDriver, type PiDriverEnv } from "@t3tools/provider-pi/server"; |
| 35 | import type { |
| 36 | AnyProviderDriver, |
| 37 | ProviderUsageReaderEnv, |
| 38 | } from "@t3tools/provider-core/server/driver"; |
| 39 | |
| 40 | /** |
| 41 | * Union of infrastructure services required to construct any built-in |
| 42 | * driver. The registry layer declares `R = BuiltInDriversEnv`; the runtime |
| 43 | * layer must provide every service in this union. |
| 44 | */ |
| 45 | export type BuiltInDriversEnv = |
| 46 | | AcpRegistryDriverEnv |
| 47 | | AntigravityDriverEnv |
| 48 | | ClaudeDriverEnv |
| 49 | | CodexDriverEnv |
| 50 | | CursorDriverEnv |
| 51 | | GrokDriverEnv |
| 52 | | OpenCodeDriverEnv |
| 53 | | PiDriverEnv |
| 54 | | MuseDriverEnv; |
| 55 | |
| 56 | /** |
| 57 | * Ordered list of built-in drivers. Order matters only for tie-breaking in |
| 58 | * UI presentation — the registry itself is keyed by `driverKind`, so |
| 59 | * iteration order has no functional effect on instance lookup. |
| 60 | */ |
| 61 | export const BUILT_IN_DRIVERS: ReadonlyArray<AnyProviderDriver<BuiltInDriversEnv>> = [ |
| 62 | CodexDriver, |
| 63 | ClaudeDriver, |
| 64 | CursorDriver, |
| 65 | GrokDriver, |
| 66 | OpenCodeDriver, |
| 67 | AntigravityDriver, |
| 68 | PiDriver, |
| 69 | MuseDriver, |
| 70 | AcpRegistryDriver, |
| 71 | ]; |
| 72 | |
| 73 | /** Services the built-in usage readers need. */ |
| 74 | export type BuiltInUsageReadersEnv = |
| 75 | | ProviderUsageReaderEnv<typeof ClaudeDriver> |
| 76 | | ProviderUsageReaderEnv<typeof CodexDriver> |
| 77 | | ProviderUsageReaderEnv<typeof GrokDriver> |
| 78 | | ProviderUsageReaderEnv<typeof OpenCodeDriver> |
| 79 | | ProviderUsageReaderEnv<typeof AntigravityDriver> |
| 80 | | ProviderUsageReaderEnv<typeof CursorDriver> |
| 81 | | ProviderUsageReaderEnv<typeof PiDriver>; |
| 82 | |
| 83 | /** |
| 84 | * The drivers that keep usage history, in the order the usage page reads |
| 85 | * them: transcript readers first, then scan readers. Aggregation keeps the |
| 86 | * first copy of a duplicate record, so the order is part of the result. |
| 87 | */ |
| 88 | export const BUILT_IN_USAGE_DRIVERS: ReadonlyArray< |
| 89 | AnyProviderDriver<BuiltInDriversEnv, BuiltInUsageReadersEnv> |
| 90 | > = [ |
| 91 | ClaudeDriver, |
| 92 | CodexDriver, |
| 93 | GrokDriver, |
| 94 | PiDriver, |
| 95 | OpenCodeDriver, |
| 96 | AntigravityDriver, |
| 97 | CursorDriver, |
| 98 | ]; |