Implement pure Rust visual snapshots (#132)
This commit is contained in:
@@ -224,6 +224,7 @@ async fn run_live(
|
||||
config.limits.observable_queue,
|
||||
)?
|
||||
.start();
|
||||
live.vision.set_generation(handle.status().generation);
|
||||
|
||||
if run_once {
|
||||
let readiness = tokio::time::timeout(config.timeouts.startup, async {
|
||||
@@ -232,19 +233,21 @@ async fn run_live(
|
||||
Some(event @ SessionObservation::Transition { status, .. })
|
||||
if status.agent_ready =>
|
||||
{
|
||||
live.vision.set_generation(status.generation);
|
||||
record_session_observation(&live.observability, &event);
|
||||
return Ok::<(), CliError>(());
|
||||
}
|
||||
Some(
|
||||
event @ SessionObservation::Transition {
|
||||
status:
|
||||
metacrate_grid_agent::SessionStatus {
|
||||
status @ metacrate_grid_agent::SessionStatus {
|
||||
state: SessionState::AuthenticationBlocked,
|
||||
..
|
||||
},
|
||||
..
|
||||
},
|
||||
) => {
|
||||
live.vision.set_generation(status.generation);
|
||||
record_session_observation(&live.observability, &event);
|
||||
return Err(CliError(
|
||||
"grid authentication/configuration requires operator action".into(),
|
||||
@@ -292,6 +295,7 @@ async fn run_live(
|
||||
)?;
|
||||
control_target.attach_observability(live.observability.clone());
|
||||
control_target.attach_build_control(live.build_control.clone());
|
||||
control_target.attach_vision_control(live.vision.clone());
|
||||
control_target.update_session(handle.status());
|
||||
let erased_target: Arc<dyn ControlTarget> = control_target.clone();
|
||||
let (control_plane, integrated_client, control_server) = match config.mode {
|
||||
@@ -360,6 +364,7 @@ async fn run_live(
|
||||
let Some(event) = event else { break; };
|
||||
record_session_observation(&live.observability, &event);
|
||||
if let SessionObservation::Transition { status, reason, retry_in } = event {
|
||||
live.vision.set_generation(status.generation);
|
||||
control_target.update_session(status);
|
||||
live.landmark_roaming
|
||||
.update_pause(|pause| pause.degraded = !status.agent_ready);
|
||||
@@ -492,6 +497,8 @@ struct LiveInteractions {
|
||||
_landmark_intake: metacrate_grid_agent::LibremetaverseLandmarkIntake,
|
||||
landmark_roaming: metacrate_grid_agent::LandmarkRoamingHandle,
|
||||
build_control: Arc<dyn metacrate_grid_agent::BuildControl>,
|
||||
vision:
|
||||
Arc<metacrate_grid_agent::VisionService<metacrate_grid_agent::LibremetaverseSceneSource>>,
|
||||
}
|
||||
|
||||
#[cfg(feature = "live-grid")]
|
||||
@@ -504,12 +511,13 @@ fn start_live_interactions(
|
||||
AuthorizedBackendRouter, AuthorizedToolBackend, BehaviorBackend, BehaviorController,
|
||||
BuildLimits, BuildService, BuildToolBackend, ConversationStore, InteractionCoordinator,
|
||||
LandmarkLimits, LandmarkService, LandmarkToolBackend, LibremetaverseBuildGrid,
|
||||
LibremetaverseLandmarkGrid, LibremetaverseLandmarkIntake, LibremetaverseScriptInventory,
|
||||
LlmClient, LlmTransportLimits, MemoryPolicyAudit, Observability, ObservabilityLimits,
|
||||
PerceptionBackend, PolicyAuditSink, PolicyGateway, PolicyLimits, PolicyLlmResponder,
|
||||
ScriptDeliveryBackend, ScriptDeliverySettings, SystemRoamingRandom, ToolLoopLimits,
|
||||
UnifiedPolicyAudit, behavior_policy_tools, build_policy_tools, landmark_policy_tools,
|
||||
perception_policy_tools, script_delivery_policy_tool,
|
||||
LibremetaverseLandmarkGrid, LibremetaverseLandmarkIntake, LibremetaverseSceneSource,
|
||||
LibremetaverseScriptInventory, LlmClient, LlmTransportLimits, MemoryPolicyAudit,
|
||||
Observability, ObservabilityLimits, PerceptionBackend, PolicyAuditSink, PolicyGateway,
|
||||
PolicyLimits, PolicyLlmResponder, ScriptDeliveryBackend, ScriptDeliverySettings,
|
||||
SystemRoamingRandom, ToolLoopLimits, UnifiedPolicyAudit, VisionAugmentedResponder,
|
||||
VisionLimits, VisionService, behavior_policy_tools, build_policy_tools,
|
||||
landmark_policy_tools, perception_policy_tools, script_delivery_policy_tool,
|
||||
};
|
||||
|
||||
let transport_limits = LlmTransportLimits {
|
||||
@@ -635,6 +643,12 @@ fn start_live_interactions(
|
||||
loop_limits,
|
||||
now,
|
||||
)?);
|
||||
let vision_limits = VisionLimits::default();
|
||||
let vision = Arc::new(VisionService::new(
|
||||
Arc::new(LibremetaverseSceneSource::new(owner, vision_limits)),
|
||||
vision_limits,
|
||||
)?);
|
||||
let responder = Arc::new(VisionAugmentedResponder::new(vision.clone(), responder));
|
||||
let sink = Arc::new(owner.interaction_sink());
|
||||
let pacer: Arc<dyn metacrate_grid_agent::ResponsePacer> = Arc::new(behavior_ingress);
|
||||
let interaction = InteractionCoordinator::new(
|
||||
@@ -662,6 +676,7 @@ fn start_live_interactions(
|
||||
_landmark_intake: landmark_intake,
|
||||
landmark_roaming,
|
||||
build_control,
|
||||
vision,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user