Skip to content

Add experimental Rust SDK API#2

Open
Fletcher-Alderton wants to merge 3 commits into
evanpurkhiser:mainfrom
Fletcher-Alderton:feat/sdk-api
Open

Add experimental Rust SDK API#2
Fletcher-Alderton wants to merge 3 commits into
evanpurkhiser:mainfrom
Fletcher-Alderton:feat/sdk-api

Conversation

@Fletcher-Alderton

@Fletcher-Alderton Fletcher-Alderton commented Jul 7, 2026

Copy link
Copy Markdown

Summary

  • add an experimental things3_cloud::sdk module with typed read and mutation APIs for app integrations
  • reuse existing command planners for mutation payload generation so CLI behavior stays unchanged
  • extract shared create planners for projects, areas, and tags so CLI and SDK use one source of truth for those creates
  • expose resolved task JSON fields for Rust SDK consumers and document SDK usage in the README

Notes

  • The CLI remains the stable user interface; this adds an optional Rust API surface for consumers that should not shell out to things3.
  • Mutation methods commit the same WireObject changes produced by command planners.
  • The SDK supports live cloud reads/writes, cache-only reads, journal fixtures, and dry-run writes for tests.

Validation

  • cargo fmt --check (passes; stable rustfmt warns that nightly-only rustfmt.toml options are ignored)
  • cargo clippy --all-targets --all-features (passes; existing large_enum_variant warning remains in src/wire/wire_object.rs)
  • cargo test new_payload
  • cargo test sdk::tests
  • cargo test cli_trycmd_projects
  • cargo test cli_trycmd_areas
  • cargo test cli_trycmd_tags
  • cargo test --all-targets

No CLI behavior changes intended.

@Fletcher-Alderton Fletcher-Alderton marked this pull request as ready for review July 7, 2026 04:57
@Fletcher-Alderton Fletcher-Alderton marked this pull request as draft July 7, 2026 05:11
@Fletcher-Alderton Fletcher-Alderton marked this pull request as ready for review July 7, 2026 05:19
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