From 414f94811a0baadc93833ad3d5a04443f9f2fb06 Mon Sep 17 00:00:00 2001 From: Dita Aji Pratama Date: Sun, 12 Jul 2026 13:35:14 +0700 Subject: [PATCH] feat: add --char CLI argument for character selection - Pre-parse --char before config import via argparse - Falls back to config.yaml agent.character if not provided - Replaces manual sys.argv parsing with proper argparse - Retains existing -w/--workspace argument --- hendrik.py | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/hendrik.py b/hendrik.py index 7242105..496ab20 100644 --- a/hendrik.py +++ b/hendrik.py @@ -1,4 +1,14 @@ -import os, sys, threading, time, signal +import os, sys +import argparse + +# Pre-parse --char BEFORE config import (config reads os.environ at import time) +_pre = argparse.ArgumentParser(add_help=False) +_pre.add_argument('--char', type=str, default=None) +_pre_args, _ = _pre.parse_known_args() +if _pre_args.char: + os.environ['AGENT_CHARACTER'] = _pre_args.char + +import threading, time, signal import config @@ -58,23 +68,20 @@ TOOLS = gadget.tool_schemas (tools_definition) TOOL_HANDLERS = gadget.tool_handlers (tools_definition) def main(): - llm_client = LLMClient(config.llm_baseurl, config.llm_model, config.llm_api_key, config.llm_timeout) + parser = argparse.ArgumentParser(description="Hendrik AI Agent") + parser.add_argument('--char', type=str, default=None, help='Character name (overrides config.yaml)') + parser.add_argument('-w', '--workspace', type=str, default=None, help='Working directory') + args = parser.parse_args() - workspace = None - i = 1 - while i < len(sys.argv): - if sys.argv[i] in ('-w', '--workspace') and i + 1 < len(sys.argv): - workspace = sys.argv[i + 1] - i += 2 - else: - i += 1 - if workspace: - resolved = os.path.abspath(workspace) + if args.workspace: + resolved = os.path.abspath(args.workspace) if not os.path.isdir(resolved): print(f"Error: '{resolved}' is not a valid directory", flush=True) sys.exit(1) os.chdir(resolved) + llm_client = LLMClient(config.llm_baseurl, config.llm_model, config.llm_api_key, config.llm_timeout) + services = [] if config.XMPP_ENABLED: