feat(02-01): replace PAPERCLIP ASCII art with NEXUS in banners
- Replace PAPERCLIP art with NEXUS art in server/src/startup-banner.ts - Replace full cli/src/utils/banner.ts with NEXUS art and updated tagline - Rename printPaperclipCliBanner to printNexusCliBanner - Update tagline to 'Open-source orchestration for your agents' - Update all 5 CLI command callers: onboard, configure, db-backup, worktree, doctor - Satisfies BRND-02
This commit is contained in:
parent
dd63ecd1f7
commit
1e48ca0d3a
7 changed files with 32 additions and 28 deletions
|
|
@ -15,7 +15,7 @@ import {
|
|||
resolveDefaultLogsDir,
|
||||
resolvePaperclipInstanceId,
|
||||
} from "../config/home.js";
|
||||
import { printPaperclipCliBanner } from "../utils/banner.js";
|
||||
import { printNexusCliBanner } from "../utils/banner.js";
|
||||
|
||||
type Section = "llm" | "database" | "logging" | "server" | "storage" | "secrets";
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ export async function configure(opts: {
|
|||
config?: string;
|
||||
section?: string;
|
||||
}): Promise<void> {
|
||||
printPaperclipCliBanner();
|
||||
printNexusCliBanner();
|
||||
p.intro(pc.bgCyan(pc.black(" paperclip configure ")));
|
||||
const configPath = resolveConfigPath(opts.config);
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import {
|
|||
resolvePaperclipInstanceId,
|
||||
} from "../config/home.js";
|
||||
import { readConfig, resolveConfigPath } from "../config/store.js";
|
||||
import { printPaperclipCliBanner } from "../utils/banner.js";
|
||||
import { printNexusCliBanner } from "../utils/banner.js";
|
||||
|
||||
type DbBackupOptions = {
|
||||
config?: string;
|
||||
|
|
@ -47,7 +47,7 @@ function resolveBackupDir(raw: string): string {
|
|||
}
|
||||
|
||||
export async function dbBackupCommand(opts: DbBackupOptions): Promise<void> {
|
||||
printPaperclipCliBanner();
|
||||
printNexusCliBanner();
|
||||
p.intro(pc.bgCyan(pc.black(" paperclip db:backup ")));
|
||||
|
||||
const configPath = resolveConfigPath(opts.config);
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import {
|
|||
type CheckResult,
|
||||
} from "../checks/index.js";
|
||||
import { loadPaperclipEnvFile } from "../config/env.js";
|
||||
import { printPaperclipCliBanner } from "../utils/banner.js";
|
||||
import { printNexusCliBanner } from "../utils/banner.js";
|
||||
|
||||
const STATUS_ICON = {
|
||||
pass: pc.green("✓"),
|
||||
|
|
@ -28,7 +28,7 @@ export async function doctor(opts: {
|
|||
repair?: boolean;
|
||||
yes?: boolean;
|
||||
}): Promise<{ passed: number; warned: number; failed: number }> {
|
||||
printPaperclipCliBanner();
|
||||
printNexusCliBanner();
|
||||
p.intro(pc.bgCyan(pc.black(" paperclip doctor ")));
|
||||
|
||||
const configPath = resolveConfigPath(opts.config);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ import {
|
|||
resolvePaperclipInstanceId,
|
||||
} from "../config/home.js";
|
||||
import { bootstrapCeoInvite } from "./auth-bootstrap-ceo.js";
|
||||
import { printPaperclipCliBanner } from "../utils/banner.js";
|
||||
import { printNexusCliBanner } from "../utils/banner.js";
|
||||
|
||||
type SetupMode = "quickstart" | "advanced";
|
||||
|
||||
|
|
@ -234,7 +234,7 @@ function canCreateBootstrapInviteImmediately(config: Pick<PaperclipConfig, "data
|
|||
}
|
||||
|
||||
export async function onboard(opts: OnboardOptions): Promise<void> {
|
||||
printPaperclipCliBanner();
|
||||
printNexusCliBanner();
|
||||
p.intro(pc.bgCyan(pc.black(" paperclipai onboard ")));
|
||||
const configPath = resolveConfigPath(opts.config);
|
||||
const instance = describeLocalInstancePaths(resolvePaperclipInstanceId());
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ import { ensureAgentJwtSecret, loadPaperclipEnvFile, mergePaperclipEnvEntries, r
|
|||
import { expandHomePrefix } from "../config/home.js";
|
||||
import type { PaperclipConfig } from "../config/schema.js";
|
||||
import { readConfig, resolveConfigPath, writeConfig } from "../config/store.js";
|
||||
import { printPaperclipCliBanner } from "../utils/banner.js";
|
||||
import { printNexusCliBanner } from "../utils/banner.js";
|
||||
import { resolveRuntimeLikePath } from "../utils/path-resolver.js";
|
||||
import {
|
||||
buildWorktreeConfig,
|
||||
|
|
@ -1046,13 +1046,13 @@ async function runWorktreeInit(opts: WorktreeInitOptions): Promise<void> {
|
|||
}
|
||||
|
||||
export async function worktreeInitCommand(opts: WorktreeInitOptions): Promise<void> {
|
||||
printPaperclipCliBanner();
|
||||
printNexusCliBanner();
|
||||
p.intro(pc.bgCyan(pc.black(" paperclipai worktree init ")));
|
||||
await runWorktreeInit(opts);
|
||||
}
|
||||
|
||||
export async function worktreeMakeCommand(nameArg: string, opts: WorktreeMakeOptions): Promise<void> {
|
||||
printPaperclipCliBanner();
|
||||
printNexusCliBanner();
|
||||
p.intro(pc.bgCyan(pc.black(" paperclipai worktree:make ")));
|
||||
|
||||
const name = resolveWorktreeMakeName(nameArg);
|
||||
|
|
@ -1248,7 +1248,7 @@ function worktreePathHasUncommittedChanges(worktreePath: string): boolean {
|
|||
}
|
||||
|
||||
export async function worktreeCleanupCommand(nameArg: string, opts: WorktreeCleanupOptions): Promise<void> {
|
||||
printPaperclipCliBanner();
|
||||
printNexusCliBanner();
|
||||
p.intro(pc.bgCyan(pc.black(" paperclipai worktree:cleanup ")));
|
||||
|
||||
const name = resolveWorktreeMakeName(nameArg);
|
||||
|
|
|
|||
|
|
@ -1,20 +1,23 @@
|
|||
import pc from "picocolors";
|
||||
|
||||
const PAPERCLIP_ART = [
|
||||
"██████╗ █████╗ ██████╗ ███████╗██████╗ ██████╗██╗ ██╗██████╗ ",
|
||||
"██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔════╝██║ ██║██╔══██╗",
|
||||
"██████╔╝███████║██████╔╝█████╗ ██████╔╝██║ ██║ ██║██████╔╝",
|
||||
"██╔═══╝ ██╔══██║██╔═══╝ ██╔══╝ ██╔══██╗██║ ██║ ██║██╔═══╝ ",
|
||||
"██║ ██║ ██║██║ ███████╗██║ ██║╚██████╗███████╗██║██║ ",
|
||||
"╚═╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝╚═╝ ",
|
||||
// [nexus] replaced PAPERCLIP_ART with NEXUS_ART
|
||||
const NEXUS_ART = [
|
||||
"███╗ ██╗███████╗██╗ ██╗██╗ ██╗███████╗",
|
||||
"████╗ ██║██╔════╝╚██╗██╔╝██║ ██║██╔════╝",
|
||||
"██╔██╗ ██║█████╗ ╚███╔╝ ██║ ██║███████╗",
|
||||
"██║╚██╗██║██╔══╝ ██╔██╗ ██║ ██║╚════██║",
|
||||
"██║ ╚████║███████╗██╔╝ ██╗╚██████╔╝███████║",
|
||||
"╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝",
|
||||
] as const;
|
||||
|
||||
const TAGLINE = "Open-source orchestration for zero-human companies";
|
||||
// [nexus] updated tagline
|
||||
const TAGLINE = "Open-source orchestration for your agents";
|
||||
|
||||
export function printPaperclipCliBanner(): void {
|
||||
// [nexus] renamed from printPaperclipCliBanner
|
||||
export function printNexusCliBanner(): void {
|
||||
const lines = [
|
||||
"",
|
||||
...PAPERCLIP_ART.map((line) => pc.cyan(line)),
|
||||
...NEXUS_ART.map((line) => pc.cyan(line)),
|
||||
pc.blue(" ───────────────────────────────────────────────────────"),
|
||||
pc.bold(pc.white(` ${TAGLINE}`)),
|
||||
"",
|
||||
|
|
|
|||
|
|
@ -133,13 +133,14 @@ export function printStartupBanner(opts: StartupBannerOptions): void {
|
|||
? `enabled ${color(`(every ${opts.databaseBackupIntervalMinutes}m, keep ${opts.databaseBackupRetentionDays}d)`, "dim")}`
|
||||
: color("disabled", "yellow");
|
||||
|
||||
// [nexus] replaced PAPERCLIP art with NEXUS art
|
||||
const art = [
|
||||
color("██████╗ █████╗ ██████╗ ███████╗██████╗ ██████╗██╗ ██╗██████╗ ", "cyan"),
|
||||
color("██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔════╝██║ ██║██╔══██╗", "cyan"),
|
||||
color("██████╔╝███████║██████╔╝█████╗ ██████╔╝██║ ██║ ██║██████╔╝", "cyan"),
|
||||
color("██╔═══╝ ██╔══██║██╔═══╝ ██╔══╝ ██╔══██╗██║ ██║ ██║██╔═══╝ ", "cyan"),
|
||||
color("██║ ██║ ██║██║ ███████╗██║ ██║╚██████╗███████╗██║██║ ", "cyan"),
|
||||
color("╚═╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝╚═╝ ", "cyan"),
|
||||
color("███╗ ██╗███████╗██╗ ██╗██╗ ██╗███████╗", "cyan"),
|
||||
color("████╗ ██║██╔════╝╚██╗██╔╝██║ ██║██╔════╝", "cyan"),
|
||||
color("██╔██╗ ██║█████╗ ╚███╔╝ ██║ ██║███████╗", "cyan"),
|
||||
color("██║╚██╗██║██╔══╝ ██╔██╗ ██║ ██║╚════██║", "cyan"),
|
||||
color("██║ ╚████║███████╗██╔╝ ██╗╚██████╔╝███████║", "cyan"),
|
||||
color("╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝", "cyan"),
|
||||
];
|
||||
|
||||
const lines = [
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue