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> {"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.
- github.com/wrightkit
- workshop-md-converter — converts the Workshop.code wiki into Markdown