20260826 两宿主全线正本/回执/状态 + 协议正本地图v1.2 + 模板/镜面/坑清单(元审计收敛commit;前人未提交改动未碰)
This commit is contained in:
parent
b95fcb57ba
commit
59fc9bfd7b
670 changed files with 133422 additions and 129 deletions
|
|
@ -0,0 +1,83 @@
|
|||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
use crate::direct_local_broker::DirectLocalBrokerState;
|
||||
use crate::direct_local_session::{
|
||||
active_session_count_at, active_session_projections_at, direct_session_root,
|
||||
DirectSessionProjection,
|
||||
};
|
||||
use crate::pncc_receipt_projection::{pncc_projection_root, projection_event_count_at};
|
||||
use crate::pncc_repository_binding::{mounted_repository_count_at, pncc_repository_mount_root};
|
||||
use crate::release_trust::release_trust_state;
|
||||
use serde::Serialize;
|
||||
use tauri::{AppHandle, State};
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct HoloLakeHomeStatus {
|
||||
pub schema: &'static str,
|
||||
pub direct_local_broker_state: &'static str,
|
||||
pub direct_connection_count: usize,
|
||||
pub resumable_session_count: usize,
|
||||
pub direct_sessions: Vec<DirectSessionProjection>,
|
||||
pub code_repository_mount_count: usize,
|
||||
pub pncc_receipt_count: usize,
|
||||
pub update_state: &'static str,
|
||||
pub release_recovery_state: String,
|
||||
pub automatic_upstream_updates: bool,
|
||||
pub mcp_role: &'static str,
|
||||
pub terminal_link_protocol: &'static str,
|
||||
pub terminal_link_transport: &'static str,
|
||||
pub environment_frame_policy: &'static str,
|
||||
}
|
||||
|
||||
pub fn get_hololake_home_status(
|
||||
app: AppHandle,
|
||||
broker: State<'_, DirectLocalBrokerState>,
|
||||
) -> Result<HoloLakeHomeStatus, String> {
|
||||
let broker_ready = broker.ensure_started(&app)?;
|
||||
if !broker_ready {
|
||||
return Ok(HoloLakeHomeStatus {
|
||||
schema: "hololake.home-status/v1",
|
||||
direct_local_broker_state: "WAITING_FOR_LOGIN",
|
||||
direct_connection_count: 0,
|
||||
resumable_session_count: 0,
|
||||
direct_sessions: Vec::new(),
|
||||
code_repository_mount_count: 0,
|
||||
pncc_receipt_count: 0,
|
||||
update_state: release_trust_state()?,
|
||||
release_recovery_state: crate::release_update::release_recovery_state(&app)?,
|
||||
automatic_upstream_updates: false,
|
||||
mcp_role: "DISCOVERY_RECOVERY_COMPATIBILITY_ONLY",
|
||||
terminal_link_protocol: "HOLOLAKE_TERMINAL_LINK/3",
|
||||
terminal_link_transport: if cfg!(windows) {
|
||||
"WINDOWS_USER_PRIVATE_NAMED_PIPE"
|
||||
} else {
|
||||
"MACOS_LINUX_USER_PRIVATE_UNIX_SOCKET"
|
||||
},
|
||||
environment_frame_policy: "REQUIRED_AFTER_CONNECT_RESUME_AND_BEFORE_MUTATION",
|
||||
});
|
||||
}
|
||||
let session_root = direct_session_root(&app)?;
|
||||
let mount_root = pncc_repository_mount_root(&app)?;
|
||||
let projection_root = pncc_projection_root(&app)?;
|
||||
Ok(HoloLakeHomeStatus {
|
||||
schema: "hololake.home-status/v1",
|
||||
direct_local_broker_state: "READY",
|
||||
direct_connection_count: broker.active_connection_count(),
|
||||
resumable_session_count: active_session_count_at(&session_root)?,
|
||||
direct_sessions: active_session_projections_at(&session_root)?,
|
||||
code_repository_mount_count: mounted_repository_count_at(&mount_root)?,
|
||||
pncc_receipt_count: projection_event_count_at(&projection_root)?,
|
||||
update_state: release_trust_state()?,
|
||||
release_recovery_state: crate::release_update::release_recovery_state(&app)?,
|
||||
automatic_upstream_updates: false,
|
||||
mcp_role: "DISCOVERY_RECOVERY_COMPATIBILITY_ONLY",
|
||||
terminal_link_protocol: "HOLOLAKE_TERMINAL_LINK/3",
|
||||
terminal_link_transport: if cfg!(windows) {
|
||||
"WINDOWS_USER_PRIVATE_NAMED_PIPE"
|
||||
} else {
|
||||
"MACOS_LINUX_USER_PRIVATE_UNIX_SOCKET"
|
||||
},
|
||||
environment_frame_policy: "REQUIRED_AFTER_CONNECT_RESUME_AND_BEFORE_MUTATION",
|
||||
})
|
||||
}
|
||||
Loading…
Reference in a new issue