AGPL-3.0-or-later · forever.

the standard library

nika:prompt

Ask a human (confirm|input|choice). Blocks until answered; uses default when headless. One of 28 builtins in the closed nika: namespace.

the core familycontrol flow and run-stream primitives

  • corefamily6 tools
  • 4argsdeclared contract
  • 1requiredcheck teaches a miss
  • 2skeletonsship this tool

the contract

4 args · 1 required

A missing required arg is a nika check finding before anything runs; the vocabulary below comes from the binary itself (nika catalog --tools --json), not from prose.

mode
stringconfirm (default) | input | choice
message*
stringthe question
choices
arraychoice mode only
default
fallback when no human can answer

in a real file

from the etl-state skeleton
etl-state.nika.yaml
  # NEP-0002 · the Rule of Two, as a check. This run holds all three legs at  # once: it reads a private file, ingests UNTRUSTED network content, and  # persists that content into the very file the NEXT run reads as trusted  # state. One human decision has to dominate EVERY path to that write — so the  # gate sits before the first network touch, not next to the write (a gate the  # fetch can route around dominates nothing). Blocking on purpose: a `default:`  # here would disarm it, and the checker knows — measured, adding `default:`  # flips TRIFECTA to `✖ NIKA-SEC-009 lethal trifecta complete`.  approve:    invoke:      tool: "nika:prompt"      args:        message: "Fetch ${{ const.source_url }} and persist it into ${{ const.state_path }}?"

a verbatim excerpt, real line numbers from etl-state.nika.yaml, conformance-gated upstream on every spec push. open the full skeleton →

the core family

6 tools

control flow and run-stream primitives.

Machines read the same vocabulary at /tools/catalog.json; the contract lives in spec 06 · stdlib. Install and ask the binary itself: nika catalog --tools. Read the spec →