[package] name = "rhema-calendar-integration" description = "The calendar integration: ICS/webcal feeds, CalDAV collections, and the Google Calendar API normalized into one occurrence vocabulary for reminder-style dispatch" version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true repository.workspace = true authors.workspace = true # The resident tier is still indev: `cargo publish --workspace` skips # it until the claw ships. publish = false [dependencies] rusqlite = { version = "0.40", features = ["bundled"] } # The reminder source: one `Source` over the feeds, detect-pass shaped # like the task scheduler's rhema-autonomous-agent = { path = "../../crates/rhema-autonomous-agent", version = "0.2.3" } # The reminder source ingests its slots into a `Dispatcher`; the event # and key-function shapes are the dispatcher's rhema-rsd = { path = "../../crates/rhema-rsd", version = "0.2.3" } serde = { workspace = true } serde_json = { workspace = true } thiserror = { workspace = true } async-trait = { workspace = true } # HTTP against the three feed kinds: one bounded request per poll, no # streaming reqwest = { version = "0.12", features = ["json"] } # The CalDAV adapter reads 207 multistatus bodies; the element set it # cares about is small enough that a pull parser beats a DOM quick-xml = "0.41" # Every wire time (RFC 3339, iCalendar's compact `YYYYMMDDTHHMMSS[Z]`, # `VALUE=DATE` all-days) normalizes to an OffsetDateTime, and the # vocabulary's instants round-trip as RFC 3339. time = { version = "0.3", default-features = false, features = [ "parsing", "formatting", "serde-well-known", ] } [dev-dependencies] tokio = { workspace = true, features = ["rt-multi-thread", "macros", "sync", "time"] } # In-process HTTP mocks for offline tests wiremock = "0.6" # File-backed stores in offline tests (the fed-slot ledger's restart # behavior) tempfile = "3" [lints] workspace = true