@supernovaio/cli
Version:
Supernova.io Command Line Interface
151 lines • 7.16 kB
TypeScript
import { Command } from "@oclif/core";
import { SupernovaApiClient } from "@supernova-studio/client";
import { z } from "zod";
import { SupernovaConfigService } from "../utils/config.service.js";
import { TargetEnv } from "./environment.js";
export declare abstract class BaseCommand<T extends object> extends Command {
protected env: TargetEnv;
protected configService: SupernovaConfigService;
private _apiClient;
abstract get commandId(): string;
abstract get configSchema(): z.ZodType<T>;
protected apiClient(): Promise<SupernovaApiClient>;
protected ensureAuthenticated(): Promise<void>;
protected performLogin(): Promise<boolean>;
protected openBrowser(url: string): Promise<void>;
protected promptLoginIfInteractive(): Promise<boolean>;
protected init(): Promise<void>;
protected promptBrandId(designSystemId: string, versionId?: string): Promise<string>;
protected fetchAccessibleDesignSystems(): Promise<{
accessible: {
id: string;
createdAt: Date;
updatedAt: Date;
workspaceId: string;
meta: {
name: string;
description?: string | undefined;
};
sources: any[];
isPublic: true;
docExporterId: string;
docSlug: string;
docSlugDeprecated: string;
isMultibrand: boolean;
basePrefixes: string[];
isApprovalFeatureEnabled: boolean;
approvalRequiredForPublishing: boolean;
accessMode: "Open" | "InviteOnly";
membersGenerated: boolean;
sharedDraftId: string;
isAvailableToUser: boolean;
icon?: {
id: string;
url: string;
name?: string | undefined;
source?: {
type: "UserUpload";
userId: string;
} | {
type: "Figma";
renderMode: "Image" | "HTML" | "JSON";
} | undefined;
} | undefined;
role?: "Owner" | "Admin" | "Creator" | "Viewer" | "Billing" | "Guest" | "Contributor" | undefined;
docUserSlug?: string | undefined;
docViewUrl?: string | undefined;
designSystemSwitcher?: {
isEnabled: boolean;
designSystemIds: string[];
} | undefined;
iconFileId?: string | undefined;
effectiveRole?: "Admin" | "Creator" | "Viewer" | "Contributor" | undefined;
}[];
workspaceById: Map<string, {
id: string;
profile: {
name: string;
color: string;
handle: string;
avatar?: string | undefined;
billingDetails?: {
address?: {
state?: string | undefined;
street1?: string | undefined;
street2?: string | undefined;
city?: string | undefined;
postal?: string | undefined;
country?: string | undefined;
} | undefined;
email?: string | undefined;
notes?: string | undefined;
companyName?: string | undefined;
companyId?: string | undefined;
vat?: string | undefined;
poNumber?: string | undefined;
} | undefined;
};
subscription: {
product: "company" | "enterprise" | "free" | "team" | "pro";
seats: number;
seatLimit: number;
planPriceId: string;
planInterval: "daily" | "monthly" | "yearly";
status?: NonNullable<"active" | "suspended" | "gracePeriod" | "cancelled" | "downgraded_to_free"> | undefined;
card?: {
name?: string | null | undefined;
cardId?: string | null | undefined;
last4?: string | null | undefined;
expiryMonth?: string | null | undefined;
expiryYear?: string | null | undefined;
brand?: string | null | undefined;
} | undefined;
monthlyCreditGrantAnchor?: string | undefined;
monthlyCreditGrantAmount?: number | undefined;
builderSeatLimit?: number | undefined;
fullSeatLimit?: number | undefined;
additionalCredits?: number | undefined;
mcpConsumerLimit?: number | undefined;
builderSeats?: number | undefined;
fullSeats?: number | undefined;
subscriptionStatus?: NonNullable<"unknown" | "active" | "trialing" | "past_due" | "canceled" | "unpaid" | "incomplete_expired" | "incomplete"> | undefined;
internalStatus?: NonNullable<"active" | "suspended" | "gracePeriod" | "cancelled" | "downgraded_to_free"> | undefined;
stripeSubscriptionId?: string | undefined;
stripeCustomerId?: string | undefined;
stripeScheduleId?: string | undefined;
currentPeriodStart?: string | undefined;
currentPeriodEnd?: string | undefined;
cancelAt?: string | undefined;
fullSeatPriceId?: string | undefined;
builderSeatPriceId?: string | undefined;
additionalCreditsPriceId?: string | undefined;
subscriptionStatusUpdatedAt?: string | undefined;
};
aiFeaturesEnabled: boolean;
projectsEnabled: boolean;
defaultProjectAccessMode: "Open" | "InviteOnly" | "Unlisted";
defaultProjectRole: "Builder" | "Viewer";
aiAskFeaturesEnabled: boolean;
npmRegistry?: {
authType: "Custom" | "None" | "Basic" | "Bearer";
registryType: "Custom" | "NPMJS" | "GitHub" | "AzureDevOps" | "Artifactory";
enabledScopes: string[];
bypassProxy: boolean;
registryUrl: string;
proxyUrl: string;
password?: string | undefined;
username?: string | undefined;
accessToken?: string | undefined;
customRegistryUrl?: string | undefined;
} | undefined;
aiCustomInstruction?: string | undefined;
}>;
}>;
protected promptDesignSystemFromList(accessible: Awaited<ReturnType<BaseCommand<T>["fetchAccessibleDesignSystems"]>>["accessible"], workspaceById: Awaited<ReturnType<BaseCommand<T>["fetchAccessibleDesignSystems"]>>["workspaceById"]): Promise<string>;
protected promptDesignSystemId(): Promise<string>;
protected getVersionId(designSystemId: string, versionId?: string): Promise<string>;
protected getWorkspaceId(workspaceId?: string): Promise<string>;
private prompt;
private searchPrompt;
}
//# sourceMappingURL=base-command.d.ts.map