Open History to see the last commit
1import type { ProviderDriverKind } from "@t3tools/contracts";
2import type * as Effect from "effect/Effect";
3
4export interface ProviderMaintenanceCapabilities {
5 readonly provider: ProviderDriverKind;
6 readonly packageName: string | null;
7 readonly update: ProviderMaintenanceCommandAction | null;
8 /** undefined defers to npm; null means the installer could not determine the latest version. */
9 readonly latestVersion?: string | null;
10 /**
11 * Deferred until update checks are enabled; `null` falls back to
12 * `latestVersion`, then npm.
13 */
14 readonly lookupLatestVersion?: Effect.Effect<string | null>;
15 /** Separates installer release channels that share an update command. */
16 readonly latestVersionCacheKey?: string;
17 readonly compareVersions?: (current: string, latest: string) => number;
18 /** Resolved executable path for advisories when no update command is proven. */
19 readonly installPath?: string;
20 /** Displayed for manual updates; never executed by T3 Code. */
21 readonly manualCommand?: string;
22}
23
24export interface ProviderMaintenanceCommandAction {
25 readonly command: string;
26 readonly executable: string;
27 readonly args: ReadonlyArray<string>;
28 readonly lockKey: string;
29 /** The provider's environment, including its PATH and custom home. */
30 readonly env?: NodeJS.ProcessEnv;
31}