Add local host mode and configurable LLM providers
This commit is contained in:
@@ -2,7 +2,9 @@ from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import getpass
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from collections.abc import Sequence
|
||||
from dataclasses import replace
|
||||
|
||||
@@ -18,6 +20,7 @@ class LocalAccountSetupError(RuntimeError):
|
||||
|
||||
|
||||
def main(argv: Sequence[str] | None = None) -> None:
|
||||
_load_dotenv()
|
||||
parser = argparse.ArgumentParser(description="Run the Device Host Agent")
|
||||
subparsers = parser.add_subparsers(dest="command")
|
||||
subparsers.add_parser("setup", help="Create the local operator account")
|
||||
@@ -96,3 +99,19 @@ def _prompt_and_create(store: LocalAccountStore):
|
||||
if password != confirm:
|
||||
raise LocalAccountSetupError("passwords do not match")
|
||||
return store.create(username, password)
|
||||
|
||||
|
||||
def _load_dotenv() -> None:
|
||||
"""Load a simple repository-root .env without overriding shell values."""
|
||||
path = Path.cwd() / ".env"
|
||||
if not path.is_file():
|
||||
return
|
||||
for line in path.read_text(encoding="utf-8").splitlines():
|
||||
line = line.strip()
|
||||
if not line or line.startswith("#") or "=" not in line:
|
||||
continue
|
||||
name, value = line.split("=", 1)
|
||||
name = name.strip()
|
||||
value = value.strip()
|
||||
if name and name not in os.environ:
|
||||
os.environ[name] = value
|
||||
|
||||
Reference in New Issue
Block a user