cli: add PAPERCLIP banner to onboard doctor configure

This commit is contained in:
Dotta
2026-03-03 10:15:25 -06:00
parent 98964b7c01
commit 5c07bdafc5
4 changed files with 29 additions and 0 deletions

View File

@@ -14,6 +14,7 @@ import {
resolveDefaultLogsDir,
resolvePaperclipInstanceId,
} from "../config/home.js";
import { printPaperclipCliBanner } from "../utils/banner.js";
type Section = "llm" | "database" | "logging" | "server" | "storage" | "secrets";
@@ -63,6 +64,7 @@ export async function configure(opts: {
config?: string;
section?: string;
}): Promise<void> {
printPaperclipCliBanner();
p.intro(pc.bgCyan(pc.black(" paperclip configure ")));
const configPath = resolveConfigPath(opts.config);

View File

@@ -14,6 +14,7 @@ import {
storageCheck,
type CheckResult,
} from "../checks/index.js";
import { printPaperclipCliBanner } from "../utils/banner.js";
const STATUS_ICON = {
pass: pc.green("✓"),
@@ -26,6 +27,7 @@ export async function doctor(opts: {
repair?: boolean;
yes?: boolean;
}): Promise<{ passed: number; warned: number; failed: number }> {
printPaperclipCliBanner();
p.intro(pc.bgCyan(pc.black(" paperclip doctor ")));
const configPath = resolveConfigPath(opts.config);

View File

@@ -12,8 +12,10 @@ import { defaultStorageConfig, promptStorage } from "../prompts/storage.js";
import { promptServer } from "../prompts/server.js";
import { describeLocalInstancePaths, resolvePaperclipInstanceId } from "../config/home.js";
import { bootstrapCeoInvite } from "./auth-bootstrap-ceo.js";
import { printPaperclipCliBanner } from "../utils/banner.js";
export async function onboard(opts: { config?: string }): Promise<void> {
printPaperclipCliBanner();
p.intro(pc.bgCyan(pc.black(" paperclipai onboard ")));
const instance = describeLocalInstancePaths(resolvePaperclipInstanceId());
p.log.message(

23
cli/src/utils/banner.ts Normal file
View File

@@ -0,0 +1,23 @@
import pc from "picocolors";
const PAPERCLIP_ART = [
" ____ _ ____ _____ ____ ____ _ ___ ____ ",
"| _ \\ / \\ | _ \\| ____| _ \\ / ___| | |_ _| _ \\ ",
"| |_) / _ \\ | |_) | _| | |_) | | | | | || |_) |",
"| __/ ___ \\| __/| |___| _ <| |___| |___ | || __/ ",
"|_| /_/ \\_\\_| |_____|_| \\_\\\\____|_____|___|_| ",
] as const;
const TAGLINE = "Open-source orchestration for zero-human companies";
export function printPaperclipCliBanner(): void {
const lines = [
"",
...PAPERCLIP_ART.map((line) => pc.cyan(line)),
pc.blue(" ------------------------------------------------------"),
pc.bold(pc.white(` ${TAGLINE}`)),
"",
];
console.log(lines.join("\n"));
}