Headless engineering project model for Isochronon
Dependencies
moon build isoproject_workbench_frontend\app --target js --release
moon run isoproject\workbench_backend --target native -- --host 127.0.0.1 --port 8765///|
test "isoproject fixture is lint clean" {
let project = iso_project_fixture()
assert_true(project.lint().passes())
}fn Application::make(id~ : String, label~ : String, device_id~ : String, task_ids~ : Array[String], object_set_assets? : Array[String], protocol_session_assets? : Array[String], protocol_role_bindings? : Array[ProtocolRoleBinding], library_assets? : Array[String]) -> Applicationpub(all) struct DeviceNode {
id : String
label : String
family : String
provider_slot : String
runtime_target : String
capabilities : LinkCapabilityVector?
parent_id : String?
} derive(Eq, Debug)fn DeviceNode::make(id~ : String, label~ : String, family~ : String, provider_slot~ : String, runtime_target~ : String, capabilities? : LinkCapabilityVector, parent_id? : String) -> DeviceNodepub(all) struct IsoProject {
id : String
name : String
device_tree : DeviceTree
applications : Array[Application]
tasks : Array[TaskConfig]
libraries : LibraryRegistry
runtime_profiles : Array[RuntimeProfile]
} derive(Eq, Debug)fn IsoProject::make(id~ : String, name~ : String, device_tree~ : DeviceTree, applications~ : Array[Application], tasks~ : Array[TaskConfig], libraries~ : LibraryRegistry, runtime_profiles~ : Array[RuntimeProfile]) -> IsoProjectfn IsoProject::protocol_adapter_binding_declaration_issues(self : IsoProject) -> Array[ProjectLintIssue]pub(all) struct LibraryRegistry {
assets : Array[ProjectAssetRef]
provider_slots : Array[ProviderSlot]
protocol_adapter_bindings : Array[ProtocolAdapterBinding]
} derive(Eq, Debug)fn LibraryRegistry::make(assets~ : Array[ProjectAssetRef], provider_slots? : Array[ProviderSlot], protocol_adapter_bindings? : Array[ProtocolAdapterBinding]) -> LibraryRegistrypub(all) struct LinkCapabilityVector {
single_initiator : Bool
bounded_delay : Bool
total_order_delivery : Bool
partition_possible : Bool
clock_sync : ClockSyncGuarantee
} derive(Eq, Debug)fn LinkCapabilityVector::make(single_initiator~ : Bool, bounded_delay~ : Bool, total_order_delivery~ : Bool, partition_possible~ : Bool, clock_sync~ : ClockSyncGuarantee) -> LinkCapabilityVectorpub(all) struct ProjectAssetRef {
id : String
kind : ProjectAssetKind
package_id : String
symbol : String
source_path : String
provider_slot : String?
} derive(Eq, Debug)fn ProjectAssetRef::make(id~ : String, kind~ : ProjectAssetKind, package_id~ : String, symbol~ : String, source_path~ : String, provider_slot? : String) -> ProjectAssetRefpub(all) struct ProjectLintReport {
project_id : String
issue_count : Int
missing_device_count : Int
missing_application_count : Int
missing_task_count : Int
missing_library_count : Int
missing_capability_count : Int
invalid_binding_count : Int
incompatible_capability_binding_count : Int
unresolved_object_contract_registry_count : Int
incompatible_object_contract_binding_count : Int
unresolved_protocol_session_count : Int
incompatible_protocol_edge_count : Int
live_profile_count : Int
issues : Array[ProjectLintIssue]
} derive(Eq, Debug)fn ProtocolAdapterBinding::make(id~ : String, application_id~ : String, protocol_asset_id~ : String, provider_slot_id~ : String, manifest_id~ : String, provider_id~ : String, source_adapter_id~ : String, manifest_digest~ : String) -> ProtocolAdapterBindingfn ProtocolRoleBinding::make(protocol_asset_id~ : String, role~ : String, device_id~ : String) -> ProtocolRoleBindingfn ProviderSlot::make(id~ : String, provider_id~ : String, package_id~ : String, descriptor_path~ : String, live_default_allowed? : Bool) -> ProviderSlotpub(all) struct RuntimeProfile {
id : String
kind : RuntimeProfileKind
lockwire_backend : String
trace_route : String
evidence_policy : String
live_io_required : Bool
} derive(Eq, Debug)fn RuntimeProfile::make(id~ : String, kind~ : RuntimeProfileKind, lockwire_backend~ : String, trace_route? : String, evidence_policy? : String, live_io_required? : Bool) -> RuntimeProfilefn TaskConfig::make(id~ : String, runtime_profile_id~ : String, period_ns? : Int64, priority? : Int, deadline_ns? : Int64, clock_domain? : String) -> TaskConfigHeadless engineering project model for Isochronon
Dependencies