All checks were successful
build-prerelease / Resolve version stamps (push) Successful in 37s
CI / Format (push) Successful in 41s
CI / Clippy (push) Successful in 2m32s
build-prerelease / Build cortex binary (push) Successful in 4m45s
CI / Test (push) Successful in 5m52s
build-prerelease / Build neuron-blackwell (push) Successful in 5m59s
CI / Build cortex SRPM (push) Has been skipped
CI / Build neuron SRPM (push) Has been skipped
CI / Publish cortex to COPR (push) Has been skipped
CI / Publish neuron to COPR (push) Has been skipped
CI / Bump version in source (push) Has been skipped
build-prerelease / Build neuron-ampere (push) Successful in 7m21s
build-prerelease / Package cortex RPM (push) Successful in 1m21s
build-prerelease / Build neuron-ada (push) Successful in 4m54s
build-prerelease / Package helexa-neuron-ampere RPM (push) Successful in 2m54s
build-prerelease / Package helexa-neuron-ada RPM (push) Successful in 2m58s
build-prerelease / Package helexa-neuron-blackwell RPM (push) Successful in 3m48s
build-prerelease / Publish to rpm.lair.cafe (unstable) (push) Successful in 1m3s
Stage 4. Zed's model dropdown now lists every model from every configured endpoint, and switching it routes the next prompt to a new endpoint+model. - Enable `unstable_session_model` on the agent-client-protocol dep so SessionModelState / SetSessionModelRequest / ModelInfo are available. - Agent::new becomes async and calls Provider::list_models on every provider at startup; per-endpoint failures warn-and-skip instead of aborting the agent. - With a single endpoint configured, model ids appear bare; with multiple endpoints every id carries the `endpoint:` prefix so the picker is unambiguous and parse_model_selector routes correctly. - NewSessionResponse and LoadSessionResponse attach SessionModelState with the session's current model id + the aggregated catalogue. - session/set_model: validates the requested model id against resolve_provider, mutates session.model_id, and persists so the on-disk transcript reflects the new model. Three new aggregate_models tests cover the prefixing rule (bare vs multi-endpoint) and warn-and-skip on a failing endpoint. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
49 lines
2.0 KiB
TOML
49 lines
2.0 KiB
TOML
[package]
|
|
name = "helexa-acp"
|
|
version = "0.1.16"
|
|
edition = "2024"
|
|
license = "Apache-2.0"
|
|
repository = "https://git.lair.cafe/helexa/cortex"
|
|
description = """
|
|
Agent Client Protocol bridge for the helexa self-hosted LLM stack.
|
|
Speaks ACP to ACP-compatible editor clients (Zed, etc.) and forwards
|
|
the conversation to any OpenAI-compatible HTTP endpoint — defaulting
|
|
to cortex (helexa's reverse-proxy / fleet gateway).
|
|
"""
|
|
|
|
# This crate is intentionally self-contained — no dependencies on other
|
|
# workspace crates (cortex-core, cortex-gateway, neuron). The goal is
|
|
# a painless migration to a dedicated GitHub repo in the future if the
|
|
# project grows beyond helexa's needs. All deps are crates.io.
|
|
[dependencies]
|
|
# `unstable_session_model` flips on the SessionModelState type and the
|
|
# session/set_model RPC the model-picker dropdown in Zed needs. The
|
|
# feature is upstream-marked unstable; we accept that risk because the
|
|
# model picker is core UX and the alternative (rolling our own
|
|
# extension method) drifts further from spec each time it moves.
|
|
agent-client-protocol = { version = "0.12", features = ["unstable_session_model"] }
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "io-util", "process", "signal"] }
|
|
reqwest = { version = "0.12", features = ["json", "stream", "rustls-tls"], default-features = false }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
toml = "0.8"
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
anyhow = "1"
|
|
thiserror = "2"
|
|
async-trait = "0.1"
|
|
futures = "0.3"
|
|
tokio-stream = "0.1"
|
|
tokio-util = { version = "0.7", features = ["rt"] }
|
|
eventsource-stream = "0.2"
|
|
async-stream = "0.3"
|
|
url = { version = "2", features = ["serde"] }
|
|
# Already transitively pulled via the ACP SDK; declared directly so we
|
|
# can format ISO 8601 timestamps for `SessionInfo.updated_at` in the
|
|
# session/list response.
|
|
chrono = { version = "0.4", default-features = false, features = ["std"] }
|
|
|
|
[[bin]]
|
|
name = "helexa-acp"
|
|
path = "src/main.rs"
|