App::init wires config loading, an in-memory Store, EventBus, PermissionService with the M1 auto-approve stub frontend, the full built-in ToolRegistry, and a ProviderRegistry populated with AnthropicProvider when an API key is available (config or ANTHROPIC_API_KEY). App::run_prompt creates a root session, appends the prompt as a user message, and drives engine::run_session to completion; final_text reads back the concatenated text parts of the last message. harness-tui's `harness` binary gains a `run -p "<prompt>" [-m provider/model]` subcommand built on this. Manually verified end-to-end against the real Anthropic API: an empty API key produced a genuine 401 that our SSE error path correctly classified as ProviderError::Auth and surfaced as a clean CLI error message (exit 1) -- confirming the full request/header/error- handling pipeline works against the live service, not just fixtures. This closes M1 (docs/10-milestones.md): headless core loop + Anthropic provider, config loading, all six built-in tools, and the debug CLI. 131 tests passing across the workspace, clippy clean, fmt clean.
23 lines
508 B
TOML
23 lines
508 B
TOML
[package]
|
|
name = "harness-app"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[dependencies]
|
|
harness-core = { workspace = true }
|
|
harness-providers = { workspace = true }
|
|
harness-tools = { workspace = true }
|
|
harness-mcp = { workspace = true }
|
|
harness-lsp = { workspace = true }
|
|
tokio = { workspace = true }
|
|
tokio-util = { workspace = true }
|
|
dirs = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
tempfile = { workspace = true }
|
|
|
|
[lints]
|
|
workspace = true
|