Imperal Docs
SDK Reference

Element Catalog

Browse every element of the Imperal SDK in one place — UI components, decorators, SDL roles & functions, ctx methods and data types, grouped by category and live-filterable.

Every public element of the Imperal SDK, structured by category and searchable on one page. This catalog is generated from the canonical SDK reference, so when the SDK gains an element it appears here automatically. For a per-symbol deep dive, follow each element's anchor or its dedicated reference page.

275 elements across 6 categories

Declarative panel primitives — compose surfaces with `ui.*`.

The previews below are live — rendered by @imperal/ui-kit, the same declarative renderer the Imperal Panel uses, from a sample of each component. The canonical contract (props, types, enums) is the signature shown on each element, sourced from the SDK reference.

ui.Accordion(sections, allow_multiple?) → UINode#
Loading preview…
ui.Alert(message, title?, type?) → UINode#
Loading preview…
ui.Audio(src, title?, controls?, autoplay?, loop?) → UINode#
Loading preview…
ui.Avatar(fallback?, src?, size?) → UINode#
Loading preview…
ui.Badge(label?, value?, color?) → UINode#
Loading preview…
ui.Button(label, variant?, on_click?, disabled?, size?, full_width?, icon?) → UINode#
Loading preview…
ui.Call(function) → UINode#
Loading preview…
ui.Card(title?, subtitle?, content?, footer?, on_click?) → UINode#
Loading preview…
ui.Chart(data, type?, x_key?, height?, colors?, y2_keys?) → UINode#
Loading preview…
ui.Code(content, language?, line_numbers?) → UINode#
Loading preview…
ui.Column(children, gap?) → UINode#
Loading preview…
ui.DataColumn(key, label, sortable?, width?, editable?, edit_type?) → UINode#
Loading preview…
ui.DataTable(columns, rows, on_row_click?, on_cell_edit?) → UINode#
Loading preview…
ui.DatePicker(value?, placeholder?, on_change?, param_name?) → UINode#
Loading preview…
ui.Dialog(title, content?, confirm_label?, cancel_label?, on_confirm?) → UINode#
Loading preview…
ui.Divider(label?) → UINode#
Loading preview…
ui.Empty(message?, icon?, action?) → UINode#
Loading preview…
ui.Error(message, title?, retry?) → UINode#
Loading preview…
ui.FileUpload(accept?, max_size_mb?, multiple?, on_upload?, param_name?, blocked_extensions?, max_total_mb?, max_files?) → UINode#
Loading preview…
ui.Form(children, action?, submit_label?, defaults?) → UINode#
Loading preview…
ui.Graph(nodes, edges, layout?, height?, min_node_size?, max_node_size?, edge_label_visible?, color_by?, on_node_click?) → UINode#
Loading preview…
ui.Grid(children, columns?, gap?) → UINode#
Loading preview…
ui.Header(text, level?, subtitle?) → UINode#
Loading preview…
ui.Html(content, sandbox?, max_height?, theme?) → UINode#
Loading preview…
ui.Icon(name, size?, color?) → UINode#
Loading preview…
ui.Image(src, alt?, width?, height?, on_click?, object_fit?, caption?) → UINode#
Loading preview…
ui.Input(placeholder?, on_submit?, value?, param_name?, type?) → UINode#
type:textpasswordemailnumberurl
Loading preview…
ui.KeyValue(items, columns?) → UINode#
Loading preview…
ui.List(items, searchable?, grouped_by?, page_size?, on_end_reached?, selectable?, bulk_actions?, total_items?, extra_info?) → UINode#
Loading preview…
ui.ListItem(id, title, subtitle?, meta?, avatar?, badge?, selected?, on_click?, actions?, draggable?, droppable?, on_drop?, icon?, expandable?, expanded_content?) → UINode#
Loading preview…
ui.Loading(message?, variant?) → UINode#
Loading preview…
ui.Markdown(content) → UINode#
Loading preview…
ui.Menu(items, trigger?) → UINode#
Loading preview…
ui.MultiSelect(options, values?, placeholder?, param_name?) → UINode#
Loading preview…
ui.Navigate(path) → UINode#
Loading preview…
ui.Open(url) → UINode#
Loading preview…
ui.Page(children, title?, subtitle?) → UINode#
Loading preview…
ui.Password(placeholder?, on_submit?, value?, param_name?) → UINode#
Loading preview…
ui.Progress(value, label?, variant?, color?) → UINode#
Loading preview…
ui.RichEditor(content?, placeholder?, on_save?, on_change?, param_name?, toolbar?) → UINode#
Loading preview…
ui.Row(children, gap?) → UINode#
Loading preview…
ui.Section(children, title?, collapsible?) → UINode#
Loading preview…
ui.Select(options, value?, placeholder?, on_change?, param_name?) → UINode#
Loading preview…
ui.Send(message) → UINode#
Loading preview…
ui.SlideOver(title, children?, subtitle?, open?, width?, on_close?) → UINode#
Loading preview…
ui.Slider(min?, max?, value?, step?, label?, param_name?) → UINode#
Loading preview…
ui.Stack(children, direction?, gap?, wrap?, align?, justify?, sticky?, className?) → UINode#
Loading preview…
ui.Stat(label, value, trend?, icon?, color?) → UINode#
Loading preview…
ui.Stats(children, columns?) → UINode#
Loading preview…
ui.Tabs(tabs, default_tab?) → UINode#
Loading preview…
ui.TagInput(values?, suggestions?, placeholder?, param_name?, on_change?, grouped_by?, delimiters?, validate?, validate_message?) → UINode#
Loading preview…
ui.Text(content, variant?) → UINode#
Loading preview…
ui.TextArea(placeholder?, value?, rows?, on_submit?, param_name?) → UINode#
Loading preview…
ui.theme(ctx?) → UINode#
Loading preview…
ui.Timeline(items) → UINode#
Loading preview…
ui.Toggle(label?, value?, on_change?, param_name?) → UINode#
Loading preview…
ui.Tooltip(content, children?) → UINode#
Loading preview…
ui.TrayResponse(badge?, panel?) → UINode#
Loading preview…
ui.Tree(nodes) → UINode#
Loading preview…
ui.Video(src, poster?, title?, autoplay?, controls?, loop?, muted?, width?, height?) → UINode#
Loading preview…

Declare handlers, schedules, webhooks, skeletons and more.

chat.function(name, description, params?, action_type?, event?, chain_callable?, effects?, id_projection?, background?, long_running?, data_model?, ui_builder?)#
ext.emits(event_type, schema_ref?)#
ext.on_upgrade(version)#
ext.panel(panel_id, slot?, title?, icon?, refresh?, center_overlay?)#
ext.secret(name, description, required?, write_mode?, max_bytes?, rotation_hint_days?)#
ext.skeleton(section_name, alert?, ttl?, description?)#
ext.tool(name, scopes?, description?)#
ext.tray(tray_id, icon?, tooltip?)#
ext.webhook(path, method?, secret_header?)#
ext.widget(widget_id, slot?, label?, icon?)#

Semantic field facets — type the *meaning* of your entity fields.

sdl.AccessLeveled{ access_visibility?, classification?, clearance_required?, handling_caveats? }#
namespace:AccessLeveled
sdl.ActivityMetrics{ active_calories_kcal?, active_minutes?, activity_distance_m?, floors_climbed?, steps? }#
namespace:ActivityMetrics
sdl.ActuatorState{ actuator_color_hex?, actuator_position?, color_temp_k?, level_pct?, locked?, mode?, on? }#
namespace:ActuatorState
sdl.AdminRegion{ continent?, country_code?, county?, locality?, neighborhood?, region_code? }#
namespace:AdminRegion
sdl.AdmissionPolicy{ doors_open_at?, dress_code?, min_age?, prohibited_items?, requires_id? }#
namespace:AdmissionPolicy
sdl.AgendaSlot{ order_index?, parent_event?, session_type?, speakers?, track? }#
namespace:AgendaSlot
sdl.Aggregated{ aggregation?, fill_policy?, granularity?, window_end?, window_start? }#
namespace:Aggregated
sdl.AIProvenance{ ai_confidence?, ai_model?, generated_by_ai?, prompt_ref?, reviewed_by_human? }#
namespace:AIProvenance
sdl.Alertable{ alert_severity?, alert_state?, alert_threshold?, fired_at?, resolved_at?, rule_name? }#
namespace:Alertable
sdl.Angle{ angle_deg?, angle_unit? }#
namespace:Angle
sdl.ApiEndpoint{ api_path?, auth_required?, deprecated?, method?, operation_id? }#
namespace:ApiEndpoint
sdl.Approvable{ approval_status?, approver?, decided_at?, decision_note? }#
namespace:Approvable
sdl.Archive{ archive_format?, compression_ratio?, entry_count?, is_encrypted?, uncompressed_size_bytes? }#
namespace:Archive
sdl.Area{ area_m2?, area_unit? }#
namespace:Area
sdl.Assignable{ assigned_at?, assignee?, assignees?, delegated_by?, reviewer?, reviewers?, team? }#
namespace:Assignable
sdl.Attached{ attachment_count?, attachments?, has_attachments?, inline_images? }#
namespace:Attached
sdl.Attested{ attestation_confidence?, attestation_result?, attestation_type?, attested_by? }#
namespace:Attested
sdl.AudioTrack{ audio_codec?, bit_depth?, bitrate_kbps?, channels?, loudness_lufs?, sample_rate_hz? }#
namespace:AudioTrack
sdl.Auditable{ action?, actor?, audit_target?, changes?, occurred_at?, outcome?, source_ip? }#
namespace:Auditable
sdl.Authorship{ author?, contributors?, creator?, editors?, last_editor?, owner? }#
namespace:Authorship
sdl.Backup{ backup_is_verified?, backup_kind?, backup_size_bytes?, retain_until?, snapshot_id?, source_resource?, taken_at? }#
namespace:Backup
sdl.Balanced{ available_balance?, balance?, balance_currency?, credit_limit?, pending_balance? }#
namespace:Balanced
sdl.Biometric{ biometric_context?, biometric_measured_at?, biometric_type?, biometric_unit?, biometric_value?, reference_high?, reference_low? }#
namespace:Biometric
sdl.Bitrate{ bitrate_bps?, bitrate_unit? }#
namespace:Bitrate
sdl.Blockable{ blocked_reason?, blocked_since?, is_blocked?, waiting_on? }#
namespace:Blockable
sdl.Boarded{ board?, column?, position?, swimlane? }#
namespace:Boarded
sdl.Bodied{ body?, body_format?, raw_body? }#
namespace:Bodied
sdl.BodyComposition{ bmi?, body_fat_pct?, body_measured_at?, body_weight_kg?, muscle_mass_kg? }#
namespace:BodyComposition
sdl.Booked{ booked_at?, cancellation_deadline?, cancelled_at?, check_in_at?, check_out_at? }#
namespace:Booked
sdl.BoundingBox{ max_lat?, max_lon?, min_lat?, min_lon? }#
namespace:BoundingBox
sdl.Branded{ brand?, country_of_origin?, manufacturer?, model_name?, model_year? }#
namespace:Branded
sdl.Bundle{ bundle_items?, bundle_type?, is_bundle? }#
namespace:Bundle
sdl.CalendarFeed{ calendar_color?, calendar_name?, feed_url?, ical_uid?, ics_url? }#
namespace:CalendarFeed
sdl.Callable{ answered?, call_direction?, call_state?, call_type?, end_reason?, ring_duration_s? }#
namespace:Callable
sdl.Cancellation{ is_cancelled?, is_refundable?, refund_deadline?, refund_policy? }#
namespace:Cancellation
sdl.Capacity{ capacity_remaining?, capacity_total?, is_sold_out?, registered_count?, waitlist_count? }#
namespace:Capacity
sdl.Caseable{ case_number?, case_resolution?, case_stage?, case_type?, closed_at?, jurisdiction?, opened_at? }#
namespace:Caseable
sdl.Categorized{ categories?, keywords?, labels?, tags?, topics? }#
namespace:Categorized
sdl.Certificated{ cert_is_valid?, cert_issuer?, cert_subject?, fingerprint?, not_after? }#
namespace:Certificated
sdl.Checklist{ checked_count?, checklist_items?, checklist_total? }#
namespace:Checklist
sdl.ColorMaterial{ color?, finish?, material?, material_color_hex?, pattern? }#
namespace:ColorMaterial
sdl.Completable{ completed_at?, completed_by?, is_done?, resolution? }#
namespace:Completable
sdl.Compliant{ assessed_by?, compliance_status?, control_id?, framework?, last_assessed_at? }#
namespace:Compliant
sdl.ComputeSpec{ arch?, disk_bytes?, gpu_count?, memory_bytes?, vcpus? }#
namespace:ComputeSpec
sdl.Confident{ ci_lower?, ci_upper?, confidence_level?, is_significant?, margin_of_error?, p_value? }#
namespace:Confident
sdl.ConfigSetting{ config_key?, config_source?, config_value?, config_value_type?, default_value?, is_secret? }#
namespace:ConfigSetting
sdl.Consented{ consent_proof?, consent_purpose?, consent_state?, consent_subject?, granted_at?, legal_basis? }#
namespace:Consented
sdl.Consumable{ consumable_type?, low?, remaining_pct?, replace_after_at? }#
namespace:Consumable
sdl.ContactPoints{ emails?, phones?, preferred_channel?, social_handles?, website_url? }#
namespace:ContactPoints
sdl.Container{ compose_project?, container_id?, container_name?, image?, image_digest?, runtime? }#
namespace:Container
sdl.ContentSafety{ is_nsfw?, moderation_labels?, scan_state?, scanned_at?, virus_name? }#
namespace:ContentSafety
sdl.Conversational{ channel_name?, conversation_participant_count?, conversation_ref?, conversation_type?, is_group?, last_message_at?, last_preview? }#
namespace:Conversational
sdl.Correspondents{ recipient_count?, recipients_bcc?, recipients_cc?, recipients_to?, reply_to?, sender? }#
namespace:Correspondents
sdl.DataRecord{ query?, row_id?, schema_ref?, table? }#
namespace:DataRecord
sdl.DataSize{ bytes?, data_size_unit? }#
namespace:DataSize
sdl.Dependencies{ blocked_by?, blocks?, related? }#
namespace:Dependencies
sdl.DeviceIdentity{ device_id?, device_manufacturer?, device_model?, firmware_version?, serial? }#
namespace:DeviceIdentity
sdl.DeviceState{ battery_pct?, device_last_seen_at?, online?, signal_strength? }#
namespace:DeviceState
sdl.Dimensioned{ dimensions? }#
namespace:Dimensioned
sdl.Dimensions3D{ dim_depth?, dim_height?, dim_unit?, dim_width? }#
namespace:Dimensions3D
sdl.Discountable{ discount_pct?, is_on_sale?, sale_price? }#
namespace:Discountable
sdl.Draftable{ is_auto_generated?, is_draft?, last_saved_at?, scheduled_send_at? }#
namespace:Draftable
sdl.Duration{ duration_display_unit?, duration_s? }#
namespace:Duration
sdl.Editorial{ editorial_is_draft?, editorial_state?, first_published_at?, published_at? }#
namespace:Editorial
sdl.Entity{ description?, id?, kind?, status?, subtitle?, title?, url? }#
namespace:Entity
namespace:EntityList
sdl.Estimable{ estimate_s?, remaining_s?, spent_s? }#
namespace:Estimable
sdl.Eventful{ event_host?, event_organizer?, event_type?, venue? }#
namespace:Eventful
sdl.Excerptable{ excerpt?, reading_time_s?, summary?, word_count? }#
namespace:Excerptable
sdl.FileObject{ checksum_sha256?, extension?, filename?, media_class?, mime_type?, path?, permissions?, size_bytes? }#
namespace:FileObject
sdl.Geofence{ center_lat?, center_lon?, dwell_s?, radius_m?, trigger? }#
namespace:Geofence
sdl.Geolocated{ accuracy_m?, altitude_m?, geo_speed_mps?, heading_deg?, lat?, located_at?, lon? }#
namespace:Geolocated
sdl.HostResource{ environment?, host_region?, hostname?, resource_id? }#
namespace:HostResource
sdl.Iconified{ avatar_url?, color_hex?, emoji?, icon? }#
namespace:Iconified
sdl.ImageMedia{ blurhash?, color_space?, exif?, height?, width? }#
namespace:ImageMedia
sdl.Inventory{ availability?, backorderable?, in_stock?, is_low_stock?, low_stock_threshold?, preorder? }#
namespace:Inventory
sdl.Invoiced{ invoice_due_at?, invoice_number?, paid_at?, payment_status?, tax?, total? }#
namespace:Invoiced
sdl.Length{ length_m?, length_unit? }#
namespace:Length
sdl.Lifecycle{ is_archived?, is_deleted?, is_favorite?, is_pinned?, visibility? }#
namespace:Lifecycle
sdl.Localized{ available_locales?, language?, languages?, locale?, localized_description?, localized_title?, text_direction? }#
namespace:Localized
sdl.Measured{ dimension?, formatted_value?, uncertainty?, unit?, unit_family?, value?, value_type? }#
namespace:Measured
sdl.MessageState{ delivery_state?, direction?, edited_at?, is_from_me?, is_read?, sent_at? }#
namespace:MessageState
sdl.Monetary{ amount?, currency? }#
namespace:Monetary
sdl.NetAsset{ domain?, ip?, port?, protocol?, record_type? }#
namespace:NetAsset
sdl.Participants{ active_now?, admins?, host?, join_state?, members?, organizer?, participant_count?, typing? }#
namespace:Participants
sdl.Percentage{ percent? }#
namespace:Percentage
sdl.Permissioned{ can_delete?, can_read?, can_share?, can_write?, role?, sec_permissions? }#
namespace:Permissioned
sdl.Placed{ place_name?, place_type?, plus_code? }#
namespace:Placed
sdl.PostalAddress{ city?, country?, postal_code?, region?, street? }#
namespace:PostalAddress
sdl.Presence{ active_until?, last_seen_at?, online_status?, status_emoji?, status_message? }#
namespace:Presence
sdl.Priced{ compare_at_price?, list_price?, price_currency?, price_includes_tax?, unit_price? }#
namespace:Priced
sdl.Prioritized{ priority?, severity?, urgency? }#
namespace:Prioritized
sdl.ProductCompliance{ age_restriction?, certifications?, hs_code?, requires_prescription?, restricted_regions? }#
namespace:ProductCompliance
sdl.Progress{ done_count?, progress?, total_count? }#
namespace:Progress
sdl.Range{ max_value?, min_value?, target? }#
namespace:Range
sdl.Rated{ distribution?, max_score?, rating?, rating_count? }#
namespace:Rated
sdl.Reactable{ my_reactions?, reaction_count?, reactions? }#
namespace:Reactable
sdl.Recurring{ is_recurring_master?, next_occurrence_at?, recurrence_anchor?, recurrence_count?, recurrence_rule?, recurrence_until? }#
namespace:Recurring
sdl.Ref{ id?, kind?, title? }#
namespace:Ref
sdl.Retained{ legal_hold?, retention_class?, sec_retain_until? }#
namespace:Retained
sdl.Reviewed{ helpfulness?, is_verified?, review_body?, would_recommend? }#
namespace:Reviewed
sdl.RiskScored{ risk_factors?, risk_level?, risk_score? }#
namespace:RiskScored
sdl.Routed{ destination?, distance_m?, origin?, route_duration_s?, waypoints? }#
namespace:Routed
sdl.RSVP{ check_in_method?, checked_in?, is_no_show?, rsvp_state? }#
namespace:RSVP
sdl.Schedulable{ all_day?, due_at?, end_at?, start_at?, timezone? }#
namespace:Schedulable
sdl.SensorReading{ measured_at?, quality?, sensor_type?, sensor_unit?, sensor_value? }#
namespace:SensorReading
sdl.Sentiment{ magnitude?, sentiment?, sentiment_score? }#
namespace:Sentiment
sdl.ServiceHealth{ health?, last_check_at?, uptime_s? }#
namespace:ServiceHealth
sdl.Signed{ algorithm?, signature?, signature_is_valid?, signed_at?, signer? }#
namespace:Signed
sdl.SleepRecord{ awake_at?, in_bed_at?, sleep_duration_s?, sleep_quality_score?, sleep_stages? }#
namespace:SleepRecord
sdl.Speed{ speed_mps?, speed_unit? }#
namespace:Speed
sdl.Subscribable{ billing_interval?, billing_interval_count?, cancel_at_period_end?, current_period_end?, current_period_start?, recurring_amount?, subscription_status?, trial_end? }#
namespace:Subscribable
sdl.Temperature{ temp_c?, temp_unit? }#
namespace:Temperature
sdl.Threaded{ depth?, reply_to_message?, root?, thread_ref? }#
namespace:Threaded
sdl.Threshold{ breached?, threshold?, threshold_target? }#
namespace:Threshold
sdl.Ticketed{ barcode?, seat?, ticket_price?, ticket_type? }#
namespace:Ticketed
sdl.TimeSeriesPoint{ ts_timestamp?, ts_value? }#
namespace:TimeSeriesPoint
sdl.Timestamped{ created_at?, deleted_at?, updated_at? }#
namespace:Timestamped
sdl.Transcribable{ captions_url?, transcript?, transcript_language? }#
namespace:Transcribable
sdl.Trended{ change_pct?, delta?, trend?, trend_period? }#
namespace:Trended
sdl.Versioned{ channel?, content_hash?, is_latest?, released_at?, revision?, revision_of?, semver?, version? }#
namespace:Versioned
sdl.VideoTrack{ fps?, hdr?, video_bitrate_kbps?, video_codec?, video_resolution? }#
namespace:VideoTrack
sdl.VitalSign{ blood_pressure?, body_temp_c?, heart_rate_bpm?, respiratory_rate?, spo2_pct? }#
namespace:VitalSign
sdl.Voted{ downvotes?, my_vote?, score?, upvotes? }#
namespace:Voted
sdl.Weight{ weight_kg?, weight_unit? }#
namespace:Weight
sdl.WorkflowState{ allowed_transitions?, entered_state_at?, state? }#
namespace:WorkflowState

The `sdl` module surface for composing typed entities.

sdl.field(role, default?)#
sdl.is_valid_role(role) → bool#
sdl.namespace_of(role) → str#
sdl.roles_of(model) → dict[str, str]#
sdl.validate_custom_role(role) → None#

Everything Webbee hands your handler via `ctx.<ns>.<method>`.

ctx.ai.complete(prompt, model?) → CompletionResult#
ctx.billing.change_plan(plan_id, period?, user?) → ChangePlanResult#
ctx.billing.check_limits(user?) → LimitsResult#
ctx.billing.create_setup_intent(user?) → SetupIntentResult#
ctx.billing.get_auto_topup(user?) → AutoTopupSettings#
ctx.billing.get_balance(user?) → BalanceInfo#
ctx.billing.get_subscription(user?) → SubscriptionInfo#
ctx.billing.list_payment_methods(user?) → list[PaymentMethod]#
ctx.billing.list_payments(user?, limit?, offset?) → list[PaymentRecord]#
ctx.billing.list_plans(user?) → list[PlanInfo]#
ctx.billing.remove_payment_method(pm_id, user?) → bool#
ctx.billing.set_auto_topup(enabled, threshold_pct?, recharge_tokens?, payment_method_id?, user?) → bool#
ctx.billing.set_default_payment_method(pm_id, user?) → bool#
ctx.billing.topup(tokens, price_cents, save_payment_method?, off_session?, user?) → TopupResult#
ctx.billing.track_usage(meter, quantity?, user?) → bool#
ctx.billing.update_billing_profile(profile, user?) → bool#
ctx.config.all() → dict#
ctx.config.get(key, default?) → Any#
ctx.config.get_section(section) → dict#
ctx.http.delete(url, timeout?) → HTTPResponse#
ctx.http.get(url, timeout?) → HTTPResponse#
ctx.http.patch(url, timeout?) → HTTPResponse#
ctx.http.post(url, timeout?) → HTTPResponse#
ctx.http.put(url, timeout?) → HTTPResponse#
ctx.notify.send(message, channel?) → None#
ctx.skeleton.get(section) → Any#
ctx.storage.delete(path) → bool#
ctx.storage.download(path) → bytes#
ctx.storage.list(prefix?) → Page[FileInfo]#
ctx.storage.upload(path, data, content_type?) → FileInfo#
ctx.store.count(collection, where?) → int#
ctx.store.create(collection, data) → Document#
ctx.store.delete(collection, doc_id) → bool#
ctx.store.get(collection, doc_id?) → Document | None#
ctx.store.list(prefix?) → list[Document]#
ctx.store.list_users(collection, page_size?) → AsyncIterator[str]#
ctx.store.query(collection, where?, order_by?, limit?) → Page[Document]#
ctx.store.query_all(collection, limit?) → list[Document]#
ctx.store.set(key, data) → Document#
ctx.store.update(collection, doc_id, data) → Document#

Return-type and payload dataclasses you compose and receive.

ActionResult{ status, data?, summary?, error?, retryable?, ui?, refresh_panels? }#
BalanceInfo{ balance?, plan?, cap? }#
ChatResult{ response, handled?, functions_called?, had_successful_action?, message_type?, action_meta?, intercepted?, task_cancelled?, narration_emission? }#
CompletionResult{ text, model?, usage?, stop_reason? }#
Document{ id, collection, data, extension_id?, tenant_id?, created_at?, updated_at?, user_id? }#
Event{ event_type, timestamp?, user_id?, tenant_id?, data? }#
EventHandlerDef{ event_type, func }#
ExposedMethod{ name, func, action_type? }#
FileInfo{ path, size?, content_type?, created_at?, url? }#
FunctionCall{ name, params, action_type, success, result?, intercepted?, event? }#
HealthCheckDef{ func }#
HealthStatus{ status, message?, details? }#
HTTPResponse{ status_code, body?, headers? }#
LifecycleHook{ name, func, version? }#
LimitsResult{ allowed?, balance?, plan?, limits?, message? }#
Page{ data, cursor?, has_more?, total? }#
ScheduleDef{ name, func, cron }#
SignalDef{ name, func }#
SubscriptionInfo{ plan_id?, plan_name?, status?, period?, current_period_start?, current_period_end? }#
ToolDef{ name, func, scopes?, description? }#
TrayDef{ tray_id, func, icon?, tooltip? }#
WebhookDef{ path, func, method?, secret_header? }#
WebhookRequest{ method, headers?, body?, query_params? }#
WebhookResponse{ status_code?, body?, headers? }#