@phren/cli
Version:
Knowledge layer for AI agents - CLI, MCP server, and data layer
40 lines (39 loc) • 1.64 kB
TypeScript
import { type AccountRef, type AuthRunner } from "./claude-accounts.js";
import { type ToolVersion } from "./health.js";
export type HarnessSource = "claude" | "codex" | "opencode" | "copilot" | "phren";
export interface HarnessAccount extends AccountRef {
signedIn: boolean;
usable: boolean;
plan?: string;
reason?: string;
}
export interface HarnessEntry {
source: HarnessSource;
installed: boolean;
version?: string;
usable: boolean;
reason?: string;
accounts?: HarnessAccount[];
}
export interface HarnessInventory {
harnesses: HarnessEntry[];
}
export interface HarnessDeps {
toolVersion?: (tool: string) => Promise<ToolVersion>;
authRunner?: AuthRunner;
env?: NodeJS.ProcessEnv;
}
export declare function harnessInventory(deps?: HarnessDeps): Promise<HarnessInventory>;
/** The inventory, or undefined when it is not ready within `ms` (a cold `claude auth status` can take seconds). */
export declare function harnessInventoryWithin(ms: number, deps?: HarnessDeps): Promise<HarnessInventory | undefined>;
/** `PHREN_LAUNCH_CHECK=off`: no early launch refusal and no `harnesses` advertised to dispatch (tests, or a misreporting computer). */
export declare function launchCheckOff(env?: NodeJS.ProcessEnv): boolean;
export type Availability = {
ok: true;
} | {
ok: false;
code: "harness_unavailable" | "account_unavailable";
reason: string;
};
/** Whether a launch of `source` (and `accountId`) should work on a computer with this inventory. */
export declare function hasUsable(inventory: HarnessInventory, source: string, accountId?: string): Availability;