forgexa-cli 1.27.4__tar.gz → 1.28.0__tar.gz

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.
Files changed (27) hide show
  1. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/PKG-INFO +1 -1
  2. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/__init__.py +1 -1
  3. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/daemon.py +23 -1
  4. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/PKG-INFO +1 -1
  5. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/pyproject.toml +1 -1
  6. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/README.md +0 -0
  7. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/_build_config.py +0 -0
  8. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/_local_bind.py +0 -0
  9. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/agent_core.py +0 -0
  10. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/autoupgrade.py +0 -0
  11. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/main.py +0 -0
  12. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/py.typed +0 -0
  13. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/SOURCES.txt +0 -0
  14. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/dependency_links.txt +0 -0
  15. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/entry_points.txt +0 -0
  16. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/requires.txt +0 -0
  17. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/top_level.txt +0 -0
  18. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/setup.cfg +0 -0
  19. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_auth_and_runtime_commands.py +0 -0
  20. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_autoupgrade.py +0 -0
  21. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_check_command.py +0 -0
  22. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_expiry_warnings_and_revoke.py +0 -0
  23. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_local_bind_commands.py +0 -0
  24. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_runtime_credentials.py +0 -0
  25. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_session_credentials.py +0 -0
  26. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_silent_install.py +0 -0
  27. {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_upgrade_observability.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: forgexa-cli
3
- Version: 1.27.4
3
+ Version: 1.28.0
4
4
  Summary: Forgexa CLI — command-line client and AI agent runtime for the Forgexa platform
5
5
  Author-email: Jason Sun <dev.winds@gmail.com>
6
6
  License-Expression: MIT
@@ -1,2 +1,2 @@
1
1
  """forgexa-cli — Forgexa command-line client."""
2
- __version__ = "1.27.4"
2
+ __version__ = "1.28.0"
@@ -909,7 +909,7 @@ except (ImportError, ModuleNotFoundError):
909
909
  # DAEMON_VERSION is the protocol/logic version of the daemon code.
910
910
  # Kept in sync with pyproject.toml version via bump-version.sh.
911
911
  # CLIENT_TYPE identifies which packaging/distribution this daemon runs in.
912
- DAEMON_VERSION = "1.27.4"
912
+ DAEMON_VERSION = "1.28.0"
913
913
 
914
914
 
915
915
  def _detect_client_type() -> str:
@@ -4627,6 +4627,8 @@ class ProcessManager:
4627
4627
  "network is unreachable",
4628
4628
  "websockettransporterror",
4629
4629
  "websocket receive failed",
4630
+ "421 misdirected request",
4631
+ "failed to initialize mcp client",
4630
4632
  # "api error" removed: too broad — matches agent-generated code/output
4631
4633
  # discussing API errors. Real API transport errors are covered by the
4632
4634
  # connection patterns above (refused, reset, timed out, etc.).
@@ -5525,6 +5527,26 @@ class ProcessManager:
5525
5527
  shutil.copy2(auth_src, isolated_data_dir / "auth.json")
5526
5528
  env = agent_core.opencode_base_env(os.environ.copy(), data_home=tmp_data_root)
5527
5529
  result = await self._run_cli(cmd, cwd, timeout, task_id, on_chunk=on_chunk, env=env)
5530
+ output = "\n".join(
5531
+ part for part in (result.stdout, result.stderr, result.error) if part
5532
+ ).lower()
5533
+ if model_override and "model not found" in output and model_override.lower() in output:
5534
+ logger.warning(
5535
+ "OpenCode model override %r is unavailable for task %s; retrying without it",
5536
+ model_override,
5537
+ task_id,
5538
+ )
5539
+ retry_env = dict(env)
5540
+ retry_env.pop("FACTORY_OPENCODE_MODEL", None)
5541
+ cmd = agent_core.build_opencode_command(
5542
+ agent.command,
5543
+ cwd=cwd,
5544
+ prompt_file=prompt_file,
5545
+ )
5546
+ result = await self._run_cli(
5547
+ cmd, cwd, timeout, task_id, on_chunk=on_chunk, env=retry_env,
5548
+ )
5549
+ result.metrics["opencode_model_override_fallback"] = True
5528
5550
  finally:
5529
5551
  shutil.rmtree(tmp_data_root, ignore_errors=True)
5530
5552
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: forgexa-cli
3
- Version: 1.27.4
3
+ Version: 1.28.0
4
4
  Summary: Forgexa CLI — command-line client and AI agent runtime for the Forgexa platform
5
5
  Author-email: Jason Sun <dev.winds@gmail.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "forgexa-cli"
3
- version = "1.27.4"
3
+ version = "1.28.0"
4
4
  description = "Forgexa CLI — command-line client and AI agent runtime for the Forgexa platform"
5
5
  requires-python = ">=3.9"
6
6
  license = "MIT"
File without changes
File without changes