feat(planner): persist reusable action semantics
Tests / Test passed: 879

This commit is contained in:
2026-07-15 18:14:28 +08:00
parent 361dada276
commit d69be48f96
41 changed files with 733 additions and 116 deletions
@@ -506,6 +506,8 @@ def create_internal_router(
now=utc_now(),
rationale=getattr(decision, "text_output", None),
thinking=getattr(decision, "thinking", None),
purpose=getattr(decision, "purpose", None),
expected_outcome=getattr(decision, "expected_outcome", None),
)
logger.info(
"planner-decision request resolved",
@@ -518,6 +520,10 @@ def create_internal_router(
return PlannerDecisionResponse(
tool_name=decision.tool_name,
arguments=dict(decision.arguments),
rationale=getattr(decision, "text_output", None),
thinking=getattr(decision, "thinking", None),
purpose=getattr(decision, "purpose", None),
expected_outcome=getattr(decision, "expected_outcome", None),
input_tokens=(decision.usage.input_tokens if decision.usage else None),
output_tokens=(decision.usage.output_tokens if decision.usage else None),
total_tokens=(decision.usage.total_tokens if decision.usage else None),
@@ -147,6 +147,10 @@ class PlannerDecisionRequest(BaseModel):
class PlannerDecisionResponse(BaseModel):
tool_name: str
arguments: dict[str, Any] = Field(default_factory=dict)
rationale: str | None = None
thinking: str | None = None
purpose: str | None = None
expected_outcome: str | None = None
input_tokens: int | None = Field(default=None, ge=0)
output_tokens: int | None = Field(default=None, ge=0)
total_tokens: int | None = Field(default=None, ge=0)