Skip to content

Tools for Overwatch Workshop.

An open-source compiler and tooling stack for Workshop text: parse, analyze, emit deterministically, and hand the same JSON to a coding agent.

wright-tool
$ wright-tool> {"op":"program"}< {"result":{"origin":{"kind":"protocol"},"rules":3, "subroutines":2,"globalVariables":4, "findings":1}}> {"op":"getFindings"}< {"result":[{"code":"expensive-loop-check","severity":"info","message":"geometry predicate evaluated inside aloop body may be expensive per iteration"}]}

wright-tool: read-only semantic service over stdin/stdout. Artifact: crates/wright-analyzer.

What the stack actually does

Workshop is still mostly hand-edited text. These crates add a language model, a queryable program, and a rerunnable compatibility check.

  • Workshop language model

    Locale-aware builtin catalog, lexer, parser, deterministic emitter, and round-trip validation for Workshop text.

    crates/wright-workshop

  • Queries a coding agent can issue

    JSON over stdin/stdout for symbols, references, control flow, and findings.

    crates/wright-analyzer

  • Small crates with documented edges

    Core, IR, Workshop frontend, analyzer, adapter, and compatibility harness, each with a boundary and dependency direction.

    AGPL-3.0-or-later

Wright

The current core product: a Rust compiler and tooling project for the Overwatch Workshop and OverPy ecosystem.

Early-stage. No stable compiler binary, CLI, or release workflow yet. The repository is the source of truth.

  • Workshop language model

    Canonical builtin catalog, native lexer and parser, deterministic emission, locale detection, and round-trip validation.

    crates/wright-workshop

  • HIR and Workshop IR

    Frontend-independent HIR and target-oriented WIR, with typed IDs, arenas, and explicit lowering.

    crates/wright-core · crates/wright-ir

  • Semantic services

    Read-only queries over a compiled program: symbols, references, usage, CFGs, and findings with stable codes.

    crates/wright-analyzer

  • Frontend adapter

    Translates pinned OverPy frontend output into Wright’s HIR protocol, with structured error records on failure.

    adapter

  • Compatibility harness

    Fixture corpus, pinned reference oracle, and normalized-output comparison that writes machine-readable reports.

    compatibility

The same interface for people and agents

If a developer can ask the tooling a question, a coding agent can ask it through the same JSON. No scraped logs.

  • Structured interfaces

    Transport-neutral request/response for program summaries, rules, symbols, references, usage, control flow, and findings.

  • Deterministic output

    Equal inputs, configuration, and toolchain produce the same IR and snapshots. Results can be diffed.

  • Machine-readable diagnostics

    Errors and findings carry stable codes, messages, and source spans so a tool can act without parsing prose.

  • Reproducible checks

    Pinned reference versions, fixture corpora, and regenerable snapshots keep compatibility claims checkable.

On GitHub

The public wrightkit organization is the current entry point. Wright is licensed AGPL-3.0-or-later; the repo itself is still private.

Explore on GitHub