zebflow 0.11.5

Reactive web automation platform — pipelines, templates, and real-time collaboration in a single binary.
Documentation
//! The config keys each 0.10 kind declared (v0.10.12, from its node
//! definition: flags, schema properties and form fields), plus the
//! spellings the four commits after the tag introduced. A stored key
//! outside this list was ignored by the 0.10.12 node.

pub const KNOWN: &[(&str, &[&str])] = &[
    ("n.ai.agent", &["budget", "credential_id", "max_repairs", "model", "output_mode", "preview.in", "preview.out", "prompt", "schema", "system_prompt", "timeout_secs", "title", "tools", "verify_function"]),
    ("n.ai.embedding", &["credential_id", "input_expr", "model"]),
    ("n.ai.tts", &["credential_id", "filename", "folder", "lipsync_mode", "on_conflict", "path", "preview.in", "preview.out", "provider", "return_mode", "speaker", "speed", "store", "text", "timeout_secs", "title", "volume"]),
    ("n.auth.token.create", &["audience", "claims", "credential_id", "expires_in", "issuer", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.auth.token.verify", &["audience", "credential_id", "issuer", "preview.in", "preview.out", "timeout_secs", "title", "token"]),
    ("n.browser.run", &["code", "credential_id", "preview.in", "preview.out", "timeout_ms", "timeout_secs", "title"]),
    ("n.concept", &["preview.in", "preview.out", "text", "timeout_secs", "title"]),
    ("n.crypto", &["cost", "hash", "input", "key", "length", "op", "preview.in", "preview.out", "timeout_secs", "title", "value"]),
    ("n.fs.barcode.code128", &["background", "color", "filename", "folder", "format", "height", "margin", "on_conflict", "path", "preview.in", "preview.out", "size", "store", "text", "timeout_secs", "title"]),
    ("n.fs.barcode.qr", &["background", "color", "ecc", "filename", "folder", "format", "margin", "on_conflict", "path", "preview.in", "preview.out", "size", "store", "text", "timeout_secs", "title"]),
    ("n.fs.compress", &["extra_source_keys", "filename", "folder", "format", "on_conflict", "path", "preview.in", "preview.out", "source_key", "store", "timeout_secs", "title"]),
    ("n.fs.copy", &["filename", "folder", "from", "on_conflict", "path", "preview.in", "preview.out", "store", "timeout_secs", "title"]),
    ("n.fs.decompress", &["delete_source", "folder", "format", "on_conflict", "preview.in", "preview.out", "source_key", "store", "timeout_secs", "title"]),
    ("n.fs.delete", &["path", "preview.in", "preview.out", "store", "timeout_secs", "title"]),
    ("n.fs.get", &["encoding", "path", "preview.in", "preview.out", "store", "timeout_secs", "title"]),
    ("n.fs.head", &["path", "preview.in", "preview.out", "store", "timeout_secs", "title"]),
    ("n.fs.image.chromakey", &["color", "delete_source", "filename", "folder", "format", "on_conflict", "path", "preview.in", "preview.out", "soften", "source_key", "store", "timeout_secs", "title", "tolerance"]),
    ("n.fs.image.thumbnail", &["delete_source", "filename", "fit", "folder", "format", "height", "on_conflict", "path", "preview.in", "preview.out", "quality", "source_key", "store", "timeout_secs", "title", "width"]),
    ("n.fs.list", &["path", "prefix", "preview.in", "preview.out", "store", "timeout_secs", "title"]),
    ("n.fs.mkdir", &["path", "preview.in", "preview.out", "store", "timeout_secs", "title"]),
    ("n.fs.move", &["filename", "folder", "from", "on_conflict", "path", "preview.in", "preview.out", "store", "timeout_secs", "title"]),
    ("n.fs.pdf.convert", &["dpi", "emit_fulltext", "emit_page_images", "emit_page_raster", "folder", "on_conflict", "preview.in", "preview.out", "source_key", "store", "timeout_secs", "title"]),
    ("n.fs.put", &["base64", "filename", "folder", "from_key", "on_conflict", "path", "preview.in", "preview.out", "source_key", "store", "text", "timeout_secs", "title"]),
    ("n.fs.save", &["allowed_kinds", "field", "filename", "folder", "max_size_mb", "on_conflict", "path", "preview.in", "preview.out", "source_key", "store", "timeout_secs", "title"]),
    ("n.fs.svg.convert", &["delete_source", "filename", "fit", "folder", "format", "height", "on_conflict", "path", "preview.in", "preview.out", "quality", "source_key", "store", "timeout_secs", "title", "width"]),
    ("n.function.call", &["function", "input", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.geo.convert", &["batch_size", "filename", "folder", "from", "hilbert", "layer", "on_conflict", "path", "preview.in", "preview.out", "store", "timeout_secs", "title", "to_crs"]),
    ("n.geo.inspect", &["from", "layer", "preview.in", "preview.out", "store", "timeout_secs", "title"]),
    ("n.http.request", &["body", "body_type", "credential_id", "headers", "method", "preview.in", "preview.out", "request_bindings", "response_type", "timeout_ms", "timeout_secs", "title", "url"]),
    ("n.input.audio", &["accept", "label", "name", "optional", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.input.boolean", &["default", "label", "name", "optional", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.input.file", &["accept", "label", "name", "optional", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.input.files", &["accept", "label", "max", "name", "optional", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.input.image", &["accept", "label", "name", "optional", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.input.json", &["default", "label", "name", "optional", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.input.number", &["default", "label", "max", "min", "name", "optional", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.input.text", &["default", "label", "max", "name", "optional", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.input.video", &["accept", "label", "name", "optional", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.kv.del", &["durable", "key", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.kv.exists", &["durable", "key", "out_key", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.kv.expire", &["durable", "key", "preview.in", "preview.out", "timeout_secs", "title", "ttl"]),
    ("n.kv.get", &["default", "durable", "key", "out_key", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.kv.incr", &["amount", "durable", "key", "out_key", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.kv.publish", &["channel", "payload", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.kv.set", &["durable", "key", "preview.in", "preview.out", "timeout_secs", "title", "ttl", "value"]),
    ("n.logic.collect", &["preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.logic.foreach", &["chunk_size", "dispatch", "items_expr", "keep_input", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.logic.if", &["expression", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.logic.match", &["cases", "default", "expression", "match_routes", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.logic.reduce", &["init_expr", "preview.in", "preview.out", "step_expr", "timeout_secs", "title"]),
    ("n.logic.retry", &["backoff", "delay_ms", "max_attempts", "max_delay_ms", "max_elapsed_ms", "preview.in", "preview.out", "timeout_secs", "title", "when"]),
    ("n.mail.send", &["attach", "credential_id", "embed", "from", "html", "html_section", "preview.in", "preview.out", "reply_to", "subject", "text", "timeout_secs", "title", "to"]),
    ("n.ms.get", &["name", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.ms.list", &["preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.ms.publish", &["allowed_properties", "bbox_optional", "bbox_required", "build_artifact", "cache_ttl", "fill", "filter", "from", "function", "max_features", "max_zoom", "min_zoom", "name", "no_bbox_required", "no_optimize", "optimize", "path", "point_color", "point_radius", "preview.in", "preview.out", "route", "skip_optimize", "source_kind", "source_path", "stroke", "stroke_width", "style_dsl", "timeout_secs", "title"]),
    ("n.ms.unpublish", &["name", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.pg.query", &["credential_id", "params", "preview.in", "preview.out", "query", "timeout_secs", "title"]),
    ("n.script", &["language", "preview.in", "preview.out", "source", "source_expr", "timeout_secs", "title"]),
    ("n.sekejap.insert", &["edges_key", "edges_path", "key_path", "max_edges", "max_records", "preview.in", "preview.out", "record_key", "records_key", "records_path", "target", "timeout_secs", "title"]),
    ("n.sekejap.query", &["limit", "params", "preview.in", "preview.out", "query", "read_only", "timeout_secs", "title"]),
    ("n.sqlite.mutate", &["params", "preview.in", "preview.out", "query", "sql", "timeout_secs", "title"]),
    ("n.sqlite.query", &["params", "preview.in", "preview.out", "query", "sql", "timeout_secs", "title"]),
    ("n.table.convert", &["filename", "folder", "from", "from_format", "limit", "on_conflict", "path", "preview.in", "preview.out", "preview_rows", "store", "timeout_secs", "title", "to_format", "to_json"]),
    ("n.table.query", &["engine", "filename", "folder", "limit", "on_conflict", "params", "path", "preview.in", "preview.out", "preview_rows", "query", "sources", "sql", "store", "timeout_secs", "title", "to_format", "to_json"]),
    ("n.telegram.edit", &["bot_credential_id"]),
    ("n.telegram.send", &["bot_credential_id"]),
    ("n.telegram.send.document", &["bot_credential_id"]),
    ("n.telegram.send.photo", &["bot_credential_id"]),
    ("n.telegram.trigger", &["allowed_updates", "bot_credential_id"]),
    ("n.trigger.function", &["description", "examples", "input_schema", "output_schema", "params", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.trigger.kv.subscribe", &["channel", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.trigger.manual", &["__manual_note", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.trigger.mcp", &["parameters", "preview.in", "preview.out", "timeout_secs", "title", "tool_description", "tool_name"]),
    ("n.trigger.schedule", &["cron", "preview.in", "preview.out", "timeout_secs", "timezone", "title"]),
    ("n.trigger.weberror", &["code", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.trigger.webhook", &["__webhook_public_url", "auth_credential", "auth_optional", "auth_required_role", "auth_type", "errors", "method", "path", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.trigger.ws", &["auth_credential", "auth_required_role", "auth_type", "event", "preview.in", "preview.out", "room", "timeout_secs", "title"]),
    ("n.trigger.ws.client", &["credential_id", "heartbeat_interval_ms", "max_reconnect_attempts", "message_format", "preview.in", "preview.out", "reconnect", "reconnect_delay_ms", "timeout_secs", "title", "url"]),
    ("n.web.docs.generate", &["deploy_base_path", "deploy_base_url", "docs_root", "meta_file", "preview.in", "preview.out", "site_root", "site_title", "store", "template_folder", "timeout_secs", "title"]),
    ("n.web.response", &["body", "file", "folder", "headers", "load_scripts", "location", "message", "preview.in", "preview.out", "set_cookie", "status", "template", "timeout_secs", "title"]),
    ("n.web.static.generate", &["deploy_base_path", "deploy_base_url", "on_conflict", "path", "preview.in", "preview.out", "route", "site_root", "store", "template", "timeout_secs", "title"]),
    ("n.ws.client.send", &["connection", "message", "preview.in", "preview.out", "timeout_secs", "title"]),
    ("n.ws.emit", &["event", "payload", "preview.in", "preview.out", "room", "timeout_secs", "title", "to"]),
    ("n.ws.sync_state", &["op", "path", "preview.in", "preview.out", "room", "silent", "state_key", "timeout_secs", "title", "value"]),
];

/// Whether the 0.10 node of `kind` read `key`.
pub fn known(kind: &str, key: &str) -> bool {
    KNOWN.iter().find(|(k, _)| *k == kind).is_some_and(|(_, keys)| keys.contains(&key))
}