Rename Hightower components to Trebuchet

- Rename npm packages: @shannon/api -> @trebuchet/api, @shannon/worker -> @trebuchet/worker, @keygraph/shannon -> @trebuchet/cli
- Update CLI references from shannon/keygraph to trebuchet/trebuchet
- Update Dockerfile and CLAUDE.md to reflect new package names
- Update TypeScript imports in API to use @trebuchet/worker

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-27 18:11:14 +00:00
parent f2442563d9
commit bf722638f7
14 changed files with 24 additions and 22 deletions
+1 -1
View File
@@ -37,7 +37,7 @@ export async function setup(): Promise<void> {
const configPath = path.join(SHANNON_HOME, 'config.toml');
p.log.success(`Configuration saved to ${configPath}`);
p.outro('Run `npx @keygraph/shannon start` to begin a scan.');
p.outro('Run `npx @trebuchet/cli start` to begin a scan.');
}
async function setupProvider(provider: Provider): Promise<ShannonConfig> {
+1 -1
View File
@@ -222,7 +222,7 @@ function printInfo(
repoPath: string,
workspacesDir: string,
): void {
const logsCmd = isLocal() ? `./shannon logs ${workspace}` : `npx @keygraph/shannon logs ${workspace}`;
const logsCmd = isLocal() ? `./trebuchet logs ${workspace}` : `npx @trebuchet/cli logs ${workspace}`;
const reportsPath = path.join(workspacesDir, workspace);
console.log(` Target: ${args.url}`);
+1 -1
View File
@@ -34,5 +34,5 @@ export async function uninstall(): Promise<void> {
fs.rmSync(SHANNON_HOME, { recursive: true, force: true });
p.log.success('All Shannon data has been removed.');
p.outro('Shannon has been uninstalled. Run `npx @keygraph/shannon setup` to start fresh.');
p.outro('Trebuchet has been uninstalled. Run `npx @trebuchet/cli setup` to start fresh.');
}
+1 -1
View File
@@ -95,7 +95,7 @@ function loadTOML(): TOMLConfig | null {
} catch (err) {
const message = err instanceof Error ? err.message : String(err);
console.error(`\nFailed to parse ${configPath}: ${message}`);
console.error(`\nRun 'npx @keygraph/shannon setup' to reconfigure.\n`);
console.error(`\nRun 'npx @trebuchet/cli setup' to reconfigure.\n`);
process.exit(1);
}
}
+1 -1
View File
@@ -163,7 +163,7 @@ export function validateCredentials(): CredentialValidation {
const hint =
getMode() === 'local'
? `No credentials found. Set ANTHROPIC_API_KEY in .env or export it.`
: `Authentication not configured. Export variables or run 'npx @keygraph/shannon setup'.`;
: `Authentication not configured. Export variables or run 'npx @trebuchet/cli setup'.`;
return {
valid: false,
mode: 'api-key',
+4 -4
View File
@@ -38,7 +38,7 @@ function getVersion(): string {
function showHelp(): void {
const mode = getMode();
const prefix = mode === 'local' ? './shannon' : 'npx @keygraph/shannon';
const prefix = mode === 'local' ? './trebuchet' : 'npx @trebuchet/cli';
console.log(`
Shannon - AI Penetration Testing Framework
@@ -155,14 +155,14 @@ function parseStartArgs(argv: string[]): ParsedStartArgs {
break;
default:
console.error(`Unknown option: ${arg}`);
console.error(`Run "${getMode() === 'local' ? './shannon' : 'npx @keygraph/shannon'} help" for usage`);
console.error(`Run "${getMode() === 'local' ? './trebuchet' : 'npx @trebuchet/cli'} help" for usage`);
process.exit(1);
}
}
if (!url || !repo) {
console.error('ERROR: --url and --repo are required');
console.error(`Usage: ${getMode() === 'local' ? './shannon' : 'npx @keygraph/shannon'} start -u <url> -r <path>`);
console.error(`Usage: ${getMode() === 'local' ? './trebuchet' : 'npx @trebuchet/cli'} start -u <url> -r <path>`);
process.exit(1);
}
@@ -208,7 +208,7 @@ switch (command) {
const workspaceId = args[1];
if (!workspaceId) {
console.error('ERROR: Workspace ID is required');
console.error(`Usage: ${getMode() === 'local' ? './shannon' : 'npx @keygraph/shannon'} logs <workspace>`);
console.error(`Usage: ${getMode() === 'local' ? './trebuchet' : 'npx @trebuchet/cli'} logs <workspace>`);
process.exit(1);
}
logs(workspaceId);