//! Version constants for PiCloud's compatibility surfaces. //! //! See [`docs/versioning.md`](../../../../docs/versioning.md) for the //! full scheme. The product version is sourced from the workspace //! package version; the four surface versions live in this module //! and are bumped under the rules in that doc. /// Product version (e.g. `"0.2.0"`). Sourced from this crate's /// `Cargo.toml` so the workspace-inherited package version is the /// single point of update. pub const PRODUCT_VERSION: &str = env!("CARGO_PKG_VERSION"); /// Rhai SDK version, in `"major.minor"` form. Scripts read this from /// `ctx.sdk_version` for feature detection. Bump rules: /// * patch (`1.x.0`): doc-only, no script-observable change /// * minor (`1.0 → 1.1`): added functions / fields; existing /// scripts must still run unchanged /// * major (`1 → 2`): removed, renamed, retyped, restricted /// /// 1.1 additions: `ctx.request.params`, `ctx.request.query`, /// `ctx.request.rest`. /// /// 1.2 additions (v1.1.1): `kv::collection(name).{get,set,has,delete,list}`, /// `dead_letters::{replay,resolve}`, `ctx.event` for triggered handlers. /// /// 1.3 additions (v1.1.2): /// `docs::collection(name).{create,get,find,find_one,update,delete,list}` /// with the v1.1.2 query DSL subset; `ctx.event.docs` for docs-trigger /// handlers (carries `prev_data` change-data-capture for update/delete). /// /// 1.4 additions (v1.1.3): `import "" as ;` for scripts /// whose corresponding module (`kind = 'module'`) lives in the same /// app. Cross-app imports are unreachable (the `name` argument carries /// no `app_id`). Modules expose `fn`/`const` declarations only; /// top-level statements are rejected at create-time. /// /// 1.5 additions (v1.1.4): `http::{get,post,put,patch,delete,head, /// post_form,request}` for outbound HTTP from scripts (guarded by an /// SSRF deny-list on the resolved IP); `ctx.event.cron` for cron-trigger /// handlers (carries `schedule`, `timezone`, `scheduled_at`, `fired_at`). /// The `Services` bundle gains `http: Arc`. /// /// 1.6 additions (v1.1.5): /// `files::collection(name).{create,head,get,update,delete,list}` — /// filesystem-backed blob storage (blobs in/out; metadata maps; /// checksum-verified reads) with `ctx.event.files` for files-trigger /// handlers (metadata only, never the bytes); and /// `pubsub::publish_durable(topic, message)` — durable pub/sub with /// publish-time fan-out and `ctx.event.pubsub` for pubsub-trigger /// handlers. The `Services` bundle gains `files: Arc` /// and `pubsub: Arc`. /// /// 1.7 additions (v1.1.6): `pubsub::subscriber_token(topics, ttl)` — /// mints an HMAC-signed realtime subscriber token for externally- /// subscribable topics (requires an authenticated principal). This is /// the only new script-visible surface; the rest of the release is /// server-side (the SSE `/realtime/topics/{topic}` endpoint; the /// `RealtimeBroadcaster` / `RealtimeEvent` / `RealtimeAuthority` traits; /// the `topics` registry + admin endpoints; the `@picloud/client` /// TypeScript package). pub const SDK_VERSION: &str = "1.7"; /// HTTP API major version. Appears in URL paths as `/api/v{N}/...`. /// Bump (new integer + new URL prefix) when the request/response /// shape, status-code semantics, or auth model changes. The previous /// major is kept live for at least one product-minor deprecation /// window. pub const API_VERSION: u32 = 1; /// Wire-protocol version between manager / orchestrator / executor /// nodes in cluster mode. Negotiated via the `X-PiCloud-Wire` header /// on inter-service requests. Reserved at `1`; cluster mode is v1.3+. pub const WIRE_VERSION: u32 = 1;