eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
67 lines (66 loc) • 3.11 kB
TypeScript
import { type ChannelSetupLog } from "#setup/cli/index.js";
/** Controls connector provisioning while adding a Connect-backed connection. */
export interface SetupConnectionConnectorOptions {
/** Status and command output stream through this log (rail styling preserved). */
log: ChannelSetupLog;
projectRoot: string;
/** Connection slug; also the connector `--name`. */
slug: string;
/** `vercel connect create <service>` identifier (e.g. `mcp.linear.app`). */
service: string;
/** Generated `agent/connections/<slug>.ts` whose `connect("…")` is patched. */
connectionFilePath: string;
/**
* Links a Vercel project before Connect provisioning when the caller owns a
* richer linking flow (e.g. shared team selection). Returns the linked
* project id, or `undefined` when linking did not complete. When omitted,
* falls back to a bare `vercel link`.
*/
linkProject?: () => Promise<string | undefined>;
}
/** Outcome of the Connect create-and-patch sequence for a connection. */
export type SetupConnectionConnectorResult = {
kind: "create-failed";
created: false;
} | {
kind: "connector-unresolved";
created: true;
} | {
kind: "patch-failed";
created: true;
connectorUid: string;
} | {
kind: "patched";
created: true;
connectorUid: string;
};
/** Identifiers returned by Vercel Connect for an OAuth connector. */
export interface ConnectConnectorRef {
uid: string;
id: string;
}
/**
* Reads the connector identifiers from `vercel connect create … -F json`
* stdout. This is the authoritative source for the just-created connector's
* UID — it avoids a follow-up `connect list`, which can momentarily 404/rate
* limit right after creation and cannot disambiguate when a service already
* has multiple connectors. Returns `undefined` when stdout is empty or not the
* expected JSON (e.g. an older CLI without `-F json` support on `create`).
*/
export declare function parseCreatedConnector(stdout: string): ConnectConnectorRef | undefined;
/**
* Finds the connector to wire into the generated connection. The list is
* expected to be scoped to the requested service server-side (via
* `--service`), since `vercel connect list -F json` does not include a
* `service` field per connector. Prefers, in order: the connector already
* attached to this project, then the newest connector. When Connect does
* report a `service` field, mismatches are still skipped defensively.
*/
export declare function pickConnectConnector(listJson: unknown, service: string, projectId: string | undefined): ConnectConnectorRef | undefined;
/**
* Creates a Vercel Connect OAuth connector for a connection and rewrites the
* generated `connect("…")` call to the connector UID Connect assigns. The
* `vercel connect create` step is interactive (it opens a browser to complete
* the OAuth grant); callers should only invoke this from an interactive flow.
*/
export declare function setupConnectionConnector(options: SetupConnectionConnectorOptions): Promise<SetupConnectionConnectorResult>;