Skip to content

Client feature parity

The six remote clients wrap every RPC of sysml-grpc with a typed API. This page records, per client, the request options and cross-cutting features that distinguish a complete wrapper from a thin one, and links the test that proves each cell. The Go package client/opensysml is the reference wrapper. The Jupyter kernel is a consumer of the Python client and is not a separate row.

Legend: typed — a typed wrapper with a test; raw — reachable only through the raw response (wire(), the decoded dictionary); — — absent, listed under Open gaps.

RPC coverage

Every client exposes all 31 RPCs (GetServerInfo, ParseFile, ParseSources, GetSymbol, GetDiagnostics, Evaluate, Instantiate, ExecuteAction, ExecuteState, Convert, Migrate, ApplyEdits, VerifyConstraint, VerifyRequirement, VerifySatisfaction, ValidateInstance, EvaluateCalc, RunAnalysis, CheckBehavior, RunSweep, RunRuns, SelfCheck, RecordRun, ListEngines, Query, RunDocumentQuery, RenderDocument, RenderView, ExportGraphs, ImportData, CompareResults) as typed calls, and each runs the shared conformance suite over them. The service has no streaming RPC. Capability preflight (GetServerInfo capabilities checked before a call) is typed in every client.

Request options

Option Python Node Java Rust Julia MATLAB
Convert.id_form typed typed typed typed typed typed
Convert.include_library_stubs typed typed typed typed typed typed
ConvertResponse.library_references typed typed typed typed typed typed
Convert.documents typed typed typed typed typed typed
Convert.compact, omit_derived, keep_derived typed typed typed typed typed typed
Convert.include_check_diagnostics typed typed typed typed typed typed
Query.oslc_query typed typed typed typed typed typed
Query.order_by (capability gated) typed typed typed typed typed typed
ParseSources.base_model_hash / affected typed typed typed typed typed typed
RunSweep.samples typed typed typed typed typed typed
RenderView.compartments typed typed typed typed typed typed
RenderView.show, depth, ports typed typed typed typed typed typed
ImportData.import_as typed typed typed typed typed typed
RenderDocument.form (markdown, html, asciidoc) typed typed typed typed typed typed

Cross-cutting features

Feature Python Node Java Rust Julia MATLAB
Bearer token (OPENSYSML_GRPC_TOKEN, explicit) typed typed typed typed typed typed
TLS to a remote service typed typed typed typed typed typed
Transport: Connect protobuf / JSON typed typed typed typed typed typed
In-process WebAssembly engine — typed (connectWasm) — — — —
Deadlines / timeouts typed typed typed typed typed typed
Typed UNAUTHENTICATED error typed typed typed typed typed typed
Typed NOT_FOUND split (model / file / symbol) typed typed typed typed typed typed
Typed INVALID_ARGUMENT, DEADLINE_EXCEEDED, UNAVAILABLE, UNIMPLEMENTED typed typed typed typed typed typed
Missing-capability error carrying the capability typed typed typed typed typed typed
Stale-service (version mismatch) error typed typed typed typed typed typed
Private child service lifecycle typed typed typed typed typed typed
Streaming / observe a run — (no streaming RPC exists) — — — — —

Error typing: every client distinguishes the statuses the Python client's errors.py distinguishes (NOT_FOUND by subject, INVALID_ARGUMENT/FAILED_PRECONDITION/OUT_OF_RANGE, DEADLINE_EXCEEDED/CANCELLED, UNAVAILABLE, UNIMPLEMENTED, UNAUTHENTICATED) and carries structured details (diagnostics, symbol suggestions, capability names).

Open gaps

Gap Where Estimate
RunSweep.samples in the Go package client/opensysml about one day: the package has no typed RunSweep wrapper at all, so the option means a typed sweep request, result rows and their evaluations, and tests
In-process engine without a service Python, Java, Rust, Julia, MATLAB large; Node's connectWasm is the only one, and the others would need a wasm host each

Proving tests

Each linked cell above points at one of these files; the test names are the ones to search for.