dora-core 1.0.0

`dora` goal is to be a low latency, composable, and distributed data flow.
Documentation
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "NodeManifest",
  "description": "A node manifest (`dora-node.yml`).\n\nHolds only what native package manifests *cannot*: dora contracts and dora\nwiring. Name, version, license, and dependencies are read from\n`pyproject.toml`/`Cargo.toml` at publish time where possible.",
  "type": "object",
  "properties": {
    "apiVersion": {
      "description": "Manifest schema version. Currently always `1`.",
      "type": "integer",
      "format": "uint64",
      "minimum": 0
    },
    "build": {
      "description": "Build command run in the node's working dir when the package is\ninstalled (e.g. `pip install .`, `cargo build --release`). Arbitrary\ncode by design, like any `build:` — `--locked` binds it to the\nreviewed, commit-pinned source (spec §11).",
      "type": [
        "string",
        "null"
      ]
    },
    "categories": {
      "description": "Categories from the fixed list (spec §7.6); drive search facets.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/Category"
      }
    },
    "description": {
      "description": "One-line description, shown by `dora hub search`/`info`.",
      "type": [
        "string",
        "null"
      ]
    },
    "dora": {
      "description": "Supported dora version range (semver requirement, e.g. `>=0.4`).",
      "type": [
        "string",
        "null"
      ]
    },
    "entrypoint": {
      "description": "What to run, relative to the node's working dir.\n\nPython: a console script on the managed-env PATH (e.g. `dora-yolo`).\nRust/C/C++: the build output, e.g. `target/release/dora-yolo`.\nMust be a relative path without `..` components.",
      "type": "string"
    },
    "env": {
      "description": "Documented + typed configuration surface (environment variables).\nSecurity-sensitive names (`PATH`, `PYTHONPATH`, `LD_*`, `DYLD_*`) are\nrejected at validation.",
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/EnvVarDef"
      }
    },
    "example": {
      "description": "Example dataflow snippet shown by `dora hub info` (YAML node list).",
      "type": [
        "string",
        "null"
      ]
    },
    "inputs": {
      "description": "Typed input ports. May be empty (source nodes).",
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/PortDef"
      }
    },
    "keywords": {
      "description": "Free-form search keywords.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "name": {
      "description": "Package name. Defaults to `[project].name` / `[package].name` of the\nnative manifest at publish time; required for standalone validation.",
      "type": [
        "string",
        "null"
      ]
    },
    "namespace": {
      "description": "Index namespace the package publishes under (a GitHub org or user).",
      "type": "string"
    },
    "outputs": {
      "description": "Typed output ports. May be empty (sink nodes).",
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/PortDef"
      }
    },
    "platforms": {
      "description": "Optional platform allowlist, e.g. `[linux-x86_64, macos-aarch64]`.\nEmpty means all platforms.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "requirements": {
      "description": "Informational hardware/system requirements; surfaced by `dora hub\ninfo` and at build start, never auto-installed.",
      "$ref": "#/$defs/Requirements"
    },
    "runtime": {
      "description": "Language runtime of the node.",
      "$ref": "#/$defs/Runtime"
    },
    "types": {
      "description": "Custom type definitions shipped with the node, keyed by full URN\n(e.g. `acme/lidar/v1/PointCloud`). Must live under the package's\nnamespace; `std/` is rejected.",
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/TypeDef"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "apiVersion",
    "namespace",
    "runtime",
    "entrypoint"
  ],
  "$defs": {
    "Category": {
      "description": "Fixed category list (spec §7.6). Extended by index PR + discussion.",
      "type": "string",
      "enum": [
        "sensor",
        "actuator",
        "robot",
        "transform",
        "filter",
        "ml-inference",
        "llm",
        "speech",
        "communication",
        "recorder",
        "visualization",
        "simulator",
        "debug"
      ]
    },
    "EnvDefault": {
      "description": "A literal env default value.\n\nDeliberately *not* the descriptor's `EnvValue`: that type expands `$VAR`\nreferences against the local environment at deserialization time, which is\nright for a dataflow being deployed but wrong for a manifest — manifests\nare published verbatim into an index, so defaults must stay literal and\nparse identically on every machine.",
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "integer",
          "format": "int64"
        },
        {
          "type": "number",
          "format": "double"
        },
        {
          "type": "string"
        }
      ]
    },
    "EnvVarDef": {
      "description": "A documented environment variable.",
      "type": "object",
      "properties": {
        "default": {
          "description": "Default value used when the variable is not set in the dataflow.",
          "anyOf": [
            {
              "$ref": "#/$defs/EnvDefault"
            },
            {
              "type": "null"
            }
          ]
        },
        "description": {
          "description": "Human-readable description.",
          "type": [
            "string",
            "null"
          ]
        },
        "type": {
          "description": "Value type: `string` (default), `int`, `float`, or `bool`.",
          "anyOf": [
            {
              "$ref": "#/$defs/EnvVarType"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "EnvVarType": {
      "description": "Declared value type of an environment variable.",
      "type": "string",
      "enum": [
        "string",
        "int",
        "float",
        "bool"
      ]
    },
    "FieldDef": {
      "description": "A field definition within a struct type.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Field name",
          "type": "string"
        },
        "nullable": {
          "description": "Whether the field is nullable (default: true)",
          "type": "boolean",
          "default": true
        },
        "type": {
          "description": "Arrow type name or URN reference",
          "type": "string"
        }
      },
      "required": [
        "name",
        "type"
      ]
    },
    "MetadataDef": {
      "description": "Metadata key required on outputs of a given type.",
      "type": "object",
      "properties": {
        "description": {
          "description": "Description of the metadata key",
          "type": [
            "string",
            "null"
          ],
          "default": null
        },
        "key": {
          "description": "Key name that must be present in message metadata",
          "type": "string"
        }
      },
      "required": [
        "key"
      ]
    },
    "PortDef": {
      "description": "A typed input or output port.",
      "type": "object",
      "properties": {
        "description": {
          "description": "Human-readable description of the port.",
          "type": [
            "string",
            "null"
          ]
        },
        "required": {
          "description": "Whether a dataflow must wire this input (defaults to `true`; only\nmeaningful on inputs — validation rejects it on outputs).",
          "type": [
            "boolean",
            "null"
          ]
        },
        "type": {
          "description": "Type URN (e.g. `std/media/v1/Image`). Omitted = untyped; validation\nskips the port.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "Requirements": {
      "description": "Informational hardware/system requirements (spec §5): documentation\nsurfaced by `dora hub info`, never auto-installed.",
      "type": "object",
      "properties": {
        "hardware": {
          "description": "Hardware requirements, e.g. `[cuda]`. v1 actively probes only `cuda`.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "system": {
          "description": "System package requirements, keyed by package manager or platform.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "Runtime": {
      "description": "Language runtime of a node.",
      "type": "string",
      "enum": [
        "python",
        "rust",
        "c",
        "cpp"
      ]
    },
    "TypeDef": {
      "description": "A single type definition from the standard type library.",
      "type": "object",
      "properties": {
        "arrow": {
          "description": "Arrow data type name (e.g. \"Float32\", \"Struct\", \"LargeBinary\")",
          "type": "string"
        },
        "description": {
          "description": "Human-readable description",
          "type": [
            "string",
            "null"
          ]
        },
        "fields": {
          "description": "Struct field definitions (only for Struct arrow types)",
          "type": "array",
          "items": {
            "$ref": "#/$defs/FieldDef"
          }
        },
        "metadata": {
          "description": "Required metadata keys",
          "type": "array",
          "items": {
            "$ref": "#/$defs/MetadataDef"
          }
        },
        "params": {
          "description": "Type parameters (e.g. sample_type for AudioFrame)",
          "type": "array",
          "items": {
            "$ref": "#/$defs/TypeParam"
          }
        }
      },
      "required": [
        "arrow"
      ]
    },
    "TypeParam": {
      "description": "A type parameter declaration (e.g. `sample_type` on AudioFrame).",
      "type": "object",
      "properties": {
        "default": {
          "description": "Default value (used when parameter is not specified)",
          "type": [
            "string",
            "null"
          ],
          "default": null
        },
        "name": {
          "description": "Parameter name",
          "type": "string"
        }
      },
      "required": [
        "name"
      ]
    }
  }
}