@capgo/cli
Version:
A CLI to upload to capgo servers
59 lines (58 loc) • 2.65 kB
TypeScript
import { withSupabaseSource } from './supabase-perf';
export { getGlobalAnalyticsProps, getInvocationSource, setInvocationSource } from './global-props';
export type { GlobalAnalyticsProps, InvocationSource } from './global-props';
export declare function isTelemetryDisabled(): boolean;
export declare function flushAnalytics(timeoutMs?: number): Promise<void>;
export declare function resolveTrackingContext(apikey: string, signal?: AbortSignal): Promise<{
appId?: string;
orgId?: string;
}>;
export interface TrackEventInput {
channel: string;
event: string;
icon?: string;
/** Org id for actor-scoped attribution. Omitted => resolved best-effort. */
orgId?: string;
/** App id (also lets the backend verify org ownership). */
appId?: string;
/** Explicit key; falls back to the saved key. No key => no event. */
apikey?: string;
tags?: Record<string, string | number | boolean>;
}
/**
* Generic v2 actor-scoped event. Never throws. Does nothing when telemetry is
* disabled or no API key is resolvable (the accepted unauthenticated gap).
* When the caller omits appId/orgId, both are resolved best-effort from the
* local Capacitor config (app_id → owner_org) so local commands still get
* user + org attribution when the user is logged in.
*/
export declare function trackEvent(input: TrackEventInput): Promise<void>;
export interface CommandContext {
flags: string[];
positional_arg_count: number;
}
interface CommanderLike {
args: readonly string[];
opts: () => Record<string, unknown>;
getOptionValueSource: (key: string) => string | undefined;
}
/**
* Pulls only privacy-safe context from a Commander command: the NAMES of
* user-provided flags (never their values) and the positional arg count.
*/
export declare function extractCommandContext(command: CommanderLike): CommandContext;
export declare function trackCommandInvoked(commandPath: string, ctx: CommandContext): void;
export declare function trackCommandSucceeded(commandPath: string): void;
export declare function trackCommandFailed(commandPath: string, opts: {
errorCategory: string;
exitCode: number;
}): void;
type AnyAsyncFn = (...args: any[]) => Promise<any>;
/**
* Wraps an MCP tool handler to emit a `MCP Tool Invoked` event with the tool
* name, success flag, and duration. Re-throws so behavior is unchanged.
*/
export declare function withMcpToolTracking<H extends AnyAsyncFn>(toolName: string, handler: H): H;
export declare function trackMcpServerStarted(hasApikey: boolean): void;
export { withSupabaseSource };
export { enableSupabaseInstrumentation } from './supabase-perf';