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.
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/PKG-INFO +1 -1
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/__init__.py +1 -1
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/daemon.py +23 -1
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/PKG-INFO +1 -1
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/pyproject.toml +1 -1
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/README.md +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/_build_config.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/_local_bind.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/agent_core.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/autoupgrade.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/main.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli/py.typed +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/SOURCES.txt +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/dependency_links.txt +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/entry_points.txt +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/requires.txt +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/forgexa_cli.egg-info/top_level.txt +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/setup.cfg +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_auth_and_runtime_commands.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_autoupgrade.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_check_command.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_expiry_warnings_and_revoke.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_local_bind_commands.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_runtime_credentials.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_session_credentials.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_silent_install.py +0 -0
- {forgexa_cli-1.27.4 → forgexa_cli-1.28.0}/tests/test_upgrade_observability.py +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""forgexa-cli — Forgexa command-line client."""
|
|
2
|
-
__version__ = "1.
|
|
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.
|
|
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
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|