Log inGet started
World

Builtin Library

Branchmain
Branchesmainpublish
Commitdd348ac6c3

README.md

procgen.searchNodes

Finds the nodes a graph is built from, by what they do: the procgen counterpart of search_tools. A query is answered by meaning, through ZeroMind's search over every published node: the builtin library, the libraries this world installed and what every other world publishes. A node is found from the words someone looking for it would use ("parent parts under other parts", "scatter points on a surface"), whether this world holds it or not. Each node states what it is for in its own description and README, and that is what the search reads.

The rows come in ZeroMind's order. This world's own nodes that the ranking does not hold yet (a node not pushed, or a node of a private world) follow the ranked rows, matched by their words and marked from = "world": they are part of this world's project.

A query asks ZeroMind, so it needs a live session. On an engine started with no world bound, a query is refused, saying so: start the engine bound to a world to search. A query is answered over .procNode assets and .procPack assets, the kinds ZeroMind indexes. A pack is found by what its README says its ops do, and a hit that is a pack is listed as the ops of that pack that answer the query's words (op.<id> rows, kind = "op", matched.pack naming the pack), or as the pack itself (kind = "procPack") when none of its ops does: its use lists its ops, or, for a pack this world does not hold, is the read of its files, with the install call beside it.

With no query it lists every node this engine holds, the ops of its packs included, and catalogue names every family with the nodes in it, small enough to read whole. The listing reads this engine alone, so it answers on any engine.

Each row's name is the name a graph calls it by: points.grid is g.points.grid(...), op.transfer.upload is g.op.transfer.upload(...). No two rows carry one name. A row carries the first sentence of the node's description as summary; detail = true adds the whole description. matched.semantic is the row's rank in ZeroMind's ranking; a row marked from = "world" carries how its files carry the query's words (matched.role, matched.file, and matched.terms, how many of the words). A node this world does not hold carries installed = false, use, the zm ls-tree @<guid> read of its files in the shell, and install, the zeromind_install call for the one reading showed fits.

A row of a .procNode built with g:node (the procNodes/ of the procgen package) carries callable = false: a graph built with proc.define does not call it, and g.op.<name> of it is refused where it is written. Only a proc.graph graph calls it, through g:node. supersededBy names the node written in the call form that a graph calls in its place (points.grid for the procNodes/pointsGrid.procNode row).

Each row's context, pulls and pushes are what the node states: a node written as a table states them in its source, and a node written with proc.define in its .metadata or, for every node it holds, its nodebox's .metadata.

Options: family, limit (default 10: that many ranked rows, then up to that many of this world's own after them), context (sim, field, ...), pulls / pushes ("scene" or "asset"), pack and detail. An option it does not take is refused, naming the ones it does.

procgen.describeNode describes one node in full, by the name a row carries. Part of procgen.toolbox; surfaces as procgen.searchNodes. Returns { results, count, catalogue?, total?, semantic? }: semantic says how the search ran. When ZeroMind did not answer, its status says so (unavailable, or resting with retry_in_s), its error says why, and the rows are this world's own nodes, matched by their words. A listing carries catalogue and total, how many nodes it holds before limit.