Files
larksuite-cli/internal
liuxinyang.lxy a43c456ec1 feat: question-group answer scheme for input_required tasks
Replace the decision_id/--option HITL contract with the question-group
answer scheme:

- contract: InputRequired becomes {label, description, questions[]}
  (a single question is a length-1 group); Option gains description;
  decision_id/input_type/submitted fields are removed
- answering: --answer <qid>=<option_id> | <qid>.text=<text> is the only
  answer channel (--decision-id/--option removed); --text is always the
  message-level remark; offline collect-all key-grammar guards plus an
  input_required capability gate
- keys: minted at group-creation time (MintQuestionIDs /
  DeriveGroupSuffix), per-group-unique for stale-retry protection;
  central normalization with size caps and whole-group degradation on
  non-conforming keys (JSON _notice.provider_defect); KeyCharsetRE is
  the single charset source and safeNextID now requires an alphanumeric
  first character (rejects flag-lookalike ids)
- meta.next: per-question --answer templates with a relay-first label
- example/planner: three-question reference group; strict collect-all
  validation (Reason enum + question spec), atomic acceptance with a
  resolved_answers echo, context binding, no sibling-task fork on bare
  --text; Register enforces InputRequired => brand-covering CancelTask
- errs: ValidationError gains the resolved_answers extension field
- skills/lark-agents 1.3.0: relay-first rules, answer grammar, recovery
  playbook, untrusted question-text discipline
2026-07-21 15:38:28 +08:00
..
2026-06-17 16:29:33 +08:00