Skip to main content

gsm_core/
lib.rs

1//! Greentic Messaging core contracts and value types.
2//!
3//! This crate exposes the shared data structures exchanged between ingress, runner, and egress
4//! components. It also provides validation helpers and small utilities for subject naming and
5//! idempotency tracking.
6pub mod adapter_registry;
7#[cfg(feature = "adaptive-cards")]
8pub mod adaptivecards;
9pub mod cards;
10#[cfg(feature = "component-host")]
11pub mod component_host;
12pub mod context;
13pub mod default_packs;
14pub mod egress;
15pub mod http;
16pub mod idempotency;
17pub mod ingress;
18pub mod interfaces;
19#[cfg(feature = "adaptive-cards")]
20pub mod messaging_card;
21pub mod messaging_subjects;
22pub mod oauth;
23pub mod outbound;
24pub mod pack_extensions;
25pub mod path_safety;
26pub mod platforms;
27pub mod prelude;
28pub mod provider_capabilities;
29pub mod provider_install_store;
30pub mod provider_ops;
31pub mod provider_registry;
32pub mod render_mode;
33pub mod render_plan;
34pub mod render_planner;
35pub mod runner_client;
36pub mod secrets_paths;
37pub mod telemetry;
38#[cfg(any(test, feature = "testkit"))]
39pub mod testkit;
40pub mod types;
41pub mod validate;
42pub mod worker;
43
44pub use adapter_registry::*;
45#[cfg(feature = "adaptive-cards")]
46pub use adaptivecards::*;
47pub use cards::*;
48#[cfg(feature = "component-host")]
49pub use component_host::*;
50pub use context::*;
51pub use default_packs::*;
52pub use greentic_pack::messaging::MessagingAdapterKind;
53pub use http::*;
54pub use idempotency::*;
55pub use ingress::*;
56pub use interfaces::*;
57#[cfg(feature = "adaptive-cards")]
58pub use messaging_card::types::{
59    Action as AdaptiveAction, ImageRef as AdaptiveImageRef, MessageCard as AdaptiveMessageCard,
60    MessageCardKind as AdaptiveMessageCardKind, OauthCard as AdaptiveOauthCard,
61    OauthPrompt as AdaptiveOauthPrompt, OauthProvider as AdaptiveOauthProvider,
62};
63#[cfg(feature = "adaptive-cards")]
64pub use messaging_card::{
65    MessageCardEngine,
66    adaptive::{AdaptiveCardPayload, AdaptiveCardVersion, ValidateError, normalizer},
67    downgrade::{CapabilityProfile, DowngradeContext, DowngradeEngine, PolicyDowngradeEngine},
68    ir::{AppLink, Element, InputChoice, MessageCardIr, MessageCardIrBuilder},
69    renderers::{
70        NullRenderer, PlatformRenderer, RendererRegistry, SlackRenderer, TeamsRenderer,
71        TelegramRenderer, WebChatRenderer, WebexRenderer,
72    },
73    spec::{AuthRenderSpec, FallbackButton, RenderIntent, RenderSpec},
74    telemetry::{CardTelemetry, NullTelemetry, TelemetryEvent, TelemetryHook},
75    tier::{Tier, TierPolicy},
76};
77pub use messaging_subjects::*;
78pub use outbound::*;
79pub use pack_extensions::*;
80pub use platforms::*;
81pub use prelude::*;
82pub use provider_capabilities::*;
83pub use provider_install_store::{
84    INSTALL_ID_KEY, InMemoryProviderInstallStore, PROVIDER_CONFIG_REFS_KEY, PROVIDER_ID_KEY,
85    PROVIDER_SECRET_REFS_KEY, ProviderInstallError, ProviderInstallRouting, ProviderInstallState,
86    ProviderInstallStore, ProviderInstallStoreSnapshot, apply_install_refs, extract_provider_route,
87    load_install_store_from_path,
88};
89pub use provider_ops::{
90    AttachmentInput, IngestInput, IngestOutput, MessageEnvelope as ProviderMessageEnvelope,
91    ReplyInput, ReplyMetadata, ReplyOutput, SendInput, SendMetadata, SendOutput, SendStatus,
92};
93pub use provider_registry::{CapsSource, ProviderCapsRegistry, ProviderRecord};
94pub use render_mode::*;
95pub use render_plan::*;
96pub use render_planner::*;
97pub use runner_client::*;
98pub use secrets_paths::*;
99pub use telemetry::*;
100#[cfg(any(test, feature = "testkit"))]
101pub use testkit::*;
102pub use types::*;
103pub use validate::*;
104pub use worker::*;
105
106/// Returns the semantic version advertised by this crate.
107///
108/// ```
109/// assert_eq!(gsm_core::version(), "0.1.0");
110/// ```
111pub fn version() -> &'static str {
112    "0.1.0"
113}