Add basic version: SemIf decision engine, urgency queue, skill tree, skill loop, decision log, dream pass, CLI
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
from semif_agent.decisions import DecisionRequest, DecisionResult, Option, Request
|
||||
|
||||
|
||||
def test_to_semif_row_shape():
|
||||
request = DecisionRequest(
|
||||
state="some state",
|
||||
question="some question?",
|
||||
options=[Option("a", "A."), Option("b", "B.")],
|
||||
id="abc",
|
||||
)
|
||||
row = request.to_semif_row()
|
||||
assert row["id"] == "abc"
|
||||
assert row["state"] == "some state"
|
||||
assert row["question"] == "some question?"
|
||||
assert row["options"] == [
|
||||
{"id": "a", "description": "A."},
|
||||
{"id": "b", "description": "B."},
|
||||
]
|
||||
|
||||
|
||||
def test_result_selected_and_probs():
|
||||
request = DecisionRequest(
|
||||
state="s",
|
||||
question="q",
|
||||
options=[Option("a", "A."), Option("b", "B.")],
|
||||
)
|
||||
result = DecisionResult(
|
||||
request=request, option_ids=["a", "b"], probabilities=[0.3, 0.7]
|
||||
)
|
||||
assert result.selected == "b"
|
||||
assert result.probs == {"a": 0.3, "b": 0.7}
|
||||
assert result.prob("a") == 0.3
|
||||
|
||||
|
||||
def test_request_requeue_preserves_state():
|
||||
original = Request(text="t", priority=0.7)
|
||||
original.resume["from_skill"] = "email.compose"
|
||||
updated = original.copy_for_requeue()
|
||||
assert updated.id == original.id
|
||||
assert updated.priority == original.priority
|
||||
assert updated.resume["from_skill"] == "email.compose"
|
||||
assert updated.reentries == original.reentries + 1
|
||||
Reference in New Issue
Block a user