diff --git a/cli/lib/addMainnetInventory.ts b/cli/lib/addMainnetInventory.ts index 426c5d9d..eb0a42cb 100644 --- a/cli/lib/addMainnetInventory.ts +++ b/cli/lib/addMainnetInventory.ts @@ -36,7 +36,7 @@ const addMainnetInventory = async ( validator_type: 'firedancer-jito', region: '', port_rpc: 8899, - dynamic_port_range: '8000-8025', + dynamic_port_range: '8000-8030', relayer_url: 'http://localhost:11226', block_engine_url: 'http://ny.mainnet.relayer.jito.wtf:8100', shred_receiver_address: '', diff --git a/cli/src/ai/console/tools.ts b/cli/src/ai/console/tools.ts index 7b81ac0a..356d047d 100644 --- a/cli/src/ai/console/tools.ts +++ b/cli/src/ai/console/tools.ts @@ -12,10 +12,7 @@ import { } from '@/ai/console/systemPrompt.ts' import { DISCORD_LINK } from '@cmn/constants/url.ts' import { loadAgentContext } from '@/ai/agentConfig/loader.ts' -import { - isKnownAgentId, - ALL_AGENT_IDS, -} from '@/ai/agentConfig/registry.ts' +import { ALL_AGENT_IDS, isKnownAgentId } from '@/ai/agentConfig/registry.ts' import { resolveAgentMdPath, resolveSkillMdPath, @@ -160,7 +157,6 @@ export type ToolDefinition = { parameters: Record } - // Core tools — safe orchestration helpers available after bootstrap export const CORE_TOOLS: ToolDefinition[] = [ { @@ -522,7 +518,8 @@ function checkWalletGuard(command: string): string | null { }, { re: />\s*wallet\.json\b/, - reason: 'refusing to truncate or overwrite wallet.json via shell redirect', + reason: + 'refusing to truncate or overwrite wallet.json via shell redirect', }, { re: new RegExp(`\\brm${rmFlags}\\s+[^\\n]*${home}/\\.slv(/|\\s|$|['"])`), @@ -546,8 +543,7 @@ function checkWalletGuard(command: string): string | null { async function executeRunCommand(command: string): Promise { const guardReason = checkWalletGuard(command) if (guardReason !== null) { - const msg = - `Command blocked by wallet safety guard: ${guardReason}\n\n` + + const msg = `Command blocked by wallet safety guard: ${guardReason}\n\n` + `Command: ${command}\n\n` + `This is a hard guard that runs before confirmation to protect wallet.json and ~/.slv from accidental deletion. Do not retry with a rephrased command — either delegate to the Setzer sub-agent (agent='Setzer') for bot/app work, or ask the user to run the command manually if they truly intend it.` if (!tuiInstance) { @@ -1199,7 +1195,7 @@ Use write_file to create \`${home}/.slv/inventory..validators.yml\`: region: snapshot_url: "" # Auto-detected from nearest region commission_bps: 0 - dynamic_port_range: "8900-8925" + dynamic_port_range: "8900-8930" port_rpc: 7211 \`\`\` diff --git a/cli/src/rpc/init/devnetInitRpc.ts b/cli/src/rpc/init/devnetInitRpc.ts index d91b0a3e..c5959f1a 100644 --- a/cli/src/rpc/init/devnetInitRpc.ts +++ b/cli/src/rpc/init/devnetInitRpc.ts @@ -58,7 +58,7 @@ export const devnetInitRpc = async ( rpc_type: rpc_type as RpcType, port_rpc: 7211, richat_version: VERSION_RICHAT, - dynamic_port_range: '8000-8025', + dynamic_port_range: '8000-8030', validator_type: rpcTypes.validatorType as SolanaNodeType, region: 'ny', limit_ledger_size: 200000000, diff --git a/cli/src/rpc/init/mainnetInitRpc.ts b/cli/src/rpc/init/mainnetInitRpc.ts index 4599df2c..e265980a 100644 --- a/cli/src/rpc/init/mainnetInitRpc.ts +++ b/cli/src/rpc/init/mainnetInitRpc.ts @@ -110,7 +110,7 @@ export const mainnetInitRpc = async ( name: identity_account, rpc_type: rpc_type as RpcType, port_rpc: 7211, - dynamic_port_range: '8000-8025', + dynamic_port_range: '8000-8030', validator_type: rpcTypes.validatorType as SolanaNodeType, region: getNearRegion.region, limit_ledger_size: 200000000, diff --git a/cli/src/rpc/init/testnetInitRpc.ts b/cli/src/rpc/init/testnetInitRpc.ts index c426c940..eeb5e23e 100644 --- a/cli/src/rpc/init/testnetInitRpc.ts +++ b/cli/src/rpc/init/testnetInitRpc.ts @@ -102,7 +102,7 @@ export const testnetInitRpc = async ( name: identity_account, rpc_type: rpc_type as RpcType, port_rpc: 7211, - dynamic_port_range: '8000-8025', + dynamic_port_range: '8000-8030', validator_type: rpcTypes.validatorType as SolanaNodeType, region: getNearRegion.region, limit_ledger_size: 200000000, diff --git a/cli/src/validator/init/initMainnetConfig.ts b/cli/src/validator/init/initMainnetConfig.ts index 7bd9e4c3..91e0509e 100644 --- a/cli/src/validator/init/initMainnetConfig.ts +++ b/cli/src/validator/init/initMainnetConfig.ts @@ -149,7 +149,7 @@ const initMainnetConfig = async ( region: getNearRegion.region, commission_bps: Number(commissionBps), port_rpc: 7211, - dynamic_port_range: '8900-8925', + dynamic_port_range: '8900-8930', relayer_url, block_engine_url: blockEngineRegion, shred_receiver_address: String(shredstream_address), diff --git a/cli/src/validator/init/initTestnetConfig.ts b/cli/src/validator/init/initTestnetConfig.ts index 973fdf18..876c9c84 100644 --- a/cli/src/validator/init/initTestnetConfig.ts +++ b/cli/src/validator/init/initTestnetConfig.ts @@ -126,7 +126,7 @@ const initTestnetConfig = async ( shred_receiver_address: String(getNearRegion.info.shredReceiver), snapshot_url: '', port_rpc: 7211, - dynamic_port_range: '8900-8925', + dynamic_port_range: '8900-8930', ...xdpConfig, } await updateInventory(name, configTestnet) diff --git a/template/2026.5.21.1448/jinja/devnet-rpc/start-validator.sh.j2 b/template/2026.5.21.1448/jinja/devnet-rpc/start-validator.sh.j2 index dcaafd5b..2275abc4 100644 --- a/template/2026.5.21.1448/jinja/devnet-rpc/start-validator.sh.j2 +++ b/template/2026.5.21.1448/jinja/devnet-rpc/start-validator.sh.j2 @@ -16,7 +16,7 @@ exec agave-validator \ --known-validator dv3qDFk1DTF36Z62bNvrCXe9sKATA6xvVy6A798xxAS \ --only-known-rpc \ --expected-genesis-hash EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG \ ---dynamic-port-range {{ dynamic_port_range | default("8900-8925") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8900-8930") }} \ --full-rpc-api \ --no-voting \ --rpc-port {{ port_rpc | default(8899, true) }} \ diff --git a/template/2026.5.21.1448/jinja/mainnet-pythnet/start-pythnet.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-pythnet/start-pythnet.sh.j2 index b8088dd1..a8383ae6 100644 --- a/template/2026.5.21.1448/jinja/mainnet-pythnet/start-pythnet.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-pythnet/start-pythnet.sh.j2 @@ -22,7 +22,7 @@ exec /usr/local/bin/solana-validator \ --rpc-bind-address {{ pythnet_rpc_bind | default('0.0.0.0') }} \ --full-rpc-api \ --enable-rpc-transaction-history \ - --dynamic-port-range {{ pythnet_dynamic_port_range | default('8000-8020') }} \ + --dynamic-port-range {{ pythnet_dynamic_port_range | default('8000-8030') }} \ --gossip-port {{ pythnet_gossip_port | default(8001) }} \ --account-index program-id \ --ledger {{ pythnet_ledger_mount | default('/mnt/ledger') }}/pythnet/ledger \ diff --git a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 index d6e83a91..35a21c07 100644 --- a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 @@ -20,7 +20,7 @@ exec agave-validator \ --no-voting \ --private-rpc \ --no-skip-initial-accounts-db-clean \ ---dynamic-port-range 8000-8020 \ +--dynamic-port-range 8000-8030 \ --rpc-bind-address 0.0.0.0 \ --rpc-port {{ port_rpc }} \ --no-port-check \ diff --git a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 index a1561251..90357725 100644 --- a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 @@ -21,7 +21,7 @@ exec agave-validator \ --no-voting \ --private-rpc \ --no-skip-initial-accounts-db-clean \ ---dynamic-port-range 8000-8020 \ +--dynamic-port-range 8000-8030 \ --rpc-bind-address 0.0.0.0 \ --rpc-port {{ port_rpc }} \ --no-port-check \ diff --git a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 index db287ae2..54a53fb2 100644 --- a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 @@ -21,7 +21,7 @@ exec agave-validator \ --no-voting \ --private-rpc \ --no-skip-initial-accounts-db-clean \ ---dynamic-port-range 8000-8020 \ +--dynamic-port-range 8000-8030 \ --rpc-bind-address 0.0.0.0 \ --rpc-port {{ port_rpc }} \ --no-port-check \ diff --git a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 index 7617ed7f..63f4c8f1 100644 --- a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 @@ -22,7 +22,7 @@ exec agave-validator \ --private-rpc \ --enable-cpi-and-log-storage \ --no-skip-initial-accounts-db-clean \ ---dynamic-port-range 8000-8020 \ +--dynamic-port-range 8000-8030 \ --rpc-bind-address 0.0.0.0 \ --rpc-port {{ port_rpc }} \ --no-port-check \ diff --git a/template/2026.5.21.1448/jinja/mainnet-rpc/start-validator.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-rpc/start-validator.sh.j2 index 7d223cae..c3361df3 100644 --- a/template/2026.5.21.1448/jinja/mainnet-rpc/start-validator.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-rpc/start-validator.sh.j2 @@ -17,7 +17,7 @@ exec agave-validator \ --only-known-rpc \ --expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \ --expected-shred-version 50093 \ ---dynamic-port-range {{ dynamic_port_range | default("8900-8925") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8900-8930") }} \ --no-voting \ --rpc-port {{ port_rpc | default(8899, true) }} \ --rpc-bind-address 0.0.0.0 \ diff --git a/template/2026.5.21.1448/jinja/mainnet-validator/start-validator.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-validator/start-validator.sh.j2 index 4ee32d84..3c04e007 100644 --- a/template/2026.5.21.1448/jinja/mainnet-validator/start-validator.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-validator/start-validator.sh.j2 @@ -18,7 +18,7 @@ exec agave-validator \ --only-known-rpc \ --expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \ --expected-shred-version 50093 \ ---dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8030") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ --use-snapshot-archives-at-startup when-newest \ diff --git a/template/2026.5.21.1448/jinja/testnet-rpc/start-validator.sh.j2 b/template/2026.5.21.1448/jinja/testnet-rpc/start-validator.sh.j2 index 37219fdb..b8eb7273 100644 --- a/template/2026.5.21.1448/jinja/testnet-rpc/start-validator.sh.j2 +++ b/template/2026.5.21.1448/jinja/testnet-rpc/start-validator.sh.j2 @@ -15,7 +15,7 @@ exec agave-validator \ --known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \ --only-known-rpc \ --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \ ---dynamic-port-range {{ dynamic_port_range | default("8900-8925") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8900-8930") }} \ --no-voting \ --full-rpc-api \ --rpc-port {{ port_rpc | default(8899, true) }} \ diff --git a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 index 376412b0..f4cae196 100644 --- a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 +++ b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 @@ -11,12 +11,16 @@ exec agave-validator \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ --only-known-rpc \ --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \ ---dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8030") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ ---wait-for-supermajority {{ wait_for_supermajority | default("383520372") }} \ +{% if wait_for_supermajority is defined %} +--wait-for-supermajority {{ wait_for_supermajority }} \ +{% endif %} --expected-shred-version {{ expected_shred_version | default("57087") }} \ ---expected-bank-hash {{ expected_bank_hash | default("YFxSkDcvSPiA7EQpSTbCsWbJvNYMAsWXGvwGc3bXHEA") }} \ +{% if expected_bank_hash is defined %} +--expected-bank-hash {{ expected_bank_hash }} \ +{% endif %} --limit-ledger-size {{ limit_ledger_size | default(200000000) }} \ --no-port-check \ {% if xdp_enabled | default(false) and xdp_interface | default('') %} diff --git a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 index 15aa1256..0ff3aa21 100644 --- a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 +++ b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 @@ -11,12 +11,16 @@ exec agave-validator \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ --only-known-rpc \ --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \ ---dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8030") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ ---wait-for-supermajority {{ wait_for_supermajority | default("383520372") }} \ +{% if wait_for_supermajority is defined %} +--wait-for-supermajority {{ wait_for_supermajority }} \ +{% endif %} --expected-shred-version {{ expected_shred_version | default("57087") }} \ ---expected-bank-hash {{ expected_bank_hash | default("YFxSkDcvSPiA7EQpSTbCsWbJvNYMAsWXGvwGc3bXHEA") }} \ +{% if expected_bank_hash is defined %} +--expected-bank-hash {{ expected_bank_hash }} \ +{% endif %} --limit-ledger-size {{ limit_ledger_size | default(200000000) }} \ --no-port-check \ {% if xdp_enabled | default(false) and xdp_interface | default('') %} diff --git a/template/2026.5.21.1448/jinja/testnet-validator/start-validator.sh.j2 b/template/2026.5.21.1448/jinja/testnet-validator/start-validator.sh.j2 index 47e1b9b8..3a900c91 100644 --- a/template/2026.5.21.1448/jinja/testnet-validator/start-validator.sh.j2 +++ b/template/2026.5.21.1448/jinja/testnet-validator/start-validator.sh.j2 @@ -9,7 +9,7 @@ exec agave-validator \ --entrypoint entrypoint2.testnet.solana.com:8001 \ --entrypoint entrypoint3.testnet.solana.com:8001 \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ ---dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8030") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ {% if wait_for_supermajority is defined %}