From eb15e70e1c5871b7dc69dcde06d58ea854efbd43 Mon Sep 17 00:00:00 2001 From: Josh Carver Date: Fri, 19 Jun 2026 15:28:28 -0700 Subject: [PATCH 1/4] refactor(workspace): Rust crates move to crates/ TS moves to packages/ --- {packages => crates}/acp-utils/CHANGELOG.md | 0 {packages => crates}/acp-utils/Cargo.toml | 0 {packages => crates}/acp-utils/README.md | 0 {packages => crates}/acp-utils/src/client/error.rs | 0 {packages => crates}/acp-utils/src/client/event.rs | 0 {packages => crates}/acp-utils/src/client/mod.rs | 0 .../acp-utils/src/client/prompt_handle.rs | 0 .../acp-utils/src/client/session.rs | 0 .../acp-utils/src/client/tokio_agent.rs | 0 {packages => crates}/acp-utils/src/config_meta.rs | 0 .../acp-utils/src/config_option_id.rs | 0 {packages => crates}/acp-utils/src/content.rs | 0 {packages => crates}/acp-utils/src/lib.rs | 0 {packages => crates}/acp-utils/src/notifications.rs | 0 {packages => crates}/acp-utils/src/server/error.rs | 0 {packages => crates}/acp-utils/src/server/mod.rs | 0 {packages => crates}/acp-utils/src/settings.rs | 0 {packages => crates}/acp-utils/src/testing.rs | 0 {packages => crates}/acp-utils/tests/tokio_agent.rs | 0 {packages => crates}/aether-auth/CHANGELOG.md | 0 {packages => crates}/aether-auth/Cargo.toml | 0 {packages => crates}/aether-auth/README.md | 0 {packages => crates}/aether-auth/src/browser.rs | 0 {packages => crates}/aether-auth/src/credential.rs | 0 .../aether-auth/src/encrypted_file.rs | 0 {packages => crates}/aether-auth/src/error.rs | 0 {packages => crates}/aether-auth/src/fake.rs | 0 {packages => crates}/aether-auth/src/handler.rs | 0 {packages => crates}/aether-auth/src/keyring/mod.rs | 0 {packages => crates}/aether-auth/src/lib.rs | 0 .../aether-auth/src/mcp/credential_store.rs | 0 .../aether-auth/src/mcp/integration.rs | 0 {packages => crates}/aether-auth/src/mcp/mod.rs | 0 {packages => crates}/aether-auth/src/oauth.md | 0 .../aether-auth/src/oauth_success.html | 0 {packages => crates}/aether-cli/CHANGELOG.md | 0 {packages => crates}/aether-cli/Cargo.toml | 0 {packages => crates}/aether-cli/README.md | 0 {packages => crates}/aether-cli/src/acp/agent.rs | 0 .../aether-cli/src/acp/agent_key.rs | 0 .../aether-cli/src/acp/agent_runtime.rs | 0 .../aether-cli/src/acp/config_setting.rs | 0 {packages => crates}/aether-cli/src/acp/error.rs | 0 .../aether-cli/src/acp/fake_prompt_mcp.rs | 0 {packages => crates}/aether-cli/src/acp/mod.rs | 0 .../aether-cli/src/acp/model_config.rs | 0 .../aether-cli/src/acp/prompt_history_index.rs | 0 .../aether-cli/src/acp/protocol/commands.rs | 0 .../aether-cli/src/acp/protocol/content.rs | 0 .../aether-cli/src/acp/protocol/events.rs | 0 .../aether-cli/src/acp/protocol/mcp.rs | 0 .../aether-cli/src/acp/protocol/mod.rs | 0 .../aether-cli/src/acp/protocol/replay.rs | 0 .../aether-cli/src/acp/session_actor.rs | 0 .../aether-cli/src/acp/session_config_state.rs | 0 .../aether-cli/src/acp/session_factory.rs | 0 .../aether-cli/src/acp/session_store.rs | 0 .../aether-cli/src/acp/slash_commands.rs | 0 {packages => crates}/aether-cli/src/acp/state.rs | 0 {packages => crates}/aether-cli/src/acp/stdio.rs | 0 {packages => crates}/aether-cli/src/acp/testing.rs | 0 {packages => crates}/aether-cli/src/credentials.rs | 0 {packages => crates}/aether-cli/src/error.rs | 0 .../aether-cli/src/generate_command/mod.rs | 0 .../aether-cli/src/headless/error.rs | 0 {packages => crates}/aether-cli/src/headless/mod.rs | 0 {packages => crates}/aether-cli/src/headless/run.rs | 0 .../aether-cli/src/init/build_settings.rs | 0 {packages => crates}/aether-cli/src/init/harness.rs | 0 {packages => crates}/aether-cli/src/init/mod.rs | 0 .../aether-cli/src/init/recommendations.rs | 0 .../aether-cli/src/init/templates/SYSTEM.md | 0 .../templates/agents/codebase-explorer/AGENTS.md | 0 .../src/init/templates/skills/aether/SKILL.md | 0 .../aether-cli/src/init/tui_runner.rs | 0 {packages => crates}/aether-cli/src/lib.rs | 0 {packages => crates}/aether-cli/src/main.rs | 0 .../aether-cli/src/mcp_config_args.rs | 0 {packages => crates}/aether-cli/src/output.rs | 0 .../aether-cli/src/provider_connection_args.rs | 0 {packages => crates}/aether-cli/src/resolve.rs | 0 {packages => crates}/aether-cli/src/runtime.rs | 0 {packages => crates}/aether-cli/src/sandbox.rs | 2 +- {packages => crates}/aether-cli/src/settings/mod.rs | 0 .../aether-cli/src/settings_args.rs | 0 .../aether-cli/src/show_prompt/mod.rs | 0 .../aether-cli/src/show_prompt/run.rs | 0 .../aether-cli/src/workspace/git.rs | 0 .../aether-cli/src/workspace/mod.rs | 0 .../aether-cli/src/workspace/registry.rs | 0 .../aether-cli/src/workspace/testing.rs | 0 .../aether-cli/tests/acp_agent_switching.rs | 0 .../aether-cli/tests/acp_cancellation.rs | 0 .../aether-cli/tests/acp_prompt_search.rs | 0 {packages => crates}/aether-cli/tests/acp_stdio.rs | 0 .../aether-cli/tests/acp_workspace_move.rs | 0 {packages => crates}/aether-cli/tests/run_init.rs | 0 .../aether-cli/tests/slash_commands.rs | 0 {packages => crates}/aether-core/CHANGELOG.md | 0 {packages => crates}/aether-core/Cargo.lock | 0 {packages => crates}/aether-core/Cargo.toml | 0 {packages => crates}/aether-core/README.md | 0 .../aether-core/examples/anthropic_test.rs | 0 .../aether-core/examples/basic_agent.rs | 0 {packages => crates}/aether-core/examples/mcp.json | 0 .../aether-core/examples/mcp_agent.rs | 0 {packages => crates}/aether-core/src/agent_spec.rs | 0 .../aether-core/src/context/compaction.rs | 0 {packages => crates}/aether-core/src/context/ext.rs | 0 {packages => crates}/aether-core/src/context/mod.rs | 0 .../src/context/prompts/summarization.md | 0 .../aether-core/src/context/token_tracker.rs | 0 {packages => crates}/aether-core/src/core/agent.rs | 0 .../aether-core/src/core/agent_builder.rs | 0 {packages => crates}/aether-core/src/core/error.rs | 0 {packages => crates}/aether-core/src/core/mod.rs | 0 {packages => crates}/aether-core/src/core/prompt.rs | 0 .../aether-core/src/core/retry_config.rs | 0 .../aether-core/src/docs/basic_agent.md | 0 .../aether-core/src/docs/prompt_source.md | 0 .../aether-core/src/docs/tool_filter.md | 0 {packages => crates}/aether-core/src/events/acp.rs | 0 .../aether-core/src/events/agent_message.rs | 0 {packages => crates}/aether-core/src/events/mod.rs | 0 .../aether-core/src/events/sub_agent_progress.rs | 0 .../aether-core/src/events/user_message.rs | 0 {packages => crates}/aether-core/src/lib.rs | 0 .../aether-core/src/mcp/mcp_builder.rs | 0 {packages => crates}/aether-core/src/mcp/mod.rs | 0 .../aether-core/src/mcp/run_mcp_task.rs | 0 .../aether-core/src/mcp/tool_bridge.rs | 0 .../src/testing/agent_message_builder.rs | 0 .../aether-core/src/testing/fake_mcp.rs | 0 {packages => crates}/aether-core/src/testing/mod.rs | 0 .../aether-core/src/testing/utils.rs | 0 {packages => crates}/aether-core/tests/agent.rs | 0 .../aether-core/tests/agent/agent_tests.rs | 0 .../aether-core/tests/agent/cancel_tests.rs | 0 .../aether-core/tests/agent/clear_context_tests.rs | 0 .../aether-core/tests/agent/error_recovery_tests.rs | 0 .../aether-core/tests/agent/model_switch_tests.rs | 0 .../aether-core/tests/agent/queued_message_tests.rs | 0 .../aether-core/tests/agent/retry_tests.rs | 0 .../aether-core/tests/doc_examples.rs | 0 {packages => crates}/aether-core/tests/mcp.rs | 0 .../aether-core/tests/mcp/config_parser_tests.rs | 0 .../aether-core/tests/mcp/instructions_tests.rs | 0 .../aether-core/tests/mcp/oauth_tests.rs | 0 .../aether-core/tests/mcp/tool_proxy_tests.rs | 0 .../aether-core/tests/mcp/url_elicitation_tests.rs | 0 {packages => crates}/aether-evals/CHANGELOG.md | 0 {packages => crates}/aether-evals/Cargo.toml | 0 {packages => crates}/aether-evals/README.md | 0 .../aether-evals/src/agents/agent.rs | 0 .../aether-evals/src/agents/docker.rs | 0 .../aether-evals/src/agents/docker_agent.rs | 0 {packages => crates}/aether-evals/src/agents/env.rs | 0 .../aether-evals/src/agents/fake_agent.rs | 0 {packages => crates}/aether-evals/src/agents/mod.rs | 0 .../aether-evals/src/agents/transcript.rs | 0 {packages => crates}/aether-evals/src/assertions.rs | 0 {packages => crates}/aether-evals/src/error.rs | 0 {packages => crates}/aether-evals/src/evals/diff.rs | 0 {packages => crates}/aether-evals/src/evals/mod.rs | 0 {packages => crates}/aether-evals/src/evals/task.rs | 0 .../aether-evals/src/evals/transcript.rs | 0 .../aether-evals/src/evals/workspace.rs | 0 {packages => crates}/aether-evals/src/git_repo.rs | 0 {packages => crates}/aether-evals/src/judge.rs | 0 {packages => crates}/aether-evals/src/lib.rs | 0 .../aether-evals/tests/docker_agent_tests.rs | 0 .../aether-evals/tests/fake_agent_tests.rs | 0 {packages => crates}/aether-lspd/CHANGELOG.md | 0 {packages => crates}/aether-lspd/Cargo.toml | 0 {packages => crates}/aether-lspd/README.md | 0 {packages => crates}/aether-lspd/src/client.rs | 0 .../aether-lspd/src/client_connection.rs | 0 {packages => crates}/aether-lspd/src/daemon.rs | 0 .../aether-lspd/src/diagnostics_store.rs | 0 {packages => crates}/aether-lspd/src/docs/client.md | 0 .../aether-lspd/src/docs/client_error.md | 0 {packages => crates}/aether-lspd/src/docs/daemon.md | 0 .../aether-lspd/src/docs/daemon_error.md | 0 .../aether-lspd/src/docs/language_catalog.md | 0 .../aether-lspd/src/docs/protocol.md | 0 .../aether-lspd/src/docs/socket_path.md | 0 .../aether-lspd/src/docs/testing.md | 0 .../aether-lspd/src/document_lifecycle.rs | 0 {packages => crates}/aether-lspd/src/error.rs | 0 .../aether-lspd/src/file_watcher.rs | 0 .../aether-lspd/src/language_catalog.rs | 0 {packages => crates}/aether-lspd/src/lib.rs | 0 {packages => crates}/aether-lspd/src/lsp_utils.rs | 0 {packages => crates}/aether-lspd/src/main.rs | 0 .../aether-lspd/src/pid_lockfile.rs | 0 .../aether-lspd/src/process_transport.rs | 0 {packages => crates}/aether-lspd/src/protocol.rs | 0 .../aether-lspd/src/refresh_queue.rs | 0 {packages => crates}/aether-lspd/src/socket_path.rs | 0 {packages => crates}/aether-lspd/src/testing.rs | 0 {packages => crates}/aether-lspd/src/uri.rs | 0 .../aether-lspd/src/workspace_registry.rs | 0 .../aether-lspd/src/workspace_session.rs | 0 .../aether-lspd/tests/common/cargo_project.rs | 0 .../aether-lspd/tests/common/daemon_harness.rs | 0 .../aether-lspd/tests/common/fake_lsp_server.py | 0 .../aether-lspd/tests/common/mod.rs | 0 .../aether-lspd/tests/e2e_error_handling.rs | 0 .../aether-lspd/tests/e2e_lifecycle.rs | 0 .../aether-lspd/tests/e2e_requests.rs | 0 .../aether-lspd/tests/e2e_smoke_real.rs | 0 {packages => crates}/aether-project/CHANGELOG.md | 0 {packages => crates}/aether-project/Cargo.toml | 0 {packages => crates}/aether-project/README.md | 0 .../aether-project/src/aether_settings.rs | 0 .../aether-project/src/agent_catalog.rs | 0 .../aether-project/src/agent_config.rs | 0 .../src/bin/aether-settings-schema.rs | 0 .../aether-project/src/docs/aether_settings.md | 0 .../aether-project/src/docs/agent_config.md | 0 .../aether-project/src/docs/mcp_source_spec.md | 0 {packages => crates}/aether-project/src/error.rs | 0 {packages => crates}/aether-project/src/lib.rs | 0 .../aether-project/src/mcp_config_source_config.rs | 0 .../aether-project/src/prompt_catalog.rs | 4 ++-- .../aether-project/src/prompt_file.rs | 0 .../aether-project/tests/doc_examples.rs | 0 {packages => crates}/aether-schemas/CHANGELOG.md | 0 {packages => crates}/aether-schemas/Cargo.toml | 0 {packages => crates}/aether-schemas/src/main.rs | 0 {packages => crates}/doctest/Cargo.toml | 0 {packages => crates}/doctest/src/lib.rs | 0 {packages => crates}/internal-evals/Cargo.toml | 0 {packages => crates}/internal-evals/README.md | 4 ++-- .../internal-evals/examples/Dockerfile | 2 +- .../internal-evals/examples/aether-eval-agent | 0 .../internal-evals/prompts/coding_agent.md | 0 .../internal-evals/tests/batched_edits.rs | 0 .../internal-evals/tests/coding_edit_file.rs | 0 .../internal-evals/tests/common/mod.rs | 0 {packages => crates}/llm-codegen/CHANGELOG.md | 0 {packages => crates}/llm-codegen/Cargo.toml | 0 {packages => crates}/llm-codegen/README.md | 0 {packages => crates}/llm-codegen/src/lib.rs | 0 {packages => crates}/llm/CHANGELOG.md | 0 {packages => crates}/llm/Cargo.toml | 0 {packages => crates}/llm/README.md | 0 {packages => crates}/llm/build.rs | 0 .../llm/examples/bedrock_inference_profile.rs | 0 {packages => crates}/llm/models.json | 0 {packages => crates}/llm/scripts/fetch-models.sh | 0 {packages => crates}/llm/src/alloyed.rs | 0 {packages => crates}/llm/src/catalog/bedrock.rs | 0 {packages => crates}/llm/src/catalog/mod.rs | 0 {packages => crates}/llm/src/chat_message.rs | 0 {packages => crates}/llm/src/context.rs | 0 {packages => crates}/llm/src/credential.rs | 0 {packages => crates}/llm/src/docs/alloyed.md | 0 {packages => crates}/llm/src/docs/catalog.md | 0 {packages => crates}/llm/src/docs/chat_message.md | 0 {packages => crates}/llm/src/docs/content_block.md | 0 {packages => crates}/llm/src/docs/context.md | 0 {packages => crates}/llm/src/docs/llm_error.md | 0 {packages => crates}/llm/src/docs/llm_response.md | 0 {packages => crates}/llm/src/docs/parser.md | 0 .../llm/src/docs/provider_connection_override.md | 0 .../llm/src/docs/provider_factory.md | 0 {packages => crates}/llm/src/docs/providers.md | 0 {packages => crates}/llm/src/docs/stop_reason.md | 0 .../llm/src/docs/streaming_model_provider.md | 0 {packages => crates}/llm/src/docs/testing.md | 0 {packages => crates}/llm/src/docs/tools.md | 0 {packages => crates}/llm/src/error.rs | 0 {packages => crates}/llm/src/lib.rs | 0 {packages => crates}/llm/src/llm_response.rs | 0 {packages => crates}/llm/src/model_settings.rs | 0 {packages => crates}/llm/src/parser.rs | 0 {packages => crates}/llm/src/provider.rs | 0 {packages => crates}/llm/src/provider_connection.rs | 0 .../llm/src/providers/anthropic/mappers.rs | 0 .../llm/src/providers/anthropic/mod.rs | 0 .../llm/src/providers/anthropic/provider.rs | 0 .../llm/src/providers/anthropic/streaming.rs | 0 .../llm/src/providers/anthropic/types.rs | 0 .../llm/src/providers/bedrock/mappers.rs | 0 .../llm/src/providers/bedrock/mod.rs | 0 .../llm/src/providers/bedrock/provider.rs | 0 .../llm/src/providers/bedrock/streaming.rs | 0 .../llm/src/providers/codex/mappers.rs | 0 {packages => crates}/llm/src/providers/codex/mod.rs | 0 .../llm/src/providers/codex/oauth.rs | 0 .../llm/src/providers/codex/provider.rs | 0 .../llm/src/providers/codex/streaming.rs | 0 .../llm/src/providers/gemini/mod.rs | 0 .../llm/src/providers/gemini/provider.rs | 0 .../llm/src/providers/local/discovery.rs | 0 .../llm/src/providers/local/llama_cpp.rs | 0 {packages => crates}/llm/src/providers/local/mod.rs | 0 .../llm/src/providers/local/ollama.rs | 0 .../llm/src/providers/local/util.rs | 0 {packages => crates}/llm/src/providers/mod.rs | 0 .../llm/src/providers/openai/mappers.rs | 0 .../llm/src/providers/openai/mod.rs | 0 .../llm/src/providers/openai/provider.rs | 0 .../llm/src/providers/openai/responses_provider.rs | 0 .../llm/src/providers/openai/streaming.rs | 0 .../llm/src/providers/openai_compatible/config.rs | 0 .../llm/src/providers/openai_compatible/generic.rs | 0 .../llm/src/providers/openai_compatible/mod.rs | 0 .../src/providers/openai_compatible/streaming.rs | 0 .../llm/src/providers/openai_compatible/types.rs | 0 .../llm/src/providers/openrouter/mod.rs | 0 .../llm/src/providers/openrouter/provider.rs | 0 .../llm/src/providers/openrouter/types.rs | 0 .../llm/src/providers/tool_call_collector.rs | 0 {packages => crates}/llm/src/reasoning.rs | 0 {packages => crates}/llm/src/testing/fake_llm.rs | 0 .../llm/src/testing/llm_response.rs | 0 {packages => crates}/llm/src/testing/mod.rs | 0 {packages => crates}/llm/src/tool_schema.rs | 0 {packages => crates}/llm/src/tools.rs | 0 {packages => crates}/llm/src/types.rs | 0 {packages => crates}/llm/tests/doc_examples.rs | 0 {packages => crates}/llm/tests/fixtures/README.md | 0 .../llm/tests/fixtures/anthropic/01_minimal.sse | 0 .../llm/tests/fixtures/anthropic/02_tool_call.sse | 0 .../llm/tests/fixtures/anthropic/03_cache_write.sse | 0 .../llm/tests/fixtures/anthropic/04_cache_read.sse | 0 .../llm/tests/fixtures/anthropic/05_reasoning.sse | 0 .../llm/tests/fixtures/openai/01_minimal.sse | 0 .../llm/tests/fixtures/openai/02_tool_call.sse | 0 .../llm/tests/fixtures/openai/03_reasoning.sse | 0 .../tests/fixtures/openai_responses/01_minimal.sse | 0 .../fixtures/openai_responses/02_reasoning.sse | 0 .../llm/tests/fixtures/openrouter/01_minimal.sse | 0 .../llm/tests/fixtures/openrouter/02_tool_call.sse | 0 .../llm/tests/fixtures/z_ai/01_minimal.sse | 0 .../llm/tests/fixtures/z_ai/02_tool_call.sse | 0 {packages => crates}/llm/tests/providers.rs | 0 .../tests/providers/anthropic/capture_fixtures.rs | 0 .../llm/tests/providers/anthropic/fixture_tests.rs | 0 .../llm/tests/providers/codex/fixture_tests.rs | 0 {packages => crates}/llm/tests/providers/common.rs | 0 .../llm/tests/providers/openai/capture_fixtures.rs | 0 .../llm/tests/providers/openai/fixture_tests.rs | 0 .../llm/tests/providers/openai/streaming_tests.rs | 0 .../tests/providers/openrouter/capture_fixtures.rs | 0 .../llm/tests/providers/openrouter/fixture_tests.rs | 0 .../llm/tests/providers/openrouter/usage_tests.rs | 0 .../llm/tests/providers/z_ai/capture_fixtures.rs | 0 .../llm/tests/providers/z_ai/fixture_tests.rs | 0 .../llm/tests/providers/z_ai/types_tests.rs | 0 {packages => crates}/mcp-servers/CHANGELOG.md | 0 {packages => crates}/mcp-servers/Cargo.toml | 0 {packages => crates}/mcp-servers/README.md | 0 .../mcp-servers/examples/lsp_diagnostics.rs | 0 {packages => crates}/mcp-servers/src/bin/stdio.rs | 0 .../mcp-servers/src/coding/README.md | 0 .../mcp-servers/src/coding/default_tools.rs | 0 .../mcp-servers/src/coding/error.rs | 0 {packages => crates}/mcp-servers/src/coding/mod.rs | 0 .../mcp-servers/src/coding/prompt_rule_matcher.rs | 0 .../src/coding/tools/ast_grep/description.md | 0 .../mcp-servers/src/coding/tools/ast_grep/mod.rs | 0 .../src/coding/tools/bash/description.md | 0 .../mcp-servers/src/coding/tools/bash/mod.rs | 0 .../tools/bash/read_background_description.md | 0 .../src/coding/tools/edit_file/description.md | 0 .../mcp-servers/src/coding/tools/edit_file/mod.rs | 0 .../mcp-servers/src/coding/tools/file_io.rs | 0 .../src/coding/tools/find/description.md | 0 .../mcp-servers/src/coding/tools/find/mod.rs | 0 .../mcp-servers/src/coding/tools/glob_filter.rs | 0 .../mcp-servers/src/coding/tools/grep/common.rs | 0 .../src/coding/tools/grep/description.md | 0 .../mcp-servers/src/coding/tools/grep/mod.rs | 0 .../src/coding/tools/list_files/description.md | 0 .../mcp-servers/src/coding/tools/list_files/mod.rs | 0 .../mcp-servers/src/coding/tools/mod.rs | 0 .../src/coding/tools/read_file/description.md | 0 .../mcp-servers/src/coding/tools/read_file/mod.rs | 0 .../src/coding/tools/web_fetch/description.md | 0 .../src/coding/tools/web_fetch/http_client.rs | 0 .../mcp-servers/src/coding/tools/web_fetch/mod.rs | 0 .../src/coding/tools/web_search/description.md | 0 .../mcp-servers/src/coding/tools/web_search/mod.rs | 0 .../src/coding/tools/web_search/search_client.rs | 0 .../src/coding/tools/write_file/description.md | 0 .../mcp-servers/src/coding/tools/write_file/mod.rs | 0 .../mcp-servers/src/coding/tools_trait.rs | 0 .../mcp-servers/src/docs/coding_error.md | 0 .../mcp-servers/src/docs/coding_mcp.md | 0 .../mcp-servers/src/docs/coding_tools.md | 0 .../mcp-servers/src/docs/lsp_error.md | 0 .../mcp-servers/src/docs/lsp_registry.md | 0 .../mcp-servers/src/docs/mcp_builder_ext.md | 0 .../mcp-servers/src/docs/permission_mode.md | 0 .../mcp-servers/src/docs/plan_mcp.md | 0 .../mcp-servers/src/docs/prompt_rule_matcher.md | 0 .../mcp-servers/src/docs/skills_mcp.md | 0 .../mcp-servers/src/docs/subagents_mcp.md | 0 .../mcp-servers/src/docs/survey_mcp.md | 0 .../mcp-servers/src/docs/tasks_mcp.md | 0 .../mcp-servers/src/docs/tasks_module.md | 0 {packages => crates}/mcp-servers/src/error.rs | 0 {packages => crates}/mcp-servers/src/file_ops.rs | 0 {packages => crates}/mcp-servers/src/lib.rs | 0 {packages => crates}/mcp-servers/src/lsp/common.rs | 0 .../mcp-servers/src/lsp/diagnostics.rs | 0 {packages => crates}/mcp-servers/src/lsp/error.rs | 0 {packages => crates}/mcp-servers/src/lsp/mod.rs | 0 .../mcp-servers/src/lsp/registry.rs | 0 .../mcp-servers/src/lsp/tools/call_hierarchy/mod.rs | 0 .../src/lsp/tools/check_errors/description.md | 0 .../mcp-servers/src/lsp/tools/check_errors/mod.rs | 0 .../src/lsp/tools/document_info/description.md | 0 .../mcp-servers/src/lsp/tools/document_info/mod.rs | 0 .../mcp-servers/src/lsp/tools/mod.rs | 0 .../mcp-servers/src/lsp/tools/rename/description.md | 0 .../mcp-servers/src/lsp/tools/rename/mod.rs | 0 .../src/lsp/tools/symbol_lookup/description.md | 0 .../mcp-servers/src/lsp/tools/symbol_lookup/mod.rs | 0 .../src/lsp/tools/workspace_search/description.md | 0 .../src/lsp/tools/workspace_search/mod.rs | 0 {packages => crates}/mcp-servers/src/plan/README.md | 0 .../mcp-servers/src/plan/default_prompt.md | 0 .../mcp-servers/src/plan/edit_plan_description.md | 0 {packages => crates}/mcp-servers/src/plan/mod.rs | 0 {packages => crates}/mcp-servers/src/plan/server.rs | 0 .../mcp-servers/src/plan/submit_plan_description.md | 0 .../mcp-servers/src/plan/write_plan_description.md | 0 {packages => crates}/mcp-servers/src/setup.rs | 0 .../mcp-servers/src/skills/README.md | 0 .../mcp-servers/src/skills/instructions.md | 0 {packages => crates}/mcp-servers/src/skills/mod.rs | 0 .../mcp-servers/src/skills/server.rs | 0 .../src/skills/tools/get_skills/description.md | 0 .../mcp-servers/src/skills/tools/get_skills/mod.rs | 0 .../src/skills/tools/list_skills/description.md | 0 .../mcp-servers/src/skills/tools/list_skills/mod.rs | 0 .../mcp-servers/src/skills/tools/mod.rs | 0 .../src/skills/tools/save_note/description.md | 0 .../mcp-servers/src/skills/tools/save_note/mod.rs | 0 .../src/skills/tools/search_notes/description.md | 0 .../src/skills/tools/search_notes/mod.rs | 0 .../mcp-servers/src/subagents/README.md | 0 .../mcp-servers/src/subagents/instructions.md | 0 .../mcp-servers/src/subagents/mod.rs | 0 .../mcp-servers/src/subagents/server.rs | 0 .../mcp-servers/src/subagents/tools/mod.rs | 0 .../subagents/tools/spawn_subagent/description.md | 0 .../src/subagents/tools/spawn_subagent/mod.rs | 0 .../structured_output_instructions.md | 0 .../mcp-servers/src/survey/README.md | 0 {packages => crates}/mcp-servers/src/survey/mod.rs | 0 .../mcp-servers/src/survey/server.rs | 0 .../mcp-servers/src/tasks/README.md | 0 .../mcp-servers/src/tasks/instructions.md | 0 {packages => crates}/mcp-servers/src/tasks/mod.rs | 0 .../mcp-servers/src/tasks/server.rs | 0 .../mcp-servers/src/tasks/task_index.rs | 0 .../mcp-servers/src/tasks/task_store.rs | 0 .../mcp-servers/src/tasks/tools/common.rs | 0 .../src/tasks/tools/create/description.md | 0 .../mcp-servers/src/tasks/tools/create/mod.rs | 0 .../mcp-servers/src/tasks/tools/get/description.md | 0 .../mcp-servers/src/tasks/tools/get/mod.rs | 0 .../mcp-servers/src/tasks/tools/list/description.md | 0 .../mcp-servers/src/tasks/tools/list/mod.rs | 0 .../mcp-servers/src/tasks/tools/mod.rs | 0 .../src/tasks/tools/update/description.md | 0 .../mcp-servers/src/tasks/tools/update/mod.rs | 0 {packages => crates}/mcp-servers/src/tasks/types.rs | 0 .../mcp-servers/src/workspace_paths.rs | 0 .../mcp-servers/tests/coding_mcp_tools.rs | 0 .../mcp-servers/tests/common/mod.rs | 0 .../mcp-servers/tests/lsp_check_errors_contract.rs | 0 .../mcp-servers/tests/lsp_diagnostics_e2e.rs | 0 .../mcp-servers/tests/lsp_operations_e2e.rs | 0 .../mcp-servers/tests/lsp_ts_diagnostics_e2e.rs | 0 .../mcp-servers/tests/lsp_ts_operations_e2e.rs | 0 {packages => crates}/mcp-servers/tests/plan_mcp.rs | 0 .../mcp-servers/tests/plugins_mcp_agents.rs | 0 .../mcp-servers/tests/plugins_mcp_skills.rs | 0 .../mcp-servers/tests/skills_self_improvement.rs | 0 .../mcp-servers/tests/stdio_transport.rs | 0 {packages => crates}/mcp-servers/tests/test_bash.rs | 0 .../tests/test_read_before_edit_safety.rs | 0 .../mcp-servers/tests/test_read_file_rule_meta.rs | 0 .../mcp-servers/tests/test_web_fetch.rs | 0 {packages => crates}/mcp-utils/CHANGELOG.md | 0 {packages => crates}/mcp-utils/Cargo.lock | 0 {packages => crates}/mcp-utils/Cargo.toml | 0 {packages => crates}/mcp-utils/README.md | 0 {packages => crates}/mcp-utils/src/client/config.rs | 0 .../mcp-utils/src/client/connection.rs | 0 .../src/client/connection_attempt_manager.rs | 0 {packages => crates}/mcp-utils/src/client/error.rs | 0 .../mcp-utils/src/client/manager.rs | 0 .../mcp-utils/src/client/mcp_client.rs | 0 {packages => crates}/mcp-utils/src/client/mod.rs | 0 {packages => crates}/mcp-utils/src/client/naming.rs | 0 .../mcp-utils/src/client/oauth_handler.rs | 0 {packages => crates}/mcp-utils/src/client/roots.rs | 0 .../mcp-utils/src/client/tool_proxy.rs | 0 {packages => crates}/mcp-utils/src/display_meta.rs | 0 .../mcp-utils/src/docs/mcp_server_config.md | 0 {packages => crates}/mcp-utils/src/lib.rs | 0 {packages => crates}/mcp-utils/src/status.rs | 0 {packages => crates}/mcp-utils/src/testing.rs | 0 {packages => crates}/mcp-utils/src/transport.rs | 0 .../mcp-utils/tests/doc_examples.rs | 0 {packages => crates}/tui/CHANGELOG.md | 0 {packages => crates}/tui/Cargo.toml | 0 {packages => crates}/tui/README.md | 0 {packages => crates}/tui/assets/sage.tmTheme | 0 {packages => crates}/tui/examples/tui_gallery.rs | 0 {packages => crates}/tui/src/combobox.rs | 0 .../tui/src/components/bordered_text_field.rs | 0 {packages => crates}/tui/src/components/checkbox.rs | 0 .../tui/src/components/component.rs | 0 {packages => crates}/tui/src/components/form.rs | 0 {packages => crates}/tui/src/components/gallery.rs | 0 {packages => crates}/tui/src/components/mod.rs | 0 .../tui/src/components/multi_select.rs | 0 .../tui/src/components/number_field.rs | 0 {packages => crates}/tui/src/components/panel.rs | 0 .../tui/src/components/radio_select.rs | 0 .../tui/src/components/select_list.rs | 0 .../tui/src/components/select_option.rs | 0 {packages => crates}/tui/src/components/spinner.rs | 0 .../tui/src/components/split_panel.rs | 0 {packages => crates}/tui/src/components/stepper.rs | 0 .../tui/src/components/text_field.rs | 0 {packages => crates}/tui/src/diffs/diff.rs | 0 {packages => crates}/tui/src/diffs/diff_types.rs | 0 {packages => crates}/tui/src/diffs/mod.rs | 0 {packages => crates}/tui/src/diffs/split_diff.rs | 0 {packages => crates}/tui/src/docs/combobox.md | 0 {packages => crates}/tui/src/docs/component.md | 0 {packages => crates}/tui/src/docs/event.md | 0 {packages => crates}/tui/src/docs/focus_ring.md | 0 {packages => crates}/tui/src/docs/form.md | 0 {packages => crates}/tui/src/docs/frame.md | 0 {packages => crates}/tui/src/docs/line.md | 0 {packages => crates}/tui/src/docs/renderer.md | 0 {packages => crates}/tui/src/docs/select_list.md | 0 {packages => crates}/tui/src/docs/span.md | 0 {packages => crates}/tui/src/docs/style.md | 0 .../tui/src/docs/terminal_session.md | 0 {packages => crates}/tui/src/docs/testing.md | 0 {packages => crates}/tui/src/docs/theme.md | 0 {packages => crates}/tui/src/docs/view_context.md | 0 {packages => crates}/tui/src/focus.rs | 0 {packages => crates}/tui/src/fuzzy_matcher.rs | 0 {packages => crates}/tui/src/lib.rs | 0 {packages => crates}/tui/src/markdown/headings.rs | 0 {packages => crates}/tui/src/markdown/mod.rs | 0 {packages => crates}/tui/src/markdown/renderer.rs | 0 .../tui/src/markdown/source_lines.rs | 0 {packages => crates}/tui/src/markdown/source_map.rs | 0 {packages => crates}/tui/src/markdown/table.rs | 0 {packages => crates}/tui/src/rendering/frame.rs | 0 {packages => crates}/tui/src/rendering/gutter.rs | 0 {packages => crates}/tui/src/rendering/line.rs | 0 {packages => crates}/tui/src/rendering/mod.rs | 0 .../tui/src/rendering/render_context.rs | 0 {packages => crates}/tui/src/rendering/renderer.rs | 0 {packages => crates}/tui/src/rendering/soft_wrap.rs | 0 {packages => crates}/tui/src/rendering/span.rs | 0 {packages => crates}/tui/src/rendering/style.rs | 0 .../tui/src/rendering/terminal_screen.rs | 0 .../tui/src/rendering/visual_frame.rs | 0 {packages => crates}/tui/src/runtime/mod.rs | 0 {packages => crates}/tui/src/runtime/terminal.rs | 0 .../tui/src/runtime/terminal_runtime.rs | 0 .../tui/src/syntax_highlighting/mod.rs | 0 .../src/syntax_highlighting/syntax_highlighter.rs | 0 .../tui/src/syntax_highlighting/syntect_bridge.rs | 0 {packages => crates}/tui/src/terminal_codes.rs | 0 {packages => crates}/tui/src/test_picker.rs | 0 {packages => crates}/tui/src/testing/helpers.rs | 0 {packages => crates}/tui/src/testing/mod.rs | 0 .../tui/src/testing/test_terminal.rs | 0 {packages => crates}/tui/src/theme/defaults.rs | 0 {packages => crates}/tui/src/theme/mod.rs | 0 {packages => crates}/tui/src/theme/syntax.rs | 0 {packages => crates}/tui/tests/combobox.rs | 0 {packages => crates}/tui/tests/components.rs | 0 .../tui/tests/components/bordered_text_field.rs | 0 .../tui/tests/components/checkbox.rs | 0 .../tui/tests/components/multi_select.rs | 0 .../tui/tests/components/number_field.rs | 0 .../tui/tests/components/radio_select.rs | 0 .../tui/tests/components/spinner.rs | 0 .../tui/tests/components/split_panel.rs | 0 .../tui/tests/components/stepper.rs | 0 .../tui/tests/components/text_field.rs | 0 {packages => crates}/tui/tests/markdown.rs | 0 {packages => crates}/utils/CHANGELOG.md | 0 {packages => crates}/utils/Cargo.toml | 0 {packages => crates}/utils/README.md | 0 {packages => crates}/utils/src/lib.rs | 0 {packages => crates}/utils/src/markdown_file.rs | 0 {packages => crates}/utils/src/plan_review.rs | 0 {packages => crates}/utils/src/reasoning.rs | 0 {packages => crates}/utils/src/resource_path.rs | 0 {packages => crates}/utils/src/serde_helpers.rs | 0 {packages => crates}/utils/src/settings.rs | 0 {packages => crates}/utils/src/shell_expander.rs | 0 {packages => crates}/utils/src/substitution.rs | 0 {packages => crates}/utils/src/variables.rs | 0 {packages => crates}/wisp/CHANGELOG.md | 0 {packages => crates}/wisp/Cargo.toml | 0 {packages => crates}/wisp/README.md | 2 +- {packages => crates}/wisp/examples/wisp_gallery.rs | 0 {packages => crates}/wisp/src/cli.rs | 0 .../wisp/src/components/app/attachments.rs | 0 .../wisp/src/components/app/git_diff_mode.rs | 0 {packages => crates}/wisp/src/components/app/mod.rs | 0 .../wisp/src/components/app/plan_review_mode.rs | 0 .../wisp/src/components/app/screen_router.rs | 0 .../wisp/src/components/app/view.rs | 0 .../wisp/src/components/command_picker.rs | 0 .../components/common/anchored_surface_builder.rs | 0 .../wisp/src/components/common/cached_layer.rs | 0 .../wisp/src/components/common/input_box.rs | 0 .../wisp/src/components/common/key_hints.rs | 0 .../wisp/src/components/common/mod.rs | 0 .../wisp/src/components/common/vertical_cursor.rs | 0 .../wisp/src/components/context_bar.rs | 0 .../wisp/src/components/conversation_screen.rs | 0 .../wisp/src/components/conversation_window.rs | 0 .../wisp/src/components/dropped_files.rs | 0 .../wisp/src/components/elicitation_form.rs | 0 .../wisp/src/components/file_list_panel.rs | 0 .../wisp/src/components/file_picker.rs | 0 .../wisp/src/components/file_tree.rs | 0 .../src/components/git_diff/git_diff_compositor.rs | 0 .../wisp/src/components/git_diff/git_diff_panel.rs | 0 .../wisp/src/components/git_diff/mod.rs | 0 .../wisp/src/components/git_diff/patch_renderer.rs | 0 .../src/components/git_diff/split_patch_renderer.rs | 0 .../wisp/src/components/input_prompt.rs | 0 {packages => crates}/wisp/src/components/logo.txt | 0 {packages => crates}/wisp/src/components/mod.rs | 0 .../wisp/src/components/model_selector.rs | 0 .../wisp/src/components/plan_review/document.rs | 0 .../wisp/src/components/plan_review/mod.rs | 0 .../src/components/plan_review/outline_panel.rs | 0 .../wisp/src/components/plan_review/plan_panel.rs | 0 .../wisp/src/components/plan_tracker.rs | 0 .../wisp/src/components/plan_view.rs | 0 .../wisp/src/components/progress_indicator.rs | 0 .../wisp/src/components/prompt_composer.rs | 0 .../wisp/src/components/prompt_search_picker.rs | 0 .../wisp/src/components/provider_login.rs | 0 .../wisp/src/components/reasoning_bar.rs | 0 .../src/components/review_comments/anchored_rows.rs | 0 .../src/components/review_comments/comment_box.rs | 0 .../src/components/review_comments/comment_group.rs | 0 .../src/components/review_comments/draft_comment.rs | 0 .../wisp/src/components/review_comments/mod.rs | 0 .../wisp/src/components/review_comments/model.rs | 0 .../components/review_comments/review_surface.rs | 0 .../wisp/src/components/review_comments/surface.rs | 0 .../wisp/src/components/server_status.rs | 0 .../wisp/src/components/session_picker.rs | 0 .../wisp/src/components/status_line.rs | 0 .../wisp/src/components/sub_agent_tracker.rs | 0 .../wisp/src/components/text_input.rs | 0 .../wisp/src/components/thought_message.rs | 0 .../wisp/src/components/tool_call_status_view.rs | 0 .../wisp/src/components/tool_call_statuses.rs | 0 .../wisp/src/components/tracked_tool_call.rs | 0 .../wisp/src/components/workspace_picker.rs | 0 {packages => crates}/wisp/src/docs/app.md | 0 {packages => crates}/wisp/src/docs/app_error.md | 0 .../wisp/src/docs/command_picker.md | 0 .../wisp/src/docs/components_module.md | 0 .../wisp/src/docs/conversation_screen.md | 0 .../wisp/src/docs/conversation_window.md | 0 {packages => crates}/wisp/src/docs/file_picker.md | 0 .../wisp/src/docs/git_diff_document.md | 0 .../wisp/src/docs/git_diff_error.md | 0 {packages => crates}/wisp/src/docs/key_binding.md | 0 {packages => crates}/wisp/src/docs/keybindings.md | 0 {packages => crates}/wisp/src/docs/runtime_state.md | 0 .../wisp/src/docs/settings_module.md | 0 {packages => crates}/wisp/src/docs/status_line.md | 0 {packages => crates}/wisp/src/docs/text_input.md | 0 {packages => crates}/wisp/src/docs/wisp_settings.md | 0 {packages => crates}/wisp/src/error.rs | 0 {packages => crates}/wisp/src/git_diff.rs | 0 {packages => crates}/wisp/src/keybindings.rs | 0 {packages => crates}/wisp/src/lib.rs | 0 {packages => crates}/wisp/src/main.rs | 0 {packages => crates}/wisp/src/runtime_state.rs | 0 .../wisp/src/session_loading_buffer.rs | 0 {packages => crates}/wisp/src/settings/menu.rs | 0 {packages => crates}/wisp/src/settings/mod.rs | 0 {packages => crates}/wisp/src/settings/overlay.rs | 0 {packages => crates}/wisp/src/settings/picker.rs | 0 {packages => crates}/wisp/src/settings/types.rs | 0 {packages => crates}/wisp/src/test_helpers.rs | 0 {packages => crates}/wisp/src/workspace_status.rs | 0 {packages => crates}/wisp/tests/app_tests.rs | 0 .../wisp/tests/app_tests/command_picker_tests.rs | 0 {packages => crates}/wisp/tests/app_tests/common.rs | 0 .../wisp/tests/app_tests/file_picker_tests.rs | 0 .../wisp/tests/app_tests/git_diff_tests.rs | 0 .../wisp/tests/app_tests/input_prompt_tests.rs | 0 .../wisp/tests/app_tests/lifecycle_tests.rs | 0 .../tests/app_tests/mcp_oauth_elicitation_tests.rs | 0 .../wisp/tests/app_tests/message_streaming_tests.rs | 0 .../wisp/tests/app_tests/mode_cycling_tests.rs | 0 .../wisp/tests/app_tests/notifications_tests.rs | 0 .../tests/app_tests/progress_indicator_tests.rs | 0 .../wisp/tests/app_tests/prompt_search_tests.rs | 0 .../wisp/tests/app_tests/session_tests.rs | 0 .../wisp/tests/app_tests/settings_menu_tests.rs | 0 .../wisp/tests/app_tests/small_terminal_tests.rs | 0 .../wisp/tests/app_tests/status_line_tests.rs | 0 .../wisp/tests/app_tests/tool_calls_tests.rs | 0 .../wisp/tests/app_tests/workspace_move_tests.rs | 0 {packages => crates}/wisp/tests/component_tests.rs | 0 .../wisp/tests/component_tests/command_picker.rs | 0 .../tests/component_tests/conversation_window.rs | 0 .../wisp/tests/component_tests/file_list_panel.rs | 0 .../wisp/tests/component_tests/git_diff_view.rs | 0 .../wisp/tests/component_tests/model_selector.rs | 0 .../wisp/tests/component_tests/plan_review_view.rs | 0 .../wisp/tests/component_tests/settings_menu.rs | 0 .../wisp/tests/component_tests/settings_overlay.rs | 0 .../wisp/tests/component_tests/status_line.rs | 0 .../wisp/tests/component_tests/support/git_diff.rs | 0 .../wisp/tests/component_tests/support/mod.rs | 0 .../tests/component_tests/support/tool_events.rs | 0 .../tests/component_tests/tool_call_statuses.rs | 0 .../wisp/tests/renderer_scrollback_tests.rs | 0 packages/aether-sdk/scripts/generate-types.mjs | 12 ++++++------ .../test/fixtures/sdk-weather-agent/Dockerfile | 1 + {website => packages/website}/README.md | 0 {website => packages/website}/astro.config.mjs | 0 {website => packages/website}/ec.config.mjs | 0 {website => packages/website}/package.json | 0 {website => packages/website}/public/CNAME | 0 .../website}/public/demos/any-model.cast | 0 .../website}/public/demos/demo.cast | 0 .../website}/public/demos/llm-demo.cast | 0 {website => packages/website}/public/favicon.svg | 0 {website => packages/website}/public/install | 0 .../website}/src/asciinema-player.d.ts | 0 .../website}/src/assets/houston.webp | Bin .../website}/src/components/CallToAction.astro | 0 .../website}/src/components/CodeTabs.astro | 0 .../website}/src/components/Hero.astro | 0 .../website}/src/components/InstallTabs.astro | 0 .../website}/src/components/LandingButton.astro | 0 .../website}/src/components/LandingHeader.astro | 0 .../website}/src/components/StarlightHead.astro | 0 .../website}/src/components/TerminalDemo.astro | 0 .../website}/src/components/ThemeSwitcher.astro | 0 .../website}/src/components/ToolShowcaseItem.astro | 0 {website => packages/website}/src/consts.ts | 0 {website => packages/website}/src/content.config.ts | 0 .../content/docs/aether/built-in-servers/coding.mdx | 0 .../content/docs/aether/built-in-servers/plan.mdx | 0 .../aether/built-in-servers/skills-commands.mdx | 0 .../docs/aether/built-in-servers/subagents.mdx | 0 .../content/docs/aether/built-in-servers/survey.mdx | 0 .../content/docs/aether/built-in-servers/tasks.mdx | 2 +- .../src/content/docs/aether/introduction.mdx | 4 ++-- .../docs/aether/running/editor-integration.mdx | 0 .../src/content/docs/aether/running/headless.mdx | 0 .../content/docs/aether/settings/llm-providers.mdx | 0 .../content/docs/aether/settings/mcp-servers.mdx | 0 .../src/content/docs/aether/settings/overview.mdx | 0 .../content/docs/aether/settings/system-prompts.mdx | 0 .../docs/aether/settings/user-project-settings.mdx | 0 .../src/content/docs/aether/terminal/git-diff.mdx | 0 .../content/docs/aether/terminal/keybindings.mdx | 0 .../src/content/docs/aether/terminal/overview.mdx | 0 .../src/content/docs/aether/terminal/sessions.mdx | 0 .../src/content/docs/aether/terminal/settings.mdx | 0 .../src/content/docs/getting-started/overview.mdx | 0 .../website}/src/content/docs/libraries/rust.mdx | 0 .../src/content/docs/libraries/typescript-sdk.mdx | 0 .../website}/src/layouts/Landing.astro | 0 .../website}/src/loaders/settings-schema.ts | 2 +- {website => packages/website}/src/pages/index.mdx | 0 {website => packages/website}/src/styles/global.css | 0 .../website}/src/styles/starlight.css | 0 {website => packages/website}/src/styles/themes.css | 0 {website => packages/website}/tsconfig.json | 0 795 files changed, 18 insertions(+), 17 deletions(-) rename {packages => crates}/acp-utils/CHANGELOG.md (100%) rename {packages => crates}/acp-utils/Cargo.toml (100%) rename {packages => crates}/acp-utils/README.md (100%) rename {packages => crates}/acp-utils/src/client/error.rs (100%) rename {packages => crates}/acp-utils/src/client/event.rs (100%) rename {packages => crates}/acp-utils/src/client/mod.rs (100%) rename {packages => crates}/acp-utils/src/client/prompt_handle.rs (100%) rename {packages => crates}/acp-utils/src/client/session.rs (100%) rename {packages => crates}/acp-utils/src/client/tokio_agent.rs (100%) rename {packages => crates}/acp-utils/src/config_meta.rs (100%) rename {packages => crates}/acp-utils/src/config_option_id.rs (100%) rename {packages => crates}/acp-utils/src/content.rs (100%) rename {packages => crates}/acp-utils/src/lib.rs (100%) rename {packages => crates}/acp-utils/src/notifications.rs (100%) rename {packages => crates}/acp-utils/src/server/error.rs (100%) rename {packages => crates}/acp-utils/src/server/mod.rs (100%) rename {packages => crates}/acp-utils/src/settings.rs (100%) rename {packages => crates}/acp-utils/src/testing.rs (100%) rename {packages => crates}/acp-utils/tests/tokio_agent.rs (100%) rename {packages => crates}/aether-auth/CHANGELOG.md (100%) rename {packages => crates}/aether-auth/Cargo.toml (100%) rename {packages => crates}/aether-auth/README.md (100%) rename {packages => crates}/aether-auth/src/browser.rs (100%) rename {packages => crates}/aether-auth/src/credential.rs (100%) rename {packages => crates}/aether-auth/src/encrypted_file.rs (100%) rename {packages => crates}/aether-auth/src/error.rs (100%) rename {packages => crates}/aether-auth/src/fake.rs (100%) rename {packages => crates}/aether-auth/src/handler.rs (100%) rename {packages => crates}/aether-auth/src/keyring/mod.rs (100%) rename {packages => crates}/aether-auth/src/lib.rs (100%) rename {packages => crates}/aether-auth/src/mcp/credential_store.rs (100%) rename {packages => crates}/aether-auth/src/mcp/integration.rs (100%) rename {packages => crates}/aether-auth/src/mcp/mod.rs (100%) rename {packages => crates}/aether-auth/src/oauth.md (100%) rename {packages => crates}/aether-auth/src/oauth_success.html (100%) rename {packages => crates}/aether-cli/CHANGELOG.md (100%) rename {packages => crates}/aether-cli/Cargo.toml (100%) rename {packages => crates}/aether-cli/README.md (100%) rename {packages => crates}/aether-cli/src/acp/agent.rs (100%) rename {packages => crates}/aether-cli/src/acp/agent_key.rs (100%) rename {packages => crates}/aether-cli/src/acp/agent_runtime.rs (100%) rename {packages => crates}/aether-cli/src/acp/config_setting.rs (100%) rename {packages => crates}/aether-cli/src/acp/error.rs (100%) rename {packages => crates}/aether-cli/src/acp/fake_prompt_mcp.rs (100%) rename {packages => crates}/aether-cli/src/acp/mod.rs (100%) rename {packages => crates}/aether-cli/src/acp/model_config.rs (100%) rename {packages => crates}/aether-cli/src/acp/prompt_history_index.rs (100%) rename {packages => crates}/aether-cli/src/acp/protocol/commands.rs (100%) rename {packages => crates}/aether-cli/src/acp/protocol/content.rs (100%) rename {packages => crates}/aether-cli/src/acp/protocol/events.rs (100%) rename {packages => crates}/aether-cli/src/acp/protocol/mcp.rs (100%) rename {packages => crates}/aether-cli/src/acp/protocol/mod.rs (100%) rename {packages => crates}/aether-cli/src/acp/protocol/replay.rs (100%) rename {packages => crates}/aether-cli/src/acp/session_actor.rs (100%) rename {packages => crates}/aether-cli/src/acp/session_config_state.rs (100%) rename {packages => crates}/aether-cli/src/acp/session_factory.rs (100%) rename {packages => crates}/aether-cli/src/acp/session_store.rs (100%) rename {packages => crates}/aether-cli/src/acp/slash_commands.rs (100%) rename {packages => crates}/aether-cli/src/acp/state.rs (100%) rename {packages => crates}/aether-cli/src/acp/stdio.rs (100%) rename {packages => crates}/aether-cli/src/acp/testing.rs (100%) rename {packages => crates}/aether-cli/src/credentials.rs (100%) rename {packages => crates}/aether-cli/src/error.rs (100%) rename {packages => crates}/aether-cli/src/generate_command/mod.rs (100%) rename {packages => crates}/aether-cli/src/headless/error.rs (100%) rename {packages => crates}/aether-cli/src/headless/mod.rs (100%) rename {packages => crates}/aether-cli/src/headless/run.rs (100%) rename {packages => crates}/aether-cli/src/init/build_settings.rs (100%) rename {packages => crates}/aether-cli/src/init/harness.rs (100%) rename {packages => crates}/aether-cli/src/init/mod.rs (100%) rename {packages => crates}/aether-cli/src/init/recommendations.rs (100%) rename {packages => crates}/aether-cli/src/init/templates/SYSTEM.md (100%) rename {packages => crates}/aether-cli/src/init/templates/agents/codebase-explorer/AGENTS.md (100%) rename {packages => crates}/aether-cli/src/init/templates/skills/aether/SKILL.md (100%) rename {packages => crates}/aether-cli/src/init/tui_runner.rs (100%) rename {packages => crates}/aether-cli/src/lib.rs (100%) rename {packages => crates}/aether-cli/src/main.rs (100%) rename {packages => crates}/aether-cli/src/mcp_config_args.rs (100%) rename {packages => crates}/aether-cli/src/output.rs (100%) rename {packages => crates}/aether-cli/src/provider_connection_args.rs (100%) rename {packages => crates}/aether-cli/src/resolve.rs (100%) rename {packages => crates}/aether-cli/src/runtime.rs (100%) rename {packages => crates}/aether-cli/src/sandbox.rs (99%) rename {packages => crates}/aether-cli/src/settings/mod.rs (100%) rename {packages => crates}/aether-cli/src/settings_args.rs (100%) rename {packages => crates}/aether-cli/src/show_prompt/mod.rs (100%) rename {packages => crates}/aether-cli/src/show_prompt/run.rs (100%) rename {packages => crates}/aether-cli/src/workspace/git.rs (100%) rename {packages => crates}/aether-cli/src/workspace/mod.rs (100%) rename {packages => crates}/aether-cli/src/workspace/registry.rs (100%) rename {packages => crates}/aether-cli/src/workspace/testing.rs (100%) rename {packages => crates}/aether-cli/tests/acp_agent_switching.rs (100%) rename {packages => crates}/aether-cli/tests/acp_cancellation.rs (100%) rename {packages => crates}/aether-cli/tests/acp_prompt_search.rs (100%) rename {packages => crates}/aether-cli/tests/acp_stdio.rs (100%) rename {packages => crates}/aether-cli/tests/acp_workspace_move.rs (100%) rename {packages => crates}/aether-cli/tests/run_init.rs (100%) rename {packages => crates}/aether-cli/tests/slash_commands.rs (100%) rename {packages => crates}/aether-core/CHANGELOG.md (100%) rename {packages => crates}/aether-core/Cargo.lock (100%) rename {packages => crates}/aether-core/Cargo.toml (100%) rename {packages => crates}/aether-core/README.md (100%) rename {packages => crates}/aether-core/examples/anthropic_test.rs (100%) rename {packages => crates}/aether-core/examples/basic_agent.rs (100%) rename {packages => crates}/aether-core/examples/mcp.json (100%) rename {packages => crates}/aether-core/examples/mcp_agent.rs (100%) rename {packages => crates}/aether-core/src/agent_spec.rs (100%) rename {packages => crates}/aether-core/src/context/compaction.rs (100%) rename {packages => crates}/aether-core/src/context/ext.rs (100%) rename {packages => crates}/aether-core/src/context/mod.rs (100%) rename {packages => crates}/aether-core/src/context/prompts/summarization.md (100%) rename {packages => crates}/aether-core/src/context/token_tracker.rs (100%) rename {packages => crates}/aether-core/src/core/agent.rs (100%) rename {packages => crates}/aether-core/src/core/agent_builder.rs (100%) rename {packages => crates}/aether-core/src/core/error.rs (100%) rename {packages => crates}/aether-core/src/core/mod.rs (100%) rename {packages => crates}/aether-core/src/core/prompt.rs (100%) rename {packages => crates}/aether-core/src/core/retry_config.rs (100%) rename {packages => crates}/aether-core/src/docs/basic_agent.md (100%) rename {packages => crates}/aether-core/src/docs/prompt_source.md (100%) rename {packages => crates}/aether-core/src/docs/tool_filter.md (100%) rename {packages => crates}/aether-core/src/events/acp.rs (100%) rename {packages => crates}/aether-core/src/events/agent_message.rs (100%) rename {packages => crates}/aether-core/src/events/mod.rs (100%) rename {packages => crates}/aether-core/src/events/sub_agent_progress.rs (100%) rename {packages => crates}/aether-core/src/events/user_message.rs (100%) rename {packages => crates}/aether-core/src/lib.rs (100%) rename {packages => crates}/aether-core/src/mcp/mcp_builder.rs (100%) rename {packages => crates}/aether-core/src/mcp/mod.rs (100%) rename {packages => crates}/aether-core/src/mcp/run_mcp_task.rs (100%) rename {packages => crates}/aether-core/src/mcp/tool_bridge.rs (100%) rename {packages => crates}/aether-core/src/testing/agent_message_builder.rs (100%) rename {packages => crates}/aether-core/src/testing/fake_mcp.rs (100%) rename {packages => crates}/aether-core/src/testing/mod.rs (100%) rename {packages => crates}/aether-core/src/testing/utils.rs (100%) rename {packages => crates}/aether-core/tests/agent.rs (100%) rename {packages => crates}/aether-core/tests/agent/agent_tests.rs (100%) rename {packages => crates}/aether-core/tests/agent/cancel_tests.rs (100%) rename {packages => crates}/aether-core/tests/agent/clear_context_tests.rs (100%) rename {packages => crates}/aether-core/tests/agent/error_recovery_tests.rs (100%) rename {packages => crates}/aether-core/tests/agent/model_switch_tests.rs (100%) rename {packages => crates}/aether-core/tests/agent/queued_message_tests.rs (100%) rename {packages => crates}/aether-core/tests/agent/retry_tests.rs (100%) rename {packages => crates}/aether-core/tests/doc_examples.rs (100%) rename {packages => crates}/aether-core/tests/mcp.rs (100%) rename {packages => crates}/aether-core/tests/mcp/config_parser_tests.rs (100%) rename {packages => crates}/aether-core/tests/mcp/instructions_tests.rs (100%) rename {packages => crates}/aether-core/tests/mcp/oauth_tests.rs (100%) rename {packages => crates}/aether-core/tests/mcp/tool_proxy_tests.rs (100%) rename {packages => crates}/aether-core/tests/mcp/url_elicitation_tests.rs (100%) rename {packages => crates}/aether-evals/CHANGELOG.md (100%) rename {packages => crates}/aether-evals/Cargo.toml (100%) rename {packages => crates}/aether-evals/README.md (100%) rename {packages => crates}/aether-evals/src/agents/agent.rs (100%) rename {packages => crates}/aether-evals/src/agents/docker.rs (100%) rename {packages => crates}/aether-evals/src/agents/docker_agent.rs (100%) rename {packages => crates}/aether-evals/src/agents/env.rs (100%) rename {packages => crates}/aether-evals/src/agents/fake_agent.rs (100%) rename {packages => crates}/aether-evals/src/agents/mod.rs (100%) rename {packages => crates}/aether-evals/src/agents/transcript.rs (100%) rename {packages => crates}/aether-evals/src/assertions.rs (100%) rename {packages => crates}/aether-evals/src/error.rs (100%) rename {packages => crates}/aether-evals/src/evals/diff.rs (100%) rename {packages => crates}/aether-evals/src/evals/mod.rs (100%) rename {packages => crates}/aether-evals/src/evals/task.rs (100%) rename {packages => crates}/aether-evals/src/evals/transcript.rs (100%) rename {packages => crates}/aether-evals/src/evals/workspace.rs (100%) rename {packages => crates}/aether-evals/src/git_repo.rs (100%) rename {packages => crates}/aether-evals/src/judge.rs (100%) rename {packages => crates}/aether-evals/src/lib.rs (100%) rename {packages => crates}/aether-evals/tests/docker_agent_tests.rs (100%) rename {packages => crates}/aether-evals/tests/fake_agent_tests.rs (100%) rename {packages => crates}/aether-lspd/CHANGELOG.md (100%) rename {packages => crates}/aether-lspd/Cargo.toml (100%) rename {packages => crates}/aether-lspd/README.md (100%) rename {packages => crates}/aether-lspd/src/client.rs (100%) rename {packages => crates}/aether-lspd/src/client_connection.rs (100%) rename {packages => crates}/aether-lspd/src/daemon.rs (100%) rename {packages => crates}/aether-lspd/src/diagnostics_store.rs (100%) rename {packages => crates}/aether-lspd/src/docs/client.md (100%) rename {packages => crates}/aether-lspd/src/docs/client_error.md (100%) rename {packages => crates}/aether-lspd/src/docs/daemon.md (100%) rename {packages => crates}/aether-lspd/src/docs/daemon_error.md (100%) rename {packages => crates}/aether-lspd/src/docs/language_catalog.md (100%) rename {packages => crates}/aether-lspd/src/docs/protocol.md (100%) rename {packages => crates}/aether-lspd/src/docs/socket_path.md (100%) rename {packages => crates}/aether-lspd/src/docs/testing.md (100%) rename {packages => crates}/aether-lspd/src/document_lifecycle.rs (100%) rename {packages => crates}/aether-lspd/src/error.rs (100%) rename {packages => crates}/aether-lspd/src/file_watcher.rs (100%) rename {packages => crates}/aether-lspd/src/language_catalog.rs (100%) rename {packages => crates}/aether-lspd/src/lib.rs (100%) rename {packages => crates}/aether-lspd/src/lsp_utils.rs (100%) rename {packages => crates}/aether-lspd/src/main.rs (100%) rename {packages => crates}/aether-lspd/src/pid_lockfile.rs (100%) rename {packages => crates}/aether-lspd/src/process_transport.rs (100%) rename {packages => crates}/aether-lspd/src/protocol.rs (100%) rename {packages => crates}/aether-lspd/src/refresh_queue.rs (100%) rename {packages => crates}/aether-lspd/src/socket_path.rs (100%) rename {packages => crates}/aether-lspd/src/testing.rs (100%) rename {packages => crates}/aether-lspd/src/uri.rs (100%) rename {packages => crates}/aether-lspd/src/workspace_registry.rs (100%) rename {packages => crates}/aether-lspd/src/workspace_session.rs (100%) rename {packages => crates}/aether-lspd/tests/common/cargo_project.rs (100%) rename {packages => crates}/aether-lspd/tests/common/daemon_harness.rs (100%) rename {packages => crates}/aether-lspd/tests/common/fake_lsp_server.py (100%) rename {packages => crates}/aether-lspd/tests/common/mod.rs (100%) rename {packages => crates}/aether-lspd/tests/e2e_error_handling.rs (100%) rename {packages => crates}/aether-lspd/tests/e2e_lifecycle.rs (100%) rename {packages => crates}/aether-lspd/tests/e2e_requests.rs (100%) rename {packages => crates}/aether-lspd/tests/e2e_smoke_real.rs (100%) rename {packages => crates}/aether-project/CHANGELOG.md (100%) rename {packages => crates}/aether-project/Cargo.toml (100%) rename {packages => crates}/aether-project/README.md (100%) rename {packages => crates}/aether-project/src/aether_settings.rs (100%) rename {packages => crates}/aether-project/src/agent_catalog.rs (100%) rename {packages => crates}/aether-project/src/agent_config.rs (100%) rename {packages => crates}/aether-project/src/bin/aether-settings-schema.rs (100%) rename {packages => crates}/aether-project/src/docs/aether_settings.md (100%) rename {packages => crates}/aether-project/src/docs/agent_config.md (100%) rename {packages => crates}/aether-project/src/docs/mcp_source_spec.md (100%) rename {packages => crates}/aether-project/src/error.rs (100%) rename {packages => crates}/aether-project/src/lib.rs (100%) rename {packages => crates}/aether-project/src/mcp_config_source_config.rs (100%) rename {packages => crates}/aether-project/src/prompt_catalog.rs (99%) rename {packages => crates}/aether-project/src/prompt_file.rs (100%) rename {packages => crates}/aether-project/tests/doc_examples.rs (100%) rename {packages => crates}/aether-schemas/CHANGELOG.md (100%) rename {packages => crates}/aether-schemas/Cargo.toml (100%) rename {packages => crates}/aether-schemas/src/main.rs (100%) rename {packages => crates}/doctest/Cargo.toml (100%) rename {packages => crates}/doctest/src/lib.rs (100%) rename {packages => crates}/internal-evals/Cargo.toml (100%) rename {packages => crates}/internal-evals/README.md (86%) rename {packages => crates}/internal-evals/examples/Dockerfile (92%) rename {packages => crates}/internal-evals/examples/aether-eval-agent (100%) rename {packages => crates}/internal-evals/prompts/coding_agent.md (100%) rename {packages => crates}/internal-evals/tests/batched_edits.rs (100%) rename {packages => crates}/internal-evals/tests/coding_edit_file.rs (100%) rename {packages => crates}/internal-evals/tests/common/mod.rs (100%) rename {packages => crates}/llm-codegen/CHANGELOG.md (100%) rename {packages => crates}/llm-codegen/Cargo.toml (100%) rename {packages => crates}/llm-codegen/README.md (100%) rename {packages => crates}/llm-codegen/src/lib.rs (100%) rename {packages => crates}/llm/CHANGELOG.md (100%) rename {packages => crates}/llm/Cargo.toml (100%) rename {packages => crates}/llm/README.md (100%) rename {packages => crates}/llm/build.rs (100%) rename {packages => crates}/llm/examples/bedrock_inference_profile.rs (100%) rename {packages => crates}/llm/models.json (100%) rename {packages => crates}/llm/scripts/fetch-models.sh (100%) rename {packages => crates}/llm/src/alloyed.rs (100%) rename {packages => crates}/llm/src/catalog/bedrock.rs (100%) rename {packages => crates}/llm/src/catalog/mod.rs (100%) rename {packages => crates}/llm/src/chat_message.rs (100%) rename {packages => crates}/llm/src/context.rs (100%) rename {packages => crates}/llm/src/credential.rs (100%) rename {packages => crates}/llm/src/docs/alloyed.md (100%) rename {packages => crates}/llm/src/docs/catalog.md (100%) rename {packages => crates}/llm/src/docs/chat_message.md (100%) rename {packages => crates}/llm/src/docs/content_block.md (100%) rename {packages => crates}/llm/src/docs/context.md (100%) rename {packages => crates}/llm/src/docs/llm_error.md (100%) rename {packages => crates}/llm/src/docs/llm_response.md (100%) rename {packages => crates}/llm/src/docs/parser.md (100%) rename {packages => crates}/llm/src/docs/provider_connection_override.md (100%) rename {packages => crates}/llm/src/docs/provider_factory.md (100%) rename {packages => crates}/llm/src/docs/providers.md (100%) rename {packages => crates}/llm/src/docs/stop_reason.md (100%) rename {packages => crates}/llm/src/docs/streaming_model_provider.md (100%) rename {packages => crates}/llm/src/docs/testing.md (100%) rename {packages => crates}/llm/src/docs/tools.md (100%) rename {packages => crates}/llm/src/error.rs (100%) rename {packages => crates}/llm/src/lib.rs (100%) rename {packages => crates}/llm/src/llm_response.rs (100%) rename {packages => crates}/llm/src/model_settings.rs (100%) rename {packages => crates}/llm/src/parser.rs (100%) rename {packages => crates}/llm/src/provider.rs (100%) rename {packages => crates}/llm/src/provider_connection.rs (100%) rename {packages => crates}/llm/src/providers/anthropic/mappers.rs (100%) rename {packages => crates}/llm/src/providers/anthropic/mod.rs (100%) rename {packages => crates}/llm/src/providers/anthropic/provider.rs (100%) rename {packages => crates}/llm/src/providers/anthropic/streaming.rs (100%) rename {packages => crates}/llm/src/providers/anthropic/types.rs (100%) rename {packages => crates}/llm/src/providers/bedrock/mappers.rs (100%) rename {packages => crates}/llm/src/providers/bedrock/mod.rs (100%) rename {packages => crates}/llm/src/providers/bedrock/provider.rs (100%) rename {packages => crates}/llm/src/providers/bedrock/streaming.rs (100%) rename {packages => crates}/llm/src/providers/codex/mappers.rs (100%) rename {packages => crates}/llm/src/providers/codex/mod.rs (100%) rename {packages => crates}/llm/src/providers/codex/oauth.rs (100%) rename {packages => crates}/llm/src/providers/codex/provider.rs (100%) rename {packages => crates}/llm/src/providers/codex/streaming.rs (100%) rename {packages => crates}/llm/src/providers/gemini/mod.rs (100%) rename {packages => crates}/llm/src/providers/gemini/provider.rs (100%) rename {packages => crates}/llm/src/providers/local/discovery.rs (100%) rename {packages => crates}/llm/src/providers/local/llama_cpp.rs (100%) rename {packages => crates}/llm/src/providers/local/mod.rs (100%) rename {packages => crates}/llm/src/providers/local/ollama.rs (100%) rename {packages => crates}/llm/src/providers/local/util.rs (100%) rename {packages => crates}/llm/src/providers/mod.rs (100%) rename {packages => crates}/llm/src/providers/openai/mappers.rs (100%) rename {packages => crates}/llm/src/providers/openai/mod.rs (100%) rename {packages => crates}/llm/src/providers/openai/provider.rs (100%) rename {packages => crates}/llm/src/providers/openai/responses_provider.rs (100%) rename {packages => crates}/llm/src/providers/openai/streaming.rs (100%) rename {packages => crates}/llm/src/providers/openai_compatible/config.rs (100%) rename {packages => crates}/llm/src/providers/openai_compatible/generic.rs (100%) rename {packages => crates}/llm/src/providers/openai_compatible/mod.rs (100%) rename {packages => crates}/llm/src/providers/openai_compatible/streaming.rs (100%) rename {packages => crates}/llm/src/providers/openai_compatible/types.rs (100%) rename {packages => crates}/llm/src/providers/openrouter/mod.rs (100%) rename {packages => crates}/llm/src/providers/openrouter/provider.rs (100%) rename {packages => crates}/llm/src/providers/openrouter/types.rs (100%) rename {packages => crates}/llm/src/providers/tool_call_collector.rs (100%) rename {packages => crates}/llm/src/reasoning.rs (100%) rename {packages => crates}/llm/src/testing/fake_llm.rs (100%) rename {packages => crates}/llm/src/testing/llm_response.rs (100%) rename {packages => crates}/llm/src/testing/mod.rs (100%) rename {packages => crates}/llm/src/tool_schema.rs (100%) rename {packages => crates}/llm/src/tools.rs (100%) rename {packages => crates}/llm/src/types.rs (100%) rename {packages => crates}/llm/tests/doc_examples.rs (100%) rename {packages => crates}/llm/tests/fixtures/README.md (100%) rename {packages => crates}/llm/tests/fixtures/anthropic/01_minimal.sse (100%) rename {packages => crates}/llm/tests/fixtures/anthropic/02_tool_call.sse (100%) rename {packages => crates}/llm/tests/fixtures/anthropic/03_cache_write.sse (100%) rename {packages => crates}/llm/tests/fixtures/anthropic/04_cache_read.sse (100%) rename {packages => crates}/llm/tests/fixtures/anthropic/05_reasoning.sse (100%) rename {packages => crates}/llm/tests/fixtures/openai/01_minimal.sse (100%) rename {packages => crates}/llm/tests/fixtures/openai/02_tool_call.sse (100%) rename {packages => crates}/llm/tests/fixtures/openai/03_reasoning.sse (100%) rename {packages => crates}/llm/tests/fixtures/openai_responses/01_minimal.sse (100%) rename {packages => crates}/llm/tests/fixtures/openai_responses/02_reasoning.sse (100%) rename {packages => crates}/llm/tests/fixtures/openrouter/01_minimal.sse (100%) rename {packages => crates}/llm/tests/fixtures/openrouter/02_tool_call.sse (100%) rename {packages => crates}/llm/tests/fixtures/z_ai/01_minimal.sse (100%) rename {packages => crates}/llm/tests/fixtures/z_ai/02_tool_call.sse (100%) rename {packages => crates}/llm/tests/providers.rs (100%) rename {packages => crates}/llm/tests/providers/anthropic/capture_fixtures.rs (100%) rename {packages => crates}/llm/tests/providers/anthropic/fixture_tests.rs (100%) rename {packages => crates}/llm/tests/providers/codex/fixture_tests.rs (100%) rename {packages => crates}/llm/tests/providers/common.rs (100%) rename {packages => crates}/llm/tests/providers/openai/capture_fixtures.rs (100%) rename {packages => crates}/llm/tests/providers/openai/fixture_tests.rs (100%) rename {packages => crates}/llm/tests/providers/openai/streaming_tests.rs (100%) rename {packages => crates}/llm/tests/providers/openrouter/capture_fixtures.rs (100%) rename {packages => crates}/llm/tests/providers/openrouter/fixture_tests.rs (100%) rename {packages => crates}/llm/tests/providers/openrouter/usage_tests.rs (100%) rename {packages => crates}/llm/tests/providers/z_ai/capture_fixtures.rs (100%) rename {packages => crates}/llm/tests/providers/z_ai/fixture_tests.rs (100%) rename {packages => crates}/llm/tests/providers/z_ai/types_tests.rs (100%) rename {packages => crates}/mcp-servers/CHANGELOG.md (100%) rename {packages => crates}/mcp-servers/Cargo.toml (100%) rename {packages => crates}/mcp-servers/README.md (100%) rename {packages => crates}/mcp-servers/examples/lsp_diagnostics.rs (100%) rename {packages => crates}/mcp-servers/src/bin/stdio.rs (100%) rename {packages => crates}/mcp-servers/src/coding/README.md (100%) rename {packages => crates}/mcp-servers/src/coding/default_tools.rs (100%) rename {packages => crates}/mcp-servers/src/coding/error.rs (100%) rename {packages => crates}/mcp-servers/src/coding/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/prompt_rule_matcher.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/ast_grep/description.md (100%) rename {packages => crates}/mcp-servers/src/coding/tools/ast_grep/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/bash/description.md (100%) rename {packages => crates}/mcp-servers/src/coding/tools/bash/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/bash/read_background_description.md (100%) rename {packages => crates}/mcp-servers/src/coding/tools/edit_file/description.md (100%) rename {packages => crates}/mcp-servers/src/coding/tools/edit_file/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/file_io.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/find/description.md (100%) rename {packages => crates}/mcp-servers/src/coding/tools/find/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/glob_filter.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/grep/common.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/grep/description.md (100%) rename {packages => crates}/mcp-servers/src/coding/tools/grep/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/list_files/description.md (100%) rename {packages => crates}/mcp-servers/src/coding/tools/list_files/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/read_file/description.md (100%) rename {packages => crates}/mcp-servers/src/coding/tools/read_file/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/web_fetch/description.md (100%) rename {packages => crates}/mcp-servers/src/coding/tools/web_fetch/http_client.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/web_fetch/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/web_search/description.md (100%) rename {packages => crates}/mcp-servers/src/coding/tools/web_search/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/web_search/search_client.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools/write_file/description.md (100%) rename {packages => crates}/mcp-servers/src/coding/tools/write_file/mod.rs (100%) rename {packages => crates}/mcp-servers/src/coding/tools_trait.rs (100%) rename {packages => crates}/mcp-servers/src/docs/coding_error.md (100%) rename {packages => crates}/mcp-servers/src/docs/coding_mcp.md (100%) rename {packages => crates}/mcp-servers/src/docs/coding_tools.md (100%) rename {packages => crates}/mcp-servers/src/docs/lsp_error.md (100%) rename {packages => crates}/mcp-servers/src/docs/lsp_registry.md (100%) rename {packages => crates}/mcp-servers/src/docs/mcp_builder_ext.md (100%) rename {packages => crates}/mcp-servers/src/docs/permission_mode.md (100%) rename {packages => crates}/mcp-servers/src/docs/plan_mcp.md (100%) rename {packages => crates}/mcp-servers/src/docs/prompt_rule_matcher.md (100%) rename {packages => crates}/mcp-servers/src/docs/skills_mcp.md (100%) rename {packages => crates}/mcp-servers/src/docs/subagents_mcp.md (100%) rename {packages => crates}/mcp-servers/src/docs/survey_mcp.md (100%) rename {packages => crates}/mcp-servers/src/docs/tasks_mcp.md (100%) rename {packages => crates}/mcp-servers/src/docs/tasks_module.md (100%) rename {packages => crates}/mcp-servers/src/error.rs (100%) rename {packages => crates}/mcp-servers/src/file_ops.rs (100%) rename {packages => crates}/mcp-servers/src/lib.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/common.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/diagnostics.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/error.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/mod.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/registry.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/call_hierarchy/mod.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/check_errors/description.md (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/check_errors/mod.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/document_info/description.md (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/document_info/mod.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/mod.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/rename/description.md (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/rename/mod.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/symbol_lookup/description.md (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/symbol_lookup/mod.rs (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/workspace_search/description.md (100%) rename {packages => crates}/mcp-servers/src/lsp/tools/workspace_search/mod.rs (100%) rename {packages => crates}/mcp-servers/src/plan/README.md (100%) rename {packages => crates}/mcp-servers/src/plan/default_prompt.md (100%) rename {packages => crates}/mcp-servers/src/plan/edit_plan_description.md (100%) rename {packages => crates}/mcp-servers/src/plan/mod.rs (100%) rename {packages => crates}/mcp-servers/src/plan/server.rs (100%) rename {packages => crates}/mcp-servers/src/plan/submit_plan_description.md (100%) rename {packages => crates}/mcp-servers/src/plan/write_plan_description.md (100%) rename {packages => crates}/mcp-servers/src/setup.rs (100%) rename {packages => crates}/mcp-servers/src/skills/README.md (100%) rename {packages => crates}/mcp-servers/src/skills/instructions.md (100%) rename {packages => crates}/mcp-servers/src/skills/mod.rs (100%) rename {packages => crates}/mcp-servers/src/skills/server.rs (100%) rename {packages => crates}/mcp-servers/src/skills/tools/get_skills/description.md (100%) rename {packages => crates}/mcp-servers/src/skills/tools/get_skills/mod.rs (100%) rename {packages => crates}/mcp-servers/src/skills/tools/list_skills/description.md (100%) rename {packages => crates}/mcp-servers/src/skills/tools/list_skills/mod.rs (100%) rename {packages => crates}/mcp-servers/src/skills/tools/mod.rs (100%) rename {packages => crates}/mcp-servers/src/skills/tools/save_note/description.md (100%) rename {packages => crates}/mcp-servers/src/skills/tools/save_note/mod.rs (100%) rename {packages => crates}/mcp-servers/src/skills/tools/search_notes/description.md (100%) rename {packages => crates}/mcp-servers/src/skills/tools/search_notes/mod.rs (100%) rename {packages => crates}/mcp-servers/src/subagents/README.md (100%) rename {packages => crates}/mcp-servers/src/subagents/instructions.md (100%) rename {packages => crates}/mcp-servers/src/subagents/mod.rs (100%) rename {packages => crates}/mcp-servers/src/subagents/server.rs (100%) rename {packages => crates}/mcp-servers/src/subagents/tools/mod.rs (100%) rename {packages => crates}/mcp-servers/src/subagents/tools/spawn_subagent/description.md (100%) rename {packages => crates}/mcp-servers/src/subagents/tools/spawn_subagent/mod.rs (100%) rename {packages => crates}/mcp-servers/src/subagents/tools/spawn_subagent/structured_output_instructions.md (100%) rename {packages => crates}/mcp-servers/src/survey/README.md (100%) rename {packages => crates}/mcp-servers/src/survey/mod.rs (100%) rename {packages => crates}/mcp-servers/src/survey/server.rs (100%) rename {packages => crates}/mcp-servers/src/tasks/README.md (100%) rename {packages => crates}/mcp-servers/src/tasks/instructions.md (100%) rename {packages => crates}/mcp-servers/src/tasks/mod.rs (100%) rename {packages => crates}/mcp-servers/src/tasks/server.rs (100%) rename {packages => crates}/mcp-servers/src/tasks/task_index.rs (100%) rename {packages => crates}/mcp-servers/src/tasks/task_store.rs (100%) rename {packages => crates}/mcp-servers/src/tasks/tools/common.rs (100%) rename {packages => crates}/mcp-servers/src/tasks/tools/create/description.md (100%) rename {packages => crates}/mcp-servers/src/tasks/tools/create/mod.rs (100%) rename {packages => crates}/mcp-servers/src/tasks/tools/get/description.md (100%) rename {packages => crates}/mcp-servers/src/tasks/tools/get/mod.rs (100%) rename {packages => crates}/mcp-servers/src/tasks/tools/list/description.md (100%) rename {packages => crates}/mcp-servers/src/tasks/tools/list/mod.rs (100%) rename {packages => crates}/mcp-servers/src/tasks/tools/mod.rs (100%) rename {packages => crates}/mcp-servers/src/tasks/tools/update/description.md (100%) rename {packages => crates}/mcp-servers/src/tasks/tools/update/mod.rs (100%) rename {packages => crates}/mcp-servers/src/tasks/types.rs (100%) rename {packages => crates}/mcp-servers/src/workspace_paths.rs (100%) rename {packages => crates}/mcp-servers/tests/coding_mcp_tools.rs (100%) rename {packages => crates}/mcp-servers/tests/common/mod.rs (100%) rename {packages => crates}/mcp-servers/tests/lsp_check_errors_contract.rs (100%) rename {packages => crates}/mcp-servers/tests/lsp_diagnostics_e2e.rs (100%) rename {packages => crates}/mcp-servers/tests/lsp_operations_e2e.rs (100%) rename {packages => crates}/mcp-servers/tests/lsp_ts_diagnostics_e2e.rs (100%) rename {packages => crates}/mcp-servers/tests/lsp_ts_operations_e2e.rs (100%) rename {packages => crates}/mcp-servers/tests/plan_mcp.rs (100%) rename {packages => crates}/mcp-servers/tests/plugins_mcp_agents.rs (100%) rename {packages => crates}/mcp-servers/tests/plugins_mcp_skills.rs (100%) rename {packages => crates}/mcp-servers/tests/skills_self_improvement.rs (100%) rename {packages => crates}/mcp-servers/tests/stdio_transport.rs (100%) rename {packages => crates}/mcp-servers/tests/test_bash.rs (100%) rename {packages => crates}/mcp-servers/tests/test_read_before_edit_safety.rs (100%) rename {packages => crates}/mcp-servers/tests/test_read_file_rule_meta.rs (100%) rename {packages => crates}/mcp-servers/tests/test_web_fetch.rs (100%) rename {packages => crates}/mcp-utils/CHANGELOG.md (100%) rename {packages => crates}/mcp-utils/Cargo.lock (100%) rename {packages => crates}/mcp-utils/Cargo.toml (100%) rename {packages => crates}/mcp-utils/README.md (100%) rename {packages => crates}/mcp-utils/src/client/config.rs (100%) rename {packages => crates}/mcp-utils/src/client/connection.rs (100%) rename {packages => crates}/mcp-utils/src/client/connection_attempt_manager.rs (100%) rename {packages => crates}/mcp-utils/src/client/error.rs (100%) rename {packages => crates}/mcp-utils/src/client/manager.rs (100%) rename {packages => crates}/mcp-utils/src/client/mcp_client.rs (100%) rename {packages => crates}/mcp-utils/src/client/mod.rs (100%) rename {packages => crates}/mcp-utils/src/client/naming.rs (100%) rename {packages => crates}/mcp-utils/src/client/oauth_handler.rs (100%) rename {packages => crates}/mcp-utils/src/client/roots.rs (100%) rename {packages => crates}/mcp-utils/src/client/tool_proxy.rs (100%) rename {packages => crates}/mcp-utils/src/display_meta.rs (100%) rename {packages => crates}/mcp-utils/src/docs/mcp_server_config.md (100%) rename {packages => crates}/mcp-utils/src/lib.rs (100%) rename {packages => crates}/mcp-utils/src/status.rs (100%) rename {packages => crates}/mcp-utils/src/testing.rs (100%) rename {packages => crates}/mcp-utils/src/transport.rs (100%) rename {packages => crates}/mcp-utils/tests/doc_examples.rs (100%) rename {packages => crates}/tui/CHANGELOG.md (100%) rename {packages => crates}/tui/Cargo.toml (100%) rename {packages => crates}/tui/README.md (100%) rename {packages => crates}/tui/assets/sage.tmTheme (100%) rename {packages => crates}/tui/examples/tui_gallery.rs (100%) rename {packages => crates}/tui/src/combobox.rs (100%) rename {packages => crates}/tui/src/components/bordered_text_field.rs (100%) rename {packages => crates}/tui/src/components/checkbox.rs (100%) rename {packages => crates}/tui/src/components/component.rs (100%) rename {packages => crates}/tui/src/components/form.rs (100%) rename {packages => crates}/tui/src/components/gallery.rs (100%) rename {packages => crates}/tui/src/components/mod.rs (100%) rename {packages => crates}/tui/src/components/multi_select.rs (100%) rename {packages => crates}/tui/src/components/number_field.rs (100%) rename {packages => crates}/tui/src/components/panel.rs (100%) rename {packages => crates}/tui/src/components/radio_select.rs (100%) rename {packages => crates}/tui/src/components/select_list.rs (100%) rename {packages => crates}/tui/src/components/select_option.rs (100%) rename {packages => crates}/tui/src/components/spinner.rs (100%) rename {packages => crates}/tui/src/components/split_panel.rs (100%) rename {packages => crates}/tui/src/components/stepper.rs (100%) rename {packages => crates}/tui/src/components/text_field.rs (100%) rename {packages => crates}/tui/src/diffs/diff.rs (100%) rename {packages => crates}/tui/src/diffs/diff_types.rs (100%) rename {packages => crates}/tui/src/diffs/mod.rs (100%) rename {packages => crates}/tui/src/diffs/split_diff.rs (100%) rename {packages => crates}/tui/src/docs/combobox.md (100%) rename {packages => crates}/tui/src/docs/component.md (100%) rename {packages => crates}/tui/src/docs/event.md (100%) rename {packages => crates}/tui/src/docs/focus_ring.md (100%) rename {packages => crates}/tui/src/docs/form.md (100%) rename {packages => crates}/tui/src/docs/frame.md (100%) rename {packages => crates}/tui/src/docs/line.md (100%) rename {packages => crates}/tui/src/docs/renderer.md (100%) rename {packages => crates}/tui/src/docs/select_list.md (100%) rename {packages => crates}/tui/src/docs/span.md (100%) rename {packages => crates}/tui/src/docs/style.md (100%) rename {packages => crates}/tui/src/docs/terminal_session.md (100%) rename {packages => crates}/tui/src/docs/testing.md (100%) rename {packages => crates}/tui/src/docs/theme.md (100%) rename {packages => crates}/tui/src/docs/view_context.md (100%) rename {packages => crates}/tui/src/focus.rs (100%) rename {packages => crates}/tui/src/fuzzy_matcher.rs (100%) rename {packages => crates}/tui/src/lib.rs (100%) rename {packages => crates}/tui/src/markdown/headings.rs (100%) rename {packages => crates}/tui/src/markdown/mod.rs (100%) rename {packages => crates}/tui/src/markdown/renderer.rs (100%) rename {packages => crates}/tui/src/markdown/source_lines.rs (100%) rename {packages => crates}/tui/src/markdown/source_map.rs (100%) rename {packages => crates}/tui/src/markdown/table.rs (100%) rename {packages => crates}/tui/src/rendering/frame.rs (100%) rename {packages => crates}/tui/src/rendering/gutter.rs (100%) rename {packages => crates}/tui/src/rendering/line.rs (100%) rename {packages => crates}/tui/src/rendering/mod.rs (100%) rename {packages => crates}/tui/src/rendering/render_context.rs (100%) rename {packages => crates}/tui/src/rendering/renderer.rs (100%) rename {packages => crates}/tui/src/rendering/soft_wrap.rs (100%) rename {packages => crates}/tui/src/rendering/span.rs (100%) rename {packages => crates}/tui/src/rendering/style.rs (100%) rename {packages => crates}/tui/src/rendering/terminal_screen.rs (100%) rename {packages => crates}/tui/src/rendering/visual_frame.rs (100%) rename {packages => crates}/tui/src/runtime/mod.rs (100%) rename {packages => crates}/tui/src/runtime/terminal.rs (100%) rename {packages => crates}/tui/src/runtime/terminal_runtime.rs (100%) rename {packages => crates}/tui/src/syntax_highlighting/mod.rs (100%) rename {packages => crates}/tui/src/syntax_highlighting/syntax_highlighter.rs (100%) rename {packages => crates}/tui/src/syntax_highlighting/syntect_bridge.rs (100%) rename {packages => crates}/tui/src/terminal_codes.rs (100%) rename {packages => crates}/tui/src/test_picker.rs (100%) rename {packages => crates}/tui/src/testing/helpers.rs (100%) rename {packages => crates}/tui/src/testing/mod.rs (100%) rename {packages => crates}/tui/src/testing/test_terminal.rs (100%) rename {packages => crates}/tui/src/theme/defaults.rs (100%) rename {packages => crates}/tui/src/theme/mod.rs (100%) rename {packages => crates}/tui/src/theme/syntax.rs (100%) rename {packages => crates}/tui/tests/combobox.rs (100%) rename {packages => crates}/tui/tests/components.rs (100%) rename {packages => crates}/tui/tests/components/bordered_text_field.rs (100%) rename {packages => crates}/tui/tests/components/checkbox.rs (100%) rename {packages => crates}/tui/tests/components/multi_select.rs (100%) rename {packages => crates}/tui/tests/components/number_field.rs (100%) rename {packages => crates}/tui/tests/components/radio_select.rs (100%) rename {packages => crates}/tui/tests/components/spinner.rs (100%) rename {packages => crates}/tui/tests/components/split_panel.rs (100%) rename {packages => crates}/tui/tests/components/stepper.rs (100%) rename {packages => crates}/tui/tests/components/text_field.rs (100%) rename {packages => crates}/tui/tests/markdown.rs (100%) rename {packages => crates}/utils/CHANGELOG.md (100%) rename {packages => crates}/utils/Cargo.toml (100%) rename {packages => crates}/utils/README.md (100%) rename {packages => crates}/utils/src/lib.rs (100%) rename {packages => crates}/utils/src/markdown_file.rs (100%) rename {packages => crates}/utils/src/plan_review.rs (100%) rename {packages => crates}/utils/src/reasoning.rs (100%) rename {packages => crates}/utils/src/resource_path.rs (100%) rename {packages => crates}/utils/src/serde_helpers.rs (100%) rename {packages => crates}/utils/src/settings.rs (100%) rename {packages => crates}/utils/src/shell_expander.rs (100%) rename {packages => crates}/utils/src/substitution.rs (100%) rename {packages => crates}/utils/src/variables.rs (100%) rename {packages => crates}/wisp/CHANGELOG.md (100%) rename {packages => crates}/wisp/Cargo.toml (100%) rename {packages => crates}/wisp/README.md (99%) rename {packages => crates}/wisp/examples/wisp_gallery.rs (100%) rename {packages => crates}/wisp/src/cli.rs (100%) rename {packages => crates}/wisp/src/components/app/attachments.rs (100%) rename {packages => crates}/wisp/src/components/app/git_diff_mode.rs (100%) rename {packages => crates}/wisp/src/components/app/mod.rs (100%) rename {packages => crates}/wisp/src/components/app/plan_review_mode.rs (100%) rename {packages => crates}/wisp/src/components/app/screen_router.rs (100%) rename {packages => crates}/wisp/src/components/app/view.rs (100%) rename {packages => crates}/wisp/src/components/command_picker.rs (100%) rename {packages => crates}/wisp/src/components/common/anchored_surface_builder.rs (100%) rename {packages => crates}/wisp/src/components/common/cached_layer.rs (100%) rename {packages => crates}/wisp/src/components/common/input_box.rs (100%) rename {packages => crates}/wisp/src/components/common/key_hints.rs (100%) rename {packages => crates}/wisp/src/components/common/mod.rs (100%) rename {packages => crates}/wisp/src/components/common/vertical_cursor.rs (100%) rename {packages => crates}/wisp/src/components/context_bar.rs (100%) rename {packages => crates}/wisp/src/components/conversation_screen.rs (100%) rename {packages => crates}/wisp/src/components/conversation_window.rs (100%) rename {packages => crates}/wisp/src/components/dropped_files.rs (100%) rename {packages => crates}/wisp/src/components/elicitation_form.rs (100%) rename {packages => crates}/wisp/src/components/file_list_panel.rs (100%) rename {packages => crates}/wisp/src/components/file_picker.rs (100%) rename {packages => crates}/wisp/src/components/file_tree.rs (100%) rename {packages => crates}/wisp/src/components/git_diff/git_diff_compositor.rs (100%) rename {packages => crates}/wisp/src/components/git_diff/git_diff_panel.rs (100%) rename {packages => crates}/wisp/src/components/git_diff/mod.rs (100%) rename {packages => crates}/wisp/src/components/git_diff/patch_renderer.rs (100%) rename {packages => crates}/wisp/src/components/git_diff/split_patch_renderer.rs (100%) rename {packages => crates}/wisp/src/components/input_prompt.rs (100%) rename {packages => crates}/wisp/src/components/logo.txt (100%) rename {packages => crates}/wisp/src/components/mod.rs (100%) rename {packages => crates}/wisp/src/components/model_selector.rs (100%) rename {packages => crates}/wisp/src/components/plan_review/document.rs (100%) rename {packages => crates}/wisp/src/components/plan_review/mod.rs (100%) rename {packages => crates}/wisp/src/components/plan_review/outline_panel.rs (100%) rename {packages => crates}/wisp/src/components/plan_review/plan_panel.rs (100%) rename {packages => crates}/wisp/src/components/plan_tracker.rs (100%) rename {packages => crates}/wisp/src/components/plan_view.rs (100%) rename {packages => crates}/wisp/src/components/progress_indicator.rs (100%) rename {packages => crates}/wisp/src/components/prompt_composer.rs (100%) rename {packages => crates}/wisp/src/components/prompt_search_picker.rs (100%) rename {packages => crates}/wisp/src/components/provider_login.rs (100%) rename {packages => crates}/wisp/src/components/reasoning_bar.rs (100%) rename {packages => crates}/wisp/src/components/review_comments/anchored_rows.rs (100%) rename {packages => crates}/wisp/src/components/review_comments/comment_box.rs (100%) rename {packages => crates}/wisp/src/components/review_comments/comment_group.rs (100%) rename {packages => crates}/wisp/src/components/review_comments/draft_comment.rs (100%) rename {packages => crates}/wisp/src/components/review_comments/mod.rs (100%) rename {packages => crates}/wisp/src/components/review_comments/model.rs (100%) rename {packages => crates}/wisp/src/components/review_comments/review_surface.rs (100%) rename {packages => crates}/wisp/src/components/review_comments/surface.rs (100%) rename {packages => crates}/wisp/src/components/server_status.rs (100%) rename {packages => crates}/wisp/src/components/session_picker.rs (100%) rename {packages => crates}/wisp/src/components/status_line.rs (100%) rename {packages => crates}/wisp/src/components/sub_agent_tracker.rs (100%) rename {packages => crates}/wisp/src/components/text_input.rs (100%) rename {packages => crates}/wisp/src/components/thought_message.rs (100%) rename {packages => crates}/wisp/src/components/tool_call_status_view.rs (100%) rename {packages => crates}/wisp/src/components/tool_call_statuses.rs (100%) rename {packages => crates}/wisp/src/components/tracked_tool_call.rs (100%) rename {packages => crates}/wisp/src/components/workspace_picker.rs (100%) rename {packages => crates}/wisp/src/docs/app.md (100%) rename {packages => crates}/wisp/src/docs/app_error.md (100%) rename {packages => crates}/wisp/src/docs/command_picker.md (100%) rename {packages => crates}/wisp/src/docs/components_module.md (100%) rename {packages => crates}/wisp/src/docs/conversation_screen.md (100%) rename {packages => crates}/wisp/src/docs/conversation_window.md (100%) rename {packages => crates}/wisp/src/docs/file_picker.md (100%) rename {packages => crates}/wisp/src/docs/git_diff_document.md (100%) rename {packages => crates}/wisp/src/docs/git_diff_error.md (100%) rename {packages => crates}/wisp/src/docs/key_binding.md (100%) rename {packages => crates}/wisp/src/docs/keybindings.md (100%) rename {packages => crates}/wisp/src/docs/runtime_state.md (100%) rename {packages => crates}/wisp/src/docs/settings_module.md (100%) rename {packages => crates}/wisp/src/docs/status_line.md (100%) rename {packages => crates}/wisp/src/docs/text_input.md (100%) rename {packages => crates}/wisp/src/docs/wisp_settings.md (100%) rename {packages => crates}/wisp/src/error.rs (100%) rename {packages => crates}/wisp/src/git_diff.rs (100%) rename {packages => crates}/wisp/src/keybindings.rs (100%) rename {packages => crates}/wisp/src/lib.rs (100%) rename {packages => crates}/wisp/src/main.rs (100%) rename {packages => crates}/wisp/src/runtime_state.rs (100%) rename {packages => crates}/wisp/src/session_loading_buffer.rs (100%) rename {packages => crates}/wisp/src/settings/menu.rs (100%) rename {packages => crates}/wisp/src/settings/mod.rs (100%) rename {packages => crates}/wisp/src/settings/overlay.rs (100%) rename {packages => crates}/wisp/src/settings/picker.rs (100%) rename {packages => crates}/wisp/src/settings/types.rs (100%) rename {packages => crates}/wisp/src/test_helpers.rs (100%) rename {packages => crates}/wisp/src/workspace_status.rs (100%) rename {packages => crates}/wisp/tests/app_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/command_picker_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/common.rs (100%) rename {packages => crates}/wisp/tests/app_tests/file_picker_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/git_diff_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/input_prompt_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/lifecycle_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/mcp_oauth_elicitation_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/message_streaming_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/mode_cycling_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/notifications_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/progress_indicator_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/prompt_search_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/session_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/settings_menu_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/small_terminal_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/status_line_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/tool_calls_tests.rs (100%) rename {packages => crates}/wisp/tests/app_tests/workspace_move_tests.rs (100%) rename {packages => crates}/wisp/tests/component_tests.rs (100%) rename {packages => crates}/wisp/tests/component_tests/command_picker.rs (100%) rename {packages => crates}/wisp/tests/component_tests/conversation_window.rs (100%) rename {packages => crates}/wisp/tests/component_tests/file_list_panel.rs (100%) rename {packages => crates}/wisp/tests/component_tests/git_diff_view.rs (100%) rename {packages => crates}/wisp/tests/component_tests/model_selector.rs (100%) rename {packages => crates}/wisp/tests/component_tests/plan_review_view.rs (100%) rename {packages => crates}/wisp/tests/component_tests/settings_menu.rs (100%) rename {packages => crates}/wisp/tests/component_tests/settings_overlay.rs (100%) rename {packages => crates}/wisp/tests/component_tests/status_line.rs (100%) rename {packages => crates}/wisp/tests/component_tests/support/git_diff.rs (100%) rename {packages => crates}/wisp/tests/component_tests/support/mod.rs (100%) rename {packages => crates}/wisp/tests/component_tests/support/tool_events.rs (100%) rename {packages => crates}/wisp/tests/component_tests/tool_call_statuses.rs (100%) rename {packages => crates}/wisp/tests/renderer_scrollback_tests.rs (100%) rename {website => packages/website}/README.md (100%) rename {website => packages/website}/astro.config.mjs (100%) rename {website => packages/website}/ec.config.mjs (100%) rename {website => packages/website}/package.json (100%) rename {website => packages/website}/public/CNAME (100%) rename {website => packages/website}/public/demos/any-model.cast (100%) rename {website => packages/website}/public/demos/demo.cast (100%) rename {website => packages/website}/public/demos/llm-demo.cast (100%) rename {website => packages/website}/public/favicon.svg (100%) rename {website => packages/website}/public/install (100%) rename {website => packages/website}/src/asciinema-player.d.ts (100%) rename {website => packages/website}/src/assets/houston.webp (100%) rename {website => packages/website}/src/components/CallToAction.astro (100%) rename {website => packages/website}/src/components/CodeTabs.astro (100%) rename {website => packages/website}/src/components/Hero.astro (100%) rename {website => packages/website}/src/components/InstallTabs.astro (100%) rename {website => packages/website}/src/components/LandingButton.astro (100%) rename {website => packages/website}/src/components/LandingHeader.astro (100%) rename {website => packages/website}/src/components/StarlightHead.astro (100%) rename {website => packages/website}/src/components/TerminalDemo.astro (100%) rename {website => packages/website}/src/components/ThemeSwitcher.astro (100%) rename {website => packages/website}/src/components/ToolShowcaseItem.astro (100%) rename {website => packages/website}/src/consts.ts (100%) rename {website => packages/website}/src/content.config.ts (100%) rename {website => packages/website}/src/content/docs/aether/built-in-servers/coding.mdx (100%) rename {website => packages/website}/src/content/docs/aether/built-in-servers/plan.mdx (100%) rename {website => packages/website}/src/content/docs/aether/built-in-servers/skills-commands.mdx (100%) rename {website => packages/website}/src/content/docs/aether/built-in-servers/subagents.mdx (100%) rename {website => packages/website}/src/content/docs/aether/built-in-servers/survey.mdx (100%) rename {website => packages/website}/src/content/docs/aether/built-in-servers/tasks.mdx (98%) rename {website => packages/website}/src/content/docs/aether/introduction.mdx (93%) rename {website => packages/website}/src/content/docs/aether/running/editor-integration.mdx (100%) rename {website => packages/website}/src/content/docs/aether/running/headless.mdx (100%) rename {website => packages/website}/src/content/docs/aether/settings/llm-providers.mdx (100%) rename {website => packages/website}/src/content/docs/aether/settings/mcp-servers.mdx (100%) rename {website => packages/website}/src/content/docs/aether/settings/overview.mdx (100%) rename {website => packages/website}/src/content/docs/aether/settings/system-prompts.mdx (100%) rename {website => packages/website}/src/content/docs/aether/settings/user-project-settings.mdx (100%) rename {website => packages/website}/src/content/docs/aether/terminal/git-diff.mdx (100%) rename {website => packages/website}/src/content/docs/aether/terminal/keybindings.mdx (100%) rename {website => packages/website}/src/content/docs/aether/terminal/overview.mdx (100%) rename {website => packages/website}/src/content/docs/aether/terminal/sessions.mdx (100%) rename {website => packages/website}/src/content/docs/aether/terminal/settings.mdx (100%) rename {website => packages/website}/src/content/docs/getting-started/overview.mdx (100%) rename {website => packages/website}/src/content/docs/libraries/rust.mdx (100%) rename {website => packages/website}/src/content/docs/libraries/typescript-sdk.mdx (100%) rename {website => packages/website}/src/layouts/Landing.astro (100%) rename {website => packages/website}/src/loaders/settings-schema.ts (99%) rename {website => packages/website}/src/pages/index.mdx (100%) rename {website => packages/website}/src/styles/global.css (100%) rename {website => packages/website}/src/styles/starlight.css (100%) rename {website => packages/website}/src/styles/themes.css (100%) rename {website => packages/website}/tsconfig.json (100%) diff --git a/packages/acp-utils/CHANGELOG.md b/crates/acp-utils/CHANGELOG.md similarity index 100% rename from packages/acp-utils/CHANGELOG.md rename to crates/acp-utils/CHANGELOG.md diff --git a/packages/acp-utils/Cargo.toml b/crates/acp-utils/Cargo.toml similarity index 100% rename from packages/acp-utils/Cargo.toml rename to crates/acp-utils/Cargo.toml diff --git a/packages/acp-utils/README.md b/crates/acp-utils/README.md similarity index 100% rename from packages/acp-utils/README.md rename to crates/acp-utils/README.md diff --git a/packages/acp-utils/src/client/error.rs b/crates/acp-utils/src/client/error.rs similarity index 100% rename from packages/acp-utils/src/client/error.rs rename to crates/acp-utils/src/client/error.rs diff --git a/packages/acp-utils/src/client/event.rs b/crates/acp-utils/src/client/event.rs similarity index 100% rename from packages/acp-utils/src/client/event.rs rename to crates/acp-utils/src/client/event.rs diff --git a/packages/acp-utils/src/client/mod.rs b/crates/acp-utils/src/client/mod.rs similarity index 100% rename from packages/acp-utils/src/client/mod.rs rename to crates/acp-utils/src/client/mod.rs diff --git a/packages/acp-utils/src/client/prompt_handle.rs b/crates/acp-utils/src/client/prompt_handle.rs similarity index 100% rename from packages/acp-utils/src/client/prompt_handle.rs rename to crates/acp-utils/src/client/prompt_handle.rs diff --git a/packages/acp-utils/src/client/session.rs b/crates/acp-utils/src/client/session.rs similarity index 100% rename from packages/acp-utils/src/client/session.rs rename to crates/acp-utils/src/client/session.rs diff --git a/packages/acp-utils/src/client/tokio_agent.rs b/crates/acp-utils/src/client/tokio_agent.rs similarity index 100% rename from packages/acp-utils/src/client/tokio_agent.rs rename to crates/acp-utils/src/client/tokio_agent.rs diff --git a/packages/acp-utils/src/config_meta.rs b/crates/acp-utils/src/config_meta.rs similarity index 100% rename from packages/acp-utils/src/config_meta.rs rename to crates/acp-utils/src/config_meta.rs diff --git a/packages/acp-utils/src/config_option_id.rs b/crates/acp-utils/src/config_option_id.rs similarity index 100% rename from packages/acp-utils/src/config_option_id.rs rename to crates/acp-utils/src/config_option_id.rs diff --git a/packages/acp-utils/src/content.rs b/crates/acp-utils/src/content.rs similarity index 100% rename from packages/acp-utils/src/content.rs rename to crates/acp-utils/src/content.rs diff --git a/packages/acp-utils/src/lib.rs b/crates/acp-utils/src/lib.rs similarity index 100% rename from packages/acp-utils/src/lib.rs rename to crates/acp-utils/src/lib.rs diff --git a/packages/acp-utils/src/notifications.rs b/crates/acp-utils/src/notifications.rs similarity index 100% rename from packages/acp-utils/src/notifications.rs rename to crates/acp-utils/src/notifications.rs diff --git a/packages/acp-utils/src/server/error.rs b/crates/acp-utils/src/server/error.rs similarity index 100% rename from packages/acp-utils/src/server/error.rs rename to crates/acp-utils/src/server/error.rs diff --git a/packages/acp-utils/src/server/mod.rs b/crates/acp-utils/src/server/mod.rs similarity index 100% rename from packages/acp-utils/src/server/mod.rs rename to crates/acp-utils/src/server/mod.rs diff --git a/packages/acp-utils/src/settings.rs b/crates/acp-utils/src/settings.rs similarity index 100% rename from packages/acp-utils/src/settings.rs rename to crates/acp-utils/src/settings.rs diff --git a/packages/acp-utils/src/testing.rs b/crates/acp-utils/src/testing.rs similarity index 100% rename from packages/acp-utils/src/testing.rs rename to crates/acp-utils/src/testing.rs diff --git a/packages/acp-utils/tests/tokio_agent.rs b/crates/acp-utils/tests/tokio_agent.rs similarity index 100% rename from packages/acp-utils/tests/tokio_agent.rs rename to crates/acp-utils/tests/tokio_agent.rs diff --git a/packages/aether-auth/CHANGELOG.md b/crates/aether-auth/CHANGELOG.md similarity index 100% rename from packages/aether-auth/CHANGELOG.md rename to crates/aether-auth/CHANGELOG.md diff --git a/packages/aether-auth/Cargo.toml b/crates/aether-auth/Cargo.toml similarity index 100% rename from packages/aether-auth/Cargo.toml rename to crates/aether-auth/Cargo.toml diff --git a/packages/aether-auth/README.md b/crates/aether-auth/README.md similarity index 100% rename from packages/aether-auth/README.md rename to crates/aether-auth/README.md diff --git a/packages/aether-auth/src/browser.rs b/crates/aether-auth/src/browser.rs similarity index 100% rename from packages/aether-auth/src/browser.rs rename to crates/aether-auth/src/browser.rs diff --git a/packages/aether-auth/src/credential.rs b/crates/aether-auth/src/credential.rs similarity index 100% rename from packages/aether-auth/src/credential.rs rename to crates/aether-auth/src/credential.rs diff --git a/packages/aether-auth/src/encrypted_file.rs b/crates/aether-auth/src/encrypted_file.rs similarity index 100% rename from packages/aether-auth/src/encrypted_file.rs rename to crates/aether-auth/src/encrypted_file.rs diff --git a/packages/aether-auth/src/error.rs b/crates/aether-auth/src/error.rs similarity index 100% rename from packages/aether-auth/src/error.rs rename to crates/aether-auth/src/error.rs diff --git a/packages/aether-auth/src/fake.rs b/crates/aether-auth/src/fake.rs similarity index 100% rename from packages/aether-auth/src/fake.rs rename to crates/aether-auth/src/fake.rs diff --git a/packages/aether-auth/src/handler.rs b/crates/aether-auth/src/handler.rs similarity index 100% rename from packages/aether-auth/src/handler.rs rename to crates/aether-auth/src/handler.rs diff --git a/packages/aether-auth/src/keyring/mod.rs b/crates/aether-auth/src/keyring/mod.rs similarity index 100% rename from packages/aether-auth/src/keyring/mod.rs rename to crates/aether-auth/src/keyring/mod.rs diff --git a/packages/aether-auth/src/lib.rs b/crates/aether-auth/src/lib.rs similarity index 100% rename from packages/aether-auth/src/lib.rs rename to crates/aether-auth/src/lib.rs diff --git a/packages/aether-auth/src/mcp/credential_store.rs b/crates/aether-auth/src/mcp/credential_store.rs similarity index 100% rename from packages/aether-auth/src/mcp/credential_store.rs rename to crates/aether-auth/src/mcp/credential_store.rs diff --git a/packages/aether-auth/src/mcp/integration.rs b/crates/aether-auth/src/mcp/integration.rs similarity index 100% rename from packages/aether-auth/src/mcp/integration.rs rename to crates/aether-auth/src/mcp/integration.rs diff --git a/packages/aether-auth/src/mcp/mod.rs b/crates/aether-auth/src/mcp/mod.rs similarity index 100% rename from packages/aether-auth/src/mcp/mod.rs rename to crates/aether-auth/src/mcp/mod.rs diff --git a/packages/aether-auth/src/oauth.md b/crates/aether-auth/src/oauth.md similarity index 100% rename from packages/aether-auth/src/oauth.md rename to crates/aether-auth/src/oauth.md diff --git a/packages/aether-auth/src/oauth_success.html b/crates/aether-auth/src/oauth_success.html similarity index 100% rename from packages/aether-auth/src/oauth_success.html rename to crates/aether-auth/src/oauth_success.html diff --git a/packages/aether-cli/CHANGELOG.md b/crates/aether-cli/CHANGELOG.md similarity index 100% rename from packages/aether-cli/CHANGELOG.md rename to crates/aether-cli/CHANGELOG.md diff --git a/packages/aether-cli/Cargo.toml b/crates/aether-cli/Cargo.toml similarity index 100% rename from packages/aether-cli/Cargo.toml rename to crates/aether-cli/Cargo.toml diff --git a/packages/aether-cli/README.md b/crates/aether-cli/README.md similarity index 100% rename from packages/aether-cli/README.md rename to crates/aether-cli/README.md diff --git a/packages/aether-cli/src/acp/agent.rs b/crates/aether-cli/src/acp/agent.rs similarity index 100% rename from packages/aether-cli/src/acp/agent.rs rename to crates/aether-cli/src/acp/agent.rs diff --git a/packages/aether-cli/src/acp/agent_key.rs b/crates/aether-cli/src/acp/agent_key.rs similarity index 100% rename from packages/aether-cli/src/acp/agent_key.rs rename to crates/aether-cli/src/acp/agent_key.rs diff --git a/packages/aether-cli/src/acp/agent_runtime.rs b/crates/aether-cli/src/acp/agent_runtime.rs similarity index 100% rename from packages/aether-cli/src/acp/agent_runtime.rs rename to crates/aether-cli/src/acp/agent_runtime.rs diff --git a/packages/aether-cli/src/acp/config_setting.rs b/crates/aether-cli/src/acp/config_setting.rs similarity index 100% rename from packages/aether-cli/src/acp/config_setting.rs rename to crates/aether-cli/src/acp/config_setting.rs diff --git a/packages/aether-cli/src/acp/error.rs b/crates/aether-cli/src/acp/error.rs similarity index 100% rename from packages/aether-cli/src/acp/error.rs rename to crates/aether-cli/src/acp/error.rs diff --git a/packages/aether-cli/src/acp/fake_prompt_mcp.rs b/crates/aether-cli/src/acp/fake_prompt_mcp.rs similarity index 100% rename from packages/aether-cli/src/acp/fake_prompt_mcp.rs rename to crates/aether-cli/src/acp/fake_prompt_mcp.rs diff --git a/packages/aether-cli/src/acp/mod.rs b/crates/aether-cli/src/acp/mod.rs similarity index 100% rename from packages/aether-cli/src/acp/mod.rs rename to crates/aether-cli/src/acp/mod.rs diff --git a/packages/aether-cli/src/acp/model_config.rs b/crates/aether-cli/src/acp/model_config.rs similarity index 100% rename from packages/aether-cli/src/acp/model_config.rs rename to crates/aether-cli/src/acp/model_config.rs diff --git a/packages/aether-cli/src/acp/prompt_history_index.rs b/crates/aether-cli/src/acp/prompt_history_index.rs similarity index 100% rename from packages/aether-cli/src/acp/prompt_history_index.rs rename to crates/aether-cli/src/acp/prompt_history_index.rs diff --git a/packages/aether-cli/src/acp/protocol/commands.rs b/crates/aether-cli/src/acp/protocol/commands.rs similarity index 100% rename from packages/aether-cli/src/acp/protocol/commands.rs rename to crates/aether-cli/src/acp/protocol/commands.rs diff --git a/packages/aether-cli/src/acp/protocol/content.rs b/crates/aether-cli/src/acp/protocol/content.rs similarity index 100% rename from packages/aether-cli/src/acp/protocol/content.rs rename to crates/aether-cli/src/acp/protocol/content.rs diff --git a/packages/aether-cli/src/acp/protocol/events.rs b/crates/aether-cli/src/acp/protocol/events.rs similarity index 100% rename from packages/aether-cli/src/acp/protocol/events.rs rename to crates/aether-cli/src/acp/protocol/events.rs diff --git a/packages/aether-cli/src/acp/protocol/mcp.rs b/crates/aether-cli/src/acp/protocol/mcp.rs similarity index 100% rename from packages/aether-cli/src/acp/protocol/mcp.rs rename to crates/aether-cli/src/acp/protocol/mcp.rs diff --git a/packages/aether-cli/src/acp/protocol/mod.rs b/crates/aether-cli/src/acp/protocol/mod.rs similarity index 100% rename from packages/aether-cli/src/acp/protocol/mod.rs rename to crates/aether-cli/src/acp/protocol/mod.rs diff --git a/packages/aether-cli/src/acp/protocol/replay.rs b/crates/aether-cli/src/acp/protocol/replay.rs similarity index 100% rename from packages/aether-cli/src/acp/protocol/replay.rs rename to crates/aether-cli/src/acp/protocol/replay.rs diff --git a/packages/aether-cli/src/acp/session_actor.rs b/crates/aether-cli/src/acp/session_actor.rs similarity index 100% rename from packages/aether-cli/src/acp/session_actor.rs rename to crates/aether-cli/src/acp/session_actor.rs diff --git a/packages/aether-cli/src/acp/session_config_state.rs b/crates/aether-cli/src/acp/session_config_state.rs similarity index 100% rename from packages/aether-cli/src/acp/session_config_state.rs rename to crates/aether-cli/src/acp/session_config_state.rs diff --git a/packages/aether-cli/src/acp/session_factory.rs b/crates/aether-cli/src/acp/session_factory.rs similarity index 100% rename from packages/aether-cli/src/acp/session_factory.rs rename to crates/aether-cli/src/acp/session_factory.rs diff --git a/packages/aether-cli/src/acp/session_store.rs b/crates/aether-cli/src/acp/session_store.rs similarity index 100% rename from packages/aether-cli/src/acp/session_store.rs rename to crates/aether-cli/src/acp/session_store.rs diff --git a/packages/aether-cli/src/acp/slash_commands.rs b/crates/aether-cli/src/acp/slash_commands.rs similarity index 100% rename from packages/aether-cli/src/acp/slash_commands.rs rename to crates/aether-cli/src/acp/slash_commands.rs diff --git a/packages/aether-cli/src/acp/state.rs b/crates/aether-cli/src/acp/state.rs similarity index 100% rename from packages/aether-cli/src/acp/state.rs rename to crates/aether-cli/src/acp/state.rs diff --git a/packages/aether-cli/src/acp/stdio.rs b/crates/aether-cli/src/acp/stdio.rs similarity index 100% rename from packages/aether-cli/src/acp/stdio.rs rename to crates/aether-cli/src/acp/stdio.rs diff --git a/packages/aether-cli/src/acp/testing.rs b/crates/aether-cli/src/acp/testing.rs similarity index 100% rename from packages/aether-cli/src/acp/testing.rs rename to crates/aether-cli/src/acp/testing.rs diff --git a/packages/aether-cli/src/credentials.rs b/crates/aether-cli/src/credentials.rs similarity index 100% rename from packages/aether-cli/src/credentials.rs rename to crates/aether-cli/src/credentials.rs diff --git a/packages/aether-cli/src/error.rs b/crates/aether-cli/src/error.rs similarity index 100% rename from packages/aether-cli/src/error.rs rename to crates/aether-cli/src/error.rs diff --git a/packages/aether-cli/src/generate_command/mod.rs b/crates/aether-cli/src/generate_command/mod.rs similarity index 100% rename from packages/aether-cli/src/generate_command/mod.rs rename to crates/aether-cli/src/generate_command/mod.rs diff --git a/packages/aether-cli/src/headless/error.rs b/crates/aether-cli/src/headless/error.rs similarity index 100% rename from packages/aether-cli/src/headless/error.rs rename to crates/aether-cli/src/headless/error.rs diff --git a/packages/aether-cli/src/headless/mod.rs b/crates/aether-cli/src/headless/mod.rs similarity index 100% rename from packages/aether-cli/src/headless/mod.rs rename to crates/aether-cli/src/headless/mod.rs diff --git a/packages/aether-cli/src/headless/run.rs b/crates/aether-cli/src/headless/run.rs similarity index 100% rename from packages/aether-cli/src/headless/run.rs rename to crates/aether-cli/src/headless/run.rs diff --git a/packages/aether-cli/src/init/build_settings.rs b/crates/aether-cli/src/init/build_settings.rs similarity index 100% rename from packages/aether-cli/src/init/build_settings.rs rename to crates/aether-cli/src/init/build_settings.rs diff --git a/packages/aether-cli/src/init/harness.rs b/crates/aether-cli/src/init/harness.rs similarity index 100% rename from packages/aether-cli/src/init/harness.rs rename to crates/aether-cli/src/init/harness.rs diff --git a/packages/aether-cli/src/init/mod.rs b/crates/aether-cli/src/init/mod.rs similarity index 100% rename from packages/aether-cli/src/init/mod.rs rename to crates/aether-cli/src/init/mod.rs diff --git a/packages/aether-cli/src/init/recommendations.rs b/crates/aether-cli/src/init/recommendations.rs similarity index 100% rename from packages/aether-cli/src/init/recommendations.rs rename to crates/aether-cli/src/init/recommendations.rs diff --git a/packages/aether-cli/src/init/templates/SYSTEM.md b/crates/aether-cli/src/init/templates/SYSTEM.md similarity index 100% rename from packages/aether-cli/src/init/templates/SYSTEM.md rename to crates/aether-cli/src/init/templates/SYSTEM.md diff --git a/packages/aether-cli/src/init/templates/agents/codebase-explorer/AGENTS.md b/crates/aether-cli/src/init/templates/agents/codebase-explorer/AGENTS.md similarity index 100% rename from packages/aether-cli/src/init/templates/agents/codebase-explorer/AGENTS.md rename to crates/aether-cli/src/init/templates/agents/codebase-explorer/AGENTS.md diff --git a/packages/aether-cli/src/init/templates/skills/aether/SKILL.md b/crates/aether-cli/src/init/templates/skills/aether/SKILL.md similarity index 100% rename from packages/aether-cli/src/init/templates/skills/aether/SKILL.md rename to crates/aether-cli/src/init/templates/skills/aether/SKILL.md diff --git a/packages/aether-cli/src/init/tui_runner.rs b/crates/aether-cli/src/init/tui_runner.rs similarity index 100% rename from packages/aether-cli/src/init/tui_runner.rs rename to crates/aether-cli/src/init/tui_runner.rs diff --git a/packages/aether-cli/src/lib.rs b/crates/aether-cli/src/lib.rs similarity index 100% rename from packages/aether-cli/src/lib.rs rename to crates/aether-cli/src/lib.rs diff --git a/packages/aether-cli/src/main.rs b/crates/aether-cli/src/main.rs similarity index 100% rename from packages/aether-cli/src/main.rs rename to crates/aether-cli/src/main.rs diff --git a/packages/aether-cli/src/mcp_config_args.rs b/crates/aether-cli/src/mcp_config_args.rs similarity index 100% rename from packages/aether-cli/src/mcp_config_args.rs rename to crates/aether-cli/src/mcp_config_args.rs diff --git a/packages/aether-cli/src/output.rs b/crates/aether-cli/src/output.rs similarity index 100% rename from packages/aether-cli/src/output.rs rename to crates/aether-cli/src/output.rs diff --git a/packages/aether-cli/src/provider_connection_args.rs b/crates/aether-cli/src/provider_connection_args.rs similarity index 100% rename from packages/aether-cli/src/provider_connection_args.rs rename to crates/aether-cli/src/provider_connection_args.rs diff --git a/packages/aether-cli/src/resolve.rs b/crates/aether-cli/src/resolve.rs similarity index 100% rename from packages/aether-cli/src/resolve.rs rename to crates/aether-cli/src/resolve.rs diff --git a/packages/aether-cli/src/runtime.rs b/crates/aether-cli/src/runtime.rs similarity index 100% rename from packages/aether-cli/src/runtime.rs rename to crates/aether-cli/src/runtime.rs diff --git a/packages/aether-cli/src/sandbox.rs b/crates/aether-cli/src/sandbox.rs similarity index 99% rename from packages/aether-cli/src/sandbox.rs rename to crates/aether-cli/src/sandbox.rs index 0f97ec385..c3d29c440 100644 --- a/packages/aether-cli/src/sandbox.rs +++ b/crates/aether-cli/src/sandbox.rs @@ -20,7 +20,7 @@ pub enum SandboxError { #[error( "Sandbox image '{0}' not found. Build it with:\n\ cargo build -p aether-agent-cli --bin aether\n\ - docker build -t {0} -f packages/internal-evals/examples/Dockerfile ." + docker build -t {0} -f crates/internal-evals/examples/Dockerfile ." )] ImageNotFound(String), #[error("Failed to exec docker: {0}")] diff --git a/packages/aether-cli/src/settings/mod.rs b/crates/aether-cli/src/settings/mod.rs similarity index 100% rename from packages/aether-cli/src/settings/mod.rs rename to crates/aether-cli/src/settings/mod.rs diff --git a/packages/aether-cli/src/settings_args.rs b/crates/aether-cli/src/settings_args.rs similarity index 100% rename from packages/aether-cli/src/settings_args.rs rename to crates/aether-cli/src/settings_args.rs diff --git a/packages/aether-cli/src/show_prompt/mod.rs b/crates/aether-cli/src/show_prompt/mod.rs similarity index 100% rename from packages/aether-cli/src/show_prompt/mod.rs rename to crates/aether-cli/src/show_prompt/mod.rs diff --git a/packages/aether-cli/src/show_prompt/run.rs b/crates/aether-cli/src/show_prompt/run.rs similarity index 100% rename from packages/aether-cli/src/show_prompt/run.rs rename to crates/aether-cli/src/show_prompt/run.rs diff --git a/packages/aether-cli/src/workspace/git.rs b/crates/aether-cli/src/workspace/git.rs similarity index 100% rename from packages/aether-cli/src/workspace/git.rs rename to crates/aether-cli/src/workspace/git.rs diff --git a/packages/aether-cli/src/workspace/mod.rs b/crates/aether-cli/src/workspace/mod.rs similarity index 100% rename from packages/aether-cli/src/workspace/mod.rs rename to crates/aether-cli/src/workspace/mod.rs diff --git a/packages/aether-cli/src/workspace/registry.rs b/crates/aether-cli/src/workspace/registry.rs similarity index 100% rename from packages/aether-cli/src/workspace/registry.rs rename to crates/aether-cli/src/workspace/registry.rs diff --git a/packages/aether-cli/src/workspace/testing.rs b/crates/aether-cli/src/workspace/testing.rs similarity index 100% rename from packages/aether-cli/src/workspace/testing.rs rename to crates/aether-cli/src/workspace/testing.rs diff --git a/packages/aether-cli/tests/acp_agent_switching.rs b/crates/aether-cli/tests/acp_agent_switching.rs similarity index 100% rename from packages/aether-cli/tests/acp_agent_switching.rs rename to crates/aether-cli/tests/acp_agent_switching.rs diff --git a/packages/aether-cli/tests/acp_cancellation.rs b/crates/aether-cli/tests/acp_cancellation.rs similarity index 100% rename from packages/aether-cli/tests/acp_cancellation.rs rename to crates/aether-cli/tests/acp_cancellation.rs diff --git a/packages/aether-cli/tests/acp_prompt_search.rs b/crates/aether-cli/tests/acp_prompt_search.rs similarity index 100% rename from packages/aether-cli/tests/acp_prompt_search.rs rename to crates/aether-cli/tests/acp_prompt_search.rs diff --git a/packages/aether-cli/tests/acp_stdio.rs b/crates/aether-cli/tests/acp_stdio.rs similarity index 100% rename from packages/aether-cli/tests/acp_stdio.rs rename to crates/aether-cli/tests/acp_stdio.rs diff --git a/packages/aether-cli/tests/acp_workspace_move.rs b/crates/aether-cli/tests/acp_workspace_move.rs similarity index 100% rename from packages/aether-cli/tests/acp_workspace_move.rs rename to crates/aether-cli/tests/acp_workspace_move.rs diff --git a/packages/aether-cli/tests/run_init.rs b/crates/aether-cli/tests/run_init.rs similarity index 100% rename from packages/aether-cli/tests/run_init.rs rename to crates/aether-cli/tests/run_init.rs diff --git a/packages/aether-cli/tests/slash_commands.rs b/crates/aether-cli/tests/slash_commands.rs similarity index 100% rename from packages/aether-cli/tests/slash_commands.rs rename to crates/aether-cli/tests/slash_commands.rs diff --git a/packages/aether-core/CHANGELOG.md b/crates/aether-core/CHANGELOG.md similarity index 100% rename from packages/aether-core/CHANGELOG.md rename to crates/aether-core/CHANGELOG.md diff --git a/packages/aether-core/Cargo.lock b/crates/aether-core/Cargo.lock similarity index 100% rename from packages/aether-core/Cargo.lock rename to crates/aether-core/Cargo.lock diff --git a/packages/aether-core/Cargo.toml b/crates/aether-core/Cargo.toml similarity index 100% rename from packages/aether-core/Cargo.toml rename to crates/aether-core/Cargo.toml diff --git a/packages/aether-core/README.md b/crates/aether-core/README.md similarity index 100% rename from packages/aether-core/README.md rename to crates/aether-core/README.md diff --git a/packages/aether-core/examples/anthropic_test.rs b/crates/aether-core/examples/anthropic_test.rs similarity index 100% rename from packages/aether-core/examples/anthropic_test.rs rename to crates/aether-core/examples/anthropic_test.rs diff --git a/packages/aether-core/examples/basic_agent.rs b/crates/aether-core/examples/basic_agent.rs similarity index 100% rename from packages/aether-core/examples/basic_agent.rs rename to crates/aether-core/examples/basic_agent.rs diff --git a/packages/aether-core/examples/mcp.json b/crates/aether-core/examples/mcp.json similarity index 100% rename from packages/aether-core/examples/mcp.json rename to crates/aether-core/examples/mcp.json diff --git a/packages/aether-core/examples/mcp_agent.rs b/crates/aether-core/examples/mcp_agent.rs similarity index 100% rename from packages/aether-core/examples/mcp_agent.rs rename to crates/aether-core/examples/mcp_agent.rs diff --git a/packages/aether-core/src/agent_spec.rs b/crates/aether-core/src/agent_spec.rs similarity index 100% rename from packages/aether-core/src/agent_spec.rs rename to crates/aether-core/src/agent_spec.rs diff --git a/packages/aether-core/src/context/compaction.rs b/crates/aether-core/src/context/compaction.rs similarity index 100% rename from packages/aether-core/src/context/compaction.rs rename to crates/aether-core/src/context/compaction.rs diff --git a/packages/aether-core/src/context/ext.rs b/crates/aether-core/src/context/ext.rs similarity index 100% rename from packages/aether-core/src/context/ext.rs rename to crates/aether-core/src/context/ext.rs diff --git a/packages/aether-core/src/context/mod.rs b/crates/aether-core/src/context/mod.rs similarity index 100% rename from packages/aether-core/src/context/mod.rs rename to crates/aether-core/src/context/mod.rs diff --git a/packages/aether-core/src/context/prompts/summarization.md b/crates/aether-core/src/context/prompts/summarization.md similarity index 100% rename from packages/aether-core/src/context/prompts/summarization.md rename to crates/aether-core/src/context/prompts/summarization.md diff --git a/packages/aether-core/src/context/token_tracker.rs b/crates/aether-core/src/context/token_tracker.rs similarity index 100% rename from packages/aether-core/src/context/token_tracker.rs rename to crates/aether-core/src/context/token_tracker.rs diff --git a/packages/aether-core/src/core/agent.rs b/crates/aether-core/src/core/agent.rs similarity index 100% rename from packages/aether-core/src/core/agent.rs rename to crates/aether-core/src/core/agent.rs diff --git a/packages/aether-core/src/core/agent_builder.rs b/crates/aether-core/src/core/agent_builder.rs similarity index 100% rename from packages/aether-core/src/core/agent_builder.rs rename to crates/aether-core/src/core/agent_builder.rs diff --git a/packages/aether-core/src/core/error.rs b/crates/aether-core/src/core/error.rs similarity index 100% rename from packages/aether-core/src/core/error.rs rename to crates/aether-core/src/core/error.rs diff --git a/packages/aether-core/src/core/mod.rs b/crates/aether-core/src/core/mod.rs similarity index 100% rename from packages/aether-core/src/core/mod.rs rename to crates/aether-core/src/core/mod.rs diff --git a/packages/aether-core/src/core/prompt.rs b/crates/aether-core/src/core/prompt.rs similarity index 100% rename from packages/aether-core/src/core/prompt.rs rename to crates/aether-core/src/core/prompt.rs diff --git a/packages/aether-core/src/core/retry_config.rs b/crates/aether-core/src/core/retry_config.rs similarity index 100% rename from packages/aether-core/src/core/retry_config.rs rename to crates/aether-core/src/core/retry_config.rs diff --git a/packages/aether-core/src/docs/basic_agent.md b/crates/aether-core/src/docs/basic_agent.md similarity index 100% rename from packages/aether-core/src/docs/basic_agent.md rename to crates/aether-core/src/docs/basic_agent.md diff --git a/packages/aether-core/src/docs/prompt_source.md b/crates/aether-core/src/docs/prompt_source.md similarity index 100% rename from packages/aether-core/src/docs/prompt_source.md rename to crates/aether-core/src/docs/prompt_source.md diff --git a/packages/aether-core/src/docs/tool_filter.md b/crates/aether-core/src/docs/tool_filter.md similarity index 100% rename from packages/aether-core/src/docs/tool_filter.md rename to crates/aether-core/src/docs/tool_filter.md diff --git a/packages/aether-core/src/events/acp.rs b/crates/aether-core/src/events/acp.rs similarity index 100% rename from packages/aether-core/src/events/acp.rs rename to crates/aether-core/src/events/acp.rs diff --git a/packages/aether-core/src/events/agent_message.rs b/crates/aether-core/src/events/agent_message.rs similarity index 100% rename from packages/aether-core/src/events/agent_message.rs rename to crates/aether-core/src/events/agent_message.rs diff --git a/packages/aether-core/src/events/mod.rs b/crates/aether-core/src/events/mod.rs similarity index 100% rename from packages/aether-core/src/events/mod.rs rename to crates/aether-core/src/events/mod.rs diff --git a/packages/aether-core/src/events/sub_agent_progress.rs b/crates/aether-core/src/events/sub_agent_progress.rs similarity index 100% rename from packages/aether-core/src/events/sub_agent_progress.rs rename to crates/aether-core/src/events/sub_agent_progress.rs diff --git a/packages/aether-core/src/events/user_message.rs b/crates/aether-core/src/events/user_message.rs similarity index 100% rename from packages/aether-core/src/events/user_message.rs rename to crates/aether-core/src/events/user_message.rs diff --git a/packages/aether-core/src/lib.rs b/crates/aether-core/src/lib.rs similarity index 100% rename from packages/aether-core/src/lib.rs rename to crates/aether-core/src/lib.rs diff --git a/packages/aether-core/src/mcp/mcp_builder.rs b/crates/aether-core/src/mcp/mcp_builder.rs similarity index 100% rename from packages/aether-core/src/mcp/mcp_builder.rs rename to crates/aether-core/src/mcp/mcp_builder.rs diff --git a/packages/aether-core/src/mcp/mod.rs b/crates/aether-core/src/mcp/mod.rs similarity index 100% rename from packages/aether-core/src/mcp/mod.rs rename to crates/aether-core/src/mcp/mod.rs diff --git a/packages/aether-core/src/mcp/run_mcp_task.rs b/crates/aether-core/src/mcp/run_mcp_task.rs similarity index 100% rename from packages/aether-core/src/mcp/run_mcp_task.rs rename to crates/aether-core/src/mcp/run_mcp_task.rs diff --git a/packages/aether-core/src/mcp/tool_bridge.rs b/crates/aether-core/src/mcp/tool_bridge.rs similarity index 100% rename from packages/aether-core/src/mcp/tool_bridge.rs rename to crates/aether-core/src/mcp/tool_bridge.rs diff --git a/packages/aether-core/src/testing/agent_message_builder.rs b/crates/aether-core/src/testing/agent_message_builder.rs similarity index 100% rename from packages/aether-core/src/testing/agent_message_builder.rs rename to crates/aether-core/src/testing/agent_message_builder.rs diff --git a/packages/aether-core/src/testing/fake_mcp.rs b/crates/aether-core/src/testing/fake_mcp.rs similarity index 100% rename from packages/aether-core/src/testing/fake_mcp.rs rename to crates/aether-core/src/testing/fake_mcp.rs diff --git a/packages/aether-core/src/testing/mod.rs b/crates/aether-core/src/testing/mod.rs similarity index 100% rename from packages/aether-core/src/testing/mod.rs rename to crates/aether-core/src/testing/mod.rs diff --git a/packages/aether-core/src/testing/utils.rs b/crates/aether-core/src/testing/utils.rs similarity index 100% rename from packages/aether-core/src/testing/utils.rs rename to crates/aether-core/src/testing/utils.rs diff --git a/packages/aether-core/tests/agent.rs b/crates/aether-core/tests/agent.rs similarity index 100% rename from packages/aether-core/tests/agent.rs rename to crates/aether-core/tests/agent.rs diff --git a/packages/aether-core/tests/agent/agent_tests.rs b/crates/aether-core/tests/agent/agent_tests.rs similarity index 100% rename from packages/aether-core/tests/agent/agent_tests.rs rename to crates/aether-core/tests/agent/agent_tests.rs diff --git a/packages/aether-core/tests/agent/cancel_tests.rs b/crates/aether-core/tests/agent/cancel_tests.rs similarity index 100% rename from packages/aether-core/tests/agent/cancel_tests.rs rename to crates/aether-core/tests/agent/cancel_tests.rs diff --git a/packages/aether-core/tests/agent/clear_context_tests.rs b/crates/aether-core/tests/agent/clear_context_tests.rs similarity index 100% rename from packages/aether-core/tests/agent/clear_context_tests.rs rename to crates/aether-core/tests/agent/clear_context_tests.rs diff --git a/packages/aether-core/tests/agent/error_recovery_tests.rs b/crates/aether-core/tests/agent/error_recovery_tests.rs similarity index 100% rename from packages/aether-core/tests/agent/error_recovery_tests.rs rename to crates/aether-core/tests/agent/error_recovery_tests.rs diff --git a/packages/aether-core/tests/agent/model_switch_tests.rs b/crates/aether-core/tests/agent/model_switch_tests.rs similarity index 100% rename from packages/aether-core/tests/agent/model_switch_tests.rs rename to crates/aether-core/tests/agent/model_switch_tests.rs diff --git a/packages/aether-core/tests/agent/queued_message_tests.rs b/crates/aether-core/tests/agent/queued_message_tests.rs similarity index 100% rename from packages/aether-core/tests/agent/queued_message_tests.rs rename to crates/aether-core/tests/agent/queued_message_tests.rs diff --git a/packages/aether-core/tests/agent/retry_tests.rs b/crates/aether-core/tests/agent/retry_tests.rs similarity index 100% rename from packages/aether-core/tests/agent/retry_tests.rs rename to crates/aether-core/tests/agent/retry_tests.rs diff --git a/packages/aether-core/tests/doc_examples.rs b/crates/aether-core/tests/doc_examples.rs similarity index 100% rename from packages/aether-core/tests/doc_examples.rs rename to crates/aether-core/tests/doc_examples.rs diff --git a/packages/aether-core/tests/mcp.rs b/crates/aether-core/tests/mcp.rs similarity index 100% rename from packages/aether-core/tests/mcp.rs rename to crates/aether-core/tests/mcp.rs diff --git a/packages/aether-core/tests/mcp/config_parser_tests.rs b/crates/aether-core/tests/mcp/config_parser_tests.rs similarity index 100% rename from packages/aether-core/tests/mcp/config_parser_tests.rs rename to crates/aether-core/tests/mcp/config_parser_tests.rs diff --git a/packages/aether-core/tests/mcp/instructions_tests.rs b/crates/aether-core/tests/mcp/instructions_tests.rs similarity index 100% rename from packages/aether-core/tests/mcp/instructions_tests.rs rename to crates/aether-core/tests/mcp/instructions_tests.rs diff --git a/packages/aether-core/tests/mcp/oauth_tests.rs b/crates/aether-core/tests/mcp/oauth_tests.rs similarity index 100% rename from packages/aether-core/tests/mcp/oauth_tests.rs rename to crates/aether-core/tests/mcp/oauth_tests.rs diff --git a/packages/aether-core/tests/mcp/tool_proxy_tests.rs b/crates/aether-core/tests/mcp/tool_proxy_tests.rs similarity index 100% rename from packages/aether-core/tests/mcp/tool_proxy_tests.rs rename to crates/aether-core/tests/mcp/tool_proxy_tests.rs diff --git a/packages/aether-core/tests/mcp/url_elicitation_tests.rs b/crates/aether-core/tests/mcp/url_elicitation_tests.rs similarity index 100% rename from packages/aether-core/tests/mcp/url_elicitation_tests.rs rename to crates/aether-core/tests/mcp/url_elicitation_tests.rs diff --git a/packages/aether-evals/CHANGELOG.md b/crates/aether-evals/CHANGELOG.md similarity index 100% rename from packages/aether-evals/CHANGELOG.md rename to crates/aether-evals/CHANGELOG.md diff --git a/packages/aether-evals/Cargo.toml b/crates/aether-evals/Cargo.toml similarity index 100% rename from packages/aether-evals/Cargo.toml rename to crates/aether-evals/Cargo.toml diff --git a/packages/aether-evals/README.md b/crates/aether-evals/README.md similarity index 100% rename from packages/aether-evals/README.md rename to crates/aether-evals/README.md diff --git a/packages/aether-evals/src/agents/agent.rs b/crates/aether-evals/src/agents/agent.rs similarity index 100% rename from packages/aether-evals/src/agents/agent.rs rename to crates/aether-evals/src/agents/agent.rs diff --git a/packages/aether-evals/src/agents/docker.rs b/crates/aether-evals/src/agents/docker.rs similarity index 100% rename from packages/aether-evals/src/agents/docker.rs rename to crates/aether-evals/src/agents/docker.rs diff --git a/packages/aether-evals/src/agents/docker_agent.rs b/crates/aether-evals/src/agents/docker_agent.rs similarity index 100% rename from packages/aether-evals/src/agents/docker_agent.rs rename to crates/aether-evals/src/agents/docker_agent.rs diff --git a/packages/aether-evals/src/agents/env.rs b/crates/aether-evals/src/agents/env.rs similarity index 100% rename from packages/aether-evals/src/agents/env.rs rename to crates/aether-evals/src/agents/env.rs diff --git a/packages/aether-evals/src/agents/fake_agent.rs b/crates/aether-evals/src/agents/fake_agent.rs similarity index 100% rename from packages/aether-evals/src/agents/fake_agent.rs rename to crates/aether-evals/src/agents/fake_agent.rs diff --git a/packages/aether-evals/src/agents/mod.rs b/crates/aether-evals/src/agents/mod.rs similarity index 100% rename from packages/aether-evals/src/agents/mod.rs rename to crates/aether-evals/src/agents/mod.rs diff --git a/packages/aether-evals/src/agents/transcript.rs b/crates/aether-evals/src/agents/transcript.rs similarity index 100% rename from packages/aether-evals/src/agents/transcript.rs rename to crates/aether-evals/src/agents/transcript.rs diff --git a/packages/aether-evals/src/assertions.rs b/crates/aether-evals/src/assertions.rs similarity index 100% rename from packages/aether-evals/src/assertions.rs rename to crates/aether-evals/src/assertions.rs diff --git a/packages/aether-evals/src/error.rs b/crates/aether-evals/src/error.rs similarity index 100% rename from packages/aether-evals/src/error.rs rename to crates/aether-evals/src/error.rs diff --git a/packages/aether-evals/src/evals/diff.rs b/crates/aether-evals/src/evals/diff.rs similarity index 100% rename from packages/aether-evals/src/evals/diff.rs rename to crates/aether-evals/src/evals/diff.rs diff --git a/packages/aether-evals/src/evals/mod.rs b/crates/aether-evals/src/evals/mod.rs similarity index 100% rename from packages/aether-evals/src/evals/mod.rs rename to crates/aether-evals/src/evals/mod.rs diff --git a/packages/aether-evals/src/evals/task.rs b/crates/aether-evals/src/evals/task.rs similarity index 100% rename from packages/aether-evals/src/evals/task.rs rename to crates/aether-evals/src/evals/task.rs diff --git a/packages/aether-evals/src/evals/transcript.rs b/crates/aether-evals/src/evals/transcript.rs similarity index 100% rename from packages/aether-evals/src/evals/transcript.rs rename to crates/aether-evals/src/evals/transcript.rs diff --git a/packages/aether-evals/src/evals/workspace.rs b/crates/aether-evals/src/evals/workspace.rs similarity index 100% rename from packages/aether-evals/src/evals/workspace.rs rename to crates/aether-evals/src/evals/workspace.rs diff --git a/packages/aether-evals/src/git_repo.rs b/crates/aether-evals/src/git_repo.rs similarity index 100% rename from packages/aether-evals/src/git_repo.rs rename to crates/aether-evals/src/git_repo.rs diff --git a/packages/aether-evals/src/judge.rs b/crates/aether-evals/src/judge.rs similarity index 100% rename from packages/aether-evals/src/judge.rs rename to crates/aether-evals/src/judge.rs diff --git a/packages/aether-evals/src/lib.rs b/crates/aether-evals/src/lib.rs similarity index 100% rename from packages/aether-evals/src/lib.rs rename to crates/aether-evals/src/lib.rs diff --git a/packages/aether-evals/tests/docker_agent_tests.rs b/crates/aether-evals/tests/docker_agent_tests.rs similarity index 100% rename from packages/aether-evals/tests/docker_agent_tests.rs rename to crates/aether-evals/tests/docker_agent_tests.rs diff --git a/packages/aether-evals/tests/fake_agent_tests.rs b/crates/aether-evals/tests/fake_agent_tests.rs similarity index 100% rename from packages/aether-evals/tests/fake_agent_tests.rs rename to crates/aether-evals/tests/fake_agent_tests.rs diff --git a/packages/aether-lspd/CHANGELOG.md b/crates/aether-lspd/CHANGELOG.md similarity index 100% rename from packages/aether-lspd/CHANGELOG.md rename to crates/aether-lspd/CHANGELOG.md diff --git a/packages/aether-lspd/Cargo.toml b/crates/aether-lspd/Cargo.toml similarity index 100% rename from packages/aether-lspd/Cargo.toml rename to crates/aether-lspd/Cargo.toml diff --git a/packages/aether-lspd/README.md b/crates/aether-lspd/README.md similarity index 100% rename from packages/aether-lspd/README.md rename to crates/aether-lspd/README.md diff --git a/packages/aether-lspd/src/client.rs b/crates/aether-lspd/src/client.rs similarity index 100% rename from packages/aether-lspd/src/client.rs rename to crates/aether-lspd/src/client.rs diff --git a/packages/aether-lspd/src/client_connection.rs b/crates/aether-lspd/src/client_connection.rs similarity index 100% rename from packages/aether-lspd/src/client_connection.rs rename to crates/aether-lspd/src/client_connection.rs diff --git a/packages/aether-lspd/src/daemon.rs b/crates/aether-lspd/src/daemon.rs similarity index 100% rename from packages/aether-lspd/src/daemon.rs rename to crates/aether-lspd/src/daemon.rs diff --git a/packages/aether-lspd/src/diagnostics_store.rs b/crates/aether-lspd/src/diagnostics_store.rs similarity index 100% rename from packages/aether-lspd/src/diagnostics_store.rs rename to crates/aether-lspd/src/diagnostics_store.rs diff --git a/packages/aether-lspd/src/docs/client.md b/crates/aether-lspd/src/docs/client.md similarity index 100% rename from packages/aether-lspd/src/docs/client.md rename to crates/aether-lspd/src/docs/client.md diff --git a/packages/aether-lspd/src/docs/client_error.md b/crates/aether-lspd/src/docs/client_error.md similarity index 100% rename from packages/aether-lspd/src/docs/client_error.md rename to crates/aether-lspd/src/docs/client_error.md diff --git a/packages/aether-lspd/src/docs/daemon.md b/crates/aether-lspd/src/docs/daemon.md similarity index 100% rename from packages/aether-lspd/src/docs/daemon.md rename to crates/aether-lspd/src/docs/daemon.md diff --git a/packages/aether-lspd/src/docs/daemon_error.md b/crates/aether-lspd/src/docs/daemon_error.md similarity index 100% rename from packages/aether-lspd/src/docs/daemon_error.md rename to crates/aether-lspd/src/docs/daemon_error.md diff --git a/packages/aether-lspd/src/docs/language_catalog.md b/crates/aether-lspd/src/docs/language_catalog.md similarity index 100% rename from packages/aether-lspd/src/docs/language_catalog.md rename to crates/aether-lspd/src/docs/language_catalog.md diff --git a/packages/aether-lspd/src/docs/protocol.md b/crates/aether-lspd/src/docs/protocol.md similarity index 100% rename from packages/aether-lspd/src/docs/protocol.md rename to crates/aether-lspd/src/docs/protocol.md diff --git a/packages/aether-lspd/src/docs/socket_path.md b/crates/aether-lspd/src/docs/socket_path.md similarity index 100% rename from packages/aether-lspd/src/docs/socket_path.md rename to crates/aether-lspd/src/docs/socket_path.md diff --git a/packages/aether-lspd/src/docs/testing.md b/crates/aether-lspd/src/docs/testing.md similarity index 100% rename from packages/aether-lspd/src/docs/testing.md rename to crates/aether-lspd/src/docs/testing.md diff --git a/packages/aether-lspd/src/document_lifecycle.rs b/crates/aether-lspd/src/document_lifecycle.rs similarity index 100% rename from packages/aether-lspd/src/document_lifecycle.rs rename to crates/aether-lspd/src/document_lifecycle.rs diff --git a/packages/aether-lspd/src/error.rs b/crates/aether-lspd/src/error.rs similarity index 100% rename from packages/aether-lspd/src/error.rs rename to crates/aether-lspd/src/error.rs diff --git a/packages/aether-lspd/src/file_watcher.rs b/crates/aether-lspd/src/file_watcher.rs similarity index 100% rename from packages/aether-lspd/src/file_watcher.rs rename to crates/aether-lspd/src/file_watcher.rs diff --git a/packages/aether-lspd/src/language_catalog.rs b/crates/aether-lspd/src/language_catalog.rs similarity index 100% rename from packages/aether-lspd/src/language_catalog.rs rename to crates/aether-lspd/src/language_catalog.rs diff --git a/packages/aether-lspd/src/lib.rs b/crates/aether-lspd/src/lib.rs similarity index 100% rename from packages/aether-lspd/src/lib.rs rename to crates/aether-lspd/src/lib.rs diff --git a/packages/aether-lspd/src/lsp_utils.rs b/crates/aether-lspd/src/lsp_utils.rs similarity index 100% rename from packages/aether-lspd/src/lsp_utils.rs rename to crates/aether-lspd/src/lsp_utils.rs diff --git a/packages/aether-lspd/src/main.rs b/crates/aether-lspd/src/main.rs similarity index 100% rename from packages/aether-lspd/src/main.rs rename to crates/aether-lspd/src/main.rs diff --git a/packages/aether-lspd/src/pid_lockfile.rs b/crates/aether-lspd/src/pid_lockfile.rs similarity index 100% rename from packages/aether-lspd/src/pid_lockfile.rs rename to crates/aether-lspd/src/pid_lockfile.rs diff --git a/packages/aether-lspd/src/process_transport.rs b/crates/aether-lspd/src/process_transport.rs similarity index 100% rename from packages/aether-lspd/src/process_transport.rs rename to crates/aether-lspd/src/process_transport.rs diff --git a/packages/aether-lspd/src/protocol.rs b/crates/aether-lspd/src/protocol.rs similarity index 100% rename from packages/aether-lspd/src/protocol.rs rename to crates/aether-lspd/src/protocol.rs diff --git a/packages/aether-lspd/src/refresh_queue.rs b/crates/aether-lspd/src/refresh_queue.rs similarity index 100% rename from packages/aether-lspd/src/refresh_queue.rs rename to crates/aether-lspd/src/refresh_queue.rs diff --git a/packages/aether-lspd/src/socket_path.rs b/crates/aether-lspd/src/socket_path.rs similarity index 100% rename from packages/aether-lspd/src/socket_path.rs rename to crates/aether-lspd/src/socket_path.rs diff --git a/packages/aether-lspd/src/testing.rs b/crates/aether-lspd/src/testing.rs similarity index 100% rename from packages/aether-lspd/src/testing.rs rename to crates/aether-lspd/src/testing.rs diff --git a/packages/aether-lspd/src/uri.rs b/crates/aether-lspd/src/uri.rs similarity index 100% rename from packages/aether-lspd/src/uri.rs rename to crates/aether-lspd/src/uri.rs diff --git a/packages/aether-lspd/src/workspace_registry.rs b/crates/aether-lspd/src/workspace_registry.rs similarity index 100% rename from packages/aether-lspd/src/workspace_registry.rs rename to crates/aether-lspd/src/workspace_registry.rs diff --git a/packages/aether-lspd/src/workspace_session.rs b/crates/aether-lspd/src/workspace_session.rs similarity index 100% rename from packages/aether-lspd/src/workspace_session.rs rename to crates/aether-lspd/src/workspace_session.rs diff --git a/packages/aether-lspd/tests/common/cargo_project.rs b/crates/aether-lspd/tests/common/cargo_project.rs similarity index 100% rename from packages/aether-lspd/tests/common/cargo_project.rs rename to crates/aether-lspd/tests/common/cargo_project.rs diff --git a/packages/aether-lspd/tests/common/daemon_harness.rs b/crates/aether-lspd/tests/common/daemon_harness.rs similarity index 100% rename from packages/aether-lspd/tests/common/daemon_harness.rs rename to crates/aether-lspd/tests/common/daemon_harness.rs diff --git a/packages/aether-lspd/tests/common/fake_lsp_server.py b/crates/aether-lspd/tests/common/fake_lsp_server.py similarity index 100% rename from packages/aether-lspd/tests/common/fake_lsp_server.py rename to crates/aether-lspd/tests/common/fake_lsp_server.py diff --git a/packages/aether-lspd/tests/common/mod.rs b/crates/aether-lspd/tests/common/mod.rs similarity index 100% rename from packages/aether-lspd/tests/common/mod.rs rename to crates/aether-lspd/tests/common/mod.rs diff --git a/packages/aether-lspd/tests/e2e_error_handling.rs b/crates/aether-lspd/tests/e2e_error_handling.rs similarity index 100% rename from packages/aether-lspd/tests/e2e_error_handling.rs rename to crates/aether-lspd/tests/e2e_error_handling.rs diff --git a/packages/aether-lspd/tests/e2e_lifecycle.rs b/crates/aether-lspd/tests/e2e_lifecycle.rs similarity index 100% rename from packages/aether-lspd/tests/e2e_lifecycle.rs rename to crates/aether-lspd/tests/e2e_lifecycle.rs diff --git a/packages/aether-lspd/tests/e2e_requests.rs b/crates/aether-lspd/tests/e2e_requests.rs similarity index 100% rename from packages/aether-lspd/tests/e2e_requests.rs rename to crates/aether-lspd/tests/e2e_requests.rs diff --git a/packages/aether-lspd/tests/e2e_smoke_real.rs b/crates/aether-lspd/tests/e2e_smoke_real.rs similarity index 100% rename from packages/aether-lspd/tests/e2e_smoke_real.rs rename to crates/aether-lspd/tests/e2e_smoke_real.rs diff --git a/packages/aether-project/CHANGELOG.md b/crates/aether-project/CHANGELOG.md similarity index 100% rename from packages/aether-project/CHANGELOG.md rename to crates/aether-project/CHANGELOG.md diff --git a/packages/aether-project/Cargo.toml b/crates/aether-project/Cargo.toml similarity index 100% rename from packages/aether-project/Cargo.toml rename to crates/aether-project/Cargo.toml diff --git a/packages/aether-project/README.md b/crates/aether-project/README.md similarity index 100% rename from packages/aether-project/README.md rename to crates/aether-project/README.md diff --git a/packages/aether-project/src/aether_settings.rs b/crates/aether-project/src/aether_settings.rs similarity index 100% rename from packages/aether-project/src/aether_settings.rs rename to crates/aether-project/src/aether_settings.rs diff --git a/packages/aether-project/src/agent_catalog.rs b/crates/aether-project/src/agent_catalog.rs similarity index 100% rename from packages/aether-project/src/agent_catalog.rs rename to crates/aether-project/src/agent_catalog.rs diff --git a/packages/aether-project/src/agent_config.rs b/crates/aether-project/src/agent_config.rs similarity index 100% rename from packages/aether-project/src/agent_config.rs rename to crates/aether-project/src/agent_config.rs diff --git a/packages/aether-project/src/bin/aether-settings-schema.rs b/crates/aether-project/src/bin/aether-settings-schema.rs similarity index 100% rename from packages/aether-project/src/bin/aether-settings-schema.rs rename to crates/aether-project/src/bin/aether-settings-schema.rs diff --git a/packages/aether-project/src/docs/aether_settings.md b/crates/aether-project/src/docs/aether_settings.md similarity index 100% rename from packages/aether-project/src/docs/aether_settings.md rename to crates/aether-project/src/docs/aether_settings.md diff --git a/packages/aether-project/src/docs/agent_config.md b/crates/aether-project/src/docs/agent_config.md similarity index 100% rename from packages/aether-project/src/docs/agent_config.md rename to crates/aether-project/src/docs/agent_config.md diff --git a/packages/aether-project/src/docs/mcp_source_spec.md b/crates/aether-project/src/docs/mcp_source_spec.md similarity index 100% rename from packages/aether-project/src/docs/mcp_source_spec.md rename to crates/aether-project/src/docs/mcp_source_spec.md diff --git a/packages/aether-project/src/error.rs b/crates/aether-project/src/error.rs similarity index 100% rename from packages/aether-project/src/error.rs rename to crates/aether-project/src/error.rs diff --git a/packages/aether-project/src/lib.rs b/crates/aether-project/src/lib.rs similarity index 100% rename from packages/aether-project/src/lib.rs rename to crates/aether-project/src/lib.rs diff --git a/packages/aether-project/src/mcp_config_source_config.rs b/crates/aether-project/src/mcp_config_source_config.rs similarity index 100% rename from packages/aether-project/src/mcp_config_source_config.rs rename to crates/aether-project/src/mcp_config_source_config.rs diff --git a/packages/aether-project/src/prompt_catalog.rs b/crates/aether-project/src/prompt_catalog.rs similarity index 99% rename from packages/aether-project/src/prompt_catalog.rs rename to crates/aether-project/src/prompt_catalog.rs index cd6fd4f50..3043c38cc 100644 --- a/packages/aether-project/src/prompt_catalog.rs +++ b/crates/aether-project/src/prompt_catalog.rs @@ -188,7 +188,7 @@ mod tests { write_skill( dir.path(), "rust-rules", - "---\ndescription: Rust conventions\nagent-invocable: false\ntriggers:\n read:\n - \"packages/**/*.rs\"\n---\nFollow Rust conventions.", + "---\ndescription: Rust conventions\nagent-invocable: false\ntriggers:\n read:\n - \"crates/**/*.rs\"\n---\nFollow Rust conventions.", ); let catalog = PromptCatalog::from_dir(dir.path()).unwrap(); @@ -198,7 +198,7 @@ mod tests { assert!(spec.user_invocable); assert!(!spec.agent_invocable); assert!(!spec.triggers.is_empty()); - assert!(spec.triggers.matches_read("packages/foo/bar.rs")); + assert!(spec.triggers.matches_read("crates/foo/bar.rs")); assert!(!spec.triggers.matches_read("other/file.py")); } diff --git a/packages/aether-project/src/prompt_file.rs b/crates/aether-project/src/prompt_file.rs similarity index 100% rename from packages/aether-project/src/prompt_file.rs rename to crates/aether-project/src/prompt_file.rs diff --git a/packages/aether-project/tests/doc_examples.rs b/crates/aether-project/tests/doc_examples.rs similarity index 100% rename from packages/aether-project/tests/doc_examples.rs rename to crates/aether-project/tests/doc_examples.rs diff --git a/packages/aether-schemas/CHANGELOG.md b/crates/aether-schemas/CHANGELOG.md similarity index 100% rename from packages/aether-schemas/CHANGELOG.md rename to crates/aether-schemas/CHANGELOG.md diff --git a/packages/aether-schemas/Cargo.toml b/crates/aether-schemas/Cargo.toml similarity index 100% rename from packages/aether-schemas/Cargo.toml rename to crates/aether-schemas/Cargo.toml diff --git a/packages/aether-schemas/src/main.rs b/crates/aether-schemas/src/main.rs similarity index 100% rename from packages/aether-schemas/src/main.rs rename to crates/aether-schemas/src/main.rs diff --git a/packages/doctest/Cargo.toml b/crates/doctest/Cargo.toml similarity index 100% rename from packages/doctest/Cargo.toml rename to crates/doctest/Cargo.toml diff --git a/packages/doctest/src/lib.rs b/crates/doctest/src/lib.rs similarity index 100% rename from packages/doctest/src/lib.rs rename to crates/doctest/src/lib.rs diff --git a/packages/internal-evals/Cargo.toml b/crates/internal-evals/Cargo.toml similarity index 100% rename from packages/internal-evals/Cargo.toml rename to crates/internal-evals/Cargo.toml diff --git a/packages/internal-evals/README.md b/crates/internal-evals/README.md similarity index 86% rename from packages/internal-evals/README.md rename to crates/internal-evals/README.md index 4d1aa40ac..5a6aa5abf 100644 --- a/packages/internal-evals/README.md +++ b/crates/internal-evals/README.md @@ -15,7 +15,7 @@ Contains Dockerized evals for Aether agents. There are two ways to write evals: - **Declarative JSON, no Rust** — author one `*.eval.json` file per scenario and run them with `aether eval`. Best for users evaluating the agent against their own repo. See the [evals documentation](https://aether-agent.io/aether/running/evals/) for the eval file format and CLI usage; a complete example is in [`examples/edit-notes.eval.json`](examples/edit-notes.eval.json) with a sandbox image in [`examples/Dockerfile`](examples/Dockerfile). -- **Rust tests** — `#[tokio::test]`s in `packages/internal-evals/tests` using the `aether-evals` harness directly. Best for evals maintained in this repo. See [Running evals](#running-evals). +- **Rust tests** — `#[tokio::test]`s in `crates/internal-evals/tests` using the `aether-evals` harness directly. Best for evals maintained in this repo. See [Running evals](#running-evals). ## Running evals @@ -49,7 +49,7 @@ AETHER_EVAL_AGENT="Fast" just evals ## Adding evals -- Put real LLM scenarios in `packages/internal-evals/tests` or add declarative `*.eval.json` files under `packages/internal-evals/examples`; shared Rust setup code lives in `tests/common`. +- Put real LLM scenarios in `crates/internal-evals/tests` or add declarative `*.eval.json` files under `crates/internal-evals/examples`; shared Rust setup code lives in `tests/common`. - `just evals` runs tests ending in `_eval` with nextest's default filter disabled and the `evals` group selected; keep that suffix for real provider-backed eval tests. - Drive real Aether evals through the in-image `aether-eval-agent` wrapper command, which emits `AgentMessage` NDJSON via `aether headless --output json`. - Run the agent with `aether_evals::Task::new(prompt, workspace).run(&agent).await?`. diff --git a/packages/internal-evals/examples/Dockerfile b/crates/internal-evals/examples/Dockerfile similarity index 92% rename from packages/internal-evals/examples/Dockerfile rename to crates/internal-evals/examples/Dockerfile index 0c13ea243..325eff141 100644 --- a/packages/internal-evals/examples/Dockerfile +++ b/crates/internal-evals/examples/Dockerfile @@ -19,7 +19,7 @@ COPY target/debug/aether /usr/local/bin/aether COPY .aether /repo/.aether COPY AGENTS.md /repo/AGENTS.md COPY mcp.json /repo/mcp.json -COPY packages/internal-evals/examples/aether-eval-agent /usr/local/bin/aether-eval-agent +COPY crates/internal-evals/examples/aether-eval-agent /usr/local/bin/aether-eval-agent RUN chmod +x /usr/local/bin/aether-eval-agent WORKDIR /workspace diff --git a/packages/internal-evals/examples/aether-eval-agent b/crates/internal-evals/examples/aether-eval-agent similarity index 100% rename from packages/internal-evals/examples/aether-eval-agent rename to crates/internal-evals/examples/aether-eval-agent diff --git a/packages/internal-evals/prompts/coding_agent.md b/crates/internal-evals/prompts/coding_agent.md similarity index 100% rename from packages/internal-evals/prompts/coding_agent.md rename to crates/internal-evals/prompts/coding_agent.md diff --git a/packages/internal-evals/tests/batched_edits.rs b/crates/internal-evals/tests/batched_edits.rs similarity index 100% rename from packages/internal-evals/tests/batched_edits.rs rename to crates/internal-evals/tests/batched_edits.rs diff --git a/packages/internal-evals/tests/coding_edit_file.rs b/crates/internal-evals/tests/coding_edit_file.rs similarity index 100% rename from packages/internal-evals/tests/coding_edit_file.rs rename to crates/internal-evals/tests/coding_edit_file.rs diff --git a/packages/internal-evals/tests/common/mod.rs b/crates/internal-evals/tests/common/mod.rs similarity index 100% rename from packages/internal-evals/tests/common/mod.rs rename to crates/internal-evals/tests/common/mod.rs diff --git a/packages/llm-codegen/CHANGELOG.md b/crates/llm-codegen/CHANGELOG.md similarity index 100% rename from packages/llm-codegen/CHANGELOG.md rename to crates/llm-codegen/CHANGELOG.md diff --git a/packages/llm-codegen/Cargo.toml b/crates/llm-codegen/Cargo.toml similarity index 100% rename from packages/llm-codegen/Cargo.toml rename to crates/llm-codegen/Cargo.toml diff --git a/packages/llm-codegen/README.md b/crates/llm-codegen/README.md similarity index 100% rename from packages/llm-codegen/README.md rename to crates/llm-codegen/README.md diff --git a/packages/llm-codegen/src/lib.rs b/crates/llm-codegen/src/lib.rs similarity index 100% rename from packages/llm-codegen/src/lib.rs rename to crates/llm-codegen/src/lib.rs diff --git a/packages/llm/CHANGELOG.md b/crates/llm/CHANGELOG.md similarity index 100% rename from packages/llm/CHANGELOG.md rename to crates/llm/CHANGELOG.md diff --git a/packages/llm/Cargo.toml b/crates/llm/Cargo.toml similarity index 100% rename from packages/llm/Cargo.toml rename to crates/llm/Cargo.toml diff --git a/packages/llm/README.md b/crates/llm/README.md similarity index 100% rename from packages/llm/README.md rename to crates/llm/README.md diff --git a/packages/llm/build.rs b/crates/llm/build.rs similarity index 100% rename from packages/llm/build.rs rename to crates/llm/build.rs diff --git a/packages/llm/examples/bedrock_inference_profile.rs b/crates/llm/examples/bedrock_inference_profile.rs similarity index 100% rename from packages/llm/examples/bedrock_inference_profile.rs rename to crates/llm/examples/bedrock_inference_profile.rs diff --git a/packages/llm/models.json b/crates/llm/models.json similarity index 100% rename from packages/llm/models.json rename to crates/llm/models.json diff --git a/packages/llm/scripts/fetch-models.sh b/crates/llm/scripts/fetch-models.sh similarity index 100% rename from packages/llm/scripts/fetch-models.sh rename to crates/llm/scripts/fetch-models.sh diff --git a/packages/llm/src/alloyed.rs b/crates/llm/src/alloyed.rs similarity index 100% rename from packages/llm/src/alloyed.rs rename to crates/llm/src/alloyed.rs diff --git a/packages/llm/src/catalog/bedrock.rs b/crates/llm/src/catalog/bedrock.rs similarity index 100% rename from packages/llm/src/catalog/bedrock.rs rename to crates/llm/src/catalog/bedrock.rs diff --git a/packages/llm/src/catalog/mod.rs b/crates/llm/src/catalog/mod.rs similarity index 100% rename from packages/llm/src/catalog/mod.rs rename to crates/llm/src/catalog/mod.rs diff --git a/packages/llm/src/chat_message.rs b/crates/llm/src/chat_message.rs similarity index 100% rename from packages/llm/src/chat_message.rs rename to crates/llm/src/chat_message.rs diff --git a/packages/llm/src/context.rs b/crates/llm/src/context.rs similarity index 100% rename from packages/llm/src/context.rs rename to crates/llm/src/context.rs diff --git a/packages/llm/src/credential.rs b/crates/llm/src/credential.rs similarity index 100% rename from packages/llm/src/credential.rs rename to crates/llm/src/credential.rs diff --git a/packages/llm/src/docs/alloyed.md b/crates/llm/src/docs/alloyed.md similarity index 100% rename from packages/llm/src/docs/alloyed.md rename to crates/llm/src/docs/alloyed.md diff --git a/packages/llm/src/docs/catalog.md b/crates/llm/src/docs/catalog.md similarity index 100% rename from packages/llm/src/docs/catalog.md rename to crates/llm/src/docs/catalog.md diff --git a/packages/llm/src/docs/chat_message.md b/crates/llm/src/docs/chat_message.md similarity index 100% rename from packages/llm/src/docs/chat_message.md rename to crates/llm/src/docs/chat_message.md diff --git a/packages/llm/src/docs/content_block.md b/crates/llm/src/docs/content_block.md similarity index 100% rename from packages/llm/src/docs/content_block.md rename to crates/llm/src/docs/content_block.md diff --git a/packages/llm/src/docs/context.md b/crates/llm/src/docs/context.md similarity index 100% rename from packages/llm/src/docs/context.md rename to crates/llm/src/docs/context.md diff --git a/packages/llm/src/docs/llm_error.md b/crates/llm/src/docs/llm_error.md similarity index 100% rename from packages/llm/src/docs/llm_error.md rename to crates/llm/src/docs/llm_error.md diff --git a/packages/llm/src/docs/llm_response.md b/crates/llm/src/docs/llm_response.md similarity index 100% rename from packages/llm/src/docs/llm_response.md rename to crates/llm/src/docs/llm_response.md diff --git a/packages/llm/src/docs/parser.md b/crates/llm/src/docs/parser.md similarity index 100% rename from packages/llm/src/docs/parser.md rename to crates/llm/src/docs/parser.md diff --git a/packages/llm/src/docs/provider_connection_override.md b/crates/llm/src/docs/provider_connection_override.md similarity index 100% rename from packages/llm/src/docs/provider_connection_override.md rename to crates/llm/src/docs/provider_connection_override.md diff --git a/packages/llm/src/docs/provider_factory.md b/crates/llm/src/docs/provider_factory.md similarity index 100% rename from packages/llm/src/docs/provider_factory.md rename to crates/llm/src/docs/provider_factory.md diff --git a/packages/llm/src/docs/providers.md b/crates/llm/src/docs/providers.md similarity index 100% rename from packages/llm/src/docs/providers.md rename to crates/llm/src/docs/providers.md diff --git a/packages/llm/src/docs/stop_reason.md b/crates/llm/src/docs/stop_reason.md similarity index 100% rename from packages/llm/src/docs/stop_reason.md rename to crates/llm/src/docs/stop_reason.md diff --git a/packages/llm/src/docs/streaming_model_provider.md b/crates/llm/src/docs/streaming_model_provider.md similarity index 100% rename from packages/llm/src/docs/streaming_model_provider.md rename to crates/llm/src/docs/streaming_model_provider.md diff --git a/packages/llm/src/docs/testing.md b/crates/llm/src/docs/testing.md similarity index 100% rename from packages/llm/src/docs/testing.md rename to crates/llm/src/docs/testing.md diff --git a/packages/llm/src/docs/tools.md b/crates/llm/src/docs/tools.md similarity index 100% rename from packages/llm/src/docs/tools.md rename to crates/llm/src/docs/tools.md diff --git a/packages/llm/src/error.rs b/crates/llm/src/error.rs similarity index 100% rename from packages/llm/src/error.rs rename to crates/llm/src/error.rs diff --git a/packages/llm/src/lib.rs b/crates/llm/src/lib.rs similarity index 100% rename from packages/llm/src/lib.rs rename to crates/llm/src/lib.rs diff --git a/packages/llm/src/llm_response.rs b/crates/llm/src/llm_response.rs similarity index 100% rename from packages/llm/src/llm_response.rs rename to crates/llm/src/llm_response.rs diff --git a/packages/llm/src/model_settings.rs b/crates/llm/src/model_settings.rs similarity index 100% rename from packages/llm/src/model_settings.rs rename to crates/llm/src/model_settings.rs diff --git a/packages/llm/src/parser.rs b/crates/llm/src/parser.rs similarity index 100% rename from packages/llm/src/parser.rs rename to crates/llm/src/parser.rs diff --git a/packages/llm/src/provider.rs b/crates/llm/src/provider.rs similarity index 100% rename from packages/llm/src/provider.rs rename to crates/llm/src/provider.rs diff --git a/packages/llm/src/provider_connection.rs b/crates/llm/src/provider_connection.rs similarity index 100% rename from packages/llm/src/provider_connection.rs rename to crates/llm/src/provider_connection.rs diff --git a/packages/llm/src/providers/anthropic/mappers.rs b/crates/llm/src/providers/anthropic/mappers.rs similarity index 100% rename from packages/llm/src/providers/anthropic/mappers.rs rename to crates/llm/src/providers/anthropic/mappers.rs diff --git a/packages/llm/src/providers/anthropic/mod.rs b/crates/llm/src/providers/anthropic/mod.rs similarity index 100% rename from packages/llm/src/providers/anthropic/mod.rs rename to crates/llm/src/providers/anthropic/mod.rs diff --git a/packages/llm/src/providers/anthropic/provider.rs b/crates/llm/src/providers/anthropic/provider.rs similarity index 100% rename from packages/llm/src/providers/anthropic/provider.rs rename to crates/llm/src/providers/anthropic/provider.rs diff --git a/packages/llm/src/providers/anthropic/streaming.rs b/crates/llm/src/providers/anthropic/streaming.rs similarity index 100% rename from packages/llm/src/providers/anthropic/streaming.rs rename to crates/llm/src/providers/anthropic/streaming.rs diff --git a/packages/llm/src/providers/anthropic/types.rs b/crates/llm/src/providers/anthropic/types.rs similarity index 100% rename from packages/llm/src/providers/anthropic/types.rs rename to crates/llm/src/providers/anthropic/types.rs diff --git a/packages/llm/src/providers/bedrock/mappers.rs b/crates/llm/src/providers/bedrock/mappers.rs similarity index 100% rename from packages/llm/src/providers/bedrock/mappers.rs rename to crates/llm/src/providers/bedrock/mappers.rs diff --git a/packages/llm/src/providers/bedrock/mod.rs b/crates/llm/src/providers/bedrock/mod.rs similarity index 100% rename from packages/llm/src/providers/bedrock/mod.rs rename to crates/llm/src/providers/bedrock/mod.rs diff --git a/packages/llm/src/providers/bedrock/provider.rs b/crates/llm/src/providers/bedrock/provider.rs similarity index 100% rename from packages/llm/src/providers/bedrock/provider.rs rename to crates/llm/src/providers/bedrock/provider.rs diff --git a/packages/llm/src/providers/bedrock/streaming.rs b/crates/llm/src/providers/bedrock/streaming.rs similarity index 100% rename from packages/llm/src/providers/bedrock/streaming.rs rename to crates/llm/src/providers/bedrock/streaming.rs diff --git a/packages/llm/src/providers/codex/mappers.rs b/crates/llm/src/providers/codex/mappers.rs similarity index 100% rename from packages/llm/src/providers/codex/mappers.rs rename to crates/llm/src/providers/codex/mappers.rs diff --git a/packages/llm/src/providers/codex/mod.rs b/crates/llm/src/providers/codex/mod.rs similarity index 100% rename from packages/llm/src/providers/codex/mod.rs rename to crates/llm/src/providers/codex/mod.rs diff --git a/packages/llm/src/providers/codex/oauth.rs b/crates/llm/src/providers/codex/oauth.rs similarity index 100% rename from packages/llm/src/providers/codex/oauth.rs rename to crates/llm/src/providers/codex/oauth.rs diff --git a/packages/llm/src/providers/codex/provider.rs b/crates/llm/src/providers/codex/provider.rs similarity index 100% rename from packages/llm/src/providers/codex/provider.rs rename to crates/llm/src/providers/codex/provider.rs diff --git a/packages/llm/src/providers/codex/streaming.rs b/crates/llm/src/providers/codex/streaming.rs similarity index 100% rename from packages/llm/src/providers/codex/streaming.rs rename to crates/llm/src/providers/codex/streaming.rs diff --git a/packages/llm/src/providers/gemini/mod.rs b/crates/llm/src/providers/gemini/mod.rs similarity index 100% rename from packages/llm/src/providers/gemini/mod.rs rename to crates/llm/src/providers/gemini/mod.rs diff --git a/packages/llm/src/providers/gemini/provider.rs b/crates/llm/src/providers/gemini/provider.rs similarity index 100% rename from packages/llm/src/providers/gemini/provider.rs rename to crates/llm/src/providers/gemini/provider.rs diff --git a/packages/llm/src/providers/local/discovery.rs b/crates/llm/src/providers/local/discovery.rs similarity index 100% rename from packages/llm/src/providers/local/discovery.rs rename to crates/llm/src/providers/local/discovery.rs diff --git a/packages/llm/src/providers/local/llama_cpp.rs b/crates/llm/src/providers/local/llama_cpp.rs similarity index 100% rename from packages/llm/src/providers/local/llama_cpp.rs rename to crates/llm/src/providers/local/llama_cpp.rs diff --git a/packages/llm/src/providers/local/mod.rs b/crates/llm/src/providers/local/mod.rs similarity index 100% rename from packages/llm/src/providers/local/mod.rs rename to crates/llm/src/providers/local/mod.rs diff --git a/packages/llm/src/providers/local/ollama.rs b/crates/llm/src/providers/local/ollama.rs similarity index 100% rename from packages/llm/src/providers/local/ollama.rs rename to crates/llm/src/providers/local/ollama.rs diff --git a/packages/llm/src/providers/local/util.rs b/crates/llm/src/providers/local/util.rs similarity index 100% rename from packages/llm/src/providers/local/util.rs rename to crates/llm/src/providers/local/util.rs diff --git a/packages/llm/src/providers/mod.rs b/crates/llm/src/providers/mod.rs similarity index 100% rename from packages/llm/src/providers/mod.rs rename to crates/llm/src/providers/mod.rs diff --git a/packages/llm/src/providers/openai/mappers.rs b/crates/llm/src/providers/openai/mappers.rs similarity index 100% rename from packages/llm/src/providers/openai/mappers.rs rename to crates/llm/src/providers/openai/mappers.rs diff --git a/packages/llm/src/providers/openai/mod.rs b/crates/llm/src/providers/openai/mod.rs similarity index 100% rename from packages/llm/src/providers/openai/mod.rs rename to crates/llm/src/providers/openai/mod.rs diff --git a/packages/llm/src/providers/openai/provider.rs b/crates/llm/src/providers/openai/provider.rs similarity index 100% rename from packages/llm/src/providers/openai/provider.rs rename to crates/llm/src/providers/openai/provider.rs diff --git a/packages/llm/src/providers/openai/responses_provider.rs b/crates/llm/src/providers/openai/responses_provider.rs similarity index 100% rename from packages/llm/src/providers/openai/responses_provider.rs rename to crates/llm/src/providers/openai/responses_provider.rs diff --git a/packages/llm/src/providers/openai/streaming.rs b/crates/llm/src/providers/openai/streaming.rs similarity index 100% rename from packages/llm/src/providers/openai/streaming.rs rename to crates/llm/src/providers/openai/streaming.rs diff --git a/packages/llm/src/providers/openai_compatible/config.rs b/crates/llm/src/providers/openai_compatible/config.rs similarity index 100% rename from packages/llm/src/providers/openai_compatible/config.rs rename to crates/llm/src/providers/openai_compatible/config.rs diff --git a/packages/llm/src/providers/openai_compatible/generic.rs b/crates/llm/src/providers/openai_compatible/generic.rs similarity index 100% rename from packages/llm/src/providers/openai_compatible/generic.rs rename to crates/llm/src/providers/openai_compatible/generic.rs diff --git a/packages/llm/src/providers/openai_compatible/mod.rs b/crates/llm/src/providers/openai_compatible/mod.rs similarity index 100% rename from packages/llm/src/providers/openai_compatible/mod.rs rename to crates/llm/src/providers/openai_compatible/mod.rs diff --git a/packages/llm/src/providers/openai_compatible/streaming.rs b/crates/llm/src/providers/openai_compatible/streaming.rs similarity index 100% rename from packages/llm/src/providers/openai_compatible/streaming.rs rename to crates/llm/src/providers/openai_compatible/streaming.rs diff --git a/packages/llm/src/providers/openai_compatible/types.rs b/crates/llm/src/providers/openai_compatible/types.rs similarity index 100% rename from packages/llm/src/providers/openai_compatible/types.rs rename to crates/llm/src/providers/openai_compatible/types.rs diff --git a/packages/llm/src/providers/openrouter/mod.rs b/crates/llm/src/providers/openrouter/mod.rs similarity index 100% rename from packages/llm/src/providers/openrouter/mod.rs rename to crates/llm/src/providers/openrouter/mod.rs diff --git a/packages/llm/src/providers/openrouter/provider.rs b/crates/llm/src/providers/openrouter/provider.rs similarity index 100% rename from packages/llm/src/providers/openrouter/provider.rs rename to crates/llm/src/providers/openrouter/provider.rs diff --git a/packages/llm/src/providers/openrouter/types.rs b/crates/llm/src/providers/openrouter/types.rs similarity index 100% rename from packages/llm/src/providers/openrouter/types.rs rename to crates/llm/src/providers/openrouter/types.rs diff --git a/packages/llm/src/providers/tool_call_collector.rs b/crates/llm/src/providers/tool_call_collector.rs similarity index 100% rename from packages/llm/src/providers/tool_call_collector.rs rename to crates/llm/src/providers/tool_call_collector.rs diff --git a/packages/llm/src/reasoning.rs b/crates/llm/src/reasoning.rs similarity index 100% rename from packages/llm/src/reasoning.rs rename to crates/llm/src/reasoning.rs diff --git a/packages/llm/src/testing/fake_llm.rs b/crates/llm/src/testing/fake_llm.rs similarity index 100% rename from packages/llm/src/testing/fake_llm.rs rename to crates/llm/src/testing/fake_llm.rs diff --git a/packages/llm/src/testing/llm_response.rs b/crates/llm/src/testing/llm_response.rs similarity index 100% rename from packages/llm/src/testing/llm_response.rs rename to crates/llm/src/testing/llm_response.rs diff --git a/packages/llm/src/testing/mod.rs b/crates/llm/src/testing/mod.rs similarity index 100% rename from packages/llm/src/testing/mod.rs rename to crates/llm/src/testing/mod.rs diff --git a/packages/llm/src/tool_schema.rs b/crates/llm/src/tool_schema.rs similarity index 100% rename from packages/llm/src/tool_schema.rs rename to crates/llm/src/tool_schema.rs diff --git a/packages/llm/src/tools.rs b/crates/llm/src/tools.rs similarity index 100% rename from packages/llm/src/tools.rs rename to crates/llm/src/tools.rs diff --git a/packages/llm/src/types.rs b/crates/llm/src/types.rs similarity index 100% rename from packages/llm/src/types.rs rename to crates/llm/src/types.rs diff --git a/packages/llm/tests/doc_examples.rs b/crates/llm/tests/doc_examples.rs similarity index 100% rename from packages/llm/tests/doc_examples.rs rename to crates/llm/tests/doc_examples.rs diff --git a/packages/llm/tests/fixtures/README.md b/crates/llm/tests/fixtures/README.md similarity index 100% rename from packages/llm/tests/fixtures/README.md rename to crates/llm/tests/fixtures/README.md diff --git a/packages/llm/tests/fixtures/anthropic/01_minimal.sse b/crates/llm/tests/fixtures/anthropic/01_minimal.sse similarity index 100% rename from packages/llm/tests/fixtures/anthropic/01_minimal.sse rename to crates/llm/tests/fixtures/anthropic/01_minimal.sse diff --git a/packages/llm/tests/fixtures/anthropic/02_tool_call.sse b/crates/llm/tests/fixtures/anthropic/02_tool_call.sse similarity index 100% rename from packages/llm/tests/fixtures/anthropic/02_tool_call.sse rename to crates/llm/tests/fixtures/anthropic/02_tool_call.sse diff --git a/packages/llm/tests/fixtures/anthropic/03_cache_write.sse b/crates/llm/tests/fixtures/anthropic/03_cache_write.sse similarity index 100% rename from packages/llm/tests/fixtures/anthropic/03_cache_write.sse rename to crates/llm/tests/fixtures/anthropic/03_cache_write.sse diff --git a/packages/llm/tests/fixtures/anthropic/04_cache_read.sse b/crates/llm/tests/fixtures/anthropic/04_cache_read.sse similarity index 100% rename from packages/llm/tests/fixtures/anthropic/04_cache_read.sse rename to crates/llm/tests/fixtures/anthropic/04_cache_read.sse diff --git a/packages/llm/tests/fixtures/anthropic/05_reasoning.sse b/crates/llm/tests/fixtures/anthropic/05_reasoning.sse similarity index 100% rename from packages/llm/tests/fixtures/anthropic/05_reasoning.sse rename to crates/llm/tests/fixtures/anthropic/05_reasoning.sse diff --git a/packages/llm/tests/fixtures/openai/01_minimal.sse b/crates/llm/tests/fixtures/openai/01_minimal.sse similarity index 100% rename from packages/llm/tests/fixtures/openai/01_minimal.sse rename to crates/llm/tests/fixtures/openai/01_minimal.sse diff --git a/packages/llm/tests/fixtures/openai/02_tool_call.sse b/crates/llm/tests/fixtures/openai/02_tool_call.sse similarity index 100% rename from packages/llm/tests/fixtures/openai/02_tool_call.sse rename to crates/llm/tests/fixtures/openai/02_tool_call.sse diff --git a/packages/llm/tests/fixtures/openai/03_reasoning.sse b/crates/llm/tests/fixtures/openai/03_reasoning.sse similarity index 100% rename from packages/llm/tests/fixtures/openai/03_reasoning.sse rename to crates/llm/tests/fixtures/openai/03_reasoning.sse diff --git a/packages/llm/tests/fixtures/openai_responses/01_minimal.sse b/crates/llm/tests/fixtures/openai_responses/01_minimal.sse similarity index 100% rename from packages/llm/tests/fixtures/openai_responses/01_minimal.sse rename to crates/llm/tests/fixtures/openai_responses/01_minimal.sse diff --git a/packages/llm/tests/fixtures/openai_responses/02_reasoning.sse b/crates/llm/tests/fixtures/openai_responses/02_reasoning.sse similarity index 100% rename from packages/llm/tests/fixtures/openai_responses/02_reasoning.sse rename to crates/llm/tests/fixtures/openai_responses/02_reasoning.sse diff --git a/packages/llm/tests/fixtures/openrouter/01_minimal.sse b/crates/llm/tests/fixtures/openrouter/01_minimal.sse similarity index 100% rename from packages/llm/tests/fixtures/openrouter/01_minimal.sse rename to crates/llm/tests/fixtures/openrouter/01_minimal.sse diff --git a/packages/llm/tests/fixtures/openrouter/02_tool_call.sse b/crates/llm/tests/fixtures/openrouter/02_tool_call.sse similarity index 100% rename from packages/llm/tests/fixtures/openrouter/02_tool_call.sse rename to crates/llm/tests/fixtures/openrouter/02_tool_call.sse diff --git a/packages/llm/tests/fixtures/z_ai/01_minimal.sse b/crates/llm/tests/fixtures/z_ai/01_minimal.sse similarity index 100% rename from packages/llm/tests/fixtures/z_ai/01_minimal.sse rename to crates/llm/tests/fixtures/z_ai/01_minimal.sse diff --git a/packages/llm/tests/fixtures/z_ai/02_tool_call.sse b/crates/llm/tests/fixtures/z_ai/02_tool_call.sse similarity index 100% rename from packages/llm/tests/fixtures/z_ai/02_tool_call.sse rename to crates/llm/tests/fixtures/z_ai/02_tool_call.sse diff --git a/packages/llm/tests/providers.rs b/crates/llm/tests/providers.rs similarity index 100% rename from packages/llm/tests/providers.rs rename to crates/llm/tests/providers.rs diff --git a/packages/llm/tests/providers/anthropic/capture_fixtures.rs b/crates/llm/tests/providers/anthropic/capture_fixtures.rs similarity index 100% rename from packages/llm/tests/providers/anthropic/capture_fixtures.rs rename to crates/llm/tests/providers/anthropic/capture_fixtures.rs diff --git a/packages/llm/tests/providers/anthropic/fixture_tests.rs b/crates/llm/tests/providers/anthropic/fixture_tests.rs similarity index 100% rename from packages/llm/tests/providers/anthropic/fixture_tests.rs rename to crates/llm/tests/providers/anthropic/fixture_tests.rs diff --git a/packages/llm/tests/providers/codex/fixture_tests.rs b/crates/llm/tests/providers/codex/fixture_tests.rs similarity index 100% rename from packages/llm/tests/providers/codex/fixture_tests.rs rename to crates/llm/tests/providers/codex/fixture_tests.rs diff --git a/packages/llm/tests/providers/common.rs b/crates/llm/tests/providers/common.rs similarity index 100% rename from packages/llm/tests/providers/common.rs rename to crates/llm/tests/providers/common.rs diff --git a/packages/llm/tests/providers/openai/capture_fixtures.rs b/crates/llm/tests/providers/openai/capture_fixtures.rs similarity index 100% rename from packages/llm/tests/providers/openai/capture_fixtures.rs rename to crates/llm/tests/providers/openai/capture_fixtures.rs diff --git a/packages/llm/tests/providers/openai/fixture_tests.rs b/crates/llm/tests/providers/openai/fixture_tests.rs similarity index 100% rename from packages/llm/tests/providers/openai/fixture_tests.rs rename to crates/llm/tests/providers/openai/fixture_tests.rs diff --git a/packages/llm/tests/providers/openai/streaming_tests.rs b/crates/llm/tests/providers/openai/streaming_tests.rs similarity index 100% rename from packages/llm/tests/providers/openai/streaming_tests.rs rename to crates/llm/tests/providers/openai/streaming_tests.rs diff --git a/packages/llm/tests/providers/openrouter/capture_fixtures.rs b/crates/llm/tests/providers/openrouter/capture_fixtures.rs similarity index 100% rename from packages/llm/tests/providers/openrouter/capture_fixtures.rs rename to crates/llm/tests/providers/openrouter/capture_fixtures.rs diff --git a/packages/llm/tests/providers/openrouter/fixture_tests.rs b/crates/llm/tests/providers/openrouter/fixture_tests.rs similarity index 100% rename from packages/llm/tests/providers/openrouter/fixture_tests.rs rename to crates/llm/tests/providers/openrouter/fixture_tests.rs diff --git a/packages/llm/tests/providers/openrouter/usage_tests.rs b/crates/llm/tests/providers/openrouter/usage_tests.rs similarity index 100% rename from packages/llm/tests/providers/openrouter/usage_tests.rs rename to crates/llm/tests/providers/openrouter/usage_tests.rs diff --git a/packages/llm/tests/providers/z_ai/capture_fixtures.rs b/crates/llm/tests/providers/z_ai/capture_fixtures.rs similarity index 100% rename from packages/llm/tests/providers/z_ai/capture_fixtures.rs rename to crates/llm/tests/providers/z_ai/capture_fixtures.rs diff --git a/packages/llm/tests/providers/z_ai/fixture_tests.rs b/crates/llm/tests/providers/z_ai/fixture_tests.rs similarity index 100% rename from packages/llm/tests/providers/z_ai/fixture_tests.rs rename to crates/llm/tests/providers/z_ai/fixture_tests.rs diff --git a/packages/llm/tests/providers/z_ai/types_tests.rs b/crates/llm/tests/providers/z_ai/types_tests.rs similarity index 100% rename from packages/llm/tests/providers/z_ai/types_tests.rs rename to crates/llm/tests/providers/z_ai/types_tests.rs diff --git a/packages/mcp-servers/CHANGELOG.md b/crates/mcp-servers/CHANGELOG.md similarity index 100% rename from packages/mcp-servers/CHANGELOG.md rename to crates/mcp-servers/CHANGELOG.md diff --git a/packages/mcp-servers/Cargo.toml b/crates/mcp-servers/Cargo.toml similarity index 100% rename from packages/mcp-servers/Cargo.toml rename to crates/mcp-servers/Cargo.toml diff --git a/packages/mcp-servers/README.md b/crates/mcp-servers/README.md similarity index 100% rename from packages/mcp-servers/README.md rename to crates/mcp-servers/README.md diff --git a/packages/mcp-servers/examples/lsp_diagnostics.rs b/crates/mcp-servers/examples/lsp_diagnostics.rs similarity index 100% rename from packages/mcp-servers/examples/lsp_diagnostics.rs rename to crates/mcp-servers/examples/lsp_diagnostics.rs diff --git a/packages/mcp-servers/src/bin/stdio.rs b/crates/mcp-servers/src/bin/stdio.rs similarity index 100% rename from packages/mcp-servers/src/bin/stdio.rs rename to crates/mcp-servers/src/bin/stdio.rs diff --git a/packages/mcp-servers/src/coding/README.md b/crates/mcp-servers/src/coding/README.md similarity index 100% rename from packages/mcp-servers/src/coding/README.md rename to crates/mcp-servers/src/coding/README.md diff --git a/packages/mcp-servers/src/coding/default_tools.rs b/crates/mcp-servers/src/coding/default_tools.rs similarity index 100% rename from packages/mcp-servers/src/coding/default_tools.rs rename to crates/mcp-servers/src/coding/default_tools.rs diff --git a/packages/mcp-servers/src/coding/error.rs b/crates/mcp-servers/src/coding/error.rs similarity index 100% rename from packages/mcp-servers/src/coding/error.rs rename to crates/mcp-servers/src/coding/error.rs diff --git a/packages/mcp-servers/src/coding/mod.rs b/crates/mcp-servers/src/coding/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/mod.rs rename to crates/mcp-servers/src/coding/mod.rs diff --git a/packages/mcp-servers/src/coding/prompt_rule_matcher.rs b/crates/mcp-servers/src/coding/prompt_rule_matcher.rs similarity index 100% rename from packages/mcp-servers/src/coding/prompt_rule_matcher.rs rename to crates/mcp-servers/src/coding/prompt_rule_matcher.rs diff --git a/packages/mcp-servers/src/coding/tools/ast_grep/description.md b/crates/mcp-servers/src/coding/tools/ast_grep/description.md similarity index 100% rename from packages/mcp-servers/src/coding/tools/ast_grep/description.md rename to crates/mcp-servers/src/coding/tools/ast_grep/description.md diff --git a/packages/mcp-servers/src/coding/tools/ast_grep/mod.rs b/crates/mcp-servers/src/coding/tools/ast_grep/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/ast_grep/mod.rs rename to crates/mcp-servers/src/coding/tools/ast_grep/mod.rs diff --git a/packages/mcp-servers/src/coding/tools/bash/description.md b/crates/mcp-servers/src/coding/tools/bash/description.md similarity index 100% rename from packages/mcp-servers/src/coding/tools/bash/description.md rename to crates/mcp-servers/src/coding/tools/bash/description.md diff --git a/packages/mcp-servers/src/coding/tools/bash/mod.rs b/crates/mcp-servers/src/coding/tools/bash/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/bash/mod.rs rename to crates/mcp-servers/src/coding/tools/bash/mod.rs diff --git a/packages/mcp-servers/src/coding/tools/bash/read_background_description.md b/crates/mcp-servers/src/coding/tools/bash/read_background_description.md similarity index 100% rename from packages/mcp-servers/src/coding/tools/bash/read_background_description.md rename to crates/mcp-servers/src/coding/tools/bash/read_background_description.md diff --git a/packages/mcp-servers/src/coding/tools/edit_file/description.md b/crates/mcp-servers/src/coding/tools/edit_file/description.md similarity index 100% rename from packages/mcp-servers/src/coding/tools/edit_file/description.md rename to crates/mcp-servers/src/coding/tools/edit_file/description.md diff --git a/packages/mcp-servers/src/coding/tools/edit_file/mod.rs b/crates/mcp-servers/src/coding/tools/edit_file/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/edit_file/mod.rs rename to crates/mcp-servers/src/coding/tools/edit_file/mod.rs diff --git a/packages/mcp-servers/src/coding/tools/file_io.rs b/crates/mcp-servers/src/coding/tools/file_io.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/file_io.rs rename to crates/mcp-servers/src/coding/tools/file_io.rs diff --git a/packages/mcp-servers/src/coding/tools/find/description.md b/crates/mcp-servers/src/coding/tools/find/description.md similarity index 100% rename from packages/mcp-servers/src/coding/tools/find/description.md rename to crates/mcp-servers/src/coding/tools/find/description.md diff --git a/packages/mcp-servers/src/coding/tools/find/mod.rs b/crates/mcp-servers/src/coding/tools/find/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/find/mod.rs rename to crates/mcp-servers/src/coding/tools/find/mod.rs diff --git a/packages/mcp-servers/src/coding/tools/glob_filter.rs b/crates/mcp-servers/src/coding/tools/glob_filter.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/glob_filter.rs rename to crates/mcp-servers/src/coding/tools/glob_filter.rs diff --git a/packages/mcp-servers/src/coding/tools/grep/common.rs b/crates/mcp-servers/src/coding/tools/grep/common.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/grep/common.rs rename to crates/mcp-servers/src/coding/tools/grep/common.rs diff --git a/packages/mcp-servers/src/coding/tools/grep/description.md b/crates/mcp-servers/src/coding/tools/grep/description.md similarity index 100% rename from packages/mcp-servers/src/coding/tools/grep/description.md rename to crates/mcp-servers/src/coding/tools/grep/description.md diff --git a/packages/mcp-servers/src/coding/tools/grep/mod.rs b/crates/mcp-servers/src/coding/tools/grep/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/grep/mod.rs rename to crates/mcp-servers/src/coding/tools/grep/mod.rs diff --git a/packages/mcp-servers/src/coding/tools/list_files/description.md b/crates/mcp-servers/src/coding/tools/list_files/description.md similarity index 100% rename from packages/mcp-servers/src/coding/tools/list_files/description.md rename to crates/mcp-servers/src/coding/tools/list_files/description.md diff --git a/packages/mcp-servers/src/coding/tools/list_files/mod.rs b/crates/mcp-servers/src/coding/tools/list_files/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/list_files/mod.rs rename to crates/mcp-servers/src/coding/tools/list_files/mod.rs diff --git a/packages/mcp-servers/src/coding/tools/mod.rs b/crates/mcp-servers/src/coding/tools/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/mod.rs rename to crates/mcp-servers/src/coding/tools/mod.rs diff --git a/packages/mcp-servers/src/coding/tools/read_file/description.md b/crates/mcp-servers/src/coding/tools/read_file/description.md similarity index 100% rename from packages/mcp-servers/src/coding/tools/read_file/description.md rename to crates/mcp-servers/src/coding/tools/read_file/description.md diff --git a/packages/mcp-servers/src/coding/tools/read_file/mod.rs b/crates/mcp-servers/src/coding/tools/read_file/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/read_file/mod.rs rename to crates/mcp-servers/src/coding/tools/read_file/mod.rs diff --git a/packages/mcp-servers/src/coding/tools/web_fetch/description.md b/crates/mcp-servers/src/coding/tools/web_fetch/description.md similarity index 100% rename from packages/mcp-servers/src/coding/tools/web_fetch/description.md rename to crates/mcp-servers/src/coding/tools/web_fetch/description.md diff --git a/packages/mcp-servers/src/coding/tools/web_fetch/http_client.rs b/crates/mcp-servers/src/coding/tools/web_fetch/http_client.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/web_fetch/http_client.rs rename to crates/mcp-servers/src/coding/tools/web_fetch/http_client.rs diff --git a/packages/mcp-servers/src/coding/tools/web_fetch/mod.rs b/crates/mcp-servers/src/coding/tools/web_fetch/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/web_fetch/mod.rs rename to crates/mcp-servers/src/coding/tools/web_fetch/mod.rs diff --git a/packages/mcp-servers/src/coding/tools/web_search/description.md b/crates/mcp-servers/src/coding/tools/web_search/description.md similarity index 100% rename from packages/mcp-servers/src/coding/tools/web_search/description.md rename to crates/mcp-servers/src/coding/tools/web_search/description.md diff --git a/packages/mcp-servers/src/coding/tools/web_search/mod.rs b/crates/mcp-servers/src/coding/tools/web_search/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/web_search/mod.rs rename to crates/mcp-servers/src/coding/tools/web_search/mod.rs diff --git a/packages/mcp-servers/src/coding/tools/web_search/search_client.rs b/crates/mcp-servers/src/coding/tools/web_search/search_client.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/web_search/search_client.rs rename to crates/mcp-servers/src/coding/tools/web_search/search_client.rs diff --git a/packages/mcp-servers/src/coding/tools/write_file/description.md b/crates/mcp-servers/src/coding/tools/write_file/description.md similarity index 100% rename from packages/mcp-servers/src/coding/tools/write_file/description.md rename to crates/mcp-servers/src/coding/tools/write_file/description.md diff --git a/packages/mcp-servers/src/coding/tools/write_file/mod.rs b/crates/mcp-servers/src/coding/tools/write_file/mod.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools/write_file/mod.rs rename to crates/mcp-servers/src/coding/tools/write_file/mod.rs diff --git a/packages/mcp-servers/src/coding/tools_trait.rs b/crates/mcp-servers/src/coding/tools_trait.rs similarity index 100% rename from packages/mcp-servers/src/coding/tools_trait.rs rename to crates/mcp-servers/src/coding/tools_trait.rs diff --git a/packages/mcp-servers/src/docs/coding_error.md b/crates/mcp-servers/src/docs/coding_error.md similarity index 100% rename from packages/mcp-servers/src/docs/coding_error.md rename to crates/mcp-servers/src/docs/coding_error.md diff --git a/packages/mcp-servers/src/docs/coding_mcp.md b/crates/mcp-servers/src/docs/coding_mcp.md similarity index 100% rename from packages/mcp-servers/src/docs/coding_mcp.md rename to crates/mcp-servers/src/docs/coding_mcp.md diff --git a/packages/mcp-servers/src/docs/coding_tools.md b/crates/mcp-servers/src/docs/coding_tools.md similarity index 100% rename from packages/mcp-servers/src/docs/coding_tools.md rename to crates/mcp-servers/src/docs/coding_tools.md diff --git a/packages/mcp-servers/src/docs/lsp_error.md b/crates/mcp-servers/src/docs/lsp_error.md similarity index 100% rename from packages/mcp-servers/src/docs/lsp_error.md rename to crates/mcp-servers/src/docs/lsp_error.md diff --git a/packages/mcp-servers/src/docs/lsp_registry.md b/crates/mcp-servers/src/docs/lsp_registry.md similarity index 100% rename from packages/mcp-servers/src/docs/lsp_registry.md rename to crates/mcp-servers/src/docs/lsp_registry.md diff --git a/packages/mcp-servers/src/docs/mcp_builder_ext.md b/crates/mcp-servers/src/docs/mcp_builder_ext.md similarity index 100% rename from packages/mcp-servers/src/docs/mcp_builder_ext.md rename to crates/mcp-servers/src/docs/mcp_builder_ext.md diff --git a/packages/mcp-servers/src/docs/permission_mode.md b/crates/mcp-servers/src/docs/permission_mode.md similarity index 100% rename from packages/mcp-servers/src/docs/permission_mode.md rename to crates/mcp-servers/src/docs/permission_mode.md diff --git a/packages/mcp-servers/src/docs/plan_mcp.md b/crates/mcp-servers/src/docs/plan_mcp.md similarity index 100% rename from packages/mcp-servers/src/docs/plan_mcp.md rename to crates/mcp-servers/src/docs/plan_mcp.md diff --git a/packages/mcp-servers/src/docs/prompt_rule_matcher.md b/crates/mcp-servers/src/docs/prompt_rule_matcher.md similarity index 100% rename from packages/mcp-servers/src/docs/prompt_rule_matcher.md rename to crates/mcp-servers/src/docs/prompt_rule_matcher.md diff --git a/packages/mcp-servers/src/docs/skills_mcp.md b/crates/mcp-servers/src/docs/skills_mcp.md similarity index 100% rename from packages/mcp-servers/src/docs/skills_mcp.md rename to crates/mcp-servers/src/docs/skills_mcp.md diff --git a/packages/mcp-servers/src/docs/subagents_mcp.md b/crates/mcp-servers/src/docs/subagents_mcp.md similarity index 100% rename from packages/mcp-servers/src/docs/subagents_mcp.md rename to crates/mcp-servers/src/docs/subagents_mcp.md diff --git a/packages/mcp-servers/src/docs/survey_mcp.md b/crates/mcp-servers/src/docs/survey_mcp.md similarity index 100% rename from packages/mcp-servers/src/docs/survey_mcp.md rename to crates/mcp-servers/src/docs/survey_mcp.md diff --git a/packages/mcp-servers/src/docs/tasks_mcp.md b/crates/mcp-servers/src/docs/tasks_mcp.md similarity index 100% rename from packages/mcp-servers/src/docs/tasks_mcp.md rename to crates/mcp-servers/src/docs/tasks_mcp.md diff --git a/packages/mcp-servers/src/docs/tasks_module.md b/crates/mcp-servers/src/docs/tasks_module.md similarity index 100% rename from packages/mcp-servers/src/docs/tasks_module.md rename to crates/mcp-servers/src/docs/tasks_module.md diff --git a/packages/mcp-servers/src/error.rs b/crates/mcp-servers/src/error.rs similarity index 100% rename from packages/mcp-servers/src/error.rs rename to crates/mcp-servers/src/error.rs diff --git a/packages/mcp-servers/src/file_ops.rs b/crates/mcp-servers/src/file_ops.rs similarity index 100% rename from packages/mcp-servers/src/file_ops.rs rename to crates/mcp-servers/src/file_ops.rs diff --git a/packages/mcp-servers/src/lib.rs b/crates/mcp-servers/src/lib.rs similarity index 100% rename from packages/mcp-servers/src/lib.rs rename to crates/mcp-servers/src/lib.rs diff --git a/packages/mcp-servers/src/lsp/common.rs b/crates/mcp-servers/src/lsp/common.rs similarity index 100% rename from packages/mcp-servers/src/lsp/common.rs rename to crates/mcp-servers/src/lsp/common.rs diff --git a/packages/mcp-servers/src/lsp/diagnostics.rs b/crates/mcp-servers/src/lsp/diagnostics.rs similarity index 100% rename from packages/mcp-servers/src/lsp/diagnostics.rs rename to crates/mcp-servers/src/lsp/diagnostics.rs diff --git a/packages/mcp-servers/src/lsp/error.rs b/crates/mcp-servers/src/lsp/error.rs similarity index 100% rename from packages/mcp-servers/src/lsp/error.rs rename to crates/mcp-servers/src/lsp/error.rs diff --git a/packages/mcp-servers/src/lsp/mod.rs b/crates/mcp-servers/src/lsp/mod.rs similarity index 100% rename from packages/mcp-servers/src/lsp/mod.rs rename to crates/mcp-servers/src/lsp/mod.rs diff --git a/packages/mcp-servers/src/lsp/registry.rs b/crates/mcp-servers/src/lsp/registry.rs similarity index 100% rename from packages/mcp-servers/src/lsp/registry.rs rename to crates/mcp-servers/src/lsp/registry.rs diff --git a/packages/mcp-servers/src/lsp/tools/call_hierarchy/mod.rs b/crates/mcp-servers/src/lsp/tools/call_hierarchy/mod.rs similarity index 100% rename from packages/mcp-servers/src/lsp/tools/call_hierarchy/mod.rs rename to crates/mcp-servers/src/lsp/tools/call_hierarchy/mod.rs diff --git a/packages/mcp-servers/src/lsp/tools/check_errors/description.md b/crates/mcp-servers/src/lsp/tools/check_errors/description.md similarity index 100% rename from packages/mcp-servers/src/lsp/tools/check_errors/description.md rename to crates/mcp-servers/src/lsp/tools/check_errors/description.md diff --git a/packages/mcp-servers/src/lsp/tools/check_errors/mod.rs b/crates/mcp-servers/src/lsp/tools/check_errors/mod.rs similarity index 100% rename from packages/mcp-servers/src/lsp/tools/check_errors/mod.rs rename to crates/mcp-servers/src/lsp/tools/check_errors/mod.rs diff --git a/packages/mcp-servers/src/lsp/tools/document_info/description.md b/crates/mcp-servers/src/lsp/tools/document_info/description.md similarity index 100% rename from packages/mcp-servers/src/lsp/tools/document_info/description.md rename to crates/mcp-servers/src/lsp/tools/document_info/description.md diff --git a/packages/mcp-servers/src/lsp/tools/document_info/mod.rs b/crates/mcp-servers/src/lsp/tools/document_info/mod.rs similarity index 100% rename from packages/mcp-servers/src/lsp/tools/document_info/mod.rs rename to crates/mcp-servers/src/lsp/tools/document_info/mod.rs diff --git a/packages/mcp-servers/src/lsp/tools/mod.rs b/crates/mcp-servers/src/lsp/tools/mod.rs similarity index 100% rename from packages/mcp-servers/src/lsp/tools/mod.rs rename to crates/mcp-servers/src/lsp/tools/mod.rs diff --git a/packages/mcp-servers/src/lsp/tools/rename/description.md b/crates/mcp-servers/src/lsp/tools/rename/description.md similarity index 100% rename from packages/mcp-servers/src/lsp/tools/rename/description.md rename to crates/mcp-servers/src/lsp/tools/rename/description.md diff --git a/packages/mcp-servers/src/lsp/tools/rename/mod.rs b/crates/mcp-servers/src/lsp/tools/rename/mod.rs similarity index 100% rename from packages/mcp-servers/src/lsp/tools/rename/mod.rs rename to crates/mcp-servers/src/lsp/tools/rename/mod.rs diff --git a/packages/mcp-servers/src/lsp/tools/symbol_lookup/description.md b/crates/mcp-servers/src/lsp/tools/symbol_lookup/description.md similarity index 100% rename from packages/mcp-servers/src/lsp/tools/symbol_lookup/description.md rename to crates/mcp-servers/src/lsp/tools/symbol_lookup/description.md diff --git a/packages/mcp-servers/src/lsp/tools/symbol_lookup/mod.rs b/crates/mcp-servers/src/lsp/tools/symbol_lookup/mod.rs similarity index 100% rename from packages/mcp-servers/src/lsp/tools/symbol_lookup/mod.rs rename to crates/mcp-servers/src/lsp/tools/symbol_lookup/mod.rs diff --git a/packages/mcp-servers/src/lsp/tools/workspace_search/description.md b/crates/mcp-servers/src/lsp/tools/workspace_search/description.md similarity index 100% rename from packages/mcp-servers/src/lsp/tools/workspace_search/description.md rename to crates/mcp-servers/src/lsp/tools/workspace_search/description.md diff --git a/packages/mcp-servers/src/lsp/tools/workspace_search/mod.rs b/crates/mcp-servers/src/lsp/tools/workspace_search/mod.rs similarity index 100% rename from packages/mcp-servers/src/lsp/tools/workspace_search/mod.rs rename to crates/mcp-servers/src/lsp/tools/workspace_search/mod.rs diff --git a/packages/mcp-servers/src/plan/README.md b/crates/mcp-servers/src/plan/README.md similarity index 100% rename from packages/mcp-servers/src/plan/README.md rename to crates/mcp-servers/src/plan/README.md diff --git a/packages/mcp-servers/src/plan/default_prompt.md b/crates/mcp-servers/src/plan/default_prompt.md similarity index 100% rename from packages/mcp-servers/src/plan/default_prompt.md rename to crates/mcp-servers/src/plan/default_prompt.md diff --git a/packages/mcp-servers/src/plan/edit_plan_description.md b/crates/mcp-servers/src/plan/edit_plan_description.md similarity index 100% rename from packages/mcp-servers/src/plan/edit_plan_description.md rename to crates/mcp-servers/src/plan/edit_plan_description.md diff --git a/packages/mcp-servers/src/plan/mod.rs b/crates/mcp-servers/src/plan/mod.rs similarity index 100% rename from packages/mcp-servers/src/plan/mod.rs rename to crates/mcp-servers/src/plan/mod.rs diff --git a/packages/mcp-servers/src/plan/server.rs b/crates/mcp-servers/src/plan/server.rs similarity index 100% rename from packages/mcp-servers/src/plan/server.rs rename to crates/mcp-servers/src/plan/server.rs diff --git a/packages/mcp-servers/src/plan/submit_plan_description.md b/crates/mcp-servers/src/plan/submit_plan_description.md similarity index 100% rename from packages/mcp-servers/src/plan/submit_plan_description.md rename to crates/mcp-servers/src/plan/submit_plan_description.md diff --git a/packages/mcp-servers/src/plan/write_plan_description.md b/crates/mcp-servers/src/plan/write_plan_description.md similarity index 100% rename from packages/mcp-servers/src/plan/write_plan_description.md rename to crates/mcp-servers/src/plan/write_plan_description.md diff --git a/packages/mcp-servers/src/setup.rs b/crates/mcp-servers/src/setup.rs similarity index 100% rename from packages/mcp-servers/src/setup.rs rename to crates/mcp-servers/src/setup.rs diff --git a/packages/mcp-servers/src/skills/README.md b/crates/mcp-servers/src/skills/README.md similarity index 100% rename from packages/mcp-servers/src/skills/README.md rename to crates/mcp-servers/src/skills/README.md diff --git a/packages/mcp-servers/src/skills/instructions.md b/crates/mcp-servers/src/skills/instructions.md similarity index 100% rename from packages/mcp-servers/src/skills/instructions.md rename to crates/mcp-servers/src/skills/instructions.md diff --git a/packages/mcp-servers/src/skills/mod.rs b/crates/mcp-servers/src/skills/mod.rs similarity index 100% rename from packages/mcp-servers/src/skills/mod.rs rename to crates/mcp-servers/src/skills/mod.rs diff --git a/packages/mcp-servers/src/skills/server.rs b/crates/mcp-servers/src/skills/server.rs similarity index 100% rename from packages/mcp-servers/src/skills/server.rs rename to crates/mcp-servers/src/skills/server.rs diff --git a/packages/mcp-servers/src/skills/tools/get_skills/description.md b/crates/mcp-servers/src/skills/tools/get_skills/description.md similarity index 100% rename from packages/mcp-servers/src/skills/tools/get_skills/description.md rename to crates/mcp-servers/src/skills/tools/get_skills/description.md diff --git a/packages/mcp-servers/src/skills/tools/get_skills/mod.rs b/crates/mcp-servers/src/skills/tools/get_skills/mod.rs similarity index 100% rename from packages/mcp-servers/src/skills/tools/get_skills/mod.rs rename to crates/mcp-servers/src/skills/tools/get_skills/mod.rs diff --git a/packages/mcp-servers/src/skills/tools/list_skills/description.md b/crates/mcp-servers/src/skills/tools/list_skills/description.md similarity index 100% rename from packages/mcp-servers/src/skills/tools/list_skills/description.md rename to crates/mcp-servers/src/skills/tools/list_skills/description.md diff --git a/packages/mcp-servers/src/skills/tools/list_skills/mod.rs b/crates/mcp-servers/src/skills/tools/list_skills/mod.rs similarity index 100% rename from packages/mcp-servers/src/skills/tools/list_skills/mod.rs rename to crates/mcp-servers/src/skills/tools/list_skills/mod.rs diff --git a/packages/mcp-servers/src/skills/tools/mod.rs b/crates/mcp-servers/src/skills/tools/mod.rs similarity index 100% rename from packages/mcp-servers/src/skills/tools/mod.rs rename to crates/mcp-servers/src/skills/tools/mod.rs diff --git a/packages/mcp-servers/src/skills/tools/save_note/description.md b/crates/mcp-servers/src/skills/tools/save_note/description.md similarity index 100% rename from packages/mcp-servers/src/skills/tools/save_note/description.md rename to crates/mcp-servers/src/skills/tools/save_note/description.md diff --git a/packages/mcp-servers/src/skills/tools/save_note/mod.rs b/crates/mcp-servers/src/skills/tools/save_note/mod.rs similarity index 100% rename from packages/mcp-servers/src/skills/tools/save_note/mod.rs rename to crates/mcp-servers/src/skills/tools/save_note/mod.rs diff --git a/packages/mcp-servers/src/skills/tools/search_notes/description.md b/crates/mcp-servers/src/skills/tools/search_notes/description.md similarity index 100% rename from packages/mcp-servers/src/skills/tools/search_notes/description.md rename to crates/mcp-servers/src/skills/tools/search_notes/description.md diff --git a/packages/mcp-servers/src/skills/tools/search_notes/mod.rs b/crates/mcp-servers/src/skills/tools/search_notes/mod.rs similarity index 100% rename from packages/mcp-servers/src/skills/tools/search_notes/mod.rs rename to crates/mcp-servers/src/skills/tools/search_notes/mod.rs diff --git a/packages/mcp-servers/src/subagents/README.md b/crates/mcp-servers/src/subagents/README.md similarity index 100% rename from packages/mcp-servers/src/subagents/README.md rename to crates/mcp-servers/src/subagents/README.md diff --git a/packages/mcp-servers/src/subagents/instructions.md b/crates/mcp-servers/src/subagents/instructions.md similarity index 100% rename from packages/mcp-servers/src/subagents/instructions.md rename to crates/mcp-servers/src/subagents/instructions.md diff --git a/packages/mcp-servers/src/subagents/mod.rs b/crates/mcp-servers/src/subagents/mod.rs similarity index 100% rename from packages/mcp-servers/src/subagents/mod.rs rename to crates/mcp-servers/src/subagents/mod.rs diff --git a/packages/mcp-servers/src/subagents/server.rs b/crates/mcp-servers/src/subagents/server.rs similarity index 100% rename from packages/mcp-servers/src/subagents/server.rs rename to crates/mcp-servers/src/subagents/server.rs diff --git a/packages/mcp-servers/src/subagents/tools/mod.rs b/crates/mcp-servers/src/subagents/tools/mod.rs similarity index 100% rename from packages/mcp-servers/src/subagents/tools/mod.rs rename to crates/mcp-servers/src/subagents/tools/mod.rs diff --git a/packages/mcp-servers/src/subagents/tools/spawn_subagent/description.md b/crates/mcp-servers/src/subagents/tools/spawn_subagent/description.md similarity index 100% rename from packages/mcp-servers/src/subagents/tools/spawn_subagent/description.md rename to crates/mcp-servers/src/subagents/tools/spawn_subagent/description.md diff --git a/packages/mcp-servers/src/subagents/tools/spawn_subagent/mod.rs b/crates/mcp-servers/src/subagents/tools/spawn_subagent/mod.rs similarity index 100% rename from packages/mcp-servers/src/subagents/tools/spawn_subagent/mod.rs rename to crates/mcp-servers/src/subagents/tools/spawn_subagent/mod.rs diff --git a/packages/mcp-servers/src/subagents/tools/spawn_subagent/structured_output_instructions.md b/crates/mcp-servers/src/subagents/tools/spawn_subagent/structured_output_instructions.md similarity index 100% rename from packages/mcp-servers/src/subagents/tools/spawn_subagent/structured_output_instructions.md rename to crates/mcp-servers/src/subagents/tools/spawn_subagent/structured_output_instructions.md diff --git a/packages/mcp-servers/src/survey/README.md b/crates/mcp-servers/src/survey/README.md similarity index 100% rename from packages/mcp-servers/src/survey/README.md rename to crates/mcp-servers/src/survey/README.md diff --git a/packages/mcp-servers/src/survey/mod.rs b/crates/mcp-servers/src/survey/mod.rs similarity index 100% rename from packages/mcp-servers/src/survey/mod.rs rename to crates/mcp-servers/src/survey/mod.rs diff --git a/packages/mcp-servers/src/survey/server.rs b/crates/mcp-servers/src/survey/server.rs similarity index 100% rename from packages/mcp-servers/src/survey/server.rs rename to crates/mcp-servers/src/survey/server.rs diff --git a/packages/mcp-servers/src/tasks/README.md b/crates/mcp-servers/src/tasks/README.md similarity index 100% rename from packages/mcp-servers/src/tasks/README.md rename to crates/mcp-servers/src/tasks/README.md diff --git a/packages/mcp-servers/src/tasks/instructions.md b/crates/mcp-servers/src/tasks/instructions.md similarity index 100% rename from packages/mcp-servers/src/tasks/instructions.md rename to crates/mcp-servers/src/tasks/instructions.md diff --git a/packages/mcp-servers/src/tasks/mod.rs b/crates/mcp-servers/src/tasks/mod.rs similarity index 100% rename from packages/mcp-servers/src/tasks/mod.rs rename to crates/mcp-servers/src/tasks/mod.rs diff --git a/packages/mcp-servers/src/tasks/server.rs b/crates/mcp-servers/src/tasks/server.rs similarity index 100% rename from packages/mcp-servers/src/tasks/server.rs rename to crates/mcp-servers/src/tasks/server.rs diff --git a/packages/mcp-servers/src/tasks/task_index.rs b/crates/mcp-servers/src/tasks/task_index.rs similarity index 100% rename from packages/mcp-servers/src/tasks/task_index.rs rename to crates/mcp-servers/src/tasks/task_index.rs diff --git a/packages/mcp-servers/src/tasks/task_store.rs b/crates/mcp-servers/src/tasks/task_store.rs similarity index 100% rename from packages/mcp-servers/src/tasks/task_store.rs rename to crates/mcp-servers/src/tasks/task_store.rs diff --git a/packages/mcp-servers/src/tasks/tools/common.rs b/crates/mcp-servers/src/tasks/tools/common.rs similarity index 100% rename from packages/mcp-servers/src/tasks/tools/common.rs rename to crates/mcp-servers/src/tasks/tools/common.rs diff --git a/packages/mcp-servers/src/tasks/tools/create/description.md b/crates/mcp-servers/src/tasks/tools/create/description.md similarity index 100% rename from packages/mcp-servers/src/tasks/tools/create/description.md rename to crates/mcp-servers/src/tasks/tools/create/description.md diff --git a/packages/mcp-servers/src/tasks/tools/create/mod.rs b/crates/mcp-servers/src/tasks/tools/create/mod.rs similarity index 100% rename from packages/mcp-servers/src/tasks/tools/create/mod.rs rename to crates/mcp-servers/src/tasks/tools/create/mod.rs diff --git a/packages/mcp-servers/src/tasks/tools/get/description.md b/crates/mcp-servers/src/tasks/tools/get/description.md similarity index 100% rename from packages/mcp-servers/src/tasks/tools/get/description.md rename to crates/mcp-servers/src/tasks/tools/get/description.md diff --git a/packages/mcp-servers/src/tasks/tools/get/mod.rs b/crates/mcp-servers/src/tasks/tools/get/mod.rs similarity index 100% rename from packages/mcp-servers/src/tasks/tools/get/mod.rs rename to crates/mcp-servers/src/tasks/tools/get/mod.rs diff --git a/packages/mcp-servers/src/tasks/tools/list/description.md b/crates/mcp-servers/src/tasks/tools/list/description.md similarity index 100% rename from packages/mcp-servers/src/tasks/tools/list/description.md rename to crates/mcp-servers/src/tasks/tools/list/description.md diff --git a/packages/mcp-servers/src/tasks/tools/list/mod.rs b/crates/mcp-servers/src/tasks/tools/list/mod.rs similarity index 100% rename from packages/mcp-servers/src/tasks/tools/list/mod.rs rename to crates/mcp-servers/src/tasks/tools/list/mod.rs diff --git a/packages/mcp-servers/src/tasks/tools/mod.rs b/crates/mcp-servers/src/tasks/tools/mod.rs similarity index 100% rename from packages/mcp-servers/src/tasks/tools/mod.rs rename to crates/mcp-servers/src/tasks/tools/mod.rs diff --git a/packages/mcp-servers/src/tasks/tools/update/description.md b/crates/mcp-servers/src/tasks/tools/update/description.md similarity index 100% rename from packages/mcp-servers/src/tasks/tools/update/description.md rename to crates/mcp-servers/src/tasks/tools/update/description.md diff --git a/packages/mcp-servers/src/tasks/tools/update/mod.rs b/crates/mcp-servers/src/tasks/tools/update/mod.rs similarity index 100% rename from packages/mcp-servers/src/tasks/tools/update/mod.rs rename to crates/mcp-servers/src/tasks/tools/update/mod.rs diff --git a/packages/mcp-servers/src/tasks/types.rs b/crates/mcp-servers/src/tasks/types.rs similarity index 100% rename from packages/mcp-servers/src/tasks/types.rs rename to crates/mcp-servers/src/tasks/types.rs diff --git a/packages/mcp-servers/src/workspace_paths.rs b/crates/mcp-servers/src/workspace_paths.rs similarity index 100% rename from packages/mcp-servers/src/workspace_paths.rs rename to crates/mcp-servers/src/workspace_paths.rs diff --git a/packages/mcp-servers/tests/coding_mcp_tools.rs b/crates/mcp-servers/tests/coding_mcp_tools.rs similarity index 100% rename from packages/mcp-servers/tests/coding_mcp_tools.rs rename to crates/mcp-servers/tests/coding_mcp_tools.rs diff --git a/packages/mcp-servers/tests/common/mod.rs b/crates/mcp-servers/tests/common/mod.rs similarity index 100% rename from packages/mcp-servers/tests/common/mod.rs rename to crates/mcp-servers/tests/common/mod.rs diff --git a/packages/mcp-servers/tests/lsp_check_errors_contract.rs b/crates/mcp-servers/tests/lsp_check_errors_contract.rs similarity index 100% rename from packages/mcp-servers/tests/lsp_check_errors_contract.rs rename to crates/mcp-servers/tests/lsp_check_errors_contract.rs diff --git a/packages/mcp-servers/tests/lsp_diagnostics_e2e.rs b/crates/mcp-servers/tests/lsp_diagnostics_e2e.rs similarity index 100% rename from packages/mcp-servers/tests/lsp_diagnostics_e2e.rs rename to crates/mcp-servers/tests/lsp_diagnostics_e2e.rs diff --git a/packages/mcp-servers/tests/lsp_operations_e2e.rs b/crates/mcp-servers/tests/lsp_operations_e2e.rs similarity index 100% rename from packages/mcp-servers/tests/lsp_operations_e2e.rs rename to crates/mcp-servers/tests/lsp_operations_e2e.rs diff --git a/packages/mcp-servers/tests/lsp_ts_diagnostics_e2e.rs b/crates/mcp-servers/tests/lsp_ts_diagnostics_e2e.rs similarity index 100% rename from packages/mcp-servers/tests/lsp_ts_diagnostics_e2e.rs rename to crates/mcp-servers/tests/lsp_ts_diagnostics_e2e.rs diff --git a/packages/mcp-servers/tests/lsp_ts_operations_e2e.rs b/crates/mcp-servers/tests/lsp_ts_operations_e2e.rs similarity index 100% rename from packages/mcp-servers/tests/lsp_ts_operations_e2e.rs rename to crates/mcp-servers/tests/lsp_ts_operations_e2e.rs diff --git a/packages/mcp-servers/tests/plan_mcp.rs b/crates/mcp-servers/tests/plan_mcp.rs similarity index 100% rename from packages/mcp-servers/tests/plan_mcp.rs rename to crates/mcp-servers/tests/plan_mcp.rs diff --git a/packages/mcp-servers/tests/plugins_mcp_agents.rs b/crates/mcp-servers/tests/plugins_mcp_agents.rs similarity index 100% rename from packages/mcp-servers/tests/plugins_mcp_agents.rs rename to crates/mcp-servers/tests/plugins_mcp_agents.rs diff --git a/packages/mcp-servers/tests/plugins_mcp_skills.rs b/crates/mcp-servers/tests/plugins_mcp_skills.rs similarity index 100% rename from packages/mcp-servers/tests/plugins_mcp_skills.rs rename to crates/mcp-servers/tests/plugins_mcp_skills.rs diff --git a/packages/mcp-servers/tests/skills_self_improvement.rs b/crates/mcp-servers/tests/skills_self_improvement.rs similarity index 100% rename from packages/mcp-servers/tests/skills_self_improvement.rs rename to crates/mcp-servers/tests/skills_self_improvement.rs diff --git a/packages/mcp-servers/tests/stdio_transport.rs b/crates/mcp-servers/tests/stdio_transport.rs similarity index 100% rename from packages/mcp-servers/tests/stdio_transport.rs rename to crates/mcp-servers/tests/stdio_transport.rs diff --git a/packages/mcp-servers/tests/test_bash.rs b/crates/mcp-servers/tests/test_bash.rs similarity index 100% rename from packages/mcp-servers/tests/test_bash.rs rename to crates/mcp-servers/tests/test_bash.rs diff --git a/packages/mcp-servers/tests/test_read_before_edit_safety.rs b/crates/mcp-servers/tests/test_read_before_edit_safety.rs similarity index 100% rename from packages/mcp-servers/tests/test_read_before_edit_safety.rs rename to crates/mcp-servers/tests/test_read_before_edit_safety.rs diff --git a/packages/mcp-servers/tests/test_read_file_rule_meta.rs b/crates/mcp-servers/tests/test_read_file_rule_meta.rs similarity index 100% rename from packages/mcp-servers/tests/test_read_file_rule_meta.rs rename to crates/mcp-servers/tests/test_read_file_rule_meta.rs diff --git a/packages/mcp-servers/tests/test_web_fetch.rs b/crates/mcp-servers/tests/test_web_fetch.rs similarity index 100% rename from packages/mcp-servers/tests/test_web_fetch.rs rename to crates/mcp-servers/tests/test_web_fetch.rs diff --git a/packages/mcp-utils/CHANGELOG.md b/crates/mcp-utils/CHANGELOG.md similarity index 100% rename from packages/mcp-utils/CHANGELOG.md rename to crates/mcp-utils/CHANGELOG.md diff --git a/packages/mcp-utils/Cargo.lock b/crates/mcp-utils/Cargo.lock similarity index 100% rename from packages/mcp-utils/Cargo.lock rename to crates/mcp-utils/Cargo.lock diff --git a/packages/mcp-utils/Cargo.toml b/crates/mcp-utils/Cargo.toml similarity index 100% rename from packages/mcp-utils/Cargo.toml rename to crates/mcp-utils/Cargo.toml diff --git a/packages/mcp-utils/README.md b/crates/mcp-utils/README.md similarity index 100% rename from packages/mcp-utils/README.md rename to crates/mcp-utils/README.md diff --git a/packages/mcp-utils/src/client/config.rs b/crates/mcp-utils/src/client/config.rs similarity index 100% rename from packages/mcp-utils/src/client/config.rs rename to crates/mcp-utils/src/client/config.rs diff --git a/packages/mcp-utils/src/client/connection.rs b/crates/mcp-utils/src/client/connection.rs similarity index 100% rename from packages/mcp-utils/src/client/connection.rs rename to crates/mcp-utils/src/client/connection.rs diff --git a/packages/mcp-utils/src/client/connection_attempt_manager.rs b/crates/mcp-utils/src/client/connection_attempt_manager.rs similarity index 100% rename from packages/mcp-utils/src/client/connection_attempt_manager.rs rename to crates/mcp-utils/src/client/connection_attempt_manager.rs diff --git a/packages/mcp-utils/src/client/error.rs b/crates/mcp-utils/src/client/error.rs similarity index 100% rename from packages/mcp-utils/src/client/error.rs rename to crates/mcp-utils/src/client/error.rs diff --git a/packages/mcp-utils/src/client/manager.rs b/crates/mcp-utils/src/client/manager.rs similarity index 100% rename from packages/mcp-utils/src/client/manager.rs rename to crates/mcp-utils/src/client/manager.rs diff --git a/packages/mcp-utils/src/client/mcp_client.rs b/crates/mcp-utils/src/client/mcp_client.rs similarity index 100% rename from packages/mcp-utils/src/client/mcp_client.rs rename to crates/mcp-utils/src/client/mcp_client.rs diff --git a/packages/mcp-utils/src/client/mod.rs b/crates/mcp-utils/src/client/mod.rs similarity index 100% rename from packages/mcp-utils/src/client/mod.rs rename to crates/mcp-utils/src/client/mod.rs diff --git a/packages/mcp-utils/src/client/naming.rs b/crates/mcp-utils/src/client/naming.rs similarity index 100% rename from packages/mcp-utils/src/client/naming.rs rename to crates/mcp-utils/src/client/naming.rs diff --git a/packages/mcp-utils/src/client/oauth_handler.rs b/crates/mcp-utils/src/client/oauth_handler.rs similarity index 100% rename from packages/mcp-utils/src/client/oauth_handler.rs rename to crates/mcp-utils/src/client/oauth_handler.rs diff --git a/packages/mcp-utils/src/client/roots.rs b/crates/mcp-utils/src/client/roots.rs similarity index 100% rename from packages/mcp-utils/src/client/roots.rs rename to crates/mcp-utils/src/client/roots.rs diff --git a/packages/mcp-utils/src/client/tool_proxy.rs b/crates/mcp-utils/src/client/tool_proxy.rs similarity index 100% rename from packages/mcp-utils/src/client/tool_proxy.rs rename to crates/mcp-utils/src/client/tool_proxy.rs diff --git a/packages/mcp-utils/src/display_meta.rs b/crates/mcp-utils/src/display_meta.rs similarity index 100% rename from packages/mcp-utils/src/display_meta.rs rename to crates/mcp-utils/src/display_meta.rs diff --git a/packages/mcp-utils/src/docs/mcp_server_config.md b/crates/mcp-utils/src/docs/mcp_server_config.md similarity index 100% rename from packages/mcp-utils/src/docs/mcp_server_config.md rename to crates/mcp-utils/src/docs/mcp_server_config.md diff --git a/packages/mcp-utils/src/lib.rs b/crates/mcp-utils/src/lib.rs similarity index 100% rename from packages/mcp-utils/src/lib.rs rename to crates/mcp-utils/src/lib.rs diff --git a/packages/mcp-utils/src/status.rs b/crates/mcp-utils/src/status.rs similarity index 100% rename from packages/mcp-utils/src/status.rs rename to crates/mcp-utils/src/status.rs diff --git a/packages/mcp-utils/src/testing.rs b/crates/mcp-utils/src/testing.rs similarity index 100% rename from packages/mcp-utils/src/testing.rs rename to crates/mcp-utils/src/testing.rs diff --git a/packages/mcp-utils/src/transport.rs b/crates/mcp-utils/src/transport.rs similarity index 100% rename from packages/mcp-utils/src/transport.rs rename to crates/mcp-utils/src/transport.rs diff --git a/packages/mcp-utils/tests/doc_examples.rs b/crates/mcp-utils/tests/doc_examples.rs similarity index 100% rename from packages/mcp-utils/tests/doc_examples.rs rename to crates/mcp-utils/tests/doc_examples.rs diff --git a/packages/tui/CHANGELOG.md b/crates/tui/CHANGELOG.md similarity index 100% rename from packages/tui/CHANGELOG.md rename to crates/tui/CHANGELOG.md diff --git a/packages/tui/Cargo.toml b/crates/tui/Cargo.toml similarity index 100% rename from packages/tui/Cargo.toml rename to crates/tui/Cargo.toml diff --git a/packages/tui/README.md b/crates/tui/README.md similarity index 100% rename from packages/tui/README.md rename to crates/tui/README.md diff --git a/packages/tui/assets/sage.tmTheme b/crates/tui/assets/sage.tmTheme similarity index 100% rename from packages/tui/assets/sage.tmTheme rename to crates/tui/assets/sage.tmTheme diff --git a/packages/tui/examples/tui_gallery.rs b/crates/tui/examples/tui_gallery.rs similarity index 100% rename from packages/tui/examples/tui_gallery.rs rename to crates/tui/examples/tui_gallery.rs diff --git a/packages/tui/src/combobox.rs b/crates/tui/src/combobox.rs similarity index 100% rename from packages/tui/src/combobox.rs rename to crates/tui/src/combobox.rs diff --git a/packages/tui/src/components/bordered_text_field.rs b/crates/tui/src/components/bordered_text_field.rs similarity index 100% rename from packages/tui/src/components/bordered_text_field.rs rename to crates/tui/src/components/bordered_text_field.rs diff --git a/packages/tui/src/components/checkbox.rs b/crates/tui/src/components/checkbox.rs similarity index 100% rename from packages/tui/src/components/checkbox.rs rename to crates/tui/src/components/checkbox.rs diff --git a/packages/tui/src/components/component.rs b/crates/tui/src/components/component.rs similarity index 100% rename from packages/tui/src/components/component.rs rename to crates/tui/src/components/component.rs diff --git a/packages/tui/src/components/form.rs b/crates/tui/src/components/form.rs similarity index 100% rename from packages/tui/src/components/form.rs rename to crates/tui/src/components/form.rs diff --git a/packages/tui/src/components/gallery.rs b/crates/tui/src/components/gallery.rs similarity index 100% rename from packages/tui/src/components/gallery.rs rename to crates/tui/src/components/gallery.rs diff --git a/packages/tui/src/components/mod.rs b/crates/tui/src/components/mod.rs similarity index 100% rename from packages/tui/src/components/mod.rs rename to crates/tui/src/components/mod.rs diff --git a/packages/tui/src/components/multi_select.rs b/crates/tui/src/components/multi_select.rs similarity index 100% rename from packages/tui/src/components/multi_select.rs rename to crates/tui/src/components/multi_select.rs diff --git a/packages/tui/src/components/number_field.rs b/crates/tui/src/components/number_field.rs similarity index 100% rename from packages/tui/src/components/number_field.rs rename to crates/tui/src/components/number_field.rs diff --git a/packages/tui/src/components/panel.rs b/crates/tui/src/components/panel.rs similarity index 100% rename from packages/tui/src/components/panel.rs rename to crates/tui/src/components/panel.rs diff --git a/packages/tui/src/components/radio_select.rs b/crates/tui/src/components/radio_select.rs similarity index 100% rename from packages/tui/src/components/radio_select.rs rename to crates/tui/src/components/radio_select.rs diff --git a/packages/tui/src/components/select_list.rs b/crates/tui/src/components/select_list.rs similarity index 100% rename from packages/tui/src/components/select_list.rs rename to crates/tui/src/components/select_list.rs diff --git a/packages/tui/src/components/select_option.rs b/crates/tui/src/components/select_option.rs similarity index 100% rename from packages/tui/src/components/select_option.rs rename to crates/tui/src/components/select_option.rs diff --git a/packages/tui/src/components/spinner.rs b/crates/tui/src/components/spinner.rs similarity index 100% rename from packages/tui/src/components/spinner.rs rename to crates/tui/src/components/spinner.rs diff --git a/packages/tui/src/components/split_panel.rs b/crates/tui/src/components/split_panel.rs similarity index 100% rename from packages/tui/src/components/split_panel.rs rename to crates/tui/src/components/split_panel.rs diff --git a/packages/tui/src/components/stepper.rs b/crates/tui/src/components/stepper.rs similarity index 100% rename from packages/tui/src/components/stepper.rs rename to crates/tui/src/components/stepper.rs diff --git a/packages/tui/src/components/text_field.rs b/crates/tui/src/components/text_field.rs similarity index 100% rename from packages/tui/src/components/text_field.rs rename to crates/tui/src/components/text_field.rs diff --git a/packages/tui/src/diffs/diff.rs b/crates/tui/src/diffs/diff.rs similarity index 100% rename from packages/tui/src/diffs/diff.rs rename to crates/tui/src/diffs/diff.rs diff --git a/packages/tui/src/diffs/diff_types.rs b/crates/tui/src/diffs/diff_types.rs similarity index 100% rename from packages/tui/src/diffs/diff_types.rs rename to crates/tui/src/diffs/diff_types.rs diff --git a/packages/tui/src/diffs/mod.rs b/crates/tui/src/diffs/mod.rs similarity index 100% rename from packages/tui/src/diffs/mod.rs rename to crates/tui/src/diffs/mod.rs diff --git a/packages/tui/src/diffs/split_diff.rs b/crates/tui/src/diffs/split_diff.rs similarity index 100% rename from packages/tui/src/diffs/split_diff.rs rename to crates/tui/src/diffs/split_diff.rs diff --git a/packages/tui/src/docs/combobox.md b/crates/tui/src/docs/combobox.md similarity index 100% rename from packages/tui/src/docs/combobox.md rename to crates/tui/src/docs/combobox.md diff --git a/packages/tui/src/docs/component.md b/crates/tui/src/docs/component.md similarity index 100% rename from packages/tui/src/docs/component.md rename to crates/tui/src/docs/component.md diff --git a/packages/tui/src/docs/event.md b/crates/tui/src/docs/event.md similarity index 100% rename from packages/tui/src/docs/event.md rename to crates/tui/src/docs/event.md diff --git a/packages/tui/src/docs/focus_ring.md b/crates/tui/src/docs/focus_ring.md similarity index 100% rename from packages/tui/src/docs/focus_ring.md rename to crates/tui/src/docs/focus_ring.md diff --git a/packages/tui/src/docs/form.md b/crates/tui/src/docs/form.md similarity index 100% rename from packages/tui/src/docs/form.md rename to crates/tui/src/docs/form.md diff --git a/packages/tui/src/docs/frame.md b/crates/tui/src/docs/frame.md similarity index 100% rename from packages/tui/src/docs/frame.md rename to crates/tui/src/docs/frame.md diff --git a/packages/tui/src/docs/line.md b/crates/tui/src/docs/line.md similarity index 100% rename from packages/tui/src/docs/line.md rename to crates/tui/src/docs/line.md diff --git a/packages/tui/src/docs/renderer.md b/crates/tui/src/docs/renderer.md similarity index 100% rename from packages/tui/src/docs/renderer.md rename to crates/tui/src/docs/renderer.md diff --git a/packages/tui/src/docs/select_list.md b/crates/tui/src/docs/select_list.md similarity index 100% rename from packages/tui/src/docs/select_list.md rename to crates/tui/src/docs/select_list.md diff --git a/packages/tui/src/docs/span.md b/crates/tui/src/docs/span.md similarity index 100% rename from packages/tui/src/docs/span.md rename to crates/tui/src/docs/span.md diff --git a/packages/tui/src/docs/style.md b/crates/tui/src/docs/style.md similarity index 100% rename from packages/tui/src/docs/style.md rename to crates/tui/src/docs/style.md diff --git a/packages/tui/src/docs/terminal_session.md b/crates/tui/src/docs/terminal_session.md similarity index 100% rename from packages/tui/src/docs/terminal_session.md rename to crates/tui/src/docs/terminal_session.md diff --git a/packages/tui/src/docs/testing.md b/crates/tui/src/docs/testing.md similarity index 100% rename from packages/tui/src/docs/testing.md rename to crates/tui/src/docs/testing.md diff --git a/packages/tui/src/docs/theme.md b/crates/tui/src/docs/theme.md similarity index 100% rename from packages/tui/src/docs/theme.md rename to crates/tui/src/docs/theme.md diff --git a/packages/tui/src/docs/view_context.md b/crates/tui/src/docs/view_context.md similarity index 100% rename from packages/tui/src/docs/view_context.md rename to crates/tui/src/docs/view_context.md diff --git a/packages/tui/src/focus.rs b/crates/tui/src/focus.rs similarity index 100% rename from packages/tui/src/focus.rs rename to crates/tui/src/focus.rs diff --git a/packages/tui/src/fuzzy_matcher.rs b/crates/tui/src/fuzzy_matcher.rs similarity index 100% rename from packages/tui/src/fuzzy_matcher.rs rename to crates/tui/src/fuzzy_matcher.rs diff --git a/packages/tui/src/lib.rs b/crates/tui/src/lib.rs similarity index 100% rename from packages/tui/src/lib.rs rename to crates/tui/src/lib.rs diff --git a/packages/tui/src/markdown/headings.rs b/crates/tui/src/markdown/headings.rs similarity index 100% rename from packages/tui/src/markdown/headings.rs rename to crates/tui/src/markdown/headings.rs diff --git a/packages/tui/src/markdown/mod.rs b/crates/tui/src/markdown/mod.rs similarity index 100% rename from packages/tui/src/markdown/mod.rs rename to crates/tui/src/markdown/mod.rs diff --git a/packages/tui/src/markdown/renderer.rs b/crates/tui/src/markdown/renderer.rs similarity index 100% rename from packages/tui/src/markdown/renderer.rs rename to crates/tui/src/markdown/renderer.rs diff --git a/packages/tui/src/markdown/source_lines.rs b/crates/tui/src/markdown/source_lines.rs similarity index 100% rename from packages/tui/src/markdown/source_lines.rs rename to crates/tui/src/markdown/source_lines.rs diff --git a/packages/tui/src/markdown/source_map.rs b/crates/tui/src/markdown/source_map.rs similarity index 100% rename from packages/tui/src/markdown/source_map.rs rename to crates/tui/src/markdown/source_map.rs diff --git a/packages/tui/src/markdown/table.rs b/crates/tui/src/markdown/table.rs similarity index 100% rename from packages/tui/src/markdown/table.rs rename to crates/tui/src/markdown/table.rs diff --git a/packages/tui/src/rendering/frame.rs b/crates/tui/src/rendering/frame.rs similarity index 100% rename from packages/tui/src/rendering/frame.rs rename to crates/tui/src/rendering/frame.rs diff --git a/packages/tui/src/rendering/gutter.rs b/crates/tui/src/rendering/gutter.rs similarity index 100% rename from packages/tui/src/rendering/gutter.rs rename to crates/tui/src/rendering/gutter.rs diff --git a/packages/tui/src/rendering/line.rs b/crates/tui/src/rendering/line.rs similarity index 100% rename from packages/tui/src/rendering/line.rs rename to crates/tui/src/rendering/line.rs diff --git a/packages/tui/src/rendering/mod.rs b/crates/tui/src/rendering/mod.rs similarity index 100% rename from packages/tui/src/rendering/mod.rs rename to crates/tui/src/rendering/mod.rs diff --git a/packages/tui/src/rendering/render_context.rs b/crates/tui/src/rendering/render_context.rs similarity index 100% rename from packages/tui/src/rendering/render_context.rs rename to crates/tui/src/rendering/render_context.rs diff --git a/packages/tui/src/rendering/renderer.rs b/crates/tui/src/rendering/renderer.rs similarity index 100% rename from packages/tui/src/rendering/renderer.rs rename to crates/tui/src/rendering/renderer.rs diff --git a/packages/tui/src/rendering/soft_wrap.rs b/crates/tui/src/rendering/soft_wrap.rs similarity index 100% rename from packages/tui/src/rendering/soft_wrap.rs rename to crates/tui/src/rendering/soft_wrap.rs diff --git a/packages/tui/src/rendering/span.rs b/crates/tui/src/rendering/span.rs similarity index 100% rename from packages/tui/src/rendering/span.rs rename to crates/tui/src/rendering/span.rs diff --git a/packages/tui/src/rendering/style.rs b/crates/tui/src/rendering/style.rs similarity index 100% rename from packages/tui/src/rendering/style.rs rename to crates/tui/src/rendering/style.rs diff --git a/packages/tui/src/rendering/terminal_screen.rs b/crates/tui/src/rendering/terminal_screen.rs similarity index 100% rename from packages/tui/src/rendering/terminal_screen.rs rename to crates/tui/src/rendering/terminal_screen.rs diff --git a/packages/tui/src/rendering/visual_frame.rs b/crates/tui/src/rendering/visual_frame.rs similarity index 100% rename from packages/tui/src/rendering/visual_frame.rs rename to crates/tui/src/rendering/visual_frame.rs diff --git a/packages/tui/src/runtime/mod.rs b/crates/tui/src/runtime/mod.rs similarity index 100% rename from packages/tui/src/runtime/mod.rs rename to crates/tui/src/runtime/mod.rs diff --git a/packages/tui/src/runtime/terminal.rs b/crates/tui/src/runtime/terminal.rs similarity index 100% rename from packages/tui/src/runtime/terminal.rs rename to crates/tui/src/runtime/terminal.rs diff --git a/packages/tui/src/runtime/terminal_runtime.rs b/crates/tui/src/runtime/terminal_runtime.rs similarity index 100% rename from packages/tui/src/runtime/terminal_runtime.rs rename to crates/tui/src/runtime/terminal_runtime.rs diff --git a/packages/tui/src/syntax_highlighting/mod.rs b/crates/tui/src/syntax_highlighting/mod.rs similarity index 100% rename from packages/tui/src/syntax_highlighting/mod.rs rename to crates/tui/src/syntax_highlighting/mod.rs diff --git a/packages/tui/src/syntax_highlighting/syntax_highlighter.rs b/crates/tui/src/syntax_highlighting/syntax_highlighter.rs similarity index 100% rename from packages/tui/src/syntax_highlighting/syntax_highlighter.rs rename to crates/tui/src/syntax_highlighting/syntax_highlighter.rs diff --git a/packages/tui/src/syntax_highlighting/syntect_bridge.rs b/crates/tui/src/syntax_highlighting/syntect_bridge.rs similarity index 100% rename from packages/tui/src/syntax_highlighting/syntect_bridge.rs rename to crates/tui/src/syntax_highlighting/syntect_bridge.rs diff --git a/packages/tui/src/terminal_codes.rs b/crates/tui/src/terminal_codes.rs similarity index 100% rename from packages/tui/src/terminal_codes.rs rename to crates/tui/src/terminal_codes.rs diff --git a/packages/tui/src/test_picker.rs b/crates/tui/src/test_picker.rs similarity index 100% rename from packages/tui/src/test_picker.rs rename to crates/tui/src/test_picker.rs diff --git a/packages/tui/src/testing/helpers.rs b/crates/tui/src/testing/helpers.rs similarity index 100% rename from packages/tui/src/testing/helpers.rs rename to crates/tui/src/testing/helpers.rs diff --git a/packages/tui/src/testing/mod.rs b/crates/tui/src/testing/mod.rs similarity index 100% rename from packages/tui/src/testing/mod.rs rename to crates/tui/src/testing/mod.rs diff --git a/packages/tui/src/testing/test_terminal.rs b/crates/tui/src/testing/test_terminal.rs similarity index 100% rename from packages/tui/src/testing/test_terminal.rs rename to crates/tui/src/testing/test_terminal.rs diff --git a/packages/tui/src/theme/defaults.rs b/crates/tui/src/theme/defaults.rs similarity index 100% rename from packages/tui/src/theme/defaults.rs rename to crates/tui/src/theme/defaults.rs diff --git a/packages/tui/src/theme/mod.rs b/crates/tui/src/theme/mod.rs similarity index 100% rename from packages/tui/src/theme/mod.rs rename to crates/tui/src/theme/mod.rs diff --git a/packages/tui/src/theme/syntax.rs b/crates/tui/src/theme/syntax.rs similarity index 100% rename from packages/tui/src/theme/syntax.rs rename to crates/tui/src/theme/syntax.rs diff --git a/packages/tui/tests/combobox.rs b/crates/tui/tests/combobox.rs similarity index 100% rename from packages/tui/tests/combobox.rs rename to crates/tui/tests/combobox.rs diff --git a/packages/tui/tests/components.rs b/crates/tui/tests/components.rs similarity index 100% rename from packages/tui/tests/components.rs rename to crates/tui/tests/components.rs diff --git a/packages/tui/tests/components/bordered_text_field.rs b/crates/tui/tests/components/bordered_text_field.rs similarity index 100% rename from packages/tui/tests/components/bordered_text_field.rs rename to crates/tui/tests/components/bordered_text_field.rs diff --git a/packages/tui/tests/components/checkbox.rs b/crates/tui/tests/components/checkbox.rs similarity index 100% rename from packages/tui/tests/components/checkbox.rs rename to crates/tui/tests/components/checkbox.rs diff --git a/packages/tui/tests/components/multi_select.rs b/crates/tui/tests/components/multi_select.rs similarity index 100% rename from packages/tui/tests/components/multi_select.rs rename to crates/tui/tests/components/multi_select.rs diff --git a/packages/tui/tests/components/number_field.rs b/crates/tui/tests/components/number_field.rs similarity index 100% rename from packages/tui/tests/components/number_field.rs rename to crates/tui/tests/components/number_field.rs diff --git a/packages/tui/tests/components/radio_select.rs b/crates/tui/tests/components/radio_select.rs similarity index 100% rename from packages/tui/tests/components/radio_select.rs rename to crates/tui/tests/components/radio_select.rs diff --git a/packages/tui/tests/components/spinner.rs b/crates/tui/tests/components/spinner.rs similarity index 100% rename from packages/tui/tests/components/spinner.rs rename to crates/tui/tests/components/spinner.rs diff --git a/packages/tui/tests/components/split_panel.rs b/crates/tui/tests/components/split_panel.rs similarity index 100% rename from packages/tui/tests/components/split_panel.rs rename to crates/tui/tests/components/split_panel.rs diff --git a/packages/tui/tests/components/stepper.rs b/crates/tui/tests/components/stepper.rs similarity index 100% rename from packages/tui/tests/components/stepper.rs rename to crates/tui/tests/components/stepper.rs diff --git a/packages/tui/tests/components/text_field.rs b/crates/tui/tests/components/text_field.rs similarity index 100% rename from packages/tui/tests/components/text_field.rs rename to crates/tui/tests/components/text_field.rs diff --git a/packages/tui/tests/markdown.rs b/crates/tui/tests/markdown.rs similarity index 100% rename from packages/tui/tests/markdown.rs rename to crates/tui/tests/markdown.rs diff --git a/packages/utils/CHANGELOG.md b/crates/utils/CHANGELOG.md similarity index 100% rename from packages/utils/CHANGELOG.md rename to crates/utils/CHANGELOG.md diff --git a/packages/utils/Cargo.toml b/crates/utils/Cargo.toml similarity index 100% rename from packages/utils/Cargo.toml rename to crates/utils/Cargo.toml diff --git a/packages/utils/README.md b/crates/utils/README.md similarity index 100% rename from packages/utils/README.md rename to crates/utils/README.md diff --git a/packages/utils/src/lib.rs b/crates/utils/src/lib.rs similarity index 100% rename from packages/utils/src/lib.rs rename to crates/utils/src/lib.rs diff --git a/packages/utils/src/markdown_file.rs b/crates/utils/src/markdown_file.rs similarity index 100% rename from packages/utils/src/markdown_file.rs rename to crates/utils/src/markdown_file.rs diff --git a/packages/utils/src/plan_review.rs b/crates/utils/src/plan_review.rs similarity index 100% rename from packages/utils/src/plan_review.rs rename to crates/utils/src/plan_review.rs diff --git a/packages/utils/src/reasoning.rs b/crates/utils/src/reasoning.rs similarity index 100% rename from packages/utils/src/reasoning.rs rename to crates/utils/src/reasoning.rs diff --git a/packages/utils/src/resource_path.rs b/crates/utils/src/resource_path.rs similarity index 100% rename from packages/utils/src/resource_path.rs rename to crates/utils/src/resource_path.rs diff --git a/packages/utils/src/serde_helpers.rs b/crates/utils/src/serde_helpers.rs similarity index 100% rename from packages/utils/src/serde_helpers.rs rename to crates/utils/src/serde_helpers.rs diff --git a/packages/utils/src/settings.rs b/crates/utils/src/settings.rs similarity index 100% rename from packages/utils/src/settings.rs rename to crates/utils/src/settings.rs diff --git a/packages/utils/src/shell_expander.rs b/crates/utils/src/shell_expander.rs similarity index 100% rename from packages/utils/src/shell_expander.rs rename to crates/utils/src/shell_expander.rs diff --git a/packages/utils/src/substitution.rs b/crates/utils/src/substitution.rs similarity index 100% rename from packages/utils/src/substitution.rs rename to crates/utils/src/substitution.rs diff --git a/packages/utils/src/variables.rs b/crates/utils/src/variables.rs similarity index 100% rename from packages/utils/src/variables.rs rename to crates/utils/src/variables.rs diff --git a/packages/wisp/CHANGELOG.md b/crates/wisp/CHANGELOG.md similarity index 100% rename from packages/wisp/CHANGELOG.md rename to crates/wisp/CHANGELOG.md diff --git a/packages/wisp/Cargo.toml b/crates/wisp/Cargo.toml similarity index 100% rename from packages/wisp/Cargo.toml rename to crates/wisp/Cargo.toml diff --git a/packages/wisp/README.md b/crates/wisp/README.md similarity index 99% rename from packages/wisp/README.md rename to crates/wisp/README.md index e24bc8a05..4066f42a6 100644 --- a/packages/wisp/README.md +++ b/crates/wisp/README.md @@ -23,7 +23,7 @@ Wisp launches an ACP-compatible agent as a subprocess, streams the conversation ## Quick start ```bash -cargo install --path packages/wisp +cargo install --path crates/wisp wisp # launches the default agent ("aether acp") wisp --agent "my-agent" # launch a custom ACP agent ``` diff --git a/packages/wisp/examples/wisp_gallery.rs b/crates/wisp/examples/wisp_gallery.rs similarity index 100% rename from packages/wisp/examples/wisp_gallery.rs rename to crates/wisp/examples/wisp_gallery.rs diff --git a/packages/wisp/src/cli.rs b/crates/wisp/src/cli.rs similarity index 100% rename from packages/wisp/src/cli.rs rename to crates/wisp/src/cli.rs diff --git a/packages/wisp/src/components/app/attachments.rs b/crates/wisp/src/components/app/attachments.rs similarity index 100% rename from packages/wisp/src/components/app/attachments.rs rename to crates/wisp/src/components/app/attachments.rs diff --git a/packages/wisp/src/components/app/git_diff_mode.rs b/crates/wisp/src/components/app/git_diff_mode.rs similarity index 100% rename from packages/wisp/src/components/app/git_diff_mode.rs rename to crates/wisp/src/components/app/git_diff_mode.rs diff --git a/packages/wisp/src/components/app/mod.rs b/crates/wisp/src/components/app/mod.rs similarity index 100% rename from packages/wisp/src/components/app/mod.rs rename to crates/wisp/src/components/app/mod.rs diff --git a/packages/wisp/src/components/app/plan_review_mode.rs b/crates/wisp/src/components/app/plan_review_mode.rs similarity index 100% rename from packages/wisp/src/components/app/plan_review_mode.rs rename to crates/wisp/src/components/app/plan_review_mode.rs diff --git a/packages/wisp/src/components/app/screen_router.rs b/crates/wisp/src/components/app/screen_router.rs similarity index 100% rename from packages/wisp/src/components/app/screen_router.rs rename to crates/wisp/src/components/app/screen_router.rs diff --git a/packages/wisp/src/components/app/view.rs b/crates/wisp/src/components/app/view.rs similarity index 100% rename from packages/wisp/src/components/app/view.rs rename to crates/wisp/src/components/app/view.rs diff --git a/packages/wisp/src/components/command_picker.rs b/crates/wisp/src/components/command_picker.rs similarity index 100% rename from packages/wisp/src/components/command_picker.rs rename to crates/wisp/src/components/command_picker.rs diff --git a/packages/wisp/src/components/common/anchored_surface_builder.rs b/crates/wisp/src/components/common/anchored_surface_builder.rs similarity index 100% rename from packages/wisp/src/components/common/anchored_surface_builder.rs rename to crates/wisp/src/components/common/anchored_surface_builder.rs diff --git a/packages/wisp/src/components/common/cached_layer.rs b/crates/wisp/src/components/common/cached_layer.rs similarity index 100% rename from packages/wisp/src/components/common/cached_layer.rs rename to crates/wisp/src/components/common/cached_layer.rs diff --git a/packages/wisp/src/components/common/input_box.rs b/crates/wisp/src/components/common/input_box.rs similarity index 100% rename from packages/wisp/src/components/common/input_box.rs rename to crates/wisp/src/components/common/input_box.rs diff --git a/packages/wisp/src/components/common/key_hints.rs b/crates/wisp/src/components/common/key_hints.rs similarity index 100% rename from packages/wisp/src/components/common/key_hints.rs rename to crates/wisp/src/components/common/key_hints.rs diff --git a/packages/wisp/src/components/common/mod.rs b/crates/wisp/src/components/common/mod.rs similarity index 100% rename from packages/wisp/src/components/common/mod.rs rename to crates/wisp/src/components/common/mod.rs diff --git a/packages/wisp/src/components/common/vertical_cursor.rs b/crates/wisp/src/components/common/vertical_cursor.rs similarity index 100% rename from packages/wisp/src/components/common/vertical_cursor.rs rename to crates/wisp/src/components/common/vertical_cursor.rs diff --git a/packages/wisp/src/components/context_bar.rs b/crates/wisp/src/components/context_bar.rs similarity index 100% rename from packages/wisp/src/components/context_bar.rs rename to crates/wisp/src/components/context_bar.rs diff --git a/packages/wisp/src/components/conversation_screen.rs b/crates/wisp/src/components/conversation_screen.rs similarity index 100% rename from packages/wisp/src/components/conversation_screen.rs rename to crates/wisp/src/components/conversation_screen.rs diff --git a/packages/wisp/src/components/conversation_window.rs b/crates/wisp/src/components/conversation_window.rs similarity index 100% rename from packages/wisp/src/components/conversation_window.rs rename to crates/wisp/src/components/conversation_window.rs diff --git a/packages/wisp/src/components/dropped_files.rs b/crates/wisp/src/components/dropped_files.rs similarity index 100% rename from packages/wisp/src/components/dropped_files.rs rename to crates/wisp/src/components/dropped_files.rs diff --git a/packages/wisp/src/components/elicitation_form.rs b/crates/wisp/src/components/elicitation_form.rs similarity index 100% rename from packages/wisp/src/components/elicitation_form.rs rename to crates/wisp/src/components/elicitation_form.rs diff --git a/packages/wisp/src/components/file_list_panel.rs b/crates/wisp/src/components/file_list_panel.rs similarity index 100% rename from packages/wisp/src/components/file_list_panel.rs rename to crates/wisp/src/components/file_list_panel.rs diff --git a/packages/wisp/src/components/file_picker.rs b/crates/wisp/src/components/file_picker.rs similarity index 100% rename from packages/wisp/src/components/file_picker.rs rename to crates/wisp/src/components/file_picker.rs diff --git a/packages/wisp/src/components/file_tree.rs b/crates/wisp/src/components/file_tree.rs similarity index 100% rename from packages/wisp/src/components/file_tree.rs rename to crates/wisp/src/components/file_tree.rs diff --git a/packages/wisp/src/components/git_diff/git_diff_compositor.rs b/crates/wisp/src/components/git_diff/git_diff_compositor.rs similarity index 100% rename from packages/wisp/src/components/git_diff/git_diff_compositor.rs rename to crates/wisp/src/components/git_diff/git_diff_compositor.rs diff --git a/packages/wisp/src/components/git_diff/git_diff_panel.rs b/crates/wisp/src/components/git_diff/git_diff_panel.rs similarity index 100% rename from packages/wisp/src/components/git_diff/git_diff_panel.rs rename to crates/wisp/src/components/git_diff/git_diff_panel.rs diff --git a/packages/wisp/src/components/git_diff/mod.rs b/crates/wisp/src/components/git_diff/mod.rs similarity index 100% rename from packages/wisp/src/components/git_diff/mod.rs rename to crates/wisp/src/components/git_diff/mod.rs diff --git a/packages/wisp/src/components/git_diff/patch_renderer.rs b/crates/wisp/src/components/git_diff/patch_renderer.rs similarity index 100% rename from packages/wisp/src/components/git_diff/patch_renderer.rs rename to crates/wisp/src/components/git_diff/patch_renderer.rs diff --git a/packages/wisp/src/components/git_diff/split_patch_renderer.rs b/crates/wisp/src/components/git_diff/split_patch_renderer.rs similarity index 100% rename from packages/wisp/src/components/git_diff/split_patch_renderer.rs rename to crates/wisp/src/components/git_diff/split_patch_renderer.rs diff --git a/packages/wisp/src/components/input_prompt.rs b/crates/wisp/src/components/input_prompt.rs similarity index 100% rename from packages/wisp/src/components/input_prompt.rs rename to crates/wisp/src/components/input_prompt.rs diff --git a/packages/wisp/src/components/logo.txt b/crates/wisp/src/components/logo.txt similarity index 100% rename from packages/wisp/src/components/logo.txt rename to crates/wisp/src/components/logo.txt diff --git a/packages/wisp/src/components/mod.rs b/crates/wisp/src/components/mod.rs similarity index 100% rename from packages/wisp/src/components/mod.rs rename to crates/wisp/src/components/mod.rs diff --git a/packages/wisp/src/components/model_selector.rs b/crates/wisp/src/components/model_selector.rs similarity index 100% rename from packages/wisp/src/components/model_selector.rs rename to crates/wisp/src/components/model_selector.rs diff --git a/packages/wisp/src/components/plan_review/document.rs b/crates/wisp/src/components/plan_review/document.rs similarity index 100% rename from packages/wisp/src/components/plan_review/document.rs rename to crates/wisp/src/components/plan_review/document.rs diff --git a/packages/wisp/src/components/plan_review/mod.rs b/crates/wisp/src/components/plan_review/mod.rs similarity index 100% rename from packages/wisp/src/components/plan_review/mod.rs rename to crates/wisp/src/components/plan_review/mod.rs diff --git a/packages/wisp/src/components/plan_review/outline_panel.rs b/crates/wisp/src/components/plan_review/outline_panel.rs similarity index 100% rename from packages/wisp/src/components/plan_review/outline_panel.rs rename to crates/wisp/src/components/plan_review/outline_panel.rs diff --git a/packages/wisp/src/components/plan_review/plan_panel.rs b/crates/wisp/src/components/plan_review/plan_panel.rs similarity index 100% rename from packages/wisp/src/components/plan_review/plan_panel.rs rename to crates/wisp/src/components/plan_review/plan_panel.rs diff --git a/packages/wisp/src/components/plan_tracker.rs b/crates/wisp/src/components/plan_tracker.rs similarity index 100% rename from packages/wisp/src/components/plan_tracker.rs rename to crates/wisp/src/components/plan_tracker.rs diff --git a/packages/wisp/src/components/plan_view.rs b/crates/wisp/src/components/plan_view.rs similarity index 100% rename from packages/wisp/src/components/plan_view.rs rename to crates/wisp/src/components/plan_view.rs diff --git a/packages/wisp/src/components/progress_indicator.rs b/crates/wisp/src/components/progress_indicator.rs similarity index 100% rename from packages/wisp/src/components/progress_indicator.rs rename to crates/wisp/src/components/progress_indicator.rs diff --git a/packages/wisp/src/components/prompt_composer.rs b/crates/wisp/src/components/prompt_composer.rs similarity index 100% rename from packages/wisp/src/components/prompt_composer.rs rename to crates/wisp/src/components/prompt_composer.rs diff --git a/packages/wisp/src/components/prompt_search_picker.rs b/crates/wisp/src/components/prompt_search_picker.rs similarity index 100% rename from packages/wisp/src/components/prompt_search_picker.rs rename to crates/wisp/src/components/prompt_search_picker.rs diff --git a/packages/wisp/src/components/provider_login.rs b/crates/wisp/src/components/provider_login.rs similarity index 100% rename from packages/wisp/src/components/provider_login.rs rename to crates/wisp/src/components/provider_login.rs diff --git a/packages/wisp/src/components/reasoning_bar.rs b/crates/wisp/src/components/reasoning_bar.rs similarity index 100% rename from packages/wisp/src/components/reasoning_bar.rs rename to crates/wisp/src/components/reasoning_bar.rs diff --git a/packages/wisp/src/components/review_comments/anchored_rows.rs b/crates/wisp/src/components/review_comments/anchored_rows.rs similarity index 100% rename from packages/wisp/src/components/review_comments/anchored_rows.rs rename to crates/wisp/src/components/review_comments/anchored_rows.rs diff --git a/packages/wisp/src/components/review_comments/comment_box.rs b/crates/wisp/src/components/review_comments/comment_box.rs similarity index 100% rename from packages/wisp/src/components/review_comments/comment_box.rs rename to crates/wisp/src/components/review_comments/comment_box.rs diff --git a/packages/wisp/src/components/review_comments/comment_group.rs b/crates/wisp/src/components/review_comments/comment_group.rs similarity index 100% rename from packages/wisp/src/components/review_comments/comment_group.rs rename to crates/wisp/src/components/review_comments/comment_group.rs diff --git a/packages/wisp/src/components/review_comments/draft_comment.rs b/crates/wisp/src/components/review_comments/draft_comment.rs similarity index 100% rename from packages/wisp/src/components/review_comments/draft_comment.rs rename to crates/wisp/src/components/review_comments/draft_comment.rs diff --git a/packages/wisp/src/components/review_comments/mod.rs b/crates/wisp/src/components/review_comments/mod.rs similarity index 100% rename from packages/wisp/src/components/review_comments/mod.rs rename to crates/wisp/src/components/review_comments/mod.rs diff --git a/packages/wisp/src/components/review_comments/model.rs b/crates/wisp/src/components/review_comments/model.rs similarity index 100% rename from packages/wisp/src/components/review_comments/model.rs rename to crates/wisp/src/components/review_comments/model.rs diff --git a/packages/wisp/src/components/review_comments/review_surface.rs b/crates/wisp/src/components/review_comments/review_surface.rs similarity index 100% rename from packages/wisp/src/components/review_comments/review_surface.rs rename to crates/wisp/src/components/review_comments/review_surface.rs diff --git a/packages/wisp/src/components/review_comments/surface.rs b/crates/wisp/src/components/review_comments/surface.rs similarity index 100% rename from packages/wisp/src/components/review_comments/surface.rs rename to crates/wisp/src/components/review_comments/surface.rs diff --git a/packages/wisp/src/components/server_status.rs b/crates/wisp/src/components/server_status.rs similarity index 100% rename from packages/wisp/src/components/server_status.rs rename to crates/wisp/src/components/server_status.rs diff --git a/packages/wisp/src/components/session_picker.rs b/crates/wisp/src/components/session_picker.rs similarity index 100% rename from packages/wisp/src/components/session_picker.rs rename to crates/wisp/src/components/session_picker.rs diff --git a/packages/wisp/src/components/status_line.rs b/crates/wisp/src/components/status_line.rs similarity index 100% rename from packages/wisp/src/components/status_line.rs rename to crates/wisp/src/components/status_line.rs diff --git a/packages/wisp/src/components/sub_agent_tracker.rs b/crates/wisp/src/components/sub_agent_tracker.rs similarity index 100% rename from packages/wisp/src/components/sub_agent_tracker.rs rename to crates/wisp/src/components/sub_agent_tracker.rs diff --git a/packages/wisp/src/components/text_input.rs b/crates/wisp/src/components/text_input.rs similarity index 100% rename from packages/wisp/src/components/text_input.rs rename to crates/wisp/src/components/text_input.rs diff --git a/packages/wisp/src/components/thought_message.rs b/crates/wisp/src/components/thought_message.rs similarity index 100% rename from packages/wisp/src/components/thought_message.rs rename to crates/wisp/src/components/thought_message.rs diff --git a/packages/wisp/src/components/tool_call_status_view.rs b/crates/wisp/src/components/tool_call_status_view.rs similarity index 100% rename from packages/wisp/src/components/tool_call_status_view.rs rename to crates/wisp/src/components/tool_call_status_view.rs diff --git a/packages/wisp/src/components/tool_call_statuses.rs b/crates/wisp/src/components/tool_call_statuses.rs similarity index 100% rename from packages/wisp/src/components/tool_call_statuses.rs rename to crates/wisp/src/components/tool_call_statuses.rs diff --git a/packages/wisp/src/components/tracked_tool_call.rs b/crates/wisp/src/components/tracked_tool_call.rs similarity index 100% rename from packages/wisp/src/components/tracked_tool_call.rs rename to crates/wisp/src/components/tracked_tool_call.rs diff --git a/packages/wisp/src/components/workspace_picker.rs b/crates/wisp/src/components/workspace_picker.rs similarity index 100% rename from packages/wisp/src/components/workspace_picker.rs rename to crates/wisp/src/components/workspace_picker.rs diff --git a/packages/wisp/src/docs/app.md b/crates/wisp/src/docs/app.md similarity index 100% rename from packages/wisp/src/docs/app.md rename to crates/wisp/src/docs/app.md diff --git a/packages/wisp/src/docs/app_error.md b/crates/wisp/src/docs/app_error.md similarity index 100% rename from packages/wisp/src/docs/app_error.md rename to crates/wisp/src/docs/app_error.md diff --git a/packages/wisp/src/docs/command_picker.md b/crates/wisp/src/docs/command_picker.md similarity index 100% rename from packages/wisp/src/docs/command_picker.md rename to crates/wisp/src/docs/command_picker.md diff --git a/packages/wisp/src/docs/components_module.md b/crates/wisp/src/docs/components_module.md similarity index 100% rename from packages/wisp/src/docs/components_module.md rename to crates/wisp/src/docs/components_module.md diff --git a/packages/wisp/src/docs/conversation_screen.md b/crates/wisp/src/docs/conversation_screen.md similarity index 100% rename from packages/wisp/src/docs/conversation_screen.md rename to crates/wisp/src/docs/conversation_screen.md diff --git a/packages/wisp/src/docs/conversation_window.md b/crates/wisp/src/docs/conversation_window.md similarity index 100% rename from packages/wisp/src/docs/conversation_window.md rename to crates/wisp/src/docs/conversation_window.md diff --git a/packages/wisp/src/docs/file_picker.md b/crates/wisp/src/docs/file_picker.md similarity index 100% rename from packages/wisp/src/docs/file_picker.md rename to crates/wisp/src/docs/file_picker.md diff --git a/packages/wisp/src/docs/git_diff_document.md b/crates/wisp/src/docs/git_diff_document.md similarity index 100% rename from packages/wisp/src/docs/git_diff_document.md rename to crates/wisp/src/docs/git_diff_document.md diff --git a/packages/wisp/src/docs/git_diff_error.md b/crates/wisp/src/docs/git_diff_error.md similarity index 100% rename from packages/wisp/src/docs/git_diff_error.md rename to crates/wisp/src/docs/git_diff_error.md diff --git a/packages/wisp/src/docs/key_binding.md b/crates/wisp/src/docs/key_binding.md similarity index 100% rename from packages/wisp/src/docs/key_binding.md rename to crates/wisp/src/docs/key_binding.md diff --git a/packages/wisp/src/docs/keybindings.md b/crates/wisp/src/docs/keybindings.md similarity index 100% rename from packages/wisp/src/docs/keybindings.md rename to crates/wisp/src/docs/keybindings.md diff --git a/packages/wisp/src/docs/runtime_state.md b/crates/wisp/src/docs/runtime_state.md similarity index 100% rename from packages/wisp/src/docs/runtime_state.md rename to crates/wisp/src/docs/runtime_state.md diff --git a/packages/wisp/src/docs/settings_module.md b/crates/wisp/src/docs/settings_module.md similarity index 100% rename from packages/wisp/src/docs/settings_module.md rename to crates/wisp/src/docs/settings_module.md diff --git a/packages/wisp/src/docs/status_line.md b/crates/wisp/src/docs/status_line.md similarity index 100% rename from packages/wisp/src/docs/status_line.md rename to crates/wisp/src/docs/status_line.md diff --git a/packages/wisp/src/docs/text_input.md b/crates/wisp/src/docs/text_input.md similarity index 100% rename from packages/wisp/src/docs/text_input.md rename to crates/wisp/src/docs/text_input.md diff --git a/packages/wisp/src/docs/wisp_settings.md b/crates/wisp/src/docs/wisp_settings.md similarity index 100% rename from packages/wisp/src/docs/wisp_settings.md rename to crates/wisp/src/docs/wisp_settings.md diff --git a/packages/wisp/src/error.rs b/crates/wisp/src/error.rs similarity index 100% rename from packages/wisp/src/error.rs rename to crates/wisp/src/error.rs diff --git a/packages/wisp/src/git_diff.rs b/crates/wisp/src/git_diff.rs similarity index 100% rename from packages/wisp/src/git_diff.rs rename to crates/wisp/src/git_diff.rs diff --git a/packages/wisp/src/keybindings.rs b/crates/wisp/src/keybindings.rs similarity index 100% rename from packages/wisp/src/keybindings.rs rename to crates/wisp/src/keybindings.rs diff --git a/packages/wisp/src/lib.rs b/crates/wisp/src/lib.rs similarity index 100% rename from packages/wisp/src/lib.rs rename to crates/wisp/src/lib.rs diff --git a/packages/wisp/src/main.rs b/crates/wisp/src/main.rs similarity index 100% rename from packages/wisp/src/main.rs rename to crates/wisp/src/main.rs diff --git a/packages/wisp/src/runtime_state.rs b/crates/wisp/src/runtime_state.rs similarity index 100% rename from packages/wisp/src/runtime_state.rs rename to crates/wisp/src/runtime_state.rs diff --git a/packages/wisp/src/session_loading_buffer.rs b/crates/wisp/src/session_loading_buffer.rs similarity index 100% rename from packages/wisp/src/session_loading_buffer.rs rename to crates/wisp/src/session_loading_buffer.rs diff --git a/packages/wisp/src/settings/menu.rs b/crates/wisp/src/settings/menu.rs similarity index 100% rename from packages/wisp/src/settings/menu.rs rename to crates/wisp/src/settings/menu.rs diff --git a/packages/wisp/src/settings/mod.rs b/crates/wisp/src/settings/mod.rs similarity index 100% rename from packages/wisp/src/settings/mod.rs rename to crates/wisp/src/settings/mod.rs diff --git a/packages/wisp/src/settings/overlay.rs b/crates/wisp/src/settings/overlay.rs similarity index 100% rename from packages/wisp/src/settings/overlay.rs rename to crates/wisp/src/settings/overlay.rs diff --git a/packages/wisp/src/settings/picker.rs b/crates/wisp/src/settings/picker.rs similarity index 100% rename from packages/wisp/src/settings/picker.rs rename to crates/wisp/src/settings/picker.rs diff --git a/packages/wisp/src/settings/types.rs b/crates/wisp/src/settings/types.rs similarity index 100% rename from packages/wisp/src/settings/types.rs rename to crates/wisp/src/settings/types.rs diff --git a/packages/wisp/src/test_helpers.rs b/crates/wisp/src/test_helpers.rs similarity index 100% rename from packages/wisp/src/test_helpers.rs rename to crates/wisp/src/test_helpers.rs diff --git a/packages/wisp/src/workspace_status.rs b/crates/wisp/src/workspace_status.rs similarity index 100% rename from packages/wisp/src/workspace_status.rs rename to crates/wisp/src/workspace_status.rs diff --git a/packages/wisp/tests/app_tests.rs b/crates/wisp/tests/app_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests.rs rename to crates/wisp/tests/app_tests.rs diff --git a/packages/wisp/tests/app_tests/command_picker_tests.rs b/crates/wisp/tests/app_tests/command_picker_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/command_picker_tests.rs rename to crates/wisp/tests/app_tests/command_picker_tests.rs diff --git a/packages/wisp/tests/app_tests/common.rs b/crates/wisp/tests/app_tests/common.rs similarity index 100% rename from packages/wisp/tests/app_tests/common.rs rename to crates/wisp/tests/app_tests/common.rs diff --git a/packages/wisp/tests/app_tests/file_picker_tests.rs b/crates/wisp/tests/app_tests/file_picker_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/file_picker_tests.rs rename to crates/wisp/tests/app_tests/file_picker_tests.rs diff --git a/packages/wisp/tests/app_tests/git_diff_tests.rs b/crates/wisp/tests/app_tests/git_diff_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/git_diff_tests.rs rename to crates/wisp/tests/app_tests/git_diff_tests.rs diff --git a/packages/wisp/tests/app_tests/input_prompt_tests.rs b/crates/wisp/tests/app_tests/input_prompt_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/input_prompt_tests.rs rename to crates/wisp/tests/app_tests/input_prompt_tests.rs diff --git a/packages/wisp/tests/app_tests/lifecycle_tests.rs b/crates/wisp/tests/app_tests/lifecycle_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/lifecycle_tests.rs rename to crates/wisp/tests/app_tests/lifecycle_tests.rs diff --git a/packages/wisp/tests/app_tests/mcp_oauth_elicitation_tests.rs b/crates/wisp/tests/app_tests/mcp_oauth_elicitation_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/mcp_oauth_elicitation_tests.rs rename to crates/wisp/tests/app_tests/mcp_oauth_elicitation_tests.rs diff --git a/packages/wisp/tests/app_tests/message_streaming_tests.rs b/crates/wisp/tests/app_tests/message_streaming_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/message_streaming_tests.rs rename to crates/wisp/tests/app_tests/message_streaming_tests.rs diff --git a/packages/wisp/tests/app_tests/mode_cycling_tests.rs b/crates/wisp/tests/app_tests/mode_cycling_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/mode_cycling_tests.rs rename to crates/wisp/tests/app_tests/mode_cycling_tests.rs diff --git a/packages/wisp/tests/app_tests/notifications_tests.rs b/crates/wisp/tests/app_tests/notifications_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/notifications_tests.rs rename to crates/wisp/tests/app_tests/notifications_tests.rs diff --git a/packages/wisp/tests/app_tests/progress_indicator_tests.rs b/crates/wisp/tests/app_tests/progress_indicator_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/progress_indicator_tests.rs rename to crates/wisp/tests/app_tests/progress_indicator_tests.rs diff --git a/packages/wisp/tests/app_tests/prompt_search_tests.rs b/crates/wisp/tests/app_tests/prompt_search_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/prompt_search_tests.rs rename to crates/wisp/tests/app_tests/prompt_search_tests.rs diff --git a/packages/wisp/tests/app_tests/session_tests.rs b/crates/wisp/tests/app_tests/session_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/session_tests.rs rename to crates/wisp/tests/app_tests/session_tests.rs diff --git a/packages/wisp/tests/app_tests/settings_menu_tests.rs b/crates/wisp/tests/app_tests/settings_menu_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/settings_menu_tests.rs rename to crates/wisp/tests/app_tests/settings_menu_tests.rs diff --git a/packages/wisp/tests/app_tests/small_terminal_tests.rs b/crates/wisp/tests/app_tests/small_terminal_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/small_terminal_tests.rs rename to crates/wisp/tests/app_tests/small_terminal_tests.rs diff --git a/packages/wisp/tests/app_tests/status_line_tests.rs b/crates/wisp/tests/app_tests/status_line_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/status_line_tests.rs rename to crates/wisp/tests/app_tests/status_line_tests.rs diff --git a/packages/wisp/tests/app_tests/tool_calls_tests.rs b/crates/wisp/tests/app_tests/tool_calls_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/tool_calls_tests.rs rename to crates/wisp/tests/app_tests/tool_calls_tests.rs diff --git a/packages/wisp/tests/app_tests/workspace_move_tests.rs b/crates/wisp/tests/app_tests/workspace_move_tests.rs similarity index 100% rename from packages/wisp/tests/app_tests/workspace_move_tests.rs rename to crates/wisp/tests/app_tests/workspace_move_tests.rs diff --git a/packages/wisp/tests/component_tests.rs b/crates/wisp/tests/component_tests.rs similarity index 100% rename from packages/wisp/tests/component_tests.rs rename to crates/wisp/tests/component_tests.rs diff --git a/packages/wisp/tests/component_tests/command_picker.rs b/crates/wisp/tests/component_tests/command_picker.rs similarity index 100% rename from packages/wisp/tests/component_tests/command_picker.rs rename to crates/wisp/tests/component_tests/command_picker.rs diff --git a/packages/wisp/tests/component_tests/conversation_window.rs b/crates/wisp/tests/component_tests/conversation_window.rs similarity index 100% rename from packages/wisp/tests/component_tests/conversation_window.rs rename to crates/wisp/tests/component_tests/conversation_window.rs diff --git a/packages/wisp/tests/component_tests/file_list_panel.rs b/crates/wisp/tests/component_tests/file_list_panel.rs similarity index 100% rename from packages/wisp/tests/component_tests/file_list_panel.rs rename to crates/wisp/tests/component_tests/file_list_panel.rs diff --git a/packages/wisp/tests/component_tests/git_diff_view.rs b/crates/wisp/tests/component_tests/git_diff_view.rs similarity index 100% rename from packages/wisp/tests/component_tests/git_diff_view.rs rename to crates/wisp/tests/component_tests/git_diff_view.rs diff --git a/packages/wisp/tests/component_tests/model_selector.rs b/crates/wisp/tests/component_tests/model_selector.rs similarity index 100% rename from packages/wisp/tests/component_tests/model_selector.rs rename to crates/wisp/tests/component_tests/model_selector.rs diff --git a/packages/wisp/tests/component_tests/plan_review_view.rs b/crates/wisp/tests/component_tests/plan_review_view.rs similarity index 100% rename from packages/wisp/tests/component_tests/plan_review_view.rs rename to crates/wisp/tests/component_tests/plan_review_view.rs diff --git a/packages/wisp/tests/component_tests/settings_menu.rs b/crates/wisp/tests/component_tests/settings_menu.rs similarity index 100% rename from packages/wisp/tests/component_tests/settings_menu.rs rename to crates/wisp/tests/component_tests/settings_menu.rs diff --git a/packages/wisp/tests/component_tests/settings_overlay.rs b/crates/wisp/tests/component_tests/settings_overlay.rs similarity index 100% rename from packages/wisp/tests/component_tests/settings_overlay.rs rename to crates/wisp/tests/component_tests/settings_overlay.rs diff --git a/packages/wisp/tests/component_tests/status_line.rs b/crates/wisp/tests/component_tests/status_line.rs similarity index 100% rename from packages/wisp/tests/component_tests/status_line.rs rename to crates/wisp/tests/component_tests/status_line.rs diff --git a/packages/wisp/tests/component_tests/support/git_diff.rs b/crates/wisp/tests/component_tests/support/git_diff.rs similarity index 100% rename from packages/wisp/tests/component_tests/support/git_diff.rs rename to crates/wisp/tests/component_tests/support/git_diff.rs diff --git a/packages/wisp/tests/component_tests/support/mod.rs b/crates/wisp/tests/component_tests/support/mod.rs similarity index 100% rename from packages/wisp/tests/component_tests/support/mod.rs rename to crates/wisp/tests/component_tests/support/mod.rs diff --git a/packages/wisp/tests/component_tests/support/tool_events.rs b/crates/wisp/tests/component_tests/support/tool_events.rs similarity index 100% rename from packages/wisp/tests/component_tests/support/tool_events.rs rename to crates/wisp/tests/component_tests/support/tool_events.rs diff --git a/packages/wisp/tests/component_tests/tool_call_statuses.rs b/crates/wisp/tests/component_tests/tool_call_statuses.rs similarity index 100% rename from packages/wisp/tests/component_tests/tool_call_statuses.rs rename to crates/wisp/tests/component_tests/tool_call_statuses.rs diff --git a/packages/wisp/tests/renderer_scrollback_tests.rs b/crates/wisp/tests/renderer_scrollback_tests.rs similarity index 100% rename from packages/wisp/tests/renderer_scrollback_tests.rs rename to crates/wisp/tests/renderer_scrollback_tests.rs diff --git a/packages/aether-sdk/scripts/generate-types.mjs b/packages/aether-sdk/scripts/generate-types.mjs index d6513a9a7..f7282f900 100644 --- a/packages/aether-sdk/scripts/generate-types.mjs +++ b/packages/aether-sdk/scripts/generate-types.mjs @@ -29,7 +29,7 @@ await generateHeadlessOptionsTypes(document.HeadlessOptions); async function generateEvalTypes(document) { const canonicalSchemaPath = resolve( root, - "website/src/data/aether-eval.schema.json", + "packages/website/src/data/aether-eval.schema.json", ); writeText( canonicalSchemaPath, @@ -68,7 +68,7 @@ async function generateEvalTypes(document) { } async function generateReasoningTypes(schema) { - const content = `// @generated ${GENERATED_NOTICE}\n// Source: packages/utils/src/reasoning.rs via aether-schemas.\n\n${await compile( + const content = `// @generated ${GENERATED_NOTICE}\n// Source: crates/utils/src/reasoning.rs via aether-schemas.\n\n${await compile( schemaForTypeGeneration(schema, "ReasoningEffort"), "ReasoningEffort", TYPE_OPTIONS, @@ -82,11 +82,11 @@ async function generateReasoningTypes(schema) { async function generateSettingsTypes(schema) { writeText( - resolve(root, "website/src/data/aether-settings.schema.json"), + resolve(root, "packages/website/src/data/aether-settings.schema.json"), `${JSON.stringify(schema, null, 2)}\n`, ); - const content = `// @generated ${GENERATED_NOTICE}\n// Source: packages/aether-project/src/aether_settings.rs via aether-schemas.\n\n${await compile( + const content = `// @generated ${GENERATED_NOTICE}\n// Source: crates/aether-project/src/aether_settings.rs via aether-schemas.\n\n${await compile( schemaForTypeGeneration(schema, "AetherSettings"), "AetherSettings", TYPE_OPTIONS, @@ -99,7 +99,7 @@ async function generateSettingsTypes(schema) { } async function generateAcpOptionsTypes(schema) { - const content = `// @generated ${GENERATED_NOTICE}\n// Source: packages/aether-cli/src/acp/mod.rs via aether-schemas.\n\n${await compile( + const content = `// @generated ${GENERATED_NOTICE}\n// Source: crates/aether-cli/src/acp/mod.rs via aether-schemas.\n\n${await compile( schemaForTypeGeneration(schema, "AetherAcpOptions"), "AetherAcpOptions", TYPE_OPTIONS, @@ -112,7 +112,7 @@ async function generateAcpOptionsTypes(schema) { } async function generateHeadlessOptionsTypes(schema) { - const content = `// @generated ${GENERATED_NOTICE}\n// Source: packages/aether-cli/src/headless/mod.rs via aether-schemas.\n\n${await compile( + const content = `// @generated ${GENERATED_NOTICE}\n// Source: crates/aether-cli/src/headless/mod.rs via aether-schemas.\n\n${await compile( schemaForTypeGeneration(schema, "AetherHeadlessCliOptions"), "AetherHeadlessCliOptions", TYPE_OPTIONS, diff --git a/packages/aether-sdk/test/fixtures/sdk-weather-agent/Dockerfile b/packages/aether-sdk/test/fixtures/sdk-weather-agent/Dockerfile index b0c5472fc..bc753c82f 100644 --- a/packages/aether-sdk/test/fixtures/sdk-weather-agent/Dockerfile +++ b/packages/aether-sdk/test/fixtures/sdk-weather-agent/Dockerfile @@ -11,6 +11,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ WORKDIR /repo COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ +COPY crates crates COPY packages packages RUN --mount=type=cache,target=/usr/local/cargo/registry \ diff --git a/website/README.md b/packages/website/README.md similarity index 100% rename from website/README.md rename to packages/website/README.md diff --git a/website/astro.config.mjs b/packages/website/astro.config.mjs similarity index 100% rename from website/astro.config.mjs rename to packages/website/astro.config.mjs diff --git a/website/ec.config.mjs b/packages/website/ec.config.mjs similarity index 100% rename from website/ec.config.mjs rename to packages/website/ec.config.mjs diff --git a/website/package.json b/packages/website/package.json similarity index 100% rename from website/package.json rename to packages/website/package.json diff --git a/website/public/CNAME b/packages/website/public/CNAME similarity index 100% rename from website/public/CNAME rename to packages/website/public/CNAME diff --git a/website/public/demos/any-model.cast b/packages/website/public/demos/any-model.cast similarity index 100% rename from website/public/demos/any-model.cast rename to packages/website/public/demos/any-model.cast diff --git a/website/public/demos/demo.cast b/packages/website/public/demos/demo.cast similarity index 100% rename from website/public/demos/demo.cast rename to packages/website/public/demos/demo.cast diff --git a/website/public/demos/llm-demo.cast b/packages/website/public/demos/llm-demo.cast similarity index 100% rename from website/public/demos/llm-demo.cast rename to packages/website/public/demos/llm-demo.cast diff --git a/website/public/favicon.svg b/packages/website/public/favicon.svg similarity index 100% rename from website/public/favicon.svg rename to packages/website/public/favicon.svg diff --git a/website/public/install b/packages/website/public/install similarity index 100% rename from website/public/install rename to packages/website/public/install diff --git a/website/src/asciinema-player.d.ts b/packages/website/src/asciinema-player.d.ts similarity index 100% rename from website/src/asciinema-player.d.ts rename to packages/website/src/asciinema-player.d.ts diff --git a/website/src/assets/houston.webp b/packages/website/src/assets/houston.webp similarity index 100% rename from website/src/assets/houston.webp rename to packages/website/src/assets/houston.webp diff --git a/website/src/components/CallToAction.astro b/packages/website/src/components/CallToAction.astro similarity index 100% rename from website/src/components/CallToAction.astro rename to packages/website/src/components/CallToAction.astro diff --git a/website/src/components/CodeTabs.astro b/packages/website/src/components/CodeTabs.astro similarity index 100% rename from website/src/components/CodeTabs.astro rename to packages/website/src/components/CodeTabs.astro diff --git a/website/src/components/Hero.astro b/packages/website/src/components/Hero.astro similarity index 100% rename from website/src/components/Hero.astro rename to packages/website/src/components/Hero.astro diff --git a/website/src/components/InstallTabs.astro b/packages/website/src/components/InstallTabs.astro similarity index 100% rename from website/src/components/InstallTabs.astro rename to packages/website/src/components/InstallTabs.astro diff --git a/website/src/components/LandingButton.astro b/packages/website/src/components/LandingButton.astro similarity index 100% rename from website/src/components/LandingButton.astro rename to packages/website/src/components/LandingButton.astro diff --git a/website/src/components/LandingHeader.astro b/packages/website/src/components/LandingHeader.astro similarity index 100% rename from website/src/components/LandingHeader.astro rename to packages/website/src/components/LandingHeader.astro diff --git a/website/src/components/StarlightHead.astro b/packages/website/src/components/StarlightHead.astro similarity index 100% rename from website/src/components/StarlightHead.astro rename to packages/website/src/components/StarlightHead.astro diff --git a/website/src/components/TerminalDemo.astro b/packages/website/src/components/TerminalDemo.astro similarity index 100% rename from website/src/components/TerminalDemo.astro rename to packages/website/src/components/TerminalDemo.astro diff --git a/website/src/components/ThemeSwitcher.astro b/packages/website/src/components/ThemeSwitcher.astro similarity index 100% rename from website/src/components/ThemeSwitcher.astro rename to packages/website/src/components/ThemeSwitcher.astro diff --git a/website/src/components/ToolShowcaseItem.astro b/packages/website/src/components/ToolShowcaseItem.astro similarity index 100% rename from website/src/components/ToolShowcaseItem.astro rename to packages/website/src/components/ToolShowcaseItem.astro diff --git a/website/src/consts.ts b/packages/website/src/consts.ts similarity index 100% rename from website/src/consts.ts rename to packages/website/src/consts.ts diff --git a/website/src/content.config.ts b/packages/website/src/content.config.ts similarity index 100% rename from website/src/content.config.ts rename to packages/website/src/content.config.ts diff --git a/website/src/content/docs/aether/built-in-servers/coding.mdx b/packages/website/src/content/docs/aether/built-in-servers/coding.mdx similarity index 100% rename from website/src/content/docs/aether/built-in-servers/coding.mdx rename to packages/website/src/content/docs/aether/built-in-servers/coding.mdx diff --git a/website/src/content/docs/aether/built-in-servers/plan.mdx b/packages/website/src/content/docs/aether/built-in-servers/plan.mdx similarity index 100% rename from website/src/content/docs/aether/built-in-servers/plan.mdx rename to packages/website/src/content/docs/aether/built-in-servers/plan.mdx diff --git a/website/src/content/docs/aether/built-in-servers/skills-commands.mdx b/packages/website/src/content/docs/aether/built-in-servers/skills-commands.mdx similarity index 100% rename from website/src/content/docs/aether/built-in-servers/skills-commands.mdx rename to packages/website/src/content/docs/aether/built-in-servers/skills-commands.mdx diff --git a/website/src/content/docs/aether/built-in-servers/subagents.mdx b/packages/website/src/content/docs/aether/built-in-servers/subagents.mdx similarity index 100% rename from website/src/content/docs/aether/built-in-servers/subagents.mdx rename to packages/website/src/content/docs/aether/built-in-servers/subagents.mdx diff --git a/website/src/content/docs/aether/built-in-servers/survey.mdx b/packages/website/src/content/docs/aether/built-in-servers/survey.mdx similarity index 100% rename from website/src/content/docs/aether/built-in-servers/survey.mdx rename to packages/website/src/content/docs/aether/built-in-servers/survey.mdx diff --git a/website/src/content/docs/aether/built-in-servers/tasks.mdx b/packages/website/src/content/docs/aether/built-in-servers/tasks.mdx similarity index 98% rename from website/src/content/docs/aether/built-in-servers/tasks.mdx rename to packages/website/src/content/docs/aether/built-in-servers/tasks.mdx index 1f67e0550..88b4a72b3 100644 --- a/website/src/content/docs/aether/built-in-servers/tasks.mdx +++ b/packages/website/src/content/docs/aether/built-in-servers/tasks.mdx @@ -99,7 +99,7 @@ Complete a task and attach handoff context: "summary": "Updated MCP configuration docs from source.", "facts": ["Tool filters support exact names and trailing * only."], "nextSteps": ["Run website checks."], - "filesRead": ["packages/mcp-utils/src/client/config.rs"] + "filesRead": ["crates/mcp-utils/src/client/config.rs"] } ``` diff --git a/website/src/content/docs/aether/introduction.mdx b/packages/website/src/content/docs/aether/introduction.mdx similarity index 93% rename from website/src/content/docs/aether/introduction.mdx rename to packages/website/src/content/docs/aether/introduction.mdx index be036377a..73af92105 100644 --- a/website/src/content/docs/aether/introduction.mdx +++ b/packages/website/src/content/docs/aether/introduction.mdx @@ -3,8 +3,8 @@ title: Introduction description: Prompts, agents, ACP clients, and MCP tools in Aether. --- -import RustBasicAgent from "../../../../../packages/aether-core/src/docs/basic_agent.md"; -import SdkBasicSession from "../../../../../packages/aether-sdk/src/docs/basic_session.md"; +import RustBasicAgent from "../../../../../../crates/aether-core/src/docs/basic_agent.md"; +import SdkBasicSession from "../../../../../aether-sdk/src/docs/basic_session.md"; ## What is Aether? diff --git a/website/src/content/docs/aether/running/editor-integration.mdx b/packages/website/src/content/docs/aether/running/editor-integration.mdx similarity index 100% rename from website/src/content/docs/aether/running/editor-integration.mdx rename to packages/website/src/content/docs/aether/running/editor-integration.mdx diff --git a/website/src/content/docs/aether/running/headless.mdx b/packages/website/src/content/docs/aether/running/headless.mdx similarity index 100% rename from website/src/content/docs/aether/running/headless.mdx rename to packages/website/src/content/docs/aether/running/headless.mdx diff --git a/website/src/content/docs/aether/settings/llm-providers.mdx b/packages/website/src/content/docs/aether/settings/llm-providers.mdx similarity index 100% rename from website/src/content/docs/aether/settings/llm-providers.mdx rename to packages/website/src/content/docs/aether/settings/llm-providers.mdx diff --git a/website/src/content/docs/aether/settings/mcp-servers.mdx b/packages/website/src/content/docs/aether/settings/mcp-servers.mdx similarity index 100% rename from website/src/content/docs/aether/settings/mcp-servers.mdx rename to packages/website/src/content/docs/aether/settings/mcp-servers.mdx diff --git a/website/src/content/docs/aether/settings/overview.mdx b/packages/website/src/content/docs/aether/settings/overview.mdx similarity index 100% rename from website/src/content/docs/aether/settings/overview.mdx rename to packages/website/src/content/docs/aether/settings/overview.mdx diff --git a/website/src/content/docs/aether/settings/system-prompts.mdx b/packages/website/src/content/docs/aether/settings/system-prompts.mdx similarity index 100% rename from website/src/content/docs/aether/settings/system-prompts.mdx rename to packages/website/src/content/docs/aether/settings/system-prompts.mdx diff --git a/website/src/content/docs/aether/settings/user-project-settings.mdx b/packages/website/src/content/docs/aether/settings/user-project-settings.mdx similarity index 100% rename from website/src/content/docs/aether/settings/user-project-settings.mdx rename to packages/website/src/content/docs/aether/settings/user-project-settings.mdx diff --git a/website/src/content/docs/aether/terminal/git-diff.mdx b/packages/website/src/content/docs/aether/terminal/git-diff.mdx similarity index 100% rename from website/src/content/docs/aether/terminal/git-diff.mdx rename to packages/website/src/content/docs/aether/terminal/git-diff.mdx diff --git a/website/src/content/docs/aether/terminal/keybindings.mdx b/packages/website/src/content/docs/aether/terminal/keybindings.mdx similarity index 100% rename from website/src/content/docs/aether/terminal/keybindings.mdx rename to packages/website/src/content/docs/aether/terminal/keybindings.mdx diff --git a/website/src/content/docs/aether/terminal/overview.mdx b/packages/website/src/content/docs/aether/terminal/overview.mdx similarity index 100% rename from website/src/content/docs/aether/terminal/overview.mdx rename to packages/website/src/content/docs/aether/terminal/overview.mdx diff --git a/website/src/content/docs/aether/terminal/sessions.mdx b/packages/website/src/content/docs/aether/terminal/sessions.mdx similarity index 100% rename from website/src/content/docs/aether/terminal/sessions.mdx rename to packages/website/src/content/docs/aether/terminal/sessions.mdx diff --git a/website/src/content/docs/aether/terminal/settings.mdx b/packages/website/src/content/docs/aether/terminal/settings.mdx similarity index 100% rename from website/src/content/docs/aether/terminal/settings.mdx rename to packages/website/src/content/docs/aether/terminal/settings.mdx diff --git a/website/src/content/docs/getting-started/overview.mdx b/packages/website/src/content/docs/getting-started/overview.mdx similarity index 100% rename from website/src/content/docs/getting-started/overview.mdx rename to packages/website/src/content/docs/getting-started/overview.mdx diff --git a/website/src/content/docs/libraries/rust.mdx b/packages/website/src/content/docs/libraries/rust.mdx similarity index 100% rename from website/src/content/docs/libraries/rust.mdx rename to packages/website/src/content/docs/libraries/rust.mdx diff --git a/website/src/content/docs/libraries/typescript-sdk.mdx b/packages/website/src/content/docs/libraries/typescript-sdk.mdx similarity index 100% rename from website/src/content/docs/libraries/typescript-sdk.mdx rename to packages/website/src/content/docs/libraries/typescript-sdk.mdx diff --git a/website/src/layouts/Landing.astro b/packages/website/src/layouts/Landing.astro similarity index 100% rename from website/src/layouts/Landing.astro rename to packages/website/src/layouts/Landing.astro diff --git a/website/src/loaders/settings-schema.ts b/packages/website/src/loaders/settings-schema.ts similarity index 99% rename from website/src/loaders/settings-schema.ts rename to packages/website/src/loaders/settings-schema.ts index 8c30bbfe8..b60996f70 100644 --- a/website/src/loaders/settings-schema.ts +++ b/packages/website/src/loaders/settings-schema.ts @@ -11,7 +11,7 @@ import type { Loader, LoaderContext } from "astro/loaders"; */ export function settingsSchemaLoader(): Loader { const here = dirname(fileURLToPath(import.meta.url)); - const root = resolve(here, "../../.."); + const root = resolve(here, "../../../.."); const snapshotPath = resolve(here, "../data/aether-settings.schema.json"); return { diff --git a/website/src/pages/index.mdx b/packages/website/src/pages/index.mdx similarity index 100% rename from website/src/pages/index.mdx rename to packages/website/src/pages/index.mdx diff --git a/website/src/styles/global.css b/packages/website/src/styles/global.css similarity index 100% rename from website/src/styles/global.css rename to packages/website/src/styles/global.css diff --git a/website/src/styles/starlight.css b/packages/website/src/styles/starlight.css similarity index 100% rename from website/src/styles/starlight.css rename to packages/website/src/styles/starlight.css diff --git a/website/src/styles/themes.css b/packages/website/src/styles/themes.css similarity index 100% rename from website/src/styles/themes.css rename to packages/website/src/styles/themes.css diff --git a/website/tsconfig.json b/packages/website/tsconfig.json similarity index 100% rename from website/tsconfig.json rename to packages/website/tsconfig.json From 6d62b668f576769b34f9cf8acadbed8cdeb4573d Mon Sep 17 00:00:00 2001 From: Josh Carver Date: Fri, 19 Jun 2026 15:29:38 -0700 Subject: [PATCH 2/4] chore(workspace): Update .github/ , Cargo.toml and pnpm / package.json files with accomidate new dir structure --- .github/workflows/deploy-website.yml | 4 ++-- .github/workflows/update-models.yml | 2 +- .gitignore | 12 ++++++------ .prettierignore | 2 +- Cargo.toml | 20 +------------------- README.md | 28 ++++++++++++++++++---------- justfile | 12 ++++++------ package.json | 12 ++++++------ pnpm-lock.yaml | 27 ++++----------------------- pnpm-workspace.yaml | 3 +-- 10 files changed, 46 insertions(+), 76 deletions(-) diff --git a/.github/workflows/deploy-website.yml b/.github/workflows/deploy-website.yml index 278fc288b..62ac16fee 100644 --- a/.github/workflows/deploy-website.yml +++ b/.github/workflows/deploy-website.yml @@ -5,7 +5,7 @@ on: branches: - main paths: - - website/** + - packages/website/** - package.json - pnpm-lock.yaml - pnpm-workspace.yaml @@ -39,7 +39,7 @@ jobs: - name: Upload GitHub Pages artifact uses: actions/upload-pages-artifact@v5 with: - path: website/dist + path: packages/website/dist deploy: name: Deploy website diff --git a/.github/workflows/update-models.yml b/.github/workflows/update-models.yml index 89b7af03e..78fc837cb 100644 --- a/.github/workflows/update-models.yml +++ b/.github/workflows/update-models.yml @@ -45,6 +45,6 @@ jobs: title: Update models commit-message: "chore: update models" body: | - Updates `packages/llm/models.json` from models.dev. + Updates `crates/llm/models.json` from models.dev. This PR was created automatically by the weekly update models workflow. diff --git a/.gitignore b/.gitignore index 2ecbc14a7..c67355981 100644 --- a/.gitignore +++ b/.gitignore @@ -4,15 +4,15 @@ node_modules/ dist/ gen/ eval-results/ -packages/llm/src/catalog/generated.rs +crates/llm/src/catalog/generated.rs packages/aether-sdk/src/generated/ -website/src/data/aether-settings.schema.json -website/src/data/aether-eval.schema.json +packages/website/src/data/aether-settings.schema.json +packages/website/src/data/aether-eval.schema.json .aether-tasks/ .aether/notes/ plans/ sweep.timestamp .astro/ -website/dist/ -website/.astro/ -website/*.log +packages/website/dist/ +packages/website/.astro/ +packages/website/*.log diff --git a/.prettierignore b/.prettierignore index 3c90ed04d..7bff2b85a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,4 +4,4 @@ node_modules/ coverage/ # Generated from the AetherSettings Rust struct by `just gen-schema` -website/src/data/aether-settings.schema.json +packages/website/src/data/aether-settings.schema.json diff --git a/Cargo.toml b/Cargo.toml index 255e5a573..73231cdc2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,24 +1,6 @@ [workspace] resolver = "3" -members = [ - "packages/aether-core", - "packages/aether-auth", - "packages/aether-project", - "packages/wisp", - "packages/aether-evals", - "packages/internal-evals", - "packages/aether-cli", - "packages/aether-schemas", - "packages/acp-utils", - "packages/aether-lspd", - "packages/llm", - "packages/llm-codegen", - "packages/mcp-utils", - "packages/mcp-servers", - "packages/utils", - "packages/tui", - "packages/doctest", -] +members = ["crates/*"] [workspace.lints.clippy] pedantic = { level = "warn", priority = -1 } diff --git a/README.md b/README.md index 229d46b42..033f66046 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,8 @@ Aether is an AI coding agent harness, written in Rust, that gives _you_ control - [2. **Create your first project settings**](#2-create-your-first-project-settings) - [3. **Run it**](#3-run-it) - [Using Aether as a library](#using-aether-as-a-library) -- [Packages](#packages) +- [Rust crates](#rust-crates) +- [TypeScript packages](#typescript-packages) - [License](#license) @@ -156,18 +157,25 @@ Use `aether-agent-core` as a Rust library to build your own agent in ~25 lines. } ``` -## Packages +## Rust crates + +| Crate | Description | +|---------|-------------| +| [`aether-agent-core`](crates/aether-core) | Core agent library — LLM + prompt + tools in a loop ([docs](https://aether-agent.io/libraries/aether-core/agent-builder/)) | +| [`llm`](crates/llm) | Multi-provider LLM abstraction ([docs](https://aether-agent.io/libraries/llm/provider-interface/)) | +| [`wisp`](crates/wisp) | Terminal UI for AI agents, built on ACP ([docs](https://aether-agent.io/aether/terminal/overview/)) | +| [`aether-agent-cli`](crates/aether-cli) | Headless CLI and ACP server for editor integration ([docs](https://aether-agent.io/aether/running/headless/)) | +| [`mcp-servers`](crates/mcp-servers) | Pre-built MCP tool servers (coding, LSP, skills, tasks, sub-agents, survey) ([docs](https://aether-agent.io/aether/built-in-servers/coding/)) | +| [`aether-evals`](crates/aether-evals) | Automated testing (evals) for LLM agents ([docs](https://aether-agent.io/libraries/aether-evals/evals/)) | +| [`aether-lspd`](crates/aether-lspd) | LSP daemon — shares language servers across agents | +| [`aether-project`](crates/aether-project) | Project configuration and agent catalog from `.aether/settings.json` | + +## TypeScript packages | Package | Description | |---------|-------------| -| [`aether-agent-core`](packages/aether-core) | Core agent library — LLM + prompt + tools in a loop ([docs](https://aether-agent.io/libraries/aether-core/agent-builder/)) | -| [`llm`](packages/llm) | Multi-provider LLM abstraction ([docs](https://aether-agent.io/libraries/llm/provider-interface/)) | -| [`wisp`](packages/wisp) | Terminal UI for AI agents, built on ACP ([docs](https://aether-agent.io/aether/terminal/overview/)) | -| [`aether-agent-cli`](packages/aether-cli) | Headless CLI and ACP server for editor integration ([docs](https://aether-agent.io/aether/running/headless/)) | -| [`mcp-servers`](packages/mcp-servers) | Pre-built MCP tool servers (coding, LSP, skills, tasks, sub-agents, survey) ([docs](https://aether-agent.io/aether/built-in-servers/coding/)) | -| [`aether-evals`](packages/aether-evals) | Automated testing (evals) for LLM agents ([docs](https://aether-agent.io/libraries/aether-evals/evals/)) | -| [`aether-lspd`](packages/aether-lspd) | LSP daemon — shares language servers across agents | -| [`aether-project`](packages/aether-project) | Project configuration and agent catalog from `.aether/settings.json` | +| [`@aether-agent/sdk`](packages/aether-sdk) | TypeScript SDK for building agents programmatically | +| [`@aether-agent/website`](packages/website) | Documentation website built with Astro ## License diff --git a/justfile b/justfile index 65449d526..de67270f0 100644 --- a/justfile +++ b/justfile @@ -47,7 +47,7 @@ doc-check *PKGS: # Regenerate the AetherSettings JSON Schema consumed by the website and SDK gen-schema: - cargo run -q -p aether-project --bin aether-settings-schema > website/src/data/aether-settings.schema.json + cargo run -q -p aether-project --bin aether-settings-schema > packages/website/src/data/aether-settings.schema.json # Install Node dependencies for the TypeScript SDK sdk-install: @@ -95,9 +95,9 @@ changelog: changelog-gen: git cliff -o CHANGELOG.md -# Update packages/llm/models.json from models.dev +# Update crates/llm/models.json from models.dev update-models: - ./packages/llm/scripts/fetch-models.sh + ./crates/llm/scripts/fetch-models.sh # Sweep build artifacts older than N days (default: 7) sweep DAYS="7": @@ -110,7 +110,7 @@ sweep-installed: # Build the sandbox image from the eval example Dockerfile (copies the aether debug binary) build-sandbox TAG="aether-sandbox:latest": cargo build -p aether-agent-cli --bin aether - docker build -t {{TAG}} -f packages/internal-evals/examples/Dockerfile . + docker build -t {{TAG}} -f crates/internal-evals/examples/Dockerfile . # Run wisp + aether agent inside the sandbox run-sandbox: @@ -118,8 +118,8 @@ run-sandbox: # Install aether-cli and wisp binaries locally install: - cargo install --path packages/aether-cli --force - cargo install --path packages/wisp --force + cargo install --path crates/aether-cli --force + cargo install --path crates/wisp --force cargo sweep --installed # Preview the release PR release-plz would open against main diff --git a/package.json b/package.json index 4c350e6a8..c5ca127f3 100644 --- a/package.json +++ b/package.json @@ -7,12 +7,12 @@ "sdk:test": "pnpm --filter @aether-agent/sdk test", "sdk:e2e": "pnpm --filter @aether-agent/sdk e2e", "sdk:generate-types": "pnpm --filter @aether-agent/sdk generate:types", - "website:dev": "pnpm --dir website dev", - "website:build": "pnpm --dir website build", - "website:preview": "pnpm --dir website preview", - "website:check": "pnpm --dir website astro check", - "fmt": "prettier --write \"packages/aether-sdk/**/*.{ts,mts,cts,mjs,cjs,js,jsx,json}\" \"website/**/*.{ts,mjs,astro,json,css}\"", - "fmt-check": "prettier --check \"packages/aether-sdk/**/*.{ts,mts,cts,mjs,cjs,js,jsx,json}\" \"website/**/*.{ts,mjs,astro,json,css}\"" + "website:dev": "pnpm --filter @aether-agent/website dev", + "website:build": "pnpm --filter @aether-agent/website build", + "website:preview": "pnpm --filter @aether-agent/website preview", + "website:check": "pnpm --filter @aether-agent/website astro check", + "fmt": "prettier --write \"packages/**/*.{ts,mts,cts,mjs,cjs,js,jsx,json,astro,css}\"", + "fmt-check": "prettier --check \"packages/**/*.{ts,mts,cts,mjs,cjs,js,jsx,json,astro,css}\"" }, "packageManager": "pnpm@10.28.0", "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 92c05bd28..918135503 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -55,7 +55,7 @@ importers: specifier: ^4.1.8 version: 4.1.8(@types/node@25.9.3)(vite@8.0.10(@types/node@25.9.3)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) - website: + packages/website: dependencies: '@astrojs/markdown-remark': specifier: ^7.2.0 @@ -3392,10 +3392,6 @@ packages: resolution: {integrity: sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==} engines: {node: '>=4'} - postcss@8.5.14: - resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.15: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} @@ -3867,10 +3863,6 @@ packages: resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} - tinyglobby@0.2.16: - resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.17: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} @@ -5063,7 +5055,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.10.0 + '@emnapi/runtime': 1.11.1 optional: true '@img/sharp-wasm32@0.35.1': @@ -8234,12 +8226,6 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.5.14: - dependencies: - nanoid: 3.3.12 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.15: dependencies: nanoid: 3.3.12 @@ -9021,11 +9007,6 @@ snapshots: tinyexec@1.2.4: {} - tinyglobby@0.2.16: - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - tinyglobby@0.2.17: dependencies: fdir: 6.5.0(picomatch@4.0.4) @@ -9193,9 +9174,9 @@ snapshots: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.14 + postcss: 8.5.15 rollup: 4.60.3 - tinyglobby: 0.2.16 + tinyglobby: 0.2.17 optionalDependencies: '@types/node': 25.9.3 fsevents: 2.3.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e84290456..5724df8b8 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,5 @@ packages: - - "packages/aether-sdk" - - "website" + - "packages/*" onlyBuiltDependencies: - "@aether-agent/cli" From e0a20c303884e539c4c3663556bbbd56e47f14df Mon Sep 17 00:00:00 2001 From: Josh Carver Date: Fri, 19 Jun 2026 15:29:50 -0700 Subject: [PATCH 3/4] chore(workspace): Tweak dirs in skills due to moving files --- .aether/skills/rust/builder-pattern.md | 2 +- .aether/skills/rust/testing-fakes.md | 2 +- .aether/skills/rust/type-safety.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.aether/skills/rust/builder-pattern.md b/.aether/skills/rust/builder-pattern.md index 26adb2da2..d95a0526b 100644 --- a/.aether/skills/rust/builder-pattern.md +++ b/.aether/skills/rust/builder-pattern.md @@ -1,6 +1,6 @@ # Builder Pattern -**Location**: `packages/aether/src/agent/agent_builder.rs`, `packages/aether/src/mcp/mcp_builder.rs` +**Location**: `crates/aether-core/src/agent/agent_builder.rs`, `crates/aether-core/src/mcp/mcp_builder.rs` ## Pattern diff --git a/.aether/skills/rust/testing-fakes.md b/.aether/skills/rust/testing-fakes.md index 1c82d2dab..11667b09d 100644 --- a/.aether/skills/rust/testing-fakes.md +++ b/.aether/skills/rust/testing-fakes.md @@ -1,6 +1,6 @@ # Testing with Fakes -**Location**: `packages/aether/src/testing/fake_llm.rs`, `packages/aether/src/testing/fake_mcp.rs` +**Location**: `crates/aether-core/src/testing/fake_llm.rs`, `crates/aether-core/src/testing/fake_mcp.rs` ## Rule: Use "Fake", Never "Mock" diff --git a/.aether/skills/rust/type-safety.md b/.aether/skills/rust/type-safety.md index dda3c4176..c117b5e5e 100644 --- a/.aether/skills/rust/type-safety.md +++ b/.aether/skills/rust/type-safety.md @@ -1,6 +1,6 @@ # Type Safety -**Location**: `packages/aether/src/types.rs`, `packages/aether-evals/src/eval_assertion.rs` +**Location**: `crates/aether-core/src/types.rs`, `crates/aether-evals/src/eval_assertion.rs` ## Pattern 1: Newtype Wrapper From 105285eb91f64c5b2001aec86a0f3b97a0e6fff8 Mon Sep 17 00:00:00 2001 From: Josh Carver Date: Fri, 19 Jun 2026 15:30:07 -0700 Subject: [PATCH 4/4] chore: final cleanups for new repo structure --- ast-grep-tool-plan.md | 694 ------------------- scripts/{changed-packages => changed-crates} | 10 +- scripts/run-check | 4 +- 3 files changed, 7 insertions(+), 701 deletions(-) delete mode 100644 ast-grep-tool-plan.md rename scripts/{changed-packages => changed-crates} (60%) diff --git a/ast-grep-tool-plan.md b/ast-grep-tool-plan.md deleted file mode 100644 index ecd67176f..000000000 --- a/ast-grep-tool-plan.md +++ /dev/null @@ -1,694 +0,0 @@ -# Add `ast_grep` Tool to the Coding MCP Server - -## Overview - -### Problem statement - -The built-in `coding` MCP server currently has: - -- `grep` for regex/text search. -- `find` for file discovery. -- LSP tools for symbol-aware navigation. - -It does not have a structural search tool for finding syntax patterns like `fn $NAME(...) { $$$BODY }`, `console.log($$$ARGS)`, or `useEffect($$$ARGS)` without relying on brittle regexes or requiring a live LSP server. - -Add a read-only `ast_grep` MCP tool to the existing `coding` MCP server. The tool should use ast-grep's Rust library crates in-process rather than shelling out to the `sg` / `ast-grep` CLI. - -### Success criteria and acceptance conditions - -- A new `ast_grep` MCP tool is available from the existing `coding` server. -- The tool performs read-only AST structural search over a file or directory. -- The implementation uses Rust crates (`ast-grep-core` and `ast-grep-language`) and does **not** require an external `ast-grep` binary to be installed. -- The tool supports: - - Required ast-grep `pattern` string. - - Required `language` string using `ast_grep_language::SupportLang` aliases such as `rs`, `rust`, `ts`, `tsx`, `py`, `js`. - - Optional `path`, defaulting to the coding server workspace root. - - Optional `glob` file filter. - - Optional context line controls. - - Optional `headLimit` result limit. -- Results include deterministic structured output with file path, 1-based line/column range, byte range, matched text, and metavariable captures. -- Directory searches respect `.gitignore`, skip hidden files by default, do not follow symlinks, and search only files matching the selected language unless the path is an explicit file. -- Tool annotations mark the tool as read-only and closed-world: - - `read_only_hint = true` - - `open_world_hint = false` -- Existing coding tools continue to compile and pass tests. -- Unit and integration tests cover the public tool behavior. - -## Technical Approach - -### Architectural decision - -Add the tool to the existing `coding` MCP server, not a new MCP server. - -Rationale: - -- `coding` already owns code search, file traversal, workspace root resolution, and MCP tool registration. -- `ast_grep` sits naturally between `grep` and LSP: structural source search that is more precise than regex but does not require an LSP server. -- A new MCP server would add configuration and discovery overhead without a strong boundary benefit. - -### Library vs shell-out decision - -Use ast-grep's Rust libraries in-process: - -- `ast-grep-core` for `Pattern::try_new` and matching APIs. -- `ast-grep-language` for `SupportLang`, language aliases, parser integration, and language-aware extension filtering. - -Do not shell out to the CLI. - -Rationale: - -- No external binary install requirement. -- Avoids shell escaping and command injection risk. -- Produces typed structured MCP output directly. -- Fits the current `grep` / `find` pattern of in-process Rust implementations. -- Avoids version drift between the packaged MCP server and a user's installed `ast-grep` CLI. - -### MVP scope - -Implement read-only structural search only. Do **not** implement rewriting in this change. - -A future rewrite tool should be separate, e.g. `ast_rewrite` or `ast_grep_rewrite`, with non-read-only MCP annotations and explicit file safety semantics. - -### Input schema - -Create `AstGrepInput` in `packages/mcp-servers/src/coding/tools/ast_grep/mod.rs`: - -```rust -#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)] -#[serde(rename_all = "camelCase")] -pub struct AstGrepInput { - /// ast-grep pattern code, e.g. "fn $NAME() { $$$BODY }" - pub pattern: String, - - /// Language alias understood by ast-grep, e.g. "rs", "rust", "ts", "tsx", "py", "js". - pub language: String, - - /// File or directory to search. Defaults to the coding server workspace root. - pub path: Option, - - /// Optional glob filter, e.g. "**/*.rs" or "*.{ts,tsx}". - pub glob: Option, - - /// Lines before each match. - pub context_before: Option, - - /// Lines after each match. - pub context_after: Option, - - /// Lines before and after each match. Overrides contextBefore/contextAfter. - pub context_around: Option, - - /// Maximum number of matches to return. - pub head_limit: Option, -} -``` - -Use `language` rather than `type` to make it clear this is an AST parser selection, not a ripgrep file type filter. - -### Output schema - -Create output structs: - -```rust -#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)] -#[serde(rename_all = "camelCase")] -pub struct AstGrepOutput { - pub matches: Vec, - pub count: usize, - pub truncated: bool, - pub language: String, - pub search_path: String, - #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")] - #[schemars(skip)] - pub meta: Option, -} - -#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)] -#[serde(rename_all = "camelCase")] -pub struct AstGrepMatch { - pub file: String, - pub range: AstGrepRange, - pub text: String, - pub captures: Vec, - pub before_context: Option>, - pub after_context: Option>, -} - -#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)] -#[serde(rename_all = "camelCase")] -pub struct AstGrepRange { - /// 1-based line number. - pub start_line: usize, - /// 1-based character column. - pub start_column: usize, - /// 1-based line number. - pub end_line: usize, - /// 1-based character column. - pub end_column: usize, - /// 0-based byte offset. - pub start_byte: usize, - /// 0-based exclusive byte offset. - pub end_byte: usize, -} - -#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)] -#[serde(rename_all = "camelCase")] -pub struct AstGrepCapture { - pub name: String, - pub text: String, -} -``` - -Use 1-based line/column values for user-facing consistency with `read_file` and `grep`. Keep byte offsets 0-based because they are source offsets. - -### Matching behavior - -- Parse `language` once: - -```rust -let lang: SupportLang = args.language.parse() - .map_err(|_| AstGrepError::UnsupportedLanguage(args.language.clone()))?; -``` - -- Compile the pattern once with non-panicking API: - -```rust -use ast_grep_core::Pattern; - -let pattern = Pattern::try_new(&args.pattern, lang) - .map_err(|e| AstGrepError::InvalidPattern(e.to_string()))?; -``` - -Do not use `Pattern::new`, because it unwraps and can panic on invalid user input. - -- For each source file: - -```rust -use ast_grep_language::LanguageExt; - -let source = std::fs::read_to_string(path)?; -let root = lang.ast_grep(&source); -for node_match in root.root().find_all(pattern.clone()) { - // build AstGrepMatch -} -``` - -- Convert positions: - -```rust -let start = node_match.start_pos(); -let end = node_match.end_pos(); -let range = node_match.range(); - -AstGrepRange { - start_line: start.line() + 1, - start_column: start.column(&*node_match) + 1, - end_line: end.line() + 1, - end_column: end.column(&*node_match) + 1, - start_byte: range.start, - end_byte: range.end, -} -``` - -- Convert captures deterministically: - -```rust -let mut captures: Vec = - std::collections::HashMap::::from(node_match.get_env().clone()) - .into_iter() - .map(|(name, text)| AstGrepCapture { name, text }) - .collect(); -captures.sort_by(|a, b| a.name.cmp(&b.name)); -``` - -### File traversal behavior - -For explicit file paths: - -- Validate the path exists. -- Apply `glob` if provided. -- Parse the file using the provided `language`, even if the file extension does not match that language. This lets advanced users search extensionless files or generated fixtures. - -For directory paths: - -- Use `ignore::WalkBuilder` sequentially for deterministic ordering and simplicity. -- Configure it like `find` / `grep`: - -```rust -WalkBuilder::new(search_path) - .hidden(false) - .git_ignore(true) - .follow_links(false) -``` - -- Collect matching files into `Vec`, sort by path, then parse in order. -- Include only regular files where: - - Optional `glob` matches, and - - The file extension maps to the selected `SupportLang`. - -Use the `Language` trait implementation for extension inference: - -```rust -use ast_grep_language::{Language, SupportLang}; - -fn file_matches_language(path: &Path, lang: SupportLang) -> bool { - ::from_path(path) == Some(lang) -} -``` - -### Error handling - -Add `AstGrepError` to `packages/mcp-servers/src/coding/error.rs` and wrap it in `CodingError`: - -```rust -#[derive(Debug, Error)] -pub enum AstGrepError { - #[error("Search path does not exist: {0}")] - PathNotFound(String), - - #[error("Invalid glob pattern '{pattern}': {reason}")] - InvalidGlobPattern { pattern: String, reason: String }, - - #[error("Failed to build glob set: {0}")] - GlobSetBuildFailed(String), - - #[error("Unsupported ast-grep language: {0}")] - UnsupportedLanguage(String), - - #[error("Invalid ast-grep pattern: {0}")] - InvalidPattern(String), - - #[error("Failed to read file '{path}': {reason}")] - ReadFailed { path: String, reason: String }, -} -``` - -For directory walks, skip individual unreadable/non-UTF-8 files to behave like search tools that tolerate noisy trees. For an explicit file path, return `ReadFailed`. - -### Trade-offs - -- Sequential directory processing is simpler and deterministic. If performance becomes an issue, a later change can parallelize after preserving stable ordering and limit semantics. -- `language` is required. Inference is attractive, but the pattern itself is language-specific, so requiring a parser makes the tool less surprising. -- Rule-file support via `ast-grep-config` is intentionally excluded from the MVP. Add it later as a separate tool or mode if needed. -- Rewriting is excluded from the MVP to avoid mixing read-only search with mutation safety design. - -## Implementation Steps - -1. **Add dependencies** - - Update workspace dependencies in `/Users/josh/code/aether-2/Cargo.toml`: - - ```toml - ast-grep-core = "0.43" - ast-grep-language = "0.43" - ``` - - Update `/Users/josh/code/aether-2/packages/mcp-servers/Cargo.toml`: - - - Add optional dependencies: - - ```toml - ast-grep-core = { workspace = true, optional = true } - ast-grep-language = { workspace = true, optional = true } - ``` - - - Add both to the `coding` feature: - - ```toml - "dep:ast-grep-core", - "dep:ast-grep-language", - ``` - -2. **Create the `ast_grep` tool module** - - Add directory: - - ```text - /Users/josh/code/aether-2/packages/mcp-servers/src/coding/tools/ast_grep/ - ``` - - Add files: - - ```text - mod.rs - description.md - ``` - - In `mod.rs`: - - - Define `AstGrepInput`. - - Define `AstGrepOutput`, `AstGrepMatch`, `AstGrepRange`, and `AstGrepCapture`. - - Implement: - - ```rust - pub async fn perform_ast_grep(args: AstGrepInput) -> Result - ``` - - - Keep private helpers below public structs/functions: - - ```rust - fn build_glob_set(glob: Option<&str>) -> Result, AstGrepError> - fn collect_files(search_path: &Path, lang: SupportLang, glob: Option<&globset::GlobSet>) -> Vec - fn file_matches_filters(path: &Path, lang: SupportLang, glob: Option<&globset::GlobSet>) -> bool - fn search_file(path: &Path, lang: SupportLang, pattern: &Pattern, args: &AstGrepInput) -> Result, AstGrepError> - fn build_match(path: &Path, source: &str, node_match: NodeMatchLike, context_before: usize, context_after: usize) -> AstGrepMatch - fn context_for_match(source: &str, start_line: usize, end_line: usize, before: usize, after: usize) -> (Option>, Option>) - ``` - - The concrete `NodeMatchLike` should be the real ast-grep node match type inferred by the helper signature. If Rust lifetime/generic syntax becomes cumbersome, inline match construction inside `search_file` and keep only simple helpers for context/captures. - -3. **Implement `perform_ast_grep` control flow** - - Pseudo-code: - - ```rust - pub async fn perform_ast_grep(mut args: AstGrepInput) -> Result { - if args.path.as_deref().is_some_and(|p| p.trim().is_empty()) { - args.path = None; - } - - let lang: SupportLang = args.language.parse() - .map_err(|_| AstGrepError::UnsupportedLanguage(args.language.clone()))?; - let pattern = Pattern::try_new(&args.pattern, lang) - .map_err(|e| AstGrepError::InvalidPattern(e.to_string()))?; - let glob_set = build_glob_set(args.glob.as_deref())?; - - let search_path = args.path.as_deref().unwrap_or("."); - let path = Path::new(search_path); - if !path.exists() { - return Err(AstGrepError::PathNotFound(search_path.to_string())); - } - - let (context_before, context_after) = context_counts(&args); - let limit = args.head_limit.unwrap_or(usize::MAX); - let mut matches = Vec::new(); - let mut truncated = false; - - let files = if path.is_file() { - if glob_set.as_ref().is_some_and(|glob| !glob.is_match(path)) { - Vec::new() - } else { - vec![path.to_path_buf()] - } - } else { - collect_files(path, lang, glob_set.as_ref()) - }; - - for file in files { - let file_matches = search_file(&file, lang, &pattern, context_before, context_after, limit - matches.len())?; - matches.extend(file_matches); - if matches.len() >= limit { - matches.truncate(limit); - truncated = true; - break; - } - } - - let count = matches.len(); - let meta = ToolDisplayMeta::new( - "AST grep", - format!("'{}' in {} ({count} matches)", args.pattern, basename(search_path)), - ); - - Ok(AstGrepOutput { - matches, - count, - truncated, - language: lang.to_string(), - search_path: search_path.to_string(), - meta: Some(meta.into()), - }) - } - ``` - - Avoid comments in code unless explaining a non-obvious why. - -4. **Register the module** - - Update `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/tools/mod.rs`: - - ```rust - pub mod ast_grep; - ``` - -5. **Add error integration** - - Update `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/error.rs`: - - - Add `AstGrep(#[from] AstGrepError)` variant to `CodingError` near `Grep` and `Find`. - - Add the `AstGrepError` enum near `GrepError`. - -6. **Expose tool types through `CodingTools`** - - Update `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/tools_trait.rs`: - - - Import: - - ```rust - use super::tools::ast_grep::{AstGrepInput, AstGrepOutput, perform_ast_grep}; - ``` - - - Add a default trait method near `grep` and `find`: - - ```rust - /// Search code using ast-grep structural patterns. - fn ast_grep(&self, args: AstGrepInput) -> impl Future> + Send { - async move { perform_ast_grep(args).await.map_err(CodingError::from) } - } - ``` - - Update `/Users/josh/code/aether-2/packages/mcp-servers/src/docs/coding_tools.md` to list `ast_grep` under provided methods. - -7. **Add default implementation** - - Update `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/default_tools.rs`: - - - Import `AstGrepInput`, `AstGrepOutput`, and `perform_ast_grep`. - - Add: - - ```rust - async fn ast_grep(&self, args: AstGrepInput) -> Result { - perform_ast_grep(args).await.map_err(CodingError::from) - } - ``` - -8. **Add the MCP tool method** - - Update `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/mod.rs`: - - - Import: - - ```rust - use tools::ast_grep::{AstGrepInput, AstGrepOutput, perform_ast_grep}; - ``` - - If `perform_ast_grep` is not used directly in `mod.rs`, do not import it there. - - - Add quick reference line in `build_instructions()`: - - ```text - - **Structural code patterns** (AST search): `ast_grep` - ``` - - - Add tool method next to `grep` / `find`: - - ```rust - #[doc = include_str!("tools/ast_grep/description.md")] - #[tool(annotations(read_only_hint = true, open_world_hint = false))] - pub async fn ast_grep( - &self, - request: Parameters, - context: RequestContext, - ) -> Result, String> { - let Parameters(mut args) = request; - let root = self.primary_workspace_root().await; - let normalized_path = resolve_dir(&root, args.path.as_deref()); - args.path = Some(normalized_path.to_string_lossy().to_string()); - notify_preview(&context, ToolDisplayMeta::new("AST grep", format!("'{}'", args.pattern))).await; - self.tools.ast_grep(args).await.into_mcp() - } - ``` - -9. **Write tool description** - - Add `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/tools/ast_grep/description.md`: - - Include: - - - Short description: structural AST search using ast-grep patterns. - - Guidance: use `ast_grep` for syntax shapes, `grep` for raw text/log/TODO searches, LSP for definitions/references/types. - - Usage examples: - - ```json - {"language": "rs", "pattern": "fn $NAME($$$ARGS) { $$$BODY }", "glob": "**/*.rs"} - {"language": "ts", "pattern": "console.log($$$ARGS)", "path": "src", "headLimit": 20} - {"language": "tsx", "pattern": "useEffect($$$ARGS)", "contextAround": 2} - {"language": "py", "pattern": "def $NAME($$$ARGS): $$$BODY"} - ``` - - - Parameter explanations. - - Mention line/column ranges are 1-based and byte ranges are 0-based. - -10. **Update user-facing docs** - - Update: - - - `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/README.md` - - Add `ast_grep` to the Search table. - - Add it to the table of contents only if the section structure changes. - - `/Users/josh/code/aether-2/packages/mcp-servers/src/docs/coding_mcp.md` - - Add `ast_grep` under Shell & search. - - `/Users/josh/code/aether-2/packages/mcp-servers/README.md` - - Update the `coding` feature/server description from `grep, find` to include `ast_grep` or “structural search”. - -11. **Add unit tests for the tool module** - - In `packages/mcp-servers/src/coding/tools/ast_grep/mod.rs`, add tests similar to `grep` and `find` module tests: - - - `finds_rust_function_pattern` - - Create temp dir with `lib.rs` containing multiple functions. - - Search `language: "rs"`, pattern `fn $NAME() {}` or `fn $NAME($$$ARGS) { $$$BODY }`. - - Assert matches include expected function text. - - `returns_metavariable_captures` - - Pattern `fn $NAME() {}`. - - Assert capture `NAME` is `foo` for `fn foo() {}`. - - `filters_directory_by_language` - - Include `.rs` and `.py` files with text that would otherwise match. - - Search `language: "rs"`. - - Assert only `.rs` files are returned. - - `applies_glob_filter` - - Include `src/lib.rs` and `tests/lib.rs`. - - Use `glob: "src/**/*.rs"` or equivalent. - - Assert only `src` file is searched. - - `invalid_language_returns_error` - - Use `language: "not-a-language"`. - - Assert `AstGrepError::UnsupportedLanguage`. - - `invalid_pattern_returns_error` - - Use empty pattern or a known multiple-root pattern such as `"12 3344"` for a language where it errors. - - Assert `AstGrepError::InvalidPattern`. - - `head_limit_truncates_results` - - Produce several matches. - - Use `headLimit: 1`. - - Assert `count == 1` and `truncated == true`. - - `range_is_one_based_and_byte_offsets_are_zero_based` - - Use a small source where expected range is obvious. - - Assert start line/column are 1-based. - -12. **Add MCP integration test** - - Update `/Users/josh/code/aether-2/packages/mcp-servers/tests/coding_mcp_tools.rs` or add a new integration test file if the existing file is getting too broad. - - Add test: - - ```rust - #[tokio::test] - async fn test_ast_grep_uses_workspace_root_when_no_path_given() -> Result<(), Box> { - let temp = tempfile::tempdir()?; - let workspace = temp.path().to_path_buf(); - std::fs::write(workspace.join("lib.rs"), "fn target() {}\nfn other() {}\n")?; - - let server_service = CodingMcp::new().with_root_dir(workspace.clone()); - let client_info = ClientInfo::new(ClientCapabilities::default(), Implementation::new("test-client", "0.1.0")); - let (_server_handle, client) = connect(server_service, client_info).await?; - - let result = client.call_tool( - CallToolRequestParams::new("ast_grep").with_arguments( - serde_json::json!({ - "language": "rs", - "pattern": "fn $NAME() {}" - }).as_object().unwrap().clone(), - ), - ).await?; - - let text_content = result.content.first().and_then(|c| c.as_text()).ok_or("Expected text content")?; - let parsed: serde_json::Value = serde_json::from_str(&text_content.text)?; - assert_eq!(parsed["searchPath"].as_str().unwrap(), workspace.to_str().unwrap()); - assert!(parsed["matches"].as_array().unwrap().iter().any(|m| { - m["file"].as_str().unwrap().ends_with("lib.rs") && - m["captures"].as_array().unwrap().iter().any(|c| c["name"] == "NAME" && c["text"] == "target") - })); - - Ok(()) - } - ``` - - Also consider a small integration assertion that the tool appears in `list_tools` if there is an existing pattern for that in tests. - -13. **Run validation** - - Preferred quick checks: - - - Use LSP diagnostics for workspace or affected files first. - - Then run targeted tests if needed: - - ```bash - just test -p aether-mcp-servers ast_grep - ``` - - If the project’s `just test` does not accept package/test filters, use the repository’s standard `just test`. - -## Testing Plan - -### Unit tests required - -Add unit tests in `packages/mcp-servers/src/coding/tools/ast_grep/mod.rs` for: - -- Basic Rust structural match. -- TypeScript or TSX structural match if compilation time remains acceptable. -- Capture extraction and deterministic capture sorting. -- Glob filtering. -- Language-based extension filtering for directory walks. -- Direct file path behavior. -- Invalid language errors. -- Invalid pattern errors. -- Missing path errors. -- Context line extraction. -- `headLimit` truncation. -- Deterministic path ordering. - -### Integration tests needed - -Add MCP-level tests for public API behavior: - -- `ast_grep` defaults to `CodingMcp::with_root_dir(...)` workspace root when `path` is omitted. -- JSON response shape includes `matches`, `count`, `truncated`, `language`, and `searchPath`. -- At least one match contains expected `file`, `text`, `range`, and `captures`. - -### Edge cases to verify - -- Empty `path` or whitespace `path` defaults to workspace root. -- `glob` that matches no files returns `matches: []`, `count: 0`, `truncated: false`. -- Unsupported language aliases return a clean tool error, not a panic. -- Invalid ast-grep patterns return a clean tool error, not a panic. -- Non-UTF-8 files in directory searches do not crash the search. -- Explicit non-UTF-8 file path returns a readable error. -- Multi-line matches have correct start/end line values and context after the end line. -- `headLimit: 0` returns no matches and `truncated: true` if there would have been at least one match. If implementing that exactly is awkward, reject `headLimit: 0` with a validation error and document it. - -## Files to Modify/Create - -| Path | Change | Status | -|---|---|---| -| `/Users/josh/code/aether-2/Cargo.toml` | Add workspace dependencies `ast-grep-core` and `ast-grep-language`. | Modify | -| `/Users/josh/code/aether-2/packages/mcp-servers/Cargo.toml` | Add optional deps and include them in the `coding` feature. | Modify | -| `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/tools/ast_grep/mod.rs` | Implement input/output structs, `perform_ast_grep`, helpers, and unit tests. | Add | -| `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/tools/ast_grep/description.md` | Add MCP tool documentation and examples. | Add | -| `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/tools/mod.rs` | Export `pub mod ast_grep;`. | Modify | -| `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/error.rs` | Add `AstGrepError` and `CodingError::AstGrep`. | Modify | -| `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/tools_trait.rs` | Add imports and default `ast_grep` method. | Modify | -| `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/default_tools.rs` | Implement `CodingTools::ast_grep` for `DefaultCodingTools`. | Modify | -| `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/mod.rs` | Import tool types, add quick-reference instruction, and register `ast_grep` MCP method. | Modify | -| `/Users/josh/code/aether-2/packages/mcp-servers/src/docs/coding_tools.md` | Document `ast_grep` as a provided backend method. | Modify | -| `/Users/josh/code/aether-2/packages/mcp-servers/src/docs/coding_mcp.md` | Add `ast_grep` to coding server tool docs. | Modify | -| `/Users/josh/code/aether-2/packages/mcp-servers/src/coding/README.md` | Add `ast_grep` to Search tools. | Modify | -| `/Users/josh/code/aether-2/packages/mcp-servers/README.md` | Update high-level coding server description to mention structural search. | Modify | -| `/Users/josh/code/aether-2/packages/mcp-servers/tests/coding_mcp_tools.rs` | Add MCP integration test for `ast_grep` workspace-root behavior and response shape. | Modify | - -## Additional Notes - -- The tool should be named `ast_grep` to match existing snake_case MCP tool naming. -- Do not add `ast-grep-config` in the MVP. Use it later only if adding YAML rule-file scanning. -- Do not add rewrite support in this change. Rewriting needs separate permissions, read-before-edit/write safety, and likely diagnostic refresh behavior. -- Keep implementation comments sparse and only explain non-obvious “why” decisions. -- If dependency compilation cost is a concern after implementation, measure it before attempting optimization; correctness and tool stability matter more for the first version. -- If directory search performance becomes a problem, add parallel traversal in a follow-up while preserving deterministic output ordering and `headLimit` semantics. \ No newline at end of file diff --git a/scripts/changed-packages b/scripts/changed-crates similarity index 60% rename from scripts/changed-packages rename to scripts/changed-crates index d88afbce8..991d93e5f 100755 --- a/scripts/changed-packages +++ b/scripts/changed-crates @@ -1,7 +1,7 @@ #!/usr/bin/env bash -# Extract unique workspace package names from file paths passed as arguments. -# Reads the actual Cargo package name from each package's Cargo.toml. -# Usage: changed-packages file1.rs file2.rs ... -- outputs -p pkg1 -p pkg2 ... +# Extract unique workspace crate names from file paths passed as arguments. +# Reads the actual Cargo package name from each crate's Cargo.toml. +# Usage: changed-crates file1.rs file2.rs ... -- outputs -p pkg1 -p pkg2 ... set -euo pipefail REPO_ROOT="$(git rev-parse --show-toplevel)" @@ -9,7 +9,7 @@ REPO_ROOT="$(git rev-parse --show-toplevel)" dirs="" for f in "$@"; do case "$f" in - packages/*/*) + crates/*/*) dir=$(echo "$f" | cut -d/ -f2) dirs="$dirs $dir" ;; @@ -17,7 +17,7 @@ for f in "$@"; do done echo "$dirs" | tr ' ' '\n' | sort -u | sed '/^$/d' | while read -r dir; do - toml="$REPO_ROOT/packages/$dir/Cargo.toml" + toml="$REPO_ROOT/crates/$dir/Cargo.toml" if [ -f "$toml" ]; then pkg=$(grep '^name' "$toml" | head -1 | sed 's/.*= *"//;s/".*//') printf -- '-p %s ' "$pkg" diff --git a/scripts/run-check b/scripts/run-check index 167443c9a..9709e7f3b 100755 --- a/scripts/run-check +++ b/scripts/run-check @@ -1,7 +1,7 @@ #!/usr/bin/env bash -# Run a just recipe scoped to changed packages. +# Run a just recipe scoped to changed crates. # Usage: run-check set -euo pipefail cmd="$1"; shift -PKG_FLAGS=$(scripts/changed-packages "$@") +PKG_FLAGS=$(scripts/changed-crates "$@") [ -n "$PKG_FLAGS" ] && just "$cmd" $PKG_FLAGS