aru-code 0.38.0__tar.gz → 0.40.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aru_code-0.38.0/aru_code.egg-info → aru_code-0.40.0}/PKG-INFO +1 -1
- aru_code-0.40.0/aru/__init__.py +1 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/app.py +13 -0
- aru_code-0.40.0/aru/tui/widgets/chat.py +1020 -0
- {aru_code-0.38.0 → aru_code-0.40.0/aru_code.egg-info}/PKG-INFO +1 -1
- {aru_code-0.38.0 → aru_code-0.40.0}/aru_code.egg-info/SOURCES.txt +1 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/pyproject.toml +2 -1
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_main.py +1 -1
- aru_code-0.40.0/tests/test_tui_chat.py +288 -0
- aru_code-0.40.0/tests/test_tui_chat_adversarial.py +421 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_input_behaviour.py +69 -0
- aru_code-0.38.0/aru/__init__.py +0 -1
- aru_code-0.38.0/aru/tui/widgets/chat.py +0 -538
- aru_code-0.38.0/tests/test_tui_chat.py +0 -110
- {aru_code-0.38.0 → aru_code-0.40.0}/LICENSE +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/README.md +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/agent_factory.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/agents/__init__.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/agents/base.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/agents/catalog.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/agents/planner.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/cache_patch.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/checkpoints.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/cli.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/commands.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/completers.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/config.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/context.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/display.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/events.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/format/__init__.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/format/manager.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/format/runner.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/history_blocks.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/lsp/__init__.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/lsp/client.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/lsp/manager.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/lsp/protocol.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/memory/__init__.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/memory/extractor.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/memory/loader.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/memory/store.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/permissions.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/plugin_cache.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/plugins/__init__.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/plugins/custom_tools.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/plugins/hooks.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/plugins/manager.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/plugins/tool_api.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/providers.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/runner.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/runtime.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/select.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/session.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/sinks.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/streaming.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tool_policy.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/__init__.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/_diff.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/_shared.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/apply_patch.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/apply_patch_prompt.txt +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/ast_tools.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/codebase.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/delegate.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/delegate_prompt.txt +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/file_ops.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/gitignore.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/lsp.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/mcp_client.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/memory_tool.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/plan_mode.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/ranker.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/registry.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/search.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/shell.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/skill.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/tasklist.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/web.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tools/worktree.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/__init__.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/screens/__init__.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/screens/choice.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/screens/confirm.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/screens/search.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/screens/text_input.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/sinks.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/slash_bridge.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/ui.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/widgets/__init__.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/widgets/completer.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/widgets/context_pane.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/widgets/header.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/widgets/inline_choice.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/widgets/loaded_pane.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/widgets/status.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/widgets/thinking.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/tui/widgets/tools.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru/ui.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru_code.egg-info/dependency_links.txt +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru_code.egg-info/entry_points.txt +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru_code.egg-info/requires.txt +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/aru_code.egg-info/top_level.txt +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/setup.cfg +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_agents_base.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_agents_md_coverage.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_apply_patch.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_async_tool_permission.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_cache_patch_metrics.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_cache_patch_stop_reason.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_catalog.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_chat_scrollable.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_checkpoints.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_cli.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_cli_advanced.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_cli_base.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_cli_completers.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_cli_new.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_cli_run_cli.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_cli_session.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_cli_shell.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_codebase.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_confabulation_regression.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_config.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_context.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_context_pane.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_cwd_awareness.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_delegate.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_events_backward_compat.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_events_schema.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_fork_ctx_concurrency.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_format.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_gitignore.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_guardrails_scenarios.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_invoke_skill.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_invoked_skills.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_loaded_pane_path.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_lsp.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_lsp_rename.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_markdown_to_text.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_mcp_client.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_mcp_health.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_memory.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_memory_tool.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_microcompact.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_permissions.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_plan_mode_refactor.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_plugin_cache.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_plugin_errors.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_plugin_hooks_v2.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_plugins.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_providers.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_ranker.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_reasoning.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_runner_interrupt.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_runner_recovery.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_runtime.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_select.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_skill_disallowed_tools.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_status_breakdown.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_status_cost.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_streaming_sink.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tasklist.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_thread_tool_timeout.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tool_policy.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_truncation_marker.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_app_boot.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_bindings.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_bus_flow.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_completer.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_completer_dynamic.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_copy.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_mention_expand.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_modals.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_mode_cycle.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_native_selection.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_permission_flow.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_plan_task_render.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_sidebar_toggle.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_slash_bridge.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_snapshot_smoke.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_thinking_and_boot.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_tui_widgets_visual.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_ui_adapter.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_worktree.py +0 -0
- {aru_code-0.38.0 → aru_code-0.40.0}/tests/test_worktree_session_restore.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.40.0"
|
|
@@ -933,6 +933,19 @@ class AruApp(App):
|
|
|
933
933
|
"""Run the agent in a worker and stream into the chat pane."""
|
|
934
934
|
chat = self.query_one(ChatPane)
|
|
935
935
|
chat.add_user_message(text)
|
|
936
|
+
# Persist the raw user message to session.history — parallel to
|
|
937
|
+
# the REPL's ``session.add_message("user", user_input)`` call in
|
|
938
|
+
# ``cli.py``. Without this, TUI sessions reload with an empty
|
|
939
|
+
# user side (``session.history`` contains only assistant + tool
|
|
940
|
+
# turns) and follow-up turns like "continue" see no user context
|
|
941
|
+
# from prior turns, so the agent replies with text and halts.
|
|
942
|
+
# We save the *raw* text, before ``@file`` expansion, so the
|
|
943
|
+
# rehydrated history matches what the user actually typed.
|
|
944
|
+
if self.session is not None and text:
|
|
945
|
+
try:
|
|
946
|
+
self.session.add_message("user", text)
|
|
947
|
+
except Exception:
|
|
948
|
+
pass
|
|
936
949
|
# Reflect the new prompt in the terminal tab so users with many
|
|
937
950
|
# tabs open can tell which one is working on what.
|
|
938
951
|
if not self.is_headless:
|