Included plugins
Every name a rule can call comes from either the engine itself or a plugin. Four plugins are always registered; one is requested per run. Nothing else needs installing.
| Plugin | Binds | Registered |
|---|---|---|
util | util, num, strings, time, math, map, array | Always |
log | log | Always |
findings | findings | Always |
delivery | delivery | Always |
bbox | bbox | When the run carries a document |
out, audit and in are not plugins — the engine binds them directly on every execution.
Always registered
Section titled “Always registered”These four are the batteries-included set. A rule can assume them without the caller configuring anything.
One plugin, seven namespaces. It contributes the whole helper surface in a single registration:
util, num, strings, time, math, map and array.
Full signatures are on Functions.
Binds log, with Debug, Info, Warn and Error. Pass a single string — the variadic key/value
tail is a host-side convenience the grammar cannot construct.
findings
Section titled “findings”Binds findings, the severity-graded validation channel. Every parameter is a string; there is no
struct to construct. See Findings.
delivery
Section titled “delivery”Binds delivery, which turns collected results into the shape a particular wire format expects.
One method:
| Call | Effect |
|---|---|
delivery.ExplodeColumn(source, section, column, nameTemplate, count) | Flattens one column of an extracted table into exactly count numbered output fields |
It exists because a flat wire format cannot carry an array. A repeating group — ten alternate names,
fourteen employers — has to become a fixed set of numbered scalar columns, and always exactly
count of them so the receiving schema keeps a stable shape.
nameTemplate may contain a %d placeholder for the index; without one the index is appended:
| Template | First key produced |
|---|---|
"Borrower 2 Name of Employer %d" | Borrower 2 Name of Employer 1 |
"Alternate Name" | Alternate Name 1 |
delivery.ExplodeColumn( bbox.Doc().Rows("Employment", "Income").Col("Employer", "employer").Records(), "employment", "employer", "Employer %d", 5);The numbering is 1-based, and it writes straight to out — there is nothing to assign.
delivery.ExplodeColumn replaces the older out.UnwrapColumn and out.UnwrapColumnWithTemplate,
which differed only in whether the name carried a %d.
Requested per run
Section titled “Requested per run”Binds bbox, the spatial document surface. It is registered under the name bbox and loads the
documents the run supplies, so it is present exactly when a document is.
| Surface | How it arrives |
|---|---|
kis CLI | --bbox <name>=<path> |
rules.svc | A reserved bbox object on the POST /rule body |
A rule that calls bbox.Doc() on a run that carried no document fails with
non existent key bbox, and because a failed evaluation aborts unconditionally, the whole execution
is discarded. Send document input on every call to a rule set that queries a document.
The surface itself is on Document, Values and Tables and forms.
See also
Section titled “See also”- Rule API reference — the full list of what is bound
- Functions — every helper signature
- Documents in rules — how a document reaches a rule