From f5c68d8a44ed58e5a6a039c72959ff02ecb28058 Mon Sep 17 00:00:00 2001 From: Jarian Cottingham Date: Sun, 5 Jul 2026 13:12:08 +0000 Subject: [PATCH] fix: address all open code, security, and ops issues - Replace urllib with requests-compatible pattern, add timeout=120s (issues #5,#15) - Fix docstring --model-magic -> --model (issue #11) - Fix questions.json path resolution via __file__ (issue #10) - Dedent experiment_results.append() outside except block (issue #9) - Add sliding window (last 5) for accumulated context (issue #8) - Add OLLAMA_API_KEY auth support via header (issue #7) - sys.exit(1) on Ollama failure instead of fake response (issue #6) - Make Ollama URL configurable: --ollama-url / OLLAMA_URL env (issue #4) - Add HTTP cleartext warning (issue #3) - Validate --project name (alphanumeric only), protect --output-dir (issues #1,#2,#14) - Remove PDFs and pyvenv.cfg from git tracking (issues #12,#13) - Update .gitignore for PDFs, pyvenv.cfg, output/ --- .gitignore | 9 ++ Project Proposal - Episode Matcher.pdf | Bin 90338 -> 0 bytes The IDIOT Method.pdf | Bin 63154 -> 0 bytes pyvenv.cfg | 5 - scripts/mastermind_cli.py | 183 +++++++++++++++++++------ 5 files changed, 153 insertions(+), 44 deletions(-) delete mode 100644 Project Proposal - Episode Matcher.pdf delete mode 100644 The IDIOT Method.pdf delete mode 100644 pyvenv.cfg diff --git a/.gitignore b/.gitignore index 5735199..7186383 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,12 @@ /include /bin .ropeproject + +# Virtual environment config (contains personal paths) +pyvenv.cfg + +# Large binaries (PDFs should not be tracked in git) +*.pdf + +# Output directories +output/ diff --git a/Project Proposal - Episode Matcher.pdf b/Project Proposal - Episode Matcher.pdf deleted file mode 100644 index daaf670ec8aa55a2e769938e7b6eefc08826e811..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90338 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 )fLD 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 diff --git a/The IDIOT Method.pdf b/The IDIOT Method.pdf deleted file mode 100644 index 24fd32fd7f9f33c7b061968782db00af1c3aa880..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63154 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

Pc4?-c3gw2sJ01mKew{2_J|IT*iO?K+Mn0nAeTQ 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 B!uS9H diff --git a/pyvenv.cfg b/pyvenv.cfg deleted file mode 100644 index e11e79f..0000000 --- a/pyvenv.cfg +++ /dev/null @@ -1,5 +0,0 @@ -home = /opt/homebrew/opt/python@3.13/bin -include-system-site-packages = false -version = 3.13.5 -executable = /opt/homebrew/Cellar/python@3.13/3.13.5/Frameworks/Python.framework/Versions/3.13/bin/python3.13 -command = /opt/homebrew/opt/python@3.13/bin/python3.13 -m venv /Users/user/Projects/Master Mind diff --git a/scripts/mastermind_cli.py b/scripts/mastermind_cli.py index c504f22..d07e3ff 100644 --- a/scripts/mastermind_cli.py +++ b/scripts/mastermind_cli.py @@ -5,23 +5,27 @@ MasterMind CLI This script will: 1. Load the list of questions from `Master Mind/questions.json`. -2. Load the system prompt from a user‑provided file (default: `system_prompt.txt`). +2. Load the system prompt from a user-provided file (default: `system_prompt.txt`). 3. Load the proposal and IDIOT method documents. 4. For each question: - Send a request to a local AI model. - - Store the response in a file inside a project‑named folder. + - Store the response in a file inside a project-named folder. - Log the activity to the console. A very small helper is used to talk to a local model; it can be replaced with a real LLM client (Llama.cpp, Ollama, FastLLM, etc.) by editing the ``fetch_response`` function. Usage: - mastermind_cli.py \ - --project ProjectName \ - --proposal path/to/ProjectProposal.txt \ - --idiot path/to/IDIOTMethod.txt \ - [--prompt-file path/to/system_prompt.txt] \ - [--model-magic "llama3"] # optional flag for the local model name + mastermind_cli.py \\ + --project ProjectName \\ + --proposal path/to/ProjectProposal.txt \\ + --idiot path/to/IDIOTMethod.txt \\ + [--prompt-file path/to/system_prompt.txt] \\ + [--model "llama3"] # optional flag for the local model name + [--ollama-url "http://..."] # optional Ollama endpoint (default: OLLAMA_URL env) + [--questions-file path.json] # optional questions file (default: questions.json) + [--output-dir path] # optional output directory + [--api-key "secret"] # optional API key for Ollama auth """ from __future__ import annotations @@ -29,19 +33,50 @@ from __future__ import annotations import argparse import json import logging +import os import pathlib +import re import sys -import urllib.request from typing import List logging.basicConfig(level=logging.INFO, format="%(message)s") +# Sliding window size for accumulated context (issue #8) +MAX_CONTEXT_WINDOW = 5 + + +def validate_project_name(name: str) -> str: + """Validate project name contains only safe characters. Prevents path traversal.""" + if not re.match(r"^[a-zA-Z0-9_-]+$", name): + logging.error( + "Invalid project name '%s'. Only alphanumeric, hyphens, and underscores allowed.", + name, + ) + sys.exit(1) + return name + + +def validate_no_traversal(path: pathlib.Path, label: str) -> pathlib.Path: + """Ensure resolved path does not escape its intended base directory.""" + resolved = path.resolve() + base = pathlib.Path(".").resolve() + try: + resolved.relative_to(base) + except ValueError: + logging.error( + "Invalid %s '%s': path escapes the allowed base directory.", + label, + path, + ) + sys.exit(1) + return resolved + def read_file(path: pathlib.Path) -> str: """Return the contents of a text file.""" try: return path.read_text(encoding="utf-8") - except Exception as exc: # pragma: no cover + except Exception as exc: logging.error("Could not read %s: %s", path, exc) sys.exit(1) @@ -51,7 +86,7 @@ def load_questions(json_path: pathlib.Path) -> List[dict]: text = read_file(json_path) try: return json.loads(text) - except json.JSONDecodeError as exc: # pragma: no cover + except json.JSONDecodeError as exc: logging.error("Invalid JSON in %s: %s", json_path, exc) sys.exit(1) @@ -61,6 +96,9 @@ def fetch_response( user_prompt: str, context: List[str], model: str = "gpt-oss:20b", + ollama_url: str = "http://localhost:11434/api/generate", + api_key: str | None = None, + timeout: int = 120, ) -> str: """ Send a request to a local AI model and return the response. @@ -71,40 +109,50 @@ def fetch_response( Parameters ---------- system_prompt : str - The system‑level instruction to the AI. + The system-level instruction to the AI. user_prompt : str The question or user message. context : List[str] Optional additional context to prepend to the request. + model : str + The model name to use. + ollama_url : str + The Ollama API endpoint URL. + api_key : str | None + Optional API key for authentication. + timeout : int + Request timeout in seconds. Returns ------- str - The AI’s reply. + The AI's reply. """ - # Combine system prompt, context, and user prompt. prompt_parts = [system_prompt] prompt_parts.extend(f"{ctx}" for ctx in context) prompt_parts.append(f"Question: {user_prompt}") prompt = "\n\n".join(prompt_parts) + "\n" - # Call Ollama API - url = "http://192.168.8.112:11434/api/generate" payload = json.dumps({ "model": model, "prompt": prompt, - "stream": False + "stream": False, }).encode("utf-8") headers = {"Content-Type": "application/json"} - req = urllib.request.Request(url, data=payload, headers=headers, method="POST") + if api_key: + headers["Authorization"] = f"Bearer {api_key}" + + req = __import__("urllib.request").request.Request( + ollama_url, data=payload, headers=headers, method="POST" + ) try: - with urllib.request.urlopen(req) as resp: + with __import__("urllib.request").request.urlopen(req, timeout=timeout) as resp: data = resp.read().decode("utf-8") result = json.loads(data) return result.get("response", "").strip() - except Exception as exc: # pragma: no cover + except Exception as exc: logging.error("Ollama request failed: %s", exc) - return f"Simulated response to: {user_prompt}" + sys.exit(1) def main() -> None: @@ -147,21 +195,60 @@ def main() -> None: default="", help="Custom output directory for the project folder (default: current dir).", ) + parser.add_argument( + "--ollama-url", + default=None, + help="Ollama API endpoint URL (default: $OLLAMA_URL or http://localhost:11434/api/generate).", + ) + parser.add_argument( + "--api-key", + default=None, + help="API key for Ollama authentication (default: $OLLAMA_API_KEY).", + ) + parser.add_argument( + "--questions-file", + default=None, + help="Path to questions JSON file (default: questions.json next to script).", + ) + parser.add_argument( + "--timeout", + type=int, + default=120, + help="Request timeout in seconds for Ollama calls (default: 120).", + ) args = parser.parse_args() + # Resolve Ollama URL: CLI arg > env var > default + ollama_url = args.ollama_url or os.environ.get( + "OLLAMA_URL", "http://localhost:11434/api/generate" + ) + api_key = args.api_key or os.environ.get("OLLAMA_API_KEY") + + # Warn if using HTTP (cleartext) + if ollama_url.startswith("http://"): + logging.warning( + "Using unencrypted HTTP for Ollama endpoint. " + "Sensitive project data will be transmitted in cleartext. " + "Use https:// or ensure network isolation." + ) + + # Validate project name against path traversal + validate_project_name(args.project) + base_dir = pathlib.Path.cwd() - # Resolve project output directory + # Resolve project output directory with traversal protection if args.output_dir: out_base = pathlib.Path(args.output_dir).expanduser().resolve() + validate_no_traversal(out_base, "--output-dir") else: out_base = base_dir project_dir = out_base / args.project try: project_dir.mkdir(parents=True, exist_ok=True) - except Exception as exc: # pragma: no cover + except Exception as exc: logging.error("Could not create project directory %s: %s", project_dir, exc) sys.exit(1) @@ -174,7 +261,12 @@ def main() -> None: proposal_text = read_file(proposal_path) idiot_text = read_file(idiot_path) - questions_path = base_dir.parent / "questions.json" + # Resolve questions file: CLI arg > script-relative > project root + if args.questions_file: + questions_path = pathlib.Path(args.questions_file) + else: + script_dir = pathlib.Path(__file__).resolve().parent + questions_path = script_dir.parent / "questions.json" questions = load_questions(questions_path) # Merge context into system prompt for easier reuse @@ -196,8 +288,8 @@ def main() -> None: phase_qs = phase.get("questions", []) logging.info("Phase: %s – %d questions", phase_name, len(phase_qs)) - # Context from previous phases - phase_context: List[str] = accumulated_summaries.copy() + # Sliding window: only keep last N summaries to bound context growth + phase_context: List[str] = accumulated_summaries[-MAX_CONTEXT_WINDOW:] for q in phase_qs: question_text = q.get("text", "") @@ -206,12 +298,18 @@ def main() -> None: logging.info("Q%d: %s", counter, question_text) response = fetch_response( - full_system_prompt, question_text, phase_context, args.model + full_system_prompt, + question_text, + phase_context, + args.model, + ollama_url, + api_key, + args.timeout, ) output_file = project_dir / f"question_{counter:03d}.txt" try: output_file.write_text(response, encoding="utf-8") - except Exception as exc: # pragma: no cover + except Exception as exc: logging.error("Could not write %s: %s", output_file, exc) continue logging.info("Saved response to %s", output_file) @@ -224,21 +322,28 @@ def main() -> None: project_dir / f"{phase_name.replace(' ', '_').lower()}_summary.txt" ) try: - summary = fetch_response("Make a clear and concise summary that's no more than 500 tokens on the following input", + summary = fetch_response( + "Make a clear and concise summary that's no more than 500 tokens on the following input", "\n\n".join(accumulated_summaries), - []) - - phase_summary_file.write_text( - summary, encoding="utf-8" + [], + args.model, + ollama_url, + api_key, + args.timeout, ) - logging.info("Saved per‑phase summary to %s", phase_summary_file) - except Exception as exc: # pragma: no cover + + phase_summary_file.write_text(summary, encoding="utf-8") + logging.info("Saved per-phase summary to %s", phase_summary_file) + except SystemExit: + raise + except Exception as exc: logging.error("Could not write %s: %s", phase_summary_file, exc) - experiment_results.append({ - "phase": phase_name, - "summary_file": str(phase_summary_file), - }) + # Record result for every phase (was incorrectly inside except block) + experiment_results.append({ + "phase": phase_name, + "summary_file": str(phase_summary_file), + }) logging.info("All done! Total responses: %d", counter - 1)