feat(folder): unify workspace state streaming for tree and git panels
Introduce a shared workspace-state backend stream with snapshot/delta APIs for file tree and git changes. Migrate both aux panels to a common frontend workspace store with lifecycle-safe stream handling. Apply batched watch throttling, path-aware git refresh gating, no-op delta suppression, and bounded history compaction to improve runtime stability.
This commit is contained in:
@@ -42,6 +42,7 @@ import type {
|
||||
FilePreviewContent,
|
||||
FileEditContent,
|
||||
FileSaveResult,
|
||||
WorkspaceSnapshotResponse,
|
||||
GitLogResult,
|
||||
SystemLanguageSettings,
|
||||
SystemProxySettings,
|
||||
@@ -1267,12 +1268,26 @@ export async function getFileTree(
|
||||
})
|
||||
}
|
||||
|
||||
export async function startFileTreeWatch(rootPath: string): Promise<void> {
|
||||
return getTransport().call("start_file_tree_watch", { rootPath })
|
||||
export async function startWorkspaceStateStream(
|
||||
rootPath: string
|
||||
): Promise<WorkspaceSnapshotResponse> {
|
||||
return getTransport().call("start_workspace_state_stream", { rootPath })
|
||||
}
|
||||
|
||||
export async function stopFileTreeWatch(rootPath: string): Promise<void> {
|
||||
return getTransport().call("stop_file_tree_watch", { rootPath })
|
||||
export async function stopWorkspaceStateStream(
|
||||
rootPath: string
|
||||
): Promise<void> {
|
||||
return getTransport().call("stop_workspace_state_stream", { rootPath })
|
||||
}
|
||||
|
||||
export async function getWorkspaceSnapshot(
|
||||
rootPath: string,
|
||||
sinceSeq?: number
|
||||
): Promise<WorkspaceSnapshotResponse> {
|
||||
return getTransport().call("get_workspace_snapshot", {
|
||||
rootPath,
|
||||
sinceSeq: sinceSeq ?? null,
|
||||
})
|
||||
}
|
||||
|
||||
export async function readFileBase64(
|
||||
|
||||
Reference in New Issue
Block a user