Expand description
Rust client SDK for the Reasoning Layer API.
The SDK is a direct port of the TypeScript SDK (@kortexya/reasoninglayer) — it speaks the
same HTTP contract, sends the same auth headers, follows the same retry / backoff rules, and
exposes the same resource surface. Method naming follows Rust conventions (snake_case), with
ReasoningLayerClient as the single entry point.
§Quick start
use reasoninglayer::{psi, var, guard, constrained, GuardOp,
ClientConfig, ReasoningLayerClient, CreateSortRequest,
AddRuleRequest, BackwardChainRequest};
let client = ReasoningLayerClient::new(
ClientConfig::new("http://localhost:8083", "00000000-0000-0000-0000-000000000001"),
)?;
let person = client.sorts().create_sort(CreateSortRequest::with_name("person"), None).await?;
client.inference().add_rule(
AddRuleRequest {
term: psi("well_paid", [("person", var("?X"))]),
antecedents: vec![psi("employee", [
("name", var("?X")),
("salary", constrained("?S", guard(GuardOp::Gt, 80_000_i64))),
])],
certainty: None,
},
None,
).await?;§Resources
Every resource client is accessible via an accessor on ReasoningLayerClient:
- Core knowledge base:
sorts()/types(),terms()/records(),inference()/rules(),query() - AI / ML:
cognitive()/agents(),oversight(),neuro_symbolic(),rag(),generation(),synthetic(),proof_engine(),context(),rl_training() - Reasoning:
optimize(),ilp(),cdl(),execution(),reasoning(),preferences(),discovery() - Analysis:
causal(),statistical(),fuzzy(),scenarios(),communities(),visualization(),analysis() - Data:
ingestion(),extract(),sources(),collections(),image_extraction(),row() - Workflow:
control(),reviews(),action_reviews(),webhook_actions() - System:
health(),admin(),spaces(),namespaces(),utilities(),ontology(),osfql(),ui(),conversation(),research(),functions()
§Coverage phases
- Phase 1 (this crate, stable): sorts, terms, inference, query with fully typed DTOs, builders, retry / timeout / auth / error mapping.
- Phase 2 (this crate, typed where obvious,
serde_json::Valueotherwise): every other resource has an HTTP client exposed at the right path with the right verb. The wire contract is identical to the TypeScript SDK. Typed DTOs for the Phase 2 resources are landing in patch releases — subscribe to the repo for the upgrade path. Users can always deserialize the returnedValueinto their own types. - WebSocket + SSE: exposed via
ws::WebSocketConnectionandsse::stream.
Re-exports§
pub use types::common::ApiResponse;pub use types::common::RateLimitInfo;pub use types::common::RequestOptions;pub use builders::constrained;pub use builders::guard;pub use builders::psi;pub use builders::psi_by_id;pub use builders::term_ref;pub use builders::var;pub use builders::FuzzyShape;pub use builders::GuardRhs;pub use builders::Value;pub use types::homoiconic::FeatureInputValueDto;pub use types::homoiconic::FeatureValueDto;pub use types::homoiconic::PsiTermDto;pub use types::homoiconic::TermInputDto;pub use types::inference::AddFactRequest;pub use types::inference::AddFactResponse;pub use types::inference::AddRuleRequest;pub use types::inference::AddRuleResponse;pub use types::inference::BackwardChainRequest;pub use types::inference::BackwardChainResponse;pub use types::inference::BayesianEffectDto;pub use types::inference::BayesianPredictRequest;pub use types::inference::BayesianPredictResponse;pub use types::inference::BulkAddFactsRequest;pub use types::inference::BulkAddFactsResponse;pub use types::inference::BulkAddRulesRequest;pub use types::inference::BulkAddRulesResponse;pub use types::inference::ClearFactsResponse;pub use types::inference::CreateGoalRequest;pub use types::inference::CreateGoalResponse;pub use types::inference::DeleteGoalResponse;pub use types::inference::ForwardChainRequest;pub use types::inference::ForwardChainResponse;pub use types::inference::FuzzyProveRequest;pub use types::inference::FuzzyProveResponse;pub use types::inference::GetFactsResponse;pub use types::inference::GuardOp;pub use types::inference::ListGoalsResponse;pub use types::inference::MetaSortsResponse;pub use types::inference::NafProveRequest;pub use types::inference::NafProveResponse;pub use types::inference::SolutionDto;pub use types::query::FindBySortRequest;pub use types::query::NlQueryMode;pub use types::query::NlQueryRequest;pub use types::query::NlQueryResponse;pub use types::query::OsfSearchRequest;pub use types::query::OsfSearchResponse;pub use types::query::TermListResponse;pub use types::query::TermPatternDto;pub use types::query::UnifiableQueryRequest;pub use types::query::ValidateTermRequest;pub use types::query::ValidatedUnifyRequest;pub use types::sorts::BulkCreateSortsRequest;pub use types::sorts::BulkCreateSortsResponse;pub use types::sorts::CreateSortRequest;pub use types::sorts::DecodeGlbResponse;pub use types::sorts::FeatureDescriptorDto;pub use types::sorts::GlbRequest;pub use types::sorts::GlbResponse;pub use types::sorts::LubRequest;pub use types::sorts::LubResponse;pub use types::sorts::SortDto;pub use types::sorts::SortInfoDto;pub use types::sorts::SortListResponse;pub use types::sorts::UpdateReviewStatusRequest;pub use types::terms::BulkAddTermsRequest;pub use types::terms::BulkAddTermsResponse;pub use types::terms::ClearTermsResponse;pub use types::terms::CreateTermRequest;pub use types::terms::TermDto;pub use types::terms::TermResponse;pub use types::terms::TermState;pub use types::terms::UpdateTermRequest;pub use types::terms::ValidatedTermResponse;pub use types::terms::ValidatedUnifyResponse;pub use types::values::FuzzyShapeDto;pub use types::values::ValueDto;
Modules§
- builders
- Builders for constructing SDK requests.
- sse
- Server-Sent Events (SSE) streaming.
- types
- Data transfer objects for the Reasoning Layer API.
- ws
- WebSocket support with automatic reconnection.
Structs§
- Action
Reviews Client - Admin
Client - Analysis
Client - ApiError
- An HTTP error returned by the backend.
- Causal
Client - CdlClient
- Client
Config - Configuration for a
ReasoningLayerClient. - Cognitive
Client - Collections
Client - Communities
Client - Constraint
Violation Details - Structured details for a 409 constraint violation.
- Constraints
Client - Context
Client - Control
Client - Conversation
Client - Discovery
Client - Execution
Client - Extract
Client - Functions
Client - Fuzzy
Client - Generation
Client - Health
Client - IlpClient
- Image
Extraction Client - Inference
Client - Resource client for inference operations.
- Ingestion
Client - Namespaces
Client - Neuro
Symbolic Client - Ontology
Client - Optimize
Client - Optimization client — thin facade for LP solving via the inference engine.
- Osfql
Client - Oversight
Client - Preferences
Client - Proof
Engine Client - Query
Client - Resource client for query operations.
- RagClient
- Rate
Limit Details - Rate limit info attached to a 429 response.
- Reasoning
Client - Reasoning
Layer Client - Main entry point for the Reasoning Layer API.
- Research
Client - Reviews
Client - RlTraining
Client - RowClient
- Scenarios
Client - Sorts
Client - Resource client for sort operations. Returned by
ReasoningLayerClient::sorts. - Sources
Client - Spaces
Client - Statistical
Client - Synthetic
Client - Terms
Client - Resource client for term CRUD operations.
- UiClient
- Utilities
Client - Visualization
Client - Webhook
Actions Client
Enums§
- ApiError
Kind - Categorises an
ApiErrorby HTTP status code, matching the TypeScript SDK error hierarchy. - Error
- Top-level SDK error type. All public fallible APIs return
Result<T, Error>.
Constants§
- SDK_
LANGUAGE - Language identifier — sent as
X-SDK-Languageon every request. - SDK_
VERSION - SDK version — sent as
X-SDK-Versionon every request.