[package]
edition = "2021"
rust-version = "1.78"
name = "omk"
version = "0.5.0"
authors = ["oh-my-kimi contributors"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "omk"
description = "A Rust runtime for Kimi CLI. Turns prompts into proof-backed engineering runs with gates, worktrees, and replay."
readme = "README.md"
keywords = [
"kimi",
"ai",
"agent",
"cli",
"runtime",
]
categories = [
"command-line-utilities",
"development-tools",
]
license = "MIT"
repository = "https://github.com/ekhodzitsky/oh-my-kimi"
[features]
default = ["tui"]
server = [
"dep:axum",
"dep:tower",
]
tokio-console = [
"dep:console-subscriber",
"tokio/tracing",
]
tui = [
"dep:ratatui",
"dep:crossterm",
]
[lib]
name = "omk"
path = "src/lib.rs"
[[bin]]
name = "mock-kimi"
path = "tests/fixtures/mock_kimi.rs"
[[bin]]
name = "omk"
path = "src/main.rs"
[[bin]]
name = "validate-contracts"
path = "src/bin/validate-contracts.rs"
[[test]]
name = "agent_swarm_test"
path = "tests/agent_swarm_test.rs"
[[test]]
name = "approval_proxy_test"
path = "tests/approval_proxy_test.rs"
[[test]]
name = "ask_test"
path = "tests/ask_test.rs"
[[test]]
name = "autopilot_test"
path = "tests/autopilot_test.rs"
[[test]]
name = "backup_test"
path = "tests/backup_test.rs"
[[test]]
name = "chat_cli_wireup_test"
path = "tests/chat_cli_wireup_test.rs"
[[test]]
name = "chat_shell_integration_test"
path = "tests/chat_shell_integration_test.rs"
[[test]]
name = "classifier_test"
path = "tests/classifier_test.rs"
[[test]]
name = "cleanup_test"
path = "tests/cleanup_test.rs"
[[test]]
name = "cli_goal_ux_test"
path = "tests/cli_goal_ux_test.rs"
[[test]]
name = "cli_smoke"
path = "tests/cli_smoke.rs"
[[test]]
name = "config_test"
path = "tests/config_test.rs"
[[test]]
name = "control_surface_test"
path = "tests/control_surface_test.rs"
[[test]]
name = "doctor_test"
path = "tests/doctor_test.rs"
[[test]]
name = "engine_pane_snapshot_test"
path = "tests/engine_pane_snapshot_test.rs"
[[test]]
name = "escalation_log_integration_test"
path = "tests/escalation_log_integration_test.rs"
[[test]]
name = "fixture_runner"
path = "tests/fixture_runner.rs"
[[test]]
name = "gates_test"
path = "tests/gates_test.rs"
[[test]]
name = "goal_auto_rebase_test"
path = "tests/goal_auto_rebase_test.rs"
[[test]]
name = "goal_budget_test"
path = "tests/goal_budget_test.rs"
[[test]]
name = "goal_chat_api_test"
path = "tests/goal_chat_api_test.rs"
[[test]]
name = "goal_cmd_test"
path = "tests/goal_cmd_test.rs"
[[test]]
name = "goal_delivery_metadata_api_test"
path = "tests/goal_delivery_metadata_api_test.rs"
[[test]]
name = "goal_delivery_metadata_test"
path = "tests/goal_delivery_metadata_test.rs"
[[test]]
name = "goal_delivery_slice_test"
path = "tests/goal_delivery_slice_test.rs"
[[test]]
name = "goal_dispatch_policy_test"
path = "tests/goal_dispatch_policy_test.rs"
[[test]]
name = "goal_e2e_harness"
path = "tests/goal_e2e_harness.rs"
[[test]]
name = "goal_github_delivery_test"
path = "tests/goal_github_delivery_test.rs"
[[test]]
name = "goal_llm_planner_wireup_test"
path = "tests/goal_llm_planner_wireup_test.rs"
[[test]]
name = "goal_open_pr_test"
path = "tests/goal_open_pr_test.rs"
[[test]]
name = "goal_planning_oracle_test"
path = "tests/goal_planning_oracle_test.rs"
[[test]]
name = "goal_progress_test"
path = "tests/goal_progress_test.rs"
[[test]]
name = "goal_proof_status_test"
path = "tests/goal_proof_status_test.rs"
[[test]]
name = "goal_ready_path_test"
path = "tests/goal_ready_path_test.rs"
[[test]]
name = "goal_recovery_test"
path = "tests/goal_recovery_test.rs"
[[test]]
name = "goal_review_artifacts_test"
path = "tests/goal_review_artifacts_test.rs"
[[test]]
name = "goal_review_gate_test"
path = "tests/goal_review_gate_test.rs"
[[test]]
name = "goal_rewrite_oracle_test"
path = "tests/goal_rewrite_oracle_test.rs"
[[test]]
name = "goal_rollback_conflict_evidence_test"
path = "tests/goal_rollback_conflict_evidence_test.rs"
[[test]]
name = "goal_slice_lease_test"
path = "tests/goal_slice_lease_test.rs"
[[test]]
name = "goal_supervisor_concurrent_test"
path = "tests/goal_supervisor_concurrent_test.rs"
[[test]]
name = "goal_types_test"
path = "tests/goal_types_test.rs"
[[test]]
name = "goal_until_ready_loop_test"
path = "tests/goal_until_ready_loop_test.rs"
[[test]]
name = "goal_until_ready_test"
path = "tests/goal_until_ready_test.rs"
[[test]]
name = "goal_worktree_conflict_test"
path = "tests/goal_worktree_conflict_test.rs"
[[test]]
name = "goal_worktree_test"
path = "tests/goal_worktree_test.rs"
[[test]]
name = "hook_integration_test"
path = "tests/hook_integration_test.rs"
[[test]]
name = "hud_test"
path = "tests/hud_test.rs"
[[test]]
name = "kimi_native_test"
path = "tests/kimi_native_test.rs"
[[test]]
name = "library_api_test"
path = "tests/library_api_test.rs"
[[test]]
name = "marketplace_test"
path = "tests/marketplace_test.rs"
[[test]]
name = "mcp_client_integration"
path = "tests/mcp_client_integration.rs"
[[test]]
name = "mock_kimi_test"
path = "tests/mock_kimi_test.rs"
[[test]]
name = "proof_cmd_test"
path = "tests/proof_cmd_test.rs"
[[test]]
name = "proof_golden_test"
path = "tests/proof_golden_test.rs"
[[test]]
name = "ralph_test"
path = "tests/ralph_test.rs"
[[test]]
name = "role_pack_test"
path = "tests/role_pack_test.rs"
[[test]]
name = "router"
path = "tests/router.rs"
[[test]]
name = "run_cmd_test"
path = "tests/run_cmd_test.rs"
[[test]]
name = "run_fixture"
path = "tests/run_fixture.rs"
[[test]]
name = "scheduler_race_tests"
path = "tests/scheduler_race_tests.rs"
[[test]]
name = "security_hardening_test"
path = "tests/security_hardening_test.rs"
[[test]]
name = "skill_test"
path = "tests/skill_test.rs"
[[test]]
name = "state_test"
path = "tests/state_test.rs"
[[test]]
name = "team_lifecycle_test"
path = "tests/team_lifecycle_test.rs"
[[test]]
name = "ultrawork_test"
path = "tests/ultrawork_test.rs"
[[test]]
name = "wire_golden_test"
path = "tests/wire_golden_test.rs"
[[test]]
name = "wire_protocol_test"
path = "tests/wire_protocol_test.rs"
[[bench]]
name = "event_writer_benchmark"
path = "benches/event_writer_benchmark.rs"
harness = false
[[bench]]
name = "goal_task_graph_benchmark"
path = "benches/goal_task_graph_benchmark.rs"
harness = false
[[bench]]
name = "redact_benchmark"
path = "benches/redact_benchmark.rs"
harness = false
[[bench]]
name = "state_benchmark"
path = "benches/state_benchmark.rs"
harness = false
[dependencies.anyhow]
version = "1.0"
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.8"
optional = true
[dependencies.chrono]
version = "0.4"
features = [
"clock",
"std",
"serde",
]
default-features = false
[dependencies.clap]
version = "4.5"
features = [
"derive",
"env",
"cargo",
]
[dependencies.clap_complete]
version = "4.5"
[dependencies.clap_mangen]
version = "0.3"
[dependencies.console-subscriber]
version = "0.5"
optional = true
[dependencies.crossterm]
version = "0.29"
optional = true
[dependencies.dirs]
version = "6.0"
[dependencies.glob]
version = "0.3.3"
[dependencies.humantime]
version = "2.1"
[dependencies.kimi-wire]
version = "0.3.0"
[dependencies.libc]
version = "0.2"
[dependencies.lru]
version = "0.18"
[dependencies.moka]
version = "0.12"
features = ["future"]
[dependencies.once_cell]
version = "1.21"
[dependencies.ratatui]
version = "0.30"
optional = true
[dependencies.regex]
version = "1.11"
[dependencies.reqwest]
version = "0.13"
features = [
"json",
"rustls",
]
default-features = false
[dependencies.rusqlite]
version = "0.37"
features = [
"bundled",
"chrono",
"backup",
]
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
features = ["preserve_order"]
[dependencies.serde_yaml]
version = "0.9"
[dependencies.shlex]
version = "2.0.1"
[dependencies.tempfile]
version = "3.19"
[dependencies.thiserror]
version = "2.0"
[dependencies.tiktoken-rs]
version = "0.11"
[dependencies.tokio]
version = "1.44"
features = [
"fs",
"io-std",
"io-util",
"macros",
"net",
"process",
"rt",
"rt-multi-thread",
"signal",
"sync",
"time",
]
[dependencies.tokio-rusqlite]
version = "0.7"
[dependencies.tokio-stream]
version = "0.1"
[dependencies.tokio-util]
version = "0.7"
features = ["codec"]
[dependencies.toml]
version = "1.1"
[dependencies.tower]
version = "0.5"
optional = true
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-appender]
version = "0.2"
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
]
[dependencies.tree-sitter]
version = "0.26"
[dependencies.tree-sitter-go]
version = "0.25"
[dependencies.tree-sitter-javascript]
version = "0.25"
[dependencies.tree-sitter-python]
version = "0.25"
[dependencies.tree-sitter-rust]
version = "0.24"
[dependencies.uuid]
version = "1.16"
features = [
"v4",
"serde",
]
[dependencies.walkdir]
version = "2.5"
[dependencies.which]
version = "8.0"
[dev-dependencies.assert_cmd]
version = "2.0"
[dev-dependencies.criterion]
version = "0.8"
features = ["async_tokio"]
[dev-dependencies.predicates]
version = "3.1"