zed/crates
Nathan Sobo fc64843dd5
Enhance HTTP API for extensions (#16067)
# HTTP Client Improvements for Extension API

This PR enhances the HTTP client functionality in the Zed extension API,
providing more control over requests and allowing for streaming
responses.

## Key Changes

1. Extended `HttpRequest` struct:
   - Added `method` field to specify HTTP method
   - Added `headers` field for custom headers
   - Added optional `body` field for request payload

2. Introduced `HttpMethod` enum for supported HTTP methods

3. Updated `HttpResponse` struct:
   - Added `headers` field to access response headers
- Changed `body` type from `String` to `Vec<u8>` for binary data support

4. Added streaming support:
   - New `fetch_stream` function to get a response stream
   - Introduced `HttpResponseStream` resource for chunked reading

5. Updated internal implementations to support these new features

6. Modified the Gleam extension to use the new API structure

## Motivation

These changes provide extension developers with more flexibility and
control over HTTP requests. The streaming support is particularly useful
for handling large responses efficiently or ideally streaming into the
UI.

## Testing

- [x] Updated existing tests
- [ ] Added new tests for streaming functionality

## Next Steps

- Consider adding more comprehensive examples in the documentation
- Evaluate performance impact of streaming for large responses

Please review and let me know if any adjustments are needed.

Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
2024-08-12 10:36:49 -04:00
..
activity_indicator Start on adding support for editing via the assistant panel (#14795) 2024-07-19 11:13:15 +02:00
anthropic Capture telemetry data on per-user monthly LLM spending (#16050) 2024-08-09 16:38:37 -07:00
assets Allow prompt templates to be overridden in the zed configuration directory (#15887) 2024-08-06 19:30:48 -06:00
assistant Update provider logos (#16115) 2024-08-12 09:55:00 -04:00
assistant_slash_command assistant: Normalize line endings for prompts loaded from the prompt library (#15708) 2024-08-02 18:13:17 -04:00
audio Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
auto_update Add is_staff and destination to download events (#15445) 2024-07-29 14:21:29 -04:00
breadcrumbs breadcrumbs: Use early return in set_active_pane_item (#14691) 2024-07-17 18:58:44 -04:00
call chore: Fix clippy violations from Cargo.toml (#15216) 2024-07-25 20:22:01 +02:00
channel Update http crate name (#15041) 2024-07-23 15:01:05 -07:00
cli Change PathLikeWithPosition<P> into a non-generic type and replace ad-hoc Windows path parsing (#15373) 2024-07-30 16:39:33 +03:00
client Show current plan in user menu (#15513) 2024-07-30 17:38:16 -04:00
clock Lay the groundwork for collaborating on assistant panel (#13991) 2024-07-10 17:36:22 +02:00
collab collab: Remove LLM completions over RPC (#16114) 2024-08-12 10:08:56 -04:00
collab_ui Feature/fallback fonts (#15306) 2024-07-26 16:42:21 -07:00
collections gpui: Add SVG rendering to img element and generic asset cache (#9931) 2024-03-29 17:09:49 -07:00
command_palette vim: Support ranges in command (#15985) 2024-08-08 21:47:27 +01:00
command_palette_hooks Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
copilot copilot: Colocate copilot_chat_config_path with the rest of the Copilot code (#15703) 2024-08-02 15:46:06 -04:00
db paths: Replace lazy_static! with OnceLock (#13213) 2024-06-18 12:22:37 -04:00
dev_server_projects remoting: Allow Add/Remove remote folder (#14532) 2024-07-16 12:01:59 -06:00
diagnostics assistant: Polish /workflow and steps UI (#15936) 2024-08-08 15:46:33 +02:00
editor Fix vertical_scroll_margin not being capped for large vertical_scroll_margin values (#15473) 2024-08-09 09:35:57 +02:00
extension Enhance HTTP API for extensions (#16067) 2024-08-12 10:36:49 -04:00
extension_api Enhance HTTP API for extensions (#16067) 2024-08-12 10:36:49 -04:00
extension_cli Provide user agent when performing HTTP requests (#15470) 2024-07-30 11:12:37 +02:00
extensions_ui Feature/fallback fonts (#15306) 2024-07-26 16:42:21 -07:00
feature_flags Clean up inline assist editor rendering (#15536) 2024-07-31 17:43:08 +02:00
feedback Update http crate name (#15041) 2024-07-23 15:01:05 -07:00
file_finder Change PathLikeWithPosition<P> into a non-generic type and replace ad-hoc Windows path parsing (#15373) 2024-07-30 16:39:33 +03:00
file_icons chore: Clean up allocs around project panel (#15422) 2024-07-29 14:21:41 +02:00
fs zed: Mark restored buffers as conflicted if file changed on disk between store & restore (#15207) 2024-07-25 18:04:47 +02:00
fsevent Retain run loop (#11241) 2024-04-30 23:31:59 -06:00
fuzzy chore: Bump Rust version to 1.80 (#15186) 2024-07-25 22:48:42 +02:00
git Update http crate name (#15041) 2024-07-23 15:01:05 -07:00
git_hosting_providers Update http crate name (#15041) 2024-07-23 15:01:05 -07:00
go_to_line Handle buffer diff base updates and file renames properly for SSH projects (#14989) 2024-07-23 11:32:37 -07:00
google_ai Authorize access to language model providers based on country (#15859) 2024-08-06 11:49:04 -04:00
gpui Fix corner radius when doing rounded_full (#15663) 2024-08-12 15:24:32 +02:00
gpui_macros Use US English spelling of "behavior" and "customize" (#15117) 2024-07-24 16:36:01 -04:00
headless remoting: Allow Add/Remove remote folder (#14532) 2024-07-16 12:01:59 -06:00
html_to_markdown Publish html_to_markdown (#13718) 2024-07-01 17:18:58 -04:00
http_client Introduce a separate backend service for LLM calls (#15831) 2024-08-05 20:26:21 -04:00
image_viewer Add text_color helper for tab contents (#14737) 2024-07-18 09:27:05 -04:00
indexed_docs Update http crate name (#15041) 2024-07-23 15:01:05 -07:00
inline_completion_button inline_completion_button: Do some cleanup (#15849) 2024-08-06 08:55:27 -04:00
install_cli Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
journal Add the ability for extensions to provide language settings (#10296) 2024-04-08 19:17:12 -04:00
language Improve workflow step pruning and symbol similarity matching (#16036) 2024-08-12 11:09:07 +02:00
language_model Always stream completions through the LLM service (#16113) 2024-08-12 09:33:24 -04:00
language_selector Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
language_tools Add GitHub Copilot Chat Support (#14842) 2024-07-30 09:32:58 +02:00
languages Docs Party 2024 (#15876) 2024-08-09 13:37:54 -04:00
live_kit_client chore: Fix clippy violations from Cargo.toml (#15216) 2024-07-25 20:22:01 +02:00
live_kit_server live_kit_server: Re-remove protocol submodule (#15317) 2024-07-26 21:10:56 -04:00
lsp chore: Bump Rust version to 1.80 (#15186) 2024-07-25 22:48:42 +02:00
markdown Selectable diagnostic popover text (#14518) 2024-07-28 23:13:13 -06:00
markdown_preview markdown preview: Detect language of buffer correctly (#15961) 2024-08-08 11:53:37 +02:00
media linux: Better GPU debugging (#14706) 2024-07-23 09:56:45 -06:00
menu open picker (#14524) 2024-07-15 17:04:15 -06:00
multi_buffer Open workflow step editors as preview tabs (#15928) 2024-08-07 19:33:58 -06:00
node_runtime windows: Fix eslint installation (#15331) 2024-07-27 10:24:05 -04:00
notifications Remove never-used client parameter from message handler functions (#13406) 2024-06-22 16:07:36 -07:00
ollama assistant: Use tools in other providers (#15803) 2024-08-06 15:45:47 +02:00
open_ai Authorize access to language model providers based on country (#15859) 2024-08-06 11:49:04 -04:00
outline Handle buffer diff base updates and file renames properly for SSH projects (#14989) 2024-07-23 11:32:37 -07:00
outline_panel Use US English spelling of "behavior" and "customize" (#15117) 2024-07-24 16:36:01 -04:00
paths Introduce prompt override script and adjust names (#16094) 2024-08-11 17:21:17 -06:00
picker vim remap 2 (#15193) 2024-07-25 09:00:53 -06:00
prettier Lookup prettier more leniently (#14403) 2024-07-13 21:59:14 +03:00
project lsp: Support Goto Declaration (#15785) 2024-08-06 11:20:51 +02:00
project_panel Fix symlink icon in the project panel (#15537) 2024-07-31 18:58:07 -03:00
project_symbols Start on adding support for editing via the assistant panel (#14795) 2024-07-19 11:13:15 +02:00
proto collab: Remove LLM completions over RPC (#16114) 2024-08-12 10:08:56 -04:00
quick_action_bar repl: Add ctrl-alt-enter binding to run in place (#15743) 2024-08-03 10:27:05 -07:00
recent_projects recent_project: Fix overflow sub (#15965) 2024-08-08 15:58:59 +02:00
refineable Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
release_channel auto-updates: Do not poll for updates on dev channel (#13311) 2024-06-20 15:00:54 +02:00
remote SSH remoting: terminal & tasks (#15321) 2024-07-28 22:45:00 -06:00
remote_server Run clippy for Windows (#15318) 2024-07-26 21:38:34 -04:00
repl repl: Set the default lines ✖️ columns for the REPL to 32x128 (#16061) 2024-08-10 10:28:56 -07:00
rich_text chore: Bump Rust version to 1.80 (#15186) 2024-07-25 22:48:42 +02:00
rope Skip over folded regions when iterating over multibuffer chunks (#15646) 2024-08-02 19:51:26 +02:00
rpc Apply rate limits in LLM service (#15997) 2024-08-08 15:46:33 -07:00
search Add tooltip for toggling filters (#15879) 2024-08-06 15:51:53 -04:00
semantic_index Allow customization of the model used for tool calling (#15479) 2024-07-30 16:18:53 +02:00
semantic_version Extract SemanticVersion into its own crate (#9956) 2024-03-29 12:11:57 -04:00
session zed: Persist window stack order across restarts (#15419) 2024-07-29 17:05:56 +02:00
settings keymap: Show error notification when keymap is invalid (#15977) 2024-08-08 14:11:46 +02:00
settings_ui ui: Apply elevation outside SettingsContainer (#15346) 2024-07-27 14:00:03 -04:00
snippet Correct escaping in snippets (#14912) 2024-07-22 00:57:34 +02:00
snippet_provider extensions: Add support for snippets provided by extensions (#14020) 2024-07-10 09:40:50 +02:00
sqlez Remove extraneous Cargo.lock files (#14001) 2024-07-09 12:15:34 -04:00
sqlez_macros Dynamicer builds (#13074) 2024-06-21 16:32:32 -07:00
story stories: Get OverflowScrollStory to scroll again (#15982) 2024-08-09 12:32:26 +02:00
storybook Docs Party 2024 (#15876) 2024-08-09 13:37:54 -04:00
sum_tree Restore "Avoid buffering line content to compute indent guides" (#15284) 2024-07-28 10:52:39 +02:00
supermaven Update http crate name (#15041) 2024-07-23 15:01:05 -07:00
supermaven_api Update http crate name (#15041) 2024-07-23 15:01:05 -07:00
tab_switcher Send pane removeItem event before removing the item (#15541) 2024-07-31 08:48:19 -07:00
task SSH remoting: terminal & tasks (#15321) 2024-07-28 22:45:00 -06:00
tasks_ui tasks: Use environment variables from project (#15266) 2024-07-26 18:19:53 +02:00
telemetry_events Add repl events (#15259) 2024-07-26 03:31:41 -04:00
terminal Support MSbuild row-column format in PathWithPosition (#15589) 2024-08-09 09:21:56 +02:00
terminal_view assistant: Tweak tab bar layout (#15901) 2024-08-07 13:46:59 +02:00
text Restructure workflow step resolution and fix inserting newlines (#15720) 2024-08-05 09:18:06 +02:00
theme Docs Party 2024 (#15876) 2024-08-09 13:37:54 -04:00
theme_importer Hoist strum to workspace level (#15243) 2024-07-25 21:30:48 -04:00
theme_selector settings_ui: Add theme settings controls (#15115) 2024-07-24 16:25:52 -04:00
time_format Inline git blame (#10398) 2024-04-15 14:21:52 +02:00
title_bar Show current plan in user menu (#15513) 2024-07-30 17:38:16 -04:00
ui assistant: Polish /workflow and steps UI (#15936) 2024-08-08 15:46:33 +02:00
ui_input Rename ui_text_field crate to ui_input (#13949) 2024-07-08 17:05:30 -04:00
util Support MSbuild row-column format in PathWithPosition (#15589) 2024-08-09 09:21:56 +02:00
vcs_menu Adjust list item & pickers spacing (#14250) 2024-07-15 10:23:18 -03:00
vim Docs Party 2024 (#15876) 2024-08-09 13:37:54 -04:00
welcome assistant: Overhaul provider infrastructure (#14929) 2024-07-23 19:48:41 +02:00
workspace Accept finished inline transformations only if the user saves manually (#16112) 2024-08-12 15:16:55 +02:00
worktree assistant: Report all worktree entries in /file completions (#15617) 2024-08-01 16:09:53 +02:00
zed keymap: Show error notification when keymap is invalid (#15977) 2024-08-08 14:11:46 +02:00
zed_actions Show current plan in user menu (#15513) 2024-07-30 17:38:16 -04:00