forgexa-cli 1.69.1__tar.gz → 1.70.1__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 (31) hide show
  1. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/PKG-INFO +1 -1
  2. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/__init__.py +1 -1
  3. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/daemon.py +27 -5
  4. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli.egg-info/PKG-INFO +1 -1
  5. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/pyproject.toml +1 -1
  6. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/README.md +0 -0
  7. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/_build_config.py +0 -0
  8. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/_local_bind.py +0 -0
  9. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/agent_core.py +0 -0
  10. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/autoupgrade.py +0 -0
  11. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/aws_evidence.py +0 -0
  12. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/aws_logs_evidence.py +0 -0
  13. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/main.py +0 -0
  14. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/py.typed +0 -0
  15. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/runtime_evidence.py +0 -0
  16. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli/zcode_protocol.py +0 -0
  17. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli.egg-info/SOURCES.txt +0 -0
  18. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli.egg-info/dependency_links.txt +0 -0
  19. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli.egg-info/entry_points.txt +0 -0
  20. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli.egg-info/requires.txt +0 -0
  21. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/forgexa_cli.egg-info/top_level.txt +0 -0
  22. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/setup.cfg +0 -0
  23. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/tests/test_auth_and_runtime_commands.py +0 -0
  24. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/tests/test_autoupgrade.py +0 -0
  25. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/tests/test_check_command.py +0 -0
  26. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/tests/test_expiry_warnings_and_revoke.py +0 -0
  27. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/tests/test_local_bind_commands.py +0 -0
  28. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/tests/test_runtime_credentials.py +0 -0
  29. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/tests/test_session_credentials.py +0 -0
  30. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/tests/test_silent_install.py +0 -0
  31. {forgexa_cli-1.69.1 → forgexa_cli-1.70.1}/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.69.1
3
+ Version: 1.70.1
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.69.1"
2
+ __version__ = "1.70.1"
@@ -1234,7 +1234,7 @@ except (ImportError, ModuleNotFoundError):
1234
1234
  # DAEMON_VERSION is the protocol/logic version of the daemon code.
1235
1235
  # Kept in sync with pyproject.toml version via bump-version.sh.
1236
1236
  # CLIENT_TYPE identifies which packaging/distribution this daemon runs in.
1237
- DAEMON_VERSION = "1.69.1"
1237
+ DAEMON_VERSION = "1.70.1"
1238
1238
 
1239
1239
 
1240
1240
  def _detect_client_type() -> str:
@@ -6460,6 +6460,13 @@ class ProcessManager:
6460
6460
  on_chunk: Any = None,
6461
6461
  ) -> TaskResult:
6462
6462
  """Execute an agent CLI and collect results."""
6463
+ if isinstance(getattr(task, "input_data", None), dict) and task.input_data.get("requires_capture_images") and agent.agent_id != "claude":
6464
+ return TaskResult(
6465
+ status="failed", exit_code=-1, stdout="", stderr="",
6466
+ error="Capture images require the verified Claude image-input contract",
6467
+ failure_code="capture_image_agent_unsupported",
6468
+ execution_attempt_id=task.execution_attempt_id,
6469
+ )
6463
6470
  resource_metrics = agent_core.collect_runtime_resource_metrics()
6464
6471
  resource_reason = agent_core.runtime_resource_exhaustion_reason(
6465
6472
  resource_metrics,
@@ -9606,7 +9613,7 @@ class TaskPoller:
9606
9613
  ]
9607
9614
  tasks = []
9608
9615
  for t in data.get("tasks", []):
9609
- tasks.append(TaskInfo(
9616
+ task = TaskInfo(
9610
9617
  task_id=t["task_id"],
9611
9618
  graph_id=t["graph_id"],
9612
9619
  node_type=t["node_type"],
@@ -9636,7 +9643,13 @@ class TaskPoller:
9636
9643
  ),
9637
9644
  local_evidence_upload=t.get("local_evidence_upload") is True,
9638
9645
  critic_review_required=t.get("critic_review_required") is True,
9639
- ))
9646
+ )
9647
+ if _MANAGED_WSL_POLICY is not None and not _MANAGED_WSL_POLICY.owns_task(task, self.runtime_id):
9648
+ # Other checkouts remain assigned on the server; this fixed
9649
+ # root neither executes nor fails them. Invalid OWN tasks
9650
+ # still reach the ordinary authorization-failure path.
9651
+ continue
9652
+ tasks.append(task)
9640
9653
  return tasks
9641
9654
  except Exception as e:
9642
9655
  logger.warning("Task poll error: %s", _format_exc(e))
@@ -9808,7 +9821,7 @@ class ServerConnection:
9808
9821
  "local_fresh_branch_reset": {
9809
9822
  "protocol_version": _LOCAL_FRESH_BRANCH_RESET_PROTOCOL_VERSION,
9810
9823
  },
9811
- "task_attachment_staging": {"protocol_version": 1, "runtime_proxy": True},
9824
+ "task_attachment_staging": {"protocol_version": 1, "runtime_proxy": True, "image_agents": ["claude"]},
9812
9825
  },
9813
9826
  "server_url": self.server_url,
9814
9827
  "expires_in_days": 90,
@@ -10229,7 +10242,7 @@ class ServerConnection:
10229
10242
  "protocol_version": _LOCAL_FRESH_BRANCH_RESET_PROTOCOL_VERSION,
10230
10243
  },
10231
10244
  "local_evidence": {"protocol_version": 1, "structured_summary": True},
10232
- "task_attachment_staging": {"protocol_version": 1, "runtime_proxy": True},
10245
+ "task_attachment_staging": {"protocol_version": 1, "runtime_proxy": True, "image_agents": ["claude"]},
10233
10246
  },
10234
10247
  "server_url": self.server_url,
10235
10248
  }
@@ -12574,6 +12587,15 @@ class RuntimeDaemon:
12574
12587
  ))
12575
12588
  return
12576
12589
 
12590
+ if task.input_data.get("requires_capture_images") and agent.agent_id != "claude":
12591
+ await report_task_complete(TaskResult(
12592
+ status="failed", exit_code=-1, stdout="", stderr="",
12593
+ error="Capture images require the verified Claude image-input contract",
12594
+ failure_code="capture_image_agent_unsupported",
12595
+ execution_attempt_id=task.execution_attempt_id,
12596
+ ))
12597
+ return
12598
+
12577
12599
  await reporter.report_progress(task.task_id, 3, "waiting_for_workspace_lock", execution_attempt_id=task.execution_attempt_id)
12578
12600
  workspace_execution_lock = await self.workspace_manager.acquire_workspace_execution_lock(
12579
12601
  task.project,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: forgexa-cli
3
- Version: 1.69.1
3
+ Version: 1.70.1
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.69.1"
3
+ version = "1.70.1"
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