Skip to main content

greentic_component_runtime/
lib.rs

1mod binder;
2mod error;
3mod host_imports;
4mod invoker;
5mod loader;
6mod policy;
7
8use greentic_types::TenantCtx;
9use serde_json::Value;
10
11pub use binder::{Binder, Bindings};
12pub use error::CompError;
13pub use loader::{ComponentHandle, ComponentRef, Loader};
14pub use policy::{HostPolicy, LoadPolicy};
15
16pub fn load(cref: &ComponentRef, policy: &LoadPolicy) -> Result<ComponentHandle, CompError> {
17    let loader = Loader;
18    loader.load(cref, policy)
19}
20
21pub fn describe(handle: &ComponentHandle) -> Result<ComponentManifestInfo, CompError> {
22    let loader = Loader;
23    loader.describe(handle)
24}
25
26pub fn bind(
27    handle: &ComponentHandle,
28    tenant: &TenantCtx,
29    bindings: &Bindings,
30    secret_resolver: &mut dyn FnMut(&str, &TenantCtx) -> Result<String, CompError>,
31) -> Result<(), CompError> {
32    let binder = Binder;
33    binder.bind(handle, tenant, bindings, secret_resolver)
34}
35
36pub fn invoke(
37    handle: &ComponentHandle,
38    operation: &str,
39    input_json: &Value,
40    tenant: &TenantCtx,
41) -> Result<Value, CompError> {
42    invoker::invoke(handle, operation, input_json, tenant)
43}
44
45pub type ComponentManifestInfo = component_manifest::ComponentInfo;