@1mancompany/onemancompany 0.7.71 → 0.7.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1mancompany/onemancompany",
3
- "version": "0.7.71",
3
+ "version": "0.7.72",
4
4
  "description": "The AI Operating System for One-Person Companies",
5
5
  "bin": {
6
6
  "onemancompany": "bin/cli.js"
package/pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "onemancompany"
3
- version = "0.7.71"
3
+ version = "0.7.72"
4
4
  description = "A one-man company simulation with pixel art visualization and LangChain AI agents"
5
5
  requires-python = ">=3.12"
6
6
  dependencies = [
@@ -59,6 +59,7 @@ _TC_NAME_KEY = "name" # tool_call dict key
59
59
  _TC_ATTR = "tool_calls" # AIMessage attribute name
60
60
  _UNKNOWN_TOOL = "unknown"
61
61
  _NO_OUTPUT = "(no output)"
62
+ _MISSING_API_KEY_SENTINEL = "missing-api-key"
62
63
 
63
64
 
64
65
  def _extract_text(content) -> str:
@@ -244,7 +245,14 @@ def make_llm(employee_id: str = "", temperature: float | None = None) -> BaseCha
244
245
 
245
246
  fallback_key = settings.openrouter_api_key
246
247
  if not fallback_key:
247
- logger.warning("make_llm: no API key for provider '{}' and no OpenRouter fallback key; LLM calls will fail", api_provider)
248
+ logger.warning(
249
+ "make_llm: no API key for provider '{}' and no OpenRouter fallback key; "
250
+ "LLM calls will fail. Set DEFAULT_API_PROVIDER with the matching provider API key in {}, "
251
+ "or set OPENROUTER_API_KEY for fallback.",
252
+ api_provider,
253
+ _cfg.DATA_ROOT / _cfg.DOT_ENV_FILENAME,
254
+ )
255
+ fallback_key = _MISSING_API_KEY_SENTINEL
248
256
 
249
257
  return ChatOpenAI(
250
258
  model=model,
@@ -384,21 +384,15 @@ def _step_llm(console: Console) -> tuple[str, str, str, str]:
384
384
  if not base_url:
385
385
  console.print(" [red]Base URL is required for custom providers.[/red]")
386
386
  base_url = _inq.text(message="Base URL:", style=INQ_STYLE).execute().strip()
387
- elif provider != PROVIDER_OPENROUTER:
388
- console.print(
389
- f" [dim]Custom API base URL (press Enter to keep default).[/dim]\n"
390
- f" [dim]Examples: https://api.openai.com/v1, https://your-server.com/v1[/dim]"
391
- )
392
- from onemancompany.core.config import PROVIDER_REGISTRY
393
- default_url = PROVIDER_REGISTRY.get(provider, None)
394
- default_url = default_url.base_url if default_url else ""
395
- base_url = _inq.text(
396
- message="Base URL:",
397
- default=default_url,
398
- style=INQ_STYLE,
399
- ).execute().strip()
400
387
 
401
388
  # 4. Select model — try fetching from provider, fall back to manual input
389
+ model = _select_or_enter_model(console, provider, api_key)
390
+ return provider, api_key.strip(), model, base_url, custom_chat_class
391
+
392
+
393
+ def _select_or_enter_model(console: Console, provider: str, api_key: str) -> str:
394
+ from InquirerPy import inquirer as _inq
395
+
402
396
  console.print()
403
397
  all_models = _fetch_provider_models(console, provider, api_key)
404
398
  if all_models:
@@ -412,8 +406,7 @@ def _step_llm(console: Console) -> tuple[str, str, str, str]:
412
406
  default=default_model,
413
407
  style=INQ_STYLE,
414
408
  ).execute().strip()
415
-
416
- return provider, api_key.strip(), model, base_url, custom_chat_class
409
+ return model
417
410
 
418
411
 
419
412
  def _step_server(console: Console) -> tuple[str, int]: