Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
},
"packageManager": "pnpm@9.15.0",
"omnigraph": {
"serverVersion": "0.7.0"
"serverVersion": "0.8.0"
},
"scripts": {
"sync-spec": "tsx scripts/sync-spec.ts",
Expand Down
2 changes: 1 addition & 1 deletion packages/mcp/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@modernrelay/omnigraph-mcp",
"version": "0.7.0",
"version": "0.8.0",
"description": "MCP server exposing an Omnigraph database to LLM clients (Tools + Resources, stdio transport).",
"license": "MIT",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/mcp/src/version.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
/**
* The MCP server package version reported in the MCP initialize response.
*/
export const MCP_PACKAGE_VERSION = "0.7.0";
export const MCP_PACKAGE_VERSION = "0.8.0";
4 changes: 2 additions & 2 deletions packages/mcp/test/server.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ describe('omnigraph-mcp server', () => {
const { client } = await setup();
const info = client.getServerVersion();
expect(info?.name).toBe('omnigraph-mcp');
expect(info?.version).toBe('0.7.0');
expect(info?.version).toBe('0.8.0');
});

it('lists every expected tool', async () => {
Expand Down Expand Up @@ -135,7 +135,7 @@ describe('omnigraph-mcp server', () => {
const parsed = JSON.parse(block.text);
expect(parsed.status).toBe('ok');
expect(parsed.version).toBe('0.3.0');
expect(parsed.sdkServerVersion).toBe('0.7.0');
expect(parsed.sdkServerVersion).toBe('0.8.0');
});

it('calls the query tool and preserves opaque param keys', async () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@modernrelay/omnigraph",
"version": "0.7.0",
"version": "0.8.0",
"description": "TypeScript SDK for the Omnigraph HTTP API.",
"license": "MIT",
"repository": {
Expand Down
15 changes: 12 additions & 3 deletions packages/sdk/src/generated/types.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,10 @@ export type GraphListResponse = {
};

export type HealthOutput = {
/**
* The internal-schema (storage-format) version this binary writes and reads.
*/
internal_schema_version: number;
source_version?: string | null;
status: string;
version: string;
Expand Down Expand Up @@ -342,8 +346,8 @@ export const ParamKind = {
export type ParamKind = (typeof ParamKind)[keyof typeof ParamKind];

/**
* Response for `GET /queries`: the `mcp.expose` subset of a graph's
* stored-query registry, each with typed parameters.
* Response for `GET /queries`: every stored query in a graph's
* registry, each with typed parameters.
*/
export type QueriesCatalogOutput = {
queries: Array<QueryCatalogEntry>;
Expand Down Expand Up @@ -474,6 +478,11 @@ export type SchemaOutput = {

export type SnapshotOutput = {
branch: string;
/**
* The on-disk internal-schema (storage-format) version this graph's branch
* is stamped at.
*/
internal_schema_version: number;
manifest_version: number;
tables: Array<SnapshotTableOutput>;
};
Expand Down Expand Up @@ -1025,7 +1034,7 @@ export type ClusterListQueriesError =

export type ClusterListQueriesResponses = {
/**
* Stored-query catalog (the mcp.expose subset, with typed params)
* Stored-query catalog (every stored query, with typed params)
*/
200: QueriesCatalogOutput;
};
Expand Down
2 changes: 1 addition & 1 deletion packages/sdk/src/version.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
* The SDK targets the corresponding OpenAPI spec exactly; behaviour against
* a different server major.minor is undefined.
*/
export const SERVER_VERSION = "0.7.0";
export const SERVER_VERSION = "0.8.0";
8 changes: 6 additions & 2 deletions packages/sdk/test/client.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,17 @@ import { stubFetch } from './helpers';

describe('top-level client operations', () => {
it('health sends GET /healthz', async () => {
const { fetch, calls } = stubFetch({ body: { status: 'ok', version: '0.3.1' } });
const { fetch, calls } = stubFetch({
body: { status: 'ok', version: '0.8.0', internal_schema_version: 4 },
});
const og = new Omnigraph({ baseUrl: 'http://x', fetch });
const h = await og.health();
expect(calls[0]?.method).toBe('GET');
expect(calls[0]?.url).toBe('http://x/healthz');
expect(h.status).toBe('ok');
expect(h.version).toBe('0.3.1');
expect(h.version).toBe('0.8.0');
// New in server 0.8.0: the storage-format version, camelized like any field.
expect(h.internalSchemaVersion).toBe(4);
});

it('snapshot encodes branch as a query param', async () => {
Expand Down
24 changes: 19 additions & 5 deletions spec/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"name": "MIT",
"identifier": "MIT"
},
"version": "0.7.0"
"version": "0.8.0"
},
"paths": {
"/graphs": {
Expand Down Expand Up @@ -1006,7 +1006,7 @@
"queries"
],
"summary": "List the graph's exposed stored queries as a typed tool catalog.",
"description": "Returns the `mcp.expose == true` subset of the `queries:` registry, each\nwith its MCP tool name, read/mutate flag, description/instruction, and\ntyped parameters — enough for a client to register them as tools without\nfetching `.gq` source. Read-gated; the catalog is graph-wide (branch\nindependent — `read` is authorized against `main`). **Not** Cedar-filtered\nper query yet, so it can list a query whose `invoke_query` the caller\nlacks (a known gap until per-query authorization lands).",
"description": "Returns every stored query in the `queries:` registry, each\nwith its MCP tool name, read/mutate flag, description/instruction, and\ntyped parameters — enough for a client to register them as tools without\nfetching `.gq` source. Cluster-served graphs have no per-query expose flag,\nso the catalog lists them all. Read-gated; the catalog is graph-wide (branch\nindependent — `read` is authorized against `main`). **Not** Cedar-filtered\nper query yet, so it can list a query whose `invoke_query` the caller\nlacks (a known gap until per-query authorization lands).",
"operationId": "cluster_list_queries",
"parameters": [
{
Expand All @@ -1021,7 +1021,7 @@
],
"responses": {
"200": {
"description": "Stored-query catalog (the mcp.expose subset, with typed params)",
"description": "Stored-query catalog (every stored query, with typed params)",
"content": {
"application/json": {
"schema": {
Expand Down Expand Up @@ -1964,9 +1964,16 @@
"type": "object",
"required": [
"status",
"version"
"version",
"internal_schema_version"
],
"properties": {
"internal_schema_version": {
"type": "integer",
"format": "int32",
"description": "The internal-schema (storage-format) version this binary writes and reads.",
"minimum": 0
},
"source_version": {
"type": [
"string",
Expand Down Expand Up @@ -2248,7 +2255,7 @@
},
"QueriesCatalogOutput": {
"type": "object",
"description": "Response for `GET /queries`: the `mcp.expose` subset of a graph's\nstored-query registry, each with typed parameters.",
"description": "Response for `GET /queries`: every stored query in a graph's\nregistry, each with typed parameters.",
"required": [
"queries"
],
Expand Down Expand Up @@ -2491,12 +2498,19 @@
"required": [
"branch",
"manifest_version",
"internal_schema_version",
"tables"
],
"properties": {
"branch": {
"type": "string"
},
"internal_schema_version": {
"type": "integer",
"format": "int32",
"description": "The on-disk internal-schema (storage-format) version this graph's branch\nis stamped at.",
"minimum": 0
},
"manifest_version": {
"type": "integer",
"format": "int64",
Expand Down
Loading