Skip to content

release: sync SDK + MCP to omnigraph-server v0.9.0 - #17

Merged
aaltshuler merged 3 commits into
mainfrom
sync/engine-v0.9.0
Aug 9, 2026
Merged

aaltshuler merged 3 commits into
mainfrom
sync/engine-v0.9.0

Conversation

@aaltshuler

@aaltshuler aaltshuler commented Aug 9, 2026 •

Copy link
Copy Markdown
Contributor

Syncs the SDK and MCP server to the released omnigraph-server v0.9.0, building on the v0.8.1 sync commit (this branch contains it, so merging this supersedes #14, #15, and #16).

What's in it

  • omnigraph.serverVersion + both package versions pinned to 0.9.0; spec/openapi.json and generated types regenerated from the v0.9.0 tag via the scripted pipeline (no hand-patching)
  • New binding: loadNdjson() for the one new 0.9.0 endpoint, POST /load/ndjson (strict bounded graph-level NDJSON batch, application/x-ndjson). The transport gains a rawBody option — verbatim payload with explicit Content-Type, bypassing the JSON + case-conversion pipeline — with a test pinning that the NDJSON body and user-schema keys pass through untouched
  • MCP version-pin assertions moved to 0.9.0

Verification

  • check-drift: spec matches upstream at v0.9.0
  • check-versions: all packages target 0.9.0
  • check-coverage: 18/18 spec operations bound (3 intentionally unbound), query params validated
  • typecheck + build clean; SDK 87 tests green, MCP 14 tests green

Notably, 0.9.0's wire surface is otherwise additive over the 0.8.1 sync — no existing binding changed shape. The 0.9.0 behavior changes (newest-first commit listings, strict append, keyed-write 413 bounds, 503 recovery_required) are server-side semantics the SDK already models via the error taxonomy.

Greptile Summary

This release synchronizes the SDK and MCP packages with omnigraph-server v0.9.0.

  • Pins package and advertised server versions to 0.9.0.
  • Regenerates the OpenAPI-derived types for the v0.9.0 API surface.
  • Adds loadNdjson with verbatim application/x-ndjson transport support.
  • Updates SDK and MCP tests for the new version and load endpoint.

Confidence Score: 4/5

The PR is not yet safe to merge because v0.9.0 resource-limit and recovery-required responses remain indistinguishable from generic internal failures.

The generated contract now declares HTTP 413 and 503 responses, but the shared runtime error dispatcher has no mappings or public error classes for either condition and therefore converts both into InternalServerError.

Files Needing Attention: packages/sdk/src/errors.ts, packages/sdk/src/index.ts

Important Files Changed

Filename Overview
packages/sdk/src/client.ts Adds the graph-scoped loadNdjson binding and forwards branch, source branch, and mode as query parameters.
packages/sdk/src/transport.ts Adds a raw request-body path that preserves NDJSON bytes and sets an explicit content type.
packages/sdk/src/generated/types.gen.ts Regenerates the API models and operation declarations from the omnigraph-server v0.9.0 specification.
packages/sdk/src/types.ts Exposes camel-cased graph-batch output types and the hand-written LoadNdjsonInput contract.
packages/sdk/test/client.test.ts Adds coverage for the loadNdjson URL, content type, verbatim payload, and response conversion.
packages/mcp/src/version.gen.ts Updates the MCP package version reported during initialization to 0.9.0.

Sequence Diagram

sequenceDiagram
    participant Caller
    participant SDK as Omnigraph SDK
    participant Transport
    participant Server as omnigraph-server v0.9.0
    Caller->>SDK: loadNdjson(input)
    SDK->>Transport: POST /load/ndjson + query options
    Transport->>Server: application/x-ndjson body (verbatim)
    Server-->>Transport: GraphBatchLoad response
    Transport-->>SDK: camel-cased result
    SDK-->>Caller: GraphBatchLoad
Loading

Reviews (2): Last reviewed commit: "test: exercise loadNdjson end-to-end and..." | Re-trigger Greptile

Scripted pipeline sync (sync-spec -> generate -> check-versions): the
v0.8.1 openapi delta is version-metadata only — no route or schema
changes, so no generated-type churn. Package versions and the MCP
health assertion follow the engine version. Engine release notes:
https://github.com/ModernRelay/omnigraph/releases/tag/v0.8.1 (note:
this engine release is binaries-only; crates.io publication resumes at
0.9.0 — irrelevant to this SDK, which consumes the tagged openapi.json).
Pins omnigraph.serverVersion and both package versions to 0.9.0,
regenerates spec/openapi.json and the generated types from the v0.9.0
tag, and binds the one new endpoint: POST /load/ndjson (strict bounded
graph-level NDJSON batch) via loadNdjson(), with raw-body support added
to the transport (verbatim payload + explicit Content-Type, bypassing
the JSON/case pipeline). Version-pin assertions in the MCP tests move
to 0.9.0. Coverage: 18/18 spec operations bound (3 intentionally
unbound); full SDK + MCP suites green.
Comment on lines +741 to +749
/**
* Merge row, byte, or recovery-chain ceiling exceeded before effects
*/
413: ErrorOutput;
/**
* Per-actor admission cap exceeded; honor `Retry-After` header
*/
429: ErrorOutput;
/**

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Actionable errors become internal failures

When v0.9.0 returns a 413 resource-limit response or a 503 recovery-required response, fromResponse() has no mapping for either status and produces InternalServerError, preventing callers from distinguishing a request that must be split or a recovery operation that must be resolved from a generic server failure.

Fix in Claude Code

The e2e case is the load-bearing one: CI's e2e workflow boots the
pinned real server (now 0.9.0), so this is the only place the raw
x-ndjson request meets the actual endpoint rather than our own mock.
The unit case pins that absent branch/from/mode produce a bare URL.
@aaltshuler
aaltshuler merged commit e506465 into main Aug 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant