Conversation
Oracle is a schema-first code generation system that produces type definitions and serialization code across multiple languages (Go, TypeScript, Python, C++) from centralized .oracle schema files. Key components: - Parser: ANTLR-based lexer/parser for .oracle schema files - Analyzer: Schema validation and import resolution - Resolution: Type system with namespace support and topological sorting - Plugins: Language-specific code generators (ts/types, go/types, py/types, cpp/types, cpp/json, cpp/pb, go/pb, pb/types) - LSP: Language Server Protocol support for IDE integration - CLI: Commands for sync, check, fmt, and lsp This establishes the foundation for schema-driven type generation used throughout the Synnax platform. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
pjdotson
approved these changes
Feb 3, 2026
Contributor
pjdotson
left a comment
There was a problem hiding this comment.
- Can you make sure to add CI tests
- Can you make sure base branch is `rc
Contributor
|
@emilbon99 ignore comment and approval that was fat fingers |
pjdotson
requested changes
Feb 3, 2026
Contributor
pjdotson
left a comment
There was a problem hiding this comment.
- Add workflow for this to CI.
- Can you improve the
install.shfile to make errors more descriptive? it is failing for me and I don't know why.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## rc #1921 +/- ##
==========================================
+ Coverage 53.53% 53.83% +0.30%
==========================================
Files 2407 2460 +53
Lines 138700 150696 +11996
Branches 7106 7096 -10
==========================================
+ Hits 74249 81124 +6875
- Misses 62646 67108 +4462
- Partials 1805 2464 +659
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…0-oracle-prep-7-extract-common-oracle-lsp-diagnostics
…tics' of https://github.com/synnaxlabs/synnax into pr-1-oracle-tool
13b76fc to
b275438
Compare
…' of https://github.com/synnaxlabs/synnax into pr-1-oracle-tool
Contributor
Author
|
Fixed the oracle flags. I don't think I ended up adding any of those helpers to go I just removed them in places where they weren't necessary. |
…ventions' of https://github.com/synnaxlabs/synnax into sy-3768-oracle-prep-10-fix-mypy-type-checking-in-client
pjdotson
approved these changes
Feb 18, 2026
Base automatically changed from
sy-3768-oracle-prep-10-fix-mypy-type-checking-in-client
to
rc
February 20, 2026 03:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Review Guide
Context
This is PR 1 of 9 in the Oracle code generation series. PRs must be merged in order.
Merge sequence: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9
Dependencies
Greptile Overview
Greptile Summary
Introduces Oracle, a comprehensive schema-first code generation framework that generates types and serialization code for Go, TypeScript, Python, and C++ from a single source of truth.
Key Components:
.oraclefiles)Architecture:
Code Quality:
Confidence Score: 5/5
Important Files Changed
Sequence Diagram
sequenceDiagram participant User participant CLI as CLI (cmd/oracle) participant Oracle as Oracle Core participant Analyzer participant Parser as ANTLR Parser participant Loader as File Loader participant ResTable as Resolution Table participant Registry as Plugin Registry participant GoTypes as go/types Plugin participant TSTypes as ts/types Plugin participant PBTypes as pb/types Plugin participant GoPB as go/pb Plugin participant PostWriter as Formatter/Linter User->>CLI: oracle sync [files] CLI->>Oracle: Generate(files, repoRoot, registry) Oracle->>Analyzer: Analyze(files, loader) loop For each file Analyzer->>Loader: Load(file) Loader-->>Analyzer: source, filePath Analyzer->>Parser: Parse(source) Parser-->>Analyzer: AST Analyzer->>ResTable: Add(Type) Note over Analyzer: Collect structs, enums, typedefs<br/>Resolve type references<br/>Validate inheritance end Analyzer-->>Oracle: Resolution Table loop For each plugin Oracle->>Registry: Get plugin dependencies alt Has dependencies Oracle->>Registry: Check dependency staleness end Oracle->>GoTypes: Generate(Request{table, repoRoot}) GoTypes->>ResTable: Query types with @go domain GoTypes-->>Oracle: Response{Files} Oracle->>TSTypes: Generate(Request{table, repoRoot}) TSTypes->>ResTable: Query types with @ts domain TSTypes-->>Oracle: Response{Files} Oracle->>PBTypes: Generate(Request{table, repoRoot}) PBTypes->>ResTable: Query types with @pb domain PBTypes-->>Oracle: Response{Files} Oracle->>GoPB: Generate(Request{table, repoRoot}) Note over GoPB: Requires go/types and pb/types GoPB->>ResTable: Query types with @pb domain GoPB-->>Oracle: Response{translator.gen.go} end Oracle-->>CLI: GenerateResult{files by plugin} CLI->>Oracle: SyncFiles(outputDir) Note over Oracle: Only write changed files Oracle-->>CLI: SyncResult{written, unchanged} CLI->>PostWriter: Run formatters/linters loop For each file group PostWriter->>PostWriter: gofmt, prettier, eslint, etc. end PostWriter-->>CLI: Success CLI-->>User: Summary (X files generated)