mirror of
https://github.com/zed-industries/zed.git
synced 2026-05-23 21:05:08 +00:00
Adds streaming RPC forwarding to collab so guests can call `GetInitialGraphData` and `SearchCommits` against a remote host project. Previously these requests had no forwarder registered on the server and would fail when invoked by a guest. This mirrors the existing single-response forwarding pattern with new analogues: - `StreamResponse<R>` + `MessageContext::forward_request_stream` - `Server::add_request_stream_handler` - `forward_read_only_project_stream_request`, registered for both messages Also hardens both the unary and stream handlers to send `respond_with_error` when a handler returns `Ok` without sending/ending a response, so the client doesn't hang waiting for a reply that will never arrive. I added git graph collab integration tests for this as well. Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Closes #55954 Release Notes: - N/A
138 lines
4.7 KiB
TOML
138 lines
4.7 KiB
TOML
[package]
|
|
authors = ["Nathan Sobo <nathan@zed.dev>"]
|
|
default-run = "collab"
|
|
edition.workspace = true
|
|
name = "collab"
|
|
version = "0.44.0"
|
|
publish.workspace = true
|
|
license = "AGPL-3.0-or-later"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[[bin]]
|
|
name = "collab"
|
|
|
|
[features]
|
|
sqlite = ["sea-orm/sqlx-sqlite", "sqlx/sqlite"]
|
|
test-support = ["sqlite"]
|
|
|
|
[lib]
|
|
test = false
|
|
|
|
[[test]]
|
|
name = "collab_tests"
|
|
required-features = ["test-support"]
|
|
path = "tests/integration/collab_tests.rs"
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
async-trait.workspace = true
|
|
async-tungstenite = { workspace = true, features = ["tokio", "tokio-rustls-manual-roots" ] }
|
|
aws-config = { version = "1.1.5" }
|
|
aws-sdk-kinesis = "1.51.0"
|
|
aws-sdk-s3 = { version = "1.15.0" }
|
|
axum = { version = "0.6", features = ["json", "headers", "ws"] }
|
|
chrono.workspace = true
|
|
clock.workspace = true
|
|
cloud_api_types.workspace = true
|
|
collections.workspace = true
|
|
dashmap.workspace = true
|
|
envy = "0.4.2"
|
|
futures.workspace = true
|
|
gpui.workspace = true
|
|
hex.workspace = true
|
|
http_client.workspace = true
|
|
livekit_api.workspace = true
|
|
log.workspace = true
|
|
nanoid.workspace = true
|
|
parking_lot.workspace = true
|
|
prometheus = "0.14"
|
|
prost.workspace = true
|
|
rand.workspace = true
|
|
reqwest = { version = "0.11", features = ["json"] }
|
|
rpc.workspace = true
|
|
# sea-orm and sea-orm-macros versions must match exactly.
|
|
sea-orm = { version = "=1.1.10", features = ["sqlx-postgres", "postgres-array", "runtime-tokio-rustls", "with-uuid"] }
|
|
sea-orm-macros = "=1.1.10"
|
|
semver.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
sha2.workspace = true
|
|
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "json", "time", "uuid", "any"] }
|
|
strum.workspace = true
|
|
telemetry_events.workspace = true
|
|
text.workspace = true
|
|
time.workspace = true
|
|
tokio = { workspace = true, features = ["full"] }
|
|
toml.workspace = true
|
|
tower = "0.4"
|
|
tower-http = { workspace = true, features = ["trace"] }
|
|
tracing.workspace = true
|
|
tracing-subscriber = { version = "0.3.18", features = ["env-filter", "json", "registry", "tracing-log"] } # workaround for https://github.com/tokio-rs/tracing/issues/2927
|
|
util.workspace = true
|
|
uuid.workspace = true
|
|
|
|
[dev-dependencies]
|
|
agent = { workspace = true, features = ["test-support"] }
|
|
async-trait.workspace = true
|
|
async-channel.workspace = true
|
|
|
|
buffer_diff.workspace = true
|
|
call = { workspace = true, features = ["test-support"] }
|
|
channel.workspace = true
|
|
client = { workspace = true, features = ["test-support"] }
|
|
collab = { workspace = true, features = ["test-support"] }
|
|
collab_ui = { workspace = true, features = ["test-support"] }
|
|
collections = { workspace = true, features = ["test-support"] }
|
|
command_palette_hooks.workspace = true
|
|
|
|
ctor.workspace = true
|
|
dap = { workspace = true, features = ["test-support"] }
|
|
dap_adapters = { workspace = true, features = ["test-support"] }
|
|
|
|
debugger_ui = { workspace = true, features = ["test-support"] }
|
|
editor = { workspace = true, features = ["test-support"] }
|
|
extension.workspace = true
|
|
file_finder.workspace = true
|
|
fs = { workspace = true, features = ["test-support"] }
|
|
git = { workspace = true, features = ["test-support"] }
|
|
git_graph = { workspace = true, features = ["test-support"] }
|
|
git_hosting_providers.workspace = true
|
|
git_ui = { workspace = true, features = ["test-support"] }
|
|
gpui = { workspace = true, features = ["test-support"] }
|
|
gpui_tokio.workspace = true
|
|
|
|
indoc.workspace = true
|
|
language = { workspace = true, features = ["test-support"] }
|
|
language_model = { workspace = true, features = ["test-support"] }
|
|
livekit_client = { workspace = true, features = ["test-support"] }
|
|
lsp = { workspace = true, features = ["test-support"] }
|
|
menu.workspace = true
|
|
multi_buffer = { workspace = true, features = ["test-support"] }
|
|
node_runtime.workspace = true
|
|
notifications = { workspace = true, features = ["test-support"] }
|
|
pretty_assertions.workspace = true
|
|
project = { workspace = true, features = ["test-support"] }
|
|
prompt_store.workspace = true
|
|
recent_projects = { workspace = true, features = ["test-support"] }
|
|
release_channel.workspace = true
|
|
remote = { workspace = true, features = ["test-support"] }
|
|
remote_server.workspace = true
|
|
rpc = { workspace = true, features = ["test-support"] }
|
|
sea-orm = { version = "=1.1.10", features = ["sqlx-sqlite"] }
|
|
serde_json.workspace = true
|
|
session = { workspace = true, features = ["test-support"] }
|
|
settings = { workspace = true, features = ["test-support"] }
|
|
smol.workspace = true
|
|
sqlx = { version = "0.8", features = ["sqlite"] }
|
|
task.workspace = true
|
|
theme_settings = { workspace = true, features = ["test-support"] }
|
|
theme.workspace = true
|
|
|
|
unindent.workspace = true
|
|
util.workspace = true
|
|
workspace = { workspace = true, features = ["test-support"] }
|
|
worktree = { workspace = true, features = ["test-support"] }
|
|
zed_actions.workspace = true
|
|
zlog.workspace = true
|