forgexa-cli 1.88.1__tar.gz → 1.89.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 (34) hide show
  1. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/PKG-INFO +1 -1
  2. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/__init__.py +1 -1
  3. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/agent_core.py +22 -0
  4. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/daemon.py +6 -4
  5. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli.egg-info/PKG-INFO +1 -1
  6. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/pyproject.toml +1 -1
  7. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/README.md +0 -0
  8. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/_build_config.py +0 -0
  9. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/_local_bind.py +0 -0
  10. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/autoupgrade.py +0 -0
  11. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/aws_evidence.py +0 -0
  12. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/aws_logs_evidence.py +0 -0
  13. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/main.py +0 -0
  14. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/observability_contract.py +0 -0
  15. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/observability_evidence.py +0 -0
  16. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/py.typed +0 -0
  17. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/runtime_evidence.py +0 -0
  18. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli/zcode_protocol.py +0 -0
  19. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli.egg-info/SOURCES.txt +0 -0
  20. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli.egg-info/dependency_links.txt +0 -0
  21. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli.egg-info/entry_points.txt +0 -0
  22. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli.egg-info/requires.txt +0 -0
  23. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/forgexa_cli.egg-info/top_level.txt +0 -0
  24. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/setup.cfg +0 -0
  25. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/tests/test_auth_and_runtime_commands.py +0 -0
  26. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/tests/test_autoupgrade.py +0 -0
  27. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/tests/test_check_command.py +0 -0
  28. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/tests/test_expiry_warnings_and_revoke.py +0 -0
  29. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/tests/test_local_bind_commands.py +0 -0
  30. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/tests/test_publish_script.py +0 -0
  31. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/tests/test_runtime_credentials.py +0 -0
  32. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/tests/test_session_credentials.py +0 -0
  33. {forgexa_cli-1.88.1 → forgexa_cli-1.89.0}/tests/test_silent_install.py +0 -0
  34. {forgexa_cli-1.88.1 → forgexa_cli-1.89.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.88.1
3
+ Version: 1.89.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.88.1"
2
+ __version__ = "1.89.0"
@@ -800,6 +800,28 @@ def is_frozen_analysis_path(value: str) -> bool:
800
800
  return parts[1] == "workitems" and parts[3] == "analysis"
801
801
 
802
802
 
803
+ def is_verification_analysis_output(node_type: str, task_input: dict, value: str) -> bool:
804
+ if node_type != "analysis" or task_input.get("verification_work_item") is not True or not isinstance(value, str):
805
+ return False
806
+ declared = task_input.get("verification_analysis_doc_path")
807
+ if not isinstance(declared, str) or not declared:
808
+ return False
809
+ expected = PurePosixPath(declared.replace("\\", "/"))
810
+ actual = PurePosixPath(value.replace("\\", "/"))
811
+ if expected.is_absolute() or actual.is_absolute() or ".." in expected.parts or ".." in actual.parts:
812
+ return False
813
+ parts = expected.parts
814
+ if len(parts) != 5 or parts[:2] != ("docs", "workitems") or parts[3:] != ("analysis", "verification-analysis.md"):
815
+ return False
816
+ key = task_input.get("work_item_key")
817
+ directory = task_input.get("analysis_output_dir")
818
+ if key is not None and key != parts[2]:
819
+ return False
820
+ if directory is not None and (not isinstance(directory, str) or PurePosixPath(directory.replace("\\", "/")) != expected.parent):
821
+ return False
822
+ return actual == expected
823
+
824
+
803
825
  def uses_necessary_execution_checks(node_type: str, task_input: dict, graph_type: str | None = None) -> bool:
804
826
  actual_graph_type = graph_type if graph_type is not None else task_input.get("graph_type") or "execution"
805
827
  return (
@@ -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.88.1"
1237
+ DAEMON_VERSION = "1.89.0"
1238
1238
 
1239
1239
 
1240
1240
  def _detect_client_type() -> str:
@@ -14749,11 +14749,13 @@ class RuntimeDaemon:
14749
14749
  ))
14750
14750
 
14751
14751
  if verification_work_item:
14752
- forbidden_paths = sorted(
14752
+ forbidden_paths = sorted({
14753
14753
  path
14754
- for path in ProcessManager._normalize_repo_paths(result.files_changed)
14754
+ for original in result.files_changed or []
14755
+ for path in ProcessManager._normalize_repo_paths([original])
14755
14756
  if _is_requirement_analysis_path(path)
14756
- )
14757
+ and not agent_core.is_verification_analysis_output(node_type, input_data, original)
14758
+ })
14757
14759
  if forbidden_paths:
14758
14760
  issues.append(_OutputValidationIssue(
14759
14761
  "verification_work_item_scope_violation",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: forgexa-cli
3
- Version: 1.88.1
3
+ Version: 1.89.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.88.1"
3
+ version = "1.89.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