diff --git a/.cargo/config.toml b/.cargo/config.toml
index 717c5e18c8d294bacf65207bc6b8ecb7dba1b152..8db58d238003c29df6dbc9fa733c6d5521340103 100644
--- a/.cargo/config.toml
+++ b/.cargo/config.toml
@@ -19,6 +19,8 @@ rustflags = [
"windows_slim_errors", # This cfg will reduce the size of `windows::core::Error` from 16 bytes to 4 bytes
"-C",
"target-feature=+crt-static", # This fixes the linking issue when compiling livekit on Windows
+ "-C",
+ "link-arg=-fuse-ld=lld",
]
[env]
diff --git a/.config/hakari.toml b/.config/hakari.toml
index bd742b33cdf5553346688c93580d3f5b0410216c..982542ca397e072d83af67608ea31a3415360a8e 100644
--- a/.config/hakari.toml
+++ b/.config/hakari.toml
@@ -33,7 +33,6 @@ workspace-members = [
"zed_emmet",
"zed_glsl",
"zed_html",
- "perplexity",
"zed_proto",
"zed_ruff",
"slash_commands_example",
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 39036ef5649e699ffda1636f304629fce6184371..ea352a9320827e25cfbf4f94dfcb28bdd9fba0d5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -21,6 +21,9 @@ env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
RUST_BACKTRACE: 1
+ DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
+ DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
+ ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
jobs:
job_spec:
@@ -52,9 +55,10 @@ jobs:
fi
# Specify anything which should skip full CI in this regex:
# - docs/
+ # - script/update_top_ranking_issues/
# - .github/ISSUE_TEMPLATE/
# - .github/workflows/ (except .github/workflows/ci.yml)
- SKIP_REGEX='^(docs/|\.github/(ISSUE_TEMPLATE|workflows/(?!ci)))'
+ SKIP_REGEX='^(docs/|script/update_top_ranking_issues/|\.github/(ISSUE_TEMPLATE|workflows/(?!ci)))'
if [[ $(git diff --name-only $COMPARE_REV ${{ github.sha }} | grep -vP "$SKIP_REGEX") ]]; then
echo "run_tests=true" >> $GITHUB_OUTPUT
else
@@ -65,13 +69,13 @@ jobs:
else
echo "run_docs=false" >> $GITHUB_OUTPUT
fi
- if [[ $(git diff --name-only $COMPARE_REV ${{ github.sha }} | grep '^Cargo.lock') ]]; then
+ if [[ $(git diff --name-only $COMPARE_REV ${{ github.sha }} | grep -P '^(Cargo.lock|script/.*licenses)') ]]; then
echo "run_license=true" >> $GITHUB_OUTPUT
else
echo "run_license=false" >> $GITHUB_OUTPUT
fi
NIX_REGEX='^(nix/|flake\.|Cargo\.|rust-toolchain.toml|\.cargo/config.toml)'
- if [[ $(git diff --name-only $COMPARE_REV ${{ github.sha }} | grep "$NIX_REGEX") ]]; then
+ if [[ $(git diff --name-only $COMPARE_REV ${{ github.sha }} | grep -P "$NIX_REGEX") ]]; then
echo "run_nix=true" >> $GITHUB_OUTPUT
else
echo "run_nix=false" >> $GITHUB_OUTPUT
@@ -390,7 +394,7 @@ jobs:
windows_tests:
timeout-minutes: 60
- name: (Windows) Run Tests
+ name: (Windows) Run Clippy and tests
needs: [job_spec]
if: |
github.repository_owner == 'zed-industries' &&
@@ -411,11 +415,10 @@ jobs:
with:
clean: false
- - name: Setup Cargo and Rustup
+ - name: Configure CI
run: |
- mkdir -p ${{ env.CARGO_HOME }} -ErrorAction Ignore
- cp ./.cargo/ci-config.toml ${{ env.CARGO_HOME }}/config.toml
- .\script\install-rustup.ps1
+ New-Item -ItemType Directory -Path "./../.cargo" -Force
+ Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
- name: cargo clippy
run: |
@@ -430,18 +433,9 @@ jobs:
- name: Limit target directory size
run: ./script/clear-target-dir-if-larger-than.ps1 250
- # - name: Check dev drive space
- # working-directory: ${{ env.ZED_WORKSPACE }}
- # # `setup-dev-driver.ps1` creates a 100GB drive, with CI taking up ~45GB of the drive.
- # run: ./script/exit-ci-if-dev-drive-is-full.ps1 95
-
- # Since the Windows runners are stateful, so we need to remove the config file to prevent potential bug.
- name: Clean CI config file
if: always()
- run: |
- if (Test-Path "${{ env.CARGO_HOME }}/config.toml") {
- Remove-Item -Path "${{ env.CARGO_HOME }}/config.toml" -Force
- }
+ run: Remove-Item -Recurse -Path "./../.cargo" -Force -ErrorAction SilentlyContinue
tests_pass:
name: Tests Pass
@@ -502,9 +496,6 @@ jobs:
APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
- ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
- DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
- DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
steps:
- name: Install Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
@@ -587,10 +578,6 @@ jobs:
startsWith(github.ref, 'refs/tags/v')
|| contains(github.event.pull_request.labels.*.name, 'run-bundling')
needs: [linux_tests]
- env:
- ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
- DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
- DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
steps:
- name: Checkout repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
@@ -644,10 +631,6 @@ jobs:
startsWith(github.ref, 'refs/tags/v')
|| contains(github.event.pull_request.labels.*.name, 'run-bundling')
needs: [linux_tests]
- env:
- ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
- DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
- DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
steps:
- name: Checkout repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
@@ -700,16 +683,12 @@ jobs:
|| contains(github.event.pull_request.labels.*.name, 'run-bundling')
needs: [linux_tests]
name: Build Zed on FreeBSD
- # env:
- # MYTOKEN : ${{ secrets.MYTOKEN }}
- # MYTOKEN2: "value2"
steps:
- uses: actions/checkout@v4
- name: Build FreeBSD remote-server
id: freebsd-build
uses: vmactions/freebsd-vm@c3ae29a132c8ef1924775414107a97cac042aad5 # v1.2.0
with:
- # envs: "MYTOKEN MYTOKEN2"
usesh: true
release: 13.5
copyback: true
@@ -763,12 +742,63 @@ jobs:
# excludes the final package to only cache dependencies
cachix-filter: "-zed-editor-[0-9.]*-nightly"
+ bundle-windows-x64:
+ timeout-minutes: 120
+ name: Create a Windows installer
+ runs-on: [self-hosted, Windows, X64]
+ if: ${{ startsWith(github.ref, 'refs/tags/v') || contains(github.event.pull_request.labels.*.name, 'run-bundling') }}
+ needs: [windows_tests]
+ env:
+ AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
+ AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
+ AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
+ ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
+ CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
+ ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
+ FILE_DIGEST: SHA256
+ TIMESTAMP_DIGEST: SHA256
+ TIMESTAMP_SERVER: "http://timestamp.acs.microsoft.com"
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ with:
+ clean: false
+
+ - name: Determine version and release channel
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ if: ${{ startsWith(github.ref, 'refs/tags/v') }}
+ run: |
+ # This exports RELEASE_CHANNEL into env (GITHUB_ENV)
+ script/determine-release-channel.ps1
+
+ - name: Build Zed installer
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ run: script/bundle-windows.ps1
+
+ - name: Upload installer (x86_64) to Workflow - zed (run-bundling)
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
+ if: contains(github.event.pull_request.labels.*.name, 'run-bundling')
+ with:
+ name: ZedEditorUserSetup-x64-${{ github.event.pull_request.head.sha || github.sha }}.exe
+ path: ${{ env.SETUP_PATH }}
+
+ - name: Upload Artifacts to release
+ uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
+ # Re-enable when we are ready to publish windows preview releases
+ if: false && ${{ !(contains(github.event.pull_request.labels.*.name, 'run-bundling')) && env.RELEASE_CHANNEL == 'preview' }} # upload only preview
+ with:
+ draft: true
+ prerelease: ${{ env.RELEASE_CHANNEL == 'preview' }}
+ files: ${{ env.SETUP_PATH }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
auto-release-preview:
name: Auto release preview
if: |
startsWith(github.ref, 'refs/tags/v')
&& endsWith(github.ref, '-pre') && !endsWith(github.ref, '.0-pre')
- needs: [bundle-mac, bundle-linux-x86_x64, bundle-linux-aarch64, freebsd]
+ needs: [bundle-mac, bundle-linux-x86_x64, bundle-linux-aarch64, bundle-windows-x64, freebsd]
runs-on:
- self-hosted
- bundle
diff --git a/.github/workflows/release_nightly.yml b/.github/workflows/release_nightly.yml
index d9287cb0826815a4b60c72389b950156da43df99..1b9669c5d527f568ea8cc6b3918feae92d8b44e0 100644
--- a/.github/workflows/release_nightly.yml
+++ b/.github/workflows/release_nightly.yml
@@ -12,6 +12,9 @@ env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
RUST_BACKTRACE: 1
+ ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
+ DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
+ DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
jobs:
style:
@@ -51,6 +54,32 @@ jobs:
- name: Run tests
uses: ./.github/actions/run_tests
+ windows-tests:
+ timeout-minutes: 60
+ name: Run tests on Windows
+ if: github.repository_owner == 'zed-industries'
+ runs-on: [self-hosted, Windows, X64]
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ with:
+ clean: false
+
+ - name: Configure CI
+ run: |
+ New-Item -ItemType Directory -Path "./../.cargo" -Force
+ Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
+
+ - name: Run tests
+ uses: ./.github/actions/run_tests_windows
+
+ - name: Limit target directory size
+ run: ./script/clear-target-dir-if-larger-than.ps1 1024
+
+ - name: Clean CI config file
+ if: always()
+ run: Remove-Item -Recurse -Path "./../.cargo" -Force -ErrorAction SilentlyContinue
+
bundle-mac:
timeout-minutes: 60
name: Create a macOS bundle
@@ -65,9 +94,6 @@ jobs:
APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
- DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
- DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
- ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
steps:
- name: Install Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
@@ -99,10 +125,6 @@ jobs:
runs-on:
- buildjet-16vcpu-ubuntu-2004
needs: tests
- env:
- DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
- DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
- ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
steps:
- name: Checkout repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
@@ -138,10 +160,6 @@ jobs:
runs-on:
- buildjet-16vcpu-ubuntu-2204-arm
needs: tests
- env:
- DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
- DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
- ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
steps:
- name: Checkout repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
@@ -172,9 +190,6 @@ jobs:
if: github.repository_owner == 'zed-industries'
runs-on: github-8vcpu-ubuntu-2404
needs: tests
- env:
- DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
- DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
name: Build Zed on FreeBSD
# env:
# MYTOKEN : ${{ secrets.MYTOKEN }}
@@ -213,10 +228,49 @@ jobs:
bundle-nix:
name: Build and cache Nix package
+ if: false
needs: tests
secrets: inherit
uses: ./.github/workflows/nix.yml
+ bundle-windows-x64:
+ timeout-minutes: 60
+ name: Create a Windows installer
+ if: github.repository_owner == 'zed-industries'
+ runs-on: [self-hosted, Windows, X64]
+ needs: windows-tests
+ env:
+ AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
+ AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
+ AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
+ ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
+ CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
+ ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
+ FILE_DIGEST: SHA256
+ TIMESTAMP_DIGEST: SHA256
+ TIMESTAMP_SERVER: "http://timestamp.acs.microsoft.com"
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ with:
+ clean: false
+
+ - name: Set release channel to nightly
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ run: |
+ $ErrorActionPreference = "Stop"
+ $version = git rev-parse --short HEAD
+ Write-Host "Publishing version: $version on release channel nightly"
+ "nightly" | Set-Content -Path "crates/zed/RELEASE_CHANNEL"
+
+ - name: Build Zed installer
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ run: script/bundle-windows.ps1
+
+ - name: Upload Zed Nightly
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ run: script/upload-nightly.ps1 windows
+
update-nightly-tag:
name: Update nightly tag
if: github.repository_owner == 'zed-industries'
@@ -225,6 +279,7 @@ jobs:
- bundle-mac
- bundle-linux-x86
- bundle-linux-arm
+ - bundle-windows-x64
steps:
- name: Checkout repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
diff --git a/.zed/debug.json b/.zed/debug.json
index 49b8f1a7a697303c383332f4ed704c844df22132..6f4e936c80f966a5882d3dc2cbc6d53d03e877c8 100644
--- a/.zed/debug.json
+++ b/.zed/debug.json
@@ -5,9 +5,7 @@
"build": {
"label": "Build Zed",
"command": "cargo",
- "args": [
- "build"
- ]
+ "args": ["build"]
}
},
{
@@ -16,9 +14,7 @@
"build": {
"label": "Build Zed",
"command": "cargo",
- "args": [
- "build"
- ]
+ "args": ["build"]
}
- },
+ }
]
diff --git a/.zed/settings.json b/.zed/settings.json
index 1ef6bc28f7dffb3fd7b25489f3f6ff0c1b0f74c9..68e05a426f2474cb663aa5ff843905f375170e0f 100644
--- a/.zed/settings.json
+++ b/.zed/settings.json
@@ -40,7 +40,7 @@
},
"file_types": {
"Dockerfile": ["Dockerfile*[!dockerignore]"],
- "JSONC": ["assets/**/*.json", "renovate.json"],
+ "JSONC": ["**/assets/**/*.json", "renovate.json"],
"Git Ignore": ["dockerignore"]
},
"hard_tabs": false,
diff --git a/Cargo.lock b/Cargo.lock
index d22f1e6795983e9aadf2695f03c84899e31a2b3c..0a5a1a01fe69e250a10c0fd26867d69d0337336f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2,6 +2,34 @@
# It is not intended for manual editing.
version = 4
+[[package]]
+name = "acp"
+version = "0.1.0"
+dependencies = [
+ "agent_servers",
+ "agentic-coding-protocol",
+ "anyhow",
+ "assistant_tool",
+ "async-pipe",
+ "buffer_diff",
+ "editor",
+ "env_logger 0.11.8",
+ "futures 0.3.31",
+ "gpui",
+ "indoc",
+ "itertools 0.14.0",
+ "language",
+ "markdown",
+ "project",
+ "serde_json",
+ "settings",
+ "smol",
+ "tempfile",
+ "ui",
+ "util",
+ "workspace-hack",
+]
+
[[package]]
name = "activity_indicator"
version = "0.1.0"
@@ -107,6 +135,24 @@ dependencies = [
"zstd",
]
+[[package]]
+name = "agent_servers"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "futures 0.3.31",
+ "gpui",
+ "paths",
+ "project",
+ "schemars",
+ "serde",
+ "settings",
+ "util",
+ "which 6.0.3",
+ "workspace-hack",
+]
+
[[package]]
name = "agent_settings"
version = "0.1.0"
@@ -130,8 +176,11 @@ dependencies = [
name = "agent_ui"
version = "0.1.0"
dependencies = [
+ "acp",
"agent",
+ "agent_servers",
"agent_settings",
+ "agentic-coding-protocol",
"anyhow",
"assistant_context",
"assistant_slash_command",
@@ -191,6 +240,7 @@ dependencies = [
"settings",
"smol",
"streaming_diff",
+ "task",
"telemetry",
"telemetry_events",
"terminal",
@@ -212,6 +262,24 @@ dependencies = [
"zed_llm_client",
]
+[[package]]
+name = "agentic-coding-protocol"
+version = "0.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e276b798eddd02562a339340a96919d90bbfcf78de118fdddc932524646fac7"
+dependencies = [
+ "anyhow",
+ "chrono",
+ "derive_more 2.0.1",
+ "futures 0.3.31",
+ "log",
+ "parking_lot",
+ "schemars",
+ "semver",
+ "serde",
+ "serde_json",
+]
+
[[package]]
name = "ahash"
version = "0.7.8"
@@ -538,6 +606,8 @@ dependencies = [
"anyhow",
"futures 0.3.31",
"gpui",
+ "net",
+ "parking_lot",
"smol",
"tempfile",
"util",
@@ -608,7 +678,7 @@ dependencies = [
"anyhow",
"async-trait",
"collections",
- "derive_more",
+ "derive_more 0.99.19",
"extension",
"futures 0.3.31",
"gpui",
@@ -671,7 +741,7 @@ dependencies = [
"clock",
"collections",
"ctor",
- "derive_more",
+ "derive_more 0.99.19",
"futures 0.3.31",
"gpui",
"icons",
@@ -707,7 +777,7 @@ dependencies = [
"clock",
"collections",
"component",
- "derive_more",
+ "derive_more 0.99.19",
"editor",
"feature_flags",
"fs",
@@ -1164,7 +1234,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"collections",
- "derive_more",
+ "derive_more 0.99.19",
"gpui",
"parking_lot",
"rodio",
@@ -2857,7 +2927,7 @@ dependencies = [
"cocoa 0.26.0",
"collections",
"credentials_provider",
- "derive_more",
+ "derive_more 0.99.19",
"feature_flags",
"fs",
"futures 0.3.31",
@@ -3041,10 +3111,11 @@ dependencies = [
"context_server",
"ctor",
"dap",
+ "dap-types",
"dap_adapters",
"dashmap 6.1.0",
"debugger_ui",
- "derive_more",
+ "derive_more 0.99.19",
"editor",
"envy",
"extension",
@@ -3249,7 +3320,7 @@ name = "command_palette_hooks"
version = "0.1.0"
dependencies = [
"collections",
- "derive_more",
+ "derive_more 0.99.19",
"gpui",
"workspace-hack",
]
@@ -4324,11 +4395,15 @@ dependencies = [
"futures 0.3.31",
"fuzzy",
"gpui",
+ "hex",
+ "indoc",
"itertools 0.14.0",
"language",
"log",
"menu",
+ "notifications",
"parking_lot",
+ "parse_int",
"paths",
"picker",
"pretty_assertions",
@@ -4344,6 +4419,7 @@ dependencies = [
"tasks_ui",
"telemetry",
"terminal_view",
+ "text",
"theme",
"tree-sitter",
"tree-sitter-go",
@@ -4451,6 +4527,27 @@ dependencies = [
"syn 2.0.101",
]
+[[package]]
+name = "derive_more"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678"
+dependencies = [
+ "derive_more-impl",
+]
+
+[[package]]
+name = "derive_more-impl"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.101",
+ "unicode-xid",
+]
+
[[package]]
name = "derive_refineable"
version = "0.1.0"
@@ -4830,6 +4927,7 @@ dependencies = [
"tree-sitter-python",
"tree-sitter-rust",
"tree-sitter-typescript",
+ "tree-sitter-yaml",
"ui",
"unicode-script",
"unicode-segmentation",
@@ -5186,6 +5284,16 @@ dependencies = [
"libc",
]
+[[package]]
+name = "explorer_command_injector"
+version = "0.1.0"
+dependencies = [
+ "windows 0.61.1",
+ "windows-core 0.61.0",
+ "windows-registry 0.5.1",
+ "workspace-hack",
+]
+
[[package]]
name = "exr"
version = "1.73.0"
@@ -6138,7 +6246,7 @@ dependencies = [
"askpass",
"async-trait",
"collections",
- "derive_more",
+ "derive_more 0.99.19",
"futures 0.3.31",
"git2",
"gpui",
@@ -7155,7 +7263,7 @@ dependencies = [
"core-video",
"cosmic-text",
"ctor",
- "derive_more",
+ "derive_more 0.99.19",
"embed-resource",
"env_logger 0.11.8",
"etagere",
@@ -7701,7 +7809,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"bytes 1.10.1",
- "derive_more",
+ "derive_more 0.99.19",
"futures 0.3.31",
"http 1.3.1",
"log",
@@ -8139,7 +8247,7 @@ dependencies = [
"async-trait",
"cargo_metadata",
"collections",
- "derive_more",
+ "derive_more 0.99.19",
"extension",
"fs",
"futures 0.3.31",
@@ -8898,6 +9006,7 @@ dependencies = [
"gpui",
"language",
"lsp",
+ "project",
"serde",
"serde_json",
"util",
@@ -9022,7 +9131,6 @@ dependencies = [
"itertools 0.14.0",
"language",
"lsp",
- "picker",
"project",
"release_channel",
"serde_json",
@@ -9577,12 +9685,11 @@ dependencies = [
[[package]]
name = "lsp-types"
version = "0.95.1"
-source = "git+https://github.com/zed-industries/lsp-types?rev=c9c189f1c5dd53c624a419ce35bc77ad6a908d18#c9c189f1c5dd53c624a419ce35bc77ad6a908d18"
+source = "git+https://github.com/zed-industries/lsp-types?rev=6add7052b598ea1f40f7e8913622c3958b009b60#6add7052b598ea1f40f7e8913622c3958b009b60"
dependencies = [
"bitflags 1.3.2",
"serde",
"serde_json",
- "serde_repr",
"url",
]
@@ -10229,6 +10336,18 @@ dependencies = [
"jni-sys",
]
+[[package]]
+name = "net"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-io",
+ "smol",
+ "tempfile",
+ "windows 0.61.1",
+ "workspace-hack",
+]
+
[[package]]
name = "new_debug_unreachable"
version = "1.0.6"
@@ -11182,6 +11301,15 @@ dependencies = [
"windows-targets 0.52.6",
]
+[[package]]
+name = "parse_int"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c464266693329dd5a8715098c7f86e6c5fd5d985018b8318f53d9c6c2b21a31"
+dependencies = [
+ "num-traits",
+]
+
[[package]]
name = "partial-json-fixer"
version = "0.5.3"
@@ -11334,14 +11462,6 @@ version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
-[[package]]
-name = "perplexity"
-version = "0.1.0"
-dependencies = [
- "serde",
- "zed_extension_api 0.6.0",
-]
-
[[package]]
name = "pest"
version = "2.8.0"
@@ -12233,6 +12353,7 @@ dependencies = [
"anyhow",
"askpass",
"async-trait",
+ "base64 0.22.1",
"buffer_diff",
"circular-buffer",
"client",
@@ -12278,6 +12399,7 @@ dependencies = [
"sha2",
"shellexpand 2.1.2",
"shlex",
+ "smallvec",
"smol",
"snippet",
"snippet_provider",
@@ -12533,6 +12655,7 @@ dependencies = [
"prost 0.9.0",
"prost-build 0.9.0",
"serde",
+ "typed-path",
"workspace-hack",
]
@@ -13196,6 +13319,7 @@ dependencies = [
"fs",
"futures 0.3.31",
"git",
+ "git2",
"git_hosting_providers",
"gpui",
"gpui_tokio",
@@ -14010,7 +14134,7 @@ dependencies = [
[[package]]
name = "scap"
version = "0.0.8"
-source = "git+https://github.com/zed-industries/scap?rev=08f0a01417505cc0990b9931a37e5120db92e0d0#08f0a01417505cc0990b9931a37e5120db92e0d0"
+source = "git+https://github.com/zed-industries/scap?rev=270538dc780f5240723233ff901e1054641ed318#270538dc780f5240723233ff901e1054641ed318"
dependencies = [
"anyhow",
"cocoa 0.25.0",
@@ -14057,10 +14181,12 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe8c9d1c68d67dd9f97ecbc6f932b60eb289c5dbddd8aa1405484a8fd2fcd984"
dependencies = [
+ "chrono",
"dyn-clone",
"indexmap",
"ref-cast",
"schemars_derive",
+ "semver",
"serde",
"serde_json",
]
@@ -14582,15 +14708,19 @@ dependencies = [
"language",
"log",
"menu",
+ "notifications",
"paths",
"project",
"schemars",
"search",
"serde",
+ "serde_json",
"settings",
"theme",
"tree-sitter-json",
+ "tree-sitter-rust",
"ui",
+ "ui_input",
"util",
"workspace",
"workspace-hack",
@@ -16018,7 +16148,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"collections",
- "derive_more",
+ "derive_more 0.99.19",
"fs",
"futures 0.3.31",
"gpui",
@@ -17033,6 +17163,12 @@ dependencies = [
"utf-8",
]
+[[package]]
+name = "typed-path"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c462d18470a2857aa657d338af5fa67170bb48bcc80a296710ce3b0802a32566"
+
[[package]]
name = "typeid"
version = "1.0.3"
@@ -17346,6 +17482,7 @@ dependencies = [
"rand 0.8.5",
"regex",
"rust-embed",
+ "schemars",
"serde",
"serde_json",
"serde_json_lenient",
@@ -18355,7 +18492,6 @@ dependencies = [
"language",
"picker",
"project",
- "schemars",
"serde",
"settings",
"telemetry",
@@ -19550,6 +19686,8 @@ dependencies = [
"rustix 1.0.7",
"rustls 0.23.26",
"rustls-webpki 0.103.1",
+ "scap",
+ "schemars",
"scopeguard",
"sea-orm",
"sea-query-binder",
@@ -19596,7 +19734,9 @@ dependencies = [
"wasmtime-cranelift",
"wasmtime-environ",
"winapi",
+ "windows 0.61.1",
"windows-core 0.61.0",
+ "windows-future",
"windows-numerics",
"windows-sys 0.48.0",
"windows-sys 0.52.0",
@@ -19943,10 +20083,11 @@ dependencies = [
[[package]]
name = "zed"
-version = "0.195.0"
+version = "0.196.0"
dependencies = [
"activity_indicator",
"agent",
+ "agent_servers",
"agent_settings",
"agent_ui",
"anyhow",
@@ -20141,9 +20282,9 @@ dependencies = [
[[package]]
name = "zed_llm_client"
-version = "0.8.5"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c740e29260b8797ad252c202ea09a255b3cbc13f30faaf92fb6b2490336106e0"
+checksum = "6607f74dee2a18a9ce0f091844944a0e59881359ab62e0768fb0618f55d4c1dc"
dependencies = [
"anyhow",
"serde",
diff --git a/Cargo.toml b/Cargo.toml
index 1d9cf31c1498df933c2e8134c97d6b96f0ded628..5403f279c80666f37e3d837e200ba0ba0b100a9f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -2,9 +2,11 @@
resolver = "2"
members = [
"crates/activity_indicator",
+ "crates/acp",
"crates/agent_ui",
"crates/agent",
"crates/agent_settings",
+ "crates/agent_servers",
"crates/anthropic",
"crates/askpass",
"crates/assets",
@@ -45,6 +47,7 @@ members = [
"crates/diagnostics",
"crates/docs_preprocessor",
"crates/editor",
+ "crates/explorer_command_injector",
"crates/eval",
"crates/extension",
"crates/extension_api",
@@ -99,6 +102,7 @@ members = [
"crates/migrator",
"crates/mistral",
"crates/multi_buffer",
+ "crates/net",
"crates/node_runtime",
"crates/notifications",
"crates/ollama",
@@ -188,7 +192,6 @@ members = [
"extensions/emmet",
"extensions/glsl",
"extensions/html",
- "extensions/perplexity",
"extensions/proto",
"extensions/ruff",
"extensions/slash-commands-example",
@@ -215,10 +218,12 @@ edition = "2024"
# Workspace member crates
#
-activity_indicator = { path = "crates/activity_indicator" }
+acp = { path = "crates/acp" }
agent = { path = "crates/agent" }
+activity_indicator = { path = "crates/activity_indicator" }
agent_ui = { path = "crates/agent_ui" }
agent_settings = { path = "crates/agent_settings" }
+agent_servers = { path = "crates/agent_servers" }
ai = { path = "crates/ai" }
anthropic = { path = "crates/anthropic" }
askpass = { path = "crates/askpass" }
@@ -276,7 +281,6 @@ go_to_line = { path = "crates/go_to_line" }
google_ai = { path = "crates/google_ai" }
gpui = { path = "crates/gpui", default-features = false, features = [
"http_client",
- "screen-capture",
] }
gpui_macros = { path = "crates/gpui_macros" }
gpui_tokio = { path = "crates/gpui_tokio" }
@@ -312,6 +316,7 @@ menu = { path = "crates/menu" }
migrator = { path = "crates/migrator" }
mistral = { path = "crates/mistral" }
multi_buffer = { path = "crates/multi_buffer" }
+net = { path = "crates/net" }
node_runtime = { path = "crates/node_runtime" }
notifications = { path = "crates/notifications" }
ollama = { path = "crates/ollama" }
@@ -399,6 +404,7 @@ zlog_settings = { path = "crates/zlog_settings" }
# External crates
#
+agentic-coding-protocol = { version = "0.0.9" }
aho-corasick = "1.1"
alacritty_terminal = { git = "https://github.com/zed-industries/alacritty.git", branch = "add-hush-login-flag" }
any_vec = "0.14"
@@ -486,7 +492,7 @@ libc = "0.2"
libsqlite3-sys = { version = "0.30.1", features = ["bundled"] }
linkify = "0.10.0"
log = { version = "0.4.16", features = ["kv_unstable_serde", "serde"] }
-lsp-types = { git = "https://github.com/zed-industries/lsp-types", rev = "c9c189f1c5dd53c624a419ce35bc77ad6a908d18" }
+lsp-types = { git = "https://github.com/zed-industries/lsp-types", rev = "6add7052b598ea1f40f7e8913622c3958b009b60" }
markup5ever_rcdom = "0.3.0"
metal = "0.29"
moka = { version = "0.12.10", features = ["sync"] }
@@ -501,6 +507,7 @@ ordered-float = "2.1.1"
palette = { version = "0.7.5", default-features = false, features = ["std"] }
parking_lot = "0.12.1"
partial-json-fixer = "0.5.3"
+parse_int = "0.9"
pathdiff = "0.2"
pet = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
pet-conda = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
@@ -540,7 +547,7 @@ rustc-demangle = "0.1.23"
rustc-hash = "2.1.0"
rustls = { version = "0.23.26" }
rustls-platform-verifier = "0.5.0"
-scap = { git = "https://github.com/zed-industries/scap", rev = "08f0a01417505cc0990b9931a37e5120db92e0d0", default-features = false }
+scap = { git = "https://github.com/zed-industries/scap", rev = "270538dc780f5240723233ff901e1054641ed318", default-features = false }
schemars = { version = "1.0", features = ["indexmap2"] }
semver = "1.0"
serde = { version = "1.0", features = ["derive", "rc"] }
@@ -625,8 +632,10 @@ wasmtime = { version = "29", default-features = false, features = [
] }
wasmtime-wasi = "29"
which = "6.0.0"
+windows-core = "0.61"
+wit-component = "0.221"
workspace-hack = "0.1.0"
-zed_llm_client = "= 0.8.5"
+zed_llm_client = "= 0.8.6"
zstd = "0.11"
[workspace.dependencies.async-stripe]
@@ -661,6 +670,7 @@ features = [
"Win32_Graphics_Gdi",
"Win32_Graphics_Imaging",
"Win32_Graphics_Imaging_D2D",
+ "Win32_Networking_WinSock",
"Win32_Security",
"Win32_Security_Credentials",
"Win32_Storage_FileSystem",
diff --git a/assets/icons/ai_gemini.svg b/assets/icons/ai_gemini.svg
new file mode 100644
index 0000000000000000000000000000000000000000..60197dc4adcf912128756b32ead43b8b1da61222
--- /dev/null
+++ b/assets/icons/ai_gemini.svg
@@ -0,0 +1 @@
+
diff --git a/assets/icons/bolt_filled_alt.svg b/assets/icons/bolt_filled_alt.svg
index 3c8938736279684981b03d168b11272d4e196d24..141e1c5f577bbd9bdc661de6629f863bfc760de9 100644
--- a/assets/icons/bolt_filled_alt.svg
+++ b/assets/icons/bolt_filled_alt.svg
@@ -1,3 +1,3 @@
diff --git a/assets/icons/clipboard.svg b/assets/icons/clipboard.svg
deleted file mode 100644
index 5c8842f3b7898cc59386679d572abb73378d4332..0000000000000000000000000000000000000000
--- a/assets/icons/clipboard.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/assets/icons/debug.svg b/assets/icons/debug.svg
index 8cea0c460402fbb36769aa0aaadab9f80513d101..ff51e42b1a9483f4f6d0382d67aa34bd3405f1ff 100644
--- a/assets/icons/debug.svg
+++ b/assets/icons/debug.svg
@@ -1 +1,12 @@
-
+
diff --git a/assets/icons/file_delete.svg b/assets/icons/file_delete.svg
deleted file mode 100644
index b84f79958f39dd205742e945c44859a6f1000881..0000000000000000000000000000000000000000
--- a/assets/icons/file_delete.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/assets/icons/file_tree.svg b/assets/icons/file_tree.svg
index 4c921b135183b7b58126f16c68f39aec22677285..a140cd70b12d1be180d2c683d59400212969c47a 100644
--- a/assets/icons/file_tree.svg
+++ b/assets/icons/file_tree.svg
@@ -1,5 +1,5 @@
diff --git a/assets/icons/git_branch_small.svg b/assets/icons/git_branch_small.svg
index d23fc176ac797fff35c6c9d35176d5e03c6170fe..22832d6fedfc5221c31c81eae497f8172b59c21e 100644
--- a/assets/icons/git_branch_small.svg
+++ b/assets/icons/git_branch_small.svg
@@ -1,6 +1,7 @@
-