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