import os
import time
import json
import argparse
import uuid
BASE_DIR = "/usr/local/google/home/jerxie/Projects/PersonalProject/cortex-hub/tmp/swarm"
REQUESTS_DIR = os.path.join(BASE_DIR, "requests")
RESPONSES_DIR = os.path.join(BASE_DIR, "responses")
def main():
parser = argparse.ArgumentParser(description="Swarm CLI")
parser.add_argument("--target", required=True, help="Target agent")
parser.add_argument("--prompt", required=True, help="Instruction prompt")
parser.add_argument("--mode", choices=["normal", "yolo"], default="normal", help="Mode: normal or yolo")
args = parser.parse_args()
req_id = f"req_{uuid.uuid4().hex[:8]}"
resp_file = os.path.join(RESPONSES_DIR, f"res_{req_id}.json")
req_data = {
"request_id": req_id,
"target_agent": args.target,
"prompt": args.prompt,
"response_file": resp_file
}
print(f"Target: {args.target}")
print(f"Prompt: {args.prompt}")
print(f"Mode: {args.mode}")
if args.mode == "normal":
try:
confirm = input("Are you sure you want to send this command? [y/N]: ")
if confirm.lower() != 'y':
print("Aborted.")
return
except EOFError:
print("No interactive terminal found, aborting in normal mode.")
return
os.makedirs(REQUESTS_DIR, exist_ok=True)
req_file = os.path.join(REQUESTS_DIR, f"{req_id}.json")
with open(req_file, 'w') as f:
json.dump(req_data, f, indent=2)
print(f"Request {req_id} sent.")
print(f"Waiting for response in {resp_file}...")
# Wait for response
start_time = time.time()
timeout = 30 # seconds
while time.time() - start_time < timeout:
if os.path.exists(resp_file):
print("Response received:")
try:
with open(resp_file, 'r') as f:
resp = json.load(f)
print(resp.get("output"))
return
except json.JSONDecodeError:
# File might be still being written
time.sleep(0.5)
continue
time.sleep(1)
print("Timed out waiting for response.")
if __name__ == "__main__":
main()