chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 13:12:33 +08:00
commit aacb60a4af
3387 changed files with 981307 additions and 0 deletions
@@ -0,0 +1,55 @@
from __future__ import annotations
from opensquilla.application.approval_queue import classify_command
def test_deny_only_match_returns_deny() -> None:
assert classify_command("rm -rf /tmp/x", allow_patterns=[], deny_patterns=["rm *"]) == "deny"
def test_allow_only_match_returns_allow() -> None:
assert (
classify_command("uv run pytest", allow_patterns=["uv *"], deny_patterns=[]) == "allow"
)
def test_deny_takes_precedence_when_both_match() -> None:
assert (
classify_command(
"rm -rf /tmp/x",
allow_patterns=["rm *"],
deny_patterns=["rm *"],
)
== "deny"
)
def test_no_match_returns_none() -> None:
assert classify_command("ls -la", allow_patterns=["uv *"], deny_patterns=["rm *"]) is None
def test_empty_command_returns_none() -> None:
assert classify_command("", allow_patterns=["*"], deny_patterns=["*"]) is None
def test_glob_wildcard_matches_command() -> None:
assert (
classify_command("git push --force", allow_patterns=[], deny_patterns=["git push *"])
== "deny"
)
def test_substring_fallback_matches_without_wildcard() -> None:
# A bare token with no glob metacharacter still matches as a substring.
assert (
classify_command("sudo systemctl restart x", allow_patterns=[], deny_patterns=["sudo"])
== "deny"
)
def test_matching_is_case_sensitive() -> None:
assert classify_command("RM file", allow_patterns=[], deny_patterns=["rm *"]) is None
def test_blank_pattern_never_matches() -> None:
assert classify_command("rm file", allow_patterns=[" "], deny_patterns=[" "]) is None
+122
View File
@@ -0,0 +1,122 @@
from __future__ import annotations
import pytest
from opensquilla.application.approval_queue import ApprovalQueue
from opensquilla.application.approval_rpc import (
approval_extend_rpc_payload,
approval_forget_rpc_payload,
approval_request_rpc_payload,
approval_resolve_rpc_payload,
approval_settings_rpc_payload,
approval_snapshot_rpc_payload,
approval_wait_decision_rpc_payload,
)
def test_approval_settings_rpc_payload_includes_node_inheritance() -> None:
queue = ApprovalQueue(db_path=":memory:")
try:
settings = queue.set_settings(
"prompt",
allow_patterns=["uv *"],
deny_patterns=["rm *"],
node_id="node-1",
)
assert approval_settings_rpc_payload(
settings,
node_id="node-1",
inherited=False,
) == {
"mode": "prompt",
"allowPatterns": ["uv *"],
"denyPatterns": ["rm *"],
"nodeId": "node-1",
"inherited": False,
}
finally:
queue.close()
def test_approval_request_rpc_payload_applies_settings_mode() -> None:
queue = ApprovalQueue(db_path=":memory:")
try:
queue.set_settings("auto-approve")
payload = approval_request_rpc_payload(
queue,
namespace="exec",
params={"toolName": "exec_command", "args": {}, "sessionKey": "agent:main:demo"},
)
assert payload["mode"] == "auto-approve"
assert payload["approved"] is True
assert payload["resolved"] is True
assert payload["pending"] is False
assert queue.status(payload["id"])["params"]["approvalMode"] == "auto-approve"
finally:
queue.close()
@pytest.mark.asyncio
async def test_wait_and_resolve_rpc_payloads_preserve_status_shape() -> None:
queue = ApprovalQueue(db_path=":memory:", poll_interval=0.01)
try:
request = approval_request_rpc_payload(
queue,
namespace="plugin",
params={"pluginId": "demo", "version": "1.0.0", "permissions": []},
)
approval_id = request["id"]
resolved = approval_resolve_rpc_payload(queue, approval_id, True)
waited = await approval_wait_decision_rpc_payload(queue, approval_id)
assert resolved == waited
assert isinstance(waited.pop("deadline"), float)
assert waited == {
"id": approval_id,
"mode": "prompt",
"approved": True,
"resolved": True,
"resolution": "approved",
"consumed": False,
"pending": False,
}
finally:
queue.close()
def test_approval_extend_rpc_payload_pushes_deadline() -> None:
queue = ApprovalQueue(db_path=":memory:", default_timeout=10.0)
try:
approval_id = queue.request(
"exec",
{"toolName": "exec_command", "command": "rm x", "sessionKey": "agent:main:demo"},
)
before = queue.get(approval_id).deadline
payload = approval_extend_rpc_payload(queue, approval_id, 120.0)
assert payload["pending"] is True
assert payload["resolution"] == ""
assert payload["deadline"] == before + 120.0
assert queue.get(approval_id).deadline == before + 120.0
finally:
queue.close()
def test_approval_snapshot_and_forget_payloads_own_wire_shapes() -> None:
queue = ApprovalQueue(db_path=":memory:")
try:
queue.set_settings("prompt")
assert approval_snapshot_rpc_payload(queue) == {"mode": "prompt"}
assert approval_forget_rpc_payload(" /tmp/approval-demo ") == {
"scope": "noop",
"target": "/tmp/approval-demo",
}
assert approval_forget_rpc_payload() == {"scope": "noop"}
finally:
queue.close()
+96
View File
@@ -0,0 +1,96 @@
from __future__ import annotations
import pytest
from opensquilla.application.wizard import (
WizardRegistry,
get_wizard_registry,
reset_wizard_registry,
)
from opensquilla.application.wizard_rpc import (
wizard_cancel_rpc_payload,
wizard_next_rpc_payload,
wizard_start_rpc_payload,
wizard_status_rpc_payload,
)
from opensquilla.gateway import wizard as gateway_wizard
def test_wizard_registry_advances_and_applies_schema_defaults() -> None:
registry = WizardRegistry()
wizard_id, first_step = registry.start("onboard_agent")
assert len(wizard_id) == 8
assert first_step.to_dict()["stepId"] == "agent_identity"
first = registry.advance(wizard_id, {"agent_name": "cora"})
assert first.completed is False
assert first.next_step is not None
assert first.next_step.step_id == "system_prompt"
second = registry.advance(wizard_id, {"system_prompt": "Help with release work"})
assert second.completed is False
assert second.next_step is not None
assert second.next_step.step_id == "defaults"
final = registry.advance(wizard_id, {"default_model": "openai/gpt-4o-mini"})
assert final.completed is True
assert final.next_step is None
assert final.result == {
"wizardType": "onboard_agent",
"answers": {
"agent_name": "cora",
"system_prompt": "Help with release work",
"persona_tone": "professional",
"default_model": "openai/gpt-4o-mini",
"temperature": 7,
},
}
def test_wizard_registry_rejects_blank_required_answers() -> None:
registry = WizardRegistry()
wizard_id, _first_step = registry.start("onboard_agent")
with pytest.raises(ValueError, match="missing required field"):
registry.advance(wizard_id, {"agent_name": " "})
def test_wizard_rpc_payload_helpers_own_wire_shapes() -> None:
registry = WizardRegistry()
wizard_id, first_step = registry.start("onboard_agent")
started = wizard_start_rpc_payload(wizard_id, first_step)
assert started["wizardId"] == wizard_id
assert started["step"]["stepId"] == "agent_identity"
outcome = registry.advance(wizard_id, {"agent_name": "cora"})
assert outcome.next_step is not None
advanced = wizard_next_rpc_payload(outcome)
assert advanced == {
"step": outcome.next_step.to_dict(),
"completed": False,
"result": None,
}
assert wizard_status_rpc_payload(registry.status(wizard_id), total_steps=3) == {
"wizardId": wizard_id,
"wizardType": "onboard_agent",
"currentStepId": "system_prompt",
"totalSteps": 3,
"startedAt": registry.status(wizard_id).started_at,
"completed": False,
}
assert wizard_cancel_rpc_payload(wizard_id) == {
"wizardId": wizard_id,
"cancelled": True,
}
def test_gateway_wizard_imports_remain_compatible_with_application_singleton() -> None:
reset_wizard_registry()
assert gateway_wizard.get_wizard_registry() is get_wizard_registry()
wizard_id, _first_step = gateway_wizard.get_wizard_registry().start("onboard_agent")
assert get_wizard_registry().status(wizard_id).wizard_type == "onboard_agent"