From de90f7f1e1139475ef1fd11be49d738aecceb724 Mon Sep 17 00:00:00 2001 From: "Marvel.Codes" Date: Wed, 18 Feb 2026 16:28:45 +0100 Subject: [PATCH 1/2] feat(cli): Add styled splash screen with ASCII art logo Replace plain-text help with a styled splash screen matching the ADK-TS CLI aesthetic. Shows magenta ASCII art "ADK CLAW" logo, tagline, version, commands, and links. Running with no args now shows the splash instead of auto-running init. --- src/cli/index.ts | 70 +++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 958a8cc..e293f4a 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1,5 +1,6 @@ #!/usr/bin/env node import dotenv from "dotenv"; +import pc from "picocolors"; import { init } from "./init.js"; dotenv.config(); @@ -7,12 +8,43 @@ dotenv.config(); const args = process.argv.slice(2); const command = args[0]; +const VERSION = "0.1.0"; + +const LOGO = ` +${pc.magenta(" █████╗ ██████╗ ██╗ ██╗ ██████╗██╗ █████╗ ██╗ ██╗")} +${pc.magenta(" ██╔══██╗██╔══██╗██║ ██╔╝ ██╔════╝██║ ██╔══██╗██║ ██║")} +${pc.magenta(" ███████║██║ ██║█████╔╝ ██║ ██║ ███████║██║ █╗ ██║")} +${pc.magenta(" ██╔══██║██║ ██║██╔═██╗ ██║ ██║ ██╔══██║██║███╗██║")} +${pc.magenta(" ██║ ██║██████╔╝██║ ██╗ ╚██████╗███████╗██║ ██║╚███╔███╔╝")} +${pc.magenta(" ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝")}`; + +function printSplash() { + console.log(LOGO); + console.log(); + console.log( + pc.dim(" Personal AI assistant with memory, Telegram & skills."), + ); + console.log(); + console.log(pc.dim(` v${VERSION}`)); + console.log(); + console.log(` ${pc.magenta("init")} Create a new ADK Claw project`); + console.log(` ${pc.magenta("start")} Start the AI agent`); + console.log(` ${pc.magenta("skill")} Manage agent skills`); + console.log(` ${pc.magenta("pairing")} Manage Telegram user pairing`); + console.log(); + console.log(pc.dim(` Docs: https://github.com/IQAIcom/adk-claw`)); + console.log(pc.dim(` GitHub: https://github.com/IQAIcom/adk-claw`)); + console.log(); +} + async function main() { switch (command) { case "init": - case undefined: await init(); break; + case undefined: + printSplash(); + break; case "start": await import("./start.js").then((m) => m.start()); break; @@ -26,50 +58,20 @@ async function main() { case "help": case "--help": case "-h": - printHelp(); + printSplash(); break; case "version": case "--version": case "-v": - printVersion(); + console.log(`adk-claw v${VERSION}`); break; default: console.error(`Unknown command: ${command}`); - printHelp(); + printSplash(); process.exit(1); } } -function printHelp() { - console.log(` -adk-claw - Personal AI Assistant Setup - -Usage: - adk-claw [command] - -Commands: - init Initialize ADK Claw (default) - start Start the Telegram bot - skill Manage skills (add, list, remove) - pairing Manage user pairing (list, approve, deny, users, remove) - help Show this help message - version Show version - -Examples: - adk-claw # Run setup wizard - adk-claw init # Same as above - adk-claw start # Launch Telegram bot - adk-claw skill add anthropics/skills --skill frontend-design # Install a skill - adk-claw skill list # List installed skills - adk-claw pairing list telegram # List pending pairing requests - adk-claw pairing approve telegram ABC12DEF # Approve a user -`); -} - -function printVersion() { - console.log("adk-claw v0.1.0"); -} - main().catch((err) => { console.error(err); process.exit(1); From c8be50ef777aa12cd47a3d1c900c9a1591e1ff6e Mon Sep 17 00:00:00 2001 From: "Marvel.Codes" Date: Wed, 18 Feb 2026 22:38:24 +0100 Subject: [PATCH 2/2] fix(cli): Read version from package.json instead of hardcoding --- src/cli/index.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index e293f4a..7f87de9 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1,15 +1,17 @@ #!/usr/bin/env node +import { createRequire } from "node:module"; import dotenv from "dotenv"; import pc from "picocolors"; import { init } from "./init.js"; dotenv.config(); +const require = createRequire(import.meta.url); +const { version: VERSION } = require("../../package.json"); + const args = process.argv.slice(2); const command = args[0]; -const VERSION = "0.1.0"; - const LOGO = ` ${pc.magenta(" █████╗ ██████╗ ██╗ ██╗ ██████╗██╗ █████╗ ██╗ ██╗")} ${pc.magenta(" ██╔══██╗██╔══██╗██║ ██╔╝ ██╔════╝██║ ██╔══██╗██║ ██║")}