Files
nanoclaw/scripts
gavrielc 79060c5407 refactor(skills): core seam (additive) + validate-at-bind — resolveInput/onEvent land beside the legacy prompter/reporter
Step 1 of the skill-engine seam plan (docs/skill-engine-seam.md §8.1):

- New core interface (§2): InputMeta + ApplyEvent types;
  ApplyOptions.resolveInput (replaces Prompter.ask) and
  ApplyOptions.onEvent (replaces StepReporter + Prompter.tell). The
  engine prefers the new seams when present and falls back to the
  legacy prompter/reporter otherwise (transitional — deleted in step 3).
- Awaited-event ordering (§2.3): every onEvent call is awaited before
  the next directive; a handler throw is the standard bounce path,
  including on operator events (blocked latch cascades).
- Validate-at-bind (§4): normalize-then-validate at the single bind
  point for inputs, resolveInput answers, and legacy prompter answers
  alike. A mismatch leaves the var unbound and records
  `<var>: invalid value (does not match validate:<re>)` in deferred —
  never the value (secrets can't leak), never a fallthrough from
  invalid inputs to resolveInput.
- stepLabel null semantics re-documented (§2): a step-cost/interactivity
  declaration, not spinner advice.
- §4 fixture sweep: Option-A slack inputs (signing_secret, owner_handle)
  + the userId assertion updated to validate-passing values; teams
  deferWire app_password to a 20+-char value. Assertion structure
  unchanged.

Suite: 699 passed | 1 skipped (was 680 | 1).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 16:19:18 +03:00
..
2026-05-08 15:56:09 +03:00