Ctrl K
ComunidadGuías…

Cargo.toml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
[package]
name = "albert"
version = "0.3.0"
edition = "2021"
license = "LicenseRef-BSL-1.1"
description = "Albert — the assembly: an Octo cogitator with kaeru memory and a scheduler connector. Talk to it; it remembers and reminds."

[dependencies]
# Octo — shared runtime, SQL stores and authenticated human approvals.
# Keep every crate on the same immutable repository revision.
# NOTE: linking the mail crate pulls a second rustls provider (ring); main() MUST call
# ensure_crypto_provider().
octo-core = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
octo-approval = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
octo-connector-sql = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
octo-rig = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
# octo-openai-auth — the ChatGPT-subscription credential component (auth.json store +
# refresh + the shared, refresh-serialised SubscriptionAuth handle). Moved out of Albert
# so the voice connectors (synth + transcribe) and other assemblies share one token owner.
octo-openai-auth = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
octo-history = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007", features = ["sqlite"] }
octo-connector-telegram = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
octo-connector-scheduler = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
octo-connector-caldav = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
# octo-code — file/code tools (read/write/edit/list/glob/grep) as rig tools, jailed
# to $OCTO_CODE_WORKSPACE. Ported from llm-coding-tools-rig (Apache-2.0) to rig 0.35.
octo-code = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
# octo-connector-storage — durable object store (put/get/list/delete + promote/
# checkout); env-as-tools organ, backend swappable (local dir now, S3 later).
octo-connector-storage = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
# octo-connector-forkd — sandboxed script runner (v0) for executable skills:
# forkd.run a script jailed to the workspace, clean env, dropped privileges, timeout.
octo-connector-forkd = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
# octo-connector-mail — IMAP read + SMTP send mailbox organ (env-as-tools: mail.cmd.*).
# Wired in but OFF by default: the factory is registered, but no config/connectors/mail
# manifest is shipped (only mail.toml.example), so nothing is instantiated until you add
# one + the creds. Its rustls provider (ring) forces the ensure_crypto_provider() call.
octo-connector-mail = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
# octo-connector-search — web search organ (env-as-tools: search.web { query, limit? }).
# Its DuckDuckGo backend fetches through the SYSTEM libcurl, because DDG's anti-bot
# answers reqwest with a 202 challenge (and drops a vendored libcurl's handshake), while
# the system libcurl gets a full page — measured, see the crate docs. Consequences for
# this binary: needs `libcurl4-openssl-dev` to BUILD and links `libcurl.so.4` at RUN time
# (present wherever `curl` is). If a build predates the dev headers, curl-sys silently
# vendored its own copy — `cargo clean -p curl-sys` and rebuild.
# Backend is swappable — Yandex Search API slots in behind the same trait later.
octo-connector-search = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
# octo-connector-transcribe — voice-in as an env-as-tools organ: transcribe.run { path } ->
# { text } via the ChatGPT-subscription dictation endpoint. Takes the shared SubscriptionAuth
# (constructed in main.rs), so it shares the LLM path's one token owner. On while its manifest
# (config/connectors/transcribe) is present and a subscription token exists.
octo-connector-transcribe = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
# octo-connector-speak — voice-out as an env-as-tools organ: speak.run { text, voice? } ->
# { path } via a native WebRTC call to ChatGPT Voice (str0m, sans-IO). Writes an Ogg/Opus
# voice note into the workspace; shares the same SubscriptionAuth as transcribe. On while its
# manifest (config/connectors/speak) is present and a subscription token exists.
octo-connector-speak = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
# octo-connector-imagegen — image synthesis as an env-as-tools organ: imagegen.run { prompt, … }
# -> { path } via the subscription Images endpoint (gpt-image-2), one call, no codex CLI. Shares
# the same SubscriptionAuth. On while its manifest (config/connectors/imagegen) is present.
octo-connector-imagegen = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
# octo-connector-http — the GENERIC configurable connector: a whole REST API becomes an
# env-as-tools organ from a manifest alone (type = "http"), no code. Ported colleague
# work (PR #3) wires Jira this way — config/connectors/jira/jira.toml.
octo-connector-http = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }
# octo-connector-browser — stealth web-fetch organ (browser.fetch): drives a real headless
# Chrome via zendriver for JS-heavy / anti-bot pages. Pulls the fetcher (manages a stable
# Chrome-for-Testing) + a CDP tree — heavy build. The host needs Chrome's shared libs at
# runtime (libnss3, libgbm1, libasound2, …); the deploy provisions them.
octo-connector-browser = { git = "https://github.com/LamantinAI/octo", rev = "1dbd557111028cab149a194e9fab3d55c305e007" }

# Kaeru — latest stable release, including recall and temporal write fixes.
kaeru-core = { git = "https://github.com/LamantinAI/kaeru", tag = "v0.7.5" }
kaeru-rig = { git = "https://github.com/LamantinAI/kaeru", tag = "v0.7.5" }
# Dedicated memory transport; external memory does not enter the connector catalog.
rmcp = { version = "=1.8.0", default-features = false, features = ["client", "transport-child-process", "transport-streamable-http-client-reqwest"] }
mcp-http = { package = "reqwest", version = "0.13", default-features = false, features = ["rustls"] }

tokio = { version = "1.40", features = ["full"] }
# futures: drain rig's SSE stream (StreamExt::next) in the Codex subscription model.
futures = "0.3"
# bytes: rewrite the Codex request/response body in the custom rig HttpClientExt
# (codex_http). The reqwest client itself comes via rig's `http_client::ReqwestClient`.
bytes = "1"
# Subscription login (openai_login): the OAuth PKCE flow and the code exchange (refresh
# lives in octo-openai-auth). reqwest reuses rig's already-built TLS (default-features off,
# just add `json`); sha2 for the PKCE S256 challenge; rand for the verifier/state;
# url to build the authorize URL safely.
reqwest = { version = "0.12", default-features = false, features = ["json"] }
sha2 = "0.10"
rand = "0.8"
url = "2"
async-trait = "0.1"
thiserror = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# Internal identity/routing metadata shares octo-history's SQLite pool. Its
# migrations use a separate registry; application SQL stores remain isolated.
sqlx = { version = "=0.8.6", default-features = false, features = ["runtime-tokio", "sqlite", "migrate", "sqlite-preupdate-hook"] }
# base64: the PKCE verifier/state (URL-safe, no-pad) in openai_login, and inline images
# for vision models in the cogitator. Already in the tree transitively.
base64 = "0.22"
chrono = "0.4"
chrono-tz = "0.10"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
dotenvy = "0.15"
toml = "0.8"
rig-core = "0.35"
tiktoken-rs = "0.12.0"

[dev-dependencies]
tempfile = "3"
rmcp = { version = "=1.8.0", default-features = false, features = ["server", "transport-streamable-http-server"] }
axum = "0.8"

# Optimized release profile for the deployed binary (smaller + faster; the target
# is a small VM). opt-level 3 is the release default; the wins are LTO + a single
# codegen unit + strip.
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
strip = true

# cozo (pulled transitively via kaeru-core) needs this patch on rustc 1.85+ /
# rayon 1.10+ — the same pin kaeru's own workspace carries. Patches are
# per-workspace-root, so Albert (its own workspace) must repeat it.
[patch.crates-io]
graph_builder = { git = "https://github.com/lawless-m/graph", rev = "790ef623533fa39574ddd11308e3abc3993c0994" }