Provide serde-based LLM JSON parsing and function-calling tool adapter utilities for Rust with three crates: runtime (rustia), derive proc-macro companion (rustia-macros), and aisdk adapter (rustia-llm).
rustia
crates/rustia(core)crates/rustia-llm(llm)crates/rustia-macros(macros)
docs/crates-rustia-core-foundation.mddocs/crates-rustia-llm-foundation.mddocs/crates-rustia-macros-foundation.md
- Component identifiers remain stable:
core,llm,macros. - Runtime and macro boundaries remain explicitly separated across crates.
- Runtime, adapter, and macro crates remain publishable (
publish = true) and are eligible for workspace-managedcargo-mono publish. - Stable public API contract identifiers:
- Runtime:
Validate,IValidation,IValidationError,LLMData,LlmJsonParseResult,LlmJsonParseError - Adapter:
LlmToolInput,LlmToolOutput,LlmToolSpec,tool,LlmToolBuildError,LlmToolInputError,LlmToolExecutionError - Macro:
#[derive(LLMData)]
- Runtime:
LLMData::parseperforms parse-only coercion of stringified non-string JSON values (object/array/number/boolean/null) before returning validation failures, while directValidate::validate/validate_equalscalls remain strict.rustia-llm::toolmust parse aisdk tool inputs viaLLMData::parsebefore handler execution and return deterministic validation feedback on failure.LLMDataderive expansion must remain compatible with runtime trait bounds and helper types fromcrates/rustia.- Lenient parse parity baseline is pinned to
samchon/rustia@29a02742661d476ce5ef5414fe32acc7e97c0e6cparse tests. - Parity exclusions remain explicit and stable:
undefined, non-finite numbers (Infinity,-Infinity), and lone-surrogate expectations. - Release tag eligibility remains explicit through root workspace metadata:
[workspace.metadata.cargo-mono.publish.tag].packagesmust includerustia,rustia-llm, andrustia-macros.
- Update this index and related crate contract docs together when runtime parsing semantics, adapter contracts, or derive expansion contracts change.
- Keep root and crate-domain
AGENTS.mdownership mappings synchronized with this index when rustia component paths or stability policies change. - Update root
Cargo.tomlpublish-tag package configuration in the same change when rustia package release eligibility changes. - When upstream parity baseline commit changes, update this index, runtime contract docs, and parity tests together.
docs/project-template.mddocs/domain-template.mddocs/README.md