Selaa lähdekoodia

测试(兼容): 固化框架治理公开契约

用回归测试锁定 AgentRunner、TaskCoordinator、TraceStore、ToolRegistry、飞书和浏览器等既有导入与调用表面,防止内部治理误伤脚本构建等 Host。
SamLee 17 tuntia sitten
vanhempi
commit
b2a8339404
1 muutettua tiedostoa jossa 105 lisäystä ja 0 poistoa
  1. 105 0
      agent/tests/test_governance_public_contract.py

+ 105 - 0
agent/tests/test_governance_public_contract.py

@@ -0,0 +1,105 @@
+from __future__ import annotations
+
+import inspect
+from pathlib import Path
+
+from agent.core.runner import AgentRunner
+from agent.orchestration.coordinator import TaskCoordinator
+from agent.trace.store import FileSystemTraceStore
+from agent.tools.builtin import browser
+from agent.tools.builtin.browser import baseClass
+from agent.tools.builtin.feishu.feishu_agent import FeishuAgent, execute_tool
+
+
+def _parameter_names(callable_obj) -> tuple[str, ...]:
+    return tuple(inspect.signature(callable_obj).parameters)
+
+
+def test_runner_and_coordinator_public_call_shapes_are_frozen() -> None:
+    assert _parameter_names(AgentRunner) == (
+        "trace_store",
+        "tool_registry",
+        "llm_call",
+        "utility_llm_call",
+        "skills_dir",
+        "goal_tree",
+        "debug",
+        "logger_name",
+        "task_coordinator",
+        "tool_policy",
+    )
+    assert _parameter_names(AgentRunner.run) == (
+        "self",
+        "messages",
+        "config",
+        "inject_skills",
+        "skill_recency_threshold",
+    )
+    assert _parameter_names(AgentRunner.run_result) == (
+        "self",
+        "messages",
+        "config",
+        "on_event",
+        "inject_skills",
+    )
+    assert _parameter_names(TaskCoordinator) == (
+        "task_store",
+        "artifact_store",
+        "trace_store",
+        "config",
+        "event_sink",
+        "executor",
+        "validation_policy",
+        "deterministic_validator",
+        "evidence_provider",
+    )
+    assert _parameter_names(TaskCoordinator.decide_task) == (
+        "self",
+        "root_trace_id",
+        "task_id",
+        "validation_id",
+        "action",
+        "payload",
+        "idempotency_key",
+    )
+
+
+def test_trace_store_public_state_and_constructor_remain_stable(tmp_path) -> None:
+    assert str(inspect.signature(FileSystemTraceStore)) == "(base_path: str = '.trace')"
+    store = FileSystemTraceStore(str(tmp_path))
+    assert isinstance(store.base_path, Path)
+    assert store.base_path == tmp_path
+
+
+def test_legacy_browser_package_exports_keep_object_identity() -> None:
+    legacy_exports = (
+        "init_browser_session",
+        "get_browser_session",
+        "get_browser_live_url",
+        "cleanup_browser_session",
+        "kill_browser_session",
+        "browser_navigate",
+        "browser_search",
+        "browser_back",
+        "browser_interact",
+        "browser_scroll",
+        "browser_screenshot",
+        "browser_elements",
+        "browser_read",
+        "browser_extract",
+        "browser_tabs",
+        "browser_cookies",
+        "browser_wait",
+        "browser_js",
+        "browser_download",
+    )
+
+    for name in legacy_exports:
+        assert getattr(browser, name) is getattr(baseClass, name)
+
+
+def test_feishu_agent_legacy_entrypoints_keep_call_shapes() -> None:
+    assert str(inspect.signature(FeishuAgent)) == "()"
+    assert _parameter_names(FeishuAgent.handle_message) == ("self", "event")
+    assert _parameter_names(FeishuAgent.start) == ("self",)
+    assert _parameter_names(execute_tool) == ("name", "arguments")