forgexa-cli 1.41.3__tar.gz → 1.41.4__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.41.3 → forgexa_cli-1.41.4}/PKG-INFO +1 -1
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli/__init__.py +1 -1
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli/daemon.py +28 -6
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli.egg-info/PKG-INFO +1 -1
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/pyproject.toml +1 -1
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/README.md +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli/_build_config.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli/_local_bind.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli/agent_core.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli/autoupgrade.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli/main.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli/py.typed +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli.egg-info/SOURCES.txt +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli.egg-info/dependency_links.txt +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli.egg-info/entry_points.txt +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli.egg-info/requires.txt +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/forgexa_cli.egg-info/top_level.txt +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/setup.cfg +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/tests/test_auth_and_runtime_commands.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/tests/test_autoupgrade.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/tests/test_check_command.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/tests/test_expiry_warnings_and_revoke.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/tests/test_local_bind_commands.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/tests/test_runtime_credentials.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/tests/test_session_credentials.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/tests/test_silent_install.py +0 -0
- {forgexa_cli-1.41.3 → forgexa_cli-1.41.4}/tests/test_upgrade_observability.py +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""forgexa-cli — Forgexa command-line client."""
|
|
2
|
-
__version__ = "1.41.
|
|
2
|
+
__version__ = "1.41.4"
|
|
@@ -910,7 +910,7 @@ except (ImportError, ModuleNotFoundError):
|
|
|
910
910
|
# DAEMON_VERSION is the protocol/logic version of the daemon code.
|
|
911
911
|
# Kept in sync with pyproject.toml version via bump-version.sh.
|
|
912
912
|
# CLIENT_TYPE identifies which packaging/distribution this daemon runs in.
|
|
913
|
-
DAEMON_VERSION = "1.41.
|
|
913
|
+
DAEMON_VERSION = "1.41.4"
|
|
914
914
|
|
|
915
915
|
|
|
916
916
|
def _detect_client_type() -> str:
|
|
@@ -1557,7 +1557,12 @@ def _normalize_ai_job_output(
|
|
|
1557
1557
|
if not raw_output:
|
|
1558
1558
|
return "", None
|
|
1559
1559
|
|
|
1560
|
-
if task_type not in {
|
|
1560
|
+
if task_type not in {
|
|
1561
|
+
"qa_scenario_generate_prompt",
|
|
1562
|
+
"qa_scenario_preview",
|
|
1563
|
+
"qa_script_preview",
|
|
1564
|
+
"test_script_generate",
|
|
1565
|
+
}:
|
|
1561
1566
|
return raw_output, None
|
|
1562
1567
|
|
|
1563
1568
|
extracted_output = _daemon_extract_agent_output(agent_id, raw_output)
|
|
@@ -5062,7 +5067,11 @@ class ProcessManager:
|
|
|
5062
5067
|
timeout,
|
|
5063
5068
|
task.task_id,
|
|
5064
5069
|
on_chunk,
|
|
5065
|
-
disable_builtin_mcps=task.input_data.get("task_type")
|
|
5070
|
+
disable_builtin_mcps=task.input_data.get("task_type") in {
|
|
5071
|
+
"test_script_generate",
|
|
5072
|
+
"qa_scenario_preview",
|
|
5073
|
+
"qa_script_preview",
|
|
5074
|
+
},
|
|
5066
5075
|
)
|
|
5067
5076
|
else:
|
|
5068
5077
|
result = await self._run_generic(agent, prompt, workspace_path, timeout, task.task_id, on_chunk)
|
|
@@ -11024,6 +11033,15 @@ class RuntimeDaemon:
|
|
|
11024
11033
|
|
|
11025
11034
|
# 2. Prepare workspace (using project info + requirement branch)
|
|
11026
11035
|
full_prompt = f"{system_prompt}\n\n{user_prompt}" if system_prompt else user_prompt
|
|
11036
|
+
task_timeout = settings.AGENT_TIMEOUT
|
|
11037
|
+
if task_type in {"qa_scenario_preview", "qa_script_preview"}:
|
|
11038
|
+
try:
|
|
11039
|
+
task_timeout = min(
|
|
11040
|
+
max(int(input_ctx.get("timeout_seconds", settings.AGENT_TIMEOUT)), 30),
|
|
11041
|
+
settings.AGENT_TIMEOUT,
|
|
11042
|
+
)
|
|
11043
|
+
except (TypeError, ValueError):
|
|
11044
|
+
pass
|
|
11027
11045
|
fake_task = TaskInfo(
|
|
11028
11046
|
task_id=job_id,
|
|
11029
11047
|
# Reuse a stable workspace key when the server provides one so
|
|
@@ -11034,7 +11052,7 @@ class RuntimeDaemon:
|
|
|
11034
11052
|
agent_type=agent_type,
|
|
11035
11053
|
input_prompt=full_prompt,
|
|
11036
11054
|
input_data={"task_type": task_type},
|
|
11037
|
-
timeout_seconds=
|
|
11055
|
+
timeout_seconds=task_timeout,
|
|
11038
11056
|
max_retries=0,
|
|
11039
11057
|
retry_count=0,
|
|
11040
11058
|
project=project_info,
|
|
@@ -11271,7 +11289,11 @@ class RuntimeDaemon:
|
|
|
11271
11289
|
|
|
11272
11290
|
# 5. Report completion
|
|
11273
11291
|
# For deliverables: allow up to 200K chars (full document); others: last 20K
|
|
11274
|
-
max_content =
|
|
11292
|
+
max_content = (
|
|
11293
|
+
200000 if task_type == "deliverable_generate"
|
|
11294
|
+
else 50000 if task_type in {"qa_scenario_preview", "qa_script_preview"}
|
|
11295
|
+
else 20000
|
|
11296
|
+
)
|
|
11275
11297
|
normalized_output, scenario_items = _normalize_ai_job_output(
|
|
11276
11298
|
task_type=task_type,
|
|
11277
11299
|
agent_id=agent.agent_id,
|
|
@@ -11283,7 +11305,7 @@ class RuntimeDaemon:
|
|
|
11283
11305
|
scenario_ids=input_ctx.get("scenario_ids", []),
|
|
11284
11306
|
workspace_path=workspace_path,
|
|
11285
11307
|
)
|
|
11286
|
-
if task_type
|
|
11308
|
+
if task_type in {"qa_scenario_generate_prompt", "qa_scenario_preview", "qa_script_preview"}:
|
|
11287
11309
|
output_content, scenario_items = _prepare_ai_job_output(
|
|
11288
11310
|
task_type=task_type,
|
|
11289
11311
|
agent_id=agent.agent_id,
|
|
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
|