{
  "$id": "https://bynk-lang.org/schemas/bynk.toml.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false,
  "description": "The Bynk project manifest. Every table and key is optional. Generated from the toolchain's manifest types by `cargo xtask manifest-schema`.",
  "properties": {
    "dependencies": {
      "additionalProperties": {
        "additionalProperties": false,
        "description": "One dependency: `package`, and exactly one of `version`, `git` (with\n`rev`) or `path`. `path` and `git` dependencies resolve (`git` through\n`bynk.lock`); `version` is refused until packaging slice 4.",
        "properties": {
          "git": {
            "description": "A git repository URL (`https://`, `ssh://` or `user@host:path`). Needs\n`rev`; locked to a commit in `bynk.lock`.",
            "type": "string"
          },
          "package": {
            "description": "The package, as `organisation/package`.",
            "type": "string"
          },
          "path": {
            "description": "A directory holding the package's `bynk.toml`, relative to this\nproject.",
            "type": "string"
          },
          "rev": {
            "description": "The tag, branch or commit of `git` to use.",
            "type": "string"
          },
          "version": {
            "description": "A pinned version range from the registry (`^1.4`). Refused until\npackaging slice 4.",
            "type": "string"
          }
        },
        "required": [
          "package"
        ],
        "type": "object"
      },
      "description": "The packages this project depends on, keyed by alias: the name source\nreaches each one's units by (`<alias>.<unit>`). An alias matches\n`[a-z][a-z0-9_]*`, isn't a Bynk keyword, and isn't `bynk`. Only a\ndependency's exported commons and adapters are reachable.",
      "propertyNames": {
        "pattern": "^[a-z][a-z0-9_]*$"
      },
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#dependencies"
        }
      }
    },
    "dev-dependencies": {
      "additionalProperties": {
        "additionalProperties": false,
        "description": "One dependency: `package`, and exactly one of `version`, `git` (with\n`rev`) or `path`. `path` and `git` dependencies resolve (`git` through\n`bynk.lock`); `version` is refused until packaging slice 4.",
        "properties": {
          "git": {
            "description": "A git repository URL (`https://`, `ssh://` or `user@host:path`). Needs\n`rev`; locked to a commit in `bynk.lock`.",
            "type": "string"
          },
          "package": {
            "description": "The package, as `organisation/package`.",
            "type": "string"
          },
          "path": {
            "description": "A directory holding the package's `bynk.toml`, relative to this\nproject.",
            "type": "string"
          },
          "rev": {
            "description": "The tag, branch or commit of `git` to use.",
            "type": "string"
          },
          "version": {
            "description": "A pinned version range from the registry (`^1.4`). Refused until\npackaging slice 4.",
            "type": "string"
          }
        },
        "required": [
          "package"
        ],
        "type": "object"
      },
      "description": "The packages only this project's tests depend on, keyed by alias, as in\n`[dependencies]`. Only a suite may reach them, and a deployable build\nnever includes them.",
      "propertyNames": {
        "pattern": "^[a-z][a-z0-9_]*$"
      },
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#dev-dependencies"
        }
      }
    },
    "fmt": {
      "additionalProperties": false,
      "description": "Formatter settings, read by format-on-save in the editor and by `bynkc fmt` / `bynk fmt`, through one shared reader. A flag passed to `fmt` overrides the key it names.",
      "properties": {
        "indent": {
          "default": "tab",
          "description": "Indentation style: `\"tab\"` (one tab per nesting level) or `\"spaces\"`\n(`indent_width` spaces per level). Default: `\"tab\"`.",
          "enum": [
            "tab",
            "spaces"
          ],
          "type": "string"
        },
        "indent_width": {
          "default": 2,
          "description": "Spaces per nesting level. Only consulted when `indent = \"spaces\"`, where\nit defaults to `2`.",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": "integer"
        },
        "max_line_width": {
          "default": 100,
          "description": "Soft target line width. A construct wider than this wraps across lines\nwhere the grammar allows. Must be at least 1. Default: `100`.",
          "format": "uint32",
          "minimum": 1,
          "type": "integer"
        },
        "trailing_comma": {
          "default": true,
          "description": "Emit trailing commas in multi-line records, sums, list literals and\n`exports` clauses. Default: `true`.",
          "type": "boolean"
        }
      },
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#fmt"
        }
      }
    },
    "lsp": {
      "additionalProperties": false,
      "description": "Language-server settings, read by `bynkc-lsp`.",
      "properties": {
        "diagnostics_debounce_ms": {
          "default": 300,
          "description": "Debounce interval, in milliseconds, for live diagnostics. Default: `300`.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "diagnostics_mode": {
          "default": "live",
          "description": "When diagnostics are computed: `\"live\"` (as you type) or `\"on_save\"`.\nDefault: `\"live\"`.",
          "enum": [
            "live",
            "on_save"
          ],
          "type": "string"
        }
      },
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#lsp"
        }
      }
    },
    "package": {
      "additionalProperties": false,
      "description": "A shareable project's identity. A project has `[package]` or `[project]`,\nnever both.",
      "properties": {
        "description": {
          "description": "A one-line description of the package.",
          "type": "string"
        },
        "exports": {
          "description": "The units the package shares: commons and adapters it declares, never\na context. Default: every commons and adapter.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "license": {
          "description": "The package's licence, as an SPDX expression (`MIT`).",
          "type": "string"
        },
        "name": {
          "description": "The package's name, `organisation/package` (`acme/money`). The\norganisation matches `[a-z][a-z0-9-]*`; the package matches\n`[a-z][a-z0-9_]*` and isn't a Bynk keyword, since a dependency's\nalias defaults to it. The organisation `bynk` is reserved.",
          "pattern": "^[a-z][a-z0-9-]*/[a-z][a-z0-9_]*$",
          "type": "string"
        },
        "repository": {
          "description": "The URL of the package's source repository.",
          "type": "string"
        },
        "version": {
          "description": "The package's version, in strict semver (`1.4.0`). Publishing will\nrequire it.",
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#package"
        }
      }
    },
    "paths": {
      "additionalProperties": false,
      "description": "The project's source trees. Each path is relative to the directory holding\n`bynk.toml`. A conventional `src/` (and `tests/`) project, or a flat one with\nits `.bynk` files at the root, needs no `[paths]` table.",
      "properties": {
        "exclude": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "default": [],
          "description": "Subtrees to skip during discovery (monorepo, vendored or generated\n`.bynk`). The tool's own `out` and `node_modules` caches and\ndot-directories are always skipped. Default: `[]`."
        },
        "include": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "Trees to compile. Default: the conventional roots that exist (`src`, and\n`tests` when present), or the project root itself when neither does."
        }
      },
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#paths"
        }
      }
    },
    "project": {
      "additionalProperties": false,
      "description": "Project metadata. Neither key affects compilation: both are for display\nonly, and have no default.",
      "properties": {
        "name": {
          "description": "Display name for the project.",
          "type": "string"
        },
        "version": {
          "description": "Version string for the project.",
          "type": "string"
        }
      },
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#project"
        }
      }
    },
    "registries": {
      "additionalProperties": {
        "additionalProperties": false,
        "description": "One package registry. Credentials never go here: a token is read from\n`BYNK_REGISTRY_<NAME>_TOKEN` or the user credentials file.",
        "properties": {
          "index": {
            "description": "The registry's index URL: `https://`, or `http://` to `localhost` only.",
            "type": "string"
          },
          "key": {
            "description": "The registry's pinned signing key, `ed25519:<base64>`.",
            "type": "string"
          },
          "mirror-of": {
            "description": "The registry this one mirrors: `bynk` (the first-party registry) or\nanother registry here that isn't itself a mirror. Not with\n`organisations`.",
            "type": "string"
          },
          "organisations": {
            "description": "The organisations whose packages resolve on this registry. An\norganisation is listed under one registry at most, and never `bynk`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "index"
        ],
        "type": "object"
      },
      "description": "Package registries, keyed by name (`[a-z][a-z0-9-]*`, not `bynk`). Checked\nnow, used once packages are fetched. In a workspace, only the root declares\nthem.",
      "propertyNames": {
        "pattern": "^[a-z][a-z0-9-]*$"
      },
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#registries"
        }
      }
    },
    "test": {
      "additionalProperties": false,
      "description": "The deployments `bynk test --against <name>` may run the `system` suites\nagainst (end-to-end testing). A bare URL is never accepted on the command\nline: a target has to be named here.",
      "properties": {
        "targets": {
          "additionalProperties": {
            "additionalProperties": false,
            "description": "One deployment `bynk test --against <name>` runs against.",
            "properties": {
              "production": {
                "default": false,
                "description": "Marks a production deployment, which `--against` refuses. Default:\n`false`.",
                "type": "boolean"
              },
              "secrets": {
                "default": [],
                "description": "The names of the secrets the deployed Workers verify with. Their values\nare read from the environment when the suites run, never from this\nfile. Default: `[]`.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "url": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Each Worker's base URL, keyed by its worker-directory name\n(`url.shop-orders = \"https://shop-orders-preview.example.workers.dev\"`).",
                "type": "object"
              },
              "vars": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "The non-secret values the target was deployed with. A case runs\nagainst the target only if its `env` agrees with them. Default: `{}`.",
                "type": "object"
              }
            },
            "required": [
              "url"
            ],
            "type": "object"
          },
          "description": "Named targets, as `[test.targets.<name>]`. `dev` is reserved for the\nlocal `bynk dev` the runner starts itself.",
          "type": "object"
        }
      },
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#test"
        }
      }
    },
    "unstable": {
      "additionalProperties": false,
      "description": "Opts in to experimental standard-library items, which carry no\ncompatibility promise and can't be used until they are listed here.",
      "properties": {
        "allow": {
          "default": [],
          "description": "Item paths to allow: a unit (`bynk.cloudflare`), an item it exports\n(`bynk.cloudflare.Kv`), or a capability operation\n(`bynk.cloudflare.Kv.list`). An entry covers its path and everything\nunder it. Default: `[]`.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#unstable"
        }
      }
    },
    "workers": {
      "additionalProperties": false,
      "description": "Settings for the Cloudflare Workers a Workers build emits (`bynkc compile\n--target workers`, `bynk dev`, `bynk deploy`).",
      "properties": {
        "compatibility_flags": {
          "default": [],
          "description": "Extra Cloudflare compatibility flags for every Worker's `wrangler.toml`,\nafter the default set (`global_fetch_strictly_public`). Names aren't\nchecked; a flag listed twice, or one already on by default, is dropped\nwith a warning. Default: `[]`.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#workers"
        }
      }
    },
    "workspace": {
      "additionalProperties": false,
      "description": "Makes this directory a workspace root: a group of projects that `bynk\ncheck`, `fmt` and `test` run across. A workspace root isn't a project:\nits `bynk.toml` holds only `[workspace]` and `[registries]`.",
      "properties": {
        "exclude": {
          "default": [],
          "description": "Directories `members` matches that aren't members, as patterns.\nDefault: `[]`.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "members": {
          "description": "The member directories, relative to the root. A component may use `*`\nand `?`, each `*` within one directory level (`packages/*`). Each\nmember holds its own `bynk.toml`.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "members"
      ],
      "type": "object",
      "x-taplo": {
        "links": {
          "key": "https://bynk-lang.org/docs/manifest/#workspace"
        }
      }
    }
  },
  "title": "bynk.toml",
  "type": "object",
  "x-taplo": {
    "links": {
      "key": "https://bynk-lang.org/docs/manifest/"
    }
  }
}
