genlayer
Version:
GenLayer Command Line Tool
95 lines (84 loc) • 3.21 kB
text/typescript
import { Command } from "commander";
import { ValidatorsAction } from "./validators";
export function initializeValidatorCommands(program: Command) {
const validatorsAction = new ValidatorsAction();
const validatorsCommand = program
.command("validators")
.description("Manage validator operations");
validatorsCommand
.command("get")
.description("Retrieve details of a specific validator or all validators")
.option("--address <validatorAddress>", "The address of the validator to retrieve (omit to retrieve all validators)")
.action(async (options) => {
await validatorsAction.getValidator({ address: options.address });
});
validatorsCommand
.command("delete")
.description("Delete a specific validator or all validators")
.option("--address <validatorAddress>", "The address of the validator to delete (omit to delete all validators)")
.action(async (options) => {
await validatorsAction.deleteValidator({ address: options.address });
});
validatorsCommand
.command("count")
.description("Count all validators")
.action(async () => {
await validatorsAction.countValidators();
});
validatorsCommand
.command("update <validatorAddress>")
.description("Update a validator's details")
.option("--stake <stake>", "New stake for the validator")
.option("--provider <provider>", "New provider for the validator")
.option("--model <model>", "New model for the validator")
.option("--config <config>", "New JSON config for the validator")
.action(async (validatorAddress, options) => {
await validatorsAction.updateValidator({
address: validatorAddress,
stake: options.stake,
provider: options.provider,
model: options.model,
config: options.config,
});
});
validatorsCommand
.command("create-random")
.description("Create random validators")
.option("--count <count>", "Number of validators to create", "1") // Default to "1"
.option(
"--providers <providers...>",
"Space-separated list of provider names (e.g., openai ollama)",
[]
)
.option(
"--models <models...>",
"Space-separated list of model names (e.g., gpt-4 gpt-4o)",
[]
)
.action(async (options) => {
await validatorsAction.createRandomValidators({
count: options.count,
providers: options.providers,
models: options.models,
});
});
validatorsCommand
.command("create")
.description("Create a new validator")
.option("--stake <stake>", "Stake amount for the validator (default: 1)", "1")
.option(
"--config <config>",
'Optional JSON configuration for the validator (e.g., \'{"max_tokens": 500, "temperature": 0.75}\')'
)
.option("--provider <provider>", "Specify the provider for the validator")
.option("--model <model>", "Specify the model for the validator")
.action(async (options) => {
await validatorsAction.createValidator({
stake: options.stake,
config: options.config,
provider: options.provider,
model: options.model,
});
});
return program;
}