docs: Skill Action interaction direct/confirm/form
All checks were successful
技能自动化发布 / release (push) Successful in 7s

This commit is contained in:
2026-07-31 11:15:51 +08:00
parent 6c1ffc73d3
commit 7cf139dfd2
5 changed files with 126 additions and 5 deletions

View File

@@ -216,6 +216,25 @@ class TestActionsManifest(unittest.TestCase):
self.assertEqual(bind_def.get("required"), ["tables"])
self.assertIs(bind_def.get("additionalProperties"), False)
def test_schema_defines_interaction_fields(self) -> None:
schema = _load_actions_schema()
action_def = schema["$defs"]["action"]
props = action_def["properties"]
self.assertIn("interaction", props)
self.assertEqual(
set(props["interaction"].get("enum") or []),
{"auto", "direct", "confirm", "form"},
)
self.assertIn("interactionByPlacement", props)
by_placement = props["interactionByPlacement"]
self.assertIs(by_placement.get("additionalProperties"), False)
for key in ("toolbar", "row", "batch", "cron", "agent", "skill-detail"):
self.assertIn(key, by_placement.get("properties") or {})
self.assertEqual(
set((by_placement["properties"][key].get("enum") or [])),
{"direct", "confirm", "form"},
)
def test_manifest_validates_against_json_schema(self) -> None:
try:
import jsonschema
@@ -469,6 +488,8 @@ class TestActionsManifest(unittest.TestCase):
"additionalProperties",
"placements",
"executionProfile",
"interaction",
"confirmation",
):
self.assertIn(marker, text, msg=f"ACTIONS.md missing {marker!r}")
for forbidden in (