Files
wehub-resource-sync a789495a98
FreeBSD Smoke / FreeBSD Smoke (x86_64) (push) Has been cancelled
CI / Quality Guardrails (push) Has been cancelled
CI / Build & Test (macos-latest) (push) Has been cancelled
CI / Build & Test (ubuntu-latest) (push) Has been cancelled
CI / Build & Test (windows-latest) (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / PowerShell Syntax (push) Has been cancelled
CI / Windows Cross-Target Check (Linux) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:10:34 +08:00

492 lines
15 KiB
TOML

[package]
name = "jcode"
version = "0.46.0"
description = "Possibly the greatest coding agent ever built — blazing-fast TUI, multi-model, swarm coordination, 30+ tools"
edition = "2024"
autobins = false
[workspace]
members = [
".",
"crates/jcode-agent-runtime",
"crates/jcode-app-core",
"crates/jcode-base",
"crates/jcode-tui",
"crates/jcode-build-meta",
"crates/jcode-ambient-types",
"crates/jcode-auth-types",
"crates/jcode-embedding",
"crates/jcode-gateway-types",
"crates/jcode-import-core",
"crates/jcode-pdf",
"crates/jcode-logging",
"crates/jcode-background-types",
"crates/jcode-batch-types",
"crates/jcode-build-support",
"crates/jcode-compaction-core",
"crates/jcode-config-types",
"crates/jcode-core",
"crates/jcode-fuzzy",
"crates/jcode-memory-types",
"crates/jcode-message-types",
"crates/jcode-overnight-core",
"crates/jcode-plan",
"crates/jcode-productivity-core",
"crates/jcode-swarm-core",
"crates/jcode-protocol",
"crates/jcode-selfdev-types",
"crates/jcode-session-types",
"crates/jcode-setup-hints",
"crates/jcode-storage",
"crates/jcode-side-panel-types",
"crates/jcode-azure-auth",
"crates/jcode-notify-email",
"crates/jcode-provider-metadata",
"crates/jcode-provider-env",
"crates/jcode-provider-core",
"crates/jcode-provider-bedrock",
"crates/jcode-provider-anthropic",
"crates/jcode-provider-antigravity",
"crates/jcode-provider-copilot",
"crates/jcode-provider-openrouter",
"crates/jcode-provider-openai",
"crates/jcode-provider-gemini",
"crates/jcode-provider-gemini-runtime",
"crates/jcode-provider-cursor-runtime",
"crates/jcode-provider-antigravity-runtime",
"crates/jcode-provider-copilot-runtime",
"crates/jcode-provider-claude-cli-runtime",
"crates/jcode-provider-openrouter-runtime",
"crates/jcode-provider-anthropic-runtime",
"crates/jcode-provider-openai-runtime",
"crates/jcode-provider-doctor",
"crates/jcode-tui-markdown",
"crates/jcode-tui-messages",
"crates/jcode-usage-types",
"crates/jcode-tui-core",
"crates/jcode-tui-mermaid",
"crates/jcode-task-types",
"crates/jcode-tool-core",
"crates/jcode-tool-types",
"crates/jcode-tui-account-picker",
"crates/jcode-tui-anim",
"crates/jcode-tui-render",
"crates/jcode-tui-visual-debug",
"crates/jcode-tui-session-picker",
"crates/jcode-tui-style",
"crates/jcode-tui-permissions",
"crates/jcode-tui-tool-display",
"crates/jcode-tui-usage-overlay",
"crates/jcode-update-core",
"crates/jcode-terminal-launch",
"crates/jcode-terminal-image",
"crates/jcode-telemetry-core",
"crates/jcode-tui-workspace",
"crates/jcode-desktop",
"crates/jcode-render-core",
]
[lib]
name = "jcode"
path = "src/lib.rs"
[[bin]]
name = "jcode"
path = "src/main.rs"
[[bin]]
name = "test_api"
path = "src/bin/test_api.rs"
[[bin]]
name = "jcode-harness"
path = "src/bin/harness.rs"
[[bin]]
name = "session_memory_bench"
path = "src/bin/session_memory_bench.rs"
required-features = ["dev-bins"]
[[bin]]
name = "memory_recall_bench"
path = "src/bin/memory_recall_bench.rs"
required-features = ["dev-bins"]
[[bin]]
name = "mermaid_side_panel_probe"
path = "src/bin/mermaid_side_panel_probe.rs"
required-features = ["dev-bins"]
[[bin]]
name = "tui_bench"
path = "src/bin/tui_bench.rs"
required-features = ["dev-bins"]
[dependencies]
# Memory allocator (reduces fragmentation for long-running server)
tikv-jemallocator = { version = "0.6", features = ["unprefixed_malloc_on_supported_platforms"], optional = true }
# Async runtime
tokio = { version = "1", features = ["fs", "io-std", "io-util", "macros", "net", "process", "rt-multi-thread", "signal", "sync", "time"] }
futures = "0.3"
async-trait = "0.1"
# HTTP client
reqwest = { version = "0.12", default-features = false, features = ["json", "charset", "http2", "system-proxy", "rustls-tls", "rustls-tls-native-roots"] }
rustls = { version = "0.23", default-features = false, features = ["aws_lc_rs"] }
tokio-tungstenite = { version = "0.24", default-features = false, features = ["connect", "rustls-tls-native-roots"] }
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["raw_value"] }
toml = "0.8"
# CLI
clap = { version = "4", features = ["derive"] }
# File operations
# Utilities
dirs = "5" # home directory
anyhow = "1"
libc = "0.2" # Unix system calls (flock)
chrono = { version = "0.4", features = ["serde"] }
# Embeddings (local inference) - behind feature flag (163 crates, slow to compile)
# OAuth
sha2 = "0.10"
hex = "0.4"
open = "5" # Open URLs in browser
jcode-tui-session-picker = { path = "crates/jcode-tui-session-picker", features = ["serde"] }
# Streaming
tokio-stream = "0.1"
# TUI
ratatui = "0.30"
crossterm = { version = "0.29", features = ["event-stream"] }
# Markdown & syntax highlighting
# PDF parsing (behind feature flag)
jcode-build-meta = { path = "crates/jcode-build-meta" }
# Presentation layer: the terminal UI (`tui`) + offline replay (`video_export`),
# compiled as a separate rustc unit. It re-exports the application core
# (`jcode-app-core`, which re-exports `jcode-base`), so the root crate (cli +
# bin) re-exports everything via `pub use jcode_tui::*`. default-features=false
# so the root feature set fully controls the downstream features (see
# [features]).
jcode-tui = { path = "crates/jcode-tui", default-features = false }
# `jcode provider-doctor` / provider diagnostics; sits downstream of jcode-base
# so doctor edits do not rebuild the base -> app-core -> tui spine.
jcode-provider-doctor = { path = "crates/jcode-provider-doctor" }
# Gemini provider runtime; sits downstream of jcode-base so gemini edits do
# not rebuild the base -> app-core -> tui spine. Registered with the external
# provider registry at startup (src/cli/startup.rs).
jcode-provider-gemini-runtime = { path = "crates/jcode-provider-gemini-runtime" }
jcode-provider-cursor-runtime = { path = "crates/jcode-provider-cursor-runtime" }
jcode-provider-antigravity-runtime = { path = "crates/jcode-provider-antigravity-runtime" }
jcode-provider-copilot-runtime = { path = "crates/jcode-provider-copilot-runtime" }
jcode-provider-claude-cli-runtime = { path = "crates/jcode-provider-claude-cli-runtime" }
jcode-provider-openrouter-runtime = { path = "crates/jcode-provider-openrouter-runtime" }
jcode-provider-anthropic-runtime = { path = "crates/jcode-provider-anthropic-runtime" }
jcode-provider-openai-runtime = { path = "crates/jcode-provider-openai-runtime" }
jcode-selfdev-types = { path = "crates/jcode-selfdev-types" }
# Archive extraction (for auto-update)
tempfile = "3"
[features]
# Include local ONNX/tokenizer embeddings in default builds so memory recall,
# semantic retrieval, and embedding-backed features work out of the box.
# Use `JCODE_DEV_FEATURE_PROFILE=minimal` for compile-speed probes that need
# to skip optional default feature stacks.
default = ["pdf", "embeddings", "bedrock"]
dev-bins = ["jcode-tui/dev-bins"]
jemalloc = [
"dep:tikv-jemallocator",
"tikv-jemallocator/stats",
"jcode-tui/jemalloc",
]
jemalloc-prof = [
"jemalloc",
"tikv-jemallocator/profiling",
"jcode-tui/jemalloc-prof",
]
# Local embeddings and PDF extraction live in jcode-base / jcode-app-core;
# these features just forward down the stack.
embeddings = ["jcode-tui/embeddings"]
# Live AWS Bedrock support (the AWS SDK stack) lives in jcode-provider-bedrock;
# forwards down through jcode-tui -> jcode-app-core -> jcode-base.
bedrock = ["jcode-tui/bedrock"]
mmdr-size-api = ["jcode-tui/mmdr-size-api"]
pdf = ["jcode-tui/pdf"]
[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.59", features = ["Win32_Foundation", "Win32_System_Threading"] }
[target.'cfg(target_os = "macos")'.dependencies]
global-hotkey = "0.7"
objc2 = "0.6"
block2 = "0.6"
objc2-foundation = { version = "0.3", features = [
"NSString",
"NSThread",
"NSRunLoop",
"NSDate",
"NSTimer",
"NSUserDefaults",
"NSValue",
"NSAttributedString",
"NSDictionary",
"block2",
] }
objc2-app-kit = { version = "0.3", features = [
"NSAppearance",
"NSApplication",
"NSResponder",
"NSStatusBar",
"NSStatusItem",
"NSStatusBarButton",
"NSButton",
"NSCell",
"NSColor",
"NSControl",
"NSFont",
"NSFontDescriptor",
"NSImage",
"NSAttributedString",
"NSMenu",
"NSMenuItem",
"NSRunningApplication",
] }
[profile.release]
opt-level = 1
debug = 0
codegen-units = 256
incremental = true
[profile.selfdev]
inherits = "release"
opt-level = 0
# Full LTO release for stable/distribution builds
[profile.release-lto]
inherits = "release"
lto = "thin"
codegen-units = 16
incremental = false
[profile.dev]
debug = 0
incremental = true
[profile.dev.package."*"]
opt-level = 0
# Keep the idle-animation math kernels fully optimized even in debug-style
# builds. This crate is pure, dependency-free numeric code (the trig-heavy 3D
# samplers that otherwise dominate idle CPU). Pinning it to opt-level = 3 here
# means the optimized object is compiled once and reused across iterative
# dev/selfdev rebuilds, since it only recompiles when the animation code itself
# changes. The "*" glob above sets the default for dependencies; these explicit
# package entries take precedence for this one crate in each profile.
[profile.dev.package."jcode-tui-anim"]
opt-level = 3
[profile.selfdev.package."jcode-tui-anim"]
opt-level = 3
[profile.test.package."jcode-tui-anim"]
opt-level = 3
# Keep the text-shaping stack optimized even in dev/selfdev/test builds.
#
# cosmic-text + rustybuzz + ttf-parser + swash + yazi do all of the desktop
# transcript glyph shaping. At opt-level = 0 they are 15-40x slower, which made
# scrolling real (emoji/markdown-heavy) transcripts janky in dev/selfdev builds
# even though the production release build was smooth. These are stable
# third-party crates that almost never recompile, so pinning them to opt-level =
# 3 costs a one-time compile and is then reused across every iterative jcode
# rebuild (same rationale as jcode-tui-anim above). It does NOT slow down
# recompiles of jcode's own crates.
[profile.dev.package.cosmic-text]
opt-level = 3
[profile.selfdev.package.cosmic-text]
opt-level = 3
[profile.test.package.cosmic-text]
opt-level = 3
[profile.dev.package.rustybuzz]
opt-level = 3
[profile.selfdev.package.rustybuzz]
opt-level = 3
[profile.test.package.rustybuzz]
opt-level = 3
[profile.dev.package.ttf-parser]
opt-level = 3
[profile.selfdev.package.ttf-parser]
opt-level = 3
[profile.test.package.ttf-parser]
opt-level = 3
[profile.dev.package.swash]
opt-level = 3
[profile.selfdev.package.swash]
opt-level = 3
[profile.test.package.swash]
opt-level = 3
[profile.dev.package.yazi]
opt-level = 3
[profile.selfdev.package.yazi]
opt-level = 3
[profile.test.package.yazi]
opt-level = 3
[profile.dev.package.fontdb]
opt-level = 3
[profile.selfdev.package.fontdb]
opt-level = 3
[profile.test.package.fontdb]
opt-level = 3
# Keep the raster image pipeline optimized in dev/selfdev/test builds.
#
# Inline transcript images decode (png/zune-jpeg/fdeflate/miniz_oxide), resize
# (image), and base64-encode (kitty transmit) at draw time; at opt-level 0 a
# single screenshot costs 100-200ms per decode/resize, which reads as input
# lag. These are pure pixel crates with no jcode logic, so optimizing them
# does not hurt rebuild times for our own code.
[profile.dev.package.image]
opt-level = 3
[profile.selfdev.package.image]
opt-level = 3
[profile.test.package.image]
opt-level = 3
[profile.dev.package.png]
opt-level = 3
[profile.selfdev.package.png]
opt-level = 3
[profile.test.package.png]
opt-level = 3
[profile.dev.package.zune-jpeg]
opt-level = 3
[profile.selfdev.package.zune-jpeg]
opt-level = 3
[profile.test.package.zune-jpeg]
opt-level = 3
[profile.dev.package.fdeflate]
opt-level = 3
[profile.selfdev.package.fdeflate]
opt-level = 3
[profile.test.package.fdeflate]
opt-level = 3
[profile.dev.package.miniz_oxide]
opt-level = 3
[profile.selfdev.package.miniz_oxide]
opt-level = 3
[profile.test.package.miniz_oxide]
opt-level = 3
[profile.dev.package.base64]
opt-level = 3
[profile.selfdev.package.base64]
opt-level = 3
[profile.test.package.base64]
opt-level = 3
# session_search scans multi-megabyte session files with memchr-based
# case-insensitive matching; keep the SIMD scanner optimized everywhere.
[profile.dev.package.memchr]
opt-level = 3
[profile.selfdev.package.memchr]
opt-level = 3
[profile.test.package.memchr]
opt-level = 3
# The embedding stack (tract ONNX inference + HF tokenizer) runs the MiniLM
# model for memory recall/maintenance on the shared server. At opt-level 0 a
# single embed measured ~666 ms (matmul inner loops unoptimized), which keeps
# the model "busy" long enough that the idle unloader rarely fires and burns
# CPU on every memory-maintenance pass. These crates are pure compute and
# change only when the dependency is bumped, so the optimized objects are
# compiled once and cached across dev/selfdev iterations.
[profile.dev.package.tract-core]
opt-level = 3
[profile.selfdev.package.tract-core]
opt-level = 3
[profile.test.package.tract-core]
opt-level = 3
[profile.dev.package.tract-linalg]
opt-level = 3
[profile.selfdev.package.tract-linalg]
opt-level = 3
[profile.test.package.tract-linalg]
opt-level = 3
[profile.dev.package.tract-data]
opt-level = 3
[profile.selfdev.package.tract-data]
opt-level = 3
[profile.test.package.tract-data]
opt-level = 3
[profile.dev.package.tract-hir]
opt-level = 3
[profile.selfdev.package.tract-hir]
opt-level = 3
[profile.test.package.tract-hir]
opt-level = 3
[profile.dev.package.tract-onnx]
opt-level = 3
[profile.selfdev.package.tract-onnx]
opt-level = 3
[profile.test.package.tract-onnx]
opt-level = 3
[profile.dev.package.tract-onnx-opl]
opt-level = 3
[profile.selfdev.package.tract-onnx-opl]
opt-level = 3
[profile.test.package.tract-onnx-opl]
opt-level = 3
[profile.dev.package.tract-nnef]
opt-level = 3
[profile.selfdev.package.tract-nnef]
opt-level = 3
[profile.test.package.tract-nnef]
opt-level = 3
[profile.dev.package.ndarray]
opt-level = 3
[profile.selfdev.package.ndarray]
opt-level = 3
[profile.test.package.ndarray]
opt-level = 3
[profile.dev.package.tokenizers]
opt-level = 3
[profile.selfdev.package.tokenizers]
opt-level = 3
[profile.test.package.tokenizers]
opt-level = 3
[profile.test]
debug = 0
incremental = true
codegen-units = 256
[dev-dependencies]
async-stream = "0.3"
# Enables the downstream test-support helpers (storage::lock_test_env,
# auth::test_sandbox, bus::reset_models_updated_publish_state_for_tests, the
# ExternalAuthReviewCandidate read accessors) for the root crate's own cli test
# target. Feature unification applies this only to test/bench/example builds,
# never to a normal `cargo build`/release binary.
jcode-tui = { path = "crates/jcode-tui", features = ["test-support"] }
[build-dependencies]