feat(cli): add foundation - package setup and entry point

Add @paseo/cli package with:
- Package structure with npm workspace integration
- bin/paseo entry point using tsx
- Commander.js setup with --version and --help
- Placeholder subcommands: agent, daemon, permit, worktree, provider
This commit is contained in:
Mohamed Boudra
2026-01-28 22:42:08 +07:00
parent 2c138312b2
commit 6781c1b888
7 changed files with 139 additions and 2 deletions
+43 -1
View File
@@ -14,7 +14,8 @@
"packages/app",
"packages/relay",
"packages/website",
"packages/desktop"
"packages/desktop",
"packages/cli"
],
"dependencies": {
"@anthropic-ai/claude-agent-sdk": "^0.2.11"
@@ -6698,6 +6699,10 @@
"resolved": "packages/app",
"link": true
},
"node_modules/@paseo/cli": {
"resolved": "packages/cli",
"link": true
},
"node_modules/@paseo/desktop": {
"resolved": "packages/desktop",
"link": true
@@ -26344,6 +26349,43 @@
"url": "https://github.com/sponsors/colinhacks"
}
},
"packages/cli": {
"name": "@paseo/cli",
"version": "0.1.0",
"dependencies": {
"@paseo/server": "*",
"chalk": "^5.3.0",
"commander": "^12.0.0"
},
"bin": {
"paseo": "bin/paseo"
},
"devDependencies": {
"tsx": "^4.6.0",
"typescript": "^5.2.2"
}
},
"packages/cli/node_modules/chalk": {
"version": "5.6.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
"license": "MIT",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"packages/cli/node_modules/commander": {
"version": "12.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
"integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"license": "MIT",
"engines": {
"node": ">=18"
}
},
"packages/desktop": {
"name": "@paseo/desktop",
"version": "1.0.0",
+2 -1
View File
@@ -7,7 +7,8 @@
"packages/app",
"packages/relay",
"packages/website",
"packages/desktop"
"packages/desktop",
"packages/cli"
],
"scripts": {
"dev": "./scripts/dev.sh",
+2
View File
@@ -0,0 +1,2 @@
#!/usr/bin/env npx tsx
import '../src/index.js'
+21
View File
@@ -0,0 +1,21 @@
{
"name": "@paseo/cli",
"version": "0.1.0",
"description": "Paseo CLI - control your AI coding agents from the command line",
"type": "module",
"bin": {
"paseo": "./bin/paseo"
},
"scripts": {
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@paseo/server": "*",
"commander": "^12.0.0",
"chalk": "^5.3.0"
},
"devDependencies": {
"typescript": "^5.2.2",
"tsx": "^4.6.0"
}
}
+50
View File
@@ -0,0 +1,50 @@
import { Command } from 'commander'
const VERSION = '0.1.0'
export function createCli(): Command {
const program = new Command()
program
.name('paseo')
.description('Paseo CLI - control your AI coding agents from the command line')
.version(VERSION, '-v, --version', 'output the version number')
// Placeholder subcommands for Phase 1
program
.command('agent')
.description('Manage agents')
.action(() => {
console.log('agent command (not yet implemented)')
})
program
.command('daemon')
.description('Manage the Paseo daemon')
.action(() => {
console.log('daemon command (not yet implemented)')
})
program
.command('permit')
.description('Manage permission requests')
.action(() => {
console.log('permit command (not yet implemented)')
})
program
.command('worktree')
.description('Manage git worktrees')
.action(() => {
console.log('worktree command (not yet implemented)')
})
program
.command('provider')
.description('Manage agent providers')
.action(() => {
console.log('provider command (not yet implemented)')
})
return program
}
+4
View File
@@ -0,0 +1,4 @@
import { createCli } from './cli.js'
const program = createCli()
program.parse()
+17
View File
@@ -0,0 +1,17 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"module": "NodeNext",
"moduleResolution": "NodeNext",
"outDir": "./dist",
"rootDir": "./src",
"declaration": true,
"declarationMap": true,
"sourceMap": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist", "src/**/*.test.ts"]
}