diff --git a/cli/src/commands/configure.ts b/cli/src/commands/configure.ts index 969ead97..f8f0982b 100644 --- a/cli/src/commands/configure.ts +++ b/cli/src/commands/configure.ts @@ -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 { - printPaperclipCliBanner(); + printNexusCliBanner(); p.intro(pc.bgCyan(pc.black(" paperclip configure "))); const configPath = resolveConfigPath(opts.config); diff --git a/cli/src/commands/db-backup.ts b/cli/src/commands/db-backup.ts index bdbf739f..59ca0f02 100644 --- a/cli/src/commands/db-backup.ts +++ b/cli/src/commands/db-backup.ts @@ -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 { - printPaperclipCliBanner(); + printNexusCliBanner(); p.intro(pc.bgCyan(pc.black(" paperclip db:backup "))); const configPath = resolveConfigPath(opts.config); diff --git a/cli/src/commands/doctor.ts b/cli/src/commands/doctor.ts index 3ace070e..4ea28250 100644 --- a/cli/src/commands/doctor.ts +++ b/cli/src/commands/doctor.ts @@ -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); diff --git a/cli/src/commands/onboard.ts b/cli/src/commands/onboard.ts index 523484f3..428af844 100644 --- a/cli/src/commands/onboard.ts +++ b/cli/src/commands/onboard.ts @@ -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 { - printPaperclipCliBanner(); + printNexusCliBanner(); p.intro(pc.bgCyan(pc.black(" paperclipai onboard "))); const configPath = resolveConfigPath(opts.config); const instance = describeLocalInstancePaths(resolvePaperclipInstanceId()); diff --git a/cli/src/commands/worktree.ts b/cli/src/commands/worktree.ts index 65e74849..adc9049b 100644 --- a/cli/src/commands/worktree.ts +++ b/cli/src/commands/worktree.ts @@ -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 { } export async function worktreeInitCommand(opts: WorktreeInitOptions): Promise { - printPaperclipCliBanner(); + printNexusCliBanner(); p.intro(pc.bgCyan(pc.black(" paperclipai worktree init "))); await runWorktreeInit(opts); } export async function worktreeMakeCommand(nameArg: string, opts: WorktreeMakeOptions): Promise { - 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 { - printPaperclipCliBanner(); + printNexusCliBanner(); p.intro(pc.bgCyan(pc.black(" paperclipai worktree:cleanup "))); const name = resolveWorktreeMakeName(nameArg); diff --git a/cli/src/utils/banner.ts b/cli/src/utils/banner.ts index 16d3a987..36a14fea 100644 --- a/cli/src/utils/banner.ts +++ b/cli/src/utils/banner.ts @@ -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}`)), "", diff --git a/server/src/startup-banner.ts b/server/src/startup-banner.ts index 1a52731b..516938a7 100644 --- a/server/src/startup-banner.ts +++ b/server/src/startup-banner.ts @@ -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 = [